9.2-控制单元CU的功能(学习笔记)

【README】

本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐;


【1】CU功能(CPU内部不采用总线方式)

控制单元的功能: CU发出各种控制命令或微指令,控制整个计算机系统,包括cpu内部的各个部件,能够协调、稳定、正确、连续的运行;


【1.1】CU输入与输出信号

1)控制单元CU的输入信号

  • 指令寄存器IR的操作码部分,送入CU,以便译码;
  • 时钟信号:CU微操作命令在时钟信号的控制下,在指定的时间点被发出;
    一个时钟脉冲,发一个操作命令或一组需要同时执行的操作命令;
  • 各种标志;如上一条指令运行结果的标志,就是本条指令是否发生跳转的依据;
  • 来自系统总线的控制信号:CPu外部的控制信号可以进入控制单元;

2)控制单元CU的输出信号

2.1 )CPU内部的控制信号

  • 如 寄存器间进行数据传输;
  • 如 下一条指令地址进行修改; pc+1 –> pc ;
  • 如 运算器的算术运算和逻辑运算,相应的控制信号也是由 cu发出的;

2.2)送到控制总线的信号

  • 如存储器读写命令 ;

【1.2】控制信号举例

在不采用cpu内部总线的方式下的执行过程,其中各寄存器含义:

  1. PC,存储下一条指令的地址;
  2. IR,根据pc的地址,从存储器取出指令放入IR指令寄存器;
  3. CU,把IR中的指令送入CU进行译码;
  4. 时钟:时钟信号作为输入,以控制CU控制器发送各种控制信号;控制信号还会控制ALU进行算术或逻辑运算;
  5. AC:即ACC寄存器的简写,ACC是累加器;
  6. ALU:运算器;
  7. MAR:主存地址寄存器;
  8. MDR:主存数据寄存器;

【写在前面】ADD @X 指令介绍

这条指令完成的是一个加法操作;
这个加法是把内存单元X中的数据和AC寄存器中的数据在控制信号的作用下做加法操作,加法操作由ALU来完成,并且加法结果保存到AC寄存器(ACC寄存器或累加器)中;

1)以 ADD @X 命令的取指周期(注意是取指周期)为例:操作发起从pc发起;

  • 步骤1:控制电路C0 把pc的内容送入MAR;
  • 步骤2:MAR 经过控制电路C1把地址送入主存;通知CU向主存发送读控制命令;
  • 步骤3:从主存读取的命令通过控制电路C2送入MDR;
  • 步骤4: 再由MDR经过控制电路c3送入IR寄存器;至此取指操作结束;
  • 步骤5:IR指令的操作码部分通过c4控制电路送入CU进行译码,;
  • 步骤6:PC加1,以便于下一次执行指令;

小结:以上5个控制信号c0~c5都是CU产生的;

2)下面看下间址周期,执行周期中的控制信号

指令执行周期的控制信号的控制过程:

起始状态:操作数的地址在MDR;

  • 步骤1:把MDR(操作数地址)通过C5控制信号送入到MAR;
  • 步骤2:MAR中的地址通过c1控制信号(控制门)送入到地址线,地址线送入存储器;
  • 步骤3:CU发出读操作命令;
  • 步骤4:从主存读入的数据,通过C2控制门送入MDR;至此,两个操作数都在cpu的寄存器中了;被加数保存在AC,加数在MDR中;
  • 步骤5:C6和C7两个控制门打开,把操作数送入ALU;
  • 步骤6:CU发出加法控制信号;并把运算结果通过C8控制门送入到AC寄存器;至此,执行过程就结束了;

注意: 以上方式,是cpu内部不采用内部总线的方式


【2】控制单元的功能(CPU内部采用总线的方式)

注意:cpu内部总线不同于系统总线

  • cpu内部总线是CPU(包括ALU,CU)连接内部组件(如寄存器)用的;
  • 而系统总线包括 地址总线,数据总线,控制总线,是cpu连接cpu外部设备用的,如主存,磁盘等;

