【计算机组成原理考研复习】05、中央处理器

CPU功能和基本结构

1、CPU功能

  1. 组成
    1. 运算器
      1. 功能:对数据加工
    2. 控制器
      1. 功能:负责控制并协调计算机各部件执行 程序的指令序列
  2. 功能
    1. 指令控制
    2. 操作控制
    3. 时间控制
    4. 数据加工
    5. 中断处理

 

 

2、CPU基本结构

  1. 数据通路的基本结构
    1. 专用通路
      1. 硬件:多路选择器和三态门
    2. 内部总线
      1. BUS
  1. 运算器【蓝色表示用户可见,红色用户不可见】
    1. 算术逻辑单元【ALU】:逻辑运算
    2. 暂存寄存器【】:展示存储从主存读出来的数据
    3. 累加寄存器【ACC】:加法运算
    4. 通用寄存器【X】:
    5. 程序状态字寄存器(标志寄存器)【PSW】
      1. 存溢出,进位等
    6. 移位器:用于移位运算
    7. 计数器:用于对乘除操作步数记数
  2. 控制器【CU】如下图
    1. 程序计数器【PC】:指出下一条指令存放地址
    2. 指令寄存器【IR】:保存当前正在执行的指令
    3. 指令译码器【】:对指令的操作码部分译码,向CU发出特定指令
    4. 存储器地址寄存器【MAR】
    5. 存储器数据寄存器【MDR】
    6. 时序系统:产生各种时序信号
    7. 微操作信号发生器:根据IR、PSW、时序信号内容,产生整个计算机所需的各种控制信号

 

 

 

 

指令执行过程

1、指令周期

  1. 1个指令周期 = n个CPU周期(机器周期)= n个CPU时钟周期(时钟周期,T周期)
    1. 结构:指令周期 = 取指周期(译码过程较短,包含在取指过程中) + 执行周期
    2. 不同指令,指令周期不同
  2. 标志触发器
    1. FE【取指】,IND【间址】,EX【执行】,INT【中断】、
    2. 置1表示有效

2、指令周期的数据流

    1. 取指周期
      1. 描述:PC通过MAR从主存中取出指令,放到IR
      2. 步骤
        1. PC->MAR->地址总线(AddrT)->主存
        2. CU->R->控制总线->主存
        3. M(MDR)->数据总线->IR
        4. CU->PC+1:直接发出控制信号(不需要走外部总线,应该是走内部总线)
    2. 间址周期【间址寻址是发生】
      1. 描述:MAR根据形势地址A,在主存中找到EA,再找到操作数
      2. 步骤:
        1. Ad(IR)->MAR->地址总线->主存:从IR中取出当前指令的地址码部分
        2. CU->R:CU通过控制总线对主存发出读操作
        3. M(MDR):主存把数据,通过数据总线发给MDR
    3. 执行周期
      1. 描述:例:取操作数,根据IR中操作码的类型,CU控制ALU执行
      2. 步骤:
        1. (MDR) -> MAR->主存
        2. CU->R
        3. M(MDR)->暂存器
        4. 操作码(IR)->译码器->CU
        5. CU->ALU
    4. 中断周期
      1. 描述:将当前程序断点存入堆栈【计算机中堆栈的地址是从高到低,所以存数据前,指针 - 1,】中
      2. 步骤:
        1. CU->SP = SP-1
        2. CU->W
        3. (PC)->MDR->主存->SP
        4. CU->PC:CU控制PC去执行中断指令【后两句不在中断周期】
        5. 执行完中断指令,从堆栈取出中断前PC的值,继续执行

 

 

3、指令执行方案

  1. 单指令周期:串行
  2. 多指令周期:串行
  3. 流水线方案:并行
    1. 根据指令不同周期使用的计算机部件不同,高效的
    2. 多条指令并行执行,但都处于不同指令周期

数据通路的功能和基本结构

内部总线:CPU内部的总线

系统总线(外部总线):CPU外部的数据总线

各个阶段微操作序列和控制信号

  1. 数据通路的功能:
    1. 定义:数据在功能部件之间的流通的路径叫 数据通路
    2. 功能:负责寄存器与寄存器,寄存器与主存,寄存器与ALU之间的数据交换
  2. 数据通路基本结构
    1. CPU内部单总线,如下图
    2. CPU内部多总线
      1. 提高效率,但成本高
    3. 专用数据通路:每个功能部件之间连一条专用线
      1. 成本更高
  3. 微操作的类型
    1. 寄存器与寄存器
    2. 寄存器与主存
    3. 寄存器与ALU
      1. 需要暂存寄存器(下图中的Y,Z)

 

 

 

 

 

 

控制器的功能和工作原理【对指令中操作码部分的处理】

  1. 控制器:CPU中用来控制、协调计算机各部件执行指令

 

 

