单片机 外文翻译 外文文献 英文文献 输入输出访问.docx

上传人:b****7 文档编号:10306165 上传时间:2023-02-10 格式:DOCX 页数:16 大小:28.26KB
下载 相关 举报
单片机 外文翻译 外文文献 英文文献 输入输出访问.docx_第1页
第1页 / 共16页
单片机 外文翻译 外文文献 英文文献 输入输出访问.docx_第2页
第2页 / 共16页
单片机 外文翻译 外文文献 英文文献 输入输出访问.docx_第3页
第3页 / 共16页
单片机 外文翻译 外文文献 英文文献 输入输出访问.docx_第4页
第4页 / 共16页
单片机 外文翻译 外文文献 英文文献 输入输出访问.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

单片机 外文翻译 外文文献 英文文献 输入输出访问.docx

《单片机 外文翻译 外文文献 英文文献 输入输出访问.docx》由会员分享,可在线阅读,更多相关《单片机 外文翻译 外文文献 英文文献 输入输出访问.docx(16页珍藏版)》请在冰豆网上搜索。

单片机 外文翻译 外文文献 英文文献 输入输出访问.docx

单片机外文翻译外文文献英文文献输入输出访问

输入/输出访问

在这一篇文章中,我们将会研究三种基本的输入/输出访问方法:

程控I/O、中断驱动I/O以及直接存储器访问(DMA)。

区别这三个方法的关键问题是处理器以怎样的深度介入I/O操作。

讨论的重点是中断驱动I/O,这是因为它的基础是中断处理概念,而这是一个超过输入输出操作之外的普遍性问题。

学习中断处理也有助于了解异常事件处理这一普遍性概念,其重要性不但有关I/O,而且有关计算机与其他系统控制函数的接口。

I/O寄存器的寻址

输入/输出设备经过输入/输出端口与一个处理机通信。

经过输入端口,处理器接受来自输入/输出装置的数据。

经过输出端口,处理器送数据给输入/输出装置。

每个输入/输出端口包含一个小的寄存器组,如数据缓冲寄存器(输入缓冲器和/或输出缓冲器)、状态寄存器和控制寄存器。

处理器必须有某种方法寻址这些寄存器,同时与它们通信。

寻址输入/输出寄存器有存储器映射输入/输出和直接输入/输出两种方法。

1存储器映射的输入/输出

存储器映射的输入/输出将输入/输出寄存器和存储器一起映射到计算机系统的统一的住址空间。

输入/输出寄存器共享主存储器的同一个地址空间,但是被映射到一个特定的专为输入/输出预留的存储器区段。

因此,输入/输出寄存器能在普通的存储器访问指令中得到寻址,好像它们就是主存储器位置的一部份。

在计算机的指令系统中没有专门设计的输入/输出指令。

任何访问这一地区中某个位置的指令便是一条输入/输出指令。

任何的一条可以指定存储器地址的指令都可以执行输入/输出操作。

摩托罗拉MC68000就是使用这种寻址方法的计算机系统的一个例子。

2直接输入/输出

直接地向输入/输出寄存器寻址而不和主存储器共享地址空间的寻址方法叫做直接输入/输出或输入/输出映射输入/输出。

换句话说,输入/输出寄存器不和主存储器映射到同一个地址空间。

每个输入/输出寄存器有一个独立的地址空间。

其结果是:

访问主存储器空间的指令不能够作用于输入/输出。

在计算机系统的指令系统中,必须为输入/输出操作设计专门的指令。

在这些输入/输出指令中,必须用各自不同的标号来寻址不同的输入/输出交换通道。

它们被称作端口号。

输入/输出端口的输入/输出寄存器连接到系统输入/输出总线上,处理器经过它可以直接访问输入/输出寄存器向/从输入/输出装置发送/接收数据。

使用端口号的方式和使用存储器地址的方式相同,但不同的是端口号不是来自主存储器的同一地址。

Pentium是使用直接输入/输出寻址法的计算机系统的例子。

它有64GB存储地址空间(32位住址),同时,还有一个64KB输入/输出地址空间(16位输入/输出住址/端口号)。

我们能依下列各项比较存储器映射输入/输出和直接输入/输出:

:

存储器映射输入/输出使用普通的存储器访问指令访问输入/输出,因此它提供输入/输出编程的灵活性,并简化输入/输出软件。

