参考书籍----《计算机组成原理》第三版,唐朔飞

Cache--主存映射分为三种:直接映射,组相联映射,全相联映射

一.三种映射方式介绍

1.直接映射

(1)物理模型:

c16e5c06dbb645e993ea8dc77ab2dcca.png

(2)直接映射方式主存地址格式:

4159f0280e2c485ba7222d09ef53b68f.png

 

(3)计算公式

主存字块标记的位数:A

cache字块地址的位数:B

字块内地址的位数:C

由于cache是嵌在主存里的,主存总位数S=A+B+C

通常在解题时,先算出S,再算出cache字块地址位数和字块内地址,最后用S-B-C得到A。

说明一下,题目有两种出法。

第一种,没有指明按照什么存储大小去访存,这种题,默认以一个字节为单位访存。

第二种,指明以字为单位去访存。(字是由一个或多个字节组成)

当以一个字节为单位访存时

S=eq?%5Clog_%7B2%7D(主存容量/字节)

B=eq?%5Clog_%7B2%7D(cache容量/字块容量)

C=eq?%5Clog_%7B2%7D(字块内容量/字节)

当以字为单位访存时

S=eq?%5Clog_%7B2%7D(主存容量/字)

B=eq?%5Clog_%7B2%7D(cache容量/字块容量)

C=eq?%5Clog_%7B2%7D(一个字块里的字数)=eq?%5Clog_%7B2%7D(字块内容量/字长)//字长:一个字里的二进制位数

-------------------------------------------------------------------------------------------------------------------------

A=S-B-C

最后,再用A=eq?%5Clog_%7B2%7D(主存容量/cache容量),去验算是否与上面算出的A相等。这种验算只适用于直接映射,因为直接映射的映射过程就是通过不断取chache容量个存储长度作为一个标记的,如上图物理模式所示,i为缓存块号,j为主存块号,C为缓存块数,i=j mod C。

2.组相联映射

(1)物理模型:

6483824a6fca402f97345dffc66f4d76.png

(2)组相联映射方式主存地址格式:

3fdc7b1db8c643a386a0574c7b037772.png

(3)计算公式

计算公式与上面的差不多,只是组地址的位数

D=直接映射的cache字块地址位数B减去eq?%5Clog_%7B2%7D(组数)

当然,D=cache容量/(一个字块的容量*组数)可以用来验证。

A=S-D-C

 

 

3.全相联映射

(1)物理模型:

0a462a4a555044868c21ea92a6bfd787.webp

(2)全相联映射方式主存地址格式:

90a3a7fca0f44839b0137d3a571c9fe2.jpeg

(3)计算公式

全相联映射最简单,A=S-C

 

二.题目及解题

例题1(课本P120页例4.8):
假设主存容量为512KB,Cache容量为4KB,每个字块为16个字,每个字为32位。问: 
(1).Cache地址为多少位?可容纳多少块? 
(2).主存地址为多少位?可容纳多少块? 
(3).在直接映射方式下,主存的第几块映射到Cache中的第五块(设起始字块号为1) 
(4).画出直接映射方式下主存地址字段中各段的位数。

由题意可知,默认为以字节B访存

760888a22e294d7f9356ef6b1a35ceba.jpeg

例题2(课本P120页例4.9)
假设主存容量为512K*16位,Cache容量为4096*16位,块长为4个16位的字,访存地址为字。 
(1).在直接映射下,设计主存的地址格式。 
(2).在全相联映射下,设计主存的地址格式。 
(3).在二路组相联映射方式下,设计主存的地址格式。 
(4).在四路组相联映射下,设计主存的地址格式。

791df9c0c876470bb6f91cb112e35a22.jpeg

课后习题 p152   4.32

设某主机容量为4MB,Cache容量为16KB,每字块有8个字,每字32位,设计一个四路组相联映射(即Cache每组内有4个字块)的Cache组织。

问:求画出主存地址各字段的位数

b5f3fbe735a3496a8c58e9a81dbb9859.jpeg

注意:(1)一般来说,题目上没有明确指定按字编址,那么就默认是按字节编址(一字节8位),如果题目给出的容量是xxxK*xx位,并且说了访存地址为字,那就是按字访问的。

(2)三种映射方式A(主存字块标记)不相同,C(字块内地址)都相同

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