cache

cache是一个怎样的存在

  • Cache 是一种小容量高速缓冲存储器,它由 SRAM 组成。

加快CPU访存速度有哪些方式?

  1. 提高DRAM芯片本身的速度
  2. 采用并行结构技术
  3. 在CPU和主存之间引入cache

为什么要引入cache?

从两个角度解释,一是没有引入的话有什么不好的地方,二是引入的话有什么好处:

  1. 没有它不好 CPU执行指令时,极快的CPU等待极慢的主存,CPU计算力被浪费
  2. 有了它更好 优秀的程序员写出的程序具有良好的局部性,引入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组群
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值