计算机组成原理(超详解!!) 第七节 中央处理器(下)

news2024/11/26 22:48:19

1.微程序控制器

微程序设计技术:利用软件方法来设计硬件的一门技术。

微程序控制器的基本思想:

仿照通常的解题程序的方法,把操作控制信号编成所谓的“微指令”,存放到一个只读存储器里。当机器运行时,一条又一条地读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应部件执行所规定的操作。

基本思想:

1.若干微命令编制成一条微指令,控制实现一步操作;

2.若干微指令组成一段微程序,解释执行一条机器指令;

3.微程序事先存放在控制存储器CM(Control Memory)中,执行机器指令时再取出。

引入了程序技术,使设计规整;引入了存储逻辑,使功能易于扩展。

1.主要部件

(1)控制存储器CM

功能:存放微程序。

CM属于CPU,不属于主存储器。

(2)微指令寄存器 µIR

功能:存放现行微指令。

(3)微地址形成电路

功能:提供两类微地址。

微程序入口地址:由机器指令操作码形成。

后续微地址:由微地址字段、现行微地址、运行状态等形成。

2.工作过程

(1)取机器指令

(2)转微程序入口

(3)执行首条微指令

(4)取后续微指令

(5)执行后续微指令

同(3)

(6)返回

微程序执行完,返回CM(存放取指微指令的固定单元)。

2.微指令和微程序

微指令:在机器的一个CPU周期中,一组实现一定操作功能的微命令的组合。是CM中的一个单元的内容,即控制字。

注:微指令给出的控制信号都是节拍电位信号,它们的持续时间为一个CPU周期,有时根据实际电路需要,还要对某些微命令信号加入时间控制。

一条微指令由操作控制和顺序控制两大部分组成。

(1)操作控制部分,又称“微操作码字段”,用来发出管理和指挥全机工作的控制信号,其中每一位都表示一个微命令。

(2)顺序控制部分,又称“微地址码字段”,用来决定产生下一条微指令的地址;

微指令是控制存储器中的一个存储单元的内容,即控制字。

微程序:一条机器指令的功能是用许多条微指令组成的序列来实现的,这个微指令序列通常叫做微程序。 

微地址:微指令在控制存储器中的单元地址。 微指令在执行时同样也需要进行微指令寻址。而且在决定后继微指令地址时,需要判别测试标志位的配合。

机器指令-微程序-微指令-微命令

微程序控制器基本思想

1.若干微命令编制成一条微指令,控制实现一步操作;

2.若干微指令组成一段微程序,解释执行一条机器指令;

3.微程序事先存放在控制存储器CM(Control Memory)中,执行机器指令时再取出。

例:

根据下图所示,画出 “余3码十进制加法”指令的微程序控制流程图,并根据已知微指令格式,写出对应微指令。 余3码的十进制加法规则如下:两个一位十进制数的余3码相加,如结果无进位,则从和数中减去3(减0011):如果有进位,则和数中加上3(加0011),即得和数的余3码。 要求(1)加法机器指令的操作码为:1010。微指令中P1测试位为1时,表示下一条微指令的地址机器指令的操作码;(2)微指令中P2测试位为1时,根据Cy判断下一条微指令的地址。当Cy=0时,下一条微指令的地址为0001;当Cy=1时,下一条微指令的地址为1001。(3)当P1和P2同时为零时,本条微指令的直接地址位就给出下一条微指令的地址。(4)本题中已经直接将常数3放入R3中。(5)结果应该都放在R2中。

总结

微程序控制器的工作过程实质就是:在微程序控制器的控制下,计算机执行机器指令的过程。具体可分为:

(1)执行取指令的公操作    机器开始运行时,自动地将取指微程序的入口微地址送 入\muAR,并从\muCM中读出微指令,送往\muIR,当取指微程序执行完以后,从主存中取出的机器指令就已经存入IR中了。

(2)由机器指令的操作码字段OP通过“地址转移逻辑”产生出该机器指令所对应的微程序的入口微地址,并送入\muAR。

(3)从\muCM中逐条取出相应的微指令并执行之。

(4)执行完对应于一条机器指令的一段微程序之后,又回到取指微程序的入口地址,继续第(1)步,以完成取下一条机器指令的公操作。

3.微程序时序安排

为了保证整个机器控制信号的同步,可以将一个微指令周期时间设计得恰好和CPU周期时间相等。

