热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

CH5:CPU

文章目录知识点重难点指令周期指令流程图微程序控制器中容易混淆的概念各类时间周期微指令格式流水和并行加速比杂项知识点CPU的功能指令控制:控制指令执行顺序程序计数器PC


文章目录

  • 知识点
  • 重难点
    • 指令周期
    • 指令流程图
    • 微程序控制器中容易混淆的概念
    • 各类时间周期
    • 微指令格式
    • 流水和并行
    • 加速比
    • 杂项


知识点


  • CPU的功能

    • 指令控制:控制指令执行顺序
    1. 程序计数器 PC
    2. 内存地址寄存器 MAR/AR
    3. 内存数据寄存器 MDR/DR
    • 操作控制:解释与运行指令
    1. 指令寄存器 IR
    2. 指令译码器 ID
    3. 操作控制器
    • 时序控制:给出时钟信号
    1. 时序发生器
    • 数据加工:运算和处理数据
    1. 算术逻辑运算单元 ALU
    2. 浮点运算器
    3. 通用寄存器组(用于存放给运算器的操作数、结果等 运算器的工作区)
    4. 状态条件寄存器 PSWR(存储运算后的进位标志 结果为0标志 等等 如CF OF ZF标志等等)
  • CPU的基本组成

    • 控制器:指令控制+操作控制+时序控制
    • PC+IR+ID+时序发生器+操作控制器(没有AR和DR)
      1. 取指
      2. 分析
      3. 执行
    • 运算器:数据加工
    • ALU+浮点运算器+通用寄存器组+状态条件寄存器
      1. 算术运算
      2. 逻辑运算+逻辑测试
  • CPU中的主要寄存器

    1. 指令寄存器 IR
    2. 数据寄存器 DR
    3. 地址寄存器 AR
    4. 程序计数器 PC
    5. 通用寄存器组(如 RAX RBX RBP 等等)
    6. 状态条件寄存器 PSWR
  • 数据通路

    1. ABUS:地址总线
    2. DBUS:数据总线
    3. IBUS:指令总线
    4. 其它设备
  • 操作控制器:根据指令操作码和时序信号,产生操作控制信号,以便正确建立数据通路,完成取指令和执行指令的控制。

    1. 硬布线控制器
    2. 微程序控制器
  • 指令周期

    • 指令周期=取指令+执行指令
  • CPU周期(机器周期)

  • 时钟周期(节拍脉冲,节拍周期,T周期)

    • 最基本时间单位
    • 一个指令周期=多个时钟周期
  • 指令执行过程

    1. 取指令:一般是每个指令周期的第一个CPU周期(指令译码一般也在第一个CPU周期)
    2. 取操作数
    3. 执行指令
  • 指令流程图:可以不写控制信号。但如果题目要求则需要写控制信号

  • 时序发生器和时序控制方式

    • 控制器的时序控制方式
    1. 同步控制
    2. 异步控制
    3. 联合控制
    • 时序信号的体制(时序信号的构成)
    1. 基本:电位-脉冲制
    2. 三级
    3. 二级
    • 时序信号发生器
    1. 时钟源
    2. 环形脉冲发生器
    3. 节拍脉冲和读写时序译码逻辑
    4. 启停控制逻辑
  • 微程序控制器和微程序控制技术

    • 控制部件:控制器(CPU内)
    • 执行部件:运算器(CPU内)、存储器、I/O设备 等
    • 微命令:控制部件执行部件发出的控制命令
    • 微操作:执行部件根据控制命令执行的操作
      • 相容性和相斥性微操作
    • 微指令:一组实现特定功能的微命令的集合
      • 微指令通常存放在 控制存储器(控存)
    • 微周期
    • 微程序:实现一条机器指令(汇编代码)的微指令的序列
      • 一条机器指令与一个微程序对应
    • 微程序控制器的组成
      • 控制存储器(+地址译码器) CM
      • 微地址寄存器
      • 微命令寄存器
      • 微地址转移逻辑
      • (机器)指令寄存器
    • 微指令格式
      1. 微操作码/操作控制字段 uOP
      2. 顺序控制字段:条件选择(判别测试)字段+微地址码(下一个微指令的微地址)
      3. 实际上是由判别测试字段+微地址码共同决定下一个微指令的微地址
      4. 判别测试字段决定是否进行某判别测试而不影响判别测试的结果是对还是错
    • 微指令格式的具体分类
      1. 水平型微指令
        • 直接控制法
        • 编码表示法
          • 分段编码法
          • 垂直编码法
        • 混合表示法
      2. 垂直型微指令:和垂直编码法类似
    • 形成微地址的方法
      1. 计数器方式:微程序计数器 uPC(可以和微地址寄存器合并)
      2. 多路转移方式:判别测试字段(允许某种判别测试)+状态条件(如 CF标志位等)->选中下一个微地址
  • 硬布线控制器

    • 讨论层级只有微操作
    • 硬布线控制器设计的具体步骤:
      1. 画出指令流程图
      2. 设计控制时序(节拍电位+节拍脉冲)
      3. 微操作综合(将微操作安排在合适的节拍电位和节拍脉冲上,列出各微操作的布尔代数表达式)
      4. 电路实现
  • 流水技术

    • 时间并行:流水
    • 空间并行
    • 时间+空间并行(生产车间的多条流水线)
      • 实例:超标量流水技术——一个机器周期内同时执行多条指令(空间并行),每条指令以流水方式执行
    • 时空图
    • 流水线的分类
    • 线性流水线的三个阶段:填充+稳定流水+排空
    • 线性流水线的时钟周期与频率
    • 线性流水线的加速比
      • 潜在加速比=流水线级数
    • 线性流水线的吞吐率
      • 最大吞吐率=时钟周期长的倒数
    • 流水线的相关问题

