计算机组成与系统结构概述

计算机系统概述

冯.诺依曼结构主要思想:
计算机应由运算器、控制器、 存储器、输入设备和输出设备五个基本部件组成
课程概述:
1、性能评价
2、计算机算数
数据的表示和运算
3、存储器的层次结构
4、指令集体系结构
5、CPU设计
数据通路和控制器
6、流水线概念
7、系统总线
8、输入/输出系统

数据的机器表示

原码:由符号和数值位组成,符号0表示正数,1表示负数,数值位相等。0的表示不唯一。
补码:正数:与原码相同;负数:符号位不变,数值位取反+1。
整数表示:
无符号整数(8位)00000000B~11111111B,即0~255。
带符号整数(8位)-128~127
浮点数表示:
在这里插入图片描述
第0位数符S;第1~8位为8位移码表示阶码E(偏置常数为128);第9~31位为24位二进制原码小数表示的尾数M。规格化尾数的第一位总是1,故规定第一位默认的“1”不明显表示出来。这样可用23个数位表示24位尾数。
浮点数与真值转换
在这里插入图片描述
在这里插入图片描述
数据的基本宽度
字长:CPU数据通路的宽度
字:表示被处理信息的单位,用来度量数据类型的宽度
大端与小端
大端方式:地址高位存放数据高位
小端方式:地址低位存放数据高位
在这里插入图片描述
码距
码制中各码字间最小距离为“码距”,它就是这个码制的距离。
问题:“8421”码的码距是几?
2(0010)和3(0011)间距离为1,“8421”码制的码距为1。
奇偶校验码
奇校验:存在奇数个1,则P=0
第一步:在源部件求出奇(偶)校验位P。
   若采用奇校验,则P=bn-1⊕bn-2 ⊕…⊕b1⊕b0⊕1。
   若采用偶校验,则P=bn-1⊕bn-2 ⊕…⊕b1⊕b0。
第二步:在终部件求出奇(偶)校验位P’。
   若采用奇校验,则P’= bn-1’⊕bn-2 ’⊕…⊕b1’⊕b0’⊕1。
   若采用偶校验,则P’=bn-1’⊕bn-2 ’⊕…⊕b1’⊕b0’。
第三步:计算最终的校验位P*,并根据其值判断有无奇偶错。
  假定P在终部件接受到的值为P’’,则P*= P’⊕P”
  ① 若P*=1,则表示终部件接受的数据有奇数位错。
  ② 若P*=0,则表示终部件接受的数据正确或有偶数个错。
码距:2
海明校验码
假定8位数据M= M8M7M6M5M4M3M2M1,4位校验位P=P4P3P2P1。根据规则将M和P按一定的规律排到一个12位码字中。
M8M7M6M5P4M4M3M2P3M1P2P1
P1 = M1⊕M2⊕M4⊕M5⊕M7
   P2 = M1⊕M3⊕M4⊕M6⊕M7
   P3 = M2⊕M3⊕M4⊕M8
   P4 = M5⊕M6⊕M7⊕M8
S1= P1 ’⊕ P1’’
S2= P2 ’⊕ P2’’
S3= P3 ’⊕ P3’’
S4= P4 ’⊕ P4’’
根据s4s3s2s1确定错误位
运算方法和运算部件
在这里插入图片描述
定点数运算及运算部件
原码一位乘法:
乘数为1则做加法并且右移
乘数为0则仅右移
在这里插入图片描述
补码一位乘法(布斯乘法)
在这里插入图片描述
增加辅助位,yi-1,若yiy-1=00或11,只右移运算
yiyi-1=01,p+[x]补
yiyi-1=10,p+[-x]补
(Yi-1 - Yi)[x]补
改进布斯乘法(MBA)
对yi+1yiy-1进行判断
由[pi]补直接求得[pi+2]补
(Yi-1 + Yi- 2Yi+1)[x]补
恢复余数除法在这里插入图片描述
在这里插入图片描述
不恢复余数除法
在这里插入图片描述
浮点数运算
在这里插入图片描述阶码对齐:
小阶向大阶对齐

