您好、欢迎来到现金彩票网!
当前位置:大发体育在线 > 指令译码器 >

机器指令代码

发布时间:2019-07-28 16:37 来源:未知 编辑:admin

  比如,装载指令代码,加法指令代码如何被电路识别区分?当发出这些指令时电路是如何被执行

  机器指令会被送到译码器,译码器就可以通过一些组合逻辑电路,把指令翻译为一些列的引脚上的高低电平,这些输出的信号就分别连接到不同的器件,如内存控制器,算术逻辑单元等器件,然后触发这些器件工作。如果想要知道详细情况,那么你首先需要学习数字电路基础,当然,如果你是计算机学院的学生,那就已经学过了。然后需要学习计算机体系结构,或者先学微机原理再学体系结构,这样之后,基本上就应该懂得这个原理了,如果你还参加过电子设计方面的培训或者实践,例如用过CPLD和FPGA,那么你就可以完全理解并且自己设计cpu了。

  在计算机中,译码器翻译机器指令,如果是靠设计人员设计电路时,己经把这些指令和输出结果定型了,哪么设计电路是有没有什么标准还是自己想怎么设计都行

  只要能够满足要求,就是输入什么指令,输出什么结果,其他的具体怎么做都是随便的,例如amd和intel,他们设计的PC用的cpu遵循的指令集都是x86,都是规定好那些机器码代表什么意思。但是他们两家的cpu显然是不一样的。而且就算是intel自己,不同系列的cpu,设计上也有所不同,但是大部分指令所规定的输入输出结果都是相同的。

  而且,就说里面的具体电路,每一个部分,如译码器部分,加法器部分,浮点运算电路等,都有很多不同的实现方法,有的速度快但是需要的电路多,有的电路更小但是速度更慢,有的耗能多,有的耗能少,有的可以便于实现多级流水线,有的不便于实现等等。设计师一般是在这些成熟的设计里面选择满足要求的。然后再根据需要设计的cpu的特性,再来进行一些修改。例如,为了设计超长的流水线,那么就要对这些成熟的设计方案做一些修改,多加入一些中间寄存器之类的

  两个方向都要考虑。一般是先指定指令集,然后设计电路,但是后来,例如要在现有指令集上设计更高效的cpu时,可能发现需要增加一些指令,或者修改一些指令的设计方法,所以就是根据电路设计上的需求,再反过来修改指令集。例如,最开始设计MOV指令的时候,可能想设计成MOV的源操作数和目的操作数都可以是内存,但是后来设计电路的时候发现这样会导致一些额外的电路,从而使MOV指令的执行速度降低,所以,就规定指令集只存在源操作数和目的操作数只能有一个在内存。这个就可以看作是根据电路设计的需要来修改指令集。再例如,RISC指令集就是根据电路的复杂程度会导致性能下降,才指出,要简化指令集,从而简化电路,简化了电路就更便于提高时钟频率,这也可以说是根据电路的限制来修改指令集的例子。其他的很多指令就是指令设计好之后再来设计电路,最显然的例子就是,intel推出新一代处理器的时候,要兼容原来的指令,同时又要让电路更高效,这部分需要兼容的指令显然就是根据指令来设计电路了。

  有专门的人研究至少需要哪些指令才能实现大多数计算机所需要的功能,最初的x86指令集就是这么来的。后来intel不断的增加指令集,例如,发现浮点运算在多媒体计算中很重要,就增加了几个专门用于浮点运算的指令,这个就是当年奔腾到奔腾MMX的指令集演变。例如再后来,他们觉得在指令集中可以增加一些同时执行多个浮点运算的指令,于是,他们就设计的SSE指令,有了这些指令,cpu的硬件当然就要增加一些电路了。在intel不断增加指令的同时,amd也在做同样的事情,但是他们的指令会有一些不兼容的现象,所以写这些程序的时候首先要判断cpu是什么型号,然后根据cpu型号确定跳转到某一段指令执行,否则,就可能在没有那个指令的cpu上执行那个指令,甚至可能那个指令在那个cpu上代表的含义和你想象的不一样。关于指令集的设计还有一种思想就是risc,那个就是有理论指出很多指令不是必须的,还不如简化指令,从而简化硬件,由此提高时钟频率以及提高吞吐量。特别是,有一个终极RISC,只有一条指令,具体我记不清楚了,那条指令大概是两个数字异或,然后判断是否为0,不为0就转移到某个地址,所有的cpu指令都可以翻译为一大堆这样的语句。关于cpu设计的东西太多了。。。你最好还是找本计算机体系结构方面的书来看看

  半夜醒来,忽然想到一个问题,比如“在0000h地址处内容加载到累加器中,这个操作码是LOAD(加载),代码是10h”时,代码是否根据电路及结果要加载,从而设计得到代码,进而得出操作码LOAD。还是说根据最前面几句话得出操作码是LOAD,进而得到代码10h(书中说代码可以随便设)望解答,谢谢

  你问的不是非常明确,我按我的理解来说吧。假设你要设计一个cpu,然后你规划了load指令,并把他的代码指定为10H,这样,你在设计译码器的时候,就要在输入是10H的时候,正好输出load指令所需要的控制信号,例如,load指令需要选通内存控制器,选通相关的寄存器等等。通过这样的设计,只要输入10H,译码器就会把load操作需要的器件都连通了,于是load操作就进行了,所以10H就成了load操作的机器码。所以,机器码是人事先设计好的,然后在根据机器码来设计电路。但是有时候电路设计也会反过来影响机器码的设计。例如,你设计了load的机器码是10H,store是23H,结果某天发现store指令和load指令都要访问某个寄存器,为了简化硬件电路设计,你可能想要把store的机器码重新指定为15H,因为这样,我们可以直接判断高4位如果是1H,那么就选通某个寄存器,这样可以减小译码器需要的逻辑门的数量。当然,我这只是举的一个简单例子了。这个例子就说明,代码是可以随便设,设计电路之前就可以规划好,但是一个好的代码设计方案能够设计出更好的电路,所以有时候设计了电路之后,可能会想反过来修改机器码

  最底层实现是数字电路。可以理解为最底层用数字电路实现了所有的指令代码,不同的指令代码来之后,使能对应的电路罢了。你可以看一下FPGA有关的知识。自己试着用FPGA写个CPU。自己设计,就知道什么是指令代码,为什么要有指令代码,指令代码怎么被执行了。

http://cajonbrush.com/zhilingyimaqi/281.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
  • 上一篇:没有了
  • 下一篇:没有了
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有