【学习笔记】计算机组成原理(九+十)

news2024/11/19 15:25:09

控制单元的功能

文章目录

  • 控制单元的功能
    • 9.1 微操作命令的分析
      • 9.1.1 取指周期
      • 9.1.2 间址周期
      • 9.1.3 执行周期
      • 9.1.4 中断周期
    • 9.2 控制单元的功能
      • 9.2.1 控制单元的外特性
      • 9.2.2 控制信号举例
      • 9.2.3 多级时序系统
      • 9.2.4 控制方式
  • 控制单元的设计
    • 10.1 组合逻辑设计
      • 10.1.1 组合逻辑控制单元框图
      • 10.1.2 微操作的节拍安排
      • 10.1.3 组合逻辑设计步骤
    • 10.2 微程序设计
      • 10.2.1 微程序设计思想的产生
      • 10.2.2 微程序控制单元框图及工作原理
      • 10.2.3 微指令的编码方式(控制方式)
      • 10.2.4 微指令序列地址的形成
      • 10.2.5 微指令格式
      • 10.2.6 静态微程序设计和动态微程序设计
      • 10.2.7 毫微程序设计
      • 10.2.8 串行微程序控制和并行微程序控制
      • 10.2.9 微程序设计举例

9.1 微操作命令的分析

9.1.1 取指周期

在这里插入图片描述

9.1.2 间址周期

在这里插入图片描述

9.1.3 执行周期

  • 非访存指令

    指令微操作说明
    CLAclear ACC,对ACC清零0 → ACC
    COM取反 ACC ‾ \overline{\text{ACC}} ACCACC
    SHR算术右移,左边补上的是原来的符号位L(ACC) → R(ACC), ACC0ACC0,就是将原来的符号位写回到最高位
    CSL循环左移R(ACC) → L(ACC),ACC0ACCn
    STP停机指令0 → G,计算机有个停机标志,置0即停机
  • 访存指令

    指令微操作说明
    ADD X加法指令将地址X中的数取出与ACC中相加再存入ACC中
    Ad(IR) → MAR操作数地址仍然是在IR中的,要将加数从内存取出
    1 → R
    M(MAR) → MDR
    (ACC) + (MDR) → ACC
    STA X存数指令ACC中保存的数据存到内存单元给定的地址X中
    Ad(IR) → MAR将X的地址传给存储器
    1 → W写的指令传给主存
    ACC → MDR
    MDR → M(MAR)
    LDA X取数指令X中的数据加载到ACC中
    Ad(IR) → MAR将X的地址传给存储器
    1 → R
    M(MAR) → MDR
    MDR → ACC
  • 转移指令

    指令微操作说明
    JMP X —— 无条件转移Ad(IR) → PC
    BAN X —— 条件转移A0 ⋅ Ad(IR) + A0 ‾ \overline{\text{A0}} A0 ⋅ (PC) → PC负则转,
    如果上一条指令的结果是负数,
    就跳转到X地址的指令,
    上一条指令的运算结果是在ACC中的,
    判断正负就看ACC的最高位A0 即可

在这里插入图片描述

9.1.4 中断周期

任务微操作说明
保存断点0 → MAR(程序断点存入"0"地址)

(SP)−1 → MAR(程序断点进栈)
保存断点就是将断点送入到内存单元中,有两种方式:
1. 程序断点存入"0"地址
2. 程序断点进栈
二者在操作上唯一的不同就是:断点保存的地址不同
1 → W
PC → MDR程序断点原在PC中的
MDR → M(MAR)
形成中断服务程序入口地址(中断识别程序入口地址)M → PC软件查询法
向量地址 → PC硬件查询法
关中断0 → EINTEINT置0,就关中断了

9.2 控制单元的功能

9.2.1 控制单元的外特性