(为了对比,上图是不采用CPU内部总线方式

(上图是采用CPU内部总线方式

 【背景介绍】

Cpu中,由 PC,MAR,IR,进行取指令操作,并放入MDR中;
在控制单元的作用下,我们可以进行操作;
时钟信号作为控制单元CU的输入,经过控制单元CU译码后,产生各种类型的控制信号,来控制cpu内部与外部的操作;
AC寄存器(ACC寄存器);
ALU运算器:运算器要有多种类型的控制信号;控制它做相应的算术运算或逻辑运算;
ALU:是一个组合电路,为了能够保存两个操作数和计算结果,在alu的两个输入端需要加上寄存器,在输出端也要加上寄存器;输入时,ac可以作为其中一个寄存器,另一个输入寄存器是Y;在控制信号的作用下,把ac和y寄存器的操作数送入ALU进行相加,并把结果送入Z寄存器;
以上部件,都是离散的部件;在刚刚cpu内部不采用总线的结构下,分别有线路进行连接

0)引入CPU内部总线目的:为了简化cpu结构,简化设计,假设cpu内部采用总线方式,这些离散部件是连接到CPU内部总线上的;

1)下面在cpu内部采用总线结构下,间址加法指令(ADD @X)的取指步骤

  • 步骤1:pc寄存器的值被送入cpu内部总线;
  • 步骤2:通过mar输入控制信号把pc的值送给mar;这时mar保存的就是下一条要执行指令的地址(即加法指令的地址);
  • 步骤3:MAR把指令地址送入地址线;
  • 步骤4:CU发出读命令到控制总线,控制总线送给存储器;
  • 步骤5:从主存读出来的指令被送入到数据线,进而送入到MDR寄存器中;(这时,MDR存储了间接寻址的加法指令)
  • 步骤6:MDR存储的加法指令,通过控制信号送入cpu内部总线,接着送入到IR寄存器;(这时,IR指令寄存器就保存了要执行的加法指令)
  • 步骤7:IR中的操作码部分送入CU进行译码;
  • 步骤8:PC加1(以指出下一条要执行指令的地址);

以上控制信号(IRi,PCo, MARi, MDRo, PCo),都是由CU在时钟信号的控制下产生的控制信号(i输入,o输出); 这些控制信号间,是有先后关系的;

2)ADD @X 间址周期
指令中的操作数形式地址,送入MAR;从内存中读出该形式地址内存单元对应的操作数有效地址,并送入IR寄存器的操作数地址部分(真实地址);

3)CPU采用内部总线方式下的ADD @X 执行周期步骤

  • 步骤1:MDR把操作数有效地址(真实地址)送入cpu内部总线;进而送入到MAR;
  • 步骤2:MAR把操作数地址送入地址线;
  • 步骤3:CU发出读信号到控制线,进而送入存储器;
  • 步骤4:读出来的操作数通过数据总线送入MDR;(参加加法运算的另一个操作数保存在MDR中)
  • 步骤5: MDR通过MDRo输出控制信号,把操作数送入cpu内部总线;CPU内部总线通过寄存器Y的输入信号,把操作数送入到Y寄存器;
  • 步骤6:寄存器Y的数据送入ALU;
  • 步骤7:寄存器AC通过ACo输出控制信号,把另一个操作数送入CPU内部总线,进而送入到ALU中;
  • 步骤8:在各种控制信号下,ALU做加法操作;(AC)+(Y)的结果存入Z寄存器中;
  • 步骤9:AC控制器在ACo控制信号下,把结果送入cpu内部总线,进而通过ACi控制信号送入AC寄存器:(至此,加法操作完成)

小结:以上蓝色部分都是控制信号,这些控制信号都是由CU发出的,控制信号间是有顺序的;


【3】多级时序系统

为了解释指令的执行,它的解释所花的时间,我们叫做指令周期;
指令周期分为: 取指周期,间址周期,执行周期,中断周期;

【3.1】机器周期

1)定义:完成一个基本操作所需要的时间,如取指令,存储器读,存储器写;通常以访存时间为基准;因为指令最耗时的操作就是访存操作

2)取指周期的过程(微操作)包括:

1,Pc值送入MAR;

2,MAR送入主存;

3,CU发出读控制信号给主存;

4,从主存读取指令到MDR,进而送入IR;

5,IR送入到CU进行译码;

6,PC加1;

以上操作都是有先后顺序的;以上这些操作都是微操作,有先后顺序的;

 在机器周期内部,也需要有多个时钟周期,由时钟来控制微操作的先后顺序;


