北大计算机系课件 cache
合集下载
cache存储器.ppt

主存地址长度=(s+w)位 寻址单元数=2s+w个字或字节 块大小=行大小=2w个字或字节 主存的块数=2s 每组的行数=k 每组的v=2d cache的行数=kv 标记大小=(s-d)位
3、替换策略
• cache工作原理要求它尽量保存最新数据,必然要产生替换。
• 对直接映射的cache来说,只要把此特定位置上的原主存块换 出cache即可。
e=1/(r+(1-r)h)=1/(5+(1-5)×0.95)=83.3%
ta=tc/e=50ns/0.833=60ns
2、主存与cache的地址映射
无论选择那种映射方式,都要把主存和cache 划分为同样大小的“块”。
选择哪种映射方式,要考虑: •硬件是否容易实现 •地址变换的速度是否快 •主存空间的利用率是否高 •主存装入一块时,发生冲突的概率 以下我们介绍三种映射方法:
h=Nc/(Nc+Nm)
(3.4)
若tc表示命中时的cache访问时间,tm表示未命中时的主存
访问时间,1-h表示未命中率,则cache/主存系统的平均访问时
间ta为: ta=htc+(1-h)tm
(3.5)
设r=tm/tc表示主存慢于cache的倍率,e表示访问效率,则有:
为提高访问效率,命中率h越接近1越好,r值以5—10为宜, 不宜太大。命中率h与程序的行为、cache的容量、组织方式、 块的大小有关。
2.Cache的设计依据:CPU这次访问过的数据,下次有很大的可 能也是访问附近的数据。
3.CPU与Cache之间的数据传送是以字为单位
4.主存与Cache之间的数据传送是以块为单位
5.CPU读主存时,便把地址同时送给Cache和主存,Cache控 制逻辑依据地址判断此字是否在Cache中,若在此字立即传送 给CPU ,否则,则用主存读周期把此字从主存读出送到CPU ,与此同时,把含有这个字的整个数据块从主存读出送到 cache中。
Cache基础知识介绍ppt课件

31 Address Tag Entry Offset 0
11
• 组相联映射方式下cache的内部结构。
Entry
Way 0 Way 1 Way 2
Address Tag 0 Address Tag 1 Address Tag 2
Data Data Data
Way n-1 Way n
Address Tag n-1 Address Tag n
14
+ 提高cache的性能也就是要降低主存的平均
存取时间 主存平均存取时间=命中时间+未命中率*未 命中惩罚
+ 提高cache的性能有以下三种方法:减少命
中时间,减少未命中率,减少未命中惩罚。
15
影响命中率的硬件因素主要有以下四点: + Cache的容量。 + Cache与主存储器交换信息的单位量(cache line size)。 + Cache的组织方式 + Cache的替换算法
+ Cache又叫高速缓冲存储器,位于CPU与内
存之间,是一种特殊的存储器子系统。 + 目前比较常见的是两极cache结构,即cache 系统由一级高速缓存L1 cache和二级高速缓 存L2 cache组成,L1 cache通常又分为数据 cache(I-Cache)和指令cache(D-Cache), 它们分别用来存放数据和执行这些数据的 指令。
9
10
+ 块:块是cache与主存的传输单位。 + 路(way): 路是组相联映射方式的cache结构中的 +
+ +
+
基本存储单位,每一路存储一个块的数据。 组(entry):组是组相联映射方式的cache对块进行 管理的单位。 区 (tag) :块的地址对应的主存储器中的区。 块内偏移地址(offset): 用来标示块内一个字节的 地址。 组相联映射方式下主存储器的地址空间由,区,组 和块内偏移地址组成。
11
• 组相联映射方式下cache的内部结构。
Entry
Way 0 Way 1 Way 2
Address Tag 0 Address Tag 1 Address Tag 2
Data Data Data
Way n-1 Way n
Address Tag n-1 Address Tag n
14
+ 提高cache的性能也就是要降低主存的平均
存取时间 主存平均存取时间=命中时间+未命中率*未 命中惩罚
+ 提高cache的性能有以下三种方法:减少命
中时间,减少未命中率,减少未命中惩罚。
15
影响命中率的硬件因素主要有以下四点: + Cache的容量。 + Cache与主存储器交换信息的单位量(cache line size)。 + Cache的组织方式 + Cache的替换算法
+ Cache又叫高速缓冲存储器,位于CPU与内
存之间,是一种特殊的存储器子系统。 + 目前比较常见的是两极cache结构,即cache 系统由一级高速缓存L1 cache和二级高速缓 存L2 cache组成,L1 cache通常又分为数据 cache(I-Cache)和指令cache(D-Cache), 它们分别用来存放数据和执行这些数据的 指令。
9
10
+ 块:块是cache与主存的传输单位。 + 路(way): 路是组相联映射方式的cache结构中的 +
+ +
+
基本存储单位,每一路存储一个块的数据。 组(entry):组是组相联映射方式的cache对块进行 管理的单位。 区 (tag) :块的地址对应的主存储器中的区。 块内偏移地址(offset): 用来标示块内一个字节的 地址。 组相联映射方式下主存储器的地址空间由,区,组 和块内偏移地址组成。
5-1 存储系统 Cache_v1.0