直接输入/输出不具备输入/输出编程的灵活性,因为只有一个小的特殊输入/输出指令被允许访问输入/输出寄存器。

有存储器映射输入/输出时,处理器使用相同的住址线访问所有的可寻址输入/输出寄存器和用相同的数据线向/从这些寄存器发送/接收数据。

这样简化了输入/输出端口和处理器之间的连接,因而导致廉价的硬件设计和实现。

对于直接输入/输出,输入/输出端口和处理器之间的连接可能成本比较高。

这是因为需要专门的硬件实现分开的输入/输出住址线,或者当存储器地址线用于输入/输出的时候,需要一个特殊的标志来指出所要求的住址是为了输入/输出操作的。

尽管使用普通的存储器访问指令访问输入/输出寄存器有它的优点,但存储器映射输入/输出可能会使控制器的设计较复杂一些,这涉及与输入/输出相关的指令的实现。

这是因为通常输入/输出总线周期比较等价的存储器总线周期要长一些,需要循环,而这意味着需要设计不同的时序控制逻辑。

这能用来解释为什么存储器映射输入/输出有利于程序设计师,但是不是电子学工程师。

直接输入/输出寻址有另一个高于存储器映射输入/输出的优点,即低级程序调试在用分开寻址系统中可能要更容易些,因为断点和错误陷阱的设置比较通用。

在存储器映射输入/输出中,输入/输出寄存器和主存储器共享同一地址空间,因此,程序和数据可以使用的存储空间就减少了。

对于直接输入/输出寻址,输入/输出不用和主存储器共享存储空间,可以维持一个单独的连续存储空间给程序员使用。

程控输入/输出

程控输入/输出需要全部数据操作处于处理机执行程序的完全控制之下。

因为程序重复地巡查(检查)一个输入/输出装置的状态标志,所以有时它被称为巡查,而且它的输入/输出操作能与处理器同步。

程序不断地巡查一个输入/输出装置的状态,以发现数据是否是已在输入缓冲中或输出装置有没有为接收从来自处理器的数据做好准备。

如果状态显示"已备好",则程序将执行一条数据传输指令以完成该输入/输出操作;否则,输入/输出装置的忙碌状态将会强迫程序在一个忙碌等待回路中循环,直到状态变成“已备好”为止。

这样一个如此不断地巡查“数据已备好“状态(对于输入)或巡查“设备已备好“状态(对于输出),它形成程控输入/输出的典型程序结构。

正是这个浪费时间的忙碌等待回路消耗处理机时间,而造成程控输入/输出效率很低。

处理器必须连续的介入整个的输入/输出过程当中。

在这一时间间隔内,处理器不能够运行任何的有用计算,而仅服务于单独一个输入/输出装置。

对于某些慢速输入/输出装置,这一忙碌等待回路的时间可能很长,足够处理机在输入/输出事件发生之前,运行数以百万计指令,如在键盘上的一次按键动作。

上面叙述的程控输入/输出操作模式是以程序的忙碌等待回路为特征的,在它运行时处理器花费时间巡查一个输入/输出装置。

因为处理器专注于一个单一的作业,这种程控输入/输出模式被称为专注式巡查或回旋式巡查。

虽然专注式巡查十分低效,但是有时它是必需的,甚至是不可避免的。

在一个特别的情形中,如果一件紧急的事件需要没有延迟立即响应,则用一台专门的计算机做专注式巡查可能是最好的处理方法。

一旦预期的事件发生,处理器可以立刻反应。

举例来说,某些实时系统(如雷达回波处理系统)需要对收入的数据极快的反应,甚至是一次中断反应都嫌太慢。

在这样的环境之下,只有专注式巡查回路才足够应付。

程控输入/输出的另一个操作模式叫做间歇式巡查或定时巡查。

在这一个模式中,处理器可在有规则的(预期的或事先规划的)时间间隔巡查设备。

这种设备在许多嵌入式系统中可以看到,其中一台专用计算机用于过程控制、数据采集、环境监测、流量计数等。

这些设备量测、收集或记录数据,通常是按照有规则的时间表进行周期性的巡查,其规划由应用对象的需要决定。

这种间歇式巡查方法可以有助于节省回旋式巡查所浪费的时间,并且避免中断处理的复杂性。

然而应该注意,间歇式巡查可能不适用某些特别的情形,只有一个装置被巡查而正确的巡查又一定要借助一个由中断驱动的时钟才能得到。