CPU周期与微指令周期的关系

用统一微指令周期控制各条微指令执行

4.机器指令与微指令的关系

(1)一条机器指令对应一个微程序,此微程序是由若干条微指令序列组成的。

(2)指令、程序、地址对应于内存储器;微指令、微程序、微地址对应于控制存储器。

(3)一个CPU周期对应于一个微指令指令周期。方框图就是微程序流程图。

微程序——解释一条机器指令的微指令的集合。

微操作、微命令、微指令、微程序、机器指令

机器指令与微指令的关系

2.微程序设计技术

微程序设计:设计与各条机器指令相对应的微程序的过程。

微程序的关键:如何确定微指令的结构。

如何确定微指令的结构:

(1)有利于缩短微指令字长度;

(2)有利于减小控制存储器的容量;

(3)有利于提高微程序的执行速度;

(4)有利于对微指令的修改;

(5)有利于微程序设计的灵活性;

1.微命令的编码方法

编码有三种方法:直接表示法,编码表示法,混合表示法

1.直接表示法:操作控制字段中的各位分别可以直接控制计算机,不需要进行译码。

直接表示法举例,操作控制字段的每一个独立的二进制位代表一个微命令,该位为“1”表示这个微命令有效,为“0”表示这个微命令无效。

直接表示法特点: 这种方法结构简单,并行性强,操作速度快,但是微指令字太长,若微命令的总数为N个,则微指令字的操作控制字段就要有N位。 另外,在N个微命令中,有许多是互斥的,不允许并行操作,将它们安排在一条微指令中是毫无意义的,只会使信息的利用率下降。

2.编码表示法:将操作控制字段分为若干个小段,每段内采用最短编码法,段与段之间采用直接控制法。

编码表示法特点:可以避免互斥,使指令字大大缩短,但增加了译码电路,使微程序的执行速度减慢

3.混合编码法:将前两种结合在一起,兼顾两者特点。一个字段的某些编码不能独立地定义某些微命令,而需要与其他字段的编码来联合定义。

编码注意几点:字段编码法中操作控制字段并非是任意的,必须要遵循如下的原则:

①把互斥性的微命令分在同一段内,兼容性的微命令分在不同段内。这样不仅有助于提高信息的利用率,缩短微指令字长,而且有助于充分利用硬件所具有的并行性,加快执行的速度。

②应与数据通路结构相适应。

③每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。

④一般每个小段还要留出一个状态,表示本字段不发出任何微命令。因此当某字段的长度为三位时,最多只能表示七个互斥的微命令,通常用000表示不操作。 下面举例说明

2.微指令地址的形成

入口地址:每条机器指令对应一段微程序,当公用的取指微程序从主存中取出机器指令之后,由机器指令的操作码字段指出各段微程序的入口地址,这是一种多分支(或多路转移)的情况。

后继微地址形成方法主要有两种:计数器的方式, 多路转移的方式

1.入口地址形成:如果机器指令操作码字段的位数和位置固定,可以直接使操作码与微程序入口地址的部分位相对应。

2.后继微地址形成方法

(1)计数器的方式

方法: 微程序顺序执行时,其后继微地址就是现行微地址加上一个增量(通常为1); 当微程序遇到转移或转子程序时,由微指令的转移地址段来形成转移微地址。 在微程序控制器中也有一个微程序计数器μPC,一般情况下都是将微地址寄存器μAR作为μPC

特点: 优点是简单、易于掌握,编制微程序容易 缺点是这种方式不能实现两路以上的并行微程序转移,因而不利于提高微程序的执行速度。

(2)多路转移的方式

根据条件转移如图

条件:状态条件/测试/微指令中微地址/操作码

3.微指令格式

微指令格式分为两类:水平型微指令和垂直型微指令

(1)水平型微指令

水平型微指令是指一次能定义并能并行执行多个微命令的微指令。

格式如下

水平型微指令特点:

优点: 微指令字较长,速度越快。 微指令中的微操作有高度的并行性。 微指令译码简单。 控制存储器的纵向容量小,灵活性强。

缺点: 微指令字比较长,明显地增加了控制存储器的横向容量。 水平微指令与机器指令差别很大,一般要熟悉机器结构、数据通路、时序系统以及指令执行过程的人才能进行微程序设计,这对用户来说是很困难的。

(2)垂直型微指令

采用编码方式。 微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能,称为垂直型微指令。  