计算机系统结构
层次之间应满足的原则
一致性原则
处在不同层次存储器中的同一个信息应保持相同的值。
包含性原则
处在内层的信息一定被包含在其外层的存储器中,反 之则不成立, 即内层存储器中的全部信息,是其相邻 外层存储器中一部分信息的复制品
北京信息科技大学
计算机系统结构
“Cache主存”和“主存辅存”层次
主存块地址 tag index
北京信息科技大学
计算机系统结构
直接映像方式
直接映像方式:是指主存的一个字块只能映像 到Cache中确定的一个字块。 举例 直接映像方式特点:
主存的字块只可以和固定的Cache字块对应,方式 直接,利用率低。 标志位较短,比较电路的成本低。如果主存空间有 2m块,Cache中字块有2c块,则标志位只要有m-c 位。而且在访问Cache时候仅需要比较一次 空间利用率最低,冲突概率最高,实现最简单。
计算机系统结构
现代计算机的层次存储器系统
利用程序的局部性原理:
以最低廉的价格提供尽可能大的存储空间 以最快速的技术实现高速存储访问
Processor Control Second Level Cache (SRAM) Main Memory (DRAM) Secondary Storage (Disk)
北京信息科技大学
计算机系统结构
Cache基本知识
高速缓冲存储器:在相对容量较大而速度较慢的主存与 高速处理器之间设置的少量但快速的存储器 基本工作原理:
把Cache和主存分成若干大小相同的块( block,行、线 line,槽slot ),Cache由块目录表及快速存储器组成 对主存地址,根据映象规则生成标签和索引;根据标签和 索引查找具体的Cache块 无(失效/缺失miss)则到主存取一个块的数据(遇到 Cache没有,空间则需要替换),并给处理器需要的部分 有(命中hit)则从Cache读取数据;如果是写入操作,需 考虑与主存数据保持一致(写入策略)
CaChe

