复习笔记Cache的映像方法

Posted 我也想学编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复习笔记Cache的映像方法相关的知识,希望对你有一定的参考价值。

注:写的时候忘记统一内存/主存的称呼,特别声明文中内存=主存。阅读本文建议画图辅助理解

Cache是什么

cache高速缓冲存储器一种特殊的存储器子系统,其中复制了主存中频繁使用的数据以利于快速访问。为了便于根据CPU送来的地址信息到Cache中去读取数据,必须有某种函数把主存地址映象成Cache地址。实现这种映象的函数叫映象函数。不同的映像函数有:

  1. 直接映像法
  2. 全相联映像法
  3. 组相联映象法

    直接映像法

    原则:

  • 直接映象函数为i=j mod 2c ,其中i是Cache块号,j是主存块号, 2c为Cache总块数。
  • 将主存分为若干区,每区容量与Cache总容量相等。每区块数与Cache的块数相同,这样,每区中第i块映射的位置就是Cache的第i块
  • 维护一个块表,表的长度为Cache的块数(为了记录Cache中每块存的是主存的第几区),表中每个项目长度是主存区号的长度(为了存下块的编号)。在每次访问主存时查这个块表来对应访问Cache。

    例:设主存容量为1MB,高速缓存容量为16KB,块的大小为512字节。采用直接地址映像法。

  1. 写出主存地址格式。
  2. 写出Cache地址格式。
  3. 块表的容量是多大。
  4. 画出直接方式地址映像及变换示意图。

    解:

    Cache块数=16KB/512B=32块
    则主存每区为32块,共1MB/16KB=64区
    所以主存地址为6位区号(共64区)+5位区内块号(共32块)+9位块内地址(块容量512B,按字节编址)
    所以Cache地址为5位区内块号,9内块内地址(相当于主存的一个区)
    自然的,块表的容量为32*6位(表示Cache32个块中分别存了第几区的主存块)
    图使用教材上的图吧:
    技术分享图片

    特点:冲突多,命中率低,使用率低。但是访问速度快。

    全相联映像法

    原则:

  • 主存中每一块可存入Cache中的的任一位置
  • 维护一个目录表,记录Cache每块存的是内存的哪一块。表的长度就为Cache块数(原因上同),每条项目的长度为主存的主存块号的长度(不是区内块号),每次访存的时候查表访问。

    方法简单,例题略。

    特点:目录表容量很大,访存慢。但Cache的使用率高。

    组相联映像法

    原则:

  • 是前两种方法的组合,结合了各自的优点。
  • 将Cache分组,内存分区。内存区内的块数和Cache的组数相同(原因稍后介绍)。
  • 主存区内的块和Cache的组采用直接相联映像法,即第主存每区的第i块都映射到Cache的第i组。
  • Cache每组组内采用全相联映像法,例如Cache的第3组中有个4块,Cache的第1块存了来自内存第2区的第3块,第2块存了来自内存第6区的第3快,第3、4块空.
  • 按照上面的原则,就需要一个表来说明Cache每一组存了哪几区的内存块。访存时查表到对应的区中寻找有没有该内存块。

    例. 一个组相联映像Cache由64个存储块组成, 每组包含4个存储块。主存包含4096个存储块,每块由128字组成。访存地址为字地址。

    (1)写出主存地址位数和地址格式
    (2)写出Cache地址位数和地址格式;
    (3)画出组相联映像方式示意图,
    (4)主存字地址为7B568H单元映射到Cache哪个组?

    解:

    Cache组数为64/4=16组
    主存每区内的块数=Cache的组数,则主存的区数为4096/16=256区,每区内有16个存储块
    那么主存地址的组成为8位区号(256区)+4位区内块号(16个存储块)+7位块内地址(一块128字,按字编址)
    Cache地址为4位组号(16组)+2位组内块号(每组4快)+7位块内地址(一共128字,按字编址)
    教材中的图:
    技术分享图片
    7B568H=(二进制)11110110 1010 1101000 //按8421码翻译,前面的0舍弃,然后按内存格式分组
    按照前面主存地址的分析,内存映射到Cache的哪个位置是根据其第8到12位(从0开始,从左往右数),为1010=5,所以映射到第5组。

















以上是关于复习笔记Cache的映像方法的主要内容,如果未能解决你的问题,请参考以下文章

JS复习笔记06 方法

Jsonp 复习笔记

复习笔记软件工程概论复习

Java复习笔记5--equals方法总结

Java复习笔记9--四舍五入

Java复习笔记--java中this 关键字