这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » CPU到底是怎么识别代码的?

共6条 1/1 1 跳转至

CPU到底是怎么识别代码的?

专家
2020-11-13 07:49:57     打赏

最近读到这样一篇文章,从底层硬件角度出发剖析了一下CPU对代码的识别和读取,内容之精彩,读完感觉学到的很多东西瞬间联系起来了,分享给大家。

 

 

 

首先要开始这个话题要先说一下半导体。啥叫半导体?

 

半导体其实就是介于导体和绝缘体中间的一种东西,比如二极管。

图片7.png 

电流可以从A端流向C端,但反过来则不行。你可以把它理解成一种防止电流逆流的东西。

C端10V,A端0V,二极管可以视为断开。

C端0V,A端10V,二极管可以视为导线,结果就是A端的电流源源不断的流向C端,导致最后的结果就是A端=C端=10V

等等,不是说好的C端0V,A端10V么?咋就变成结果是A端=C端=10V了?

你可以把这个理解成初始状态,当最后稳定下来之后就会变成A端=C端=10V。

文科的童鞋们对不住了,实在不懂问高中物理老师吧。反正你不能理解的话就记住这种情况下它相当于导线就行了。

利用半导体,我们可以制作一些有趣的电路,比如【与门】

图片6.png 

此时A端B端只要有一个是0V,那Y端就会和0V地方直接导通,导致Y端也变成0V。只有AB两端都是10V,Y和AB之间才没有电流流动,Y端也才是10V。

我们把这个装置成为【与门】,把有电压的地方计为1,0电压的地方计为0。至于具体几V电压,那不重要。

也就是AB必须同时输入1,输出端Y才是1;AB有一个是0,输出端Y就是0。

其他还有【或门】【非门】和【异或门】,跟这个都差不多,或门就是输入有一个是1输出就是1,输入00则输入0。

非门也好理解,就是输入1输出0,输入0输出1。

异或门难理解一些,不过也就那么回事,输入01或者10则输出1,输入00或者11则输出0。(即输入两个一样的值则输出0,输入两个不一样的值则输出1)。

这几种门都可以用二极管做出来,具体怎么做就不演示了,有兴趣的童鞋可以自己试试。每次都画二极管也是个麻烦,我们就把门电路简化成下面几个符号。

图片5.png 

然后我们就可以用门电路来做CPU了。当然做CPU还是挺难的,我们先从简单的开始:加法器。

加法器顾名思义,就是一种用来算加法的电路,最简单的就是下面这种。

图片4.png 

AB只能输入0或者1,也就是这个加法器能算0+0,1+0或者1+1。

输出端S是结果,而C则代表是不是发生进位了,二进制1+1=10嘛。这个时候C=1,S=0

费了大半天的力气,算个1+1是不是特别有成就感?

那再进一步算个1+2吧(二进制01+10),然后我们就发现了一个新的问题:第二位需要处理第一位有可能进位的问题,所以我们还得设计一个全加法器。

图片3.png 

 

每次都这么画实在太麻烦了,我们简化一下

图片2.png 

也就是有3个输入2个输出,分别输入要相加的两个数和上一位的进位,然后输入结果和是否进位。

然后我们把这个全加法器串起来

图片1.png 

 

我们就有了一个4位加法器,可以计算4位数的加法也就是15+15,已经达到了幼儿园中班水平,是不是特别给力?

做完加法器我们再做个乘法器吧,当然乘任意10进制数是有点麻烦的,我们先做个乘2的吧。

2就很简单了,对于一个2进制数数我们在后面加个0就算是乘2了

比如:

 

5=101(2)

10=1010(2)

所以我们只要把输入都往前移动一位,再在最低位上补个零就算是乘2了。具体逻辑电路图我就不画,你们知道咋回事就行了。

 





关键词: 到底     识别     代码    

院士
2020-11-13 09:05:57     打赏
2楼

这个就有点高深了


工程师
2020-11-14 23:15:55     打赏
3楼

厉害了哇


工程师
2020-11-15 22:04:45     打赏
4楼

学到了


工程师
2020-11-17 22:28:14     打赏
5楼

原来是这样的啊


工程师
2020-11-18 22:56:28     打赏
6楼

感谢分享


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]