导图社区 计算机组成原理
计算机组成原理的思维导图,计算机系统有软件和硬件组成,现代计算机的组成以存储器为中心,计算机系统的工作原理是“存储程序”的思想。
编辑于2023-08-26 09:22:24 四川省计算机组成原理
第一章 计算机系统概述
1.1计算机系统的层次结构
计算机系统的组成
软件
硬件
计算机硬件的基本组成
冯·诺依曼计算机
特点
1. 计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备5大部件组成
2. 指令和地址按同等地位存储在存储器中,可按地址访问
3. 指令和数据均用二进制代码表示
4. 指令由操作码和地址码组成
5. 指令在存储器中按顺序存放
6. 冯·诺依曼计算机以运算器为中心
现代计算机的组成
以存储器为中心
计算机的功能部件
输入设备
输出设备
存储器
主存(内存)
CPU直接访问
存储字长
工作方式为按地址存取(相联存储器是按内容存取)
组成
存储体
多个存储单元
多个存储元
地址寄存器(MAR)
在CPU中,位数等于PC
数据寄存器(MDR)
在CPU中,位数等于存储字长
时序控制逻辑
n位地址 —> 2^n 个存储单元 总容量= 存储单元个数×存储字长
辅存(外存)
运算器
ALU
通用寄存器
累加寄存器ACC
乘商寄存器MQ
操作数寄存器X
变址寄存器IX
基址寄存器BR
程序状态寄存器PSW(标志寄存器)
控制器
程序计数器PC
指令寄存器IR
控制单元CU
CPU区分指令和数据的依据: 指令周期的不同阶段
计算机软件的分类
系统软件
OS,DBMS,语言处理程序、汇编程序等
应用软件
各种科学计算类程序、工程设计类程序、数据设计和处理程序
三个级别的语言
机器语言(二进制代码语言)
计算机可以唯一直接识别和执行的语言
汇编语言
高级语言
翻译程序分为以下三类
汇编程序
将汇编语言源程序翻译成机器语言目标程序
解释程序
将源程序在的语句按其执行顺序逐条翻译成机器语言指令并执行
编译程序
将高级语言源程序翻译成汇编语言或机器语言源程序
计算机系统的多级层次结构
软件
虚拟机器 M4 (高级语言机器)
用编译程序翻译成汇编语言程序
虚拟机器 M3 (汇编语言机器)
用汇编程序翻译成机器语言程序
虚拟机器 M2 (操作系统机器)
用机器语言解释操作系统
传统机器 M1 (用机器语言的机器)
用微指令解释机器指令
微程序机器 M0 (微指令系统)
由硬件直接执行微指令
透明现象
在计算机技术中,一个存在的事物或概念从某个角度看似不存在,称为透明性现象
系统程序员所看到的底层机器级的概念性结构和功能特性对高级语言程序员(通常是应用程序员)来说是透明的
计算机系统的工作原理
“存储程序”的思想
思想:将指令以代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,然后按该程序的规定顺序执行其他指令,直至程序执行结束
工作过程:以主存储器为中心,程序和数据首先输入到运算器,然后保存到主存,程序运行时,从主存调出指令,在程序控制器和运算器中执行,执行的中间结果送主存保存,最终结果送输出设备
计算机的工作过程
程序和数据装入主存
把源程序转换为可执行文件
1. 预处理阶段
预处理器(cpp)将#开头的文件进行处理。输出hello.i文件
2. 编译阶段
编译器(ccl)对预处理的文件进行编译,生成汇编语言源程序hello.s
3. 汇编阶段
汇编器(as)将hello.s文件翻译成机器语言指令,打包成可重定位目标文件的hello.o
4. 链接阶段
链接器(ld)将多个可重定位目标文件和库函数合并成可执行文件,被保存在磁盘上
从可执行文件的首地址开始逐条执行执行指令
高级语言程序与机器语言程序的转换
程序的执行过程:预处理->编译->汇编->链接->生成可执行目标文件
指令的执行过程
根据 PC 取指令到 IR
指令译码并送出控制信号
取操作数
指令执行
回写结果
1.2计算机性能指标
容量
系统能支持的最大容量= 2^n ×存储字长
主存容量
字数x字长
机器字长
速度
吞吐量
系统在单位时间内处理请求的数量
响应时间
用户向计算机发送一个请求到系统对该请求作出响应并获得所需要结果的等待时间
主频(CPU时间频率)
CPU时钟频率(主频) =1/CPU时钟周期
时钟频率的提高,可能会对CPU的结构造成影响,从而使其他性能指标降低,因此,虽然时钟频率的提高会加快CPU执行程序的速度,但不能保证执行速度有同倍数的提高
指令条数少不代表执行时间少,时钟频率高也不说明执行速度快
CPI
执行一条指令所需要的时钟周期数
CPU执行时间
CPU执行时间=CPU时钟周期数/主频=(指令条数xCPI)/主频
=CPU时间+等待时间
MIPS(每秒执行多少百万条指令)
主频/CPI
选取一组指令组合,使得到的平均CPI最小,由此得到的MIPS就是峰值MIPS(Peak MIPS)
MIPS反映的是机器执行定点指令的速度
MIPS有时对于不同的机器进行性能比较有时是不准确或不客观的
MFLOPS
每秒所执行的浮点运算有多少百万次
基于完成操作的次数而不是指令条数
GFLOPS
TFLOPS
PELOPS
ZELOPS
专业术语
兼容
软件可移植性
固件
用基准程序进行性能评估
基准程序是专门用来进行性能评价的一组程序
一般采用执行时间的算术平均值和几何平均值来综合评价机器的性能
如果考虑每个程序的使用频度,用加权平均的方式,结果会更准确
执行时间的归一化值=参考机器上的执行时间/被测机器的执行时间
1.5
翻译程序、汇编程序、编译程序和解释程序的区别和联系是什么?
机器字长、存储字长和指令字长的区别和联系是什么
第二章 数据的表示与运算
2.1数制与编码
进位计数制及其相互转换
进位计数法
不同进制之间的转换
二进制转换为八进制和十六进制
任意进制转换为十进制
十进制转换为任意进制
整数部分
除基取余法
小数部分
乘基取余法
基本符号的种类和组合规则是信息编码的两大要素
定点数的表示
无符号数和有符号数的表示
无符号数
整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。
n位的无符号数表示范围为:0 ~ 2^n -1
子主题
机器数的定点表示
定点小数
小数点隐含存储
表示范围 -(1- 2^-n) ~ 1- 2^-n(总共n+1位)
定点整数
表示范围 :-(2^n -1 ) ~ 2^n -1(总共n+1位)
原码
纯小数的原码
若字长为n+1,则原码小数的表示范围为−(1−2^−n) ≤ x ≤ 1−2^−n(关于原点对称)
整数的原码
若字长为n+1,则原码整数的表示范围为−(2^n−1) ≤ x ≤ 2^n−1(关于原点对称)
补码
对于正数,补码与原码的表示相同,[x]补=[x]原。 对于负数,原码符号位不变,数值部分按位取反,末位加1(即所谓“取反加1”)此规则同样适用于由[x]补求[x]原。
纯小数的补码
若字长为n+1,则补码的表示范围为−1≤x≤1−2^−n(比原码多表示−1)
纯整数的补码
若字长为n+1,则补码的表示范围为−2^n ≤ x ≤ 2^n−1(比原码多表示了−2^n)
反码
对于正数,反码与原码的表示相同,[x]反=[x]原。 对于负数,原码符号位不变,数值部分按位取反,此规则同样适用于由[x]反求[x]原
纯小数的反码
若字长为n+1,则反码的表示范围为−(1−2^−n)≤x≤1−2^−n(关于原点对称)
纯整数的反码
若字长为n+1,则反码的表示范围为−(2^n−1) ≤ x ≤ 2^n−1(关于原点对称)
移码
2.2运算方法和运算电路
基本运算部件
ALU
算术运算:加、减、乘、除等
逻辑运算:与、或、非、异或等
移位、求补等

加法器
一位全加器

串行加法器
只有一个全加器,数据逐位串行送入加法器中进行运算。 进位触发器用来寄存进位信号,以便参与下一次运算。

并行加法器
串行进位的并行加法器
串行进位又称行波进位

并行进位的并行加法器
各级进位信号同时形成,又称为先行进位、同时进位

Gi=AiBi,Pi=Ai异或Bi
单级先行进位方式

多级先行进位方式

加/减运算
补码加减运算器
标志位的生成
零标志位 ZF=1 表示结果
符号标志 SF 表示结果的符号 即F的最高位,对无符号数没有意义
进/借位标志 CF 表示无符号数加/减运算时的进位/借位„
加法时, 若 CF=1 表示无符号数加法溢出
减法时,若 CF=1 表示有借位, 即不够减
特点:加法时 CF 就应等于进位输 出 Cout;减法时, 就应将进位输出 Cout 取反来作为借位标志
溢出标志 OF=1 表示带符号整数运算时结果发生了溢出
乘/除运算
乘/除运算的基本原理
乘法原理
除法原理
若被除数为 0,除数不为 0,或者定点整数除法时|被除数|<|除数|, 则说明商为 0, 余数为被除数, 不再继续执行
若被除数不为 0,除数为 0,对于整数,则发生“除数为 0”异常;对于浮点数, 则结果 为无穷大
若被除数和除数都为 0,对于整数, 则发生除法错异常;对于浮点数, 则有些机器产 生一个不发信号的 NaN 即 quiet NaN
只有当被除数和除数都不为 0,并且商也不可能溢出( 例如, 补码中最小负数除以一1 时会发生溢出) 时, 才进一步进行除法运算
乘法和除法电路的基本结构
无符号数乘法
补码乘法
除法运算
定点数的运算
定点数的移位运算
算数移位
算数移位的对象是有符号数,在移位过程中符号位保持不变
原码算术移位:左移丢1,运算出错;右移丢1,影响精度。
逻辑移位
逻辑移位将操作数视为无符号数,左移右移都添0
循环移位
补码定点数的加减法运算
[A+B]补=[A]补+[B]补(MOD M) [A-B]补=[A]补+[-B]补(MOD M) 为小数时M=2,为整数时M=2^(n+1)
符号拓展
正数
原有的符号位移到新的符号位,其他位补0
负数
原码与正数相同
补码
对于整数,原有符号位移到新符号位,,附加位用1填充
对于小数,原有符号位移到新符号位,附加位用0填充
反码
原有符号位移到新符号位,,附加位用1填充
溢出判断
采用一位符号位
采用一位符号位,根据数据位进位情况判断溢出
采用双符号位
记两个符号位为SS1异或SS2 ,则V=SS1异或SS2 若V=0,表示无溢出;若V=1,表示有溢出。 01上溢 10下溢
定点数的乘法运算
原码的一位乘法
符号位相互异或,数值位相乘
补码一位乘法
乘法运算比较
定点数的除法运算
原码除法运算
原码恢复除法运算
原码不恢复除法运算/原码加减交替除法运算
被除数减去除数,即 |x|+ [−|y|]补, 若结果为正,商1,左移,再减去除数; 若结果为负,商0,左移,加上除数。
补码除法运算
补码加减交替法
强制类型转换
无符号数和有符号数
不改变数据内容,改变解释方式
长整数变短整数
高位截取,低位保留
短整数变长整数
符号拓展
2.3浮点数的表示与运算
浮点数的表示
浮点数的格式
浮点数的真值: N =r^ E * M(E为阶码,M为尾数,r为浮点数阶码的底与尾数的基数相同)
浮点数的一般格式
浮点数的规格化
规格化:规定尾数的最高数位必须是一个有效值。
左规
左规:当浮点数运算的结果为非规格化时要进行规格化处理, 将尾数左移一位,阶码减1(基数为2时)。
右规
右规:当浮点数运算的结果尾数出现溢出(双符号位为01或10)时, 将尾数右移一位,阶码加1(基数为2时)。
规格化浮点数的尾数M的绝对值应满足:1/r≤|M|≤1 如果r=2,则有1/2≤|M|≤1
原码规格化
正数为0.1××…×的形式,其最大值表示为0.11…1;最小值表示为0.10…0。尾数的表示范围为1/2≤M≤(1−2^ −n)。 负数为1.1××…×的形式,其最大值表示为1.10…0;最小值表示为1.11…1。尾数的表示范围为−(1−2^ −n)≤M≤−1/2。
补码规格化
正数为0.1××…×的形式,其最大值表示为0.11…1;最小值表示为0.10…0。尾数的表示范围为1/2≤M≤(1−2^−n)。 负数为1.0××…×的形式,其最大值表示为1.01…1;最小值表示为1.00…0。尾数的表示范围为−1≤M≤−(1/2+2^−n)。
IEEE 754标准
规定
一些规定(短浮点数为例): 1. E=0且M=0,则真值为0 2. E=0且M≠0,为非规格化数,真值 = (−1)^s×0.M×2^−126 3. 1≤E≤254时,真值= (−1)s×1.M×2^(E−127) 4. E=255且M≠0时,真值为‘NaN’(非数值) 5. E=255且M=0时,真值为正无穷或负无穷(看符号位)
单双精度表示范围
浮点数与定点数的区别
相同字长,浮点数表示范围更大
精度指一个数含有有效数值的位数,相同字长的,浮点数的精度低
浮点数运算时不仅要进行尾数的运算还要进行阶码的运算,并且运算还要进行规格化,运算更为复杂
浮点数中,运算结果超出尾数的表示范围不一定溢出,只有超出阶码的表示范围才溢出
浮点数的密度问题
浮点数分布是不等距且稀疏的,越远离原点越稀疏
浮点数的加减运算

