通过对方格中每个点设置相应的CMYK值就可以将方格图上相应的颜色。以下三个程序段都可实现对一个8×8的方格中图上黄色的功能。假设cache的数据区大小为512B,采用直接映射,块大小为32B,存储器按字节编址,sizeof(int)=4。编译时变量i和j分配在寄存器中,数组square按行优先方式存放在000008C0H开始的连续区域中,主存地址为32位。
问答题画出主存中的数组元素和cache中行的对应关系图。
问答题对三个程序段A、B、C中数组访问的时间局部性和空间局部性进行分析比较。
问答题以下是对矩阵进行转置的程序段: 假设该段程序运行的计算机中sizeof(int)=4,且只有一级cache,其中L1 data cache的数据区大小为32B,采用直接映射、写回方式,块大小为16B,初始为空。数组dst从地址0000C000H开始存放,数组src从地址0000C040H开始存放。填写下表,说明数组元素src[row][col]和dst[row][col]映射到cache的哪一行,其访问是命中(hit)还是失效(miss)。若L1 data cache的数据区容量改为128B时,重新填写表中内容。
问答题以下是计算两个向量点积的程序段:要求: (1)试分析该段代码中数组x和y的时间局部性和空间局部性,并推断命中率的高低。 (2)假定该段程序运行的计算机的数据cache采用直接映射方式,其数据区容量为32字节,每个主存块大小为16字节。假定编译程序将变量sum和i分配给寄存器,数组x存放在00000040H开始的32字节的连续存储区中,数组y紧跟在x后进行存放。试计算该程序数据访问的命中率,要求说明每次访问的cache命中情况。 (3)将上述(2)中的数据cache改用2-路组相联映射方式,块大小改为8字节,其他条件不变,则该程序数据访问的命中率是多少? (4)在上述(2)中条件不变的情况下,如果将数组x定义为float[12],则数据访问的命中率是多少?
问答题分析比较以下三个函数的空间局部性,并指出哪个最好,哪个最差?