Computer Organization
2022-09-14 00:43 AtmosphereMao
计算机组成原理
系统概述
层次结构(主存)
主存(M)
- MAR 地址寄存器(用来存放存储单元地址)
- MDR 数据寄存器(用来存放从存储单元中取出或将要存入存储单元的数据)
N位长的MAR可以映射到2^n个地址
存储器的工作方式是按存储单元的地址存取
MDR的长度等于存储单元的长度,称之为存储字长(字),即存储单元中存储基元的个数
每8个存储基元称之为一个字节,存储字长为字节的整数倍;位(bit)、字节(byte)、字(word)
层次结构(运算器、控制器)
运算器
- MQ 乘商寄存器
- 乘(乘数和乘积低位)
- 除(商)
- ACC 累加器
- 加(被加数与和)
- 减(被减数与差)
- 乘(乘积高位)
- 除(被除数和余数)
- ALU 算数逻辑单元
- X 操作数寄存器
- 加(加数)
- 减(减数)
- 乘(被乘数)
- 除(除数)
M:主存中某一地址上的存储单元(M):取M中的数据
- 加/减法
- (M) -> X
- (ACC) +/- (X) -> ACC
- 乘法
- (M) -> MQ
- (ACC) -> X
- 0 -> ACC
- (X) * (MQ) -> ACC//MQ
- 除法
- (M) -> X
- (ACC) ÷ (X) -> MQ
- (ACC) % (X) -> ACC
控制器
- CU 控制单元(分析指令并发出各种控制信号来协调各部件完成指令所描述的操作)
- IR 指令寄存器(存放当前要执行的指令,其内容来自MDR)
- PC 程序计数器(用来存放当前要执行的指令而地址,与MAR直接连通且有自动加1的功能)
指令:操作码 | 地址码
(IR)
OP(IR) 取操作码
Ad(IR) 取地址码
OP(IR) -> CU 取出操作码送入CU
Ad(IR) -> MAR 取出地址码送入MAR,从MAR对应的存储体取出
- 如:加法操作
- (PC) -> MAR
- (MDR) -> IR
- OP(IR) -> CU
- Ad(IR) -> MAR
- (MDR) -> X
- (ACC) + (X) -> ACC
- (PC) + 1 -> PC
简写分类
- 控制器
- PC
- IC
- MAR
- MDR
- 译码器
- 时序电路
- 微操作信号发生器
- 运算器
- ALU
- 暂存寄存器
- ACC
- 通用寄存器
- PSW(程序状态字寄存器)
- 移位器
- 计数器(CT)
IO设备和组织方式
冯·诺依曼计算机结构
- 计算机由运算器、存储器、控制器、输入和输出设备五大部分组成
- 指令和数据以同等地位存放在存储器内,并可按地址寻访
- 指令和数据均采用二进制来表示
- 指令由操作码和地址码组成
- 指令在存储器内顺序存放。通常指顺序执行,在特定条件下,可根据运算结果或条件改变执行顺序
- 机器以运算器为中心,输入输出设备与存储器间的数据传输通过运算器完成
层次结构(五层结构)
- 硬件层
- 第零层 微程序机器M0(机器语言机) 直接执行微指令
- 第一层 传统机器M1(机器语言机) 将机器指令翻译成微程序
- 软件层
- 第二层 虚拟机器M2(操作系统机) 用机器语言解释操作系统
- 第三层 虚拟机器M3(汇编语言机) 将汇编语言翻译成机器语言
- 第四层 虚拟机器M4(高级语言机) 将高级语言翻译成汇编语言
计算机软件与硬件的关系
- 硬件和软件互相依存
硬件是软件工作的物质基础,软件的正常工作是硬件发挥作用的唯一途径
- 硬件和软件无严格界线
在许多情况下,计算机的某些功能既可以由硬件实现,也可以由软件来实现。因此,硬件与软件在一定意义上说没有严格的界面
- 硬件和软件协同发展
计算机软件随硬件技术的发展而发展,而软件的不断发展与完善又促进硬件的更新,两者交织发展,缺一不可。
- 处于软件与硬件交界面的是
指令系统
性能指标
存储单元个数 × 存储字长 位(bit) (存储字长/8 字节(byte))
- MAR的位数反映了最大存储单元个数
- MDR的位数等于存储 字长
机器字长:进行一次整数运算所能处理的最大二进制位数
- 运算速度:
- 吞吐量:单位时间内的数据处理量
- 响应时间:从用户向计算机发出一个请求,到计算机返回这个请求对应的结果之间的时间(包括CPU处理时间和存储器访问、操作系统开销、外设访问时间)
- CPU时钟周期:节拍脉冲时间(机器中最小的时间单位)
- 主频:CPU时钟周期的倒数 1.2GHz = 1200MHz = 1200M个时钟周期
- CPI:执行一条指令所需要的时钟周期数
- MIPS:每秒执行多少百万条指令,即平均指令执行速度(主频 ÷ CPI)
- 平均指令周期:1 / MIPS (微秒us)
- (M/G/T/P)FLOPS:每秒浮点运算次数:(百万次/十亿次/万亿次/千万亿次) / 每秒s
多个时钟周期可以组成一个CPU周期,一条指令执行周期需要多个CPU周期
CPU周期
指的是机器周期
一个微程序周期
对应一个指令周期
时钟频率200MHz = 2*10^8个时钟周期
时钟周期数(CPI)÷ 时钟频率 = 时钟周期 * 时钟周期数(CPI) = 所需运行时间
执行时间 = 时钟周期 指令数 时钟周期数(CPI)
程序状态字(PSW)是计算机系统的核心部件,属于控制器的一部分。PSW用来存放两类信息:
- 当前指令执行结果的各种状态信息,如有无进位、有无溢出、结果正负、结果是否为零、奇偶标志位等。
- 存放控制信息,如允许中断等。
有些机器中将PSW称为标志寄存器
不同处理器的CPI问题
- 单周期CPU:指令周期 = 时钟周期 => CPI = 1(单周期处理器中所有的指令周期为一个时钟周期,所有指令都在一个时钟周期内完成)
- 多周期CPU:指令周期 = 多个时钟周期 => CPI > 1
- 基本流水线CPU:优化到一个流水线为一个时钟周期进入流水新状态后,每过一个时钟周期完成一条指令的执行 => CPI = 1
- 超标量流水线CPU:一个流水新,即一个时钟周期可执行完成多条指令 => CPI < 1
可见与透明
- 对所有人可见
- PSW
- PC
- 对所有人透明
- MAR
- MDR
- IR
- Cache
- 关段式虚拟存储器的分段方式
- 对应用程序员透明
- 暂存寄存器
- 虚拟寄存器
- 对汇编程序员可见
- PC
- ACC
- 基址寄存器
- 标志寄存器
- 状态寄存器
- 通用寄存器
- 对系统程序员可见
- 虚拟存储器
数据的表示和运算 - 1
进位计数法和不同进制数的相互转换
每个数位所用到的不同符号的个数称之为基数
- 一进制
- 二进制
符号:0、1
- 八进制
符号:0、1、2、3、4、5、6、7
- 十进制
符号:0、1、2、3、4、5、6、7、8、9
- 十六进制
符号:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
N位二进制补码定点小数(含1位符号位)可以表示2^N个数
十进制的可以表视2 * 10^N-1个数(最高位只能取0或1,以表示正负)
转化方式 b进制
- AnAn-1...A3A2A1
= An bn-1 + An-1 bn-2 + ... + A3 b2 + A2 b1 + A1 * b0
- AnAn-1...A3A2A1 . A0A-1A-2...
= An bn-1 + An-1 bn-2 + ... + A3 b2 + A2 b1 + A1 * b0 *+ A0 b-1 + A-1 b-2 + A-2 b-3** (加粗为小数部分,前面为整数部分)
- 结论:十进制数转化为其他进制数就是求Ai的过程
- 方法:
- 对于整数部分,第i次除以基数b所得到的余数即为Ai;(i为1、2、...、n)
- 对于小数部分,第i次乘以基数b所得到的整数部分即为A-i。(i为0、1、...、n,注意每次乘法 之后要把个位数置0)
二进制转八进制、十六进制
- 二进制取3位(八进制)、4位(十六进制)数字进行转换。(不足补0)
BCD和奇偶校验
8421码
- 0000
- 0001
- 0010
- 0011
- 0100
- 0101
- 0110
- 0111
- 1000
- 1001
例子:
- 83: 1000 0011
- 3: 0011
- 86: 1000 0110
- 83+86=169: 0001 0000
+0110(6)
1001(当两个加数对应上的数字的相加结果大于或等于10的时候,则需要辅助进位,加上一个6)0001 0110 1001
在8421码中,1010~1111(二进制)(即:10~15十进制)是不使用的
余3码
在8421码的基础上加3得到
2421码
权值由高到低为2、4、2、1,特点是大于等于5的4位二进制数高位为1,小于5的高位为0
校验码
原理:增加冗余码
奇偶校验码
- 奇校验码:整个校验码中1的个数为奇数
- 偶校验码:整个校验码中1的个数为偶数
信息码进行低位增设校检码,若信息码1的个数为偶数则尾部加0形成偶校验码,如果信息码1的个数为奇数则尾部加1形成偶校检码。(奇校检码则相反)
海明码
1010
设:数据有m(message)位,校检码有p(parity)位(即冗余位)。总位数 = m + p
则:校检码一共有2^p种取值
若想通过校检码指出任一位上发生的错误必须满足:2^p - 1 >= m + p
校检码放在2^n(n=0、1、2...)位置上
所有信息位的位置编号把它们转成二进制转换的结果中,最后一位是1的选择与P1一组,倒数第二位是1的选择与P2一组...以此类推。
- 信息序列16位,若想构成能发现两位错误
且
能纠正一位错误的海明码,至少需要加几位校检位?- 2^p - 1 >= m + p(该方法错误,该公式码距为p-0=3+0=3,错误2位纠错1位,需要以下纠错理论,正确如下)
- m = 16,解出p
码距(海明距离)
同一编码规则下得两码字间对应位置上不同二进制位得个数
- 1101
1
11
- 1101
0
10
则码距等于2
编码得码距为其中任意两码字间得最小码距
纠错理论:L - 1 = D + C,D >= C(L为编码码距,D为检错位数,C为纠错位数)
2^p - 1 >= m + p 码距为3 ( 码距 p-i = 3+i )
对于码距为4的海明码,有2^(p-1)-1 >= m + p,有发现两位错误并纠正一位错误(D+C=2+1=3)的能力。(采取该方法即可解决以上题目,L=p-1=3+1=4,L-1=m+p=3,解出p>=6)
一些相关结论
- 在一个码组内要检测到X个错误位,要求码组码距应满足:D >= X + 1
- 在一个码组内要纠正Y个错误位,要求码组码距应满足:D >= 2Y + 1
- 在一个码组内要纠正Y个错误位且同时能检测到X个错误位,要求码组码距应满足:D >= X + Y + 1
循环冗余校验码(CRC)
-
M(x) = x^3 + 1
- =
1
x^3 +0
x^2 +0
x^1 +1
x^0 (得出初校检码:1001
) - 根据
最大次方的值 = 3
,在初校检码后添加3个0
,得出1001000
- =
-
G(x) = x^3 + x + 1
- =
1
x^3 +0
x^2 +1
x^1 +1
x^0 (得出初校检码:1011
) - 根据
最大次方的值 = 3
,在初校检码后添加3个0
,得出1011000
- =
最后根据如图,得出循环冗余校检码
。
判断校检码对错:
各别注意问题
- 具有p校验位(检测位)的多项式能够检测出
所有长度小于或等于p的突发错误(检测能力,没有纠错能力)
- 长度等于p+1的错误逃脱的概率是1/2^(p-1)
- 长度大于p+1的错误逃脱的概率是1/2^p
大小端
- 大端是高字节存放到内存的低地址(从低到高的存放顺序)
- 小端是高字节存放到内存的高地址(从高到小的存放顺序1122 3344 5566 7788H则从右往左)
定点数的原码和补码表示法
真值和机器数
真值是机器数所代表的实际的值
机器数是真值在计算机中的表示
- +5
0101
(第一位表示正负数) - -5
1101
(正数为0,负数为1)
无符号数和有符号数
- 四位二进制无符号:
- 0000 ~ 1111
- 0 ~ 15
- 四位二进制有符号:
1
111 ~0
111- -7 ~ 7
定点数的表示和运算
- +1110 | 0
,
1110 - -1110 | 1
,
1110 - +0.1110 | 0
.
1110 - -0.1110 | 1
.
1110
真值:X = +/-x1x2x3...xn
机器数的有符号数,有原码、补码、反码和移码四种形式:
X表示真值,则:
- [X]原,表示X所对应的原码
- 真值:X = +x1x2x3...xn
- [X]原 = 0x1x2x3...xn
- 真值:X = -x1x2x3...xn
- [X]原 = 1,x1x2x3...xn
- 真值:X = +0.x1x2x3...xn
- [X]原 = 0.x1x2x3...xn
- 真值:X = -0.x1x2x3...xn
- [X]原 = 1.x1x2x3...xn
- [X]补,表示X所对应的补码
- 真值:X = +x1x2x3...xn
- [X]补 = 0x1x2x3...xn
- 真值:X = -x1x2x3...xn
- [X]补 = 100...0(n个0) - |X|
- 真值:X = +0.x1x2x3...xn
- [X]补 = 0.x1x2x3...xn
- 真值:X = -0.x1x2x3...xn
- [X]补 = 10.00...0(n个0) - |X|
- [A + B]补 = [A]补 + [B]补
- mod 2^(n+1)(整数), mod 2(小数)
- [A - B]补 = [A]补 + [-B]补
- mod 2^(n+1)(整数), mod 2(小数)
- n是机器字长。符号位也参与运算
- [X]反,表示X所对应的反码
- 真值:X = +x1x2x3...xn
- [X]反 = 0x1x2x3...xn
- 真值:X = -x1x2x3...xn
- [X]反 = 111...1(n个1) - |X|
- 真值:X = +0.x1x2x3...xn
- [X]反 = 0.x1x2x3...xn
- 真值:X = -0.x1x2x3...xn
- [X]反 = 1.11...1(n个1) - |X|
- 真值:X = +x1x2x3...xn
- [X]移,表示X所对应的移码
- [X]移 = 2^n + x (2^n > x >= -2^n,其中机器字长n+1位)
- 只能表示整数
- 对0得表示唯一:100...0(n个0)
- 对同一个真值,其移码和补码仅符号不同(由此可知移码符号1表示正,0表示负)
- 移码全0为最小值(-2^n),全1为最大值(2^n-1)
- 移码字面即反映了数值的大小,加上只能表示整数,因此常用来表示浮点数阶码 乘法:×n = 除了符号位,左移n位 除法:/n = 除了符号位,右移n位
当使用补码表示时,如果符号位相同,则数值位越大,码值越大。
原码和补码互相转换:
- 对于正数:[X]原 = [X]补
- 对于负数:
- 原码符号位不变,数据位取反,末位(最后一个数据位)加一得补码(即最后一位不变)
- 补码
符号位不变
,数据位取反
,末位(最后一个数据位)加一得原码(即最后一位不变)
加减运算的溢出判断
只有在正数加正数、负数加负数、正数减负数和负数减正数的时候才有可能发生溢出(一定是有符号的数才会产生溢出,无符号整型不会产生溢出,只会舍弃)
- 用一位符号位来做溢出判断
结果符号与原操作数符号不同则溢出(因减法操作都被转化为加法,所以不会出现操作数符号相异的情况)
- 用两位符号位来做溢出判断。
用两位符号位表示的补码成为变形补码
,00表示正,11表示负,变形补码两个符号为都参加运算。
- 00:结果为正,无溢出
- 01:正溢出
- 10:负溢出
- 11:结果为负,无溢出
- 用一位符号位根据进位情况来做溢出判断
符号位的进位和数据最高位的进位相同则无溢出,否则溢出
求补码的极端
- 求有
n
个“1”和m
个“0”所组成的n+m
位二进制补码,能表示的最小整数,则可以取1..(m个0)..(n-1个1)
与(n个1)..(m个0)
的极端组成部分,再换成原码对比得最小整数。
按字边界对齐存储
- 变量的起始地址为其大小的整数倍。如short型占两个字节,其起始地址就要从偶数地址开始。
因为指令按照字边界对齐存放,所以PC只需要用于判别指令字的不同
如某计算机主存空间是4GB,字长是32位,按照字节编址。采用32位定长指令格式,若指令按照字边界对齐存放:即4GB/32bit = 2^30条指令字,所以仅需30位。
可见,在此处,边界对齐存放这一条件代表着PC对任一指令字寻址的时候,仅需寻址到它的起始地址
,也就是每一地址对应着4B的指令字。
原码、反码、补码的取值范围
进位位
- 带进位位的则溢出数据放在外面存放
- 不带进位位的则溢出数据放在结尾
零扩展
在移动或转换操作中,零扩展是指将目标的高位设置为零,而不是将其设置为源的最高有效位的副本
。 如果操作的源是无符号数字,则零扩展通常是在保留其数值的同时将其移至更大字段的正确方法,而符号扩展对于有符号数字是正确的。
高位直接补0的扩展,如1111变成00001111,补0并不影响计算结果,这个很好理解,但如果二进制数带了符号,就不一样了,因为最高位是符号位,所以1111就从一个负数,变成了一个正数00001111,由此,产生了符号扩展。
在x86和x64指令集中,movzx指令(“零扩展移动”)执行此功能。 例如,movzx ebx,al将一个字节从al寄存器复制到ebx的低位字节,然后用零填充ebx的其余字节。
在x64上,大多数写入任何通用寄存器的低32位的指令都会将目标寄存器的高一半置零。 例如,指令mov eax,1234将清除rax寄存器的高32位。
符号位扩展
符号扩展是计算机算术中在保留数字的符号(正/负)和值的同时增加二进制数的位数的操作
。 这是通过根据所使用的特定带符号的数字表示的过程,将数字附加到数字的最高有效位来完成的。
例如,如果使用六位表示数字“ 00 1010”(十进制正数10),并且符号扩展操作将字长增加到16位,则新的表示形式就是“ 0000 0000 0000 1010”。因此,既保持了价值,又保持了价值为正的事实。
如果用10位表示用二进制补码值“1111110001”(十进制负15),并且将其符号扩展为16位,则新表示为“1111 1111 1111 0001 ”。因此,通过在左侧填充ones,可以保持负号和原始编号的值。 1111 1111 1111 0001
例如,在Intel x86指令集中,有两种方式进行符号扩展:
- 使用指令cbw,cwd,cwde和cdq:分别将字节转换为字,将字转换为双字,将字转换为扩展双字和将双字转换为四字(在x86上下文中,一个字节有8位,一个字有16位,一个双字和扩展的双字32位和四字64位)
- 使用由movsx(“带符号扩展的移动”)指令系列完成的符号扩展移动之一。
定点数的移位运算
- 算数移位(左0右1)
符号位不变,左移丢高位,右移丢低位,添0规则:
- 正数
- 原、补、反 添0
- 负数
- 原 添0
- 补 左移添0,右移添1
- 反 添1
- 16位扩展为32位
- 看16位最高次,是1则补1,是0则补0
- 逻辑移位(都是添0)
当成无符号数来处理,左移丢高位,低位添0;右移丢低位,高位添0
定点数乘法运算(原码)
-
方法1
-
方法2
从B的低位(右往左)进行扫描,遇到1则加A,遇到0则加0,将数右移一位(余出的数保留出来),以此类推
适用于原码乘法,符号位单独处理,结果符号为S1+S2,数值部分按绝对值计算
定点数乘法运算(补码)
补码做乘法运算,则补码的符号位要取2
位。
初始化:ACC为[-A]补码
,MQ为[B]补码(最低位补0)
与原码相同,但是ACC的移位低位将补到MQ中高位中。(注意:乘数为n位,MQ就需要取n+1位,低位补0)
次低位减最低位等于1
则加[-A]补码
,次低位减最低位等于-1
则加[A]补码
,次低位减最低位等于0
则加0
。将数右移一位(移入ACC,ACC也右移一位补到MQ)
,以此类推。
最后得出的ACC和MQ结合,并对MQ进行从低位到高位删减(过程右移多少位减去多少位),即是所求[A×B]补码。
Booth算法
定点数除法运算
- 原码恢复余数法
[|A|]
添加
[-|B|]补码,如果符号位为1
,则添加[|B|]原码,恢复原形,并进行左移1位,再进行添加
[-|B|]补码,以此类推,最终得出商。
- 不恢复余数法(加减交替法)
[|A|]添加
[-|B|]补码,并进行左移1位,如果符号位为1
,则添加[|B|]原码,再进行左移1位,进行添加
[-|B|]补码,以此类推,最终得出商。
- 补码除法
浮点数的表示和运算
阶符
即阶数符号位阶码数值部分
即移码(阶数+127)[二进制]
数符
即数值符号位-
尾数数值部分
即真值[二进制]
正数
的原码、反码和补码是一样
的负数
则按照原来的定点数转换
科学计数法
规格化浮点数
浮点数的加减法
过程:
- 求阶差用来对阶
- 对阶,小阶向大阶梯看齐
- 尾数求和
- 结果规格化
- 舍入
- 溢出判断
结果规格化
IEEE754标准
范围表
ALU
全加器
加法器
- 进位生成信号
- 进位信号g = XiYi
- 进位传递信号p = Xi ⊕ Yi (异或)
- 0⊕0=0 0同0异或,结果为0
- 0⊕1=1 0同1异或,结果为1
- 1⊕0=1 1同0异或,结果为1
- 1⊕1=0 1同1异或,结果为0
存储系统
-
ROM 只读不写
-
RAM 可读可写(WR连接)
存储芯片和位扩展
-
位扩展 1k × 8位
-
芯片数量
一个存储器的容量假定为M×N
,若要使用1×k
的芯片(1\<M, k<N),需要在字和位方向上同时扩展,此时共需要[M/1]×[N/k]
个存储芯片。
存储芯片和字扩展
- 字扩展
2K × 4位
存储器与CPU的连接
芯片容量为512×8位
,则该数据线是8位
,地址线为n位(2^n=512)
。(RAM需要读控制线和写控制线,则地址线位n+2位
,ROM为n+1位
)。总需引出8+n位
线。
芯片数量 = 存储器
单译码方式的地址输入线为n
,则译码输出线有2^n
根。双译码方式输出线有2^(n/2) * 2
根
- 片选线 
存储器的传输速率
宽度 / 存储周期
DRAM芯片(动态半导体存储器)
DRAM 支持行列地址分时复用
,存储基元构成一个矩阵,通过分时的传输行列地址来定位每一个存储基元。(地址线仅需要n/2位(2^n=512)
)刷新以行
为单位。
主存用的DRAM。集成度更高,成本更低,速度慢,需要刷新(刷新一次占用一个存储周期)
SRAM芯片(静态半导体存储器)
SRAM 采用行列独立技术
,存储基元构成一个数组,行列地址一次性传输。(地址线需要n位(2^n=512)
)
Cache用的SRAM。集成度低,成本高,速度快,不需要刷新
ROM类型
- MROM
- 生产过程中写入,不可更改
- PROM
- 允许用专门设备写入,写入后不可更改
- EPROM
- 允许用专门设备多次改写,次数有限
- Flash存储器
- 不加电长期保存信息,快速擦除重写
- 固态硬盘
- 不加电长期保存信息,快速擦除重写
RAM类型
- SRAM
- DRAM 需要刷新
- SDRAM 同步动态随机存取内存,在工作期间
需要周期性刷新
(有D都要刷新)
读/写控制线与片选线
- 在上述芯片的引脚总数目下,需再加上
读/写控制线
与片选线
。- 读/写控制线(决定芯片进行读/写操作)
1
根 - 片选线(选择存储芯片[半导体存储器由许多芯片构成])
1/2
根
- 读/写控制线(决定芯片进行读/写操作)
双端口RAM与多模块存储器
无冲突读写控制
- 当两个端口地址不同时,在两个端口上进行读写操作,一定不会发生冲突。
- 当两个端口地址相同时,在两个端口上不同时进行读写操作,一定不会发生冲突。
- 当两个端口地址相同时,在两个端口上同时进行读操作,一定不冲突。
有冲突读写控制
- 当两个端口地址相同时,在两个端口上同时进行读写操作,一定会发生冲突。
- 当两个端口地址相同时,在两个端口上同时一读一写,一定会发生冲突。
解决办法:置busy
为0,来避免对同一地址存储单元的同时访问
单体多字存储器
多体并行存储器
-
高位交叉编址
00 | 000
-
低位交叉编址
000 | 00
高位与低位编址
整体方块 - 存储周期
蓝色方块 - 总线传输周期
- 高位交叉编址(顺序存储)
顺序一个存储周期访问一个字,三个存储周期访问三个字。
- 低位交叉编址(交叉存储)
最多同时运行体数m = 访存周期(所需存储周期)T / 总线周期r
总容量/编址单位的大小 = 地址的个数 = 存储单元的个数
存储单元个数 * 数据位数 = 总容量
位数不能缩小
- 与门: 全1 -> 1
- 或门: 有1 -> 1
- 异或:
- 相同 -> 0
- 不同 -> 1
0...0(待选地址n-m位)xx(片选地址2位)xx...xx(存储地址m-2位)
顺序、交叉存储带宽计算(传输总量 / 传输总周期)
地址分块和直接映射
行长 = 2^n , n = 块内地址。
主存地址空间大写 = 行长 * 主存块
MAR
位数 = 存储单元个数MDR
位数 = 存储字长
主存 - Cache地址映射
- 直接映射
每个主存块只能放到同一个特定位置:
Cache块号 = 主存块号 % Cache总块数
(若Cache总块数=2^n,则`主存块号末尾n位直接反映它在cache中的位置)
- 全相联映射
主存块可以放在Cache的任意位置
相联存储器是按内容指定方式
进行寻址访问的存储器(如使用全相联映射方式的Cache和快表)
- 组相联映射(二路)
Cache块分为若干组,每个主存块可放到特定分组中的任意一个位置
组号 = 主存块号 % 分组数
(主存块号 % 2^2,相当于留下最后两位)
三种映射方式下的主存地址格式
- 主存容量为
512k × 16bit
,cache容量为4096 × 16bit
,块长为4个16位的字(按字寻址)。画出三种映射方式下的主存地址格式。
命中率、字块替换和写策略
命中率问题
Cache字块替换算法
- 直接映射无需考虑替换算法,直接替换
- 对于全相连和组相联,因为某一主存块可能映射到Cache中的多个块中,因此存在以下替换算法:
- 先进先出算法(FIFO)
- 近期最少使用算法(LRU)(需要两位替换控制位)
- 最不经常使用算法(LFU)
- 随机算法(RAND)
Cache写策略
- 全写法
- 写回法
需要加一个脏位
和有效位
(共2bit)
- 写策略
平均访问时间计算
h为Cache命中率,tc为一次Cache访问时间,tm为一次主存访问时间
- 系统先进行Cache访问,Cache命中则结束;Cache未命中,则再进行主存访问。则平均访问时间计算公式为:
h × tc + (1-h)(tc+tm)
- 系统同时进行Cache访问和主存访问,Cache命中,则主存访问失效;Cache未命中,则等待主存访问。则平均访问时间计算公式为
h × tc + (1-h)tm
虚拟存储器
页式虚拟存储器
- 虚拟地址中随后
n
为(或虚页号中低n
位)为TLB组号
快表(TLB)
- 用一个特殊Cache来跟踪记录最近用过的页表表项。页表表项主要用于地址转换,因为在TLB中查找页表项速度很快,所以TLB也被称为快表。TLB通常很小,一般用
全相联方式
或组相联
方式。
段式虚拟存储器
页式与段式虚拟存储器的优缺点
段页式虚拟存储器
White Through(直写策略)
指令保存完数据以后,Cache为命中的,但由于直写策略,也要同时写回主存。(至少一次访存)
不需要脏位,需要有效位
时间、空间局限性
- 时间局限性:某些指令被执行后,不久后可能会在此执行,某些数据被访问后,不久可能会再次访问。
- 空间局限性:一旦程序访问了某个存储单元,不久后其相邻的存储单元也可能被访问。
Cache缺失率
*字编址(必须记住)
- 按
字节
编址, 数据寄存器为8位
,占8bit = 1B
- 按
半字
编址,数据寄存器为16位
,占16bit = 2B
- 按
字
编址,数据寄存器为32位
,占32bit = 4B
DRAM存储器的刷新
-
集中刷新。把刷新操作集中到一段时间内集中进行(集中“歼灭”)
-
分散刷新。把刷新操作分散进行,周期性地进行(分散“歼灭”)不存在死时间
-
异步刷新。是一个折中方案,既不会像集中刷新那么大费周章,产生集中的固定时间,也不会像分散刷新那么频繁地刷新,而是有计划地刷新,时间分配十分合理。
-
刷新信号周期 = 刷新间隔时间 / 芯片行数
死区、死时间率
- 死区 = 存储周期时间 * 刷新一遍所需的存储周期数量
- 死时间率 = (死区 / 刷新周期) * 100%
Cache缺失处理与缺页处理的时间开销
Cache缺失处理的时间开销比缺页处理的时间开销小。因为缺页处理的需要访问磁盘,而Cache缺失只访问主存。
Cache可以采用直写(Write Through)策略,而修改内容采用回写(Write Back)策略
直写策略需要同时写快速存储器和慢速存储器,而写磁盘比写主存慢得多,所以在Cache-主存层次,Cache可以采用直写策略,而在主存-外存(磁盘)层次,修改页面内容采用写回策略。
- 回写
- tag
- 脏位 1bit
- 有效位 1bit
回写法的Cache总容量位数至少 = tag + 数据区(块大小 * Cache行数)
- 直写
- tag
- 有效位 1bit
Cache 相关计算公式
- Cache总位数或总容量 = 标记项的总位数 + 数据块的总位数
- 标记项总位数 = 有效位 + 脏位(全写法没有脏位,写回法有脏位)+ 替换控制位(有替换算法时)+ 标记位(与主存的高位相同)
- 全相联映射:Tag + 字块内地址
- 直接映射:Tag + Cache字块地址 + 字块内地址
- 组相连映射:Tag + 组地址 + 字块内地址
- Cache 组号 = 主存块号 % Cache 组数
Cache是由标记和数据组成的,在计算Cache总位数时可分别计算。
Cache的单位是块(传送),CPU的单位是字(写入信息)
指令系统
指令格式(地址码)
指令格式(操作码)
定长编码
- OP(N位) A(m <= 2^n)
变长编码
- OP(任意长度) A (任意长度)
变长编码(扩展操作码)
- OP(操作码字段长度随地址码变化,地址码数量变少,操作码变长) A1 A2...An(n数量越小,则地址码长度越小)
优缺点、适用环境
- 定长操作码
- 优点:计算机的硬件设计简单,指令译码和执行速度快
- 缺点:当指令数量增多、指令单独为操作码划出固定的多位后,留给表示操作数地址的位数就会严重不足
- 适用环境:适用于字长较长的计算机系统,如32位或32位以上
- 变长操作码
- 优点:在比较短的指令字中,既能表示出比较多的指令条数又能尽量满足操作数地址的要求
- 缺点:计算机的硬件设计复杂,指令译码和执行速度较慢
- 适用环境:适用于字长较短的计算机系统,如16位或16位以下
扩展操作码 地址指令
操作数地址码位数 = (指令字长 - 操作码位数) / 不同操作码个数
总指令条数 = 2^(操作码位数) = 各地址指令数量相加
X-n地址扩展窗口数 = ((总指令条数 - X地址指令条数) 2^操作数地址码位数 - X-1地址指令条数) 2^操作数地址码位数 - X-2地址指令条数)* 2^操作数地址码位数 ... - X-n地址指令条数(零地址没有扩展窗口,则可以根据该公式得到零地址指令条数)
转移指令
执行程序时,有时机器执行到某条指令时,出现了几种不同结果,这时机器必须执行一条转移指令,根据不同结果进行转移,从而改变程序原来执行的顺序。
主要包括三类:
- 转移指令(包括无条件转移和有条件转移)
- 程序调用和返回指令
- 循环控制指令
指令格式
-
寻址方式 操作码OP | 寻址方式 | 地址码(形式地址)
-
寄存器-存储器型 操作码OP | 寄存器 | 地址码(形式地址)
-
基址寄存器
-
操作码 | 寄存器 | 寻址方式 | 基址寄存器编号 | 地址码(形式地址)
寻址方式
指令寻址
指令寻址有顺序寻址
和跳跃寻址
两种方式。
数据寻址
-
立即寻址
- OP
- 寻址特征(立即寻址特征)|(直接寻址特征)|(隐含寻址特征)|(间接寻址特征)
- 形式地址A(立即数)|(操作数真实地址)
-
直接寻址
- OP
- 寻址特征(直接寻址特征)
- 形式地址A(操作数真实地址)
-
隐含寻址
- OP
- 寻址特征(隐含寻址特征)
- 形式地址A
- ACC
-
间接寻址
- OP
- 寻址特征(间接寻址特征)
- 形式地址A(EA=(A))(寄存器编号)
- A => EA
- EA => 操作数
-
寄存器间接寻址
- OP
- 寻址特征(寄存器间接)
- 形式地址A(寄存器编号)
- A => Ri
- |Ri| => EA
- EA => 操作数
-
基址寻址
- 可扩大寻址范围(基址寄存器的位数大于形式地址A的位数)
- 用户不必考虑自己的程序存于主存的哪一空间区域,故有利于多道程序设计
- 说明:基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)。当采用通过寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容仍由操作系统确定。
-
变址寻址
- 可扩大寻址范围(变址寄存器的位数大于形式地址A的位数)
- 在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中的任意数据的地址。特别适合编制循环程序。
-
相对寻址
-
设相对寻址的转移指令,第一字节为操作码,第二三字节为相对位移量(补码),
数据在存储器中采用以低字节地址为字地址的存储方式
,每当CPU从存储器取出一个字节时PC自增1:(PC)+1 -> PC -
大端:内存中的
高位字节
存放数据的低位字节(低地址)
,内存中的低位字节
存放数据的高位字节
。 -
小端:内存中的
高位字节
存放数据的高位字节(高地址)
,内存中的低位字节
存放数据的低位字节
。 -
堆栈寻址
标志寄存器
- 错位标志 CF
- 零标志 ZF
- 符号标志 SF
- 溢出标志 OF
无符号整数只关于CF,ZF
CISC、RISC
CPU
功能与结构
- 指令控制
控制指令的执行,即完成取指令,分析指令,执行指令的操作
- 操作控制
控根据指令生成操作信号,并将其送入相应的部件,进而操作这些部件进行相应的动作
- 时间控制
对各种操作加以时间上的控制
- 数据加工
对数据进行算术逻辑运算
- 中断处理
对计算机运行过程中的异常情况和特殊请求的处理
CU和ALU的功能
- CU功能
- 取出指令,并指出下一条指令在主存中的位置
- 对指令译码,产生相应的操作信号进行控制部件进行相应的动作
- 指挥并控制CPU,主存和输入输出设备之间的数据流向
- ALU功能
- 执行算数和逻辑运算,并执行逻辑测试
CPU的结构组成
- CPU
- ALU
- 寄存器
- 中断系统
- CU
CPU的寄存器
- 通用寄存器
数量多,功能多,对用户可见,可以由程序编址;ACC,是一个通用寄存器。
可有计数逻与移位逻辑和暂存数据、参与运算、保存结果。(可以存放数据和地址)
位数取决于(机器字长)
- 专用寄存器
- 程序计数器(PC)(位数取决于
存储器的容量
) - 指令寄存器(IR)(位数取决于
指令字长
)指令译码是对指令的操作码字段
进行译码。 - 存储器数据寄存器(MDR)
- 存储器地址寄存器 (MAR)
- 状态标志寄存器(PSWR)
- 程序计数器(PC)(位数取决于
PC
转移指令
- 若跳转,
PC = PC + 1 + offset(转移指令的目标地址偏移量)
- 若不跳转,
PC = PC + 1
指令执行过程
指令周期
- 从取除一条指令执行到取出下一条指令执行的间隔时间。即一条指令从存储器读出到执行完成所用的全部时间
- 7步骤:
- 取指令
- 指令译码
- 计算机操作数地址
- 取操作数
- 运算
- 存结果
- 中断检测
取指周期的数据流
间指周期的数据流
中断周期的数据流
各运算寄存器
存放指令的寄存器是指令寄存器(IR),存放程序状态字的寄存器是程序状态字寄存器(PSWR),这些寄存器都不属于通用寄存器。其次,通用寄存器并不一定本身都具有计数和移位功能。通常,CPU中设置有多个通用寄存器,通用寄存器可以由程序编址访问。通用寄存器可用来存放原始数据和运算结果,有的还可以作为变址寄存器、计数器、地址指针等。另外,通用寄存器的内容一般都是可被程序员改变的,并且改变之后并不影响机器的正常运行,所以像指令寄存器、数据寄存器、状态寄存器都不属于通用寄存器。
控制器与数据通路
控制器的输入输出
- 输入信号
- 时钟
- 完成每个操作都需要占用一定的时间
- 各个操作之间有先后次序之分
- 因此控制单元需要在时钟的控制下按照一定的顺序发出控制信号
- 指令寄存器(IR)
- 指令寄存器的操作码字段决定了指令的操作类型,因此是控制单元的输入信号
- 标志
- 控制单元有时候需要根据CPU当前的状态来产生相应的控制信号,因此“标志”也是输入信号
- 来自总线的控制信号,如中断请求等
- 时钟
- 输出信号
- CPU内的控制信号
- CPU内的数据传输,或控制ALU执行不同的运算等
- 送至系统总线的信号
- 如控制主存读/写,I/O操作,中断响应等
- CPU内的控制信号
控制信号与数据通路
CPU内部采用总线方式的控制信号与数据通路
- 取指周期
- PC和MAR有效,完成
(PC)-> Bus -> MAR
- 通过总线控制向主存发读写信号
1 -> Bus -> R
- MDR有效,存储器通过数据总线,完成
M(MAR) -> Bus -> MDR
- MDR和IR有效,完成
(MDR) -> Bus -> IR
(PC) + 1 -> PC
- PC和MAR有效,完成
- 间指周期
- MDR和MAR有效,将形式地址送往MAR,即完成
Ad(MDR) -> Bus -> MAR
- 通过总线控制向主存发读命令
1 -> Bus -> R
- MDR有效,存储器通过数据总线,完成
M(MAR) -> Bus -> MDR
- MDR和MAR有效,将形式地址送往MAR,即完成
- 执行周期
- MDR和MAR有效,将有效地址经内部总线送入MAR,即完成:
(MDR)-> Bus -> MAR
- 通过总线控制向主存发读命令
1 -> Bus -> R
- MDR有效,存储器通过数据总线,完成
M(MAR) -> Bus -> MDR
- MDR和Y有效,将操作数送至Y,即
(MDR) -> Bus -> Y
- ACC和ALU同时有效,同时CU向ALU发"ADD"加控制器信号,使ACC的内容和Y的内容相加结果送寄存器Z,即
(ACC)+ (Y) -> Z
- Z和ACC有效,将结果存入ACC,即
(Z) -> Bus -> ACC
- MDR和MAR有效,将有效地址经内部总线送入MAR,即完成:
CPU内部不采用总线方式的控制信号与数据通路
-
取指周期
- C0有效,完成
(PC) -> MAR
- C1有效,打开MAR送往地址总线的输出门
- 通过总线控制向主存发读命令
1 -> R
- C2有效,打开数据总线送至MDR的输入,即:
M( MAR)-> MDR
- C3有效,打开MDR和IR之间的控制门,实现
(MDR) -> IR
- C4有效,打开指令操作码送至CU的输出门,即
OP(IR) -> CU
(PC) + 1 -> PC
- C0有效,完成
-
周期的数据通路:
- (PC) -> MAR
- M(MAR) -> MDR
- (MDR) -> IR
-
运算器和主存之间进行存储访问的数据通路:
- M(MAR) -> MDR
- (MDR) -> ALU
- ALU -> ACC
-
LDA X; 的数据通路(X为主存地址,LDA的功能是(X) -> ACC)
- (X) -> MAR
- M(MAR) -> MDR
- (MDR) -> ALU
-
LDA Y; 的数据通路(Y为主存地址,ADD的功能是(ACC) + (Y) -> ACC)
- (Y) -> MAR
- M(MAR) -> MDR
- (MDR) -> ALU
- ACC -> ALU
- ALU -> ACC
-
STA Z; 的数据通路(Z为主存地址,STA的功能是(ACC) -> Z)
- (Z) -> MAR
- (ACC) -> MDR
- (MDR) -> M(MAR)
多级时序系统
时钟周期 = CPU主频的倒数
组合逻辑(硬布线)控制
- 取值周期操作节拍安排:
- T0: (PC) -> MAR, 1 -> R
- T1: M(MAR) -> MDR
- T2: (MDR) -> IR, OP(IR) -> CU, (PC) + 1 -> PC
- 间指周期操作节拍安排:
- T0: Ad(IR) -> MAR, 1 -> R
- T1: M(MAR) -> MDR
- T2: (MDR) -> Ad(IR)
- 执行周期(加法)操作节拍安排:
- T0: Ad(IR) -> MAR, 1 -> R
- T1: M(MAR) -> MDR
- T2: (ACC) + (MDR) -> ACC
- 中断周期操作节拍安排:
- T0: a -> MAR, 1 -> W
- T1: (PC) -> MDR
- T2: (MDR) -> M(MAR), 向量地址 -> PC
微程序控制
- 微指令基本格式:
- 操作控制
- 顺序控制
- 取指周期
- 取指周期微程序首址送入
CMAR: M -> CMAR;
- 取微指令:
CM(CMAR) -> CMDR;
- 产生微操作命令:第一条微指令操作控制字段中为1的各位发出控制信号,如
(PC) -> MAR, 1 -> R;
- 形成下一条微指令地址:由此条微指令的顺序控制字段指出下一条微指令地址为
M+1
,送至CMAR,即Ad(CMDR) -> CMAR;
- 形成下一条微指令:将对应控存
M+1
地址单元中的第二条微指令读到CMDR中,即CM(CMAR) -> CMDR;
- 产生微操作令:第二条微指令操作控制字段中为1的各位发出控制信号,如
M(MAR) -> MDR
,使对应主存单元中的指令读至MDR; - 形成下一条微指令地址:由此条微指令的顺序控制字段指出下一条微指令地址为
M+2
,送至CMAR,即Ad(CMDR) -> CMAR;
- 取指周期微程序首址送入
- 执行周期
- 形成LDA微程序首地址:当LDA指令存入IR后,其操作码直接送到微地址形成部件,该部件的输出即为取数指令微程序首地址P,且将P送至CMAR,即
OP(IR) -> 微地址形成部件 -> CMAR;
- 取微指令:将P地址所对应控存单元中的微指令读到CMDR中,即
CM(CMAR) -> CMDR
- 产生微操作命令:由微指令操作控制字段中为1的各位发出控制信号,如
Ad(IR) -> MAR, 1 -> R; 命令主存读操作数;
- 形成下一条微指令地址:由此条微指令的下地址字段指出
P+1
送至CMAR,即Ad(CMDR) -> CMAR;
- 取微指令,即
CM(CMAR) -> CMDR;
- 产生微操作命令;(第二步)
- 以此类推,直到取数指令微程序的最后一条微指令(地址为
P+2
的那条),并发出操作命令
- 形成LDA微程序首地址:当LDA指令存入IR后,其操作码直接送到微地址形成部件,该部件的输出即为取数指令微程序首地址P,且将P送至CMAR,即
微指令的编码方式
- 直接编码方式
- 字段直接编码方式
- 字段间接编码方式
- 混合编码方式
注意:不论哪种编码方式,都要留出一种状态表示不发控制信号(微命令)
在微程序控制器中,控制部件向执行部件发出的某个控制信号称为微命令
微指令序列地址形成
- 根据机器指令的操作码形成
- 通过硬件直接产生微程序入口地址
- 直接由微指令的下地址字段给出
- 增量计数法:多数情况下后续指令的地址是连续的,因此可采用增量计数法,即
(CMAR)+1 -> CMAR
- 分支转移法:根据各种标志决定微指令分支转移的地址
- 通过网格测试形成
微指令序格式
- 水平型微指令
(可以并行完成多个操作)
直接编码、字段直接编码、字段间接编码和混合编码都属于水平型微指令,特点是一次能定义并执行多个并行操作的微指令
- 垂直型微指令
(一次只能完成一个操作)
操作码类似于机器指令,通常一条微指令有一两个微命令控制一两种操作,不强调并行功能
- 混合型微指令
微指令的具体格式
| 各个微命令的位数 | 判断测试字段位数 | 下地址位数 |
- 控制存储器容量 = 2^下地址位数(单元) * 存储字长(总位数)
任何微指令都要有一个取指操作(多一个公共的微程序)
两种微指令格式的比较
- 水平微指令比垂直微指令并行操作能力强、效率高、灵活性强
- 水平微指执行一条机器指令所需要的微指令数目少,因此速度比垂直微指令速度快
- 水平微指用较短的微程序结构换取较长的微指令结构,垂直型微指令用较长的微程序结构换取较短的微指令结构
- 水平微指与机器指令差别较大,垂直型微指令与机器指令类似
水平型微指令格式设计
- 微指令长度 = 控制字段地址位数 + 测试字段(外部条件) + 下地址字段长度
- 控制存储器的容量 = 可访存储单元的个数( 2 ^ 下地址字段长度) * 存储单元的大小(微指令字长)
三级时序系统包括机器周期、节拍和工作脉冲。三级时序系统是小型机常用的时序系统,在机器周期间、节拍电位间、工作脉冲间既不允许有重叠交叉,也不允许有空隙,应该是一个接一个的准确连接。
微指令结构追求目标
- 有利于减少控制存储器的容量
- 有利于提高微程序的执行速度
- 有利于微指令的修改
- 有利于微指令设计的灵活性
- 有利于缩短微指令的长度
同步控制方式
同步控制方式即固定时序控制方式,各项操作都由统一的时序信号控制
,在每个机器周期中产生统一数目的节拍电位和工作脉冲。这种控制方式设计简单,容易实现,但是对于许多简单指令来说会有较多的空闲时间,造成大量的时间浪费,从而影响了指令的执行速度。
处理器时钟脉冲信号
- 时钟脉冲信号由机器脉冲源发出的脉冲信号经
整形
和分频
后形成 - 时钟脉冲信号的宽度称为
时钟周期
,时钟周期的倒数为机器主频
- 时钟周期以相邻状态单元间组合逻辑电路的
最大延迟
为基准确定
指令流水线
流水线方式的特点
- 把一个任务(一条指令或操作)分解成几个不同的子任务,每个子任务有专门的部件来完成,靠多个部件可并行工作来缩短指令执行的时间
- 每个部件后边都有一个缓冲寄存器,叫锁存器,其作用是
保存本流水段的结果
,共给下一流水段用 - 流水线中各子任务的完成耗时基本相同,否则将引起堵塞和断流
- 只有连续不断的执行同一或类似任务时流水线才能有较好的效率
- 流水线有装入时间和排空时间,装入时间是第一个任务进入流水线到输出流水线的时间;排空时间是最后一个任务进入流水线到输出流水线的时间
影响流水线的因素
- 结构相关
多条指令在同一时刻争用同一功能部件而形成的冲突称为结构相关
- 数据相关
多条指令因重叠操作,可能改变对操作数的读写访问顺序,从而导致了数据相关冲突
指令流水线中出现数据线相关时将受阻,旁路技术
可解决数据相关问题
- 控制相关
主要由转移指令引起
超标量流水线
动态流水新
动态流水线是指在同一时间内,当某些段正在实现某些运算时,另一些段却正在进行另一种运算,这样对提高流水线的效率很有好处,但会使流水线控制变得复杂。
吞吐率
吞吐率 = 指令数量 / (机器周期 * 指令跨度-机器周期) (条指令/秒)
加速比
加速比 = 不采用流水线所需机器周期 / 采用流水线机器周期
时空区
取值(IF)、译码(ID)、执行(EX)、写回(WR)
- 流水线各段处于工作时间的时空区 =
写回(WR) * 指令数量 * 机器周期
- 流水线各段总的时空区 =
写回(WR) * 指令跨度-机器周期 * 机器周期
五阶段流水线
- 取指IF、译码、执行EXC、存储器读MEM、写回Write Back
各个子系统通过数据总线连接形成的数据传送路径称为数据通路,包括程序计数器、算术逻辑运算部件、通用寄存器组、取值部件等,不包括控制部件。
多处理器的基本概念
SISD 单指令流单数据流
- SISD 通常仅包含一个处理器和一个存储器,处理器在一段时间内仅执行一条指令
SIMD 单指令流多数据流
- SIMD 是指一个指令流同时对多个数据流进行处理,一般称为数据级并行技术
MISD 多指令流单数据流
- MISD 是指同时执行多条指令,处理同一个数据(通常不存在)
MIMD 多指令流多数据流
- 指同时执行多条指令分别处理多个不同的数据,MIMD分为多计算机系统和多处理器系统。
总线与IO系统
总线概述
总线是一组
能实现多个部件
间信息传输的线路。(特点:分时性和共享性)
总线分类
按功能分类
-
片内总线(片内总线是指芯片内部的总线,如CPU芯片内部的寄存器与寄存器之间,寄存器与ALU之间等,都由片内总线连接。
-
系统总线(系统总线是计算机系统内各个功能部件间(CPUI、主存、I/O接口)之间互相连接的总线。系统总线有三种:
- 数据总线(传输各部件的数据信息,位数与机器字长和存储字长有关(数据总线位数与存储字长相同,机器字长是数据总线位数的整数倍),数据总线是双向的。
- 地址总线(地址总线用来指出数据总线上源数据或目的数据所在的主存单元或I/O端口的地址;地址总线位数与主存地址空间大小有关;地址总线是单向的)
- 控制总线(控制总线传输控制信息;局部单项整体双向)
-
通信总线(用于计算机系统之间或计算机系统和其他系统之间的总线,又叫外部总线)
按时序控制方式分类
- 同步总线(总线上的数据传输与时钟同步)
- 异步总线(总线上的数据传输与时钟不同步)
按数据传输格式分类
- 并行总线(数据是多为在总线上同时传输的)
- 串行总线(数据是一位一位地在总线上传输的)
系统总线的结构
单总线结构
优缺点:
- 优点:结构 简单,成本低,设备接入简便
- 缺点:多个设备征用唯一的总线,造成数据传输带宽低,且不支持并发
双总线结构
优缺点:
- 优点:将低速设备和高速设备挂在不同的总线上,高速设备挂在存储器总线上,低速设备挂在I/O总线上,然后再通过通道(专门用于输入输出操作的简单处理器)与主存总线连接,以使得低速对高速设备的数据传输影响缩小;
- 缺点:通道访问主存需要经过主存总线,对高速设备还是有一定影响,通道的引入使得硬件设计更为复杂
三总线结构
优缺点:
- 优点:DMA总线的引入使得部分高速I/0设备可以直接访问主存,使得传输速率进一步提高
- 缺点:DMA控制器的引入使得硬件设计更为复杂
系统总线性能指标
- 总线周期
一次总线操作所需要的时间
- 时钟周期
就是机器时钟周期
- 工作频率
总线周期的倒数
- 时钟频率
时钟周期的倒数。时钟周期(us) = 1/时钟频率(MHz) 1us = 0.000001(10^-6)秒
- 总线宽度
总线上能够同时传输的数据位数
- 总线带宽
单位时间内总线上可以传输的数据位数
- 总线复用
一条信号线上分时传输两种信号
- 信号线数
地址总线、数据总线和控制总线的总和
总线其他内容
总线仲裁(总线判优方式)
- 集中仲裁方式
控制逻辑集中于CPU一处
- 分布仲裁方式
控制逻辑分散在与总线连接的各个设备或部件上
集中仲裁方式
BR:总线请求。BG:总线同意
- 链式查询方式(优先级最高,对电路故障最敏感)
- 计数器定时查询方式(优先级顺序可以改变)
- 独立请求方式(裁决速度最快,响应速度最快)
总线操作和定时
总线在双方交换数据的过程中需要时间上的配合,这种关系称为总线定时,实质是一种协议或规则,有同步与异步两种。
总线传输的四个阶段
- 申请分配
主模块(主设备)提出申请,经过总线仲裁机构决定下一个传输周期总线给谁用。
- 寻址
取得了使用权的主模块(主设备)通过总线发送本次要访问的从模块(从设备)地址及有关命令,启动参与本次传输的从模块。
- 传输
主从模块开始数据交换
- 结束 主模块相关信息撤出系统总线,让出使用权
同步定时方式
系统采用统一的时钟信号来协调发送接收双方的传送定时关系
- 优点:规定明确,统一性强,模块间的配合简单一直
- 缺点:从模块时间配合属于强制“同步”,必须在限定时间内完成规定的要求,这就造成必须按照速度最慢的部件来设计公共时钟,效率低,设计灵活性差
异步定时方式
没有统一的时钟,没有固定的时间间隔。完全依靠双方相互制约的“握手”信号实现定时控制
开始传输之前主设备会向从设备发出请求,并且会一直等从设备发出响应信号后才开始数据传输
根据请求和回答信号的撤销是否互锁,异步定时方式可以分为三种类型:
- 不互锁方式(请求信号就发一次)
- 半互锁方式(一直发送请求信号,收到响应信号才停止发送,响应信号之发送一次)
- 全互锁方式(在半互锁的基础上,响应信号一直发送,在主设备发送撤销信号时才结束)
比特率与波特率
- 波特率
指的是信号
被调制以后在单位时间内的变化,即通信通道中信号改变状态或发生变化的次数,单位为Bd(Baud per second)。(波特率 = 比特率 / 位数)
- 比特率
是指每秒传送的比特(bit)数,单位为bps(bit per second)
如每秒传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒 = 2400 bps
外部设备
硬磁盘存储器
磁盘存储器的最小读写单位为1个扇区
平均存取时间
- 平均存取时间:
寻道时间 + 旋转延迟时间 + 传输时间
- 平均寻道时间:
最内圈 -> 最外圈 -> 所用时间的一半
(每分钟10000转(转速),转一圈60/10000 = 0.006 = 6ms) - 平均延迟时间:
旋转一圈所需时间的一半
- 磁头扫过一个扇区所用时间:
磁盘转一周时间 / 每个磁道的扇区个数
- 磁盘平均存取时间:
寻道时间 + 延迟时间 + 磁头扫过一个扇区所用时间
数据传输率
- 磁盘存储器在单位时间内向主机传送数据的字节数,称为数据传输率
- 假设磁盘转数为
r(转/秒)[单位是秒]
,每条磁道容量为N
个字节(总字节数),则数据传输率为D = rN
- 假设磁盘转数为
磁盘调度算法
- FCFS先来先服务算法
- SSTF最短寻道时间优先
- SCAN扫描算法
- LOOK算法
- C-SCAN算法
固态硬盘SSD
- 基于
闪存(Flash Memory,E2PROM发展而来)
(只读存储器) - 半导体存储器构成
- 随机访问速度
快
(性能低于磁盘) - 能耗低,抗震性好,安全按高
- 易磨损
I/O接口
I/O接口是主机和外设之间的交界面
I/O接口的功能
- 实现主机和外设的通讯控制
- 地址译码和设备选择
- 实现数据缓冲
- 信息格式转换
- 传送控制命令和状态信息
I/O接口的类型
- 按照数据传输方式分为并行和串行接口
- 按照主机访问I/O设备的控制方式可分为程序查询接口、中断接口和DMA接口
- 按功能的灵活性可分为可编程接口和不可编程接口
I/O端口编址
注意:接口和端口是不同的概念,端口是接口电路中的寄存器
I/O端口要能够被CPU访问,要有端口地址,一个端口对应一个端口地址,端口编址方式有与存储器统一编址和独立编址两种;
- 统一编址(存储器映射方式),是把I/O端口当作存储器单元进行地址分配;
- 优点:不需要专门的输入/输出指令,CPU访问I/O端口的操作灵活、方便,端口编制空间大
- 缺点:端口占用一部分存储器地址,使可访问的存储器的最大容量变小,CPU访问I/O端口的速度较慢
- 独立编址(I/O映射方式),I/O端口地址与存储器地址无关,CPU靠专门的指令来访问端口
- 优点:I/O端口地址不占用存储器地址;因为有独立的指令使CPU可以直接访问端口,所以访问速度快
- 缺点:输入/输出指令少,一般只能对端口进行传输操作;且CPU控制主存读/些和I/O 端口读写需要两组不同的控制信号,控制复杂。
程序查询和中断方式
I/O设备与主机进行数据交换的三种基本方式:
- 程序查询方式(直接与CPU交换)
- 中断方式(直接和CPU交换)
- DMA方式(外设的数据和主存进行直接传送)
程序查询方式
程序查询方式的特点是每时每刻不断查询I/O设备是否准备就绪
程序中断方式
计算机在程序执行过程中,当出现异常或特殊情况时,计算机停止现行程序的执行转向对这些异常情况或特殊情况的处理,处理结束后再返回现行程序的间断处,继续执行原程序,这就是中断。
页缺失后必须回到指令重新执行
-
中断请求。指中断源向CPU发送中断请求信号
- 内中断和外中断:
- 外中断:来自CPU和内存以外的部件产生的中断,如I/O设备的中断
- 内中断:来自CPU和内存的中断,如除数为0等程序运算产生的错误或内存不足,空间分配失败产生的中断
- 硬中断和软中断:
- 硬中断:通过外部硬件产生的中断。硬中断属于外中断
- 软中断:通过指令产生的中断,可编程实现,软中断属于内中断
- 非屏蔽中断和可屏蔽中断,都属于外中断
- 内中断和外中断:
-
中断判优
- 中断系统在某一时刻只能相应一个中断源的请求,但不同中断源发出请求是随机的,因此可能某一时刻会同时产生多个中断请求,这时候要按照某种规则来选择一个中断请求来进行响应
- 一般硬件故障属于最高级中断,其次是软件中断,非屏蔽中断高于可屏蔽中断,DMA请求高于I/O设备,告诉设备高于低俗设备,输入设备高于输出设备,实时设备高于普通设备
-
中断响应和处理
- 响应条件:必须满足CPU中的允许中断触发器EINT为“1”;该触发器可以用开中断指令打开,可以用关中断指令或者由硬件自动关闭;
- 响应时间:CPU响应中断的时间是在每条指令执行阶段的结束时刻
- 中断处理:
- 保护现场(关中断->保护断点->中断服务程序寻址【前面都有硬件完成,后面都有中断程序完成】->保存现场->开中断)
- 中断服务(执行中断服务程序)
- 恢复现场(关中断->恢复现场->开中断)
- 中断返回(中断返回)
-
多重中断
- CPU具备多重中断功能的条件:
- 在中断服务程序中提前设置开中断指令
- 优先级别高的中断有权中断优先级别低的中断
- CPU具备多重中断功能的条件:
屏蔽字
每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的中断请求,0表示接受该中断源的中断请求;所有屏蔽触发器组合在一起构成一个屏蔽字寄存器,屏蔽字寄存器的内容称之为屏蔽字。
- 屏蔽字
- CPU执行程序轨迹
中断方式下,外设任何时候都可以申请中断并马上得到中断响应吗?
答:中断方式下,外设发出中断请求的时机是由外设接口中的中断逻辑决定,不受CPU限制。但何时响应中断与CPU执行指令的过程有关。CPU总是在一条指令执行完,取下条指令之前查询有无中断请求。如果是开中断状态,且有未被屏蔽的中断请求,则在一条指令执行结束后响应。
DMA方式
主存和DMA接口之间有一条专用的数据通路,因此主存和设备交换信息时,不需要通过CPU,也不需要暂停CPU现行程序去为设备服务,使得I/O与主机并行工作,程序和数据传输并行工作,省去了保护现场和恢复现场的步骤,因此速度较快
DMA与主存交换信息的方法
- CPU停止访问主存法
- DMA与CPU交替访存(存储器分时法)
- 周期挪用法
DMA控制器
- 主存地址寄存器(AR)
- 字计数器(WC)
- 数据缓冲寄存器(DAR)
- DMA控制逻辑
- 中断模块
- 设备地址寄存器
DMA传输过程
-
预处理
- 给DMA控制逻辑指明数据传输方向是输入还是书除;
- 向DMA设备地址寄存器送入设备号,并启动设备;
- 向DMA主存地址寄存器送入交换数据的主存起始地址;
- 对字计数器赋予交换数据的个数;
上述操作由CPU执行几条输入输出指令来完成,这些工作完成后CPU继续执行原来的程序;
- DMA输入过程
- 当设备准备好一个字时,发出选通信号,将该字读到DMA的数据缓冲寄存器(BR)中,表示数据缓冲寄存器
“满”
; - 与此同时设备向DMA接口发请求(DREQ)
- DMA接口向CPU申请总线控制器(HRQ)
- CPU发回HLDA信号,表示允许将总线控制权交给DMA接口
- 将DMA主存地址寄存器中的主存地址送地址总线,并命令存储器
写
- 通知设备已被授予一个DMA周期(DACK),并为交换下一个字做准备
将DMA数据寄存器中的内容送数据总线
主存将数据总线上的信息写至地址总线指定的存储单元中
- 修改主存地址和字计数器值
- 判断数据块是否传送结束,若未结束,则继续传送;若已结束,则向CPU申请程序中断,标志数据块传输结束
- 当设备准备好一个字时,发出选通信号,将该字读到DMA的数据缓冲寄存器(BR)中,表示数据缓冲寄存器
- DMA输出过程
- 当DMA数据缓冲寄存器(BR)已经将输出数据送至I/O设备后,表示数据缓冲寄存器
“空”
; - 与此同时设备向DMA接口发请求(DREQ)
- DMA接口向CPU申请总线控制器(HRQ)
- CPU发回HLDA信号,表示允许将总线控制权交给DMA接口
- 将DMA主存地址寄存器中的主存地址送地址总线,并命令存储器
读
- 通知设备已被授予一个DMA周期(DACK),并为交换下一个字做准备
主存将相应地址单元的内容通过数据总线读入到DMA的数据缓冲寄存器
将DMA的数据缓冲寄存器的内容送到输出设备,若为字符设备,则拆分成字符输出
- 修改主存地址和字计数器值
- 判断数据块是否传送结束,若未结束,则继续传送;若已结束,则向CPU申请程序中断,标志数据块传输结束
- 当DMA数据缓冲寄存器(BR)已经将输出数据送至I/O设备后,表示数据缓冲寄存器
- 后处理
- 当DMA的中断请求得到响应后,CPU停止原程序的执行,转去执行中断服务程序,做一些DMA的结束工作,包括校验送入主存的数据是否正确、测试传输过程中是否出错和决定是否继续用DMA传输其他数据块
DMA方式特点
- DMA使CPU与主存之间不存在固定联系,主存既可以被CPU访问,又可以被外设访问
- 在数据传输的时候,主存地址确定、传输数据的计数都由硬件电路直接实现
- 主存中要开辟专用的缓冲区,以便随时供给和接受外设的数据
- DMA使得CPU和外设并行,提高系统效率
- DMA在开始前要通过程序进行预处理,结束后要通过中断方式进行后处理
DMA和中断的区别
- 中断方式是程序的切换,需要保护和恢复现场;而DMA方式除了预处理和后处理,其他时候不占用CPU资源
- 中断请求的响应只能发生在每条指令的执行周期之后;而对DMA的响应可以在取指周期、间址周期、执行周期之后均可以,只要CPU不占用总线就可以被响应
- 中断传输过程需要CPU的干预,而DMA的传输过程不需要
- DMA请求的优先级高于中断请求优先级
- 中断功能多,比如可以处理异常,而DMA仅仅是为了I/O数据传输设计的
- 从数据传输来看,中断靠程序传输,DMA靠硬件传输
重点总结
计算
- 十六进制相互之间计算完成后
+1
- 机器字长32位,定点表示,尾数31位,数符1位
- 定点原码整数表示时,最大正数 = 0111...111 = (2^31 - 1),最大负数 = 111...111 = -(2^(31) - 1)
- 定点源码小数表示时,最大正数 (1 - 2^(-31) ),最大负数 = -(1 - 2^(-31) )
Cache
- 采用回写法时,需
1
位修改位。Cache行的总位数=数据位+tag位+修改位1位+有效位1位
。Cache的总容量 = 所存放字大小 * Cache行的总位数- Cache容量(总位数)计算 -
行数[块数] * (每行数据[块大小] + 标记位 + 有效位1 + 算法位 + 脏位1) [单位bit]
(脏位、算法法没说加就不要加,有效位必须加
)- 即
标记项的总位数 + 数据块的位数
- 标记项的总位数 =
主存块数 * (tag位 + 有效位 + 脏位)
- 数据块的位数 =
主存块数 * 块大小
- 标记项的总位数 =
- 即
- Cache容量(总位数)计算 -
- 不能忘记
有效位1位
- 每个总线事务所用的时间 = 发送地址 + 读命令 + 存储器准备数据 + 总线传送
- CPU 命中率 h =
Nc / (Nc + Nm)
- 缺失率。 块的大小范围内,
1 / 读与写的总次数
。每第一次读块时,只有第一次是访问失败的,接下来会将该块存入Cache。 - 时间局部性:一旦一条指令执行,它就可能在不久将来再被执行
- 空间局部性:一旦一个存储单元被访问,它附近的存储单元也很快被访问
- 回写法(Write Back)可
减少访存次数
(存在不一致的隐患)- 存在修改位(“脏位”)
- 写直通法(Write Through)能保证
数据一致性
(当提及:较高的安全要求)- 不存在修改位(“脏位”)
- 主存与Cache的
块内地址永远相同
(Cache就是主存的一部分) - LRU替换策略要记录每个Cache行的生存时间,因此每个标记项有
两位替换控制位
。- LRU位 = log(n) (n路组相联映射)
- 全写法没有“脏位”(一致性控制位)
- 回写法存在“脏位”
总线带宽 = 总线宽度 * 总线工作频率 (或:总线宽度 / 总线周期)
- 周期 = 1 / 频率
- 总线工作频率 = 总线时钟频率 / n
- n为一次总线操作所需要的时钟周期数
- CPI:Cache
命中
时,平均每条
指令需要n个CPU时钟周期
- 未命中时,需要考虑突发传送总线事务周期,再加上该命中的周期
- Cache缺失处理的时间
开销小
,当缺失Cache块时,仅需去访问主存 - 缺页处理的时间
开销大
,当缺页时,需要去访问磁盘 - 采用
直写
策略时,需要同时写快速存储器和慢速存储器,而写磁盘比写主存慢很多,所以再Cache-主存层次,Cache通常采用直写
策略。 - 采用
回写
策略时,修改内容只写快速存储器,调出该块或该页面时再写慢速存储器,在主存-外存(磁盘)层次,修改页面内容时总是采用回写
策略 - 虚 -> 实:虚页号字段替换为实页号,
页内地址不变
- CPU访问存储系统的整体流程
- 程序员交给CPU的是
逻辑地址
,要进行虚实地址转换
才能找到所指的数据在主存的位置 虚实地址转换
:虚页号
与实页号
的对应关系存在页表
中,页表存在主存中,比较活跃的页表项存在TLB
中。转换时先查TLB
,若TLB不命中,再查页表,若页表不命中
,说明该页面还未调入主存,需发出缺页中断
,从辅存中调入并更新页表和TLB- 得到
物理地址
后,需要访问Cache - 主存体系以操作相应的数据。先访问Cache
,若Cache未命中,说明该块在主存
中,需要先把该块调入Cache再处理,或边调入Cache边处理
- 程序员交给CPU的是
- 地址结构:
虚拟地址
分为虚页号
和页内地址
物理地址
分为实页号
和页内地址
- Cache-主存体系中,地址先分为
块号
和块内地址
。对应不同的映射方式,主存地址的块号需要拆分成不同的字段,高位均为标记字段
,需要存入Cache
指令系统
- 指令编址格式
- OP(操作码) A1 A2 ...(各地址码)
- 最多可以表示
n
种不同的操作码,对应n
种不同的指令,其中M
种用于零地址指令,N
种用于一地址指令,故二地址指令最多有n - M - N
种 - 扩展操作码技术:将地址指令中不使用的的地址码作为操作码扩展。
- (操作码4位,地址码6位)采用扩展操作码技术,若二地址指令有
P
条,零地址指令有Q
条,则一地址指令最多有(2^4 - P) * 2^6 - Q / 2^6
种 - 扩展码的设计:
- 不允许
短码
是长码
的前缀 - 各指令的操作码一定不能重复
- 不允许
变址
适合按下标顺序访问的一维数组元素基址
为无符号数主存地址
不能为负
转移指令
- 目标地址的一般形式:(PC)+ A
- 具体
某条转移指令的目标地址范围
:已知具体(PC),分析出A的取值范围为a1 ~ a2
,则目标地址范围为(PC) + a1 ~ (PC) + a2
- 转移指令的目标地址范围:
- 分析(PC)和A各自的取值范围,得到范围1
- 分析存储器的地址范围,得到范围2
- 取范围1和范围2的交集
MDR
位数和MAR
位数的确定MDR
:其位数和存储字长
相等,一般至少等于机器字长,即至少一次访存能取够计算机一次所能处理的数据。需要根据题干灵活理解MAR
:其位数对应存储单元个数,一般由主存地址空间大小和编址方式确定
- 转移指令向后(反向)最多可跳转
2^(OFFSET的位数)-1
条 - 无符号数:看
进位/借位标志CF、零标志ZF
- 有符号数:一般用补码,此时看
符号标志NF、溢出标志OF、零标志ZF
- 取指令:根据PC取出本条指令,修改PC为顺序执行的下条指令(PC) + 1 -> PC(此处的“1”为一个指令字长,按字节编址时,有可能是(PC) + n,也有可能是多次(PC)+ 1
多路选择器MUX
:根据控制信号选择(从输入端中选择一个值)
一个输入端直通到输出端(放在加法器后)指令格式(定长操作码,定长指令字)
- 操作码字段OP的位数决定最多可有的指令条数,n位对应
2^n
条 - 操作数可有多个,每个操作数由
寻址特征
和形式特征A
共同指出
- 操作码字段OP的位数决定最多可有的指令条数,n位对应
- SRop=mov 表示直送,SRop=left表示左移一位,SRop=right表示右移一位
- ALUop=mova 表示直送A,ALUop=add表示A加B,ALUop=sub表示A减B,ALUop=and表示A与B,ALUop=or表示A或B,ALUop=not表示非A,ALUop=inc表示A加1
ALU的宽度
与机器字长
相等- 对于
无符号数
用零扩展
,对于有符号数
用符号扩展
进位/借位标志CF
的产生- 求
A + B
时,进位输出位1
则CF
为 1,进位输出为0
则CF
为 0- 1111 + 0001 加法,有进位,CF=1
- 1100 + 0001 加法,无进位,CF=0
- 求
A - B
时,进位输出为1
则CF
为 0,进位输出为0
则CF
为 1- 1111 - 1111 减法,无借位,CF=0
- 0001 - 1000 减法,有借位,CF=0
- 求
- 要使CPU在发生溢出时
转异常处理
,编译器应在 imul指令后加一条“溢出自陷指令”
,使得CPU自动查询溢出标志OF,当OF=1时调出1“溢出异常处理程序”
分页存储管理方式
- 虚页号位数 | 页内地址
中央处理器
指令寄存器
用于存放当前正在执行的指令,位数取决于指令字长
程序计数器
用于存放下一条指令的地址,位数取决于存储器的容量
地址寄存器
用于暂存指令或数据的地址程序状态字寄存器
用于保存系统的运行状态- 条件转移指令执行时,需对
标志寄存器
的内容进行测试,判断是否满足转移条件 - 数据总线的位数与处理器的位数相同
通用寄存器
位数取决于机器字长
指令译码
是指对指令的操作码字段
进行译码CPU
中有MAR,MDR,PC,IR,PSW
取值操作
是自动
进行的,控制器不需要得到相应的指令- 指令周期的第一个周期就是
取指周期
,即从主存中取出指令字
指令字长
等于存储字长
的前提下,取指周期
等于机器周期
指令字长
和机器字长
的长度没有关系- 通常完成一条指令可分为
取指阶段
和执行阶段
。在取指阶段通过访问存储器可将指令取出;在执行阶段通过访问存储器可以将操作码取出。CPU可以根据指令周期的不同阶段
判断从存储器取出的二进制代码是指令
还是`数据 - 中断周期之
前
是执行周期
,中断周期之后
是下一条指令的取指周期
- CPU
数据通路结构
分为总线结构和专用数据通路
结构,其中总线结构分为但总线结构、双总线、多总线结构
单周期处理器
是指所有指令的指令周期为一个时钟周期的处理器。单总线数据通路
将所有寄存器的输入端输出端都连接在一条公共通路上,一个时钟内只允许一次操作,无法完成指令的所有操作取指
:- 微操作
- (PC) -> MAR
- M(MAR) -> MDR
- (PC) + 1 -> PC
- MDR -> IR (传指令的是MDR)
- 控制信号
- PC -> BUS, BUS -> MAR
- READ
- +1
- MDR -> BUS, BUS -> IR
- 微操作
- ACC:Accumulator,累加器,是运算器中既能存放运算前的操作数,又能存放运算结果的寄存器
- 透明性
- 对所有人可见
- PSW
- PC
- 对所有人透明
- MAR
- MDR
- IR
- Cache
- 关段式虚拟存储器的分段方式
- 对应用程序员透明
- 暂存寄存器
- 虚拟寄存器
- 对汇编程序员可见
- PC
- ACC
- 基址寄存器
- 标志寄存器
- 状态寄存器
- 通用寄存器
- 对系统程序员可见
- 虚拟存储器
- 对所有人可见
XXout/in
表示该寄存器与另一端之间数据通路的连接与断开
。它们都由控制部件
所控制,必须
连接到控制部件的输出端
- 一条线路的通断:可使用三态门,控制信号为in、out结尾,如本题SRout
- 多条通路的选择:可使用多路选择器MUX,通过MUXop选择相应的输入直送到输出
- PC自增:
- 可由硬件自动实现,也可以用ALU实现,此时一般在
MUX
的一个输入端
放置PC自增所需要的固定值
- 可由硬件自动实现,也可以用ALU实现,此时一般在
- 在微程序控制器中,控制部件向执行部件发出的控制信号是
微命令
,微命令执行的操作上微操作
水平型
微指令的位数较多
,用它编写的微程序较短
- 一条
水平型
微指令能定义并执行几种并行
的基本操作;一条垂直型
微指令只能定义并执行一种基本操作 - 若指令系统中具有
n
中机器指令,则控制存储器中的微程序数至少是n + 2(增加的一个为公共的取指微程序,另 1 个为对应中断周期的微程序)
- 一台数字计算机基本上可以划分为两大部分:
控制部件和执行部件
- 主存储器(MM),在CPU外,用于存储
指令和数据
,由RAM和ROM
实现。 - 控制存储器(CS)用来存放实现指令系统的所有微指令,是一种只读型存储器,机器运行时只读不写,在CPU的控制器内。CS按照微指令的地址访问
- 流水线的
加速比 S = T0(不使用流水线时的执行时间) / Tk(使用流水线时的执行时间)= kn△t / (k + n - 1)△t = kn / k + n - 1
- 流水线的
吞吐率 TP = n(任务数) / Tk(处理完成n个任务所用的时间) = n / (k + n - 1)△t
评论
暂无评论
* 登录后即可评论