有以下程序段<br /> int x=3<br /> do<br /> { printf(""%d"",x-=2); }<br /> while (!(--x));<br /> 其输出结果是()
A、1
B、3、0
C、1、-2
D、死循环
A、1
B、3、0
C、1、-2
D、死循环
A、以下是计算两个向量点积的程序段:要求:<br /> <br /> (1)试分析该段代码中数组x和y的时间局部性和空间局部性,并推断命中率的高低。<br /> (2)假定该段程序运行的计算机的数据cache采用直接映射方式,其数据区容量为32字节,每个主存块大小为16字节。假定编译程序将变量sum和i分配给寄存器,数组x存放在00000040H开始的32字节的连续存储区中,数组y紧跟在x后进行存放。试计算该程序数据访问的命中率,要求说明每次访问的cache命中情况。 <br /> (3)将上述(2)中的数据cache改用2-路组相联映射方式,块大小改为8字节,其他条件不变,则该程序数据访问的命中率是多少? <br /> (4)在上述(2)中条件不变的情况下,如果将数组x定义为float[12],则数据访问的命中率是多少?