某计算机的主存地址空间大小为256MB, 按字节编址。指令cache和数据cache分离,均有8个cache行,每个cache行大小为64B, 数据cache采用直接映射方式。现有两个功能相同的程序1和程序2, 其伪代码如下所示: 程序1: int a[256][256]: ...... int sum_array1() { int i,j, sum=0; for (i=0;i<256;i++) for (j=0;j<256;j++ 程序2: int a[256][256]; ...... int sum_array2() { int i, j, sum=0; for (j=0;j<256;j++) for(i=0;i<256;i++) 假定int类型数据用32位补码表示, 程序编译是, i, j, sum 均分配在寄存器中, 数据a按行优先方式存放,其首地址为320(十进制数)。请回答问题, 要求说明理由或给出计算过程。 (1)若不考虑用于cache一致性维护和替换算法的控制位, 则数据cahce的总容量为多少? (2)数据元素a[0][31]和a[1][1]各自所在的主存块对应的cache行号分别是多少(cache行号从0开始)? (3)程序A和B的数据访问命中率各是多少?那个程序的执行时间更短? (本题选做)