一、轮询方式
对I/O设备的程序轮询的方式,是早期的计算机系统对I/O设备的一种管理方式。它定时对各种设备轮流询问一遍有无处理要求。轮流询问之后,有要求的,则加以处理。在处理I/O设备的要求之后,处理机返回继续工作。
尽管轮询需要时间,但轮询不比I/O设备的速度要快得多,所以一般不会发生不能及时处理的问题。
当然,再快的处理机,能处理的输入输出设备的数量也是有一定限度的。而且,程序轮询毕竟占据了CPU相当一部分处理时间,因此程序轮询是一种效率较低的方式,在现代计算机系统中已很少应用。
二、中断方式
处理器的高速和输入输出设备的低速是一对矛盾,是设备管理要解决的一个重要问题。为了提高整体效率,减少在程序直接控制方式中CPU之间的数据传送,是很必要的。
在I/O设备中断方式下,中央处理器与I/O设备之间数据的传输步骤如下:
⑴在某个进程需要数据时,发出指令启动输入输出设备准备数据
⑵在进程发出指令启动设备之后,该进程放弃处理器,等待相关I/O操作完成。此时,进程调度程序会调度其他就绪进程使用处理器。
⑶当I/O操作完成时,输入输出设备控制器通过中断请求线向处理器发出中断信号,处理器收到中断信号之后,转向预先设计好的中断处理程序,对数据传送工作进行相应的处理。
⑷得到了数据的进程,转入就绪状态。在随后的某个时刻,进程调度程序会选中该进程继续工作。
中断方式的优缺点
I/O设备中断方式使处理器的利用率提高,且能支持多道程序和I/O设备的并行操作。
不过,中断方式仍然存在一些问题。首先,现代计算机系统通常配置有各种各样的输入输出设备。如果这些I/O设备都同过中断处理方式进行并行操作,那么中断次数的急剧增加会造成CPU无法响应中断和出现数据丢失现象。
其次,如果I/O控制器的数据缓冲区比较小,在缓冲区装满数据之后将会发生中断。那么,在数据传送过程中,发生中断的机会较多,这将耗去大量的CPU处理时间。
三、直接内存存取(DMA)方式
直接内存存取技术是指,数据在内存与I/O设备间直接进行成块传输。
DMA技术特征
DMA有两个技术特征,首先是直接传送,其次是块传送。
所谓直接传送,即在内存与IO设备间传送一个数据块的过程中,不需要CPU的任何中间干涉,只需要CPU在过程开始时向设备发出“传送块数据”的命令,然后通过中断来得知过程是否结束和下次操作是否准备就绪。
DMA工作过程
⑴当进程要求设备输入数据时,CPU把准备存放输入数据的内存起始地址以及要传送的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器。
⑵发出数据传输要求的进行进入等待状态。此时正在执行的CPU指令被暂时挂起。进程调度程序调度其他进程占据CPU。
⑶输入设备不断地窃取CPU工作周期,将数据缓冲寄存器中的数据源源不断地写入内存,直到所要求的字节全部传送完毕。
⑷DMA控制器在传送完所有字节时,通过中断请求线发出中断信号。CPU在接收到中断信号后,转入中断处理程序进行后续处理。
⑸中断处理结束后,CPU返回到被中断的进程中,或切换到新的进程上下文环境中,继续执行。
DMA与中断的区别
⑴中断方式是在数据缓冲寄存器满之后发出中断,要求CPU进行中断处理,而DMA方式则是在所要求传送的数据块全部传送结束时要求CPU 进行中断处理。这就大大减少了CPU进行中断处理的次数。
⑵中断方式的数据传送是在中断处理时由CPU控制完成的,而DMA方式则是在DMA控制器的控制下,不经过CPU控制完成的。这就排除了CPU因并行设备过多而来不及处理以及因速度不匹配而造成数据丢失等现象。
DMA方式的优缺点
在DMA方式中,由于I/O设备直接同内存发生成块的数据交换,因此I/O效率比较高。由于DMA技术可以提高I/O效率,因此在现代计算机系统中,得到了广泛的应用。许多输入输出设备的控制器,特别是块设备的控制器,都支持DMA方式。
通过上述分析可以看出,DMA控制器功能的强弱,是决定DMA效率的关键因素。DMA控制器需要为每次数据传送做大量的工作,数据传送单位的增大意味着传送次数的减少。另外,DMA方式窃取了始终周期,CPU处理效率降低了,要想尽量少地窃取始终周期,就要设法提高DMA控制器的性能,这样可以较少地影响CPU出理效率。
四、通道方式
输入/输出通道是一个独立于CPU的,专门管理I/O的处理机,它控制设备与内存直接进行数据交换。它有自己的通道指令,这些通道指令由CPU启动,并在操作结束时向CPU发出中断信号,见图6-3。
输入/输出通道控制是一种以内存为中心,实现设备和内参内直接交换数据的控制方式。在通道方式中,数据的传送方向、存放数据的内存起始地址以及传送的数据块长度等都由通道来进行控制。
另外,通道控制方式可以做到一个通道控制多台设备与内存进行数据交换。因而,通道方式进一步减轻了CPU的工作负担,增加了计算机系统的并行工作程度。
输入/输出通道分类
按照信息交换方式和所连接的设备种类不同,通道可以分为以下三种类型:
⑴字节多路通道
它适用于连接打印机、终端等低速或中速的I/O设备。这种通道以字节为单位交叉工作:当为一台设备传送一个字节后,立即转去为另一它设备传送一个字节。
⑵选择通道
它适用于连接磁盘、磁带等高速设备。这种通道以“组方式”工作,每次传送一批数据,传送速率很高,但在一段时间只能为一台设备服务。每当一个I/O请求处理完之后,就选择另一台设备并为其服务。
⑶成组多路通道
这种通道综合了字节多路通道分时工作和选择通道传输速率高的特点,其实质是:对通道程序采用多道程序设计技术,使得与通道连接的设备可以并行工作。
通道工作原理
在通道控制方式中,I/O设备控制器(常简称为I/O控制器)中没有传送字节计数器和内存地址寄存器,但多了通道设备控制器和指令执行部件。CPU只需发出启动指令,指出通道相应的操作和I/O设备,该指令就可启动通道并使该通道从内存中调出相应的通道指令执行。
一旦CPU发出启动通道的指令,通道就开始工作。I/O通道控制I/O控制器工作,I/O控制器又控制I/O设备。这样,一个通道可以连接多个I/O控制器,而一个I/O控制器又可以连接若干台同类型的外部设备。
通道的连接
由于通道和控制器的数量一般比设备数量要少,因此,如果连接不当,往往会导致出现“瓶颈”。故一般设备的连接采用交叉连接,这样做的好处是:
① 提高系统的可靠性:当某条通路因控制器或通道故障而断开时,可使用其他通路。
② 提高设备的并行性:对于同一个设备,当与它相连的某一条通路中的控制器或通道被占用时,可以选择另一条空闲通路,减少了设备因等待通路所需要花费的时间。
通道处理机
通道相当于一个功能单纯的处理机,它具有自己的指令系统,包括读、写、控制、转移、结束以及空操作等指令,并可以执行由这些指令编写的通道程序。
通道的运算控制部件包括:
① 通道地址字(CAW):记录下一条通道指令存放的地址,其功能类似于中央处理机的指令寄存器。
② 通道命令字(CCW):记录正在执行的通道指令,其作用相当于中央处理机的指令寄存器。
③ 通道状态字(CSW):记录通道、控制器、设备的状态,包括I/O传输完成信息、出错信息、重复执行次数等。
通道对主机的访问
通道一般需要与主机共享同一个内存,以保存通道程序和交换数据。通道访问内存采用“周期窃用”方式。
采用通道方式后,输入/输出的执行过程如下:
CPU在执行用户程序时遇到I/O请求,根据用户的I/O请求生成通道程序(也可以是事先编好的)。放到内存中,并把该通道程序首地址放入CAW中。
然后,CPU执行“启动I/O”指令,启动通道工作。通道接收“启动I/O”指令信号,从CAW中取出通道程序首地址,并根据此地址取出通道程序的第一条指令,放入CCW中;同时向CU发回答信号,通知“启动I/O”指令完成完毕,CPU可继续执行。
通道开始执行通道程序,进行物理I/O操作。当执行完一条指令后,如果还有下一条指令则继续执行;否则表示传输完成,同时自行停止,通知CPU转去处理通道结束事件,并从CCW中得到有关通道状态。
总之,在通道中,I/O运用专用的辅助处理器处理I/O操作,从而剪径了主处理器处理I/O的负担。主处理器只要发出一个I/O操作命令,剩下的工作完全由通道负责。I/O操作结束后,I/O通道会发出一个中断请求,表示相应操作已完成。
通道的发展
通道的思想是从早期的大型计算机系统中发展起来的。在早期的大型计算机系统中,一般配有大量的I/O设备。为了把对I/O设备的管理从计算机主机中分离出来,形成了I/O通道的概念,并专门设计出I/O通道处理机。
I/O通道在计算机系统中是一个非常重要的部件,它对系统整体性能的提高起了相当重要的作用。不过,随着技术不断的发展,处理机和I/O设备性能的不断提高,专用的、独立I/O通道处理机已不容易见到。但是通道的思想又融入了许多新的技术,所以仍在广泛地应用着。由于光纤通道技术具有数据传输速率高、数据传输距离远以及可简化大型存储系统设计的优点,新的通用光纤通道技术正在快速发展。这种通用光纤通道可以在一个通道上容纳多达127个的大容量硬盘驱动器。显然,在大容量高速存储应用领域,通用光纤通道有着广泛的应用前景。
分享到:
相关推荐
STM32 DMA 中断模式下 ADC 多通道数据采集+均值滤波 本资源涉及到 STM32 的 DMA 中断模式下 ADC 多通道数据采集和均值滤波。下面将详细介绍相关知识点: 1. STM32 DMA 中断模式 STM32 的 DMA(Direct Memory ...
3. **类型**:根据系统需求,有单通道和多通道两种,多通道可以同时处理多个DMA请求。 **DMA传送的应用:** 1. **硬盘I/O**:硬盘读写操作通常通过DMA进行,提高数据吞吐率。 2. **网络接口**:网卡接收和发送...
在这个主题中,我们将深入探讨如何使用STM32的ADC进行单通道数据采集,同时关注中断形式和DMA(Direct Memory Access)形式这两种不同的数据传输方式。 首先,ADC是将模拟信号转换为数字信号的关键部件,它允许STM32...
在使用DMA中断模式时,我们需要配置DMA通道、设置DMA中断优先级、使能DMA中断等。在本例中,我们使用了DMA1通道来实现多通道数据采集,并设置了DMA中断优先级为中断优先级最高。 总结 STM32微控制器的AD单通道和多...
在STM32中,有多个DMA通道可以配置,用于不同外设的数据传输,如SPI、I2C、ADC等。 在STM32F103中,配置ADC和DMA的步骤如下: 1. **初始化ADC**:设置ADC的工作模式(单次转换或多通道转换)、转换分辨率(通常8位...
在“外设”选项中,勾选“DMA”和“Interrupts”,并选择相应的DMA通道,如DMA1 Channel3用于UART接收。 空闲中断是在UART接收过程中非常有用的一个特性,它会在UART接口在一段时间内没有数据传输时触发。在STM32...
在STM32中,我们可以配置DMA通道来处理串口接收的数据,这样当数据到达时,DMA会自动将数据从串口接收缓冲区转移到指定的内存位置,而CPU可以继续执行其他任务,提升了系统性能。 在实现Modbus通信时,我们需要设置...
综上所述,理解并熟练掌握STM32L151的ADC多通道DMA、中断处理、STOP低功耗模式以及OLED显示,是构建高效、低功耗嵌入式系统的基石。通过正确配置和优化代码,我们可以解决潜在问题,实现可靠且节能的应用。
2. 配置DMA通道:STM32H743有多个DMA通道,每个通道可以分配给不同的外设。确保选择一个未被其他功能占用的通道。 3. 设置DMA传输方向:确定是接收(RX)还是发送(TX)。 4. DMA传输触发源:设置为串口的空闲中断...
1. 配置DMA:在STM32CubeMX中为UART选择合适的DMA通道,并设置传输属性。 2. 配置UART:设置UART为DMA模式,并指定接收缓冲区地址。 3. 配置中断:开启DMA传输完成中断,以便在数据接收完成后执行相应操作。 4. 启动...
在STM32CubeMX中,选择DMA通道,将其配置为与USART1接收(USART1_RX)连接。设置传输数据大小、内存地址、传输级别等参数,确保 DMA 能够正确地从串口接收数据。 在初始化DMA时,我们需要指定接收缓冲区的地址和...
《基于战舰V3 STM32F103的多通道ADC与DMA中断方式HAL库详解》 在嵌入式系统开发中,STM32系列微控制器因其丰富的资源和强大的性能,被广泛应用。本篇文章将重点讲解如何在战舰V3开发板上,基于STM32F103芯片实现多...
这将使能DMA通道,并在数据准备好时自动填充接收缓冲区。 - 发送时,需设置`HAL_UART_Transmit_DMA()`,该函数用于启动非中断模式的DMA发送。在发送数据之前,确保发送缓冲区已填充好待发送的数据。 5. **中断处理...
在规则通道每个通道转换完成之后,DMA负责将转换的数据从ADC_DR寄存器传输到用户指定的目的地址 开启3个注入通道,转换序列为:通道0(PA0),通道1(PA1),通道2(PA2) 注入通道触发选择为自动注入(当规则通道...
2. 配置DMA:调用HAL_DMA_Init()初始化DMA通道,指定源地址(如串口的发送或接收寄存器)、目标地址(内存地址)和传输大小。 3. 关联串口和DMA:使用HAL_UARTEx_ReceiveDMA()或HAL_UART_TransmitDMA()将串口与DMA...
本文主要介绍了三种常见的I/O管理方式:轮询、中断和直接内存存取(DMA)方式,以及通道方式。 一、轮询方式 轮询是一种早期的I/O管理方式,处理机定期检查每个设备,看是否有数据需要处理。这种方式简单,但由于...
在STM32中,我们可以配置DMA通道为串口接收服务,这样当串口接收到数据时,数据将自动传输到指定的内存位置,无需CPU持续监控。 为了接收不定长的数据,我们需要动态管理接收缓冲区。在串口空闲中断触发时,可以...
选择合适的DMA通道,设置传输方向(从外设到内存),并指定接收缓冲区的地址和大小。同时,确保DMA控制器已开启,并配置好相应的流和通道。 3. **编写中断服务程序**:在生成的代码中,你需要编写处理空闲中断的...
在这个项目中,我们将关注的是STM32F4XX的模拟数字转换器(ADC)功能,特别是如何通过直接内存访问(DMA)实现多通道数据采集。 STM32F4XX的ADC模块是一个强大的功能,它可以将输入的模拟信号转换为数字值,这对于...
例如,我们可以为串口3配置DMA通道,使得数据传输在后台进行,而CPU则可以执行其他任务。在设置DMA时,需要注意选择正确的传输方向(发送或接收),设置传输大小,以及选择合适的内存到外设或外设到内存的传输模式。...