MENU

高速缓冲存储器习题

November 11, 2018 • Read: 13054 • 计算机组成原理阅读设置

因为高速缓冲存储器个人觉得比较重要,所以单独写一篇文章来做各种习题

例1

假设主存容量为512KB,Cache容量为4KB,每块为16个字,每个字32位。
(1)Cache地址有多少位?可容纳多少块?
(2)主存地址有多少位?可容纳多少块?
(3)在直接映射的方式下,主存的第几块映射到Cache中的第5块(设起始字块为第1块)?
(4)画出直接映射方式下主存地址字段中各段的位数。

解:
(1)根据Cache的容量为4KB(4KB=$2^{12}$),所以Cache的地址有12位。因为1字=32bit=4B,每块有16字,所以每块就有16*4=64B,故Cache中有4KB/64B=64块
(2)根据主存容量为512KB(512KB=$2^{19}$),所以主存地址有19位,因为每块有64B,故主存中有512KB/64B=8192块
(3)在直接映射方式下,主存各段地址分配方式如下图所示。其中字块内地址为$log_264=6$位,缓存块地址共$log_264=6$位,主存字块标记为主存地址长度与Cache地址长度之差,即19-12=7位
1.png

例2

假设主存容量为512K×16位,Cache容量为4096×16位,块长为4个16位的字,访存地址为字。
(1)在直接映射下,设计主存的地址格式。
(2)在全相联映射下,设计主存的地址格式。
(3)在二路组相联映射方式下,设计主存的地址格式。
(4)若主存容量为512K*32位,块长不变,在四路组相联映射下,设计主存的地址格式。

解:
首先看题目,完全没有提到KB,或者MB,全是字,因此可以判断该题是按字编址,并且题目已经说了一个字是16位(512K×16位,4096×16位,就暗含一个字是16位)
(1)块长为4字,因此块地址为$log_24 = 2$位。Cache有4096个字,所以Cache有4096/4=1024块,则Cache块地址为$log_21024=10$位。主存容量为512K个字,所以主存块地址为$log_22^{19}=19$位,主存字块标记为主存地址长度与Cache地址长度之差,即19-12=7位。故主存地址格式如下图所示
2.png
(2)在全相联映射下,主存地址仅由字块内地址和主存字块标记构成,而字块内地址在(1)中求得为2位,所以这里的字块内地址为19-2=17位。此时的主存地址格式为:
3.png
(3)在二路组相联映射中,每组有两个字块,所以一共有$2^{10}/2=2^9$组,故组地址有9位。由于每个字块到这里都是没有变化的,所以字块内地址仍为2位。所以主存字块标记为19-9-2=8位,故得到主存地址格式为:
4.png
(4)主存容量为512K*32位,即双字宽存储器,即每次可以访问两个字(因为每个字16位),这里的访存地址单元仍为字没有变,所以字块内地址仍为2位,而主存容量可以转为512K*32位=1024K*16位,这样就可以得到共有1024K个字,所以主存地址有20位。同时,这里改为四路相联组映射,即每个Cache组内有4个Cache块,所以共有$2^{10}/4=2^8$组,所以组地址为8位,这样得到主存字块标记有20-8-2=10位,得到如下主存字块地址格式:
5.png

例3

设有一个1MB容量的存储器,字长32位。问:按字节编址和按字编址的寻址范围

解:
如果按字节编址,因为存储器容量为$1MB=2^{20}B$,一字节=1B,$2^{20}B/1B=2^{20}$,所以寻址范围为$[0,(2^{20})-1]$

如果按字编址,因为存储容量为$1MB=2^{20}B$,字长32位就表示1字=32bit=4B,$2^{20}B/4B=2^{18}$,所以寻址范围为$[0,(2^{18})-1]$

上面这个题目需要注意以下几点:

  1. 寻址范围仅仅是一个数字范围,不带有单位
  2. 按字节寻址,指的是存储空间的最小编址单位是字节;按字编址,是指存储空间的最小编址单位是字,以上题为例,总的存储器容量是一定的,按字编址和按字节编址所需要的编码数量是不同的,按字编址由于编址单位比较大(1字=32bit=4B),从而编码较少,而按字节编址由于编码单位较小(1字节=1B=8bit),从而编码较多
  3. 区分M和MB。M为数量单位,1024=1K,1024K=1M;MB指容量大小,1024B=1KB,1024KB=1MB

例4

某计算机字长为32位,其存储容量为16MB,若按双字编址,它的寻址范围是多少?

解:
从题目中可得,1字=32bit=4B,按照双字编址,也就是说一块中有两字,所以一块有64bit=8B,因为$16MB=2^{24}B$,$2^{24}B/8B=2^{24}B/2^{3}B=2^{21}B$,所以寻址范围为$[0,(2^{21})-1]$

例5

某机字长为32位,存储容量为64MB,若按字节编址.它的寻址范围是多少?

解:
题目明确说,按字节编址,1字节=8bit=1B,存储容量为$64MB=2^{26}B$,$2^{26}B/1B=2^{26}$,所以寻址范围为$[0,(2^{26})-1]$

常见问题解答

我在学习这部分内容的时候根本没搞懂按字和按字节编址,可能有很多人跟我一样,故在此写下他们的区别,以便以后做题不出错

可以理解为,按字节编址就是8bit=1B,按字编址就需要看题目中字长是多少位。

存储器中有很多2进制0,1码,为了定位需要编码,按字节寻址是每8bit一个单位,一个地址指向8位的2进制码,按字寻址,字长不同,寻址单位不同,一个地址指向一个字的2进制码,半字的话指向半字的2进制码。

Last Modified: December 9, 2018
Archives Tip
QR Code for this page
Tipping QR Code
Leave a Comment

3 Comments
  1. 晨曦啊 晨曦啊

    围观大佬

    1. mathor mathor

      @晨曦啊您才是大佬,我蒟蒻

    2. 晨曦啊 晨曦啊

      @mathor@(喷)现在的大佬都是这么谦虚的吗?