在这里插入图片描述

  • 输入信号

    输入信号说明
    指令寄存器OP(IR) → CU,IR保存了要执行的那条指令,将指令的操作码送到CU进行译码,指出指令要做的操作,控制信号与操作码有关
    时钟为了使控制单元按一定的先后顺序、一定的节奏发出各个控制信号,控制单元必须受时钟控制,即每一个时钟脉冲使控制单元发送一个操作命令,或发送一组需要同时执行的操作命今
    标志控制单元有时需依赖CPU当前所处的状态(如ALU操作的结果)产生控制信号
    如BAN指令,控制单元要根据上条指令的结果是否为负而产生不同的控制信号;
    再如条件转移指令所需要判断的条件就是标志
    外来信号(来自系统总线(控制总线)的控制信号)
    来自CPU外部的信号也会进入CU,以便CU对整个系统的硬件资源发出命令,进行管理。比如INTR中断请求,HRQ总线请求
  • 输出信号

    输出信号指令举例说明
    CPU内部的各种控制信号,控制CPU内部的部件做相应的操作Ri → Rj寄存器之间的数据传输
    (PC)+1 → PC更新PC指令
    ALU 算术运算(加、减)、逻辑运算(与、或)CPU内部运算器执行的操作
    送至控制总线的信号,控制IO、总选、存储体的信号 MREQ ‾ \overline{\text{MREQ}} MREQ访问存储体控制信号
    IO ‾ \overline{\text{IO}} IO/M访IO/存储体的控制信号,低电平是IO,高电平是存储体
    RD存储器读命令
    WR存储器写命令
    INTA中断响应信号,CPU发出,响应中断源的中断请求
    HLDA总线应答信号,响应外设发出的总线使用请求

9.2.2 控制信号举例

  • 不采用 CPU 内部总线的方式

    在这里插入图片描述

    以ADD @X为例

    取指周期

    起点终点说明
    PCMARC0有效:取指令,PC要将指令地址送到MAR(取数据的地址是保存在IR中的)
    MARMC1有效:MAR要将地址送给地址总线,再通过地址总线送到存储器
    1RCU将控制信号送到控制总线上,控制总线向主存发读命令
    MMDRC2有效:通过数据总线将响应数据送到MDR,此时指令已经被取到MDR中
    MDRIRC3有效:指令从MDR送到IR
    ACC12有效:如果是取数指令,取回来的数据送到ACC中
    ALUC7有效:如果是加法指令,取回来的数据可能直接被送到ALU了
    MARC5有效:如果是间址寻址,内存中取出来的是操作数的地址,还要再送给MAR去取数
    MDR保存的种类很多,因此先统一保存到MDR中,在CU的控制下再送给响应的部件
    IRCUC4有效:指令寄存器IR的操作码部分要送给CU进行译码
    时钟CUCU 在操作码和时钟的控制下,可产生各种控制信号。
    CU控制信号CU发出控制信号
    (PC) + 1PC使PC内容加1

    间址周期

    起点终点说明
    MDRMARC5有效:将MDR中的地址码部分送到MAR当中
    MARMC1有效:MAR要将地址送给地址总线,再通过地址总线送到存储器
    再次进行内存单元的访问,取出这条指令要的操作数的地址
    1RCU将控制信号送到控制总线上,控制总线向主存发读命令
    MMDRC2有效:通过数据总线将有效地址送到MDR
    MDRIRC3有效:指令从MDR送到IR

    执行周期

    起点终点说明
    MDRMARC5有效:将MDR中的地址码部分送到MAR当中
    MARMC1有效:MAR要将地址送给地址总线,再通过地址总线送到存储器
    1RCU将控制信号送到控制总线上,控制总线向主存发读命令
    MMDRC2有效:通过数据总线将操作数送到MDR(此时加数在MDR,被加数在AC)
    控制信号ALUC6、C7同时有效:通过CPU内部控制总线对ALU发“ADD”加控制信号,完成AC的内容和MDR的内容相加。
    (AC) + (MDR)ACC8同时有效:将求和结果存入 AC。
    C9和C10分别是控制PC的输出和输人的控制信号,
    C11和C12分别是控制AC的输出和输入的控制信号。
  • 采用 CPU 内部总线方式

    在这里插入图片描述

    以ADD @X为例

    取指周期

    起点终点说明
    PCMARPCo和MARi有效:PC的值经由CPU内部总线送到MAR(保存的是下一条要执行的指令地址)
    MAR地址线MAR把地址送到地址线
    1RCU发出读命令,读命令是通过控制线送到存储器
    数据线MDR读出来的指令通过数据线送到MDR(保存的是取回来的间接寻址的加法值)
    MDRIRMDRo和IRi有效:在控制信号的控制之下输出到CPU内部总线,通过总线输入到IR中
    IR就保存了要执行的加法指令
    OP(IR)CU指令寄存器IR的操作码部分要送给CU进行译码
    (PC) + 1PC使PC内容加1

    间址周期

    起点终点说明
    MDRMARMDRo和MARi有效:MDR通过CPU的内部总线将形式地址送入到MAR中
    MAR地址线MAR将地址送到地址线
    1RCU发出读命令,读命令是通过控制线送到存储器
    数据线MDR读出的内容(有效地址)经过数据线送入到MDR中
    MDRIRMDRo和IRi有效:MDR通过CPU的内部总线将有效地址送入到IR中

    执行周期

    起点终点说明
    MDRMARMDRo和MARi有效:MDR通过CPU的内部总线将操作数的地址送入到MAR中
    MAR地址线MAR将地址送到地址线
    1RCU发出读命令,读命令是通过控制线送到存储器
    数据线MDR读出的内容(操作数)经过数据线送入到MDR中
    MDRYMDRo和Yi有效:MDR通过CPU的内部总线将操作数送入到Y寄存器中
    YALUY中操作数送到ALU,另一个操作数在AC中
    ACALUACo和ALUi有效:AC中操作数经由CPU内部总线送到ALU中
    (AC) + (Y)Z加法结果保存到Z中
    ZACZo和ACi有效:加法结果经由CPU内部总线送到AC中

