【文档说明】计算机体系结构-第五章---存储层次课件.ppt,共(89)页,1.298 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-77482.html
以下为本文档部分文字说明:
第五章存储层次存储器是计算机的核心部件之一,其性能直接关系到整个计算机系统性能的高低。如何以合理的价格设计出容量和速度满足计算机系统要求的存储器系统,始终是计算机体系结构设计中关键的问题之一。5.1存储器的层次结构计算机软件设计者和计算机用户对于存储器容量的需求是无止境的,他们希望容量越大越好
,而且速度还要快,价格要便宜。仅用单一的一种存储器是很难达到这一目标的。较好的方法是采用存储层次,用多种存储器构成存储器的层次结构。从用户的角度来看,存储器的三个主要指标是:容量、速度和价格(每位价格)。1.存储器的三
个主要指标5.1.1从单级存储器到多级存储器2.人们对这三个指标的期望3.这三个指标相互矛盾采用多种存储器技术,构成存储层次。4.解决方法程序的局部性原理程序在执行时所访问地址的分布不是随机的,而是相对地簇聚;这种簇聚包括指令和数据两部
分。◆程序的时间局部性:程序即将用到的信息很可能就是目前正在使用的信息。◆程序的空间局部性:程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近。5.1.2存储层次的性能参数S,TA,C设:S──容量TA──访问时间C──每位价格下面仅考虑由M1和M2构成的两级存储层次:M1的参
数:S1,TA1,C1M2的参数:S2,TA2,C2C=─────如果S1<<S2,CC2。C1S1+C2S2S1+S21.每位价格C命中率H:CPU访问存储系统时,在M1中找到所需信息的概率。H=N1/(N1+N2)N1──访问M1的次数N2──访问M2的次
数失效率F:CPU访问存储系统时,在M1中找不到所需信息的概率。F=1-H2.命中率H和失效率F对大部分系统:TM=TA2+TB3.平均访问时间TA由于TA=HTA1+(1-H)(TA1+TM)于是T
A=TA1+(1-H)TM或TA=TA1+FTMTA1──命中时间TM──失效开销5.1.3“Cache-主存”和“主存-辅存”层次一般来说:“Cache-主存”层次:弥补主存速度的不足;“主存-辅存”层次:弥补主存容量的不足。1.“Cache-主存”层次“Cache-主存”层次的实现:主要借助于
辅助硬件。“主存-辅存”层次的实现:主要借助于辅助软硬件。2.“主存-辅存”层次存储层次CPU对第二级的访问方式比较项目目的存储管理实现访问速度的比值(第一级和第二级)典型的块(页)大小失效时CPU是否切换
“Cache-主存”层次“主存-辅存”层次为了弥补主存速度的不足为了弥补主存容量的不足主要由专用硬件实现主要由软件实现几比一几百比一几十个字节几百到几千个字节可直接访问均通过第一级不切换切换到其他进程3.
两者的比较Cache-主存”与“主存-辅存”层次的区别。5.1.4存储层次的四个问题1.当把一个块调入高一层(靠近CPU)存储器时,可以放在哪些位置上?(映象规则)2.当所要访问的块在高一层存储器中时,如何找到该块?(查找算法)3.当发生失效时,应替换哪一块?(替换算法)
4.当进行写访问时,应进行哪些操作?(写策略)5.2Cache基本知识为了填补CPU和主存在速度上的巨大差距,现代计算机都在CPU和主存之间设置一个高速、小容量(目前一般为几十K到几百K字节)的缓冲存储
器Cache。5.2.1映像规则全相联:主存中的任一块可以被放置到Cache中的任意一个位置。特点:空间利用率最高,冲突概率最低,实现最复杂。1.全相联映象直接映象:主存中的每一块只能被放置到Cache中唯一的一个位置。特点:空间
利用率最低,冲突概率最高,实现最简单。例如:对于主存的第i块,若它映象到Cache的第j块,则:j=imod(M)(M为Cache的块数)2.直接映象设M=2m,则当表示为二进制数时,j实际上就是i的低m位:m位ji:组相联:主存中的每一块可以被放置
到Cache中唯一的一个组中的任何一个位置。3.组相联映象上述的j和k通常称为索引。组的选择常采用位选择算法若主存第i块映象到第k组,则:k=imod(G)(G为Cache的组数)设G=2g,则当表示为二进制数时,k实际上就是i的低g位:g位k主存块地址i:相联度一定是越大越好?绝大多数计
算机的Cache:n≤4。n路组相联:每组中有n个块(n=M/G),n称为相联度。相联度越高,Cache空间的利用率就越高,块冲突概率就越低,失效率也就越低。全相联直接映象组相联n(路数)G(组数)MM111<n<M1<G<M如何确定Cache中是否有所要访问的块?若有的话,如何确定其位
置?这是通过查找目录表来实现的。Cache中设有一个目录表,该表所包含的项数与Cache的块数相同,每一项对应于Cache中的一个块。当一个主存块被调入Cache中某一个块位置时,它的标识就被填入目录表
中与该Cache块相对应的项中,并且该项的有效位被置“1”。5.2.2查找方法根据映象规则不同,一个主存块可能映象到Cache中的一个或多个Cache块位置。为便于讨论,我们把它们称为候选位置。当CPU访问该主存块时,必须且只需查找它的候选位置所对应的目录表项(标
识)。如果有与所访问的主存块相同的标识,且其有效位为“1”,则它所对应的Cache块即是所要找的块。为了保证速度,对各候选位置的标识的检查比较应并行进行。CPU100000000000000010000000000000011000000000000010100
000000000001110000000000001001000000000000101100000000000011010000000000001111000000000001000100000000000100110000000000010101000000000
0010111000000000001100100000000000110110000000000011101000000000001111主存Cache目录表110000000000011000000000011100000
0000101100000000011例如:访问内存地址8003H、8013H,即1000000000000011B、1000000000010011B。辅助硬件1000000000010000100000000001
000110000000000100101000000000010011◆并行查找的实现方法:▲相联存储器相联存储器是指其中任一存储项都可以直接用该项的内容作为地址来存取的存储器。▲单体多字存储器+比较器物理地址职工号姓名出生年月工资数nn+1n+2n+3n+45697102
5199109629631171002126211403张三李四王五赵八吴九1975.121960.091980.051953.061975.05923004000175042002500所要解决的问题:当新调
入一块,而Cache又已被占满时,替换哪一块?1.随机法优点:实现简单2.FIFO3.LRU优点:失效率低5.2.3替换算法5.2.4写策略1.“写”操作所占的比例Load指令:26%Store指令:9%“写”在所有访存操作中所占的比例:9%
/(100%+26%+9%)≈7%“写”在访问数据Cache操作中所占的比例:9%/(26%+9%)≈25%3.“写”访问有可能导致Cache和主存内容的不一致2.“写”操作必须在确认是命中后才可进行4.两种写策略◆写直达法执行
“写”操作时,不仅写入Cache,而且也写入下一级存储器。◆写回法执行“写”操作时,只写入Cache。仅当Cache中相应的块被替换时,才写回主存。(设置“污染位”)5.两种写策略的比较◆写回法的优点:速度快,所使用的存储器频带较低;◆写直达法的优点:易于实现,一致性好。6.
写缓冲器8.写策略与调块写回法──按写分配写直达法──不按写分配7.“写”操作时的调块◆按写分配(写时取)写失效时,先把所写单元所在的块调入Cache,再行写入。◆不按写分配(绕写法)写失效时,直接写入下一级存储器而不调块。例子:DE
C的AlphaAXP21064中的内部数据Cache。1.简介容量:8KB块大小:32B块数:256调块:不按写分配映象方法:直接映象“写”策略:写直达写缓冲器大小:4个块5.2.5Cache举例2.结构图3.失效情况下的操
作读失效:Cache向CPU发出一个暂停信号,通知它等待,并从下一级存储器中读如32个字节,填入对应的Cache块。写失效:CPU不对Cache进行操作。4.写缓冲的结构写合并:当把数据写入写缓冲器时,判断本次所写入单元的块地址是否与写缓冲器中某个
有效块的地址相同,若是,则把新数据与该块合并。2.平均访问时间平均访问时间=命中时间+失效率×失效开销1.失效率5.2.6性能分析3.程序执行时间在考虑存储器对系统性能影响时,可以将系统性能描述为:CPU时间=(CPU执行周期数+存储器停顿周期数)×时钟周
期时间平均访存时间=命中时间+失效率×失效开销可以从三个方面改进Cache的性能:(1)降低失效率(2)减少失效开销(3)减少Cache命中时间5.2.7改进Cache性能1.主存的主要性能指标:延迟和带宽2.以往:Cache主要关心延迟,I/O主要关心带宽3.现在:Cache关心两者(由于二级
Cache使用较大的块)5.6主存存储器带宽是反映存储器速度的重要参数。连续访问存储器时达到的数据传输速率称为存储器的最大带宽。1.增加存储器的宽度如果把Cache和主存的宽度增加为原来的2倍或4倍,则主存的频带也相应地增加为原来的2倍或4倍。不足之处:a.增加CPU和存储器之间的连接通路(
存储器总线)的宽度;b.当主存宽度增加后,用户扩充主存时的最小增量也增加了相应的倍数。c.在具有纠错功能的存储器中实现对一行(一次可并行读出的数据)中部分数据的写入比较复杂。提高主存性能的存储器组织结构2.采用简单的多体交叉存储器提高带宽的另一种方法,是在存储系统中采用多个DRAM,并利用它们潜
在的并行性。可以把存储芯片组织为多个体,并让它们并行工作,从而能一次读或写多个字(而不是一个字)。一般来说,使用交叉存储器的目的是利用系统中所有DRAM的潜在带宽,而大部分存储系统(非交叉存储器)只启动包含所访问字的那个DRAM。存储体的宽度通常都是一个字,这
样就无需改变总线的宽度和Cache。但同时向几个体发送地址能使它们同时进行读访问。4路多体交叉存储器下图示出了高位交叉访问的存储器结构(高位连续地址分别处于不同体中),图中结构具有m个体,每个体内容量为n个字,存储单元的地址由两部分
组成,地址码的低位部分为各体内地址,由0~(n-1);高位字段表示了各体的体号,由0~(m-1)。寻址时,地址的高位字段指出寻址的体,低位字段送到该体的地址寄存器(MAR)。存储器的总容量为m×n个字,地址码长度为log2(m×n)位,
其中,地址的高字段为log2m位,低位字段为log2n位。由于程序局部性原理,近期所用到的指令和数据往往都集中在一个体内,从而出现了并行访问冲突,如果在多任务多用户的应用状态下,访问冲突较少。下图示出了低位交叉访问存储器结构(低位连续地址分别处于不同体中),地址码的低位字段为存储
体号,高位字段为存储体内的地址,低位字段译码后决定选择哪个存储体的数据。由于编址方式采用连续地址分布在不同存储体中,因此并行性比较好,可以有效地拓宽存储器的频带。为了达到提高主存储器速度的目的,采用了低位交叉方式的
存储器,在一个存储器周期内,m个存储体必须分时启动,实际上是一种采用流水线方式工作,因而被广泛地采用,特别是在多处理机,流水线处理机中,一般都采用了这种低位交叉访问的多体存储器。•提出于1961年•解决应用程序对主存容量越来越高的要求以及主存难以满足要求这一问题•
从程序覆盖技术发展而来5.7虚拟存储器问题:(1)当一个大作业的地址空间大于整个内存的空间时,不能全部装人内存而无法进人系统运行;(2)系统中会有很多作业要求运行,但由于内存容量有限,只能选少数作业放入内
存执行,而其它大量的作业放在外存上等待空出内存后才能装入。怎么解决这种矛盾呢?直接的办法是扩大内存容量——在机器上多插几个内存条。但是,这种办法往往难以实现;另外,作业在执行之前要全部装入内存,会造成内存的浪费。1.基本想法一次性及驻留性
是否是程序运行时所必须的?根据程序的局部性原理,把当前运行需要的那部分程序和数据装入内存并启动程序运行;其余都分暂时放在外存上,待以后实际需要它们时,再分别调入内存。这样做会带来很多好处:①用户编制程序时可不必考虑内存容量的限制;②由于每个作业只有一部分装入内
存,因而占用的内存空间就较少,在一定容量的内存中就可同时装入更多的作业,增加了CPU的利用率和系统的吞吐量。这样,就给用户提供了一个比真实的内存空间大得多的地址空间,这就是虚拟存储器。所谓虚拟存储器是用户能作为可编址内存对待的存储空间。在这种计算机系
统中虚地址被映象成实地址。简单地说,虚拟存储器是由操作系统提供的一个假象的特大存储器。就是说,虚拟存储器并不是实际的内存,它的大小比内存空间大得多;用户感觉所能使用的“内存”非常大,但这是操作系统对物理内存的扩充。物理地址:由CPU地址引脚送出,用于访问主存的地址。虚拟地址:由编译程序生成的,是程
序的逻辑地址,其地址空间的大小受到辅助存储器容量的限制。虚拟存储器的基本特征是:(1)虚拟扩充(2)部分装入(3)离散分配(4)多次对换虚拟存储器是“主存-辅存”层次进一步发展的结果。它由价格较贵、速
度较快、容量较小的主存储器M1和一个价格低廉、速度较慢、容量很大的辅助存储器M2(通常是硬盘)组成,在系统软件和辅助硬件的管理下,就像一个单一的、可直接访问的大容量主存储器。应用程序员可以用机器指令的地址码对整个程序统一编址,就如同应用程序员具有对应于这个地址码宽度的存储空间(称为程
序空间)一样,而不必考虑实际主存空间的大小。2.虚拟存储器的特点◆多个进程可以共享主存空间;◆程序员不必做存储管理工作;◆采用动态再定位,简化了程序的装入;◆增加了CPU的利用率和系统的吞吐量。3.虚拟存储器的分类按照存储空间管理方式,可以分为三类。◆页式把空间分成大小相同的块
(4KB64KB),称为页面。◆段式把空间分成可变长的块,称为段,段的大小可根据程序的逻辑意义来确定,一般是程序模块。◆段页式页式虚拟存储器把虚拟地址空间主存储器的地址空间划分成一个个固定大小的块,每块称为一页(Page)。目前一般计算机系统中,一页的大小通常为1
KB至16KB。把一个在虚拟地址空间中编写的用户程序映象到主存实地址空间时,只需要建立从虚页号到实页号的地址变换即可,该变换由页表实现。某个程序有5页(逻辑页号0~4),每个页分别位于主存不连续的页面位置,用页表记录逻辑页号及其所对
应的实主存页号,页表是由操作系统建立的.图中页号0,1,3已分配实主存空间,所以装入位为“1”.Pa装入修改主存页号标志用户号U虚页号P页内偏移D页内偏移d1pPa页表基址页表实页号p页式地址变换4.有关虚拟存储器的四个问题◆
映象规则在处理虚存失效时,需要访问磁盘存储设备,因此虚存失效开销非常大。如果要在低失效率和简单的映象规则之间进行选择的话,操作系统设计者总是选择低失效率,因为失效开销实在是太大。因此,操作系统允许将块放在主存的任一位置,即采用全相联映象。◆查找算法页式和段式管理都要使用一个由页号或段号作为索引的数
据结构,这个数据结构分别称为页表和段表。这个数据结构中含有所要查找的块的物理地址。对于段式系统,段内位移加上段的物理地址就是最终的物理地址。而对于页式系统,只需简单地将页内位移拼接在相应页面的物理地址之后即可。页表每一项对应一个虚页号;每一项一般有这样一些域:(1)该页是否已在主存中(2)该页在主
存中的起始地址(物理页号)(3)其他信息(如保护信息等)页表通常非常大。虚页号页内位移页表物理页号页内位移虚拟地址物理地址◆替换算法几乎所有的操作系统都设法替换最近最少使用(即LRU)的页,因为这个页可能是最没有用的。为了帮
助操作系统寻找LRU页,许多机器为主存中的每个页面设置了一个使用位,也称为访问位。每当主存中的一个页面被访问时,其相应的使用位就被置“1”。操作系统定期地使所有使用位复位。这样,在每次复位之前,使用位的值就反映出了从上次复位到现在的这段时间中哪些页曾被访问过。通过用这种方法跟踪各个页被访问的
情况,操作系统就能选择一个最近最少使用的页。◆写策略主存的下一级是磁盘,磁盘的访问时间非常长,需要几十万至上百万个时钟周期。因此,虚拟存储器总是采用写回策略。由于访问下一级存储器的开销非常大,虚拟存储器通常使用“脏”位来保证只有被修改过了的块才被写回磁盘,这样就可避免对下一级存储器的不必要访问
。