cache存储器

预读:CPU发起预读操作(现在基本分工给cache了),cache根据局部性原理将主存的子集调入,同时保存cache与主存间的索引。
CPU访cache:CPU需要访问主存某个地址时,先访问cache看看有没有对应的镜像。
命中:主存和cache的容量差很多,cache中恰好有CPU需要的数据。
miss:cache猜错咯,哭哭。去访问主存把数据调入cache。(替换)

映射功能

首先分清楚这几个东西……(大概只有我蠢
主存地址:块号|块内地址
CPU在访主存的时候会根据主存地址去找相应内容。
cache地址:行号|行内地址
CPU在访cache的时候会根据cache地址去找相应内容。
主存的内容和cache的内容
映射就是把主存地址和cache地址联系起来

直接映射
主存的每一块对应cache中确切的一行
i=j mod 2C
主存地址:Tag|Line|Word
原主存地址的块号被分成了标记和行两部分,因为cache数量远小于主存,所以这种映射关系是cache一行对主存多块,行部分用来区分每一块应该映射到哪一行,标记部分则用于确认当前cache里存的是对应那么多块中的哪一块。
标记:
行:标识cache的确切一行
字:标识主存块中的确切一字/字节
CPU访cache:
首先根据行,找到cache行,然后比较主存地址中的标记和cache部分存的标记。一样则命中
命中:使用主存地址的块内地址,访问该cache块相应的字单元。
Miss:使用主存地址直接访主存。

CPU需要访问某个地址时,首先根据该主存地址的C字段找到cache的相应块,然后将该块标志字段中存放的标志与主存地址的T标志进行比较。

当一个主存块调入 Cache中时,会同时将主存地址的T标志存入Cache块的标记字段中。当CPU送来一个访存地址时,首先,根据该主存地址的C字段找到Cache的相 应块,然后将该块标志字段中存放的标志与主存地址的T标志进行比较,若相符,说明主存的块目前已调入该Cache块中,则命中,于是使用主存地址的W字段

全相联映射

主存地址:Tag|Word
CPU的访cache地址:

当 一个主存块调入Cache中时,会同时在一个存储主存块号和Cache块号映射表的相联存储器中进行登记。CPU访存时,首先,根据主存地址中的主存块号 M在相联存储器中查找Cache块号,若找到,则本次访Cache命中,于是将对应的Cache块号取出,并送访Cache地址的块号C字段;紧接着将主存地址的块内字号W直接送Cache地址的块内字号W字段,从而形成一个访Cache的地址;最后根据该地址完成对Cache单元的访问.

组相联映射
主存地址:Tag|Set|Word
将cache分组,组间是直接映射,组内是全关联映射。
即主存的每一块,先找到对应的cache中确切的一组,然后对应这一组中任意的一行。

公式


命中率 H = Nc/(Nc+Nm)
主存慢于cache的倍率 r = Tm/Tc
访问效率 e = 1/[r+(1-r)H]
平均访问时间 Ta = (Tc
Nc+Tm*Nm)/N = Tc/e

参考


说好的Cache呢
主存与Cache的地址映射
cache与主存地址结构

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、概要 1、数据的表示:数制及其转换、原码、反码、补码、移码、浮点数、溢出、算...
    _Jason___阅读 3,247评论 0 5
  • CPU在一段较短的时间内,是对连续地址的一段很小的主存空间频繁地进行访问,而对此范围以外地址的访问甚少,这种现象称...
    lintong阅读 979评论 0 2
  • 虚拟存储器又叫做虚拟内存,我们现在的操作系统普遍都支持了虚拟内存,这样做是因为我们同时运行着太多的程序了,就目前我...
    唐鱼的学习探索阅读 5,049评论 1 25
  • 1 内存寻址 1.1 物理地址、虚拟地址以及线性地址 物理地址: 物理内存的内存单元地址 虚拟地址: 程序员看到的...
    疯狂小王子阅读 2,965评论 3 21
  • ——精而简 美洲豹 唐代刘禹锡有诗曰:“庭前芍药妖无格,池上芙蕖净少情。唯有牡丹真国色,花开时节动京城。”。说的正...
    c49345312d5f阅读 1,483评论 0 1