CSAPP Architechture Lab
知识点
在上一章"程序的机器级表示"中,我们可以知道所谓ISA(指令集体系结构)定义了机器级程序的格式和行为: P113
-
定义了指令的格式(编码方式)
-
定义了处理器状态
-
定义了每条指令对状态的影响
软件设计师和硬件设计师以ISA为规则,分别编写出合法的汇编程序,制造出实现ISA描述的行为的逻辑电路
在上一章"程序的机器级表示"是在我们的图中ISA上层;在这章"处理器体系结构",则位于ISA下层,其重点描述了:
-
ISA定义的每条指令如何进行独一无二的编码 P245
from bilibili 九曲阑干 可以看到绿框中,这些数字是对指令编码后的16进制表示
-
一条指令是如何分为
取指
,译码
,执行
,访存
,写回
,更新PC
这六个阶段,同时利用流水线技术对这六个阶段进行并行执行
时钟:我们需要时序电路,即有状态并且在这个状态上进行计算的系统,我们引入了按位存储信息的设备。存储设备都是由同一个时钟控制的,时钟是一个周期信号,决定什么时候要把新值加载到设备中,即决定什么时候状态进行改变。
-
硬件寄存器:即时钟寄存器(register),就是我们上面提及到的计算机中的一种按位存储信息的设备。
-
程序寄存器:程序寄存器就单单指CPU中寻址使用的寄存器
比如%rdi,%rdx,%rax这些寄存器,这些所有的程序寄存器组合到一起就是寄存器堆也叫寄存器文件(register file)。
我们一般是在"程序的机器级表示"中常常叫的是程序寄存器,而在"处理器体系结构"我们常常加的是寄存器文件
试想一下,为何上述一个指令的全阶段(取指
,译码
,执行
,访存
,写回
,更新PC
)只能顺序执行?
我能不能就按照这个结构进行指令全阶段的并行执行?
不能!因为各个阶段的执行的结果都还只在电路上,只有最后访存
,写回
,更新PC
这些阶段当是时钟高频信号来了,才写到硬件寄存器中。
我们为每一个阶段加上硬件寄存器,保存每一个阶段执行的结果
这样,当第n条指令的取指阶段完成后,时钟高频信号来了,将信息保存在硬件寄存器中,这是第n条指令译码阶段的输入
然后便可以执行第n+1条指令的取指阶段,完成后时钟高频信号来了,将信息保存在硬件寄存器中,这是第n+1条指令译码阶段的输入。这个时候我们也已经完成了第n条指令译码阶段。
本文作者:次林梦叶
本文链接:https://www.cnblogs.com/cilinmengye/p/18075173
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律