高速缓冲存储器Cache的工作原理

 

Cache的工作原理 
1.Cache的引入 
请注意下面两种情况: 
①大容量主存一般采用DRAM,相对SRAM速度慢,而SRAM速度快,但价格高。 
②程序和数据具有局部性,即在一个较短的时间内,程序或数据往往集中在很小的存储器地址范围内。 
因此,在主存和
CPU之间可设置一个速度很快而容量相对较小的存储器,如图3.35所示。在其中存放CPU当前正在使用以及一个较短的时间内将要使用的程序和数据,这样,可大大加快CPU访问存储器的速度,提高机器的运行效率。




2.Cache的基本原理 
Cache与主存都分成块(常常将Cache块说成Cache行),每块由多个字节组成,大小相等。在一个时间段内,Cache的某块中放着主存某块的全部信息,即Cache的某一块是主存某块的副本(或叫映像),如图3.36所示。



Cache除数据部分外,还应记录放在某块中的信息是主存中哪一块的副本。因此,还应有第二个组成部分,即标记(tag)——记录主存块的块地址信息。 
采用Cache后,进行访问存储器操作时,不是先访问主存,而是先访问Cache。所以存在访问Cache时对主存地址的理解问题(指物理地址)。由于Cache数据块和主存块大小相同,因此主存地址的低地址部分(块内地址)可作为Cache数据块的块内地址。 
对主存地址的高地址部分(主存块号)的理解与主存块和Cache块之间的映像关系 
内容来自www.serverjia.cn电脑硬件知识网 
(mapping)有关。这里考虑一种最简单的情况——直接映像,例如(见图3.37),将主存空间分成4 096块,块编号应是地址码的高12位,写成十六进制为000H~FFFH。按同样大小,将Cache分成16块,块编号为OH~FH。映像关系约定见表3.7。这就是说块编号十六进制的第三位相同的主存块(共256块)只能和该位数码所指定的Cache块建立映像关系。根据这种约定,某一主存块和Cache建立起映像关系时,该Cache块的标记部分只需记住主存块的高2位十六进制数。例如,第010H号主存块当前和Cache第0块建立起映像关系,则Cache第0块的标记部分只需记住01H。由此可见,当用主存地址访问Cache时,主存的块号可分解成Cache标记和Cache块号两部分。因此,主存地址被理解成图3.38所示的形式。





下面结合该映像关系的例子和图3.39来说明Cache的工作原理。设当前010号主存块在Cache中,即它和Cache的第0块建立起映像关系。现要对两个主存地址单元进行读操作,第一个地址的高3位(十六进制)为0lOH,第二个地址的高3位(十六进制)为020H。

 


CUP进行读操作时,首先用主存地址的中间部分——Cache块号找到Cache中的一块(对此例,为第0块),读出此块的标记(对此例,现在为01H),然后拿它与主存地址的高位部分——标记进行比较。对于第一个主存地址,比较的结果是相等的。这表明主存地址规定的块在Cache中(有副本),这种情况称为命中。此时用主存地址的低位部分——块内地址从Cache块号所选择的块中读取所需的数据。对于第二个主存地址,比较的结果不相等。


这表明主存地址所规定的块不在Cache中,称为未命中,这时需要访问主存,并且将含有该地址单元的主存块的信息全部装入Cache的第0块,并修改第0块Cache标记,使其值为02H。



