问答题 通过对方格中每个点设置相应的CMYK值就可以将方格图上相应的颜色。以下3个程序段都可实现对一个8×8的方格图上黄色的功能。
问答题 对3个程序段A、B、C中数组访问的时间局部性和空间局部性进行分析比较。
【正确答案】对于时间局部性来说: 在程序段A、B和C中,每个数组元素都只被访问一次,所以都没有时间局部性。 对于空间局部性来说: 程序段A访问顺序和存放顺序一致,所以空间局部性好。 程序段B访问顺序和存放顺序不一致,所以空间局部性不好。 程序段C虽然访问顺序和存放顺序一致,但同一个主存块有两次访问,所以空间局部性不好。
【答案解析】
问答题 画出主存中的数组元素和Cache中行的对应关系图。
【正确答案】Cache的行数为512B/32B=16;数组首地址为0000 0C80H,因为0000 0C80H正好是主存第1100100B(100)块的起始地址,所以数组从主存第100块开始存放,一个数组元素占4×4B=16B,每两个数组元素占用一个主存块。8×8的数组共占用32个主存块,正好是Cache数据区大小的两倍。因为100 mod 16=4,所以主存第100块映射到的Cache行号为4。主存中的数组元素与Cache行的映射关系如图所示。 [*]
【答案解析】
问答题 计算3个程序段A、B、C中的写Cache操作次数、写Cache不命中次数和写Cache缺失率。
【正确答案】对于程序段A:每两个数组元素(共涉及8次写操作)装入到一个Cache行中,总是第一次访问时未命中,后面7次都命中,所以总的写Cache操作次数为64×4=256次,写Cache不命中次数为256×1/8=32次,因而写Cache缺失率为12.5%。 对于程序段B:每两个数组元素(共涉及8次写操作)装入到一个Cache行中,但总是只有一个数组元素(涉及4次写操作)在被淘汰之前被访问,并且总是第一次不命中,后面3次命中,所以写Cache不命中次数为256×1/4=64次,因而写Cache缺失率为25%。 对于程序段C:第一个循环共64次访问,每次装入两个数组元素,第一次不命中,第二次命中;第二个循环共访问64×3次,每两个数组元素(共涉及6次写操作)装入到一个Cache行中,并且总是第一次不命中,后面5次命中,所以总的写Cache不命中次数为32+(3×64)×1/6=64次,因而写Cache缺失率为25%。
【答案解析】