CPU是怎么执行指令的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPU是怎么执行指令的?相关的知识,希望对你有一定的参考价值。

CPU是怎么执行指令的?

是按照顺序一条条的执行,还是在同一时刻执行多条指令?
这个问题一直困惑着我,为什么CPU不能并发执行指令?求教计算机高手

计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。

取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。

分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。

计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。

一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。

扩展资料

CPU主要功能

1、处理指令

英文Processing instructions;这是指控制程序中指令的执行顺序。程序中的各指令之间是有严格顺序的,必须严格按程序规定的顺序执行,才能保证计算机系统工作的正确性。

2、执行操作

英文Perform an action;一条指令的功能往往是由计算机中的部件执行一系列的操作来实现的。CPU要根据指令的功能,产生相应的操作控制信号,发给相应的部件,从而控制这些部件按指令的要求进行动作。

3、控制时间

英文Control time;时间控制就是对各种操作实施时间上的定时。在一条指令的执行过程中,在什么时间做什么操作均应受到严格的控制。只有这样,计算机才能有条不紊地工作。

4、处理数据

即对数据进行算术运算和逻辑运算,或进行其他的信息处理。

其功能主要是解释计算机指令以及处理计算机软件中的数据, 并执行指令。在微型计算机中又称微处理器,计算机的所有操作都受CPU控制,CPU的性能指标直接决定了微机系统的性能指标。

CPU具有以下4个方面的基本功能:数据通信,资源共享,分布式处理,提供系统可靠性。运作原理可基本分为四个阶段:提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)。

参考资料来源:百度百科-中央处理器

参考技术A 一般是按照顺序一条条的执行,它也会根据指令要求跳转,条件选择,或是循环运行。它执行指令的速度要看CPU内部结构如何还跟CPU的主频高低。本回答被提问者采纳 参考技术B 是可以同时只能给你做个比方了,具体不清除
比如2个程序同时执行,而CPU会给其中一个80%,而另一只能占用20%,此时如果还有另一进城加入进来,那么相对的1和2的占用都要相对减少,这时如果1完成了,那么2将成为主要,进程3的占用率会提高。
大概就这意思,实在是不记得了,在一年级的计算机基础里就讲过
参考技术C 通过指令集

INTEL SSE SSE2 SSE3

AMD AM+

通过这些指令集
参考技术D 通过指令集

INTEL SSE SSE2 SSE3

《CPU的工作过程》

本文转载自inter官方网址:https://software.intel.com/zh-cn/articles/book-Processor-Architecture_CPU_work_process

 

CPU的工作过程

CPU的基本工作是执行存储的指令序列,即程序。程序的执行过程实际上是不断地取出指令、分析指令、执行指令的过程。

CPU从存放程序的主存储器里取出一条指令,译码并执行这条指令,保存执行结果,紧接着又去取指令,译码,执行指令……,如此周而复始,反复循环,使得计算机能够自动地工作。除非遇到停机指令,否则这个循环将一直进行下去。其过程如图3-3所示

技术分享

图3-3 程序的执行过程


 

3.2.1 指令的执行过程

几乎所有的冯?诺伊曼型计算机的CPU,其工作都可以分为5个阶段:取指令、指令译码、执行指令、访存取数和结果写回。如图3-4所示。

技术分享

图3-4 指令的执行过程

1.取指令阶段

取指令(Instruction Fetch,IF)阶段是将一条指令从主存中取到指令寄存器的过程。

程序计数器PC中的数值,用来指示当前指令在主存中的位置。当一条指令被取出后,PC中的数值将根据指令字长度而自动递增。若为单字长指令,则(PC)+1?PC,若为双字长指令,则(PC)+2?PC,依此类推。

2.指令译码阶段

取出指令后,计算机立即进入指令译码(Instruction Decode,ID)阶段。

在指令译码阶段,指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,识别和区分出不同的指令类别及各种获取操作数的方法。

在组合逻辑控制的计算机中,指令译码器对不同的指令操作码产生不同的控制电位,以形成不同的微操作序列;在微程序控制的计算机中,指令译码器用指令操作码找到执行该指令的微程序的入口,并从此入口开始执行。

在传统的设计里,CPU中负责指令译码的部分是无法改变的硬件。不过,在众多运用微程序控制技术的新型CPU中,微程序有时是可重写的,可以通过修改成品CPU来改变CPU的译码方式。

3.执行指令阶段

在取指令和指令译码阶段之后,接着进入执行指令(Execute,EX)阶段。

