计算机体系结构基础(第3版)
上QQ阅读APP看书,第一时间看更新

习题

1.请说明LoongArch指令系统中为何要定义ERTN指令以用于异常处理的返回。

2.简述LoongArch与X86在异常处理过程中的区别。

3.简述精确异常与非精确异常的区别,并在已有的处理器产品实现中找出一个非精确异常示例。

4.在一台Linux/LoongArch机器上执行如下程序片段,假设数组a和b的起始地址都是8KB边界对齐的,操作系统仅支持4KB页大小。处理器中的TLB有32项,采用LRU替换算法。如果在该程序片段开始执行前数组a和b均从未被访问过,且程序片段执行过程中未发生中断,同时忽略程序代码和局部变量i所占地址空间的影响,请问执行该程序片段的过程中会发生多少次与TLB地址翻译相关的异常?


void cycle(double * a){
         int i;
         double b[65536];
         for(i=0; i<3; i++)
                for(j=0; j<65536; j++)
                      a[j] = b[j];
}

5.请用C语言伪代码形式描述一台64位LoongArch机器上的TLB进行访存虚实地址转换的过程(包含TLB地址翻译相关异常的判定过程)。(提示:①可以将TLB的每一项定义为一个结构体,将整个TLB视作一个结构体数组;②无须直接体现过程中电路的并发执行特性,只需要确保最终逻辑状态一致即可。)