垂直型微指令的结构类似于机器指令的结构。它有操作码,在一条微指令中只有l-2个微操作命令,每条微指令的功能简单,因此,实现一条机器指令的微程序要比水平型微指令编写的微程序长得多 。它是采用较长的微程序结构去换取较短的微指令结构

下面举4条垂直型微指令的微指令格式加以说明。 设微指令字长为16位,做操作码3位。    

1)寄存器-寄存器传送型微指令

其功能是把源寄存器数据送目标寄存器 .13—15位为微操作码(下同),源寄存器和目标寄存器编址各 5位,可指定31个寄存器.

(2)运算控制型微指令

其功能是选择ALU的左、右两输入源信息,按ALU字段所指定的运算功能(8种操作)进行处理,并将结果送入暂存器中。左、右输入源编址可指定31种信息源之一。

(3)访问主存微指令

其功能是将主存中一个单元的信息送入寄存器或者将寄存器的数据送往主存。存储器编址是指按规定的寻址方式进行编址。第1,2位指定读操作或写操作(取其之一)。

(4)条件转移微指令  

其功能是根据测试对象的状态决定是转移到D所指定的微地址单元,还是顺序执行下一条微指令。9位D字段不足以表示一个完整的微地址,但可以用来替代现行μPC的低位地址。 测试条件字段有4位,可规定16种测试条件。

垂直型微指令的特点:

微指令字短,一般为10~20位左右。

微指令的并行微操作能力有限,一条微指令一般只包含一个微操作命令。

微指令译码比较复杂。全部微命令用一个微操作控制字段进行编码,微指令执行时需行完全译码。

设计用户只需注意微指令的功能,而对微命令及其选择、数据通路的结构则不用过多地考虑,因此,便于用户编制微程序。而且,编制的微程序规整、直观,便于实现设计的自动化。

垂直微指令字较短,使控制存储器的横向容量少。

用垂直微指令编制微程序要使用较多的微指令,微程序较长;要求控制存储器的纵向容量大。

垂直微指令产生微命令要经过译码,微程序执行速度慢。

不能充分利用数据通路具有多种并行操作能力

水平型微指令和垂直型微指令的比较:

(1)水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令则较差。

(2)水平型微指令执行一条指令的时间短,垂直型微指令执行时间长。

(3)由水平型微指令解释指令的微程序,有微指令字较长而微程序短的特点。垂直型微指令则相反。

(4)水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说,比较容易掌握。

4.动态微程序设计

微程序设计分类:

(1)静态微程序设计:对应于一台计算机的指令系统只有一套微程序,该微程序设计好之后,一般无须改变而且也不便于改变。

(2)动态微程序设计:采用EPROM作为CM,可以通过改变微指令和微程序来改变机器的指令系统,因此可以在一台机器上实现不同类型的指令系统。   由于动态微程序设计技术要求对计算机结构和组成非常熟悉,所以这类微程序方案的改变一般只能由计算机设计人员完成。

3.流水 CPU

1.并行处理技术

并行性的两种含义:

1)同时性:两个以上事件在同一时刻发生;

2)并发性:两个以上事件在同一时间间隔内发生。

时间并行:时间重叠,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。

空间并行:资源重复,以“数量取胜”来提高计算机的处理速度。当前的空间并行主要体现在多CPU和多计算机系统,在单处理机系统中也得到广泛的应用。

时间+空间并行:时间重叠和资源重复的综合应用。

2.流水CPU的结构

1.流水计算机的系统组成

组成:指令部件、指令队列、执行部件。

程序和数据存放在主存中:主存采用多体交叉存储器,CPU与主存之间添加一个高速cache来弥补两者速度差异。

1)指令部件本身构成一个流水线:取指令、指令译码、计算操作数地址、取操作数等几个过程段组成;  

2)指令队列:一个FIFO的寄存器队列,用来存放经过译码的指令和取来的数据,也是一条流水线;

3)执行部件:具有多个算术逻辑运算部件,这些部件本身又用流水线方式构成,一般采用的实现方法:    

①将执行部件分为定点执行部件和浮点执行部件两个可并行执行部分,分别处理定点运算指令和浮点运算指令;    

②在浮点执行部件中,又有浮点加法部件和浮点乘/除部件,它们可同时执行不同的指令;    

③浮点运算部件都以流水线方式工作。

2.流水CPU的时空图

