MENU

高速缓冲存储器习题

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

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

例 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@(喷) 现在的大佬都是这么谦虚的吗?