参考书籍----《计算机组成原理》第三版,唐朔飞
Cache--主存映射分为三种:直接映射,组相联映射,全相联映射
一.三种映射方式介绍
1.直接映射
(1)物理模型:
(2)直接映射方式主存地址格式:
(3)计算公式
主存字块标记的位数:A
cache字块地址的位数:B
字块内地址的位数:C
由于cache是嵌在主存里的,主存总位数S=A+B+C
通常在解题时,先算出S,再算出cache字块地址位数和字块内地址,最后用S-B-C得到A。
说明一下,题目有两种出法。
第一种,没有指明按照什么存储大小去访存,这种题,默认以一个字节为单位访存。
第二种,指明以字为单位去访存。(字是由一个或多个字节组成)
当以一个字节为单位访存时
S=(主存容量/字节)
B=(cache容量/字块容量)
C=(字块内容量/字节)
当以字为单位访存时
S=(主存容量/字)
B=(cache容量/字块容量)
C=(一个字块里的字数)=(字块内容量/字长)//字长:一个字里的二进制位数
-------------------------------------------------------------------------------------------------------------------------
A=S-B-C
最后,再用A=(主存容量/cache容量),去验算是否与上面算出的A相等。这种验算只适用于直接映射,因为直接映射的映射过程就是通过不断取chache容量个存储长度作为一个标记的,如上图物理模式所示,i为缓存块号,j为主存块号,C为缓存块数,i=j mod C。
2.组相联映射
(1)物理模型:
(2)组相联映射方式主存地址格式:
(3)计算公式
计算公式与上面的差不多,只是组地址的位数
D=直接映射的cache字块地址位数B减去(组数)
当然,D=cache容量/(一个字块的容量*组数)可以用来验证。
A=S-D-C
3.全相联映射
(1)物理模型:
(2)全相联映射方式主存地址格式:
(3)计算公式
全相联映射最简单,A=S-C
二.题目及解题
例题1(课本P120页例4.8):
假设主存容量为512KB,Cache容量为4KB,每个字块为16个字,每个字为32位。问:
(1).Cache地址为多少位?可容纳多少块?
(2).主存地址为多少位?可容纳多少块?
(3).在直接映射方式下,主存的第几块映射到Cache中的第五块(设起始字块号为1)
(4).画出直接映射方式下主存地址字段中各段的位数。
由题意可知,默认为以字节B访存
例题2(课本P120页例4.9)
假设主存容量为512K*16位,Cache容量为4096*16位,块长为4个16位的字,访存地址为字。
(1).在直接映射下,设计主存的地址格式。
(2).在全相联映射下,设计主存的地址格式。
(3).在二路组相联映射方式下,设计主存的地址格式。
(4).在四路组相联映射下,设计主存的地址格式。
课后习题 p152 4.32
设某主机容量为4MB,Cache容量为16KB,每字块有8个字,每字32位,设计一个四路组相联映射(即Cache每组内有4个字块)的Cache组织。
问:求画出主存地址各字段的位数
注意:(1)一般来说,题目上没有明确指定按字编址,那么就默认是按字节编址(一字节8位),如果题目给出的容量是xxxK*xx位,并且说了访存地址为字,那就是按字访问的。
(2)三种映射方式A(主存字块标记)不相同,C(字块内地址)都相同