CPU从内存或缓存中取出指令,将其放入指令寄存器,并对指令进行解码。它将指令分解成一系列微 *** 作,然后发出各种控制命令执行微 *** 作系列,从而完成一条指令的执行。指令是计算机指定要执行的 *** 作的类型和 *** 作数的基本命令。一条指令由一个或多个字节组成,包括一个 *** 作码字段,一个或多个与 *** 作数地址有关的字段,以及一些表示机器状态的状态字和特征码。有些指令还直接包含 *** 作数本身。
选择
第一阶段fetch从内存或高速缓存中检索指令(数值或一系列数值)。存储器的位置由程序计数器指定,该计数器保存用于识别当前程序位置的数值。换句话说,程序计数器记录了当前程序中CPU的踪迹。指令取出后,程序计数器根据指令长度增加存储单元。指令的获取必须总是从相对较慢的存储器中找到,因此导致CPU等待指令被发送进来。这个问题主要在现代处理器的缓存和流水线架构中讨论。
解码
根据CPU从存储器中提取的指令来执行。在解码阶段,指令被分解成有意义的片段。根据CPU的指令集架构(ISA)定义,数值被解释为指令。指令值的一部分是 *** 作码,它指示要执行哪些 *** 作。其他值通常为指令提供必要的信息,例如加法运算的运算目标。此 *** 作的目标可以提供一个常数值(即立即值)或空:寄存器或存储器地址之间的地址值,这由地址模式决定。在旧的设计中,CPU的指令解码部分是一个不可改变的硬件设备。然而,在许多抽象和复杂的CPU和指令集体系结构中,微程序通常用于帮助将指令转换成各种信号。这些微程序往往可以在成品CPU中重写,方便更改解码指令。
执行
在提取和解码阶段之后,接着是执行阶段。在这个阶段,它连接到能够执行所需 *** 作的各种CPU组件。例如,如果需要加法运算,算术逻辑单元(ALU)将连接到一组输入和一组输出。提供了要相加的值,输出将包含求和结果。ALU包含一个电路系统,使得输出可以很容易地执行简单的普通运算和逻辑运算(如加法和位运算)。如果加法运算产生的结果对于CPU处理来说太大,则可以在标志寄存器中设置算术溢出标志。
写回
最后是写回,简单的用某种格式写回执行阶段的结果。 *** 作的结果通常被写入CPU的内部寄存器,以便后续指令快速访问。在其他情况下,计算结果可能写入速度较慢,但容量更大,成本更低的主存储器。一些类型的指令 *** 作程序计数器而不直接产生结果。这些通常被称为跳转(跳转),并在程序中带来循环行为、条件执行(通过条件跳转)和函数。许多指令也会改变标志寄存器的状态位。这些标记可以用来影响程序行为,因为它们经常显示各种 *** 作结果。例如,用一个比较判断指令的两个值的大小,根据比较结果在标志寄存器上设置一个值。该标志可以通过随后的跳转命令确定程序趋势。指令执行完毕,写回结果后,程序计数器的值将递增,整个过程重复进行,在下一个指令周期正常取下一条顺序指令。如果跳转指令完成,程序计数器将修改为跳转指令的地址,程序将继续正常执行。许多复杂的CPU可以同时获取、解码和执行多条指令。这部分一般涉及经典RISC流水线实际上,这些在许多使用简单CPU(通常称为微控制器)的电子设备中迅速普及。
基本结构
包括CPU逻辑单元、寄存器单元和控制单元。
算术逻辑单元
算术逻辑单元可以执行定点或浮点算术运算、移位运算和逻辑运算,还可以执行地址运算和转换。
寄存器单元
寄存器组件,包括通用寄存器、专用寄存器和控制寄存器。通用寄存器可分为定点数和浮点数,用于存储指令中的寄存器 *** 作数和运算结果。通用寄存器是CPU的重要组成部分,大多数指令都要访问通用寄存器。通用寄存器的宽度决定了计算机内部数据通道的宽度,其端口的数量往往影响内部 *** 作的并行性。特殊寄存器是执行某些特殊 *** 作所需的寄存器。控制寄存器通常用于指示机器执行的状态,或者保存一些指针,包括处理状态寄存器、地址转换目录的基址寄存器、特权状态寄存器、条件码寄存器、异常处理寄存器和错误检测寄存器。有时候,CPU里会有一些缓存,用来临时存放一些数据指令。缓存越大,CPU的运行速度越快。目前市面上所有高端CPU都有大约2ML2缓存,而高端CPU有4ML2缓存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)