舍入方法
“0”舍“1”入法
即在尾数右移时,被移去的最高数值位为0,则舍去;被移去的最高数值位为1,则在尾数的末位加1。这样做可能会使尾数又溢出,此时需再做一次右规。
恒置“1”法
恒置“1”法:尾数右移时,不论丢掉的最高数值位是“1”还是“0”,都使右移后的尾数末位恒置“1”。这种方法同样有使尾数变大和变小的两种可能。
强制类型转换

本章总结

第三章 存储系统
3.1存储器概述
存储器的分类
按在计算机中的作用(层次)分类
主存
辅存
高速缓存Cache
按存取方式分类
随机存取存储器RAM
SRAM
DRAM
按地址访问存储单元
顺序存取存储器SAM
特点
信息按顺序存放和读出,存取时间取决于信息存放位置,以记录块为单位编址
磁带存储器
存储容量大、存取速度慢
直接存取存储器DAM
特点
存取方式兼有随机访问和顺序访问的特点,首先直接选取所需信息所在区域,然后按顺序方式存取
磁盘存储器
按内容访问存储器CAM或相联存储器AM
快表
按信息的可保存性分类
断电后存储信息是否消失
易失性存储器RAM
非易失性存储器ROM、磁表面存储器和光存储器
信息读出后是否被破坏
破坏性读出:DRAM
非破坏性读出
按存储介质分类
磁表面存储器
磁盘
磁带
磁芯存储器
半导体存储器
光存储器
性能指标
存储容量
存储字数×字长(如1M×8位)
单位成本
每位价格=总成本/总容量
存储速度
数据传输率=数据的宽度/存储周期
存储周期(读写周期/访问周期)=存取时间+恢复时间
存取时间:从启动一次存储器操作到完成该操作的时间
存储周期:它是指存储器进行一次完整的读写操作所需的全部时间,即连续两次独立地访问存储器操作(读或写操作)之间所需的最小时间间隔。
主存带宽
表示每秒从主存进出信息的最大数量
3.2存储器的层次化结构

“Cache-主存”层次
硬件实现,主要解决CPU和主存速度不匹配的问题
“主存-辅存”层次
硬件+操作系统实现,主要解决存储系统容量的问题
3.3半导体随机存储器
SRAM和DRAM
半导体存储芯片的基本结构

片选线 CS CE(低电平有效)读写控制线WE(低电平写、高电平读)
总结
1. 存储矩阵:由大量相同的位存储单元阵列构成。 2. 译码驱动:将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号在读写电路的配合下完成对被选中单元的读/写操作。 3. 读写电路:包括读出放大器和写入电路,用来完成读/写操作。 4. 读/写控制线:决定芯片进行读/写操作。 5. 片选线:确定哪个存储芯片被选中。可用于容量扩充。 6. 地址线:是单向输入的,其位数与存储字的个数有关。 7. 数据线:是双向的,其位数与读出或写入的数据位数有关。 8. 数据线数和地址线数共同反映存储芯片容量的大小。
SRAM的芯片结构
存储体
地址译码器
地址译码方式
一维译码
线选法或单译码法
适用于与小容量存储器
只有一个行译码器
二维译码
重合法或双译码法
适用于与大容量存储器
驱动器
在双译码结构中,一条X方向的选择线要控制在其上的各个存储单元的字选择线,所以负载较大,因此需要在译码器输出后加驱动器
I/控制电路
用于控制被选中的单元的读出或写入,具有放大信息的作用
片选控制信号
读写控制信号
DRAM和SRAM的比较

SRAM采用六管静态MOS管存储元件,DRAM采用单管动态MOS管存储元件
DRAM的工作原理
DRAM刷新周期:一般为2ms
以行为单位,每次刷新一行存储单元
有硬件支持,读出一行的信息后重新写入,占用1个读/写周期
子主题
刷新方式
集中刷新
有一段时间专门用于刷新,无法访问存储器,称为访存“死区”
优点
读写操作不受刷新工作的影响
缺点
在死区内不能访问存储器
分散刷新
将存储器的系统工作周期分为两部分,前半部分用于读写或保持,后半部分用于刷新某一行
优点
没有死区
缺点
加长了系统的存取周期
异步刷新
刷新周期除以行数,得到两次刷新操作之间的时间间隔t,每隔t产生一次刷新请求
优点
避免CPU连续等待长时间,减少了刷新次数
存储器的读写周期
SRAM的读周期

SRAM的写周期

SDRAM芯片技术
Synchronous DRAM
读写受系统时钟的控制,因此与CPU之间采用同步方式交换数据。
它将CPU或其他主设备发出的地址和控制信息锁存起来,经过确定的几个时钟周期后响应。因此主设备在这段时间,可以安全地进行其他操作
支持突发传输
DDR SDRAM 通过芯片内部读写缓冲数据的两位预取,并利用存储器总线上时钟信号的上升沿和下降沿进行两次传送来同步,实现一个时钟内传送两次数据。类似的技术可以实现一个时钟内传送4个数据DDR2或8个数据DDR3
闪速存储器 Flash Memory
U盘
既可以在不加电的情况下长期保存信息,又能在线进行快速擦除和重写
Flash存储器的基本操作
编程
擦除
采用电擦除
读取
Flash存储器的读操作速度和写操作速度相差很大,其读取速度与半导体RAM芯片相当,而写数据(快擦-编程)的速度则与硬磁盘存储器相当
是一种只读存储器
主存的基本组成

3.4主存储器
DRAM芯片和内存条
内存条:由若干存储器芯片构成
主存容量的扩展
位扩展法

字扩展法

线选法

译码片选法

字位扩展法

多模块存储器
单体多字存储器
每个存储单元存储m个字,总线宽度也为m个字,一次并行读出m个字
缺点
指令和数据在主存内必须是连续存放的
多体并行存储器
每个模块都有相同的容量和存取速度。
各模块都有独立的读写控制电路、地址寄存器和数据寄存器。
它们既能并行工作,又能交叉工作。
连续编址
高位为体号,低位为体内地址
交叉编址
高位为体内地址,低位为体号

有m个存储体,存储周期为T,字长W,每隔r(总线传送周期)时间启动下一个存储体,连续存取n个字,求存储器的存取速率。连续存取n个字耗时=T+(n-1)r (m≥T/r)带宽为 n*W/(T+(n-1)r ) n较大时 带宽为W/r 单个存储体带宽为W/T
每个存储体的存储周期是不变的,即存储体传完了数据,还需要一段时间恢复,要提高总吞吐效率,就要让存储体并发执行
宏观(概念题) 一个存储周期内,交叉存储器可以提供的数据量为单个模块的m倍
主存与CPU的连接
连接原理
主存与cpu之间通过数据总线、地址总线和控制总线连接
数据总线的位数与工作频率的乘积正比于数据传输率
地址总线的位数决定了可寻址的最大内存空间
控制总线指出总线周期的类型和本次输入/输出完成的时刻
地址线的连接
CPU的地址线决定了整个主存空间的寻址范围。因此,它一般比存储芯片的地址引脚线多
连续编址时,高位作字拓展时片选信号的译码
交叉编址时,低位片选信号译码
数据线的连接
CPU的数据线决定了一次可读写的最大数据宽度,因此也往往比存储芯片的数据线多
通常将CPU数据线连到多个进行位扩展的芯片中,是扩展的位数与CPU数据线数相等
控制线的连接
CPU中的MREQ来确定访问的是主存还是I/O端口,只有MREQ为低电平时才需要选择存储芯片
通常将系统加电时用于系统引导的一组程序存放在ROM区
操作系统内核和用户程序则放在RAM区
主存地址单元分配

改善主存速度的方法
提高DRAM芯片本身的速度,如SDRAM
采用并行结构技术,如双端口和多模块存储器利用时间并行和空间并行在结构上进行优化
在CPU和主存之间增加Cache
3.5 外部存储器
固态硬盘SSD
由固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元组成
读写速度快,低功耗,性能超越常规硬盘
缺点是价格较高,寿命较短,但逐渐好转
磁盘存储器
磁盘设备的组成
一块硬盘含有若干个记录面,每个记录面划分为若干条磁道,而每条磁道又划分为若干个扇区,扇区(也称块)是磁盘读写的最小单位,也就是说磁盘按块存取。
磁头数(Heads)
即记录面数,表示硬盘总共有多少个磁头,磁头用于读取/写入盘片上记录面的信息,一个记录面对应一个磁头。
柱面数(Cylinders)
表示硬盘每一面盘片上有多少条磁道。在一个盘组中,不同记录面的相同编号(位置)的诸磁道构成一个圆柱面。
扇区数
表示每一条磁道上有多少个扇区
硬盘存储器
磁盘驱动器
核心部件是磁头组件和盘片组件,温彻斯特盘是一种可移动头固定盘片的硬盘存储器。
磁盘控制器
是硬盘存储器和主机的接口,主流的标准有IDE、SCSI、SATA等。
盘片
磁头质量的好坏,不仅与铁芯的材料有关,而且与磁头加工工艺有关
磁盘的性能指标
磁盘的容量
一个磁盘所能存储的字节总数称为磁盘容量。磁盘容量有非格式化容量和格式化容量之分。
非格式化容量是指磁记录表面可以利用的磁化单元总数
格式化容量是指按照某种特定的记录格式所能存储信息的总量
记录密度
记录密度是指盘片单位面积上记录的二进制的信息量,通常以道密度、位密度和面密度表示
道密度是沿磁盘半径方向单位长度上的磁道数
位密度是磁道单位长度上能记录的二进制代码位数
面密度是位密度和道密度的乘积
注意:磁盘所有磁道记录的信息量一定是相等的,并不是圆越大信息越多,故每个磁道的位密度都不同。
平均存取时间
平均存取时间 = 寻道时间(磁头移动到目的磁道)+旋转延迟时间(磁头定位到所在扇区)+传输时间(传输数据所花费的时间)
数据传输率
磁盘存储器在单位时间内向主机传送数据的字节数,称为数据传输率
假设磁盘转数为r(转/秒),每条磁道容量为N个字节,则数据传输率为Dr=rN
数据传输速率是指是指磁表面存储器完成磁头定位和旋转等待后,单位时间从存储介质上读出或写入的二进制信息量
为区别外部传输率,通常称之为内部传输速率,也称持续数据传输速率
而外部传输速率是指主机中的外设控制接口从(向)外存储器的缓存读出(写入)数据的速度,通常称为突发数据传输速率或接口传输速率
磁盘地址
驱动器号+柱面(磁道)号+盘面号+扇区号
硬盘的工作过程
第一步是取控制字
第二步是执行控制字
硬盘属于机械式部件,其读写操作是串行的,不可能在同一时刻既读又写,也不可能在同一时刻读两组数据或写两组数据
3.6高速缓冲存储器
程序访问的局部性原理
时间局部性
在最近的未来要用到的信息,很可能是现在正在使用的信息
空间局部性
在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的
Cache的基本工作原理
通常由SRAM构成