存储器层次结构

存储器分类
1、按存取方式分类
随机存取存储器(RAM):按地址访问存储单元,每个地址的译码时间相同,所以每个单元的访问时间是一样的,如:内存。
顺序存取存储器(SAM):信息按顺序存放的读出,访问时间取决于信息存放位置,如:磁带。
直接存取存储器(DAM):兼有RAM与SAM访问特点,首先直接选取信息所在区域,在按照顺序方式存取,如:磁盘
相联存储器(AM/CAM):有时候不知道所访问信息的地址,而知道要访问信息的内容特征,此时只能按照内容进行读写,如:快表
2、按存储介质分类
半导体存储器:双极型,静态MOS型,动态MOS型
磁表面存储器:磁盘(Disk)、磁带 (Tape)
光存储器:CD,CD-ROM,DVD
3、按信息的可更改性分类
读写存储器(Read / Write Memory):可读可写
只读存储器(Read Only Memory):只能读不能写
4、按断电后信息的可保存性分类
非易失(不挥发)性存储器(Nonvolatile Memory)
信息可一直保留, 不需电源维持。
(如 :ROM、磁表面存储器、光存储器等)
易失(挥发)性存储器(Volatile Memory)
电源关闭时信息自动丢失。(如:RAM、Cache等)
5、按功能分类
寄存器:封装在CPU内,用于存放当前正在执行的指令和使用的数据,<1KB
高速缓存(cache):位于CPU内部或附近,用来存放当前要执行的局部程序段和数据,用SRAM实现,速度可与CPU匹配,容量小(4MB)
主存:位于CPU之外,用来存放已被启动的程序及所用的数据
用DRAM实现,速度较快,容量较大(几GB)
外存储器:位于主机之外,用来存放暂不运行的程序、数据或存档文件
用磁表面或光存储器实现,容量大而速度慢
主存结构
主存中主要存放程序和数据,CPU在执行指令时要取指令、取数据、存数据的时候访问主存。
在这里插入图片描述
内存储器的分类及应用
在这里插入图片描述
DRAM芯片刷新
刷新操作按行进行,一次可刷新一行的所有元素
刷新方式:
1、集中刷新:
在整个刷新间隔内,前段时间用于正常读写操作,后一段时间停止读写操作进行集中刷新。所用时间较长。
2、分散刷新:将一个存储周期分为两段,前段时间用于正常读写操作,后一段时间进行刷新。
3、异步刷新:
结合上述两种方式,将一个刷新周期分配给所有行,每一行刷且仅刷新一次。若刷新周期为64ms,对于4096行的DRAM芯片,相邻两行的刷新间隔为64/4096ms。
存储芯片扩展
1、字扩展(位数不变、扩充容量)
用16K×8位芯片扩成64K×8位存储器需几个芯片?地址范围?
字方向扩展4倍,即4个芯片。0000-3FFFH, 4000-7FFFH, 8000-BFFFH, C000- FFFFH, 地址共16位,高两位由外部译码器译码生成4个输出,分别连到4个片选信号,片内地址有14位
分析:首先原芯片16k=2^4 * 2^10,即14根地址线,字扩展需要4片芯片,所以需要两位进行译码来选择芯片。所以一共需要16位地址。其中高2位用来选择芯片,低14位用于片内选址,属于连续编址。
2、位扩展(字数不变,位数扩展)
用4096×1位芯片构成4K×8位存储器需几个芯片?地址范围各是多少?
位方向扩展8倍,字方向无需扩展。即8个芯片,地址范围都一样:000- FFFH, 地址共12位,全部作为片内地址
分析:位扩展为原来的8倍,那么只需将数据线扩展为原来的8倍,也就是说将8片芯片的数据线接为D0-D7,而地址线不变,仍为12位。
3、字位同时扩展(字和位同时扩展)
用16K×4位芯片构成64K×8位存储器需几个芯片,地址范围各是多少?
字向4倍、位向2倍,8个芯片。0000-3FFFH, 4000-7FFFH, 8000-BFFFH, C000- FFFFH,数据线与地址线同时扩充。
CPU与主存的连接
CPU地址线A15~A0,数据线D7~D0,WR为读/写信号,MREQ为访存请求信号。0000H~3FFFH为BIOS区,4000H~FFFFH为用户程序区。用8K×4位ROM芯片和16K×8位RAM芯片构成该存储器,要求说明地址译码方案,并将ROM芯片、RAM芯片与CPU连接。
解:因为0000H~3FFFH为BIOS,故ROM区高两位总是00,低14位为全译码。
ROM区大小为:214×8位=16K×8位=16KB,ROM芯片数为:
16K×8位 / 8K×4位 = 2×2 = 8,字方向扩展2倍,位方向扩展2倍。
ROM芯片内地址位数为13位,连到CPU低13位地址线A12~A0。
因为4000H~FFFFH为用户程序区,故RAM区高两位是01、10、11,低14位为全译码。RAM区大小为:3×214×8位=3×16K×8位= 48KB。
RAM芯片数为:
48K×8位 / 16K×8位 = 3×1 = 3,字方向上扩展3倍,位方向上不扩展。
RAM芯片内地址位数为14位,连到CPU低14位地址线A13~A0。
计算机的层次结构
在这里插入图片描述
工作过程:
1)CPU运行时,需要的操作数大部分来自寄存器
2)如需要从(向)存储器中取(存) 数据时,先访问cache,如在,取自cache
3)如操作数不在cache,则访问RAM,如在RAM中,则取自RAM
4)如操作数不在RAM,则访问硬盘,操作数从硬盘中读出→RAM →cache

