这次考试主要遇到一下题目,不大确定。
一、big endian 和 little endian,虽然概念清楚,但运用时有些问题,如数据为ABCD时,机器是32位的,那么有little endian应该地址从低到高,其中一个字母为1btye,则顺序为D-C-B-A。因为是一个字就可以放得下。如果数据为0xABCD,则,应该为B-A-D-C。因为0x表示16进制,占两个btye。
二、Cache命中的问题。题目本来很简单,但弄复杂了,如下:
Cache 64Byte 采用2路组关联,每个块大小为8Byte。问假设原Cache为空,如下访问时,最后Cache的状态,不确定的用X表示
{address,data,type}
{0x100, 0xABCDEFGH, LONG}
{0x200, 0x55AA, HALF-WORD}
{0x120, 0x6677, HALF-WORD}
{0x130, 0x7788, HALF-WORD}
结果应该是:
一共8块,组数为4,其中最后5为 00|| 000 前面用来确定组号,后边用来做偏移,数据为16进制,占半个byte
第一步, 最后为00 || 000,因此在0组数据为地址从高到低,即7-0 {XX||XX||XX||XX||GH||EF||CD||AB} TAG为0x100取前面27位
第二步,最后为 00||000 ,因此0组从高到低地址即,15-8 {XX||XX||XX||XX||XX||XX||AA||55}
第三步,最后为 00||000,因此根据LRU换出,得到7-0 {XX||XX||XX||XX||XX||XX||77||66}
第四步,最后为 10||000 ,因此,在第二组,得到高到低地址排列 {XX||XX||XX||XX||XX||XX||88||77}
主要这次遇到的是这两个问题,其他没有太难,不过还是有几个不确定的,下次如果有机会,把不确定的记下来带出考场才行。
过两天把体系结构的 simplescalar的实验总结一下,发发。
null