文章目录
- 1、直接程序控制
- 无条件传送方式
- 一、基本原理
- 二、工作流程
- 程序查询方式
- 一、基本原理
- 二、工作流程
- 2、中断方式
- 一、基本原理
- 3、直接存储器存取方式
- 一、基本原理
- 二、关键组件与机制
- 三、工作流程(以磁盘读取为例)
- 四、DMA传输模式
- 4、输入输出处理机
- 一、核心功能
- 二、工作原理
1、直接程序控制
无条件传送方式、程序查询方式。
无条件传送方式
无条件传送方式是计算机输入输出(I/O)设备管理中的一种基础数据传输机制,其核心特点是假设外设始终处于就绪状态,CPU无需检测设备状态即可直接进行数据读写。
一、基本原理
1、同步假设:
无条件传送方式基于一个关键假设:外设的数据准备速度与CPU的传输速度完全匹配,即外设始终准备好接收或发送数据。例如,开关状态、LED显示等简单设备,其状态变化由CPU直接控制,无需额外同步。
2、直接操作:
CPU通过I/O指令(如IN、OUT)直接访问外设的寄存器,无需检查状态寄存器或等待中断信号。数据传输过程完全由CPU的指令周期驱动。
二、工作流程
以CPU向LED输出数据为例,无条件传送方式的流程如下:
1、初始化阶段:
CPU配置外设的寄存器地址(如LED控制寄存器地址为0x3000)。
确保外设(LED)已正确连接并处于可操作状态。
2、数据传输阶段:
CPU直接执行OUT指令,将数据写入外设寄存器:
MOV AL, 0xFF;将数据0xFF(全亮)存入AL寄存器 OUT 0x3000, AL;将AL中的数据写入地址为0x3000的LED寄存器外设(LED)立即响应,根据写入的数据更新显示状态。
3、操作完成:
数据传输瞬间完成,CPU无需等待或检测外设状态。
程序查询方式
程序查询方式(Programmed I/O,或称为忙等待方式)是计算机输入输出(I/O)设备管理中的一种基础控制机制,其核心思想是CPU通过主动轮询(Polling)外设的状态寄存器,判断设备是否就绪,再决定是否进行数据传输。
一、基本原理
1、CPU主导控制:
CPU完全控制I/O操作的每一个步骤,包括设备启动、状态检测和数据传输,外设仅被动响应CPU的指令。
2、状态轮询机制:
CPU通过循环读取外设的状态寄存器(Status Register),检查特定标志位(如“数据就绪”或“缓冲区空闲”),直到外设满足传输条件。
3、顺序执行:
数据传输必须在外设就绪后进行,若外设未就绪,CPU会持续等待(忙等待),无法执行其他任务。
二、工作流程
1、初始化阶段:
CPU向键盘的I/O接口发送“读取数据”命令(如写入控制寄存器)。
设置键盘接口的状态寄存器为“忙”状态(表示设备正在处理请求)。
2、状态检测阶段:
CPU循环执行以下操作:
a. 读取键盘接口的状态寄存器(如通过IN指令)。
b. 检查“数据就绪”标志位(假设为第0位):
若标志位为0(未就绪),继续循环检测。
若标志位为1(就绪),进入数据传输阶段。
关键问题:在循环检测期间,CPU无法执行其他任务,资源利用率低。
3、数据传输阶段:
CPU通过IN指令从键盘接口的数据寄存器读取按键值。
将数据存入主存或寄存器中,供后续处理。
4、操作完成:
CPU向键盘接口发送“操作完成”信号,清除状态寄存器的“忙”标志。
2、中断方式
中断方式(Interrupt-Driven I/O)是计算机系统中一种高效的输入/输出(I/O)控制机制,它通过外设主动通知CPU来触发数据传输,从而避免了程序查询方式中CPU的忙等待,显著提高了系统资源利用率和并行性。
一、基本原理
1、外设主动通知:
当外设完成数据准备(如键盘按键按下)或需要CPU服务(如磁盘数据传输完成)时,会向CPU发送一个中断信号(Interrupt Request,IRQ)。
2、CPU响应中断:
CPU在执行完当前指令后,暂停当前任务,保存现场(如程序计数器PC、寄存器状态等),跳转到预设的中断服务程序(ISR, Interrupt Service Routine)执行。
3、中断服务程序处理:
ISR负责处理外设请求,如从外设读取数据、写入数据到外设或更新设备状态。
4、返回原任务:
ISR执行完毕后,CPU恢复现场,继续执行被中断的任务。
3、直接存储器存取方式
直接存储器存取(Direct Memory Access,DMA)是一种高效的数据传输机制,它允许外设(如磁盘、网卡、显卡等)直接与内存进行数据交换,而无需CPU的持续干预。这种方式显著提高了数据传输速度,减轻了CPU的负担,特别适用于高速、大批量数据传输的场景。
一、基本原理
1、外设直接访问内存:
DMA控制器(DMA Controller,DMAC)作为CPU和外设之间的“中介”,负责管理数据传输。它拥有独立的总线控制权,可以直接读写内存,而无需CPU逐字节或逐字地搬运数据。
2、CPU初始化DMA传输:
CPU通过配置DMA控制器的寄存器(如源地址、目标地址、传输长度、传输方向等)来初始化一次DMA传输。
配置完成后,CPU启动DMA控制器,并继续执行其他任务。
3、DMA控制器接管总线:
DMA控制器向总线仲裁器(Bus Arbiter)请求总线控制权。
获得总线控制权后,DMA控制器直接访问内存和外设,执行数据传输。
4、传输完成通知CPU:
数据传输完成后,DMA控制器通过中断(DMA Interrupt)通知CPU。
CPU可以处理传输完成后的操作(如更新缓冲区指针、启动下一次传输等)。
二、关键组件与机制
1、DMA控制器(DMAC):
核心功能:管理DMA传输,包括初始化、执行和完成通知。
2、关键寄存器:
源地址寄存器(Source Address Register):存储数据来源的内存地址或外设端口地址。
目标地址寄存器(Destination Address Register):存储数据目标的内存地址或外设端口地址。
传输长度寄存器(Transfer Count Register):存储需要传输的数据量(如字节数、字数等)。
控制寄存器(Control Register):配置传输方向(读/写)、传输模式(单次/循环)、中断使能等。
总线控制权:DMA控制器通过总线仲裁器获得总线控制权,从而直接访问内存和外设。
2、总线仲裁器(Bus Arbiter):
负责协调多个设备(如CPU、DMA控制器、其他外设)对总线的访问请求。
当DMA控制器请求总线时,总线仲裁器会根据优先级策略(如固定优先级、轮询优先级等)决定是否授予DMA控制器总线控制权。
3、内存:
DMA传输的数据源或目标,通常是系统内存(RAM)或设备内存(如显卡的显存)。
4、外设:
需要与内存进行数据交换的设备,如磁盘、网卡、声卡、显卡等。
三、工作流程(以磁盘读取为例)
1、初始化阶段:
CPU配置DMA控制器的寄存器:
源地址:磁盘控制器的数据端口地址(或磁盘缓冲区地址)。
目标地址:系统内存中的目标缓冲区地址。
传输长度:需要读取的数据量(如512字节)。
控制寄存器:设置传输方向为“外设→内存”,启用中断。
CPU启动DMA控制器,并继续执行其他任务。
2、DMA控制器接管总线:
DMA控制器向总线仲裁器请求总线控制权。
获得总线控制权后,DMA控制器开始执行数据传输:
从磁盘控制器的数据端口读取数据。
将数据写入系统内存的目标缓冲区。
重复上述步骤,直到传输完成(传输长度减至0)。
3、传输完成通知CPU:
数据传输完成后,DMA控制器:
清除传输长度寄存器(或设置完成标志)。
向CPU发送中断信号(DMA Interrupt)。
CPU响应中断,执行中断服务程序(ISR):
检查DMA控制器的状态寄存器,确认传输完成。
处理传输完成后的操作(如更新文件系统指针、启动下一次磁盘读取等)。
发送中断结束信号(EOI)给中断控制器。
四、DMA传输模式
1、单次传输模式(Single Transfer Mode):
每次DMA传输仅传输一个数据单元(如一个字节或一个字)。
传输完成后,DMA控制器释放总线控制权,需要CPU重新配置才能进行下一次传输。
适用于低速设备或需要精细控制的场景。
2、块传输模式(Block Transfer Mode):
一次DMA传输可以传输多个连续的数据单元(如一个磁盘扇区的数据)。
传输过程中,DMA控制器持续占用总线,直到传输完成。
适用于高速设备或大批量数据传输的场景。
3、循环传输模式(Cycle Stealing Mode):
DMA控制器在CPU不需要总线时“偷取”总线周期进行数据传输。
传输过程中,DMA控制器与CPU交替使用总线,减少对CPU的影响。
适用于对实时性要求较高但数据量不大的场景。
4、链式传输模式(Chained Transfer Mode):
使用描述符表(Descriptor Table)定义多个不连续的传输任务。
DMA控制器根据描述符表依次执行多个传输任务,无需CPU干预。
适用于复杂的数据传输场景(如网络数据包分片传输)。
4、输入输出处理机
输入输出处理机(I/O Processor,简称IOP)是计算机系统中独立处理输入输出操作的核心组件,其设计目的是减轻主CPU在I/O任务中的负担,提高系统整体效率。
一、核心功能
1、独立执行I/O任务:IOP能够脱离主CPU的直接控制,独立执行数据传输、设备控制及错误处理等I/O任务。这显著降低了主CPU在I/O操作中的参与度,使其能够专注于计算任务。
3、数据传输与设备控制:IOP负责管理外设与内存之间的数据传输,包括PCI和SCSI总线的数据传输、RAID的处理、磁盘驱动器重建等。同时,它还控制外设的操作,如磁头定位、穿孔等。
4、错误恢复与高速缓存管理:在I/O操作过程中,IOP能够检测并处理错误,确保数据传输的准确性。此外,它还管理高速缓存,提高数据访问速度。
二、工作原理
1、接收请求:CPU向IOP发送I/O请求,指定需要执行的操作。
2、执行操作:IOP根据指令,控制外设与内存之间的数据传输,并处理相关数据。这一过程中,IOP可能使用自身的指令集和逻辑电路运行,无需CPU介入每个细节。
3、状态报告:操作完成后,IOP将结果和状态信息反馈给CPU,以便后续处理。