CPU与Cache之间的数据交换以字为单位,主存和Cache之间的数据交换以Cache块为单位
命中
主存块调入缓存 主存块与缓存块建立了对应关系 用标记记录与某缓存块建立了对应关系的主存块号
未命中
主存块未调入缓存 主存块与缓存块未建立对应关系
Cache的命中率
设一个程序执行期间,Cache的总命中次数为Nc,访问主 存的总次数为Nm,则命中率H = Nc/(Nc+Nm)
命中率与Cache 的容量与块长有关
块长取一个存取周期内从主存调出的信息长度
主存系统的效率
平均访存时间Ta=p*Tc+(1-p)(Tm+Tc)=Tc+(1-p)Tm
Tc为访问CACHE的时间,Tm为访问主存的时间
冲刷
通过将有效位清0来淘汰Cache行中的主存块,称为冲刷
地址映射方式
直接映射
地址结构
标记+Cache行号+块内地址
直接映射的关系为 j=i mod 2^c(j为块号,i为主存的块号,2^c为Cache总块数)
优点
实现简单
缺点
块冲突频率最高。空间利用率最低
cache 命中的条件
标记(一行有一个标记)相等
有效位为1
全相联映射
主存的每一块可以装入Cache的任意位置,每行的标记指出该行取自主存的哪一块
地址结构
标记+块内地址
优点
空间利用率高,命中率也高
缺点
标记的比较速度较慢,实现成本较高,需要相联存储器进行地址映射
组相联映射
将Cache空间分成大小相同的组,主存的数据块可以装入一组内的任意一个位置
j = i mod Q 某一主存块 j 按模 Q 映射到缓存的第 i 组中的任一块 Q为组数 i为主存的块号
地址结构
标记+组号+块内地址
替换算法
随机算法(RAND)
随机地确定替换的Cache块。它的实现比较简单,但没有依据程序 访问的局部性原理,故可能命中率较低。
先进先出算法(FIFO)
选择最早调入的行进行替换。它比较容易实现,但也没有依据程序访问的局部性原理,可能会把一些需要经常使用的程序块(如循环程序)也作为最早进入Cache
近期最少使用算法(LRU)
依据程序访问的局部性原理选择近期内长久未访问过的存储行作为替换的行,平均命中率要比FIFO要高,是堆栈类算法。LRU算法对每行设置一个计数器,Cache每命中一次,命中行计数器清0,而其他各行计数器均加1,需要替换时比较各特定行的计数值,将计数值最大的行换出。
最不经常使用算法(LFU)
将一段时间内被访问次数最少的存储行换出。每行也设置一个计数器,新行建立后从0开始计数,每访问一次,被访问的行计数器加1,需要替换时比较各特定行的计数值,将计数值最小的行换出。
当程序的分块局部化范围超过了cache组大小时,命中率很可能很低,这种现象称为颠簸或抖动
写策略
写命中
全写法(写直通法,write-through)
全写法(写直通法,write-through):当CPU 对Cache写命中时,必须把数据同时写入 Cache和主存,一般使用写缓冲(write buffer)
缺点
增加了访存次数,降低了Cache的效率
写回法(write-back)
当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主 存,只有当此块被换出时才写回主存
每个Cache必须设置一个标志位(脏位)
写未命中
写分配法(write-allocate)
把主存中的块调入Cache,在Cache中修改。搭配写回法使用。
非写分配法(not-write-allocate)
只写入主存,不调入Cache。搭配全写法使用。
多级Cache

L1Cache对L2Cache使用全写法,L2Cache对主存使用写回法,避免了频繁写造成的写缓存饱和
cache一致性问题产生的情况
对Cache进行更新时
当多个设备都允许访问主存时
当多个CPU都带有各自的Cache而共享主存时
袁书
全写法
若写命中,则同时写Cache和主存
若写不命中
写分配法
主存块中更新相应存储单元,然后分配一个Cache行,将更新的主存块装入到分配法Cache行中
非写分配法
仅更新主存块而不装入主存块到Cache中
回写法
当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主 存,只有当此块被换出时才写回主存
若写不命中
写分配法
设置了一个修改位/脏位(dirty bit)
若修改位为1,则说明对应cache行中的主存块被修改过,替换时需要写回主存
若修改位为0,则说明对应cache行中的主存块未被修改过,替换时不需要写回主存
3.7虚拟存储器
虚拟存储器的基本概念
虚拟存储器是一个逻辑模型
功能:用户给出一个地址,叫做虚地址或逻辑地址, 虚拟存储器要给出该地址对应的数据。
实现:由辅助硬件将虚地址映射到主存当中的某个单元, 主存单元地址称为实地址或物理地址。
地址转换
地址转换工作由CPU的存储器管理部件MMU完成
页式虚拟存储器
虚拟空间与主存空间都被划分成同样大小的页,主存的页称为实页,虚存的页称为虚页。
优点
页面的长度固定,页表简单,调入方便
缺点
由于程序不可能正好是页面的整数倍,最后一页的零头将无法利用造成浪费
页不是逻辑上独立的实体,处理、保护和共享都不及段式虚拟存储器方便
页表
表项
存放位置字段
装入位/有效位/存在位
1
0
没有被调入主存
若位置字段为NULL
则是未分配页
不为NULL
则是未缓存页
修改位
替换控制位
如FIFO位、LRU位
访问权限位
页面是可读可写,只读还是只可执行
禁止缓存位说明页面是否可以装入cache
页表属于进程控制信息,存放在进程地址空间的内核区,页表在主存的首地址记录在页表基址寄存器中
地址转换
主存物理地址:高位为物理页号,低位为页内偏移
由CPU中的存储器管理部件(MMU)完成
TLB:(快表)
特点:比页表小的多,常用全相联或组相联
表项内容:页表表项内容加TLB标记字段
TLB标记字段:表示来自也表中的哪个虚拟页对应的页表项
全相联时为页表项对应的虚拟页号,组相联时为虚拟页号的高位部分,低位为组索引
段式虚拟存储器
段式虚拟存储器中的段是按程序的逻辑结构划分的,各个段的长度因程序而异。 虚拟地址分为两部分:段号和段内地址。
段表:每一行记录了与某个段对应的段号、装入位、段起点和段长等信息。 由于段的长度可变,所以段表中要给出各段的起始地址与段的长度。
段页式虚拟存储器
把程序按逻辑结构分段,每段再划分为固定大小的页, 主存空间也划分为大小相等的页, 程序对主存的调入、调出仍以页为基本传送单位。 每个程序对应一个段表,每段对应一个页表。
段号+段内页号+页内地址
快表TLB
页表、段表存放在主存中,收到虚拟地址后要先访问主存,查询页表、段表,进行虚实地址转换。放在主存中的页表称为慢表(Page)。

TLB标记字段
若为全相联方式
则TLB标记字段的内容为该表项对应的虚拟页号
若为组相联方式
则TLB标记字段的低位部分为TLB组的组索引 高位为虚拟页号
为降低替换算法开销,TLB常采用随机替换策略
Linux虚拟地址空间
用户区
用户栈
共享库
公共的共享函数库代码
堆(HEAP)
动态分配存储区,由低地址向高地址增长
读写数据区
存放用户进程的静态全局变量
只读代码/数据区
内核区
由于缺页处理代价较大,所以应该增加命中率,因此在主存页框和虚拟页之间应采用全相联映射。在进行写操作时,由于磁盘的访问速度很慢,所以每次写操作不能同时写DRAM缓存和磁盘,也即采用回写方式
第四章 指令系统
4.1指令系统的基本概念
基本原则
完备性:能编制任何可计算程序
兼容性:兼容以前低档的指令系统
均匀性:能对多种类型的数据进行处理
三种整数:字节、字、双字
两种浮点数:单精度和双精度
4.2指令格式
机器指令的计算机运行的最小功能单位
指令集
所有指令的集合构成该指令的指令系统
指令的基本格式
OP+A
按地址码数目的不同
零地址指令
OP
分类
不需要操作数的指令
空操作指令、停机指令和关中断指令
零地址的运算类指令
从堆栈中取出两个操作数,再将结果压入堆栈
一地址指令
OP+A
分类
只有目的操作数的单操作指令
完成一条指令需要访存3次
隐含目的地址的双操作指令
完成一条指令需要访存2次
二地址指令
OP+A1+A2
完成一条指令需要访存4次
三地址指令
(A1)OP(A2)→A3
完成一条指令需要访存4次
四地址指令
(A1)OP(A2)→A3,A4
完成一条指令需要访存4次
定长操作码指令格式
指令字的最高位部分分配固定的若干位表示操作码 n位,2^n条指令
优点
定长操作码对千简化计算机硬件设计,提高指令译码和识别速度很有利
缺点
指令数量增加时会占用更多固定位, 留给表示操作数地址的位数受限。
扩展操作码指令格式
注意2点
不允许短码是长码的前缀
各指令的操作码不能重复
优点
在指令字长有限的前提下仍保持比较中富的指令种类
缺点
增加了指令译码和分析的难度,使控制器的设计复杂化
4.3指令的寻址方式
指令寻址和数据寻址
指令寻址:寻找下一条要执行的指令地址称为指令寻址
数据寻址:寻找操作数的地址
指令寻址
分类
顺序寻址
跳跃寻址
数据寻址
指令格式
操作码+寻址特征+形式地址A
数据寻址方式
隐含寻址
有利于缩短指令字长
缺点
增加存储器操作数或隐含地址的硬件
立即数寻址
形式地址A就是操作数本身,又称为立即数,一般采用补码形式
一条指令的执行: 取指令访存1次 执行指令访存0次暂不考虑存结果共访存1次
优点
指令执行阶段不访问主存,指令执行时间最短
缺点
A的位数限制了立即数的范围。
直接寻址
EA=A
一条指令的执行: 取指令访存1次 执行指令访存1次暂不考虑存结果共访存2次
优点
简单,指令的执行过程仅访问一次主存,不需要专门计算操作数的地址
缺点
A的位数决定了该指令操作数的寻址范围
间接寻址
指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数 有效地址所在的存储单元的地址, 也就是操作数地址的地址, 即EA=(A)
一条指令的执行: 取指令访存1次 执行指令访存2次暂不考虑存结果共访存3次
优点
可扩大寻址范围(有效地址EA的位数大于主存形式地址A的位数。) 便于编制程序(用间接寻址可以方便地完成子程序返回。)
缺点
指令在执行阶段要多次访存(一次间址 需要两次访存,多次寻址需要根据存储字的最高位确定几次访存。)
寄存器寻址
EA=Ri
一条指令的执行: 取指令访存1次 执行指令访存0次暂不考虑存结果共访存1次
优点
不访问主存,速度快,支持向量/矩阵运算
缺点
寄存器昂贵,寄存器个数有限
寄存器间接寻址
寄存器Ri给出的不是一个操作数,而是操作数 所在主存单元的地址即EA=(Ri)
一条指令的执行: 取指令访存1次 执行指令访存1次暂不考虑存结果共访存2次
优点
与一般间接寻址相比速度更快
缺点
但指令的执行阶段需要访问主存
偏移寻址
相对寻址
EA=(PC)+A
优点
操作数地址不固定,便于程序浮动
基址寻址
EA=(BR)+A
基址寄存器
专用基址寄存器
面向操作系统,内容由操作系统或管理程序确定
通用寄存器
由用户决定哪个寄存器作为基址寄存器,内容由操作系统确定
优点
可扩大寻址范围(基址寄存器的位数大于形式地址A的位数);用户不必考虑自己的程序存于主存的哪一空间区域, 故有利于多道程序设计, 以及可用于编制浮动程序。
变址寻址
EA=(IX)+A
变址寄存器
IX
通用寄存器
优点
可扩大寻址范围,设定A为数组的首地址,不断改变变址寄存器IX中的内容,特别适合编制循环程序
堆栈寻址
硬堆栈
寄存器堆栈
软堆栈
主存中划分堆栈