为了实现流水,首先把输入的任务分割为一系列子任务,并使各子任务在流水线的各个阶段并发地执行,当任务连续不断地输入流水线时,在流水线的输出端便连续不断地吐出执行结果,从而实现子任务级的并行性。

3.流水线的性能指标

1.吞吐率

吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量。

n:任务数

Tk:处理完成n个任务所用的时间

各段时间均相等的流水线各段时间均相等的流水线时空图

流水线完成n个连续任务所需要的总时间为: (假设一条k段线性流水线)

流水线的实际吞吐率

2.流水线的加速比

加速比:完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。假设:不使用流水线(即顺序执行)所用的时间为Ts,使用流水线后所用的时间为Tk,则该流水线的加速比为:

流水线各段时间相等(都是△t)

一条k段流水线完成n个连续任务所需要的时间为:Tk = (k+n-1)Δt

顺序执行n个任务所需要的时间: Ts= nk△t    

流水线的实际加速比为:

例题:

指令流水线有取指(IF)、译码(ID)、执行(EX)、访存(MEM)、写会寄存器堆(WB)5个过程段,共有20条指令连续输入此流水线。 (1)画出流水线处理的时空图,假设时钟周期为100ns。 (2)求流水线的实际吞吐率(单位时间里执行完毕的指令数)。 (3)求流水线的加速比。

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

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

相关文章

高速电流反馈运放总结

目录 前言 基础架构 CFB运算放大器拓扑结构的进步 前言 最近项目发现有震荡,发现是电流反馈型运放导致,所以对电流运放的知识做了全面的复习。 基础架构 现在,我们将详细考察高速运算放大器中非常流行的电流反馈(CFB)运算放大器拓扑结 构…

Vue 局部布局 Layout 内部布局 [el-row]、[el-col]

之前的布局容器是一个整体的框架,layout里面的布局其实就是el-row和el-col的组合。 基础布局 使用单一分栏创建基础的栅格布局。 通过 ​row ​和 ​col ​组件,并通过 ​col ​组件的 ​span ​属性我们就可以自由地组合布局。 这种最简单,…

网络库-libevent介绍

1.简介 libevent是一个事件驱动的网络库,主要用于构建可扩展的网络服务器。它提供了跨平台的API,支持多种事件通知机制,如select、poll、epoll、kqueue等。 主要组件 event: 表示一个具体的事件,包括事件类型、事件回调等。eve…

Office之Word应用(二)

一、页眉添加文件名称和页码 1、双击页眉,点击“页眉-空白(三栏)” 2、删掉第一处(鼠标放在上面就会选中,Enter即可),第二处输入文档名称,第三处插入页码。 注:插入页码时…

【CSP CCF记录】202203-2 出行计划

题目 过程 第一次提交 暴力求解&#xff0c;时间复杂度为n*n&#xff0c;超时 #include<bits/stdc.h> using namespace std; const int N100001; int n,m,k; int t[N],c[N],q[N]; int main() {cin>>n>>m>>k;for(int i0;i<n;i){cin>>t[i]&g…

计算机视觉的应用30-基于深度卷积神经网络CNN模型实现物体表面缺陷检测技术的项目

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用30-基于深度卷积神经网络CNN模型实现物体表面缺陷检测技术的项目主要包括&#xff1a;物体表面缺陷检测技术项目介绍&#xff0c;数据构造&#xff0c;模型介绍。 物体表面缺陷检测技术是工业自动化…

深入探讨黑盒测试:等价类划分与边界值分析

文章目录 概要黑盒测试等价类划分边界值分析 设计测试用例小结 概要 在软件开发领域&#xff0c;测试是确保产品质量的关键步骤之一。而黑盒测试方法作为其中的一种&#xff0c;通过关注输入与输出之间的关系&#xff0c;而不考虑内部实现的细节&#xff0c;被广泛应用于各种软…

最短木板长度 - 贪心思维

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、java代码五、测试用例 前言 本人最近再练习算法&#xff0c;所以会发布自己的解题思路&#xff0c;希望大家多指教 一、题目描述 小明有 n 块木板&#xff0c;第 i ( 1 ≤ i ≤ n ) 块木板长…

3分钟,学会一个 Lambda 小知识之【流API】