【3.2】时钟周期(节拍,状态)

1)定义:控制计算机操作的最小单位时间(注意是控制);1个时钟周期,可以做1个或若干个微操作(若微操作可以并行执行);

 2)机器周期和时钟周期关系:

把一个机器周期分为若干个时间相等的时间段(时钟周期,或节拍,或状态);
由这些时钟周期控制在一个机器周期内部的这些微操作,它们在时间上的先后顺序;

3)小结

  1. 机器周期指的是:完成一个基本操作的所需要时间;如取指令;
  2. 时钟周期指的是:控制计算机操作的最小单位时间(1个时钟周期可以做1个或多个微操作);
  3. 两者关系:1个机器周期划分为多个时钟周期;或多个时钟周期组成1个机器周期; 

【3.3】多级时序系统

多级时序系统:包括了指令周期,机器周期、节拍(时钟周期)3个部分;
一个指令周期包含若干个机器周期;
一个机器周期包含若干个时钟周期;


【3.4】机器速度与主频间的关系

补充:

在不采用指令流水线技术前提下,且一个指令周期包含多个机器周期且一个机器周期包含多个时钟周期,则机器速度和主频成正比关系;
在采用流水线技术前提下,即便上述条件相等,但速度就不一定了


【4】控制方式

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

【4.1】同步控制方式


