某计算机主存按字节编址,虚拟(逻辑)地址空间大小为256MB,主存(物理)地址空间大小为16MB,页面大小4KB;指令Cache和数据Cache分离;数据Cache采用直接映射方式,共8块;主存与Cache之间交换的块大小为32B。系统运行到某一时刻时,页表的部分内容和Cache地址映射表的内容分别如图a、图b所示,图中实页号及标记字段的内容为十六进制形式。请回答下列问题:
(1)(3分)虚拟地址共有几位,哪几位表示虚页号?物理地址共有几位,哪几位表示实页号?
(2)(2分)使用物理地址访问Cache时,物理地址应划分成哪几个字段?说明每个字段的位数及在物理地址中的位置。
(3)(4分)虚拟地址00056A8H所在的页面是否在主存中?若在主存中,则该虚拟地址对应的物理地址是什么?访问该物理地址时是否命中Cache?如果命中Cache,对应的Cache内部地址是什么?请写出计算过程并说明理由。
(4)(5分)现有两个功能相同的程序A和B,其伪代码如下所示:
假定int类型数据用32位补码表示,程序编译时i,j,sum均分配在寄存器中,数组a在内存中按行优先方式存放,其首地址为768(十进制数),且程序执行之前数组a的任何元素均不在Cache中。请问:程序A和B的数据访问Cache命中率各是多少?哪个程序的执行时间更短?要求说明理由或给出计算过程。