时间局部性(Temporal Locality)
含义:刚被访问过的单元很可能不久又被访问
做法:让最近被访问过的信息保留在靠近CPU的存储器中
空间局部性 (Spatial Locality)
含义:刚被访问过的单元的邻近单元很可能不久被访问
做法:将刚被访问过的单元的邻近单元调到靠近CPU的存储器中
高速缓存(Cache)
作用:程序运行时,CPU使用的一部分数据/指令会预先成批拷贝在Cache中,Cache的内容是主存储器中部分内容的映象。
当CPU需要从内存读(写)数据或指令时,先检查Cache,若有,就直接从Cache中读取,而不用访问主存储器。
1、Cache映射
把访问的局部主存区域取到Cache中时,该放到Cache的何处?
Cache槽比主存块少,多个主存块映射到一个Cache槽中
如何进行映射?
把主存划分成大小相等的主存块(Block)
Cache中存放一个主存块的对应单位称为槽(Slot)或行(line)或块(Block)
将主存块和Cache行按照以下三种方式进行映射
直接(Direct):每个主存块映射到Cache的固定行中
全相联(Full Associate):每个主存块映射到Cache的任意行中
组相联(Set Associate):每个主存块映射到Cache的固定组中的任意一行中
直接映射:
在这里插入图片描述
全相联映射
主存快存放在Cache中的任意行,所以,主存地址被分为标记+块内地址
在这里插入图片描述
组相联映射
结合上述两种映射方法,将Cache按组划分,每组内采用全想联映射方法。所以主存地址分为标记+组索引+块内地址
在这里插入图片描述
平均访问时间
设H是命中率,则平均访问T= TC+ (1 - H)TM,TC是Cache访问时间,TM是主存访问时间。
虚拟存储
虚拟地址=虚拟页号+页内地址
物理地址=物理页号+页内地址
虚拟页号=标记+组索引
首先根据虚拟地址寻找到虚拟页号与页内地址
再根据虚拟页号中的组索引在块表(TLB)中寻找该组,并比较标记与有效位,若存在且有效,则取出物理页号与页内地址组成物理地址。若无效,则在页表中以虚拟页号寻找相应行并比较有效位,取出物理页号与页内地址组成物理地址。
根据主存与Cache映射方式将主存物理地址划分。
在Cache中寻找相应内容。

指令系统