9.2.3 多级时序系统

  • 机器周期

    • 概念:所有指令执行过程中的一个基准时间

    • 确定机器周期需考虑的因素:每条指令的执行步骤,每一步骤所需的时间,将每个步骤划分到不同机器周期中

    • 基准时间的确定:

    • 通常情况下:
      在指令执行的过程中(取指、间址、执行、中断)以完成最复杂指令功能的微操作的时间为准
      实际上,最复杂的通常都是是访存操作,因此,以访问一次存储器的时间为基准

      若指令字长 = 存储字长,取指周期 = 机器周期

  • 时钟周期

    • 一个机器周期内可完成若干个微操作,每个微操作需一定的时间,有些微操作在一个时钟周期内完成,有些微操作可能花费多个时钟周期(比如对内存的访问)
      将一个机器周期分成若干个时间相等的时间段(节拍、状态、时钟周期),由时钟周期控制在一个机器周期内部微操作的先后顺序。

    • 时钟周期是控制计算机操作的最小单位时间。用时钟周期控制产生一个或几个微操作命令(控制几个微操作命令的情况一般是指这些微操作可以并行执行)

      在这里插入图片描述

  • 多级时序系统

  • 机器周期、节拍(状态)组成多级时序系统;

  • 一个指令周期包含若干个机器周期、一个机器周期包含若干个时钟周期。

    在这里插入图片描述

  • 机器速度与机器主频的关系

    • 机器速度不仅与主频有关 ,还与一个机器周期中所含时钟周期(主频的倒数)数以及指令周期中所含的机器周期数有关。
      即使这两个一样,一台采用流水,一台采用非流水,结果也是不一样的。

    • 假设两台机器都采用非流水方式,并且在一个指令周期当中,包含的机器周期的数量是相同的 ,在机器周期所含节拍数也相同的,那么两机平均指令执行速度之比就等于两机主频之比
      M I P S 1 M I P S 2 = f 1 f 2 \frac{MIPS_1}{MIPS_2} = \frac{f_1}{f_2} MIPS2MIPS1=f2f1

9.2.4 控制方式

