计算机组成原理——CPU功能结构 指令周期 数据通路 控制器 流水线

笔记整理来源于王道考研视频

CPU的功能和结构

CPU的功能

  1. 指令控制
  2. 操作控制
  3. 时间控制
  4. 数据加工
  5. 中断处理

在这里插入图片描述


在这里插入图片描述


运算器的基本结构

  • 算术逻辑单元:主要功能是进行算术/逻辑运算
  • 通用寄存器组:如AX,BX,CX,DX,SP(堆栈指针)等,用于存放操作数和各种地址信息
  • 专用数据通路

在这里插入图片描述

  • 总线方式

在这里插入图片描述


控制器的基本结构

  1. 取指令:有一个寄存器专用于存放当前指令的地址
  2. 分析指令:有存放当前指令的寄存器和对指令操作码进行译码的部件
  3. 执行指令:有一个能发出各种操作命令序列的控制部件CU
  4. 完成算术运算和逻辑运算:有存放操作数的寄存器和实现算逻运算部件ALU
  5. 处理异常情况和特殊请求:有中断系统

在这里插入图片描述


整个CPU的结构

在这里插入图片描述


CPU的寄存器

  1. 用户可见寄存器(可编程)

    • 通用寄存器(存放操作数;满足作为某种寻址方式所需的寄存器)
    • 数据寄存器(存放操作数,位数满足多数数据类型的数据范围)
    • 地址寄存器(存放地址;也可用于特殊的寻址方式)
    • 条件码寄存器(条件码作为分支运算的依据)
  2. 控制和状态寄存器(不可编程)

    控制CPU的操作和运算,比如

    • MAR:存储器地址寄存器
    • MDR:存储器数据寄存器
    • PC:程序计数器
    • IR:指令寄存器

指令周期的数据流

指令周期

  • CPU从主存中每取出并执行一条指令所需的全部时间

指令周期 > 机器周期 > 时钟周期(节拍)

在这里插入图片描述

  • 每个指令周期内机器周期数可以不等,
  • 每个机器周期内的节拍数也可以不等

在这里插入图片描述


流程

在这里插入图片描述

取址周期

  1. PC中存放现行指令的地址,该地址送到MAR并送至地址总线
  2. 然后由控制部件CU向存储器发送读命令,使对应MAR所指单元的内容经数据总线送至MDR,再送至IR
  3. 并且CU控制PC内容加1,形成下一条指令的地址

在这里插入图片描述

间址周期

  1. 一旦取指周期结束,CU便检查IR中的内容,以确定是否有间址操作
  2. 如果需要间址操作,则MDR中指示的形式地址的右N位(记做Ad(MDR))将被送到MAR,又送至地址总线
  3. 此后向存储器发送读命令,以获取有效地址存至MDR

在这里插入图片描述

执行周期

不同的指令在执行周期的操作不同,因此执行周期的数据流是多种多样的

中断周期

PC当前的内容必须保存起来,以待执行完中断服务程序后可以准确返回到该程序的间断处

在这里插入图片描述

指令执行方案

在这里插入图片描述


数据通路

数据通路:数据在功能部件之间传送的路径

CPU内部单总线方式

  • 内部总线是指同一部件,如CPU内部连接各寄存器及运算部件之间的总线
  • 系统总线是指同一台计算机系统的各部件,如CPU,内存。通道和各类I/O接口互相连接的总线

在这里插入图片描述

例题

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


专用数据通路方式

在这里插入图片描述

例题

在这里插入图片描述


(PC)-->MAR

M(MAR)-->MDR

(MDR)-->IR


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


控制器的功能和工作原理

取指令,分析指令,执行指令

在这里插入图片描述


控制单元的输入输出

在这里插入图片描述


硬布线

工作原理:微操作控制信号由组合逻辑电路根据当前的指令码,状态和时序,即时产生

在这里插入图片描述

设计步骤

选择CPU的控制方式

在这里插入图片描述


CPU的控制方式

  1. 同步控制
    • 整个系统所有的控制信号均来自一个统一的时钟信号
    • 优点是控制电路简单,缺点是运行速度慢
  2. 异步控制
    • 不存在基准时标信号
    • 各部件按自身固有的速度工作,通过应答方式进行联络
    • 优点是运行速度快,缺点是控制电路比较复杂
  3. 联合控制
    • 大部分采用同步控制,小部分采用异步控制

假设采用同步控制方式,一个机器周期内安排3个节拍(时钟周期)


安排微操作时序

安排微操作时序的原则

  1. 微操作的先后顺序不得随意更改
  2. 被控制对象不同的微操作尽量安排在一个节拍内完成
  3. 占用时间较短的微操作尽量安排在一个节拍内完成,并允许有先后顺序

取指周期

在这里插入图片描述

间址周期

在这里插入图片描述


执行周期

在这里插入图片描述


中断周期