2、硬布线控制器

  1. 定义:设计电路布线来控制微命令执行
  2. 硬布线控制单元外部结构图
    1. 获取指令操作码,IR里,操作码部分
    2. 目前的机器周期(CPU周期)
      1. 固定指令:取指周期、间址、中断。
      2. 非固定:执行周期
    3. 节拍信号
      1. 在硬布线中分为T0,T1,T2
    4. 机器状态条件
      1. 例如:需要间址是一个状态码,不需要是另一个

 

 

 

 

  1. 硬布线控制单元内部设计
    1. 分析各阶段的微操作序列
      1. 取指周期
        1. PC->MAR
        2. 1->R:CU->R
        3. M(MAR)->MDR
        4. PC = (PC)+1
      2. 间址周期
        1. Ad(IR)->MAR
        2. 1->R
        3. M(MAR)->MDR->Ad(IR)
      3. 中断周期
      4. 执行周期
        1. 非访存
          1. CLA,清零
          2. COM,取反
          3. SHR,算术右移
          4. CSL,循环左移
          5. STP,停机指令
        2. 访存
          1. ADD,加法
          2. STA,存数
          3. LDA,取数
        3. 转移
          1. JMP,无条件转移
          2. BAN,条件转移
    2. 选择CPU控制方式
      1. 同步
      2. 异步
      3. 联合【上面两种结合】
    3. 安排微操作时序-取指周期
      1. 如下图
      2. 【注】:
        1. 访存指令执行速度比较慢,需要一个周期
        2. 非访存指令速度快,可以安排一个周期执行,例如T2中两个微操作(微命令)

 

 

    1. 电路设计
      1. 列出操作时间表
      2. 写出微操作最简逻辑表达式
      3. 画出电路图
  • 优点:操作快,效率高
  • 缺点:逻辑较复杂,扩充指令需要重新设计电路

3、微程序控制器【结构相当于缩小版的 主存+CPU】

  1. 定义:设计微程序【类似C语言】来控制微命令执行
    1. 微指令结构:操作指令+下地址【下一个微指令的地址】
  2. CU内部结构
    1. 微地址形成部件
    2. 顺序逻辑
    3. CMAR
    4. 地址译码
    5. CM【控制存储器】
    6. CMDR:存放微指令
  3. 工作原理
    1. 取指、间址、执行、中断。其中间址和中断可有可无
    2. 处理取指、间址、中断周期的指令序列是固定的,执行周期各不相同
    3. 程序VS微程序、指令VS微指令、主存储器VS控制存储器
  4. 工作步骤
    1. 取出指令的操作码部分,放入微地址形成部件,产生初始微地址和后继微地址
    2. 经过顺序逻辑【根据指令中寻址特征码,判断是否需要间址操作】,到CMAR,为去CM中读取微指令做准备
    3. 经过微地址译码,到CM中读取微指令,存放到CMDR
    4. 微指令中的控制字段去执行微命令,下地址字段继续去顺序逻辑单元循环

 

 

  1. 概念
    1. 机器指令 = 微程序 = n个微指令
    2. 微指令 【的控制字段中,每一位就是一个】= n个微命令
    3. 1个微命令对应1个微操作

 

 

  1. 微指令格式,如下图

 

 

    1. 水平型:一个微指令并行执行多个微命令
      1. 结构:操作控制【微命令字段】 + 顺序控制
        1. 优点:微程序短,执行速度快
        2. 缺点:微指令长,编写微程序较麻烦
      2. 编码方式
        1. 直接编码:微命令字段,每一位代表一个微命令,选用置1
        2. 字段直接编码:将微命令字段分为若干个字段,把互斥命令放一个字段,把相容微命令放不同字段

 

 

        1. 字段间接编码:【相当于间接寻址,需要两层】
    • 垂直型:一个微指令只能执行一个微命令
      1. 结构:微操作码 + 目的地址 + 原地址
        1. 优点:微指令短,编写简单
        2. 缺点:微程序长,执行复杂
    • 混合型,上面两种结和
  • 微指令的地址形成方式
    1. 断定法:直接由微指令的下地址指出
    2. 根据指令操作码形成
    3. 计数器法:(CMAR)+1 -> CMAR
    4. 根据各种标志位
    5. 测试网络
    6. 硬件产生微程序入口地址

 

 

4、硬布线和微程序控制器的比较

 

 

