计算机组成原理 复习笔记(已完结)
前言
本文参考书是白中英第六版《计算机组成原理》和机械工业出版社《计算机组成》。本文为期末复习参考,非考研,侧重知识点可能有所差异。如有错误烦请指出。
重点在 二、三、四、五章。其余章节主要为简答题考察。
建议搭配例题PPT同步进行复习:
链接:https://pan.baidu.com/s/1PesCMnqalaPNtrbnOi1Nwg
提取码:d79d
寻找某个知识点可以使用Ctrl+F
搜索当前页面。
个人总结,所以知识点比较杂乱,部分习题会不定时更新补充,仅供复习参考。
本文共计六万余字,阅读时间约为二到五小时。
本博客已同步更新至本人CSDN:
https://blog.csdn.net/qq_51594676/article/details/123798244
@
第一章:计算机系统概论
1.1 计算机分类和发展简史
分类
计算机的定义:
计算机是一种以
电子器件
为基础的不需要人的干预
,能对各种数字化信息
进行算术和逻辑运算
的快速
工具。
电子计算机分两种:
- 电子数字计算机:由
逻辑电子器件
构成,变量为离散量
- 电子模拟计算机:由
模拟运算器件
构成,变量为连续量
电子数字计算机与电子模拟计算机的主要区别:
数字计算机进一步又可分为专用计算机和通用计算机
通用计算机可分为六类:
- 超级计算机
- 大型机
- 服务器
- PC机
- 单片机
- 多核机
发展及硬件
计算机发展趋势:
微型化、网络化、巨型化、智能化
计算机经历了五代变化:
第一代:
1946~1957,电子管计算机。体积庞大,成本很高,可靠性较低。在此期间,形成了计算机的基本体系,确定了程序设计的基本方法,数据处理机开始得到应用。
第二代:
1958~1964,晶体管计算机。可靠性提高,体积缩小,成本降低。在此期间,工业控制机开始得到应用。
第三代:
1965~1971年,中小规模集成电路计算机。再次期间形成机种多样化,生产系列化,使用系统化,小型计算机开始使用。
第四代:
1972~1990,大规模和超大规模集成电路计算机,由几片大规模集成电路组成的微型计算机开水出现。
第五代:
1991年至今,巨大规模集成电路计算机出现,由一片巨大规模集成电路实现的单片计算机开始出现。
指令集授权方式:
- IP内核授权
- 指令集架构授权
- 授权+ 自主研制指令集
常见指令集:
x86 ARM,RIS-V
计算机性能指标
1.2 计算机的功能部件
计算机主要有五个功能部件
输入设备、存储器、算术逻辑单元、输出设备、控制器
这里先简要描述一些概念,具体的知识点会在后续详细解释。
存储器
存储器的功能是存储程序和数据,它分为主存储器和辅助存储器两种。
主存储器是以电子速度运行告诉内存,程序正在执行时必须要存储在内存中。
内存包含大量的半导体存储单元。
一个半导体触发器有0和1两个状态,可以记忆一位二进制代码。
这些半导体存储单元很少被单独读取或者编写,而是按照固定大小的组进行处理,这个组称为字。
每个字的位数称为字长,典型的字长范围是从16位到64位。
若按找16位计算机:
在存储器中把保存一个数的16个触发器称为一个存储单元。
每个存储单元都有编号,称为地址。
存储器所有存储单元的总数称为存储容量。
摩尔定律:
每18个月,集成电路的性能就会提升一倍,价格将会降低一倍。
控制器
存储器、运算器和输入输出设备对信息进行存储和处理,然后执行输入和输出操作。这些设备的操作必须按一定的方式互相协调。这就是控制器的工作。控制器是高校的中枢系统,它将控制信号传送到其他设备并检测它们的状态。
由输入和输出操作构成的I/O传输是被I/O程序的指令所控制的,I/O程序识别相关的设备和需要传输的信息。但是,控制传输的实际时序信号是由控制电路产生的。时序信号是决定何时发生规定动作的信号。处理器和存储器之间的数据传送也是由控制器通过时序信号控制的。
指令有两部分:
操作码 : 地址码
控制器的基本任务
我们把取指令的一段时间叫做取指周期
执行指令的一段时间叫做执行周期
一个位bit
为最小计算单位
一个字节由8位构成
一个字由n个字构成,n为字长,常见的有8位、16位
计算机中字既可以表示指令,也可以表示数据:
取值周期中从内存读出的信息流是指令流,它流向控制器。
执行周期中从内存中国读出或流入的数据为数据流,它流向存储器或者运算器
1.3 电子计算机设计思想
存储程序+程序控制
冯诺依曼计算机:
存储程序并按地址执行
冯诺依曼计算机基本思想:
- 采用二进制形式表示数据和指令,指令由操作码和地址码组成。
- 将程序和数据存放在存储器中,即“存储程序”和“程序控制”。
- 指令的执行是顺序的。
- 由存储器、运算器、控制器、输入和输出设备五大组件构成。
适配器
I/O设备通常称为外围设备
适配器(I/O接口)相当于一个转换器,它可以保证外围设备用计算系统特性要求的形式发送或接收数据。
计算机 = 硬件系统 + 软件系统
软件是指硬件上运动的程序和相关的数据及文档。
1.4 处理器的一些补充
计算机的活动是由指令控制的,为了执行一个给定的任务,要在存储器中存储一个包含一连串指令的相应程序。完成特定操作的指令从存储器中逐个取出,然后送入处理器,用作操作数的数据也存储在存储器中。
如图显示了存储器和处理器是如何链接在一起的,也显示了一些还没有讨论过的处理器的重要操作细节。(后续在处理器章节会详细说明)
除了ALU(逻辑运算单元)和控制电路外,处理器中包含许多用于不同目的的寄存器。指令寄存器(IR)保留当前正在执行的指令,它的输出结构由控制电路来获得,可产生能够控制执行指令中不同处理部件的时序信号。程序计数器(PC)是另一个由专门用途的寄存器。它跟踪程序执行的过程,其中包含下一条即将被读取和执行指令的内存地址。
还有两种寄存器与内存通信。这就是内存地址寄存器(MAR)和内存数据寄存器(MDR)。MAR保存着即将访问单元的地址,MDR保存着将写入该地址单元或从该地址单元中读出的数据。
第二章:运算方法和运算器
本章重点:
掌握数据的定点和浮点表示格式,并会正确地进行表示
掌握数据的原码、反码、补码和移码表示方法
了解字符、字符串和汉字的表示方法
清楚校验码的概念,重点掌握奇偶校验码
掌握并能熟练计算补码定点加减法,会正确地检测溢出
理解最基本的二进制加减法器的构成和工作原理
理解原码阵列乘法器的构造原理,会进行原、补码阵列乘法运算
理解阵列除法器的构造原理,会使用加减交替法进行除法运算
理解 ALU 的构造原理和两级先行进位的思想
清楚浮点加、减运算的计算步骤,会进行浮点加减运算
了解流水线的基本原理
2.1 数据与文字的表示方式
真值和机器数
数据表示需要考虑的因素:
- 数据的类型
- 可能遇到的数值范围
- 数值精确度
- 数据存储和运算的硬件代价
数据的表示格式:
- 定点格式
- 浮点格式
真值: 现实中真实的数值
机器数: 计算机中用0和1组合表示的数值
定点数:固定小数点的未至表达数值的机器数
-定点整数:将小数点固定在机器数的最右侧表达的整数
-定点小数:将小数点固定在机器数的最左侧表达的小数
浮点数:小数点浮动表达的实数
无符号数:只表达0和正整数的定点整数
有符号数:表达负整数、0和正整数的定点整数
-符号位需要占用一个位,常用机器的最高位
-0表示正数,1表示负数
-具有原码、反码、补码、移码
无符号数与定点数的表示
没有符号位,使用全部字长来表示数值大小
举例:
字长N=8时,编码00000000~11111111
取值范围: 0~255(28-1)
定点表示:约定机器中所有数据的小数点位置是固定不变的。通常将数据表示成纯小数或者纯整数。
定点数x=x0x1x2……xn表示如下(x0表示符号位,0正1负)
举例:
定点小数的取值范围
纯小数的表示范围为:
x1x2x3……xn各位均为0时最小,各位均为1时最大,x0为符号位
0 ≤ |x| ≤ 1 - 2-n
定点整数的表示范围:
纯整数的表示范围为:
x1x2x3……xn各位均为0时最小,各位均为1时最大,x0为符号位
0 ≤ |x| ≤ 2-n - 1
目前计算机中多采用定点纯整数表示,因此将定点数的运算简称为整数运算
既然定点数有大小范围,那我们如何用定点数表示非常大的数和非常小的数呢?
我们可以引入比例因子:
浮点数的表示方法
把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示。
数的小数点位置随比例因子的不同而在一定范围内自由移动。
一个十进制数N可以写成:
N = 10e×M
则,一个R进制数N可写成:
N = Re× M
M:尾数
e:指数
R:基数
阶码和尾数
阶码
:表达指数部分。用整数形式表示,指明小数点在数据中的位置,决定浮点数的表示范围。
尾数
:用定点小数表示,给出有效数字的位数,决定了浮点数的表示精度.
十进制数串的表示方法:
BCD码
二十进制编码部分方案
二十进制有权码:
对于有权码,将每位的数码与相应的位权相乘,再求和,就可以得到它所代表的十进制数值。
8421码实现加减运算时的修正规则:
- 未超出9(1001),不进行修正
- 超出9(1001),不超过16(10000),加6修正,使它向高一组产生进位,省去最高位。
- 超出16(10000),加6修正。
余三码
余三码是在8421码的基础上,把每个代码都加上0011而形成的。
普通8421码的加法器仍能为余三码加法器直接利用,具体规则如下:
- 若两个十进制数的余三码相加,如果结果不产生进位,则从所得和值减去0011,便得十进制位和的余三码。
- 若两个十进制的余三码相加,如果结果有进位,则其进位正确,但仍需将所得值加上0011.才求的十进制和的余三码。
格雷码
格雷码的编码规则是使相邻的两个代码,只有一个二进制的状态不同,其余三个二进制位必须有相同状态。
优点:从一个编码变到下一个相邻编码时,只有一个位的状态发生变化,有利于保证代码变换的连续性。在模拟/数字转换和产生节拍电位等应用场合特别有用。
数的机器码表示
把符号位和数值位一起编码来表示相应的数。
-原码
-补码
-反码
-移码
原码
定点整数的原码形式为x0x1x2……xn(x0为符号位)
举例:
定点小数的原码形式为x0x1x2……xn(x0为符号位)
举例:
原码的表示范围:
原码总结
- 原码为符号位加上数的绝对值,0正1负。
- 原码0有两个编码,+0和-0编码不同
- 原码表示简单,易于同真值之间进行转换。
- 原码乘除运算规则简单
- 原码加减运算负责
当两数相加时,同号则相加;如果是异号则相减。而在进行减法运算时,还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符号。
补码
模的概念:
计算机中运算器、寄存器、计数器都有一定的位数,不可能容纳无限大的任意数。当运算结果超出实际的最大表示范围,就会发生溢出,此时所产生的溢出量就是模(module)。
模定义为一个计量器的容量。如:一个4位的计数器它的计数值为0~15。当计数器计满15之后再加1,这个计数器就发生溢出,其溢出量为16,模等于16。定点小数的溢出量为2,即以2为模;
一个字长为n+1位的定点整数的溢出量为2n+1,即以2n+1为模。
定点整数的补码形式:x0x1x2……xn(x0为符号位)
举例:
补码与真值:
举例:
定点整数的补码表示:
有符号整数在计算机中默认采用补码。
-最高位表示符号,0正1负
-正数补码:直接表示数值大小(=原码=无符号数)
-复数补码:将对应的正数补码取反加1
举例:
负数求补:
负数真值“取反加一”得到机器数补码
负数补码“取反加一”得到负数真值
负数求补运算,等效于用带借位的0做减法
补码的特点
- 补码最高一位为符号位,0正1负
- 补码零具有唯一编码
- 补码的加减运算规则简单
最高位参与运算,与其他位一样对待
反码
反码:二进制的各位数码0变1,1变0
有符号整数的反码:
- 最高位表示符号,0正1负
- 正数反码:直接表示数值大小(=原码=补码)
- 负数反码:将对应正数反码取反
例题:
移码
移码通常用于表示浮点数的阶码
假设定点整数移码形式为ekek-1……e2e1e0时,移码的定义是:
(计算:对应补码的符号位取反)
8位移码表示的机器数位数的真值在数轴上向右平移了27=128个位置
举例:
机器码总结:
- 正数的原码、反码、补码等于真值,只有负数才分别有不同的表示方法
- 采用补码,减法运算可以用加法运算实现,节省硬件,目前机器中广泛采用补码表示法
- 有些机器用原码进行存储和传送,运算时改用补码
- 有些机器做加减法时用补码,做乘除法时用原码
- 移码表示法主要用于表示浮点数的阶码,可以直接比较大小。表示范围和补码相同,只有最高位相反
例题:
浮点数的机器表示
32位单精度浮点数
IEEE754标准:
移码方法:
E=e+127 将-126 ~ +127
的范围变为正整数1 ~ 254
64位单精度浮点数
IEEE754标准
浮点数的规格化
在计算机内,浮点数的尾数是纯小数,对非0值的浮点数,要求尾数的绝对值必须 ≥ 1/2 ,即尾数域的最高有效位应为1,称满足这种表示要求的浮点数为规格化表示
把不满足这一表示要求的尾数,变成满足这一要求的尾数的操作过程,叫作浮点数的规格化处理,通过尾数移位和修改阶码实现。
隐藏位技术
既然非0值浮点数的尾数数值最高位必定为1,则在保存浮点数到内存前,通过尾数左移,强行把该位去掉,用同样多的尾数位就能多存一位二进制数,有利于提高数据表示精度,称这种处理方案使用了隐藏位技术。
当然,在取回这样的浮点数到运算器执行运算时,必须先恢复该隐藏位。
规格化表示原则
尾数最高有效位为1,隐藏,并且隐藏在小数点的左边(即:1≤M<2)
指数真值e用移码形式表示为阶码E
32位单精度规格化浮点数的表示范围:
E = 1(0000 0001) ~ 254(1111 1110)
e = -126 ~ +127
表达的数据范围(绝对值)
最小值:e=-126,M=0(1.M = 1)
十进制表达:2-126 ≈ 1.18 × 10-38
最大值:e = 127, M = 11……1(23个1)
1.M = 1.11……1(23个1) = 2 - 2-23
十进制表示:
(2-2-23) × 2127 ≈ 2* 2127 ≈ 3.40 × 1038
64位单精度规格化浮点数的表示范围:
E =1 ~ 2046
e = -1022 ~ +1023
表达的数据范围(绝对值)
最小值:e=-1022,M=0(1.M = 1)
十进制表达:2-1022 ≈ 2.23 × 10-308
最大值:e = 1023, M = 11……1(52个1)
1.M = 1.11……1(52个1) = 2 - 2-52
十进制表示:
(2-2-52) ×21023 ≈ 2 × 21023 ≈ 1.79 ×10308
各类32/64位单/双精度浮点数:
- 真值0的机器数(机器零)
阶码E=0,尾数M=0
正0:S=0,负0:S=1
- 非规格化浮点数:
阶码E=0,尾数M≠0(E偏移量为126),真值F=(-1)S×M×2E-126 - 规格化浮点数:
阶码E = 1 ~ 254(1111 1110)
无穷大的机器数:
阶码E = 全1(1111 1111),尾数M =0
+∞:S=0,-∞:S=1
- NaN(Not a Number),不是一个数
阶码E = 全1,尾数M≠0
例题:
2.2 字符串的表示方法
大端序和小端序
字符串是指连续的一串字符,通常占用主存中连续的多个字节,每个字节存一个字符。
存放方式可分为小端方式和大端方式。
2.3 汉字的表示方式
- 汉字的输入编码:
- 汉字内码:
汉字内码是用于汉字信息的存储、检索等操作的机内代码,一般采用两个字节表示。
汉字内码有多种方案,常用以国标码为基础的编码例如,将国标码两字节的最高位置1后形成。
3. 字模码
4. 总结:
Unicode实现方法
UTF-8
以字节为单位对Unicode进行编码>对不同范围的字符使用不同长度的编码
UTF-16
以16位无符号整数为单位
UTF-32
以32位无符号整数为单位
目前UTF-8和UTF-16被广泛使用,而UTF-32由于太浪费存储空间而很少被使用
2.4 校验码
- 校验码:能够发现甚至纠正信息传输或存储过程中出现错误的编码
- 检错码:仅能检测出错误的编码
- 纠错码:能够发现并纠正错误的编码
- 最简单且应用广泛的检错码:奇偶校验码
- 奇校验:使包括校验位在内的数据中为1的个恒为奇数
- 偶校验:使包括校验位在内的数据中为1的个数恒为偶数(包括0)
- 只能检测出奇数个位出错的情况,不能纠错
例题:
2.5 定点加法、减法运算
补码加法
补码加法的公式为:
在模2n+1意义下,任意两数的补码之和等于改两数之和的补码。
例题:
补码加法的特点:
- 符号位要作为数的一部分一起参加运算
- 要在模2n+1的意义下相加,即超过模的进位要丢掉
补码减法
补码减法公式是:
例题:
溢出概念与检验方法
在定点整数机器中,n+1位数的表示范围为|X|<2n-1
在运算过程中如出现大于绝对值的现象,称为溢出
两个正数相加,结果大于机器所能表示的最大正数,称为正溢
两个负数相加,结果小于机器所能表示的最小负数,称为负溢
例题:
溢出原因分析:
分析可知,当最高有效数值位的运算进位与符号位的运算进位不一致时,将产生运算溢出
进一步结论:
当最高有效位有进位而符号位无进位时,产生正溢
当最高有效位无进位而符号位有进位时,产生负溢
溢出检测方法
双符号位法
双符号位法,称为“变形补码”或 模2n+2补码
可使模2n+2补码所能表示的数的范围扩大一倍
变形补码定义为:
计算时:
- 两个符号位都看作数码一样参加运算
- 两数进行以2n+2为模的加法,即最高符号位上产生
进位要丢掉
采用变形补码后,如果两个数相加后,其结果的符号位出01或10两种组合时,表示发生溢出,最高符号位所表示的是结果的正确符号。
例题:
变形补码的总结:
- 当以变形补码运算,运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。故溢出逻辑表达式为V=Sf1⊕Sf2,其中Sf1和Sf2分别为最高符号位和第二符号位。此逻辑表达式可用异或门实现。
- 模2n+2补码相加的结果,不论谥出与否,最高符号位始终指示正确的符号。
单符号位法
(1)当符号位无进位而最高有效位有进位时,产生正溢
(2)当符号位有进位而最高有效位无进位时,产生负溢
故:溢出逻辑表达式为:V=Cf⊕C0
Cf为符号位产生的进位,C0为最高有效位产生的进位
(此逻辑关系可用异或门方便地实现)
在定点机中,当运算结果发生溢出时,机器通过逻辑电路自动检查出溢出故障,并进行中断处理。
基本二进制加法 / 减法器
两个二进制数字Ai,Bi和一个进位输入Ci相加,产生一个和输出Si,以及一个进位输出Ci+1
一位全加器
根据真值表,三个输入端和两个输出端可按如下逻辑方程进行联系:
Ci+1的时间延迟为2T,其中T被定义为相应于单级逻辑电路的单位门延迟。T通常采用一个“与”门或一个“或”门的时间延迟来作为度量单位,因此多级进位链的时间延迟可以用与或门的级数或者T的数目来计算得到。(异或门的延迟时间可以视作3T)
n个1位的全加器(FA)可级联成一个n位的行波进位加减器
M为方式控制输入线,
当M=0时,作加法(A+B)运算
当M=1时,作减法(A-B)运算,转化成[A]补 - [-B]补运算,
求补过程由B反+1来实现,起始进位连接到功能方式线M上
作减法时M=1,相当于在加法器的最低位上加1.
单符号位法的溢出检测逻辑;当Cn=Cn-1时,运算无溢出
而当Cn≠Cn-1时,运算有溢出,经异或门产生溢出信号。
2.6定点乘法运算
原码并行乘法
本部分因为部分符号很难打出来,所以会用比较多的课件图片
早期计算机中为了简化硬件结构,采用串行的1位乘法方案,即多次执行"加法一移位”操作来实现。这种方法并不需要很多器件。然而串行方法太慢,自从大规模集成电路问世以来,出现了各种形式的流水式阵列乘法器,它们属于并行乘法器。
乘法时间分析
举例:
求补电路
带符号的阵列乘法器
把包括求补级的乘法器又称为符号求补的阵列乘法器
在这种逻辑结构中,共使用三个求补器
两个算前求补器,作用是:将两个操作数A和B在被不带符号的乘法阵列(核心部件)相乘以前,先变成正整数。
一个算后求补器,作用是:当两个输入操作数的符号不一致时,把运算结果变成带符号的数。
总结
带求补器的阵列乘法器既适用于原码乘法,也适用于间接的补码乘法。
在原码乘法中,算前求补和算后求补都不需要,因为输入数据都是立即可用的。
间接的补码阵列乘法需要使用三个求补器。为了完成所必需的求补与乘法操作,时间大约比原码阵列乘法增加1倍。
数据送入无符号阵列乘法器之前,将参与运算的补码数据先换为数据的绝对值,由算前求补器完成。
乘积的符号位单独形成通过异或门。
完成乘法运算后,根据乘积的符号位将两数绝对值的乘积再转换回补码的形式,得出乘积的补码,由算后求补器完成。
这种带求补器的阵列乘法器所完成的补码乘法实质上属于间接的补码乘法。
2.7 定点除法运算
原理
两个原码数相除时,商的符号由两数的符号按位异或求得,商的数值部分由两数的数值部分相除求得。
设有n位定点小数(定点整数也同样适用):
被除数x,其原码为[x]原=XfXn-1…X1Xo
除数y,其原码为[y]原=yfyn-1…y1y0
则有商q = ×/y,其原码为
[q]原=(x⊕y)+(0.Xn-1……x1x0/0.yn-1…y1y0)
商的数值部分运算实质上是两个正数求商的运算
例:
恢复余数法
机器不会心算,必须先作减法,若余数为正,才知道够减;若余数为负,才知道不够减。
不够减时必须恢复原来的余数,以便再继续往下运算。恢复原来的余数,只要当前的余数加上除数即可。但由于要恢复余数,使除法进行过程的步数不固定,因此控制比较复杂。
加减交替法
不恢复余数法,又称加减交替法。
其特点是运算过程中如出现不够减,则不必恢复余数,根据余数符号,可以继续往下运算步数固定,控制简单。
加减交替法”除法规侧:x/y
(1)首先对被除数x做减除数y运算,即:+[-y]补;
(2)判断余数符号,若余数为正(够减),则:商上“1”,
除数右移1位,然后做减除数(+[-y21]补)运算;
(3)若余数为负(不够减),则:商上"0”,
除数右移1位,然后做加除数(+[y2-1]补)运算。
注意:
在定点小数的原码除法运算中
(1)x>0,y>0,数值均取正的小数;(符号位单独考虑)
(2) x < y ,保证:商 q = x/y也是小数。
*重点题型 除法的加减交替计算
https://blog.csdn.net/weixin_43889841/article/details/103653662
阵列除法器
早期计算机为了简化结构,硬件除法器的设计采用串行的1位除法方案。即多次执行“减法-移位”操作来实现,并使用计数器来控制移位次数由于串行除法器速度太慢,已被淘汰
阵列除法器不仅所需的控制线路少,而且能提供令人满意的高速运算。
阵列除法器有多种多样形式,如不恢复余数阵列除法器,补码阵列除法器等等。
可控加法/减法(CAS)单元
可控加法/减法(CAS)单元将用于并行除法流水逻辑阵列中,它有四个输出端和四个输入端。
当输入线P=0时,CAS作加法运算;当P=1时,CAS作减法运算
CAS单元的输入与输出的关系可用如下一组逻辑方程来表示
不恢复余数(加减交替法)阵列除法器
假定所有被处理的数都是正小数
在不恢复余数的除法阵列中,每一行所执行的操作究竟是加法还是减法,取决于前一行输出的符号与被除数的符号是否一致。当出现不够减时,部分余数相对于被除数来说要改变符号。这时应该产生一个商位“0”,除数沿对角线右移,然后加到下一行的部分余数上。当部分余数不改变它的符号时,即产生商位“1”,下一行的操作应该是减法。
阵列除法器分析:
该阵列除法器是用CAS单元所组成的流水阵列来实
现的。
一个(n+1)位除(n+1)位的加减交替除法阵列由(n-1)2个CAS单元组成,其中两个操作数(被除数与除数)都是正的。
被除数x是一个6位的小数(双倍长度值):
X =0.X1X2X3X4X5X6
它是由顶部一行和最右边的对角线上的垂直输入线来提供
除数y是一个3位的小数:
y=0.y1y2y3
它沿对角线方向进入这个阵列
这是因为除法中的部分余数的左移,等效的操作是余数保持固定,而将除数沿对角线右移
商q是一个3位的数:
q=0.q1q2q3
它在阵列的左边产生
余数r是一个6位的小数:
r =0.00r3r4r5r6
-它在阵列的最下一行产生
最上面一行所执行的初始操作是减法,因此最上面一
行的控制线P固定置成"1"
减法是用 +[-y]补 运算来实现的,这时右端各CAS单元上的反馈线用作初始的进位输入
每一行最左边的单元的进位输出决定着商的数值。将当前的商反馈到下一行,就能确定下一行的操作。进位输出信号决定下一行的操作将进行加法还是减法。
阵列除法器的运算时间
对不恢复余数阵列除法器来说,在进行运算时,沿着每一行都有进位(或借位)传播,同时所有行在它们的进位链上都是串行连接。
而每个CAS单元的延迟时间为3T单元,因此,对一个2n位除以n位的不恢复余数阵列除法器来说,单元的数量为(n-1)2,考虑最大情况下的信号延迟,其除法执行时间为:
td=(n-1)2×3T
其中n为尾数位数
2.8定点运算器的组成
逻辑运算
逻辑数,指不带符号的二进制数
逻辑非、逻辑加、逻辑乘、逻辑异
逻辑非也称求反,对某数进行逻辑非运算,就是按位求反,常用变量上加一横表示:
逻辑加,对两个数的逻辑加,就是按位求”或“
逻辑乘,就是按位求”与“
也称逻辑与
逻辑异,对两数进行异或,就是按位求它们的模2和,逻辑异又称”按位加“
2.9行波进位的补码加法/减法器
2.10ALU的基本思想
理解74181ALU
和74182CLA
以下为课件摘录,这一部分不好打字,本文章不详细讲解。
ALU:
算术逻辑单元(Arithmetic&logical Unit)是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分。
一位全加器(FA)的逻辑表达式为:
Fi=Ai⊕Bi⊕Ci
Ci+1=AiBi+BiCi+CiAi
将A和B先组合成由控制参数S0,S1,S2,S3控制的组合函数Xi和Yi,然后再将Xi,Yi和下一位进位数通过全加器进行全加。这样,不同的控制参数可以得到不同的组合函数,因而能够实现多种算术运算和逻辑运算。
补充:
算术运算操作是用补码表示法来表示的加
是指算术加
,运算时要考虑进位
符号“+ ”是指“逻辑加
减法是用补码方法进行的,其中数的反码是内部产生的,而结果输出“A减B减1”,因此做减法时需在最末位产生一个强迫进位(加1),以便产生A减B
的结果
A=B
输出端可指示两个数相等,因此它与其他ALU的A=B
输出端按“与”逻辑连接后,可以检测两个数的相等条件
2.11总线
总线是计算机内各部件之间传送信息的公用的一组连线根据
总线所在位置,总线分为内部总线和外部总线两类
内部总线是指CPU内各部件的连线
外部总线是指系统总线,即CPU与存储器、I/O系统之间的连线
按总线的逻辑结构来说,总线可分为单向传送总线和双向传送总线
单向总线,就是信息只能向一个方向传送
双向总线,就是信息可以分两个方向传送,既可以发送数据,也可以接收数据
运算器包括ALU
、阵列乘除器
、寄存器
、多路开关
、三态缓冲器
、数据总线
等逻辑部件
运算器的设计,主要是围绕ALU
和寄存器
同数据总线
之间如何传送操作数和运算结果进行的
在决定方案时,需要考虑数据传送的方便性和操作速度,在微型机和单片机中还要考虑在硅片上制作总线的工艺。
单总线总结:
数据可以在任何两个寄存器之间,或者在任一个寄存器和ALU之间传送
在同一时间内,只能有一个操作数放在单总线上。为了把两个操作数输入到ALU,需要分两次来做,而且还需要A,B两个缓冲寄存器
主要缺点是操作速度较慢
虽然在这种结构中,输入数据和操作结果需要三次串行的选通操作,但它并不会对每种指令都增加很多执行时间,只有在对全都是CPU寄存器中的两个操作数进行操作时,单总线结构的运算器才会造成一定的时间损失。但是由于它只控制一条总线,故控制电路比较简单。
双总线总结:
两个操作数同时加到ALU进行运算,只需一次操作控制,而且马上就可以得到运算结果
两条总线各自把其数据送至ALU的输入端。特殊寄存器分为两组,分别与一条总线交换数据。通用寄存器中的数就可进入到任一组特殊寄存器中,使数据传送更为灵活
ALU的输出不能直接加到总线上去。因为,当形成操作结果的输出时,两条总线都被输入数占据,因而必须在ALU输出端设置缓冲寄存器
假如在总线1,2和ALU输入端之间再各加一个输入缓冲寄存器,并把两个输入数先放至这两个缓冲寄存器,那么,ALU输出端就可以直接把操作结果送至总线1或总线2上去。
三总线总结:
ALU的输入端分别由2条总线供给,ALU的输出与第3三条总线相连。运算操作可以在一步控制内完成。
由于ALU本身有时间延迟,所以打入输出结果的选通脉冲必须考虑到包括这个延迟
总线旁路器,如果一个操作数不需要修改,而直接从总线2传送到总线3,可以通过控制总线旁路器把数据传出,如果一个操作数传送时需要修改,那么就借助于ALU
三总线结构的运算器的特点是操作时间快
2.12浮点运算和浮点运算器
浮点加法、减法运算
步骤
完成浮点加减运算的操作过程大体分为四步:
1.0操作数
的检查
2.比较阶码大小
并完成对阶
3.尾数
进行加或减运算
4.结果规格化
并进行舍入
处理
0操作数
的检查
浮点加减运算过程比定点运算过程复杂。如果判知两个操作数x
或y
中有一个数为0,即可得知运算结果而没有必要再进行后续的一系列操作以节省运算时间
比较阶码大小
并完成对阶
两浮点数进行加减,首先要看两数的阶码是否相同,即小数点位置是否对齐。若二数阶码相同,表示小数点是对齐的,就可以进行尾数的加减运算。若二数阶码不同,表示小数点位置没有对齐必须使二数阶码相同,这个过程叫作对阶要对阶,首先应求出两数阶码Ex和Ey之差,即
△E = Ex - Ey
对阶
:
尾数
进行加或减运算
对阶结束后,即可进行尾数的求和运算。不论加法运算还是减法运算,都按加法进行操作,其方法与定点加减法运算完全一样。
结果规格化
舍入
处理
就近舍入就是通常所说的“四舍五入”例如,尾数超出规定的23位的多余位数字是10010(>10000),多余位的值超过规定的最低有效位值的一半(16),故最低有效位应增1。若多余的5位是01111(<10000),则简单的截尾即可。对多余的5位10000这种特殊情况:若最低有效位为0则截尾;若为1,则向上进一位使其变为0。
朝0舍入,朝数轴原点方向舍入,就是简单的截尾。无论尾数是正还是负,截尾都使取值的绝对值比原值的绝对值小,这种方法容易导致误差积累
朝+∞舍入,对正数,只要多余位不全为0则向最低有效位进1;对负数,则是简单的截尾
朝-∞舍入,对正数,只要多余位不全为0侧简单截尾;对负数,向最低有效位进1
溢出分析
阶码上溢
,超过了阶码可能表示的最大值的正指数值,一般将其认为是 ∞和-∞
阶码下溢
,超过了阶码可能表示的最小值的负指数值,一般将其认为是0
尾数上溢
,两个同符号尾数相加产生了最高位向上的进位,将尾数右移,阶码增1来重新对齐
尾数下溢
,在将尾数右移时,尾数的最低有效位从尾数域右端流出,要进行舍入处理
浮点数的溢出是以其阶码溢出表现出来的
例题:
浮点乘法、除法运算
步骤:
0操作数
检查
阶码
加/减操作
尾数
乘/除操作
结果规格化
及舍入
处理
尾数的运算:
第一种简单方法是,无条件地丢掉正常尾数最低位之后的全部数值。这种办法被称为截断处理,好处是处理简单,缺点是影响结果的精度。
第二种简单办法是,运算过程中保留右移中移出的若干高位的值,最后再按某种规则用这些位上的值修正尾数,这种处理方法被称为舍入处理。
舍入处理
当尾数用原码表示时:
方法一:只要尾数的最低位为1,或移出的几位中有为1的数值位,就使最低位的值为1
方法二:0舍1入法,即当丢失的最高位的值为1时,把这个1加到最低数值位上进行修正,否则舍去丢失的各位的值
2.14流水线原理
为了实现流水,首先必须把输入的任务分割为一系列的子任务,使各子任务能在流水线的各个阶段并发地执行,将任务连续不断地输入流水线,从而实现了子任务的并行
流水处理大幅度地改善了计算机的系统性能,是在计算机上实现时间并行性的一种非常经济的方法。
在流水线中,原则上要求各个阶段的处理时间都相同若某一阶段的处理时间较长,势必造成其他阶段的空转等待。因此对子任务的划分,是决定流水线性能的一个关键因素,它取决于操作部分的效率、所期望的处理速度,以及成本价格等假定作业T被分成k个子任务,可表达为
T={T1,T2,……Tn}
各个子任务之间有一定的优先关系;若i<j,则必须在T完成以后,T才能开始工作。具有这种线性优先关系的流水线称为线性流水线。
例题:
第三章 存储系统
3.1 存储系统概述
存储器的存储结构
程序的局部性
在某一段时间内,频繁访问某一局部的存储器地址空间,而对范围以外的地址空间很少访问
时间局部性
:最近被访问的信息很可能还要被访问
空间局部性
:最近被访问的临近地址的信息也可能被访问
存储介质:主要采用半导体器件和磁性材料
存储位元:存储一位二进制代码,是存储器中最小的存储单位
由若干个存储位元组成一个存储单元
由许多存储单元组成一个存储器
存储器的分类
从存储介质上区分,可分为半导体存储器、磁性材料存储器、光存储器。
从存取方式 上区分,可分为随机存取存储器
、顺序存取存储器
、半顺序(直接)存取存储器
。
从读写功能上区分,可分为随机存取存储器(RAM)
和只读存储器(ROM)
从信息易失性上区分,可分为易失性存储器
、非易失性存储器
。
从与CPU的耦合程度上区分,可分为内部存储器和外部存储器,其中内部存储器又包括主存
,高速缓冲存储器
。
主存的分类:
存储器的编址和端模式
字存储单元:存放一个机器字的存储单元,相应的单元地址称为字地址
。
字节存储单元:存放一个字节的单元,相应的地址称为字节地址
。
按字寻址的计算机:计算机编址的最小单位是字存储单元
。
按字节寻址的计算机:计算机编址的最小单位是字节
。
一个机器字可以包含数个字节
一个存储单元也可以包含数个字节
端模式,端模式分为大端方式和小端方式
存储器的技术指标
存储系统的主要内容
3.2 静态随机存取存储器
基本的静态存储元阵列
存储器芯片的基本结构
基本的静态存储元阵列
SRAM*(静态随机存取存储器)存储元电路
单译码方式的RAM:
一根字选择线直接选中一个存储单元的各位,只用一个地址译码器
结构:存储容量M=W行×B列,有一根公用的字选择线W,每一列对应字线中的一位
优点:结构简单,速度快,适用于小容量M
缺点:外围电路多、成本昂贵,结构不合理
双译码方式的RAM
将地址分成X向和Y向两部分,二级译码
第一级进行X向(行译码)和Y向(列译码)的独立译码
在存储元阵列中完成第二级的交叉译码
需要X向和Y向两个译码器,适用于大容量存储器
单译码方式和双译码方式的对比
一个32K×8位的存储单元矩阵,32K=215,共需要15位地址线
- 若采用单译码法产生地址译码,则地址译码器输出为215根线,用以选择215个不同的存储单元
- 若采用双地址译码法,将15位地址分为X、Y两组, X为8位地址,Y为7位地址,利用X译码器输出与Y译码器输出的交叉选择,同样可以确定215个不同的存储单元。而两个译码器的输出,总共仅有: 28 +27 =256+128=384根
3.3基本动态存储器
一个DRAM(动态存储器)存储元的写操作过程
读和刷新的过程
DRAM芯片的刷新
DRAM
必须进行定期的刷新
DRAM
芯片内部有刷新电路
一次刷新选中一行中的所有存储位元
刷新操作与读操作类似,只是无须送出数据
刷新方式:
- 集中式
- 分散式
集中式刷新
特点:
(1)对芯片的正常读/写周期不产生影响
(2)会造成芯片“死时间”过长的问题
分散式刷新-方法1
将每一行的刷新插入到正常的读/写周期之中,有两点缺陷:
(1)增加了系统周期,进而降低了系统速度
(2)刷新过于频繁
分散式刷新-方法2(异步式刷新)
是前两种方式的结合,2ms内分散地把128行刷新一遍:
2000μs÷128≈15.5 μs,即每隔15.5 μs刷新一行
SRAM与DRAM的比较
SRAM:读写速度快,生产成本高,多用于容量较小的高速缓冲存储器。
DRAM:读写速度较慢,集成度高,生产成本低,多用于容量较大的主存储器。
存储器容量的扩充
多个存储器芯片组成足够容量的存储器
扩展方法:位扩展、字扩展和字位同时扩展
所需芯片数为:d=设计要求的存储器总容量 / 已知芯片存储器容量
CPU与存储器的连接
位扩展
只加长每个存储单元的字长,而不增加存储单元的数量
接线方式:选定芯片的地址、片选、读/写控制信号线公用,数据线单独分开连接
例:2片1K×4位的SRAM2114芯片扩展组成1K×8位的存储器
字扩展
给定的芯片存储容量较小(字数少),不满足设计要求的总存储容量,此时需要进行字扩展
连接方式:选定芯片的地址、数据、读/写控制信号线公用,由地址总线的高位译码产生片选信号,让各个芯片分时工作
例:4片16K×8位的SRAM芯片扩展组成64K×8位的存储器
字扩展时的地址分析
字和位同时扩展
既增加存储字的数量,又增加存储字长
先进行位扩展,再进行字扩展
例:用1K×4位的2114芯片组成2K×8位的存储器,共需4片
例题:
设有一个具有20位地址和32位字长的存储器,问:
- 该存储器能存储多少个字节的信息?
- 如果该存储器由512k*8位SRAM芯片组成,需要多少片?
- 需要多少位地址作芯片选择?
提高DRAM的访问速度
Fast Page Mode DRAM 快速页模式动态存储器
快速页模式动态存储器,它是根据程序的局部性原理来实现的
页:某一行中的所有存储单元
快速页模式允许在选定的行中对每一个列地址进行连续的读操作或写操作
典型时序:6-3-3-3
Extend Data Out DRAM 扩展数据输出动态存储器
数据输出阶段和列地址阶段重叠:在第一个数据输出的阶段可以通过外部地址总线给出第二个数据的列地址
典型时序:5-2-2-2
Burst Extend Data Out DRAM 突发式动态存储器
突发式EDO DRAM
Burst(猝发):在存储器同一行中对相邻的存储单元进行连续访问的方式
内置列地址计数器,节约外部总线传输列地址的时间
典型时序:5-1-1-1
高效的DRAM结构
同步DRAM(SDRAM)
SDRAM自带时钟控制信号,与系统总线频率同步,它与CPU的数据交换同步于外部的系统时钟信号,并且以CPU/存储器总线的最高速度运行,而不需要插入等待状态。
SDRAM内含交错的存储阵列,当CPU从一个存储阵列访问数据的同时,另一个已准备好读写数据,通过两个存储阵列的紧密切换,读取效率得到成倍提高,较新的SDRAM
的存储速度高达几个纳秒。
异步DRAM和SDRAM
双倍数据率SDRAM(DDR SDRAM)
内部采用2路预取机制,能够在时钟的上升沿和下降沿分别进行两次数据传输
DDR2
:4路预取
DDR3
:8路预取
DDR4
:16路预取
CDRAM 带高速缓冲存储器(cache)的动态存储器
在DRAM
芯片上集成了一个SRAM
实现的小容量高速缓冲存储器,从而使DRAM芯片的访问速度得到显著提升
CDRAM的优点
- 突发操作速度高
- 在SRAM读出期间可同时对DRAM阵列进行刷新
- 芯片内的数据输出路径与输入路径是分开的,允许在写操作的同时启动同一行的读操作
CDRAM存储模块
一片CDRAM的容量为1M×4位,8片这样的芯片可组成1M×32位(4MB)的存储模块
DRAM主存读/写的正确性校验
DRAM通常用做主存储器,为保证读写操作的正确性与可靠性,除了正常的数据位宽度,还增加了附加位,用于读/写操作正确性校验,增加的附加位也要同数据位一起写入DRAM中保存
3.4 只读存储器
ROM的分类
掩模ROM(MROM)
存储内容固定的ROM,由掩模工艺一次性制造
一旦MROM芯片做成,其中的代码与数据将永久保存,且不能够进行修改
用于存储广泛使用的具有标准功能的程序或数据,或用户定做的具有特殊功能的程序或数据
读取速度比RAM慢很多
可编程ROM
用户可以写入内容,可编程ROM分有三种:
一次性编程的
PROM
多次编程的光擦可编程ROM
(EPROM)
多次编程的电擦可编程ROM
(E2PROM)
多次编程的电擦可编程ROM
(E2PROM)
采用电擦除,且擦除速度快
可以按单字节编程和擦除,使用方便
容量比较小,单位成本高
可重复擦除的次数多
用于存储偶尔需要更新的系统配置信息、系统参数、加密保护数据或历史信息等
闪速(FLASH)存储器
闪速(FLASH)存储器
一种高密度、电擦除、非易失性的只读存储器
既有ROM的优点,又有RAM的优点
FLASH存储器:
NOR技术
DINOR技术
AND技术
NAND技术
FLASH详解:
NOR闪存
通常称为线性闪存
可以随机读出任意地址的内容,读出速度高
存储在其中的指令可直接在线执行
可以对单字节或单字进行编程
以区块或芯片为单位执行擦除
接口与SRAM相似,信息存储的可靠性高
适合存储监控程序、引导加载程序、系统配置等
NAND闪存
通常称为非线性闪存
非随机访问
存储在其中的指令不能够直接在线执行
以页为单位进行编程
以块为单位执行擦除
复用总线,接口与传统ROM不同
适用于大容量存储设备,已部分取代了磁介质存储
各种半导体存储器的性能比较
3.5 并行存储器
CPU和主存储器之间速度上的不匹配限制了计算机系统的工作速度
为了提高CPU和主存之间的数据传输率,采用并行技术的存储器
双端口存储器
多模块交叉存储器
双端口存储器
双端口存储器:同一个存储器具有两组相互独立的读写控制线路,是一种高速工作的存储器
两个端口分别具有各自的地址线、数据线和控制线
两个端口可对存储器中任何位置上的数据进行独立的存取操作
无冲突读写控制
当两个端口的地址不相同时,在两个端口上进行读写操作,一定不会发生冲突。当任一端口被选中驱动时,就可对整个存储器进行存取,每一个端口都有自己的片选控制(CE)和输出驱动控制(OE)。读操作时,端口的OE(低电平有效)打开输出驱动器,由存储矩阵读出的数据就出现在I/O线上
有冲突的读写控制
当两个端口同时存取存储器同一存储单元时,便发生读写冲突。为解决此问题,特设置了BUSY标志。在这种情况下,片上的判断逻辑可以决定对哪个端口优先进行读写操作,而对另一个被延迟的端口置BUSY标志(BUSY变为低电平),即暂时关闭此端口。
设置-BUSY标志,采用仲裁逻辑
仲裁原则:
- CE判断: 如果地址匹配且在CE之前有效,则:片
上的控制逻辑在CEL和CER之间进行判断来选择端口 - 地址有效判断: 如果CE在地址匹配之前先有效,
则:片上的控制逻辑在左、右地址间进行判断来选
择获得优先权的端口
左、右端口读写操作的功能判断
多模块交叉存储器
一个由若干个模块组成的主存储器是线性编址的
顺序方式 特点:
(优点)某个模块进行存取时,其它模块不工作,某一模块出现故障时,其它模块可以照常工作,通过增添模块来扩充存储器容量比较方便,
(缺点)但各模块串行工作,存储器的带宽受到了限制。
地址在各模块间有两种安排方式:
顺序方式
交叉方式
顺序方式
每一个模块内的地址是连续的
高位地址选择不同的模块,低位地址指向模块内存储字
某个模块进行存取时,其他模块不工作
某一模块出现故障时,其他模块可以照常工作
扩充存储器容量比较方便
各模块串行工作,存储器的带宽受到了限制
交叉方式
连续地址分布在相邻的不同模块内,同一个模块内的地址都是不连续的
低位地址选择不同的模块,高位地址指向模块内的存储字
连续字的成块传送可实现多模块流水式并行存取,可大大提高存储器的带宽
多模块交叉存储器的基本结构
每个模块各自以等同的方式与CPU传送信息
CPU同时访问4个模块,由存储器控制部件控制它们分时使用数据总线进行信息传递
是一种并行存储器结构
交叉存取度
交叉存储器要求其实际模块数必须大于或等于m,以保证启动某模块后经mτ时间再次启动该模块时,它的上次存取操作已经完成。这样,连续读取m个字所需的时间为:
t1=T+(m-1)τ
顺序方式存储器连续读取m个字所需时间为t2=mT
Pentium的64位存储结构
Pentium采用64位数据总线和32位地址总线
8个8位存储体,支持64/32/16/8位数据读写
对于多字节数据,如果保存在主存中符合地址对齐原则,则能够一次完成读写
– 2字节(16位)数据保存于被2整除的地址(偶地址)
– 4字节(32位)数据保存于被4整除的地址(模4地址)
– 8字节(64位)数据保存于被8整除的地址(模8地址)
3.6 cache存储器
cache介绍与基本原理
cache 高速缓冲存储器
为了解决CPU和主存之间速度不匹配而采用的一项重要技术
介于CPU和主存之间的小容量高速缓冲存储器
基于程序访问的局部性原理
能高速地向CPU提供指令和数据
全部功能由硬件实现,对程序员透明
CPU与cache之间的数据交换以字为单位,cache与主存之间的数据交换是以块为单位,一个块由若干字组成。
cache原理图:
cache的命中率
在一个程序执行期间,设Nc表示cache
完成存取的总次数,Nm表示主存完成存取的总次数,h定义为命中率,则有:
cache的平均访问时间
若tc表示命中时的cache访问时间,tm表示未命中时的主存访问时间,(1-h)表示未命中率,则cache/主存系统
的平均访问时间ta为:
cache的访问效率
设r=tm/tc表示主存慢于cache
的倍率,e表示访问效率,则有:
例题:
cache的结构
Cache
的数据块称为行(线Line
,槽Slot
)
用Li表示,其中i=0,1,…,m-1,共有m=2r行
主存
的数据块称为块(Block
)
用Bj表示,其中j=0,1,…,n-1,共有n=2s块
行与块是等长的,每行(块)包含k个主存字
Cache
由数据存储器和标签存储器组成
数据存储器:保存数据
标签存储器:保存数据所在主存的地址信息
cache的设计原则
- cache的命中率尽可能高
- cache对CPU而言是透明的
主存与cache的地址映射
应用某种方法把主存地址定位到cache中,称为地址映射
当CPU访问主存时,所给出的内存地址会自动变换成cache
地址,即cache
地址变换
地址映射方式
直接映射(direct):每个主存块映射到 cache 的固定行中。
全相连映射(full associate):每个主存块映射到 cache 的任意行中。
组相连映射(set associate):每个主存块映射到 cache 的固定组的任意行中。
全相联映射方式
使主存的一个块直接拷贝到cache中的任意一行上
优点:非常灵活,cache空间的利用率高,cache的块冲突概率低
缺点:地址变换速度慢,成本高,只适合于小容量cache采用
直接映射方式
一种多对一的映射关系
一个主存块只能拷贝到cache的一个特定行位置上cache的行号 i 和主存的块号 j 有如下关系:
i= j mod m
(m为cache中的总行数)
优点:硬件简单,成本低,地址变换速度快
缺点:易发生冲突,适合于需要大容量cache
的场合
组相联映射方式
前两种方式的结合
将cache分成u组,每组v行
主存块与cache组之间采用直接映射方式,而每个组内部的行之间则采用全相联映射方式,即主存块可以存放到固定组的任一行中
cache
组号q与主存块号j的关系为:
q=j mod u
(2/4/8/16路组相联映射使用较多)
例题:
有一主存—Cache层次的存储器,其主存容量1MB,Cache容量64KB,每个数据块的大小为8KB,若采用直接映射方式,请问:
① 内存可以划分为多少块?
② Cache可以划分为多少行?
③ 写出内存地址格式,标出各字段的位数。
④ 主存地址为25301H,问它在主存的哪一块?
⑤ 其映射到Cache是哪一行?
cache的替换策略
cache工作原理要求它尽量保存最新数据,必然要产生替换
直接映射
的cache
,不涉及替换算法
全相联
和组相联cache
, 就要从允许存放新主存块的若干特定行中选取一行换出
常用替换算法
最不经常使用(LFU)算法
近期最少使用(LRU)算法
随机替换
最不经常使用(LFU)算法
将一段时间内被访问次数最少的那行数据换出
每行设置一个计数器,从0开始计数,每访问一次,被访行的计数器增1。当需要替换时,将计数值最小的行换出,同时将这些行的计数器都清零
该算法将计数周期限定在对两次替换之间的间隔时间内,不能严格反映近期访问情况
近期最少使用(LRU)算法
将近期内长久未被访问过的行换出
每行也设置一个计数器,cache每命中一次,命中行计数器清零,其它各行计数器增1。当需要替换时,将计数值最大的行换出
保护了刚拷贝到cache中的新数据行,有较高的命中率,应用广泛, 但实现的硬件较复杂
2路组相联LRU算法的实现
简化实现,不需要计数器,只需要一个二进制位
规定一组中的A行复制进新数据可将此位置“1”,B行复制进新数据可将此位置“0”。当需要替换时,检查此二进制位状态,为0换出A行,为1换出B行,实现了保护新行的原则。
4路组相联LRU算法的示意
例题:
假设某计算机按字编址,cache有4行,cache和主存之间交换的块大小为1个字,若cache的内容初始为空,采用2路组相联映射和LRU替换策略,访问的主存地址依次是0,4,8,1,0,3,8,3,4,8时,命中cache的次数_____次。
A 1
B 2
C 3
D 4
随机替换
从特定的行位置中随机地选取一行换出
在硬件上容易实现,且速度也比前两种策略快
降低了命中率和cache工作效率
cache的写操作策略
cache
内容是主存部分内容的拷贝,应当与主存内容保持一致
写操作策略
写回法(write back, copy back)
全写法(write through)
写一次法(write once)
写回法
当CPU写cache命中时,只修改cache的内容,而不立即写入主存;只有当此行被换出时才写回 主存
若写未命中,则将此块整个拷贝到cache后对其进行修改
可减少访问主存的次数,但存在不一致性的隐患
实现这种方法时,每个cache行必须配置一个修改位,以反映此行是否被CPU修改过
全写法
当写cache命中时,cache与主存同时发生写修改,较好地维护了cache与主存内容的一致性
当写cache未命中时,直接向主存进行写入
cache中每行无需设置一个修改位以及相应的判断逻辑
缺点是降低了cache的功效
写不分配法: 把所要写的字写入主存,而包括所写的字在内的块不写入cache
写分配法: 把所要写的字写入主存,而包括所写的字在内的块写入cache
写一次法
基于写回法并结合全写法的写策略
写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存
便于维护系统全部cache
的一致性
使用多级cache减少缺失损失
高性能处理器可支持附加一级的cache
二级的cache,位于处理器芯片内或是位于处理器芯片外单独的一组SRAM
当访问主一级cache缺失后就会访问二级cache
例题:
现有一处理器,基本CPI为1.0,所有访问在第一级cache中命中,时钟频率为5GHz。假定访问一次主存储器的时间为100ns,其中包括所有的缺失处理。
设平均每条指令在第一级cache中所产生的缺失率为2%。如果增加一个二级cache,命中或缺失的访问时间都为5ns,而且容量大到可使必须访问主存的缺失率减为0.5%,问处理器速率提高多少?
解:
必须访问主存储器的缺失损失为
100ns/(0.2ns/时钟周期)=500个时钟周期
只有一级cache的机器有效CPI由下式给出:
总的CPI=基本CPI+每条指令中存储器停顿的时钟周期
对只有一级cache的本例中处理器来说:
总的CPI=1.0+每条指令中存储器停顿的时钟周期=1.0+2%×500=11.0
对二级cache,主cache(第一级cache)中发生缺失后可以被第二级cache或者主存处理,访问第二级cache的缺失损失为:
5ns/(0.2ns/时钟周期)=25个时钟周期
如果二级cache能处理全部缺失,那么这就是整个的缺失损失。如果缺失要求访问主存储器,那么总的缺失损失为访问二级cache和访问主存储器的时间之和。
对一个二级的cache而言,总的CPI 为基本CPI和两级cache停顿的时钟周期之和:
总的CPI=1+每条指令的一级停顿+每条指令的二级停顿=1+2%×25+0.5%×500=1+0.5+2.5=4.0
有二级cache的处理器性能是没有二级cache的处理器性能的2.8倍,即
11.0÷4.0≈2.8倍
3.7 虚拟存储器
虚拟存储器的定义和原理
在虚存管理中,虚拟地址空间是指逻辑地址空间,实地址空间是指物理地址空间;前者的大小受机器的指令地址长度的限制,而后者的大小受物理内存大小的限制。
工作在虚拟地址模式下的CPU理解虚拟地址,并将他们转换成物理地址。
虚存的访问过程
虚存空间的用户程序按照虚地址编程并存放在辅存中。
程序运行时,由地址变换机构依据当时分配给该程序的实地址空间把程序的一部分调入实存。
虚地址空间与实地址空间的关系
每个程序的虚地址空间可以远大于实地址空间
目的是提高存储容量
每个程序的虚地址空间也可以远小于实地址空间
在多用户或多任务系统中,单个任务并不需要很大的地址空间,较小的虚存空间则可以缩短指令中地址字段的长度
虚拟存储器是概念模型,不是实际的物理存储器
cache与虚存的相同点
出发点相同
:二者都是为了提高存储系统的性能价格比而构造的分层存储体系,都力图使存储系统的性能接近高速存储器,而价格和容量接近低速存储器
原理相同
:都是利用了程序运行时的局部性原理把最近常用的信息块从相对慢速而大容量的存储器调入相对高速而小容量的存储器
cache与虚存的不同点
侧重点不同
:cache主要解决主存与CPU的速度差异问题,虚存主要是解决存储容量问题
数据通路不同
:CPU与cache和主存之间均有直接访问通路,而虚存所依赖的辅存与CPU之间不存在直接的数据通路
透明性不同
:cache对系统程序员和应用程序员均透明,虚存对系统程序员不透明,只对应用程序员透明
未命中时的损失不同
:主存未命中时虚存系统的性能损失要远大于cache未命中时的损失。
虚存机制要解决的关键问题
调度问题
:决定哪些程序和数据应被调入主存
地址映射问题
:在访问主存时把虚地址变为主存物理地址,在访问辅存时把虚地址变成辅存的物理地址
替换问题
:决定哪些程序和数据应被调出主存
更新问题
:确保主存与辅存的一致性
主存-辅存层次的基本信息传送单位
主存-外存层次的基本信息传送单位可采用几种不同的方案:
– 段
– 页
– 段页
段式管理
段
:按照程序的自然分界划分的长度可以动态改变的区域
段式管理
:主存-辅存系统的基本信息传送单位是段
优点
:段的逻辑独立性使之易于编译、管理、修改和保护,便于多道程序共享,段长可变,便于有效利用主存空间
缺点
:主存空间分配比较麻烦,容易在段间留下许多外碎片,必须通过求和运算求得物理地址
页式管理
页
:主存物理空间中划分出来的等长的固定区域
页式管理
:主存-辅存系统的基本信息传送单位是定长的页
优点
:页长固定,方便构造页表,易于管理,不存在外碎片
缺点
:页长与程序的逻辑大小无关,不利于编程的独立性,换入换出处理、存储保护、存储共享比较麻烦
段页式管理
段页式
:采用分段和分页结合的方法,程序按模块分段,段内再分页,进入主存以页为基本信息传送单位,用段表和页表进行两级定位管理
优点
:综合了段式和页式管理方式的特点
缺点
:需要多次查表过程
页式虚拟存储器
逻辑页
:页式虚拟存储系统中,虚拟空间被分成的页
物理页
:主存空间分成的同样大小的页
虚存地址
:
实存地址
:
页表示意图
内页表和外页表
内页表
:虚地址到主存物理地址的变换表
外页表
:虚地址与辅存地址之间的变换表
当主存缺页时,调页操作首先要定位辅存
外页表通常放在辅存中,在需要时可调入主存
当主存不命中时,由存储管理部件向CPU发出“缺页中断”,进行调页操作
引入转换后援缓冲器(TLB)
把页表中最活跃的部分存放在由高速存储器
组成的快表(TLB)
中
保存在主存中的完整页表称为慢表
TLB通常由相联存储器实现,容量比慢表小很多,存储慢表中部分信息的副本,可完成硬件高速检索操作
虚拟存储器、TLB和Cache的协同操作
虚拟存储器和Cache系统如同一个层次结构一起工作
操作系统在管理该层次结构时起到关键作用
当把某一页移到磁盘时,该页的全部内容从Cache中删去,同时,操作系统修改页表和TLB
最好的情况下,虚拟地址由TLB进行转换,然后被送到Cache,找到正确的数据并取回处理器
最坏的情况下,TLB、页表和Cache三个组成部分都产生缺失
例题:
由页式虚拟存储器、TLB和Cache组成的存储器层次机构中,访问存储器可能会遇到三种不同类型的缺失:Cache缺失、TLB缺失和缺页。研究这三种缺失会发生一个或多个时的所有可能的组合(7种可能性)。
对每种可能性,说明这种情况是否真的会发生,在什么条件下发生?
段式虚拟存储器
以段为基本单位构造的虚拟存储器
虚拟地址:
虚拟地址变换成实主存地址,需要通过段表。
段页式虚拟存储器
段页式虚拟存储器:是将段式虚拟存储器和页式虚拟存储器结合的一种管理方式。把程序按逻辑单位分段以后,再把每段分成固定大小的页
程序对主存的调入调出按页面进行,它又可按段实现共享和保护,兼备页式和段式的优点
缺点: 是在映象过程中需要多次查表
段页式虚拟存储器的定位过程
每道程序是通过一个段表和一组页表来进行两级再定位
段表中的每个表目对应一个段,每个表目有一个指向该段的页表起始地址
页表指明该段各页在主存中的位置以及是否已装入、已修改等状态信息
段页式虚拟存储器的虚地址
一个虚地址由段号
、段内页号
和页内偏移量
构成
多任务系统中,操作系统还会在每个虚地址前面增加一个基号
基号表明该程序在系统中的序号,由它指明该道程序的段表起始地址
地址变换总结
地址过程中,只有在段表和页表的表项中,相应有效位为1时才能进行转换操作,否则需要中断 进行建表或调页
段页式虚拟存储器在由虚地址向主存地址的映射过程中需多次查表,实现复杂度较高
当一个页表的大小超过一个页面的大小时,页表可能需要分为几个页,形成二级页表层次:页目录表、页表
虚存的替换算法
虚拟存储器中的页面替换策略和cache中的行替换策略
有三点不同:
⑴ cache的替换全部靠硬件实现,而虚存的替换有操作系统的支持
⑵ 虚存缺页对系统性能的影响比cache未命中大得多
⑶ 虚存页面替换的选择余地很大,属于一个进程的页面都可替换
常用算法有:FIFO算法
、LRU算法
、LFU算法
替换算法的实现方案
虚拟存储器中的替换策略一般采用近期最少使用(LRU)算法、最不经常使用(LFU)算法、先进先出(FIFO)算法,或将两种算法结合起来使用
对于将被替换出去的页面,假如该页调入主存后没有被修改,就不必进行处理,否则就把该页重新写入外存,以保证外存中数据的正确性。为此,在页表的每一行应设置一修改位
存储管理部件MMU
Memory Management Unit(MMU)
:进行虚实地址转换的核心部件
功能:完成虚实地址转换、维护TLB的控制机制、负责存储保护、发起中断、维护TLB失效后的再填充机制
工作流程:CPU发出访存的虚拟地址后,MMU访问主存页表,获得映射关系;若主存命中,则虚实转换,产生物理地址;若主存缺页,由操作系统进行调页操作
第四章 指令系统
4.1 指令系统的发展和性能要求
指令的概念
计算机的程序是由一系列的指令组成的
指令
:要计算机执行某种操作的命令
指令:
微指令
:微程序级的命令,属于硬件
宏指令
:由若干条机器指令组成的软件指令,属于软件
机器指令
:介于微指令与宏指令之间,简称指令,每条指令可完成一个独立的算术运算或逻辑运算
指令系统
是一台计算机中所有指令的集合
决定计算机的基本功能,软件与硬件的界面
计算机系统设计的一个核心问题
ISA:Instruction Set Architecture 指令集结构
指令系统的发展过程
- 50年代,指令系统只有定点加减、逻辑运算、数据传送、转移等十几至几十条指令
- 60年代后期,增加了乘除、浮点、十进制、字符串处理等指令,指令数目多达一二百条,寻址方式也趋多样化,开始出现系列计算机
- 70年代末期,大多数计算机的指令系统多达几百条,称这些计算机为复杂指令系统计算机(
CISC
Complex Instruction SetComputer)
精简指令系统计算机(RISC
Reduced Instruction Set Computer)
指令系统的性能要求
指令系统的性能决定了计算机的基本功能,它不仅与计算机的硬件结构紧密相关,而且直接关系到用户的使用需要
完备性
有效性
规整性
兼容性
指令系统的完备性
完备性
:用汇编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件来实现
要求:功能齐全、使用方便
指令系统的有效性
有效性
:利用该指令系统所编写的程序能够高效率的运行
表现:程序占据存储空间小、执行速度快
指令系统的规整性
规整性
:规整性包括指令系统的对称性
、匀齐性
、一致性
对称性
:指在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式
匀齐性
:指一种操作性质的指令可以支持各种数据类型
指令格式和数据格式的一致性
:指令长度和数据长度有一定的关系,以方便处理和存取
指令系统的兼容性
兼容性
:系列机各机种上基本软件可以通用
向上兼容
:低档机上运行的软件可以在高档机上运行
低级语言与硬件结构的关系
低级语言分为机器语言(二进制语言)和汇编语言(符号语言)
低级语言都是面向机器的语言,和具体机器的指令系统密切相关
高级语言与低级语言的性能比较
4.2 指令格式
指令字(简称指令)
:表示一条指令的机器字
指令格式
:指令字用二进制代码表示的结构形式
操作码字段OC
:表征指令的操作特性与功能
地址码字段AC
:指定参与操作的操作数的地址
地址码
地址码字段的基本信息
- 操作数或操作数的地址
- 存放运算结果的地址:
寄存器编号
主存地址
I/O地址
不同操作数的指令:
三地址指令
二地址指令
一地址指令
零地址指令
三地址指令
A1: 源操作数地址
A2 :目的操作数地址
A3 :存放结果的地址
功能: (A1) OP (A2) → A3
二地址指令
A1:源/目的操作数地址
A2:目的/源操作数地址
功能:
(A1) OP (A2) → A1
(A1) OP (A2) → A2
二地址指令的三种类型
二地址指令:
存储器-存储器(
SS
)型
寄存器-寄存器(RR
)型
寄存器-存储器(RS
)型
一地址指令
A:指定一个操作数
功能:
OP (A) → A
(AC) OP (A) → AC
(AC隐含约定累加器)
零地址指令
功能: 不需要操作数的指令,如:空操作、停机单操作数指令,隐含约定操作数在累加器中双操作数指令,用于堆栈。
操作码
指明指令操作性质的命令码,提供指令的操作控制信息
操作码必须有,且必须是独一无二的位组合
指令的个数m与操作码的位数n,必须满足:m≤2n
可采用定长操作码,也可采用可变长度操作码(扩展操作码)
定长操作码举例
例:某指令字长16位,具有三地址、二地址、一地址和零地址4类指令,每个地址占4位,采用定长操作码方案,最多可表示多少条指令?
答:24=16条
扩展操作码举例
例:某指令字长16位,具有三地址、二地址、一地址和零地址4类指令,每个地址占4位,要求有15条三地址指令、15条二地址指令、15条一地址指令和16条零地址指令,指令格式如何设计?
注意:1,不允许短码是长码的前缀
2,各条指令的操作码一定不能重复
例题:
指令字长度
指令字长度
:一个指令字中二进制代码的位数
机器字长
:计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度
单字长指令
:指令长度等于机器字长度
半字长指令
:指令长度等于半个机器字长度的指令
双字长指令
:指令长度等于两个机器字长度的指令
多字长指令:
使用多字长指令
,目的在于提供足够的地址位来解决访问内存任何单元的寻址问题
缺点
:必须两次或多次访问内存以取出一整条指令,降低了CPU的运算速度,又占用了更多的存储空间
等长指令字与变长指令字
等长指令字结构
:一个指令系统中各种指令字长度是相等的
特点:结构简单,且指令字长度是不变的
变长指令字结构
:指令字的长度随指令功能而变化
特点:结构灵活,能充分利用指令长度,但指令的译码及控制较复杂
指令助记符
为了便于书写和阅读程序,每条指令通常用3个或4个英文缩写字母来表示。这种缩写字符叫做指令助记符
8位微型计算机的指令格式
内存按字节编址,所以单字长指令每执行一条指令后,指令地址加1。
双字长指令或三字长指令每执行一条指令时,指令地址要加2或加3,可见多字长的指令格式不利于提高机器速度。
MIPS R4000指令格式
不考,略
ARM指令格式
pentium指令格式
不考,略
4.3 操作数类型
地址数据
:地址实际上也是一种形式的数据
数值数据
:计算机中普遍使用的三种类型的数值数据
①定点整数或定点小数
②浮点数
③压缩十进制数
字符数据
:文本数据或字符串,目前广泛使用ASCII码
逻辑数据
:一个单元中有几位二进制bit组成,每个bit的值可以是1或0
4.4 指令和数据的寻址方式
指令的寻址方式
寻址方式:形成指令或操作数的内存地址的方式
指令寻址方式:用于形成指令在内存中的地址
数据寻址方式:用于形成操作数在内存中的地址
指令的寻址方式
顺序寻址方式
:一条指令接一条指令的顺序进行
程序计数器(又称指令指针寄存器)PC
:计数指令的顺序号
跳跃寻址方式
跳跃
:是指下条指令的地址码不是顺序地由程序计数器PC给出,而是由本条指令给出
程序计数器PC
的内容也必须相应改变,以便及时跟踪新的指令地址
采用跳跃寻址方式,可以实现程序转移或构成循环程序
条件转移
或无条件转移
指令:实现指令的跳跃寻址
操作数寻址方式
操作数的寻址方式
:形成操作数的有效地址的方法
操作数的寻址过程
:把操作数的形式地址,根据寻址方式特征位变换为操作数的有效地址的过程
操作数寻址方式的类型
- 隐含寻址
- 立即寻址
- 直接寻址
- 间接寻址
- 寄存器寻址
- 寄存器间接寻址
- 偏移寻址
- 段寻址
- 堆栈寻址
隐含寻址
特点
:在指令中不明显地给出操作数的地址
单地址的指令格式,在指令地址字段中,没有指明第二操作数地址,而是规定累加寄存器AC作为第二操作数地址,AC对单地址指令格式来说就是一个隐含地址
例:DIV BL
AX / BL,商存AL中,余数存AH中
立即寻址
特点
:指令的地址字段指出的不是操作数的地址,而是操作数本身
指令中直接给出了操作数,不需要通过访问内存来取数,因而指令执行时间很短
例:指令 MOV AX,100H
100H
就是立即数
直接寻址
特点: 在指令格式的地址字段中,直接给出操作数在内存的地址A
指令字中的形式地址A,就是操作数的有效地址EA
,通常把形式地址A又称为直接地址
用D表示操作数,那么直接寻址的表达式为:D=(A)
例如: MOV AX,[3000H]
间接寻址
特点:形式地址A不是操作数D的真正地址,而是操作数地址的指示器,即:A的内容才是操作数的有效地址
直接寻址和间接寻址结合起来,有如下形式:
寻址特征位 I
I=0,直接寻址,有效地址:EA=A
I=1,间接寻址,有效地址:EA=(A)
间接寻址示意图
寄存器寻址
特点
:操作数不放在内存中,而是放在通用寄存器中
指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号
例如,指令: ADD R0,R1;
(R0)+(R1)→ R0 (操作数在寄存器中)
寄存器间接寻址
特点:
指令中指定的寄存器中的内容不是操作数,而是操作数的地址,即:EA =(R)指明的操作数是在内存中!
示意图:
偏移寻址
直接寻址和寄存器间接寻址的结合
有效地址:EA=A+(R)
要求指令中有两个地址字段,至少其中一个是显式的
三种类型
–相对寻址
–基址寻址
–变址寻址
相对寻址
特点:把程序计数器PC的内容加上指令中给出的形地址A,进而形成操作数的有效地址
即: EA =A+(PC)
形式地址A称为偏移量,其值可正可负,有效地址是当前指令地址(当前PC值)的一个上下范围的偏移
便于程序在内存中成块搬动
基址寻址
特点:将CPU中基址寄存器RB的内容加上指令中给定的形式地址A,而形成操作数的有效地址
即:E=(RB)+A
基址寄存器的位数可以大于形式地址A的位数,从而可以扩大操作数的寻址范围
变址寻址
特点:把CPU中某个变址寄存器RX的内容与偏移量A相加,形成操作数有效地址
即:EA=(RX)+A
形式地址A给出基准地址,Rx给出偏移量,为重复操作的完成提供一种有效机制
段寻址方式
微型机中采用了段寻址方式,其实质还是基址寻址基地址就是CPU中的段寄存器
特例:
如何在16位机中形成20位的地址,从而获得1MB存储空间的直接寻址能力?
将整个1MB空间存储器按照最大长度64KB为单位划分成若干段。在寻址一个具体的内存单元时,由一个基地址(段寄存器)再加上寄存器提供的16位偏移量来形成实际的20位物理地址。
在形成20位物理地址时,段寄存器中的16位数会自动左移4位,然后与16位偏移量相加,即可形成所需的20位的内存地址
堆栈寻址
堆栈有两种形式:寄存器堆栈
和存储器堆栈
存储原则:先进后出
数据的存取都通过栈顶,需要一个隐式或显式的堆栈指示器(寄存器)
堆栈指令:PUSH、POP
32位的寻址方式
⑴立即数可以是8位,16位,32位。
⑵寄存器地址:一般指令使用8位/16位/32位通用寄存器。对64位浮点数操作,使用一对32位寄存器。少数指令以段寄存器来实施寄存器寻址方式。
⑶偏移量寻址:也称直接寻址,偏移量长度达32位,能用于访问全局。
⑷基址寻址:基址寄存器B是通用寄存器之一,其内容为有效地址。
⑸基址+偏移量寻址:基址寄存器B是32位通用寄存器中任何一个。
⑹比例变址+偏移量寻址:也称为变址寻址方式,变址存器I是32位通用寄存器中除ESP外的任何一个,而且可将此变址寄存器内容乘以1,2,4或8的比例因子S,然后再加上偏移量而得到有效地址。
⑺,⑻两种寻址方式是⑷,⑹两种寻址方式的组合,此时偏移量可有可无。
⑼ 相对寻址:适用于转移控制类指令。用当前指令指针寄存器EIP或IP的内容(下一条指令地址)加上一个有符号的偏移量,形成CS
段的段内偏移。
4.5 典型指令
一个较完善的指令系统,应当有数据处理
、数据存储
、数据传送
、程序控制
四大类。
指令类型:
数据传送类指令
数据运算类指令
程序控制类指令
输入输出类指令
字符串类指令
系统控制类指令
数据传送类指令
最基本的指令类型
一般传送指令
取数、存数、传送
堆栈操作指令
入栈、出栈
数据交换指令
字节交换、字交换
数据运算类指令
计算机必须具有的指令
算术运算类指令
加、减、乘、除、加1、减1、比较
逻辑运算类指令
与、或、非、异或
移位类指令
算术移位、逻辑移位、循环移位
程序控制类指令
指令系统中非常重要的指令
转移指令
无条件转移、条件转移
子程序调用及返回指令
调用指令、返回指令
输入输出类指令
输入输出指令主要用来启动外围设备,检查测试外围设备的工作状态,并实现外部设备和CPU之间,或外围设备与外围设备之间的信息传送
统一编址的机器指令系统中没有输入输出类指令
字符串类指令
字符串传送
字符串转换
字符串比较
字符串查找
字符串抽取
字符串替换
系统控制类指令
特权指令
:具有特殊权限的指令
只用于操作系统或其他系统软件
在多用户、多任务的计算机系统中特权指令是必不可少的
计算机指令系统的分类
CISC
复杂指令系统
RISC
精简指令系统
CISC的主要特点
- 指令系统复杂,指令数量多、寻址方式多、指令格式多
- 绝大多数指令需要多个CPU周期才能执行完成
- 各种指令都可访问存储器
- 采用微程序控制
- 有专用寄存器
- 难以用优化编译生成高效的目标代码程序
CISC举例
CISC(复杂指令集计算机)的指令系统一般多达二三百条指令
VAX11/780计算机有303条指令,18种寻址方式
Pentium机也有191条指令,9种寻址方式
RISC的主要特点
- 简化的指令系统,指令数量少、寻址方式少、指令格式少、指令长度固定
- 只有取数/存数指令访问存储器
- 使用较多的通用寄存器以减少访存
- 采用由阵列逻辑实现的组合电路控制器
- 以流水方式工作,可在一个时钟周期内执行完毕
- 采用优化编译技术,保证流水线畅通,对寄存器分配进行优化
典型RISC机指令系统的基本特征
第五章 中央处理器
5.1 CPU的功能和组成
CPU的功能
中央处理器(Central Processing Unit)
是计算机的核心部件,通常简称为CPU
,控制计算机自动完成取指令和执行指令任务
CPU对整个计算机系统的运行是极其重要的
CPU的基本功能:
指令控制
:程序的顺序控制
操作控制
:产生各种操作信号(微操作信号 )
时间控制
:控制操作信号的有效时间(时序信号发生器 )
数据加工
:对数据进行算术运算和逻辑运算(ALU)
CPU的基本组成
- 控制器
- 运算器
- cache
- 芯片级总线
控制器的主要功能
从指令cache中取出一条指令,并指出下一条指令在指令cache中的位置
对指令进行译码或测试
,并产生相应的操作控制信号,启动规定的动作
指挥并控制CPU、数据cache和输入/输出(I/O)设备之间数据流动的方向
CPU中的主要寄存器
数据缓冲寄存器(DR)
指令寄存器(IR)
程序计数器(PC)
数据地址寄存器(AR)
通用寄存器(R0~R3)
程序状态字寄存器(PSWR)
数据缓冲寄存器(DR)
暂时存放ALU的运算结果,或来自内存或来自I/O接口的一个数据字
作为ALU运算结果和通用寄存器之间的缓冲
补偿CPU和内存、外围设备之间在操作速度上的差别
指令寄存器(IR)和指令译码器ID
IR(Instruction Register)
:保存当前正在执行的一条指令
ID(Instruction Decoder)
:对指令操作码进行测试,以识别所要求的操作
指令寄存器中的操作码字段被送入指令译码器中,经译码后,向操作控制器发出具体操作的特定信号
程序计数器(PC)
PC中存放的是下一条指令在内存中的地址
程序执行前,程序的第一条指令所在的内存单元地址送入PC
顺序执行指令时,PC自增
遇到转移指令时,PC的内容由转移指令来规定
具有信息寄存和计数两种功能
数据地址寄存器(AR)
保存当前CPU所访问的数据存储器地址
采用电位-脉冲
方式,即电位输入端对应数据信息位,脉冲输入端对应控制信号,在控制信号作用下,瞬时将信息打入寄存器
通用寄存器
作用:当运算器需执行算术或逻辑运算时,为ALU提供一个工作区
程序状态字寄存器(PSWR)
又称:状态条件寄存器
保存由算术运算指令和逻辑运算指令运行或测试结果建立的各种条件代码
保存中断和系统工作状态等信息
操作控制器与时序产生器
操作控制器可分为两种类型:
时序逻辑型 ---->硬布线控制器
存储逻辑型 ---->微程序控制器
时序产生器 (Timer Generator,TG
) :
产生并发出计算机所需要的时序控制信号
对各种操作信号实施时间上的控制
5.2 指令周期
指令的执行过程
—读取指令
指令地址送入主存地址寄存器
读主存,读出内容送入指定的寄存器
—分析指令
—按指令规定内容执行指令
不同指令的操作步骤数
和具体操作内容差异很大
—检查有无中断请求
若无,则转入下一条指令的执行过程
形成下一条指令地址
指令周期的概念
指令周期
:CPU从内存取出一条指令并执行完这条指令的时间总和
CPU周期
:又称机器周期,从内存读取一个指令字的最短时间
时钟周期
:又称T周期
或节拍脉冲
,是处理操作的最基本单位,一个CPU周期包含若干个T周期
1个指令周期 = 若干个CPU周期
1个CPU周期 = 若干个时钟周期
MOV指令
MOV是RR型指令,需要两个CPU 周期
在第一个CPU周期,即取指令阶段:
• ① 从指存取出指令
• ② 对程序计数器PC加1,以便为取下一条指令做好准备
• ③ 对指令操作码进行译码或测试,以便确定进行什么操作
在第二个CPU周期,即执行指令阶段,完成两个通用寄存器R0、R1之间的数据传送操作
取指周期
① 程序计数器PC中装入第1条指令地址101(八进制)
② PC的内容被放到指令地址总线ABUS(I)上,对指存进行译码,并启动读命令
③ 从101号地址读出的MOV指令通过指令总线IBUS装入指令寄存器IR
④ 程序计数器内容加1,变成102,为取下一条指令做好准备
⑤ 指令寄存器中的操作码(OP)被译码
⑥ CPU识别出是MOV指令
执行周期
① 操作控制器(OC)送出控制信号到通用寄存器,选择R1(10)作源寄存器,选择R0作目标寄存器
② OC送出控制信号到ALU,指定ALU做传送操作
③ OC送出控制信号,打开ALU输出三态门,将ALU输出送到数据总线DBUS上
④ OC送出控制信号,将DBUS上的数据打入到数据缓冲寄存器DR(10)
⑤ OC送出控制信号,将DR中的数据打入到目标寄存器R0,R0的内容由00变为10
LAD指令
LAD
指令是RS型指令,共需要三个CPU周期
第1个CPU周期为取指令阶段,和MOV指令相同
第2个CPU周期将操作数的地址送往地址寄存器并完成地址译码
第3个CPU周期从内存取出操作数装入通用寄存器
LAD指令的执行周期
① 操作控制器OC发出控制命令打开IR输出三态门,将指令中的直接地址码6放到数据总线DBUS上
② OC发出操作命令,将地址码6装入数存地址寄存器AR
③ OC发出读命令,将数存6号单元中的数100读出到DBUS上
④ OC发出命令,将DBUS上的数据100装入缓冲寄存器DR
⑤ OC发出命令,将DR中的数100装入通用寄存器R1,原来R1中的数10被冲掉
ADD指令
ADD指令是RR型指令,共需要两个CPU周期
第1个是取指周期,与MOV指令相同
第2个是执行周期,执行加操作
ADD指令的执行周期
① 操作控制器OC送出控制命令到通用寄存器,选择R1做源寄存器,R2做目标寄存器
② OC送出控制命令到ALU,指定ALU做R1(100)和R2(20)的加法操作
③ OC送出控制命令,打开ALU输出三态门,运算结果120放DBUS上
④ OC送出控制命令,将DBUS上数据打入缓冲寄存器DR,ALU产生的进位信号保存在状态寄存器PSW中
⑤ OC送出控制命令,将DR(120)装入R2,R2中原来的内容20被冲掉
STO指令
STO指令是RS型指令,共需要三个CPU周期
第1个CPU周期为取指令阶段,和MOV指令相同
第2个CPU周期将操作数的地址(R3)=30送往地址寄存器并完成地址译码
第3个CPU周期将(R2)=120写入到30号单元
STO指令的执行周期
① 操作控制器OC送出操作命令到通用寄存器,选择R3内容(30)做数据存储器的单元地址
② OC发出操作命令,打开通用寄存器输出三态门,将地址30放到DBUS上
③ OC发出操作命令,将地址30打入AR,并进行数存地址译码
④ OC发出操作命令到通用寄存器,选择(R2)=120,作为数存的写入数据
⑤ OC发出操作命令,打开通用寄存器输出三态门,将120放到DBUS上
⑥ OC发出操作命令,将数据120写入数存30号单元,它原来的数据40被冲掉
JMP指令
JMP指令是无条件转移指令,共需要两个CPU周期
第1个CPU周期为取指令阶段,和MOV指令相同
第2个CPU周期将地址101送入程序计数器PC
JMP指令的执行周期
① OC发出操作控制命令,打开指令寄存器IR的输出三态门,将IR中的地址码101发送到DBUS上
② OC发出操作控制命令,将DBUS上的地址码101打入到程序计数器PC中,PC中的原来内容106被更换
*重点题型:CPU参数计算
用方框图语言表示指令周期
在进行计算机设计时,可以采用方框图语言来表示一条指令的指令周期
方框 :代表一个CPU周期,方框中的内容表示数据通路的操作或某种控制操作
菱形 :通常用来表示某种判别或测试,时间上它依附于紧接它的前面一个方框的CPU周期,
不单独占用一个CPU周期
符号“~”代表一个公操作
重点例题:
5.3 时序产生器和控制方式
指令周期 :CPU从内存取出一条指令并执行完这条指令的时间总和
CPU周期 :又称机器周期,CPU从内存读取一条指令字的所需的最短时间
时钟周期 :称为T周期或节拍脉冲,是处理操作的最基本单位,一个CPU周期包含若干个T周期
1个指令周期 = 若干个CPU周期
1个CPU周期 = 若干个时钟周期
思考题:
用二进制码表示的指令和数据都放在内存里,CPU是如何识别出它们是数据还是指令呢?
从时间上来说:
取指令事件发生在指令周期的第一个CPU周期中,取数据事件发生在指令周期的后面几个CPU周期中
从空间上来说:
如果取出的是指令,一定送往指令寄存器IR,如果取出的是数据,一定送往运算器
时序信号
- 时序信号:使计算机准确、迅速、有条不紊地工作
- 时序信号产生器:给计算机各部件提供工作所需的时间标志
- 操作控制器利用定时脉冲的顺序和不同的脉冲间隔,有条理、有节奏地指挥机器的动作
总结:
-
计算机的协调动作需要时间标志,而且需要采用多级时序体制,而时间标志是由时序信号体现的
-
组成计算机硬件的器件特性决定了时序信号最基本的体制:
电位-脉冲制
硬布线控制器的三级时序体制
主状态周期
:
一个触发器的状态持续时间,包含若干节拍电位
节拍电位
:
一个节拍电位表示一个CPU周期的时间
节拍脉冲(T周期)
:
一个节拍电位包含若干个节拍脉冲
三级时序图
微程序控制器的二级时序体制
节拍电位
节拍电位:把一个机器周期分为若干个相等的时间段,每一个时间段对应一个电位信号,称为节拍电位信号
节拍的宽度:取决于CPU完成一次基本操作的时间
工作脉冲
在节拍中执行的有些操作需要同步定时脉冲
节拍内可设置一个或几个工作脉冲,作为各种同步脉冲的来源
工作脉冲的宽度只占节拍电位宽度的1/n,并处于节拍的末尾
CPU周期、节拍电位、节拍脉冲的时序关系
时序信号产生器
微程序控制器中使用的时序信号产生器的组成:
时钟源
环形脉冲发生器
节拍脉冲和读写时序
启停控制逻辑
启停控制逻辑
运行标志触发器Cr的Q=1,使原始信号变为CPU所需的时序信号
运行标志触发器Cr的Q=0,封锁原始信号
总清信号CLR使Cr的Q=0
启停控制逻辑-启动
启动:启动信号为低电平时,在T40的后沿将1打入Cr
启停控制逻辑-停机
停机:停机信号为低电平时,在T40的后沿将0打入Cr
控制方式
控制方式:控制不同操作序列时序信号的方法
-同步控制
-异步控制
-联合控制
同步控制方式
在任何情况下,已定的指令在执行时所需的CPU周期数和时钟周期数都固定不变。
根据不同情况,同步控制方式可选取如下方案:
(1)采用完全统一的机器周期执行各种不同的指令
(2)采用不定长机器周期
(3)中央控制与局部控制结合
完全同步控制方式
采用完全统一的、具有相同时间间隔和相同数目的节拍电位作为机器周期来运行各种不同的指令
采用不定长机器周期
将大多数操作安排在一个较短的机器周期内完成,对某些时间较长的操作,则采取延长机器周期的方法来解决
延长机器周期:
中央控制与局部控制结合
将大部分指令安排在固定的机器周期完成
对少数复杂指令采用另外的时序进行定时
异步控制方式
一般采用两条控制线,即请求
线和回答
线
异步控制方式小结
每条指令、每2个.异操作步控控制信制号方需式要多少时间就占用多少时间
每条指令的指令周期可由多少不等的机器周期数组成
用这种方式形成的操作控制序列没有固定的CPU周期数(节拍电位)或严格的时钟周期(节拍脉冲)与之同步
联合控制方式
同步控制和异步控制相结合的方式
情况1:
大部分操作序列安排在固定的机器周期中,
对某些时间难以确定的操作则以执行部件的“回答”信号作为本次操作的结束
情况2:
机器周期的节拍脉冲数固定,但是各条指令周期的机器周期数不固定
控制器组成总结
• 指令部件
程序计数器PC
指令寄存器
指令译码器
• 时序部件
脉冲源及启停逻辑
时序信号形成部件
控制方式
5.4 微程序控制器
微程序控制原理
微程序控制的基本思想
将微操作控制信号按一定规则进行信息编码形成控制字(微指令),一条机器指令对应一段“程序”该程序存放在控制存储器中,当机器运行时,一条又一条地读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应部件执行所规定的操作因为“程序”的执行结果是实现一条机器指令的功能,所以称为“指令的微程序”
数字计算机可分为控制部件
和执行部件
控制器
运算器、存储器、外围设备(IO设备)
控制部件与执行部件的一种联系,就是通过控制线。控制部件通过控制线向执行部件发出各种控制命令,通常吧这种控制命令叫做微命令
,而执行部件接受微命令后所进行的操作,叫做微操作
。
微命令和微操作
微命令 :控制部件通过控制线向执行部件发出各种控制命令
微操作 :执行部件接受微命令后所进行的操作。
微操作可分为 相容性
和 相斥性
两种
相容性:在同时或同一个 CPU 周期内可以并行执行的微操作
相斥性:不能在同时或不能在同一个CPU 周期内并行执行的微操作
微指令和微程序
微指令 :在机器的一个 CPU 周期中,一组实现一定操作功能的微命令的组合,构成一条微指令
微程序 :微指令序列为微程序
机器指令和微指令的关系:
每条机器指令由一段微指令编程的微程序来解释执行
微指令的基本格式
操作控制
:用来发出管理和指挥全机工作的控制信号
顺序控制
:用来决定如何形成下一条微指令的地址
节拍电位信号和节拍脉冲信号
节拍电位信号
的持续时间都是一个 CPU 周期
节拍脉冲
由环形脉冲发生器产生,一个节拍电位持续时间正好包容若干个节拍脉冲
微程序控制器的组成
控制存储器
:用来存放实现全部指令系统的微程序,是一种高速存储器
微地址
:控存单元的地址
控存的一个单元的内容即控制字代表了某一个节拍的一组微操作控制信号的信息
微程序控制器主要由控制存储器
、微指令寄存器
和 地址转移逻辑
组成
微程序控制器工作过程
实质上就是在微程序控制器
的控制下,计算机执行机器指令的过程
从控存中取出一段取机器指令
用的微程序,称为取指微程序
,该微程序完成从主存中读取机器指令并送往指令寄存器
。
机器指令操作码通过微地址形成部件,产生对应的微程序入口地址,并送入微地址寄存器
。
逐条取出对应的微指令,每一条微指令提供一个微命令序列
,控制有关的微操作。
执行完对应于一条机器指令的一段微程序后,返回到取指微程序的入口,以便取出下一条机器指令。不断重复,直至程序执行完毕。
举例:
假定数
a 和 b 已存放在 R1 和 R2 两寄存器中,数 6 存放在 R3 寄存器中。
算法要求先进行a+b+6 运算,然后判断结果有无进位;当进位标志 Cy=1 不减 6 ,当 Cy=0 ,减 6 ,从而可以获得正确的结果。
可以看到,十进制加法微程序流程图由四条微指令组成,每一条微指令用一个长方框表示。
第一条微指令为“取指”周期。
它是一条专门用来取机器指令的微指令,任务有三:
①从内存取出一条机器指令,并将指令放到指令寄存器R。在我们的例子中,取出的是“十进制加法”指令。
②对程序计数器加1,做好取下一条机器指令的准备。
③对机器指令的操作码用P,进行判别测试,然后修改微地址寄存器内容,给出下一条微指令的地址。
在我们所示的微程序流程图中,每一条微指令的地址用数字示于长方框的右上角。注意,菱形
符号代表判别测试
,它的动作依附于第一条微指令。第二条微指令完成a十b
运算。第三条微指令完成a十b十6运算,同时又进行判别测试。不过这一次的判别标志不是P而是P2,P2用来测试进位标志Cy。根据测试结果,微程序或者转向公操作,或者转向第四条微指令。当微程序转向公操作(用符号~
表示)时,如果没有外围设备请求服务,那么又转向取下一条机器指令。与此相应,第三条微指令和第四条微指令的下一个微地址就又指向第一条微指令,即“取指”微指令。
CPU周期与微指令周期的关系
在串行方式的微程序控制器中:
微指令周期=读出微指令的时间+执行该条微指令的时间
为了保证整个机器控制信号的同步,可以将一个微指令周期
设计的恰好和 CPU 周期时间相等
在前600ns 内进行运算,在 600ns 时间末尾运算完毕,T4 上升沿将运算结果打入某个寄存器。同时,用 T4 间隔读取下条微指令,经 200ns 延迟,下条微指令从 ROM 读出,并用 T1 上升沿打入到 μIR 。如果忽略触发器翻转延迟,下一条微指令的微命令信号从 T1 上升沿开始有效,
直到下一条微指令读出后打入 μIR 为止。
总结
- 一条机器指令对应一个微程序,这个微程序是由若干条微指令序列组成的。简言之,一条机器指令所完成的操作划分成若干条微指令来完成,由微指令进行解释和执行。
- 从指令与微指令,程序与微程序,地址与微地址的一一对应关系来看,前者与内存储器有关,后者与控制存储器有关。
- 每一个 CPU 周期对应一条微指令。机器指令和微指令的关系总结
5.5 微程序设计技术
微指令结构的设计目标
有利于缩短微指令字长度
有利于减小控制存储器的容量
有利于提高微程序的执行速度
有利于对微指令的修改
有利于提高微程序设计的灵活性
微命令编码
微指令的一般格式为:
微命令编码,即操作控制字段设计方法:
直接表示法
编码表示法
混合表示法
直接表示法(不译法)
在微指令的操作控制字段中每一个微命令都用一位信息表示,对应于一种微操作。设计微指令时,选用或不选用某个微命令,只要将表示该微命令的相应位设置成 1 或 0 。
优点是简单、直观、执行速度快,微命令的并行控制能力强,编制的微程序短;
缺点是微指令字长
编码表示法(字段编译法)
把一组相斥性
的微命令信号组成一个小组( 即一个字段 ),然后通过小组 (字段)译码器对每一个微命令信号进行译码,译码输出作为操作控制信号。
优点是使微指令字大大缩短
缺点是由于增加译码电路,使微程序的执行速度稍稍减慢
编码的原则
- 相斥性命令分在同一字段内,相容性命令分在不同的字段内 。前者可提高信息位的利用率,缩短微指令字长;后者有利于实现并行操作,加快指令的执行速度。
- 一般将同类操作中互斥的微命令划分在同一个字段中。
- 每个小字段包含的信息位不能太多,一般不超过位,否则将增加译码线路的复杂性和译码时间。
*重点题型:微指令编码格式
例如:
某机器指令系统总共需要256 个微命令
采用直接表示法,微指令的操作控制字段需 256 位
采用编码表示法,如将控制字段分成 4 位一段,共 16段,每个字段经一个译码器输出,可获得 16 个微命令,总共 16 段就可获得 256 个微命令。微指令的操作控制字段仅 64 位。
混合表示法
把直接表示法
与编码表示法
混合使用,以便能综合考虑指令字长、灵活性、执行微程序速度等方
面的要求。在微指令中还可附设一个常数字段。该常数可作为操作数送入 ALU 运算,也可作为计数器初值用来控制微程序循环次数。
微地址的形成方法
根据机器指令操作码找到相应机器指令所对应的微程序的入口地址
后继微地址的产生
计数器方式
多路转移
计数器方式
与用PC 产生机器指令地址的方法相类似
在顺序执行微指令时,后继微地址由现行微地址加上一个增量来产生
在非顺序执行微指令时,必须通过转移方式,使现行微指令执行后,转去执行指定后继微地址的下一条微指令。
优点
:微指令的顺序控制字段较短,微地址产生机构简单
缺点
:多路并行转移功能较弱,速度较慢,灵活性较差
多路转移方式
一条微指令具有多个转移分支的能力称为多路转移。
在多路转移方式中:
- 当微程序 不产生分支 时,后继微地址直接由微指令的
顺序控制字段
给出 - 当微程序 出现分支 时,有若干“后选”微地址可供选择:即按顺序控制字段的
判别测试
标志和状态条件
信息来选择其中一个微地址 - “状态条件”有 n 位标志,可实现微程序 2n 路转移,涉及微地址寄存器的 n 位
特点:能以较短的顺序控制字段配合,实现多路并行转移,灵活性好,速度较快,但转移地址逻辑需要用组合逻辑方法实现
微指令格式
微指令的编译方法是决定微指令格式的主要因素
水平型微指令
垂直型微指令
水平型微指令
一次能定义并执行多个并行操作微命令的微指令
格式如下:
按照控制字段的编码方法不同,水平型微指令分为三种:
1 )全水平型 不译码法 微指令
2 )字段译码法(编码表示法)水平型微指令
3 )直接和译码相混合的水平型微指令
垂直型微指令
在微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能
其结构类似于机器指令的结构
实现一条机器指令的微程序要比水平型微指令编写的微程序长得多,它是采用较长的微程序结构去换取较短的微指令结构
举例:
设:微指令字长为16 位,微操作码 3位。
水平型微指令与垂直型微指令的对比:
- 水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令则较差。
- 水平型微指令执行一条指令的时间短,垂直型微指令执行时间长。
- 由水平型微指令解释指令的微程序,有微指令字较长而微程序短的特点。垂直型微指令则相反。
- 水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说,比较容易掌握。
动态微程序设计
- 静态微程序设计
对应于一台计算机的机器指令只有一组微程序,这一组微程序设计好之后,一般无须改变而且也不好改变 。 - 动态微程序设计
采用E2PROM 作为控制存储器,可以通过改变微指令和微程序来改变机器的指令系统 。因而可在一台机器上实现不同类型的指令系统。这种技术又称为仿真其它机器指令系统。
5.5 硬布线控制器
• 硬布线控制器是早期设计计算机的一种方法。
• 基本思想:把控制部件看作为产生专门固定时序控制信号
的逻辑电路,逻辑电路以使用最少元件
和取得最高操作速度
为设计目标。
• 这种逻辑电路是一种由门电路
和触发器
构成的复杂树形网络
,故称之为硬布线控制器
。
硬布线控制器的设计过程
绘制指令的流程图 :
- 以指令的执行过程为线索,按指令类型分类,将每条指令归纳为一个微操作序列,根据操作的先后顺序画出指令流程图。
- 列出微操作时间表 :把指令流程图中的微操作序列合理地安排在各个机器周期的相应节拍和脉冲中去,使它们在执行的时间上不发生冲突。
- 微操作的逻辑综合 :以每个微操作为单位进行“同类项合并”,就是把不同指令在不同周期状态,不同节拍和不同条件下所需要的同一微操作用逻辑关系式综合起来,然后加以简化使逻辑表达式更为合理。
- 电路实现 :按照最后得到的逻辑表达式组,可用一系列组合逻辑电路加以实现。
微操作的逻辑综合
在硬布线控制器中,某一微操作控制信号由布尔代数表达式
描述的输出函数产生。
设计方法和过程:
根据所有机器指令流程图,寻找出产生同一个微操作信号的所有条件,并与适当的节拍电位和节拍脉冲组合,从而写出其布尔代数表达式并进行简化,然后用门电路或可编程器件来实现。
特别注意 :控制信号是电位有效还是脉冲有效,如果是脉冲有效,必须加入节拍脉冲信号进行相“与”。
硬布线控制器的评价和时序
速度快
电路设计太复杂
增加功能不太可能
采用三级时序
硬布线控制器和微程序控制器的比较1
硬布线控制器与微程序控制器相同之处:
- 根据指令操作码和时序信号,产生各种控制信号,以便正确地建立各种数据通路,完成取指令和执行指令的控制。
- 硬布线控制的优点是由于控制器的速度取决于电路延迟,所以速度较快。
- 硬布线控制的主要缺点是由于将控制部件看成专门产生固定时序控制信号的逻辑电路,所以把用最少元件和取得最高速度作为设计目标。一旦设计完成,不可能通过其他的修改添加新功能。
- 微程序控制的主要优点是,同硬布线控制器相比,具有规整性、灵活性、可维护性等一系列优点。
- 微程序控制的主要缺点是由于微程序控制器采用了存储程序原理,所以每条指令都要从控存中取一次,因此影响了速度。
5.6 流水CPU
并行处理技术
并行性包含两种含义:
同时性:指两个以上事件在 同一时刻 发生;
并发性:指两个以上事件在 同一时间间隔 内发生。
–时间并行
–空间并行
–时间并行+空间并行
流水 CPU 的结构
并行处理技术的三种形式
时间并行
指时间重叠,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。时间并行性概念的实现方式就是采用流水处理部件 。空间并行
空间并行指资源重复,以“数量取胜”为原则来大幅度提高计算机的处理速度。时间并行+空间并行
指时间重叠和资源重复的综合应用,既采用时间并行性,也采用空间并行性
流水计算机的系统组成
现代流水计算机的系统中CPU 按流水线方式组织,通常由三部分组成:指令部件、指令队列、执行部件。这三个功能部件可以组成一个 3 级流水线。
执行部件的配合
为了使存储器的存取时间能与流水线的其他各过程段的速度相匹配,一般都采用多体交叉存器
。
通常采用并行的运算部件以及部件流水线的工作方式来解决 执行段的速度匹配问题 。
- 将执行部件分为定点执行部件和浮点执行部件两个可并行执行的部分, 分别处理定点运算指令和浮点运算指令;
- 在浮点执行部件中,又有浮点加法部件和浮点乘除部件,它们也可以同时执行不同的指令;
- 浮点运算部件都以流水线方式工作。
流水CPU的时空图
为了实现流水,首先把输入的任务或过程 分割为一系列子任务,并使各子任务能在流水线的各个阶段并发地执行。当任务连续不断地输入流水线时,在流水线的输出端便连续不断地吐出执行结果,从而实现了子任务级的并行性。
IF
取指令
ID
指令译码
EX
:执行运算
WB
:结果写回
对于非流水计算机来说,上一条指令的4 个子过程全部执行完毕后才能开始下一条指令。因此,每 4 个机器周期才有一个输出结果。
对流水计算机来说,上一条指令与下一条指令的四个子过程在时间上可以重叠执行。因此,当流水线满载时,每一个时钟周期就可以输出一个结果。
由图可见:在8 个单位时间内,非流水 CPU 仅可执行 2 条指令;而流水 CPU 执行了 5 条指令;超标量流水 CPU 则执行了 10 条指令。
因此,流水 CPU 显然具有更强大的数据吞吐能力。
流水线分类
指令流水线
指指令处理步骤的并行。将指令流的处理过程划分为取指令、译码、执行、写回等几个并行处理的过程段。
算术流水线
指运算操作步骤的并行。如流水加法器、流水乘法器、流水除法等。
处理机流水线
又称为宏流水线
,是指程序步骤的并行。由一串级联的处理机构成流水线的各个阶段,每台处理机负责某一特定的任务。
流水线中的主要问题
流水过程中通常会出现以下三种相关冲突使流水线断流
–资源相关
–数据相关
–控制相关
资源相关
是指多条指令进入流水线后,在同一机器时钟周期内争用同一个功能部件所发生的冲突。
解决资源相关冲突的办法
- 执行 IF 过程时,若存在资源相关,则采用延迟 IF法避开相关。
- 增设一个存储器,将指令和数据分别放在两个存储器中。或采用多端口存储器结构。
数据相关
在一个程序中,如果必须等前一条指令执行完毕后,才能执行后一条指令,那么这两条指令就是 数据相关
的。
由于多条指令的重叠处理,当后继指令所需的操作数,刚好是前一指令的运算结果时,便发生数据相关冲突。
解决数据相关冲突的办法
在流水CPU 的运算器中设置若干运算结果缓冲寄存器,暂时保留运算结果,以便于后继指令直接使用,这称为:“向前”或定向传送技术
。
控制相关
控制相关冲突是由转移指令引起的。当执行转移指令时,依据转移条件的产生结果,可能会顺序取下条指令;也可能转移到新的目标地址取指令,从而使流水线发生断流
。
为了减小转移指令对流水线性能的影响,常用以下两种转移处理技术:
–延迟转移法
–转移预测法
延迟转移法
由编译程序重排指令序列来实现。基本思想是“先执行再转移 ”,即:发生转移取时并不排空指令流水线,而是让紧跟在转移指令 Ib 之后已进入流水线的少数几条指令继续完成。如果这些指令是与 Ib 结果无关的有用指令,那么延迟损失时间片正好得到了有效的
利用。
转移预测法
用硬件方法来实现,依据指令过去的行为来预测将来的行为。通过使用 转移取 和 顺序取 两路指令预取队列器以及目标指令 cache ,可将转移预测提前到取指阶段进行,以获得良好的效果。
奔腾 CPU
不考,略
5.7 RISC CPU
RISC 机器的特点
RISC的三个基本要素
一个有限的简单的指令集
CPU 配备大量的通用寄存器
强调对指令流水线的优化
RISC机器的特征
⑴使用等长指令,典型长度是 4 个字节 (32 位)。
⑵寻址方式少且简单,一般为 2 、 3 种,最多不超过 4种,绝不出现存储器间接寻址方式。
⑶只有取数指令和存数指令访问存储器。指令中最多出现 RS 型指令,绝不出现 SS 型指令。
⑷指令集中的指令数目一般少于 100 种,指令格式一般少于 4 种。
⑸指令功能简单,控制器多采用硬布线方式,以期更快的执行速度。
⑹平均而言,所有指令的执行时间为一个处理时钟周期。
⑺指令格式中用于指派整数寄存器的个数不少于 32个,用于指派浮点数寄存器的个数不少于 16 个。
⑻强调通用寄存器资源的优化使用。
⑼支持指令流水并强调指令流水的优化使用。
⑽RlSC 技术的复杂性在它的编译程序,因此软件系统开发时间比 CISC 机器长。
第六章 总线系统
6.1 总线的概念和结构形态
总线的基本概念
总线 是构成计算机系统的 互连机构 ,是多个系统功能部件之间进行数据传送的 公共通路
一个单处理器系统中的总线,大致分为三类:
•内部总线 CPU 内部连接各寄存器及运算部件之间的总线
•系统总线 CPU 同计算机系统的其他高速功能部件,如存储器、通道等互相连接的总线
•I/O 总线 :中、低速 I/O 设备之间互相连接的总线
总线的特性
•物理特性
:指总线的物理连接方式,包括总线的根数,总线的插头、插座的形状,引脚线的排列方式等。
•功能特性
:描述总线中每一根线的功能。
•电气特性
:定义每一根线上信号的传递方向及有效电平范围。送入 CPU 的信号叫输入信号 ( IN),从 CPU 发出的信号叫输出信号 (OUT) 。
•时间特性
:定义了每根线在什么时间有效。规定了总线上各信号有效的时序关系, CPU 才能正确无误地使用。
总线的标准化
相同的指令系统,相同的功能,不同厂家生产的各功能部件在实现方法上几乎没有相同的,但各厂家生产的相同功能部件却可以互换使用,其原因在于它们都遵守了相同的总线的要求,这就是系统总线的 标准化
总线带宽
:总线本身所能达到的最高传输速率,单位是兆字节 秒( MB/S)
例题:
总线的连接方式
•通过 设备适配器
将种类繁多、速度各异的外围设备连接到 CPU 上,使它们能够一起正常工作。设备适配器也称为接口
。
•单机系统中的总线结构有两种基本类型:
单总线结构
多总线结构
单总线结构
单总线特点
:
- 结构简单,容易扩充
- 由于若干逻辑部件共用一条总线,因此,总线为分时工作状态,会使整机工作速度降低。
多总线结构
多总线结构的特点
- 高速、中速、低速设备连接到不同的总线上同时进行工作
- 提高了总线的效率和吞吐量
- 处理器结构的变化不影响高速总线
简单总线结构(早期总线结构)
早期总线的内部结构如上图所示,它实际上是处理器芯片引脚的延伸,是处理器
与I/O设备适配器
的通道。这种简单的总线一般也由50~100条线组成,这些线按其功能可分为三类:地址线
、数据线
和控制线
。
地址线是单向
的,用来传送主存与设备的地址;
数据线是双向
的,用来传送数据;
控制线对每一根线来讲是单向
的(CPU发向接口,或接口发向CPU),用来指明数据传送的方向(存储器读、存储器写、I/O读、I/O写),中断控制(请求、识别)和定时控制等。
简单总线结构的不足之处在于:
- CU是总线上的唯一主控者。
- 总线信号是CPU引脚信号的延伸,故总线结构与CPU紧密相关,通用性较差。
当代总线结构
数据传送总线
由地址线、数据线、控制线组成。其结构与简单总线相似,但一般是32条地址线,32或64条数据线。为了减少布线,64位数据的低32位数据线常常和地址线采用多路复用方式。
仲裁总线
包括总线请求线和总线授权线。
中断和同步总线
用于处理带优先级的中断操作,包括中断请求线和中断认可线。
公用线
包括时钟信号线、电源线、地线、系统复位线以及加电或断电的时序信号线等。
Pentium 机的总线结构分为三层: CPU 总线、 PCI总线和 ISA 总线
6.2 总线接口
信息传送方式
传输信息有三种方式: 串行传送
、 并行传送
和分时传送
出于速度和效率上的考虑,系统总线上传送的信息必须采用 并行传送 方式
串行传送
只有一条传输线,且采用脉冲传送。按顺序来传送表示一个数码的所有二进制位 ( 的脉冲信号,每次一位。
通信协议(通信规程):收发双方共同遵守,解决传送速率、信息格式、位同步、字符同步、数据校验等问题
•串行异步通信:以字符为单位进行传输
•串行同步通信:以一个数据块为传输单位
•传输制式
–全双工 双根传输线,能够同时发送和接收
–半双工 :单根传输线,不能同时发送和接收
–单工 :单根传输线只用作发送或只用作接收
•调制解调器 Modem :通信线路信号与计算机数字信号相互转换的设备
拆卸:在串行传送时,被传送的数据在发送部件进行并-串变换
装配:在接收部件进行串-并变换
优点:只需要一条传输线,长距离传输成本比较低廉
并行传送
•每个数据位都需要单独一条传输线。采用 电位
传送,并行传送比串行传送快得多。
分时传送
- 总线复用方式
某个传输线上既传送地址信息,又传送数据信息。为此必须划分时间片,以便在不同的时间间隔中完成传送地址和传送数据的任务。 - 部件分时使用方式
由于多部件共享总线,因而各部件根据控制命令,分时使用总线来完成数据的传送任务。
总线接口的基本概念
接口
:即 I/O 设备适配器 ,具体指 CPU 和主存、外围设备之间通过总线进行连接的逻辑部件。
根据外围设备供求串行 / 并行数据的方式,适配器分为 串行
数据接口和 并行
数据接口两大类。
接口的功能
控制
缓冲
状态
转换
整理
程序中断
例题:
6.3 总线的仲裁
总线的仲裁
为了解决多个主设备同时竞争总线控制权,必须具有总线仲裁部件,以某种方式选择其中一个主设备作为总线的下一次主方。
对多个主设备提出的占用总线请求,一般采用 优先级
或 公平策略
进行仲裁。
按照总线仲裁电路的位置不同,仲裁方式分为 集中式仲裁
和 分布式仲裁
两类。
集中式仲裁
集中式仲裁中每个功能模块有两条线连到中央仲裁器:
一条是送往仲裁器的总线请求信号线BR
一条是仲裁器送出的总线授权信号线BG
集中式仲裁三种方式
链式查询方式
计数器定时查询方式
独立请求方式
链式查询方式的特点
•优点:只用很少几根线就能按一定优先次序实现总线仲裁,判优方法简单,扩充设备容易
•缺点:对询问链的电路故障很敏感;查询链的优先级是固定的,如果优先级高的设备出现频繁的请求时,优先级较低的设备可能长期不能使用总线
计数器定时查询方式的特点
- 每次计数可以从 0 开始,也可以从上次的中止点开始。如果从 0 开始,各设备的优先次序与链式查询法相同,优先级的顺序是固定的。如果从中止点开始,则每个设备使用总线的优先级相等。
- 计数器的初值也可用程序来设置,可以方便改变优先次序。这种灵活性以增加线数为代价 如:增加为 3根线,可管理 23 =8 个设备;增加为 4 根线,则可管理24=16 个设备等 。
独立请求方式的特点
- 响应时间快,确定优先响应的设备所花费的时间少
- 既可以预先固定,也可以通过程序来方便地改变优先次序,对优先次序的控制相当灵活
- 可以用屏蔽 禁止 某个请求的办法,封锁来自无效设备的请求
- 这种方式需增加的线数较多( N 个设备,需要 2N 根线),仲裁器的结构相应也要复杂一些。
分布式仲裁
分布式仲裁是以 优先级仲裁策略
为基础, 不需要中央仲裁器,每个潜在的主方功能模块都有自己的仲裁号和仲裁器。
共享的仲裁总线上总是保留着当前占用总线模块的仲裁号,当其它模块有总线请求时,各仲裁器将从仲裁总线上得到的号与自己的号进行比较。如果仲裁总线上的号大,则它的总线请求不予响应,并撤消它的仲裁号。
6.4 总线的定时和数据传送模式
总线的一次信息传送过程,大致可分为如下五个阶段:
请求总线 、 总线仲裁 、 寻址 、 信息传送 、 状态返回
定时
:事件出现在总线上的时序关系
数据传送过程采用两种定时方式
同步定时
异步定时
同步定时
采用公共时钟,每个功能模块什么时候发送或接收信息都由统一时钟规定,因此,同步定时具有较高的传输频率
同步定时适用于总线长度较短、各功能模块存取时间比较接近的情况
微处理器控制的总线时序采用同步时序
异步定时
在异步定时协议中,后一事件出现在总线上的时刻取决于前一事件的出现,即建立在应答式或互锁机制基础上。在这种系统中,不需要统一的 公 共时钟信号。总线周期的长度是可变的。
总线数据传送模式
读操作
:数据由从设备到主设备
写操作
:数据由主设备到从设备
数据块传送
:给出起始地址,将固定块长的数据一个接一个地从相邻地址读出或写入
猝发式传送
:CPU 主存间的块传送
写后读 Read After Write
先写后读同一个地址单元,适用于校验
读修改写 Read Modify Write
先读后写同一个地址单元,适用于共享数据保护
广播 Broadcast
一个主设备对多个从设备的写入操作
6.5 PCI总线和 PCIe 总线
(不考) 略
HOST总线
有 CPU 总线、系统总线、主存总线、前端总线等多种名称,各自反映了总线功能的一个方面。称宿主
总线,也许更全面。
HOST 总线不仅连接主存,还可以连接多个 CPU 。
HOST 总线是连接“北桥”芯片与 CPU 之间的信息通路,它是一个 64 位数据线和 32 位地址线的同步总线。32 位的地址线可支持处理器 4GB 的存储寻址空间。总线上还接有 L2 级 cache ,主存与 cache 控制器芯片。后者用来管理 CPU 对主存和 cache 的存取操作。 CPU 拥有HOST总线的控制权,但在必要情况下可放弃总线控制权。
PCI总线
连接各种高速的 PCI 设备,是一个与处理器无关的高速外围总线,又是至关重要的层间总线。
采用同步时序协议
和集中式仲裁策略
,并具有自动配置能力
。
PCI 设备可以是主设备,也可以是从设备,或兼而有之
PCI 总线支持无限的猝发式传送。传统总线上用 DMA方式工作的设备移植到 PCI 总线上时,采用主设备工作方式即可。
系统中允许有多条 PCI 总线,它们可以使用 HOST 桥与HOST 总线相连,也可使用 PCI/PCI 桥与已经和 HOST 总线相连的 PCI 总线相连,从而得以扩充 PCI 总线负载能力。
LAGACY总线
可以是 ISA EISA MCA 等这类性能较低的传统总线,以便充分利用市场上丰富的适配器卡,支持中、低速 I/O 设备。
在 PCI 总线体系结构中有三种桥。
其中 HOST 桥又是PCI 总线控制器,含有中央仲裁器。桥起着重要的作用,它连接两条总线,使彼此间相互通信。桥又是一个总线转换部件,可以把一条总线的地址空间映射到另一条总线的地址空间上,从而使系统中任意一个总线主设备都能看到同样的一份地址表。
第七章 外存与 I/O 设备
7.1 外围设备概括
本章不重要,考点不多,了解即可
磁表面存储器的读写原理
磁表面存储器通过磁头和记录介质的相对运动完成写入和读出
写入:电磁变换
读出:磁电变换
磁盘的组成和分类
硬磁盘是指记录介质为硬质圆形盘片的磁表面存储器。它主要由 磁记录介质
、 磁盘控制器
、 磁盘驱动器
三大部分组成
硬磁盘机按盘片结构分成 可换盘片式
与 固定盘片式
两种;
磁头也分为 可移动磁头
和 固定磁头
两种
温彻斯特磁盘机
温彻斯特磁盘
简称温盘,是一种采用先进技术研制的 可移动磁头固定盘片
的磁盘机。
它是一种密封组合式
的硬磁盘,即磁头、盘片、电机等驱动部件乃至读写电路等组装成一个不可随意拆卸的整体。
工作时,高速旋转在盘面上形成的气垫将磁头平稳浮起。优点是防尘性能好,可靠性高,对使用环境要求不高。
磁盘上信息的分布
盘片的上下两面都能记录信息,通常把磁盘片表面称为 记录面
记录面上一系列同心圆称为 磁道
各记录面上的同号磁道构成一个 柱面
, 每个磁道又分为若干个 扇区
,它是磁盘上的最小记录单位。
技术指标-存储密度
存储密度:道密度
、位密度
和 面密度
道密度 : 沿磁盘半径方向单位长度上的磁道数,单位为道/英寸
位密度 : 磁道单位长度上能记录的二进制代码位数,单位为位/英寸
面密度 : 位密度和道密度的乘积,单位为位/平方英寸
技术指标-存储容量
存储容量
:一个磁盘存储器所能存储的字节总数
格式化容量
:
指按照某种特定的记录格式所能存储信息的总量,也就是用户可以真正使用的容量
非格式化容量
:
磁记录表面可以利用的磁化单元总数,格式化容量一般是非格式化容量的60%~70%
技术指标-平均存取时间
平均存取时间
: 磁盘存取时间是指从发出读写命令后,磁头从某一起始位置移动至新的记录位置,到开始从盘片表面读出或写入信息所需要的时间。
定位时间或找道时间
:将磁头定位至所要求的磁道上所需的时间, 目前平均找道时间为 10~20ms 。
等待时间
:找道完成后至磁道上需要访问的信息到达磁头下的时间。转速为7200转 /分的磁盘的平均等待时间约为 4.16 ms 。
技术指标-数据传输率
数据传输率 :磁盘存储器在单位时间内向主机传送数据的字节数
从存储设备考虑,假设磁盘旋转速度为每秒 r 转,每条磁道容量为 N 个字节,则数据传输率Dr=r × N
( 字节/秒)
目前磁盘存储器的数据传输率可达几十兆字节 秒
显示设备
阴极射线管显示器CRT
Cathode Ray Tube
液晶显示器LCD
Liquid Crystal Display
分辨率
像素
:组成图像的最小单位 显示器上的发光点
点距
:相邻像素的距离 相邻两个相同色彩点的距离
0.31 mm 、 0.28 mm 、 0.25 mm
分辨率
:显示器所能表示的像素个数
分辨率
=水平点数× 垂直点数
640× 480,800 × 600,1024 × 768,1280 × 1024
点距越小,显示的图像越细腻,分辨率越高,所能表达的图像信息越多
第八章 输入输出系统
8.1 CPU 与外设之间的信息交换方式
外设同CPU 交换数据的过程
输入过程:
CPU 把一个地址值放在地址总线上,这一步将选择一个输入设备
CPU 等候输入设备的数据成为有效
CPU 从数据总线上读入数据,并放在一个相应的寄存器中
输出过程:
CPU 把一个地址值放在地址总线上,这一步将选择一个输出设备
CPU 把数据放在数据总线上
输出设备认为数据有效,从而把数据取走
外围设备的速度分级
CPU与外围设备之间的定时,有以下三种情况:
- 速度极慢或简单的外围设备
- 慢速或中速的外围设备
- 高速的外围设备
速度极慢或简单的外围设备
对于这类设备 CPU 总是能足够快地作出响应,也可以说, CPU 认为输入的数据一直有效,在这种情况下, CPU 只要接收和发送数据就可以了。称为 无条件传送方式
或零线握手联络方式
。
慢速或中速的外围设备
CPU 与这类设备之间的数据交换通常采用 异步定时
方式
CPU 和外设之间用问答信号进行定时,这种方式叫做 应答式
数据交换
高速的外围设备
CPU 和这类设备之间通常采用 同步定时 方式,一旦 CPU 和外设发生同步,它们之间的数据交换用时钟控制
来进行。
1)同步定时方式
CPU以等间隔的速率执行 I/O 指令
靠时钟脉冲控制进行
2)DMA方式
CPU与 I/O 接口之间的数据传送
- 无条件传送方式(简单 I/O 方式)
- 程序查询方式
- 程序中断方式
- 直接内存访问( DMA )方式
- 通道方式和输入 输出处理器
外围设备的输入输出控制方式
8.2 程序查询方式
程序查询方式又叫 程序控制 I/O
方式
数据在 CPU 和外围设备之间的传送完全靠计算机程序控制,是在 CPU 主动控制下进行的
当需要输入/输出时, CPU 暂停执行本程序,转去执行输入/输出的服务程序,根据服务程序中的 I/O指令进行数据传送
是一种最简单、最经济的输入/输出方式,只需要很少的硬件
设备编址
用程序实现输入输出的数据传送,外围设备有两种不同的编址方法:
统一编址
单独编址
统一编址
输入/输出设备中的控制寄存器,数据寄存器,状态寄存器等和内存单元一样看待,它们和内存单元联合在一起编排地址
可用访问内存的指令 读、写指令 去访问 I/O 设备的某个寄存器,因而不需要专门的 I/O指令
单独编址
内存地址和 I/O 设备地址是分开的
访问内存和访问 I/O 设备使用不同操作码的指令,有专门的 I/O 指令
控制和地址译码电路相对简单
专门的 I/O 指令使程序清晰易读主
输入输出指令
I/O指令一般具有如下功能:
置 “1“ 或置 “0” 设备接口的某些控制触发器,用于控制设备进行某些动作,如启动、关闭设备等
测试设备的某些状态,如“忙”、“准备就绪”等,以便决定下一步的操作
传送数据,当输入数据时,将 I/O 设备中数据寄存器的内容送到 CPU 某一寄存器;当输出数据时,将CPU 中某一寄存器的内容送到 I/O 设备的数据寄存器
程序查询方式的接口
接口 :总线与 I/O 设备之间的一个逻辑部件,作为一个转换器,保证 I/O 设备用计算机系统特性所要求的形式发送或接收信息
由于主机和 I/O 设备之间进行数据传送的方式不同,因而接口的逻辑结构也相应有所不同。程序查询方式最简单的程序查询方式的接口
优点:
CPU 的操作可以和 I/O 设备操作同步,且接口硬件比较简单
缺点 :
当程序进入循环时 CPU 只能踏步等待,不能处理其他任务
在实际应用中做如下改进: CPU 在执行主程序的过程中可周期性地调用各 I/O 设备询问子程序,而询问子程序依次测试各 I/O 设备的状态触发器 "Ready ”;如果某设备的 Ready 为 ”1”,则转去执行该设备的服务子程序如该设备的 Ready 为 ”0”,则依次测试下一个设备。程序查询方式的优缺点
设备服务子程序的主要功能
(1)实现数据传送。输入时,由 I/O 指今将设备的数据送 CPU 某寄存器,再由访内指令把寄存器中的数据存入内存某单元;输出时,其过程正好相反。
(2)修改内存地址,为下一次数据传送做准备。
(3)修改传送字节数,以便修改传送长度。
(4)进行状态分析或其他控制功能。
8.3 程序中断方式
中断的基本概念
CPU 在执行程序过程中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序
中断源 :
能够引起 CPU 中断的原因。中断源是指形成这个原因的设备、部件或条件。
中断源种类:
输入输出设备
故障与错误:电源掉电、运算出错、非法指令等
实时时钟
程序调试和软件中断:这类中断是由程序员事先安排好的,和调用子程序的作用一样,
与上述由外部硬件产生的中断有一些不同。
中断的分类
按中断源在主机内还是外分:
内部中断 :来自主机内部,如运算出错、程序调试和软件中断等
外部中断 :来自主机之外,如外部设备、实时时钟和硬件故障产生的中断等
按寻找中断服务程序入口的实现方法区分:
向量中断 :中断服务程序入口由中断源自己提供
非向量中断 :入口由 CPU 查询得到中断的分类
主程序只是在设备A 、 B 、 C 数据准备就绪时,才去处理 A 、 B 、 C ,进行数据交换。在速度较慢的外围设备准备自己的数据时, CPU 照常执行自己的主程序。
在这个意义上说, CPU 和外围设备的一些操作是并行地进行的,因而同串行进行的程序查询方式相比,计算机系统的效率是大大提高了。
中断响应的时间
中断请求是随机
的,但 CPU 只有在当前一条指令执行完毕后,即转入公操作时才受理设备的中断请求
公操作
:是指一条指令执行结束后 CPU 所进行的操作,如取下条指令、中断处理、直接内存传送等
每当一条指令执行到末尾, CPU 便检查中断请求信号。若中断请求信号为 1””,则在条件许可的情况下CPU 即可转入 中断周期 ””,受理外界中断。
保存现场
为了在中断服务程序执行完毕以后正确地返回到原来主程序被中断的断点 (PC 内容 而继续执行主程序,执行中断服务之前,必须首先 保存现场 。
保存现场: 把程序计数器 PC 的内容,以及当前指令执行结束后 CPU 的状态字 包括某些寄存器的内容和一些状态标志位 都保存到堆栈中
关、开中断的控制
CPU 的中断管理部件中必须有一个 中断屏蔽 触发器,它可以在程序的控制下置 1 设置屏蔽 )),或置0 取消屏蔽 。只有在中断屏蔽标志为 0” 时,CPU 才可以受理中断。
硬件和软件结合来完成中断处理过程
中断周期
:硬件实现
中断服务程序
:机器指令序列实现。除执行保存现场、恢复现场、开放中断并返回主程序任务外,对要求中断的设备进行服务,使其同 CPU 交换一个字的数据,或作其他服务。
程序中断方式的基本接口
程序中断由外设接口的状态和CPU 两方面控制:
接口方面:
准备就绪标志 (RD) 和 允许中断 标志 (EI) 两个触发器,决定是否向 CPU 发出中断请求
CPU 方面:
中断请求 标志 ( IR)和 中断屏蔽标志(IM) 两个触发器,决定是否受理中断请求
四个标志触发器的具体功能
单级中断
单级中断:在执行中断的过程中,只能为本次中断服务,不允许打断服务程序,只有在服务程序完成后,才能响应新的请求。
单级中断源的识别
在单级中断中,通常采用 串行排队链法
来实现具有公共请求线的中断源判优识别。
中断向量的产生
当 CPU 响应中断时,由硬件直接产生一个固定的地址 即 (向量地址
),由向量地址指出每个中断源设备的中断服务程序入口,这种方法通常称为 向量中断
在硬件电路设计时,要求能够产生所有中断源的向量地址。每次响应中断时,只能产生一个向量地址,一旦电路设计好,各中断源的向量地址就不能改变了。
其它产生向量地址的方法
位移量法
:由硬件产生的向量地址不是直接地址而是一个“位移量”,将这个位移量加上 CPU 中某寄存器里存放的基地址,最后得到中断处理程序的入口地址。
向量地址转移的方法
:假设有 8 个中断源,由优先级编码电路产生 8 个对应的固定地址码,这 8 个单元中存放的是跳转转移指令,通过该指令可转入设备各自的中断服务程序入口。这种方法允许中断处理程序放在内存中任何地方,非常灵活。
多级中断
多级中断
:在一次服务程序执行中,允许优先级高的打断级别低的中断服务程序,在保存断点和现场后,转去响应优先级别更高的中断程序,并执行新的中断服务程序。
一维、二维多级中断
根据系统的配置不同,多级中断可分为一维多级中断
和二维多级中断
一维多级中断 是指每一级中断里只有一个中断源
二维多级中断 是指每一级中断里又有多个中断源
说明:
(1)一个系统若有n级中断,在CPU中就有n个中断请求触发器
,总称为中断请求寄存器
;与之对应的有个中断屏蔽触发器
,总称为中断屏蔽寄存器
。与单级中断不同,在多级中断中,中断屏蔽寄存器的内容是一个很重要的程序现场,因此在响应中断时,需要把中断屏蔽寄存器的内容保存起来,并设置新的中断屏蔽状态
。一般在某一级中断被响应后,要置“1”(关闭)本级和优先权低于本级的中断屏蔽触发器,置“0”(开放)更高级的中断屏蔽触发器,以此来实现正常的中断嵌套。
(2)多级中断中的每一级可以只有一个中断源,也可以有多个中断源。在多级中断之间可以实现中断嵌套
,但是同一级内有不同中断源的中断是不能嵌套的,必须是处理完一个中断后再响应和处理同一级内其他中断源。
(3)设置多级中断的系统一般都希望有较快的中断响应时间,因此首先响应哪一级中断和哪一个中断源,都是由硬件逻辑实现,而不是用程序实现。图8.9中的中断优先级排队电路,就是用于决定优先响应中断级的硬件逻辑。另外,在二维中断结构中,除了有中断优先级排队电路确定优先响应中断级外,还要确定优先响应的中断源,一般通过链式查询的硬件逻辑来实现。显然,这里采用了独立请求方式
与链式查询方式
相结合的方法决定首先响应哪个中断源。
(4)和单级中断情况类似,在多级中断中也使用中断堆栈
保存现场信息。使用堆栈保存现场的好处是:①控制逻辑简单,保存和恢复现场的过程按先进后出顺序进行。②每一级中断不必单独设置现场保护区,各级中断现场可按其顺序放在同一个栈里。
多级中断源的识别
在多级中断中,每一级均有一根中断请求线送往CPU 的中断优先级排队电路,对每一级赋予了不同的优先级。这种结构就是独立请求方式
的逻辑结构。
Pentium中断
不考,略
8.4 DMA方式
DMA的基本概念
直接内存访问 (DMA)
是一种完全由硬件执行 I/O 交换的工作方式
•在这种方式中, DMA 控制器从 CPU 完全接管对总线的控制,数据交换不经过 CPU ,而直接在内存和 I/O 设备之间进行
•DMA 方式一般用于高速传送成组数据
•DMA 控制器向内存发出地址和控制信号,修改地址,对传送的字的个数计数,并且以中断方式向CPU 报告传送操作的结束
DMA方式的主要优点
- 速度快,由于 CPU 根本不参加传送操作,因此就省去了 CPU 取指令、取数、送数等操作
- 在数据传送过程中,没有保存现场、恢复现场之类的工作。内存地址修改、传送字个数的计数等等,也不是由软件实现,而是用硬件线路直接实现的
- DMA 方式能满足高速 I/O 设备的要求,也有利于CPU 效率的发挥
DMA控制器能执行的基本操作
(1) 向 CPU 发出 DMA 请求
(2) CPU响应请求,把 CPU 工作改成 DMA 操作方式。这时, DMA 控制器从 CPU 接管总线的控制
(3)由 DMA 控制器对内存寻址,即决定数据传送的内存单元地址及数据传送个数的计数,并执行数据传送的操作
(4)向 CPU 报告 DMA 操作的结束
DMA传送方法
DMA技术的出现,使得外围设备可以通过DMA控制器直接访问内存,与此同时,CPU可以继续执行程序。
DMA 控制器与 CPU 需要分时使用内存
通常采用三种方法:
①停止CPU访内;
②周期挪用;
③DMA与CPU交替访内。
停止CPU 访问法
外围设备要求传送一批数据时,由 DMA 控制器发一个停止信号给 CPU ,要求 CPU 放弃对地址、数据和有关控制总线的使用权。 DMA 控制器获得总线控制权后,开始数据传送。一批数据传送完毕后,DMA 控制器通知 CPU 可以使用内存,并把总线控制权交还给 CPU 。
优点:控制简单,它适用于数据传输率很高的设备进行成组传送。
缺点:在 DMA 控制器访内阶段,内存的效能没有充分发挥,相当一部分内存工作周期是空闲的。
周期挪用法
当/O设备没有DMA请求时,CPU按程序要求访问内存;一旦I/O设备有DMA请求,则由I/O设备挪用一或几个内存周期。
I/O设备要求DMA传送时,可能遇到两种情况:
- CPU不需要访内。I/O访内与CPU访内没有冲突,对CPU执行程序没有任何影响。
- I/O设备要求访内时CPU也要求访内,产生访内冲突,I/O设备访内优先,因为/O访内有时间要求,前一个/O数据必须在下一个访内请求到来之前存取完毕。CPU延缓了对指令的执行,在CPU执行访内指令中插入DMA请求,挪用了一、二个内存周期
周期挪用的特点
周期挪用的方法既实现了 I/O 传送,又较好地发挥了内存和 CPU 的效率,是一种广泛采用的方法
但是 I/O 设备每一次周期挪用都有申请总线控制权、建立总线控制权和归还总线控制权的过程,所以传送一个字对内存来说要占用一个周期,但对 DMA控制器来说一般要 2 5 个内存周期
周期挪用的方法适用于 I/O 设备读写周期大于内存存储周期的情况,即较慢速的 I/O 设备
DMA与CPU交替访内
如果CPU的工作周期比内存存取周期长很多,此时采用交替访内的方法可以使DMA
传送和CPU同时发挥最高的效率,其原理示意图如图8.13(c)所示。假设CPU工作周期为
1.2μs,内存存取周期小于0.6us,那么一个CPU周期可分为C1和C2两个分周期,其中C1专供DMA控制器访内,C2专供CPU访内。
特点:
这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过C1和C2分时控制的。CPU和DMA控制器各自有自己的访内地址寄存器、数据寄存器和读/写信号等控制寄存器。在C1周期中,如果DMA控制器有访内请求,可将地址、数据等信号送到总线上。在C2周期中,如CPU有访内请求,同样传送地址、数据等信号。事实上,对于总线,这是用C1,C2控制的一个多路转换器,这种总线控制权的转移几乎不需要什么时间,所以对DMA传送来讲效率是很高的。
这种传送方式又称为透明的DMA
方式,其来由是这种DMA传送对CPU来说,如
同透明的玻璃一般,没有任何感觉或影响。在透明的DMA方式下工作,CPU既不停止主
程序的运行,也不进入等待状态,是一种高效率的工作方式。当然,相应的硬件逻辑也就更加复杂。
基本的DMA控制器
一个 DMA 控制器,实际上是采用 DMA 方式的外围设备与系统总线之间的接口电路
该接口电路是在中断接口的基础上再加 DMA 机构组成
一个最简单的 DMA 控制器由以下逻辑部件组成
内存地址计数器、字计数器、数据缓冲寄存器、DMA 请求”标志、“控制 / 状态”逻辑、中断机构
DMA控制器内部的逻辑器件
内存地址计数器
用于存放内存中要交换的数据的地址。在DMA传送前,须通过程序将数据在内存中的起始位置送到内存地址计数器。而当DMA传送时,每交换一次数据,将地址计数器加1”,从而以增量方式给出内存中要交换的一批数据的地址
字计数器
用于记录传送数据块的长度。其内容也是在数据传送之前由程序预置,在DMA传送时,每传送一个字,字计数器就加“1”,当计数器溢出即最高位产生进位时,表示这批数据传送完毕,于是引起DMA控制器向CPU发中断信号。
数据缓冲寄存器
用于暂存每次传送的数据。当输入时,由设备送往数据缓冲寄存器,再由缓冲寄存器通过数据总线送到内存。反之,输出时,由内存通过数据总线送到数据缓冲寄存器,然后再送到设备。
DMA请求标志
每当设备准备好一个数据字后给出一个控制信号,使DMA请求”标志置1”。该标志置位后向控制/状态逻辑发出DMA请求,后者又向CPU发出总线使用权的请求(HOLD),CPU响应此请求后发回响应信号HLDA,“控制/状态逻辑接收此信号后发出DMA响应信号,使DMA请求标志复位,为交换下一个字做好准备
控制/状态逻辑
由控制和时序电路以及状态标志等组成,用于修改内存地址计数器和字计数器指定传送类型,并对DMA请求”信号和CPU响应信号进行协调和同步。
中断机构
当字计数器益出时,意味着一组数据交换完毕,由溢出信号触发中断机构,向CPU提出中断报告。
中断数据传送过程
DMA 的数据块传送过程可分为三个阶段:
传送前预处理
正式传送
传送后处理
传送前预处理
CPU 执行几条输入输出指令,测试设备状态,向DMA 控制器的设备地址寄存器中送入设备号并启动设备,向内存地址计数器中送入起始地址,向字计数器中送入交换的数据字个数。
正式传送
当外设准备好发送数据或接收数据时,它发出DMA 请求,由 DMA 控制器向 CPU 发出总线使用权的请求 (HOLD)
DMA 的数据传送以数据块
为基本单位,每次DMA 控制器占用总线后,无论是数据输入操作,还是输出操作,都是通过循环来实现的
后处理
一旦 DMA 的中断请求得到响应, CPU 停止主程序的执行,转去执行中断服务程序做一些 DMA 的结束处理工作
校验送入内存的数据是否正确;决定继续用 DMA方式传送下去,还是结束传送;测试在传送过程中是否发生了错误等等
选择型DMA 控制器
选择型 DMA 控制器 在物理上 可以连接多个设备,而 在逻辑上 只允许连接一个设备
用一个 DMA 控制器 分时 为多个设备服务
选择型DMA 控制器的工作原理
从预置开始直到传送结束, DMA 控制器只为所选设备服务。下一次预置为另一选择的设备服务。
选择型 DMA 控制器相当于一个逻辑开关,根据I/O 指令来控制此开关与某个设备连接。
选择型 DMA 控制器只增加少量硬件达到了为多个外围设备服务的目的,它特别适合数据传输率很高以至接近内存存取速度的设备。
多路型DMA 控制器
多路型 DMA 控制器适合于同时为多个慢速外围设备服务
多路型 DMA 不仅 在物理上 可以连接多个外围设备,而且 在逻辑上 也允许这些外围设备同时工作,各设备以字节交叉方式通过 DMA 控制器进行数据传送
8.5 通道方式
通道的概念
通道是一个 特殊功能的处理器
,它有自己的指令和程序专门负责数据输入输出的传输控制,而CPU将传输控制
的功能下放给通道后只负责数据处理
功能。这样,通道与 CPU 分时使用内存,实现了 CPU 内部运算与 I/O 设 备的平行工作
通道的出现进一步提高了 CPU 的效率
具有通道的计算机系统
具有两种类型的总线:
存储总线
,承担通道与内存、 CPU 与内存之间的数据传输任务。
通道总线
,即 I/O 总线,承担外围设备与通道之间的数据传送任务。
这两类总线可以分别按照各自的时序同时进行工作
通道总线可以接若干个设备控制器,一个设备控制器可以接一个或多个设备
I/O系统的逻辑结构
从逻辑结构上讲, I/O 系统一般具有四级连接:
PU与内存 通道 设备控制器 外围设备
同一系列的机器,通道与设备控制器之间都有统一的标准接口,设备控制器与设备之间则根据设备要求不同而采用专用接口
具有通道的一般是大、中型计算机,数据流通量很大。一般接有多个通道,对不同类型的 I/O 设备可以进行分类管理
通道的优先权
存储管理部件
是内存的控制部件,它的主要任务是根据事先确定的优先次序,决定下一周期由哪个部件使用存储总线访问内存
由于大多数 I/O 设备是旋转性的设备,读写信号具有实时性
,不及时处理会丢失数据,所以 通道优先权高于 CPU 。 在多个通道有访内请求时, 选择通道和数组多路通道的优先权高于字节多路通道因为前者一般连接高速设备。
通道的基本功能
执行通道指令,组织外围设备和内存进行数据传输,按I/O 指令要求启动外围设备,向 CPU 报告中断等。具体有五项任务:
(1)按照 CPU 的 I/O 指令要求与指定的外设通信。
(2)从内存选取属于该通道程序的通道指令,经译码后向设备控制器和设备发送各种命令。
(3)组织外设和内存进行数据传送,提供数据缓存的空间,提供数据存入内存的地址和传送的数据量。
(4)从外设得到状态信息,形成并保存通道的状态信息,将状态信息送到内存指定单元,供 CPU 使用。
(5)将外设的中断请求和通道本身的中断请求,按次序及时报告 CPU
CPU对通道的管理
CPU 是通过 执行 I/O 指令 以及处理来自通道的 中断实现对通道的管理。来自通道的中断有两种,一种是数据传送结束中断
,另一种是故障中断
。
大中型计算机的 I/O 指令都是管态指令
,只有当CPU 处于管态时,才能运行 I/O 指令,目态时不能运行 I/O 指令。
管态CPU:运行操作系统的管理程序的状态
目态CPU:执行目的程序时的状态
通道对设备控制器的管理
通道通过使用 通道指令 控制设备控制器进行数据传送操作,并以 通道状态字 接收设备控制器反映的外围设备的状态。设备控制器是通道对 I/O 设备实现传输控制的执行机构。
设备控制器的具体任务
从通道接受通道指令,控制外围设备完成所要求的操作
向通道反映外围设备的状态
将各种外围设备的不同信号转换成通道能够识别的标准信号
通道的类型
根据通道的工作方式分为:
选择通道
多路通道
选择通道
选择通道在物理上可以连接多个设备,但是这些设备不能同时工作,在某一段时间内只能选择一个设备进行工作。只有当这个设备的通道程序全部执行完毕后,才能执行其他设备的通道程序。
主要用于连接高速外设,如磁盘、磁带等,信息以成组方式高速传输。数据传输率可以达到 1.5MB/s即 0.67μs 传送一个字节,通道在传送两个字节之间已很少空闲。
这类设备的辅助操作时间很长,通道处于等待状态,因此整个通道的利用率不是很高。
多路通道
多路通道又称多路转换通道,在同一时间能处理多个 I/O 设备的数据传输
分为:
数组多路通道
字节多路通道
数组多路通道
基本思想:当某设备进行数据传送时,通道只为该设备服务;当设备在执行寻址等控制性动作时,通道暂时断开与这个设备的连接,挂起该设备的通道程序,去执行其他设备的通道程序
数组多路通道
不仅在物理上可以连接多个设备,而且在一段时间内能交替执行多个设备的通道程序,在逻辑上可以连接多个设备,这些设备应该是高速设备
数组多路通道
既保留了选择通道高速传送数据的优点,又充分利用了控制性操作的时间间隔为其他设备服务,使通道效率充分得到发挥
字节多路通道
字节多路通道主要用于连接大量的低速设备
例如某打印机数据传输率是1000B/s ,即传送 1 个字节的间隔是 1ms ,而通道从设备接收或发送一个字节只需要几百纳秒,因此通道在传送两个字节之间有很多空闲时间,字节多路通道正是利用这个空闲时间为其他设备服务。
字节多路通道和数组多路通道的共同之处
都是多路通道,在一段时间内能交替执行多个设备的通道程序,使这些设备同时工作。
字节多路通道和数组多路通道的不同之处
数组多路通道
允许多个设备同时工作,但只允许一个设备进行传输型操作,其他设备进行控制型操作。
字节多路通道
不仅允许多个设备同时操作,而且也允许它们同时进行传输型操作。
数组多路通道
与设备之间数据传送的基本单位是数据块,通道必须为一个设备传送完一个数据块后,才能为别的设备传送数据块。
字节多路通道
与设备之间数据传送的基本单位是字节,各设备与通道之间的数据传送是以字节为单位交替进行。
通道结构的发展
输入输出处理器 (IOP)
是通道结构
的 I/O 处理器
。IOP
可以和 CPU
并行工作,提供高速的 DMA
处理能力,实现数据的高速传送。但它不是独立于 CPU 工作的,而是主机的一个部件。 IOP
广泛应用于中小型及微型计算机中。
外围处理机 (PPU)
:PPU 基本上独立于主机工作的,有自己的指令系统,完成算术 逻辑运算,读 写主存储器,与外设交换信息等。有的外围处理机干脆就选用已有的通用机。外围处理机I/O
方式一般应用于大型高效率的计算机系统中。
本文来自作者:CK_0ff,转载请注明原文链接:https://www.cnblogs.com/Ck-0ff/p/16330517.html