第9章输入输出系统
9.1 输入输出系统概述
?1.输入输出的特性
?(1)异步性外设的工作速度与CPU相差很大。为了能使主机和外设充分提高工作效率,则要求输入输出操作异步于CPU。
?(2)实时性输入输出的操作必须按各设备实际工作速度,控制信息流量和信息交换的时刻,
这就是输入输出的实时性。
?(3) 设备无关性输入输出与具体设备无关,具有独立性。
? 2.接口
?接口是一种为主机和外设传送信息而设置的硬件线路。
? 3.接口的功能
?①识别设备
?②输入输出
?③数据缓冲
?④数据转换
?⑤传送主机命令,反映设备的工作状态。
?⑥接口除上述功能外,还应有检错纠错功能、
中断功能、时序控制功能等。
?4.I/0接口的主要组成
?①数据缓冲寄存器
?②设备地址识别线路
?③设备状态字寄存器
?④主机命令字寄存器
?⑤数据格式转换线路
?⑥数据地址寄存器。
?⑦控制逻辑。
?5,接口的编址方式
? (1)统一编址方式是把I/0端口当做存储器的单元进行分配地址。
?优点:不需要专门的输入输出指令,并使CPU访问I0的操作更灵活、更方便,
此外还可使端口有较大的编址空间。
?缺点:端口占用了存储器地址,使内存容量变小。再者,利用存储器编址的I/0
设备进行数据输入输出操作执行速度较慢。
?(2)单独编址方式是指I/0端口地址与存储器地址无关,是单独编址,CPU需要设置专门的输入输出指令访问端口。
?优点:输入输出指令与存储器指令有明显区别,程序编制清晰、利于理解。
?缺点:输入输出指令少,一般只能对端口进行传送操作,尤其需要CPU提供存储器读/写、I/0设备读/写两组控制信号,
增加了控制的复杂性。
? 6.信息交换的控制方式
? (1)程序直接控制方式
? (2)程序中断控制方式
(3)直接存储器存取控制方式(DMA)
(4)通道方式
(5)外围处理机方式
?程序查询方式和程序中断方式适用于数据传输率比较低的外围设备,而DMA方式、通道方式和PPU方式适用于数据传输率比较高的设备。目前,小型机和微型机中大都采用程序查询方式、程序中断方式和DMA方式。通道方式和PPU方式大都用在中、大型计算机中。
?7.接口的分类
? (1)串行接口接口和设备之间是一位一位地串行传送信息,而接口和主机之间则是按字或字节并行传送。接口能完成“串”转“并”
或“并”转“串”的转换。
?(2) 并行接口
?不管是接口与设备,还是接口与主机之间都是按字或字节并行传送数据信息。
9.2 程序直接控制方式
?1,基本原理
?程序直接控制方式的基本原理是用程序实现主机与外设间的信息交换。
?2.程序查询方式的接口
?程序查询方式基本接口示意图如图9.1
所示。
?传送一个数据的过程如下(见图9.1上的序号):
?①CPU通过接口启动外设工作,将BS触发器置1,请求传送数据,同时将RD触发器置0;
?②外设动作开始;
?③外设传送数据,同时CPU从I/O接口读入状态字;
?④假如这个设备没有准备就绪,则第③步重复进行,一直到这个设备准备好交换数据,将
RD触发器置1;
?⑤向CPU发出准备就绪信号“Ready”;
? CPU从I/O接口的数据缓冲寄存器输入数据,
或者将数据从CPU输出至接口的数据缓冲寄存器。与此同时,CPU将接口中的状态标志复位。
设备
CPU ② 动作开始
0 1
控 ① S BS

