寄存器是中央bai处理器内的其中组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。
一条指令是由一段微程序完成的。微程序中一般包du含多条微指令。
指令可以理解为 MOV Ra,Rb这种汇编指令,当然指令其实是机器语言,汇编语言是更容易理解的。而一条指令会有几个阶段,取指,译码,执行,存储器访问和写回(当然不同的书不一样)。比如取指的过程是
(PC)→MAR M(MAR)→MDR MDR→IR (PC)+1→PC 这四条就是微指令了
微 *** 作是微命令的执行过程,微命令是微 *** 作的控制信号。微指令是若干微命令的集合。
扩展资料:
一条机器指令的功能是若干条微指令组成的序列来实现的,即一条机器指令所完成的 *** 作分成若干条微指令来完成,由微指令进行解释和执行,这个微指令序列通常叫做微程序。微指令的编译方法是决定微指令格式的主要因素。考虑到速度,成本等原因,在设计计算机时采用不同的编译法 。因此微指令的格式大体分成两类:水平型微指令和垂直型微指令。
一次能定义并执行多个并行 *** 作微命令的微指令,叫做水平型微指令。水平型微指令的一般格式如下:控制字段,判别测试字段和下地址字段。按照控制字段的编码方法不同,水平型微指令又分为三种:一种是全水平型(不译法)微指令,第二种是字段译码法水平型微指令,第三种是直接和译码相混合的水平型微指令。
参考资料来源:百度百科-微指令
首先微程序对应一个机器指令是没有错的,比如我的目标是完成add *** 作,那么我会经过取值、间址、执行、中断四个步骤,但是另外其他的机器指令,除了执行阶段,其余阶段都是相同的,那么此时我们将这些相同的 *** 作化为了三个统一的微程序:取指、间址、中断;这就解释了为什么取值对应一个微程序,但是执行步骤是不一样的,假设有n种 *** 作,那么这n种 *** 作都会对应着n个微程序,这是不是就解释了为什么它们是一一对应了吗?然后刚好也看到了一句话可以解释你第二个疑问:物理上,取指周期、执行周期看起来像是两个微程序,但逻辑上应该把他们看成一个整体,我的理解就是这实际上确实两个微程序(如果已经把取指独立了出来,没独立当然算一个),但是我们在看待这两个微程序的时候,我们是把他们看成一个的(取指是一个共有 *** 作),当然这也是我自己的理解,可能有误。微代码和汇编都是低级语言,但是微代码比汇编更底层。微代码和汇编都和硬件有着紧密的联系,但是对于同一产品系列的不同代产品来说,汇编可以完全相同,微代码可能有着巨大的区别,因为微代码是完全依赖于芯片内部的硬件连接。对于同样一句c语言,在不同的处理器上会生成不同的汇编语言。每一条汇编语言的执行时间也许是一个或者两个时钟周期,甚至更多。微代码和汇编的关系,就像c
与汇编的关系,也就是说一条汇编也许会生成一条或多条微代码。所谓微代码,或者微指令,是处理器内部最小的 *** 作原语,控制着诸如门电路(gates)开关等专门动作,和组成一条指令的微 *** 作的序列。例如,对于一个加法"add"的简单动作,微代码可以决定接受哪两个寄存器或总线为输入,输出到什么总线或者寄存器里,标志寄存器要保存还是丢弃,根据条件进行跳转或者直接执行下一条微代码。一个内部只有8位宽的数据总线完全可以支持32位整数的汇编 *** 作,就是因为有微代码。
微代码原来只是用来开发计算机的逻辑控制。古老的cpu往往都是“硬连线”,每个机器指令(加法,移动)都是由电路实现,虽然有着高性能的优点,但随着指令复杂度的增长,也带来了研发和debug的困难,以及电路的复杂性。微代码的出现让cpu的设计者可以通过写一个微程序的方式来实现一条机器指令,而不是设计电路来实现它。在将来的开发设计过程中,微代码可以很容易地改变,硬件电路却不可更改,否则带来的将是巨大的商业损失。这种灵活的cpu设计导致了今天日益复杂的指令集。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)