某计算机的主存地址位数为16位,按字节编址。假定数据Cache中最多存放32个主存块,采用2.路组相联方式,块大小为16B,每块设置了1位有效位。采用一次性写回策略,为此每块设置了1位“脏”位。请问:
问答题 主存地址中标记(Tag)、组号(Index)和块内地址(Offset)三部分的位置和位数分别是多少?该数据Cache的总位数是多少?
【正确答案】正确答案:块大小为16B,故块内地址为4位:Cache有32个主存块,采用2—路组相联,Cache分为16组(32÷2=16),故组号为4位;剩余位为标记,即有16位一4位一4位=8位。数据Cache的总位数应包括标记项的总位数和数据块的位数。每个Cache块对应一个标记项,标记项中包括标记字段、有效位和“脏"位(用于写回法)。主存地址中Tag为8位;组号为4位;块内地址为4位。标记项的总位数=32×(8+1+1)=16×10=320,数据块的位数=32×16×8=4096,因此数据Cache的总位数=320+4096=4416。
【答案解析】
问答题 设字长为4B,Cache起始为空,CPU从主存单元0,1,…,99,依次读出100个字(主存一次读出一个字),并重复按此次序读6次,问命中率为多少?
【正确答案】正确答案:由于每个字块有4个字,所以CPU的0,1,…,99字单元分别在字块0至24中,采用2.路组相联映射,字块0~字块15将分别映射到第0至第15组中;字块16~字块24将分别映射到第0至第8组中。但Cache起始为空,每一组有两个Cache块,因此当访问主存块16时不会将主存块0置换出。所以第一次读时每一块中的第一个字没命中,但后面5次每个字均可以命中。所以命中率=(6×100一25)/(6×100)=95.8%。
【答案解析】
问答题 如果块表中组号为10、行号为1的Cache块的标记为36H,有效位为1,则在CPU送来主存的字地址为36A8H时是否命中?若命中,此时Cache的字地址为多少?
【正确答案】正确答案:字地址36A8H对应的Cache组号为AH=10、标记为36H,块表中组号为10、行号为1的块标记为36H,且有效位为1,则当CPU送来主存的字地址为36A8H时,其主存块号为36H,所以命中。此时Cache字地址为A8H。
【答案解析】