在这种情况使用定时巡查只能是简单的交替一次又一次中断需求。

中断驱动输入/输出

中断驱动输入/输出是一种能避免程控输入/输出特有的低效忙碌等待回路的方法。

当输入/输出设备忙于它的输入输出作业时,处理机不是等待,而是可以运行其他的程序。

当输入/输出设备完成它的作业而使其状态变为“已备好”时,它将向处理机发出一个中断请求,要求CPU的服务。

作为响应,处理机挂起它正在做的任何工作,以便照顾该输入/输出设备的需要。

为了响应中断请求,处理器将会首先为正在运行中的程序保存好程序计数器和状态计数器的内容,然后转移控制到对应的中断服务程序,以执行要求的输入/输出操作。

当中断服务程序已经执行完毕时,如果没有更多的中断请求在等待,处理器将恢复状态寄存器和程序计数器的内容,恢复执行原先被中断的程序。

处理器的硬件应该在每条指令执行结束时检查中断请求信号。

如果有多个装置同时发行它们的中断请求,处理器必须利用某些方法选择哪一个首先服务,然后再根据优先权的次序逐个的服务所有其他的中断请求。

只有当所有的中断请求都已得到服务,CPU才返回被中断的用户程序。

这样,处理器能并发的服务于多个输入/输出装置,而且用较多的时间做有用的工作,而不去运行一个忙碌等待回路为单个装置服务。

因此,中断驱动输入/输出在处理慢速和中速输入/输出/设备方面是很有效的。

此外,中断的观念可以被推广到处理任何由硬件或软件从内部或外部产生的事件。

这一普遍性问题称为异常事件处理。

如果多个中断请求有不同的设备同时发出,处理器应该有某种方法识别中断来源而且按照某种策略(典型的是按优先权)处理它们的中断请求。

现时只能有一个带最高优先权的请求可以得到服务,所有其它的请求都放入一个候补等待的队伍之内。

在中断服务程序执行服务完毕,处理器应该搜索等待的队列,找出所有正在等待中的旧的或新的中断请求,并按照优先权逐个继续为它们服务,直到等待的队伍变空为止。

只有当所有等待着的中断请求都已经得到服务,才会唤回被中断的用户程序。

虽然这一个情形包含了多个中断请求,但是它仍然是一个被单一化的情形。

假定:

所有的中断服务程序一旦被处理器一个接一个的启动,它们便必须完成而不再由中断或所谓抢占发生。

满足这一假设的中断过程称为非抢占中断。

在真实的环境中,中断驱动输入/输出的过程比这个简化过程更为复杂。

每个正在处理机中运行的中断服务程序可以被新来的中断请求所抢占(中断),只需它的优先权比现有的优先权高。

这一个环境将会引起主程序和所有被要求的中断服务程序之间有一个复杂的相互关系。

允许中断服务程序被较高优先权的中断服务程序所强占的中断过程叫做抢占中断。

直接存储器访问

虽然中断驱动输入/输出比被程控输入/输出有效率,但是它仍然受限于较高的与中断处理有关的开销。

这一开销包括解决多个中断请求之中的冲突、保存和恢复程序现场、用于中断辨认的巡查、中断服务程序的来回转移等。

使用中断是一个浪费的活动,它费时好几个微秒才能完成。

直接存储器访问(DMA)是一个向/从主存储器直接输入输出字块的方法,速度是每一存储周期一个数据项,而无需处理机的连续参与。

整个过程由DMA控制器的硬件实现,它代替处理器而直接与主存储器通信。

结果,计算机系统的框图由以处理机为中心变为以存储器为中心。

因此,从输入/输出处理的观点来看,处理器不再是计算机的中心,而只是一个伙伴,输入/输出子系统和它竞争存储器总线周期,向/从主存储器输入输出数据。

然而,DMA控制器是设计成

以字块交换数据,因此,它能很好的和大容量高速度面向字块的输入/输出装置,例如高速磁盘通信网络,一起工作。

.

DMA控制器能在两个不同的模式下工作。

正常情况下,它与处理器并发的工作,竞争零星的存储器总线周期,以输入输出一个字块的连续的字。

如果输入/输出速度不是很高,处理器的存储器访问和DMA控制器访问可以交叉进行。

时间可以在周期到周期的基础上增加。

