2进制后面加个0是什么,CPU怎么知道代码呢?沮丧的

对于CPU怎么知道代码呢?沮丧的以及一些关于2进制后面加个0是什么的话题,很多人都想了解,就让小编带各位来了解一下吧!


首先,让我们从半导体的故事开始。什么是半导体?半导体实际上是介于导体和绝缘体之间的东西,例如二极管。


电流可以从端子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。


抱歉,人文学科的孩子们,我不知道怎么你们高中物理老师。不管怎样,如果你不明白,只要记住在这种情况下它和电线是一样的。


使用半导体,您可以创建有趣的电路,例如[与门]。


此时,如果A、B端子之一为0V,则Y端子直接连接到0V点,Y端子也变为0V。AB两端必须都是10V,这样Y和AB之间就没有电流流过,Y两端也变成10V。


这种装置称为“与门”,有电压的地方计算为1,电压为0的地方计算为0。具体电压并不重要。


也就是说,AB必须同时输入1,输出端Y就变为1,如果AB之一为0,则输出端Y就变为0。


另外还有【或门】、【非门】、【异或门】,类似,或门的意思是如果其中一个输入为1,则输出为1,如果输入00,则为0输入。


很容易理解,非门有输入1和输出0,输入0和输出1。


异或门有点难理解,不过就是这样,输入01或10则输出1,输入00或11则输出0。


所有这些类型的门都可以用二极管制作,但我不会具体向您展示如何制作它们。有兴趣的孩子可以自己尝试一下。由于每次画二极管也很烦人,所以我将门电路简化为以下符号


然后您可以使用门电路来创建CPU。当然,制造CPU还是相当困难的。让我们从简单的事情开始加法器。


顾名思义,加法器是用于执行加法的电路,最简单的如下所示。


AB只能输入0或1。也就是说,该加法器可以计算0+0、1+0或1+1。


输出端S为结果,C表示是否有进位,为二进制数1+1=10。此时C=1,S=0


辛苦了半天,计算1+1是不是感觉特别有成就感?


如果我们再进一步计算1+2,我们就会发现一个新题。第二位必须处理第一位可能的进位,因此必须设计全加器。


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


也就是说,有三个输入,两个输出,输入要相加的两个数以及前一位的四舍五入后,输入结果以及是否四舍五入。


然后我们将这些全加器连接在一起。


有4位加法器,可以算15+15,也就是4位加法,都达到了幼儿园、中班水平,是不是真的很厉害呢?


创建加法器后,让我们创建一个乘法器。当然,任意小数相乘有点麻烦,所以我们先创建一个乘以2的小数。


乘以2非常简单。对于二进制数,通过在末尾添加零来乘以2。是的


5=101


10=1010


因此,我们只需将输入向前移动一位,然后通过在最低位上添加0来将其乘以2。我不会画详细的逻辑电路图。你只需要知道发生了什么。


如果我们乘以3会怎样?这很简单。再去一次吧如果我们乘以5呢?首先是两个位移,然后是一个位移。CPU性能过高,GC频繁发生如何排查?这篇文章告诉你。


因此,简单的CPU中一般不存在乘法,而在软件中通过代换和加法的组合来实现乘法。还有很长的路要走。让我们继续我们的CPU工作。


现在假设我们有一个8位加法器和一个1位移位模块。综合起来,我们可以计算如下


X2


好的!几乎和小学生一样兴奋。然后计算


AX2+B


羊毛?这很简单。只需更改加法器模块和位移模块之间的接线即可。这可以通过首先将输入A通过位移模块,然后将其更改为加法器来完成。


什么?你说什么?更改程序是否意味着我必须重新连接?


所以你怎么看?编程只是来回连接电线。


是不是很神奇呢?意外与否?早期的计算机被编程为在几分钟内完成,但需要几天的时间才能连接。而且由于接线工作需要细致、耐心的工作,所以当时的程序员都是穿着制服的漂亮女孩,就像图中一样。你是否觉得自己生错了时间?


和漂亮女人在一起很有趣,但交往可能会很累。所以我们需要改进CPU,使其能够根据指令进行加或乘2。


这里再介绍两个模块,一个叫触发器,简称FF,我觉得中文叫触发器。


该模块的功能是存储1bit数据。例如,在上面的RS类型FF中,R是Reset,输入1将其清除。S为Set,如果输入1,则保存1。输入RS为0将始终输出您刚刚保存的内容。


FF用于存储计算中的中间数据,虽然1位绝对不够,但是通过并联使用4或8就可以存储4或8位数据。我们称之为寄存器。


另一种是MUX,中文称为选择器。


这很简单。如果sel输入0,则输出i0的数据。无论i0是什么,它都会打印任何内容,包括01。同样,如果sel输入1,则输出i1中的数据。当然,选择器可以做得很长,例如具有4个输入和1个输出。


