单选题 假定主存地址位数为32位,按字节编址,主存和Cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用全写(Write-Through)方式,则能存放32K字数据的Cache的总容量至少应有______。
  • A.1504Kbit
  • B.1536Kbit
  • C.1568Kbit
  • D.1600Kbit
【正确答案】 B
【答案解析】[解析] Cache的一个高速缓存行的结构如下图1所示。
[*]

图1 Cache的一个高速缓存行的结构

只要求出标记位数即可求得高速缓存行的位数,进而求取Cache的总容量。
直接映射方式中,组数就是行数,即32K个组,需要组号位为15位,又块大小为32bit,按字节寻址,故块内地址需要2位。剩余的32-15-2=15位为标记位,即图1中的“?”等于15。
主存地址的分割情况如图2所示。
[*]

图2 主存地址的分割情况

综上,Cache中的一个高速缓存行的位数为1+15+32=48位,又有32K个行,故Cache的总容量为48 bit×32K=1536Kbit,故本题选B。
写回法:当CPU写Cache命中时,只修改Cache的内容,而不立即写入主存;只有当此行被换出时才写回主存,所以这种方式就可以减少访问主存的次数。为了记录此块是否被修改过,对Cache的每行都要设置一个修改位。
全写法:当写Cache命中时,Cache与主存同时发生写修改,因而较好地维护了Cache与主存内容的一致性。很明显此时Cache不需要每行都设置修改位。
有效位:有效位用来标识Cache存储块中的数据是否有效,因为有时候Cache中的数据是无效的,例如在初始时刻Cache应该是空的,其中的内容是无意义的,其有效位都为0。