比较无符号数高低
无符号数的比较:① CF=0,前者大于或等于后者; ② CF=1,前者小于后者;
例如:255-67,这个减法中,被减数对应十进制数255,而减数是67,通过结果显示,最高位是0,说明该减法没有发生借位,此时CF=0,表示被减数是大于减数。从结果来看,是在0~255之间,没有超过范围,结果是正确的。 又再如:67-255,在这个减法中,被减数是67,减数是255,结果显示最高位是1,说明减法发生了借位,此时CF=1,表示被减数是小于减数。从结果来看,并不是在0~255之间,超过了范围,说明结果是错误的。
比较有符号数大小
带符号数的比较: ① 如果结果是OF=0,且SF=0(正),或者当OF=1,且SF=1(负)时,说明两个数是前者大于或等于后者。 ② 如果结果是OF=0,且SF=1(负),或者当OF=1,且SF=0(正)时,说明两个数是前者小于后者。
简单记忆:相同为正,不同为负
有符号数的大(Greater)小(Less)需要组合OF、SF标志,并利用ZF标志确定相等(Equal)
CF(进位标志)bai =1 算术操作最高位产生了进位或借du位 =0 最高位无进位或借位 ; PF(奇偶标志) =1 数据最低zhi8位中1的个数为偶数 =0 数据最低8位中1的个数为奇数; AF(辅助进位标志) =1 D3→D4位产生了进位或借位 =0 D3→D4位无进位或借位; ZF(零标志) =1 操作结果为0 =0 结果不为0; SF/NF(符号标志) =1 结果最高位为1 =0 结果最高位为0; OF(溢出标志) =1 此次运算发生了溢出 =0 无溢出。
4.4 数据对齐与大小端
数据的大端方式和小端方式
MSB最高有效字节
LSB最低有效字节
大端方式
MSB放在前面
小端方式
LSB放在前面
数据按“边界对齐方式”存储
按边界存储是指半字、字、双字都按它们各自地址所指定的空间zhi进行存储,而不是随意存放,这样可保证对一个字长数据的读/写只需要一次存储器访问即可完成,提高了访问效率,但有时会导致存储空间的浪费,因此,这是一种以空间换时间的方法。 字长32位,则半字长16位,双字长64位。则按边界对齐方式的存储要求是: 双字数据起始地址的最末三位为000(8字节的整数倍); 单字数据起始地址的最末二位为00(4字节的整数倍); 半字数据的起始地址的最末一位为0(2字节的整数倍)。
4.5CISC和RISC
CISC和RISC对比

CISC
X86架构,用于笔记本和台式机
大多实现软件兼容
RISC
ARM架构,用于手机和平板
基于的事实:20%的指令占80%的程序
不能与老机器兼容
4.6高级语言程序与机器级代码之间的对应
基本概念
1. 预处理阶段
预处理器(cpp)将#开头的文件进行处理。输出hello.i文件
2. 编译阶段
编译器(ccl)对预处理的文件进行编译,生成汇编语言源程序hello.s
3. 汇编阶段
汇编器(as)将hello.s文件翻译成机器语言指令,打包成可重定位目标文件的hello.o
4. 链接阶段
链接器(ld)将多个可重定位目标文件和库函数合并成可执行文件,被保存在磁盘上
选择结构语句的机器级表示
MIPS
循环结构的机器级表示
MIPS
过程调用的机器级表示
MIPS
8086
第五章 中央处理器
5.1CPU的功能和 基本结构
CPU的功能
指令控制
完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
操作控制
一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作
时间控制
对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号
数据加工
对数据进行算术和逻辑运算
中断处理
对计算机运行过程中出现的异常情况和特殊请求进行处理
CPU的基本结构
运算器的基本结构
算术逻辑单元
主要功能是进行算术/逻辑运算
通用寄存器组
如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址
暂存寄存器
用于暂存从主存读来的数据,这个数据不能存放在通用寄存器中,否则会破坏其原有内容
累加寄存器
它是一个通用寄存器,用于暂时存放ALU运算的结果信息,用于实现加法运算。
程序状态字寄存器PSW
保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等
移位器
对运算结果进行移位运算
计数器
控制乘除运算的操作步数
运算器的基本结构
程序计数器PC
用于指出下一条指令在主存中的存放地址。CPU根据PC的内容去主存中取指令的。因程序中指令(通常)是顺序执行的,所以PC有自增功能。
指令寄存器IR
用于保存当前正在执行的那条指令
指令译码器IE
仅对操作码字段进行译码,向控制器 提供特定的操作信号
微操作信号发生器
根据IR的内容(指令)、PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。
时序系统
用于产生各种时序信号,它们都是由统一时钟(CLOCK)分频得到。
存储器地址寄存器MAR
用于存放所要访问的主存单元 的地址。
存储器数据寄存器
用于存放向主存写入的信息或 从主存中读出的信息。

用户可见的寄存器
通用寄存器
PSW
PC
用户不可见的寄存器
MAR
MDR
IR
暂存寄存器
袁书
CPU由数据通路和控制部件两大部分组成
通常将指令执行过程中所经过的路径,包括路径上的部件称为数据通路
把数据通路中专门进行数据运算的部件称为执行部件或功能部件
指令执行所用的部件有两大类
组合逻辑部件/操作元件
特点:输出只取决于当前的输入
不受时钟信号的控制
组合逻辑部件
多路选择器MUX
ALU
ADDER
DECODER
存储元件/状态部件
特点:具有存储功能,输入状态在时钟控制下被写入到电路中,并保持电路的输出值不变
寄存器是典型的存储元件
寄存器的类型
带“写使能”输入信号的触发器构成的寄存器
这类触发器被称为锁存器Latch,所组成的寄存器被称为暂存器,实现IR和GRS通用寄存器组
输出端带三态门的寄存器
通常与总线相连,通过三态门控制信息是否打在总线上
带复位(清零)的寄存器
自增的寄存器
移位寄存器
cpu可以看做数据通路和控制部件组成
数据通路中进行数据运算的部件称为执行部件或功能部件
数据通路的组成部分
ALU
通用寄存器
状态寄存器
PC
IR
指令译码器
脉冲源和启停控制线路
时序信号产生部件
操作控制信号形成部件
总线控制逻辑
中断机构
数据通路与时序控制
早期计算机的三级时序系统


现代计算机的时钟信号
数据通路的定时信号是时钟,一个时钟周期就是一个节拍
单总线数据通路
在寄存器之间传送数据

单总线CPU一个时钟周期内只允许传送一个数据
三总线数据通路

采用三总线和单总线很难实现指令流水执行
单周期处理器

实际的存储器在单周期数据通路不能可靠工作,因为不能保证地址和数据能在“写使能”信号前稳定,即地址、数据和写使能存在竞争关系
硬布线与微程序的对比
微程序的思想

微程序
微程序相对固定,且通常不存放在主存中,故有可能用工作速度较高的ROM存放微程序,这种固化的微程序,称为固件
微程序控制器的基本结构


微命令编码与微指令格式
子主题
微命令编码方式
不译法/直接控制法

字段间直接编码法


字段间接编码法

最少/最短/垂直 编码法

微指令指令格式


微地址的形成方式

计数器法

断定法



流水线
五个流水段

理想情况下,CPI为1
流水线设计原则
流水段个数以最复杂指令所用的功能段个数为准
流水段方式并不能缩短单个指令的执行时间,但对整个程序而言,流水段大大增加指令执行的吞吐率
若流水段段数为M,流水段的执行时间为T,则N条指令的执行总时间为(M+N-1)/T
适合流水线的指令集特征



流水线冲突
结构冒险/资源冲突
解决办法
一个部件每条指令只能使用一次,并且在特定周期使用
寄存器读写口独立
指令CACHE和数据CACHE分离
数据冒险
插入空操作
插入气泡

转发
转发无法解决LOAD-USE数据冒险(常用NOP来解决)
子主题
控制冒险
转移指令引起的控制冒险
插入气泡
插入空操作
分支预测
简单预测/静态预测

动态预测

延迟分支

属于静态调度
异常或中断引起的控制冒险
高级流水线技术
超流水技术
多发射技术
多个寄存器连接ALU,再向ALU传输数据
解决办法
使用多路选择器根据控制信号选择一路输出
使用多路选择器根据控制信号选择一路输出
5.2指令执行过程
指令周期
指令周期:CPU从主存中每取出并执行一条指令所需的全部时间
指令周期常常用若干机器周期来表示,机器周期又叫CPU周期。一个机器周期又包含若干时钟周期(也称为节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)。
机器周期
定长的机器周期
不定长的机器周期
每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等

指令周期流程

指令周期的数据流
取指周期

间址周期

执行周期
执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。不同指令的执行周期操作不同,因此没有统一的数据流向。
中断周期
暂停当前任务去完成其他任务。为了能够恢复当前任务,需要保存断点。一般使用堆栈来保存断点,这里用SP表示栈顶地址,假设SP指向栈顶元素,进栈操作是先修改指针,后存入数据。

指令执行方案
单指令周期
对所有指令都选用相同的执行时间来完成。指令之间串行执行;指令周期取决于执行时间最长的指令的执行时间。
对于那些本来可以在更短时间内完成的指令,要 使用这个较长的周期来完成,会降低整个系统的 运行速度。
多指令周期
对不同类型的指令选用不同的执行步骤来完成。指令之间串行执行;可选用不同个数的时钟周期来完成不同指令的执行过程。需要更复杂的硬件设计。
流水线方案
在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。指令之间并行执行。
5.3数据通路的功能和基本结构
数据通路的功能
数据在功能部件之间的传送路径称为数据通路
路径上的部件称为数据通路部件
数据通路的基本结构
CPU内部单总线方式
将所有寄存器的输入端和输出端都连接到一条公共通路上

一个时钟周期内只允许传一个数据
CPU内部三总线方式
将所有寄存器的输入端和输出端都连接到多条公共通路上
专用数据通路方式

根据指令执行过程中的数据和地址的流动方向安排连接线路
内部总线是指同一部件,如CPU内部连接各寄存器及运算部件之间的总线
系统总线是指同一台计算机系统的各部件,如CPU、内存、通道和各类I/O接口间互相连接的总线。
5.4控制器的功能和工作原理
控制器的结构和功能
控制器的主要功能
1. 从主存中取出一条指令,并指出下一条指令在主存中的位置
2. 对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作
3. 指挥并控制CPU、主存、输入和输出设备之间的数据流动方向。
硬布线控制器
硬布线控制单元图
控制单元的输入和输出
输入
指令寄存器
时钟
标志
外来信号
输出
CPU内部的控制信号
寄存器之间的数据传输、PC的修改、控制ALU进行相应的运算
到控制总线的控制信号
到存储器::访存控制信号MREQ、读命令RD 、写命令WR
到I/O设备:访问I/O设备的控制信号IO、 断响应信号INTA、总线响应信号HLDA

