文章目录
一、计算机系统概述
- 计算机发展历程
- 计算机系统层次结构
- 计算机性能指标
计算机发展历程
- 电子管时代==>晶体管时代==>中小规模集成电路时代==>超大规模集成电路时代
- 计算机语言的发展经历了面向机器的机器语言和汇编语言、面向问题的高级语言。
- 计算机按指令和数据流分为
- 单指令流和但数据流系统( S I S D SISD SISD):冯·诺依曼体系结构
- 单指令流和多数据流系统( S I M D SIMD SIMD):包括阵列处理器和向量处理器系统
- 多指令流和单数据流系统( M I S D MISD MISD):实际不存在
- 多指令流和多数据流系统( M I M D MIMD MIMD):包括多处理器和多计算机系统
- 计算机发展两极分化
- 更微型化、网络化、高性能、多用途
- 更巨型化、超高速、并行处理、智能化
错题精选
- 只有当程序执行时才将源程序翻译成机器语言,并且一次只能翻译一行语句,边翻译边执行的是(解释)程序,将汇编语言源程序转变为机器语言程序的过程是(汇编),把高级语言转化为汇编语言的过程是(编译)
计算机系统层次结构
- 硬件系统和软件系统共同构成了一个完整的计算机系统。
- 硬件是指有形的物理设备,是计算机系统中实际物理装置的总称
- 软件是指在硬件上运行的程序和相关的数据及文档
计算机硬件的基本组成
- 计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备组成
- 早期存储器容量小,以运算器为中心的结构
- 随着微电子技术进步,发展为以存储器为中心的结构
-
输入设备:将程序和数据以机器所能识别和接受的信息形式输入计算机
-
输出设备:将计算机处理的结果以人们所能接受的形式或其他系统所要求的信息形式输出
-
存储器:计算机的存储部件,用来存放程序和数据
-
主存储器:CPU能够直接访问
-
辅助存储器:用于帮助主存储器记忆更多信息,需要调入主存后,才能为CPU所访问
-
主存储器由许多存储单元组成,每个存储单元包含若干存储元,每个存储元存储一位二进制代码,存储单元这串代码的位数称为存储字长
-
主存储器的工作方式是按存储单元的地址进行存取,称为按地址存取方式(相联存储器是按内容访问的)
-
-
地址存储器( M A R MAR MAR)用于寻址,其位数对应存储单元的个数,数据存储器( M D R MDR MDR)的位数和存储字长相等
-
注:现代 C P U CPU CPU中 M A R MAR MAR和 M D R MDR MDR存在于 C P U CPU CPU中,但是是存储器的一部分。
-
-
运算器:计算机的执行部件,用于进行算术运算或逻辑运算
- 核心是算术逻辑单元( A L U ALU ALU)
- 运算器包含若干通用寄存器(累加器( A C C ACC ACC)、乘商寄存器( M Q MQ MQ)、操作数寄存器( X X X)、变址寄存器( I X IX IX)、基址寄存器( B R BR BR)),前三个必须有
- 运算器内还有程序状态寄存器(PSW),存放 A L U ALU ALU运算得到的一些标志信息或处理机的状态信息
-
控制器:计算机的指挥中心
- 控制器由**程序计数器( P C PC PC)、指令寄存器( I R IR IR)、控制单元( C U CU CU)**组成
- P C PC PC用来存放当前欲执行的指令,与主存的 M A R MAR MAR有一条直接通路
- I R IR IR用来存放当前的指令,其内容来自主存的 M D R MDR MDR
- 指令中的操作码送至 C U CU CU,来分析指令并发出各种微操作命令序列;地址码送往 M A R MAR MAR
-
一般运算器和控制器集成到同一个芯片上,称为中央处理器( C P U CPU CPU), C P U CPU CPU和主存储器共同构成主机,除主机其他硬件装置为外设。
-
-
C P U CPU CPU和主存通过总线相连,总线有地址、控制和数据3组信号线
计算机软件的分类
-
系统软件:保证计算机系统高效、正确运行的基础软件(数据库管理系统(DBMS)、操作系统(OS)、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序)
-
应用软件:用户为解决某个应用领域中的各类问题而编制的程序
-
机器语言:二进制代码
-
汇编语言:易于记忆和理解,使用汇编语言编辑的程序,需要经过汇编程序软件的翻译
-
高级语言:需经过编译程序编译成汇编语言,再经过汇编操作得到机器语言程序,或直接到位
计算机的工作过程
- 把程序和数据装入存储器
- 源程序到可执行文件
- 预处理阶段(解决#开头命令等)
- 编译阶段
- 汇编阶段
- 连接阶段
- 可执行文件到执行指令
- 取指令
- 分析指令
- 执行指令
计算机的多级层次结构
- 第1级是微程序机器层,是一个实在的硬件层,由机器硬件执行微指令
- 第2级是传统机器语言层,由微程序解释机器指令系统
- 第3级是操作系统层,由操作系统定义和解释软件指令
- 第4级是汇编语言层,由汇编程序支持和执行
- 第5级是高级语言曾,由各种高级语言编译程序支持和执行
- 注:下层是上层的基础,上层是下层的扩展
错题精选
-
冯·诺依曼的基本工作方式是(控制流驱动方式)
-
说法错误的是:软件的功能不能用硬件取代
-
C P U CPU CPU不包括(地址译码器)
-
若一个8位计算机系统以16位来表示地址,则该计算机系统有( 2 16 2^{16} 216)个地址空间
-
关于相联存储器,说法正确的是既可按地址寻址,又可按内容寻址
-
依存储程序的原理,计算机应具有5大功能:数据传送功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能
计算机的性能指标
- 机器字长:是计算机进行一次整数运算所能处理的二进制数据的位数
- 数据通路带宽:数据总线一次能并行传送信息的位数
- 主存容量:主存储器所能存储信息的最大容量
- 运行速度:
- 吞吐量和响应时间
- 吞吐量:指系统再单位时间内处理请求的数量,主要取决于主存的存取周期。
- 响应时间:包括 C P U CPU CPU时间(运行程序所需时间)与等待时间(磁盘访问、I/O操作等)
- 主频和时钟周期
- CPU时钟周期:通常为节拍脉冲,是CPU中最小的时间单位,主频的倒数
- 主频(CPU时钟频率):对同一型号,主频越高,完成指令的执行步骤所用时间越短
- 注: C P U 时 钟 周 期 = 1 / 主 频 CPU时钟周期=1/主频 CPU时钟周期=1/主频,1 Hz代表每秒1次
- CPI:执行一条指令所需的时钟周期数
- CPU执行时间: C P U 执 行 时 间 = C P U 时 钟 周 期 数 / 主 频 = ( 指 令 条 数 × C P I ) / 主 频 CPU执行时间=CPU时钟周期数/主频=(指令条数\times CPI)/主频 CPU执行时间=CPU时钟周期数/主频=(指令条数×CPI)/主频
-
M
I
P
S
、
M
P
L
O
P
S
、
G
F
L
O
P
S
、
T
F
L
O
P
S
MIPS、MPLOPS、GFLOPS、TFLOPS
MIPS、MPLOPS、GFLOPS、TFLOPS
- M I P S MIPS MIPS:每秒执行多少百万条指令。 M I P S = 指 令 条 数 / ( 执 行 时 间 × 1 0 6 ) = 主 频 / C P I MIPS=指令条数/(执行时间\times 10^6)=主频/CPI MIPS=指令条数/(执行时间×106)=主频/CPI
- M F L O P S MFLOPS MFLOPS:每秒执行多少百万次浮点运算
- G F L O P S GFLOPS GFLOPS:每秒执行多少十亿次浮点运算
- T F L O P S TFLOPS TFLOPS:每秒执行多少万亿次浮点运算
- 吞吐量和响应时间
- 系列机:具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成
- 兼容:计算机软件或硬件的通用性
- 软件可移植性:某系列计算机中,软件直接或很少修改能在另一系列计算机运行
- 固件:将程序固定在 R O M ROM ROM中组成的部件称为固件,介于软件和硬件之间。
错题精选
- 在CPU的寄存器中,(指令寄存器)对用户是完全透明的
- 计算机操作的最小单位时间是(时钟周期)
- 假定基准程序 A A A在某计算机上的运行时间为100s,其中90s为CPU时间,其余为I/O时间,若CPU速度提高50%,I/O速度不变,则运行基准程序A所耗费时间是 90 1 + 50 % + 10 = 70 s \frac{90}{1+50\%}+10=70s 1+50%90+10=70s
本章小结
计算机由哪几部分组成?以那部分为中心?
- 运算器、控制器、存储器、输入设备及输出设备
- 前期运算器,现期存储器,使I/O操作尽可能绕过CPU,提高整体运行效率
主频高的CPU一定比主频低的CPU快吗?为什么?
- CPU的主频表示CPU内数字脉冲信号振荡的速度。主频和实际的运算速度存在一定关系,但没有确定公式。主频并不直接代表运算速度。
不同级别的语言编写程序有什么区别?
- 机器语言和汇编语言与机器指令对应,而高级语言不与指令直接对应,具有较好的可移植性。其中机器语言可以被硬件直接执行。
常见问题和易混淆知识点(☆☆☆☆☆)
同一个功能既可以由软件实现,又可以由硬件实现吗?
- 软件和硬件是两种完全不同的形态,硬件是实体,是物质基础;软件是一种信息,看不见、摸不到。但在逻辑功能上,软件和硬件是等效的。因此,计算机系统中,许多功能既可以由硬件直接实现,又可以在硬件的配合下由软件实现。
翻译程序、汇编程序、编译程序、解释程序的区别和联系是什么?
- 翻译程序是指把高级语言源程序翻译成机器语言程序的软件
- 翻译程序有两种
- 编译程序:高级语言源程序一次全部翻译成目标程序。生成可执行文件
- 解释程序:一句一翻译一执行,不生成目标程序。
- 汇编程序也是一种语言翻译程序,把汇编语言翻译成机器语言。
- 编译程序与汇编程序的区别:
- 源语言:高级语言,目标语言:汇编/机器,为编译程序
- 源语言:汇编语言,目标语言:机器语言,为汇编程序
什么是透明性?透明是指什么都能看见吗?
- 在计算机领域中,站在某类用户的角度,若感觉不到某个事物或属性的存在,则称为“对该用户而言,某个事物或属性是透明的”。与日常生活中的透明概念正好相反。
- 如:在CPU中,IR、MAR和MDR对各类程序员都是透明的。
机器字长、指令字长、存储字长的区别和联系是什么?
- 机器字长:计算机能直接处理的二进制数据的位数,机器字长一般等于内部寄存器的大小,决定了计算机的精度。
- 指令字长:一个指令字中包含的二进制代码的位数
- 存储字长:一个存储单元存储的二进制代码的长度
- 指令字长一般是存储字长的整数倍,若指令字长等于存储字长的2倍,需要2次访存来取指令,因此取指周期为机器周期的2倍,若相等,则取值周期等于机器周期。
计算机体系结构和计算机组成的区别和联系是什么?
- 计算机体系结构是指机器语言或汇编语言程序员所看得到的传统机器的属性,包括指令集、数据类型、存储器寻址技术等,大都属于抽象的属性。
- 计算机组成是指如何实现计算机体系结构所体现的属性,它包含对许多程序员来说透明的硬件细节。例如,指令系统属于结构的问题,但指令的实现即如何取指令、分析指令、取操作数、如何运算等都属于组成的问题。
基准程序执行的越快说明机器的性能越好吗?
- 一般情况下,基准测试程序能够反映机器性能的好坏。但是,由于基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题。
二、数据的表示和运算
数制与编码
数制
- 所有信息采用二进制编码的原因
- 二进制只有两种状态,使用两个稳定状态的物理器件就可以表示二进制数的每一位
- 二进制位1和0正好与逻辑值“真”和“假”对应,为计算机实现逻辑运算提供遍历
- 二进制的编码和运算规则都很简单,通过逻辑门电路能方便地实现算术运算
编码
- BCD码
- 8421码,有权码,它的范围为0~9
- 余3码,是无权码,在8421码的基础上加(0011)形成的
- 2421码,特点是大于等于5的4未二进制数中最高位为1
- ASCII码
- 7位二进制编码
- 031为控制字符,32126共95个字符称为可印刷字符
- 0~9的ASCII码值为48(011 0000)~57(011 1001),去掉高3位,正好是二进制形式的0~9
- 汉字的表示和编码
- 每个编码用两个字节表示
- 区位码用两字节表示一个汉字,每字节用七位码,将汉字和图形符号排列在一个94行94列的二维代码表中,区位码是4位十进制数,前2位是区码,后2位是位码
- 国标码 = 区位码+2020H
- 汉字内码 = 国标码 + 8080H
校验码
- 能够发现或能够自动纠正错误的数据编码,通过增加一些冗余码
- 任意两个合法码字之间最少变化的二进制位数,称为数据校验码的码距
- 码距不小于2的数据校验码,开始有检错的能力。
- 码距越大,检错、纠错能力越强
奇偶校验码:
- 添加一个校验位后,判断1的个数为奇数(奇校验码)还是偶数(偶校验码)
海明码
-
n + k ≤ 2 k − 1 n+k\leq 2^k-1 n+k≤2k−1( n n n为有效信息的位数, k k k为校验位的位数,若要检测两位错,需再加一位校验位)
-
海明位号分别对应于海明码的1 2 4 8 16 …
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
-
分组以形成校验关系
-
校验位取值,通过分组异或求出 P 1 , P 2 , ⋯ P_1,P_2,\cdots P1,P2,⋯
-
海明码校验
-
若 S 3 S 2 S 1 S_3S_2S_1 S3S2S1的值为000,说明无错,否则出错,且这个数就是错误位的位号
循环冗余( C R C CRC CRC)校验码
- 信息位+校验位
- 依生成多项式最高次幂的次数来决定信息位需左移的位数
- 而后,左移后做被除数,与除数进行模2除法(异或运算),不借位,直至余数位数小于除数,该余数为最终余数。即为校验位
- 检验:得到的 C R C CRC CRC码与生成多项式进行模2除法,得到余数若000则未出错
错题精选
-
在按字节编址的计算机中,若数据存储器中以小端方案存放。假定int型变量i的地址为08000000H,i的机器数为01234567H,地址08000000H单元的内容是(67H)
-
在 C R C CRC CRC中,接收端检测出一位数据错误后,纠正的方法是(D)
- A. 请求重发
- B. 删除数据
- C. 通过余数值自行纠正
- D. 以上均可
-
在大量数据传送过程中,常用且有效的校验法是( C R C CRC CRC)
定点数的表示和运算
- 定点表示即约定机器数中的小数点位置是固定不变的,小数点位于数据的最高位之前,定点小数,固定在最低位之后,定点整数。
- 定点小数: − ( 1 − 2 − n ) ∼ 1 − 2 − n -(1-2^{-n})\sim 1-2^{-n} −(1−2−n)∼1−2−n
- 定点整数: − ( 2 n − 1 ) ∼ 2 n − 1 -(2^n-1)\sim 2^n-1 −(2n−1)∼2n−1
- 原码
- 原码小数: − ( 1 − 2 − n ) ∼ 1 − 2 − n -(1-2^{-n})\sim 1-2^{-n} −(1−2−n)∼1−2−n
- 原码整数: − ( 2 n − 1 ) ∼ 2 n − 1 -(2^n-1)\sim 2^n-1 −(2n−1)∼2n−1
- 补码:
- 补码小数: − 1 ∼ 1 − 2 − n -1\sim 1-2^{-n} −1∼1−2−n
- 补码整数: − 2 n ∼ 2 n − 1 -2^n\sim 2^n-1 −2n∼2n−1
- 模4补码,双符号位的补码小数,00表示正,11表示负,用在ALU中
- 反码
- 反码小数: − ( 1 − 2 − n ) ∼ 1 − 2 − n -(1-2^{-n})\sim 1-2^{-n} −(1−2−n)∼1−2−n
- 反码整数: − ( 2 n − 1 ) ∼ 2 n − 1 -(2^n-1)\sim 2^n-1 −(2n−1)∼2n−1
- 移码:常用来表示浮点数的阶码,只能表示整数
- 移码就是在真值 X X X上加上一个常数(偏置值),通常取 2 n 2^n 2n
- 移码中零的表示唯一
- 一个真值的移码和补码仅差一个符号位, [ x ] 补 符 号 位 取 反 得 [ x ] 移 [x]_{补}符号位取反得[x]_{移} [x]补符号位取反得[x]移
- 移码全0时,对应真值得最小值 − 2 n -2^n −2n;移码全1时,对应真值最大值 2 n − 1 2^n-1 2n−1
- 移码保持了数据原有得大小顺序
- 算术移位
码制 | 填补代码 | |
---|---|---|
正数 | 原码、补码、反码 | 0 |
负数 | 原码 | 0 |
负数 | 补码 | 左移添0,右移添1 |
负数 | 反码 | 1 |
- 逻辑移位
- 逻辑左移,高位移丢,低位添0
- 逻辑右移,低位移丢,高位添0
- 循环移位:循环移位为带进位标志位
C
F
CF
CF得循环移位(大循环)和不带进位标志位得(小循环)
- 移出的数位又被移入数据中,是否带进位看进位标志位加入循环位移。
- 特别适合低字节数据和高字节数据呼唤
- 符号拓展:
- 正数均用0进行拓展
- 负数原码均用0
- 负数补码符号位移到新符号位,整数补1,小数补0
- 负数反码符号位移到新符号位,全部补1
- 溢出的判别
- 一位符号位
- 双符号位:01正溢出;10负溢出
- 符号位进位与最高位进位相同,未溢出,不同则溢出
- 数据的存储和排列
- 最低有效字节( L S B LSB LSB)和最高有效字节 M S B MSB MSB来表示数的低位和高位
- 大端方式按从最高有效字节到最低有效字节的顺序存储
- 小端方式按从最低有效字节到最高有效字节的顺序存储
- 边界对齐方式存储
- 可按字节、半字、和字寻相互。
- 以边界对齐方式存放,半字地址一定是2的整数倍,字地址一定是4的整数倍。这样均可一次访存取出。
- 数据不按边界对齐方式存储时,可以充分利用存储空前。单半字长或字长的指令可能会存储在两个存储字中,需要两次访存。
- 空间换时间
错题精选
- 关于模4补码,说法正确的是每个模4补码存储时只需一个符号位
浮点数的表示与运算
- 浮点数的表示格式 N = r Σ × M N=r^{\Sigma}\times M N=rΣ×M
- 阶码是整数,阶符和阶码的位数共同反应浮点数的表示范围及小数点的实际位置
规格化浮点数
-
规定尾数的最高位必须是一个有效值。通过调整一个非规格化浮点数的尾数和阶码的大小,使非零的浮点数在位数的最高位上保证是一个有效值
-
左规:尾数算术左移一位,阶码减1。左归可能要进行多次
-
右规:位数算术右移一位,阶码加1.右规只需进行一次
-
原码规格化后
- 正数尾数的范围 1 / 2 ∼ 1 − 2 − n 1/2\sim 1-2^{-n} 1/2∼1−2−n
- 负数尾数的范围 − ( 1 − 2 − n ∼ − 1 / 2 ) -(1-2^{-n}\sim -1/2) −(1−2−n∼−1/2)
-
补码规格化
- 整数尾数的范围 1 / 2 ∼ 1 − 2 − n 1/2\sim 1-2^{-n} 1/2∼1−2−n
- 负数尾数的范围 − 1 ∼ − ( 1 / 2 + 2 − n ) -1\sim -(1/2+2^{-n}) −1∼−(1/2+2−n)
-
原码规格化数的尾数最高位一定是1,补码规格化数最高位一定与尾数符号位相反
I E E E 754 IEEE\ 754 IEEE 754标准
- 尾数采取隐藏位策略的原码表示,且阶码用移码表示的浮点数
- 规格化短浮点数的真值 ( − 1 ) S × 1. M × 2 E − 127 (-1)^S\times 1.M\times 2^{E-127} (−1)S×1.M×2E−127
- 规格化长浮点数的真值 ( − 1 S ) × 1. M × 2 E − 1023 (-1^S)\times 1.M\times2^{E-1023} (−1S)×1.M×2E−1023
格式 | 最小值 | 最大值 |
---|---|---|
单精度 | E = 1 , M = 0 ∼ 1.0 × 2 1 − 127 = 2 − 126 E=1,M=0\sim 1.0\times2^{1-127}=2^{-126} E=1,M=0∼1.0×21−127=2−126 | E = 254 , M = . 111 ⋯ , 1.111 ⋯ × 2 254 − 127 = 2 127 × ( 2 − 2 − 23 ) E=254,M=.111\cdots,1.111\dots\times2^{254-127}=2^{127}\times(2-2^{-23}) E=254,M=.111⋯,1.111⋯×2254−127=2127×(2−2−23) |
双精度 | E = 1 , M = 0 ∼ 1.0 × 2 1 − 1023 = 2 − 1022 E=1,M=0\sim1.0\times2^{1-1023}=2^{-1022} E=1,M=0∼1.0×21−1023=2−1022 | E = 254 , M = . 111 ⋯ , 1.111 ⋯ × 2 2046 − 1023 = 2 1023 × ( 2 − 2 − 52 ) E=254,M=.111\cdots,1.111\dots\times2^{2046-1023}=2^{1023}\times(2-2^{-52}) E=254,M=.111⋯,1.111⋯×22046−1023=21023×(2−2−52) |
- 定点、浮点区别
- 字长相同,浮点数值范围远大于定点表示范围
- 浮点数虽扩大范围,但精度降低
- 浮点运算,不仅要做尾数,还要做阶码的运算,运算复杂
- 规格化后阶码超出所能表示的范围时,才发生溢出
浮点数的加减运算
- 对阶:使两个操作数的小数点位置对齐,阶码小的尾数右移
- 尾数求和:尾数进行加减运算
- 规格化:满足规格化浮点数即可
- 舍入:对阶和右规可能会丢失,“0舍1入”或“恒置1法”
- 溢出判断:由阶码的符号决定
算术逻辑单元 A L U ALU ALU
- 加法器的相关介绍
本章小结
在计算机中,为什么要采用二进制来表示数据?
- 从可行性来说,采用二进制,只有0和1两个状态,能够表示0、1两种状态的电子器件很多,电子器件具有实现的可行性
- 从运算的简易性来说,二进制数的运算法则少,运算简单。硬件结构大大简化
- 从逻辑上来说,由于二进制的0和1正好对应逻辑代数的真和假,有逻辑代数的理论基础,二进制表示二值逻辑很自然
计算机在字长足够的情况下能够精确地表示每个数吗?
- 计算机采用二进制来表示数据,在字长足够时,可表示任何一个整数。而二进制表示小数,即使字长很长,也不可能精确表示所有小数,只能无限逼近,如0.1
字长相同的情况下,浮点数和定点数的表示范围和精度区别?
- 字长相同时,浮点数取字长的一部分作为阶码,所以表示范围比定点数大,而取一部分作为阶码也就代表着尾数部位的有效位数减少,精度有所下降
用移码表示浮点数阶码的好处?
- 浮点数进行加减运算时,时常要比较阶码的大小,相对于原码和补码,移码比较大小方便
- 检验移码的特殊值比较容易。阶码以移码编码时的特殊值如下:0:表示指数位负无穷大,而相当于分数分布无穷大,整个数无穷接近于0,尾数也为0时表示0,尾数不为0表示未正规化的数。MAX:表示指数正无穷大,若尾数为0,则表示浮点数超出范围;尾数不为0,则表示浮点数运算错误。
常见问题和易混淆知识点
如何表示一个数值数据?计算机中数值数据都是二进制数吗?
- 直接用二进制表示,无符号数,有符号数,有符号数又分为定点数和浮点数
- 二进制编码的十进制数,一般采用8421码来表示,用来表示整数
- 虽然都采用二进制来编码表示,但不全是二进制,也有用十进制数表示的
如何判断一个浮点数是否时规格化数?
- 规格化浮点数的尾数小数点后的第一位一定是个非零数。因此,对于原码编码的尾数来说,只要看尾数的第一位是否为1就行;对于补码表示的尾数,只要看符号位和位数最高位是否相反。
- I E E E IEEE IEEE标准的浮点数尾数是用原码编码的
浮点数如何进行舍入?
-
I
E
E
E
IEEE
IEEE有4中舍入方式
- 就近舍入:舍入为最近可表示的数
- 正向舍入:朝 + ∞ +\infty +∞方向舍入,取右边的数
- 负向舍入:朝 − ∞ -\infty −∞方向舍入,取左边的数
- 截去:朝0方向舍入,即绝对值较小的那个数
三、存储系统
存储器概述
存储器的分类
- 按层次分类
- 主存储器:
- 功能:主存,用来存放计算机运行期间所需的大量程序和数据,CPU可直接随机的进行访问,也可能和高速缓冲存储器及辅助存储器交换数据。
- 特点:容量较小,存储速度较快,每位价格较高
- 辅助存储器
- 功能:存放当前暂时不用的程序和数据,以及一些需要永久性保存的信息,不能与CPU直接交换信息
- 特点:容量极大,存取速度慢,单位成本低
- 高速缓冲存储器
C
a
c
h
e
Cache
Cache
- 功能:介于CPU和主存之间,用来存放正在执行的程序段和数据,以便CPU能高速使用
- 特点:存储容量小、价格高
- 主存储器:
- 按存储介质分类
- 磁表面存储器:磁盘、磁带
- 磁芯存储器半导体存储器:MOS型存储器、双极型存储器
- 光存储器:光盘
- 按存取方式分类
- 随机存储器
- 任何一个存储单元的内容都可以随机存取,且存取时间与存取单元物理位置无关
- 读写方便、使用灵活,主要用作 C a c h e Cache Cache
- 只读存储器
- 存储器的内容只能随机读出而不饿能写入。信息一旦写入就不会改变
- 与随机存储器可共同作为主存的一部分,统一构成主存的地址域
- 串行访问存储器
- 对存储单元进行读、写操作,需要按其物理位置的先后顺序寻址,包括顺序存取存储器(磁带)与直接存取存储器(磁盘)
- 随机存储器
- 按信息的保存性分类
- 易失性存储器
- 非易失性存储器
存储器的性能指标
- 存储容量
- 存储容量=存储字数 × \times ×字长,存储字数表示存储器的地址空间大小,字长表示一次存取操作的数据量
- 单位成本
- 每位价格=总成本/总容量
- 存储速度:数据传输率=数据的宽度/存储周期
- 存取时间( T a T_a Ta):存取时间指从启动一次存储器操作到完成该操作所经历的时间
- 存取周期( T m T_m Tm):存储器进行一次完整的读写操作所需的全部时间
- 主存带宽( B m B_m Bm):每秒从主存进出信息的最大量,字/秒
- 存 取 周 期 = 存 取 时 间 + 恢 复 时 间 存取周期=存取时间+恢复时间 存取周期=存取时间+恢复时间,恢复内部状态的复原时间
习题精选
- 磁盘属于直接存取存储器类型的存储器
- 该机器字长为32位,一个容量为16 M B MB MB的存储器, C P U CPU CPU按半字寻址,其可寻址的单元数是 2 20 × 2 4 B / 2 B = 2 2 3 ( 32 位 , 半 字 寻 址 16 位 = 2 B ) 2^{20}\times 2^4 B/2 B = 2^23(32位,半字寻址 16位=2B) 220×24B/2B=223(32位,半字寻址16位=2B)
存储器的层次化结构
-
存储系统层次结构主要体现在** C a c h e Cache Cache-主存层次和主存-辅存**层次。
-
前者主要解决CPU和主存速度不匹配的问题
-
后者主要解决存储系统的容量问题
-
C a c h e Cache Cache和主存都能与 C P U CPU CPU直接交换信息,辅存通过主存与 C P U CPU CPU交换信息,主存与 C P U CPU CPU、 C a c h e Cache Cache和辅存都能交换信息
-
主存和 C a c h e Cache Cache之间的数据调动由硬件自动完成,对所有程序员是透明的
-
主存和辅存之间的数据调动由硬件和操作系统共同完成,对应用程序员是透明的
-
习题精选
- 下列关于多级存储器系统的说法中,正确的有(
A
A
A)
- 多级存储系统是为了降低存储成本
- 虚拟存储器中主存和辅存之间的数据调动对任何程序员都是透明的
- C P U CPU CPU只能与 C a c h e Cache Cache直接交换信息, C P U CPU CPU与主存交换信息也需要经过 C a h c e Cahce Cahce
半导体随机存储器
- 主存储器由 D R A M DRAM DRAM实现,靠处理器的那一层( C a c h e Cache Cache)由 S R A M SRAM SRAM实现,它们都属于易失性存储器,断电即丢失。
S R A M SRAM SRAM和 D R A M DRAM DRAM
- 存放一个二进制位的元器件为存储元,是存储器的最基本的构建。多个存储元构成存储单元。若干存储单元的集合构成存储体
- 静态随机存储器 ( S R A M ) (SRAM) (SRAM)存储元是用双稳态触发器来记忆信息的,即使信息被读出后,它仍保持其原状态而不需要再生
- 动态随机存储器
(
D
R
A
M
)
(DRAM)
(DRAM)是利用存储元电路中栅极电容上的电荷来存储器的,
D
R
A
M
DRAM
DRAM的基本存储元通常只使用一个晶体管
-
D
R
A
M
DRAM
DRAM需要刷新
- 集中刷新:停止存储器的读写操作,称为“死时间”
- 分散刷新:增加了系统的存取周期,没死区
- 异步刷新:两种方法的结合
- 刷新对 C P U CPU CPU是透明的,不依赖于外部的访问
- 动态 R A M RAM RAM的刷新单位是行,因此刷新操作仅需要行地址
- 刷新操作类似于读操作,给栅极电容补充电荷,不需要信息输出
-
D
R
A
M
DRAM
DRAM需要刷新
只读存储器
-
R
O
M
ROM
ROM的显著优点
- 结构简单,所以位密度比可读写存储器的高
- 具有非易失性,所以可靠性高
-
R
O
M
ROM
ROM的类型
- M R O M MROM MROM,不可改
- P R O M PROM PROM,一次性可编程
- E P R O M EPROM EPROM,可多次改写
- F l a s h M e m o r y Flash Memory FlashMemory,再 E P R O M EPROM EPROM的基础上
- S S D SSD SSD:基于闪存的固态硬盘是用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元组成。
习题精选
- 某一 S R A M SRAM SRAM芯片,其容量为 1024 × 8 1024\times 8 1024×8位,除电源和接地端外,该芯片的引脚的最小数目为10根地址线、8根数据线、片选线和读/写控制线,21根
- 某容量为
256
M
B
256MB
256MB的存储器由若干
4
M
×
8
4M\times 8
4M×8位的
D
R
A
M
DRAM
DRAM芯片组成,该
D
R
A
M
DRAM
DRAM芯片的地址引脚和数据引脚总数是19根
- 地址线22根,但由于地址复用,只需11根,11+8=19根
- 下列关于闪存的叙述中,错误的是信息可读可写,并且读、写速度一样块
主存储器与 C P U CPU CPU的连接
- 主存储器通过数据总线、地址总线和控制总线与 C P U CPU CPU连接
- 数据总线的位数与工作频率的乘积正比于数据传输率
- 地址总线的位数决定了可寻址的最大内存空间
- 控制总线指出总线周期的类型和本次输入/输出操作完成的时刻
主存容量的扩展
- 位扩展法、字扩展法、字位同时扩展法
存储芯片的地址分配和片选
- 线选法:用除片内寻址外的高位地址线直接分别接至各个存储芯片的片选端。
- 不需要地址译码器,线路简单
- 地址空间不连续,选片的地址线必须分时为低电平
- 译码片选法
存储器与 C P U CPU CPU的连接
- 合理选择存储芯片
- R O M ROM ROM存放系统程序、标准子程序和各类常数
- R A M RAM RAM则是为用户编程而设置的
- 地址线的选法
- C P U CPU CPU低位与存储芯片地址线相连,以选择芯片中的某一单元。地址线的高位在扩展存储芯片时使用,
- 数据线的连接
- C P U CPU CPU的数据线数与存储芯片的数据线数不一定相等,相等可直连,不等存储芯片扩展
- 读/写命令线的连接
- C P U CPU CPU读/写命令线一般可直接与存储芯片的读/写控制端相连。高电平读,低电平写
- 片选线的连接
- 片选线的连接是 C P U CPU CPU与存储芯片连接的关键。
习题精选
- 假定用若干
2
K
×
4
2K\times 4
2K×4位的芯片组成一个
8
K
×
8
8K\times8
8K×8位的存储器,则地址
0
B
1
F
H
0B1FH
0B1FH所在芯片的最小地址是(0800H)
- 每行2个芯片并联,共4行,000007FF,08000FFF,1000H~17FFH
- 若某存储器容量为64
K
B
KB
KB,按字节编址,地址
4000
H
∼
5
F
F
F
H
4000H\sim5FFFH
4000H∼5FFFH为
R
O
M
ROM
ROM区,其余为
R
A
M
RAM
RAM区,若采用
8
K
×
4
8K\times 4
8K×4的
S
R
A
M
SRAM
SRAM芯片将进行设计,这需要该芯片的数量为14
- 5 F F F − 4000 + 1 = 2000 H 5FFF-4000+1=2000H 5FFF−4000+1=2000H, R O M ROM ROM容量为 2 13 B = 8 K B 2^{13}B=8KB 213B=8KB, 56 K B / 8 K × 4 位 = 14 56KB/8K\times 4位=14 56KB/8K×4位=14
双端口 R A M RAM RAM和多模块存储器
双端口 R A M RAM RAM
- 左、右两个独立的端口,分别具有两组相互独立的地址线、数据线、读写控制线,允许两个独立的控制器同时异步地访问存储单元。
- 设置“忙”信号,不可同时写,不可一个写入一个读取
多模块存储器
- 单体多字存储器:存储器中只有一个存储体,每个存储单元存储
m
m
m个字,总线宽度也为
m
m
m个字,地址必须顺序排列处于同一存储单元
- 单体多字存储器在一个周期内,从同一地址取 m m m条指令,然后逐条送至 C P U CPU CPU,即每隔 1 / m 1/m 1/m存取周期, C P U CPU CPU向主存取一条指令
- 缺点:指令和数据在主存内必须连续存放
- 多体并行存储器:由多个模块组成,每个模块都有相同地容量和存取速度,各模块都有独立地控制电路、地址寄存器和数据寄存器,既能并行工作,又能交叉工作
- 高位交叉编址
- 低位的体内地址送到高位体号确定的模块译码。访问一个连续主存块,总是现在一个模块内访问,等访问完才转到下一个模块访问
- 低位交叉编址
- 模 块 号 = 单 元 地 址 % m 模块号=单元地址\%m 模块号=单元地址%m
- 低位交叉编址下,总是把高位的体内地址送到低位体号确定的模块进行译码
- 高位交叉编址
- 设模块字长等于数据总线宽度,模块存取一个字的存取周期 T T T,总线传送周期 r r r,为实现流水线方式存取,存储器交叉模块数应大于等于 m = T r m=\frac{T}{r} m=rT。连续存取 m m m个字所需时间为 t 1 = T + ( m − 1 ) r t_1=T+(m-1)r t1=T+(m−1)r,而顺序方式 t 1 = m T t_1=mT t1=mT,可见低位交叉存储器带宽大大提高
高速缓冲存储器
程序访问的局部性原理
- 时间局部性:在最近的未来要用到的信息,很可能是现在正在使用的信息,因为程序中存在循环。
- 空间局部性:在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间是邻近的。
- 高速缓冲技术就是利用程序访问的局部性原理。
C a c h e Cache Cache的基本工作原理
- C a c h e Cache Cache位于存储器层次结构的顶层,通常由 S R A M SRAM SRAM构成。
- C a c h e Cache Cache块又称 C a c h e Cache Cache行,每块由若干字节组成,块的长度称为块长( C a h c e Cahce Cahce行长)。 C a c h e Cache Cache中的块数要远少于主存中的块数,它仅保存主存中最活跃的若干块的副本。
- 当 C P U CPU CPU发出读请求时,若访存地址在 C a c h e Cache Cache中命中,就将此地址转换成 C a c h e Cache Cache地址,直接对 C a c h e Cache Cache进行读操作,与主存无关;若 C a c h e Cache Cache不命中,则仍需访问主存,并把此字所在的块一次性地从主存调入 C a c h e Cache Cache。若 C a c h e Cache Cache已满,则需依据某种替换算法,用这个替换 C a c h e Cache Cache中原来的某块信息。 C P U CPU CPU和 C a c h e Cache Cache中数据交换以字为单位,而 C a c h e Cache Cache与主存之间数据交换以== C a c h e Cache Cache块==为单位。
- C a c h e Cache Cache命中率 H = N c N c + N m H=\frac{N_c}{N_c+N_m} H=Nc+NmNc
- C a c h e − 主 存 Cache-主存 Cache−主存系统平均访问时间 T a = H t c + ( 1 − H ) t m T_a=Ht_c+(1-H)t_m Ta=Htc+(1−H)tm
C a c h e Cache Cache和主存的映射方式
- C a c h e Cache Cache行中的信息是主存中的某个块的副本,地址映射是把主存地址空间映射到 C a c h e Cache Cache地址空间。 C a c h e Cache Cache为每块加一个标记,指明它是哪一块的副本。该标记内容相当于主存中块的编号。还需要一个有效位,说明信息是否有效。
- 直接映射:主存中的每一块只能装入
C
a
c
h
e
Cache
Cache中的唯一位置。
- j = i m o d 2 c j = i\ mod \ 2^c j=i mod 2c, j j j是 C a c h e Cache Cache块行号, i i i是主存的块号
- 标记 Cache行号 块内地址
- 主存块号的低 c c c位是要装入的 C a c h e Cache Cache行号。给每个 C a c h e Cache Cache行设置一个长为 t = m − c t=m-c t=m−c的标记,当主存某块调入 C a c h e Cache Cache中,将其块号的高 t t t位设置在对应的 C a c h e Cache Cache行标记中。
- 根据中间的行号找到对应 C a c h e Cache Cache行,对应标记和主存地址高 t t t位比较,若相等且有效位为1,则根据块内地址,存取信息。
- 全相联映射:主存中每一块可装入
C
a
c
h
e
Cache
Cache中任何位置,每行标记用于指出该行取自主存哪一块
- 标记 快内地址
- 命中率高,空间利用率高,标记速度慢,实现成本高
- 组相联映射:将
C
a
c
h
e
Cache
Cache分成大小相同的组,组间直接映射,组内全相联映射
- j = i m o d Q j= i \ mod \ Q j=i mod Q, j j j是 C a c h e Cache Cache行的组号, i i i是主存块号, Q Q Q是 C a c h e Cache Cache的组数
- 标记 Cache组号 快内地址
- 根据组号,找道对应组,对应族中每个行的标记与主存地址高位标记进行比较。若相等,有效位为1,则访问 C a c h e Cache Cache命中。
C a c h e Cache Cache中主存块的替换算法
- 先进先出算法
- 近期最少使用算法
- 随机算法
C a c h e Cache Cache写策略
- 全写法
- 命中时,把数据同时写入 C a c h e Cache Cache和主存。当某一块需要替换时,不必把这一块写回主存,用新调入的块直接覆盖即可。正确性保证,但增加了访存次数,降低效率
- 写回法:
- 命中时,只修改 C a c h e Cache Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。减少访问次数,但存在隐患。需设置标志位(脏位),判断是否修改过
- 写不命中
- 写分配法:加载主存中的块到 C a c h e Cache Cache中,然后更新这个 C a c h e Cache Cache块
- 非写分配法:只写入主存,不进行调块
- 非写分配法通常和全写法合用,写分配法和写回法何用
虚拟存储器
- 虚拟存储器将主存或辅存的地址空间统一编址,形成一个庞大的地址空间。
- C P U CPU CPU使用虚地址时,由辅助硬件找出虚地址和是实地址之间的对应关系,判断是否装入主存。若已在主存,地址变换,访问主存。不在主存中,则把包含这个字的一页或一段调入主存后,再由 C P U CPU CPU访问。若主存已满,则采用替换算法置换主存中的一页或一段
页式虚拟存储器
- 主存的页称为实页,虚存的页称为虚页。虚拟地址分为两个字段:虚页号和页内地址。虚拟地址到物理地址的转换由页表实现。页表是一张存放在主存中的虚页号和实页号的对照表。
- 有效位,表示页是否再主存,若为1,则表示虚拟页已从外存调入内u才能,此时页表项存放该页的物理页号;若为0,则表示没有调入主存,此时页表项可以存放该页的磁盘地址。
- 脏位,表示页面是否被修改过,虚存机制采用回写策略,利用脏位判断替换是否需要写回磁盘
- 引用位,用来配合替换策略进行设置
- 每个进程都有一个页表基址寄存器,存放该进程的页表首地址,根据虚拟地址高位部分和虚拟页号找到对应的页表项,若为1,取出物理页号和虚拟地址低位部分页内地址拼接,形成实际物理地址。
加快地址转换:快表( T L B TLB TLB)
- 快表通常采用全相联或组相联方式。每个 T L B TLB TLB项由页表表项内容加上一个 T L B TLB TLB标记字段组成, T L B TLB TLB标记用来表示该表项取自页表中的哪个虚页号的页表项。
段式虚拟存储器
-
各个段的长度因程序而异,把虚拟地址分为两部分:段号和段内地址。虚拟地址到实地址之间的变换是由段表来实现的。
-
根据段号与段表基地址拼接成对应的段表行,根据该段表行的装入为判断是否已调入主存。已调入时,从段表中读出段首址与段内地址相加,得到对应的主存实地址。
段页式虚拟存储器
- 段号 段内页号 页内地址
虚拟存储器和 C a c h e Cache Cache比较
- 相同之处
- 提高系统性能,都由容量、速度、价格的梯度
- 都把数据划分为小信息块,并作为基本传递单位,虚存系统的信息块更大
- 都有地址的映射、替换的算法、更新策略等问题
- 依据程序的局部性原理
- 不同之处
- C a c h e Cache Cache主要解决系统速度,而虚拟存储器却是为了解决主存容量
- C a c h e Cache Cache全由硬件实现,是硬件存储器,对所有程序员透明;而虚拟存储器由 O S OS OS和硬件共同实现,是逻辑上的存储器,对系统程序员不透明,对应用程序员透明
- 对于不命中性能影响,因为 C P U CPU CPU的速度约为 C a c h e Cache Cache的10倍,主存的速度为硬盘的100倍以上,因此虚拟存储器系统不命中时对系统性能影响更大
- C P U CPU CPU与 C a c h e Cache Cache和主存都建立了直接访问的通路,而辅存与 C P U CPU CPU没有直接通路。
本章小结
存储器的层次结构主要体现在何处?为何要分这些层次?计算机如何管理?
- C a c h e − 主 存 Cache-主存 Cache−主存和主存-辅存这两个存储层次
- 对 C P U CPU CPU访问起加速作用,扩容作用
- 主存与 C a c h e Cache Cache全部由硬件自动完成,而主存与辅存层次的调度硬件和操作系统共同完成
存取周期和存取时间有何区别?
- 存取时间仅为完成一次操作的时间;而存取周期不仅包含操作时间,而且包含操作后线路的恢复时间, 存 取 周 期 = 存 取 时 间 + 恢 复 时 间 存取周期=存取时间+恢复时间 存取周期=存取时间+恢复时间
在虚拟存储器中,页面是设置得大一些好还是设置得小一些好?
- 页面不能设置得过大,也不能设置得过小。
- 页面太小,平均页内剩余空间较少,可节省存储空间,但使页表增大,页面太小不能充分利用访存的空间局部性来提高命中率
- 页面太大时,可减少页表空间,但平均页内剩余空间较大,浪费存储空间,且调入/调出时间长
常见问题和易混淆知识点
存取时间 T a T_a Ta就是存储周期 T m T_m Tm吗?
- 不是。存取时间是执行一次读操作或写操作的时间,分为读出时间和写入时间。读出时间是从主存接收到有效地址开始到数据稳定为止的时间;写入时间是从主存接收到有效地址开始到数据写入被写单元为止的时间
- 存储周期是指存储器进行连续两次的独立或读或写操作所需的最小时间间隔。所以存取时间不等于存储周期
C a c h e Cache Cache行的大小和命中率有什么关系
- 行的长度较大,可以充分利用程序访问的空间局部性,是一个较大的局部空间被一起调到
C
a
c
h
e
Cache
Cache中,增加命中机会,但也不能太长
- 行长太大使失效损失变大。
- 行长太大, C a c h e Cache Cache项数变少,因而命中的可能性变小
发生指令 C a c h e Cache Cache缺失的处理过程是什么?
- 程序计数器恢复当前指令的值
- 对主存进行读的操作
- 将读入的指令写入 C a c h e Cache Cache中,更改有效位和标记位
- 重新执行当前指令
四、指令系统
指令格式
指令的基本格式
- 操作码+地址码
- 零地址指令:只给出操作
O
P
OP
OP,没有显示地址
- 不需要操作数的指令,空操作指令、停机指令、关中断指令
- 零地址的运算类指令仅用在堆栈计算机中。隐含从栈顶弹出运算后压栈
- 一地址指令
- 只有目的操作数的单操作数指令, O P ( A 1 ) → A 1 OP(A_1)\rightarrow A_1 OP(A1)→A1
- 隐含约定目的地址的双操作数指令,隐含约定零一操作数由 A C C ACC ACC提供,结果进入 A C C ACC ACC
- 二地址指令
- ( A 1 ) O P ( A 2 ) → A 1 (A_1)OP(A_2)\rightarrow A_1 (A1)OP(A2)→A1
- 三地址指令
- ( A 1 ) O P ( A 2 ) → A 3 (A_1)OP(A_2)\rightarrow A_3 (A1)OP(A2)→A3
- 四地址指令
- ( A 1 ) O P ( A 2 ) → A 3 , A 4 = 下 一 条 将 要 执 行 指 令 的 地 址 (A_1)OP(A_2)\rightarrow A_3,A_4=下一条将要执行指令的地址 (A1)OP(A2)→A3,A4=下一条将要执行指令的地址
定长操作码的指令格式
- 定长操作码指令在指令字的最高位部分分配固定的若干位表示操作码。
扩展操作码的指令格式
- 指令的操作码字段的位数不固定,且分散的放在指令字的不同位置上。
- 不允许短码是长码的前缀
- 各指令的操作码一定不能重复
错题精选
- 以下有关指令系统说法中,错误的是指令系统和机器语言是无关的
指令的寻址方式
- 寻址方式是指寻找指令或操作数有效地址的方式。指令中地址码字段并不代表真实地址,称为形式地址( A A A),形式地址结合寻址方式,形成真实地址,称为有效地址( E A EA EA)
指令寻址和数据寻址
- 指令寻址
- 计数器( P C PC PC)加1
- 跳跃寻址通过转移类指令实现
- 数据寻址
- 如何在指令中表示一个操作数的地址。
常见的数据寻址方式
- 隐含寻址
- 规定累加器 ( A C C ) (ACC) (ACC)作为第二操作数地址
- 利于缩短指令字长,增加存储操作数或隐含地址的硬件
- 立即数寻址
- A A A就是操作数本身
- 直接寻址
- E A = A EA = A EA=A
- 间接寻址
- E A = ( A ) EA=(A) EA=(A)
- 寄存器寻址
- E A = R i EA=R_i EA=Ri
- 不访问主存,只访问寄存器,速度快,价格昂贵
- 寄存器间接寻址
- E A = ( R i ) EA=(R_i) EA=(Ri)
- 相对寻址
- E A = ( P C ) + A EA=(PC)+A EA=(PC)+A
- 基址寻址:(
B
R
BR
BR)为基址寄存器
- E A = ( B R ) + A EA=(BR)+A EA=(BR)+A
- 变址寻址:(
I
X
IX
IX)为变址寄存器
- E A = ( I X ) + A EA=(IX)+A EA=(IX)+A
- 面向用户的,程序执行过程中,变址寄存器内容可由用户改变
- 可扩大寻址范围
- 堆栈寻址
- 堆栈是存储器中一块特定的、按后进先出原则管理的存储区。该存储区中读写单元的地址由一个特定的寄存器给出,堆栈指针( S P SP SP)
错题精选
- 为了缩短指令中某个地址段的位数,有效的方法是采取寄存器寻址
- 在多道程序设计中,最重要的寻址方式是相对寻址
C I S C CISC CISC和 R I S C RISC RISC的基本概念
复杂指令系统计算机( C I S C CISC CISC)
- 指令系统复杂庞大
- 指令长度不固定,指令格式多,寻址方式多
- 访存的指令不受限制
- 各种指令使用频度相差很大
- 执行时间相差很大
- 大多采用微程序控制
精简指令系统计算( R I S C RISC RISC)
- 频率最高的简单指令
- 指令长度固定,格式种类少
- 只有 L o a d / S t o r e Load/Store Load/Store指令访存,其余指令都在寄存器之间进行
- C P U CPU CPU中通用寄存器数量相当多
- R I S C RISC RISC一定采用指令流水线技术,大部分指令一个时钟周期内完成
- 以硬布线控制为主,不用或少用微程序控制
常见问题和易混淆知识点
装入/存储指令有什么特点?
- 装入/存储型指令使用在规整型指令系统中的一种通用寄存器型指令风格。为了规整指令格式,使指令具有相同的长度,规定只有 L o a d / S t o r e Load/Store Load/Store指令才能访问内存。而运算指令不能直接访问内存,只能从寄存器取数进行运算,运算的结果也只能送到寄存器。因为寄存器编号较短,而主存地址位数较长,通过某种方式可使运算指令和访存指令的长度一致
五、中央处理器
C P U CPU CPU的功能和基本结构
CPU的功能
- 控制器:负责协调并控制计算机各部件执行程序的指令序列
- 运算器:对数据进行加工
- 指令控制
- 操作控制
- 时间控制
- 数据加工
- 中断处理
CPU的基本结构
- 运算器
- 算术逻辑单元(ALU)
- 暂存寄存器
- 累加寄存器
- 通用寄存器组
- 程序状态字寄存器(PSW)
- 移位器
- 计数器
- 控制器
- 程序计数器
- 指令寄存器
- 指令译码器
- 存储器地址寄存器
- 存储器数据寄存器
- 失序系统
- 微操作信号发生器
- 用户可见寄存器:通用寄存器组,程序状态字寄存器
- 用户不可见寄存器:存储器地址寄存器、存储器数据寄存器、指令寄存器
错题精选
- 程序计数器的位数取决于存储器的容量
- 指令寄存器的位数取决于指令字长
- C P U CPU CPU中通用寄存器的位数取决于机器字长
- C P U CPU CPU中的通用寄存器,可以存放数据和地址。
指令执行过程
指令周期
- C P U CPU CPU从主存中取出并执行一条指令的时间称为指令周期,不同指令的指令周期可能不同。
- 指令周期常用若干机器周期来表示,一个机器周期又包含若干时钟周期
- 对于无条件转移指令,不需要访问主存,只包含取指阶段和执行阶段
- 对于间接寻址的指令,需要先访问一次主存,取出有效地址,然后访问主存,取出操作数,所以还包括间址周期,间址周期介于取值后期和执行周期之间
- 当 C P U CPU CPU采用中断方式实现主机和I/O设备的信息交换时,执行结束前要发中断查询信号,又称中断周期。
指令周期的数据流
- 数据流是根据指令要求依次访问的数据序列。在指令执行的不同阶段,要求依次访问的数据序列是不同的。
取指周期
间址周期
执行周期
- 无统一的数据流向
中断周期
指令执行方案
-
单指令周期
- 所有指令都选用相同的执行时间来完成,每条指令都在固定的时钟周期内完成。
-
多指令周期
- 不同类型的指令选用不同的执行步骤来完成,称为多指令周期方案。
-
流水线方案
- 指令之间可以并行执行的方案,称为流水线方案。追求目标是在每个时钟脉冲周期完成一条指令的执行过程。
数据通路的功能和基本结构
数据通路的功能
- 数据在功能部件之间传送的路径称为数据通路。
- 数据通路中专门进行数据运算的部件称为执行部件。数据通路由控制部件控制。
- 数据通路的功能是实现 C P U CPU CPU内部的运算器与寄存器及寄存器之间的数据交换
数据通路的基本结构
-
C
P
U
CPU
CPU内部单总线方式
- 所有寄存器的输入端和输出端都连接到一条公共通路上
-
C
P
U
CPU
CPU内部三总线方式
- 连接到多条公共通路上
- 专用数据通路方式
- 根据指令执行过程中的数据和地址的流动方向安排连接线路,避免使用共享的总线
- 注:内部总线是指同一部件,如 C P U CPU CPU内部连接个寄存器及运算部件之间的总i吸纳;系统总线是指同一台计算机系统的各部件,如 C P U CPU CPU、内存、通道和各类I/O接口互相连接的总线
控制器的功能和工作原理
控制器的结构和功能
-
-
控制器的主要功能
- 从主存中取出一条指令,并之处下一条指令在主存中的为止
- 对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作
- 指挥并控制 C P U CPU CPU、主存、输入和输出设备之间的数据流动方向
硬布线控制器(暂略)
- 基本原理是根据指令的要求、当前的时序及外部和内部的状态,按时间的顺序发送一些列微操作控制信号。
指令流水线
指令流水线的基本概念
- 一条指令的执行过程可分成多个阶段。根据计算机不同,分发不同
- 取指
- 分析
- 执行
- 顺序执行方式:一条指令执行完执行下一条 3 n t 3nt 3nt
- 一次重叠执行方式:同时执行和取指, ( 2 n + 1 ) t (2n+1)t (2n+1)t
- 二次重叠执行方式:紧挨着 ( 2 + n ) t (2+n)t (2+n)t
- 流水线的表示方法:时空图
- 流水线方式的特点
- 一个任务分解为几个有联系的任务,每个子任务由一个专门的功能部件来执行
- 流水线的每个功能段部件都要有一个缓冲寄存器,保留本流水段的执行结果,供给下一流水段
- 流水线中各功能的时间尽量相等,否则引起堵塞、断流
- 只有连续不断地提供同一种任务才能发挥流水线的效率,连续任务
- 流水线需要有装入和时间和排空时间。
- 装入时间:第一个任务进入流水线到输出流水线的时间
- 排空时间:最后一个任务进入流水线到输出流水线的时间
流水线的分类
部件功能级,处理机级和处理机间级流水线
- 部件功能级流水将复杂的算术逻辑运算组成流水线工作方式
- 处理机级流水把一条指令解释过程分成多个子过程
- 处理机间流水是一种宏流水,其中每个处理机完成专一专门任务,各个处理机得到的结果需存放在下一个与处理机共享的存储器中
单功能流水线和多功能流水线
- 单功能流水线是指只能实现一种固定的专门功能流水线
- 多功能流水线是指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线
动态流水线和静态流水线
- 静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作
- 动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行第一种运算。
线性流水线和非线性流水线
- 线性流水线,从输入到输出,每个功能段只允许经过一次,不存在反馈回路
- 非线性流水线存在反馈回路,从输入到输出的过程中,某些功能段将数次通过流水线。
影响流水线的因素
- 由于多条指令在同一时刻争用同一资源而形成的冲突
- 前一指令访存时,使后一条相关指令暂停一个时钟周期
- 单独设置数据存储器和指令存储器,两项操作在不同的存储器中进行
- 数据冲突(数据冒险)
- 把遇到数据相关的指令及其后续指令都暂停一至几个周期,直到数据相关问题消失后再进行,可分为硬件阻塞(Stall)和软件插入“NOP”指令两种方法
- 设置相关专用通路,即不等前一条指令把计算结果写回寄存器组,下一条指令也不读寄存器组,直接把前一条指令的ALU计算结果作为自己的输入
- 通过编译器对数据相关的指令编译优化的方法,调整指令顺序来解决数据相关
- 控制冲突(控制冒险)
- 对转移指令进行分支预测,尽早生成转移目标地址。分支预测分为简单的静态预测和动态预测。静态预测总是预测条件不满足,执行后续指令;动态预测根据程序执行的历史情况,进行动态预测调整
- 预取转移成功和转移不成功两个控制流方向上的目标指令
- 加快和提前形成条件吗
- 提高转移方向的猜准率
流水线的性能指标
- 流水线的吞吐率: T P = n T k TP=\frac{n}{T_k} TP=Tkn(n为任务数, T k T_k Tk为处理完n个任务所用时间)
- 流水线的加速比: S = T 0 T k S=\frac{T_0}{T_k} S=TkT0,( T 0 T_0 T0表示不使用流水线执行时间, T k T_k Tk标尺使用流水线执行时间)
- 流水线的效率: E = T 0 k T k E=\frac{T_0}{kT_k} E=kTkT0,(n个任务占用时空区有效面积/n个任务所用时间与k个流水段所围成的时空区总面积)
超标量流水线的基本概念
- 每个时钟周期内可并发多条独立指令,以并行操作方式将两条或多条指令编译并执行
- 不能调整指令的执行顺序,因此通过编译优化技术,把可并行执行的指令搭配起来
本章小结
什么是指令周期、机器周期和时钟周期?
- CPU每取出并执行一条指令所需的全部时间称为指令周期;
- 机器周期是在同步控制的机器中,执行指令周期中一步相对完整的操作所需的时间,通常机器周期长度=贮存周期;
- 时钟周期是指计算机主时钟的周期时间,是计算机运行最基本时序单位,对应完成一个微操作所需的时间,通常时钟周期=计算机主频的倒数
什么是指令流水线?指令流水线的的优势?加速比?
- 指令流水线是把指令分解为若干子过程,通过将每个子过程与其他子过程并行执行,来提高计算机的吞吐率技术。采用流水线技术只需要增加少量硬件就能把计算机的运算速度提高几倍。因此称为计算机中普遍使用的一种并行处理技术。
- 流水线的加速比是完成一批任务,不使用流水线所用时间与使用流水线所有时间之比。
常见问题和易混淆知识点
流水线越多,并行度就越高,是否流水段越多,指令执行越快?
- 流水线缓冲之间的额外开销增大。每个流水段有一些额外开销用于缓冲间传送数据、进行各种准备和发送等功能。
- 流水段间控制逻辑变多、变复杂。用于流水线优化和存储器冲突处理的控制逻辑将随流水段的增加而大增,这可能导致用于流水段之间控制的逻辑比段本身的控制逻辑更复杂。
有关指令相关、数据相关的几个概念
- 两条连续的指令读取相同的寄存器时,会产生读后读相关,不会影响流水线
- 某条指令要读取上一条指令所写入的寄存器时,会产生写后读相关,称数据相关,影响流水线
- 某条指令的上调指令要读/写该指令的输出寄存器时,会长生读后写和写后写相关。在非按序流动的流水线中,接可能发生RAW相关,有可能发生WAR相关和WAW相关。
六、总线
总线概述
总线的基本概念
- 总线是一组能为多个部件分时、共享的公共信息传送线路。
- 分时是指同一时刻只允许有一个部件项总线发送消息
- 共享是指总线上可以挂接多个部件,各个部件之间互相交换的信息都可以通过这组线路分时共享。
- 总线上所连接的设备
- 主设备:总线的主设备是指获得总线控制权的设备
- 从设备:总线的从设备是指被主设备访问的设备,它只能相应从主设备发来的总线命令。
- 总线特性
- 机械特性:尺寸、形状
- 电气特性:传输方向和有效的电平范围
- 功能特性:每个传输线的功能
- 时间特性:信号和时序的关系
- 总线的猝发传输方式
- 在一个总线周期内传输存储地址连续的多个数据字的总线传输方式
总线的分类
- 片内总线
- 片内总线是芯片内部的总线,它是 C P U CPU CPU芯片内部寄存器与寄存器之间、寄存器与 A L U ALU ALU之间的公共连接线
- 系统总线
- 系统总线是计算机系统内各功能部件之间相互连接的总i吸纳
- 数据总线用来传输各功能部件之间的数据信息,它是双向传输总线,其位数与机器字长、存储字长有关
- 地址总线用来指出数据总线上的源数据或目的数据所在的主存单元或I/O端口的地址,它是单向除数总线,地址总线的位数与主存地址空间的大小有关。
- 控制总线传输的是控制信息,包括 C P U CPU CPU送出的控制命令和主存返回 C P U CPU CPU的反馈信号。
- 系统总线是计算机系统内各功能部件之间相互连接的总i吸纳
- 通信总线
- 通信总线是在计算机系统之间或计算机系统与其他气筒之间传送信息的总线,通信总线也称外部总线。
系统总线的结构
- 单总线结构
- C P U CPU CPU、主存、I/O设备都挂在一组总线上,允许I/O设备之间、I/O设备与主存之间直接交换信息。 C P U CPU CPU与主存、 C P U CPU CPU与外设之间可直接进行信息交换,无须经过中间设备的干预。
- 结构简单,成本低,易于接入新的设备
- 带宽低、负载重,多个部件只能争用唯一的总线
- 双总线结构
- 一条主存总线,用于 C P U CPU CPU、主存和通道之间传送数据
- 另一条是I/O总线,用于外部设备与通道之间传送数据
- 将低俗I/O设备分离,实现存储器总线和I/O总线分离
- 需要增加通道硬件设备
- 三总线结构
- 主存总线:用于 C P U CPU CPU和内存之间传送信息
- I/O总线:用于 C P U CPU CPU和各类外设之间通信
- 直接内存访问(DMA)总线:用于内存和高速外设之间直接传送数据
- 提高了I/O设备的性能,使其更快的相应命令,提高系统吞吐量
- 系统工作效率低
总线的性能目标
- 总线的传输周期:一次总线操作所需的时间(申请、寻址、传输、结束),简称总线周期
- 总线时钟周期:机器的时钟周期
- 总线的工作频率:总线周期的倒数
- 总线的时钟频率:机器的时钟频率,时钟周期的倒数
- 总线宽度:总线位宽,同时能够传输的数据位数
- 总线带宽:总线的数据传输率(B/s),总线带宽=总线工作频率 × \times ×(总线宽度/8)
- 总线复用:指一种信号线在不同的事件传输不同的信息
- 信号线数:地址总线、数据总线和控制总线3中总线数的总合称为信号线数。
总线仲裁
以某种方式选择一个主设备优先获得总线控制权
集中仲裁方式
- 将所有的总线请求几种起来,利用一个特定的裁决算法进行裁决。
链式查询方式
- 总线上所有部件共有一根总线请求线,有部件请求使用,经此线发送请求信号到总线控制器。由总线控制器检查总线是否忙,若不忙,则立即发总线响应信号,经总线响应线 B G BG BG串行地从一个部件到下一个部件,依次查询。
- 优点:优先级固定,只需很少几根控制就能按一定优先次序实现总线控制,结构简单,扩充容易
- 缺点:对硬件电路的故障敏感,且优先级不能改变。
计数器定时查询方式
- 采用一个计数器控制总线使用权,相对链式多了一组设备地址线,少了一根总线相应线。当总线控制器收到总线请求信号并判断总线空闲时,计数器开始技术,计数值通过设备地址线发向各个部件。当地址线上的计数值与请求使用总线设备的地址一致时,该设备获得总线控制器,同时终止计数器的技术及查询。
- 优点:计数可从“0”开始,设备优先次序被固定,0,1,…,n的顺序降序排列,且固定不变;计数也可从上一次的终点开始,采用一种循环方法,优先级相等;计数器初值可由程序设置,优先次序可以改变
- 缺点:增加了控制线数,若设备有n个,则需要 l o g 2 n log_2n log2n取上整+2条控制线
独立请求方式
- 独立请求方式,每个设备均有一对总线请求线 B R i BR_i BRi和总线允许线 B G i BG_i BGi。当部件需要使用总线时,经各自总线请求发送信号,在总线控制器中排队,当总线控制器按一定优先次序决定批准某个部件请求时,发送响应信号,该部件获得使用权
- 优点:响应速度快,总线允许信号直接从控制器发送到相关设备,不必设备间传递查询
- 缺点:控制线数量多(2n+1)条控制线,总线控制逻辑更复杂
总结
分布仲裁方式
- 不需要中央仲裁器,每个潜在的主模块都有自己的仲裁号和仲裁器。有总线请求时,会把各自唯一仲裁号发送到共享的仲裁总线上,每个仲裁器将从仲裁总线上得到的仲裁号与自己仲裁号比较。若仲裁总线上的仲裁号优先级高,则它撤回自己仲裁号。
总线操作和定时
总线传输的4个阶段
- 申请分配阶段:申请总线
- 寻址阶段:取得使用权的主模块通过总线发出本次要访问的从模块的地址及有关命令
- 传输阶段:主模块和从模块进行数据交换
- 结束阶段:主模块的有关信息从系统总线上撤除,让出使用权
同步定时方式
- 系统采用一个统一的时钟信号来协调发送和接受双方的传送定时关系。在一个总线周期中,发送方和接收方可以进行一次数据传送。采用统一时钟,每个部件或设备发送或接受信息都在固定的传送周期中。
- 优点:传送速度快,具有较高传输速率;总线控制逻辑简单
- 缺点:主从设备属于强制性同步;不能及时进行数据通信的有效性检验
- 适用于总线长度短,总线所接部件存取时间比较接近
异步定时方式
- 没有统一时钟,没有固定的时间间隔,依靠握手信号来控制。
- 优点:总线周期长度可变,能保证两个工作速度相差很大的部件之间可靠进行信息交换
- 缺点:复杂一些,速度慢一些
总线标准
- ISA:最早
- EISA:配合32位
- VESA:局部总线
- PCI
- PCI-Express
- AGP
- RS-232C:串行通信总线
- USB:设备总线
- PCMCIA:笔记本电脑
- IDE
- SCSI
- SATA:串行硬件驱动器接口
本章小结
引入总线结构有什么好处?
- 简化了系统结构,便于系统设计制造
- 大大减少了连线数目,便于系统设计制造
- 便于接口设计,所有与总线连接的设备均采用类似的接口
- 便于系统的扩充、更新与灵活配置,易于实现系统的模块化
- 便于设备的软件设计,所有接口的软件对不同的接口地址进行操作
- 便于故障诊断和维修,同时也能降低成本
引入总线会导致什么问题?如何解决?
- 引入总线后,总线上的各个设备分时共享同一总线,当总线上多个设备同时要求使用总线时,会导致总线的冲突。为解决多个主设备同时竞争总线控制权的问题,应当采用总线仲裁部件,以某种方式选择一个主设备优先获得总线控制权。
常见问题和易混淆知识点
同一个总线不能即采用同步方式又采用异步方式通信吗?
- 半同步通信总线可以。这类总线既保留了同步通信的特点,又能采用异步应答方式连接速度相差较大的设备。通过在异步总线中引入时钟信号,其就绪和应答等信号都在时钟的上升沿或下降沿有效,而不受其他事件的信号干扰。
- 例如,某个采用半同步方式的总线总是从某个时钟开始,在每个时钟到来时,采用 W a i t Wait Wait信号,若无效,则说明数据未准备好,下个时钟到来时,再采样 W a i t Wait Wait信号,直到检测有效,再去数据线上取数据。
一个总线再某一时刻可以有多对主从设备进行通信吗?
- 不可以。在某个总线周期内,总线上只有一个主设备控制总线,选择一个从设备与之进行通信,火堆所有设备进行广播通信。所以一个总线在某一时刻不饿能有多对主从设备进行通信,否则会发生数据冲突。
七、输入/输出系统
I/O系统基本概念
输入/输出系统
- 输入/输出是以主机为中心而言的。
- 外部设备:包括输入/输出设备及通过输入/输出接口访问的外存储设备
- 接口:外设与主机之间传输数据时进行各种协调工作的逻辑部件。
- 输入设备
- 输出设备
- 外存设备:除内存外
- I/O软件:驱动程序、用户程序、管理程序、升级补丁等。采用I/O指令和通道指令实现 C P U CPU CPU与I/O设备的信息交换
- I/O硬件:包括外部设备、设备控制器和接口、I/O总线等。通过设备控制器来控制I/O设备的具体动作。I/O接口与主机相连
I/O控制方式
- 程序查询方式:由 C P U CPU CPU通过程序不断查询I/O设备是否已做好准备
- 程序中断方式:只在I/O设备主备就绪并向 C P U CPU CPU发出中断请求时才予以响应
- DMA方式:主存和I/O设备之间有一条直接数据通路,无需调用中断服务程序。
- 通道方式:在系统中设有通道控制部件,每个通道都挂接若干外设,主机在执行I/O命令时,只需启动有关通道,通道将执行通道程序,从而完成I/O操作。
外部设备
输入设备
- 键盘:查键,编码,传给主机
- 鼠标:移动,检测方向和距离,控制响应运动
输出设备
- 显示器
- 屏幕大小
- 分辨率:像素个数
- 灰度级:黑白显示器中所显示的像素点的亮暗差别,彩色显示器中灰度级越多,图像越逼真
- 刷新:光点消失之前重新扫描一遍
- 刷新频率:单位时间内扫描整个屏幕内容的次数
- 显示存储器(
V
R
A
M
VRAM
VRAM):刷新存储器,提高刷新图像的信号
- V R A M 容 量 = 分 辨 率 × 灰 度 级 位 数 VRAM容量=分辨率\times灰度级位数 VRAM容量=分辨率×灰度级位数
- V R A M 带 宽 = 分 辨 率 × 灰 度 级 位 数 × 帧 频 VRAM带宽=分辨率\times灰度级位数\times帧频 VRAM带宽=分辨率×灰度级位数×帧频
- 阴极射线管(
C
R
T
CRT
CRT显示器)
- 字符显示器:点阵
- 图形显示器:图形存入缓冲器,刷新。
- 液晶显示器 ( L C D ) (LCD) (LCD):利用液晶的电光效应
- 发光二极管( L E D LED LED)显示器:通过控制半导体发光二极管来显示文字、图形、图像等信息
- 打印机
- 针式打印机
- 间歇驱动纵向送纸和打印头横向移动,同时驱动打印机间歇冲击色带
- 针式打印机擅长“多层复写打印”。
- 喷墨式打印机
- 带电的喷墨雾点经过电极偏转后,直接在纸上形成所需字形
- 打印噪声小,实现高质量彩色打印
- 激光打印机
- 计算机输出的二进制信息,经过调制的激光束扫描,在感光鼓上形成潜像。
- 打印质量高、速度快、噪声小
- 针式打印机
- 外存储器
- 磁盘存储器
- 磁头数:记录面数,一个记录面对应一个磁头
- 柱面数:表示硬盘每面盘片上有多少条磁道
- 扇区数:表示每条磁道上有多少个扇区
- 磁盘驱动器:核心部件是磁头组件和盘片组件
- 磁盘控制器:硬盘存储器和主机的接口
- 磁盘容量/记录密度/平均存取时间/数据传输率
- 磁盘地址: 驱动器号 柱面号 盘面号 扇区号
- 磁盘阵列
- R A I D 0 RAID0 RAID0:无冗余和无校验的磁盘阵列
- R A I D 1 RAID1 RAID1:镜像磁盘阵列
- R A I D 2 RAID2 RAID2:采用纠错的海明码的磁盘阵列
- R A I D 3 RAID3 RAID3:位交叉就校验的磁盘阵列
- R A I D 4 RAID4 RAID4:块交叉就校验的磁盘阵列
- R A I D 5 RAID5 RAID5:无独立校验的奇偶校验言磁盘阵列
- 光盘存储器
- 利用光学原理读/写信息的存储装置,采用聚焦激光束对盘式介质以非接触方式记录信息
- 存储密度高、携带方便、成本低、容量大、存储期限长
- 固态硬盘
- 需要 F l a s h M e m o r y Flash\ Memory Flash Memory,还需要其他硬件和软件的支持。
- 磁盘存储器
I/O接口
-
功能
- 实现主机和外设的通信联络控制
- 进行地址译码和设备选择
- 实现数据缓冲
- 信号格式的转换
- 传送控制命令和状态信息
-
I/O接口在主机测通过I/O总线与内存、CPU相连。
-
接口和端口不同,端口是指接口电路中可以进行读/写的寄存器,若干端口加上相应的控制逻辑才可以组成接口。
-
类型
- 按数据传送方式
- 并行接口
- 串行接口
- 按主机访问I/O设备的控制方式
- 程序查询接口
- 中断接口
- DMA接口
- 按功能灵活性
- 可编程接口
- 不可编程接口
- 按数据传送方式
-
I/O端口及其编址
- 统一编址,存储器映射方式,把I/O端口当作存储器的单元进行地址分配
- 不需要专门输入/输出指令,可使CPU访问I/O的操作更灵活、方便
- 端口占有存储器地址,内存容量变小,执行速度较慢
- 独立编址,I/O映射方式,I/O端口的地址空间和主存地址空间是两个独立的地址空间。
- 输入/输出指令与存储器指令有明显区别,便于理解
- 输入/输出指令少,一般只能对端口进行传送操作,增加了控制的复杂性。
- 统一编址,存储器映射方式,把I/O端口当作存储器的单元进行地址分配
I/O方式
程序查询方式
- 依靠CPU去不断询问I/O设备
程序中断方式
DMA方式
-
完全由硬件进行成组信息传送的控制方式,具有程序中断方式的优点。
-
CPU与外设并行工作,信息传送不再经过CPU,降低CPU开销,直接存储器存取方式
-
DMA控制器
-
- 主存地址计数器:存放要交换数据的主存地址
- 传送长度计数器:记录传送数据的长度
- 数据缓冲寄存器:暂存每次传送的数据
- DMA请求触发器:I/O设备设备好数据后使DMA请求触发器置位
- 控制/状态逻辑:由控制和时序电路及状态标志组成
- 中断机构:数据块传送完毕后触发中断机构,提出中断请求
-
DMA传送方式
- 停止CPU访问主存
- DMA与CPU交替访存
- 周期挪用,二者混合
-
DMA传送过程
- 预处理
- 数据传送
- 后处理
-
DMA方式和中断方式的区别
- 中断方式是程序的切换,需要保护和恢复现场,DMA方式除了预处理和后处理,其他时候不占用CPU的任何资源
- 对中断请求的响应只能发生在每条指令执行完毕时,DMA请求响应可发生在每个机器周期结束时
- 中断传送过程中需要CPU的干预,而DMA传送过程不需要CPU的干预,数据传输率高
- DMA请求优先级高于中断请求
- 中断方式具有对异常事件的处理能力,DMA方式仅局限于传送数据块的I/O操作
- 数据传送来看,中断方式靠程序传送,DMA方式靠硬件传送。
本章总结
I/O设备有哪些编址方式?各有何特点
- 统一编址和独立编址
- 统一编址是在主存地址中划出一定范围作为I/O地址,以便通过访存指令即可实现对I/O的访问,但主存的容量相应减少。
- 独立编址是指I/O地址和主存是分开的,I/O地址不占主存空间,但访存需要专门I/O指令
CPU响应中断需要哪些条件?
- 在CPU内部设置的中断屏蔽触发器开放
- 外部有中断请求时,中断请求触发器必须处于1的状态,保持中断请求信号
- 外设中断允许触发器必须为1,才能把外设中断请求传送至CPU
常见问题和易混淆知识点
中断响应优先级和中断处理优先级分别指什么?
- 中断响应优先级是由硬件排队线路或中断查询程序的查询顺序决定的,不可动态改变;中断处理优先级可以由中断屏蔽字来改变,反应的是正在处理的中断,是否比新发生的中断处理优先级低。
向量中断、中断向量、向量地址三个概念什么关系?
- 中断向量:每个中断源都有对应的处理程序,这个处理程序称为中断服务程序,其入口地址称为中断向量。所有中断的中断服务程序入口地址构成一个表,称为中断向量表
- 向量地址:中断向量表中每个表项所在的内存地址或表项的索引值,称为向量地址
- 向量中断:指一种识别中断源的技术或方式。识别中断源的目的是找道中断源对应的中断服务程序的入口地址的地址,即获得向量地址
程序中断和调用子程序有何区别?
- 服务时间和服务对象都不一样
- 调用子程序过程发生的时间是已知的和固定的。中断过程发生的时间一般是随机的
- 子程序完全为主程序服务,两者属于主从关系。中断服务程序与主程序无关
- 主程序调用子程序的过程完全属于软件处理的过程,不需要专门硬件电路;中断处理系统是一个软/硬件结合系统
- 子程序嵌套可实现若干级,嵌套的最多级数受计算机内存开辟的堆栈大小限制;中断嵌套级数主要由中断优先级来决定。
I/O指令和通道指令有何区别?
- I/O指令是CPU指令系统的一部分,是CPU用来控制输入/输出操作的指令,由CPU译码后执行。在具有通道结构的机器中,I/O指令不实现I/O数据传送,主要完成启动、停止I/O设备,查询通道和I/O设备状态,及控制通道进行其他一些操作
- 通道指令是通道本身的指令,用来执行I/O操作,如读、写、磁带走带等操作