[关闭]
@ExcitedSpider 2017-12-31T15:17:38.000000Z 字数 1584 阅读 3762

【复习笔记】Cache的映像方法

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

Cache是什么

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

直接映像法

原则:

例:设主存容量为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个块中分别存了第几区的主存块)
图使用教材上的图吧:
image_1c2lk8r3s1b0s70pnk6iafcvi1g.png-165.1kB

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

全相联映像法

原则:

方法简单,例题略。

特点:目录表容量很大,访存慢。但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字,按字编址)
教材中的图:image_1c2lmhmqq1uqs19ur13de1qav1bhp1t.png-130.8kB
7B568H=(二进制)11110110 1010 1101000 //按8421码翻译,前面的0舍弃,然后按内存格式分组
按照前面主存地址的分析,内存映射到Cache的哪个位置是根据其第8到12位(从0开始,从左往右数),为1010=5,所以映射到第5组。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注