产生不同微操作命令序列所用的时序控制方式

  • 同步控制方式 - 任何一条指令或指令中任何一个微操作的执行都是事先确定的,并且都是受统一基准时标的时序信号所控制的方式。(一定有一个统一的,定宽定距的时钟作为标准,每一个微操作都是在这个时钟的控制下,在指定的节拍产生。)

    在这里插入图片描述

    • 采用定长的机器周期
      每个机器周期含有相同数量的节拍数,这个时候机器周期以最长的微操作序列和最复杂的微操作作为标准。可能会在某些执行阶段造成时间浪费。

    • 采用不定长的机器周期
      每个机器周期内的节拍数可以不等,这种控制方式可解决微操作执行时间不统一的问题。 通常把大多数微操作安排在一个较短的机器周期内完成,而对某些复杂的微操作,采用延长机器周期或增加节拍的办法来解决。

    • 采用中央控制和局部控制相结合的方法
      将机器的大部分指令安排在统一的、较短的机器周期内完成,称为中央控制,而将少数操作复杂的指令中的某些操作(如乘除法和浮点运算等)采用局部控制方式来完成

      在这里插入图片描述

  • 异步控制方式

    • 无基准时标信号
    • 无固定的周期节拍和严格的时钟同步
    • 采用 应答方式
    • 当CU发出执行某一微操作的控制信号后,等待执行部件完成了该操作后发回“回答”(或“结束”)信号,再开始新的微操作,使CPU没有空闲状态,但因需要采用各种应答电路,故其结构比同步控制方式复杂
  • 联合控制方式

    • 同步控制和异步控制相结合。这种方式对各种不同指令的微操作实行大部分统一、小部分区别对待的办法。
    • 对每条指令都有的取指令操作,采用同步方式控制;
      对那些时间难以确定的微操作,如 I/O操作,则采用异步控制,
      以执行部件送回的“回答"信号作为本次微操作的结束。
  • 人工控制方式

    ​ 为了调机和软件开发的需要,在机器面板或内部设置一些开关或按键,来达到,工控制的目的。

    ​ (1) Reset(复位)键

    ​ 按下 Reset 键,使计算机处于初始状态。当机器出现死锁状态或无法继续运行时,可按此键。若在机器运行时按此键,将会破坏机器内某些状态而引起错误,因此要慎用。有些微型计算机未设此键,当机器死锁时,可采用停电后再加电的办法重新启动计算机。

    ​ (2) 连续或单条执行转换开关
    ​ 由于调机的需要,有时需要观察执行完一条指令后的机器状态,有时又需要观察连续运行程序后的结果,设置连续或单条执行转换开关,能为用户提供这两种选择。

    ​ (3) 符合停机开关
    ​ 这组开关指示存储器的位置,当程序运行到与开关指示的地址相符时,机器便停止运行,称为符合停机。

控制单元的设计

10.1 组合逻辑设计

10.1.1 组合逻辑控制单元框图

在这里插入图片描述

10.1.2 微操作的节拍安排

  • 安排微操作时序的原则
    • ① 原则一 微操作的先后顺序不得随意更改
    • ② 原则二 被控对象不同 的微操作尽量安排在一个节拍内完成(可以并行操作且没有先后顺序的微操作)
    • ③ 原则三 占用 时间较短 的微操作尽量安排在一个节拍内完成 并允许有先后顺序

在这里插入图片描述

10.1.3 组合逻辑设计步骤

在这里插入图片描述

10.2 微程序设计

10.2.1 微程序设计思想的产生

完成一条机器指令 需要 一个或者多个微操作命令,这些微操作命令存储起来变成微指令,每个节拍对应一个微指令,那么多个节拍对应的多个微指令就构成了微程序。微指令由0、1组成,每一个位置对应某一种或某一个微操作命令。即一条机器指令对应一个微程序。

微程序存入ROM中,执行时把微指令一条一条的从ROM读出,根据读出的微指令中有效控制信号的位置发出相应的信号,让计算机执行相应的操作 —— 存储逻辑(把逻辑信号存储在存储器中)

在这里插入图片描述

10.2.2 微程序控制单元框图及工作原理

  • 机器指令对应的微程序

    在这里插入图片描述

  • 微程序控制单元的基本框图

    在这里插入图片描述

  • 工作原理

    在这里插入图片描述

10.2.3 微指令的编码方式(控制方式)

  • 直接编码(直接控制)方式

    在这里插入图片描述

  • 字段直接编码方式

    在这里插入图片描述

  • 字段间接编码方式

    在这里插入图片描述

  • 混合编码

    直接编码和字段编码(直接和间接)混合使用

