全部科目 > 系统分析师 >
2017年上半年 上午试卷 综合知识
第 18 题
知识点 Cache   主存储器   存储器   存储系统   高速缓存  
关键词 Cache   存储系统   高速缓存   主存储器   存储器   主存  
章/节 计算机组成与体系结构  
 
 
高速缓存 (Cache) -存储器构成的存储系统中,( )。
 
  A.  主存地址到Cache地址的变换由硬件完成,以提高速度
 
  B.  主存地址到Cache地址的变换由软件完成,以提高灵活性
 
  C.  Cache 的命中率随其容量增大线性地提高
 
  D.  Cache 的内容在任意时刻与主存内容完全一致
 
 




 
 
相关试题     多级存储器体系 

  第16题    2016年上半年  
Cache的替换算法中,(16)算法计数器位数多,实现困难。

  第62题    2020年下半年  
磁盘冗余阵列(Redundant Array of Inexpensive Disks,RAID)机制中共分(61)级别,RAID应用的主要技术有分块技术、交叉技术和重聚技术。其中,(62)是无冗余和无校验的数据分块:(63)由磁盘对组..

  第63题    2020年下半年  
磁盘冗余阵列(Redundant Array of Inexpensive Disks,RAID)机制中共分(61)级别,RAID应用的主要技术有分块技术、交叉技术和重聚技术。其中,(62)是无冗余和无校验的数据分块:(63)由磁盘对组..

 
知识点讲解
· Cache
· 主存储器
· 存储器
· 存储系统
· 高速缓存
 
        Cache
        Cache的功能是提高CPU数据输入输出的速率,突破所谓的“冯.诺依曼瓶颈”,即CPU与存储系统间数据传送带宽限制。高速存储器能以极高的速率进行数据的访问,但因其价格高昂,如果计算机的内存完全由这种高速存储器组成则会大大增加计算机的成本。通常在CPU和内存之间设置小容量的高速存储器Cache。Cache容量小但速度快,内存速度较低但容量大,通过优化调度算法,系统的性能会大大改善,仿佛其存储系统容量与内存相当而访问速度近似Cache。
               Cache基本原理
               使用Cache改善系统性能的依据是程序的局部性原理。依据局部性原理,把内存中访问概率高的内容存放在Cache中,当CPU需要读取数据时就首先在Cache中查找是否有所需内容,如果有,则直接从Cache中读取;若没有,再从内存中读取该数据,然后同时送往CPU和Cache。如果CPU需要访问的内容大多都能在Cache中找到(称为访问命中),则可以大大提高系统性能。
               如果以h代表对Cache的访问命中率(“1-h”称为失效率,或者称为未命中率),t1表示Cache的周期时间,t2表示内存的周期时间,以读操作为例,使用“Cache+主存储器”的系统的平均周期为t3。则:
               t3=t1×h+t2×(1-h
               系统的平均存储周期与命中率有很密切的关系,命中率的提高即使很小也能导致性能上的较大改善。
               例如,设某计算机主存的读/写时间为100ns,有一个指令和数据合一的Cache,已知该Cache的读/写时间为10ns,取指令的命中率为98%,取数的命中率为95%。在执行某类程序时,约有1/5指令需要存/取一个操作数。假设指令流水线在任何时候都不阻塞,则设置Cache后,每条指令的平均访存时间约为:
               (2%×100ns+98%×10ns)+1/5×(5%×100ns+95%×10ns)=14.7ns
               映射机制
               当CPU发出访存请求后,存储器地址先被送到Cache控制器以确定所需数据是否已在Cache中,若命中则直接对Cache进行访问。这个过程被称为Cache的地址映射(映像)。在Cache的地址映射中,主存和Cache将均分成容量相同的块(页)。常见的映射方法有直接映射、全相联映射和组相联映射。
               (1)直接映射。直接映射方式以随机存取存储器作为Cache存储器,硬件电路较简单。直接映射是一种多对一的映射关系,但一个主存块只能够复制到Cache的一个特定位置上去。
               例如,某Cache容量为16KB(即可用14位表示),每块的大小为16B(即可用4位表示),则说明其可分为1024块(可用10位表示)。则主存地址的最低4位为Cache的块内地址,然后接下来的中间10位为Cache块号。如果内存地址为1234E8F8H的话(一共32位),那么最后4位就是1000(对应十六进制数的最后一位“8”),而中间10位,则应从E8F(1110 1000 1111)中获取,得到10 1000 1111。因此,内存地址为1234E8F8H的单元装入的Cache地址为10 1000 1111 1000。
               直接映射方式的优点是比较容易实现,缺点是不够灵活,有可能使Cache的存储空间得不到充分利用。例如,假设Cache有8块,则主存的第1块与第17块同时复制到Cache的第1页,即使Cache其他页面空闲,也有一个主存页不能写入Cache。
               (2)全相联映射。全相联映射使用相联存储器组成的Cache存储器。在全相联映射方式中,主存的每一页可以映射到Cache的任一页。如果淘汰Cache中某一页的内容,则可调入任一主存页中的内容,因而较直接映射方式灵活。
               在全相联映射方式中,主存地址不能直接提取Cache页号,而是需要将主存页标记与Cache各页的标记逐个比较,直到找到标记符合的页(访问Cache命中),或者全部比较完后仍无符合的标记(访问Cache失败)。因此这种映射方式速度很慢,失掉了高速缓存的作用,这是全相联映射方式的最大缺点。如果让主存页标记与各Cache标记同时比较,则成本又太高。全相联映像方式因比较器电路难于设计和实现,只适用于小容量Cache。
               (3)组相联映射。组相联映射是直接映射和全相联映射的折中方案。它将Cache中的块再分成组,通过直接映射方式决定组号,通过全相联映射的方式决定Cache中的块号。在组相联映射方式中,主存中一个组内的块数与Cache的分组数相同。
               例如:容量为64块的Cache采用组相联方式映像,每块大小为128个字,每4块为一组。若主存容量为4096块,且以字编址,那么主存地址应该为多少位?主存区号(组号)为多少位?这样的题目,首先根据主存与Cache块的容量需一致,即每个内存块的大小也是128个字,因此共有128×4096个字(219个字),即主存地址需要19位。因为Cache分为16组,所以主存需要分为4096/16=256组,即28组,因此主存组号需8位。
               在组相联映射中,由于Cache中每组有若干可供选择的页,因而它在映像定位方面较直接映像方式灵活;每组页数有限,因此付出的代价不是很大,可以根据设计目标选择组内页数。
               淘汰算法
               当Cache产生了一次访问未命中之后,相应的数据应同时读入CPU和Cache。但是当Cache已存满数据后,新数据必须淘汰Cache中的某些旧数据。最常用的淘汰算法有随机淘汰法、先进先出法(First In and First Out, FIFO)和近期最少使用淘汰法(Least Recently Used, LRU)。其中平均命中率最高的是LRU算法。
               写操作
               因为需要保证缓存在Cache中的数据与内存中的内容一致,相对读操作而言,Cache的写操作比较复杂,常用的有以下几种方法。
               (1)写直达(write through)。当要写Cache时,数据同时写回内存,有时也称为写通。
               (2)写回(write back)。CPU修改Cache的某一行后,相应的数据并不立即写入内存单元,而是当该行从Cache中被淘汰时,才把数据写回到内存中。
               (3)标记法。对Cache中的每一个数据设置一个有效位。当数据进入Cache后,有效位置1;而当CPU要对该数据进行修改时,数据只需写入内存并同时将该有效位清0。当要从Cache中读取数据时需要测试其有效位:若为1则直接从Cache中取数,否则从内存中取数。
 
        主存储器
        主存储器也就是我们简称的主存或内存,根据工艺和技术不同,可分为下列几种。
        (1)RAM(Random Access Memory,随机存取存储器):RAM存储器既可以写入也可以读出,但断电后信息无法保存,因此只能用于暂存数据。RAM又可分为DRAM(Dynamic RAM,动态RAM)和SRAM(Static RAM,静态RAM)两种。DRAM的信息会随时间逐渐消失,因此需要定时对其进行刷新(refresh)维持信息不丢失;SRAM在不断电的情况下信息能够一直保持而不会丢失。DRAM的密度大于SRAM且更加便宜,但SRAM速度快,电路简单(勿需刷新电路),然而容量小,价格高。
        (2)ROM(Read Only Memory,只读存储器):信息已固化在存储器中。ROM出厂时其内容由厂家用掩膜技术(mask)写好,只可读出,但无法改写。一般用于存放系统程序BIOS(Basic Input Output System,基本输入输出系统)和用于微程序控制。
        (3)PROM(Programmable ROM,可编程ROM):只能进行一次写入操作(与ROM相同),但是可以在出厂后,由用户使用特殊电子设备进行写入。
        (4)EPROM(Erasable PROM,可擦除的PROM):其中的内容既可以读出,也可以写入。但是在一次写操作之前必须用紫外线照射15~20分钟以擦去所有信息,然后再写入。可以写多次。
        (5)E2PROM(Electrically EPROM,电可擦除EPROM):与EPROM相似,可以读出也可写入,而且在写操作之前,不需要把以前内容先擦去。能够直接对寻址的字节或块进行修改,只不过写操作所需的时间远远大于读操作所需时间(每字节需几百ms),其集成度也较低。
        (6)闪速存储器(flash memory,闪存):其性能介于EPROM与E2PROM之间。与E2PROM相似,可使用电信号进行删除操作。整块闪速存储器可以在数秒内删除,速度远快于EPROM;而且可以选择删除某一块而非整块芯片的内容,但还不能进行字节级别的删除操作。集成度与EPROM相当,高于E2PROM。
        (7)CAM(Content Addressable Memory,相联存储器):CAM是一种特殊的存储器,是一种基于数据内容进行访问的存储设备。当对其写入数据时,CAM能够自动选择一个未用的空单元进行存储;当要读出数据时,不是给出其存储单元的地址,而是直接给出该数据或者该数据的一部分内容,CAM对所有的存储单元中的数据同时进行比较并标记符合条件的所有数据以供读取。由于比较是同时、并行进行的,所以这种基于数据内容进行读写的机制,其速度比基于地址进行读写的方式要快许多。
 
        存储器
        计算机系统中包括各种存储器,如CPU内部的通用寄存器组和Cache(高速缓存)、CPU外部的Cache、主板上的主存储器、主板外的联机(在线)磁盘存储器以及脱机(离线)的磁带存储器和光盘存储器等。不同特点的存储器通过适当的硬件、软件有机地组合在一起形成计算机的存储体系层次结构,位于更高层的存储设备比较低层次的存储设备速度更快、单位比特造价也更高。其中,Cache和主存之间的交互功能全部由硬件实现,而主存与辅存之间的交互功能可由硬件和软件结合起来实现。
               存储器的分类
                      按存储器所处的位置分类
                      按存储器所处的位置可分为内存和外存。
                      (1)内存。也称为主存(Main Memory),设在主机内或主机板上,用来存放机器当前运行所需要的程序和数据,以便向CPU提供信息。相对于外存,其特点是容量小、速度快。
                      (2)外存。也称为辅存,如磁盘、磁带和光盘等,用来存放当前不参加运行的大量信息,而在需要时调入内存。
                      按存储器的构成材料分类
                      按构成存储器的材料可分为磁存储器、半导体存储器和光存储器。
                      (1)磁存储器。磁存储器是用磁性介质做成的,如磁芯、磁泡、磁膜、磁鼓、磁带及磁盘等。
                      (2)半导体存储器。根据所用元器件又可分为双极型和MOS型;根据数据是否需要刷新又可分为静态(Static memory)和动态(Dynamic memory)两类。
                      (3)光存储器。利用光学方法读/写数据的存储器,如光盘(Optical Disk)。
                      按存储器的工作方式分类
                      按存储器的工作方式可分为读/写存储器和只读存储器。
                      (1)读/写存储器(Random Access Memory,RAM)。它指既能读取数据也能存入数据的存储器。按照存储单元的工作原理,随机存储器又分为静态随机存储器(Static RAM,SRAM)和动态随机存储器(Dynamic RAM,DRAM)。SRAM比DRAM更快,也贵得多。
                      (2)只读存储器。工作过程中仅能读取的存储器,根据数据的写入方式,这种存储器又可细分为ROM、PROM、EPROM和EEPROM等类型。
                      ①固定只读存储器(Read Only Memory,ROM)。这种存储器是在厂家生产时就写好数据的,其内容只能读出,不能改变。一般用于存放系统程序BIOS和用于微程序控制。
                      ②可编程的只读存储器(Programmable Read Only Memory,PROM)。其中的内容可以由用户一次性地写入,写入后不能再修改。
                      ③可擦除可编程的只读存储器(Erasable Programmable Read Only Memory,EPROM)。其中的内容既可以读出,也可以由用户写入,写入后还可以修改。改写的方法是写入之前先用紫外线照射15~20分钟以擦去所有信息,然后再用特殊的电子设备写入信息。
                      ④电擦除可编程的只读存储器(Electrically Erasable Programmable Read Only Memory,EEPROM)。与EPROM相似,EEPROM中的内容既可以读出,也可以进行改写。只不过这种存储器是用电擦除的方法进行数据的改写。
                      ⑤闪存(Flash Memory)。闪存是一种非易失性存储器,基于EEPROM,已成为重要的存储技术,为大量电子设备包括数码相机、手机、PDA、笔记本、台式机和服务器等计算机系统提供快速且持久的存储能力。
                      存储在ROM设备中的程序通常称为固件(Firmware)。例如,当计算机加电后,它会运行存储在ROM中的固件。
                      按访问方式分类
                      按访问方式可分为按地址访问的存储器和按内容访问的存储器。
                      按寻址方式分类
                      按寻址方式可分为随机存储器、顺序存储器和直接存储器。
                      (1)随机存储器(Random Access Memory,RAM)。这种存储器可对任何存储单元存入或读取数据,访问任何一个存储单元所需的时间是相同的。
                      (2)顺序存储器(Sequentially Addressed Memory,SAM)。访问数据所需要的时间与数据所在的存储位置相关,磁带是典型的顺序存储器。
                      (3)直接存储器(Direct Addressed Memory,DAM)。介于随机存取和顺序存取之间的一种寻址方式。磁盘是一种直接存取存储器,它对磁道的寻址是随机的,而在一个磁道内则是顺序寻址。
               相联存储器
               相联存储器是一种按内容访问的存储器。其工作原理就是把数据或数据的某一部分作为关键字,按顺序写入信息,读出时并行地将该关键字与存储器中的每一单元进行比较,找出存储器中所有与关键字相同的数据字,特别适合于信息的检索和更新。
               相联存储器的结构如下图所示。
               
               相联存储器的结构框图
               相联存储器中,输入检索寄存器用来存放要检索的内容(关键字),屏蔽寄存器用来屏蔽那些不参与检索的字段,比较器将检索的关键字与存储体的每一单元进行比较。为了提高速度,比较器的数量应很大。对于位比较器,应每位对应一个,应有2m×N个,对于字比较器应有2m个。匹配寄存器用来记录比较的结果,它应有2m个二进制位,用来记录2m个比较器的结果,1为相等(匹配),0为不相等(不匹配)。
               相联存储器可用在高速缓冲存储器中,在虚拟存储器中用来作为段表、页表或快表存储器,用在数据库和知识库中。
               高速缓存
               高速缓存(Cache)由快速半导体存储器构成,用来存放当前最活跃的程序和数据,其内容是主存局部域的副本,对程序员来说是透明的。
                      高速缓存的组成
                      Cache存储器中控制部分的功能是判断CPU要访问的信息是否在Cache存储器中,若在即为命中,若不在则没有命中。命中时直接对Cache存储器寻址;未命中时,要按照替换原则决定主存的一块信息放到Cache存储器的哪一块里。
                      现代CPU中Cache分为了多个层级,如下图所示。
                      
                      三级Cache示意图
                      在多级Cache的计算机中,Cache分为一级(L1 Cache)、二级(L2Cache)、三级(L3 Cache)等,CPU访存时首先查找L1 Cache,如果不命中,则访问L2Cache,直到所有级别的Cache都不命中,才访问主存。通常要求L1 Cache的速度足够快,以赶上CPU的主频。如果Cache为两级,则L1 Cache的容量一般都比较小,为几千字节到几十千字节;L2 Cache则具有较高的容量,一般为几百字节到几兆字节,以使高速缓存具有足够高的命中率。
                      高速缓存中的地址映像方法
                      在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换成Cache存储器的地址,这种地址的转换称为地址映像。Cache的地址映像有如下3种方法。
                      (1)直接映像。直接映像是指主存的块与Cache块的对应关系是固定的,如下图所示。
                      
                      直接映像示意图
                      在这种映像方式下,由于主存中的块只能存放在Cache存储器的相同块号中,因此,只要主存地址中的主存区号与Cache中记录的主存区号相同,则表明访问Cache命中。一旦命中,由主存地址中的区内块号立即可得到要访问的Cache存储器中的块,而块内地址就是主存地址中给出的低位地址。
                      直接映像方式的优点是地址变换很简单,缺点是灵活性差。例如,不同区号中块号相同的块无法同时调入Cache存储器,即使Cache存储器中有空闲的块也不能利用。
                      (2)全相联映像。全相联映像如下图所示。同样,主存与Cache存储器均分成大小相同的块。这种映像方式允许主存的任一块可以调入Cache存储器的任何一个块的空间中。
                      
                      全相联映像示意图
                      例如,主存为64MB,Cache为32KB,块的大小为4KB(块内地址需要12位),因此主存分为16384块,块号从0~16383,表示块号需要14位,Cache分为8块,块号为0~7,表示块号需3位。存放主存块号的相联存储器需要有Cache块个数相同数目的单元(该例中为8),相联存储器中每个单元记录所存储的主存块的块号,该例中相联存储器每个单元应为14位,共8个单元。
                      在地址变换时,利用主存地址高位表示的主存块号与Cache中相联存储器所有单元中记录的主存块号进行比较,若相同即为命中。这时相联存储器单元的编号就对应要访问Cache的块号,从而在相应的Cache块中根据块内地址(上例中块内地址是12位,Cache与主存的块内地址是相同的)访问到相应的存储单元。
                      全相联映像的主要优点是主存的块调入Cache的位置不受限制,十分灵活。其主要缺点是无法从主存块号中直接获得Cache的块号,变换比较复杂,速度比较慢。
                      (3)组相联映像。这种方式是前面两种方式的折中。具体方法是将Cache中的块再分成组。例如,假定Cache有16块,再将每两块分为1组,则Cache就分为8组。主存同样分区,每区16块,再将每两块分为1组,则每区就分为8组。
                      组相联映像就是规定组采用直接映像方式而块采用全相联映像方式。也就是说,主存任何区的0组只能存到Cache的0组中,1组只能存到Cache的1组中,以此类推。组内的块则采用全相联映像方式,即一组内的块可以任意存放。也就是说,主存一组中的任一块可以存入Cache相应组的任一块中。
                      在这种方式下,通过直接映像方式来决定组号,在一组内再用全相联映像方式来决定Cache中的块号。由主存地址高位决定的主存区号与Cache中区号比较可决定是否命中。主存后面的地址即为组号。
                      替换算法
                      替换算法的目标就是使Cache获得尽可能高的命中率。常用算法有如下几种。
                      (1)随机替换算法。就是用随机数发生器产生一个要替换的块号,将该块替换出去。
                      (2)先进先出算法。就是将最先进入Cache的信息块替换出去。
                      (3)近期最少使用算法。这种方法是将近期最少使用的Cache中的信息块替换出去。
                      (4)优化替换算法。这种方法必须先执行一次程序,统计Cache的替换情况。有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换。
                      Cache性能分析
                      Cache的性能是计算机系统性能的重要方面。命中率是Cache的一个重要指标,但不是最主要的指标。Cache设计的目标是在成本允许的条件下达到较高的命中率,使存储系统具有最短的平均访问时间。设Hc为Cache的命中率,tc为Cache的存取时间,tm为主存的访问时间,则Cache存储器的等效加权平均访问时间ta为:
                      ta=Hctc+(1-Hc)tm=tc+(1-Hc)(tm-tc
                      这里假设Cache访问和主存访问是同时启动的,其中,tc为Cache命中时的访问时间,(tm-tc)为失效访问时间。如果在Cache不命中时才启动主存,则
                      ta=tc+(1-Hc)tm
                      Cache的命中率与Cache容量的关系如下图所示。Cache容量越大,则命中率越高,随着Cache容量的增加,其失效率接近0%(命中率逐渐接近100%)。但是,增加Cache容量意味着增加Cache的成本和增加Cache的命中时间。
                      
                      Cache容量与命中率的关系
                      在指令流水线中,Cache访问作为流水线中的一个操作阶段,Cache失效将影响指令的流水。因此,降低Cache的失效率是提高Cache性能的一项重要措施。当Cache容量比较小时,容量因素在Cache失效中占有比较大的比例。降低Cache失效率的方法主要有选择恰当的块容量、提高Cache的容量和提高Cache的相联度等。
               虚拟存储器
               在概念上,可以将主存存储器看作一个由若干个字节构成的存储空间,每个字节(称为一个存储单元)有一个地址编号,主存单元的该地址称为物理地址(physical address)。当需要访问主存中的数据时,由CPU给出要访问数据所在的存储单元地址,然后由主存的读写控制部件定位对应的存储单元,对其进行读(或写)操作来完成访问操作。
               现代系统提供了一种对主存的抽象,称为虚拟存储(virtual memory),使用虚拟地址(virtual address,由CPU生成)的概念来访问主存,使用专门的MMU(Memory Management Unit)将虚拟地址转换为物理地址后访问主存。设主存容量为4GB,则其简化后的访问操作和内存模型如下图所示。
               
               内存模型及使用虚拟地址访存示意图
               虚拟存储器实际上是一种逻辑存储器,实质是对物理存储设备进行逻辑化的处理,并将统一的逻辑视图呈现给用户。因此,用户在使用时,操作的是虚拟设备,无需关心底层的物理环境,从而可以充分利用基于异构平台的存储空间,达到最优化的使用效率。
               外存储器
               外存储器用来存放暂时不用的程序和数据,并且以文件的形式存储。CPU不能直接访问外存中的程序和数据,只有将其以文件为单位调入主存才可访问。外存储器主要由磁表面存储器(如磁盘、磁带)、光盘存储器及固态硬盘(采用Flash芯片或DRAM作为存储介质的存储器)构成。
                      磁盘存储器
                      硬盘是最常见的外存储器。一个硬盘驱动器内可装有多个盘片,组成盘片组,每个盘片都配有一个独立的读/写头。
                      为了正确地存储信息,将盘片划成许多同心圆,称为磁道(track)。将一个磁道沿圆周划分为若干段,每段称为一个扇区(sector),每个扇区内可存放一个固定长度的数据块,如512字节。一组盘片的所有记录面上相同序号的磁道构成一个柱面(cylinder)。
                      硬盘的寻址信息由硬盘驱动号、柱面号、磁头号(记录面号)、数据块号(或扇区号)以及交换量组成。
                      磁盘以扇区大小的块来读写数据。对扇区的访问时间(access time)主要包括以下三个部分:寻道时间(seek time)、旋转时间(rotational latency)和传送时间(transfer time)。
                      (1)寻道时间。为了读取某个目标扇区的内容,需要将读/写头移动到包含目标扇区的磁道上,这称为寻道时间Tseek。显然,寻道时间与读/写头的移动速度以及其之前的位置有关。通过数千次对随机扇区的寻道操作求平均值来测得平均寻道时间,一般为3~9ms。
                      (2)旋转时间。一旦读/写头定位至期望的磁道,就等待目标扇区旋转到读/写头的下方,该时间依赖于读/写头到达目标扇区前盘面的位置和旋转速度。在最坏情况下,读/写头刚好错过目标扇区,就必须等待磁盘旋转一周。因此,最大旋转延迟时间Tmax rotaion为磁盘旋转速度的倒数,平均旋转时间Tavg rotaion为最大旋转延迟时间的一半。
                      (3)传送时间。当目标扇区的第一个位位于读/写头下方时,就可以开始读或写该扇区的内容了。一个扇区数据的传送时间依赖与旋转速度和每磁道的扇区数目,因此可以粗略估算一个扇区的平均传送时间Tavg transfer为磁盘旋转速度的倒数乘以每磁道扇区数的倒数。
                      现代磁盘构造复杂,大容量磁盘采用多区记录技术,将柱面的集合分割成不相交的子集,每个子集称为一个记录区。每个记录区包含一组连续的柱面,一个及记录区中每个柱面的每条磁道有相同数量的扇区,扇区数由最靠近盘片中心的磁道所能包含的扇区数决定。
                      一个磁盘上可以记录的最大位数称为其最大容量。最大容量由记录密度、磁道密度和面密度决定。
                      记录密度是指每英寸磁道的段中可以存储的位数。磁道密度是盘片半径方向上每英寸的磁道数。面密度则是记录密度与磁道密度的乘积。
                      磁盘最大容量等于每扇区字节数×每磁道平均扇区数×每盘面磁道数×每盘片记录面数×盘片数。
                      磁盘通常以千兆字节(GB)或兆兆字节(TB)为单位来表示磁盘容量,且1GB=109B,1TB=1012B。
                      磁盘控制器必须对磁盘进行格式化后才能存储数据。格式化后的容量通常小于最大容量。
                      光盘存储器
                      根据性能和用途,光盘存储器可分为只读型光盘(CD-ROM)、只写一次型光盘(WORM)和可擦除型光盘。只读型光盘是由生产厂家预先用激光在盘片上蚀刻不能再改写的各种信息,目前这类光盘的使用很普遍。只写一次型光盘是指由用户一次写入、可多次读出但不能擦除的光盘,写入方法是利用聚焦激光束的热能,使光盘表面发生永久性变化而实现的。可擦除型光盘是读/写型光盘,它是利用激光照射引起介质的可逆性物理变化来记录信息。
                      光盘存储器由光学、电学和机械部件等组成。其特点是记录密度高、存储容量大、采用非接触式读/写信息(光头距离光盘通常为2mm)、信息可长期保存(其寿命达10年以上)、采用多通道记录时数据传送率可超过200Mb/s、制造成本低、对机械结构的精度要求不高、存取时间较长。
                      固态硬盘
                      固态硬盘(Solid State Disk,SSD)的存储介质分为两种,一种是采用闪存(FLASH芯片)作为存储介质;另一种是采用DRAM作为存储介质。
                      基于闪存的固态硬盘是固态硬盘的主要类别,其主体是一块PCB板,板上最基本的配件就是控制芯片、缓存芯片和用于存储数据的闪存芯片。主控芯片是固态硬盘的大脑,其作用有两个:一是合理调配数据在各个闪存芯片上的负荷;二是承担数据中转的作用,连接闪存芯片和外部SATA或USB接口。不同主控芯片差异很大,在数据处理能力、算法,对闪存芯片的读写控制方面会有非常大的不同,直接会导致固态硬盘产品在性能上差距很大。
                      一个闪存由多个块、每块由多页组成,通常页的大小为512B~4KB,块的大小为32~128页。在闪存中,数据是以页为单位读写的。只有在一个页所在的块被整体擦除后,才能写入该页。写一个块重复写入限定次数(例如100000)后,该块就会磨损坏而不能再使用。如果一个固态硬盘的主控芯片中磨损逻辑处理得好,就可以用很多年。
                      SSD的读操作比写操作要快,顺序读写操作比随机读写操作要快。进行随机写操作时,要擦除整块,因此需要较长的时间。另外,如果写操作试图修改一个包含其他有用数据的块,则需要将有用数据复制到一个新擦除的块中,然后才能进行写入操作。
                      固态硬盘的接口规范和定义、功能及使用方法上与普通硬盘基本相同,外形和尺寸也基本与普通的2.5英寸硬盘一致。
                      固态硬盘虽然价格仍较为昂贵,容量较低,但是由于具有传统机械硬盘不具备的快速读写、质量轻、能耗低以及体积小等特点,因此常作为传统机械式硬盘的替代品使用。
               磁盘阵列技术
               磁盘阵列是由多台磁盘存储器组成的一个快速、大容量、高可靠的外存子系统。现在常见的磁盘阵列称为廉价冗余磁盘阵列(Redundant Array of Independent Disk,RAID)。
               虽然RAID包含多块硬盘,但从用户视角看则是一个独立的大型存储设备。RAID可以充分发挥出多块硬盘的优势,实现远超出任何一块单独硬盘的速度和吞吐量。除了性能上的提高之外,RAID还可以提供良好的容错能力。RAID技术分为几种不同的等级,分别可以提供不同的速度、安全性和性价比。
               目前,常见的RAID如下表所示。
               
               廉价冗余磁盘阵列
               除此之外,上述各种类型的RAID还可以组合起来,构成复合型的RAID,此处不再赘述。
               存储域网络
               存储域网络是连接服务器与存储设备的网络,它能够将多个分布在不同地点的RAID组织成一个逻辑存储设备,供多个服务器共享访问,如下图所示。通过网络将一个或多个服务器与多个存储设备连接起来,每个存储设备可以是RAID、磁带备份系统、磁带库和CD-ROM库等,构成了存储域网络(Storage Area Network,SAN)。这样的网络不仅解决服务器对存储容量的要求,还可以使多个服务器之间可以共享文件系统和辅助存储空间,避免数据和程序代码的重复存储,提高存储器的利用率。另外,SAN还实现了分布式存储系统的集中管理,降低了大容量存储系统的管理成本,提高了管理效率。
               
               SAN的结构
 
        存储系统
               存储器的层次结构
               计算机的三层存储体系结构如下图所示。
               
               存储器层次结构示意框图
               三层存储结构是高速缓存(Cache)、主存储器(Main Memory,MM)和辅助存储器(外存储器)。若将CPU内部寄存器也看作存储器的一个层次,那么存储器的层次分为4层。若有些计算机没有高速缓存,那么存储器的层次分为两层,即只有主存和辅存。
               存储器的分类
               1)按位置分类
               存储器按位置分类,可分为内存和外存。
               (1)内存(主存):用来存储当前运行所需要的程序和数据,速度快,容量小。
               (2)外存(辅存):用来存储目前不参与运行的数据,容量大但速度慢。
               2)按材料分类
               存储器按材料分类,可分为磁存储器、半导体存储器和光存储器。
               (1)磁存储器:用磁性介质做成的,如磁芯、磁泡、磁盘、磁带等。
               (2)半导体存储器:根据所用元件又可分为双极型和MOS型;根据是否需要刷新又可分为静态和动态两类。
               (3)光存储器:由光学、电学和机械部件等组成,如光盘存储器。
               3)按工作方式分类
               存储器按工作方式分类,可分为读写存储器和只读存储器。
               (1)读写存储器:既能读取数据也能存入数据的存储器。
               (2)只读存储器:根据数据写入方式,又可细分为固定只读存储器、可编程只读存储器、可擦除可编程只读存储器、电擦除可编程只读存储器和闪速存储器。
               4)按访问方式分类
               存储器按访问方式分类,可分为按地址访问的存储器和按内容访问的存储器。
               5)按寻址方式分类
               存储器按寻址方式分类,可分为随机存储器、顺序存储器和直接存取存储器。
               (1)随机存储器(RandomAccessMemory,RAM):这种存储器可对任何存储单元存入或读取数据,访问任何一个存储单元所需时间都是相同的。
               (2)顺序存储器(SequentiallyAddressedMemory,SAM):访问数据所需时fi间与数据所在存储位置有关,磁带是典型的顺序存储器。
               (3)直接存取存储器(DirectAddressedMemory,DAM):采用介于随机存取和顺序存取之间的一种寻址方式。磁盘是一种直接存取控制器,它对磁道的寻址是随机的,而在一个磁道内,则是顺序寻址。
               相联存储器
               相联存储器是一种按内容访问的存储器。其工作原理是把数据或数据的某一部分作为关键字,将该关键字与存储器中的每一单元进行比较,找出存储器中所有与关键字相同的数据字。
               高速缓冲存储器(可简称为高速缓存或缓存)可用在相联存储器中,在虚拟存储器中用来作段表、页表或块表存储器,还可以用在数据库和知识库中。
               高速缓存
               高速缓存(Cache)是位于CPU和主存之间的高速存储子系统。采用高速缓存的主要目的是提高存储器的平均访问速度,使存储器的速度与CPU的速度相匹配。Cache的存在对程序员是透明的。其地址变换和数据块的替换算法均由硬件实现。通常Cache被集成到CPU内,以提高访问速度,其主要特点是容量小、速度快、成本高。
               1)Cache的组成
               Cache的组成如下图所示。Cache由两部分组成,即控制部分和缓存部分。缓存部分用来存放主存的部分复制信息。控制部分的功能是:判断CPU要访问的信息是否在Cache中,若在即为命中,若不在则没有命中。命中时直接对Cache寻址;未命中时,要按照替换原则,决定主存的一块信息放到Cache的哪一块里面。
               
               高速缓存的组成框图
               2)Cache中的地址映像方法
               因为处理机访问都是按主存地址访问的,而应从Cache中读写信息,因此这就需要地址映像,即把主存中的地址映射成Cache中的地址。地址映像的方法有3种,即直接映像、全相联映像和组相联映像。
               (1)直接映像就是主存的块与Cache中块的对应关系是固定的。主存中的块只能存放在Cache的相同块号中。因此,只要主存地址中的主存区号与Cache中的主存区号相同,则表明访问Cache命中。一旦命中,以主存地址中的区内块号立即可得到要访问的Cache中的块。这种方式的优点是地址变换很简单,缺点是灵活性差。
               (2)全相联映像允许主存的任一块可以调入Cache的任何一块的空间中。在地址变换时,利用主存地址高位表示的主存块号与Cache中的主存块号进行比较,若相同则为命中。这种方式的优点是主存的块调入Cache的位置不受限制,十分灵活;其缺点是无法从主存块号中直接获得Cache的块号,变换比较复杂,速度比较慢。
               (3)组相联映像是前面两种方式的折中。具体做法是将Cache中的块再分成组。组相联映像就是规定组采用直接映像方式而块采用全相联映像方式。这种方式下,通过直接映像方式来决定组号,在一组内再用全映像方式来决定Cache中的块号。由主存地址高位决定主存区号,与Cache中区号比较可决定是否命中。主存后面的地址即为组号,但组块号要根据全相联映像方式,由记录可以决定组内块号。
               3)替换算法
               选择替换算法的目标是使Cache获得最高的命中率。常用的替换算法有以下几种。
               (1)随机替换(RAND)算法:用随机数发生器产生一个要替换的块号,将该块替换出去。
               (2)先进先出(FIFO)算法:将最先进入的Cache信息块替换出去。
               (3)近期最少使用(LRU)算法:将近期最少使用的Cache中的信息块替换出去。这种算法比先进先出算法要好些,但此法也不能保证过去不常用的将来也不常用。
               (4)优化替换(OPT)算法:先执行一次程序,统计Cache的替换情况。有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换,达到最优的目的。
               4)Cache的性能分析
               若H为Cache的命中率,tc为Cache的存取时间,tm为主存的访问时间,则Cache的等效访问时间ta
               ta=Htc+(1-H)tm
               使用Cache比不使用Cache的CPU访问存储器的速度提高的倍数r可以用下式求得,即
               
               虚拟存储器
               虚拟存储器是由主存、辅存、存储管理单元及操作系统中存储管理软件组成的存储系统。程序员使用该存储系统时,可以使用的内存空间远远大于主存的物理空间,但实际上并不存在那么大的主存,故称其为虚拟存储器。虚拟存储器的空间大小取决于计算机的访存能力而不是实际外存的大小,实际存储空间可以小于虚拟地址空间。从程序员的角度看,外存被看作逻辑存储空间,访问的地址是一个逻辑地址(虚地址),虚拟存储器使存储系统既具有相当于外存的容量又有接近于主存的访问速度。
               虚拟存储器的访问也涉及虚地址与实地址的映像、替换算法等,这与Cache中的类似。前面讲的地址映像以块为单位,而在虚拟存储器中,地址映像以页为单位。设计虚拟存储系统需考虑的指标是主存空间利用率和主存的命中率。按存储映像算法,可将虚拟存储器的管理方式分为以下3种。
               (1)页式虚拟存储器。以页为信息传送单位的虚拟存储器。为实现页式管理,须建立实页与虚页间的关系表,称为页表;在页表及变换软件的控制下,可将程序的虚拟地址变换为内存的实地址。页式虚拟存储器的优点是:页表硬件少,查表速度快;主存零头少。页式虚拟存储器的缺点是:分页无逻辑意义,不利于存储保护。
               (2)段式虚拟存储器。以程序的逻辑结构形成的段作为主存分配依据的一种管理方法。为实现段式管理,须建立段表;在段地址变换机构及软件的控制下,可将程序的虚拟地址变换为主存的实地址。段式虚拟存储器的优点是:段的界线分明;支持程序的模块化设计;易于对程序段的编译、修改和保护;便于多道程序的共享。段式虚拟存储器的主要缺点是:主存利用率不高,查表速度慢。
               (3)段页式虚拟存储器。这是将段式虚拟存储器和页式虚拟存储器结合的一种管理方式。在这种虚拟存储器中,程序按逻辑结构分段,每一段再分成若干大小固定的页。程序的调入调出是按页进行的,而程序又可按段实现保护。这种管理方式兼有两者的优点,但地址变换速度比较慢。
               外存储器
               外存储器用来存放暂时不用的程序和数据,并且以文件的形式存储。CPU不能直接访问外存中的程序和数据,将其以文件为单位调入主存后方可访问。外存由磁表面存储器(如磁盘、磁带)及光盘存储器构成。
               1)磁盘存储器
               (1)磁盘存储器的构成。磁盘存储器由盘片、驱动器、控制器和接口组成。盘片用来存储信息;驱动器用于驱动磁头沿盘面径向运动以寻找目标磁道位置,驱动盘片以额定速率稳定旋转,并且控制数据的写入和读出;控制器接收主机发来的命令,将它转换成磁盘驱动器的控制命令,并实现主机和驱动器之间数据格式的转换及数据传送,以控制驱动器的读写操作;接口是主机和磁盘存储器之间的连接逻辑。
               (2)磁盘存储器的种类。根据所用材质的不同,磁盘存储器分为软盘和硬盘。
               ①软盘。为了正确存储信息,将盘片划成许多同心圆,称为磁道,从外到里编号,最外一圈为0道,往内道号依次增加。沿径向的单位距离的磁道数称为道密度,单位为tpi。将一个磁道沿圆周等分为若干段,每段称为一个扇段或扇区,每个扇区内可存放一个固定长度的数据块。磁道上单位距离可记录的比特数称为位密度,单位为bpi。因为每条磁道上的扇区数相同,而每个扇区的大小又一样,所以每个磁道都记录同样多的信息。又因为里圈磁道的圆周比外圈磁道的圆周小,所以里圈磁道的位密度要比外圈磁道的位密度高。最内圈的位密度称为最大位密度。
               磁盘容量有两种指标:一种是非格式化容量,它是指一个磁盘所能存储的总位数;另一种是格式化容量,它是指各扇区中数据区容量的总和。计算公式分别为:
               非格式化容量=面数×(磁道数/面)×内圆周长×最大位密度
               格式化容量=面数×(磁道数/面)×(扇区数/道)×(字节数/扇区)
               ②硬盘。按盘片是否固定、磁头是否移动等指标,硬盘可分为移动磁头固定盘片的磁盘存储器、固定磁头的磁盘存储器、移动磁头可换盘片的磁盘存储器和温彻斯特磁盘存储器(简称温盘)。一个硬盘驱动器内可装多个盘片,组成盘片组,每个盘片都配有一个独立的磁头。所以记录面上相同序号的磁道构成一个圆柱面,其编号与磁道编号相同。文件存储在硬盘上时尽可能放在同一圆柱面上,或者放在相邻柱面上,这样可以缩短寻道时间。
               2)光盘存储器
               (1)光盘存储器的类型。根据性能和用途,可分为只读型光盘、只写一次型光盘和可擦除型光盘。
               (2)光盘存储器的组成及特点。光盘存储器由光学、电学和机械部件等组成。特点是:记录密度高;存储容量大;采用非接触式读写信息;信息可长期保存;采用多通道记录时数据传输率可超过200Mb/s;制造成本低;对机械结构的精度要求不高;存取时间较长。
               磁盘阵列技术
               磁盘阵列是由多台磁盘存储器组成的、快速大容量且高可靠的外存子系统。现在常见的廉价冗余磁盘阵列(Redundant Array of Inexpensive Disks,RAID),就是一种由多块廉价磁盘构成的冗余阵列。虽然RAID包含多块磁盘,但是在操作系统下是作为一个独立的大型存储设备出现的。RAID技术分为几种不同的等级,分别可以提供不同的速度、安全性和性价比,如下表所示。
               
               廉价冗余磁盘阵列(RAID)
 
        高速缓存
        高速缓存(Cache)由快速半导体存储器构成,用来存放当前最活跃的程序和数据,其内容是主存局部域的副本,对程序员来说是透明的。
               高速缓存的组成
               Cache存储器中控制部分的功能是判断CPU要访问的信息是否在Cache存储器中,若在即为命中,若不在则没有命中。命中时直接对Cache存储器寻址;未命中时,要按照替换原则决定主存的一块信息放到Cache存储器的哪一块里。
               现代CPU中Cache分为了多个层级,如下图所示。
               
               三级Cache示意图
               在多级Cache的计算机中,Cache分为一级(L1 Cache)、二级(L2Cache)、三级(L3 Cache)等,CPU访存时首先查找L1 Cache,如果不命中,则访问L2Cache,直到所有级别的Cache都不命中,才访问主存。通常要求L1 Cache的速度足够快,以赶上CPU的主频。如果Cache为两级,则L1 Cache的容量一般都比较小,为几千字节到几十千字节;L2 Cache则具有较高的容量,一般为几百字节到几兆字节,以使高速缓存具有足够高的命中率。
               高速缓存中的地址映像方法
               在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换成Cache存储器的地址,这种地址的转换称为地址映像。Cache的地址映像有如下3种方法。
               (1)直接映像。直接映像是指主存的块与Cache块的对应关系是固定的,如下图所示。
               
               直接映像示意图
               在这种映像方式下,由于主存中的块只能存放在Cache存储器的相同块号中,因此,只要主存地址中的主存区号与Cache中记录的主存区号相同,则表明访问Cache命中。一旦命中,由主存地址中的区内块号立即可得到要访问的Cache存储器中的块,而块内地址就是主存地址中给出的低位地址。
               直接映像方式的优点是地址变换很简单,缺点是灵活性差。例如,不同区号中块号相同的块无法同时调入Cache存储器,即使Cache存储器中有空闲的块也不能利用。
               (2)全相联映像。全相联映像如下图所示。同样,主存与Cache存储器均分成大小相同的块。这种映像方式允许主存的任一块可以调入Cache存储器的任何一个块的空间中。
               
               全相联映像示意图
               例如,主存为64MB,Cache为32KB,块的大小为4KB(块内地址需要12位),因此主存分为16384块,块号从0~16383,表示块号需要14位,Cache分为8块,块号为0~7,表示块号需3位。存放主存块号的相联存储器需要有Cache块个数相同数目的单元(该例中为8),相联存储器中每个单元记录所存储的主存块的块号,该例中相联存储器每个单元应为14位,共8个单元。
               在地址变换时,利用主存地址高位表示的主存块号与Cache中相联存储器所有单元中记录的主存块号进行比较,若相同即为命中。这时相联存储器单元的编号就对应要访问Cache的块号,从而在相应的Cache块中根据块内地址(上例中块内地址是12位,Cache与主存的块内地址是相同的)访问到相应的存储单元。
               全相联映像的主要优点是主存的块调入Cache的位置不受限制,十分灵活。其主要缺点是无法从主存块号中直接获得Cache的块号,变换比较复杂,速度比较慢。
               (3)组相联映像。这种方式是前面两种方式的折中。具体方法是将Cache中的块再分成组。例如,假定Cache有16块,再将每两块分为1组,则Cache就分为8组。主存同样分区,每区16块,再将每两块分为1组,则每区就分为8组。
               组相联映像就是规定组采用直接映像方式而块采用全相联映像方式。也就是说,主存任何区的0组只能存到Cache的0组中,1组只能存到Cache的1组中,以此类推。组内的块则采用全相联映像方式,即一组内的块可以任意存放。也就是说,主存一组中的任一块可以存入Cache相应组的任一块中。
               在这种方式下,通过直接映像方式来决定组号,在一组内再用全相联映像方式来决定Cache中的块号。由主存地址高位决定的主存区号与Cache中区号比较可决定是否命中。主存后面的地址即为组号。
               替换算法
               替换算法的目标就是使Cache获得尽可能高的命中率。常用算法有如下几种。
               (1)随机替换算法。就是用随机数发生器产生一个要替换的块号,将该块替换出去。
               (2)先进先出算法。就是将最先进入Cache的信息块替换出去。
               (3)近期最少使用算法。这种方法是将近期最少使用的Cache中的信息块替换出去。
               (4)优化替换算法。这种方法必须先执行一次程序,统计Cache的替换情况。有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换。
               Cache性能分析
               Cache的性能是计算机系统性能的重要方面。命中率是Cache的一个重要指标,但不是最主要的指标。Cache设计的目标是在成本允许的条件下达到较高的命中率,使存储系统具有最短的平均访问时间。设Hc为Cache的命中率,tc为Cache的存取时间,tm为主存的访问时间,则Cache存储器的等效加权平均访问时间ta为:
               ta=Hctc+(1-Hc)tm=tc+(1-Hc)(tm-tc
               这里假设Cache访问和主存访问是同时启动的,其中,tc为Cache命中时的访问时间,(tm-tc)为失效访问时间。如果在Cache不命中时才启动主存,则
               ta=tc+(1-Hc)tm
               Cache的命中率与Cache容量的关系如下图所示。Cache容量越大,则命中率越高,随着Cache容量的增加,其失效率接近0%(命中率逐渐接近100%)。但是,增加Cache容量意味着增加Cache的成本和增加Cache的命中时间。
               
               Cache容量与命中率的关系
               在指令流水线中,Cache访问作为流水线中的一个操作阶段,Cache失效将影响指令的流水。因此,降低Cache的失效率是提高Cache性能的一项重要措施。当Cache容量比较小时,容量因素在Cache失效中占有比较大的比例。降低Cache失效率的方法主要有选择恰当的块容量、提高Cache的容量和提高Cache的相联度等。



更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2023 All Rights Reserved
软考在线版权所有