此阶段的任务是完成指令所规定的各种操作,具体实现指令的功能。为此,CPU的不同部分被连接起来,以执行所需的操作。

例如,如果要求完成一个加法运算,算术逻辑单元(ALU)将被连接到一组输入和一组输出,输入端提供需要相加的数值,而输出端将含有最后的运算结果。

4.访存取数阶段

根据指令需要,有可能要访问主存,读取操作数,这样就进入了访存取数(Memory,MEM)阶段。

此阶段的任务是:根据指令地址码,得到操作数在主存中的地址,并从主存中读取该操作数用于运算。

5.结果写回阶段

作为最后一个阶段,结果写回(Writeback,WB)阶段把执行指令阶段的运行结果数据“写回”到某种存储形式。结果数据经常被写到CPU的内部寄存器中,以便被后续的指令快速地存取。在有些情况下,结果数据也可被写入相对较慢、但较廉价且容量较大的主存。许多指令还会改变程序状态字寄存器中标志位的状态,这些标志位标识着不同的操作结果,可被用来影响程序的动作。

在指令执行完毕、结果数据写回之后,若无意外事件(如结果溢出等)发生,计算机就接着从程序计数器PC中取得下一条指令地址,开始新一轮的循环,下一个指令周期将正常地顺序取出下一条指令。

许多新型CPU可以同时取出、译码和执行多条指令,体现出并行处理的特性。


 

3.2.2 指令周期

1.指令周期的基本概念

(1)指令周期

CPU取出一条指令并执行该指令所需的时间称为指令周期。
指令周期的长短与指令的复杂程度有关。

(2)CPU周期

指令周期常常用若干个CPU周期数来表示。
由于CPU内部的操作速度较快,而CPU访问一次主存所花的时间较长,因此通常用从主存读取一条指令的最短时间来规定CPU周期。
CPU周期也称为机器周期。

(3)时钟周期

一个CPU周期包含有若干个时钟周期。
时钟周期是处理操作的最基本时间单位,由机器的主频决定。
一个CPU周期的时间宽度由若干个时钟周期的总和决定。

图3-5为采用定长CPU周期的指令周期示意图。

技术分享

图3-5 指令周期

(4)取出和执行任何一条指令所需的最短时间为两个CPU周期。

任何一条指令,它的指令周期至少需要两个CPU周期,而复杂指令的指令周期则需要更多的CPU周期。这是因为,一条指令的取出阶段需要一个CPU周期时间,而一条指令的执行阶段则需要至少一个CPU周期时间。由于不同复杂度指令的执行周期所需的CPU周期数不尽相等,因此,各种指令的指令周期也是不尽相同的。

例题3-1:现有一个由5条典型指令组成的程序(如表3-1所示),请分析每一条指令的指令周期。

表3-1 一个由5条典型指令组成的程序

主存储器
操作说明
地址
指令或数据内容
 
020
CLA
0→AC,累加器AC清零
021
ADD 30
(AC)+(30)?AC,累加器AC的值与主存地址30中的数据相加,结果存入累加器AC
022
STA 40
(AC)?40,把累加器AC的值存入主存地址40
023
NOP
空操作,没有任何功能
024
JMP 21
无条件转移到主存地址21处开始执行
 
030
 
操作数
 
040
 
存放运算结果
 

【解】

①CLA指令

CLA指令是一条不访问主存的清零指令,它需要2个CPU周期,其中取指令阶段需要1个CPU周期,执行指令阶段需要1个CPU周期。

技术分享

图3-6 CLA指令周期

在第1个CPU周期,即取指令阶段,CPU从主存取出指令,对程序计数器PC加1,并对指令操作码进行译码,以确定执行何种操作;

在第2个CPU周期,即执行指令阶段,CPU完成指令所要求的操作。

②ADD 30指令

ADD 30指令是一条访问主存取数并执行加法的指令,其指令周期由3个CPU周期组成,其中取指令阶段需要1个CPU周期,执行指令阶段需要2个CPU周期。

技术分享

图3-7 ADD 30指令周期

在第1个CPU周期,即取指令阶段,CPU从主存取出指令并译码,以确定执行何种操作;

执行指令阶段由2个CPU周期组成,其中在第2个CPU周期,CPU将指令的地址码(操作数地址)部分(30)送往地址寄存器,并完成地址译码,而在第3个CPU周期,CPU从主存取出操作数,并执行加法操作。

③STA 40指令

STA 40指令是一条访问主存的存数指令,其指令周期由3个CPU周期组成,其中取指令阶段需要1个CPU周期,执行指令阶段需要2个CPU周期。

技术分享

