计算机系统由两大部分组成:硬件和软件。软件又包括系统软件和应用软件。
Xmind下载
Xmind下载
概述
翻译、汇编、编译
翻译程序:翻译一句执行一句
编译:把高级语言转化为汇编语言的过程
汇编:把汇编语言翻译成机器语言的过程
将高级语言源程序转换为机器级目标代码文件的程序是编译程序
翻译程序分有编译程序、解释程序
编译程序:将高级语言全部翻译为目标程序,生成目标程序
翻译程序:不会生产目标程序(汇编程序也为翻译程序的一种)
地址寄存器(MAR)、数据寄存器(MDR)、高速缓存(Cache)都属于存储器的一部分,但存在于CPU中。
系统软件:操作系统OS、数据库管理系统DBMS、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序等
完整的计算机系统应包括配套的硬件设备与软件设备
冯诺依曼机的基本工作方式是控制流驱动方式
❌软件功能不能被硬件取代
逻辑等效:某一功能既可以用软件实现,也可以用硬件实现。但并不是说他们在逻辑功能上是等价的。硬件实现可扩展性差、效率高;软件实现效率低、可扩展性强。
存放欲执行指令的寄存器是IR
CPU不包括地址译码器
地址译码器存在主存中,负责将CPU传来的逻辑地址转换为物理地址
MAR的位数是地址码长度(可寻址范围);MDR的位数是存储字长(存储主存的存储单元传来的数据)
在CPU寄存器中,指令寄存器IR、地址寄存器MAR、数据寄存器MDR对用户完全透明
系列机的基本特性是向后兼容
向后兼容:时间上向后兼容,新机器可以使用以前机器的指令系统
- 相联寄存器既可以按地址寻址也可以按内容寻址(快表)
存储程序原理:
将指令以代码形式事先输入计算机主存储器,然后按其在主存中的首地址执行程序第一条指令,以后按该程序规定的顺序执行其他指令,直至程序执行结束。
计算机按照此原理的五大功能:数据传送功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能
兼容:指计算机软件与硬件的通用性,通常在同一系列不同型号的计算机间通用(❌软硬件间的通用性)
平均指令执行速度:MIPS;平均指令周期:$\frac{1}{MIPS}$
机器字长、指令字长、存储字长
机器字长、指令字长、存储字长都必须是字节的整数倍
机器字长:计算机能够直接处理的二进制数据的位数,一般等于内部寄存器的大小。它决定了计算机的运算精度
指令字长:一个指令字包含的二进制代码位数
指令字长一般为存储字长的整数倍。若指令字长为存储字长的2倍,则需要2次访存取出一条指令。
- 存储字长:一个存储单元存储的二进制代码
多处理器
SISD:单指令流单数据流
SIMD:每条指令可以处理多个相同的数据(显卡处理图像、for循环对数组元素处理)数据级并行
一个指令控制部件(CU)、多个ALU、多个局部存储器、一个主存储器
每个执行单元有各自的寄存器组、局部存储器、地址寄存器
向量处理器:向量寄存器,处理对象:向量;主存储器应采用“多端口同时读取”的交叉多模块存储器
MISD:现实中不存在
MIMD:线程(进程)级并行
共享存储多处理器系统(SMP):多处理共享最低级Cache、主存(共享单一物理地址空间);LOAD、STORE指令访问存储器
多核处理器:一个CPU有多个处理器,(片级多处理器)、共享存储器
多计算机系统:消息传递通信,有独立的主存(物理地址空间独立)
硬件多线程
单核CPU中使用资源重复,为多个进程分别提供不同的寄存器组,以减少切换进程的开销
细粒度多线程:每个时钟周期切换线程,实现指令级并行
粗粒度多线程:当一个线程出现较大开销阻塞时(Cache缺失),才切换线程。切换线程时需要清空流水线(开销比细粒度大),实现指令级并行
同时多线程:实现指令级并行和线程级并行
数据的表示和运算
十六进制的运算使用位运算去做,不然会出错
所有大写英文字母的ASCII码值都小于小写字母”a”的ASCII码值
1PFLOPS=每秒一千万亿(10^15)次浮点运算
10^8=一亿
算术右移:原码补0,反码补1,补码补符号位
算数左移:反码补1;原码,补码补0
逻辑移位:补0
机器零是指浮点运算结果在最小正数到0以及最大负数到0之间的值,计算机将其当作机器零处理
定点数中的零是实在的零
addw %bx,%ax
为AT&T格式,目的寄存器为axsub bx,ax
为Inter格式,目的寄存器为bx
大小端
现代计算机都采用字节编址方式,一个操作数有可能有多个内存地址对应
小段方案:最低有效字节存储在最小位置(多字节数据存放在连续字节序列中的排列顺序)
大端方案:最高有效字节存储在最小位置
机器数:012345H,以小(大)段方案存放在08000H处 | |||
---|---|---|---|
地址 | 08000H | 08001H | 08002H |
机器数(小端) | 45H | 23H | 01H |
机器数(大端) | 01H | 23H | 45H |
海明码可以发现两位错误并进行以为纠错($n+k+1\le2^k$)
被校验数据位的海明位号等于该数据位的各校验位海明位号之和(D1在H3(011),则由P1、P2进行校验)
模4补码更容易检查加减运算中的溢出问题
模4补码在存储时只需一个符号位(正确的数其两个符号位相同),只有在送入ALU计算时,才在ALU中使用双符号位
双符号位的最高符号位代表真正的符号,低位符号位用于参与位移操作以判断是否发出溢出(”01”正溢出,”10”负溢出)
原码一位乘法,符号位$x_s\oplus y_s$,数值位两数绝对值相乘,累加次数n次
补码一位乘法,符号位参与运算,累加次数n+1次
实现N位(不包括符号位)补码一位乘时,乘积为2N+1位(需要再加符号位)
真值、原码、补码、反码转换规律
- 真值->[x]原:数值位不变,符号位正数为0,负数为1
- [x]原->[x]补:符号位不变,正数数值位不变,负数数值位取反+1
- [x]原<->[x]反:符号位不变,正数数值位不变,负数数值位取反
- [x]原<->[-x]原:数值位不变,符号位取反
- [x]补<->[-x]补:符号位取反,数值位取反+1
- [x]补<->[x]移:符号位取反
真值的移码与补码只差一个符号位
算术位移对象是有符号数,符号位不参与位移
补码不恢复余数法中,异号相除时,够减商0,不够减商1
判断加减法溢出时,如果采用判断进位的方式(符号位进位$c_0$,最高位进位$c_1$),则产生溢出的条件为$c_0\oplus c_1=1$
无符号数的加减计算与有符号计算相同(化为二进制按位运算):$a-b=a+[-b]$
标志位OF、SF、CF
溢出标志位OF(Overflow Flag)(有符号数加减运算):1表示溢出(寄存器中值不是真正结果)
OF=最高位产生的进位$\oplus$次高位产生的进位
符号标志位SF(有符号数加减运算):0表示结果为正数,1表示结果为负数
进位标志位CF(Carry Flag)(无符号数加减运算):1表示最高位有进位,0表示最高位无进位(最高位是否进位与是否溢出无关)
无符号数运算时借位标志$CF=C\oplus sub$,(C为进位输出,减法运算:sub=1,加法运算:sub=0,加法运算时有进位则说明溢出)
乘法运算时,如果高33位不是全0或全1,OF=1,表示溢出
当指令执行无符号数比较跳转时,通常对两数进行减法运算,结果小于等于0时跳转(小于0借位符号CF=1,等于0零符号ZF=1)
浮点数
采用规格化浮点数最主要是为了增加数据的表示精度
在IEEE 754标准下,尾数全部为隐藏最高位”1”的正数原码(临时浮点数无隐含位)
规格化浮点数就是让尾数$\frac{1}{2}\le|M|\le1$
(基数为2时)原码规格化数的尾数最高位一定是1;补码规格化数的尾数最高位一定与尾数符号相反(0.11 1、1.011 1(最大负数形式))
基数为$2^n$时,若浮点数为正数,数值位前n位不全为0;若浮点数为负数,数值位前n位不全为1
根据数值x求浮点数二进制值时。先将x转换为二进制表示,再对其规格化,得到规格化尾数(IEEE 754标准下只需要把尾数转换为1.xxx形式即可)与阶数。按照IEEE 754标准将数符、移码表示的阶数、规格化尾数填入相应字段
类型 | 数符 | 阶码 | 尾数数值 | 总位数 | 偏置值 |
---|---|---|---|---|---|
短浮点数float | 1 | 8 | 23 | 32 | 127(7FH) |
长浮点数 | 1 | 11 | 52 | 64 | 1023(3FFH) |
临时浮点数 | 1 | 15 | 64 | 80 | 16383(3FFFH) |
float类型最小正数值:$1.0\times2^{1-127}(E=1,M=0)$(阶码不能取到全0)
float类型最大正数值:$1.111..\times2^{254-127}=2^{127}(2-2^{-23})\ (E=254,M=.111…)$
double类型最小正数值:$1.0\times2^{1-1023}(E=1,M=0)$
double类型最大正数值:$1.111..\times2^{2046-1023}=2^{1023}(2-2^{-52})\ (E=2046,M=.111…)$
阶码全为1时表示无穷大,全为0时表示非规格化数
右规和尾数舍入过程,阶码可能上溢
浮点数乘法任何情况下最多进行一次右归,可能进行多次左归
最简单的截断方法为直接截断
加法器进位信号$g=X_i Y_i $
加法器进位传递信号$p=X_i\oplus Y_i$
相同字长下,定点数比浮点数精度更高(浮点数部分字段用作阶码表示);浮点数表示范围更大
unsigned类型为无符号整数,直接用二进制位对数值进行编码而得。(一般为补码表示)
原码一位乘算法过程中,所有移位均是逻辑移位
补码加减运算器
加减运算器处理有符号数与无符号数的处理过程是相同的,但是判断是否溢出的方法不同
加法器的低位进位信息,减法运算时为1(被减数取反加1),加法运算时为0
乘法电路和除法电路的基本结构
部分积和被乘数X做无符号数加法时,可能产生进位,因此需要一个专门的进位位C。乘积奇存器P初始时置0。计数器C,初值为 32,每循环一次减1。 ALU 是乘法核心部件,对乘积寄存器P和被乘数奇存器X的內容做“无符号加法” 运算,运算结果送回奇存器P,进位存放在C中。每次循环都对进位位C,乘积寄存器P和乘数奇存器Y 实现同步 “逻辑右移”,此时,进位位 C移入寄存器P的最高位,寄存器Y的最低位移出。每次寄存器Y的最低位都被送到控制逻辑,以决定被乘数是否“加”到部分积上。
无符号乘法溢出判断:前n比特有不是0,则发生了溢出
有符号乘法溢出判断:高n+1位全1或全0说明没有溢出
需要部件:支持加减法ALU、移位功能的寄存器(无符号乘法逻辑右移、有符号算术乘法右移、除法左移)、控制逻辑(加减法控制、左右移控制、写使能)、计数器
存储系统
主存使用RAM和ROM实现,控制存储器使用ROM实现,主存主要使用DRAM,Cache主要使用SRAM
主存和控存都是按地址访问
存放一个二进制位的物理器件称为存储元,地址码相同的多个存储元构成一个存储单元(字节编址即八个存储元使用一个存储单元),若干个存储单元集合构成存储体
编址方式属于计算机组成,与机器字长(计算机体系结构)没有关系
存取周期$t_RC$:存储芯片进行连续两次读、写操作所必须间隔的时间(存取时间+恢复时间)
存取时间$T_a$:执行一次读操作或写操作的时间(分有读出时间、写入时间)
读出时间$t_A$:从主存接收到有效地址开始,到读出所选中单元的内容并在外部数据总线上稳定地出现所需的时间(还需要一个总线周期才能将数据传入CPU)
写入时间:从主存接收到有效地址开始到数据写入被写入单元为止
- 采用DMA方式传递数据时,每传递一个数据就要占用一个存取周期
SRAM、DRAM
主存储器由DRAM实现;Cache由SRAM实现
CDROM是只读型光盘存储器,不属于只读存储器ROM,使用串行存取方式
DRAM | SRAM | |
---|---|---|
特点 | 需要刷新、集成度高 | 速度较快、成本较高、功耗较大 |
存储元 | 晶体管(电容) | 双稳态触发器(六晶体管MOS) |
送行列地址 | 分两次送(地址复用) | 同时送 |
DRAM刷新
刷新对CPU是透明的,不依赖外部访问
刷新单位是行
刷新操作类似于读操作(将信息通过刷新放大器放大后重新存回存储单元)
一次刷新只占用一个存取周期
低位交叉编址中低位地址表示该字节存储的芯片编号。若是连续占多位字节的数据字(如double)即从该芯片开始存储。
一个存储周期可以对所有芯片各读取一个字节
芯片引脚数目N=数据线$N_1$+ 地址线$N_2$(DRAM采用地址复用技术,因此地址线是原来的1/2)+片选线(1根)+读写控制线(2根)(读写控制线有时候也可以共用一根)
地址的编码是由低位向高位编码,先将片内地址由最低位填入,再填入片选地址(最高位可以空闲)
CPU与Cache间的数据交换以字为单位;Cache与主存间的交换以块为单位
固态硬盘SSD
- 基于闪存Flash(芯片中的一块相当于磁盘中的一条磁道,磁道中还有若干页(最基本的读写单位))
- 可以随机存储、用and门实现
- 动态磨损:偏向使用较新的内存颗粒进行擦除写入(优化不够)
- 静态磨损:将长时间不用的数据写入较老的内存颗粒中,将新数据写入新的内存颗粒(磨损均衡、主控压力较大)
三级Cache
指令Cache与数据Cache分离位于L1级,通常使用写分配法与写回法
L1对L2使用全写法,L2对L3使用写回法(非全部情况)
Cache写命中策略:全写法、写回法
Cache未命中策略:写分配法、非写分配法
全写法(write-through):将数据同时写入Cache与主存
写回法(write-back):在块被换出时,将更新的块写回缓存
写分配法(write-allocate):加载主存中的块到Cache
非写分配法(not-write-allocate):只写入主存,不调块
每行Cache对应一个标记项,项中包括有效位、标记位tag(地址总长度-块内偏移地址-Cache组偏移地址)、一致性维护位(写回法时使用)、替换算法位(替换算法时使用)
Cache缺失由硬件完成;缺页由软件完成;TLB缺失既可以用硬件也可以用软件完成
LRU算法中替换算法位长度与Cache组大小有关,2路组相联使用1位LRU位,4路组相联使用2位LRU位
语句
a[k]=a[k]+32
,需要访存两次。第一次读取a[k]的值;第二次将新值写回a[k]Cache的效率公式:Cache访问时间/实际访存的平均访问时间
CPU使用虚拟内存过程
CPU使用的是虚拟地址,由辅助硬件(TLB、页表)找到虚地址与实地址间的对应关系,并判断该虚地址对应的存储单元是否已装入主存(有效位为1)。若已在主存中,通过地址变换,CPU可直接访问主存指示的存储单元(或直接访问Cache获得数据);若不在主存,通过缺页中断,把包含该字的一页或是一段掉入主存后再由CPU访问。若主存已满,采用替换算法置换主存中的一页或一段
TLB缺失则需要访存一次访问页表;页表缺失需要访问磁盘;Cache缺失需要访存一次获取数据
段页式在地址变换时需要两次查表,开销较大
虚拟存储管理系统的基础是程序访问的局部性原理,该理论的基本含义是:在程序执行的过程中,程序对主存的访问是不均匀的
Flash半导体存储器的物理结构不需要考虑寻道时间和旋转延迟,可以直接按IO请求的先后顺序服务
指令系统
零地址指令:空操作指令、停机指令、关中断指令、弹栈压栈指令
要注意隐操作数的情况,一地址指令中有将目的地址隐藏的双操作数指令(先按指令地址码给出的地址读操作数,另一个操作数由ACC提供,运算结果也存放在ACC中)
执行一条三地址指令需要访问4次存储器(取指令1次、取两个操作数2次、存放结果1次)
程序控制类指令功能:改变程序的执行顺序(即转移地址的指令),使程序有测试、分析、判断、循环执行的能力。如:无条件转移指令、条件转移指令、循环指令(中断隐指令指令为硬件实现,不存在于指令系统中)
微操作信号发生器的设计与寄存器数量无关
CISC控制器大多数采用微程序控制
RISC采用指令流水线技术(有利于编译程序代码优化),以硬布线控制为主
RISC只有Load\Store指令访存,其余指令的操作都在寄存器间进行
微程序控制中,确定一条指令的地址
增量计数法:由$\mu PC$确定下一条微指令地址
下地址法(断定法):由微指令的下地址字段给出后续指令地址
硬件法:由专门硬件电路或外部直接向CMAR输入微指令地址
基址寻址时,程序员操作偏移地址,基址寄存器内容由操作系统控制(如在中断向量表寻找中断向量,基地址为中断向量表起始地址)
- 变址寻址时,程序员操作变址寄存器,偏移地址(数据结构首地址)不变
- 简化地址结构的基本方法是尽量使用隐含取值
- 如果一条指令由两字节组成,每取一字节PC值+1(每次PC自加的值由指令字长决定)
- 对按字寻址的机器,程序计数器取决于存储器字数、指令寄存器取决于指令字长
- 内存地址都为无符号数,寻址时对补码操作数需要一定转换
- 执行
cmp a,b
指令时,通过a-b
实现对a与b的比较
中央处理器
控制器的全部功能:从主存中取出指令、分析指令、并产生有关的操作控制信号
程序状态字寄存器存放计算机系统表征程序和机器状态的部件
间址周期的作用是取操作数的有效地址,间址周期结束后,MDR中的内容为操作数地址
对于间接寻址的指令,先访存一次取出有效地址,再访存取出操作数(间址周期介于取址周期与执行周期之间)
MDR通常与存储字长有关,数据字长是一次存取数据的长度(可能是存储字长的n倍)
数据通路
指令执行过程中数据所经过的路径,包括路径上的部件,称为数据通路
ALU、通用寄存器、状态寄存器、Cache、MMU、浮点运算逻辑、异常和中断处理逻辑等,都属于数据通路的一部分
多核技术
多核处理器指单芯片处理器,在一个芯片中集成两个或多个完整且并行工作的处理器核心而构成的处理
核心指指令部件、算术/逻辑部件、寄存器堆、一二级缓存处理单元
多核处理三大技术:维持Cache一致性、核间通信技术、对软件设计的挑战
多个CPU共享统一的地址空间,且独自拥有属于自己的L1Cache
机器周期、指令周期、时钟周期
- 指令周期:CPU每取出并执行一条指令所需的全部时间
- 机器周期是指令执行中每步操作(取值、存储器读、存储器写等)所需要的时间
- 每个机器周期的节拍数可以不等(同一个操作(取值、写回等)的节拍数必须相同)
- 各指令功能不同,所以各指令执行所需的机器周期数也是可变的
指令的执行周期结束后进入中断周期,用来响应中断
CPU根据指令周期的不同阶段判断从存储器中取出的二进制代码是指令还是数据
CPU硬件中使用专门的MUX(二路选择器)进行PC操作
通常以存取周期作为基准周期,即内存中读取一个指令字的最短时间作为机器周期(指令字长为2倍存储字长的取值周期为2个机器周期)
控制存储器CM使用ROM存放微程序,是CPU的一部分,因此控存不属于存储系统的一部分
在组合逻辑控制器中,微操作控制信号的形成主要与指令译码信号与时钟信号有关
硬布线控制器需要结合各微操作的节拍安排,综合分析,写出逻辑表达式,再设计成逻辑电路图。因此时序系统较为复杂
微指令在直接编码方式下,其操作控制字段位数等于微命令数;在字段直接编码方式下,每个字段要预留一个不进行任何操作的状态
一个微程序周期对应一个指令周期,一个微指令周期对应一个时钟周期(一条指令对应一个微程序,一个微程序由许多微指令构成,一条微指令会发出许多不同的微命令)
流水线是时间上并行(空间并行是资源重复)
超标量流水线能结合动态调度技术提高指令执行的并行性(拓展Tomasulo算法:支持双流出超标量流水线)
一个m段流水线稳定流出时CPU的吞吐能力,与m个并行部件的CPU吞吐能力相等
总线
猝发传送:一个总线周期内传输存储地址连续的n个数据字,$t=t_1+n\times t_2$(t_1传输地址,t_2传输一个数据字)
一个总线的时钟周期可以传输一个存储字(长度为总线位宽)
总线宽度有称总线位宽,是总线上能够同时传输的数据位数,通常是指总线的数据总线的根数
数据总线宽度由总线的功能特性定义
系统总线中地址线传输CPU想访问的存储单元或IO端口地址
采用分离事务通信方式(总线复用)可以提高总线利用率
靠近CPU的总线速度快(连接高速设备)
PCI-Express×16采用并行传输方式
USB是连接外部设备的IO总线,用于设备与设备控制器(IO接口)间互连的接口标准
USB特性:即插即用、热插拔、采用菊花链形式将众多外设连接起来(拓展坞)、可扩展性强、高速传输、串行总线(不能传输多位数据)
系统总线:ISA、EISA
局部总线:VESA、PCI、AGP、PCI-Express(取代PCI、AGP)
PCI总线是一个与处理器无关的高速外围总线,其基本传输机制是猝发式传输
输入、输出系统
IO接口
IO设备通过设备控制器与主板的系统总线相连接(控制IO设备的具体动作)
IO接口:外设与主机间传输数据时进行各种协调工作的逻辑部件(速度匹配、数据缓存、电平和格式转换、地址译码、传送控制信号和状态信息)
执行IO指令时,CPU通过地址总线选择所请求的IO端口、通过数据总线在通用寄存器与IO端口之间进行数据传送
IO接口的控制线与地址线都是从CPU到IO接口的单向传送。IO接口中的命令字、状态字、中断类型号都是通过IO总线的数据线由IO接口传送到CPU
若干端口加相应的控制逻辑组成接口
IO统一编址执行速度慢;IO独立编址控制复杂
磁盘驱动器是由磁头、磁盘和读写电路等组成即磁盘本身
U盘本质上来说是一种只读存储器
RAID技术将多个独立的物理磁盘组成一个独立的逻辑磁盘,提升存储性能、系统的可靠性
RAID0把连续多个数据块交替存放在不同的物理磁盘扇区中,几个磁盘交叉并行读写,不仅扩大了存储容量,而且提高了磁盘数据存取速度
RAID1使两个磁盘同时进行读写,互为备份
磁盘非格式化容量:磁盘可利用磁化单元数
磁盘格式化容量:按照某种特定的记录格式所能存储信息的总量(格式化后要比非格式化小)
采用定长数据块记录格式,直接寻址的最小单元为扇区
一个磁盘的读写操作是串行的,不可能同一时刻即读又写,也不可能同一时刻读或写两组数据
VRAM(显示存储器):将一帧图像信息存储其中,存储容量由图像分辨率、灰度级决定
在字符显示的VRAM中存放ASCII码用以显示字符
总线仲裁中,计数器定时查询需要一根总线请求BR,和$\lceil\log_2 n\rceil$根设备地址线
总线仲裁一般是IO设备争用总线的判优方式,而中断判优方式一般是IO设备争用CPU的判优方式
通道和中断是软硬件相结合实现方式
中断
中断处理方式:在IO设备输入每个数据的过程中,无须CPU干预。仅当传输完一个数据时,才需要CPU进行中断处理。
中断数据传送是在软件控制下完成的
指令执行结构出现异常而引起的中断(运算溢出等)为程序性中断
IO中断为外部中断
机器校验中断为终止类中断
对于故障类异常,其断电是发生故障时的指令地址,要重新计算PC值
中断的断点为下条指令地址,无需重新计算
中断响应由高到低的优先级宜用访管-程序性-重新启动
主存故障引起的中断是机器校验中断,属于内中断(只能由CPU自身完成);外中断一般指主存和CPU外的中断,如外设引起的中断。此时需要CPU从总线获取中断源的标志信息,进行下一步处理
缺页、溢出等异常事件是特定指令执行过程中产生的,中断不和任何指令相关联,不阻止任何指令的完成(在指令周期的中断周期有效)
配有通道的计算机系统中,用户程序需要输入/输出时,引起的中断时访管中断,系统由用户态转为核心态
访管指令即为Trap指令
中断优先级包含响应优先级与处理优先级,处理优先级由屏蔽字实现(0为该中断开放、1为该中断被屏蔽)
CPU收到多个中断请求时,根据响应优先级响应中断
响应优先级为CPU响应中断的优先级,当存在中断屏蔽字情况下。可能出现的是,处理机响应D1,D1再被D2打断
中断屏蔽是在打断中断时使用,谁先得到响应要看响应优先级
中断服务程序的最后指令通常是中断返回指令(RETI),该指令在中断恢复后,此时CPU所有寄存器已经恢复到中断前的状态。因此该指令不需要进行无条件转移,只需要通知CPU开始从PC中取值,进入取值周期即可。
在多重中断中,CPU只有在检测到中断请求信号后(中断优先级更低的中断请求信号检测不到)才会进入中断响应周期
DMA方式
DMA传送过程中,DMAC将接管CPU的地址总线、数据总线、控制总线,CPU主存控制信号被禁止使用
DMA传输的是数据块
DMA请求,请求的是总线使用权。
DMA数据传输在控制器的控制下完成的
对DMA请求的响应可以发生在每个机器周期结束时,只要CPU不占总嫌就可被响应(即DMA响应发生在一个总线事务完成后)
DMA请求不会导致被中断指令重新执行
通道
通道程序存放在主存中,由通道从主存中取出并执行(通道执行)
CPU通过执行IO指令负责开启关闭通道,以及处理来自通道的中断实现对通道的管理
IO接口
IO设备通过设备控制器与主板的系统总线相连接(控制IO设备的具体动作)
IO接口:外设与主机间传输数据时进行各种协调工作的逻辑部件(速度匹配、数据缓存、电平和格式转换、地址译码、传送控制信号和状态信息)
执行IO指令时,CPU通过地址总线选择所请求的IO端口、通过数据总线在通用寄存器与IO端口之间进行数据传送
IO接口的控制线与地址线都是从CPU到IO接口的单向传送。IO接口中的命令字、状态字、中断类型号都是通过IO总线的数据线由IO接口传送到CPU
若干端口加相应的控制逻辑组成接口
IO统一编址执行速度慢;IO独立编址控制复杂
磁盘驱动器是由磁头、磁盘和读写电路等组成即磁盘本身
U盘本质上来说是一种只读存储器
RAID技术将多个独立的物理磁盘组成一个独立的逻辑磁盘,提升存储性能、系统的可靠性
RAID0把连续多个数据块交替存放在不同的物理磁盘扇区中,几个磁盘交叉并行读写,不仅扩大了存储容量,而且提高了磁盘数据存取速度
RAID1使两个磁盘同时进行读写,互为备份
磁盘非格式化容量:磁盘可利用磁化单元数
磁盘格式化容量:按照某种特定的记录格式所能存储信息的总量(格式化后要比非格式化小)
采用定长数据块记录格式,直接寻址的最小单元为扇区
一个磁盘的读写操作是串行的,不可能同一时刻即读又写,也不可能同一时刻读或写两组数据
VRAM(显示存储器):将一帧图像信息存储其中,存储容量由图像分辨率、灰度级决定
在字符显示的VRAM中存放ASCII码用以显示字符
总线仲裁中,计数器定时查询需要一根总线请求BR,和根设备地址线
总线仲裁一般是IO设备争用总线的判优方式,而中断判优方式一般是IO设备争用CPU的判优方式
通道和中断是软硬件相结合实现方式
中断
中断处理方式:在IO设备输入每个数据的过程中,无须CPU干预。仅当传输完一个数据时,才需要CPU进行中断处理。
中断数据传送是在软件控制下完成的
指令执行结构出现异常而引起的中断(运算溢出等)为程序性中断
IO中断为外部中断
机器校验中断为终止类中断
对于故障类异常,其断电是发生故障时的指令地址,要重新计算PC值
中断的断点为下条指令地址,无需重新计算
中断响应由高到低的优先级宜用访管-程序性-重新启动
主存故障引起的中断是机器校验中断,属于内中断(只能由CPU自身完成);外中断一般指主存和CPU外的中断,如外设引起的中断。此时需要CPU从总线获取中断源的标志信息,进行下一步处理
缺页、溢出等异常事件是特定指令执行过程中产生的,中断不和任何指令相关联,不阻止任何指令的完成(在指令周期的中断周期有效)
配有通道的计算机系统中,用户程序需要输入/输出时,引起的中断时访管中断,系统由用户态转为核心态
访管指令即为Trap指令
中断优先级包含响应优先级与处理优先级,处理优先级由屏蔽字实现(0为该中断开放、1为该中断被屏蔽)
CPU收到多个中断请求时,根据响应优先级响应中断
响应优先级为CPU响应中断的优先级,当存在中断屏蔽字情况下。可能出现的是,处理机响应D1,D1再被D2打断
中断屏蔽是在打断中断时使用,谁先得到响应要看响应优先级
中断服务程序的最后指令通常是中断返回指令(RETI),该指令在中断恢复后,此时CPU所有寄存器已经恢复到中断前的状态。因此该指令不需要进行无条件转移,只需要通知CPU开始从PC中取值,进入取值周期即可。
在多重中断中,CPU只有在检测到中断请求信号后(中断优先级更低的中断请求信号检测不到)才会进入中断响应周期
DMA方式
DMA传送过程中,DMAC将接管CPU的地址总线、数据总线、控制总线,CPU主存控制信号被禁止使用
DMA传输的是数据块
DMA请求,请求的是总线使用权。
DMA数据传输在控制器的控制下完成的
对DMA请求的响应可以发生在每个机器周期结束时,只要CPU不占总嫌就可被响应(即DMA响应发生在一个总线事务完成后)
DMA请求不会导致被中断指令重新执行
通道
通道程序存放在主存中,由通道从主存中取出并执行(通道执行)
CPU通过执行IO指令负责开启关闭通道,以及处理来自通道的中断实现对通道的管理