使用ALU,RAM,寄存器打造一个CPU(下)

ADD操作码

后四位ADDRESS OR REGISTERS解释

在指令表中我们看到ADD指令的后四位「寄存器 OR RAM地址一列中,列出来的不是之前的RAM地址而是两位的寄存器ID」。两位可以表示四个数字,正好对应ABCD四个寄存器。使用ALU,RAM,寄存器打造一个CPU(下)

解码过程

从上面的RAM中可以看到,指令地址2就是一个ADD的指令使用ALU,RAM,寄存器打造一个CPU(下)

拆解出这个ADD要使用的两个寄存器(后四位):0100

01表示寄存器B,00表示寄存器A。

所以1000 0100的意思是:将寄存器B的值加到寄存器A中

执行过程

加法需要利用到上一篇文章讲的ALU逻辑运算单元。因为ALU需要接受输入而控制单元可以控制素有的寄存器所以需要把ALU连接至控制单元。通过控制单元打开对应的寄存器输出来让ALU接受输入,来看下面的步骤:

1.「让ALU接受输入」:控制单元启用寄存器B的允许读取线,作为ALU的第一个输入,控制单元启用寄存器A的允许读取线,作为ALU的第二个输入

2.「告知ALU进行哪种运算操作:」 控制单元传递ALU中的ADD操作码告知ALU进行加法运算

3.ALU输出结果保存:注意「此时的A的允许读取还打开着并且ALU还在继续工作,如果控制单元直接把输出给到寄存器A,那么ALU就会不断进行运算」。所以「控制单元有一个自己的寄存器暂时保存结果,接着关闭ALU,然后把值再写入正确的寄存器A中」

4.「取下一条指令指令地址寄存器+1」:执行阶段结束。开始下一个取指令阶段,又开始下一次的循环~~

总结

用一张图来表示。当ALU计算出结果后将结果传送至控制单元,控制单元内部寄存器存储这个结果,然后把ALU关闭,再把内部寄存器存储的值给到寄存器A(这是打开的是寄存器A的允许写入)

使用ALU,RAM,寄存器打造一个CPU(下)

时钟速度,时钟周期

刚刚我们是一步一步进行讲解的这个过程:”取指令-》解码-》执行“,计算机中「控制执行这个循环的节奏是通过”时钟“来负责的。」

「时钟以精确的间隔,触发电信号,控制单元用这个信号,推进CPU的内部操作,确保一切按顺序执行。时钟不能太快,因为就算是电也要有一定时间来传输」

定义

「CPU ”取指令-》解码-》执行“的速度叫做”时钟速度“。单位是赫兹HZ,赫兹是用来表示频率的单位,一赫兹表示一个周期。下面那个Clock就是时钟的代表」

使用ALU,RAM,寄存器打造一个CPU(下)

第一个单芯片CPU-英特尔4004

使用ALU,RAM,寄存器打造一个CPU(下)

这是他的微架构,可以看到和我们上面组装的差不多。

使用ALU,RAM,寄存器打造一个CPU(下)

降频&超频

上面的第一个单芯片CPU,它的时钟速度达到了740千次赫兹,每秒74万次,这已经很快了,但是现在更快~~

「一兆赫兹是一秒一百万个时钟周期,现在人们用的电脑和手机肯定几千兆赫兹,也就是一秒钟十亿次时钟周期」

超频

「也就是修改时钟速度,加快CPU速度」

「芯片制造商经常给CPU留一点余地,可以接受一点超频,但是超频过多会让CPU过热或产生乱码,因为信号跟不上时钟」

降频省电

有时我们没有必要让处理器全速允许,比如用户走开了,或者在跑一个性能要求极低的程序,把「CPU的速度降下来,可以省很多电.」

动态调整频率

省电对于用电池的设备很重要,比如笔记本和手机,为了更省电,很多现代处理器可以按需求加快或减慢时钟速度,这叫动态调整频率.

抽象-CPU

使用ALU,RAM,寄存器打造一个CPU(下)

「RAM是在CPU外面的独立组件」,CPU和RAM之间「通过”地址线“,”数据线“和”允许读/写线“进行通信,」 上面提到的很多机制依然存在于现代处理器里。

结束

「下一篇文章我们进行加强CPU,给他扩展更多指令」


原文始发于微信公众号(北洋洋洋):使用ALU,RAM,寄存器打造一个CPU(下)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/75951.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!