小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Computer & DL
  4. Linux
  5. 正文

计算机组成原理笔记第十章

2018年11月9日 2095点热度 0人点赞 0条评论

第10章 控制单元的设计(简单学习)

10.1 组合逻辑设计

一、组合逻辑控制单元框图

1.外特性

如图1.1所示,CU要发出各种控制命令,这些信号是由先后关系,每个控制信号发出都是有给定时间点,这种时间点是由节拍控制,所以要有节拍发生器。CU要产生什么控制命令与现在执行命令有关系,当前命令保存在IR中,其n位操作码经过操作码译码后才能确定正在执行是哪条指令。译码结果针对每一条指令是一一对应的,输入到CU中。CU发出什么信号还和标志有关系,所以输入还有一系列标志。CU在以上作用下,有输出C0……Ck。C0……Ck可以有1个或多个高电平,多个高电平有两种含义:要么是它们并行,要么是他们在一个周期,但是它们每一个操作都不够一个周期。

图1.1 组合逻辑电路外特性

二、微操作的节拍安排

(1)采用同步控制方式

假设一个机器周期有3个节拍(时钟周期),CPU采用非总线方式。

1.安排微操作时序的原则

原则一:微操作的先后顺序不得随意更改。

原则二:被控对象不同的微操作(可以并行执行的),尽量安排在一个节拍内完成。

原则三:占用时间较短的微操作,尽量安排在一个节拍内完成,并允许有先后顺序。

2.取指周期微操作的节拍安排

T0 PC->MAR, 1->R 原则二
T1 M(MAR)->MDR, (PC)+1->PC 原则二
T2 MDR->Ad(IR), OP(IR)->ID 原则三

3.间址周期微操作的节拍安排

T0 Ad(IR)->MAR, 1->R
T1 M(MAR)->MDR
T2 MDR->Ad(IR)

3.执行周期微操作的节拍安排

①非访存指令

1)清除累加器指令CLA

该指令在执行周期只有一个微操作,按同步控制的原则,此操作可安排在T0-T2的任一节拍内,其余节拍空。如在T2周期内安排(T2: 0->AC)。

2)累加器取反指令COM

同理,按同步控制的原则,此操作可安排在T0-T2的任一节拍。

3)算术右移一位指令SHR

同理,按同步控制的原则,此操作可安排在T0-T2的任一节拍。如在T2周期内安排(L(AC)->R(AC), AC0-AC0)。

4)循环左移一位指令CSL

同理,按同步控制的原则,此操作可安排在T0-T2的任一节拍。如在T2周期内安排(R(AC)->L(AC), AC0->ACn)。

5)停机指令STP

T0  
T1  
T2 0->G

(2)访存指令

1)加法指令ADD X

T0 Ad(IR)->MAR,1->R
T1 M(MAR)->MDR
T2 (AC)+(MDR)->AC

 

2)存数指令STA X

T0 Ad(IR)->MAR,1->W
T1 AC->MDR
T2 MDR->M(MAR)

 

3)取数指令LDA X

T0 Ad(IR)->MAR, 1->R
T1 AC->MDR
T2 MDR->M(MAR)

 

(3)转移类指令

1)无条件转移指令 JMP X

T0  
T1  
T2 Ad(IR)->PC

 

2)有条件转移(负则转)指令 BAN X

T0  
T1  
T2

 

4.中断周期微操作的节拍安排

在执行周期的最后时刻,CPU要向所有中断源发终端查询信号,若检测到某个中断源有请求,并且未被屏蔽又被排队选中,则在允许中断的条件下,CPU进入中断周期,此时CPU由中断隐指令完成下列操作(假设程序断点存入主存0号地址单元内):

T0 0->MAR, 1->W(关中断,可以放在这里)
T1 PC->MDR(PC中保存着断点)
T2 MDR->M(MAR),向量地址->PC

CPU进入中断周期,由硬件置“0”允许中断触发器EINT,即关中断。

三、组合逻辑按设计步骤

1.列出操作时间表;

2.写出微操作命令的最简逻辑表达式;

3.画出微操作命令的逻辑图。

这种方法有以下特点:

(1)思路清晰,简单明了;

(2)庞杂,调试困难,修改困难;

(3)速度快。

用在精简中(RISC),通常情况下整型单元也是用这个。

10.2 微程序设计

一、微程序设计思想

一条机器指令对应一个微程序。完成一条机器指令有多个微操作命令,每几个微操作命令组成一个微指令,这些微指令称为微程序。

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

1.机器指令对应的微程序

采用微程序设计方法设计控制单元的过程就是编写每一条机器指令的微程序,它是按照每条机器指令所需的微操作命令的先后顺序而编写的,因此,一条机器指令对应一个微程序,如图2.1所示。图中每一条机器指令都与一个以操作性质命名的微程序对应。

由于任何一条机器指令的取指令操作是相同的,因此将取指令操作的命令统一编成一个微程序,这个微程序只负责将指令从主存单元中取出送至指令寄存器中,如图2.1所示的取指周期微程序。此外,如果指令是间接寻址,其操作也是可以预测的,也可先编出对应间址周期的微程序。当出现中断时,中断隐指令所需完成的操作可由一个对应中断周期的微程序控制完成。这样,控制存储器中的微程序个数应为机器指令数再加上对应取指、间址和中断周期的3个微程序。

图2.1 不同机器指令对应的微程序

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

如图2.2所示,图中点画线框内为微程序控制单元,控制存储器(控存)是微程序控制单元的核心部件,用来存放全部微程序;CMAR是控存地址寄存器,用来存放欲读出的微指令地址;CMDR是控存数据寄存器,用来存放从控存读出的微指令;顺序逻辑是用来控制微指令序列的,具体就是控制形成下一条微指令(即后续微指令)的地址,其输入与位地址形成部件(与指令寄存器相连)、微指令的下地址(简称“下地址”)字段以及外来的标志有关。

