音无结弦之时,天使跃动之心。立于浮华之世,奏响天籁之音。.|

次林梦叶

园龄:3年3个月粉丝:22关注:3

CSAPP Architechture Lab

image

from pixiv

知识点

image

在上一章"程序的机器级表示"中,我们可以知道所谓ISA(指令集体系结构)定义了机器级程序的格式和行为: P113

  • 定义了指令的格式(编码方式)

  • 定义了处理器状态

  • 定义了每条指令对状态的影响

软件设计师和硬件设计师以ISA为规则,分别编写出合法的汇编程序,制造出实现ISA描述的行为的逻辑电路

在上一章"程序的机器级表示"是在我们的图中ISA上层;在这章"处理器体系结构",则位于ISA下层,其重点描述了:

  • ISA定义的每条指令如何进行独一无二的编码 P245

    image

    from bilibili 九曲阑干

    可以看到绿框中,这些数字是对指令编码后的16进制表示

  • 一条指令是如何分为取指译码执行访存写回更新PC这六个阶段,同时利用流水线技术对这六个阶段进行并行执行


时钟:我们需要时序电路,即有状态并且在这个状态上进行计算的系统,我们引入了按位存储信息的设备。存储设备都是由同一个时钟控制的,时钟是一个周期信号,决定什么时候要把新值加载到设备中,即决定什么时候状态进行改变。

  • 硬件寄存器:即时钟寄存器(register),就是我们上面提及到的计算机中的一种按位存储信息的设备。

  • 程序寄存器:程序寄存器就单单指CPU中寻址使用的寄存器

    比如%rdi,%rdx,%rax这些寄存器,这些所有的程序寄存器组合到一起就是寄存器堆也叫寄存器文件(register file)。

    我们一般是在"程序的机器级表示"中常常叫的是程序寄存器,而在"处理器体系结构"我们常常加的是寄存器文件


image

from bilibili 九曲阑干

试想一下,为何上述一个指令的全阶段(取指译码执行访存写回更新PC)只能顺序执行?

我能不能就按照这个结构进行指令全阶段的并行执行?

不能!因为各个阶段的执行的结果都还只在电路上,只有最后访存写回更新PC这些阶段当是时钟高频信号来了,才写到硬件寄存器中。

我们为每一个阶段加上硬件寄存器,保存每一个阶段执行的结果

image

from bilibili 九曲阑干

这样,当第n条指令的取指阶段完成后,时钟高频信号来了,将信息保存在硬件寄存器中,这是第n条指令译码阶段的输入

然后便可以执行第n+1条指令的取指阶段,完成后时钟高频信号来了,将信息保存在硬件寄存器中,这是第n+1条指令译码阶段的输入。这个时候我们也已经完成了第n条指令译码阶段。

本文作者:次林梦叶

本文链接:https://www.cnblogs.com/cilinmengye/p/18075173

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   次林梦叶  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起