图3-8 STA 40指令周期

在第1个CPU周期,即取指令阶段,CPU从主存取出指令并译码,以确定执行何种操作;

执行指令阶段由2个CPU周期组成,其中在第2个CPU周期,CPU将指令的地址码(操作数地址)部分(40)送往地址寄存器,并完成地址译码,而在第3个CPU周期,CPU把累加寄存器的内容写入主存单元(40)中。

④NOP指令

NOP指令是一条空操作指令,没有任何功能,相当于CPU空转,但仍需要2个CPU周期,其中取指令阶段需要1个CPU周期,执行指令阶段需要1个CPU周期。(指令周期图与图3-6 CLA指令相同)

在第1个CPU周期,即取指令阶段,CPU从主存取出指令并译码,以确定执行何种操作;

在第2个CPU周期,即执行指令阶段,操作控制器不发出任何控制信号,CPU不做任何操作。

⑤JMP 21指令

JMP 21指令是一条直接寻址的程序控制(转移)指令,由2个CPU周期组成,其中取指令阶段需要1个CPU周期,执行指令阶段需要1个CPU周期。

技术分享

图3-9 JMP 21指令周期

在第1个CPU周期,即取指令阶段,CPU从主存取出指令并译码,以确定执行何种操作;

在第2个CPU周期,即执行指令阶段,CPU把指令的地址码(转移地址)部分(21)送到程序计数器PC中,从而改变程序的执行顺序,实现程序的无条件转移。

2.用指令流程图表示指令周期

在进行计算机设计时,可以像画程序流程图那样,采用指令流程图来表示一条指令的指令周期。

在指令流程图中,

方框:代表一个操作步骤,方框中的内容表示数据通路的操作或某种控制操作。

菱形框:通常用来表示某种判别或测试,其动作依附于它前面的一个方框。

公操作符号“~”:表示一条指令已经执行完毕,转入公操作。所谓公操作,就是一条指令执行完毕后,CPU所开始进行的一些操作,这些操作主要是CPU对外设请求的处理。如果外设没有向CPU请求交换数据,那么CPU又转向主存取下一条指令。

例题3-2:对于例题3-1中由5条典型指令组成的程序,请用指令流程图表示其指令周期。

【解】

技术分享

图3-10 用指令流程图表示指令周期

由图3-10可见,所有指令的取指阶段是完全相同的,而且是一个CPU周期。

但是指令的执行阶段,由于各条指令的功能不同,所用的CPU周期是各不相同的。其中,CLA、NOP、JMP指令是一个CPU周期,ADD、STA指令是两个CPU周期。

一般指令流程图有一个公共的流程段和许多并列的分支。公共流程段是取指令操作的流程序列。取指令操作是每条指令共同的操作步骤,而且所有的指令读取步骤是相同的,所以所有读指令的操作流程是相同的。执行指令阶段的操作是各指令互不相同的操作,所以在取指令阶段之后,流程就根据指令分成许多分支,通常为每种指令都安排一个分支流程。

例题3-3:如图3-11所示为双总线结构机器的数据通路,IR为指令寄存器,PC为程序计数器(具有自增功能),M为主存(受R/W信号控制),AR为主存地址寄存器,DR为数据寄存器,ALU由+、-控制信号决定完成何种操作,控制信号G控制的是一个门电路。另外,线上标注有控制信号,例如Yi表示Y寄存器的输入控制信号,R1o为寄存器R1的输出控制信号,未标字符的线为直通线,不受控制。

“ADD R2,R0”指令完成(R0)+(R2)→R0的功能操作,试画出其指令周期流程图(假设该指令的地址已放入PC中),并列出相应的微操作控制信号序列。

技术分享

图3-11 双总线结构机器的数据通路

【解】

“ADD R2,R0”指令是一条加法指令,参与运算的两个数放在寄存器R2和R0中,指令周期流程图包括取指令阶段和执行指令阶段两部分。根据给定的数据通路图,“ADD R2,R0”指令的详细指令周期流程图如图3-12所示,图的右边部分标注了每一个机器周期中用到的微操作控制信号序列。

技术分享

图3-12 “ADD R2,R0”指令的详细指令周期流程图


 

3.2.3 时序发生器

1.时序信号

在计算机高速运行的过程中,计算机内各部件的每一个动作都必须严格遵守时间规定,不能有任何差错。

计算机内各部件的协调动作需要时间标志,而时间标志则是用时序信号来体现的。

计算机各部分工作所需的时序信号,在CPU中统一由时序发生器来产生。