在任何一个时间段,处理器或DMA控制器都不能连续的使用所有的存储器总线周期。

DMA控制器的这一操作模式叫做周期窃取。

如此命名是因为输入/输出子系统实质上是从处理器“窃取”存储器总线周期。

这一个模式把直接内存存取的存储器访问整合在CPU活动中,避免严重的打扰主要的处理任务。

另一方面,对于更高的输入/输出传输率,直接内存存取操作需要总线时间能安排在成块的周期内,这称为爆发。

在存储周期的爆发中,处理器完全地被排斥在存储器访问之外。

直接内存存取控制器被给与主存储器的排他性访问,连续的输入输出数据字块,其速度可以和存储器速度相比较。

直接内存存取控制器的这一操作模式被称为字块模式或爆发模式。

为这一操作模式设计的直接内存存取控制器通常结合一个数据存储缓冲器,其容量至少与一个字块相匹配。

当DMA控制器利用存储器总线时,它可以直接在它的数据存储缓冲器和主存储器之间交换一个字块。

下列各寄存器对于DMA传输一个字块是必要的:

数据缓冲寄存器(DBR)——它可以实现为两个寄存器,一个用于输入,另一个用于输出,或者甚至于一个寄存器组,组成一个数据存储缓冲器。

DMA地址寄存器(DAR)——用来存放存储器缓冲区(用来读写字块)的起始地址。

字计数器(WC)——由它的内容指定字块中余下尚待传输的字数,每一个字传输以后字数自动减值。

控制/状态寄存器(CSR)——处理器用来发送控制信息给直接内存存取控制器并且收集直接内存存取控制器和它所连输入/输出装置的状态和出错信号。

利用这些寄存器,直接内存存取控制器能知道源字块和目的字块,以及将要传输的数据量。

一旦直接内存存取控制器获得了存储器总线,便可以利用这些寄存器中包含的信息,自主地执行字块传输操作,而无需处理器的连续介入。

在上列寄存器之外,直接内存存取控制器还应该包含总线请求设备的控制逻

辑,它利用直接内存存取请求(DMAR)和直接内存存取回答(DMAA)信号执行总线仲裁。

总线仲裁是一个分解冲突的过程,用来解决多个并发请求之间产生的冲突,这些请求都想要操作直接内存存取控制器以获取存储器总线。

总线主方的确定通常是基于不同的DMA装置具有的优先权。

在不同的直接内存存取装置之中,由装置接收直接内存存取服务的紧迫程度,也就是它们的速度需求,来安排优先权次序。

为直接内存存取装置进行总线仲裁有两个方法——集中式和分布式,它们和利用中断请求(INTR)和中断应答(INTA)信号以辨认中断源的方法是相似的。

虽然直接内存存取执行字块传输没有处理机参加,但是直接内存存取控制器的总体操作仍然是由CPU通过中断来决定的。

它有两个目的:

(1)在直接内存存取控制器启动数据传输之前,所有的寄存器必须由处理器设定初值;

(2)当直接内存存取完成一个字块传输操作时,它应该发出一个中断告知处理器操作完成,以允许处理器在存储器缓冲区进行数据的后处理或者处理可能的错误情况。

因此,直接内存存取控制器时常发出中断请求(INTR)和接受中断的回答(INTA)信号。

DMA减轻处理器在输入/输出功能上的负担,但叁数传输初始化和数据的后处理除外。

当服务高速的输入/输出装置的时候,这是非常有效的。

然而,直接内存存取的作用并不限于输入输出区域。

在现代的计算机系统中,直接内存存取已经发展为一个通用的技术,它在输入/输出子系统处理和CPU处理之间进行主存储器带宽的分时。

在输入/输出子系统中,高速的输入/输出装置,像磁盘,CD-ROM,DVD,图像,视频设备和高速网络都要经过直接内存存取分享主主存储器的带宽。

在中央处理和主存储器范围,运行中的程序、操作系统以及动态随机存取储存器的再生都要分享主存储器带宽。

直接内存存取是一个适当的方法来实现这种分时。

比较快速的16位UltraDMA现在已经代替旧式的8位设备。

现在可用的商售直接内存存取控制器芯片及已经提供多个通道,允许并发的数据传输。

例如,一个通道可以保留给动态随机存取储存器再生,另外的一个通道能执行存储器到存储器的字块移动等。

