组成原理
2019-46
补充条件(来源:2019 年第 45 题)
已知 f(n) = n! = n×(n-1)×(n-2)×…×2×1,计算 f(n) 的 C 语言函数 f1 的源程序(阴影部分)及其在 32 位计算机 M 上的部分机器级代码如下:
其中,机器级代码行包括行号、虚拟地址、机器指令和汇编指令,计算机M按字节编址,int型数据占32位。

本题题干
对于题45,若计算机M的主存地址为32位,采用分页存储管理方式,页大小为4KB,则第1行的 push 指令和第30行的 ret 指令是否在同一页中(说明理由)?若指令Cache有64行,采用4路组相联映射方式,主存块大小为64B,则32位主存地址中,哪几位表示块内地址?哪几位表示Cache组号?哪几位表示标记(tag)信息?读取第16行的call指令时,只可能在指令Cache的哪一组中命中(说明理由)?

小程序中我的-账号中心-隐私与账号可绑定网页端账号
答案
第 1 行 push 的地址为 00401000H,第 30 行 ret 的地址为 0040104AH,两者的高 20 位页号相同,因此在同一页中。
指令 Cache 有 64 行、4 路组相联,共 16 组;主存块大小为 64 B。因此 32 位地址中:
- 第 0~5 位:块内地址;
- 第 6~9 位:Cache 组号;
- 第 10~31 位:标记。
第 16 行 call 地址为 00401025H,其组号字段为 0000,只可能在第 0 组命中。