在计算机系统中,存储器是用来保存原始数据、操作数据、结果数据的重要设备,主要分为主存储器、辅存储器、Cache3种。在历年的考试中,涉及本部分知识点的考题占整个“计算机硬件基础”知识的一半左右,是值得重视的部分。
本部分的知识主要包括存储器的存取方式、性能等特征,存储器的种类、组成与编码、Cache基本知识、磁盘、磁带及SCSI、RAID等知识点。其中,Cache知识、磁盘的相关计算、各种性能指标的计算是常出现的题型。
难度系数:☆ 考查频度:☆ 考查权重:☆
本知识点的要点在于了解4种存取方式的异同及表示,掌握存储器带宽的计算方式,从概念上了解存取时间和数据传输率的意义。
(1)存储器的存取方式,如表3-5所示。
表3-5 存储器的存取方式
(2)存储器的性能。
· 存取时间:对于随机存取而言,就是完成一次读/写所花的时间;对非随机存取而言,就是将读写装置移动到目的位置所花的时间。
· 存储器带宽:每秒钟能访问的位数。通常存储器周期是纳秒级(ns,即10- 9 秒)的,因此通常情况下的计算公式是:1/存储器周期×每周期可访问的字节数。例如:存储器周期是200ns,而每个周期可访问4字节,则带宽=1s/200ns× (4字节×8)=160Mbps。
· 数据传输率:每秒钟输入/输出的数据位数。对于随机存取而言,传输率 R =1/存储器周期;对于非随机存取而言,读写 N 位所需的平均时间=平均存取时间+ N 位/数据传输率。
难度系数:☆☆ 考查频度:☆☆☆ 考查权重:☆
本知识点的要点在于正确区别各种不同的主存储器类型,能够计算出特定容量的主存储器需要多少块某种特定规格的存储芯片,并且正确地认识与理解主存储器编码的规则。
(1)主存储器的种类。
· RAM:随机存储器,可读写,断电后数据无法保存,只能暂存数据。
SRAM:静态随机存储器,在不断电时信息能够一直保持。
DRAM:动态随机存储器,需要定时刷新以维持信息不丢失。
· ROM:只读存储器,出厂前用 掩膜 技术写入,常用于存放BIOS和微程序控制。
· PROM:可编程ROM,只能够一次写入,需用特殊电子设备进行写入。
· EPROM:可擦除的PROM,用紫外线照射15~20分钟可擦去所有信息,可写入多次。
· E 2 PROM:电可擦除EPROM,可以写入,但速度慢。
· 闪速存储器:现在U盘使用的种类,可以快速写入。
记忆时,抓住几个关键英文字母。A,即Access,说明读写都行;O,即Only,说明只读;P,即Programmable,说明可通过特殊电子设备写入;E,即Erasable,说明可擦写;E平方说明是两个E,第二个E是指电子。
(2)主存储器的组成。
实际的存储器总是由一片或多片存储器配以控制电路构成的。其容量为W×B,W是存储单元(word,即字)的数量,B表示每个word由多少bit(位)组成。如果某一芯片规格为w×b,则组成W×B的存储器需要用(W/w)×(B/b)个芯片,如图3-5所示。
图3-5 主存储器的组成示意图
(3)主存储器的地址编码。
主存储器(内存)采用的是随机存取方式,需对每个数据块进行编码,而在主存储器中,数据块是以word为单位来标识的,即每个字一个地址,通常采用十六进制数表示。例如,按字节编址,地址从A4000H~CBFFFH,则表示有(CBFFF-A4000)+1个字节,即28000H个字节,也就是163840个字节,等于160KB。
需要注意的是,编址的基础可以是字节,也可以是字(字是由1个或多个字节组成的),要算地址位数,首先应计算要编址的字或字节数,然后求2的对数即可得到。
难度系数:☆☆☆ 考查频度:☆☆☆ 考查权重:☆☆☆
本知识点的要点在于理解Cache的作用、常见淘汰算法、写直达/写回两种方式的区别,能够根据Cache的命中率计算系统的平均存储周期,以及知道Cache的3种映射机制,特别是组相联映射。
由于在CPU与存储系统之间存在着数据传送带宽的限制,因此在其中设置了Cache(高速缓冲存储器,简称高速缓存,通常速度比内存快),以提高整体效率。但由于其成本更高,因此Cache的容量要比内存小得多。由于Cache为高速缓存,存储了频繁访问内存的数据,因此它与Cache单元地址转换的工作需要稳定而且高速的硬件来完成。
(1)Cache原理、命中率、失效率。
使用Cache改善系统性能的主要依据是 程序的局部性原理 。通俗地说,就是一段时间内,执行的语句常集中于某个局部。而Cache正是通过将访问集中的内容放在速度更快的Cache上来提高性能的。引入Cache后,CPU在需要数据时,先找Cache,没找到再到内存中找。
如果Cache的访问 命中率 为 h (通常1- h 就是Cache的 失效率 ),而Cache的访问周期时间是 t 1 ,主存储器的访问周期时间是 t 2 ,则整个系统的平均访存时间就应该是:
t 3 = h × t 1 + (1- h ) × t 2
从公式可以看出,系统的平均访存时间与命中率有很密切的关系。灵活地应用这个公式,可以计算出所有情况下的平均访存时间。
例如:假设某流水线计算机主存的读/写时间为l00ns,有一个指令和数据合一的Cache,已知该Cache的读/写时间为l0ns,取指令的命中率为98%,取数据的命中率为95%。在执行某类程序时,约有1/5指令需要存/取一个操作数。假设指令流水线在任何时候都不阻塞,则设置Cache后,每条指令的平均访存时间约为多少?其实这是应用公式的一道简单数学题:
(2% × 100ns + 98% × 10ns)+ 1/5 ×(5% × 100ns + 95% × 10ns)=14.7ns
(2)Cache存储器的映射机制。
分配给Cache的地址存放在一个相联存储器(CAM)中。CPU发生访存请求时,会先让CAM判断所要访问的字的地址是否在Cache中,如果命中就直接使用。这个判断的过程就是 Cache地址映射 ,这个速度应该尽可能快。常见的映射方法有直接映射、全相联映射和组相联映射3种,其原理如图3-6所示。
图3-6 Cache映射规则图解
· 直接映射:是一种多对一的映射关系,但一个主存块只能够复制到Cache的一个特定位置上去。Cache的行号 i 和主存的块号 j 有函数关系: i = j % m (其中 m 为Cache总行数)。
例如,某Cache容量为16KB(即可用14位表示),每行的大小为16B(即可用4位表示),则说明其可分为1024行(可用10位表示)。主存地址的最低4位为Cache的行内地址,中间10位为Cache行号。如果内存地址为1234E8F8H的话,那么最后4位就是1000(对应十六进制数的最后一位),而中间10位,则应从E8F(111010001111)中获取,得到1010001111。
· 全相联映射:将主存中一个块的地址与块的内容一起存于Cache的行中,任一主存块能映射到Cache中任意行(主存块的容量等于Cache行容量)。速度更快,但控制复杂。
· 组相联映射:是前两种方式的折中方案。它将Cache中的块再分成组,然后通过直接映射方式决定组号,再通过全相联映射的方式决定Cache中的块号。
注意:在Cache映射中,主存和Cache存储器均分成容量相同的块。
例如,容量为64块的Cache采用组相联方式映射,字块大小为128个字,每4块为一组。若主存容量为4096块,且以字编址,那么主存地址应该为多少位?主存区号为多少位?这样的题目,首先根据主存块与Cache块的容量需一致,得出内存块也是128个字,因此共有128×4096个字,即2 19 (2 7 ×2 12 )个字,因此需19位主存地址;而内存需要分为4096/64块,即2 6 ,因此主存区号需6位。
(3)Cache淘汰算法。
当Cache数据已满,并且出现未命中情况时,就要淘汰一些老的数据,更新一些新的数据。选择淘汰什么数据的方法就是淘汰算法。常见的方法有3种: 随机淘汰 、 先进先出 ( FIFO )淘汰(即淘汰最早调入Cache的数据)、 最近最少使用 ( LRU )淘汰法。其中平均 命中率最高的是LRU 算法。
(4)Cache存储器的写操作。
在使用Cache时,需要保证其数据与主存一致,因此在写Cache时就需要考虑与主存间的同步问题,通常使用以下3种方法: 写直达 (写Cache时, 同时写主存 )、 写回 (写Cache时不马上写主存,而是 等其淘汰时回写 )、 标记法 。
难度系数:☆ 考查频度:☆ 考查权重:☆
本知识点的要点是掌握磁带存储器的各种性能计算方法。
磁带存储器是一种顺序存取设备,存取时间长,容量大,现在常用于备份。根据其读写方式的不同,它通常包括以下两种。
· 启停式:以文件块的形式存放信息,数据块间有空白块,其磁道数就是磁头数。
· 数据流式:串行逐道记录信息,每次读写1位。它结构简单、价格低、速度快。
难度系数:☆☆ 考查频度:☆☆ 考查权重:☆☆
本知识点的要点是掌握与磁盘相关的最重要的概念与计算公式。
磁盘是最常见的一种外部存储器,它是由1至多个圆形磁盘组成的,其结构如图3-7所示。
图3-7 磁盘的主要术语示意图
(1)常见技术指标。
· 计算磁道数:(外半径-内半径)×道密度×记录面数。
注意:硬盘的第一面与最后一面是保护用的,要减掉。如3个双面的盘片的记录面数是3×2-2=4。
· 非格式化容量=位密度×P×最内圈直径×总磁道数
注意:每道的位密度是不同的,但每道的容量是相同的。0道是最外面的磁道,其位密度最小。
· 格式化容量=每道扇区数×扇区容量×总磁道数
· 平均数据传输速率=每道扇区数×扇区容量×盘片转数
· 存取时间=寻道时间+等待时间。其中,寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。
(2)磁记录方式。
磁盘是按照某种规律将一连串的二进制数字信息变换成为磁介质上的某个磁通翻转形式,采用的是 串 - 并行 的方式写入。常见的几种写电流波形如图3-8所示。
图3-8 磁盘写电流常见波形
要区分这些不同的波,关键在于识别特点:
· 归零制——每个波都回到零电平(中间),成为凸字和凹字形。
· 不归零制——用高电平表示1,低电平表示0。
· 不归零-1制——见到1就翻转,见到0不变。
以上3种均为 直接记录方式 。
· 调相制——用低到高的翻转代表1,用高到低的翻转代表0,常用于磁带机。
· 调频制——用有频率表示1,无频率代表0,用于早期硬盘和单密度软盘。
· 改进的调频制——在调频制的基础上加上了翻转规则,广泛应用于硬盘上。
难度系数:☆ 考查频度:☆☆ 考查权重:☆
本知识点的要点是掌握小型计算机系统接口SCSI和廉价磁盘冗余阵列(RAID)的一些相关术语。
SCSI接口是小型计算机系统接口的简称,它是一种输入/输出接口,主要用于光盘机、磁带机、硬盘、扫描仪、打印机等设备。它的特点是速度快,支持多I/O任务并行操作。表3-6是常见的一些SCSI标准数据。
表3-6 SCSI标准数据
RAID是多台磁盘存储器组成的一个快速、大容量、高可靠性的辅助存储子系统。它通过利用多磁盘来提高数据传输率;通过数据冗余与校验实现可靠性;通常采用专用的控制芯片,用SCSI总线与计算机系统相连。目前RAID主要分为6级,如表3-7所示。
表3-7 RAID级别
其中应用最为广泛的包括RAID0、RAID1、RAID3、RAID5四种,其更详细的特点如下所述。
· 0级RAID:在多个磁盘上条带化。0级RAID没有冗余度,通常用于数据的稳定性并不重要,但对数据传输的速度要求很高的场合。如果0级RAID系统中的任何一个磁盘出现故障了,所有磁盘上的数据都会丢失。
· 1级RAID:磁盘镜像。就RAID而言,这是最昂贵的组合,因为每个磁盘都有一个额外的磁盘作为它的冗余配置。换句话说,两个硬盘镜像后可使用的只有一个硬盘的容量。由于不在同一个磁盘上进行条带化写入数据,因此其写入相对要慢一些,从另一方面说,它通常具有优良的读出性能。
· 3级RAID:它是在数据磁盘之间进行条状数据写入,然后将校验信息写到校验盘。这相对于1级而言是更加经济的,而且如果其中任何一块磁盘损坏,都可以插入一个空磁盘,然后RAID控制器会根据其他盘的数据来还原这个磁盘。
· 5级RAID:被称为带有奇偶校验的带区集。RAID5的工作方式与RAID1类似,但是RAID5在写入数据的时候还要写入校验信息。这些校验信息是由被保存的数据通过奇偶校验的算法计算出来的。在RAID5中校验信息被写入到不同的硬盘中(如图3-9所示),目的是在源数据部分丢失的情况下可以通过剩余的数据和校验信息恢复丢失的数据。RAID5只能容忍一块磁盘的损坏,如果多于一块的磁盘同时损坏,RAID5将不能恢复数据。RAID5具有良好的读性能,并且其磁盘利用率比RAID1要高,现在被广泛的采用。
图3-9 RAID5的校验信息分别写入不同硬盘
· 把RAID0和RAID 1技术结合起来,即RAID0+1。RAID0+1是磁盘分段及镜像的结合,结合了RAID0及RAID1最佳的优点。它采用两组RAID0的磁盘阵列互为镜像,也就是它们之间又成为一个RAID1阵列。在每次写入数据时,磁盘阵列控制器会将数据同时写入两组“大容量阵列硬盘组”(RAID0)中。
除此之外,现在还有一些改进的标准,诸如RAID6、RAID7、RAID10等。