cpu在执行程序所用的指令和读数据都是针对内存的,也就是从内存中取得的。由于内存读写速度慢,为了提高cpu和内存之间数据交换的速度,在cpu和内存之间增加了cache,它的速度比内存快,但是造价高,又由于在cpu内不能集成太多集成电路,所以一般cache比较小,以后intel等公司为了进一步提高速度,又增加了二级cache,甚至三级cache,它是根据程序的局部性原理而设计的,就是cpu执行的指令和访问的数据往往在集中的某一块,所以把这块内容放入cache后,cpu就不用在访问内存了,这就提高了访问速度。当然若cache中没有cpu所需要的内容,还是要访问内存的。
基本简介
Cache的出现是基于两种因素:首先,是由于CPU的速度和性能提高很快而主存速度较低且价格高,第二就是程序执行的局部性特点。因此,才将速度比较快而容量有限的SRAM构成Cache,目的在于尽可能发挥CPU的高速度。很显然,要尽可能发挥CPU的高速度就必须CACHE用硬件实现其全部功能。
修改/etc/sysctl.conf中的vm.swappiness右边的数字可以在下次开机时调节swap使用策略。该数字范围是0~100,数字越大越倾向于使用swap。默认为60,可以改一下试试。--两者都是RAM中的数据。
简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。
Cache中的内容随命中率的降低需要经常替换新的内容。替换算法有多种,例如,先入后出(FILO)算法、随机替换(RAND)算法、先入先出(FIFO)算法、近期最少使用(LRU)算法等。这些替换算法各有优缺点,就以命中率而言,近期最少使用(LRU)算法的命中率最高。
浏览器缓存
缓存用于存储一些临时的文件。在浏览网页的过程中,网页会自动存储在用户的硬盘上。下次再浏览相同的网站的时候,系统会自动从硬盘中调出该网页,既节省了时间也减少了网络的交换。用户可以自行设定缓存方便其上网的需要。电脑中还存在高速缓冲存储器和硬盘缓存。缓存的种类:本地服务器缓存、网页缓存、硬盘缓存、一级高速缓存、二级高速缓存。
基本简介
Cache的出现是基于两种因素:首先,是由于CPU的速度和性能提高很快而主存速度较低且价格高,第二就是程序执行的局部性特点。因此,才将速度比较快而容量有限的SRAM构成Cache,目的在于尽可能发挥CPU的高速度。很显然,要尽可能发挥CPU的高速度就必须CACHE用硬件实现其全部功能。
修改/etc/sysctl.conf中的vm.swappiness右边的数字可以在下次开机时调节swap使用策略。该数字范围是0~100,数字越大越倾向于使用swap。默认为60,可以改一下试试。--两者都是RAM中的数据。
简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。
Cache中的内容随命中率的降低需要经常替换新的内容。替换算法有多种,例如,先入后出(FILO)算法、随机替换(RAND)算法、先入先出(FIFO)算法、近期最少使用(LRU)算法等。这些替换算法各有优缺点,就以命中率而言,近期最少使用(LRU)算法的命中率最高。
浏览器缓存
缓存用于存储一些临时的文件。在浏览网页的过程中,网页会自动存储在用户的硬盘上。下次再浏览相同的网站的时候,系统会自动从硬盘中调出该网页,既节省了时间也减少了网络的交换。用户可以自行设定缓存方便其上网的需要。电脑中还存在高速缓冲存储器和硬盘缓存。缓存的种类:本地服务器缓存、网页缓存、硬盘缓存、一级高速缓存、二级高速缓存。
cache结构与操作.ppt

e tc
tc
11
ta htc (1 h)tm h (1 h)r r (1 r)h
(4-4)
其中,r=tm/tc,表示访问主存慢于访问 Cache的倍率。r的取值一般是5-10 。
例【4-1】设CPU执行一般程序时,访问 Cache次数Nc=1500,访问主存次数Nm=90,又假 设访问Cache存取周期为50ns,访问主存存取周期 为300ns,试求h、r、ta以及e的值
存储器系统的层次关 系
2、Cache命中率
从微机系统来看,增加Cache的目 的,就是要在性能上使主存的平均访问 时间尽可能接近Cache的访问时间,即 保证在大多数情况下,CPU访问Cache, 而不是访问主存。
在 某 一 程 序 执 行 期 间 , 设 Nc 表 示 CPU 访 问 Cache 的 总 次 数 , Nm 表 示 CPU 访 问 主 存 的 总 次数,h为命中率,则
·优点:灵活,不易产生冲突; 缺点:比较电路难于实现,且效率低,速度慢
• 例:设访问存储器地址的块号序列为22、26、 22、26、16、4、16、18,采用全相联映射方 式时,Cache行分配情况
2.直接映射方式
某一主存块只能能映射到Cache的特定行
i = j mod m 其中: i:Cache的行号; j:主存的块号; m:Cache的总行数
解:
h Nc 1500 0.943
N cNm 1500 90
r tm 300 ns 6 tc 50ns
ta=htc+(1-h)tm=0.943×50ns+(1-0.943)×300ns=64.25ns
e tc 50ns 77.82% ta 64.25ns
4.6.2 Cache组织方式
13第十三讲CACHE

