小奥的学习笔记

  • 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月5日 5003点热度 0人点赞 0条评论

第9章 控制单元的功能

9.1 微操作命令的分析

完成一条指令分4个工作周期:取指周期、间址周期、执行周期、中断周期。

一、取指周期

要想把指令从内存单元取出,就要执行下面的操作:PC(指令地址)->MAR->地址线,最后送到存储器。控制单元向存储器发出读命令,读出的数据通过数据总线送到MDR中,后送到IR当中。然后IR送到CU进行译码知道要做什么指令。然后对PC进行加1。

图1.1 取指周期

二、间址周期

首先将指令的形式地址(IR当中的地址码部分)送到MAR,再通过MAR送到再送到存储器的地址总线上,要实现这个操作,控制器要发出IR的地址码部分送到MAR的控制信号,然后CU向存储器发出读操作命令,存储器接收到命令和地址以后,读出指令的真实地址,然后传输给MDR。被取出的地址进而送到IR寄存器的地址码部分,这个时候地址码就是操作数的真实地址,就结束了。

图1.2 间址周期

三、执行周期

1.非访存指令

CLA 清A 0->ACC
COM 取反 ACC’->ACC
SHR 算术右移 L(ACC)-> R(ACC), ACC0->ACC0
CSL 循环左移 R(ACC)->L(ACC), ACC0->ACCn
STP 停机指令 0->G

2.访存指令

(1)加法指令

操作命令 微操作步骤
ADD X

 

Ad(IR)->MAR

1->R

M(MAR)->MDR

(ACC)+(MDR)->ACC

(2)存数指令

操作命令 微操作步骤
STA X Ad(IR)->MAR

1->W

ACC->MDR

MDR->M(MAR)

(3)取数指令

操作命令 微操作步骤
LDA   X Ad ( IR )->MAR

l->R

M(MAR)->MDR

MDR->ACC

3.转移指令

(1)无条件转移指令

操作命令 微操作步骤
JMP   X Ad ( IR )->PC

(2)条件转移指令(只举了一个例子)

操作命令 微操作步骤
BAN X(负则转) \[{{A}_{0}}\cdot Ad(IR)+{{\bar{A}}_{0}}(PC)\to PC\]

4.三类指令的指令周期

如图1.3所示。

图1.3 三类指令的指令周期

四、中断周期

保存断点的方法(以此为例分析):

程序断点存入“0”地址 程序断点进栈
“0”地址->MAR

1->W(控制器向存储单元发出写命令)

PC->MDR(断点地址由PC保存到MDR中)

MDR->M(MAR)(MDR数据写到MAR指向的地址)

(SP-1)->MAR

1->W(控制器向存储单元发出写命令)

PC->MDR(断点地址由PC保存到MDR中)

MDR->M(MAR)(MDR数据写到MAR指向的地址)

中断识别程序入口地址M->PC(硬件向量法和软件查找法,这里以前者为例)
0->EINT(关中断) 0->EINT(关中断)

9.2 控制单元的功能

一、控制单元的外特性

如图2.1所示。

图2.1 控制单元的外特性

1.输入信号

(1)时钟

完成每个操作都需要占用一定的时间,各个操作是由先后顺序的。为了能够使控制单元按一定的先后顺序、一定的节奏发出各个控制信号,CU必须受时钟控制。一个时钟脉冲发一个操作命令或一组需同时执行的操作命令。

(2)指令寄存器

OP(IR)->CU:这个微指令代表一个译码操作。

保存了要执行的那条指令。现行指令的操作码决定了不同指令在执行周期所需完成的不同操作,故指令的操作码字段是控制单元的输入信号,它与时钟配合可产生不同的控制信号。

(3)标志

CU受标志控制

(4)外来信号

如 INTR(中断请求)、HRQ(总线请求)等。

2.输出信号

(1)CPU内部的各种控制信号

(2)送至控制总线的信号

例如访存控制信号、访IO/存储器的控制信号、读命令、写命令、中断响应信号、总线响应信号等。

二、控制信号举例

1.不采用CPU内部总线的方式

(1)取指周期

C0~C4均由CU产生。

①控制信号C0有效,打开PC送往MAR的控制门;

②控制信号C1有效,打开MAR送往地址总线的输出门;

③通过控制总线向主存发读命令;

④C2有效,打开数据总线送至MDR的输入门;

⑤C3有效,打开MDR和IR之间的控制们,至此指令送至IR;

⑥C4有效,打开指令操作码送至CU的输出门,CU在操作码和时钟的控制下,可产生各种控制信号;

⑦使PC内容加1。

图2.2 不采用CPU内部总线的方式(取指周期)

(2)间址周期

①C5有效,打开MDR和MAR之间的控制门(假设间址周期的时候,直接地址是从MDR送入MAR的),将指令的形式地址送入MAR;

②C1有效,打开MAR送往地址总线的输出门;

③通过控制总线向主存发读命令;

④C2有效,打开数据总线送至MDR的输入门,至此,有效地址存入MDR;

物C3有效,打开MDR和IR之间的控制门,将有效地址送至IR的地址码字段。

图2.3 不采用CPU内部总线的方式(间址周期)

(3)执行周期

①C5有效,打开MDR和MAR之间的控制门,将有效地址送至MAR;

②C1有效,打开MAR送往地址总线的输出门;

③通过控制总线向主存发读命令;

④C2有效,打开数据总线送至MDR的输入门,至此操作数存入MDR;

⑤C6/C7同时有效,打开AC和MDR通往ALU的控制门;

⑥通过CPU内部控制总线对ALU发ADD加控制信号,完成AC的内容和MDR的内容相加;

⑦C8有效,打开ALU通往AC的控制门,至此将求和结果存入AC。