为了进一步让处理机免于处理慢速作业,已经开发了强功能的通道处理机,它有自主的能力,包括设备巡查、通道程序执行、中断激活以及数据和指令的直接内存存取。

它们已经作为成长中的一类半独立的分处理器与主处理器通信。

它们被指定专门的工作,例如浮点运算、图像处理、网络通信、大规模数据库管理等。

由于主存储器带宽分时而日益增大的总线竞争问题可以通过更有效的利用高速缓存予以淡化。

例如,在Pentium处理器中,只要缓存本地保存的指令能满足要求,L1缓存便允许CPU流水线继续读取和执行指令。

 

Input/OutputAccessing

Inthisarticle,wewilllookatthethreebasicmethodsofI/Oaccessing-programmedI/O,interrupt-drivenI/O,anddirectmemoryaccess(DMA).ThekeyissuethatdistinguishesthesethreemethodsishowdeeplytheprocessorisinvolvedinI/Ooperations.Thediscussionemphasizesinterrupt-drivenI/O,becauseitisbasedontheconceptofinterrupthandling,whichisageneralproblemthatgoesbeyondInput/Outputoperations.Thestudyofinterrupthandlingalsoaidsinunderstandingthegeneralconceptofexceptionprocessing,whichisanimportantissuenotonlyforI/O,butalsoforinterfacingacomputerwithothersystemcontrolfunctions.

AddressingI/ORegisters

Input/OutputdevicescommunicatewithaprocessorthroughInput/Outputports.Throughtheinputports,sprocessorreceivesdatafromtheI/Odevices.Throughtheoutputports,aprocessorsendsdatatotheI/Odevices.EachI/Oportconsistsofasmallsetofregisters,suchasdatabufferregisters(theinputbufferand/ortheoutputbuffer),thestatusregister,andthecontrolregister.Theprocessormusthavesomemeanstoaddresstheseregisterswhilecommunicatingwiththem.TherearetwocommonmethodsofaddressingI/Oregister-memory-mappedI/OanddirectI/O.

1.Memory-MappedI/O

Memory-mappedI/OmapstheI/Oregistersandmainmemoryintoaunifiedaddressspaceinthecomputersystem.I/Oregisterssharethesameaddressspacewithmainmemory,butaremappedtoaspecificsectionthatisreservedjustforI/O.Thus,theI/Oregistercanbeaddressedinordinarymemoryreferenceinstructionsasiftheyarepartofthemainmemorylocations.TherearenospeciallydesignedI/Oinstructionsintheinstructionsetofthesystem.AnyinstructionthatreferencesalocationinthisareaisanI/Oinstruction.AnyinstructionthatcanspecifyamemoryaddressiscapableofperformingI/Ooperations.TheMotorolaMC68000isanexampleofacomputersystemthatusesthisaddressingmethod.

2.DirectI/O

ThemethodofaddressingI/OregistersdirectlywithoutsharingtheaddressspacewiththemainmemoryiscalleddirectI/OorI/O-mappedI/O.Inotherwords,I/Oregistersarenotmappedtothesameaddressspacewiththemainmemory.EachI/Oregisterhasanindependentaddressspace.Asaresult,instructionsthatreferencethemainmemoryspacecannotbeusedforInput/Output.Intheinstructionsetofthecomputersystem,specialI/OinstructionsmustbedesignedforI/Ooperations.IntheseI/Oinstructions,distinctI.D.numbersmustbeusedtoaddressdifferentI/Ocommunicationchannels(i.e.,I/Oports).Theyarecalledportnumbers.TheI/OregistersofanI/OportareconnectedtothesystemI/Obus,throughwhichtheprocessorcanreferencetheI/Oregistersdirectlytosend/receivedatato/fromanI/Odevice.AnI/Oportnumberisnotfromthesameaddressspaceasmainmemory.ThePentiumisanexampleofacomputersystemthatusesthedirectI/Oaddressingmethod.Ithasa64GBmemoryaddressspace(32addressbits)and,atthesametime,a64KBI/Oaddressspace(16bitsI/Oaddress/portnumber).

Wecancomparememory-mappedI/OandthedirectI/OandthedirectI/Oasfollows:

Memory-mappedI/OusesordinarymemoryreferenceinstructionstoaccessI/O,soitprovidesflexibilityforI/OprogrammingandsimplifiesI/Osoftware.DirectI/OdoesnotprovideanyflexibilityinI/O

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1