IO
I/O接口:
将外设连接到总线上的一组逻辑电路的总称。 用以实现外设与主机之间的信息交换
l/O端口:
接口中的寄存器,可以由CPU读或写
端口分为三部分:
- 数据端口
- 状态端口
- 控制端口
CPU同外设间交换的信息由三类:
数据信息
三种类型
数字量
二进制信息——数
ASCII码表示的数或字符
模拟量:具体的值
开关量
2.状态信息: 表示外设当前所处的工作状态。
3.控制信息: 由CPU发出的,用于控制I/O接口的工作方式以及外设的启动和停止等。
I/O端口的访问
1、输入指令
格式:IN 累加器,端口
功能:把端口中数据读到AL、或AX中。
例:IN AL,21H MOV DX,201H
IN AX,DX
2、输出指令
格式:OUT 端口,累加器
功能:把寄存器AL、或AX中数据输出到端口。
例: OUT 32H,AL MOV DX,201H
IN DX,AX

CPU与外设交换数据的方式:
程序控制传递方式(都在运行指令)
特点:
- 以CPU为中心,控制来自CPU,通过预先编写好的 I/O 程序实现数据的传送。
- 速度偏低,传送路径经过CPU内部寄存器同时数据 I/O 响应也比较慢
无条件传送方式 (同步传送方式)
特点:适用于总是处于准备好状态的外设
方法:把 I/O 指令插入到程序中,当程序执行到该指令时,外设已做好准备,于是在此指令时间内完成数据传送任务。
优点:软件及接口硬件简单
缺点:CPU效率低,只适用于简单外设,适应范围较窄
asm#无条件查询方式 mov al,01h LL:mov dx,300h out dx,al rol al,1 jmp ll
查询传送方式 (异步传送方式)
当CPU同外设不同步且不知道外设工作速率时,可采用此方式传送。传送数据前,CPU必须先对外设进行状态检测(查状态位)。
适应场合:
外设并不总是准备好
对传送速率和效率,要求不高
对外设及接口的要求:
外设应提供设备状态信息
接口应具备状态端口
完成一次传送过程的步骤如下:
- 通过执行一条输入指令,读取所选外设的当前状态(读状态口)
- 根据该设备的状态决定程序去向
- 外设 "忙" 或 "未准备就绪" ——> 重复检测外设状态
- 外设 "空" 或 "准备就绪" ——> 发出 I/O 指令,进行一次数据传送(数据口)
- 优点:软件比较简单
- 缺点:CPU效率低,数据传送的实时性差,速度较慢。
asm#查询传送方式 ll:mov dx,400h in al,dx #去400h端口查询状态位 test al,08h jz ll #判断是否等于1,等于1为准备好,否则继续查 mov ax,1000h mov ds,ax mov al,2000h mov dx,300h out dx,al #送 [1000]:[2000] 数据给 300h端口
中断传送方式
- 无条件传递和查询传送的缺点是:CPU和外设只能串行工作
- 为了提高系统的工作效率,充分发挥CPU的高速运算能力,引入了 "中断" 系统,利用中断来实现CPU与外设之间的数据传送,这就是中断传送方式。
特点(外设主动打断CPU):
外设在需要时间向CPU提出请求,CPU再去为它服务。服务结束后或在外设不需要时,CPU可执行自己的程序。
中断使CPU和外设以及外设之间能并行工作。
工作过程:
在中断传送方式中,需要提前安排好某一服务程序(外设),当外设完成数据传送的准备后,向CPU发出中断请求信号,在CPU可以响应中断的条件下,主程序被 "中断" ,转去执行 "中断服务程序",来服务中断。
优点:
CPU效率高,实时性好,速度快
缺点:
程序编制较为复杂
以上三种 I/O 方式的共性
无条件、查询、中断、程序、均需 CPU 作为中介:
软件:外设与内存之间的数据传送是通过 CPU 执行程序来完成的。
硬件:I/O 接口和存储器的读写控制信号,地址信号都是由 CPU 发出的。
缺点:
程序的执行速度限定了传送的最大速度。
DMA(直接存储器读取)传递方式
外设和内存之间之间传送数据的方式,即 DMA 传送方式,在 DMA 传送方式中,对这一数据传送过程进行控制的硬件称为 DMA 控制器(DMAC)。
特点:
外设直接与存储器进行数据交换,不需要 CPU 干预也不需要软件介入。
总线由DMA控制器(DMAC)进行控制(CPU要放弃总线控制权),内存/外设的地址和读写控制信号均由DMAC提供。
1.DMA操作的基本方法
(1)周期挪用(Cycle Stealing)
(2)周期扩散
(3)CPU停机方式
最常用,最简单的传送方式
2.DMA的传送方式
(1)单字节传送方式
每次DMA传送只传送一个字节就立即释放总线。
(2)成组传送方式
DMAC在申请到总线后,将一组数据传送完后才释放总线,而不管中间DREQ是否有效。
(3)请求传送方式(查询传送方式)
成组传送,但每传送一个字节后,DMAC查DREQ,有效传,无效挂起。
3.DMAC(DMA控制器)的基本功能(查询传送方式)
(1)能接收外设的请求,向CPU发出DMA请求信号。
(2)当接到CPU发出DMA响应信号后,DMAC接管对总线的控制,进入DMA方式。
(3)能寻址存储器,即能输出地址信息和修改地址。
(4)能向存储器和外设发相应的读/写控制信号。
(5)能控制传送的字节数,判断DMA是否结束。
(6)在DMA传送结束后,能结束DMA请求信号,释放总线,使CPU恢复正常工作。
统一编址(存储器映像):
在这种编址方式中,I/O 端和内存单元统一编址,即把 I/O 端口当作内存单元对待,从整个内存空间中,划出一个子空间给 I/O 端口,每一个 I/O 端口分配一个地址码,用访问存储器的指令对 I/O 端口进行操作。
优点:
访问内存指令适用于 I/O 端口,对于 I/O 端口的数据处理能力强。
CPU 无需产生区别访问内存操作和 I/O 操作的控制信号,从而可减少引脚。
缺点:
程序中 I/O 操作不清晰,难以区分程序中的 I/O 操作和存储器操作
I/O 端口占用了一部分内存空间
独立编址(8086在用):
8086采用的是 IO 独立编址
I/O 端口编址和存储器的编址相互独立,即 I/O 端口地址空间和存储器地址,空间分开设置,互不影响。采用这种编址方式,对 I/O 端口的操作使用输入、输出指令(I/O 指令)需要用 m/I O 非区分访问的是内存还是 I/O (外部空间)
优点:
不占用内存空间
使用 I/O 指令,程序清晰,很容易看出是 I/O 操作还是存储器操作
译码电路比较简单(因为 I/O 端口的地址空间一般比较小,所用地址线也就较少)。
缺点:
需要特点的引脚来区分内存和 IO 单元的访问。