图2.4 不采用CPU内部总线的方式(执行周期)

2.采用CPU内部总线方式

图2.5 采用CPU内部总线方式

图中每一个小圈处都有一个控制信号,它控制寄存器到总线或总线到寄存器的传送。例如IRi表示控制从内部总线到指令寄存器的输入控制门;PCo表示控制从程序计数器到内部总线的输出控制门。下标为i表示输入控制,下标为o表示输出控制。与图2.2~2.4相比,多了两个寄存器Y和Z,这是由于ALU是一个组合逻辑电路,在其运算过程中必须保持两个输入端不变,其中一个输入可以从Y寄存器中获得,另一个输入可以从内部总线上获得。当CPU内有多个通用寄存器时,由于设置了寄存器Y,可实现任意两个寄存器之间的算术/逻辑运算。此外,ALU的输出不能直接与内部总线相连,因为其输出又会通过总线反馈到ALU的输入,影响运算的正确性,故用寄存器Z暂存运算结果,再根据需要送至指定的目标。

下面依然以上面的命令分析控制单元发出的控制信号。

(1)取指周期

①PCo和MARi有效,完成PC经内部总线送至MAR的操作,即PC->MAR;

②通过控制总线向主存发出读命令,即1->R;

③存储器通过数据总线将MAR所指单元的内容(指令)送至MDR;

④MDRo和IRi有效,将MDR的内容送至IRi,即MDR->IR,至此,指令送至IR,其操作码字段开始控制CU;

⑤使PC内容加1。

(2)间址周期

①MDRo和MARi有效,将指令的形式地址经内部总线送至MAR,即MDR->MAR;

②通过控制总线向主存发出读命令,即1->R;

③存储器通过数据总线将MAR所指单元的内容(有效地址)送至MDR;

④MDRohe IRi有效,将MDR中的有效地址送至IR的地址码字段,即MDR->Ad(IR)。

(3)执行周期

①MDRo和MARi有效,将有效地址经内部总线送至MAR,即MDR->MAR;

②通过控制总线向主存发出读命令,即1->R;

③存储器通过数据总线将MAR所指单元的内容(操作数)送至MDR;

④MDRo和Yi有效,将操作数送至Y,即MDR->Y;

⑤ACo和ALUi有效,同时CU向ALU发“ADD”加控制信号,使AC的内容和Y的内容相加(Y的内容传送至ALU不必经过总线),结果送寄存器Z,即(AC)+(Y)->Z;

⑥Zo和ACi有效,将结果存入AC,即Z->AC。

三、多级时序系统

1.机器周期

机器周期指所有指令执行过程中的一个基准时间。机器周期取决于指令的功能和器件速度。确定机器周期时,通常要分析机器指令的执行步骤及每一步骤所需的时间。

基准时间的确定有两种方式:

①以完成最复杂指令功能的时间为准;

②以访问一次存储器(一般情况下最复杂的指令是这个指令)的时间为基准。

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

2.时钟周期(节拍、状态)

一个机器周期内科完成多个微操作,每个微操作需一定的时间。将一个机器周期分成若干个时间相等的时间段(节拍、状态、时钟周期)。

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

如图2.6所示,它反映了机器周期、时钟周期和节拍的关系,一个机器周期由4个节拍T0、T1、T2、T3。

图2.6 机器周期、时钟周期和节拍的关系

一个指令周期包含若干个机器周期,一个机器周期又包含若干个时钟周期(节拍),每个指令周期内的机器周期数可以不相等,每个机器周期里面的节拍数也可以不相等。

3.多级时序系统

机器周期、节拍(状态)组成多级时序系统。一般来说,CPU的主频越快,机器的运行速度也越快。在机器周期所含时钟周期数相同的前提下,两机平均指令执行速度之比=两机主频之比。

机器速度不仅与主频有关,还与机器周期中所含时钟周期(主频的倒数)数以及指令周期中所含的机器周期数有关。

四、控制方式

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

1.同步控制方式

任一微操作均由统一基准时标的时序信号控制。

(1)采用定长的机器周期:以最长的微操作序列和最复杂的微操作作为标准,机器周期内节拍数相同。显然这种方法对于较短指令来说会造成时间上的浪费。

(2)采用不定长的机器周期:机器周期内的节拍数可以不等。这种控制方式可以解决微操作执行时间不统一的问题。

(3)采用中央控制和局部控制相结合的方法:这种方案将机器的大部分指令安排在统一的、较短的机器周期内完成,称为中央控制,而将少数操作复杂的指令中的某些操作采用局部控制方式来完成。

局部控制的节拍宽度与中央控制的节拍宽度一致;将局部控制节拍作为中央控制中及其街拍的延续,插入到中央控制的执行周期内,使机器以同样的节奏工作,保证了局部控制和中央控制的同步。如图2.7所示。

图2.7 中央控制与局部控制结合的方法

2.异步控制方式

无基准时标信号,无固定的周期节拍和严格的时钟同步,采用应答方式。

3.联合控制方式

同步与异步相结合。对各种不同指令的微操作实行大部分统一、小部分区别对待的方法。

4.人工控制方式

(1)Reset键;

(2)连续和单条指令执行转换开关;

(3)符合停机开关。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 计算机组成原理
最后更新:2018年11月5日

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:一种基于深度滤波的全频带音频低复杂度语音增强框架
杯具,山寨了我哥们的博客 上高中之后博客的一些安排 Linux基础学习第四天:C库函数和系统函数 S.V Beijing Travel 9:Tiananmen Square 顺丰速度真快 把WordPress放在根目录而地址显示子目录的方法
标签聚合
高中 leetcode Python 学习 Java 生活 linux 算法 python学习 鸟哥的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 发布于 8 个月前(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号