重难点


指令周期


  • 本课程对指令周期、CPU周期的设计只要求定性设计,不要求定量设计,即只需要执行顺序关系合理即可,每一条指令分配多少CPU周期不要求。
  • 设计指令流程图算法流程图大致类似,无需关注每个矩形框(一个CPU周期)中包含多少操作,只需关注执行顺序关系即可。
  • 指令周期实例:
    在这里插入图片描述

一般CPU周期大体划分为取指令和执行指令各一个CPU周期,还可以细分



指令流程图


  • 指令流程图实例
    在这里插入图片描述
  • 每一个指令流程图都要包含前面的指令公操作
  • 菱形和前一个矩形同属于同一个CPU周期
  • 设计指令流程时要注意:不要在同一个CPU周期内执行两个互斥操作,如需要在同一条总线上传输数据的两个操作就是一种互斥操作。

微程序控制器中容易混淆的概念

在这里插入图片描述
在这里插入图片描述


  • 微地址码:一般用于存储下一条微指令的地址。微地址码一定是微指令的地址码 可选实现微指令地址跳转功能 用于取下一条微指令。
  • 可使用机器指令的操作码字段作为其对应微程序的第一条微指令的地址。

在这里插入图片描述


  • op是机器指令的操作码字段

各类时间周期


  • 指令周期:取出一条指令并执行该指令所需的时间
  • CPU周期:CPU和内存交换一次信息的时间(取出一条指令所需的时间)
  • T周期:操作的最基本时间单位
  • 微(指令)周期:取出一条微指令并执行该微指令所需的时间
  • 大多数时候机器周期(CPU周期) = 时钟周期,时钟周期不再用于节拍脉冲的描述,而是用于描述CPU周期
  • 一个CPU周期由多个T周期构成

微指令格式


  • 原则上将相斥性微操作对应的微命令安排在编码表示法中的操作字段的同一个子字段
  • 编码表示法中一个子字段的n位二进制码只能表示2n−12^n-12n1个微命令而不是2^n个微命令
  • n位状态条件标志可以实现2n2^n2n路转移

流水和并行


  • 流水是时间上的并行。类似于工厂中的流水线,同时执行不同的工作,顺序完成任务。
  • 并行是空间。同时执行相同的工作,比方说同时下载多个软件,下载工作就是并行完成的。
  • 在工厂中有多个流水线,流水线和流水线之间就是并行的,一条流水线内就是流水。这是流水和并行的结合。

加速比


  • 线性非流水线串行输出一个任务的时间/线性流水线输出一个任务的时间
  • 在稳定流水期间,非流水线的经历所有过程段才能输出一个任务,线性流水线只需要经历一个时钟周期就能输出一个任务
  • 若题目中没有说明,则无需考虑流水线的填充和放空阶段,直接视为稳定流水即可。
  • 若题目中没有说明,任务量视为1个;否则考察n个任务量
  • 当任务数量足够大时(远大于过程段个数),则稳定流水期足够长,可以忽略填充阶段和放空阶段。