10.2.4 微指令序列地址的形成

  • 直接由微指令的下地址字段指出

  • 根据机器指令的操作码形成

    当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成。微地址形成部件实际是一个编码器,其输人为指令操作码,输出就是对应该机器指令微程序的首地址。

  • 增量计数器法

    在很多情况下,后续微指令的地址是连续的,因此对于顺序地址,微指令可采用增量计数法,即(CMAR)+1 CMAR来形成后续微指令的地址。

  • 分支转移

    在这里插入图片描述

  • 通过测试网络 - 用于微程序小范围内跳转

    在这里插入图片描述

  • 由硬件产生微程序人口地址

    第一条微指令地址由专门 硬件产生

    中断/间址周期 由硬件产生中断周期微程序首地址

在这里插入图片描述

10.2.5 微指令格式

在这里插入图片描述

10.2.6 静态微程序设计和动态微程序设计

  • 静态微程序设计:通常指令系统是固定的,对应每一条机器指令的微程序是计算机设计者事先编好的,因此一般微程序无须改变,其控制存储器采用ROM。
  • 动态微程序设计:人们可以通过改变微指令和微程序来改变机器的指令系统,有利于仿真,采用 EPROM作为控制存储器。但是这种设计对用户的要求很高,目前难以推广。

10.2.7 毫微程序设计

微程序可看做是解释机器指令的,毫微程序可看做是解释微程序的,而组成微程序的毫微指令则是用来解释微指令的。

在这里插入图片描述

10.2.8 串行微程序控制和并行微程序控制

在这里插入图片描述

10.2.9 微程序设计举例

在这里插入图片描述

参考:
教材:计算机组成原理 (唐朔飞).pdf

博客:https://blog.csdn.net/weixin_51825055/article/details/133738724

视频:https://www.bilibili.com/video/BV1t4411e7LH?p=126&vd_source=a89593e8d33b31a56b894ca9cad33d33

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1720633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

04-树5 Root of AVL Tree(浙大数据结构PTA习题)

04-树5 Root of AVL Tree 分数 25 作者 陈越 单位 浙江大学 An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more th…

Matlab|基于粒子群算法优化Kmeans聚类的居民用电行为分析

目录 主要内容 部分代码 结果一览 下载链接 主要内容 在我们研究电力系统优化调度模型的过程中,由于每天负荷和分布式电源出力随机性和不确定性,可能会优化出很多的结果,但是经济调度模型试图做到通用策略,同样的策…

Java-集合基础

集合 一、含义 集合是Java API所提供的一系列类,可以用于动态存放多个对象 (集合只能存对象)集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。(集合中不能放基本数据类型,但可以…

WPF Binding对象

在WinForm中,我们要想对控件赋值,需要在后台代码中拿到控件对象进行操作,这种赋值形式,从根本上是无法实现界面与逻辑分离的。 在WPF中,微软引入了Binding对象,通过Binding,我们可以直接将控件与…

从零开始利用MATLAB进行FPGA设计(七)用ADC采集信号教程2

黑金的教程做的实在太拉闸了,于是自己摸索信号采集模块的使用方法。 ADC模块:AN9238 FPGA开发板:AX7020;Xilinx 公司的 Zynq7000 系列的芯片XC7Z020-2CLG400I,400引脚 FBGA 封装。 往期回顾: 从零开始利…

【易错题】数据统计补充习题(选择题 )#CDA Level 1

本文整理了数据统计相关的易错题,部分可作为备考CDA Level 1统计学部分的补充习题。来源:如荷学题库(CFDP第三部分) 1) 2) 3) 4) 5) 6) 7) 8&…

解决Mac ~/.bash_profile 配置的环境变量重启终端后失效问题

在Mac系统中,配置环境变量通常是在~/.bash_profile文件中进行。然而,有时会遇到配置的环境变量在重启终端后失效的问题。 解决办法: 在~/.zshrc文件最后或最前面,增加一行 source ~/.bash_profile

记一次netty客户端的开发

