一种直接存储器存取装置的制作方法

文档序号:6473874阅读:180来源:国知局
专利名称:一种直接存储器存取装置的制作方法
技术领域
本实用新型涉及微机系统的数据存取领域,尤指一种直接存储器存取装置。
背景技术
直接存储器存取(DMA,Direct Memory Access)是微机系统提高数据传输效率的一项重要技术。DMA技术可以在中央处理器(CPU,CentralProcess Unit)执行任务的同时,对系统设备中的数据块进行存取操作;也可以在CPU不参与的情况下,由专用的硬件电路控制数据块的存取。本申请所述系统设备包括存储设备和输入输出设备,在以下说明中,发送区指的是获取数据块的设备区域,接收区指的是保存数据块的设备区域。采用DMA方式实现的数据传输就是在一定时间段内,由专用的硬件电路取代CPU获得系统的总线控制权,将数据块从发送区取出,送入接收区保存,从而实现系统设备之间,包括存储器与输入输出设备之间、或者存储器的不同区域之间数据传输的过程。在所述数据传输的实现过程中,数据传输完全由专用的硬件电路控制,CPU对此不进行干预,所以这种DMA方式实现的数据传输速率很高。现有技术中,将上述专用的硬件电路称为DMA控制器(DMAC)。
在支持DMA方式实现数据传输的微机系统中,DMAC和CPU都挂接在系统总线上,由总线提供数据传输的通道。一般情况下,CPU控制着系统总线,DMAC只是一个工作在从属状态的受控模块。当系统设备产生直接存储器存取需求时,该系统设备将向DMAC发出DMA请求,DMAC收到该请求后,通过HOLD控制信号向CPU申请占用系统总线。CPU接收到HOLD控制信号后处理DMAC的请求,由系统软件通过总线向DMAC写入控制信息、待传输数据块的长度和数据块的存取地址等信息;然后CPU将系统的总线控制权移交给DMAC,由DMAC控制系统总线数据传输工作。此处的系统软件类似于计算机的操作系统,用于将CPU分配给各个任务或者处理存储器的使用分配等。所述存取地址指的是数据块在接收区的地址和数据块在发送区的地址,由于数据块具有一定长度,这两个地址都是一段地址范围,其中数据块在发送区的地址又称为源地址,数据块在接收区的地址又称为目的地址。系统软件给系统设备中的数据块所分配的地址都是虚拟地址,而不是数据块在内存中的实际物理地址,系统软件中的存储管理单元(MMU,Memory Management Unit)负责将数据块的虚拟地址映射到可用的物理内存中,数据块在内存中的位置用物理地址表示。系统软件给数据块分配的虚拟地址可以是连续的,而数据块保存在内存中的物理地址可以是离散的,所以虚拟地址连续的数据块在内存中并非连续保存,而是分成多个物理地址连续的小块,各小块之间的物理地址不连续,本申请中将物理地址连续的小块称为数据子块。系统软件将数据块的虚拟地址到物理地址的映射关系采用地址页表的方式保存,供数据块操作时调用。由MMU管理的物理内存具有最小连续区,MMU以最小连续区为单位保存数据,现有技术中将最小连续区称为页。
图1是包含DMAC的系统工作原理图,下面将结合图1详细说明DMA方式实现数据传输的过程。
A、输入输出设备101或存储器105通过DMA请求触发器102向DMA控制器103发出DMA请求。
B、DMAC通过HOLD控制信号向中央处理器104发出DMA请求。
C、CPU对DMA请求做出响应。CPU的响应包括两方面内容其一,CPU将控制总线、数据总线和地址总线接口的输出端设置成高阻态,表明CPU放弃对总线的控制权;其二,CPU将其放弃总线控制权的消息通过HLDA控制信号告知DMAC。
D、DMAC接管系统的总线控制权后,向DMA请求触发器发送DMA响应。
E、DMAC通过系统总线来控制存储器105与输入输出设备101之间、或者存储器105的不同区域之间的数据传输。
本步骤中数据传输的过程分为两小步首先,DMAC将数据块从发送区读出,存到DMAC的寄存器单元,该步骤可以用一个DMA读周期完成;其次,DMAC将寄存器单元中的数据块写到接收区,该步骤可以用一个DMA写周期完成。
F、DMAC完成数据传输后,通过HOLD控制信号向CPU发出撤消DMA请求消息。CPU收到DMAC发出的撤消DMA请求消息后,通过HLDA控制信号告知DMAC结束对系统总线的控制,同时CPU重新控制总线,DMA数据传输过程结束。
现有的DMAC结构如图2,包括总线接口201、寄存器单元202、控制逻辑单元203和请求处理单元204。由于DMAC只能根据数据块的物理地址进行数据传输,而且DMAC每次只能传输一段物理地址连续的数据子块,所以对虚拟地址连续但物理地址不连续的数据块,DMAC只能以每次传输一段数据子块的方式通过多次传输完成整个DMA数据传输过程。
假设某系统设备需要通过DMA方式对虚拟地址范围为0x000~0x7FF,大小为2KB的数据块进行传输,MMU设定的每页数据大小为1KB,待传输的数据块在内存中保存成两页,这两页数据子块的物理地址不连续,所以DMAC只能分两次传输,整个数据块的传输过程如图3所示。
步骤301系统设备向DMAC发出DMA请求,DMAC通过HOLD控制信号向CPU申请系统的总线控制权,然后系统软件将待发送数据块的虚拟地址映射为物理地址。经过地址映射,系统软件判定本实施例中的数据块需要分成两次数据子块传输,每个数据子块的大小为1KB。
步骤302系统软件送控制信息给DMAC,启动DMAC的数据传输,并将第一个数据子块的物理地址通过系统总线发送到DMAC的寄存器单元。
步骤303DMAC获得总线控制权,进行第一个数据子块的数据传输,同时系统软件可以执行图1所示系统产生的其它程序。
步骤304第一个数据子块的数据传输结束,DMAC通过控制逻辑单元产生中断请求,并通过HOLD控制信号将总线控制权交还给CPU。
步骤305系统软件响应DMAC的中断请求,停止执行其它程序,将第二个数据子块的物理地址通过系统总线发送到DMAC的寄存器单元,DMAC再次通过HOLD控制信号申请总线控制权。
步骤306DMAC获得总线控制权进行第二个数据子块的数据传输,同时系统软件可以执行图1所示系统产生的其它程序。
步骤307第二个数据子块的数据传输结束,DMAC产生中断请求并将总线控制权交还给CPU。系统软件响应DMAC的中断请求,停止执行其它程序,并通过DMAC的中断请求判定本次DMA数据传输过程结束。
从上述步骤可以看出,由于现有的DMAC无法将待传输数据块的虚拟地址映射成物理地址,所以需要依靠系统软件完成这一地址映射过程。另外,DMAC在执行数据传输时只能将物理地址连续的数据块从发送区送至接收区。所以,对于物理地址不连续的数据块,需要分成物理地址连续的数据子块分次传输才能完成DMA数据传输任务。上述情况造成DMAC必须重复步骤302~304的过程中断系统软件对其它程序的执行,以获得每个数据子块的物理地址,而对系统进行中断操作会给整个系统运行增加额外负担,也降低了数据传输的速率。
实用新型内容有鉴于此,本实用新型的主要目的在于提供一种直接存储器存取装置,由DMAC自身就能实现待传输数据块的虚拟地址到物理地址的映射,从而减小系统运行负担,加快DMA数据传输的速率。
为达到上述目的,本实用新型的技术方案具体是这样实现的一种直接存储器存取装置,其特征在于,该装置包括总线接口,用于从系统总线获取数据或信息送至寄存器单元,或将寄存器单元中的数据或信息发送到系统总线;寄存器单元,用于将待传输数据块的虚拟地址送入地址转换单元,并将所存储的控制信息送入逻辑控制单元;逻辑控制单元,用于接收请求处理单元送入的信息,并输出控制信号到总线接口、寄存器单元、地址转换单元和请求处理单元;请求处理单元,用于处理并响应需要进行数据传输的设备发出的直接存储器存取请求;地址转换单元,用于接收总线接口输入的虚拟地址和物理地址的映射关系信息,并将寄存器单元输入的虚拟地址映射为物理地址输出至总线接口。
所述地址转换单元中设置有地址页表,用于保存虚拟地址和物理地址的映射关系信息。
所述寄存器单元包括数据寄存器、地址寄存器和控制寄存器。
由上述技术方案可见,本实用新型的这种直接存储器存取装置在DMAC中增加了地址转换单元,通过地址转换单元保存待传输数据块的地址页表,该地址页表记录待传输数据块的虚拟地址和物理地址的映射关系。这样,DMAC无需通过中断请求向系统软件获取待传输数据块的物理地址,只需查询地址转换单元中的地址页表就能连续处理物理地址分散的数据块传输。本实用新型这种装置在实现DMA数据传输的前提下,减少中断操作次数,从而降低系统负担,提高DMA数据传输的速率。


