了解cpu,cpu的功能和基本构架

了解一个cpu,首先我们要思考这些问题:

  1. CPU分为哪几部分?分别实现什么功能?
  2. 指令和数据均存放在内存中,计算机如何从时间和空间上区分它们是指令还是数据?
  3. 什么是指令周期、机器周期和时钟周期?它们之间有何关系?
  4. 指令周期是否有一个固定值?为什么?
  5. 什么是微指令?它和第4章谈到的指令有什么关系?
  6. 什么是指令流水线?指令流水线相对于传统计算机体系结构的优势是什么?如何计算指令流水线的加速比

CPU组成

控制器

控制单元(Control Unit):控制单元负责指挥整个CPU内部的操作,包括解释指令、从内存中读取指令、执行指令等。它决定了CPU的工作步骤和顺序。

        控制器功能介绍

  1. 指令译码(Instruction Decoding):控制器根据指令寄存器中存放的指令,对指令进行解析和译码,确定这条指令对应的操作类型和操作数。
  2. 时序控制(Timing Control):控制器负责生成时钟信号,对CPU内部各个部件进行时序控制,确保各个操作按照正确的步骤和顺序进行。
  3. 数据通路控制(Data Path Control):控制器管理数据通路中的数据传输和处理,在指令执行过程中将数据从寄存器组传递到算术逻辑单元(ALU)或其他单元,然后将结果返回到寄存器组。
  4. 分支控制(Branch Control):当CPU遇到条件分支指令时,控制器负责根据分支条件确定程序的执行流程,决定程序应该跳转到哪一部分执行。
  5.  异常处理(Exception Handling):控制器处理各种异常情况,如中断请求、指令错误等,保证程序正常执行或进行相应的错误处理。
  6.  状态转换控制(State Transition Control):控制器根据不同指令的需求,管理CPU内部状态的转换,以确保指令的正确执行。
        控制器组成
  • 程序计数器(Program Counter,PC):程序计数器存储了当前正在执行的指令的地址或下一条要执行指令的地址。当指令执行完毕时,程序计数器会自动递增到下一条指令的地址。(送地址的
  • 指令寄存器(Instruction Register,IR):指令寄存器存储了当前正在执行的指令。控制器会从指令寄存器中读取指令操作码和操作数进行分析和执行。(读取寄存器里面的指令
  • 解码器(Decoder):解码器负责对从指令寄存器中读取的指令进行解码,识别指令的操作类型和操作数,并生成相应的控制信号。(提取出来的指令解码
  • 时钟(Clock):时钟产生CPU的时钟信号,控制各个部件在规定的时间间隔内进行工作。时钟信号会同步各个部件的工作步骤,确保整个CPU的顺利运行。(控制时间和顺序
  • 控制信号发生器(Control Signal Generator):控制信号发生器根据指令的操作类型和操作数,生成相应的控制信号,控制ALU、寄存器、数据通路等部件的工作。
  • 状态转换逻辑(State Transition Logic):状态转换逻辑负责根据当前指令的执行情况和控制信号的反馈,确定CPU内部的状态转换,即确定下一步应该执行的动作是什么。(控制指令状态的),状态分为,就绪,执行,等待,睡眠,终止。同事还有特殊状态,比如挂起,监控……
  • 中断控制器(Interrupt Controller):中断控制器负责处理CPU的中断请求,根据优先级和处理逻辑,使CPU能够及时响应各种中断,并保存现场、转入中断处理程序。(负责中断的

运算器

算术逻辑单元(Arithmetic Logic Unit,简称ALU):ALU执行CPU的算术和逻辑运算,例如加减乘除、位运算、逻辑运算等。它是CPU的“大脑”,负责处理各种数据操作。

        运算器功能介绍
  1. 算术运算:运算器负责执行各种算术运算,如加法、减法、乘法、除法,以及取模等操作。运算器可以对整数和浮点数进行运算,并生成相应的结果。
  2. 逻辑运算:运算器执行逻辑运算,包括与、或、非、异或等逻辑运算。逻辑运算一般用于处理数据的逻辑关系,如判断真假、逻辑运算等。
  3. 比较操作:运算器可以对数据进行比较操作,判断大小关系或相等关系。比较操作通常用于条件判断,以确定程序执行的分支或逻辑。
  4. 移位和旋转操作:运算器可以执行数据的位移(移位)和循环移位(旋转)操作。这些操作可以实现数据的位操作,如将数据向左或向右移动一定位数。
  5. 递增和递减操作:运算器可以执行递增和递减操作,将数据递增或递减一个固定的值。递增和递减操作常用于循环计数和地址操作等场景。
  6. 位操作:运算器可以执行位操作,如与、或、非、异或等操作,以进行数据的位级处理和操作。
  7.  数据传输:运算器负责将数据从一个寄存器传输到另一个寄存器,或者从寄存器传输到内存,以实现数据的移动和存储。
        运算器组成
  • 加器:累加器是一个用于进行算数运算的寄存器,可以进行累加操作,将多个数字的结果进行累积。
  • 通用寄存器:通用寄存器用于存储数据,可以进行加、减、乘、除等各种算术运算和逻辑运算。
  • ALU(算术逻辑单元):ALU是运算器的一部分,负责执行各种算术运算和逻辑运算,包括加、减、乘、除、与、或、非等操作。
  • 桶形比较器:桶形比较器用于比较大小,通常用于比较计数器和计数周期等。
  • 控制单元:控制单元是运算器的核心部分,负责接收指令并产生相应的控制信号,控制其他部件的运算过程。
  • 数据通路:数据通路是连接各个部件的路径,负责数据的传输和操作。

寄存器

寄存器组(Register File):寄存器组存储CPU中的各种数据,包括指令、数据和地址等。它可以快速读写数据,提高CPU的运行效率。

        寄存器功能介绍
  1. 数据存储:寄存器可以暂时存储CPU正在处理的数据、指令或地址等信息。由于寄存器位于CPU内部,访问速度非常快,可以在几个时钟周期内读取或写入数据,因此对数据访问速度十分快速。
  2. 高速缓存:寄存器充当了CPU内部的高速缓存,能够提高程序运行的效率和速度。通过将数据存储在寄存器中,CPU能够更快地执行操作,而不必每次都访问主内存。
  3. 指令操作:寄存器用于存储指令操作需要的各种数据,如操作数、地址等。在执行指令或算术逻辑运算时,数据通常从寄存器中获取,进行计算后再存回寄存器中。
  4. 寄存器间的数据传递:CPU内部的不同功能单元通常通过寄存器进行数据交换和传递。比如,算术逻辑单元(ALU)需要的操作数通常从寄存器中获取,执行运算后又将结果存回寄存器。
  5. 寄存器保存程序状态和控制:程序计数器(PC)等特殊寄存器用于保存程序的执行状态,控制CPU执行的程序路径和流程。标志寄存器用于存储程序运行的状态信息,如溢出标志、零标志等。
  6.  数据传递的中转站:寄存器作为数据传递的中转站,协调不同部件之间的数据交互和通信,实现数据的快速传输和处理。
        寄存器组成 

  •  触发器:这是寄存器的存储单元,用于存储二进制数据。
  •  输入/输出门电路:用于控制数据的输入和输出,并与CPU的其他部分进行通信。
  •  控制逻辑:用于控制寄存器的操作和状态,如启动、停止、读写等。
  •  地址寄存器和数据寄存器:地址寄存器用于存储指令或数据的地址信息,数据寄存器用于存储指令或数据的数据部分。

数据总线

数据通路(Data Path):数据通路是连接控制单元、ALU和寄存器组之间的通路,负责传递数据和控制信号。它将操作数从寄存器组传递给ALU进行运算,并将运算结果返回到寄存器组。

时钟

时钟(Clock):时钟是CPU的时钟信号源,负责控制CPU内部各个部件的同步工作。时钟信号按照固定频率发出脉冲,使CPU内部的各个部件按照特定步骤同步运行。

        时钟功能介绍
  1. 同步组件:时钟信号用于同步CPU、内存、输入输出设备等组件的操作,确保它们按照统一的时序进行工作。
  2. 控制时序:时钟信号控制着CPU内部的时序,如指令的取指、译码、执行、访存和写回等操作,以及各个阶段之间的时间间隔。
  3. 定时和计数:时钟信号可以用来实现定时和计数功能,例如实现中断定时、实现循环计数等。
  4. 控制电源管理:时钟信号还可以用于控制电源管理,例如在低功耗模式下,降低时钟频率以减少能耗。
  5. 同步外部设备:时钟信号还可以用于同步外部设备,例如外部存储设备、网络设备等,确保它们与计算机系统的时序一致。
        时钟组成 
  • 振荡器(Oscillator):振荡器是时钟的基本组成部分,用于产生稳定的振荡信号。常见的振荡器包括晶体振荡器、石英振荡器等,它们能够提供高精度和稳定的时钟频率。
  • 分频器(Divider):分频器用于将振荡器输出的高频振荡信号分频为更低的时钟频率。分频器可以根据需要将高频时钟信号分频为处理器、总线和其他组件所需的不同时钟频率。
  • 控制逻辑(Control Logic):控制逻辑用于控制时钟信号的产生和分配,可以包括时钟信号的使能、禁用、时序控制等功能。
  • 时钟发送器(Clock Driver):时钟发送器用于将时钟信号从时钟发生器传输到计算机系统中的各个部件,确保时钟信号的稳定传输。
  • 时钟缓冲器(Clock Buffer):时钟缓冲器用于增强时钟信号的驱动能力,确保时钟信号能够准确快速地传输到各个组件。
  • 时钟分配网络(Clock Distribution Network):时钟分配网络用于将时钟信号传输到整个计算机系统中的各个组件,确保各个组件之间的时序一致性和同步性。
  • 时钟电源管理(Clock Power Management):时钟电源管理用于控制时钟信号的功耗和电源消耗,可以根据需要动态调整时钟频率和工作模式,实现能效优化。

cpu时钟和控制器时钟

在这里说明一下cpu的时钟和控制器的时钟区别

        功能方面
  • CPU时钟:这是中央处理器(CPU)内部时钟,主要用于驱动CPU内部的各个功能单元,如算术逻辑单元(ALU)、控制单元、寄存器等。CPU时钟决定了CPU执行指令的速度和时序。
  • 控制器时钟:控制器时钟通常指的是外部设备控制器(如存储控制器、网络控制器等)的时钟信号。它用于驱动和控制外部设备的操作,确保外部设备能够与CPU和其他组件协调工作
        频率和同步
  • CPU时钟的频率通常较高,以支持CPU的高速执行能力。CPU时钟与系统时钟(System Clock)通常是同步的,以确保CPU与其他系统组件之间的时序一致性。
  • 控制器时钟的频率可能与CPU时钟不同,取决于外部设备的性能需求和操作特性。控制器时钟需要与CPU时钟保持一定的同步关系,以确保数据传输的准确性和协调性
        控制和分配
  • CPU时钟通常由CPU内部的时钟管理单元控制和分配,以确保CPU内部各个部件之间的时序一致性。
  • 控制器时钟可能由CPU外部时钟源产生,并通过时钟分配网络分配到各个控制器。控制器时钟的管理和分配可能受到CPU时钟的协调和控制。
         用途和重要性
  •  CPU时钟直接影响CPU的性能和速度,是CPU执行指令和处理数据的关键因素。
  • 控制器时钟对于外部设备的控制和数据传输至关重要,它确保外部设备能够与CPU和其他系统组件正确交互。

指令

    指令介绍

指令是计算机程序中的基本元素,它告诉计算机的中央处理器(CPU)要执行的具体操作。在计算机中,指令通常以二进制的形式存在,并且是计算机可执行的最低级别的代码。

   指令组成

操作码(Opcode):表示要执行的操作,如加法、减法、数据传输等。

操作数(Operand):又名地址码,指明操作的对象,可以是寄存器、内存地址或常数。

   指令的类型

  • 数据处理指令:用于执行算术运算(如加、减、乘、除)或逻辑运算(如与、或、非)。
  • 转移指令:用于改变程序的执行流程,如跳转、分支、循环等。
  • 数据传输指令:用于在寄存器与内存之间传输数据,或在一个寄存器与另一个寄存器之间传输数据。
  • 系统调用指令:用于执行操作系统提供的服务,如输入/输出操作、进程管理等。

   指令的执行 

取指令解码执行写回
  1. 取指令(Fetch):CPU从内存中取出指令。
  2. 解码(Decode):CPU解析指令的操作码和操作数。
  3. 执行(Execute):CPU根据指令的操作码执行相应的操作。
  4. 写回(Write Back):如果指令涉及到寄存器的修改,将结果写回寄存器。

   指令的编码 

机器指令:直接对应CPU硬件的指令集,是计算机能直接识别和执行的指令。

汇编指令:人类可读的指令表示形式,需要通过汇编程序转换为机器指令。

高级语言指令:如C、C++、Java等高级编程语言中的指令,需要通过编译器或解释器转换为机器指令。

指令和数据区分

时间区分:

  • 取指周期:在取指周期,CPU从内存中读取的是一段指令。这个周期主要用于获取下一条要执行的指令,并将指令送入指令寄存器。
  • 执行周期:在执行周期,CPU从内存中读取的是操作数,用于执行指令。这个周期主要用于执行指令指定的操作,如算术运算、逻辑运算等。

空间区分:

  • 内存地址:指令和数据在内存中通常有不同的地址范围。指令通常存储在内存的特定区域,而数据则存储在另一个区域。当CPU访问内存时,通过地址来判断是取指令还是数据。(指令和数据在内存存放的位置不一样
  • 指令和数据的存储结构:指令和数据在内存中的存储结构通常不同。指令通常包含操作码和操作数(如果有的话),而数据则是具体的数值或数据结构。(看内容,内容格式就不一样

处理方式: 

  • 指令处理:CPU在执行指令时,会首先从内存中取出指令,然后进行解码和执行。指令的执行涉及到CPU内部的算术逻辑单元(ALU)、控制单元和其他寄存器。
  • 数据处理:CPU在处理数据时,会根据指令的要求从内存中读取数据,进行计算或操作,然后将结果存储回内存或寄存器中。

状态区分: 

程序状态字(PSW):CPU中通常有一个程序状态字(Program Status Word,PSW)或类似的寄存器,用于存储程序执行的状态信息,包括指令的执行状态、条件码等。

计算机周期

  1.  时钟周期(Clock Cycle):时钟周期是计算机系统中的基本时间单位,由时钟发生器产生的等时脉冲信号所确定。CPU的运行速度和时序都是按照时钟周期进行的,时钟周期的频率决定了CPU的工作速度。
  2. 指令周期(Instruction Cycle):指令周期是一个指令执行的完整周期,包括取指、译码、执行、写回等步骤。在一个指令周期中,CPU会完成一个完整的指令操作,从取出指令到执行指令再到下一条指令的取出。
  3. 机器周期(Machine Cycle):机器周期是CPU执行一个基本操作所需的时间,可分为多个时钟周期。一个机器周期包括一系列的操作,如存取主存、读写寄存器、ALU运算等。不同的操作会耗费不同数量的时钟周期。
  4. 操作周期(Operation Cycle):操作周期是执行一个特定操作所需的时间,比如存取内存、执行加法、执行逻辑运算等。操作周期是机器周期的组成部分。
  5. 指令执行周期(Instruction Execution Cycle):指令执行周期指的是CPU执行一条指令所需的总体时间,包括取指、译码、执行、写回等。这是指令级并行计算的一个重要概念。

关系

一个时钟周期是由一个或者多个机器周期组成。

一个机器周期是由一个或者多个指令周期组成。

指令周期是否有一个固定值?为什么?

 指令周期通常没有一个固定值,而是取决于具体的指令和系统架构的特性。这是因为不同的指令可能需要执行不同数量和类型的操作步骤,从而导致指令周期的长度会有所不同。

  1. 指令复杂度:不同的指令具有不同的复杂度,执行不同的操作步骤。一些简单的指令可能只需要几个时钟周期完成,而一些复杂的指令可能需要更多的时钟周期。
  2. 数据相关性:如果指令之间存在数据相关性(如依赖前一条指令的结果),则可能需要等待前一条指令执行完成后才能继续执行,这会影响指令周期的长度。
  3. 系统设计:不同的 CPU 架构和系统设计可能会有不同的指令周期。一些 CPU 采用流水线处理方式,使得指令可以重叠执行,从而缩短指令周期;而一些 CPU 较为简单,每个指令执行完后再执行下一条指令,指令周期较长。
  4. 优化和处理器特性:一些现代处理器具有预测执行、分支预测、乱序执行等特性,可以通过一定的机制来优化执行时间,减少指令周期的长度。

微指令

微指令介绍

微指令是一组控制信号,用于控制微程序中的普通指令的执行顺序和方式。微指令是由微程序中的控制存储器(Control Store)预先存储的,当CPU需要执行一条普通指令时,它会从控制存储器中取出相应的微指令,然后根据微指令的内容产生控制信号,这些控制信号会告诉CPU如何执行普通指令。微指令可以看作是普通指令的集合,它们定义了普通指令的执行顺序和控制逻辑。

微指令与普通指令的区别

  • 普通指令是CPU执行的具体操作,而微指令是控制普通指令执行的控制信号
  • 普通指令由操作码和操作数组成,而微指令由控制信号组成,用于控制普通指令的执行。
  • 普通指令是微程序的基本组成部分,微指令则是微程序的控制单元,用于控制普通指令的执行顺序和方式。(父与子关系

微程序控制是一种高级的控制方式,它允许将复杂的指令分解成一系列简单的操作,然后通过微指令来控制这些操作的执行,从而提高了计算机的灵活性和效率。

指令流水线

介绍

指令流水线是一种并行处理技术,它将指令的执行过程分解为多个阶段,每个阶段称为一个流水线阶段。这些阶段可以同时处理不同的指令,从而提高了计算机的执行效率。

指令流水线的基本思想是将一条指令的执行过程分解成多个子过程,每个子过程称为一个流水线阶段。这些阶段可以同时处理不同的指令,从而实现了指令的并行执行。例如,一个四级流水线的指令执行过程可以分为以下四个阶段:

1. 取指(Instruction Fetch, IF):从内存中取出下一条指令。
2. 解码(Instruction Decode, ID):将取出的指令解码,确定操作类型和操作数。
3. 执行(Execute, EX):根据指令的操作类型执行相应的操作。
4. 写回(Write Back, WB):将执行结果写回寄存器或内存。

在四级流水线中,每个时钟周期可以同时处理四个不同阶段的指令。这意味着在每个时钟周期,CPU可以同时进行以下操作:

- 第一个时钟周期:取指(IF1)和取指(IF2)
- 第二个时钟周期:解码(ID1)和取指(IF2)
- 第三个时钟周期:执行(EX1)和解码(ID2)
- 第四个时钟周期:写回(WB1)和执行(EX2)

通过这种方式,指令流水线可以显著提高计算机的执行效率。每个阶段都可以同时处理不同的指令,从而减少了指令的执行时间。此外,流水线还可以通过增加阶段数来进一步提高执行效率,但同时也需要注意流水线的冲突和冒险问题。

优势

相对于传统计算机体系结构具有以下优势:

  1. 提高指令吞吐量:流水线技术允许CPU同时处理多条指令的不同阶段,从而提高了指令的吞吐量。在一个时钟周期内,CPU可以完成多条指令的不同阶段,而不是等待一条指令完全执行完毕后再处理下一条指令。
  2. 提高CPU利用率:流水线技术减少了等待时间,使得CPU有更多的时间执行实际的工作,而不是等待指令完成。这提高了CPU的利用率,使其更有效地利用计算资源。
  3. 减少总线等待时间:在传统计算机体系结构中,总线访问可能会成为瓶颈。流水线技术减少了总线访问的需求,因为指令的不同阶段可以并行进行,减少了总线访问的次数。

 加速比计算

公式:加速比(Acceleration Ratio) = 非流水线处理时间(T_non-pipelined) / 流水线处理时间(T_pipelined)

  •  T_non-pipelined 是非流水线处理相同数量指令所需的总时间。
  •  T_pipelined 是流水线处理相同数量指令所需的总时间。

举例

例如,假设有一个四阶段流水线,每个阶段的延迟时间为1个时钟周期。如果流水线处理100条指令,那么流水线处理时间为:

T_pipelined = (100条指令 × 4个阶段) × (每个阶段的延迟时间) = (100 × 4) × 1 = 400个时钟周期

如果每条指令在没有流水线的情况下需要10个时钟周期来完成,那么非流水线处理100条指令的时间为:

T_non-pipelined = 100条指令 × (每条指令的延迟时间) = 100 × 10 = 1000个时钟周期

现在我们可以计算加速比: 加速比 = T_non-pipelined / T_pipelined = 1000 / 400 = 2.5 这意味着流水线处理方式比非流水线处理方式快2.5倍。 

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值