• CPU概述(运算部件、数据通路结构、寄存器组、控制器、时序系统)


    目录

    一、运算部件

    二、CPU 内部的数据通路结构

    三、寄存器组

    1. 通用寄存器组

    2. 程序计数器 PC

    3. 程序状态字寄存器 PSW

    4. 堆栈指针 SP

    5. 暂存器 C 和 D

    6. 指令寄存器 IR

    7. 地址寄存器 MAR

    8. 数据缓冲寄存器 MDR

    四、控制器

    五、时序系统

    1. 指令周期

    2. 节拍/时钟周期

    六、时序控制方式

    1. 同步控制

    2. 异步控制

    3. 扩展同步控制


    CPU 内部结构,以模型机为例:

    一、运算部件

    结构图:

    运算部件以算术逻辑运算部件(ALU)为核心,还包括输入逻辑和输出逻辑:

    • 输入逻辑:ALU 输入端设置两个多路选择器,它们都具有 8 选 1 功能,选择数据来源。
    • 输出逻辑:ALU 输出端设置一个移位器,其逻辑结构也是一个多路选择器。

    ALU 只能实现基本的定点加、减运算和逻辑运算。

    运算部件的设置

    ① 设置一个 ALU,依靠软件子程序实现定点乘除运算、浮点运算。

    ② 设置一个 ALU,同时在硬件级实现定点乘除运算,如设置专门的阵列乘法器和除法器。

    ③ 设置一个 ALU,并将定点乘除部件和浮点部件作为基本配置。

    ④ 设置多个运算部件,以实现流水处理,完成复杂的运算操作。

    二、CPU 内部的数据通路结构

    1. 单组内总线、分立寄存器结构

    ALU 只能把数据送入 CPU 内部总线中;ALU 的数据来源由寄存器组提供。

    Q:如何选择某一寄存器的数据?

    A:使用多路选择器。

    Q:如何将运算结果存入某一寄存器中?

    A:只对需要的寄存器发出上升沿脉冲。

    2. 单组内总线、集成寄存器结构

    用译码器来选择需要的寄存器。

    3. 多组内总线结构 

    CPU 内部设置多组总线,用于传输不同类别的信息。

    如:地址、数据、指令信息等分别用不同的总线进行传送。

    Pentium 处理器的内部结构:

    三、寄存器组

    1. 通用寄存器组

    这类寄存器具有提供操作数、存放运算结果、作地址指针、作计数器、作变址寄存器等多种功能,故称为 通用寄存器

    是可编程访问的寄存器,在指令系统中为这组寄存器分配了各自的编号。

    有编号我们才能编程访问,但是有些有编号的寄存器我们仍然是不能访问的(专用寄存器)。

    • 模型机的通用寄存器有:R0、R1、R2、R3
    • 8086/8088 的通用寄存器有:AX、BX、CX、DX、SP、BP、SI、DI

    2. 程序计数器 PC

    程序计数器(PC)又称指令计数器或指令指针,用来指示指令在存储器中的存放位置。 

    • 当程序顺序执行时,从主存取出一条指令后 PC 内容将增量计数,PC 指向下一条指令。
    • 当程序进行转移时,将转移地址送入 PC,PC 指向新指令。

    因此,当现行指令执行完时,PC 中存放的总是 后续指令/下一条指令的地址

    教材 P109:CPU 在主存中取指令时,每读取一次主存,PC 的内容会自动加 n,以便在指令执行结束后,PC 刚好能指向下一条指令。这里的 n 的取值是多少,完全取决于指令的长度和存储器的编址单元。如果指令字长 32 位,存储器按字节编址,那么 1 条指令将占用 4 个存储单元,此时 n = 4 。

    3. 程序状态字寄存器 PSW

    功能:记录现行程序的运行状态和指示程序的工作方式。

    主要包含特征位和编程设定位两大部分。

    ① 特征位/标志位

    功能:用来反映当前程序的执行状态。

    指令执行后,CPU 根据执行结果设置相应的特征位,作为决定程序流向的判断依据。

    常见有 5 种:

    • 进位/借位标志 C
    • 溢出标志 O
    • 零标志 Z
    • 负标志 N
    • 奇偶标志 P

    特征位是由 CPU 根据执行结果自动进行设置的。

    ② 编程设定位

    PSW 中某些位或某些字段是由 CPU 编程设定的,以决定程序的调试、对中断的响应、程序的工作方式等,包括:

    • 跟踪位 T —— 编程设定的断点标志,以便对程序进行调试。
    • 允许中断位 I 或程序优先级字段
    • 工作方式字段 —— 工作方式可用来指明程序的特权级。

    4. 堆栈指针 SP

    在主存储器中划出一段区间作为堆栈区,这是一种按 “后进先出” 的存取顺序进行存储的结构。

    • 作为起点的一端是固定的,称为栈底;浮动端称为栈顶。
    • 设置一个具有加减计数功能的寄存器作为堆栈指针 SP,SP 中的内容就是栈顶单元地址。 

    采用自底向上的存储模式:

    • 压栈:SP = SP - 1;存入数据 
    • 出栈:读取数据;SP = SP + 1

    当存储单元位宽与操作数字长相同时才是 +1 和 -1 。

    5. 暂存器 C 和 D

    设置暂存器的目的是暂存某些中间过程产生的信息。 

    与通用寄存器不同,暂存器没有编号,只能是 CPU 内部专用。

    不能被编程访问:防止数据被覆盖从而导致数据丢失。

    模型机中,在需要暂存时:

    • 若从主存或者 I/O 端口中读取源操作数地址或者源操作数,则使用暂存器 C 。
    • 若从主存或者 I/O 端口中读取目的操作数地址或者目的操作数,则使用暂存器 D 。
    1. MOV R1, R0 ; 因为寄存器R0和R1都在CPU内部,所以不需要暂存
    2. MOV (R1), (R0) ; 因为是寄存器间接寻址,会访存,所以需要暂存

    6. 指令寄存器 IR

    指令寄存器 IR 用于存放正在执行的指令,它的输出内容包括操作码信息、地址码信息等,是产生微命令/控制信号的主要逻辑依据。

    • IR 里面存放的不是指令的地址,而是指令本身。
    • 指令放入 IR 后,由控制器进行译码。

    7. 地址寄存器 MAR

    CPU 访问主存时,首先要找到需要访问的存储单元,因此设置地址寄存器来存放被访问单元的地址。 

    工作示意图:

    注:地址总线、数据总线、控制总线都在 CPU 外部。

    8. 数据缓冲寄存器 MDR

    数据缓冲寄存器 MDR,又称主存数据寄存器,用于存放 CPU 与主存之间 交换的数据。无论是从主存读出的数据,还是写入主存的数据,都要经过 MDR 。 

    Q:“无论是从主存读出的数据,还是写入主存的数据,都要经过 MDR ”?

    A:这是设计时约定的,对于数据的读写,数据总线 DB 只与 MDR 相连。

    工作示意图:

    R —— 读指令、W —— 写指令

    四、控制器

    控制部件的功能主要是负责对指令进行译码,并且发出为完成每条指令所要执行的各种操作的控制信号/微命令。

    根据指令产生相应的控制信号。

    CPU 工作过程中所需的控制信号,既可以单独由组合逻辑电路的方式来产生,也可以单独由微程序的方式来产生,或者综合运用。

    因此,有两种控制部件:组合逻辑控制器和微程序控制器

    预告:组合逻辑控制器。

    EN 给低电平 —— 线路导通,EN 给高电平 —— 线路中断(高阻)

    组合逻辑控制器是由纯硬件实现的。

    五、时序系统

    1. 指令周期

    是指取出一条指令并执行完这条指令的时间。 

    CPU 每取出一条指令并执行这条指令,都要完成一系列的操作。这一系列操作所需要的时间通常叫做一个 指令周期。而指令周期是取出一条指令并执行完这条指令的时间。由于各条指令的操作功能不同,因此各种指令的指令周期是不尽相同的。 

    2. 节拍/时钟周期

    一个指令周期包含许多长度固定的时间段,一个时间段就是一个节拍,又称时钟周期。

    每个节拍完成一步的操作,而这一步操作又由计算机中各执行部件完成的微操作组成。

    约定用英文字母 P 表示节拍。

    六、时序控制方式

    1. 同步控制

    同步控制方式:是指各项操作由统一的时序信号进行同步控制。

    这就意味着各个微操作必须在规定的时间内或固定时刻完成。

    特点:各操作之间的衔接、各部件之间的数据传输受同步时钟严格的定时控制。

    缺点:因为各操作实际所需的时间可能不同,如果将它们安排在统一的固定时钟周期内完成,必然要根据最长操作所需的时间来确定时钟周期,对于需时较短的操作则存在时间上的浪费。

    (考点)时钟周期的时间长度固定。 

    示例:

    在第一个上升沿打入地址,等待地址在地址总线上稳定后,再读出数据。

    这样做可以适配 CPU 快、主存慢的情况;CPU 内部部件使用的是同步控制,并且由于这些部件速度相近,所以它们之间不需要等待。

    2. 异步控制

    异步控制方式:是指各操作不受统一时序信号(如时钟周期)的约束,而是根据实际需要安排不同的时间。各操作之间的衔接、各部件之间的数据传输均采用 异步应答方式

    特点:在异步控制涉及的操作范围内,没有统一的时钟周期划分和同步定时脉冲。

    优点:时间安排紧凑、合理。

    缺点:控制起来比较复杂。

    示例:

    应答控制信号 —— CPU 有对应的管脚来标定这个状态信号

    CPU 与外部低速设备之间的交互用异步控制来实现;但是用得少。

    Q:何谓同步控制方式,何谓异步控制?有何主要特征?应用场合?

    • 同步控制方式:是指各项操作由统一的时序信号进行同步控制。

      • 特点:各步操作的衔接、各部件之间的数据传送受同步时钟严格的定时控制。

      • 应用场合:速度差异不大、传送时间确定、传送距离较近的部件或设备之间。

    • 异步控制方式:是指各操作不受统一时序信号的约束,而是根据实际需要安排不同的时间。

      • 特点:无统一时序划分,各步操作的衔接、各部件之间的数据传送采用异步应答方式。

      • 应用场合:速度差异较大、传送时间不确定、传送距离较远的设备之间。

    3. 扩展同步控制

    各种操作仍然由时序信号来触发,但操作之间的时间间隔根据实际需要来灵活确定,只要是时钟周期的整数倍即可,称为扩展同步控制方式。

    向同步控制方式中引入应答机制。

    (判断题)操作之间的时间间隔是时钟周期的整数倍。(√)

    示例:

    T3 上升沿不再是读取数据,而是读取应答信号 —— 确认数据是否准备好。如果没有准备好,就等若干个周期(可以是一个也可以是多个),再去读取应答信号。如果准备好了,就读取数据;如果等了很久都没有准备好,那么给出“超时”提醒。


    CPU 的工作原理

    CPU 的工作过程:从主存或缓存中读取指令,将指令放入指令寄存器 IR,然后对指令进行译码。把指令分解成一系列的微操作,再发出各种相应的控制命令,控制各功能部件执行相关的操作,从而完成一条指令的执行,实现对应的功能。

  • 相关阅读:
    测试开发春招
    融云 | 企业通讯录的设计与实现
    偶数科技发布实时湖仓数据平台Skylab 5.3版本
    Hi3798MV200 恩兔N2 NS-1 (四): 制作 Debian rootfs
    智能技术上的“是”并不代表具体领域的“应该”
    Node.js 事件循环
    vue+ts vite环境项目取不到process 解决方法
    LeetCode(力扣)46. 全排列Python
    Rb(redis blaster),一个为 redis 实现 non-replicated 分片的 python 库
    pom.xml中的配置无法被yaml读取
  • 原文地址:https://blog.csdn.net/m0_64140451/article/details/127108064