图1为现有技术中包含DMAC的系统工作原理图;图2为现有技术中DMAC的结构示意图;图3为现有技术中DMAC实现DMA数据传输的流程图;
图4为本实用新型一个较佳实施例中DMAC的结构示意图;图5为本实用新型中DMAC实现DMA数据传输的流程图。
具体实施方式
为使本实用新型的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本实用新型进一步详细说明。
如图4所示,本实用新型一个较佳实施例所提供的直接存储器存取装置包括总线接口401、寄存器单元402、控制逻辑单元403、请求处理单元404,以及地址转换单元405。
其中,总线接口401负责收发数据到系统总线和处理系统总线的时序逻辑。系统软件以及系统设备发给DMAC的数据和控制信息都是通过总线接口401送入寄存器单元402,而寄存器单元402也是通过总线接口401送出数据的。
寄存器单元402包括数据寄存器、地址寄存器和控制寄存器。数据寄存器用于暂时存储从发送区取回的数据块,并等待将该数据块写到接收区;地址寄存器存储DMA数据传输的源地址和目的地址;控制寄存器存储控制数据和DMA状态信息。上述寄存器都是通过总线接口401实现与存储器105、输入输出设备101,以及CPU的数据交互。
控制逻辑单元403从寄存器单元402中的控制寄存器读入控制信息,并接收从请求处理单元404送入的DMA请求,通过控制信号对总线接口401、寄存器单元402以及请求处理单元404执行控制操作,同时产生中断请求。
请求处理单元404负责处理输入输出设备101向DMAC发出的DMA请求,并做出DMA响应。
地址转换单元405用于接收总线接口401输入的地址页表,并将接收到的寄存器单元402送入的虚拟地址映射为物理地址,并将物理地址输出至总线接口401。
基于图4所示的装置,本实用新型的直接存储器存取过程如图5所示,包括以下步骤步骤501系统设备向DMAC发出DMA请求,DMAC通过HOLD控制信号向CPU中请系统的总线控制权。然后,系统软件将待发送数据块的虚拟地址映射为物理地址,并生成记录待发送数据块的虚拟地址和物理地址的映射关系的地址页表。
所述虚拟地址包括源地址和目的地址,经过MMU映射,源地址和目的地址的物理地址都变为离散的地址范围。
本实施例中,假设待传输数据块的虚拟地址和物理地址的映射关系如下虚拟地址的范围为0x000~0x7FF,而数据块在内存中保存成两页,这两页数据子块的物理地址不连续。
随后,系统软件将本次数据传输任务的地址页表通过DMAC的总线接口传到地址转换单元保存,并将本次数据传输任务的虚拟地址通过DMAC的总线接口传到寄存器单元。
步骤502系统软件送控制信息给DMAC,启动DMAC的数据传输,并将待传输数据块的地址页表通过DMAC的总线接口传到地址转换单元保存,还将待传输数据块的虚拟地址通过DMAC的总线接口传到寄存器单元。
上述控制信息可以设置为0或1,如果控制信息为1,表明系统启动DMAC的数据传输。
步骤503DMAC获得总线控制权,利用地址页表将待传输数据块按照物理地址的连续性分成数据子块传输。DMA数据传输过程中,系统软件可以执行图1所示系统产生的其它程序。所述数据块的DMA数据传输过程如下首先、寄存器单元将待传输数据块的虚拟地址送入地址转换单元。
其次、地址转换单元通过查询地址页表获知待传输数据块在内存中的保存情况,包括具有连续物理地址的数据子块个数,以及每个数据子块的物理地址等信息。
再次、地址转换单元先将第一个数据子块的源物理地址送入总线接口,总线接口通过系统总线从发送区的源物理地址处取该数据子块到DMAC,并将该数据子块存入寄存器单元。
随后、地址转换单元将第一个数据子块的目的物理地址送入总线接口,寄存器单元根据目的物理地址将该数据子块存到接收区的相应位置,该数据子块的存取过程结束。
接着、DMAC重复上述取数据和存数据的过程,直至待传输的数据块全部保存到接收区。
步骤504DMAC产生中断请求并将总线控制权交还给CPU。系统软件响应DMAC的中断请求,停止执行其它程序,并通过DMAC的中断请求判定本次DMA数据传输过程结束。
由上述的实施例可见,本实用新型的这种直接存储器存取装置在现有装置的基础上增加地址转换单元,使DMAC自身能实现待传输数据块的虚拟地址到物理地址的映射,使该装置在实现DMA数据传输的前提下,减少中断操作次数,降低系统负担,并提高数据传输的速率。
权利要求1.一种直接存储器存取装置,其特征在于,该装置包括总线接口,用于从系统总线获取数据或信息送至寄存器单元,或将寄存器单元中的数据或信息发送到系统总线;寄存器单元,用于将待传输数据块的虚拟地址送入地址转换单元,并将所存储的控制信息送入逻辑控制单元;逻辑控制单元,用于接收请求处理单元送入的信息,并输出控制信号到总线接口、寄存器单元、地址转换单元和请求处理单元;请求处理单元,用于处理并响应需要进行数据传输的设备发出的直接存储器存取请求;地址转换单元,用于接收总线接口输入的虚拟地址和物理地址的映射关系信息,并将寄存器单元输入的虚拟地址映射为物理地址输出至总线接口。
2.根据权利要求1所述的装置,其特征在于,所述地址转换单元中设置有地址页表,用于保存虚拟地址和物理地址的映射关系信息。
3.根据权利要求1或2所述的装置,其特征在于,所述寄存器单元包括数据寄存器、地址寄存器和控制寄存器。
专利摘要本实用新型公开了一种直接存储器存取装置。该装置包括总线接口,用于在系统总线和寄存器单元之间传输数据或信息;寄存器单元,用于将待传输数据块的虚拟地址送入地址转换单元,并将所存储的控制信息送入逻辑控制单元;逻辑控制单元,用于接收请求处理单元送入的信息,并输出控制信号;请求处理单元,用于处理并响应需要进行数据传输的设备发出的直接存储器存取请求;地址转换单元,用于接收总线接口输入的地址页表,并将寄存器单元送入的虚拟地址映射为物理地址输出至总线接口。采用该装置在实现DMA数据传榆的前提下,减少中断操作次数,从而降低系统负担,提高DMA数据传输的速率。
文档编号G06F13/28GK2812118SQ200420122250
公开日2006年8月30日 申请日期2004年12月31日 优先权日2004年12月31日
发明者白锋 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1