19 | 建立数据通路(下):指令+运算=CPU
徐文浩
该思维导图由 AI 生成,仅供参考
上一讲,我们讲解了时钟信号是怎么实现的,以及怎么利用这个时钟信号,来控制数据的读写,可以使得我们能把需要的数据“存储”下来。那么,这一讲,我们要让计算机“自动”跑起来。
通过一个时钟信号,我们可以实现计数器,这个会成为我们的 PC 寄存器。然后,我们还需要一个能够帮我们在内存里面寻找指定数据地址的译码器,以及解析读取到的机器指令的译码器。这样,我们就能把所有学习到的硬件组件串联起来,变成一个 CPU,实现我们在计算机指令的执行部分的运行步骤。
PC 寄存器所需要的计数器
我们常说的 PC 寄存器,还有个名字叫程序计数器。下面我们就来看看,它为什么叫作程序计数器。
有了时钟信号,我们可以提供定时的输入;有了 D 型触发器,我们可以在时钟信号控制的时间点写入数据。我们把这两个功能组合起来,就可以实现一个自动的计数器了。
加法器的两个输入,一个始终设置成 1,另外一个来自于一个 D 型触发器 A。我们把加法器的输出结果,写到这个 D 型触发器 A 里面。于是,D 型触发器里面的数据就会在固定的时钟信号为 1 的时候更新一次。
这样,我们就有了一个每过一个时钟周期,就能固定自增 1 的自动计数器了。这个自动计数器,可以拿来当我们的 PC 寄存器。事实上,PC 寄存器的这个 PC,英文就是 Program Counter,也就是程序计数器的意思。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了如何通过连接不同功能的电路,实现一个完整的CPU。首先介绍了自动计数器的作用,它不断生成下一条要执行的计算机指令的内存地址,然后通过译码器从内存中读出对应的指令,写入到指令寄存器中。接着讲解了指令的解析和操作数的地址,以及ALU进行计算并将结果写回到寄存器和内存中的过程。文章还强调了时钟信号对于协调指令执行时间和顺序的重要性,以及单指令周期处理器的设计原理。此外,还解释了为什么CPU在执行无条件跳转时不需要通过运算器和ALU,而可以直接在控制器中完成。总的来说,本文通过简洁明了的语言,帮助读者快速了解了CPU的基本概念和技术特点,适合对计算机CPU运行感兴趣的读者阅读。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出计算机组成原理》,新⼈⾸单¥68
《深入浅出计算机组成原理》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(37)
- 最新
- 精选
- 小海海(手滑点了保存,接上条)无条件跳转意味着没有计算的逻辑,应该是可以不经过ALU的,但是要控制器把PC设置成跳转后的指令地址,不知我理解的对不对🤣
作者回复: 小海海同学你好, 回答正确😀
2019-06-0731 - 小海海@陈华应 我的理解无条件跳转就是goto,是没有比较结果的
作者回复: 👍
2019-06-078 - Leoorz老师,对于图1的PC计数器,有个疑问,如果图中的D触发器,是电平触发的,那CLK置1的时间段内, 触发器输出->加法器+1->触发器输出...... 应该一直进行该循环计算并自增,只有当D触发器是 沿触发的,才会在时钟上升沿只加1次,不知道理解是否有误
作者回复: HardToGiveaName同学, 你好,这样理解没有问题
2020-01-213 - 鱼向北游应该是无条件跳转没有cmp吧
作者回复: 鱼向北游同学,你好 cmp是一条单独的指令,和跳转是否是有条件的没有关系。无条件跳转不需要检查条件码寄存器哦。可以想想这样的话,在硬件上有什么区别呢?
2019-06-113 - humor一个指令的执行想用多少个时钟周期都可以吗?
作者回复: humor同学你好, 一个指令需要的时钟周期是固定的,并不是多少个都可以啊。
2019-06-1032 - 南山无条件跳转不需要依赖于比较结果吗?
作者回复: 既然是“无条件”了,当然不依赖比较结果啦。
2019-06-072 - 许先森老是您好有个问题: 文章说:cmp 指令的执行结果放到了条件码寄存器里面,我们的条件跳转指令也是在 ALU 层面执行的,而不是在控制器里面执行的。这样的实现方式在电路层面非常直观,我们不需要一个非常复杂的电路,就能实现 if…else 的功能。 但是else中是jmp指令,也就是无条件跳转,实际是不经过ALU的,而是控制器直接执行的。上文中所说是否有问题?
作者回复: 许先森同学, 你好,抱歉我可能没有太理解清楚你的问题,你说的具体的问题是指哪个?
2020-01-09 - 姜海天强烈推荐一本书《自己动手写CPU》,使用这本书,再结合老师的课程,可以自己实现一个简单的CPU!这本书比较友好,是入门级书籍,理论+实战,能够更好地掌握计算机组成原理的理论知识~~2020-04-2548
- 许童童《编码:隐匿在计算机软硬件背后的语言》这本书这几天看完了,写得真是很不错。希望老师再多推荐一些好看的书。2019-06-0720
- 张立昊Leon还记得当年数电考试分还挺高的,不知道有啥用。后面就直接学c++,嵌入式系统之类的课程,跳过了中间的计算机组成,操作系统之类的东西,万恶的电气系学科体系...嵌入式系统当时学得完全不知所云,也极大的损害了我对这些东西的兴趣,今天在这里总算补学了一些重要的东西啊2019-07-0148
收起评论