1.05k likes | 1.29k Views
版权所有,引用请注明出处. 第四章、存储系统 -2. 原著 谭志虎. 主讲 ( 改编 ) 蒋文斌. Outline. 存储器概述 主存储器 高速缓冲存储器 外存储器 虚拟存储器 存储保护. 4.3 高速缓冲存储器. Cache 基本原理 相联存储器 主存与 Cache 的地址映射 替换策略与写操作策略 Cache 实际应用. 程序局部性. 程序局部性的实质是程序在某段时间内仅需要访问内存很小一部分空间。. cache 基本思想. 在处理器附近增加一个小容量快速存储器 (cache) Cache 中存放内存中经常被访问的数据
E N D
版权所有,引用请注明出处 第四章、存储系统-2 原著 谭志虎 主讲(改编) 蒋文斌
Outline • 存储器概述 • 主存储器 • 高速缓冲存储器 • 外存储器 • 虚拟存储器 • 存储保护
4.3高速缓冲存储器 • Cache基本原理 • 相联存储器 • 主存与Cache的地址映射 • 替换策略与写操作策略 • Cache实际应用
程序局部性 • 程序局部性的实质是程序在某段时间内仅需要访问内存很小一部分空间。
cache基本思想 • 在处理器附近增加一个小容量快速存储器(cache) • Cache中存放内存中经常被访问的数据 • 当程序访问内存时,我们希望被访问数据存放在cache中 • 如何使得经常访问的数据存放在Cache中,Cache调度算法
Key Problems • 如何判断一个数据在cache中 • 数据查找 Data Identification • 如需访问的数据在cache中,存放在什么地方 • 地址映射 Address Mapping • Cache满了以后如何处理 • 替换策略 Placement Policy • 如何保证cache与memory的一致性 • 写入策略 Write Policy
Cache命中率 • Nc表示Cache完成存取访问的总次数 • Nm表示主存完成存取访问的总次数 • Cache命中率h h=Nc /(Nc+Nm) • tc表示命中Cache时的访问时间 • tm表示命中主存时的访问时间 • ta平均访问时间 ta=htc +(1-h)tm
Cache命中率 ta=htc +(1-h)tm • 影响命中率的几个因素 • 程序行为(局部性) • cache容量 • 组织方式 • 块大小有关
4.3高速缓冲存储器 • Cache基本原理 • 相联存储器 • 主存与Cache的地址映射 • 替换策略与写操作策略 • Cache实际应用
Key Problems • 如何判断一个数据在cache中 • 数据查找 Data Identification • 如需访问的数据在cache中,存放在什么地方 • 地址映射 Address Mapping • Cache满了以后如何处理 • 替换策略 Placement Policy • 如何保证cache与memory的一致性 • 写入策略 Write Policy
相联存储器 associative memory • (Key,DATA) • 按内容进行访问的存储器 将所存内容的一部分作为检索项(关键字)去检索存储器,并将存储器中与检索项符合的存储单元内容进行读出或写入,简单的说,可以用存储内容作为地址访问的存储器称为相联存储器
相联存储器——框图 … 检索寄存器 … 屏蔽寄存器 … 比较线路 1 译码选择电路 存储体 符合寄存器 2 3 … m … 代码寄存器
相联存储器的应用 • 虚拟存储器中存放段表、页表 • 高速缓冲存储器中用于存放块表 • cache的块地址,主存块地址对应表
cache基本组织方式 • cache由速度较快的SRAM构成 • cache与主存之间以数据块为单位交换数据 • cache分为若干数据块,块大小固定 • 每个数据块包括若干字节 • 相联存储器存放已调入cache的数据块地址 • 故相联存储器的字数与cache块数相等 • cpu给出的地址如与相联存储器中某个单元相同,表示数据命中,否则缺失
未命中 命中 主存 CPU cache结构原理图 管理逻辑 地址总线 相联存储器 快存 Cache 数据总线
cache系统读过程 • CPU给出内存地址 • 利用该地址为关键字查找相联存储器 • 如命中表明数据在cache中,访问cache读出数据 • 否则表示数据缺失直接访问主存 • 同时将数据调入cache • 更新相联存储器,记录当前数据块地址 • 便于下次访问
cache系统写过程 • CPU给出内存地址 • 利用该地址为关键字查找相联存储器 • 如命中表明数据在cache中,将数据写入cache • 如未命中将数据写入cache,如cache已满,需要淘汰相关数据出cache • 最后根据不同写操作策略决定是否写入主存
Key Problems • 如何判断一个数据在cache中 • 数据查找 Data Identification • 如需访问的数据在cache中,存放在什么地方 • 地址映射 Address Mapping • Cache满了以后如何处理 • 替换策略 Placement Policy • 如何保证cache与memory的一致性 • 写入策略 Write Policy
块地址与块内地址 相联存储器包含多少个存储单元? … A14 A13 A3 A2 A1 A0 A5 A4 块地址 块内地址 主存 11位 4位 … A11 A10 A5 A4 A3 A2 A1 A0 块地址 块内地址 Cache 8位 4位
4.3高速缓冲存储器 • Cache基本原理 • 相联存储器 • 主存与Cache的地址映射 • 替换策略与写操作策略 • Cache实际应用
主存与cache的地址映射 主存 第0块 第0块 第1块 … Cache 第n-1块 L0 L1 … … Ln-1 … … 如何进行地址映射??? … … … 第m-1块
主存与cache地址映射关系 • 利用某种方法或者规则将主存块定位到cache,称为地址映射 直接相联 (direct mapped) 全相联 (fully-associated) 组相联 (set-associated)
… 第n-1块 Tag0 第n块 Tag1 第n+1块 … … Tagn-1 第2n-1块 第2n块 … … 第3n-1块 Cache直接相联映射 主存 第0块 第0块 第1块 第0区 Cache 第1区 第2区 i=j mod n … 主存分割成若干个 与cache大小相同的区 Cache块号i, 共n块,主存块号j … 第mn块 第mn+1块 第m区 第mn+2块 第(m+1)n-1块
… 第n-1块 Tag0 第n块 Tag1 第n+1块 … … Tagn-1 第2n-1块 第2n块 … … 第3n-1块 主存 第0块 第0块 第1块 第0区 Cache 第1区 第2区 … … … 第mn块 第mn+1块 第m区 第mn+2块 第(m+1)n-1块 A14 A14 A12 A11 A10 A5 A4 A3 A2 A1 A0 区地址 块地址 块内地址 3位 8位 4位
区号 块号 字地址 … 第n-1块 Tag0 第n块 第n+1块 … 第2n-1块 第2n块 … … 第3n-1块 Cache直接相联映射 主存 第0块 第0块 第1块 第0区 Cache Tag1 第1区 … Tagn-1 比较器 命中 & 第2区 未命中 … … … & 第mn块 第mn+1块 第m区 第mn+2块 主存分割成若干个与cache大小相同的区 第(m+1)n-1块
应用场合 • 块映射速度快,一对一映射,无须查表 • cache容易冲突,cache利用率低 • 命中率低 • 相应的淘汰算法简单
Cache全相联映射 主存 第0块 第0块 第1块 … Cache 第n-1块 L0 L1 … … Ln-1 … … 主存中任何一块均可定位于 Cache中的任意一块, 可提高命中率,但是硬件开销增加 … … …
块号 字地址 Cache全相联映射 主存 第0块 第0块 第1块 … 块表 Cache 第n-1块 L0 L1 … … Ln-1 比较器 命中 … 未命中 … & … … & …
CPU 主存块号 块内地址 Cache地址 … 相联存储器 主存块号 Cache块号 cache全相联映射地址变换 主存地址 主存 未命中 块号 块内地址 比较 命中 块表 快存
应用场合 • 可灵活的进行块的映射,一对多映射 • cache全部装满后才会出现块冲突 • 块冲突的概率低,cache利用率高 • 命中率高 • 相应的淘汰算法复杂
第0块 第1块 … 第n块 L0 第n+1块 L1 … 2n 第2n+1块 … … 第(m+1)n-1块 Cache组相联映射 主存 第0块 第0组 Cache 第0区 第1组 组0 第2组 组1 第1区 第3组 q=j mod u … … 第m区 Cache分u组,每组n块 主存块组号j,块号k,j=k/n主存对应cache组号q, 主存分割成若干个与cache大小相同的区,Cache再分割成若干组
组地址直接映射(快速定位相联存储器) • 块地址全相联映射(提高cache命中率)
应用场合 • 容量小的cache可采用全相联映射方式或者组相联映射方式 • Pentium CPU L1 L2 cache • 容量大的可采用直接映射方式。这种方式查找速度快,但命中率相对前者低,但cache容量大可提高命中率 • 块设备缓存
0 16 16 1 26 26 26 26 26 2 3 4 5 22 22 22 22 22 22 22 6 7 Cache直接相联映射载入过程 t 22 26 22 26 16 4 16 18 16 16 18 26 4 22 命中 命中 载入 载入 命中 替换 载入 载入
0 22 22 22 22 22 22 16 26 26 26 26 26 26 1 16 16 16 2 4 4 3 4 5 6 7 Cache全相联映射载入过程 t 22 26 22 26 16 4 16 18 22 26 16 4 18 命中 命中 载入 载入 命中 载入 载入 载入
0 26 26 26 26 26 26 16 16 16 1 2 3 22 22 22 22 22 22 22 4 4 4 5 6 7 Cache组相联映射载入过程 t 22 26 22 26 16 4 16 18 26 16 18 22 4 命中 命中 载入 载入 命中 载入 载入 载入
4.3高速缓冲存储器 • Cache基本原理 • 相联存储器 • 主存与Cache的地址映射 • 替换策略与写操作策略 • Cache实际应用
替换策略与写操作策略 • 替换策略: • 先进先出法 • 最近最不经常使用方法---LFU • 近期最少使用法--- LRU • 随机替换法
22 22 22 22 22 16 16 0 11 11 11 11 11 4 1 19 19 19 19 2 7 7 7 3 Cache先进先出替换策略(FIFO) t 22 11 22 19 7 16 4 3 22 16 22 11 4 3 19 7 命中 载入 载入 替换 替换 替换 载入 载入
22 22 221 221 221 22 222 222 0 11 111 11 11 111 111 111 1 19 19 19 19 4 2 16 16 16 3 Cache最不经常使用算法(LFU) t 22 22 11 22 19 11 16 4 3 222 221 220 111 11 19 4 16 3 命中 命中 命中 载入 替换 替换 载入 载入 载入
221 22 221 222 223 22 41 0 112 11 111 113 161 162 1 193 191 192 19 2 71 72 73 3 Cache近期最久未使用算法(LRU) t 22 11 22 19 7 16 4 3 220 220 40 160 110 30 190 70 命中 载入 载入 替换 替换 替换 载入 载入
块=126 字地址=1 Cache全相联映射写命中 主存 输入输出寄存器 输入输出寄存器 第0块 第0块 第1块 2 Cache 3 126 4 3 5 9 6 5 7 比较器 8 9 命中 … … … 全写法 (write through) 写回法(write back) 126 126
全写法 写回法 写一次法
块=126 字地址=1 Cache全相联映射写失效 主存 输入输出寄存器 第0块 第0块 第1块 2 Cache 3 1 4 3 5 9 6 5 7 比较器 8 9 未命中 … … … 126 126 WTWA WTNWA
Cache对存储系统性能的影响 • 对读操作的影响 • 利用时间局部性,将刚刚访问的数据调度到cache中,提高命中率, • 利用空间局部性,采取预读的方式,将相邻的数据调度到cache中,提高命中率 • 对写操作的影响 • 采取写回的方式提高写速度
4.3高速缓冲存储器 • Cache基本原理 • 相联存储器 • 主存与Cache的地址映射 • 替换策略与写操作策略 • Cache实际应用
cache实际应用 • 块设备缓存 • 硬盘缓存 • web cache
4.4 外存储器 • 磁表面存储器原理 • 硬盘存储器 • 磁带存储器 • 光盘存储器