背景 近日要开发一个tcp客户端程序去对接上游厂商的数据源,决定使用netty去处理,由于很久没有开发过netty了,顺便学习记录下 netty搭建 考虑到我们需要多个client去对接server服务,所以我们定义一个公共的AbstractNettyClient父…

RAID技术迭代、原理对比、产品梳理(HCIA)

目录 一、RAID技术迭代 传统RAID LUN虚拟化2.0 工作原理: 块虚拟化2.0 为什么有RAID2.0? RAID2.0实现原理: RAID-TPRAID 7 华为RAID-TP技术 RAID的4种工作状态 RAID算法 普通RAID算法 华为动态RAID算法 保险箱盘(存掉…

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 阅读笔记

这才是真正RAG,如果只是把检索得到结果放到prompt里面,可能够呛。 好久没有读paper了,最近因为有个小工作,来读一篇较早提出来RAG想法的文章吧。这篇文章是Facebook、伦敦大学学院以及纽约大学的研究者们搞出来的。文章首先指出&a…

8-异常与错误

8-异常与错误 1、简介2、异常处理2.1 抛出异常2.2 捕获异常2.3 匹配顺序 3、异常说明4、构造函数中的异常5、析构函数中的异常6、标准库异常 1、简介 在程序编码过程中难免会出现错误,主要有:语法错误、逻辑错误、功能错误等,当我们面对以上…

SpringBoot打war包并配置外部Tomcat运行

简介 由于其他原因,我们需要使用SpringBoot打成war包放在外部的Tomcat中运行,本文就以一个案例来说明从SpringBoot打war包到Tomcat配置并运行的全流程经过 环境 SpringBoot 2.6.15 Tomcat 8.5.100 JDK 1.8.0_281 Windows 正文 一、SpringBoot配置打war包 第一步&a…

echarts 图表不显示的问题

是这样的,点击详情,再点击统计,切换的时候就不会显示echarts图表,刚开始使用的是next Tick,没有使用定时器,后来加上了定时器就实现了如下所示: 代码是如下 const chartContainer ref(null); …

开发一个SDK(starter)

1.创建项目 将pom.xml中build删除掉

pikachu靶场(unsafe upfileupload(文件上传)通关教程)

目录 client check 1.在桌面新建一个文本文档 2.保存为.png格式 3.打开网站 4.按照图中操作 5.点击forward 6.访问 MIME type 1.新建一个php文件,里面写上 2.上传文件,就是我们保存的文件 3.打开抓包工具,点击开始上传 4.修改Conen…

服务器主板电池

一、什么是服务器纽扣电池? 服务器纽扣电池,也叫CMOS电池,是一种非常小型的电池,通常与服务器主板上的CMOS芯片相结合,用于储存BIOS设置、时钟和其他关键系统信息。这种电池的体积通常比一枚硬币还小,而且…

RT-DETR:端到端的实时Transformer检测模型(目标检测+跟踪)

博主一直一来做的都是基于Transformer的目标检测领域,相较于基于卷积的目标检测方法,如YOLO等,其检测速度一直为人诟病。 终于,RT-DETR横空出世,在取得高精度的同时,检测速度也大幅提升。 那么RT-DETR是如…

数据库(13)——DQL分组查询

语法 SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件] 示例 原始表: 根据性别分组并统计人数 select sex,count(*) from information group by sex; 根据性别分组,并求年龄的平均值:

2024抖音流量认知课:掌握流量底层逻辑,明白应该选择什么赛道 (43节课)

课程下载:https://download.csdn.net/download/m0_66047725/89360865 更多资源下载:关注我。 课程目录 01序言:拍前请看.mp4 02抖音建模逻辑1.mp4 03抖音标签逻辑2.mp4 04抖音推流逻辑3.mp4 05抖音起号逻辑4.mp4 06养号的意义.mp4 0…

Java | Leetcode Java题解之第123题买卖股票的最佳时机III

题目&#xff1a; 题解&#xff1a; class Solution {public int maxProfit(int[] prices) {int n prices.length;int buy1 -prices[0], sell1 0;int buy2 -prices[0], sell2 0;for (int i 1; i < n; i) {buy1 Math.max(buy1, -prices[i]);sell1 Math.max(sell1, b…