通过上面的例子,可以这样来描述(2ache最基本的工作原理:在存储系统中设置了Cache的情况下,
CUP进行存储器访问时,首先访问Cache标记,判是否命中,如果命中,就访问Cache(数据部分),否则访问主存。
将访问的数据在Cache中的次数(即命中的次数)与总的访问次数之比称为命中率。影响命中率的因素主要有三个:Cache的容量、Cache块的划分以及Cache块与主存块之间的映像关系。一般来说,Cache的容量大一些,会提高命中率,但达到一定程度时,命中率的提高并不明显。目前,一般为256 KB或512 KB,命中率可达98%左右。
下面还是通过例子来说明引入Cache块的好处。已知Cache的存取周期为50 ns,主存的存取周期为250 ns。设命中率为98%,即100次访问存储器的操作有98次在Cache中,只有2次需要访问主存,则这100次访问存储器操作的平均存取周期为(50 ns×98 250 ns×2)÷100=54 ns。由此可见,由于引入了Cache,使得
CPU访问存储器的平均存取周期由不采用Cache时的250 ns降到了54 ns。也就是说,以较小的硬件代价使Cache/主存储器系统的平均访问时间大大缩短,从而大大提高了整个微机系统的性能。 内容来自www.serverjia.cn电脑硬件知识网
需要指出,Cache的功能全部由硬件实现,涉及Cache的所有操作对程序员都是透明的。
3.Cache的读/写操作
CPU进行存储器读操作时,根据主存地址可分成命中和未命中两种情况。对于前者,从Cache中可直接读到所需的数据;对于后者,需访问主存,并将访问单元所在的整个块从内存中全部调入Cache,接着要修改Cache标记。若Cache已满,需按一定的替换算法,替换掉一个旧块。
CPU进行存储器写操作时,也可分成两种情况。一是所要写入的存储单元根本不在Cache中,这时写操作直接对主存进行操作(与Cache无关);二是所要写入的存储单元在Cache中。对于第二种情况需做一些讨论。Cache中的块是主存相应块的副本,程序执行过程中如果遇到对某块的单元进行写操作时,显然应保证相应的Cache块与主存块的一致。
这里有两种处理方式。一是暂时只向Cache写入,并用标志注明,直到这个块被从Cache,中替换出来时,才一次写入主存,称之为回写式;二是每次写入Cache的同时也写入主存,称之为通写式。两种方式各有优缺点。回写式占用总线时间少,写速度快,但不能随时保证Cache与主存保持一致,如果此期间发生DMA操作,则可能出错(DMA操作将在第四章介绍,暂时可将其理解为在输入/输出设备与存储器之间直接进行数据传送,这种操作不需要
CPU参与。所以,可能出现CPU和DMA控制器同时访问同一主存块的情况);通写式可使Cache块和主存块始终保持一致,但占用总线时间长,总线冲突较多。


内容来自www.serverjia.cn电脑硬件知识网

 


内容来自www.serverjia.cn电脑硬件知识网

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 程序局部性是指在程序执行过程中,相同或相邻的指令和数据往往会被反复访问并多次使用的特性。其原理主要包括时间局部性和空间局部性。 时间局部性指的是在执行过程中,程序的某个指令或者数据项在一段时间内被反复多次使用。这是由于计算机执行时,指令和数据往往以顺序的方式被取出和执行,因此当前执行的指令和数据有较大的概率在近期内再次使用。 空间局部性指的是在执行过程中,程序相邻的指令和数据在存储器中相对位置较近,因此在访问某个指令或数据时,往往会连续地访问其相邻的指令和数据。这是因为计算机在执行指令时,往往以块的方式从内存中读取数据,因此在读取一个数据时,很可能连续地读取其相邻的数据。 高速缓冲存储器cache)是位于中央处理器(CPU)和主内存之间的一层存储器,用来加快计算机的数据访问速度。其原理是通过提前将CPU需要访问的数据和指令缓存在高速缓存中,以满足CPU持续快速访问数据的需求。 高速缓存存储器采用了多级存储结构,通常包括L1、L2和L3三级缓存。L1缓存是与CPU核心直接相连的缓存,速度最快,容量较小;L2缓存是位于L1缓存和主内存之间的缓存,速度相对较慢但容量较大;L3缓存是当前多核处理器中常见的共享缓存,用于多个核心之间的数据共享。 高速缓存采用了缓存替换策略和缓存写策略来管理缓存中的数据。常见的缓存替换策略有最近不经常使用(LRU)、先进先出(FIFO)等,用来确定替换哪些数据;而缓存写策略主要有写回(Write Back)和写直达(Write Through),用来决定何时将数据写回主内存。其中,写回策略可以减少对主内存的写入次数,提高效率。 高速缓存的主要技术指标包括缓存容量、缓存关联度和缓存块大小。缓存容量表示缓存可以存储的数据量,一般以字节或字来衡量;缓存关联度表示CPU访问缓存时,需要比较的地址数量,常见的关联度有直接映射、全相联和组相联三种;缓存块大小则是指一次从主存中读取的连续数据的大小。这些指标的选择需要在缓存成本和命中率之间进行权衡。 ### 回答2: 程序局部性是指在程序执行过程中,程序具有空间局部性和时间局部性的特点。空间局部性指程序在一段时间内往往只访问某一部分数据,而时间局部性指程序在某一时刻访问的数据,很可能在未来的几个时刻仍然需要被访问。 程序局部性的原理是基于程序的运行特点。在程序执行过程中,通常会存在循环结构和函数调用等,导致代码的局部执行次数较高。而在循环结构中,往往会反复访问相同的内存位置,这样就形成了空间局部性。同时,程序的执行也会遵循顺序性,即执行的指令往往是紧邻着的,这就形成了时间局部性。 高速缓冲存储器cache)是位于CPU和主存之间的一级缓存,其主要目的是加快CPU对数据的访问速度。cache的原理是通过存储最常用的数据,将其快速提供给CPU,从而减少了对主存的访问次数,提高了程序的执行效率。 cache的主要技术指标包括容量、速度和命中率。容量是指cache能够存储的数据量大小,容量越大可以存储更多的数据,但相应的访问速度可能降低。速度是指从cache中获取数据的时间,速度越快,就可以更快地满足CPU的需求。命中率是指CPU请求的数据在cache中的比例,命中率越高,表示cache存储的数据满足CPU需求的概率越高。 为了提高cache的效率,可以采用多级缓存、使用更快的存储介质、采用更高效的替换算法等。同时,还可以根据程序的局部性原理,设计合理的访问策略,例如预取技术和写策略等,来进一步提高cache的性能。 ### 回答3: 程序局部性是指在程序的执行过程中,存在着指令局部性和数据局部性。指令局部性是指程序在一段时间内,执行的指令往往是同一部分代码附近的指令。数据局部性是指程序在一段时间内,使用的数据往往是同一部分内存附近的数据。 程序局部性的原理主要是基于计算机的存储结构和程序的执行特点。首先,由于计算机的主存和CPU的速度差异很大,为了提高程序的执行效率,计算机将一部分经常被访问的指令和数据存放在高速缓冲存储器cache)中。其次,程序的执行往往有顺序性和循环性,即程序的指令和数据往往存在较好的局部性。因此,通过合理的缓存算法和数据替换策略,将程序中高频访问的指令和数据放入高速缓存中,可以大大减少主存和CPU之间的数据传输次数,从而提高程序的执行效率。 高速缓存存储器(cache)是位于CPU与主存之间的一级缓存,其主要目的是缓解CPU对主存的访问速度和处理器运算速度之间的矛盾。高速缓存存储器的原理是基于程序局部性原理。当CPU需要访问指令或数据时,首先在高速缓存中进行查找,如果找到则命中,直接从高速缓存中读取;如果没有找到,则访问主存并将所需要的指令或数据加载到高速缓存中,并将原有的数据替换掉。 高速缓存存储器的主要技术指标包括容量、关联度和替换策略。容量指的是高速缓存能够存放的指令和数据的数量,容量越大,命中率越高;关联度指的是高速缓存中存放指令和数据的方式,可以采用直接映射、组相联或全相联等方式;替换策略则是指当高速缓存已满时,该如何选择被替换的指令或数据,常见的替换策略有先进先出(FIFO)、最近最少使用(LRU)等。这些技术指标的选择要根据计算机的架构和应用需求进行权衡和调整,以达到最佳的性能和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值