杂项


  • 如何理解时序控制?对于所有操作,如取操作数、将操作数送入ALU、ALU输出运算结果,不仅要关注操作的执行顺序,还要关注操作执行的时间点、时间长度。时序控制就是指定各个操作在哪个时刻执行、执行多久、以及操作之间的执行顺序。
  • 计算机将时间分成无数个个离散的时间点,脉冲信号是这些时间点的标志(时间戳)。可以把脉冲信号视为计算机内部给计算机硬件参照的闹钟。比方说,一个CPU周期内第三次高电平时ALU的两个输入端有效。时序发生器可以给一个CPU周期的脉冲,在第三次高电平时,ALU就会取两个输入端的数据进行运算。脉冲信号就像闹钟一样提醒硬件执行某些操作。
  • 看懂数据通路!
  • 节拍电位长度=一个CPU周期?
  • CPU周期 指令周期的分割 只是定性分析 不是定量 执行顺序正确合理即可,怎么分割都行
  • 标量流水线:只有一条流水线
  • 超标量流水线:有多条流水线
  • 微指令的本质:(其中的微命令)就是给某些端口有效信号(例如给LAR有效电平),接着等待下一次时序发生器给的脉冲信号使得操作执行。 故仅凭借微指令是无法驱动微操作完成的,还需要有时序信号来驱动。

推荐阅读
  • 本文详细探讨了 Android Service 组件中 onStartCommand 方法的四种不同返回值及其应用场景。Service 可以在后台执行长时间的操作,无需提供用户界面,支持通过启动和绑定两种方式创建。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 尤洋:夸父AI系统——大规模并行训练的深度学习解决方案
    自从AlexNet等模型在计算机视觉领域取得突破以来,深度学习技术迅速发展。近年来,随着BERT等大型模型的广泛应用,AI模型的规模持续扩大,对硬件提出了更高的要求。本文介绍了新加坡国立大学尤洋教授团队开发的夸父AI系统,旨在解决大规模模型训练中的并行计算挑战。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • Python网络编程:深入探讨TCP粘包问题及解决方案
    本文详细探讨了TCP协议下的粘包现象及其产生的原因,并提供了通过自定义报头解决粘包问题的具体实现方案。同时,对比了TCP与UDP协议在数据传输上的不同特性。 ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • SSE图像算法优化系列三:超高速导向滤波实现过程纪要(欢迎挑战)
    自从何凯明提出导向滤波后,因为其算法的简单性和有效性,该算法得到了广泛的应用,以至于新版的matlab都将其作为标准自带的函数之一了&#x ... [详细]
  • 使用Pandas DataFrame探索十大城市房价与薪资对比
    在本篇文章中,我们将通过Pandas库中的DataFrame工具,深入了解中国十大城市的房价与薪资水平,探讨哪些城市的生活成本更为合理。这是学习Python数据分析系列的第82篇原创文章,预计阅读时间约为6分钟。 ... [详细]
  • 解决宝塔面板Nginx反向代理缓存问题
    本文介绍如何在宝塔控制面板中通过编辑Nginx配置文件来解决反向代理中的缓存问题,确保每次请求都能从服务器获取最新的数据。 ... [详细]
  • Python脚本实现批量删除多种类型文件的扩展名
    本文介绍了一个Python脚本,用于批量处理并移除指定目录下不同格式文件(如png、jpg、xml、json、txt、gt等)的文件扩展名。该方法通过递归遍历文件夹中的所有文件,并对每个文件执行重命名操作。 ... [详细]
  • 利用Git GUI将本地项目同步至GitHub的方法
    GitHub作为开发者不可或缺的工具,不仅提供了丰富的开源项目资源,还极大地便利了个人项目的管理和版本控制。本文将详细介绍如何使用Git GUI工具将本地开发的项目上传至GitHub。 ... [详细]
  • 一键LNMP配置SSL证书实现全站HTTPS访问
    许多网站搭建者选择了便捷的一键LNMP安装包,但在网站部署完成后,配置SSL证书以支持HTTPS访问是一个不可或缺的步骤。本文将详细介绍如何通过简单的步骤完成这一过程。 ... [详细]
  • 微服务自动化.dockercompose
    目录一、docker-compose二、docker-compose安装与配置1、修改docker.service2、下载文件3、将刚才下载的docker-compose文 ... [详细]
  • 本文介绍了使用手机号码检查微信账户是否激活的方法。通常情况下,未注册微信的手机号在微信的好友搜索功能中无法找到,除非该号码设置了隐私保护。此外,文章还探讨了当前可利用的第三方平台来高效地进行此类检测。 ... [详细]
author-avatar
龙龙玖号_367
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有