Cache与主存的映射及计算(转)

时间:2024-04-01 09:15:27

转自(略补充):freshwaysCache寄存器计算问题

首先要搞懂关于Cache地址映射的一些计算就必须从根上解决问题,明白Cache的工作原理会让我们更容易的解决此问题。原理图如下:

Cache与主存的映射及计算(转)

当CPU访问Cache时,送来主存地址放入地址寄存器。通过主存—>Cache地址变换部件把主存地址中的块号B变换成Cache的块号b,放入Cache地址寄存器中,并且把主存地址的块内地址W直接作为Cache的块内地址w装入到Cache地址寄存器中。如果变换成功(Cache命中),就用所得到的Cache地址去访问Cache,从Cache中取出数据送往CPU。如果变换不成功,则产生Cache失效信息,并且用主存地址访问主存。从主存存储器中读出数据送往CPU。同时,把包括被访问字在内的一整块都从主存中读出,装入到cAche中去。这时,如果Cache已满,则要采用某种Cache替换算法把不常用的一块先调入主存存储器中原来存放的其它地方,以便腾出空间来存放新调入的块。

Cache的地址映射中常见的映射方法有:直接映射、全相连映射和组相连映射。它们的地址转换图分别如下:(特别注意主存地址在不同映射方式下的组成部分,注意到此计算题就迎刃而解了。)

(1)直接映射方式下的地址转换

主存地址:区号+块号B+块内地址W

Cache地址:块号b + 块内地址w

对应关系:块号B=块号b , 块内地址W = 块内地址 w

(2)全相连映射方式下的地址转换

主存地址:块号B+块内地址W

Cache地址:块号b + 块内地址w

对应关系:块号B通过地址变换表对应于块号b , 块内地址W = 块内地址 w

(3)组相连映射方式下的地址转换

主存地址:区号E+组号G+组内块号B+块内地址W

Cache地址:组号g + 组内块号b + 块内地址w

组间是直接映射关系,组内是全相连映射关系

对应关系:组号G=组号g,组内块号B通过地址变换表对应于组内块号b , 块内地址W = 块内地址 w

上面文字描述如下图所示:

Cache与主存的映射及计算(转)

下面看看历年的题:

Cache与主存的映射及计算(转)

分析:

假设高速缓存的命中率为X,那么根据公式有3X+30(1-X)=3.27,解得命中率为99%。

在全相连方式下Cache地址根据主存号查地址变换表所得的Cache块号和Cache块内地址拼接而成。主存容量为256MB/1MB=256块,256为2的8次方,因此主存号占高位二进制位(相当于2位16进制位),(由于主存地址由主存号和块内地址组成,所以其余的位为块内地址所占)。由于主存地址为8888888H,所以高位88H为主存块地址,低五位的88888H为块内地址。对应地址转换表,可得Cache块号为1,拼接上主存的块内地址就可以得到Cache地址。此题得解。

类似题型还有:

● 某32位计算机的CACHE容量为16KB,CACHE块的大小为16B.若主存与CACHE的地址映射采用直接映射,则主存地址为1234E8F8(十六进制),的单元装入的CACHE地址为__10 1000 1111 1000_____ (二进制)

● 容量为64的cache采用组相联的方式映像,字块大小为128个字,每4块为一组。若主容量为4096块,且以字编址,那么主存地址应为___19___位,主存区号应为___6___位。