高速缓冲存储器cache

一:高速缓冲存储器的诞生:(1)由于主存的访存速度和cpu的运算速度相差较大,所以需要一个介于他们两者之间的东西(高速缓冲存储器cache)去平衡两者的速度。

                                        (2)由于I/O设备向主存请求的级别高于cpu访存,这就出现了cpu等待I/O设备访存的现象,致使cpu空等一段时间,甚至可能等待几个主存周期,从而降低了cpu的工作效率(其实还是原因一:因为cpu的运算速度远远大于主存的访存速度)

二:高速缓冲存储器的工作原理是基于程序访问的局部性(通俗的说就是经常用到的数据放在一个高速的cache里面,方便寄存器调用)

三:寄存器,高速缓冲存储器(缓存),主存,硬盘的关系:从左到右速度越来越低,容量越来越大;举个生动的例子如下:

以经典的阅读书籍为例。我正在读的书,捧在手里(寄存器),我最近频繁阅读的书,放在书桌上(缓存),随时取来读。(当然书桌上只能放少量的几本书:这点对应于缓存的容量小)我更多的书在书架上(主存)。如果书架上没有的书,就去图书馆(本地磁盘)。我要读一本书的流程为:先看手里有没有我要进行读写的书,如果没有就去看桌子上有没有我要读的书,如果桌子上也没有就去书架上找有没有,如果书架上也没有就去图书馆找要读的书籍。

这个例子可以对应为cpu访问主存的流程:cpu给出要访存的地址,先到与他紧接着的寄存器中找,如果寄存器(与cpu封装在一起,存储要进行操作的指令和数据)中没有,则去cache中找。如果缓存中没有,则从内存(主存和缓存)中取,如果主存中也没有,则先从磁盘读入内存,再读入缓存,再读入寄存器,最后交付给cpu进行运算

四:cache(高速缓冲存储器)的几个重要参数:

1、cache分级,L1 cache, L2 cache, L3 cache,级别越低,离cpu越近
2 、cache的容量
3 、cache的linesize
4 、cache 每组的行个数.
下面来解析一下cache的这几个参数以及cache的组成结构:

cache分成多个组,每个组分成多个行,linesize是cache的基本单位,从主存向cache迁移数据都是按照linesize为单位替换的。 比如linesize为32Byte,那么迁移必须一次迁移32Byte到cache。 这个linesize比较容易理解,想想我们前面书的例子,我们从书架往书桌搬书必须以书为单位,肯定不能把书撕了以页为单位。书就是linesize。 当然了现实生活中每本书页数不同,但是同个cache的linesize总是相同的。

所谓8路组相连( 8-way set associative)的含义是指,每个组里面有8个行。

我们知道,cache的容量要远远小于主存,主存和cache肯定不是一一对应的,那么主存中的地址和cache的映射关系是怎样的呢?

拿到一个地址,首先是映射到一个组里面去。如何映射?取内存地址的中间几位来映射。

举例来说,data cache: 32-KB, 8-way set associative, 64-byte line size

Cache总大小为32KB,8路组相连(每组有8个line),每个line的大小linesize为64Byte,OK,我们可以很轻易的算出一共有32K/(8*64)B=64 个组。

对于32位的内存地址,每个line有2^6 = 64Byte,所以地址的【0,5】区分line中的那个字节。一共有64个组。我们取内存地址中间6为来hash查找地址属于那个组。即内存地址的 【6,11】位来确定属于64组的哪一个组。组确定了之后,【12,31】的内存地址与组中8个line挨个比对,如果【12,31】为与某个line一 致,并且这个line为有效,那么缓存命中。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值