之前给大家介绍的 Lambda 小知识还记得吗&#xff1f;今天再来给大家介绍&#xff0c; 流API 的相关知识要点。 流API Stream是Java8中处理集合的关键抽象概念&#xff0c;它可以指定你对集合的&#xff0c;可以执行查找、过滤和映射等数据操作。 Stream 使用一种类似用 SQ…

SSRF(服务器端请求伪造)的学习以及相关例题(上)

目录 一、SSRF的介绍 二、漏洞产生的原因 三、利用SSRF可以实现的效果&#xff08;攻击方式&#xff09; 四、SSRF的利用 五、SSRF中的函数 file_get_content() 、fsockopen() 、curl_exec() 1.file_get_content()&#xff1a; 2.fsockopen(): 3.curl_exec()&#xff1…

Golang面向对象编程(二)

文章目录 封装基本介绍封装的实现工厂函数 继承基本介绍继承的实现字段和方法访问细节多继承 封装 基本介绍 基本介绍 封装&#xff08;Encapsulation&#xff09;是面向对象编程&#xff08;OOP&#xff09;中的一种重要概念&#xff0c;封装通过将数据和相关的方法组合在一起…

进程间的IPC通信机制

一、介绍 进程与进程间的用户空间相互独立&#xff0c;内核空间共享。 1.传统的进程间通信机制 a.无名管道 pipe b.有名管道 fifo c.信号 signal 2.system V中的IPC对象 a.消息队列 message queue b.共享内存 shared memory c.信号灯集 semaphoare 3.可用于跨主机传输…

【C++ 】红黑树

1.1 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路 径会比其他路径长出俩倍&#xff…

Android的NDK开发中Cmake报缺少对应的x86的so文件

需要实现一个串口操作的命令。 供应商提供了2个so文件。 分别是 armeabi-v7a 和 arm64-v8a 添加到对应的cpp下。 在CMakeLists.txt里添加so文件 # 添加预编译的库 add_library(libxxx SHARED IMPORTED)# 设置库的路径 set_target_properties(libxxx PROPERTIES IMPORTED_…

OPT系列极速版远距离光数据传输器|光通讯传感器安装与调试方法

OPT系列极速版远距离光数据传输器|光通讯传感器使用红外激光通信&#xff0c;满足全双工 100M 带宽&#xff0c;通讯距离可达 300 米。能够快速&#xff0c;稳地传送数据&#xff0c;支持主流的工业控制总线&#xff08;Profinet&#xff0c;Ethercat 等&#xff09;&#xff1…

如何8步完成hadoop单机安装

前言 Hadoop是一个开源框架&#xff0c;用于存储和处理大规模数据集。 系统要求 Ubuntu 20.044GB&#xff08;建议8GB&#xff09;hadoop-3.3.6 步骤1&#xff1a;更新系统 打开终端并输入以下命令来更新您的系统&#xff1a; apt update 步骤2&#xff1a;安装Java Had…

浪潮信息企业级存储逆势增长 市场份额位列中国前二

2023年&#xff0c;中国企业级存储市场竞争激烈&#xff0c;在挑战重重之下&#xff0c;浪潮信息仍然实现逆势增长&#xff0c;销售额增幅达4.7%&#xff0c;市场份额相比2022年扩大0.6%&#xff0c;位列中国前二。另外&#xff0c;在高端和全闪存阵列细分市场&#xff0c;浪潮…

文件操作IO网络编程网络原理

​ 文件操作—IO 文件在计算机中可以代表很多东西 在操作系统中, 文件主要是指硬盘文件 硬盘主要分为机械硬盘和固态硬盘。机械硬盘通过磁头在旋转的磁盘上读取数据&#xff0c;适合顺序读取。而固态硬盘则使用闪存芯片来存储数据&#xff0c;没有机械部件&#xff0c;因此读…

进程创建-fork

demo1代码状态变迁 demo2代码输出到stdout使用管道 demo1 代码 #include <pthread.h> #include <iostream> #include <unistd.h> int main(int argc, char const *argv[]) {// 1.pid_t x fork();// 2.pid_t y fork();// 3.printf("%d %d\n", x…

电机及FOC算法介绍

一.电机概述 1.电机的简介 电机是一种可以在电能和机械能的之间相互转换的设备&#xff0c;其中发电机是将机械能转换为电能&#xff0c;电动机是将电能转换为机械能。发电机的主要用于产生电能&#xff0c;用途单一&#xff0c;但是电动机主要用于产生机械能&#xff0c;用途…