⑤ Ready 0 1
RD ④ 动作结束
⑥ ③
寄存器 数据缓冲器 输入数据
数据
图 9,1 程序查询方式接口示意图
3,程序控制方式的流程
启 动 设 备
查询设备状态
N
准备好?
Y
传 送 数 据
内存地址递增
传送量递减
N
传送完?
Y
关闭设备
程序控制流图
?显然,这种方式的优点是CPU的操作可以和I/O设备操作同步,且接口硬件比较简单。但缺点是,当程序进入循环时,
CPU只能踏步等待,不能处理其他任务。
9.3 程序中断方式
? 9.3.1 中断的定义
?中断是指计算机系统运行时,出现来自处理机以外的任何现行程序不知道的事件,CPU暂停现行程序,转去处理这些事件,待处理完备,
再返回原来的程序继续执行,这个过程称为中断,这种控制方式称为中断控制方式。
?它有4个特点:
?①CPU与外围设备可以并行工作;
?②能够处理异常事件;
?③数据的输入输出要经过CPU;
?④一般用来连接低速设备。
9.3.2 中断的分类
中断的分类如下,
自愿中断---指令中断
内中断 硬件故障
强迫中断
中断 软件中断
外设请求
外中断(强迫中断)
人的干预
?请求CPU中断的设备或事件称为中断源。根据中断源的不同类别,可以把中断分为内中断和外中断两种。
? (1) 内中断:发生在主机内部的中断称为内中断。
?内中断有强迫中断和自愿中断两种。
?①强迫中断产生的原因有硬件故障和软件出错等。
?Ⅰ.硬件故障包括由部件中的集成电路芯片、元件、器件、印刷线路板、导线及焊点引起的故障,电源电压的下降也属于硬件故障。
?Ⅱ.软件出错包括指令出错、程序出错、地址出错、数据出错等。强迫中断是在CPU没有事先预料的情况下发生的,此时CPU不得不停下现行的工作。
?②自愿中断是出于计算机系统管理的需要,自愿地进入中断。计算机系统为了方便用户调试软件、检查程序、调用外部设备,设置了自中断指令、进管指令。
CPU执行程序时遇到这类指令就进入中断。在中断中调出相应的管理程序,自愿中断是可以预料的。
?(2) 外中断:由主机外部事件引起的中断称为外中断,外中断均是强迫中断.
?9.3.3 中断源的建立与屏蔽
?①中断触发器
?当中断源发生引起中断的事件时,先将它保存在设备控制器的中断触发器中,
即将“中断触发器”置“1”。当中断触发器为“1”时,向CPU发出“中断请求”信号。每个中断源有一个中断触发器,全机的多个中断触发器构成中断寄存器,
其内容称为中断字或中断码。CPU进行中断处理时,根据中断字确定中断源,
转入相应的服务程序。
?②中断屏蔽
?为了便于控制中断请求信号的产生,也为了利用屏蔽码改变中断处理的优先级别,当产生中断请求后,用程序方式有选择地封锁部分中断,而允许其余部分中断仍得到响应,称为中断屏蔽。
?实现方法是为每个中断源设置一个中断屏蔽触发器来屏蔽该设备的中断请求。具体说,
用程序方法将该触发器置“1”,则对应的设备中断被封锁,若将其置“0”,才允许该设备的中断请求得到响应,由各设备的中断屏蔽触发器组成中断屏蔽寄存器。
?有些中断请求是不可屏蔽的。也就是说,
不管中断系统是否开中断,这些中断源的中断请求一旦提出,CPU必须立即响应。例如,电源掉电就是不可屏蔽中断。
所以,中断又分为可屏蔽中断和非屏蔽中断。非屏蔽中断具有最高优先权。
?屏蔽中断请求的方法如图9.4所示,当中断屏蔽触发器的输入D为0时,能产生中断请求信号;D为1时,屏蔽中断请求信号。