4
一 Cache存储器概述
功能:解决CPU和主存间速度不匹配问题 采用高速SRAM构成 速度差别很大时采用两级或多级Cache系统 早期的一级Cache在CPU内,二级在主板上 现在的CPU内带L1 Cache和L2 Cache 全由硬件调度,对用户透明
程序访问的局部性原理
34
4、虚存机制要解决的关键问题
——在操作系统的控制下,由硬件和系统软件负责解决 (1)调度问题:决定哪些程序和数据应被调入主存 (2)地址映射问题: 内地址变换——访问主存时把虚地址变为主存物理地址 外地址变换——访问辅存时把虚地址变成辅存的物理地 址 还要解决主存分配、存储保护与程序再定位等问题 (3)替换问题:决定哪些程序和数据应被调出主存 (4)更新问题:确保主存与辅存的一致性
21
替换策略
最不经常使用(LFU)算法 LFU算法将一段时间内被访问次数最少的那行 数据换出。每行设置一个计数器。从0开始计数,
每访问一次, 被访行的计数器增1。当需要替换
时,将计数值最小的行换出,同时将这些行的计 数器都清零。
这种算法将计数周期限定在对这些特定行两次替
换之间的间隔时间内,不能严格反映近期访问情
写一次法
基于写回法并结合全写法的写策略,写命中 与写未命中的处理方法与写回法基本相同, 只是第一次写命中时要同时写入主存。这 便于维护系统全部cache的一致性。奔腾机
27
cache命中率
命中率h: cache完成存取的总次数与CPU
访问的总次数之比。 设Nc表示cache完成存取的总次数,Nm表 示主存完成存取的总次数,h= Nc/(Nc+ Nm)
计算机物理内存的访问地址称为实地址或物理地址,其对应的 存储空间称为物理存储空间或主存空间
Cache-简介PPT课件