指令格式:
指令应该包含:操作码;源操作数或地址;结果的地址;下一条指令的地址
指令的格式:
操作码+地址码
指令格式设计的基本原则:
尽量短
要有足够的操作码位数
指令编码必须要有唯一的解释
指令字长应是字节的整倍数
合理选择地址字段的个数
指令应尽量规整
指令系统设计的基本原则:
完备性
兼容性
均匀性
可扩充性
地址编码原则:
指令地址编码尽量短
存放空间大
计算过程简单
寻址方式
立即寻址:在指令中直接给出操作数本身(立即数)
直接寻址:指令给出操作数的有效地址(直接地址)
间接寻址:指令给出的地址码是存放操作数的主存单元地址
寄存器寻址:指令给出寄存器的编号,操作数在寄存器中
寄存器间接寻址:指令给出寄存器编号,寄存器中存放的是操作数的有效地址
变址寻址:指令给出基址,偏移量在变址寄存器中,通过相加得到有效地址
相对寻址:指令给出偏移量,基址由PC给出
基址寻址:指令给出偏移量,基址由基址寄存器给出
指令设计风格
按操作数位置指定风格来分
1、累加型指令系统:其中一个操作数含在累加器中,目的操作数也送到累加器中
2、栈型指令系统:将栈顶的两个操作数进行运算
3、通用寄存器型指令系统:操作数可以是来自寄存器或存储器数据
4、Load/Store型指令系统:操作数只能是来自寄存器数据,只有load/store能访问存储器
按指令格式的复杂度来分
CISC与RISC
RISC:
指令数目少
指令格式规整
采用Load/Store型指令设计风格
采用流水线方式执行指令
采用大量通用寄存器
采用优化的编译系统
MIPS指令格式
所有指令都是32位的,按地址对齐
R型指令:
两个操作数和结果都在寄存器的运算指令。仅有一种寻址方式:寄存器寻址
I型指令:
源操作数:一个寄存器,一个立即数,结果送到寄存器rt。寻址方式:寄存器寻址,立即数寻址,相对寻址,基址或变址寻址。
J型指令:直接给出26位直接地址。寻址方式:直接寻址
在这里插入图片描述

中央处理器(CPU)

CPU指令执行过程:取指令;PC=PC+1;指令译码;进行主存地址运算;取操作数;进行算数/逻辑运算;存结果;判断和检查异常事件;若有异常,则自动切换到异常处理程序;检查是否有中断请求,有则转中断处理
计算机性能的决定因素:
1、指令数目:由编译器和指令集决定
2、CPI:CPU决定
3、时钟周期:CPU决定
CPU由执行部件控制部件组成
数据通路
在这里插入图片描述
什么是数据通路?:
指令执行过程中,数据所经过的路径,包括路径中的部件。它是指令的执行部件
控制器的功能是什么:
对指令进行译码,生产指令对应的控制信号,控制数据通路的动作,能对执行部件发出控制信号,是指令的控制部件。
数据通路的构成:
操作元件存储元件通过总线方式或分散方式连接而成
数据通路的功能:
进行数据的存储、处理、传送
存储元件:
1、寄存器(组):
在这里插入图片描述
两个读口(组合逻辑操作):当RA、RB有效后,经过一个取数时间busA、busB有效
写(时序逻辑操作):当Wr有效时,随时钟边沿的到来,将busW的内容写进RW中
2、存储器:
在这里插入图片描述
读(组合逻辑操作):地址Address有效后,经过取数时间,DataOut输出Address存储的值
写(时序逻辑操作):Wr使能有效,随时钟边沿的到来,DataIn被写入Address指定的存储单元中
时钟周期的宽度如何确定?
Read/Write时间更长,故以此为准!
R型指令的数据通路:
在这里插入图片描述
在这里插入图片描述
功能:R[rd]=R[rs]opR[rt]
I型指令数据通路:
在这里插入图片描述
1、带立即数的逻辑(ori)指令
M[PC] 取指令(公共操作,取指部件完成)
R[rt] ← R[rs] or ZeroExt(imm16)
立即数零扩展,并与rs内容做“或”运算
PC ← PC + 4 计算下地址(公共操作,取指部件完成)
在这里插入图片描述
在这里插入图片描述
2、装入(lw)指令
M[PC] 取指令(公共操作,取指部件完成)
Addr ← R[rs] + SignExt(imm16) 计算存储单元地址 (符号扩展!)
R[rt] ← M [Addr] 装入数据到寄存器rt中
PC ← PC + 4 计算下地址(公共操作,取指部件完成)
在这里插入图片描述
3、存数(sw)指令
M[PC] 取指令(公共操作,取指部件完成)
Addr ← R[rs] + SignExt(imm16) 计算存储单元地址(符号扩展!)
Mem[Addr] ← R[rt] 寄存器rt中的内容存到内存单元中
PC ← PC + 4 计算下地址(公共操作,取指部件完成)
在这里插入图片描述
J型指令数据通路
M[PC] 取指令(公共操作,取指部件完成)
PC<31:2> ← PC<31:28> 串接 target<25:0> 计算目标地址
整个数据通路:
在这里插入图片描述
指令执行结果总是在下个时钟到来时开始保存在 寄存器 或 存储器 或 PC 中!
单周期CPU计算机的性能
单周期CPU的CPI为1
计算机的性能除了CPI以外,还取决于时钟周期的宽度
单周期CPU的时钟宽度为最复杂指令的执行时间