指令流水线

  1. 指令流水线概念
    1. 定义:充分利用计算机硬件部件,根据各个指令周期在不同的部件中,设计指令并行执行,可以通过增加少量硬件,使性能大幅提升
    2. 指令执行对比
      1. 顺序执行
        1. 按顺序,一条一条执行指令,
        2. 会造成硬件使用不充分,大部分时间处于空闲状态,浪费
        3. 假设n条指令,一个指令周期包括3个阶段,【这里是理想状态下】一个机器周期对应一个时钟周期Δt,则顺序执行需要时间:3nΔt
      2. 流水线执行
        1. 指令并行执行
        2. 充分利用计算机部件,大大提升效率
        3. 在上述假设条件下,流水线执行时间为:3Δt +(n-1)Δt = (2+n)Δt
  2. 指令流水线的表示方式
    1. 如下图
      1. 指令执行过程图
      2. 时空图

 

 

  1. 指令流水线的性能指标
    1. 吞吐率:单位时间内流水线执行的任务数量
      1. TP = n/T0
    2. 加速比:顺序执行的时间 / 流水线执行的时间
      1. S = kn/k+n-1,一个指令周期包括k个阶段,n个指令需要执行
    3. 效率:硬件设备处于忙碌的时间占总时间的比例
      1. E = 时空图中,有效时间面积 / 全部面积

 

 

  1. 机器周期设置
    1. IF取指、ID译码、EX执行、M访存、WB写回
    2. 需要暂存器,控制机器周期定长
  2. 影响流水线的因素
    1. 资源冲突【互斥】
      1. 定义:多条指令争抢同一硬件资源
      2. 解决:
        1. 后一指令暂停一个周期
        2. 分置资源:例如下图中,通用寄存器使用冲突:第1条指令准备写回数据,第4条准备读出
          1. 将该部分硬件,一分为二,读寄存器和写寄存器,就能解决冲突

 

 

    1. 数据冲突【同步】
      1. 定义:两条指令需要的操作数存在前置和后继关系
      2. 解决:
        1. 暂停
          1. 硬件置空
          2. 软件置空nop
        2. 数据旁路技术:观察下图中,第2条指令需要通用寄存器中的数据,但其实这个数据在ALU执行结束,就已经准备好了,这里引出一条专用数据通路,作为下一条指令ALU的一个输入,即可满足要求
        3. 编译优化:前置指令执行时,将后继指令延迟几个周期执行,空余周期用不需要前置数据的指令填充,如下图【编译优化:把后继指令中不需要前置指令的放到前面,充分利用资源】

 

 

    1. 控制冲突
      1. 遇到改变PC值的指令时,容易造成指令周期断流,例如跳转指令JMP指令等
      2. 解决:
        1. 转移指令分置预测【算卦】
        2. 提前预测转移成功与失败后的指令,早做准备
        3. 加快形成条件码【类似第二章中、并行加法器的实现,组内并行,组间串行】
        4. 提高算卦成功的准确率

 

 

  1. 流水线的分类
  2. 超标量流水线的基本概念

 

 

五段式例题

    1. RISC精简指令,运算类不需要访存,只有load,store(写回)需要访存
      1. IF、根据PC从【指令cache】中取指到IF段锁存器
      2. ID、指令译码,并从通用寄存器中取出操作数到ID段锁存器
      3. EX、运算,将结果存到EX段锁存器
      4. M,空段
      5. WB、将EX段锁存器的操作数写回指定通寄存器

 

 

    1. LOAD,Store需要访存,且使用【基址寻址】
      1. load
        1. IF
        2. ID
        3. EX、根据偏移量和基地址计算得到有效地址EA
        4. M、根据有效地址从数据Cache中取操作数到M段锁存器
        5. WB、将取出的数写回通用寄存器

 

 

      1. store
        1. 把RS的值放到【数据cache】中指定的地址
          1. IF
          2. ID
          3. EX,计算要存放到数据cache中哪个地址
          4. M,将取出的
          5. WB空段

 

 

    1. 条件转移,大多使用【相对寻址】

 

 

    1. 无条件转移
      1. 对PC的下一个位置进行相对偏移
      2. 无条件转移不需要ALU运算判断,会在指令执行阶段就把PC+“1”+#立即数(偏移量)的值写回通用寄存器

 

 

    1. 例题

 

 

    1. I3的ID为什么等待?
      1. ID段需要取出前两个指令结束后的操作数,所以等待
    2. IF为什么等待
      1. I3中IF段等待,将暂存器占用,I4就无法取指,所以等待
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机组成原理考研复习是指准备参加计算机组成原理考研考试的学习和复习过程。计算机组成原理是指根据计算机体系结构,设计计算机各部件的具体组成以及它们之间的连接关系,实现机器指令级的各种功能和特性。在考研复习中,主要涉及到计算机系统概述、计算机硬件的发展、计算机软件的发展、计算机的分类与发展方向、计算机系统层次结构、计算机的性能指标等知识点。 具体而言,考研复习的内容包括但不限于计算机系统概述、计算机硬件的发展、计算机软件的发展、计算机的分类与发展方向、计算机系统的组成、计算机硬件的基本组成、计算机软件的分类、计算机的工作过程、计算机系统的多级层次结构、计算机的性能指标等。 在考研复习中,需要学习计算机体系结构的基本概念,了解计算机硬件和软件的发展历程,掌握计算机系统的组成和工作过程,熟悉计算机的性能指标和计算机的分类与发展方向。同时,还需要了解计算机组成原理的基本部件的结构和组织方式,掌握基本运算的操作原理,以及了解基本部件和单元的设计思想等。 总之,计算机组成原理考研复习是为了深入理解计算机组成原理的基本概念、原理和方法,为参加考研考试做好准备。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [计算机组成原理知识点汇总(考研用)——第一章:计算机系统概述](https://blog.csdn.net/qq_44709990/article/details/107992763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [计算机组成原理知识点总结----期末考研,一篇就够](https://blog.csdn.net/weixin_51677070/article/details/124245951)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值