第五章:中央处理器(CPU)

第五章:中央处理器(CPU)

本章结构
CPU
指令
多处理器
中断和异常
指令执行过程
指令流水线

Part1:CPU

1、CPU基本结构和功能

1.1 基本结构

请添加图片描述

1.2 功能

运算器:对数据进行处理

控制器:取指令、分析指令、执行指令、中断处理

2、CPU的具体结构和说明

2.1 CPU的具体结构

请添加图片描述

2.2 说明

  • R0~R3:通用寄存器,用于存放各种临时信息
  • 暂存寄存器
    • Register 0:ALU同步输入两个数时用于暂存另一个操作数
    • Register 1:等ALU输出稳定后在将结果放入总线
  • PSW:用于存放运算状态的信息
  • 时序系统:用于产生时序信号
  • 微操作发生器:产生各种控制信号,使得每个部件按照指令操作
  • 中间总线:CPU内部总线
  • MDRoutE:表示输出到外部总线
  • ID:指令译码器,将操作码翻译,并产生选择信号

3、控制器的实现方式

3.1 硬布线控制器:RISC采用

请添加图片描述

  • 节拍发生器:每个时钟周期发出一个节拍信号
  • FE~INT:4个标志触发器,用于区分CPU工作周期
    • FE(fetch):取指令周期
    • IND(In Direct):间址周期
    • EX(executive):执行周期
    • INT(interrupt):中断周期
  • C0~Ck:控制器的控制信号,由组合逻辑电路产生

3.2 微程序控制器:CISC采用

采用递归的思想,将CU视为一个微型计算机

请添加图片描述

  • CM:Control Memory

请添加图片描述

  • 微地址形成部件:产生初始微地址

  • 顺序逻辑:结合信息判断下一条微指令地址

3.2.1 微指令

  1. 微指令格式:
    • 水平型:一条微指令有多条微命令
    • 垂直型:一条微指令只有一条微命令
    • 混合型:既有水平型又有垂直型的微指令
  2. 水平型微指令编码
    • 直接编码:一个bit一个命令
    • 字段直接编码:将控制字段分为几段,每一段译码之后发出控制信号
      • 互斥微命令在同一个段,兼容微命令在不同的段
      • 每个段保留一个状态表示不执行命令
  3. 微指令地址形成方式
    • 自增
    • 由下地址给出

Part2:指令

1、指令执行过程

1.1 指令周期

CPU从主存中取出一条指令并执行的时间称为指令周期,一个指令周期通常包含几个机器周期,一个机器周期通常包含几个时钟周期

请添加图片描述

  • Ti:表示时钟周期
  • 机器周期:图中显示的机器周期相同,称为定长机器周期,但是也可以不相等,称为不定长机器周期

1.2 指令执行方案

  1. 单指令周期

    所有指令执行时间相同(以最慢的那个为基准),指令之间串行执行

  2. 多指令周期

    指令执行时间不同,指令之间串行执行

  3. 流水线方案

    尽量让多条指令同时运行,为了方便指令流水线的设计,采用定长机器周期,并且固定指令周期所经历的机器周期数也相同(尽管有些指令不需要经历所有的机器周期便可运行结束,但是仍然需要消耗整个周期的时间)

2、指令流水线

2.1 指令流水线的性能指标

  1. 吞吐量(Through Put)

    TP=n/T

    • n:任务的数量
    • T:完成n个任务所需时间
  2. 加速比(Speed Up)

    完成同一批任务,SU=T0/Tk

    • T0:不使用流水线所需时间
    • Tk:使用流水线所需时间

2.2 MIPS架构指令流水线

请添加图片描述

  • MIPS是第一个RISC架构,故只有load和store命令可以访存,其他指令均从register group中存取数据(先从主存加载数据到register group中)

  • latch:锁存器,本质为一个暂存寄存器,用于保存本段的执行结果,这种机制保证了每段的执行时间相同

    • Ins latch:Instruction Latch指令暂存器
    • Imm:Immediate number立即数寻址时存放立即数
    • Store:使用store命令时直接将数据放入其中

    • IF:Instruction Fetch

    • IND:Instruction Decoder

    • Ex:Executive

    • Memory:access memory

    • WB:Write Back

  • 如果遇到条件转移类指令,Memory会直接写回PC中(图中没有标示出)不经过WB,而是一个称为WrPc的阶段

2.3 流水线冲突和解决

2.3.1 结构冒险

即资源冲突,不同的指令在同一时刻使用了同一个部件,类比操作系统互斥问题

请添加图片描述

解决方案:

  • 让冲突指令向后推迟执行
  • 让Data Cache和Instruction Cache分离(资源重新配置)

2.3.2 数据保险

后一条指令需要前一条指令的执行结果,类比操作系统的同步问题

请添加图片描述

解决方案:

  • 让后一条指令推迟执行
    • 硬件:阻塞stall
    • 软件:添加空指令(nop指令)
  • 数据旁路:不等第一条指令的结果写回到register中,直接在ALU的运算结果拉一条线作为第二条指令ALU的输入
  • 编译优化:调整指令执行顺序,让后续无关的指令先执行

对于运算类指令来说,访存阶段无需做任何事情,但是任然需要消耗时间,称之为空段

2.3.3 控制冒险

对于转移类指令来说,导致了PC的值跳跃改变,使得原本安排的指令流水线断流

请添加图片描述

解决方案:

  • 预测分支指令结果
    • 简单预测:一直猜true或者false
    • 动态预测:根据历史情况来调整
  • 两手抓:预期指令成功和不成功两个方向上的指令流
  • 加快形成条件码

2.4 流水线的分类和改进

2.4.1 分类

  • 静态流水线:同一时间内流水线部件只能完成同一种运算
  • 动态流水线:同一时间内流水线部件能够完成不同的运算(一些部件运算浮点数,一些部件运算定点数)

2.4.2 改进

  • 空间复用:同一时刻执行多条指令——超标量流水线
  • 时间复用:将时间在划分为更小的时间段——超流水线

请添加图片描述

Part3:多处理器

1、计算平台分类

请添加图片描述

  • SISD:前面介绍的内容均为该结构(冯诺依曼结构)传统的串行计算机可以采用流水线加速
  • SIMD:一个指令流处理多个数据流,常采用多个运算部件来实现(有多个ALU)
    • 变种:向量处理器——由处理单个数据变为处理向量(一组数据)在特定环境中极大提升了性能(矩阵相似,数值模拟)
  • MISD:没人用
  • MIMD:同时执行多条指令和多条数据,现在intel和AMD的多核处理器就是属于此类

2、多核处理器

将多个处理单元集成到一个芯片中

请添加图片描述

  • 与单核多线程(虚拟技术)不同,多核的多线程是真正的多线程
  • 一般来说,现代的多核硬件结构中,内存由多个核心共享,并且核心对称,称为SMP(Symmetric Multi-processor)对称多处理器

3、硬件多线程

多核处理器为每个线程单独提供了寄存器和程序计数器,线程切换时只需激活其中的寄存器即可

有三种实现方式

  • Fine-grained multithreading:细颗粒多线程,线程之间轮流执行
  • Coarse-grained multithreading:粗颗粒多线程,一个线程阻塞了在执行另一个
  • 同时多线程:通知执行多线程指令

请添加图片描述

Part4:中断和异常

详见5.5章

Part end:参考文献和一些说明

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值