17 | 建立数据通路(上):指令+运算=CPU
徐文浩
该思维导图由 AI 生成,仅供参考
前面几讲里,我从两个不同的部分为你讲解了 CPU 的功能。
在“指令”部分,我为你讲解了计算机的“指令”是怎么运行的,也就是我们撰写的代码,是怎么变成一条条的机器能够理解的指令的,以及是按照什么样的顺序运行的。
在“计算”部分,我为你讲解了计算机的“计算”部分是怎么执行的,数据的二进制表示是怎么样的,我们执行的加法和乘法又是通过什么样的电路来实现的。
然而,光知道这两部分还不能算是真正揭开了 CPU 的秘密,只有把“指令”和“计算”这两部分功能连通起来,我们才能构成一个真正完整的 CPU。这一讲,我们就在前面知识的基础上,来看一个完整的 CPU 是怎么运转起来的。
指令周期(Instruction Cycle)
前面讲计算机机器码的时候,我向你介绍过 PC 寄存器、指令寄存器,还介绍过 MIPS 体系结构的计算机所用到的 R、I、J 类指令。如果我们仔细看一看,可以发现,计算机每执行一条指令的过程,可以分解成这样几个步骤。
1.Fetch(取得指令),也就是从 PC 寄存器里找到对应的指令地址,根据指令地址从内存里把具体的指令,加载到指令寄存器中,然后把 PC 寄存器自增,好在未来执行下一条指令。
2.Decode(指令译码),也就是根据指令寄存器里面的指令,解析成要进行什么样的操作,是 R、I、J 中的哪一种指令,具体要操作哪些寄存器、数据或者内存地址。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入解释了CPU内部数据通路的构建和运作原理,以及指令周期、机器周期和时钟周期之间的关系。文章详细介绍了指令周期的执行过程,包括取指令、指令译码和执行指令等步骤,并讨论了CPU所需的硬件电路,如ALU、寄存器、自动执行电路和译码电路。此外,文章还提到了CPU所需的四种基本电路,包括组合逻辑电路、存储电路、计数器电路和译码器电路。通过深入浅出的方式,读者能够清晰理解CPU内部各个组件的功能和相互关系。建议读者结合教科书和更高层次的抽象逻辑来学习数据通路,以更深入地理解相关问题。同时,读者还被鼓励思考CPU为何会有满载运行和Idle闲置的状态,并在留言区分享自己的思考和答案。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出计算机组成原理》,新⼈⾸单¥68
《深入浅出计算机组成原理》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(41)
- 最新
- 精选
- kdb_reboot很喜欢这几章;大二时学数电,期末考了93分,但是仍然不知道它能做什么用,内心有困惑,但是也没更多的坚持这个问题;感谢你
作者回复: 👍一起加油
2019-06-069 - LDxyCPU在空闲状态就会停止执行,具体来说就是切断时钟信号,CPU的主频就会瞬间降低为0,功耗也会瞬间降低为0。由于这个空闲状态是十分短暂的,所以你在任务管理器里面也只会看到CPU频率下降,不会看到降低为0。当CPU从空闲状态中恢复时,就会接通时钟信号,这样CPU频率就会上升。所以你会在任务管理器里面看到CPU的频率起伏变化。这个知识也是我找工作面试时才学到的。2019-06-045162
- Akizuki操作系统内核有 idle 进程,优先级最低,仅当其他进程都阻塞时被调度器选中。idle 进程循环执行 HLT 指令,关闭 CPU 大部分功能以降低功耗,收到中断信号时 CPU 恢复正常状态。2019-06-0559
- 黄马uptime 命令查看平均负载 满载运行就是平均负载为1.0(一个一核心CPU) 定义为特定时间间隔内运行队列中的平均线程数。load average 表示机器一段时间内的平均load。 这个值越低越好。负载过高会导致机器无法处理其他请求及操作,甚至导致死机 当CUP执行完当前系统分配的任务,为了省电,系统将执行空闲任务(idle task),这个任务循环执行HLT指令,CPU就会停止指令的执行,并且让CPU处于HALT状态,CPU虽然停止指令执行,并且CPU的部分功能模块将会被关闭(达到降低功耗的目的),但是CPU的LAPIC(Local Advanced Programmable Interrupt Controller)并不会停止工作,即CPU将会继续接收外部中断、异常等外部事件(事实上,CPU HALT状态的退出将由外部事件触发).当CPU接收到这些外部事件的时候,将会从HALT状态恢复回来,执行中断服务函数,并且当中断服务函数执行完毕后,指令寄存器(CS:EIP)将会指向HLT指令的下一条指令,即CPU继续执行HLT指令之后的程序2019-10-2143
- 活的潇洒要想成功三个动作很重要 1、做出来 2、写出来 3、讲出来 三个非常重要,缺一不可 day17 笔记:https://www.cnblogs.com/luoahong/p/11330406.html2019-08-21225
- roger程序计数器一直在变化,就是满载吧,持续不变就是idle。CPU密集型任务需要CPU大量计算的任务,这个时候CPU负载就很高,IO密集型任务,CPU一直在等待IO,就会有idle。2019-08-1219
- 旺旺cpu执行速度非常快,消耗性能资源也比较快。但实际上,电脑并不是时刻都需要进行大量运算。 所以,CPU需要一种“闲置”状态,来平衡这种矛盾(需要忙时,可以全速奔跑;暂无事务时,又可节能地随时待命。) “Idle 闲置”是一种低功耗的状态,cpu在执行最低功耗的循环指令。实际上并非啥都没干,而是一直在干最最轻松的事儿。2019-06-04115
- A君所谓构建数据通路,就是把各种组建通过线路组合起来,让他们可以完成数据存储、处理和传输的操作。数据处理部分自然是交给ALU组合逻辑计算元件,它是由大量运算器组合而成;数据存储自然是交给各种寄存器,存储的数据除了有计算数据外,还有各种状态,以及指令的地址;负责读取指令,将指令转换成电信号的就是译码器;为了让fetch-decode-execute这个循环体运作下去,还需要一个自动设备。2020-06-259
- 九云指令周期、时钟周期2个概念就够了。引入CPU周期这个概念,要解释什么问题呢?2019-11-1536
- djfhchdhcpu满载和空闲的分别主要是操作系统调度任务导致的,如果操作系统调度了一个高优先级的任务,那么cpu就优先执行这个任务即满载,如果操作系统调度了一个低优先级的idle任务,那么cpu就执行这个idle任务,显示为空闲状态,空闲即假装“没事做”,其实当有其他更高优先级的任务调度时,就可以抢占它,去执行更高优先级的任务2019-06-186
收起评论