微指令基本格式如图2.2下所示,共分为两个字段,一个为操作控制字段,该字段发出各种控制信号;另一个为顺序控制字段,它可以指出下条微指令的地址,以控制微指令序列的执行顺序。

图2.2 微程序控制单元的基本组成

3.工作原理

假设一个用户程序如下所示,它存于以2000H为首地址的主存空间内:

LDA X

ADD Y

STA Z

STP

首先将用户程序的首地址送至PC,然后进入取指阶段。

(1)取指阶段

①将取指周期微程序首地址M->CMAR;

②然后取微指令,将对应控存M地址单元中的第一条微指令读到控存数据寄存器中,记作CM(CMAR)->CMDR。

③产生微操作命令,第一条微指令的操作控制字段中为“1”的各位发出控制信号,如PC->MAR,1->R,命令主存接收程序首地址并进行读操作。

④形成下一条微指令的地址。下一条微指令地址为M+1,将M+1送至CMAR,即Ad(CMDR)->CMAR。

⑤取下一条指令。将对应控存M+1地址单元中的第二条微指令读到CMDR中,即CM(CMAR)->CMDR。

⑥产生微操作命令。

由第二条微指令的操作控制字段中对应“1”的各位发出控制信号,如M(MAR)->MDR使对应主存2000H地址单元中的地一条机器指令从主存中读出送至MDR中。

⑦形成下一条微指令地址。

(2)执行阶段(执行LDA微程序)

①取数指令微程序首地址的形成。

OP(IR)->微地址形成部件->CMAR。

②取微指令。CM(CMAR)->CMDR。

③产生微操作命令。Ad(IR)->MAR,1->R。

④形成下一条为指令地址。Ad(CMDR)->CMAR。

⑤取微指令,CM(CMAR)->CMDR。

⑥产生微操作命令。

……

☆关键点:

(1)微指令的操作控制字段如何形成微操作命令;

(2)微指令的后续地址如何形成。

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

1.直接编码(直接控制)方式

在微指令的操作控制字段中,每一位代表一个微操作命令。如下所示,下地址左侧为控制信号,进行操作控制。速度最快。

        下地址

2.字段直接编码方式

将微指令的操作控制字段分成若干段,将一组互斥的微操作命令放在一个字段内,通过对这个字段译码,便可以对应每一个微命令。这种方法靠字段直接译码发出微命令,又称显式编码。它缩短了微指令字长,增加了译码时间。

图2.3 字段直接编码方式

3.字段间接编码方式

一个字段的某些微命令还需要由另外一个字段的某些微命令来解释,如图2.4所示,图中字段1译码的某些输出受字段2译码输出的控制,由于不少靠字段直接译码发出微命令,故称为字段间接编码,又称隐式编码。如图2.4所示。

图2.4 字段间接编码方式

4.混合编码

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

5.其它

微指令中还可以设置常数字段,用来提供常数、计数器初值等。常数字段还可以和某些解释位配合。

此外微指令还可以用类似机器指令操作码的方式编码。

四、微指令序列地址的形成

1.直接由微指令的下地址字段指出(断定方式);

2.根据机器指令的操作码形成;

3.增量计数器法;

4.分支转移;

5.通过测试网络形成;

6.由硬件产生微程序入口地址。

五、微指令格式

1.水平型微指令

一次能定义并执行多个并行操作。如直接编码、字段直接编码、字段间接编码、直接和字段混合编码等。

2.垂直型微指令

类似机器指令操作码的方式。在微指令字中,设置微操作码字段,由微操作码规定微指令的功能。不强调其并行控制能力。

3.两种微指令格式的比较

(1)水平型微指令比垂直型微指令并行操作能力强,灵活性强。

(2)水平微指令执行一条机器指令所需的微指令数目少,速度快。

(3)水平型微指令用较短的微程序结构换取较长的微指令结构,而垂直型微指令正好相反。

(4)水平型微指令与机器指令差别较大,而垂直型微指令与机器指令相似。

六、静态微程序设计和动态微程序设计

静态:微程序无需改变,采用ROM。

动态:通过改变微指令和微程序改变机器指令,有利于仿真,采用EPROM。

七、毫微程序设计

微程序设计用微程序解释机器指令;毫微程序设计用毫微程序解释微指令。

八、串行微程序控制和并行微程序控制

微程序指令也分为两个阶段:取微指令和执行微指令。串行微程序控制如下所示:

取第i条微指令 执行第i条微指令 取第i+1条微指令 执行第i+1条微指令

并行微程序控制增加了一个微指令寄存器来暂存下一条指令,以防止影响本条微指令的执行。如下所示:

取第i条微指令 执行第i条微指令    
  取第i+1条微指令 执行第i+1条微指令  
    取第i+2条微指令 执行第i+2条微指令

由于执行本条微指令与取下一条微指令是同时进行的,因此当遇到需要根据本条微指令的处理结果来决定下条微指令的地址时,就不能并行操作,此时可以延迟一个微指令周期再取微指令。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2018年11月9日

davidcheung

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
暑假回顾奥特曼的安排 开学第二周 青春志愿行,共筑世园梦——第六、第七季志愿者交接仪式 2007年时写的《东陵柯森侦探集》第一话——密室杀人案 拜欧斯奥特曼长篇版的新版海报 How to write an abstract?
标签聚合
算法 高中 Java 学习 python学习 Python 鸟哥的linux私房菜 生活 leetcode linux
最近评论
davidcheung 发布于 5 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 5 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 9 个月前(10月20日) :wink:
niming 发布于 10 个月前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 3 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号