9 主存储器 08 BD AB CD 30 CD 9B 76 C3 BD 0B CD 1F CD 90 71 盛建伦jlsheng@qtech.edu.cn 以取指令为例 2344* 程序计数器PC 访问Cache Cache Tag 2345 2344 2346 234A 234B 内容 ABCD 08 BD 30 CD 1F CD 90 71 08 主存储器 2344 2345 2346 2347 2348 2349 234A 234B 08 BD AB CD 30 CD 9B 76 C3 BD 0B CD 1F CD 90 71 并将从主存 读出的字装 入Cache 每行2个字 AB 指令寄存器IR 7 盛建伦jlsheng@qtech.edu.cn 以取指令为例 2346* 程序计数器PC 访问Cache Cache Tag 2345 2346 内容 AB CD 30 CD 不命中 读主存 2344 2345 2346 2347 2348 2349 234A 234B 30 指令寄存器IR 装入 Cache 主存- Cache 地址映射变换机构 Cache地址 Address Mapping 块 号 块内地址 1行 Cache 1个字 To Processor 数据总线 主存 直接通路 When the processor needs to read or write a location in main memory, it first checks whether that memory location is in the cache. This is accomplished by comparing the address of the memory location to all tags in the cache that might contain that address. … … m-1 盛建伦jlsheng@qtech.edu.cn 直接映射 Direct Mapping 若 Cache有m行,每行n字,主存有2S块, S— r位 主存地址(S+w位) Cache地址(r+w位) 标志Tag r位 行地址Line 行地址Line 选中1行 Cache的 内容 Tag 字0 字1 设 m=2r ,n=2W w位 字地址Word 字地址Word 选中行内1个字 …… 字 n-1 主存 Cache既是Cache-主存层次中的 一层,也是一个旁路存储器。 TA= H· TC +(1—H)· (TM) CPU发出的地址同时访问Cache和主存。如果Cache命中,则 放弃对主存的访问。如果Cache不命中,则从主存读出。 方式2. CPU只直接访问Cache,不直接访问主存。 标准的二级存储层次。 Cache CPU 主存 TA= H· TC +(1—H)· (TM+ TC) 当CPU需要访问存储器时,先检查Cache,此时,地址不出现 在地址总线上。如果Cache不命中,才通过总线访问主存。 盛建伦jlsheng@qtech.edu.cn 3 (一)Cache-主存层次的基本结构 Cache和主存都分成若干行(块,Block,Line,Slot),每 行有若干字(Word)或字节组成。 From Processor 主存地址 地址总线 块号 已装不进 Cache 替换策略 块内地址 Miss Hit Cache 行 i 0 1 …… m-1 主存块 j 0,m,2m,……,2 S-m 1,m+1,2 m+1,……,2S-m+1 …… m-1,2 m-1,3 m-1,……,2S-1 Cache 0 1 2 主存 0 1 2 … … m-1 m m+1 m+2 … … 2m-1 2m 2m+1 … … km-1 km … … nm-1 8 主存储器 08 BD AB CD 30 CD 9B 76 C3 BD 0B CD 1F CD 90 71 并将从主存 读出的字装 入Cache 盛建伦jlsheng@qtech.edu.cn 以取指令为例 2345* 程序计数器PC 访问Cache Cache Tag 2345 2346 内容 AB CD 30 CD 命中 读Cache 2344 2345 2346 2347 2348 2349 234A 234B AB 指令寄存器IR 块 号 块内地址 主存 直接通路 Cache 1个字 To Processor 数据总线 主存与 Cache之间 的数据传输以数据 块为单位。要求总 线和主存支持多字 (块)同时传输。 以取指令为例 2345* 程序计数器PC 访问Cache Cache Tag 2345 内容 AB CD 不命中 读主存 行地址 盛建伦jlsheng@qtech.edu.cn 2 §7.2 高速缓冲存储器 (Cache) Cache-主存层次工作原理 Cache 是位于CPU与主存之间的一个高速小容量的存储器。 Cache一般采用和CPU相同的半导体工艺制成,在物理位置 上尽量靠近CPU,而不在主存模块中,最好在处理器芯片内。 其速度与CPU的速度相匹配,即能够在一个最短的存储周期内完 成一次读/写,约比主存速度高数倍~数十倍以上。 Cache的管理全部用硬件实现。 Once the data is stored in the cache, future use can be made by accessing the cached copy rather than re-fetching the original data, so that the average access time is shorter. Small memories on or close to the CPU chip can be made faster than the much larger main memory. Most CPUs since the 1980s have used one or more caches. ② 相联映射(全相联) Fully Associative Mapping ③ 组相联映射 Set- associative Mapping 盛建伦jlsheng@qtech.edu.cn 14 (1)直接映射 Direct Mapping 主存的每一块只能映射到Cache的一个特定的行。 若Cache有m行,每行n字,主存有2S块, 则直接映射可表示为 Cache的行号i =主存的块号j(Modulo m) (二)平均访问时间 例如,主存的访问时间为100ns,Cache的访问时间为10ns, 命中率为90%。则Cache-主存层次的平均访问时间为 TA=H· TA1 +(1—H)· TA2 = H· TC +(1—H)· (TM+ TC) 20 ns = 0.9×10+(1—0.9)×110 ns = 使用Cache可明显改进计算机系统的平均访问时间。如果命 中率足够高,则大多数的访问时间都接近于快速的Cache存储器 的访问时间。 如果Cache的速度与处理机相当,容量足够大,配上以合适 的调度算法为基础的、全部硬化的地址映射变换部件,实现高的 命中率,则可能实现高主振频率的CPU的零等待(在访存时,不 插入TW)。 平均访问时间受命中率的影响很大。 盛建伦jlsheng@qtech.edu.cn 12 Cache设计 影响命中率的因素:Cache的容量,行的容量,地址映射 变换,替换算法,Cache的个数,地址流,等。 1.Cache的容量 (Cache Size) Cache的容量每增加一倍,不命中率减少30%。 Cache的容量 越大命中率越高。 为什么我们不把Cache的容量做的和主存容量一样大? 主存地址 地址总线 块号 已装不进 Cache 块内地址 Miss Hit 装入 Cache 主存- Cache 地址映射变换机构 Cache地址 Address Mapping 替换策略 块 号 块内地址 主存 直接通路 பைடு நூலகம்1行 Cache 1个字 To Processor 数据总线 主存-Cache地址映射变换机构将处理机发出的主存地址变换 成Cache地址,判定该字所在行是否在Cache中。 如果在Cache中,称为命中Hit,则访问Cache。 如果不在Cache中,称为不命中Miss(块失效),则访问主存。 同时,将包含该字的一行装入Cache。 If the processor finds that the memory location is in the cache, we say that a cache hit has occurred; otherwise, we speak of a cache miss. From Processor 计算机组成原理 Principles of Computer Organization 广义双语教学课程 青岛理工大学 校级精品课程 http://211.64.192.109/skyclass25/ http://jx.qtech.edu.cn/ec/C84/ 第 7 章 存储系统 Chapter 7 Storage System From Processor 主存地址 块号 已装不进 Cache 替换策略 块内地址 地址总线 若Cache已满,则按 照某种替换策略把该 行替换进Cache。 CPU访问Cache, 每次1个字。 Miss Hit 装入 Cache 1行 主存- Cache 地址映射变换机构 Cache地址 Address Mapping 盛建伦jlsheng@qtech.edu.cn 主存储器 2344 2345 2346 2347 2348 2349 234A 234B 08 BD AB CD 30 CD 9B 76 C3 BD 0B CD 1F CD 90 71 不命中 读主存 Cache已满, 替换1行 指令寄存器IR 10 原理上,Cache-主存层次有两种工作方式: 方式1. CPU对Cache和主存都有直接访问路径。 CPU Cache 2.行的容量( Block Size ) 一般每行1~16字。每行4~8个可寻址单元似乎接近最好。 盛建伦jlsheng@qtech.edu.cn 13 3.主存-Cache地址映射变换( Mapping Function ) Cache存储器的基本特点是快速的访存。因此,在Cache中寻 找字的时间必须极短。 把主存地址变换成Cache地址称为映射。实际使用的映射变 换有3种: ① 直接映射 Direct Mapping (2) A CPU cache is a cache used by the central processing unit of a computer to reduce the average time to access memory. The cache is a smaller, faster memory which stores copies of the data from the most frequently used main memory locations. As long as most memory accesses are cached memory locations, the average latency of memory accesses will be closer to the cache latency than to the latency of main memory. 盛建伦jlsheng@qtech.edu.cn 16 直接映射 Direct Mapping 例如: 主存容量16MB,按字节编址,Cache容量64KB,每行4个字节。 16M = 224,主存地址24位。 S- r = 8位 主存的行数 S = 22, r = 14位 w = 2位 Cache的行数 m = 16k行 = 214行, n = 4 , 主存地址(S+w位) 标志Tag Cache地址(r+w位) Cache的内容 Tag 8位 W0 8位 行地址Line 行地址Line