1. 1. 简述存储系统层次结构的基本思想
制约计算机存储器设计的问题归纳起来有三个:容量多大?速度多快?价格多贵?
容量多大的问题似乎没有限制,不管容量多大,总要开发出应用来使用它。速度多快的问题在某种意义上更容易回答。为了获得多大的性能,存储器速度必须能够跟上处理器的速度,即当处理器执行指令时,我们不想使它停下来等待指令或操作数。最后一个问题也必须考虑,对于实用的系统,存储器的价格相对于其他部件必须是合理的。
正如人们所预料的,在存储器的3个关键特性即价格、容量和存取时间之间需要进行权衡。任何时候,都有各种技术可用来实现存储系统。在这个技术领域中,存在如下关系:
存取时间越短,每位的价格就越高;
容量越大,每位的价格就越低;
容量越大,存取时间就越长;
很显然,摆在设计者面前的难题是,不仅需要大容量,而且需要低的每位价格,因此希望采用提供大容量存储器的技术。但为了满足性能需求,设计者又必须使用昂贵、容量较小和存取时间快的存储器。
解决这个难题的方法是采用存储器层次结构,而不只是依赖单一的存储部件或技术。下图给出了一个通用存储层次结构,图中从上到下,出现下列情况:
每位价格降低;
容量增大;
存取时间增大;
处理器访问存储器的频度降低;
因此,容量较小、价格较贵、速度较快的存储器可作为容量较大、速度较慢的存储器的补充。这种组织方式成功的关键是最后一项,即处理器访问存储器的频度降低。
条件四有效的基础是访问局部性原理。在程序执行的过程中,处理器访问存储器中的指令和数据倾向于成簇(块)。程序通常通常包含很多迭代循环和子程序,一旦进入了一个循环和子程序,则需重复访问一小组指令。同样,对于表和数组的操作,包含存取一簇簇的数据。在一长段时间内,使用的簇是变动的;而在一小段时间内,处理器主要访问存储器中的固定簇。
因此,通过分层结构组织数据,有可能使存取较低层的百分比低于存取高层存储器的百分比。考虑刚才给出的二级存储器的例子,让第二级的存储器包含所有程序的指令和数据,当前的簇临时放在第一级,第一级的某些簇会不时地交换回第二级,为将要进入第一级的簇腾出空间。然而,平均来说,多数的访问是对第一级中的指令和数据。
这个原则可以应用到二级以上的存储器。考察图所示的分层结构,速度较快、容量较小且价格最贵的存储器是处理器的内部寄存器。下跳两层是主存储器,它是计算机中主要的内存系统。主存储器常用速度更快,容量更小的高速缓存来扩充。
(很多体系结构或组成原理相关的书籍上都有的。回答比较粗糙,建议你参考William Stalling的计算机组织与体系结构,这本书上有对该问题的完整的论述。)
2. 存储系统的层次结构是基于什么原理
第一层:通用寄存器堆 第二层:指令与数据缓冲栈 第三层:高速缓冲存储器 第四层:主储存器(DRAM) 第五层:联机外部储存器(硬磁盘机) 第六层:脱机外部储存器(磁带、光盘存储器等) 这就是存储器的层次结构~~~ 主要体现在访问速度~~~ 1,设...
3. 存储体系要解决什么矛盾
解决存储器容量和速度的矛盾。
人们为了解决存储器容量和速度的矛盾,应用了访问局部性原理,把存储体系设计成为层次化的结构以满足使用要求。在这个层次化存储系统中,一般由寄存器、高速缓存(Cache)、主存(内存)、外存(硬盘等)组成。其中寄存器是最高层次的存储部件,容量最小,速度最快。寄存器对程序员是不透明的,对它的访问需按寄存器名访问而不是按地址。
存储体系结构的发展分为三个阶段:总线存储阶段;存储网络阶段 ;虚拟存储阶段。
例如,以服务器为中心的存储从体系结构上看,它是基于总线连接的存储 ( BAS ),包括 SCSI 总线、IDE接口、数据直接存储DAS,如 SCSI磁盘阵列。基于总线连接的存储体系结构存在许多不可克服的缺点,如:原始容量限制、没有扩展性、所有的数据存储受服务器性能的限制、无法集中管理等。
4. 设计层次化存储系统的理论依据是什么
计算机系统中存储层次可分为高速缓冲存储器、主存储器、辅助存储器三级
高速缓冲存储器用来改善主存储器与中央处理器的速度匹配问题
辅助存储器用于扩大存储空,即硬盘,光盘等,容量大,但存取数据慢,计算机都是先把辅存中要读的东西放到主存后处理,然后在依据情况是否写回。
主存即为内存,断电信息丢失,但存取数据块,他的容量大小直接影响计算机运行速度。
5. 为什么现代微机的存储系统中采用层次结构
cpu的内部
第一层:通用寄存器堆
第二层:指令与数据缓冲栈
第三层:高速缓冲存储器
第四层:主储存器(DRAM)
第五层:联机外部储存器(硬磁盘机)
第六层:脱机外部储存器(磁带、光盘存储器等)
这就是存储器的层次结构~~~ 主要体现在访问速度~~~
① 设置多个存储器并且使他们并行工作。本质:增添瓶颈部件数目,使它们并行工作,从而减缓固定瓶颈。
② 采用多级存储系统,特别是Cache技术,这是一种减轻存储器带宽对系统性能影响的最佳结构方案。本质:把瓶颈部件分为多个流水线部件,加大操作时间的重叠、提高速度,从而减缓固定瓶颈。
③ 在微处理机内部设置各种缓冲存储器,以减轻对存储器存取的压力。增加CPU中寄存器的数量,也可大大缓解对存储器的压力。本质:缓冲技术,用于减缓暂时性瓶颈。
6. 在计算机的层次化存储器结构中,虚拟存储器是指
虚拟存储器(Virtual Memory):在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理贮存容量大得多,可寻址的“主存储器”。虚拟存储区的容量与物理主存大小无关,而受限于计算机的地址结构和可用磁盘容量。
通俗的讲,虚拟内存,分布式共享内存,分页存储都属于这个范畴。
7. 计算机采用分层次存储体系结构的原因 答完整
在计算机网络技术中,网络的体系结构指的是通信系统的整体设计,它的目的是为网络硬件、软件、协议、存取控制和拓扑提供标准。现在广泛采用的是开放系统互连OSI(Open System Interconnection)的参考模型,它是用物理层、数据链路层、网络层、传送层、对话层、表示层和应用层七个层次描述网络的结构。你应该注意的是,网络体系结构的优劣将直接影响总线、接口和网络的性能。而网络体系结构的关键要素恰恰就是协议和拓扑。目前最常见的网络体系结构有FDDI、以太网、令牌环网和快速以太网等。
采用分层次的结构原因:各层功能相对独立,各层因技术进步而做的改动不会影响到其他层,从而保持体 系结构的稳定性
8. 分层存储与虚拟化技术的分层存储
分层存储其实已经不是一个新鲜的概念,而是已经在计算机存储领域应用多年。其与计算机的发明与发展相伴相生。在冯-诺依曼提出计算机的模型“存储程序”时就已经包含了分层存储的概念。“存储程序”原理,是将根据特定问题编写的程序存放在计算机存储器中,然后按存储器中的存储程序的首地址执行程序的第一条指令,以后就按照该程序的规定顺序执行其他指令,直至程序结束执行。在这里的外存储器与内存储器,就是一个分层存储的最初模型。
分层存储(Tiered Storage),也称为层级存储管理(Hierarchical Storage Management),广义上讲,就是将数据存储在不同层级的介质中,并在不同的介质之间进行自动或者手动的数据迁移,复制等操作。同时,分层存储也是信息生命周期管理的一个具体应用和实现。
而实际上,将相同成本及效率的存储介质放在不同层级之间进行数据迁移复制在实用性及成本上并不是有效的数据存储方式。因此,在不同的层级之间使用有差别的存储介质,以期在相同成本下,既满足性能的需要又满足容量的需要。这种存储介质上的差别主要是在存取速度上及容量上。存取速度快的介质通常都是存储单位成本(每单位存储容量成本,如1元/GB)高,而且容量相对来讲比较低。相应的,存取速度慢的介质通常是为了满足容量与成本方面的要求,既在相同的成本下可以得到更大的容量。所以,从这方面来说,分层存储其实是一种在高速小容量层级的介质层与低速大容量层级的介质层之间进行一种自动或者手动数据迁移、复制、管理等操作的一种存储技术及方案。
一般来说,分层存储中,我们将存取速度最快的那一层的介质层称为第0层(Tier 0),依次为第1层,第2层等等。理论上说,层级的划分可以有很多层,但是在实践中,最多的层级在5层左右。过多的层级会增加数据及介质管理的难道及可用性。因此在层级的设置上有一个拐点,即层级达到一个特定的层数时,会导致成本的上升,而使得可用性、可靠性都会相应下降。通常层级的设定在2-4层之间。如下图所示: 在计算机系统中,CPU 的运行速度往往要比内存速度快上好几百倍甚至更多,为了更多地榨取CPU的计算能力,就需要在访问数据的速度上进行提升,否则内存的速度将成为整个系统的性能短板。因此在这样的思想下,CPU慢慢发展出来1级或者2级这样的存储缓存。实际也表明,缓存的存在确实对于系统性能的提升起到了巨大的推动作用。
相应的,内存的访问速度又是硬盘访问速度的几百倍甚至更多,也是基于CPU类似的指导思想,我们能不能在存储之间也进行这样的分层(或者说缓存)以期提高系统的I/O性能,以满足应用对系统提出的更多高I/O的需求呢?
从某种意义上说,内存其实也就是充当了CPU与外部存储之间的另一个级别的缓存。作为用户来讲,我们当然希望所有需要用到的数据都最好是存在最高速的存储当中。但是这样近乎是乌托邦式的理想至少在当前来说是不现实的。在技术上的难度不说,成本的压力就会使得用户喘不过气来,再一个就是有没有必要的问题,因为有的数据根本都不需要一直存于这样的存储中。在计算机界中有一个很有名的理论,就是说,加上一个中间层,就可以解决计算机中许多的问题。而这个“中间层”也正是我们所寻求的,实际也证明这样的中间层确实取得了非常好的效果。
据IDC数据预测,到2012年,信息数据的增长将会达到50%的复合年增长率,这个增长主要源于越来越来多数据内容生成并存储,经济全球化使用商业各个部门及与商业伙伴之间需要保持连接,使得更多的数据被生成,复制及保存。法规遵从及管理,还有容灾与备份都使得数据的增长持续上升。天下没有一劳永逸的解决方案,我们需要根据不同的数据存储需求,设计不同的存储方案。比如归档,我们可以将数据存储在磁带上,比如需要频繁访问的实时数据我们可以放在内存或者SSD(固态硬盘)设备中,对于容灾或者备份,我们可以使用大容量低成本的存储来应对。正所谓好钢用在刀刃上,用户也希望把资金投向更能产生效益的存储上。
除了需要满足不同的存储需求,还有出于对于高性能高吞吐量应用的支持。因为有的应用需要这样存储系统。特别是现在风头正劲的虚拟化技术。为了在一台设备上支持更多的虚拟应用,就需要系统支持更大的吞吐量以及更高的性能。全部采用高速介质在成本上现在依然不是可行的,也不是必须的。因为根据数据局部性原理,往往被频繁访问的数据是局部而有限的。为了应对部份这样的数据而全采用高速存储实在是过于奢侈。如果我们针对这部份数据另开小灶来解决不是更好?所以分层存储在这里就可以大展拳脚。我们把高频率访问的数据放在高速存储介质上,而其他的数据放在速度较慢一些的介质上,这实际上就是提高了系统的吞吐量。 从计算机系统角度来说,最上层的存储层应该是CPU内的各类型寄存器,其次是CPU内的缓存,其次再是系统内存。因为从分层存储的定义上,此类型存储器是符合定义规则的。因为这些存储器速度与容量都有差别,越靠近CPU的存储器成本越高,速度越快,容量越小,并且在CPU的控制下,数据这些不同类型的存储器中间进行自动的转存。比如寄存器通常在16、32、64、128位之间,而缓存则在几十个字节及到几兆字节之间,内存容量当前通常都在几百兆字节以上,服务器级的内存也上几十个吉字节。很有意思的是,这类型的分层也非常符合上图所示的效益成本曲线图。层级过多时,对于CPU的硬件设计及不同层次之间的数据一致性的保证都是一个挑战。所以,现代CPU在寄存器与内存之间的缓存基本在1-3级。而我们通常使用的386平台的CPU(Intel 及 AMD)基本上都只有两级缓存。这类存储都有一个共同的特点,就是系统掉电后数据不复存在。我们将此类型的分层存储称为易失性存储分层,或者内部存储器分层存储。
而另外一种分类,则是非易失性分层存储,或者叫外部分层存储。此类型的存储介质一般包括固态硬盘(SSD)、机械式硬盘、光盘、闪存盘(包括外置硬盘)、磁带库等等。而此类的存储介质分层正是我们所要关注的,如没有特殊的说明情况下,在此文档中所说的分层存储都是指外部分层存储。一般来说,作为第0层的存储介质通常为 RAM 磁盘(随机访问存储磁盘,其速度与内存同速,但是价格昂贵,使用环境基本上是特殊计算环境)以及 SSD,第1层可能有 FC 15K硬盘或者SAS 15K硬盘,或者相应的10K硬盘。第2层可能有其他类型的硬盘及磁盘库等。第3层,可能是如磁带库以及光盘库这样的离线介质。当然这样的分层不是标准,但是一个实践中常用的分层策略。
如 D2D2T 这样的存储方案,其实就是分层存储的一个实践方案。数据从本地的磁盘转存于于另一个远程的磁盘(D2D)。这个磁盘的形式可以是一个JBOD,或者一个虚拟存储设备,然后再通过一定的转存策略将这个磁盘的数据转存于磁带库或者磁带(D2T)。爱数备份存储柜X系列都支持D2D2T这样的应用。 由上一节可知道,外部分层存储只不过是内部分层存储的一个外延。所以,外部分层存储考虑的问题与内部分层存储实际上是大同小异的。
1、 首先是数据一致性的问题。这个问题比较好理解。如果不同的数据在不同的存储层级之间存在时,数据的改写必然导致数据的不致的问题。在内部分层存储时,可以采用通写策略或者回写策略。而不同的方法也有各自优缺点,这里就不再赘述。但是外部分层存储与内部分层存储有一个最大的不同是,内存储最终数据需要写到内存中,而外分层存储中,则不是必须的。当然也可以设计成这样的实现方案,但是这样话,分层存储的性能优势则必定会受到影响。数据在不同层级之间的连续性可以由一个虚拟层来保证。这个我们在谈到虚拟化时会讨论这个问题。
2、 第二个问题就是命中率的问题。如何设计一套算法或者实现策略来提高数据系统的命中率是分层存储中是否能起到其相应作用的关键。这个与CPU的缓存机制是完全一样的。不过,CPU的缓存机制已经有一套非常成熟的算法设计。而外部分层存储与内部分层存储有其不同的特性,因此,CPU中的缓存机制不能全部照拿过来用。特别是CPU的缓存机制还主要是硬件设计上面的问题。而外部存储层可能还与一些逻辑设计相关,比如文件系统,文件等。从这点上说,外部分层存储的软件设计上比起CPU缓存的设计可能要更复杂一些。
3、 第三个问题就是在分层介质的选择上。上面也提过,不同层级之间的介质应该是有差别的,否则就失去了分层的意义。一般来说,高速介质应该是小容量、高成本,随着层级的往下走,其成本容量曲线应该呈现如下的形式:
即容量越大的单位成本越低,速度越慢,因此应该放到更低的层级中,反之亦然。因此,在存储介质的配置上如何找到一个合适的点,使得成本与效益最优化则是在分层介质选择及策略制定上需要考虑的问题。下面的图中给出了一个实际的可能的配置方案:1、 第四个问题就是数据分层的级别。对于数据的描述有字节级,块级(包括扇区及簇),文件级及文件系统级。当然不同的级别有不同的应用场合,并不是哪种级别好于哪个级别。对于文件级的分层,对于归档,法规遵从则比较适合。对于文件系统级的则多用于容灾及备份系统中。对于块级则可能用在虚拟化中较为合适。因此需要根据不同的需求制定不同的分层级别。
2、 第五个问题就是数据的迁移策略的设计。可以根据数据的重要性、访问频度、大小、年龄来制定迁移策略。但是如同第四点所说明的那样,不同的策略是有不同的应用场合的,没有孰优孰劣的问题。好的策略应该是不同最优策略的组合,也就是因“需”制宜地选择合适的迁移算法或者方法。根据年龄进行迁移的策略可以用在归档及容灾备份系统中。根据访问频度则可以用于虚拟化存储系统中等等。类似的方法已经用于计算机软件设计或者硬件设计当中的很多地方,如LRU(最近最少使用)、ARC(自适应交替缓存)都是可以借鉴的。
9. 计算机网络为什么采用层次化的体系结构
方便维护和管理。在运行中将一个工作分为每个环节,分别由不同的硬件和软件模块去完成。这样可以将往来通信和网络互连这一复杂的问题变得较为简单。
10. 存储器的层次体系结构是什么样的
各存储器之间的关系
按照与CPU的接近程度,存储器分为内存储器与外存储器,简称内存与外存。内存储器又常称为主存储器(简称主存),属于主机的组成部分;外存储器又常称为辅助存储器(简称辅存),属于外部设备。CPU不能像访问内存那样,直接访问外存,外存要与CPU或I/O设备进行数据传输,必须通过内存进行。在80386以上的高档微机中,还配置了高速缓冲存储器(cache),这时内存包括主存与高速缓存两部分。对于低档微机,主存即为内存。
把存储器分为几个层次主要基于下述原因:
半导体存储器
1、合理解决速度与成本的矛盾,以得到较高的性能价格比。半导体存储器速度快,但价格高,容量不宜做得很大,因此仅用作与CPU频繁交流信息的内存储器。磁盘存储器价格较便宜,可以把容量做得很大,但存取速度较慢,因此用作存取次数较少,且需存放大量程序、原始数据(许多程序和数据是暂时不参加运算的)和运行结果的外存储器。计算机在执行某项任务时,仅将与此有关的程序和原始数据从磁盘上调入容量较小的内存,通过CPU与内存进行高速的数据处理,然后将最终结果通过内存再写入磁盘。这样的配置价格适中,综合存取速度则较快。
存储器芯片
为解决高速的CPU与速度相对较慢的主存的矛盾,还可使用高速缓存。它采用速度很快、价格更高的半导体静态存储器,甚至与微处理器做在一起,存放当前使用最频繁的指令和数据。当CPU从内存中读取指令与数据时,将同时访问高速缓存与主存。如果所需内容在高速缓存中,就能立即获取;如没有,再从主存中读取。高速缓存中的内容是根据实际情况及时更换的。这样,通过增加少量成本即可获得很高的速度。
2、使用磁盘作为外存,不仅价格便宜,可以把存储容量做得很大,而且在断电时它所存放的信息也不丢失,可以长久保存,且复制、携带都很方便。