CPU 的控制方式
同步控制方式
整个系统所有的控制信号均来自一个统一的时钟信号。
同步控制方式的优点是控制电路简单,缺点是运行速度慢。
异步控制方式
异步控制方式不存在基准时标信号。各部件按自身固有的速度工作,通过应答方式进行联络。
联合控制方式
对各种不同的指令的微操作实行大部分采用同步控制、小部分采用异步控制的办法
硬布线控制单元设计步骤
分析每个阶段的微操作序列
选择CPU的控制方式
安排微操作时序
原则
1. 微操作的先后顺序不得随意更改
2. 被控对象不同的微操作尽量安排在一个节拍内完成
3. 占用 时间较短 的微操作尽量安排在一个节拍内完成并允许有先后顺序
取指周期
T0
(1) PC → MAR (2) 1→ R
T1
(3) M ( MAR ) → MDR (6) ( PC ) + 1→PC
T2
(4) MDR→ IR (5) OP ( IR )→ ID
间址周期
T0
(1) Ad(IR)→ MAR (2) 1→ R
T1
(3) M ( MAR )→ MDR
T2
(4) MDR→ Ad(IR)
执行周期
见P227
中断周期
T0
(1) a → MAR (2)1→W (3)0→EINT (硬件关中断)
T1
(4) ( PC ) → MDR
T2
(5) MDR → M(MAR) (6) 向量地址→ PC
电路设计
组合逻辑设计
列出操作时间表
写出微操作命令的最简表达式
画出逻辑图
微程序控制器
微程序控制的基本概念
事先把微操作控制信号存储在一个专门的存储器(控制存储器)中,将每一条机器指令编写成一个微程序,这些微程序可以存到一个控制存储器中,用寻址用户程序机器指令的办法来寻址每个微程序中的微指令。
微命令与微操作
微命令是微操作的控制信号
微操作是微命令的执行过程
微命令
在微程序控制的计算机中,将控制部件向执行部件发出的各种控制命令称为微命令
微操作
一个机器指令可以分解成一个微操作序列,这些微操作是计算机中最基本的、不可再分解法操作
微命令的分类
相容性微命令
可以同时产生、共同完成某一 些微操作的微命令。
互斥性微命令
在机器中不允许同时出现的微 命令。
微指令
微指令是若干微命令的集合
包含两部分
操作控制字段/微操作码字段
用于产生某一部操作所需要的各种操作控制信号
顺序控制字段/微地址码字段
用于控制产生下一条要执行的微指令地址
微周期
指从控制存储器中读取一条微指令并执行相应微操作所需要的时间
微地址
存放微指令的控制存储器的单元地址称为微地址
主存与控制存储器
主存在CPU的外部,用于存放程序和数据,用RAM实现
控制存储器(CM)在CPU的内部,用于存放微程序,用ROM实现
程序和微程序
程序是指令的有序集合,用于完成特定的功能
微程序是微指令的有序集合,一条指令的功能由一段微程序实现
微程序控制器的组成和工作过程
微程序控制器的基本结构
微地址形成部件
控制存储器CM
微指令寄存器CMDR
微地址寄存器CMAR

微程序控制器的工作过程

微程序与机器指令
一条机器指令对应一个微程序
任何一条机器指令的取指操作是相同的
CM中微程序的数量应为机器指令数加上取指、间址和中断周期的公用微程序数

微指令的格式
水平型微指令
一次能定义并执行多个并行操作
优点:微程序短,执行速度快;
缺点:微指令长,编写微程序较麻烦。
直接编码方式、字段间直接编码方式和字段间间接编码方式都属于此类
垂直型微指令
类似机器指令操作码的方式,由微操作码字段规定微指令的功能
优点:微指令短、简单、规整,便于编写微程序
缺点:微程序长,执行速度慢,工作效率低。
混合型微指令
在垂直型的基础上增加一些不太复杂的并行操作。
优点微指令较短,仍便于编写;微程序也不长,执行速度加快。
微指令的编码方式
直接编码(直接控制)方式
在微指令的操作控制字段中,每一位代表一个微操作命令某位为“1” 表示该控制信号有效
优点:简单、直观,执行速度快,操作并行性好。
缺点:微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控存容量极大。
字段直接编码方式
将微指令的控制字段分成若干 “段”,每段经译码后发出控制信号
分段的原则
1. 互斥性微命令分在同一段内,相容性微命令分在不同段内
2. 每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。
3. 一般每个小段还要留出一个状态,表示本字段不发出任何微命令。因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作。
优点:可以缩短微指令字长
缺点:要通过译码电路后再发出 微命令,因此比直接编码方式慢。
字段间接编码方式
一个字段的某些微命令需由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出的微命令, 故称为字段间接编码,又称隐式编码。
优点:可进一步缩短微指令字长。
缺点:削弱了微指令的并行控制能力,故通常作为字段直接编码方式的一种辅助手段。
微指令的地址形成方式
微指令的下地址字段指出
微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后继微指令的地址,这种方式又称为断定方式。
根据机器指令的操作码形成
当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成。
增量计数器法
( CMAR ) + 1 → CMAR
分支转移
转移方式:指明判别条件;转移地址:指明转移成功后的去向
操作控制字段+转移方式+转移地址
通过测试网络
由硬件产生微程序入口地址
微程序控制单元的设计
分析每个阶段的微操作序列
写出对应机器指令的微操作命令及节拍安排
写出每个周期所需要的微操作
补充微程序控制器特有的微操作 a. 取指周期: Ad ( CMDR ) → CMAR OP ( IR ) →CMAR b. 执行周期: Ad(CMDR) →CMAR
确定微指令格式
根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数。由微指令数确定微指令的顺序控制字段的位数。最后按操作控制字段位数和顺序控制字段位数就可确定微指令字长。
编写微指令码点
根据操作控制字段每一位代表的微操作命令,编写每一条微指令的码点。
微程序设计分类
静态微程序设计和动态微程序设计
静态
微程序无需改变,采用 ROM
动态
通过改变微指令和微程序改变机器指令有利于仿真,采用 EPROM
毫微程序设计和微程序设计
用毫微程序解释微程序
用微程序解释机器指令
硬布线与微程序的比较

5.5异常和中断机制
中断和异常的分类
内中断
CPU内部,与当前执行的指令有关
自愿中断-指令中断
强迫中断
硬件故障
缺页
软件中断
整数除0
外中断
CPU外部,与当前执行的指令无关
外设请求
I/O操作完成发出的中断信号
人工干预
用户强行终止一个进程
非屏蔽中断
关中断时也会被响应
可屏蔽中断
关中断时不会被响应
异常
异常分类
故障(Fault)
引起故障的指令启动后、执行结束前被检测到的一类异常事件
非法操作码、缺页、除数为0
陷入(Trap)
子主题
自陷指令
系统调用指令
终止(Abort)
异常与中断的检测与响应
异常的检测与响应
保护断点和程序状态
断点位置
故障:当前指令
自陷:后面一条指令
断点位置由异常类型和发生异常时PC的值决定
原程序状态保存在程序状态字寄存器(PSWR)中,异常时保存到栈或者特定寄存器,异常返回时将保存的PSW恢复到PSWR中
检测采用硬件识别,执行时自动发现后得到异常处理代码,转到异常处理程序即可
通过关中断避免异常处理过程中响应新的异常
中断的检测
检测采用软件识别或者硬件识别
软件识别:CPU设置一个异常状态寄存器记录异常原因
5.6指令流水线
指令流水线的基本概念
指令流水线的定义
一条指令的执行过程可以分成多个阶段(或过程)。根据计算机的不同,具体的分法也不同
多条指令的执行方式
顺序执行方式
传统冯·诺依曼机采用顺序执行方式,又称串行执行方式
优点:控制简单,硬件代价小
缺点:执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行,各功能部件的利用率很低。
总耗时T = n×3t = 3nt
一次重叠执行方式
优点:程序的执行时间缩短了1/3,各功能部件的利用率明显提高。
缺点:需要付出硬件上较大开销的代价,控制过程也比顺序执行复杂了。
总耗时T=3t+(n-1)*2t=(1+2n)t
二次重叠执行方式
总耗时T = 3t + (n-1)×t = (2+n)t
流水线的表示方法
指令执行过程图
时空图

流水线的分类
根据流水线使用的级别的不同
部件功能级流水
就是将复杂的算术逻辑运算组成流水线工作方式
例如,可将浮点加法操作分成求阶差、对阶、尾数相加以及结果规格化等4个子过程
处理机级流水
是把一条指令解释过程分成多个子过程
如前面提到的取指、译码、执行、访存及写回5 个子过程。
处理机间流水
是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。
按流水线可以完成的功能
单功能流水线
只能实现一种固定的专门功能的流水线
多功能流水线
通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线
按同一时间内各段之间的连接方式
静态流水线
在同一时间内,流水线的各段只能按同一种功能的连接方式工作。
动态流水线
在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。这样对提高流水线的效率很有好处,但会使流水线控制变得很复杂。
按流水线的各个功能段之间是否有反馈信号
线性流水线
从输入到输出,每个功能段只允许经过一次,不存在反馈回路
非线性流水线
存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算
指令流水线影响因素
结构相关(资源冲突)
由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关

解决办法: 1.后一相关指令暂停一周期 2.资源重复配置: 对于寄存器访问冲突,将寄存器读写口独立开,利用时钟上升和下降沿两次触发 对于存储器访存冲突,数据存储器+指令存储器 指令Cache和数据Cache
数据相关(数据冲突)
数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关。

解决办法: 1.把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行。可分为硬件阻塞(stall)和软件插入“NOP”两种方法。 2.数据旁路技术。 3.编译优化:通过编译器调整指令顺序来解决数据相关。
冲突的基本类型
RAW
l1:ADD R5,R2,R4;(R2)+(R4) -> R5 I2:ADD R4,R5,R3;(R5)+(R3) -> R4
WAR
I1: STA M,R2; (R2) -> M,M为主存单元 I2: ADD R2,R4,R5; (R4)+(R5) ->R2
乱序发射,编写程序的时候希望I1在I2前完成, 但优化手段导致I2在I1前发射。
WRW
I1: MUL R3,R2,R1; (R2)*(R1)->R3 I2: SUB R3,R4,R5; (R4)-(R5)->R3
存在多个功能部件时,后一条指令可能比前一条指令先完成。
注: “按序发射,按序完成”时,只可能出现RAW相关。
控制相关(控制冲突)
当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关

解决办法: 1.尽早判别转移是否发生,尽早生成 转移目标地址 2.预取转移成功和不成功两个控制流 方向上的目标指令 3.加快和提前形成条件码 4.提高转移方向的猜准率
流水线的性能指标
吞吐率
吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量。设任务数为n;处理完成n个任务所用的时间为Tk,TP=n/Tk

加速比
完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。设T0表示不使用流水线时的执行时间,即顺序执行所用的时间;Tk表示使用流水线时的执行时间,则加速比S=T0/Tk

效率
流水线的设备利用率称为流水线的效率。在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积与n个任务所用的时间与k个流水段所围成的时空区总面积之比。E=n个任务占用时空区有效面积/n个任务所用的时间与个流水段所围成的时空区总面积=T0/kTk