指令流水线

流水线的设计原则:1、指令流水段的个数以最复杂指令所用功能段个数为准;2、流水段的长度以最复杂的操作所花的时间为准。
若流水段数为M,指令条数为N,每个流水段的执行时间为T,则N条指令执行总时间为(M+N-1)T
指令流水段划分
公共段:IF(Ifetch):取指令并计算PC+4;Reg/Dec:寄存器取数并译码
1、R型指令:
IF;Reg/Dec;Ex;Wr
Wr:将计算结构写会寄存器
2、I型运算类指令:与R型一样
3、lw型指令:
IF;Reg/Dec;Ex;Mem;Wr
Mem:从存储器中读取数据
Wr:将结果写回寄存器
4、sw指令:
IF;Reg/Dec;Ex;Mem;
Mem:向存储器中写数据
不需要写回寄存器
5、beq指令:
与sw类似
6、j指令:
IF;Reg/Dec;WrPC
WrPC:直接将目标地址送入PC中
流水线冒险及处理
指令流水线中,会遇到一些情况使得流水线无法正确执行后续指令而引起流水线阻塞或停顿,这种现象称为流水线冒险。
根据冒险原因不同,分为:结构冒险、数据冒险、控制冒险
结构冒险
也称为硬件资源冲突,同一个部件被不同指令所使用,即由于硬件资源竞争引起的。
处理方法:1、功能划分原则(一个部件每条指令只能使用一次且在特定的时钟周期使用)。2、设置多个独立部件来避免硬件资源竞争
数据冒险
引起数据冒险的原因在于后面指令用到的数据前面指令还未产生
Load-use数据冒险:不能采用转发技术解决的数据冒险
处理方法:
1、插入空指令操作(插入空操作指令nop使相关治疗延迟执行)
2、插入气泡(在硬件上采取措施,使相关指令延迟执行)
3、采用转发技术(将数据通路生成的中间数据直接发到ALU输入端)
4、编译优化,调整指令顺序
控制冒险
由于发生了指令执行顺序改变而引起的流水线阻塞被称为控制冒险

系统总线