IRQ IRQ
INR
D
&
& INR
D
INM
D
准备好R
INM
D
准备好R 屏蔽码D
屏蔽码D 图 9,4 屏蔽中断请求的方法
?9.3.4 中断优先权
?所谓优先权是指有多个中断同时发生时,对各个中断响应的优先次序。中断的优先权由排队电路来裁决。
?
?9.3.5 CPU响应中断的条件
?(1) 在CPU内部设置的中断允许触发器必须是开放的,STI指令开中断;CLI指令关中断。
?(2) 外设有中断请求时,中断请求触发器必须处于“1”状态,保持中断请求信号。
?(3) 外设(接口)中断屏蔽触发器必须为“0”,
这样才能把外设中断请求送至CPU。
?(4) CPU在现行指令结束的最后一个状态周期。
?(5) 无DMA请求。
一旦CPU响应中断的条件得到满足,
CPU开始响应中断,转入中断服务程序,
进行中断处理。
?9.3.6 程序中断的处理过程
?(1)关中断
?进入不可再次响应中断的状态,由硬件自动实现。
?(2)保存断点
?为了在中断处理结束后能正确地返回到中断点,在响应中断时,必须把当前的程序计数器PC中的内容(即断点)保存起来。
? (3)识别中断源,转向中断服务程序。
?在多个中断源同时请求中断的情况下,本次实际响应的只能是优先权最高的那个中断源。所以,需进一步判别中断源,并转入相应的中断服务程序入口。
? (4)保存现场、交换屏蔽字
?进入中断服务程序后首先要保存现场,现场信息一般指的是程序状态字,中断屏蔽寄存器和
CPU中某些寄存器的内容。保存旧的屏蔽字是为了中断返回前恢复屏蔽字,设置新的屏蔽字是为了实现屏蔽字改变中断优先级或控制中断的产生。
? (5)开中断。
?因为接下去就要执行中断服务程序,开中断将允许更高级中断请求得到响应,实现中断嵌套。
? (6)执行中断服务程序主体。
?不同中断源的中断服务程序是不同的,实际有效的中断处理工作是在此程序段中实现的。
? (7)关中断
?是为了在恢复现场和屏蔽字时不被中断打断。
? (8)恢复现场和屏蔽字
?将现场和屏蔽字恢复到进入中断前的状态。
?(9)中断返回
?中断返回是用一条IRET指令实现的,它完成恢复断点的功能,从而返回到原程序执行。
?
?中断的处理过程如图9.6所示。
,
关中断
保存断点 硬件完成
识别中断源
保存现场和屏蔽字
设置新的屏蔽字
开中断
执行中断服务程序主体 中断程序完成
关中断
恢复现场和屏蔽字
开中断
中断返回恢复断点 硬件完成
图9.6 中断的处理过程
?进入中断时执行的关中断、保存断点操作是由硬件实现的,它类似于一条指令,
但它与一般的指令不同,不能被编写在程序中。因此,常常称为“中断隐指令”。
?
?9.3.7 中断识别的方法
?如何确定中断源,并转入被响应的中断服务程序入口,大致有三种不同的方法。
? 1.程序查询法
?如图9.7所示,每一个中断源都附带一个标志,该标志置位代表相应中断源请求中断,因此,判别中断条件只需用测试指令按一定优先次序检查这些标志,先遇到的第一个“1”标志即优先得到服务,在此之前,遇到“0”标志均跳过而继续检查下一个。中断查询法程序流程图如图9.8所示。
?在这种查询方式下,当有中断请求时,CPU
就转向固定的中断查询程序入口,执行流程图的程序,程序查询的顺序决定了设备中断优先权。当确定了请求中断的最高优先设备后,立即转去执行该设备的中断服务程序。
?这种软件查询方法适用于低速和中速设备。
它的优点是中断条件标志的优先级可用程序任意改变,灵活性好。缺点是设备多时速度太慢。
图9.7 中断请求逻辑图图9.8 中断查询程序流程图
?2.硬件查询法
?硬件查询法的逻辑线路如图9.11所示。每个中断请求信号保存在“中断请求”触发器中,经“中断屏蔽”触发器控制后,产生来自中断请求触发器的请求信号IR
1

IR
2
、IR
3
、IR
4

?中断屏蔽寄存器的作用是改变中断处理的优先级别,在此假设中断屏蔽寄存器是全“0”,即将所有中断全设为允许,中断屏蔽码的使用后面将介绍,在此暂不考虑。
00010000 00010001 00010010 00010011 5V
SB1 SB2 SB3 SB4
& & & &
IS
l
IR
l
IS
2
IR
2
IS
3
IR
3
IS
4
IR
4
& & & &
排队电路
IR
l
IR
2
IR
3
IR
4
& & & &
中断请求寄存器 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 中断屏蔽寄存器
1 2 3 4 1 2 3 4
D
0
向量编码电路
INTA
INTR
INTI INTO
a
b
D
7
c