超标量流水线的基本概念
超标量技术
每个时钟周期内可并发多条独立指令,不能调整指令的执行顺序要配置多个功能部件
通过编译优化技术,把可并行执行的指令搭配起来
超流水技术
在一个时钟周期内再分段( 3 段),不能调整指令的执行顺序在一个时钟周期内一个功能部件使用多次( 3 次)
不能调整指令的执行顺序,靠编译程序解决优化问题
超长指令字
具有多个操作码字段的超长指令字(可达几百位),由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条,采用多个处理部件
5.7多处理器基本概念
并行处理系统部分分类
SISD(单指令流单数据流系统)
组成:传统的串行计算机处理方式,仅包含一个处理器和一个存储器
特点:一段时间内仅执行一条命令
改进:为了提高速度有时使用指令或者运算操作流水线,因此处理器有时设置多个功能部件,并采用多模块交叉方式组织存储器
本书介绍的多属于SISD计算机结构
SIMD(单指令流多数据流)
组成:一个指令控制部件,多个处理单元和多个存储器
特点:一个指令流同时对多个数据流进行处理,不同处理单元执行的同一条指令所处理的数据是不同的
扩展应用SSE,MMX,AVX指令集
MISD(多指令流单数据流)
特点:同一时刻多个指令在执行,处理同一个数据
仅仅是理论模型,现实不存在
MIMD(多指令流多数据流)
大多数并行处理计算系统的处理方式
向量处理器(VPS)
优点:以流水线结构为主,克服通常流水线计算机指令处理量大,存储访问不均匀,流水不畅等缺点,大大减少指令数量,阻塞次数
组成:一个普通流水化的标量单元加上一个向量单元组成
特点:面向向量型数据,在各分量上执行的运算一般彼此无关,多采用流水线式,也有阵列式,用于求解大型文体
技术:先行控制,重叠操作,运算流水线,多模块交叉访问
硬件多线程
特点:共享单处理器中功能部件
组成:需要为每个线程提供单独的通用寄存器组,单独的程序计数器
实现方式
细粒度多线程:多个线程轮流交叉
粗粒度多线程:当某个线程出现较大开销的阻塞才切换,如cache不命中
同时多线程:线程并行
多核处理器(multi-core)
特点:每个CPU芯片中包含多个处理单元,一个处理单元称为一个核
共享内存多处理器(SMP)
特点:拥有共享的单一地址空间的并行处理系统,所以每个处理器都可以通过load store访问系统中的存储器,不管是本地还是共享存储器
第六章总线
6.1总线概述
总线的基本概念
总线的定义
总线是一组能为多个部件分时共享的公共信息传送线路。
为什么要用总线?
早期计算机外部设备少时大多采用分散连接方式,不易实现随时增减外部设备。为了更好地解决I/O设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接。
总线的特点
分时
分时是指同一时刻只允许有一个部件向总线发送信息,如果系统中有多个部件,则它们只能分时地向总线发送信息
共享
共享是指总线上可以挂接多个部件,各个部件之间互相交换的信息都可以通过这组线路分时共享。
总线的两个优点
灵活
成本低
总线的特性
机械特性
尺寸、形状、管脚数、排列顺序
电气特性
传输方向和有效的电平范围
功能特性
每根传输线的功能(地址、数据、控制)
时间特性
信号的时序关系
总线设备
主设备
获得总线控制权的设备
从设备
被主设备访问的设备,响应从主设备发来的各种总线命令
总线的猝发传输方式
在一个总线周期内传输存储地址连续的多个数据字的总线传输方式
总线的分类(了解)
按数据传输格式
串行总线
优点
只需要一条传输线,成本低廉,广泛应用于长距离传输;应用于计算机内部时,可以节省布线空间。
缺点
缺点:在数据发送和接收的时候要进行拆卸和装配,要考虑串行-并行转换的问题。
并行总线
优点
总线的逻辑时序比较简单, 电路实现起来比较容易。
缺点
信号线数量多,占用更多的布线空间
远距离传输成本高昂
由于工作频率较高时,并行的信号线之间会产生严重干扰,对每条线等长的要求也越高,所以无法持续提升工作频率。
1. 工作频率相同时,串行总线传输速度比并行总线慢。 2.并行总线的工作频率无法持续提高,而串行总线可以通过不断提高工作频率来提高传输速度,最终超过并行总线。
按总线功能
片内总线
片内总线是芯片内部的总线
它是CPU芯片内部寄存器与寄存器之间、寄存器与ALU之间的公共连接线。
系统总线
系统总线是计算机系统内各功能部件(CPU、主存、I/O接口)之间相互连接的总线
按系统总线传输信息内容的不同
数据总线
传输各功能部件之间的数据信息
位数与机器字长、存储字长有关
双向
地址总线
传输包括主存单元或I/O端口的地址;
位数(根数)与主存地址空间大小及设备数量有关
单向
控制总线
一根控制线传输一个信号
有出
CPU送出的控制命令
主存或外设返回CPU的反馈信号
典型的控制信号
时钟
复位
总线请求和总线允许
中断请求和中断回答
存储器读/写
I/O读或写
子主传输确认
主板式总线是一种板级总线,主要连接主机系统印刷电路板的CPU和主存等部件,因此被称为处理器-主存总线,有时也将存储器总线和CPU总线分开,中间通过桥接器连接
底板式总线通常用于将系统的各个I/O功能模块连接到主机上,所以底板式总线属于I/O总线,典型的有PCI总线、AGP总线和PCI-express总线
通信总线
通信总线是用于计算机系统之间或计算机系统与其他系统(如远程通信设备、测试设备)之间信息传送的总线,通信总线也称为外部总线。
按时序控制方式
同步总线
异步总线
连线的类型
电缆式
采用扁平电缆连接电路板
主板式
在印刷电路板或卡上刻蚀出平行的金属线
底板式
通常在机箱中设置插槽
AGP总线、PCI总线
系统总线的结构
单总线结构
CPU、主存、I/O设备(通过I/O接口)都连接在一组总线上,允许I/O设备之间、I/O设备和CPU之间或I/O设备与主存之间直接交换信息。
单总线并不是指只有一根信号线,系统总线按传送信息的不同可以细分为地址总线、数据总线和控制总线

优点
结构简单,成本低,易于接入新的设备
缺点
带宽低、负载重,多个部件只能争用唯一的总线,且不支持并发传送操作。
双总线结构
一种是以主存为中心包含主存总线和系统总线的双总线结构,另一种是将I/O设备分离开包含主存总线和I/O总线和IOP设备的双总线结构
双总线结构有两条总线,一条是主存总线,用于CPU、主存和通道之间进行数据传送;另一条是 I/O总线,用于多个外部设备与通道之间进行数据传送。

支持突发(猝发)
通道
通道是具有特殊功能的处理器,能对I/O设备进 行统一管理。 通道程序放在主存中。
优点
将较低速的I/O设备从单总线上分离出来,实现存储器总线和I/O总线分离。
缺点
需要增加通道等硬件设备
三总线结构
三总线结构是在计算机系统各部件之间采用3条各自独立的总线来构成信息通路,这3条总线分别为主存总线、I/O总线和直接内存访问DMA总线。
还有一种传统的三总线结构:采用处理器-CACHE总线、主存总线和I/O总线三级总线结构

优点
提高了I/O设备的性能,使其更快地响应命令,提高系统吞吐量
缺点
系统工作效率较低
四总线结构(补充)

