1 / 93

第三章 存储系统

第三章 存储系统. 第一节 存储系统设计基本原理. 一、层次结构存储系统. 1 、存储器的性能指标. * 容量: S M =W · l · m , 其中 W 为字长、 l 和 m 为存储体字数和体数。. * 速度: 常用存取时间 T A 、存取周期 T M 和带宽 B m 表示。 T A =MEM 接到读命令至结果出现在输出端的时间; T M =MEM 被连续两次访问的最小间隔时间, T M > T A ; B m =W · m/T M 。. * 价格: 每位价格 c=C/S M ,其中 C 为总价格。. 矛盾. 矛盾.

urban
Download Presentation

第三章 存储系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三章 存储系统

  2. 第一节 存储系统设计基本原理 一、层次结构存储系统 1、存储器的性能指标 *容量:SM=W·l·m, 其中W为字长、l和m为存储体字数和体数。 *速度:常用存取时间TA、存取周期TM和带宽Bm表示。 TA=MEM接到读命令至结果出现在输出端的时间; TM=MEM被连续两次访问的最小间隔时间,TM>TA; Bm=W·m/TM。 *价格:每位价格c=C/SM,其中C为总价格。

  3. 矛盾 矛盾 大容量 高速度 低价格 2、用户对存储器的需求 *用户需求:高速度、大容量、低价格。 *用户需求的矛盾: *用户需求带来的问题:只用一种存储器无法满足需求! 3、程序访存局部性原理 *时间局部性: 已被访问过的存储项,可能很快被再次访问。 *空间局部性: 被访问存储项的相邻存储项,可能很快被访问。 △用户需求矛盾的解决:--多种存储器组合使用 近期使用的数据放在“前方”存储器(快而小)中; 其余数据放在“后方”存储器(慢而大)中。 回下页

  4. Mn M2 … M1 CPU 其中—ci>ci+1,TAi<TAi+1,SMi<SMi+1 4、层次结构存储系统 *层次结构:用多种类型存储器的组合实现对存储器的大容量、高速度和低价格需求。 *信息存储:M1→Mn中,前者中信息是后者中信息的副本。 *访问方法:CPU只访问M1,M1~Mn通过层间辅助管理机构透明地(相对于CPU)交换数据。 *预期目标:①c≈cn; ②TA≈TA1。 注:达到目标①②后,容量需求已不是问题。 △程序访存局部性原理是存储系统设计的基础! 转上页 回下页

  5. 5、层次结构存储系统的性能参数 (1)每位平均价格c (2)命中率H CPU产生的逻辑地址能在M1中访问到的概率。 不命中率或失效率:F=1-H。 (3)平均访问时间TA TA=HTA1+(1-H)TA2,TA2=H’TA2’+(1-H’)TA3,… △实现预期目标的相关要求: SMi<<SMi+1,即相邻层存储器容量差较大; ci>>ci+1,即r=TAi+1/TAi较大(相邻层访问时间差较大); H较大,即接近于1.0。 转上页

  6. 辅助硬件 辅助软硬件 CPU Cache 主存 CPU 主存 辅存 “Cache-主存”层次 “主存-辅存”层次 二、存储系统设计原理 1、存储系统层次数量的设计 按冯·诺依曼模型要求,CPU直接访问的是主存。围绕主存的层次结构一般有“Cache-主存-辅存”两个层次的三个存储器。 (1)“Cache-主存”存储层次 --设置高速缓冲存储器 *目标:解决主存的速度不够问题。 *效果:Cache的速度,主存的容量。 (2)“主存-辅存”存储层次 --构成虚拟存储器 *目标:解决主存的容量不够问题。 *效果:主存的速度,辅存的容量。 回下页

  7. CPU 虚拟地址 AMU CMU MMU 不命中 不命中 辅存 地址 主存 地址 辅存 Cache 地址 D/I (CPU Bus) D/I (Mem Bus) D/I (I/O Bus) 主存 Cache 2、层次存储系统总体设计 *主要解决问题:①如何有效地组织层次结构; ②如何有效地组织层次中存储器的结构. (1)层次结构的组织 *层次管理机构:CPU与各存储器使用的地址空间不同,各存储器需设置管理单元(MU)进行地址变换,以实现层间访问。 CMU、MMU、AMU的实现方式— AMU用软件实现(OS的文件管理模块); CMU、MMU可用硬件或软件实现(在后续部分讨论)。 转上页

  8. CPU AMU 虚拟地址 辅存 MMU CMU 主存 D/I (CPU Bus) D/I (Mem Bus) D/I (I/O Bus) Cache (a) 虚地址CMU方式 虚拟 地址 CPU AMU MMU 辅存 CMU 主存 D/I (CPU Bus) D/I (Mem Bus) D/I (I/O Bus) Cache (b) 物理地址CMU方式 *CMU组织方式:有虚地址CMU及物理地址CMU两种方式。 CMU组织方式设计—通常采用物理地址CMU方式。 (易于实现中心为主存的层次结构) 访问各存储器的外部地址— 辅存为虚拟地址,其余存储器为主存地址。 △说明:后续的讨论均基于物理CMU的组织方式! 回下页 回10页

  9. 辅存 主存 字/次 (如4B) 块/次 (如32B) 页/次 (如4KB) Cache CPU (2)层次结构的性能设计 *MU的实现方式: 层次结构要求—Cache、主存、辅存空间的数量级不同 →各存储空间映射表大小数量级不同; MU实现方式设计—CMU全部用硬件实现,MMU部分用硬件实现,AMU全部用软件实现。 *层间信息交换单位: 信息交换时间—Tn个字=n*(T地址+T存取+T传输), T地址、T存取及T传输取决于存储器及总线速度; 信息交换单位设计—优化的Tn个字=T地址+n*(T存取+T传输), T地址、T存取及T传输越大,n越大。 转上页

  10. … … 本层存储器 上层存储器 下层存储器 Data Cmd Addr(主存地址) 命中 不命中 不命中处理 比较器 存储 阵列 映射表 控制器 更新 (3)层次结构的存储器组织 *存储阵列空间管理:存储器有两种信息交换粒度,按大交换粒度进行与下层的管理。 *组成:存储阵列、控制器、层次辅助管理机构(MU)。 回下页 转8页

  11. 请求到达 用主存地址 查映射表 替换算法 地址映像规则 查找方法 N Y 地址变换规则 命中? 找一空闲位置 下层地址→本层地址 N 找到? 读 写 读/写? 选出一个位置 Y 接收上层数据到本层阵列中 (按与上层交换单位大小) 读本层阵列中数据到上层 (按与上层交换单位大小) 写本层阵列中数据到下层存储器中 (按与下层交换单位大小) 取下层存储器数据到本层阵列中 (按与下层交换单位大小) 请求完成 写数据到下层存储器中 (按与下层交换单位大小) 更新策略 *访问请求处理过程: 转上页 回下页

  12. (4)层次结构中存储器的性能设计 存储器平均访问时间:TA’=HTCurrMEM+(1-H)TNextMEM *实现技术的设计: 地址映像及变换规则、查找算法、替换算法、更新策略(写策略)的选择不同,存储器的性能不同。 *提高命中率的设计: 优化存储器结构、参数及访问请求处理过程可提高性能. (在Cache部分进行详细分析) *减小层间辅助开销的设计: 优化存储器结构、访问请求处理过程及层次结构处理方法可提高性能。(在Cache部分进行详细分析) 转上页

  13. Cmd CPU Addr Data 比较器 存储阵列 (SRAM) 目录表 控制器 System Bus 第二节 高速缓冲存储器 一、基本工作原理 1、Cache基本组成 Cache主要由快速存储阵列、目录表、控制器(包含层间辅助管理CMU)等组成。 回下页

  14. 块/次 (如32B) 字/次 (如4B) … CPU … 按主存地址访问 Cache 主存 Cache块号 块内地址 Cache地址表示: 主存块号 块内地址 主存地址表示: 有效位 对应主存块号 与主存块是否一致等 块管理信息: 2、基本工作原理 (1)存储空间管理 *信息交换单位:Cache-CPU间为字、Cache-主存间为字块; Cache、主存中字块内字的偏移固定。 *存储空间管理:按字块(常称为块,有称行)进行管理。 *管理信息存储:用目录表(每个块1行)存储块管理信息。 转上页 回下页

  15. (CPU访问的)主存地址: 主存块号 块内地址 根据映像规则,按查找方法查目录表 N Y 命中? N Cache有空闲空间? 根据映像规则, 进行地址变换 按替换算法,找出一个块号i Y 调进目标主存块 N 块i被修改过? Y Cache地址: Cache块号 块内地址 块i写回主存 按Cache地址访问阵列,完成CPU访问(字大小) 若CPU访问为写操作,按写策略将该块写回主存 (2)完成访问过程 ☆为提高速度,全部工作均由硬件完成(对程序员透明)! 转上页 回下页

  16. (3)Cache实现的相关问题 主要为CMU的实现技术问题,其余与常规存储器相同。 *地址映象规则:数据块从主存调入Cache时可放在哪些位置(又称候选位置); *查找方法:在候选位置中如何查找数据块; *替换算法:发生失效(不命中)且无空闲空间时,如何决定替换某个数据块; *写策略(更新策略):处理CPU写请求时,何时将数据块写回到主存。 转上页

  17. Cache空间 主存空间 块0 块0 块1 主存地址 区号r 块号s 块内地址t … 区0 块G-1 不命中 相等比较 块0 … … Cache 地址 区1 块号s 块内地址t 块G-1 块G-1 … 0 s G-1 … 块0 映像 r 侯选位置 … 区2m-1 块G-1 … 主存区号 其他 变换 目录表 二、相关实现技术 1、地址映像及变换 (1)直接映像及变换 *映像规则:将主存及Cache划分成若干大小相同的块; 主存的块i可映射到Cache的块j=(i mod G)。 *性能与成本:块冲突概率最高,实现成本最低(最简单)。 回下页 回19页

  18. 主存地址 区号r 块内地址t Cache空间 主存空间 块0 块0 块1 不命中 相等比较 … … Cache 地址 块j 块号i 块内地址t … 块i 0 1 i G-1 块G-1 … 侯选位置 … 映像 r 块2m-1 … 变换 主存块号 其他 目录表 (2)全相联映像及变换 *映像规则:将主存及Cache划分成若干大小相同的块; 主存的块i可映射到Cache的任意块j。 *性能与成本:块冲突概率最低,实现成本最高(最复杂)。 例—1MB按字节编址主存、1KBCache、块大小16B,Cache目录表大小?主存地址30243H对应块可映射到哪些Cache块? 转上页

  19. Cache空间 主存空间 块0 块1 块0 块1 组0 组0 区0 … … 块0 块1 组G/2-1 块0 块1 组G/2-1 … 块0 块1 组0 … 映像 区2m-1 块0 块1 组G/2-1 每组有2个块的组相联映像 (3)组相联映像及变换 *映像规则:将主存及Cache划分成若干大小相同的组和块; 组间采用直接映像、组内采用全相联映像。 *性能:块冲突概率较低(介于全相联与直接映像之间); 多任务时冲突概率较大(各任务占用组内全部块)。 转17页 回下页 回21页

  20. 主存地址 组内块号s 块内地址t 区号r 区内组号g 不命中 相等比较 Cache 地址 块内地址t 组号g 组内块号s 0 1 0 1 0 1 组0 … 组g r,s 侯选位置 … 变换 组G/2-1 区号,块号 其他 目录表 每组有2个块的组相联地址变换 *成本:实现成本较低(比直接映像及变换略高)。 转上页 回22页

  21. Cache空间 主存空间 Cache空间 主存空间 块0 块1 块0 块1 块0 块1 块0 块1 组0 组0 区0 … … 块0 块1 块0 块1 组1 组1 块G/2-1 块G/2-1 块G/2 等价 … … … 块G/2+1 … 块0 块1 块0 块1 块0 块1 组G/2-1 组G/2-1 块G-1 区2m-1 … … 映像 映像 块G/2-1 块m*G/2-1 每组有2个块的位选择组相联映像 每组有2个块的位选择组相联映像 (4)位选择组相联映像及变换 *映像规则:将Cache划分成组和块,主存仅分块不分组; 主存的块i可映射到Cache的组j=(i mod G/2)内任意块。即块-组间的组相联映像。 *性能:块冲突概率较低(比理论上的组相联还低); 多任务时冲突概率较低(各任务占用组内一个块)。 回下页 转19页

  22. 主存地址 区号r 区内块号g 块内地址t 不命中 相等比较 Cache 地址 块内地址t 组号g 组内块号s 0 1 0 1 0 1 组0 … 组g r 侯选位置 … 变换 组G/2-1 区号 其他 目录表 每组有2个块的位选择组相联地址变换 *成本:实现成本较低(比理论上的组相联简单)。 ☆通常所讲的组相联映像—即位选择组相联映像!! ☆n路组相联映像定义—Cache组内包含n个块的组相联映像或位选择组相联映像。 转上页 转20页

  23. 主存块地址 标识r 索引s 第1路 第2路 0 1 s 有效位 标识 有效位 标识 0 1 s 有效位 标识 其他 … … … … … … 索引s … … … … … … 标识r =? =? =? + (a)候选位置为1个的按地址查找 (b)候选位置为多个的按地址查找 2、查找方法 即如何在候选位置中查找数据块。 *候选位置:直接映像—1个;组相联映像—组内块数n; 全相联映像—全部块数G。 *查找方法:①按地址查找;②按内容查找。 (1)按地址查找 有串行和并行查找两种方法,基本均采用并行查找方法。 回33页 回下页

  24. 有效位+标识 比较REG 比较位置标记 屏蔽REG 主存块地址 标识r 索引s … 字选择 REG 结果 REG 相联存储器 候选位置 (2)按内容查找 目录表存储在相联存储器中,可按内容快速查找。 (3)两种查找方法比较及应用 *比较:按地址查找性/价较好;按内容查找性能较好。 *应用:Cache容量很小、全相联映像时,一般用相联存储器按内容查找;否则,用SRAM存储器按地址查找。 转上页

  25. (访问的)块地址序列: 2 11 2 9 7 6 4 3 (Cache)块分配情况: 0# 1# 2# 3# 3、替换算法 (1)替换算法种类 *RAND算法:替换的块由随机数发生器产生,命中率随机。 *FIFO算法:替换的块为最早调进的块,未遵循访存局部性原理,命中率较低。 *LRU算法:替换的块为近期最少被访问的块,遵循了访存局部性原理,命中率较高。 例1:共4个块、LRU算法的全相联Cache,若访问块地址序列为2、11、2、9、7、6、4、3,Cache完成访问的块操作状态? 操作状态: 调进 调进 命中调进 调进 替换 替换 替换 回下页

  26. 地址流块号: 2 11 2 9 7 6 4 11 10 2 块分配情况: 0# 1# 0# 1# 0# 1# 0# 1# 组0 组1 组2 组3 例2:块数为8、LRU算法的2路组相联Cache,访问块地址序列为2、11、2、9、7、6、4、11、10、2,Cache完成访问的块操作状态?若每个块均连续访问6次,则命中率H=? 操作状态: 进 进 中 进 进 进 进 中换 换 (2)替换算法选择 *LRU算法特点:命中率随全相联块数的增加而提高; 属堆栈型算法。 *替换算法选择:通常均采用LRU替换算法。 转上页

  27. 4、写策略 目的:对维护Cache与主存数据一致性提供支持。 写策略包含写命中策略和写丢失策略两个方面。 (1)写命中策略 *全写法(写直达法):CPU写Cache时,Cache同时将数据块写到主存; 特点—与主存数据的一致性较好,TCPU写=T写Cache+T写主存 *写回法:CPU写Cache时,Cache在该块被替换时才将数据块写回主存; 特点—与主存数据的一致性略差,TCPU写=T写Cache *写一次法:是基于写回法并结合全写法的写策略,数据块第一次写命中时,采用全写法,后续写命中时,采用写回法。 特点—与主存数据的一致性及TCPU写均介于两者之间 回下页

  28. (2)写丢失策略 *按写分配法:CPU写Cache不命中时,先将对应的块调入Cache,然后再写Cache中该块; *不按写分配法:CPU写Cache不命中时,直接将数据写到主存,而不将对应的块调入Cache。 (3)写策略的选择 *写命中策略与写丢失策略的配对: 全写法一般与不按写分配法配对(读调进块、写不调), 写回法一般与按写分配法配对(读/写均调进块)。 *写策略的命名:通常用写命中策略命名。 *写策略的应用:通常采用写回法+按写分配法。 转上页

  29. H H 1 1 2SC SC 块大小增加 SC 块大小 三、Cache性能分析 1、命中率H (1)影响H因素 有地址映像规则、替换算法、Cache容量、块大小、组大小、地址流等。 *地址映像规则:全相联映像时H最高、组相联映像次之; 考虑性能/价格,一般采用组相联映像。 *替换算法:LRU算法的H最佳,基本均采用LRU算法。 *Cache容量:增加容量可提高H,但容量与成本有关。 *块大小:增加块大小可提高H,容量固定时并非一直增加. 回下页 回75页

  30. H H 1 1 2SC SC 组大小增加 SC 组大小 *组大小:增加组大小可提高H,容量固定时并非一直增加. *地址流:与软件的工作特性(算法)有关,优化软件算法可提高H。 (2)失效(即不命中)类型及特征 *类型:强制(冷启动)失效、容量失效、冲突失效。 *特征: 强制失效—只与块大小有关; 容量失效—只与Cache容量、软件的工作特性有关; 冲突失效—与地址映像、Cache容量、块大小、组大小、地址流等有关。 转上页

  31. 2、平均访问时间TA TA=HTA1+(1-H)TA2,或TA=H*T命中+F*T失效,失效率F=1-H *影响TA因素:命中率(失效率)、命中时间、失效开销。 *优化TA性能的方法: ①降低失效率; ②减少失效开销; ③减少Cache命中时间。 △Cache设计的相关参数:容量、块大小、组大小。 回下页

  32. 改善 强制失效 改善 冲突失效 1-H 1 SC 2SC 4SC 块大小 四、降低Cache失效率的方法 1、增加Cache块大小 *测试结果: ①失效率先下降、后上升; ②容量越大,最低失效率的块越大。 *问题:增加块大小降低失效率,以增加失效开销为代价。 TA=HT命中+F*T失效,T失效=T地址+n*(T存取+T传输) *块大小的选择: 目标—使TA最小(失效率、失效开销均较小); 方法--从降低失效率角度出发,将失效率最小点的块大小的一定范围作为候选区域; 从减小失效开销角度出发,当下级MEM低延迟、高带宽时选择候选区域内较大的块,否则选择较小的块。 转上页

  33. 2、提高相联度(增加组内块数) *测试结果: ①相联度越大,失效率越低; ②容量为N的直接映像的失效率与容量为N/2的2路组相联的失效率相近; ③8路组相联的失效率接近于全相联的失效率。 思考:为什么组内块数不很多时,块冲突率已较低? *问题:提高相联度降低失效率,以增加命中时为代价。 T命中=T查表+T地址变换+T访问,并行查找时增加的是成本 *相联度的选择: 目标—使TA最低(失效率、命中时间或成本均较低); 方法—采用对测试程序进行测试的方法; 结果—小容量Cache(≤32K),相联度越高TA越低, 大容量Cache,相联度为4或8时TA较低。 转23页

  34. 数据 Cache 存储阵列 目录表 主存 Victim Cache CPU Y 地址 Y =? =? N N 3、设置Victim Cache 增加缓冲区(称为Victim Cache),存放被替换出来的块。 *降低失效率原理:①访问Victim Cache代替访问下级MEM; ②Victim采用全相联映像。 *减小失效开销原理:并行访问Cache与Victim Cache。 *测试结果:①对128个块的直接映像Cache,Victim Cache为4个块时,可减少失效率的20%~90%; ②对组相连映像的Cache,意义不大。 回39页 回65页

  35. CPU访问序列 Cache 主存 CPU Load A Load B Load C Load D 已执行 time Cache Fetcher 未执行 4、采用预取技术 *降低失效率原理:在数据块被访问前,尽量使数据块已在Cache中。 *预取技术种类:硬件预取技术、软件预取技术。 (1)硬件预取技术--Dual Core 2采用 *实现原理:增加Cache预取器,将CPU马上要访问的、不在Cache中的数据块提前调入。 思考:①预取器如何获得CPU未执行指令的数据块地址? ②预取操作与正常失效访存操作的冲突如何解决? 回下页

  36. 程序目标代码 …… Load A Load B 预取指令(PreLoad C) …… Load C Load C+1 …… *测试结果:预取器容量为4个块左右时,失效率较低; 容量超过4个块时,失效率率基本不再降低。 *特点:预取效率与预取算法的有效性及预取算法的实现延迟有关,需要增加硬件成本、不需要软件介入。 (2)软件预取技术--国产神威(SW)CPU采用 *实现原理:由编译器在目标代码的适当位置插入预取指令,确保指令执行时,即将访问的数据块已在Cache中。 *特点:预取效率较高、无算法延迟,但需编译器介入。 转上页

  37. 数据 数据 Cache 存储阵列 主存 Cache 存储阵列 目录表 目录表 写 缓冲区 写回 缓冲区 CPU Y Y 地址 地址 Y Y =? =? =? =? N N N N (a)全写法Cache[不按写分配] (b)写回法Cache[按写分配] 五、减少Cache失效开销的方法 CPU对访问请求的处理采用等待方式(非程序切换方式),以提高系统性能(程序切换方式的延迟远远大于等待方式)。 1、读失效优先于写 --所有Cache采用 *减小失效开销原理:增设写(回)缓冲区,暂存需要写主到存的块,先处理CPU的访问请求,再处理需写到主存的操作。 回下页 回39页

  38. CPU的操作 写操作(A) 读操作(B) 时间t Cache的操作 写Cache(A) 写主存(A) 读失效(B) 读主存(B) CPU的操作 写操作(A) 读操作(B) 时间t Cache的操作 写Cache(A) 读失效(B) 读主存(B) 写主存(A) (a)全写法Cache的读失效优先于写 CPU的操作 读操作(A) 读操作(B) 时间t Cache的操作 读失效(A) 写主存(替换块C) 读主存(A) 读Cache(B) CPU的操作 读操作(A) 读操作(B) 时间t Cache的操作 读失效(A) 读主存(A) 读Cache(B) 写主存(替换块C) (b)写回法Cache的读失效优先于写 读优先于写的效果—对CPU而言,实现了“零等待写”。 转上页

  39. 有效位 对应主存块号 对应主存块数据 *写(回)缓冲区: 块包含信息— 大小设置—一般只设置1~2个块大小。 *对失效率的影响: 查目录表不命中时,检查写(回)缓冲器,可一定程度上降低失效率(类似于victim Cache)。 *对命中时间的影响: 同时查找目录表及写(回)缓冲器,不影响命中时间。 转37页 转34页

  40. 标识(主存块号) 子块号 子块内地址 主存地址 子块3 子块2 子块1 子块0 标识 子块有效位 02F0H 1100 0300H 0001 目录表 块 2、子块放置技术 --当块很大时才采用 *减少失效开销原理:将Cache块分成几个子块,调入时首先调入CPU请求对应的子块,其余子块稍后调入。 *实现方法:每个子块有一个有效位, 查目录表时需检查子块的有效位。 *与小块Cache比较: 减少了保存标识的空间,增加了多个子块有效位。 目录表总体空间增加。 →当块很大时才采用该技术 回下页

  41. 主存地址(自处理机) 主存地址 主存块号 块内地址 地址映像及变换 已装不进 失败 还可装入 失败 主存 成功 Cache 地址 块号 块内地址 替换算法 数据总线 Cache阵列 块宽度 访问主存 访问主存 替换Cache 装入Cache 单字宽 单字宽 去处理机 采用请求字处理技术的传统Cache 3、请求字处理技术 --当块很大时才采用,IBM 620 *减少失效开销原理一:尽早重启—按序调入块内各个字,CPU请求的字到达后,立即送给CPU,让CPU尽早重启(继续执行) *减小失效开销原理二:请求字优先—调入块时,首先调入CPU请求的字,并立即送给CPU,然后再调入块内其他字 转上页 回44页

  42. CPU的请求 写请求(C) 读请求(A) 读请求(B) 时间t Cache的操作 读失效(A) 块调入(A) 读命中(A) 读命中(B) 写命中(C) 读完成(B) 写完成(C) CPU请求的完成 读完成(A) 4、非阻塞Cache技术 --PⅡ开始采用,龙芯2号 *降低失效开销原理:增设请求缓冲区,在当前请求失效时,可处理请求缓冲区中后续CPU请求;若后续请求命中,则变相隐藏了当前请求的失效开销。 数据 请求缓冲区 Cache 存储阵列 目录表 主存 地址 CPU Y =? N *应用:对超标量流水线、异步流水线的实现帮助很大。

  43. 5、采用两级Cache --Pentium开始采用 *现状:CPU与主存的速度差距(Cache失效开销)越来越大。 *减小失效开销原理:采用两级Cache,减小失效开销。 *对失效率及命中时间的影响: 设两种方式的Cache总容量相同,即S=SL1+SL2 一级方式—TA=T命中+F×Tmem; 两级方式—TA=TL1命中+FL1×TL2命中+FL1×FL2×Tmem, 其中FL2略大于F(∵SL2<S)。 测试结果—F≈FL1×FL2,即对失效率无大影响; TL1命中+FL1×TL2命中<T命中,即命中时间减少. 思考:为什么通常不采用更多级Cache? P4中设置L3级Cache适合的应用场合?

  44. Cache SRAM 主存DRAM Cache SRAM 主存DRAM 外部 设备 DMA 控制器 外部 设备 DMA 控制器 Cache命中 本地总线 处理器 主存控制器 Cache控制器 处理器 Cache控制器 主存控制器 系统总线 系统总线 6、旁侧式Cache技术 *贯通式Cache: --传统的层次结构(Pentium采用) 当访问Cache不命中时,才访问主存(见Cache结构)。 性能—失效开销大;降低了总线使用率。 *旁侧式Cache: --现代的层次结构(PⅡ开始采用) 降低失效开销原理—访问Cache与访问主存同时进行,Cache命中时中止访问主存。 回下页 转41页

  45. 主存地址(自处理机) 主存地址 主存块号 块内地址 地址映像及变换 已装不进 失败 还可装入 主存 成功 成功 Cache 地址 Cache块号块内地址 替换算法 Cache阵列 数据总线 访问主存 访问主存 替换Cache 装入Cache 块宽度 单字宽 单字宽 去处理机 旁侧式Cache 对系统总线的要求—支持字和块传输宽度(突发传输); 增加“Cache命中”信号线。 性能—降低了失效开销;增加了命中时间(系统总线比本地总线慢);没有明显降低总线使用率。 转上页

  46. 六、减少Cache命中时间的方法 *Cache的实现技术: ①采用半导体工艺构成快速存储阵列; →SDRAM组成 ②尽量靠近CPU,减少传输延迟; →片内Cache ③全部辅助工作由硬件实现。 1、容量小、结构简单的Cache *访问过程:①用主存地址的索引信息读出目录表内容; ②用主存地址的标识信息与读出内容比较; ③变换后的地址访问Cache存储阵列。 *减少命中时间原理: 容量小--可减少读目录表及访问Cache阵列时间; 结构简单—可使比较与数据传输以重叠方式进行。 *应用:与两级Cache的方法不谋而合。

  47. 虚拟地址 虚拟地址 AMU AMU CPU CPU MMU 辅存 (虚存) 辅存 (虚存) MMU CMU CMU 主存 主存 Cache Cache (a) 物理地址Cache (b) 虚拟地址Cache 2、虚拟Cache(虚拟地址Cache) *减少命中时间原理: 物理地址Cache—T命中=T虚地址→主存地址+T主存地址→Cache地址 虚拟地址Cache—T命中=T虚地址→Cache地址 *存在问题: →虚拟Cache不流行的主要原因! ①目录表的标识字段增加PID、虚块号长度很大; ②共享数据带来的一个主存块有多个Cache块副本; ③Cache-主存交换数据块时,需再次进行地址变换。

  48. CPU地址总线 CPU请求地址1 CPU请求地址2 CPU数据总线 CPU请求数据1 CPU请求数据2 与地址1比较、变换 Cache操作 与地址2比较、变换 数据1→阵列 数据2→阵列 数据 Cache地址 数据 延迟写缓冲区 Cache 存储阵列 目录表 主存 地址变换 CPU MUX 地址 Y =? 读/写 N 3、写操作流水化 --P4采用 *写操作常规过程:①CPU总线上地址与目录表比较、变换 ②CPU总线上数据写入到Cache阵列中 *写操作流水化过程: 流水思路—增设延迟写缓冲器,串行操作→流水操作 回下页

  49. CPU请求地址1 CPU请求地址2 CPU请求地址3 地址总线 CPU请求数据1 CPU请求数据2 CPU请求数据3 数据总线 与地址1比较、变换 与地址2比较、变换 与地址3比较、变换 延迟写缓冲器→阵列 Cache操作 延迟写缓冲器→阵列 数据1→延迟写缓冲器 数据2→延迟写缓冲器 数据3→延迟写缓冲器 流水步骤—①总线地址与目录表比较、地址变换, 总线数据写入到延迟写缓冲器中; ②延迟写缓冲器中数据写入到Cache中。 *读操作流水化过程: 地址比较及地址变换、读Cache阵列本来可重叠进行,不需要另设硬件支持。 转上页

  50. CPU核心 CPU核心 后端总线 L1 I-Cache L1 D-Cache L1 I-Cache L1 D-Cache L2 Cache L2 Cache 总线接口单元BIU 总线接口单元BIU 命中? 命中? 系统总线 前端总线(系统总线) 旁侧式结构Cache DIB结构Cache 4、双独立总线(DIB)结构 --PII起采用,多Core不用 *目标:使旁侧式Cache的命中时间不增加(同贯穿式Cache) *双独立总线(DIB)结构: 前端总线—频率为系统总线频率(66~800MHz) 后端总线—频率为CPU时钟频率(1~3GHz),既处理与L1 Cache的通信,又处理前端总线上的活动 工作特点—前端总线、后端总线可并行工作

More Related