在这里插入图片描述


电路设计

微程序

工作原理:事先把微操作控制信号存储在一个专门的存储器中,将每一条机器指令编写成一个微程序,这些微程序可以存到一个控制存储器中,用寻址用户程序机器指令的办法来寻址每个微程序中的微指令

在这里插入图片描述


基本结构

在这里插入图片描述

考点

如果是公共的微程序,则总的微程序个数要加上设为公共微程序的个数

在这里插入图片描述


微程序的格式

在这里插入图片描述


微指令的编码方式

  1. 直接编码方式

    在这里插入图片描述

  2. 字段直接编码方式

    在这里插入图片描述

    真题

    在这里插入图片描述

  3. 字段间接编码

    在这里插入图片描述


微指令的地址形成方式

在这里插入图片描述

断定方式(重点)

在这里插入图片描述


微程序控制的基本概念

微命令是微操作的控制信号

微操作是微命令的执行过程

微指令是若干微命令的集合

微周期通常指从控制存储器读取一条微指令并执行相应的微操作所需的时间

主存储器用于存放程序和数据,在CPU外部,用RAM实现

控制存储器(CM)用于存放微程序,在CPU内部,用ROM实现

程序是指令的有序集合,用于完成特定的功能

微程序是微指令的有序集合,一条指令的功能由一段微程序来实现

在这里插入图片描述


硬布线和微程序的比较

微程序控制器硬布线控制器
工作原理微操作控制信号以微程序的形式存放在控制存储器中,执行指令时读出即可微操作控制信号由组合逻辑电路根据当前的指令码,状态和时序,即时产生
执行速度
规整性较规整烦琐,不规整
应用场合CISCRISC
易扩充性易扩充修改困难

指令流水线

在这里插入图片描述

流水线的表示方法

在这里插入图片描述

流水线的性能指标

  1. 吞吐率

    吞吐率是指在单位时间内流水线所完成的任务数量

    在这里插入图片描述

  2. 加速比

    不使用流水线所用时间与使用流水线所用时间之比

    在这里插入图片描述

  3. 效率

    设备的利用率

    在这里插入图片描述


流水线的影响因素

为方便流水线的设计,将每个阶段的耗时取成一样,以最长耗时为准,为此流水线每一个功能部件后面都要有一个缓冲期寄存器,其作用是保存本流水段的执行结果提供给下一阶段使用

影响因素

  1. 结构相关

    由于多条指令在同一时刻争用同一资源而形成的冲突成为结构相关

    在这里插入图片描述

  2. 数据相关

    在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况

    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述

  3. 控制相关

    当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关

    在这里插入图片描述


流水线的分类

在这里插入图片描述

在这里插入图片描述


流水线的多发技术

超标量技术

在这里插入图片描述

超流水技术

在这里插入图片描述

超长指令字

在这里插入图片描述


### 计算机组成原理中的单周期控制器优化 #### 单周期处理器的特点 在一个典型的单周期处理器中,每条指令都在一个单一的时钟周期内完成执行。这意味着所有的操作——取指、译码、执行、访存以及写回都发生在同一个时钟周期里[^1]。 然而,在实际应用中,由于不同类型的指令所需的时间差异很大,为了适应最慢的操作而设定较长的固定时钟周期会降低整个系统的性能效率。因此,针对单周期控制器存在一些特定的方法来进行优化: #### 减少路径延迟 通过分析数据通路中最长的关键路径并设法缩短它来减少总的处理时间。这可能涉及到重新安排组合逻辑门的位置或是利用更快速的技术实现某些功能单元。 #### 提高硬件利用率 对于那些不经常使用的资源可以考虑共享使用;而对于频繁访问的部分则应尽可能地将其放置得靠近计算核心以加快速度。此外还可以引入流水线技术将原本属于同一阶段的任务拆分到多个连续的小步骤当中去从而提高吞吐量[^2]。 #### 微程序控制改进 尽管微程序化本身不是直接作用于单周期架构上的优化手段,但是当考虑到复杂度较高的RISC或CISC体系结构下,合理规划好各条基本指令对应的微命令序列能够有效简化整体设计并且有助于后续进一步提升频率或者增加额外特性支持。 ```python # Python伪代码展示如何模拟简单的单周期CPU部分组件行为 class SingleCycleCPU: def __init__(self): self.pc = 0 # Program Counter self.ir = None # Instruction Register def fetch(self, memory): instruction = memory[self.pc] self.pc += 1 return instruction def decode_execute(self, instr): op_code = instr[:6] operands = int(instr[6:], base=2) if op_code == 'ADD': result = reg_file.read(operands) + imm_value reg_file.write(dest_reg, result) elif op_code == 'SUB': ... cpu = SingleCycleCPU() memory = ["0000000000", "0000000001"] # 假定内存初始化状态 instr = cpu.fetch(memory) cpu.decode_execute(instr) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值