Home >> Computer Organization

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用来存放两类信息:

  1. 当前指令执行结果的各种状态信息,如有无进位、有无溢出、结果正负、结果是否为零、奇偶标志位等。
  2. 存放控制信息,如允许中断等。

有些机器中将PSW称为标志寄存器

不同处理器的CPI问题

  1. 单周期CPU:指令周期 = 时钟周期 => CPI = 1(单周期处理器中所有的指令周期为一个时钟周期,所有指令都在一个时钟周期内完成)
  2. 多周期CPU:指令周期 = 多个时钟周期 => CPI > 1
  3. 基本流水线CPU:优化到一个流水线为一个时钟周期进入流水新状态后,每过一个时钟周期完成一条指令的执行 => CPI = 1
  4. 超标量流水线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码

  1. 0000
  2. 0001
  3. 0010
  4. 0011
  5. 0100
  6. 0101
  7. 0110
  8. 0111
  9. 1000
  10. 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

码距(海明距离)

同一编码规则下得两码字间对应位置上不同二进制位得个数

  • 1101111
  • 1101010

则码距等于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

    • = 1x^3 + 0x^2 + 0x^1 + 1x^0 (得出初校检码:1001
    • 根据最大次方的值 = 3,在初校检码后添加3个0,得出1001000
  • G(x) = x^3 + x + 1

    • = 1x^3 + 0x^2 + 1x^1 + 1x^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
  • 四位二进制有符号:
    • 1111 ~ 0111
    • -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]移,表示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算法

Booth算法

定点数除法运算

定点数除法运算

  • 原码恢复余数法 [|A|]添加[-|B|]补码,如果符号位为1,则添加[|B|]原码,恢复原形,并进行左移1位,再进行添加[-|B|]补码,以此类推,最终得出商。

定点数除法运算2

  • 不恢复余数法(加减交替法)

[|A|]添加[-|B|]补码,并进行左移1位,如果符号位为1,则添加[|B|]原码,再进行左移1位,进行添加[-|B|]补码,以此类推,最终得出商。

不恢复余数法

  • 补码除法 补码除法

补码除法过程

浮点数的表示和运算

浮点数的表示

  • 阶符即阶数符号位
  • 阶码数值部分移码(阶数+127)[二进制]
  • 数符即数值符号位
  • 尾数数值部分真值[二进制]

  • 正数的原码、反码和补码是一样
  • 负数则按照原来的定点数转换

科学计数法

科学计数法

规格化浮点数

规范化浮点数

规范化浮点数2

浮点数的加减法

过程:

  1. 求阶差用来对阶
  2. 对阶,小阶向大阶梯看齐
  3. 尾数求和
  4. 结果规格化
  5. 舍入
  6. 溢出判断

浮点数的减法

结果规格化

结果规格化

IEEE754标准

IEEE754

IEEE754

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位线。

芯片数量 = 存储器

要求

存储器与CPU的连接

单译码方式的地址输入线为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与多模块存储器

无冲突读写控制

  1. 当两个端口地址不同时,在两个端口上进行读写操作,一定不会发生冲突。
  2. 当两个端口地址相同时,在两个端口上不同时进行读写操作,一定不会发生冲突。
  3. 当两个端口地址相同时,在两个端口上同时进行读操作,一定不冲突。

有冲突读写控制

  1. 当两个端口地址相同时,在两个端口上同时进行读写操作,一定会发生冲突。
  2. 当两个端口地址相同时,在两个端口上同时一读一写,一定会发生冲突。

解决办法:置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地址映射

  1. 直接映射 直接映射

每个主存块只能放到同一个特定位置:

Cache块号 = 主存块号 % Cache总块数