总线的性能指标
总线的传输周期(总线周期)
一次总线操作所需的时间(包括申请阶段、 寻址阶段、传输阶段和结束阶段),通常 由若干个总线时钟周期构成。
总线时钟周期(机器的时钟周期)
计算机有一个统一的时钟,以控制整个计算机的各个部件,总线也要受此时钟的控制
总线的工作频率
总线上各种操作的频率,为总线周期的倒数
若总线周期=N个时钟周期,则总线的工作频率=时钟频率/N。实际上指一秒内传送几次数据。
总线的时钟频率
即机器的时钟频率,为时钟周期的倒数
若时钟周期为T,则时钟频率为1/T。 实际上指一秒内有多少个时钟周期。
总线宽度
又称为总线位宽,它是总线上同时能够传输的数据位数, 通常是指数据总线的根数,如32根称为32位(bit)总线。
总线带宽
可理解为总线的数据传输率,即单位时间内总线上可传输数据的位数,通常用每秒钟传送信息的字节数来衡量,单位可用字节/秒(B/s)
总线带宽是指总线本身所能达到的最高传输速率 在计算实际的有效数据传输率时,要用实际传输的数据量除以耗时。
总线带宽 = 总线工作频率 × 总线宽度 (bit/s)= 总线工作频率 × (总线宽度/8(B/s)
总线宽度/总线周期(bit/s)=(总线宽度/8)/总线周期(B/s)
总线复用
总线复用是指一种信号线在不同的时间传输不同的信息。 可以使用较少的线传输更多的信息,从而节省了空间和成本
信号线数
地址总线、数据总线和控制总线3种总线数的总和称为信号线数
6.2总线事务和定时
总线事务
通常把总线上一对设备之间的一次信息交换称为总线事务,从请求总线到完成总线使用的操作序列
典型的总线事务有存储器读、存储器写、I/O读、I/O写和中断响应等
总线事务包括
请求操作
裁决操作
决定谁使用总线
地址传输
数据传输
总线释放
总线周期的四个阶段
申请分配阶段
由需要使用总线的主模块(或主设备)提出申请,经总线仲裁机构决定将下一传输周期的总线使用权授予某一申请者。
也可分为传输请求和总线仲裁阶段
寻址阶段
获得使用权的主模块通过总线发出本次要访问的从模块的地址及有关命令,启动参与本次传输的从模块。
传输阶段
主模块和从模块进行数据交换,可单向或双向进行数据传送。
结束阶段
主模块的有关信息均从系统总线上撤除,让出总线使用权。
总线定时
总线定时是指总线在双方交换数据的过程中需要时间上配合关系的控制,这种控制称为总线定时,它的实质是一种协议或规则
同步定时方式
系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。
时钟产生相等的时间间隔,每个间隔构成一个总线周期。
在一个总线周期中,发送方和接收方可进行一次数据传送。
因为采用统一的时钟,每个部件或设备发送或接收信息都在固定的总线传送周期中,一个总线的传送周期结束,下一个总线传送周期开始。
优点
传送速度快,具有较高的传输速率;总线控制逻辑简单。
缺点
主从设备属于强制性同步;不能及时进行数据通信的有效性检验,可靠性较差。
袁书
总线定时以最慢设备所花时间为准
由于时钟偏移问题,导致同步的总线不能过长,否则会降低总线传输效率
同步通信适用于总线长度较短及总线所接部件的存取时间比较接近的系统
异步定时方式
在异步定时方式中,没有统一的时钟,也没有固定的时间间隔,完全依靠传送双方相互制约的“握手”信号来实现定时控制。
主设备提出交换信息的“请求”信号,经接口传送到从设备;从设备接到主设备的请求后,通过接口向主设备发出“回答”信号。
分类
不互锁方式
主设备发出“请求”信号后,不必等到接到从设备的“回答”信号,而是经过一段时间,便撤销“请求”信号。而从设备在接到“请求”信号后,发出“回答”信号,并经过一段时间,自动撤销“回答”信号。双方不存在互锁关系。
速度最快 可靠性最差

一次握手
半互锁方式
主设备发出“请求”信号后,必须待接到从设备的“回答”信号后,才撤销“请求”信号,有互锁的关系。而从设备在接到“请求”信号后,发出“回答”信号,但不必等待获知主设备的“请求”信号已经撤销,而是隔一段时间后自动撤销“回答”信号,不存在互锁关系。

两次握手
全互锁方式
主设备发出“请求”信号后,必须待从设备“回答”后,才撤销“请求”信号;从设备发出“回答”信号,必须待获知主设备“请求”信号已撤销后,再撤销其“回答”信号。双方存在互锁关系。

三次握手
优点
总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行 信息交换,自动适应时间的配合。
缺点
比同步控制方式稍复杂一些,速度比同步定时方式慢。
半同步通信
统一时钟的基础上,增加一个“等待”响应信号

分离式通信
子周期1
主模块申请占用总线,使用完后放弃总线的使用权
子周期2
从模块申请占用总线,将各种信息送至总线上
特点
各模块均有权申请占用总线
采用同步方式通信,不等对方回答
补充
总线数据传输率的影响因素
与带宽有关
带宽由总线宽度、时钟频率和传输每个数据的时钟周期数决定
与总线裁决方式有关
总线的裁决方式和裁决速度会影响总线事务所用时间
与总线的定时方式有关
同步总线用时钟信号同步,而不像异步总线那样需要握手应答,因而比异步方式快
对于分离事务,由于实现了多个事务交叉并行传送,因而提高了总线的利用率
与信号类型有关
信号线分时复用有时会减慢总线的传输速度,将地址线和数据线分时复用后,写操作不能同时将地址和数据同时传送过去,因而降低了数据传输率
是否采用突发传送
减少了数据传送过程中的地址传送和申请/释放总线的开销,因而降低了数据传输速率
第七章输入/输出系统
7.1I/O系统的基本概念
输入与输出系统
外部设备
输入与输出设备和通过输入/输出接口才能访问的外存储设备
接口
在各个外设与主机之间传输数据时进行各种协调工作的逻辑部件
输入设备
输出设备
外存设备
磁盘、光盘
I/O系统的基本组成
I/O软件
包括驱动程序、用户程序、管理程序、升级补丁等。
通常采用I/O指令和通道指令实现CPU和I/O设备的信息交换。
I/O指令
CPU指令的一部分
操作码+命令码+设备码
通道指令
通道自身的指令
指出数据的首地址、传送字数、操作命令
通道指令放在主存中
由CPU执行启动I/O设备的指令,由通道代替CPU对I/O设备进行管理
I/O硬件
包括外部设备、设备控制器和接口、I/O总线等

I/O控制方式
程序查询方式
由CPU通过程序不断查询I/O设备是否已做好准备,从而控制I/O设备与主机交换信息。
中断方式
只在I/O设备准备就绪并向CPU 发出中断请求时才予以响应。
DMA方式
主存和I/O设备之间有一条直接数据通路,当主存和I/O设备交换信息时,无需调用中断服务程序。
通道方式
在系统中设有通道控制部件,每个通道都挂接若干外设,主机在执行I/O命令时,只需启动有关通道,通道将执行通道程序,从而完成I/O操作。
7.2外部设备
外部设备也称外围设备,是除了主机以外的、能直接或间接与计算机交换信息的装置。
输入设备
键盘
键盘是最常用的输入设备,通过它可发出命令或输入数据。键盘通常以矩阵的形式排列按键,每个键用符号标明它的含义和作用。每个键相当于一个开关,当按下键时,电信号连通;当松开键时,弹簧把键弹起,电信号断开
键盘的分类
编码键盘
键盘电路板中有个编码器,能将单片机得到的位置码转换成相应的ASCII码送入主机
编码器由硬件组成,因此键盘响应速度较快
非编码键盘
键盘送到主机的是位置码,由键盘中断服务程序完成将位置码转换为ASCII码
键盘控制电路简单,速度会慢一些,但主机速度比人按键速度快,使用灵活,因此目前PC大多使用这种键盘
鼠标
当鼠标在平面上移动时,其底部传感器把运动的方向和距离检 测出来,从而控制光标做相应运动。
输出设备
显示器
按显示设备所用的显示器件分类
阴极射线管(CRT)显示器
液晶显示器(LCD)
LED显示器
按所显示的信息内容分类
字符显示器
图形显示器
图像显示器
参数
分辨率
所能表示的像素个数
所能表示的像素个数,屏幕上的每一个光点就是一个像素,以宽、高的像素的乘积表示,例如,800×600、1024×768和1280×1024等。
灰度级
灰度级是指黑白显示器中所显示的像素点的亮暗差别
也称颜色深度,即每个像素对应的二进制位数
灰度级越多,图像层次越清楚逼真
n位可以表示2^n种不同的亮度或颜色 若颜色深度为8bit,则可以有256色
刷新
光点只能保持极短的时间便会消失,为此必须在光点消失之前再重新扫描显示一遍,这个过程称为刷新。
刷新频率:单位时间内扫描整个屏幕内容的次数,按照人的视觉生理,刷新频率大于30Hz时才不会感到闪烁,通常显示器刷新频率在60~120Hz。
显示存储器/刷新存储器/VRAM
VRAM容量 = 分辨率 × 灰度级位数
VRAM带宽 = 分辨率 × 灰度级位数 × 帧频
阴极射线管(CRT)显示器
CRT显示器主要由电子枪、偏转线圈、荫罩、高压石墨电极和荧光粉涂层及玻璃外壳5部分组成。
具有可视角度大、无坏点、色彩还原度高、色度均匀、可调节的多分辨率模式、响应时间极短等目前LCD难以超过的优点。
按显示信息内容不同
字符显示器
显示字符的方法以点阵为基础。点阵是指由m×n个点组成的阵列。点阵的多少取决于显示字符的质量和字符窗口的大小。
字符窗口是指每个字符在屏幕上所占的点数,它包括字符显示点阵和字符间隔。
将点阵存入由ROM构成的字符发生器中,在CRT进行光栅扫描的过程中,从字符发生器中依次读出某个字符的点阵,按照点阵中0和1代码不同控制扫描电子束的开或关,从而在屏幕上显示出字符。
对应于每个字符窗口,所需显示字符的ASCII代码被存放在视频存储器VRAM中,以备刷新。
图形显示器
将所显示图形的一组坐标点和绘图命令组成显示文件存放在缓冲存储器中,缓存中的显示文件传送给矢量(线段)产生器,产生相应的模拟电压,直接控制电子束在屏幕上的移动。为了在屏幕上保留持久稳定的图像,需要按一定的频率对屏幕进行反复刷新。
优点
分辨率高且显示的曲线平滑。目前高质量的图形显示器采用这种随机扫描方式
缺点
当显示复杂图形时,会有闪烁感。
显卡的核心是GPU
打印机
按印字原理不同可分为
击打式打印机
利用机械动作使印字机构与色带和纸相撞而打印字符
优点
设备成本低 印字质量好
缺点
噪声大、速度慢
非击打式打印机
采用电、磁、光、喷墨等物理、化学方法来印刷字符
优点
速度快噪声小
成本高
按打印机工作方式不同可分为
串行打印机
逐字打印速度慢
行式打印机
逐行打印速度快
按工作方式可分为
针式打印机
喷墨式打印机
激光打印机
外存储器
计算机的外存储器又称为辅助存储器,目前主要使用磁表面存储器。
所谓“磁表面存储”,是指把某些磁性材料薄薄地涂在金属铝或塑料表面上作为载磁体来存储信息。磁盘存储器、磁带存储器和磁鼓存储器均属于磁表面存储器。
磁表面存储器的优点
①存储容量大,位价格低; ②记录介质可以重复使用; ③记录信息可以长期保存而不丢失,甚至可以脱机存档; ④非破坏性读出,读出时不需要再生。
磁表面存储器的缺点
①存取速度慢; ②机械结构复杂; ③对工作环境要求较高。
原理
当磁头和磁性记录介质有相对运动时,通过电磁转换完成读/写操作
编码方法
按某种方案(规律),把一连串的二进制信息变换成存储介质磁层中一个磁化翻转状态的序列,并使读/写控制电路容易、可靠地实现转换
外存储器既可以作为输入设备,也可以作为输出设备。
磁盘阵列
RAID技术的思想
将多个独立操作的磁盘按某种方式组织成磁盘阵列,以增加容量
类似于主存中的多模块交叉技术,将数据存储在多个盘体上,通过这些盘并行工作来提高数据传输速度
并利用冗余磁盘技术来进行错误恢复来提高系统的可靠性
RAID(廉价冗余磁盘阵列)是将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储、并行访问,具有更好的存储性能、可靠性和安全性。
RAID0
无冗余和无校验的磁盘阵列
RAID0 把连续多个数据块交替地存放在不同物理磁盘的扇区中,几个磁盘交叉并行读写(条带化),不仅扩大了存储容量,而且提高了磁盘数据存取速度,但RAID0没有容错能力
优点
采用连续分布或大数据交叉分布时,如果两个I/O请求访问不在盘上的数据,则可以两个盘并行传输,使得I/O请求同时响应,具有较快的I/O响应能力,适用于要求I/O响应速度较快的场合
采用小条带交叉分布时,一个I/O请求可能占用多个条带,并分布在不同的盘上,因而可以并行传送同一个I/O请求的不同条带上的数据块,所以数据传输率较高,适合大容量I/O请求的场合
RAID1
镜像磁盘队列
RAID1是为了提高可靠性,使两个磁盘同时进行读写,互为备份,如果一个磁盘出现故障,可从另一磁盘中读出数据。两个磁盘当一个磁盘使用,意味着容量减少一半。
RAID2
无冗余和无校验的磁盘阵列
用海明校验生成多个磁盘校验盘,实现纠正一位错误、检测两位错误的功能
RAID3
位交叉奇偶校验的磁盘阵列
RAID4
块交叉奇偶校验的磁盘阵列
RAID5
无独立校验的奇偶校验磁盘阵列

RAID通过同时使用多个磁盘,提高了传输率;通过在多个磁盘上并行存取来大幅提高存储系统的数据吞吐量;通过镜像功能,可以提高安全可靠性;通过数据校验,可以提供容错能力。
光盘存储器
光盘存储器是利用光学原理读/写信息的存储装置,它采用聚焦激光束对盘式介质以非接触的方式记录信息
特点
存储密度高 携带方便成本 容量大 存储期限长 容易保存
类型
CD-ROM
只读型光盘,只能读出其中内容,不能写入或修改
CD-R
只可写入一次信息,之后不可修改
CD-RW
可读可写光盘,可以重复读写
DVD-ROM
高容量的CD-ROM,DVD表示通用数字化多功能光盘
固态硬盘
在微小型高档笔记本电脑中,采用高性能Flash Memory作为硬盘来记录数据,这种“硬盘”称固态硬盘
闪存(Flash Memory)是在E2PROM的基础上发展起来的,本质上是只读存储器
与传统硬盘相比能耗成倍降低
接口采用SATA和IDE接口
U盘和移动硬盘
U盘也称闪存盘,它不是磁表面存储器,而是采用flash存储器(即闪存)做成,属于非易失性半导体存储器
沿用了EPROM的简单结构和浮栅/热电子注入的程序写入方式,又兼备E2PROM的可擦除的特点,可在计算机内进行擦除和写入,因此又称为快擦型电可擦除重编程ROM
袁书
外设的特点
异步性
外设与CPU之间是完全异步的工作方式,两者之间无统一的时钟,且外设之间的速度差异很大
实时性
CPU必须及时按不同的传输速率和不同的传输方式接收来自多个外设的信息或向多个外设发送信息,否则高速设备可能会有丢失信息的危险
多样性
7.3I/O接口
I/O接口的功能

I/O接口(I/O控制器)是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换。
接口的功能(要解决的问题)
1. 实现主机和外设的通信联络控制
2. 进行地址译码和设备选择
3. 实现数据缓冲
4. 信号格式的转换
5. 传送控制命令和状态信息
接口的功能(具体操作)
设备选址
传送命令
传送数据
反映I/O设备的工作状态
袁书
I/O接口的职能
数据缓冲
在I/O接口中加入数据缓冲寄存器,以达到主机和外设工作速度的匹配
错误和状态检测
接口和外设发生出错情况的分类
设备电路故障或异常情况
数据传输错
控制和定时
数据格式转换
与主机和设备通信
IO接口与主机侧的通信包括
对主机通过地址总线送来的地址信息进行译码,以确定是否选中本设备
接受总线送来的控制信息,以确定数据传送的方向
将接口的数据缓冲寄存器或状态寄存器的信息送到系统总线,或接收系统总线传来的数据和命令信息,将其送到接口的数据缓冲寄存器或控制寄存器
IO接口与设备侧的通信包括
将控制寄存器的命令译码,输到外部接口的控制线上
将数据缓冲寄存器的数据发送到外部接口的数据线上
接收外设的数据或状态信息,将其送到接口的数据缓冲寄存器或控制寄存器
I/O接口的基本结构

内部接口
内部接口与系统总线相连,实质上是与内存、CPU相连。数据的传输方式只能是并行传输。
外部接口
外部接口通过接口电缆与外设相连,外部接口的数据传输可能是串行方式,因此I/O接口需具有串/并转换功能。
并行传输方式
并行传输多用于同步总线上
串行传输方式
波特率
每秒钟通过信道传输的码元数
比特率
每秒钟通过信道传输的二进制数
异步串行通信协议
字符格式的组成部分
一个起始位,总是低电平
5-8位数据位,规定从最低有效位开始传送
没有或一位奇偶校验位
1/1.5/2位停止位,为高电平
设备选择电路
设备选址
命令寄存器和命令译码器
传送命令
数据缓冲寄存器DBR
传送数据
可实现格式转换功能
设备状态标记
反映设备状态
CPU同外设之间的信息传送实质是对接口中的某些寄存器(即端口)进行读或写

袁书
数据线
数据缓冲寄存器与内存或CPU的寄存器的传送
状态寄存器与CPU实现设备状态信息的传送
CPU与控制寄存器实现对外设的控制信息的传送
地址线
给出要访问IO接口中寄存器的地址
控制线
控制信号,也可能参与地址译码,如用读信号确定是接收寄存器还是发送寄存器
仲裁信号和握手信号
I/O接口的类型
按数据传送方式可分为
并行接口
一个字节或一个字所有位同时传送
串行接口
一位一位地传送。
这里所说的数据传送方式指的是外设和接口一侧的传送方式,而在主机和接口一侧,数据总是并行传送的。接口要完成数据格式转换。
按主机访问I/O设备的控制方式可分为
程序查询接口
中断接口
DMA接口
按功能选择的灵活性可分为
编程接口
不可编程接口
I/O端口及其编址
统一编址
把I/O端口当做存储器的单元进行地址分配,用统一的访存指令就可以访问I//O端口,又称存储器映射方式
靠不同的地址码区分内存和I/O设备,I/O地址要求相对固定在地址的某部分

优点
不需要专门的输入/输出指令,可使CPU访问I/O的操作更灵活、更方便,还可使端口有较大的编址空间。
缺点
端口占用了存储器地址,使内存容量变小,而且利用存储器编址的I/O设备进行数据输入/输出操作,执行速度较慢。
独立编址
端口地址与存储器地址无关,独立编址CPU需要设置专门的输入/输出指令访问端口,又称I/O映射方式
靠不同的指令区分内存和I/O设备

优点
输入/输出指令与存储器指令有明显区别, 程序编制清晰,便于理解。
缺点
输出指令少,一般只能对端口进行传送操作,尤其需要CPU提供存储器读/写、I/O设备读/写两组控制信号,增加了控制的复杂性
同外设之间的信息传送实质是对接口中的某些寄存器(即端口)进行读或写
7.4I/O方式
程序查询方式



主要特点
CPU有“踏步”等待现象,CPU与I/O串行工作。
优点
接口设计简单、设备量少
缺点
在信息传送过程中要花费很多时间用于查询和等待,而且在一段时间内只能和一台外设交换信息,效率大大降低。
程序查询方式接口结构

袁书
两种程序直接控制方式
无条件传送方式
处理器对外设接口进行周期性的定时访问,直接对IO端口进行数据存取
由于对于高速设备,定时访问的时间间隔短,需要频繁进行IO设备的访问,因而这种方式不宜用于高速设备的IO
条件传送方式/异步传送方式
在查询程序中安排相应的IO指令,由这些指令直接从IO接口中取得外设和接口的状态,根据这些状态来控制外设和主机的信息交换
根据查询方式的不同
定时查询
独占查询
对于键盘和鼠标这种随机启动的低速IO设备,由于用户长时间没有输入,而引起查询程序长时间等待,降低处理器的处理效率,因而多采用中断的方式
像磁盘、磁带和光盘存储器等成块传送设备一旦被启动,便一直传送数据,不需要处理器对每个数据传送启动,并且数据的传送时间很短,不适合程序查询方式
对于针式打印机这种,可以采用程序查询方式
程序中断方式
中断系统
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现处,继续执行原程序。
工作流程
中断请求
中断源向CPU发送中断请求信号
中断响应
中断判优

中断处理
中断隐指令
中断服务程序
中断判优
中断判优既可以用硬件实现,也可用软件实现
硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中;

硬件判优法
链式查询
独立请求
软件实现是通过查询程序实现的

优先级
硬件故障中断属于最高级,其次是软件中断
非屏蔽中断优于可屏蔽中断
DMA请求优于I/O设备传送的中断请求
高速设备优于低速设备
输入设备优于输出设备
实时设备优于普通设备
中断请求标记
每个中断源向CPU发出中断请求的时间是随机的。
为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR,当其状态为“1”时,表示中断源有请求这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中。

对于外中断,CPU是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号
对于执行时间很长的指令,可在执行过程中设置若干个“查询断点”
CPU响应中断的条件
中断源有中断请求
CPU允许中断即开中断
一条指令执行完毕,且没有更紧迫的任务
中断处理过程
中断隐指令
关中断
在中断服务程序中,为了保护中断现场(即CPU主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。
保存断点
为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器(PC)的内容)保存起来。
可以存入堆栈。
也可以存入指定单元
引出中断服务程序
引出中断服务程序的实质就是取出中断服务程序的入口地址并传送给程序计数器,将初始PSW,送往PSWR,产生入口地址的方法有软件查询法和硬件向量法
硬件向量法
通常把中断服务程序的首地址PC和初始PSW称为中断向量IV(Interupt Vector)
中断向量IV存放在中断向量表中,中断向量所在的地址称为向量地址
因为每个中断向量在中断向量表的位置可以用对应表项的号码来标识,有些系统把该编号叫做中断向量,也有的被称为中断类型号
由硬件产生向量地址,再由向量地址找到入口地址

中断服务程序
保护现场
保存程序断点(PC)和状态寄存器的内容
已由中断隐指令(硬件)完成
这类信息称为断点信息
若是系统提供了访问PSWR的指令,也可由软件来保存
是保存通用寄存器内容
由中断服务程序完成
存到特定的存储区,如堆栈中
这类信息称为现场信息
中断服务(设备服务)
恢复现场
通过出栈指令或取数指令把之前保存的信息送回寄存器中
中断返回
通过中断返回指令回到原程序断点处

多重中断和中断屏蔽技术
单重中断
执行中断服务程序时不响应新的中断请求
多重中断
又称中断嵌套,执行中断服务程序时可响 应新的中断请求。
单重中断和多重中断的对比

中断屏蔽技术
CPU要具备多重中断的功能须满足条件
在中断服务程序中提前设置开中断指令。
优先级别高的中断源有权中断优先级别低的中断源。

每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
屏蔽字设置的规律
一般用‘1’表示屏蔽,’0’表示正常申请。
每个中断源对应一个屏蔽字(在处理该中断 源的中断服务程序时,屏蔽寄存器中的内容 为该中断源对应的屏蔽字)。
屏蔽字中‘1’越多,优先级越高。每个屏蔽 字中至少有一个’1’(至少要能屏蔽自身的中断)
程序中断的作用
① 实现CPU与I/O设备的并行工作。
② 处理硬件故障和软件错误。
③ 实现人机交互,用户干预机器需要用到中断系统。
④ 实现多道程序、分时操作,多道程序的切换需借助于中断系统。
⑤ 实时处理需要借助中断系统来实现快速响应。
⑥ 实现应用程序和操作系统(管态程序)的切换,称为“软中断”。
⑦ 多处理器系统中各处理器之间的信息交流和任务切换。
袁书
中断系统存在两种中断优先级
中断响应优先级
由查询程序或硬件判优排队线路决定的优先权,反映的是多个中断同时请求时哪个被先响应
中断处理优先级
根据各自的中断屏蔽字对中断处理优先权进行动态分配
中断过程
中断响应
主机发现中断请求,中止现行程序的执行,到调出中断服务程序的过程
由硬件实现
中断响应的时间
断点保存的时间
中断源识别和判优的时间
获得中断服务程序首地址和初始状态的时间
中断处理
由CPU执行中断服务程序来实现,由软件完成
先行段
保护现场和旧屏蔽字
设置新屏蔽字
开中断
本体段
具体的中断服务
恢复段
关中断
恢复现场和旧屏蔽字
清除中断请求
开中断
返回
DMA 方式
主存和DMA接口之间有一条直接数据通路。由于DMA方式传送数据不需要经过CPU,因此不必中断现行程序,I/O与主机并行工作,程序和传送并行工作。
DMA控制器的组成
在DMA方式中,当I/O设备需要进行数据传送时,通过DMA控制器(DMA接口)向CPU提出DMA传送请求,CPU响应之后将让出系统总线,由DMA控制器接管总线进行数据传送。
DMA控制器的主要功能
传送前
1)接受外设发出的DMA请求,并向CPU发出总线请求。
2)CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期。
传送时
3)确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数。
4)规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。
传送后
5)向CPU报告DMA操作的结束。
简单的DMA控制器