例题3-4:用二进制码表示的指令和数据都放在主存里,那么CPU是怎样识别出它们是数据还是指令呢?

【解】

从时间上来说,取指令事件发生在指令周期的第一个CPU周期中,即发生在“取指令”阶段,而取数据事件发生在指令周期的后面几个CPU周期中,即发生在“执行指令”阶段。

从空间上来说,如果取出的代码是指令,那么一定送往指令寄存器,如果取出的代码是数据,那么一定送往运算器。

2.时序发生器

CPU中的时序信号发生器,其功能是用逻辑电路来发出时序信号,实现时序控制,使计算机可以准确、迅速、有条不紊地工作。

时序信号发生器是产生指令周期控制时序信号的部件,当CPU开始取指令并执行指令时,操作控制器利用时序信号发生器产生的定时脉冲的顺序和不同的脉冲间隔,提供计算机各部分工作时所需的各种微操作定时控制信号,有条理、有节奏地指挥机器各个部件按规定时间动作。

从操作控制器设计方法而言,组合逻辑控制器的时序电路比较复杂,而微程序控制器的时序电路则比较简单。


 

3.2.4 控制方式

控制器控制一条指令运行的过程是依次执行一个确定的操作序列的过程。

为了使机器能够正确执行指令,控制器必须能够按正确的时序产生操作控制信号。

控制不同操作序列的时序信号的方法,称为控制器的控制方式。

控制方式通常分为三种:同步控制方式、异步控制方式、联合控制方式,其实质反映了时序信号的定时方式。

1.同步控制方式

同步控制方式是指操作序列中每一步操作的执行,都由确定的具有基准时标的时序信号来控制,其特点是系统有一个统一的时钟,所有的控制信号均来自这个统一的时钟信号。

在同步控制方式中,在任何情况下,给定的指令在执行时所需的CPU周期数和时钟周期数都是固定不变的。

同步控制方式有时又称为固定时序控制方式或无应答控制方式。

根据不同情况,同步控制方式可选取以下几种方案:

  1. 采用完全统一的机器周期执行各种不同的指令。显然,对简单指令和简单的操作而言,这将造成时间上的浪费。
  2. 采用不定长机器周期。将大多数操作安排在一个较短的机器周期内完成,而对于某些时间紧张的操作,则采取延长机器周期的办法来加以解决。
  3. 中央控制与局部控制结合。将大部分指令安排在固定的机器周期完成(称为中央控制),而对于少数复杂指令(乘、除、浮点运算)则采用另外的时序进行定时(称为局部控制)。

同步控制方式设计简单,操作控制容易实现。

2.异步控制方式

异步控制方式是一种按每条指令、每个操作的实际需要而占用时间的控制方式,不同指令所占用的时间完全根据需要来决定。

在异步控制方式中,每条指令的指令周期既可由数量不等的机器周期数组成,也可由执行部件完成CPU要求的操作后发回控制器的应答信号来决定。也就是说,CPU访问的每个操作控制信号的时间由其需要占用的时间来决定,每条指令、每个操作控制信号需要多少时间就占用多少时间。

显然,用这种方式形成的操作控制序列没有固定的CPU周期数和严格的时钟周期与之同步,所以称为异步方式。

异步控制方式有时又称为可变时序控制方式或应答控制方式。

在异步控制方式下,指令的运行效率高,但控制线路的硬件实现比较复杂。

异步控制方式在计算机中得到了广泛的应用。例如CPU对主存的读写、I/O设备与主存的数据交换等一般都采用异步控制方式,以保证执行时的高速度。

3.联合控制方式

现代计算机系统中一般采用的方式是同步控制和异步控制相结合的方式,即联合控制方式。

联合控制方式的设计思想是:在功能部件内部采用同步控制方式,而在功能部件之间采用异步控制方式,并且在硬件实现允许的情况下,尽可能多地采用异步控制方式。

联合控制方式通常选取以下两种方案:

    1. 大部分操作序列安排在固定的机器周期中,对某些时间难以确定的操作则以执行部件的应答信号作为本次操作的结束;
    2. 机器周期的时钟周期数固定,但是各条指令周期的机器周期数不固定。









以上是关于CPU是怎么执行指令的?的主要内容,如果未能解决你的问题,请参考以下文章

计算机复位后CPU的第一指令执行地址

多线程程序,当一条原子指令刚执行一半的时候,CPU时间片耗尽,此时是立刻切换线程吗?

CPU执行方式

开机CPU执行的哪些指令?

中断后CPU恢复执行的进程状态

怎样让CMD执行完一条指令过一定的时间执行下一条指令?