具体原理我就不详细解释了,但其实看逻辑图就知道有这个存在,就可以理解。这使我们能够设计加法器和倍频器模块的使能引脚。


在此启用引脚上输入1将启用该模块,而输入0将禁用该模块。这样我们就可以控制数据是流向加法器还是流向位移模块。


所以我们首先为CPU设计了8个输入引脚,4位指令和4位数据。我们设计了三个附加指南。


0100,数据读入寄存器。


0001,将数据添加到寄存器并将结果存储到寄存器中。


如果为0010,则寄存器数据左移一位。


这样设计的原因是,正如我刚才提到的,你可以为每个模块设计激活引脚。命令输入的第二、第三和第四引脚可分别用于连接寄存器、加法器和移位器的使能引脚。这样,当输入0100命令时,寄存器输入将被激活,其他模块将为0而不被激活,数据将被存储在寄存器中。同样,当输入0001指令时,加法器开始工作,可以进行加法运算。


这是对这个题的第一个小题的简短回。


那么为什么CPU能够理解这两个级别的数字呢?


为什么CPU能理解呢?这是因为CPU内部的连线是这样连接的。我们输入一个二进制数,作为一个开关,激活CPU上的几个指定模块,并改变这些模块的连接方式,最后得到结果。


您可能会被到一些题


一个CPU可以有几千个小模块,一条32位/64位指令可以控制那么多模块吗?


A示例CPU只有3个模块,所以我直接连接它们。实际的CPU有一个解码器,可以将指令转换成所需的格式。


举个例子,如果你在你提到的简单CPU上输入命令0011,会发生什么?


当然,同时激活加法器和移位器会导致不可预测的结果。简而言之,您要对后果负责,因为您使用了并非设计的指令。


细心的朋友可能会发现题所在你设计的指令。


【0001、向寄存器添加数据并将结果存入寄存器】


你不能一次性完成这一切吗?最终还是有一个回复的过程,其实也是如此。我们设计的简易CPU,执行一条指令大致涉及三个步骤读指令、执行指令、写寄存器。


传统RISC设计分为五个步骤读指令IF、译码指令ID、执行指令EX、操作存储器MEM、写寄存器WB。我们常用的x86CPU上的一些指令可以分为近20步。


大家可能知道有一个这样的开关,当你按下开关时,CPU就移动一步,按下的越快,CPU移动的速度就越快。什么?听说你有个好主意?亲爱的,你的想法很危险。我们先不讨论它是否有独角兽手臂。你能按那么快的按钮吗?


即使你能按那么快,速度会更快,但功耗会明显增加,热量会增加,稳定性也会下降。世界上其实有这种叫超频的玩法,不过不建议新手尝试。


那么CPU如何知道它去了哪里呢?前面不是介绍过FF了吗,它既可以用来存储中间数据,也可以用来存储中间状态,无论它们走到哪里。


具体设计涉及利用有限状态机理论、FSM和FF来实现。这部分也很重要,是考试必看的部分,但与主题关联不大,这里就不详细说了。


我们继续刚才说的。现在有三个指令我们来计算X2+3。


01000001,店铺1


00010100;将寄存器中的数字加4。


00100000;乘以2


00010011,已添加3个


好吧,有了这台电脑,我们就能打败所有幼儿园的孩子,称霸大班了。而且现在我用的是4位CPU,但是如果我换成8位CPU,我就能打败低年级的学生了!其实用程序来控制CPU是一个非常先进的想法,但在此之前,计算机的CPU是单独设计的。


1969年,日本BUSICOM公司想要开发一款程控计算器,而设计CPU的美国公司也觉得每次都重新设计CPU是愚蠢的,于是双方和解,发布了计算器。4004,一款突破性产品,于1970年成为世界上第一台计算器和第一台微处理器。


这种架构改变了世界,负责设计CPU的美国公司逐渐成为业界巨头。哦,顺便说一下,它的名字叫英特尔。是的,是巴兹。让我们总结一下我们刚刚运行的程序。


01000001000101000010000000010011


将其输入CPU中,我将从馆开始为幼儿园课程做好准备。什么?一切完成后,孩子们能用手指头数数吗?机器语言不可能那么反人类。哦,我忘了这种只由01组成的语言叫做机器语言,它是CPU唯一能理解的语言。但如果让人读机器语言,它肯定会在一秒钟内变成代码,这是任何人都无法容忍的。


最后小编想说的是我是一名Python开发工程师。


最新Python系统学习教程集合集。


如果您想了解这些信息,请关注私信小编“01”,希望对您有所帮助。


正在学习或者想学习Python的朋友可以私信小编“01”领取资料!


原文链接


除非特别注明,本站所有文字均为原创文章,作者:admin

No Comment

留言

电子邮件地址不会被公开。 必填项已用*标注

感谢你的留言。。。