已知主存容量,cache容量,分块时每块容量大小,求cache,主存块数,主存的块采取某种映像方式对应cache第几块
时间: 2023-12-22 18:09:55 浏览: 169
假设主存大小为 $M$ 字节,Cache 大小为 $C$ 字节,每个块大小为 $B$ 字节,则:
- Cache 块数为 $C/B$。
- 主存块数为 $M/B$。
- 主存的块采取直接映射方式,则主存中任意一块对应 Cache 中的某一块,可以使用下面的公式计算:$$\text{Cache 块号} = \text{主存地址} \bmod \text{Cache 块数}$$
- 主存的块采取全相连映射方式,则主存中任意一块对应 Cache 中的某一块,可以使用下面的公式计算:$$\text{Cache 块号} = \text{主存地址} \bmod \text{Cache 块数}$$
- 主存的块采取组相联映射方式,则主存中任意一块对应 Cache 中的某一块,可以使用下面的公式计算:$$\text{Cache 块号} = (\text{主存地址} \bmod (\text{组数} \times \text{每组块数})) \div \text{每组块数} \times \text{组长} + (\text{主存地址} \bmod \text{每组块数})$$ 其中,$\text{组数}=\text{Cache 块数}/\text{每组块数}$,$\text{组长}=B\times \text{每组块数}$。
需要注意的是,在实际的计算机系统中,Cache 的映射方式通常是通过硬件实现的,而不是通过软件计算的方式来实现的。
相关问题
某机主存容量为128MB, Cache 容量为32KB,主存与 Cache 均按64B的大小分块 分别写出主存与 Cache 采用直接映像和全相联映像时主存与 Cache 地址的结构格式并标出各个字段的位数 若 Cache 采用组相联映像,每组块数为4块。写出主存与 Cache 地址的结构格式并标出各个字段的位数。并 回答一个主存块可以映像到多少个 Cache 块中?一个 Cache 块可与多少个主存块有对应关系
C知道:对于你的问题,我可以回答。当主存与 Cache 采用直接映像时,主存地址的结构格式为:标记位(Tag)+ 块内地址(Block Offset)+ 块索引(Index),其中标记位占用的位数为 7,块内地址占用的位数为 6,块索引占用的位数为 9。Cache 地址的结构格式为:标记位(Tag)+ 块内地址(Block Offset)+ 块索引(Index),其中标记位占用的位数为 7,块内地址占用的位数为 5,块索引占用的位数为 5。当主存与 Cache 采用全相联映像时,主存地址的结构格式为:标记位(Tag)+ 块内地址(Block Offset),其中标记位占用的位数为 12,块内地址占用的位数为 6。Cache 地址的结构格式与主存相同。当 Cache 采用组相联映像时,主存地址的结构格式与直接映像相同,Cache 地址的结构格式为:标记位(Tag)+ 块内地址(Block Offset)+ 组索引(Index),其中标记位占用的位数为 7,块内地址占用的位数为 5,组索引占用的位数为 2。一个主存块可以映像到一个 Cache 块中。一个 Cache 块可以与 4 个主存块有对应关系。
假设主存容量16Mx32位,cache容量64Kx32位,主存与cache之间以每块4×32位大小传送数据,直按映射方式中字地址位数为
首先,计算出cache的块数:64Kx32位 = 2^16 x 2^5 = 2^21,因此cache共有2^21个块。
每块4x32位大小,即每块存放4个32位数据,所以每块的地址范围是4x4 = 16字节。
对于直接映射方式,cache的块数等于主存的块数,因此主存的块数也是2^21。
每个主存块大小为4x32位,即每个块可以存放4个32位数据,所以每个主存块的地址范围是4x4 = 16字节。
因此,主存地址需要用21位来表示2^21个块,而每个块内的地址需要用4位来表示16字节的地址范围。
对于每个主存地址,它的低4位对应着主存块内的地址,中间的17-4位对应着主存块的编号,而最高的32-17位则对应着主存块的标记(因为cache需要知道主存块是否被缓存)。
因此,字地址位数为21 + 4 = 25位。
阅读全文