IR
1、
IR
2、
IR
3、
IR
4中任意一个为低电平
时,INTR就为低电平。
INTI为中断排队输入信号,INTO为中断排队
输出信号。当INTI=
0
时,若有请求则可进行
排队;若无请求则INTO=
0
,允许下一级进行
排队,所以INTI和INTO用于级连。
①设
IR
2为低电平,则INTR为低电平,
CPU
收到
中断信号后,若满足中断响应条件,则
CPU
发中
断响应信号
INTA

因为
IR
1=
0
,INTI=
0
,所以
a

0
,即当
IR
1无
请求时,将INTI=
0
传到
a
点。
因为
IR
2=
1

a

0
,所以
b

1

c=1
、INTO=
1

即当
IR
2有请求时,封锁了后面的中断请求。同时,
由于
IR
2=
1

IS
2
1 INTA 1 SB2
电平,从而在数据总线上产生设备地址
00010001

=、=,所以输出高
②设
IR
1、
IR
2同时为高电平,则
INTR为低电平,
CPU
收到中断信号后,若满足中断响应条件,则
CPU
发中断响应信号
INTA

因为
IR
1=
1
,INTI=
0
,所以
a

1

b

1

c=1

INTO =
1
,即当
IR
1有请求时,封锁了后面的中
INTO断请求,
IR
2的请求得不到响应。同时,由于
IR
1=
1

IS
1=
1

INTA

1
,所以
SB1
输出高电
平,从而在数据总线上产生设备地址
00010000

因此可见,
IR
1的请求的优先级高于
IR
2的请求;
IR
2
的请求的优先级高于
IR
3的请求,依此类推。
?编码电路根据排队的中断源输出信号IR
i
产生一个预定的地址码,在微机中称中断类型号,采用中断向量法转向中断服务程序入口地址。用中断向量来识别中断源,从而产生中断服务程序入口的地址的中断称为向量中断。中断向量是中断源的中断服务程序入口地址的地址。
在微机中一般是设一个中断向量表,中断向量表是中断类型码与对应的中断服务程序之间的连接表。
,
00000H
类型
0
中断处理
IP
程序入口地址
CS
00004H
类型
1
中断处理
IP
程序入口地址
CS
003FCH
类型
255
中断处理
IP
003FFH
程序入口地址
CS

9,13
中断矢量表
?中断向量表占用主存中从00000H~003FFH共
1K个字节的存储空间,表中内容分为256项,
对应于中断类型号0~255。每一项占四个字节,
用来存放中断处理子程序的入口地址信息,高地址的两字节用来存放中断处理子程序所在段的段首址,低地址的两字节用来存放中断处理子程序入口处在段的偏移地址。其结构如图
9.13所示。
?从中断矢量表的结构可知,n号中断处理程序的入口地址存放在表中4×n ~4×n+3共四个字节。当CPU响应n 号中断源的中断请求取出n
号中断处理程序的入口地址送入IP和CS之中。
?这种方法的优点是速度快,但是以增加线数为代价的。
? 9.3.8 单级中断处理和多重中断处理
? 1.单级中断处理
?单级中断处理是一种简单的处理方式。当不同优先等级的设备同时请求中断时,CPU按照优先级一个一个处理。当CPU正在处理某个中断时,不允许其它设备再中断CPU的程序,即使优先级高的设备也不能打断,只能等到中断处理完毕后,CPU才响应其它中断。例如,优先等级是:A→B→C→CPU,B设备请求中断时,
A、C设备还没有请求。在CPU处理B设备中断时,A、C同时提出了请求,此时CPU运行轨迹如图9.12所示。
,
CPU B处理 A处理 C处理
B请求 A、C请求