还有和写回法类似的写一次法:基本策略和写 回法相同,不过在第一次命中的时候同时更新 Cache和下级的内容。
.
37
4) 写缺失策略
Write allocate(写分配):在发生写缺 失的时候,在直接写下级Cache/主存的 同时,还将该缺失数据写入本级Cache, 此策略一般和Write Back一起使用
缺点是不够灵活。因为主存的2t个组(t 为CACHE标记的位数)只能对应于唯一的 Cache存储器行,即使Cache中有许多地 址空着也不能占用,因而使Cache存储空 间得不到充分利用。
.
21
(3)组相联映像方式
它是直接映像与全相联映像的折衷方案.它将 把Cache存储器分为若干个组,每组包含若干 个行.组间采用直接映像,而组内的则采用全 相联映像。主存的某一块可以映像到CACHE指 定组内的任意行中。
字的位数=b =LOG2(每块的字数. )=LOG2(K)
8
.
9
.
10
.
11
(2)直接映像方式
主存中的每一块只能映像到CACHE中的一 个固定行的位置。
直接映像函数可定义为: i= j mod m
其中,i是Cache的行号,j是主存的 块号,m为CACHE的行数。
.
12
主存的组数= (主存的块数/CACHE的行 数)=256/8=32组
.
48
5) cache lock & unlock
lock: 由于cache size < mem(L3) size,因此总会有不 够用替换的时候,但是某些应用场景下,我们不希望 某些读入cache的line被替换掉,引入了lock命令(通常 是tag的1 bit)
被lock的行不会在执行替换的时候被别人替换掉。 unlock: 清除lock 位 lock_en (在 lock_en=1---lock_en=0期间读入的
.
37
4) 写缺失策略
Write allocate(写分配):在发生写缺 失的时候,在直接写下级Cache/主存的 同时,还将该缺失数据写入本级Cache, 此策略一般和Write Back一起使用
缺点是不够灵活。因为主存的2t个组(t 为CACHE标记的位数)只能对应于唯一的 Cache存储器行,即使Cache中有许多地 址空着也不能占用,因而使Cache存储空 间得不到充分利用。
.
21
(3)组相联映像方式
它是直接映像与全相联映像的折衷方案.它将 把Cache存储器分为若干个组,每组包含若干 个行.组间采用直接映像,而组内的则采用全 相联映像。主存的某一块可以映像到CACHE指 定组内的任意行中。
字的位数=b =LOG2(每块的字数. )=LOG2(K)
8
.
9
.
10
.
11
(2)直接映像方式
主存中的每一块只能映像到CACHE中的一 个固定行的位置。
直接映像函数可定义为: i= j mod m
其中,i是Cache的行号,j是主存的 块号,m为CACHE的行数。
.
12
主存的组数= (主存的块数/CACHE的行 数)=256/8=32组
.
48
5) cache lock & unlock
lock: 由于cache size < mem(L3) size,因此总会有不 够用替换的时候,但是某些应用场景下,我们不希望 某些读入cache的line被替换掉,引入了lock命令(通常 是tag的1 bit)
被lock的行不会在执行替换的时候被别人替换掉。 unlock: 清除lock 位 lock_en (在 lock_en=1---lock_en=0期间读入的
第十讲(cache存储器)要点课件

详细描述
当缓存满了,需要替换数据块时,LFU算法会选择最不经常使用的数据块进行替换。这种算法能够提 高缓存命中率,但实现起来较为复杂,需要记录每个数据块的访问频率。
04
Cache存储器的性能分析
Cache存储器的命中率
01
02
03
命中率
衡量Cache存储器效率的 重要指标,指程序访问 Cache成功命中的次数与 总访问次数的比值。
影响因素
Cache容量、块大小、程 序特性、替换策略等。
优化策略
根据程序特性调整Cache 容量和块大小,采用合适 的替换策略,以提高命中 率。
Cache存储器的效率
效率
指Cache存储器完成一次 访问所需的时间与直接访 问存储器所需时间的比值 。
影响因素
Cache访问速度、块大小 、Cache层次结构等。
第十讲(cache存储器)要点 课件
contents
目录
• Cache存储器概述 • Cache存储器与主存的映射方式 • Cache存储器的替换算法 • Cache存储器的性能分析 • Cache存储器的优化策略
01
Cache存储器概述
Cache存储器的定义
01
Cache存储器是一种高速缓冲存 储器,用于暂时存储CPU经常访 问的指令和数据,以便快速访问 和提高系统性能。
组相联映射
总结词
一种折中的映射方式,将主存中的块分组,每组内的 块映射到Cache的固定块位置。
详细描述
组相联映射方式中,将主存中的块分成若干组,每组 内的块具有固定的对应关系。Cache被划分为与主存 组数相同的组,每个组中的块可以存储主存中对应组 内的任意一块数据。当访问主存时,首先确定访问的 块属于哪个组,然后在Cache中查找该组对应的块, 如果有则将数据读入Cache块中,否则需要将数据从 主存中读取并替换掉Cache中的某块数据。这种方式 的优点是查找时间较短且具有一定的灵活性,缺点是 仍然存在Cache浪费的问题。
当缓存满了,需要替换数据块时,LFU算法会选择最不经常使用的数据块进行替换。这种算法能够提 高缓存命中率,但实现起来较为复杂,需要记录每个数据块的访问频率。
04
Cache存储器的性能分析
Cache存储器的命中率
01
02
03
命中率
衡量Cache存储器效率的 重要指标,指程序访问 Cache成功命中的次数与 总访问次数的比值。
影响因素
Cache容量、块大小、程 序特性、替换策略等。
优化策略
根据程序特性调整Cache 容量和块大小,采用合适 的替换策略,以提高命中 率。
Cache存储器的效率
效率
指Cache存储器完成一次 访问所需的时间与直接访 问存储器所需时间的比值 。
影响因素
Cache访问速度、块大小 、Cache层次结构等。
第十讲(cache存储器)要点 课件
contents
目录
• Cache存储器概述 • Cache存储器与主存的映射方式 • Cache存储器的替换算法 • Cache存储器的性能分析 • Cache存储器的优化策略
01
Cache存储器概述
Cache存储器的定义
01
Cache存储器是一种高速缓冲存 储器,用于暂时存储CPU经常访 问的指令和数据,以便快速访问 和提高系统性能。
组相联映射
总结词
一种折中的映射方式,将主存中的块分组,每组内的 块映射到Cache的固定块位置。
详细描述
组相联映射方式中,将主存中的块分成若干组,每组 内的块具有固定的对应关系。Cache被划分为与主存 组数相同的组,每个组中的块可以存储主存中对应组 内的任意一块数据。当访问主存时,首先确定访问的 块属于哪个组,然后在Cache中查找该组对应的块, 如果有则将数据读入Cache块中,否则需要将数据从 主存中读取并替换掉Cache中的某块数据。这种方式 的优点是查找时间较短且具有一定的灵活性,缺点是 仍然存在Cache浪费的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
M [00001] M [01010]
°人生名言: • 失败是成功之母: 义务失效(Compulsory Misses) - (冷启失效)
北京大学微处理器研究开发中心
Cache数据块的定义
°Cache块: 相同的cache标志所指明的cache数据 °进一步分析前面介绍的示例: • 4字节直接映射cache: 块大小 = 1 Byte • 可以利用时间局部性: 如果正在访问某一字节,那么在最近的 将来还可能再次访问这一字节。 • 不能利用空间局部性:如果正在访问某一字节,那么在最近 的将来还可能访问这一字节邻近的字节。 °为了利用空间局部性:增加数据块的大小
(失效)
失效处理: 装载数据
访问 000 01
(命中)
000 010
M [00001] M [01010]
写 Tag & Set V
访问 010 10
(失效)
000
M [00001]
访问 010 10
(命中)
000 010
M [00001] M [01010]
装载数据 写Tag & Set V
000 010 北京大学计算机科学技术系
Cache标签 示例: 0x50 作为Cache状态 的一部分存储
有效位 Cache 标签
4
0
Cache 索引 示例: 0x01
字节选择 示例: 0x00
0x50 :
北京大学计算机科学技术系
Byte 63
: :
Cache 数据 Byte 31
Byte 1
Byte 0
0 2 3
Byte 33 Byte 32 1
N
Cache 索引 假设为 0x03
2N 字节的直接映射cache
字节 0 字节 1 字节 2 0 1 2 3
0
有效位 Valid Bit
0x50
字节 3
:
北京大学计算机科学技术系
:
:
字节 2N -1 2 N- 1 北京大学微处理器研究开发中心
Cache访问示例
开始:Cache空
V 标签 数据
访问 000 01
:
:
北京大学微处理器研究开发中心
:
Byte 1023
Byte 992
31
块大小的权衡
°平均访问时间 等于: • 命中时间 x (1 -失效率) + 失效损失 x 失效率 °一般而言,数据块较大有利于利用空间局部性的优势,但是: • 较大的数据块较大的失效损失: - 需要较长的时间来填充数据块 • 如果数据块的大小相对于cache大小而言太大了,那么失效 率也将增加
有效位 Cache 标签 Cache 数据
Cache 块 0
Cache 索引 Cache 数据
Cache 块 0
Cache 标签
有效位
:
地址标签
:
:
:
:
:
比较
Sel1 1
Mux
0 Sel0
比较
或 Hit 北京大学计算机科学技术系 Cache 块 北京大学微处理器研究开发中心
组相联Cache缺点
°N路组相联Cache 与 直接映射Cache: • N个比较器 与 1个比较器 • 在输出数据时,增加了额外的多路选择延迟 • 在判断命中/失效时候,才可以得到数据 °在直接映射Cache中, Cache块在命中/失效之前就可以得到: • 可以先假设命中并继续执行,如果以后发现失效再恢复。
北京大学微处理器研究开发中心
Cache标签(Tag)和Cache索引(Index)
°假设存储器字节地址为 32位: • 2N 字节的直接映射cache:
31
- Cache索引:存储器地址的较低 N位 - Cache标签: 存储器地址的较高 (32 - N)位
Cache 标签 假设为0x50
作为cache状态的 一部分保存起来
Cache 标签 X X X
X
X
北京大学计算机科学技术系
:
:
: :
:
北京大学微处理器研究开发中心
°全相联Cache -- 将组相联的思想推广到极限! • 完全不要Cache索引 • 并行地比较所有的 Cache标签 • 示例:块大小 = 32 字节, 需要N个 27位的比较器 °根据定义: 对于全相联cache,冲突失效 = 0
31 Cache标签 (27位长) 4 0 字节选择 示例: 0x01 有效位 Cache 数据 字节 31 字节 1 字节 0 字节 63 字节 33 字节 32
页(Pages)
磁盘 文件(Files) 磁带
磁带
无限 秒 ~分 10-6
较大 较低级别
北京大学计算机科学技术系
北京大学微处理器研究开发中心
局部性原理
访问的可能性
°局部性原理: • 程序在一定的时间段内通常只会访问地址空间较小的部分。 • 例如:10%的代码将耗费90%的程序执行时间。
°两种不同类型的局部性: • 时间局部性(Temporal Locality):如果一个信息项正在 被访问,那么在近期她很可能还会被再次访问。 • 空间局部性(Spatial Locality):在最近的将来将用到的信 息很可能与现在正在使用的信息在空间地址上是临近的。
北京大学计算机科学技术系 北京大学微处理器研究开发中心
两路组相联Cache
°N路组相联: 对每个Cache索引有N个数据块(entries) • N个直接映射cache并行工作 °示例:两路组相联cache • Cache索引来选择cache中的某一组 • 该组种的两个标签进行并行比较 • 根据标签比较的结果来选择数据
°Cache失效时的替换机制 • 随机替换,LRU,FIFO
°写策略 • 写命中时:写回(Write Back)vs. 写穿透(Write Through) • 写失效时:写分配(Write Allocate)vs. 写不分配 (Write Non-allocate)
北京大学计算机科学技术系 北京大学微处理器研究开发中心
存储层次的级别
分段传 输单位
寄存器堆 指令操作数
较高级别 较快
程序/编译器 1-8 字节 Cache控制 8-128字节 操作系统 512-4K字节 用户/操作员 Mbytes
Cache
块(Blocks) 存储器
主存
M Bytes 100ns-1us $0.01~0.001
磁盘
G Bytes 毫秒 10-3~10-4美分
X块
来自处理器
北京大学计算机科学技术系
Y块
北京大学微处理器研究开发中心
基本参数: 典型数值
典型数值
块 (行)大小
命中时间 失效损失 (访问时间) (传输时间)
4 - 128字节
1 – 4处理器时钟周期 8 - 32周期 (6-10周期) (2 - 22周期)
失效率
Cache容量
1% - 20%
1 KB - 256 KB
失效损失
失效率 开发空间局部性
数据块较少: 弥补了时间局部性
平均访问时间
增加了失效损失和 失效率
块大小
北京大学计算机科学技术系
块大小
块大小
北京大学微处理器研究开发中心
另一个极端的示例
有效位 Cache 标签 Cache 数据 Byte 3 Byte 2 Byte 1 Byte 0 0
°Cache大小 = 4 bytes 块大小 = 4 bytes • cache中只能有唯一一个数据块 °真: 如果正在访问一个信息项,那么很可能在最近的将来还将访问该信息项 • 但是,通常却不会立即再次使用该信息项!!! • 那么,再次访问该信息项时,仍然很可能会失效 - 继续向cache中装入数据,但是在它们被再次使用之前会被强行排出 cache - cache设计人员最害怕出现的事情: 乒乓现象 °冲突失效(Conflict Misses)是下述原因导致的失效: • 不同的存储位置映射到同一cache索引 - 解决方案 1: 增大cache容量 - 解决方案 2: 对同一Cache索引可以有多个信息项
北京大学计算机科学技术系
北京大学微处理器研究开发中心
Cache如何工作?
°时间局部性(Temporal Locality):如果一个信息项正在被访 问,那么在近期她很可能还会被再次访问。 • 将最近被访问的信息项放在离处理器较近的地方 °空间局部性(Spatial Locality):在最近的将来将用到的信息 很可能与现在正在使用的信息在空间地址上是临近的。 • 将包括临近存储字的数据块一起移动到较高层存储中
有效位 Cache标签 直接映射Cache 数据
字节 0
字节1
字节 2 字节 3 北京大学计算机科学技术系 北京大学微处理器研究开发中心
示例: 32B数据块的1KB直接映射Cache
°对于 2 N 字节cache: • 最高的 (32 - N)位总是Cache标签
• 最低的 M位是字节选择 (块大小 = 2M) 31 9
°总结
北京大学计算机科学技术系
北京大学微处理器研究开发中心
存储系统的扩展图示
处理器
控制
Memory
Memory
Memory
Memory
数据通路
速度: 最快 容量: 最小 每位成本: 最高
北京大学计算机科学技术系
Memory
最慢 最大 最低
北京大学微处理器研究开发中心
容量 访问时间 成本
CPU寄存器 100s Bytes <10s ns Cache K Bytes 10~100 ns $0.01~0.001/bit
最简单的Cache: 直接映射Cache