CPU内部组成结构及指令执行过程

计算机的基本硬件系统由运算器、控制器、存储器和输入、输出设备五大部件组成。运算器和控制器等部件被集成在一块儿统称为中央处理单元(Central Processing Unit,CPU)。程序员

  CPU的功能

  (1)程序控制

  CPU经过执行指令来控制程序的执行顺序,这是CPU的重要职能。测试

  (2)操做控制

  一条指令功能的实现须要若干个操做信号来完成,CPU产生每条指令的操做信号并将操做信号送往不一样的部件,控制相应的部件按指令的功能要求进行操做。spa

  (3)时间控制

  CPU对各类操做进行时间上的控制,这就是时间控制。CPU对每条指令的整个执行过程要进行严格控制,即指令执行过程当中操做信号的出现时间、持续时间及出现的时间顺序都须要进行严格控制。blog

  (4)数据处理

  CPU经过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。因此,对数据的加工处理也是CPU最根本的任务。事件

  CPU的组成

  CPU主要有运算器、控制器、寄存器组合内部总线等部件组成。内存

  运算器

  运算器由算术逻辑单元(Arithmetic and Logic Unit,ALU),累加寄存器(AC),数据缓冲寄存器(DR),和状态条件寄存器组成,它是数据加工处理部件,完成计算机的各类算术和逻辑运算。相对于控制器而言,运算器接受控制器的命令而进行动做,即运算器所进行的所有操做都是由控制器发出的控制信号来指挥的,因此它是执行部件。it

  算术逻辑单元(ALU)

  ALU是运算器的重要组成部件,负责处理数据,实现对数据的算术运算和逻辑运算。自动化

  累计寄存器(AC)

  AC一般简称为累计器,它是一个通用寄存器,其功能是当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工做区。最后的运算结果放到AC中,所以运算器中至少有一个累加寄存器。硬件

  数据缓冲寄存器(DR)

  在对内部存储器进行读写操做时,用DR暂时存放由内存储器读写的一条指令或一个数据字,将不一样时间段内读写的数据隔离开来。DR做为CPU和内存、外部设备之间的数据传送中转站;做为CPU和内存、外围设备之间在操做速度上的缓冲;在单累加器结构的运算器中,DR还能够件做为操做数寄存器。请求

  状态条件寄存器(PSW)

  PSW保存由算术指令和逻辑指令运行或测试的结果创建的各类条件码内容,主要分为状态标志和控制标志。这些标志一般由一位触发器保存,保存了当前指令执行完成以后的状态。一般一个算术操做产生一个运算结果,一个逻辑操做产生一个判决。

  控制器

  运算器只能完成运算,而控制器用于控制整个CPU的工做,他决定了计算机运行过程的自动化。它不只要保证程序的正确执行,并且要可以处理异常事件。控制器通常包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。

  时序控制逻辑要为每条指令按时间顺序提供应有的控制信号。总线逻辑是为多个功能部件服务的信息通路控制电路。中断控制逻辑用于控制各类中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU处理。

  指令控制逻辑要完成取指令、分析指令和执行指令的操做,其过程分为取指令、指令译码、按指令操做码执行、造成下一条指令等步骤。

  指令寄存器(IR)

  当CPU执行一条指令时,先把它从内存储器取到缓冲寄存器中,在送入IR暂存,指令译码器根据IR的内容产生各类微操做指令,控制其余的组成部件工做,完成所需的功能。

  程序计数器(PC)

  PC具备寄存信息和计数两种功能,又称为指令计数器。程序的执行分为两种状况,一是顺序执行,而是转移执行。当程序开始执行前,将程序的起始地址送入PC,该地址在程序加载到内容是肯定,所以PC的内容便是程序第一条指令的地址。执行指令时CPU自动修改PC的内容,以便使其保持的老是将要执行的下一条指令的地址。

  地址寄存器(AR)

  AR保存当前CPU所访问的内存单元的地址。因为内存和CPU存在着操做速度上的差别,因此须要使用AR保持地址信息,知道内存的读写操做完成为止。

  指令译码器(ID)

  指令分为操做码和地址码两部分,为了能执行任何给定的指令,必须对操做码进行分析,以便识别所完成的操做。ID就是对指令中的操做码字段进行分析解释,识别该指令规定的操做,向操做控制器发出具体的控制信号,控制各部件工做,完成所需的功能。

  寄存器组

  寄存器组可分为专用寄存器和通用寄存器。运算器和控制器中的寄存器是专用寄存器,起做用是固定的。通用寄存器用途普遍并可由程序员规定其用途,其数目因处理器不一样有所差别。

  指令执行过程

  

  MOV指令

  取指阶段:

  程序计数器PC装入第一条指令的地址101,PC的内容被放到指令地址总线上,对指令进行译码并启动读命令。从101号地址读出MOV指令,经过指令总线IBus装入指令寄存器IR,程序计数器PC内容加1,变成102,为下一条指令作好准备。指令寄存器IR中的操做码被译码,CPU识别出是MOV指令,至此取指阶段完成。

  执行阶段:

  操做控制器OC送出控制信号到通用寄存器,选择R1(10)为源寄存器,RO(00)为目标寄存器。OC送出控制信号到ALU,指定ALU作传送操做,打开ALU输出三态门,将ALU输出(10)送的数据总线DBus上,任什么时候刻DBus上只能有一个数据。将DBus上的数据打入数据缓冲寄存器DR,将DR中的数据打入目标寄存器RO,RO的内容由00变为10至此MOV指令执行完毕。

  LAD指令

  取指阶段:

  LAD指令的取指阶段和MOV指令彻底相同。

  执行阶段:

  OC发出控制命令,打开IR输出三态门,将指令中的直接地址码6放到数据总线DBus上,装入地址寄存器AR,将数存6号单元中的数100读出到DBus上,装入缓冲寄存器DR。将DR中的数100装入通用寄存器R1,原来R1中的值10被覆盖,至此LAD指令执行完毕。

  ADD指令

  取指阶段:

  ADD指令的取指阶段和其余指令相同。

  执行阶段:

  操做控制器OC送出控制信号到通用寄存器,选择R1(100)为源寄存器,R2(20)为目标寄存器。ALU作R1和R2的加法运算,打开ALU输出三态门,将运算结果120放到数据总线DBus上,而后打入缓冲寄存器DR。ALU产生的进位信号保存在状态字寄存器PSW中,将DR中数值120装入R2中,R2原来的数20被覆盖。到此ADD指令执行结束。

  STO指令

  取指阶段:

  STO指令的取指阶段和其余指令相同。

  执行阶段:

  操做控制器OC送出控制信号到通用寄存器,选择R3(30)做为数据存储器的地址。打开通用寄存器输出三态门,将地址30放到DBus上并装入地址寄存器AR,并进行地址译码。操做控制器OC送出控制信号到通用寄存器,选择R2(120)做为数存的写入数据放到DBus上。将数值120写入数存30单元,原先的数据40被冲掉。至此STO指令执行结束。

  JMP指令

  取指阶段:

  JMP指令的取指周期和其余指令相同。

  执行阶段:

  OC发出控制命令,打开IR输出三态门,将IR中的地址码101发送到DBus上,将DBus上的地址码101打入到程序计数器PC中,PC中原先的地址106被更换。因而下一条指令不是从106单元取出,而是转移到101单元取出。至此JMP指令执行周期结束。

  以上内容是对于CPU功能、组成以及执行指令的一些总结和整理,有不足之处,但愿你们批评指正。