计算机底层逻辑学习笔记12-指令执行过程

257 阅读3分钟

CPU的主要功能就是执行存放在寄存器中的指令序列,即程序。

一、指令的分段执行过程

1. 取指令

根据指令寄存器PC提供的地址从主存储器中读取当前指令,送到主存数据缓冲器MDR中,然后再送往CPU内的指令寄存器IP中。同时改变指令计数器的内容,使之指向下一条指令地址或紧跟当前指令的立即数或地址码。

2. 分析指令

如果采用组合逻辑控制器,则通过译码电路译出IR中指令各字段表示什么操作,并在时序系统的配合下产生该指令对应的微操作命令序列。例如,采用微程序控制器,则可根据指令地址或紧跟当前指令的立即数或地址码。

3. 执行指令

①取操作数

如果当前指令需要从主存取操作数,就需安排时间再次访问存储器。如果是间址方式或是取双操作数,则访存次数更多。若是变址方式,在取数之前还需安排时间进行变址计算。

②执行指令

如果当前指令需要运算,则需考虑形成稳定运算结果的时间,为此安排专门的节拍。对乘除、浮点运算则需占用更多的节拍。若运算结果需送回主存单元,则应安排时间以完成对主存的写操作。

③形成下一条指令地址

对于顺序执行的指令,下一条指令地址在取指令、取立即数、取地址码时,就已形成在PC中;如果是转移类指令,则将形成的转移地址送到PC中。以后再取下一条指令、分析、执行......,如此循环直至程序执行完毕或外来干预为止。

若CPU收到中断请求信号,在执行完当前指令后,响应该中断请求,暂停当前执行的程序,转去执行中断处理程序。当处理完毕后,再返回原程序断点继续下去。

二、指令之间的衔接方式

指令之间的衔接方式有两种:串行的顺序执行方式与并行的重叠执行方式。采用不同的处理方式将对CPU的总体结构与时序系统有很大的影响。

串行的顺序执行方式是指在一条指令执行完毕后才开始取下一条指令,这种方式控制简单,但在时间上不能充分利用部件,例如在ALU进行运算时,主存是空闲的;在访存时,ALU也是空闲的。

为了提高部件利用率和运算速度,可以让指令重叠执行,即在对当前指令执行运算操作时提前从主存去除下一条指令,而不必等当前指令全部执行完。但如果程序需转移,预取下一条指令就要失败。不过由于大多数情况下程序流程是顺序执行,下一条指令地址并不依赖本次执行的结果,所以预取指令还是能有效地提高执行速度。