总线在各层次上提供部件之间的连接和交换信息通路
分类:
1、芯片内总线:在芯片内各元件之间提供连接
2、系统总线:在系统主要功能部件之间提供连接
单总线结构:将CPU、MM和各种I/O适配卡通过底板总线(Backplane Bus)互连,底板总线为标准总线(Industry standard)
多总线结构
将CPU、Cache、MM和各种I/O适配卡用局部总线、处理器-主存总线、高速I/O总线、扩充I/O总线等互连。主要有两大类:
Processor- Memory Bus (Design specific or proprietary)
短而快,仅需与内存匹配,使CPU-MM之间达最大带宽
I/O Bus (Industry standard)
长而慢,需适应多种设备,一侧连接到Processor- Memory Bus 或 Backplane Bus,另一侧连到I/O控制器
在这里插入图片描述
系统总线的组成
通常由一组控制线、一组数据线、一组地址线构成。
数据线 :承载在源和目的部件之间传输的信息;数据线的宽度反应一次能传送的位数
地址线:给出源数据或目的数据所在的主存单元或I/O端口的地址;地址线的宽度反应最大的寻址空间
信号线类型:
专用与复用
专用信号线:
信号线专用来传送某一种信息。
复用信号线:
信号线在不同的时间传输不同的信息。
信号分时复用的优缺点:
优:减少总线条数,缩小体积、降低成本。
缺:总线模块的电路变复杂,且不能并行。
总线裁决
什么是总线裁决?
当多个设备需要使用总线进行通信时,采用某种策略选择一个设备使用总线
如何总线裁决?
**在总线中引入一个或多个总线主控设备,只能主控设备控制总线 **
主控设备:能发起总线请求并控制总线。(如:处理器)
从设备:只能响应从主控设备发来的总线命令。(如:主存)
总线裁决有两种方式:集中式和分布式
集中式:将控制逻辑做在一个专门的总线控制器或总线裁决器中,通过将所有的总线请求集中起来利用一个特定的裁决算法进行裁决
菊花链总线裁决:
Grant从最高优先权的设备依次向最低优先权的设备串行相连。如果到达的设备有总线请求,则Grant信号就不再往下传,该设备建立总线忙Busy信号,表示它已获得了总线使用权。
查询电路:
在这里插入图片描述
优点:① 简单(simple) ,只需几根线就能按一定优先次序实现总线裁决。 ② 易扩充设备(flexible)
缺点:① 不能保证公正性 ② 对电路故障敏感 ③ 菊花链的使用限制了总线速度
计数器定时查询裁决:
总线控制器接收到BR送来的总线请求信号后,在总线未被使用(Busy=0)的情况下,由计数器开始计数,并将计数值通过设备线向各设备发出。当某个有总线请求的设备号与计数值一致时,该设备便获得总线使用权,此时终止计数查询,同时该设备建立总线忙Busy信号。
在这里插入图片描述
优点: ① 灵活,设备的优先级可通过设置不同的计数初始值来改变。
若每次初值皆为0,则固定;
若每次初值总是刚获得总线使用权的设备,则是平等的循环优先级方式。
② 对电路故障不如菊花链查询那样敏感。
缺点:① 需要增加一组设备线② 总线设备的控制逻辑变复杂(需对设备号进行译码比较等)
相当于“点名报道”
独立请求方式裁决:
总线控制器中有一个判优电路,可根据各设备的优先级确定选择哪个设备。控制器可给各请求线以固定的优先级,也可编程设置
在这里插入图片描述
分布式裁决:没有专门的总线控制器,其控制逻辑分散在各个部件或设备中
自举分布式裁决:
在总线裁决期间每个设备将比自己优先级高的请求线上的信号取回分析:
若有总线请求信号,则本设备不能立即使用总线
若没有,则可以立即使用总线,并通过总线忙信号阻止其他设备使用总线
在这里插入图片描述
优先级:
设备3>设备2>设备1>设备0
冲突检测方式裁决:
当某个设备要使用总线时,它首先检查一下是否有其他设备正在使用总线
如果没有,那它就置总线忙,然后使用总线;
若两个设备同时检测到总线空闲,则可能会同时使用总线,此时发生冲突;
一个设备在传输过程中,它会帧听总线以检测是否发生了冲突;
当冲突发生时,两个设备都会停止传输,延迟一个随机时间后再重新使用总线
总线定时问题
什么是总线的定时?
通过总线裁决确定了哪个设备可以使用总线,那么一个取得了总线控制权的设备如何控制总线进行总线操作呢?也即如何来定义总线事务中的每一步何时开始、何时结束呢?这就是总线通信的定时问题。
总线通信的定时方式
Synchronous (同步):用时钟来同步定时
Asynchronous(异步):用握手信号定时
Semi-Synchronous (半同步):同步(时钟)和异步(握手信号)结合
Split transaction(拆分事务):在从设备准备数据时,释放总线