主存地址寄存器
简称AR,存放要交换数据的主存地址。
传送长度计数器
简称WC,用来记录传送数据的长度,计数溢出时,数据即传送完毕,自动发中断请求信号。
数据缓冲寄存器
用于暂存每次传送的数据。
DMA请求触发器
每当I/O设备准备好数据后给出一个控制信号,使DMA请求触发器置位(写1)。
“控制/状态” 逻辑
由控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对DMA请求信号和CPU响应信号进行协调和同步。
中断机构
当一个数据块传送完毕后触发中断机构,向CPU提出中断请求。
注:在DMA传送过程中,DMA控制器将接管CPU的地址总线、数据总线和 控制总线,CPU的主存控制信号被禁止使用。而当DMA传送结束后,将恢 复CPU的一切权利并开始执行其操作。
DMA传送方式
主存和DMA控制器之间有一条数据通路,因此主存和I/O设备之间交换信息时,不通过CPU。但当I/O设备和CPU同时访问主存时,可能发生冲突,为了有效地使用主存,DMA控制器与CPU通常采用以下3种方法使用主存。
停止CPU访问主存

CPU 处于不工作状态或保持状态
优点
控制简单
缺点
未充分发挥CPU 对主存的利用率
DMA与CPU交替访存

优点
不需要总线使用权的申请、建立和归还过程
缺点
硬件逻辑更为复杂
周期挪用(周期窃取)

DMA 访问主存有三种可能:
CPU 此时不访存(不冲突)
CPU 正在访存(存取周期结束让出总线)
CPU 与DMA 同时请求访存(I/O访存优先)
DMA传送过程
以数据输入为例


结束处理
检验送入主存的数据是否正确
测试传送过程中是否出错(错则转入诊断程序)
决定是否使用DMA传送其他数据块
DMA方式的特点
① 它使主存与CPU的固定联系脱钩,主存既可被CPU访问,又可被外设访问。
②在数据块传送时,主存地址的确定、传送数据的 计数等都由硬件电路直接实现。
③ 主存中要开辟专用缓冲区,及时供给和接收外设的数据。
④ DMA传送速度快,CPU和外设并行工作,提高了系统效率。
⑤ DMA在传送开始前要通过程序进行预处理,结束 后要通过中断方式进行后处理。
DMA方式与I/O方式的对比

通道和IO处理器方式
通道是一种专门的IO控制器
通道方式与DMA方式的区别是
DMA方式通过对DMA控制器控制总线,在主存和外设之间实现IO传送;而通道通过执行通道程序对IO操作管理
DMA控制器通常只控制一台或多台同类高速设备;而通道可控制多台同类或不同类的设备
CPU对通道的控制方式
执行IO指令
通道被启动后,从主存指定单元开始处取出通道程序执行
IO指令是一种管态(特权)指令
处理来自通道的中断请求
通道的种类
字节多路通道
选择通道
成组多路通道
输入输出处理机
IOP
通道结构的输入输出处理机
PPU
输入输出处理机系统结构的外围处理器方式