Cachce—MM两级存储器采用组相联映像(组间直接,组内全相联),要求Cache的每一块可在一个主存的存储周期内读出。
(1)已知主存为模块交叉,每个存储模块宽度为8个字节,则块的大小是多少
(2)若Cache容量为512B,共分为2个组,主存容量是Cache容量的2048倍,则主存区号是多少位区内组号是多少位组内块号是多少位块内地址是多少位每次进行MM→Cache的地址变换时,需要参与相联比较的位数是多少位
(3)若Cache—MM地址变换表的内容如下表所示,当CPU访问主存的地址分别为19318H和0EDCBAH时,问是否能命中Cache若能命中,用十六进制数写出相应的Cache地址。
参考答案:(1)主存为模块交叉,因为每个存储模块宽度为8个字节,则Cache块的大小是8个字节。
(2)因为(2ache容量为512B,即29,共分为2个组,所以组号是1位,主存容量=2048×512B=220B,共20位。将Cache作为区大小,主存共分为2048=211,因此主存区号部分是11位,块大小为8字节,因而块内地址为3位,块号占20-11-1-3=5位。
所以,主存区号是11位,区内组号1位,组内块号5位,块内地址3位。
(3)当主存要访问Cache时,用主存地址中的组号G按地址访问块表存储器,从块表存储器中读出一组字,字数为组内的块容量Gb,把这些字中的区号和块号与主存储器地址中的相应的区号E和块号B进行相联比较。
因此需要参与相联比较的位数是16位。
1 9318 H=0001 l001 0011 0001 1000 B
根据主存地址格式,可以算出主存区号为000 11001001,转换为十六进制为0C9H,组内块号为00011,即03H,查找地址变换表,可以看出没有相匹配的项.不能命中Cache。
0EUCBA H=1110 1101 1100 1011 1010B
根据主存地址格式,可以算出主存区号为111 0110 1110,转换为十六进制为76EH,组内块号为10111,即17H,查找地址变换表,可以看出虽然主存区号相匹配,但组内块号没有相匹配的项,因而不能命中Cache。