9.12
单级中断处理
?2.多重中断处理
?多重中断是指在处理某一个中断过程又发生了新的中断请求,从而中断该服务程序的执行,又转去进行新的中断处理。
这种重叠处理中断的现象又称为中断嵌套。一般情况下,在处理某级中的某个中断时,与它同级的或比它低级的新中断请求应不能中断它的处理,而在处理完该中断返回主程序后,再去响应和处理这些新中断。而比它优先级高的新中断请求却能中断它的处理。
?图9.13所示为一个4级中断嵌套的例子。4级中断请求的优先级别由高到低为A→B→C→D的顺序。在CPU执行主程序过程中同时出现了两个中断请求B和C,因B中断优先级高于C中断,
应首先去执行B中断服务程序。若此时又出现了D中断请求,则CPU将不予理睬。B中断服务程序执行完返回主程序后,再转去执行C的中断服务程序,然后执行D中断服务程序。若在CPU再次执行B中断服务程序过程中,出现了A中断请求,因其优先级高于B,则CPU暂停对B中断服务程序的执行,转去执行A中断服务程序。等A中断服务程序执行完后,再去执行B中断服务程序。在本例中,中断请求次序为B,C→D→B→A;而中断完成次序为
B→C→D→A→B,两者不相同。
,
D程序
C程序
B程序
A程序
B、C D B A
同时请求 请求 请求 请求
图9.13 多重中断处理
? 3.用屏蔽改变多重中断处理次序
?中断级的响应次序是由硬件(排队判优线路)来决定的。但是,在有优先级中断屏蔽控制条件下,系统软件根据需要可以改变屏蔽位的状态,
从而改变多重中断处理次序。
?利用屏蔽技术可以改变各设备的优先等级,使计算机适应各种场合的需要。严格地说,优先级包含两层意思,第一层是响应优先级,第二层是处理优先级。
?响应优先级是指CPU对各设备中断请求进行响应,并准备好处理的先后次序,这种次序往往在硬件线路上已固定,不便于变动。
?处理优先级是指CPU实际上对各中断请求处理的先后次序。如果不使用屏蔽技术,
响应的优先次序就是处理的优先次序。
?现代计算机一般都使用了屏蔽技术,即通过控制各设备接口的屏蔽触发器状态,达到改变处理次序的目的。
? CPU送往各设备接口屏蔽触发器状态信息的集合,称为屏蔽码
?例9.1 设某机有四级中断A、B、C、D,
其硬件排队优先次序为A>B>C>D,现要求将中断处理次序改为D>B>A>C:
?(1)表9.1(a)中各级中断程序的屏蔽位应如何设置(设“0”为允许,“1”为屏蔽,CPU
状态时屏蔽码为0000)?
表9.1(a) 例9.1
设 备
A设备 B设备 C设备 D设备
A设备服务程序
B设备服务程序
C设备服务程序
D设备服务程序
?(2)请按下图所示时间轴给出的设备中断请求时刻,画出CPU执行程序的轨迹,A、
B、C、D 中断服务程序的时间宽度均为
20us。
(2) 。
0 10 20 30 40 50 55 60 70 80
C B D A B t (us)
?【例题答案】
? (1)中断程序的屏蔽位应如何设置见表9.1(b)。
表9.1(b) 例9.1中断屏蔽码的设置
设 备
A设备 B设备 C设备 D设备
CPU程序 0 0 0 0
A设备服务程序 1 0 1 0
B设备服务程序 1 1 1 0
C设备服务程序 0 0 1 0
D设备服务程序 1 1 1 1
(2)CPU执行程序的轨迹如图9.21。
D程序
C程序
B程序
A程序
0 10 20 30 40 50 55 60 70 80
C B D A B t (us)
图9.21 例9.1 CPU执行程序的轨迹
? 9.3.9 中断服务程序
?中断服务程序由3部分组成;即前处理部分、
主体部分和后处理部分,如图9.15所示。
? (1)前处理部分
①封锁优先级与本设备相同或比本设备低的中断请求。因为这些中断请求虽然没有得到响应,
但请求信号依然存在,这样CPU每执行一条指令,就要判断一下是否响应,而因优先级不比本设备高,判断结果为不能响应,然后再转回执行服务程序。只要这些中断请求信号存在,
就总是干扰着服务程序的执行。封锁操作是通过对接口屏蔽触发器的重新设置来实现的,称这一操作为设置新屏蔽码。
?②保护中断时的CPU现场。除了PC和
PSW外,如果服务程序中还要使用其它寄存器,那么必须将它们原来的内容也压入堆栈。一般来说,动用哪个寄存器,
就保存哪个寄存器的内容,以尽量减少时间开销。
?③开放中断。在中断响应时,CPU内的中断允许触发器是自动关闭的,其目的是在替换新老屏蔽字和保护现场操作时禁止一切中断,以免引起CPU现场混乱。
何时允许中断,要根据前处理指令条数而定。前处理的最后一条指令是开中断指令,它将中断允许触发器置1。
保护现场交换屏蔽字前处理部分开中断中断服务主体部分关中断恢复现场后处理部分恢复屏蔽字开中断中断返回图9,15 中断服务程序流程图
?(2)主体部分
?中断服务程序的主体部分是根据中断源的要求编写的。
?有的是进行数据传送,有的是检查设备,
有的是数据传送完毕后的结束处理,根据不同情况,主体部分可以是一条指令,
也可以是一段程序。
?(3)后处理部分
?①关闭中断允许触发器(置0)。这时的关闭操作用指令实现。
?②恢复现场。把前处理中压入堆栈的数据送回原来的寄存器中。
?③恢复中断前的屏蔽码。
?④开放中断,将CPU中的中断允许触发器置1,允许设备请求中断。这里应指出,
开放中断指令中的开中断操作在硬件上延时到下一条指令执行时才完成,这样可避免断点地址的混乱。
? (4)中断返回
?中断服务程序的最后一条指令是中断返回指令。
该指令将压入堆栈中的原PC和PSW送回相应的寄存器。原程序从断点开始又继续执行下去。
中断时,哪一个程序被中止,则中断返回指令执行后,哪个程序就被恢复运行。
?上面所述的操作过程是一个典型的过程,但并不是一种固定不变的程式,各种机器的设计方案和硬件结构各不相同,中断处理的具体操作也就各不相同。
?
? 9.3.10 中断方式的接口
?中断控制接口见P335图10.6逻辑。
?它包括4个D型触发器,其中两个工作状态寄存器:完成触发器(DONE)和忙触发器(BUSY);
还有一个中断请求触发器(1NTR)和一个中断屏蔽触发器(MASK)。
?程序中断的工作过程:
?①当该设备被选中,即选中信号(SEL)为高电平时,置“1”触发器(BUSY),启动设备,同时使完成触发器(DONE)置“0”。
?②数据由外设传送到接口的缓冲寄存器或外设将接口缓冲寄存器中的数据取走;
?③当设备动作结束或缓冲寄存器数据填满时,设备向接口送出一控制信号,将数据“准备就绪”标志DONE置“1”;
?④如果此时屏蔽触发器为“0”态,则在
CPU送来的指令结束信号RQENB的作用下,使中断请求触发器置“1”,向CPU
发出中断请求信号INTR。但若中断屏蔽触发器处于“1”态,则即使DONE触发器为“1”,仍不能产生中断请求信号,直到中断屏蔽触发器为“0”态为止。中断屏蔽触发器是由I/O指令利用MASK的上升边来置位或复位的。
?⑤若CPU是开中断状态则向外设发出响应中断信号INTA,并关闭中断;
?⑥在中断向量逻辑中通过排队判优,将选中的设备地址或中断向量送CPU,CPU通过设备地址或中断向量形成中断程序入口地址,从而转向该设备的中断服务程序;
?⑦在中断服务程序通过输入/输出指令进行数据传送。
?⑧中断服务程序结束后CPU送来的复位(I/O
总清)信号IORST,将接口中的BUSY和DONE
和INTR标志复位。
? 9.3.11 程序中断I/0方式和程序I/0方式的比较
? (1) 在程序I/O中,何时对何设备进行输入或输出操作完全受CPU控制;在中断I/0中,何时对设备操作由外围设备主动通知CPU。
? (2) 程序I/0方式中,CPU与外围设备不能并行工作;中断方式由于不需要CPU与外围设备的同步工作,所以它们可以并行操作。
? (3) 程序I/0方式中无法处理异常事件,如掉电、
非法指令、地址越界等;中断I/0方式可以处理随机时间,所以可处理这些异常。
? (4) 程序查询方式,优点是硬件结构比较简单,
缺点是CPU效率低且程序查询方式只能进行数据传送。中断方式硬件结构相对复杂一些。
9.4 DMA方式
?1,基本概念
?①DMA方式即直接内存访问方式,它是完全由硬件执行I/0交换的工作方式。在这种方式下,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,
而直接在内存与设备之间进行。因此数据交换的速度高,适用于高速成组传送数据,目前,磁盘与主存之间的数据传送,都采用DMA方式。
?②DMA的优点和缺点:DMA方式的优点是速度快。由于CPU根本不参加传送操作,因此省略了CPU取指令、取数和送数等操作。在数据传送过程中也不需要像中断方式一样,执行现场保存、现场恢复等工作。内存地址的修改、传送字个数的计数也直接由硬件完成,而不是用软件实现。它的主要缺点是硬件线路比较复杂。
? 2.三种DMA传送方式
? DMA技术的出现,使得外围设备可以通过
DMA控制器直接访问内存,与此同时,CPU可以继续执行程序。那么DMA控制器与CPU怎样分时使用内存呢?通常采用以下三种方法。
? (1)停止CPU访问内存
?当外围设备要求传送一批数据时,由DMA控制器发一个停止信号给CPU,要求CPU放弃对地址总线、数据总线和有关控制总线的使用权。
DMA控制器获得总线控制权以后,开始进行数据传送。在一批数据传送完毕后,DMA控制器通知CPU可以使用内存,并把总线控制权交还给CPU,在这种DMA传送过程中,CPU基本处于不工作状态或者说保持状态。
?这种传送方法的优点是控制简单,它适用于数据传输率很高的设备进行成组传送。缺点是在DMA控制器访内存阶段,
内存的效能没有充分发挥,相当一部分内存工作周期是空闲的,这是因为,在外设传送一批数据时,CPU不能访问主存。因主存的存取速度高于外设的工作速度,所以DMA工作期间,主存的效能没有充分发挥。如软盘读一字节约要
32μs,而RAM的存取周期只有1μs,
那么就有(32-1)μs=31μs主存是空闲的,浪费较大。
?(2)周期挪用
?在这种DMA传送方法中,当I/O设备没有DMA请求时,CPU按程序要求访问内存,一旦I/O设备有DMA请求,则由I
/O设备挪用一个或几个内存周期。
?与停止CPU访内的DMA方法比较,周期挪用的方法既实现了I/O传送,又较好地发挥了内存和CPU的效率,是一种广泛采用的方法。
? (3)DMA与CPU交替访内
?这种方式是将CPU工作周期一分为二,一半由
DMA使用,一半为CPU使用。时间上不会发生冲突,可以使DMA传送和CPU同时发挥最高的效率。
?这种方式不需要总线使用权的申请、建立和归还过程,总线使用权分时控制的。CPU和DMA
控制器各自有自己的访内地址寄存器、数据寄存器和读/写信号等控制寄存器。这种总线控制权的转移几乎不需要什么时间,所以对DMA
传送来讲效率是很高的。但CPU的系统周期比存储周期长得多,且相应的硬件逻辑也就更加复杂。
? 3,基本的DMA控制器
?图9.17为一最简单的DMA控制器组成示意图,
它由以下逻辑部件组成:
?①内存地址计数器:用于存放在内存中要交换数据的地址。
?②字计数器:用于记录传送数据块的长度。
?③数据缓冲寄存器:用于暂存每次的数据(一个字)。
?④DMA请求标志:当设备准备好一个字后给出一个控制信号,使DMA请求标志置1。该标志位置位后,再向控制/状态逻辑发送DMA请求,
CPU响应此请求后发回响应信号HLDA。控制/
状态逻辑接收到此信号后发出DMA响应信号,
使DMA请求标志复位,为交换下一个字做准备。
?⑤控制/状态逻辑:由控制和时序电路,以及状态标志组成,用来修改内存地址计数器和字计数器,指定传送类型(输入或输出),并对DMA请求信号和CPU响应信号进行协调和同步。
?⑥中断机构:当一组数据交换完毕时,由溢出信号触发中断机构,向CPU提出中断报告。
系统总线
中断请求 数据线 地址线
中断机构 内存地址计数器
内 HOLD 控制/状态逻辑 字计数器 +1
存 CPU HLDA
DMA请求 数据缓冲
DMA DMA请求 寄存器 设备选择
响应 标志 数据
一字传送结束信号 设备
9.17 DMA控制器框图
4,DMA操作过程(周期挪用方式)。
DMA的数据块传送过程可分为3个阶段,即准备阶段,
传送阶段、结束阶段。
主机用指令向DMA接口传送,
①读或写的命令。
②向DMA接口中的内存地址计数器送数据块在主存的首址。
准备阶段 ③向DMA控制器的设备地址寄存器中送入设备号。
④向字计数器中送入交换的数据字个数。
启动DMA
①外设准备好发送数据(输入)或接收数据(输出)时,
向主机发DMA请求。
②CPU在本机器周期执行完毕后响应该请求并使
CPU的总线驱动器处于高阻状态,让出主存使用权;
③DMA发送主存地址、读/写命令;
④挪用一个存储周期,传送一个数据,主存地址加
1,字计数器减1。
⑤判断数据是否传送完毕,即:字计数器是否为0
?若字计数器不为0,撤销DMA请求,返回①
?若字计数器为0,则传送完毕,进入结束阶段。
? DMA数据传送的流程图如图9.18所示。
传送阶段
,
DMA请求
DMA响应
发送内存地址
传送一个字数据
修改内存地址指针
字计数器计数
传送结束? Y 结束DMA
N
9.18 DMA数据传送的流程图
?结束阶段:DMA向主机发出中断请求,
报告结束。一旦DMA的中断请求得到响应,CPU将停止主程序的执行,转去执行中断服务程序进行DMA操作的后处理。
包括校验送入内存的数据是否正确;决定使用DMA方式传送数据还是结束传送;
测试传送过程中是否发生错误。
9.5 通道方式
?1,通道的基本功能
? (1)接受CPU的I/O指令,按要求启动外设。
? (2)执行通道指令。
? (3)组织外设与主存间的数据传送。
?(4)向CPU报告外设的状态信息和中断信息。
?2.通道的类型
?(1)字节多路通道
?字节多路通道主要用于连接大量的低速设备,这些设备的数据传输率很低,而通道从设备接收或发送一个字节只需要几百纳秒,因此通道在传送两个字节之间有很多空闲时间,字节多路通道正是利用这个空闲时间为其他设备服务。
? (2) 选择通道
?选择通道又称高速通道,在物理上它可以连接多个设备,但是这些设备不能同时工作,在某一段时间内通道只能选择一个设备进行工作,
当这个设备的通道程序全部执行完毕后,才能执行其他设备的通道程序。
?选择通道主要用于连接高速外围设备,如磁盘、磁带等,信息以成组方式高速传输。由于数据传输率很高,通道在传送两个字节之间已很少空闲,所以在数据传送期间只为一台设备服务。
? (3) 数组多路通道
?数组多路通道是对选择通道的一种改进,它的基本思想是当某设备进行数据传送时,通道只为该设备服务;当设备在执行寻址等辅助性动作时,通道暂时断开与这个设备的连接,挂起该设备的通道程序,去为其他设备服务,即执行其他设备的通道程序。
?由于数组多路通道既保留了选择通道高速传送数据的优点,又充分利用了辅助性操作的时间间隔为其他设备服务,使通道效率充分得到发挥,因此数组多路通道在实际系统中得到较多应用。
9.6 几种I/0方式的比较
?在计算机系统中,CPU管理外围设备的方式有程序查询方式、程序中断方式、
DMA方式、通道方式和外围处理机方式。
其中前3种技术在现在的微型计算机系统中是非常常见的,后两种主要用于比较复杂的高档计算系统中,外围处理机方式可以看成是通道处理机的进一步扩展。
如图9.20所示是一个分类示意图。

I/O控制方式
主要由程序实现 主要由硬件实现
程序 程序 外围
查询方式 中断方式 DMA方式 通道方式 处理机方式
图9.20 外围设备的输出输入方式分类