1、第三章 存储系统,上海大学计算机学院,存储系统,3.1 存储系统原理 3.2 虚拟存储系统 3.3 高速缓冲存储系统(Cache) 3.4 三级存储系统,3.1存储系统原理,3.1.1 存储系统定义 3.1.2 存储系统的层次结构 3.1.3 存储系统的频带平衡 3.1.4 并行访问存储器 3.1.5 交叉访问存储器 3.1.6 无冲突访问存储器,现代计算机系统以存储为中心 存储器是各种信息存储和交换的中心,3.1.1 存储系统定义,存储器,在一台计算机中,通常有多种存储器 种类: 主存储器、Cache、通用寄存器、缓冲存储器、磁盘存储器、光盘存储器 材料工艺:ECL、TTL、MOS、磁表面、
2、激光、SRAM、DRAM 访问方式:随机访问、直接译码、先进先出、相联访问、块传送、文件组,存储器的性能指标,速度:访问周期、读出时间、频带宽度 容量:字节B、千字节KB、兆字节MB和千兆字节GB等 价格:单位容量的价格,$C/bit,1. 存储系统的定义,两个或两个以上速度、容量和价格各不相同的存储器用硬件、软件、或软件与硬件相结合的方法连接起来成为一个存储系统。 透明性:从应用程序员角度看是一个存储器 存储系统的速度接近速度最快的存储器,存储容量等于容量最大的存储器,单位容量的价格接近最便宜的存储器。,速度:T min(T1, T2, , Tn) 容量:S max(S1, S2, , Sn
3、) 价格:C min(C1, C2, , Cn),n个存储器组成的存储系统:,两种存储系统,Cache存储系统:Cache和主存储器构成 目的:提高存储器速度,从系统程序员角度看: 速度接近Cache 的速度 存储容量是主存的容量 单位价格接近主存储器的单位价格,虚拟存储系统:由主存储器和硬盘构成 目的:扩大存储器容量,从应用程序员角度看: 速度接近主存储器的速度 存储容量是虚拟地址空间 单位价格接近磁盘存储器的单位价格,2. 存储系统的容量S,要求: 提供尽可能大的地址空间 能够随机访问 两种方法: 只对存储容量最大的存储器编址,其它存储器只在内部编址或不编址Cache 存储系统 另外设计一
4、个容量很大的逻辑地址空间,把相关存储器都映射到这个空间内虚拟存储系统,3. 存储系统的价格C,计算公式:,4. 存储系统的速度T,表示方法:访问周期、存取周期 命中率定义:在M1存储器中访问到的概率,其中:N1是对M1存储器的访问次数N2是对M2存储器的访问次数,访问周期与命中率的关系:,存储系统的访问效率:,访问效率主要与命中率和两级存储器的速度之比有关,例1:假设T2=5T1,在命中率H为0.9和0.99两种情况下,分布计算存储系统的访问效率。,提高存储系统速度的两条途径:,提高命中率 两个存储器的速度不要相差太大 其中,第二条有时做不到(如虚拟存储器),这时只能依靠提高命中率,例2:在虚
5、拟存储系统中,两个存储器的速度相差特别悬殊,如T2 = 105T1,如果要使访问效率达到e = 0.9,问需要有多高的命中率?,5. 采用预取技术提高命中率,方法:不命中时,把M2存储器中相邻多个单元组成的一个数据块取出送入M1存储器中。 计算公式:,H是采用预取技术之后的命中率 H是原来的命中率 n为数据块大小与数据重复使用次数的乘积,证明方法一:,证明方法二:,例3:在一个虚拟存储系统中,T2 = 105T1, 原来的命中率为0.8,如果从磁盘存储器中预取的数据块大小为4K字,且预取后访问率不低于0.9,计算数据在主存储器中的重复利用率至少为多少?,3.1存储系统原理,3.1.1 存储系统
6、定义 3.1.2 存储系统的层次结构 3.1.3 存储系统的频带平衡 3.1.4 并行访问存储器 3.1.5 交叉访问存储器 3.1.6 无冲突访问存储器,3.1.2 存储系统的层次结构,多个层次的存储器: 第1层:Register Files (寄存器堆) 第2层:Buffers (Lookahead) (先行缓冲站) 第3层:Cache (高速缓冲存储器) 第4层:Main Memory (主存储器) 第5层:Online Storage (联机存储器) 第6层:Off-line Storage (脱机存储器) 用i表示层数,则有:工作周期 Ti Ci+1,各级存储器的主要性能特征,CPU
7、与主存储器的速度差距越来越大 目前相差两个数量级 今后CPU与主存储器的速度差距会更大,3.1.3 存储系统的频带平衡,设一台速度为200MIPS的计算机,各种访问源的频带计算如下: CPU取指令:200MW/s (设每条指令长度为一个字W) CPU取操作数和保存运算结果:400MW/s (平均每条指令访问两个操作数) 各种输入输出设备访问存储器:5MW/s 三项相加,要求存储器的频带宽度不低于605MW/s,即要求存储器的访问周期不大于16.5ns,而实际上主存DRAM的工作周期为200ns左右。两者相差100倍以上,解决存储器频带平衡方法:,多个存储器并行工作,用并行访问和交叉访问方法提高
8、存储器的访问速度 (本节下面介绍) 设置各种缓冲存储器 ,如先行缓冲栈,运算结果后行缓冲栈等(第五章介绍) 采用存储系统 ,特别是Cache存储系统,这是目前计算机系统中提高存储器速度的最有效方法(本章第二、第三节介绍),3.1.4 并行访问存储器,要在一个存储周期内访问到多个数据,最直接的办法是增加存储器的字长 如:一个存储容量为m字w位的存储器,每个存储周期访问w位,即一个字。现把存储器字长增加n倍,即n w位,为了保持总的存储容量不变,存储器的字数即地址数量减少n倍,即m/n个字,这样, 一个存储周期就能访问到n个数据。 方法:把m字w位的存储器改变成m/n字n w位的存储器,并行访问存
9、储器结构框架图,并行访问存储器逻辑实现:把地址码分为两个部分,一部分作为地址访问存储器 (这部分地址码缩短),另一部分控制一个多路选择器,从同时读出的n个数据中选择一个数据输出 优点:实现简单 缺点:访问冲突 取指令冲突:遇到转移指令,且转移成功时 读操作数冲突:一次同时读出的操作数不一定都有用 写数据冲突:必须凑齐n个数之后一起写入存储器 读写冲突:当要读出的一个字和要写入的一个字处于同一存储字时,无法在一个周期完成,第1种冲突概率较小,程序在大多数情况下是顺序执行的 第2种冲突的概率比较大,操作数的随机性比程序随机性大 第3和第4种冲突的解决需要进行专门控制 冲突产生的原因: 地址寄存器和
10、控制逻辑只有一套 如果有n个独立的地址寄存器和n套读写控制逻辑,那么第3和第4种冲突就自然解决,3.1.5 交叉访问存储器,地址码高位交叉 地址码低位交叉 只有低位交叉存储器能够有效解决访问冲突问题,1. 高位交叉访问存储器 主要目的:扩大存储器容量 实现方法:用地址码的高位部分区分存储体号 参数计算方法: m: 每个存储体的容量 n: 存储体的个数 j: 存储体的体内地址,j = 0, 1, 2,m1 k: 存储体的体号, k = 0, 1, 2, n1 存储器的地址:A = mk + j 存储器的体内地址:Aj = A mod m 存储器的体号:Ak= A/m,高位交叉访问存储器框图,例4
11、. 用4M字4位的存储芯片组成16M 32位的主存储器,共用芯片数目:,用最高2位地址经译码后产生的信号,控制各组存储芯片 每组中的32根数据线分别对应直接相连,高位交叉特点,具备并行工作的条件:每个存储模块有各自独立的控制部件,包括地址寄存器、地址译码器等,可以独立工作 编址的连续性:由于程序的连续性和局部性,大部分情况下,指令序列和数据分布在同一个存储模块中。只有当指令序列跨越两个存储模块时,才能并行工作 扩大容量,未提高速度,2. 低位交叉访问存储器 主要目的:提高存储器访问速度 实现方法:用地址码的低位部分区分存储体号 参数计算方法: m: 每个存储体的容量 n: 存储体的个数 j:
12、存储体的体内地址,j = 0, 1, 2,m1 k: 存储体的体号, k = 0, 1, 2, n1 存储器的地址:A = nj + k 存储器的体内地址:Aj = A/n 存储器的体号:Ak= A mod n,低位交叉访问存储器框图,地址的编码方法: 由8个存储体构成的低位交叉编址方式,存储体的访问周期Tm,由n个存储体构成的主存储器,各存储体的启动间隔 t = Tm /n 低位交叉存储器是一种采用流水线方式工作的并行存储系统。在连续工作的情况下,保持每个存储体速度不变,则整个存储器速度可望提高n倍,低位交叉访问存储器 存储器的速度不是随存储体个数的增加而线性提高,即n个存储体组成的存储器的
13、加速比通常小于n 原因在于访问冲突:取指令时可能发生程序转移,取操作数时存在数据离散性 n个存储体的存储系统,每个存储周期只能取到 k 个有效字,其余( n k )个存储体有冲突。k是随机变量,范围1, n,低位交叉访问存储器设 p(k) 是 k 的概率密度函数,即 p(1) 是k = 1的概率,p(2)是 k = 2的概率,, p(n)是 k = n 的概率,则 k 的均值为:,N是每个存储周期能够访问到的平均有效字的个数 通常把N称为并行存储器的加速比,p(k)与具体程序的运行状况有密切关系。对于指令序列,影响p(k)的主要原因是转移指令,访问冲突的根源:转移指令和数据随机性 1. 一维数
14、组(向量)的无冲突访问存储器 按连续地址访问,没有冲突 位移量为2的变址访问,速度降低一倍,3.1.6 无冲突访问存储器,具体方法:存储体个数n取质数,且n向量长度 原因:变址位移量必然与存储体个数互质 例如: Burroughs公司巨型科学计算机BSP存储体个数为17,向量长度16 我国研制的银河巨型向量机存储体个数为37,向量长度32,2. 二维数组的无冲突访问存储器 要求:一个nn的二维数组,按行、列、对角线和反对角线访问,并且在不同的变址位移量情况下,都能实现无冲突访问 顺序存储:按行、对角线访问没有冲突,但按列访问每次冲突,错位存储按行、列访问无冲突按对角线访问有冲突,nn 二维数组
15、无冲突访问存储方案(P. Budnik和D. J. Kuck提出): 并行存储体的个数m n,并且取质数,同时还要在行、列方向上错开一定的距离存储数组元素 同一列相邻元素在并行存储器中错开d1个存储体存放,同一行相邻元素在并行存储器中错开d2个存储体存放。当m = 22p + 1(p为任意自然数)时,能够同时实现按行、按列、按对角线和按反对角线无冲突访问的充要条件是:d1= 2p, d2=1,例如:44的二维数组,取并行存储体的个数m=5,由关系式m = 22p + 1,解得p = 1,计算得到:d1=2,d2=1,nn数组中的任意一个元素aij在无冲突并行存储器中的体号地址和体内地址的计算公
16、式: 体号地址:(2pi + j + k)MODm 体内地址:i其中:0 i n1, 0 j n1k是数组的第一个元素a00所在体号地址m是并行存储体的个数,mn且为质数p是满足m = 22p + 1关系的任意自然数 主要缺点:浪费存储单位对于nn数组,有(mn) n个存储单元浪费 主要优点:实现简单列元素顺序存储,行元素按地址取模顺序存储,3. 二维数组的无冲突访问存储器(之二) 规则:对于任意一个nn的数组,如果能够找到满足n = 22p关系的任意自然数p,则这个二维数组就能够使用n个并行存储体实现按行、列、对角线和反对角线的无冲突访问 44数组用4个存储体的无访问冲突存储方案:,实现方法
17、:假设aij是44数组中的任意一个元素,下标i和j都可以用两位二进制表示。假设i和j的高位和地位分别用iH、iL、jH和 jL,则aij在无冲突并行存储器中的体号地址和体内地址如下: 体号地址:2(iLjH)+(iHiL jL) 体内地址:j 其中: 0 i 3, 0 j 3 主要优点:没有浪费的存储单元 主要缺点:在执行并行读和写操作时需要借助比较复杂的对准网络,存储系统,3.1 存储系统原理 3.2 虚拟存储器 3.3 高速缓冲存储器(Cache) 3.4 三级存储系统,3.2 虚拟存储器,3.2.1 虚拟存储器工作原理 3.2.2 地址的映像与变换方法 3.2.3 加快内部地址变换的方法
18、 3.2.4 页面替换算法及其实现 3.2.5 提高主存命中率的方法,3.2.1 虚拟存储器工作原理,也称为虚拟存储系统、虚拟存储体系等 其概念由英国曼彻斯特大学的Kilbrn等人于1961年提出 到70年代广泛应用于大中型计算机系统 目前,许多微型机也使用虚拟存储器 把主存储器、磁盘存储器和虚拟存储器都划分为固定大小的页 主存储器的页称为实页 虚拟存储器的页称为虚页,3.2.2 地址的映像与变换,虚拟存储器的三种地址空间 虚拟地址空间:应用程序员用来编写程序的地址空间 主存储器地址空间 辅存地址空间:磁盘存储器的地址空间 地址映像:把虚拟地址空间映像到主存地址空间。即,把用户用虚拟地址编写的
19、程序按照某种规则装入到主存储器中,并建立多用户虚地址与主存实地址之间的对应关系 地址变换:在程序被装入主存储器之后,在实际运行时,把多用户虚地址变换成主存实地址(内部变换)或磁盘存储器地址(外部变换) 三种虚拟存储器:段式虚拟存储器、页式虚拟存储器、段页式虚拟存储器,段式虚拟存储器优缺点,主要优点: 程序的模块化性能好 便于程序和数据的共享 程序的动态链接和调度比较容易 便于实现信息保护 主要缺点: 地址变换花费的时间长,两次加法 主存储器的利用率比较低 对磁盘存储器的管理比较困难,2. 页式虚拟存储器,将虚拟地址空间和主存空间划分为一个个固定大小的块,每块称为一页。 一页的大小通常是1KB至
20、16KB 虚拟地址空间(虚页号) 主存地址空间(实页号) 用户程序中的每一页可以映像到主存中的任何一页,页式虚拟存储器优缺点,主要优点: 主存储器的利用率较高 页表相对简单:保存的字段少且关键字段所占空间少 地址变换速度比较快 对磁盘的管理比较容易 主要缺点: 程序的模块化性能不好 页表很长,需要占用很大的存储空间例如:虚拟存储器空间4GB,页大小1KB,则页表容量为4M字, 16MB,3. 段页式虚拟存储器,综合段式虚拟存储器在程序模块化方面的优点和页式虚拟存储器在空间利用率方面的优点 基本思想:对用户用来编写程序的虚拟存储空间采用分段管理,主存储器的物理空间分页管理。即用户仍按照逻辑的程序
21、段编写程序,但每一个程序段又被分成若干个固定大小的页,段页式虚拟存储器和页式虚拟存储器 映像以页为单位 每一页必须映像到主存中一个整页中 段式虚拟存储器 映像以程序段为单位 每一个程序段可以映像到主存中的任意位置,4. 外部地址变换,内部地址变换:虚拟地址主存地址 外部地址变换目的:找到磁盘存储器的实地址,并且把需要访问的那一页或一个程序段调入主存中 每一个程序有一张外页表,每一页或每个程序段,在外页表中都有对应的一个存储字,3.2.3 加快内部地址变换的方法,造成虚拟存储器速度降低的主要原因: 要访问主存储器必须先查段表或页表 当页表和段表容量超过一页时,可能被映像到主存中不连续的页面位置上
22、,这样,按照地址查找主存实页号的方法,即把页表起始地址与用户虚地址中的虚页号相加,就不能成立 多级页表计算公式:,例如:一个页式虚拟存储器的Nv=4GB,Np= 1KB,Nd=4B,以字节为单位,计算得页表的级数:,1级页表驻留主存,2级和3级页表只需要驻留一小部分。 把目前正在运行中的程序的相关页表,或已经调入主存中的程序的相关页表放在主存中,而其它绝大多数页表放在磁盘中 多级页表使得访问主存储器的次数增加。如:一个3级页表需访问4次主存,1. 目录表 基本思想:压缩页表的存储容量,用一个容量比较小的高速存储器来存放页表,从而加快页表的查表速度 只为已经装入到主存中的页面建立虚页号和实页号的
23、对应关系,采用相联访问方式,地址变换过程:把多用户虚地址中的U和P拼接,相联访问目录表。读出主存实页号p,把p与多用户虚地址中的D拼接得到主存实地址。如果相联访问失败,发出页面失效请求,从磁盘中将要访问的页面调入主存 主要优点: 与页表放在主存中相比,查表速度快 主要缺点: 可扩展性能差 主存储器容量增大时,目录表造价高,速度低,2. 快慢表,程序执行过程的局部性特征,即对页表中各存储字的访问并不是完全随机的,在一段时间内,对页表的访问只局限在少数几个存储字内 快表:小容量高速存储器,8-16个存储字,相联访问 慢表:当快表中查不到时,从主存的慢表查找;慢表按地址访问,用软件实现。全表 快慢表
24、构成一个两级存储系统,访问速度接近快表的速度,存储容量是慢表的容量,主要存在问题:相联访问实现困难,速度低,3. 散列函数(Hashing),目标:将快表的相联访问变成按地址访问,多用户虚页号Pv变换成快表地址Ah 散列函数:Ah = H(Pv),用硬件实现,采用散列变换实现快表按地址访问避免散列冲突:采用相等比较器地址变换:相等比较与访问存储器同时进行,快表按地址访问,在保证速度的前提下,其存储容量可以比用相联访问实现的快表大得多, 快表查表速度快,命中率更高,3.2.4 页面替换算法及其实现,页面替换发生的时间当发生页面失效时,要从磁盘中调入一页到主存。如果主存储器的所有页面都已经被占用,
25、必须从主存储器中淘汰掉一个不经常使用的页面,以便腾出主存空间来存放新调入的页面 评价页面替换算法的标准 命中率高 算法容易实现 以页式和段页式虚拟存储器为例介绍页面替换算法,页面替换算法的使用场合: 虚拟存储器中,主存页面的替换,一般用软件实现 Cache中的块替换,一般用硬件实现 虚拟存储器的快慢表中,快表存储字的替换,用硬件实现 虚拟存储器中,用户基地址寄存器的替换,用硬件实现 在有些虚拟存储器中,目录表的替换,页面替换算法,1. 随机算法 (RAND random algorithm) 利用软件或硬件的随机数发生器来确定主存中被替换掉的页面 算法简单,容易实现 没有利用主存中页面调度的历
26、史信息,没有放映程序的局部性,命中率低 2. 先进先出算法(FIFO first-in first-out algorithm) 选择最先调入主存的页面为被替换的页面 容易实现,利用了主存中页面调度的历史信息 没有反映程序的局部性,命中率较低,3. 近期最少使用算法 (LFU least frequently used algorithm) 选择近期最少使用的页面作为被替换的页面 既充分利用了主存中页面调度的历史信息,又放映了程序的局部性 实现困难,为每个页面设置一个计数器,并且选择固定的时钟为计数器定时计数 4. 最久没有使用算法 (LRU least recently used algor
27、ithm) 选择最近最久没有被访问过的页面作为被替换的页面 把LFU算法中要记录数量上的“多”和“少”简化成判断“有”和“无” 实现较为容易,命中率高,5. 最优替换算法 (OPT optimal replacement algorithm) 选择将来最久不被访问的页面作为替换页面 实现OPT,唯一的办法是让程序先执行一遍,记录下实际的页地址流情况。根据页地址流找出当前要被替换的页面 是一种理想算法,命中率最一定是最高的 仅用作评价其它页面替换算法好坏的标准 在虚拟存储器中,实际上可能采用的只有FIFO和LRU两种算法,堆栈型替换算法,堆栈型替换算法不是指某一种算法,更不是指先进先出或先进后出
28、的堆栈本身,而是指一类算法 堆栈型算法研究影响命中率的一个主要因素 分配给程序的主存页面数的增加与命中率的关系,堆栈型算法定义:对任意一个程序的页地址流作两次主存页面数分配,分别分配m个主存页面和n个主存页面,且mn。如果在任何时刻t,主存页面数集合Bt都满足关系Bt(m) Bt(n)则这类算法称为堆栈型算法 堆栈型算法的基本特点是:随着分配给程序的主存页面数增加,主存的命中率也提高,至少不下降,对于LFU和LRU算法,分配的n个主存页面均是最近使用过的页面。如果再多分配一个页面,在任意时刻t,(n+1)个主存页面必然包含前面的n个主存页面,因此, LFU和LRU是堆栈型算法 OPT也是堆栈型
29、算法 FIFO是堆栈型算法?,3.2.5 提高主存命中率的方法,对于堆栈型算法,命中率随着分配给程序的页面数的增加而提高。当分配给程序的主存容量增加时,如果页面大小一定,则页面数就会增加,因此,命中率提高 对于非堆栈型算法,命中率虽然不会单调上升,在局部可能下降,但是总的趋势还是上升的,存储系统,3.1 存储系统原理 3.2 虚拟存储器 3.3 高速缓冲存储器(Cache) 3.4 三级存储系统,3.3 高速缓冲存储器(Cache),3.3.1 基本工作原理 3.3.2 地址映像与变换方法 3.3.3 Cache替换算法及其实现 3.3.4 Cache存储系统的加速比 3.3.5 Cache的
30、一致性问题 3.3.6 Cache的预取算法,3.3.1 基本工作原理,在Cache存储系统中,Cache和主存储器均被划分成大小相同的块。 块的大小通常以主存储器的一个存储周期能够访问到的数据长度为限 主存地址有块号B和块内地址W组成;Cache地址由块号b和块内地址w组成,3.3.2 地址映像与变换,地址映像:把主存地址空间映像到Cache地址空间。即把存放在主存中的程序按照某种规则装入到Cache中,并建立主存地址与Cache地址之间的对应关系 地址变换:当程序已经装入Cache之后,在实际运行过程中,如何把主存地址变换成Cache地址 地址映像和变换以块为单位进行调度 在选取地址映像方
31、法要考虑的主要因素: 地址变换的硬件实现容易、速度要快 主存空间利用率要高 发生块冲突的概率要小,1. 全相联映像及其变换,映像规则:主存中的任意一块可以映像到Cache中的任意一块的位置(映像关系CbMb种),地址变换规则:,全相联映像和变换特点,块的冲突概率小,Cache的利用率高 需要一个相联访问速度快,容量为Cb的相联存储器,代价高 相联比较所花费的时间将影响到Cache的访问速度 虚拟存储器中,一般都采用全相联映像方式,2. 直接映像及其变换,映像规则:主存储器中的一块只能映像到Cache的一个特定块中 Cache地址的计算公式:b = B mod Cb其中:b为Cache块号B为主
32、存块号Cb为Cache块数 实际上,Cache地址与主存储器地址的低位部分完全相同,直接映像方式的地址映像规则主存容量是Cache容量的整倍数,把主存按照Cache容量分区,直接映像方式的地址变换过程: 用主存地址中的块号B去访问区号存储器,把读出来的区号与主存地址中的区号E进行比较 比较结果相等,有效位为1,则Cache命中,否则该块已经作废 比较结果不相等,有效位为1,则Cache中的该块是有用的,否则该块是空的,直接映像方式的地址变换规则主存地址中的块号B与Cache地址中的块号b完全相同,块内地址W与w也完全相同,提高Cache访问速度的方法:把区号存储器与Cache合并成一个存储器,
33、用主存的块号B访问Cache, 把区号和这一块的所有数据同时读出来。通过多路选择器选择所需数据送入CPU,直接映像及其变换的特点: 主要优点:硬件实现简单,不需要相联访问存储器访问速度比较快,实际上不需要进行地址变换 主要缺点:块的冲突率比较高,Cache 空间利用率低如:当主存中的两个或两个以上的块都要映像到Cache中的同一块中,而这些块又是当前要使用的块,Cache命中率会很低。此时,及时Cache中还有很多空闲的块,也无法帮忙,3. 组相联映像及其变换,介于全相联和直接映像之间的一种折中方案 映像规则: 主存和Cache按同样大小划分成块和组 主存和Cache的组之间采用直接映像方式
34、在两个对应的组内部采用全相联映像方式,组相联映像的地址变换 主存块号到Cache块号的变换需要一个由高速小容量存储器做成的块表存储器 块表存储器的块内采用相联访问,块之间按地址访问 变换过程: 用主存地址中的组号G按地址访问块表存储器。把读出来的一组区号和块号与主存地址中的区号和块号进行相联比较 如果有相等的,表示Cache命中 如果全部不相等,表示Cache没有命中,组相联映像的地址变换块表容量与Cache的块数相等,字长为主存区号E,组内块号B,及Cache的组内块号b之和,外加一个有效位,提高Cache访问速度的方法:把块表存储器中的一个相联比较的组按块方向展开存放,用多个相等比较器代替
35、相联访问,以加快查表速度,组相联映像特点,当每组的块容量Gb为1时,就成了直接映像方式。当每组的块容量Gb与Cache的块容量Cb相等时,就成了全相联映像方式,因此,直接相连映像方式和全相联映像方式是组相联映像方式的两个极端情况 与直接映像方式相比块的冲突概率降低,块的利用率大幅提高,但相联比较造成实现的难度和造价也提高 与全相联映像方式相比实现容易,Cache命中率大致相当,4. 位选择组相联映像及其变换,地址映像规则: 主存和Cache都按同样大小分块 Cache在分块的基础上分组 主存按照Cache的组容量分区 主存中的块与Cache的组之间采用直接映像方式 主存中的块与Cache中组内
36、部的各个块之间采用全相联映像方式,位选择组相联地址映像规则,位选择组相联与一般组相联比较: 主存中的一块能够映像到Cache中的总块数不变,等于Cache的组容量 位选择相联的映像关系简单,容易实现: 一般组相联映像中,主存的一个组与Cache的一个组之间是多个块到多个块的全相联映像。 位选择组相联中,主存中的一个块到Cache中的一个组之间是一对多的全相联映像 位选择相联数据分布离散 一般组相联映像中,主存中的连续几块映像到Cache中可能也是连续的 位选择相联映像中,主存中的连续几块映像到Cache中肯定是不连续的,被分散到各个组中,位选择组相联的地址变换规则,3.3.3 Cache替换算
37、法及其实现,块替换发生的时间在主存地址变换成Cache地址的过程中,如果发现Cache块失效,则需从主存中调入一个新块到Cache中。而来自主存的新块往往可以装入Cache的多个块中。当可以装入新块的几个块都已装满时,就需要利用Cache替换算法 使用的场合: 直接映像方式实际上不需要替换算法 全相联映像方式的替换算法最为复杂 主要用于组相联映像中,Cache替换算法要解决的问题,问题: 记录每次访问Cache的块号 在访问过程中,对记录的块号进行管理 根据记录和管理结果,找出替换的块号 主要特点全部用硬件实现,组内所有块是轮流被替换的,3.3.4 Cache系统的加速比,1. 加速比与命中率
38、的关系,提高加速比的最好途径是提高命中率,Cache命中率与以下因素有关:,程序在执行过程中的地址流分布情况 Cache失效时采用的替换算法 Cache容量 组相联映像方式中块的大小和分组的数目 Cache预取算法,2. Cache命中率与容量的关系,Cache的命中率随它的容量的增加而提高,3. Cache命中率与块大小的关系,组相联映像方式的Cache中,Cache容量一定时,块的大小对命中率的影响非常敏感,块很小时,例如只有一个存储单位,命中率H很低 随着块大小的增加,程序的空间局部性起作用,同一块中的数据的利用率提高,块命中率H提高 这种趋势在某一个最佳块大小处达到最大值 在这以后,命
39、中率H随块大小的增加反而减少。当块非常大时,程序的局部性减弱 当块大小等于整个Cache的容量时,命中率H趋近于零,4. Cache命中率与组数的关系,当Cache容量一定时,在组相联映像的Cache中,分组的数目对于Cache命中率H的影响很明显 随着组数的增加, Cache的命中率降低 当组数不太大时(512组以下),命中率降低得相当少 当组数超过一定数量时,命中率下降非常快,3.3.5 Cache的一致性问题,造成Cache与主存不一致的原因: CPU写Cache,但没有立即写主存 IO处理机或IO设备写主存,但没有写Cache,Cache的更新算法(1)写直达法,写通过法,WT(Wri
40、te-through)CPU的数据写入Cache时,同时也写入主存(2)写回法,抵触修改法,WB (Write-Back)CPU的数据只写入Cache,不写入主存,仅当替换时,才把修改过的Cache块写回主存Cache块表中为每一块设置一个修改位,初值为0。当块中任何一个字被修改时,修改位被置为1。,写回法与写直达法的优缺点比较:(1) 可靠性,写直达法优于写回法 写直达法能够始终保证Cache是主存的副本 如果Cache发生错误,可以从主存得到纠正,(2) 与主存的通信量,写回法少于写直达法 对于写回法: 大多数操作只需要写Cache,不需要写主存 当发生块失效时,可能要写一个块到主存 即使
41、是读操作,也可能要写一个块到主存 对于写直达法: 每次写操作,必须写、且只写一个字到主存 实际上: 写直达法的写次数很多,每次只写一个字 写回法的写次数很少、每次要写一个块,例3.15. 在访问存储器的操作中,写操作占总访存次数的20%, Cache的命中率为99%,每块为4个字。当Cache发生替换时,有30%块需要写回到主存,其余的块因为没有被修改过而不必写回主存。试比较写回法与写直达法的访存通信量 解: 对于写直达法:写主存次数占总访存次数的20% 对于写回法: (199%) 30%4=1.2% 因此,与主存的通信量,写回法要比写直达法少10多倍,(3) 控制的复杂性,写直达法比写回法简
42、单 对于写回法: 要为每块设置一个修改位,而且要对修改位进行管理 为了保证Cache的正确性,通常要采用比较复杂的校验方式或校正方式 对于写直达法 不需要设置修改位 只需要采用简单的奇偶校验即可。由于Cache始终是主存的副本, Cache一旦有错误可以从主存得到纠正,(4) 硬件实现的代价,写回法比写直达法好 对于写直达法: 为了缩短写Cache流水段的时间,通常要设置一个小容量的高速寄存器堆(后行写数缓冲站),每个存储单元要有数据、地址和控制状态等3部分组成 每次写主存时,首先把写主存的数据和地址写到高速寄存器堆中 每次读主存时,要首先判断所读数据是否在这个高速寄存器堆中 写回法不需要设置
43、高速缓冲寄存器堆,3.3.6 Cache的预取算法,预取算法有如下几种: 按需取:当出现Cache不命中时,才把需要的块取到Cache中 恒预取:无论Cache是否命中,都把下一块取到Cache中 不命中预取:当出现Cache不命中,把本块和下一块都取到Cache中 主要考虑因素: 命中率是否提高, Cache与主存间通信量 恒预取能使Cache不命中率降低75%到85% 不命中预取能使Cache不命中率降低30%到40%,存储系统,3.1 存储系统原理 3.2 虚拟存储器 3.3 高速缓冲存储器(Cache) 3.4 三级存储系统,3.4 三级存储系统,虚拟存储系统和Cache存储系统可同时
44、存在 存储系统可以有多种构成方法 不同的构成只是实现技术不同,3.4.1 存储系统的组织方式,1. 两个存储系统的组织方式 又称为:物理地址Cache存储系统 目前的大部分处理机采用这种两级存储系统 2. 一个存储系统组织方式: 又称为:虚拟地址Cache存储系统 如Intel公司的i860等处理机采用这种组织方式 3. 全Cache系统 没有主存储器 由Cache和磁盘组成存储系统,1. 两个存储系统的组织方式,2. 一个存储系统的组织方式,MMU (memory management unit):存储管理部件,3.4.2 虚拟地址Cache,虚拟存储器采用位选择组相联方式 虚拟存储器中的一
45、页等于主存储器的一个区 用虚拟地址中的虚页号访问快表 如果快表命中,把快表中的主存区号E与快表中的主存实页号P进行比较 若比较结果相当,则Cache命中,读出Cache的块号b,并与B, b, W拼接得到Cache地址 若Cache不命中,则用主存实页号P,及B和W拼接,得到主存实地址 若快表没有命中,通过软件查主存中的慢表,3.4.3 全Cache存储系统,建立存储系统的目的:获得一个速度接近Cache,容量等于虚拟地址空间的存储器 这个存储器如何构成,具体分成几级实现,只是具体的实现技术而已 随着计算机硬件和软件技术的发展,存储系统的实现技术也在不断改进 最直接最简单的办法:用一个速度很高
46、,容量很大的存储器实现 全Cache (all- Cache)是一种理想的存储系统,一种多处理机系统中的全Cache存储系统,第三章重点,存储系统的定义及主要性能计算 虚拟存储系统的工作原理 虚拟存储器中加快地址变换的方法 虚拟存储系统的页面替换算法 Cache存储系统的地址映像及变换方法 Cache存储系统的替换算法 Cache存储系统的一致性,第三章作业:,一个虚拟存储器,主存有0到3共四个页面,程序有0到7共八个虚页,采用全相联映像,给出如下程序页地址流:2,3,5,2,4,0,1,2,4,6。设程序的2,3,5页已先后装入主存的第3,2,0页位置,分别采用先进先出,最久没有使用和最优替换算法对主存页面进行调度,画出主存页面调入、替换和命中的情况表,统计三种页面替换算法的页面命中率,