概述
cache是一个怎样的存在
- Cache 是一种小容量高速缓冲存储器,它由 SRAM 组成。
加快CPU访存速度有哪些方式?
- 提高DRAM芯片本身的速度
- 采用并行结构技术
- 在CPU和主存之间引入cache
为什么要引入cache?
从两个角度解释,一是没有引入的话有什么不好的地方,二是引入的话有什么好处:
- 没有它不好 CPU执行指令时,极快的CPU等待极慢的主存,CPU计算力被浪费
- 有了它更好 优秀的程序员写出的程序具有良好的局部性,引入cache可以很好的利用这一点
那么问题来了什么叫程序的局部性?
- 程序的局部性体现在两个方面时间局部性和空间局部性。
- 时间局部性是指最近被访问的存储单元(指令或数据)很快会又一次被访问。
- 空间局部性是指正在被访问的存储单元附近的单元不久会被访问。
- 为了更好的利用程序的时间局部性,cache保存近期频繁被访问的主存单元的数据。
- 为了更好的利用程序的空间局部性,cache通常访存时,同时取回位置相邻的主存单元的数据,以数据块为单位和主存进行数据交换
为什么在引入cache会加快访存速度?
在 CPU 和主存之间设置一个快速小容量的存储器,其中总是存放最活跃(被频繁访问)的程序块和数据,由于程序访问的局部性特征,大多数情况下, CPU 能直接从这个高速缓存中取得指令和数据,而不必访问主存。
cache如何映射主存?
我们为什么要谈这件事呢?
这就要从CPU执行指令说起了,一条指令是CPU的最小操作单位,但是会包含一系列的微操作,这些微操作涉及到的数据来自存储器,这个过程就被我们叫做访存。而我们又知道访存不仅可以CPU直接与主存相连,还可以通过CPU连接借助cache与主存进行数据交换。这其中涉及到CPU与cache的数据交换,cache与主存的数据交换。对于一条指令,CPU解析出操作码字段,地址码字段等,地址码字段可以是寄存器编号或主存单元编号等,当然也可能是
- 三种方式:直接映射、全相联映射、组相联映射
首先需要明白: - 每个cache行需要一个有效位V,某行置V为0则淘汰该cache行的主存;装入一个新的主存块则置V为1。
- 无论是哪一种映射方法都是多个主存块映射到一个cache行中。
- cache对程序员是透明的,或者说是不可见的,程序员编程时根本不知道访存是在访问cache还是主存,但是对cache深入了解有助于写出更加高效的程序(或者说局部性更好的程序)。
下面分别解释三种映射方式
直接映射
直接映射很简单就是模n同余的主存地址映射到同一个cache行中,这实现的主存映射到cache固定行
全相联映射
全相联映射是指对于每个主存块,在cache中随便找一个空闲行存放,这实现了每个主存块映射到cache中的任意行
组相联映射
- 组相联映射兼顾前两者的的特点,首先cache是分2c行的,再把这些行分成2q组,每组有2c-q行。
- 每组21行称为2路组相联,每组22称为4路组相联。
- 主存是分2m块的,把这些块按照2q/组群,分成2m-q组群
最后
以上就是醉熏万宝路为你收集整理的cache的全部内容,希望文章能够帮你解决cache所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复