计算机组成原理第一轮强化笔记
根据天勤高分笔记所做
1 计算机系统概述
计算机的发展历程
-
冯·诺依曼体系结构
-
第一代计算机(1946—1957年)
- 电子管时代,机器语言
-
第二代计算机(1958—1964年)
- 晶体管时代,汇编语言
-
第三代计算机(1965—1971年)
- 中小规模集成电路时代,操作系统问世
-
第四代计算机(1972—至今)
- 超大规模集成电路时代,微处理器问世
-
-
第五代计算机—智能计算机
-
第六代计算机—生物计算机与量子计算机
计算机的分类
-
Flynn’s Taxonomy(按照指令和数据流分类)
-
单指令流单数据流 SISD
- 传统冯诺依曼体系结构
-
单指令流多数据流 SIMD
- 阵列处理器和向量处理器系统
-
多指令流单数据流 MISD
- 不存在
-
多指令流多数据流 MIMD
- 多处理器和多计算机系统
-
计算机系统
-
冯·诺依曼计算机的特点:
-
核心概念:存储程序
-
指令和数据以同等地位保存于存储器内,并可按地址访问
-
指令在存储器中顺序存放
-
以运算器为中心
- 微处理器(芯片)问世之后以存储器为中心
-
-
计算机硬件
-
存储器
-
主存
- CPU可直接访问
-
辅存
- 需调入主存中才可被访问
-
概念
-
存储元
- 存放一位二进制信息
-
存储单元
- 由若干存储元组成,存放多位二进制信息
-
存储体
- 由多个存储单元组成(存储矩阵)
-
存储字
-
每个存储单元中二进制代码的组合
- 表示数值,指令,地址
-
-
存储字长
-
每个存储单元中二进制代码的位数
- 等于数据寄存器字长
-
-
-
MAR和MDR是存储器的一部分,但属于CPU,地址译码器属于存储器
-
寻址范围
-
直接给出存储器的容量和字长
例:字长32位,存储器容量1MB(64位系统字长64位)- 按字节寻址 — 8Mbit/8bit=1M
- 按半字寻址 — 8Mbit/16bit=512K
- 按字寻址 — 8Mbit/32bit=256K
- 按双字寻址 — 8Mbit/64bit=128K
-
只给出地址线和数据线位数
例:CPU有20根地址线和32根数据线寻址本身和数据线没有关系,地址线的位数对应的就是按字节寻址(因为系统按字节编制),如果按字寻址,则需要拿出地址线来做字内字节寻址。
32根数据线表示一个字四字节,因此一个字地址对应四个字节地址,需拿出两根地址线来寻址。
对存储器容量nMB的存储器来说,默认为nM×8格式,即n×20根地址线,8根数据线- 数据线位数 = 存储字长
- 按字节寻址 — 2^20 = 1MB
- 按字寻址 — 2^20 / 2^2 = 256K
-
-
-
运算器
-
核心:算术逻辑单元 ALU
-
通用寄存器
必须:
累加器 ACC
乘商寄存器 MQ
操作数寄存器 X变址寄存器 IX
基址寄存器 BX程序状态字寄存器 PSW
-
-
控制器
CPU获取PC中地址后,PC+1,进入主存MAR中寻找到该地址并将指令传输到MDR中,再传给IR
OP(IR)送至CU产生控制信息
Ad(IR)送至MAR取操作数CPU根据指令执行阶段判断是数据or指令
-
程序计数器 PC
- 主存MAR
-
指令寄存器 IR
- 主存MDR
-
控制单元 CU
-
-
I/O设备
- 包括外界的辅助存储器
-
-
计算机软件
-
系统软件
- 操作系统/编译程序/文件系统
-
应用软件
- QQ/WPS/…
-
编程语言
- 机器语言/汇编语言/高级语言
-
-
层次结构
-
微程序机器级
- 微指令,硬件直接执行
-
传统机器级
- 微程序,机器语言
-
操作系统级
- 机器语言解释作业程序
-
汇编语言机器级
- 汇编程序翻译机器语言
-
高级语言机器级
- 编译成汇编程序或直接翻译成机器语言
-
性能指标
一个指令周期由多个机器(CPU)周期组成
一个机器周期由多个时钟周期组成
微指令周期通常取机器周期
机器周期:一个指令基本操作的最短时间
-
主存容量
- MAR×MDR
-
吞吐量和响应时间
- 响应时间越短,吞吐量越大
-
主频
- 每秒中包含的时钟周期数
-
CPU周期
-
机器周期,若干个CPU周期构成一个指令周期
- 定义:从内存读取一条指令字的最短时间
-
-
CPU时钟周期
- 主频倒数,T = 1 / f,CPU中最小的时间单位
-
CPI
- CPU执行一条指令所需的时钟周期数
-
IPC
- CPU的每一个时钟周期内所执行的指令数
-
MIPS = 指令条数 /(执行时间 × 10⁶)= 主频 / CPI
- 每秒可执行百万条执行数
-
MFLOPS
- 每秒百万次浮点运算
-
CPU执行时间
- 时间 =(指令条数 × CPI)/ 主频
2 数据的表示和运算
(n,k)海明码指数据位k位,校验位n-k位,数据编码共n位
8421BCD码中1010-1111不使用
原码一位乘法中移位为逻辑移位,部分积使用n+1位寄存器
机器数反码表示,为负时,左移最高数位丢0结果出错,右移最低丢0损失精度
算术移位补码左移的前提条件是原最高有效位与原符号位要相同
在特殊场合可以使用浮点非规格化数,规格化浮点数才使用隐藏位
float表示的最大整数2128-2104
对阶操作不会引起阶码的上溢或下溢
尾数溢出时结果不一定溢出
数据总线属于运算器部件
浮点数研究:尾数的基,阶码尾数长度
编码
-
字符编码
-
ASCII码
- 7位编码 / 0:48 A:65 a:97
-
-
BCD码(Binary-Coded Decimal)
-
有权码
-
8421BCD码
- 1001进位,低位1100表示+,1101表示-
-
2421BCD码
- >5 高位 1,<5 高位 0
-
-
无权码
-
余三码
- 8421码各位+3
-
-
-
校验码
-
检错编码
-
奇偶校验码
- 奇校验 1 为奇数,偶校验 1 为偶数
-
循环冗余校验(CRC)码
- 模二除法做异或,余数位数=多项式最高次
-
-
纠错编码
-
海明码
海明距:不同码字的最小码距
例:100和010码距为2
海明距为1的编码方案不能检测错误
海明码纠错能力≤检测能力-
信息位 k 位,校验码 r 位
- 2^r-1 ≥ k + r
-
D4D3D2D1
- D4D3D2P3D1P2P1
-
检测d位错误需海明距 d+1 位,纠正d位错误需 2d+1位
-
检测d位同时纠正t位需海明距d + t-1位
-
-
-
-
存放方式
-
大端存储
- 高字节低地址(01 23 45 67)
-
小端存储
- 低字节低地址(67 45 23 01)
-
定点数表示
Tips:
补码数码越大,真值越大
[-x] 补= [x]补包括符号位取反+1
移码 = 补码符号位取反
-
真值0表示
- 原码,反码不唯一
- 补码,移码唯一
-
表示范围 8bit
- 原码,反码:﹣127 - 127 / (﹣1,1)
- 补码:﹣128 - 127 / [﹣1,1)
- 移码:0 - 255 / [ 0,2)
定点数运算
地址运算采用无符号数
[x] 补最右1左边取反为[-x]补
除法判断溢出:
原码除法,第一次商1则溢出
补码除法,第一次商结果和两个数的符号位异或比较,不同则溢出(同号1异号0)
-
简单运算
-
移位运算
-
算术移位
-
符号位不变
- 双符号位低位参与移位
-
正数负原全添0,负补左0右反1
-
-
逻辑移位
- 全添0
-
-
符号扩展
- 正数负原全填0,负补小0整反1
-
加/减运算
-
原码加减
- 加法先判断符号位,减法被减数符号位取反
-
补码加减
- [x]补 + [y]补 = [x + y]补
- [x]补 + [-y]补 = [x-y]补
-
-
溢出
-
单符号位
- 超出表示范围,结果与操作数符号不同
- 最高位和符号位进位异或为1
-
双符号位
存储器或寄存器只保存一个符号位(00,11)
仅在操作时同时送到加法器两位符号位输入端- 高位不变,01正溢出,10负溢出
-
-
-
乘法
-
二位乘法
-
原码
低位00 +0右移两位
低位01 +|x|右移两位
低位10 +2|x|右移两位
低位11 +3|x|右移两位- 移位次数:乘数位数为偶:n / 2 次 | 奇:(n / 2)+1 次
- 加法次数:最多n / 2+1 次
-
补码
-
部分积和被乘数3符号位,乘数双符号位
- 移位次数:乘数位数为偶:n / 2 次 | 奇:(n / 2)+1 次
- 加法次数:最多n / 2+1 次
-
-
-
一位乘法
-
原码
-
符号位异或,数值位相乘
- 被乘数寄存器X
- Y低位1+|x|,低位0+0,右移
- 乘积寄存器P|乘数寄存器Y
- 最后结果为P|Y存储的数,P需n+1位(防溢出)
-
两个n位数相乘,n次加法n次移位
-
-
补码
-
校正法
-
利用原码一位乘再校正,双符号位防溢出
- 乘数符号位不参与运算
- Y低位1+[x]补,低位0+0,右移
- 乘数Y<0则结果加 [ - x]补 校正
-
-
比较法(Booth算法)
-
双符号位,符号位参与运算
- 被乘数寄存器X
- 00 / 11:右移一位
- 01:+[x]补,右移一位
- 10:+[-x]补,右移一位
- 乘积寄存器P|乘数寄存器Y + 1
-
两个n位数相乘,n+1次加法n次移位
-
-
-
-
-
除法
-
原码
-
符号位异或,数值位相除,补码运算
-
恢复余数法
-
先减(加[ - y]补)
- > 0 商1 左移
- <0 商0 加 [ - y] 补 左移
-
最后一步余数为负,恢复余数加y
-
逻辑移位n次,上商n+1次
-
缺点:恢复余数次数不确定,电路设计复杂
-
-
加减交替法
-
思路
- 余数>0,p‘ = 2 * p- [y] 补
- 余数<0,p’ = 2 * p+ [y] 补
-
先减(加[ - y]补)
- > 0 商1 左移 加[ - y]补
- <0 商0 左移 加 [y] 补
-
-
-
-
补码
-
加减交替法
-
思路
- 余数和 y 同号,商 1,p‘ = 2 * p- [y] 补
- 余数和 y 异号,商 0,p’ = 2 * p+ [y] 补
-
先判断是否同号
- 同 商1 左移 加[ - y]补
- 反 商0 左移 加 [y] 补
-
末位恒置 1
- 移位n次,上商n+1次
-
符号位参与运算
-
-
-
浮点数表示和运算
-
浮点数表示
- N = rᴱ × M(r是基数,E是阶码,M称为尾数)
- r省略,M反应精度,M = ms + m
-
IEEE754标准
-
短浮点数
- 32位,阶码127,尾数23位
-
长浮点数
- 64位,阶码1023,尾数52位
-
临时浮点数
- 80位,阶码16383,尾数64位
-
尾数原码表示,1.0xxxxx中1省略,实际尾数位数加1
-
-
浮点数运算
-
规格化数:r = 2时,尾数M要满足1/2 ≤ |M| ≤ 1
- 原码规格化:正数:0.1xxxxx / 负数:1.1xxxxx
- 补码规格化:正数:0.1xxxxx / 负数:1.0xxxxx
-
对阶
-
低阶向高阶看齐,低阶右移
- 高阶 -> 低阶 左移可能改变符号位
-
-
规格化
-
左规
- 00.0xxxx / 11.1xxxx
- 补码左移,阶码减,移动次数不确定
-
右规
- 01.xxxxx / 10.xxxxx
- 补码右移一位恢复规格化数,阶码加一
-
-
尾数舍入
-
0舍1入法
- 末位为0舍去,为1加1 — 可能需要再次右规
-
恒置1法
- 末位恒置1
-
-
溢出
-
01 上溢 趋于∞
- 中断处理
-
10 下溢 趋于0
- 按机器零处理
-
-
-
类型转换
-
int
-
有效位数31位
- 相当于有10位十进制有效数
-
-
float
-
有效位数24位
- 2^24 = 16777216
- 相当于有7位十进制有效数
-
-
double
-
有效位数53位
- 相当于有17位十进制有效数
-
-
逻辑电路
-
组合逻辑
-
ALU
-
74181芯片
- 组内并行,组间串行
-
74182芯片
- 组间并行
-
-
-
时序逻辑
3 存储系统
块,编址,单元
高位 - 低位:tag,标记,块内地址
直接映射不考虑替换算法
对每个标记项来说,有效位1,脏位1(写回法),替换控制位,标记字段
快表缺页可以用软件也可以用硬件处理,Cache缺页由硬件处理,缺页由软件处理
根据内容来进行存取的存储器称为相联存储器—快表TLB
Flash可以实现随机存取,但在原理上来说仍属于ROM只读存储器
SRAM读出非破坏性,不需要再生
存储周期:连续两次启动同一存储器所需要的最小时间间隔
对破坏性存储器读/写需再生(刷新)
芯片刷新周期只看存储阵列行数
部分译码只用高位地址的一部分参与译码,因此可能出现地址重叠
Cache指令和数据分离为了减少流水线冲突
Cache缺失写入也算入存储周期中
全相联映射块冲突概率最小,直接映射冲突概率最大
虚拟存储器缺页会发出缺页中断,Cache缺页由硬件自动处理
页表大小 = 页表项数×页表字节数
刷新带宽 = 分辨率×颜色深度×频率
芯片引脚
电源和接地 2
地址线 n
SRAM n DRAM n/2
数据线 n
片选线 k
全译码 线选法 k = n
部分译码 38译码器 k = log2n
读写控制线 1 or 2
行列地址选通线
DRAM 2
片选和选通线不算地址和数据引脚
层次结构:Cache—主存—磁盘—磁带、光盘
存储器
-
半导体存储器
存储矩阵、译码驱动、读写电路、读写控制线、片选线、地址线和数据线
做题时芯片引脚数目可能加上片选线,读写控制线…-
RAM随机存储器(易失性存储器)
-
SRAM
- 速度快于DRAM,所以一般用它作Cache
-
DRAM
-
原理
利用存储元电路中栅极电容上的电荷来存储信息。采用地址复用技术,地址线是原来的一半
-
刷新
集中刷新:速度快,但刷新期间(死区)不能访问存储器
分散刷新:没有死区,但降低了速度
异步刷新:缩短了死区,提高了效率
动态RAM的刷新单位:行- 死时间
- 刷新一行时间等于一个存储周期
-
-
-
ROM只读存储器(非易失性存储器)
-
MROM
-
PROM
- 一次可编程
-
EPROM
- 可擦除可编程
-
Flash闪存存储器
- 可写
-
SSD固态硬盘
-
-
-
串行访问存储器
-
半导体存储器都可随机访问地址空间
-
顺序存取存储器
- 磁带
-
直接存取存储器
- 磁盘(寻道随机,磁道顺序串行)
-
主存与CPU的连接
-
扩展
-
位扩展
- 对字长扩充 。8片8Kx1位——>8Kx8位
-
字扩展
- 扩充字的数量。4片16Kx8位——>64Kx8位
- 地址线从低位开始,译码器地址在高位
-
字位扩展
-
-
片选
- 线选法
- 译码片选法
提速方案
-
双端口RAM
- 两组互相独立地址线/数据线/读写控制线
- 可同时读,不可同时写
-
多摸块存储器
-
单体多字
- 指令和数据需连续存放
-
多体并行
-
高位交叉
-
高位为体号,低位为体内地址
- 并行:不同请求源访问不同体
-
-
低位交叉
-
低位为体号,高位为体内地址
- 并行:同一请求源访问不同体
- 模块号 = 单元地址 % m
-
-
-
Cache
CPU与Cache数据传输以字为单位
主存与Cache数据传输以块为单位
Cache中存放的是主存信息的副本
对程序员透明
多级Cache
L1:指令和数据分开存放
L1 data cache / L1 code cache
L2:指令和数据放一起
-
映射方式
-
直接映射
- 主存块号低位 — Cache块号
- 主存字块标记 | Cache字块地址 | 字块内地址
- 冲突概率高,适合大容量Cache
-
全相联
- 标记位 = 主存块个数
- 主存字块标记 | 字块内地址
- 需比较所有Cache标记,适合小容量Cache
- 比较方法:按内容寻址的相联存储器
-
组相联
- 一组 - 全相联 / 一块 - 直接映射
- 主存字块标记 |组地址 | 字块内地址
-
-
替换算法
- FIFO
- 随机
- LRU
-
写策略
-
写命中
-
全写法 Write Through
- 不需修改位
-
写回法 Write Back
-
-
写不命中
-
-
容量
- =标记项 × 行数 + 数据项大小
虚拟存储器
-
操作系统和硬件结合实现,逻辑存储器
-
空间大小由计算机地址总线的数量来决定
-
分类
-
页式虚拟存储器
- 请求分页
- 缺点:不利于程序处理,保护,共享
-
段式虚拟存储器
- 请求分段
- 缺点:不利于空间分配
-
段页式虚拟存储器
- 请求段页式
- 缺点:地址映射需多次查表
-
-
地址翻译
-
TLB—页表Page(TBL不命中)—Cache—主存—外存
- 快表命中,页表一定命中,Cache不一定命中
- 页表不命中,Cache一定不命中
-
外存
-
硬盘
-
柱面号 = 磁道号 / 盘面号 = 磁头号 / 记录块 = 扇区
-
磁道—盘面—扇区
- 相邻信息同一柱面
-
磁盘寻址最小单位:扇区
-
数据传输速率 = 每条磁道容量 × 磁盘转速
-
-
磁盘阵列 RAID
- RAID 0:分块存储
- RAID 1:镜像备份
-
光盘
-
激光照射
- 第一代光存储:非磁性介质,不可重写
- 第二代光存储:磁性介质,可重写
-
4 指令系统
在各种寻址方式中,指令的地址码可能出现寄存器编号,设备端口地址,存储器的单元地址,数值
指令的操作数可能在:内存单元,寄存器,堆栈区,I/O端口,指令立即数
子程序的最后一条指令一定是返回指令,一般返回地址保存在堆栈中不需要地址码,如果计算机不使用堆栈保存则需要地址码指出返回地址
指令存放对齐,指令字长等于8倍数,不一定和存储字长一样大
零地址双操作数的操作数地址隐含在堆栈指针中
操作数的物理位置只可能在数据寄存器或主存单元中
缓冲存储器cache存放最近使用数据,控制存储器ROM组成存放微程序,对用户透明,不可作为地址码
CPU不能访问外存,指令只能使用主存地址
指令的地址码可能为寄存器编号,存储器的单元地址,设备端口地址和数值
对任何指令,取指令都需访存一次
变址寄存器存放的内容即是(IX)
基址和变址指定通用寄存器需地址位数
立即寻址>直接寻址>间接寻址
概念
-
全部机器指令的集合又称为机器的指令系统
-
指令字长
-
一条指令占用存储空间的大小
-
机器字长
- 等于,单字长指令
- 一半,半字长指令
- 两倍,双字长指令
-
取决于操作码的长度,操作数的地址,操作数的个数
-
-
每条指令都必须包含操作码
指令
-
操作码
-
定长操作码
-
不定长/扩展/变长操作码
- 不允许较短的操作码是较长操作码的前缀
- 操作码长度随地址码个数减少而增加
- 频率较高的指令分配较短的操作码
-
-
地址码
-
包含
- 源操作数地址
- 目的存放地址
- 下一条指令地址
-
分类
-
零地址指令
-
OP
- 空操作指令,停机指令,关中断指令等
- 堆栈计算机的零地址运算类指令
-
-
一地址指令
-
OP|A1
-
自增,自减,求反,求补等
- OP(A1)->A1
-
隐含目的地址的双操作数指令
- (ACC)OP(A1)->ACC
-
-
-
二地址指令
-
OP|A1|A2
-
加减乘除类运算指令
- (A1)OP(A2)->A2
-
-
-
三地址指令
-
OP|A1|A2|A3
- (A1)OP(A2)->A3
-
-
四地址指令
-
OP|A1|A2|A3|A4
- (A1)OP(A2)->A3, JUMP->A4
-
-
-
寻址方式
-
数据寻址
-
寻址特征标识类型
-
立即寻址
-
OP|#|A
- A立即数,补码表示,A的位数限制大小
- 用于赋初值
-
-
直接寻址
-
LDA|特征|A
- EA = A
-
-
隐含寻址
-
ADD|特征|A
- 算术运算指令另一地址隐含ACC中
- 缩短指令字长
-
-
间接寻址
-
一次间址
-
EA = (A)
- 扩大寻址范围和子程序返回
-
-
多次间址
- 地址需留一位高位表示内容是数据还是地址
-
用于子程序返回和查表
-
-
寄存器寻址
-
OP|特征|Ri
- EA = Ri
- 指令字短,执行快
-
-
寄存器间接寻址
- EA = (Ri)
- 用于编制循环程序,扩大寻址范围
-
偏移寻址
-
基址寻址
-
EA = A + (BR)
-
寄存器BR的内容不可变,A可变
-
隐式:专门BR,不必指出
- OP|特征|A
-
显式:指明通用寄存器R0做BR
- OP|特征|R0|A
-
用户只能知道哪个通用寄存器做BR,不能修改BR的值
-
扩大寻址范围,有利于多道程序设计,常用为程序或数据分配存储空间
-
-
变址寻址
-
EA = A + (IX)
-
寄存器IX的内容可变,A不可变
-
隐式:专门IX,不必指出
- OP|特征|A
-
显式:指明通用寄存器R0做IX
- OP|特征|R0|A
-
用户可以修改IX中的值,A的值不可修改
-
主要用于处理数组问题和循环程序
-
-
相对寻址
- EA = A + (PC)
- 基于局部性原理
- 用于转移类指令和程序浮动
-
-
-
-
指令寻址
-
寻找下一条将执行指令的地址
-
顺序寻址
- (PC) + 1
-
跳跃寻址
- 转移类指令JMP
-
-
比数据寻址简单
-
CISC / RISC
-
CISC
-
复杂指令集,微程序控制
-
不定长,指令种类多,寻址方式种类多
- 寄存器少
-
大多数指令需要多个时钟周期完成
- 各指令使用频率差距大
-
访存指令不受限制
- 更难设计,但易扩展
-
-
RISC
-
精简指令集,组合逻辑控制
-
定长,指令种类少,寻址方式种类少
-
有多个通用寄存器
- 译码快,访存次数少,执行速度快
-
-
大多数指令在一个时钟周期内完成
- 访存指令只有Load/Store
-
一定采用流水线技术
- 超标量/超流水线技术可CPI<1
-
5 中央处理器
通常在一个机器周期结束时查询DMA请求,在一个指令周期结束时查询中断请求
机器的速度不仅与主频有关,还与机器周期中所含的时钟周期数以及指令周期中所含的机器周期数有关
机器有M条指令,对应M+3个微程序(取指,间址,中断周期)
主存储器用于存放程序和数据,在CPU外部用RAM实现,控制存储器CM用于存放微程序,内部ROM实现
条件测试数=无条件转移+条件判断
控制存储器容量 = 2^下地址位数 × 微指令字长
直接编码有几个外部条件就取几位
字段直接编码有N个外部条件取n位2^n ≥ N+1
组合逻辑OP(IR)–>指令译码器 微程序OP(IR)–>微地址形成部件
在流水线情况下,一条指令的执行时间并没有缩短
指令中断后执行下一条指令,缺页中断后执行原指令
中断响应优先级不可动态改变,中断处理优先级可以用中断屏蔽字改变
中断向量是中断服务程序入口地址,而中断向量地址是中断服务程序入口地址的地址
响应中断保存断点,处理中断保存现场
空操作指令,PC+1改变
中断屏蔽字为0表示不可被中断,1越多优先级越高
CPU控制器由IR,PC和操作控制器组成,PSW属于运算器
三级时序系统:机器周期,节拍,工作脉冲
微指令的顺序执行使用CMAR自加1
控制存储器可以用EPROM或Flash实现
组合逻辑和微程序控制器的主要区别在于微操作信号发生器构成不同
单周期CPU不能采用单总线结构数据通路,指令执行过程中控制信号不变
控制存储器CS按地址访问
流水线数据通路不包括控制部件
结构
-
运算器 ALU
- 数据加工
-
控制器 CU
- 指令控制/操作控制/时间控制
-
中断系统
- 中断处理
-
寄存器
-
运算器寄存器
-
暂存寄存器
-
通用寄存器
- 累加寄存器 ACC
- AX,BX,SP等
-
程序状态寄存器 PSW
- 进位C,溢出V,为零Z,为负N
- 可以保存中断和系统状态等信息
-
-
控制器寄存器
- 程序/指令计数器 PC
- 指令寄存器 IR
- 存储器地址寄存器 MAR
- 存储器数据寄存器 MDR
-
用户可见
-
PSW,PC,通用寄存器
- PSW:条件转移;PC:跳转
-
-
用户透明
- MAR,MDR,IR,Cache,微程序结构和功能
-
对应用程序员透明
- 暂存寄存器,虚拟寄存器
-
-
总线
指令执行过程
-
机器周期
- 若干机器周期组成一个指令周期
- 若干时钟周期组成一个机器周期
-
指令周期
-
取址周期
- PC->IR
-
间址周期
- 间接寻址
-
执行周期
- ALU操作产生执行结果
-
中断周期
- 中断响应
-
-
执行方案
-
单指令周期
- 串行,所有指令执行时间相同
-
多指令周期
- 串行,指令执行时间可不同
-
流水线方案
- 并行
-
数据通路
-
实现CPU内部的数据交换
-
基本结构
-
CPU内部总线
-
单总线
- 数据冲突较多,性能较低
-
双总线/多总线
-
-
专用数据通路
- 性能较高,硬件量大
-
控制器
-
控制单元
-
输入
- IR/标志/时钟/系统总线控制信号
-
输出
- CPU控制信号/系统总线控制信号
-
-
控制方式
-
同步
- 定长节拍/不定长节拍/中央控制与局部控制结合
-
异步
- 应答控制
-
联合控制
- 大部分微操作同步,小部分微操作异步
-
-
硬布线/组合逻辑控制
-
速度快,制造周期长,可扩展性差
-
微操作
- 一个微操作命令对应一个逻辑电路
-
-
微程序控制
-
机器指令—微程序—微指令—微命令
-
组成
-
控制存储器 CM
- 核心,存放微程序,只读
-
微指令存储器 μPC
- 操作控制|顺序控制
-
微数据寄存器 μMDR
-
微地址寄存器 μMAR
-
-
编码方式
-
直接编码
- 每一位代表一个微命令
-
字段直接编码
- 互斥性微指令分在同一段内
- 相容性微指令分在不同段内
- 每个字段独立编码,各字段编码含义单独定义
- 每个字段还要留出一个状态,表示本字段不发出任何微命令(通常用000)
-
字段间接编码/隐式编码
- 每个字段不独立
-
混合编码
-
-
微指令地址形成方式
-
断定方式
- 直接由微指令的下地址字段指出
-
根据机器指令的操作码OP形成
-
增量计数器
- 自增
-
分支转移
- 操作控制|转移方式|转移地址
-
硬件产生
-
-
格式
-
水平型微指令
- 并行性好,微指令少,短微程序长微指令序列
-
垂直型微指令
- 微指令多,和机器指令相似,长程序短序列
-
-
指令流水线
-
冒险/冲突
-
数据冒险—最严重
-
写后读 Read After Write
- 指令先写再读
-
读后写 Write After Read
- 指令先读再写
-
写后写 Write After Write
- 指令先写再写
-
解决方法:数据旁路
-
-
控制冒险
- 转移指令导致断流
- 解决方法:猜测
-
结构冒险
- 不同指令在同一周期使用同一部件
- 解决方法:停顿
-
-
性能指标
-
吞吐率
- 单位时间完成指令数
-
加速比
- 不使用流水线/使用
-
效率
- 时空图有效面积
-
-
分类
-
超标量
- 加部件
-
超级流水线
- 划分更多段
-
超长指令字
- 也需多个处理部件
-
动态流水线
- 多种运算可以同时进行
-
中断系统
-
进入中断周期
-
中断隐指令,硬件自动执行
-
保护程序断点
-
寻找中断服务程序入口地址
-
硬件向量法
- 中断向量地址形成部件产生向量地址得到入口地址
-
软件查询法
-
-
关中断
-
-
-
响应中断
-
中断源提出中断请求
- 中断请求标志触发器INTR置1
-
仲裁
- 硬件:菊花链
- 软件:优先级从高到低查询请求
-
-
关中断
- 允许中断触发器EINT置0
-
找出中断源,保存PC
-
转移到中断服务子程序
-
多重中断
- 提前设置开中断
- 中断优先级高的可以中断优先级低的中断源
6 总线
地址总线单向传输,控制总线单根单向,整体双向传输
数据线可传输中断类信号
I/O总线数据线上传输的信息包括命令字,状态字和中断类型号
USB接口最多可以级联127台设备
使用总线结构仅仅是减少了传输线的条数
控制线应传输时序,控制,响应信号
常规传输:一次传输一个地址和一个总线宽度的数据;猝发传输:一次传输一个地址和一批数据
链式查询只用三根控制线:总线请求,总线忙,总线同意
总线忙信号由获得总线的设备发出
计数器定时查询方式只需要总线忙和总线请求信号线
同步总线适用部件距离短,存取速度一致的场合,通常CPU内部总线,处理器总线适用同步总线
概念
-
传输周期
-
CPU通过总线对存储器或I/O端口进行一次访问的时间
- 申请/寻址/传输/结束
-
-
总线特性
- 机械特性:尺寸,形状
- 电气特性:传输方向,有效电平范围
- 功能特性:传输线的功能
- 时间特性:信号的时序关系
-
分类
-
并行/串行传输总线
-
计算机/测控总线
-
按连接部件分为
-
片内总线
- CPU芯片内部,寄存器与寄存器,ALU之间
-
系统总线
- 连接五大部件的信息线
- 数据总线/地址总线/控制总线
-
通信总线
- 计算机系统之间
-
-
-
组成
-
控制线/地址线/数据线
- 复用:地址信息也使用数据线传输
-
-
性能指标
-
总线宽度
- 一次可传送的最大数据位数,数据总线根数
-
总线带宽
- 单位时间内传输的数据位数,宽度 × 总线频率
-
结构
-
单总线
- 共用地址线,统一编址
- I/O总线
-
双总线
- I/O设备从单总线中分离
- I/O总线/主存总线
-
三总线
- 增加DMA,任意时刻只能使用一种总线
- 主存总线与DMA总线不能同时存取
- I/O总线只有CPU使用I/O指令时才使用
- I/O总线/主存总线/DMA总线
仲裁
-
集中式
-
链式查询
- 共用一根总线请求线,越近优先级越高
-
计数器定时查询
- 设备优先级顺序可以改变,增加log2n条地址线
- 循环设备优先级相等
-
独立请求方式
- 每个设备都有总线请求线BR和同意信号线BG
- 设备优先级顺序可以改变,需2n条控制线
-
-
分布式
- 不需要中央仲裁器
总线周期
- 申请分配阶段
- 寻址阶段
- 传输阶段
- 结束阶段
总线通信
-
同步
- 统一时钟,地址信号伴随,部件存取时间接近
-
异步—并行/串行传输
-
没有统一的时钟,采用应答/握手方式
-
不互锁|半互锁|全互锁
- 没有制约|简单制约|完全制约
-
-
半同步
- 既有时钟,又有握手
总线标准
-
系统总线标准
- ISA,EISA,VESA,PCI,PCI-E
-
设备总线标准
- IDE,AGP,USB,SATA
7 I/O系统
I/O接口是主机和外设之间的桥梁,介于主机和外设之间
I/O端口是I/O接口中存放命令,数据和状态信息寄存器的统称
每一台I/O设备都是通过I/O接口连接到系统总线上的,总线包括数据线,设备选择线,命令线,状态线
I/O接口按主机访问I/O设备的控制方式可以分为程序查询接口,中断接口和DMA接口
一个I/O端口有一个地址,I/O接口有多个I/O端口则有多个地址
I/O设备通过接口与主机相连时,CPU可以通过接口地址来访问设备,因为一个接口对应一个设备
中断隐指令保存程序断点和关中断,中断服务程序保存通用寄存器和状态寄存器的内容
程序中断方式中已经包含数据传送时间,DMA的中断仅为后处理时间
DMA方式主存和外设之间没有直接的物理通路,而是通过外设接口,系统总线等部件连接的逻辑通路
CPU对DMA方式下是让出总线控制权,在一次总线事务完成后响应,DMA响应时间少于一个总线周期
对中断方式是执行中断服务程序,在每条指令执行结束后查询,所以响应时间少于一个指令周期的时间
各外设通过接口电路连接到系统总线上
磁盘间隙时间减操作(无效时间
一条指令执行结束不是发生中断请求的条件,而是CPU响应中断的条件
中断周期只执行中断隐指令
禁止中断功能由中断允许触发器完成
外部设备向DMA发送DMA请求信号,DMA再向CPU发出总线请求信号
DMA中断作业仅限于故障和正常传送结束后的处理
设备和设备控制器互连的接口标准是USB
数据传送一般发生在CPU通用寄存器和I/O端口之间
发展历程
-
早期阶段(程序查询方式)
- I/O设备与CPU串行工作
- 增加/删除设备困难
-
接口模块和DMA阶段(中断和DMA方式)
-
接口中设数据通路和控制通路使CPU和I/O设备并行工作
-
采用总线结构便于设备增删
-
仍需要CPU处理I/O请求
- DMA:使I/O设备能直接与主存交换信息
-
-
通道阶段(通道方式)
- 通道:从属于CPU的专用处理器,专门负责I/O功能
-
I/O处理器阶段
组成
-
I/O软件
-
I/O指令
- 操作码|命令码|设备码,属于CPU指令系统
-
通道指令
- 存放在主存中,由通道取出并执行,不属于CPU指令系统
-
-
I/O硬件
- 接口模块|I/O设备|通道|设备控制器等
分类
- 输入设备:键盘,鼠标
- 输出设备:显示器,打印机
- 输入兼输出设备:硬盘
I/O接口
-
功能
-
选择设备|传送数据|传送命令
-
反映I/O设备工作状态
-
中断请求触发器INTR置1
- 表示设备向CPU发出中断请求
-
中断屏蔽触发器MASK置1
- 表示该设备被屏蔽
-
-
-
组成
-
内部接口
- 与系统总线相连,并行传输
-
外部接口
- 可能串行,需串/并转换
-
-
I/O端口
-
由CPU读写的寄存器
- 数据端口|控制端口|状态端口
-
编址
- 统一编址|独立编址
-
I/O方式
-
程序查询方式
- CPU轮询监测
- 指令:测试|转移|传送
-
程序中断方式
-
处理过程
- 请求|判优|响应|服务|返回
-
硬件相关
- 中断请求触发器和中断屏蔽触发器
- 排队器|中断向量地址形成部件(设备编码器)
-
多重中断
-
中断隐指令|中断服务程序
-
-
DMA方式
-
特点
-
硬件开销大
- 完全由硬件进行成组信息传送的控制方式
-
直接存储器存取方式
- 外设与内存直接进行信息传送
-
数据不经过CPU,因此不需要保护,恢复CPU现场等操作
-
适用于磁盘等高速设备大批量数据的传送
-
中断仅作用于故障和数据传送结束时的处理
-
-
传送方式
-
停止CPU访存
- 抢占总线控制权
-
周期挪用
- CPU访存时需等待存储周期结束
- I/O设备每挪用一个存储周期都要请求总线控制权
-
分时交替访存
- 适用于CPU工作周期比主存存取周期长的情况
- 不需要总线控制权的申请,建立和归还过程
-
-
传送过程
-
预处理
- 指明输入/输出,寄存器赋初值,排队判优
-
数据传送
- 块为单位,结束(字计数器为0)提出中断
-
后处理
- 中断请求响应,校验传送数据
-
-
-
通道方式
DMA|程序中断小结
-
数据传送
- 程序中断靠程序,DMA靠硬件
-
CPU响应
- 程序中断在指令执行结束时响应
- DMA在指令周期内任意存储周期结束时响应
-
处理异常
- 程序中断可以,DMA不可以
-
现场
- 程序中断需中断服务程序,需保护现场
- DMA不需要中断服务程序,不用保护现场
-
优先级
- DMA优先级高于程序中断优先级
知识点补充
原码二位乘法
- p48
标志寄存器 F=1跳转
XMind: ZEN - Trial Version