I/O系统

I/O 系统的性能
两个常用的性能指标:
吞吐率,即I/O带宽:单位时间内从系统输入/输出多少数据?
单位时间内实现了多少次输入/输出操作?
响应时间,即等待延迟:在多长时间内完成请求的任务?
外部设备的通用模型
在这里插入图片描述
通过电缆与计算机内部I/O接口进行数据、状态和控制信息的传送
控制逻辑根据控制信息控制设备的操作,并检测设备状态
缓冲器用于保存交换的数据信息
变换器用于在电信号形式(内部数据)和其他形式的设备数据之间进行转换
在这里插入图片描述
I/O接口的结构
在这里插入图片描述
将I/O控制器中CPU能够访问的各类寄存器称为I/O端口
对外设的访问通过向I/O端口发命令、读状态、读/写数据来进行
I/O设备寻址方式
对I/O端口读写,就是向I/O设备送出命令或从设备取得状态或读/写设备数据
一个I/O控制器可能会占有多个端口地址
I/O端口必须编号后,CPU才能访问
I/O设备的寻址方式就是I/O端口的编号方式
统一编址方式(内存映射方式):与主存空间统一编址,将主存空间分出一部分地址给I/O端口进行编号。
CPU不直接通过读写控制信号IOR#、 IOW#对I/O端口读写,而是根据I/O端口在地址空间的位置,通过地址译码来实现。
地址线的高位参与片选控制逻辑。
无需设置专门I/O指令,只要用一般访存指令就可存取I/O端口。
IOR#和IOW#命令怎样呢?
也是访存指令,只是访问的范围不同
独立编址方式(特殊I/O指令方式)
不和主存单元一起编号,而是单独编号,使成为一个独立的I/O地址空间
通过不同的读写控制信号IOR#、 IOW#和 MEMR#、 MEMW#来实现对I/O 端口和存储器的读写。
一般I/O端口比存储器单元少,所以选择I/O端口时,只需少量地址线。
指令系统必须设计专门的I/O指令。
IOR#和IOW#命令怎样呢?
是专门的I/O指令,指令中给的地址可能相同,但操作命令不同!
I/O设备与主机进行数据交换的三种基本方式
在这里插入图片描述
工作方式:完全串行工作方式或部分串行,CPU用100%的时间为I/O服务!
在这里插入图片描述
当外设准备好时,便向CPU发中断请求,CPU响应后,中止现行程序的执行,转入一个“中断服务程序”进行输入/出操作,实现主机和外设接口之间的数据传送,并启动外设工作。 “中断服务程序”执行完后,返回原被中止的程序断点处继续执行。此时,外设和CPU并行工作。
中断响应
中断响应是指主机发现外部中断请求,中止现行程序的执行,到调出中断服务程序这一过程。
中断响应的条件
1 CPU处于开中断状态
2 在一条指令执行完
3至少要有一个未被屏蔽的中断请求
中断响应的时点与异常处理的时点是否相同?为什么?
一定是在一条指令执行结束后开始查询有无中断请求,有的话立即响应,所以一定是在指令执行完时响应中断,而“异常”发生在指令执行过程中,所以不能等到指令执行完才进行异常处理。
中断处理:
是指执行相应中断服务程序的过程。
不同的中断源其对应的中断服务程序不同。
典型的中断处理(中断服务程序)分为三个阶段:
先行段(准备阶段)
保护现场及旧屏蔽字
查明原因(软件识别中断时)
设置新屏蔽字
开中断
本体段(具体的中断处理阶段)
结束段(恢复阶段)
关中断
恢复现场及旧屏蔽字
清“中断请求”
开中断
中断返回

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/NiZjiTouA/article/details/93711903
今日推荐