(若Cache总块数=2^n,则`主存块号末尾n位直接反映它在cache中的位置)

  1. 全相联映射 全相联映射

主存块可以放在Cache的任意位置

相联存储器是按内容指定方式进行寻址访问的存储器(如使用全相联映射方式的Cache和快表)

  1. 组相联映射(二路) 组相联映射

Cache块分为若干组,每个主存块可放到特定分组中的任意一个位置

组号 = 主存块号 % 分组数(主存块号 % 2^2,相当于留下最后两位)

三种映射方式下的主存地址格式

  • 主存容量为512k × 16bit,cache容量为4096 × 16bit,块长为4个16位的字(按字寻址)。画出三种映射方式下的主存地址格式。

三种映射方式下的主存地址格式

命中率、字块替换和写策略

命中率问题

命中率公式

命中率问题

Cache字块替换算法

  • 直接映射无需考虑替换算法,直接替换
  • 对于全相连和组相联,因为某一主存块可能映射到Cache中的多个块中,因此存在以下替换算法:
    1. 先进先出算法(FIFO)
    2. 近期最少使用算法(LRU)(需要两位替换控制位)
    3. 最不经常使用算法(LFU)
    4. 随机算法(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通常很小,一般用全相联方式组相联方式。

段式虚拟存储器

段式虚拟存储器 段式虚拟存储器-1 段式虚拟存储器-2

页式与段式虚拟存储器的优缺点

页式与段式虚拟存储器的优缺点

段页式虚拟存储器

段页式虚拟存储器

White Through(直写策略)

指令保存完数据以后,Cache为命中的,但由于直写策略,也要同时写回主存。(至少一次访存)

不需要脏位,需要有效位

时间、空间局限性

  1. 时间局限性:某些指令被执行后,不久后可能会在此执行,某些数据被访问后,不久可能会再次访问。
  2. 空间局限性:一旦程序访问了某个存储单元,不久后其相邻的存储单元也可能被访问。

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地址指令条数(零地址没有扩展窗口,则可以根据该公式得到零地址指令条数)

转移指令

执行程序时,有时机器执行到某条指令时,出现了几种不同结果,这时机器必须执行一条转移指令,根据不同结果进行转移,从而改变程序原来执行的顺序。

主要包括三类:

  1. 转移指令(包括无条件转移和有条件转移)
  2. 程序调用和返回指令
  3. 循环控制指令

指令格式

  • 寻址方式 操作码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

CISC-RISC

CPU

功能与结构

  • 指令控制

控制指令的执行,即完成取指令,分析指令,执行指令的操作

  • 操作控制

控根据指令生成操作信号,并将其送入相应的部件,进而操作这些部件进行相应的动作

  • 时间控制

对各种操作加以时间上的控制

  • 数据加工

对数据进行算术逻辑运算

  • 中断处理

对计算机运行过程中的异常情况和特殊请求的处理

CU和ALU的功能

  • CU功能
    1. 取出指令,并指出下一条指令在主存中的位置
    2. 对指令译码,产生相应的操作信号进行控制部件进行相应的动作
    3. 指挥并控制CPU,主存和输入输出设备之间的数据流向
  • ALU功能
    1. 执行算数和逻辑运算,并执行逻辑测试

CPU的结构组成

  • CPU
    • ALU
    • 寄存器
    • 中断系统
    • CU

      CPU的寄存器

  • 通用寄存器

数量多,功能多,对用户可见,可以由程序编址;ACC,是一个通用寄存器。

可有计数逻与移位逻辑和暂存数据、参与运算、保存结果。(可以存放数据和地址)

位数取决于(机器字长)

  • 专用寄存器
    1. 程序计数器(PC)(位数取决于存储器的容量
    2. 指令寄存器(IR)(位数取决于指令字长)指令译码是对指令的操作码字段进行译码。
    3. 存储器数据寄存器(MDR)
    4. 存储器地址寄存器 (MAR)
    5. 状态标志寄存器(PSWR)

PC 转移指令

  • 若跳转,PC = PC + 1 + offset(转移指令的目标地址偏移量)
  • 若不跳转,PC = PC + 1

指令执行过程

指令周期

指令周期

  • 从取除一条指令执行到取出下一条指令执行的间隔时间。即一条指令从存储器读出到执行完成所用的全部时间
  • 7步骤:
    1. 取指令
    2. 指令译码
    3. 计算机操作数地址
    4. 取操作数
    5. 运算
    6. 存结果
    7. 中断检测

取指周期的数据流

取指周期的数据流 取指周期的数据流-2

间指周期的数据流

间指周期的数据流 间指周期的数据流-2

中断周期的数据流

中断周期的数据流 中断周期的数据流-2

各运算寄存器

存放指令的寄存器是指令寄存器(IR),存放程序状态字的寄存器是程序状态字寄存器(PSWR),这些寄存器都不属于通用寄存器。其次,通用寄存器并不一定本身都具有计数和移位功能。通常,CPU中设置有多个通用寄存器,通用寄存器可以由程序编址访问。通用寄存器可用来存放原始数据和运算结果,有的还可以作为变址寄存器、计数器、地址指针等。另外,通用寄存器的内容一般都是可被程序员改变的,并且改变之后并不影响机器的正常运行,所以像指令寄存器、数据寄存器、状态寄存器都不属于通用寄存器。

控制器与数据通路

控制器的输入输出

  • 输入信号
    1. 时钟
      1. 完成每个操作都需要占用一定的时间
      2. 各个操作之间有先后次序之分
      3. 因此控制单元需要在时钟的控制下按照一定的顺序发出控制信号
    2. 指令寄存器(IR)
      1. 指令寄存器的操作码字段决定了指令的操作类型,因此是控制单元的输入信号
    3. 标志
      1. 控制单元有时候需要根据CPU当前的状态来产生相应的控制信号,因此“标志”也是输入信号
    4. 来自总线的控制信号,如中断请求等
  • 输出信号
    1. CPU内的控制信号
      1. CPU内的数据传输,或控制ALU执行不同的运算等
    2. 送至系统总线的信号
      1. 如控制主存读/写,I/O操作,中断响应等

控制信号与数据通路

CPU内部采用总线方式的控制信号与数据通路

CPU内部采用总线方式的控制信号与数据通路

  • 取指周期
    1. PC和MAR有效,完成(PC)-> Bus -> MAR
    2. 通过总线控制向主存发读写信号1 -> Bus -> R
    3. MDR有效,存储器通过数据总线,完成M(MAR) -> Bus -> MDR
    4. MDR和IR有效,完成(MDR) -> Bus -> IR
    5. (PC) + 1 -> PC
  • 间指周期
    1. MDR和MAR有效,将形式地址送往MAR,即完成Ad(MDR) -> Bus -> MAR
    2. 通过总线控制向主存发读命令1 -> Bus -> R
    3. MDR有效,存储器通过数据总线,完成M(MAR) -> Bus -> MDR
  • 执行周期
    1. MDR和MAR有效,将有效地址经内部总线送入MAR,即完成:(MDR)-> Bus -> MAR
    2. 通过总线控制向主存发读命令1 -> Bus -> R
    3. MDR有效,存储器通过数据总线,完成M(MAR) -> Bus -> MDR
    4. MDR和Y有效,将操作数送至Y,即(MDR) -> Bus -> Y
    5. ACC和ALU同时有效,同时CU向ALU发"ADD"加控制器信号,使ACC的内容和Y的内容相加结果送寄存器Z,即(ACC)+ (Y) -> Z
    6. Z和ACC有效,将结果存入ACC,即(Z) -> Bus -> ACC

CPU内部不采用总线方式的控制信号与数据通路

CPU内部不采用总线方式的控制信号与数据通路 CPU内部不采用总线方式的控制信号与数据通路-1

  • 取指周期

    1. C0有效,完成(PC) -> MAR
    2. C1有效,打开MAR送往地址总线的输出门
    3. 通过总线控制向主存发读命令1 -> R
    4. C2有效,打开数据总线送至MDR的输入,即:M( MAR)-> MDR
    5. C3有效,打开MDR和IR之间的控制门,实现(MDR) -> IR
    6. C4有效,打开指令操作码送至CU的输出门,即OP(IR) -> CU
    7. (PC) + 1 -> PC
  • 周期的数据通路:

    1. (PC) -> MAR
    2. M(MAR) -> MDR
    3. (MDR) -> IR
  • 运算器和主存之间进行存储访问的数据通路:

    1. M(MAR) -> MDR
    2. (MDR) -> ALU
    3. ALU -> ACC
  • LDA X; 的数据通路(X为主存地址,LDA的功能是(X) -> ACC)

    1. (X) -> MAR
    2. M(MAR) -> MDR
    3. (MDR) -> ALU
  • LDA Y; 的数据通路(Y为主存地址,ADD的功能是(ACC) + (Y) -> ACC)

    1. (Y) -> MAR
    2. M(MAR) -> MDR
    3. (MDR) -> ALU
    4. ACC -> ALU
    5. ALU -> ACC
  • STA Z; 的数据通路(Z为主存地址,STA的功能是(ACC) -> Z)

    1. (Z) -> MAR
    2. (ACC) -> MDR
    3. (MDR) -> M(MAR)

多级时序系统

多级时序系统 时钟周期 = CPU主频的倒数

组合逻辑(硬布线)控制

组合逻辑(硬布线)控制 组合逻辑(硬布线)控制-1

  • 取值周期操作节拍安排:
    • 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

微程序控制

微程序控制

  • 微指令基本格式:
    • 操作控制
    • 顺序控制

微程序控制-1

  • 取指周期
    1. 取指周期微程序首址送入 CMAR: M -> CMAR;
    2. 取微指令: CM(CMAR) -> CMDR;
    3. 产生微操作命令:第一条微指令操作控制字段中为1的各位发出控制信号,如 (PC) -> MAR, 1 -> R;
    4. 形成下一条微指令地址:由此条微指令的顺序控制字段指出下一条微指令地址为 M+1,送至CMAR,即 Ad(CMDR) -> CMAR;
    5. 形成下一条微指令:将对应控存M+1地址单元中的第二条微指令读到CMDR中,即 CM(CMAR) -> CMDR;
    6. 产生微操作令:第二条微指令操作控制字段中为1的各位发出控制信号,如 M(MAR) -> MDR,使对应主存单元中的指令读至MDR;
    7. 形成下一条微指令地址:由此条微指令的顺序控制字段指出下一条微指令地址为 M+2,送至CMAR,即 Ad(CMDR) -> CMAR;
  • 执行周期
    1. 形成LDA微程序首地址:当LDA指令存入IR后,其操作码直接送到微地址形成部件,该部件的输出即为取数指令微程序首地址P,且将P送至CMAR,即 OP(IR) -> 微地址形成部件 -> CMAR;
    2. 取微指令:将P地址所对应控存单元中的微指令读到CMDR中,即 CM(CMAR) -> CMDR
    3. 产生微操作命令:由微指令操作控制字段中为1的各位发出控制信号,如 Ad(IR) -> MAR, 1 -> R; 命令主存读操作数;
    4. 形成下一条微指令地址:由此条微指令的下地址字段指出P+1送至CMAR,即 Ad(CMDR) -> CMAR;
    5. 取微指令,即 CM(CMAR) -> CMDR;
    6. 产生微操作命令;(第二步)
    7. 以此类推,直到取数指令微程序的最后一条微指令(地址为P+2的那条),并发出操作命令

微指令的编码方式

  • 直接编码方式 直接编码方式
  • 字段直接编码方式 字段直接编码方式
  • 字段间接编码方式 字段间接编码方式
  • 混合编码方式

注意:不论哪种编码方式,都要留出一种状态表示不发控制信号(微命令)

在微程序控制器中,控制部件向执行部件发出的某个控制信号称为微命令

微指令序列地址形成

  • 根据机器指令的操作码形成
  • 通过硬件直接产生微程序入口地址
  • 直接由微指令的下地址字段给出
  • 增量计数法:多数情况下后续指令的地址是连续的,因此可采用增量计数法,即(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:总线同意

  • 链式查询方式(优先级最高,对电路故障最敏感)
  • 计数器定时查询方式(优先级顺序可以改变)
  • 独立请求方式(裁决速度最快,响应速度最快)

集中仲裁方式-1

总线操作和定时

总线在双方交换数据的过程中需要时间上的配合,这种关系称为总线定时,实质是一种协议或规则,有同步异步两种。

总线传输的四个阶段

  • 申请分配

主模块(主设备)提出申请,经过总线仲裁机构决定下一个传输周期总线给谁用。

  • 寻址

取得了使用权的主模块(主设备)通过总线发送本次要访问的从模块(从设备)地址及有关命令,启动参与本次传输的从模块。

  • 传输

主从模块开始数据交换

  • 结束 主模块相关信息撤出系统总线,让出使用权

同步定时方式

系统采用统一的时钟信号来协调发送接收双方的传送定时关系

  • 优点:规定明确,统一性强,模块间的配合简单一直
  • 缺点:从模块时间配合属于强制“同步”,必须在限定时间内完成规定的要求,这就造成必须按照速度最慢的部件来设计公共时钟,效率低,设计灵活性差

异步定时方式

没有统一的时钟,没有固定的时间间隔。完全依靠双方相互制约的“握手”信号实现定时控制

开始传输之前主设备会向从设备发出请求,并且会一直等从设备发出响应信号后才开始数据传输

根据请求和回答信号的撤销是否互锁,异步定时方式可以分为三种类型:

  • 不互锁方式(请求信号就发一次)
  • 半互锁方式(一直发送请求信号,收到响应信号才停止发送,响应信号之发送一次)
  • 全互锁方式(在半互锁的基础上,响应信号一直发送,在主设备发送撤销信号时才结束)

异步定时方式

比特率与波特率

  • 波特率

指的是信号被调制以后在单位时间内的变化,即通信通道中信号改变状态或发生变化的次数,单位为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先来先服务算法

FCFS先来先服务算法

  • SSTF最短寻道时间优先

SSTF最短寻道时间优先

  • SCAN扫描算法

SCAN扫描算法

  • LOOK算法

LOOK算法

  • C-SCAN算法

C-SCAN算法

固态硬盘SSD

  1. 基于闪存(Flash Memory,E2PROM发展而来)(只读存储器)
  2. 半导体存储器构成
  3. 随机访问速度(性能低于磁盘)
  4. 能耗低,抗震性好,安全按高
  5. 易磨损

I/O接口

I/O接口是主机和外设之间的交界面

I/O接口的功能

  1. 实现主机和外设的通讯控制
  2. 地址译码和设备选择
  3. 实现数据缓冲
  4. 信息格式转换
  5. 传送控制命令和状态信息

    I/O接口的类型

  6. 按照数据传输方式分为并行和串行接口
  7. 按照主机访问I/O设备的控制方式可分为程序查询接口、中断接口和DMA接口
  8. 按功能的灵活性可分为可编程接口和不可编程接口

    I/O端口编址

    注意:接口和端口是不同的概念,端口是接口电路中的寄存器

I/O端口要能够被CPU访问,要有端口地址,一个端口对应一个端口地址,端口编址方式有与存储器统一编址和独立编址两种;

  1. 统一编址(存储器映射方式),是把I/O端口当作存储器单元进行地址分配;
    • 优点:不需要专门的输入/输出指令,CPU访问I/O端口的操作灵活、方便,端口编制空间大
    • 缺点:端口占用一部分存储器地址,使可访问的存储器的最大容量变小,CPU访问I/O端口的速度较慢
  2. 独立编址(I/O映射方式),I/O端口地址与存储器地址无关,CPU靠专门的指令来访问端口
    • 优点:I/O端口地址不占用存储器地址;因为有独立的指令使CPU可以直接访问端口,所以访问速度快
    • 缺点:输入/输出指令少,一般只能对端口进行传输操作;且CPU控制主存读/些和I/O 端口读写需要两组不同的控制信号,控制复杂。

程序查询和中断方式

I/O设备与主机进行数据交换的三种基本方式:

  1. 程序查询方式(直接与CPU交换)
  2. 中断方式(直接和CPU交换)
  3. DMA方式(外设的数据和主存进行直接传送)

程序查询方式

程序查询方式的特点是每时每刻不断查询I/O设备是否准备就绪

程序查询方式

程序中断方式

计算机在程序执行过程中,当出现异常或特殊情况时,计算机停止现行程序的执行转向对这些异常情况或特殊情况的处理,处理结束后再返回现行程序的间断处,继续执行原程序,这就是中断。

页缺失后必须回到指令重新执行

  • 中断请求。指中断源向CPU发送中断请求信号

    1. 内中断和外中断:
      • 外中断:来自CPU和内存以外的部件产生的中断,如I/O设备的中断
      • 内中断:来自CPU和内存的中断,如除数为0等程序运算产生的错误或内存不足,空间分配失败产生的中断
    2. 硬中断和软中断:
      • 硬中断:通过外部硬件产生的中断。硬中断属于外中断
      • 软中断:通过指令产生的中断,可编程实现,软中断属于内中断
    3. 非屏蔽中断和可屏蔽中断,都属于外中断
  • 中断判优

    • 中断系统在某一时刻只能相应一个中断源的请求,但不同中断源发出请求是随机的,因此可能某一时刻会同时产生多个中断请求,这时候要按照某种规则来选择一个中断请求来进行响应
    • 一般硬件故障属于最高级中断,其次是软件中断,非屏蔽中断高于可屏蔽中断,DMA请求高于I/O设备,告诉设备高于低俗设备,输入设备高于输出设备,实时设备高于普通设备
  • 中断响应和处理

    • 响应条件:必须满足CPU中的允许中断触发器EINT为“1”;该触发器可以用开中断指令打开,可以用关中断指令或者由硬件自动关闭;
    • 响应时间:CPU响应中断的时间是在每条指令执行阶段的结束时刻
    • 中断处理:
      1. 保护现场(关中断->保护断点->中断服务程序寻址【前面都有硬件完成,后面都有中断程序完成】->保存现场->开中断)
      2. 中断服务(执行中断服务程序)
      3. 恢复现场(关中断->恢复现场->开中断)
      4. 中断返回(中断返回)
  • 多重中断

    • CPU具备多重中断功能的条件:
      1. 在中断服务程序中提前设置开中断指令
      2. 优先级别高的中断有权中断优先级别低的中断

屏蔽字

每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的中断请求,0表示接受该中断源的中断请求;所有屏蔽触发器组合在一起构成一个屏蔽字寄存器,屏蔽字寄存器的内容称之为屏蔽字。

  • 屏蔽字 屏蔽字
  • CPU执行程序轨迹 CPU执行程序轨迹

中断方式下,外设任何时候都可以申请中断并马上得到中断响应吗?

答:中断方式下,外设发出中断请求的时机是由外设接口中的中断逻辑决定,不受CPU限制。但何时响应中断与CPU执行指令的过程有关。CPU总是在一条指令执行完,取下条指令之前查询有无中断请求。如果是开中断状态,且有未被屏蔽的中断请求,则在一条指令执行结束后响应。

DMA方式

主存和DMA接口之间有一条专用的数据通路,因此主存和设备交换信息时,不需要通过CPU,也不需要暂停CPU现行程序去为设备服务,使得I/O与主机并行工作,程序和数据传输并行工作,省去了保护现场和恢复现场的步骤,因此速度较快

DMA与主存交换信息的方法

  • CPU停止访问主存法 CPU停止访问主存法
  • DMA与CPU交替访存(存储器分时法) DMA与CPU交替访存(存储器分时法)
  • 周期挪用法 周期挪用法

DMA控制器

DMA控制器

  1. 主存地址寄存器(AR)
  2. 字计数器(WC)
  3. 数据缓冲寄存器(DAR)
  4. DMA控制逻辑
  5. 中断模块
  6. 设备地址寄存器

DMA传输过程

  • 预处理

    • 给DMA控制逻辑指明数据传输方向是输入还是书除;
    • 向DMA设备地址寄存器送入设备号,并启动设备;
    • 向DMA主存地址寄存器送入交换数据的主存起始地址
    • 对字计数器赋予交换数据的个数;

    上述操作由CPU执行几条输入输出指令来完成,这些工作完成后CPU继续执行原来的程序;

  • DMA输入过程
    1. 当设备准备好一个字时,发出选通信号,将该字读到DMA的数据缓冲寄存器(BR)中,表示数据缓冲寄存器“满”
    2. 与此同时设备向DMA接口发请求(DREQ)
    3. DMA接口向CPU申请总线控制器(HRQ)
    4. CPU发回HLDA信号,表示允许将总线控制权交给DMA接口
    5. 将DMA主存地址寄存器中的主存地址送地址总线,并命令存储器
    6. 通知设备已被授予一个DMA周期(DACK),并为交换下一个字做准备
    7. 将DMA数据寄存器中的内容送数据总线
    8. 主存将数据总线上的信息写至地址总线指定的存储单元中
    9. 修改主存地址和字计数器值
    10. 判断数据块是否传送结束,若未结束,则继续传送;若已结束,则向CPU申请程序中断,标志数据块传输结束
  • DMA输出过程
    1. 当DMA数据缓冲寄存器(BR)已经将输出数据送至I/O设备后,表示数据缓冲寄存器“空”
    2. 与此同时设备向DMA接口发请求(DREQ)
    3. DMA接口向CPU申请总线控制器(HRQ)
    4. CPU发回HLDA信号,表示允许将总线控制权交给DMA接口
    5. 将DMA主存地址寄存器中的主存地址送地址总线,并命令存储器
    6. 通知设备已被授予一个DMA周期(DACK),并为交换下一个字做准备
    7. 主存将相应地址单元的内容通过数据总线读入到DMA的数据缓冲寄存器
    8. 将DMA的数据缓冲寄存器的内容送到输出设备,若为字符设备,则拆分成字符输出
    9. 修改主存地址和字计数器值
    10. 判断数据块是否传送结束,若未结束,则继续传送;若已结束,则向CPU申请程序中断,标志数据块传输结束
  • 后处理
    • 当DMA的中断请求得到响应后,CPU停止原程序的执行,转去执行中断服务程序,做一些DMA的结束工作,包括校验送入主存的数据是否正确、测试传输过程中是否出错和决定是否继续用DMA传输其他数据块

DMA方式特点

  1. DMA使CPU与主存之间不存在固定联系,主存既可以被CPU访问,又可以被外设访问
  2. 在数据传输的时候,主存地址确定、传输数据的计数都由硬件电路直接实现
  3. 主存中要开辟专用的缓冲区,以便随时供给和接受外设的数据
  4. DMA使得CPU和外设并行,提高系统效率
  5. DMA在开始前要通过程序进行预处理,结束后要通过中断方式进行后处理

    DMA和中断的区别

  6. 中断方式是程序的切换,需要保护和恢复现场;而DMA方式除了预处理和后处理,其他时候不占用CPU资源
  7. 中断请求的响应只能发生在每条指令的执行周期之后;而对DMA的响应可以在取指周期、间址周期、执行周期之后均可以,只要CPU不占用总线就可以被响应
  8. 中断传输过程需要CPU的干预,而DMA的传输过程不需要
  9. DMA请求的优先级高于中断请求优先级
  10. 中断功能多,比如可以处理异常,而DMA仅仅是为了I/O数据传输设计的
  11. 从数据传输来看,中断靠程序传输,DMA靠硬件传输

重点总结

计算

  • 十六进制相互之间计算完成后+1
  • 机器字长32位,定点表示,尾数31位,数符1位
    • 定点原码整数表示时,最大正数 = 0111...111 = (2^31 - 1),最大负数 = 111...111 = -(2^(31) - 1)
    • 定点源码小数表示时,最大正数 (1 - 2^(-31) ),最大负数 = -(1 - 2^(-31) )

Cache

  1. 采用回写法时,需1位修改位。Cache行的总位数=数据位+tag位+修改位1位+有效位1位。Cache的总容量 = 所存放字大小 * Cache行的总位数
    • Cache容量(总位数)计算 - 行数[块数] * (每行数据[块大小] + 标记位 + 有效位1 + 算法位 + 脏位1) [单位bit](脏位、算法法没说加就不要加,有效位必须加
      • 标记项的总位数 + 数据块的位数
        • 标记项的总位数 = 主存块数 * (tag位 + 有效位 + 脏位)
        • 数据块的位数 = 主存块数 * 块大小
  2. 不能忘记有效位1位
  3. 每个总线事务所用的时间 = 发送地址 + 读命令 + 存储器准备数据 + 总线传送
  4. CPU 命中率 h = Nc / (Nc + Nm)
  5. 缺失率。 块的大小范围内,1 / 读与写的总次数。每第一次读块时,只有第一次是访问失败的,接下来会将该块存入Cache。
  6. 时间局部性:一旦一条指令执行,它就可能在不久将来再被执行
  7. 空间局部性:一旦一个存储单元被访问,它附近的存储单元也很快被访问
  8. 回写法(Write Back)可减少访存次数(存在不一致的隐患)
    • 存在修改位(“脏位”)
  9. 写直通法(Write Through)能保证数据一致性(当提及:较高的安全要求)
    • 不存在修改位(“脏位”)
  10. 主存与Cache的块内地址永远相同(Cache就是主存的一部分)
  11. LRU替换策略要记录每个Cache行的生存时间,因此每个标记项有两位替换控制位
    • LRU位 = log(n) (n路组相联映射)
  12. 全写法没有“脏位”(一致性控制位)
  13. 回写法存在“脏位”
  14. 总线带宽 = 总线宽度 * 总线工作频率 (或:总线宽度 / 总线周期)
    • 周期 = 1 / 频率
    • 总线工作频率 = 总线时钟频率 / n
      • n为一次总线操作所需要的时钟周期数
  15. CPI:Cache命中时,平均每条指令需要n个CPU时钟周期
    • 未命中时,需要考虑突发传送总线事务周期,再加上该命中的周期
  16. Cache缺失处理的时间开销小,当缺失Cache块时,仅需去访问主存
  17. 缺页处理的时间开销大,当缺页时,需要去访问磁盘
  18. 采用直写策略时,需要同时写快速存储器和慢速存储器,而写磁盘比写主存慢很多,所以再Cache-主存层次,Cache通常采用直写策略。
  19. 采用回写策略时,修改内容只写快速存储器,调出该块或该页面时再写慢速存储器,在主存-外存(磁盘)层次,修改页面内容时总是采用回写策略
  20. 虚 -> 实:虚页号字段替换为实页号,页内地址不变
  21. CPU访问存储系统的整体流程
    1. 程序员交给CPU的是逻辑地址,要进行虚实地址转换才能找到所指的数据在主存的位置
    2. 虚实地址转换虚页号实页号的对应关系存在页表中,页表存在主存中,比较活跃的页表项存在TLB中。转换时先查TLB,若TLB不命中,再查页表,若页表不命中,说明该页面还未调入主存,需发出缺页中断,从辅存中调入并更新页表和TLB
    3. 得到物理地址后,需要访问Cache - 主存体系以操作相应的数据。先访问Cache,若Cache未命中,说明该块在主存中,需要先把该块调入Cache再处理,或边调入Cache边处理
  22. 地址结构:
    1. 虚拟地址分为虚页号页内地址
    2. 物理地址分为实页号页内地址
    3. Cache-主存体系中,地址先分为块号块内地址。对应不同的映射方式,主存地址的块号需要拆分成不同的字段,高位均为标记字段,需要存入Cache

指令系统

  1. 指令编址格式
    • OP(操作码) A1 A2 ...(各地址码)
  2. 最多可以表示n种不同的操作码,对应n种不同的指令,其中M种用于零地址指令,N种用于一地址指令,故二地址指令最多有n - M - N
  3. 扩展操作码技术:将地址指令中不使用的的地址码作为操作码扩展。
  4. (操作码4位,地址码6位)采用扩展操作码技术,若二地址指令有P条,零地址指令有Q条,则一地址指令最多有(2^4 - P) * 2^6 - Q / 2^6
  5. 扩展码的设计:
    • 不允许短码长码的前缀
    • 各指令的操作码一定不能重复
  6. 变址适合按下标顺序访问的一维数组元素
  7. 基址为无符号数
  8. 主存地址不能为
  9. 转移指令
    1. 目标地址的一般形式:(PC)+ A
    2. 具体某条转移指令的目标地址范围:已知具体(PC),分析出A的取值范围为a1 ~ a2,则目标地址范围为(PC) + a1 ~ (PC) + a2
    3. 转移指令的目标地址范围:
      • 分析(PC)和A各自的取值范围,得到范围1
      • 分析存储器的地址范围,得到范围2
      • 取范围1和范围2的交集
  10. MDR位数和MAR位数的确定
    • MDR:其位数和存储字长相等,一般至少等于机器字长,即至少一次访存能取够计算机一次所能处理的数据。需要根据题干灵活理解
    • MAR:其位数对应存储单元个数,一般由主存地址空间大小和编址方式确定
  11. 转移指令向后(反向)最多可跳转2^(OFFSET的位数)-1
  12. 无符号数:看进位/借位标志CF、零标志ZF
  13. 有符号数:一般用补码,此时看符号标志NF、溢出标志OF、零标志ZF
  14. 取指令:根据PC取出本条指令,修改PC为顺序执行的下条指令(PC) + 1 -> PC(此处的“1”为一个指令字长,按字节编址时,有可能是(PC) + n,也有可能是多次(PC)+ 1
  15. 多路选择器MUX:根据控制信号选择(从输入端中选择一个值)一个输入端直通到输出端(放在加法器后)
  16. 指令格式(定长操作码,定长指令字)
    1. 操作码字段OP的位数决定最多可有的指令条数,n位对应2^n
    2. 操作数可有多个,每个操作数由寻址特征形式特征A共同指出
  17. SRop=mov 表示直送,SRop=left表示左移一位,SRop=right表示右移一位
  18. 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
  19. ALU的宽度机器字长相等
  20. 对于无符号数零扩展,对于有符号数符号扩展
  21. 进位/借位标志CF的产生
    • A + B时,进位输出位1CF为 1,进位输出为0CF为 0
      • 1111 + 0001 加法,有进位,CF=1
      • 1100 + 0001 加法,无进位,CF=0
    • A - B时,进位输出为1CF为 0,进位输出为0CF为 1
      • 1111 - 1111 减法,无借位,CF=0
      • 0001 - 1000 减法,有借位,CF=0
  22. 要使CPU在发生溢出时转异常处理,编译器应在 imul指令后加一条“溢出自陷指令”,使得CPU自动查询溢出标志OF,当OF=1时调出1“溢出异常处理程序”
  23. 分页存储管理方式 - 虚页号位数 | 页内地址

中央处理器

  1. 指令寄存器用于存放当前正在执行的指令,位数取决于指令字长
  2. 程序计数器用于存放下一条指令的地址,位数取决于存储器的容量
  3. 地址寄存器用于暂存指令或数据的地址
  4. 程序状态字寄存器用于保存系统的运行状态
  5. 条件转移指令执行时,需对标志寄存器的内容进行测试,判断是否满足转移条件
  6. 数据总线的位数与处理器的位数相同
  7. 通用寄存器位数取决于机器字长
  8. 指令译码是指对指令的操作码字段进行译码
  9. CPU中有MAR,MDR,PC,IR,PSW
  10. 取值操作自动进行的,控制器不需要得到相应的指令
  11. 指令周期的第一个周期就是取指周期,即从主存中取出指令字
  12. 指令字长等于存储字长的前提下,取指周期等于机器周期
  13. 指令字长机器字长的长度没有关系
  14. 通常完成一条指令可分为取指阶段执行阶段。在取指阶段通过访问存储器可将指令取出;在执行阶段通过访问存储器可以将操作码取出。CPU可以根据指令周期的不同阶段判断从存储器取出的二进制代码是指令还是`数据
  15. 中断周期之执行周期,中断周期之下一条指令的取指周期
  16. CPU数据通路结构分为总线结构和专用数据通路结构,其中总线结构分为但总线结构、双总线、多总线结构
  17. 单周期处理器是指所有指令的指令周期为一个时钟周期的处理器。
  18. 单总线数据通路将所有寄存器的输入端输出端都连接在一条公共通路上,一个时钟内只允许一次操作,无法完成指令的所有操作
  19. 取指
    • 微操作
      • (PC) -> MAR
      • M(MAR) -> MDR
      • (PC) + 1 -> PC
      • MDR -> IR (传指令的是MDR)
    • 控制信号
      • PC -> BUS, BUS -> MAR
      • READ
      • +1
      • MDR -> BUS, BUS -> IR
  20. ACC:Accumulator,累加器,是运算器中既能存放运算前的操作数,又能存放运算结果的寄存器
  21. 透明性
    • 对所有人可见
      • PSW
      • PC
    • 对所有人透明
      • MAR
      • MDR
      • IR
      • Cache
      • 关段式虚拟存储器的分段方式
    • 对应用程序员透明
      • 暂存寄存器
      • 虚拟寄存器
    • 对汇编程序员可见
      • PC
      • ACC
      • 基址寄存器
      • 标志寄存器
      • 状态寄存器
      • 通用寄存器
    • 对系统程序员可见
      • 虚拟存储器
  22. XXout/in表示该寄存器与另一端之间数据通路的连接与断开。它们都由控制部件所控制,必须连接到控制部件的输出端
  23. 一条线路的通断:可使用三态门,控制信号为in、out结尾,如本题SRout
  24. 多条通路的选择:可使用多路选择器MUX,通过MUXop选择相应的输入直送到输出
  25. PC自增:
    • 可由硬件自动实现,也可以用ALU实现,此时一般在MUX的一个输入端放置PC自增所需要的固定值
  26. 在微程序控制器中,控制部件向执行部件发出的控制信号是微命令,微命令执行的操作上微操作
  27. 水平型微指令的位数较多,用它编写的微程序较短
  28. 一条水平型微指令能定义并执行几种并行的基本操作;一条垂直型微指令只能定义并执行一种基本操作
  29. 若指令系统中具有n中机器指令,则控制存储器中的微程序数至少是n + 2(增加的一个为公共的取指微程序,另 1 个为对应中断周期的微程序)
  30. 一台数字计算机基本上可以划分为两大部分:控制部件和执行部件
  31. 主存储器(MM),在CPU外,用于存储指令和数据,由RAM和ROM实现。
  32. 控制存储器(CS)用来存放实现指令系统的所有微指令,是一种只读型存储器,机器运行时只读不写,在CPU的控制器内。CS按照微指令的地址访问
  33. 流水线的加速比 S = T0(不使用流水线时的执行时间) / Tk(使用流水线时的执行时间)= kn△t / (k + n - 1)△t = kn / k + n - 1
  34. 流水线的吞吐率 TP = n(任务数) / Tk(处理完成n个任务所用的时间) = n / (k + n - 1)△t

评论


暂无评论


* 登录后即可评论

©2022 联系我们

粤ICP备2022023863号
500x500