1)同步控制方式:每一个微操作都是在定宽,定距(统一基准时标)的时钟信号的控制之下;

  1. 采用定长的机器周期:每个机器周期含有相同的节拍数;(如取指令需要4个时钟周期,而执行指令需要1个时钟周期,但被划分了4个时钟周期,这就造成了浪费
  2. 不定长的机器周期:机器周期内部的节拍数(时钟周期)可以不等;
  3. 中央控制和局部控制相结合的方法:一部分由中央控制节拍控制,而另一部分由局部控制方式来控制;

 


【4.2】 异步控制方式(没有定宽定距的基准时钟)

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

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

相关文章

WEB API 系列(二) Filter的使用以及执行顺序

在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理。引入了这一机制可以更好地践行DRY(Don’t Repeat Yourself)思想,通过Filter能统一地对一些通用逻辑进行处理&…

图解 SQL 里的各种 JOIN

转载自 图解 SQL 里的各种 JOIN 从业以来主要在做客户端,用到的数据库都是表结构比较简单的 SQLite,以我那还给老师一大半的 SQL 水平倒也能对付。现在偶尔需要到后台的 SQL Server 里追查一些数据问题,就显得有点捉襟见肘了,特…

python cmd闪退_使用cmd python模块时,如何使程序正常崩溃?

会发生的是,如果您的代码引发运行时异常并且您的完成不起作用,您就不知道为什么因为没有打印回溯.尝试这个非常短的代码来看看我的意思:程序应该在c 2“ddda”行崩溃,显然你要添加一个字符串和一个int,这根本不起作用.但是不是崩溃,而是异常被抓住了,你不知道发生了…

10.1-控制单元CU的组合逻辑设计

【README】 1.本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐; 2.精简指令集RISC(简单指令集合)采用的就是这种组合逻辑设计的硬连方式(非常重要…

ENode 2.8 最新架构图简介

ENode架构图 什么是ENode ENode是一个.NET平台下,纯C#开发的,基于DDD,CQRS,ES,EDA,In-Memory架构风格的,可以帮助开发者开发高并发、高吞吐、可伸缩、可扩展的应用程序的一个应用开发框架。 开源项目地址:https://github.com/tang…

Hibernate注解(一)之持久化实体

翻译自 Hibernate Annotations1. 创建POJO作为持久化实体 每个持久化POJO类都是一个实体,并使用 Entity注解(在类级别)声明: Entity public class Flight implements Serializable {Long id;Idpublic Long getId() { return id;…

python请输入你的名字_实现《你的名字》同款滤镜,python+opencv

好久没有上简书,最近上来一看发现这篇文章阅读量远超了其他的文章,还有评论提到说在讲技术的时候卖萌不好。哈哈,当时写的时候完全没想过会有人搜到看,只是为自己的作品留个念想,所以文风比较散漫随意。于是这次来小修…

10.2-控制单元CU的微程序设计

【README】 1.本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐; 2.微指令:1条微指令就是多个bit位,如8个bit,每个bit位表示一种微操作&#xff1b…

微服务的误读与误解

微服务确实很受欢迎,但是对于微服务的误解也是事实,本文对这些误解一一来介绍下: 一、微服务不够“微”? 尽管微服务定义的很明确,但是开发者社区对它的解释却颇有争议,主要的一些问题如下: 1.它是否是单体架构的代表…

Hibernate注解(二)之映射简单的属性

翻译自 Hibernate Annotations2. 映射简单的属性 2.1.声明基本的属性映射每个非静态非瞬态属性(取决于访问类型的字段或方法)都被认为是持久性的,除非您将其注释为Transient。没有为您的财产注释等同于适当的 Basic注释。该Basic 注释允许…

进程与服务的签名_苹果app签名需要注意哪几点

现在部分的智能手机系统设备和工作一个应用软件,都需求证书的签名认证。未经任何签名的程序是不能在智能手机上设备和工作的。验证签名的底子进程则:智能手机操作系统或软件渠道对收到的原始数据选用相同的杂凑运算得到消息摘要,将与被签署时分的消息摘要…

8.4-中断系统

【README】 1.本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐; 2.采用一问一答的方式对中断进行总结(中断7问题),refer2 8.4-中断系统小结&…

ASP.NET Core的配置(1):读取配置信息

提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置信息定义在这两个文件之中。到了.NET Core的时候,很多我们…

EL调用java方法

一、jstl函数 jstl函数自定义二、调用方法的值成变量 第一种使用request对象 <% request.setAttribute(“isOperate”,isShowOperate()); %> 第二种使用标签变量 <c:set var"isOperate" value"<%isShowOperate()%>" />转换成变量使用<…

wordcloud python3.7_[原创]win7/64位系统+python3.7.2下安装wordcloud库失败之解决——一个莫名其妙的方法...

当前环境&#xff1a;win7/64位系统python3.7.2pip-19.2.1使用pip install wordcould安装时出现错误&#xff0c;提示&#xff1a;尝试方法①&#xff1a;考虑更换其他安装源提示没有变化&#xff0c;仍然提示没有找到分发版本-----------强行插入的分割线-------------------(…

1-计算机系统概论

【README】 本文总结自B站 《计算机组成原理&#xff08;哈工大刘宏伟&#xff09;》的视频讲解&#xff0c;非常棒&#xff0c;墙裂推荐&#xff1b; 【1.1】计算机软硬件概念 【1.2】计算机层次结构 【2】计算机基本组成 【2.1】冯诺依曼计算机特点&#xff08;重要*&#…

JetBrains 加入 .NET 基金会

在 BUILD 大会上&#xff0c;微软正式对外宣布&#xff0c;JetBrains 已经加入 .NET 基金会&#xff0c;详细情况可以查看 .NET Foundation 博客。 JetBrains 因为用户推荐、ReSharpe、ReSharper Ultimate 套件等原因&#xff0c;在 .NET 平台投入大量资源。而现在&#xff0c…

jstl中添加自定义的函数

转载自 jstl中添加自定义的函数由于jstl中提供的函数未必能够满足我们的要求&#xff0c;而我们又希望能够像jstl提供的函数那样能够轻松方便使用&#xff0c;那么可以通过自定义函数补充jsltl函数。给jstl添加自定义函数需要以下步骤&#xff1a;定义一个static的public的方…

多智能体强化学习_基于多智能体强化学习主宰星际争霸游戏

大家好&#xff0c;今天我们来介绍基于多智能体强化学习主宰星际争霸游戏这篇论文Grandmaster level in StarCraft II using multi-agent reinforcement learning​doi.org从Alphastar以后 利用强化学习的方法进行星际争霸2AI的又一大突破。Part1 前言游戏介绍(Introduction to…

2-计算机发展及应用

【README】 本文总结自B站 《计算机组成原理&#xff08;哈工大刘宏伟&#xff09;》的视频讲解&#xff0c;非常棒&#xff0c;墙裂推荐&#xff1b; 【1】计算机发展史 【1.1】计算机的产生和发展 【1.2】微型计算机的出现与发展 芯片上的晶体管的数量 与 cpu速度间 有没有关…