深入浅出计算机组成原理
徐文浩
bothub 创始人
70432 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
深入浅出计算机组成原理
15
15
1.0x
00:00/00:00
登录|注册

19 | 建立数据通路(下):指令+运算=CPU

单指令周期处理器
时钟信号控制
自动计数器实现
指令周期、CPU周期和时钟周期的差异
程序跳转实现
指令执行过程
CPU实现的抽象逻辑图
3-8译码器
2-1选择器
寻址电路
PC寄存器/程序计数器
建立数据通路,构造最简单的CPU
读写数据所需要的译码器
时钟信号实现计数器
运算器
控制器
计算机“自动”跑起来
控制数据的读写
时钟信号实现
CPU执行无条件跳转的特点
《计算机组成与设计 硬件/软件接口》
《编码:隐匿在计算机软硬件背后的语言》
单指令周期处理器的挑战
时钟信号的作用
CPU的五大组成部分
如何把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
立即购买
登录 后留言

全部留言(37)

  • 最新
  • 精选
  • 小海海
    (手滑点了保存,接上条)无条件跳转意味着没有计算的逻辑,应该是可以不经过ALU的,但是要控制器把PC设置成跳转后的指令地址,不知我理解的对不对🤣

    作者回复: 小海海同学你好, 回答正确😀

    2019-06-07
    31
  • 小海海
    @陈华应 我的理解无条件跳转就是goto,是没有比较结果的

    作者回复: 👍

    2019-06-07
    8
  • Leoorz
    老师,对于图1的PC计数器,有个疑问,如果图中的D触发器,是电平触发的,那CLK置1的时间段内, 触发器输出->加法器+1->触发器输出...... 应该一直进行该循环计算并自增,只有当D触发器是 沿触发的,才会在时钟上升沿只加1次,不知道理解是否有误

    作者回复: HardToGiveaName同学, 你好,这样理解没有问题

    2020-01-21
    3
  • 鱼向北游
    应该是无条件跳转没有cmp吧

    作者回复: 鱼向北游同学,你好 cmp是一条单独的指令,和跳转是否是有条件的没有关系。无条件跳转不需要检查条件码寄存器哦。可以想想这样的话,在硬件上有什么区别呢?

    2019-06-11
    3
  • humor
    一个指令的执行想用多少个时钟周期都可以吗?

    作者回复: humor同学你好, 一个指令需要的时钟周期是固定的,并不是多少个都可以啊。

    2019-06-10
    3
    2
  • 南山
    无条件跳转不需要依赖于比较结果吗?

    作者回复: 既然是“无条件”了,当然不依赖比较结果啦。

    2019-06-07
    2
  • 许先森
    老是您好有个问题: 文章说:cmp 指令的执行结果放到了条件码寄存器里面,我们的条件跳转指令也是在 ALU 层面执行的,而不是在控制器里面执行的。这样的实现方式在电路层面非常直观,我们不需要一个非常复杂的电路,就能实现 if…else 的功能。 但是else中是jmp指令,也就是无条件跳转,实际是不经过ALU的,而是控制器直接执行的。上文中所说是否有问题?

    作者回复: 许先森同学, 你好,抱歉我可能没有太理解清楚你的问题,你说的具体的问题是指哪个?

    2020-01-09
  • 姜海天
    强烈推荐一本书《自己动手写CPU》,使用这本书,再结合老师的课程,可以自己实现一个简单的CPU!这本书比较友好,是入门级书籍,理论+实战,能够更好地掌握计算机组成原理的理论知识~~
    2020-04-25
    48
  • 许童童
    《编码:隐匿在计算机软硬件背后的语言》这本书这几天看完了,写得真是很不错。希望老师再多推荐一些好看的书。
    2019-06-07
    20
  • 张立昊Leon
    还记得当年数电考试分还挺高的,不知道有啥用。后面就直接学c++,嵌入式系统之类的课程,跳过了中间的计算机组成,操作系统之类的东西,万恶的电气系学科体系...嵌入式系统当时学得完全不知所云,也极大的损害了我对这些东西的兴趣,今天在这里总算补学了一些重要的东西啊
    2019-07-01
    4
    8
收起评论
显示
设置
留言
37
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部