用于处理未知长度传输的dmac的制作方法

文档序号:6456579阅读:182来源:国知局
专利名称:用于处理未知长度传输的dmac的制作方法
技术领域
本发明涉及数据处理电路,尤其涉及可操作用于维持和存储传输计 数的直接存储器存取(DMA)控制器。
背景技术
DMA操作是本领域中的公知技术。DMA控制器的功能是从处理器 或其他系统控制器中卸载(offload)常规数据传输任务。在示例性DMA 传输操作中,处理器初始化DMA的源信息及目标信息、控制信息以及传 输大小。DMA控制器自行从源读取数据,并向目标写入数据,该源可以 包括例如通信接口之类的外围设备或包括存储器位置,所述目标也可以 包括外围设备或存储器。因此,可以从外围设备向外围设备、从外围设 备向存储器、从存储器向外围设备、或者从存储器向存储器进行DMA传 输。DMA控制器典型将传输大小存储在计数器中,并且在写入各数据时 (例如以字节、半字等)使传输大小递减。当传输大小递减至零时,DMA 传输操作完成,并且DMA控制器可以中断该处理器,在状态寄存器或控 制寄存器中设定一个标志,或者以其他方式表示数据传输完成。多通道 DMA控制器典型地通过对DMA传输进行时分复用来并行地执行两个或 更多个DMA传输操作。可以将DMA传输操作链接起来。例如,可以将 非常庞大的数据传输分割为一系列较小的传输。可以初始化DMA控制器 的源信息、目标信息、传输大小信息以及其他控制信息,并且可以对DMA 控制器额外提供链接地址。当DMA控制器完成DMA传输时,其从该链 接地址(以及一个新的链接地址)读取一组新的源信息、目标信息、传 输大小信息以及控制信息,并且立刻开始新的DMA传输操作。
通过这种方式,可以将大量DMA传输操作链接或串起来,以移动 大量的数据。
5在许多情况下,预先不知道DMA传输的长度。例如,从通信外围 设备向存储器进行的DMA传输可以传输一个或更多个分组,而外围设备 在接收前不知道分组的长度。另外,例如当外围设备超时或目的地缓存 器存满(fill)时,名义上己知长度的DMA传输可以提前终止。在这两 种情况的任一情况下,软件需要査明(ascertain)所传输的数据量以能够 对数据进行处理。在常规DMA控制器中,在DMA控制器开始后续的 DMA传输之前必须由处理器读出传输计数(从零递增或从名义传输计数 递减),这将会重写(overwrite) DMA传输计数寄存器或计数器。
即使当DMA传输操作终止时DMA控制器中断了处理器,用于使处 理器停止(halt)执行、加载中断服务例程、并读取DMA传输计数(进 而释放DMA控制器以执行后续的DMA传输操作)所需的上下文切换 (context switch)仍然需要很大的并且在许多情况下不可接受的延迟。由 于计算系统的功能性和复杂性的提高,共享数据的外围设备的数量、待 传输的数据量、以及系统数据速率都随之增加,从而降低了DMA传输操 作之间的最大可接受延迟。因此,在本领域中,需要在未知大小DMA传 输的情况下将处理器与DMA控制器"解耦(decouple)"。

发明内容
根据一个或更多个实施方式,DMA控制器维持各DMA操作中传输 的数据的计数,并在DMA操作结束时保存传输数据计数。然后,DMA 控制器可以开始随后的DMA传输操作而无需等待处理器读取该传输数 据计数。传输数据计数可以被写入到存储器中在传输数据计数保存地址 寄存器中指定的地址处;可以被保存到DMA通道专用的传输数据计数寄 存器中;或者可以被保存到在两个或更多个DMA通道之间共享的传输数 据计数寄存器中。处理器可以读取传输数据计数,并且在适当的情况下, 在DMA控制器开始该DMA通道上的另一个DMA操作之后,将相关的 传输数据计数寄存器清零。
在一个实施方式中,本发明涉及借助于具有一个或更多个通道的 DMA控制器使DMA操作与处理器解耦的方法。针对至少一个DMA通道,执行第一DMA传输并维持所传输的数据的计数。存储所传输的数据 的计数。在处理器读取所存储的传输数据的计数之前开始执行第二 DMA 传输。
在另一个实施方式中,本发明涉及支持一个或更多个DMA通道的 DMA控制器。该DMA控制器包括与各DMA通道相关联的寄存器组, 该组包括至少一个计数器,该计数器可操作用于维持各DMA操作中传输 的数据的计数。该DMA控制器还包括控制电路,该控制电路可操作用于 在各DMA操作之后保存传输数据计数,并且进一步可操作用于在处理器 读取所保存的传输数据计数之前开始随后的DMA操作。
在又一个实施方式中,本发明涉及数据处理系统。该系统包括处理 器、存储器、以及支持一个或更多个DMA通道的DMA控制器。该系统 还包括位于DMA控制器中并与各DMA通道相关联的寄存器组,该组包 括至少一个计数器,该计数器用于维持各DMA操作中传输的数据的计 数。该系统进一步包括DMA控制器中的控制电路,该控制电路可操作用 于在各DMA操作之后保存传输数据计数,并且进一步可操作用于在所述 处理器读取所保存的传输数据计数之前开始随后的DMA操作。


图1是数据处理系统的功能框图。
图2是与各DMA通道相关联的寄存器组的框图。
图3是执行DMA操作的方法的流程图。
具体实施例方式
图1描述了总体上由标号IO表示的代表性的数据处理系统的功能框 图。系统IO包括处理器12或其他控制器,例如数字信号处理器(DSP)、 嵌入式微控制器、在ASIC或FPGA中实现的状态机等。处理器12连接 至高速总线14,并通过高速总线向存储器16和从存储器16传输数据。 系统10的与存储器16进行高带宽通信的其他部件(例如图形控制器18 和DMA控制器12)也连接至高速总线14。在DMA传输操作中,图形
716之间传输大量的数据。
在外围总线24上设有用于在高速总线14与外围设备或功能之间进 行数据传输的总线桥22。外围总线24可以连接到多个外围设备,例如实 时时钟(RTC) 26、通用异步接收器/发送器(UART) 28和输入/输出接 口30、网络接口卡(NIC) 32等。这些外围设备中的一些28、 30、 32可 以通过DMA传输操作而向存储器16和从存储器16传输数据,和/或与 其他外围设备28、 30、 32传输数据。通常,可以参与到DMA传输操作 中的外围设备28、 30、 32以及部件18具有与DMA控制器20的边带控 制信号连接。当然,图1中的数据处理系统IO只是代表性的。在其他实 施方式中,所有的功能块可以共享相同的总线,不一定存在所有的部件, 还可以包括其他部件等。
DMA控制器20包括控制电路21,其例如可以包括状态机;以及 针对各DMA通道的一组寄存器40,具体如图2所示。各寄存器组40可 以包括控制寄存器42、源寄存器44、目标寄存器46、传输大小寄存器或 计数器48,如果DMA控制器20支持链接的DMA传输操作,则各寄存 器组40可以包括参数链接地址寄存器50。
控制寄存器42包含各种预定的位字段,这些位字段定义了 DMA传 输操作的参数,例如要传输的各数据的大小(例如字节、半字、字等)、 在各数据读取或写入后是否应该递增源地址和/或目的地址、在多通道 DMA控制器20中该DMA传输操作相对于其他并行DMA传输操作的优 先级、和/或任何给定的实现所期望或要求的其他控制信息。
源寄存器44指示了要从其读取数据的外围设备或存储器位置,目标 寄存器46指示了要向其写入数据的外围设备或存储器位置。传输大小寄 存器48可以包括计数器,该计数器被初始化为所希望的数据传输计数, 并且在成功读取和写入各数据时进行递减。或者,对于未知大小的DMA 传输操作,可以将传输大小寄存器/计数器48初始化为0,并在传输各数 据时进行递增。
如果DMA控制器20支持链接DMA传输操作,则参数链接地址寄 存器50包括起始存储器地址,在链接DMA传输操作完成时,DMA控制器20可以从起始存储器地址获得寄存器组42的新值。参数链接地址 寄存器50还可以包括有效位(未示出),该有效位用于表示链接DMA操 作有待确定(pending)。
在DMA传输操作(或链接的一系列DMA传输操作中的第一 DMA 传输操作)之前,通过处理器来初始化寄存器组42。处理器还初始化参 与DMA传输操作的任何外围设备。然后,DMA控制器20分别响应于 来自外围设备的控制信号(其表示这些外围设备具有可用数据或具有用 于接收数据的容量)以及响应于对外围总线24和高速总线14的仲裁, 自行地执行DMA传输操作,从外围设备读取数据或者向外围设备写入数 据。根据本发明的一个或更多个实施方式,当DMA传输操作完成时, DMA控制器20保存成功传输的数据的计数,以由处理器随后进行检验, 并且可以立即进行下一个DMA传输操作。
在一个实施方式中,传输数据计数保存在DMA通道专用的传输数 据计数寄存器54中。传输数据计数寄存器54可以包括计数器,在执行 DMA传输操作前该计数器被初始化为0,并且在成功传输各数据时进行 递增。或者,传输数据计数寄存器54可以包括简单寄存器,当完成DMA 传输操作时,将传输大小寄存器/计数器48的内容复制到该简单寄存器 中。与寄存器组40中的寄存器42-50不同,在进行各DMA传输操作之 前不对传输数据计数寄存器54进行重写。而是采用如下方式,即可以 由处理器12在读取传输数据计数时将传输数据计数寄存器54清零,或 者可以由DMA控制器20在完成随后的DMA传输操作时响应于来自处 理器12的表示已经读取了之前的传输数据计数的指示,将传输数据计数 寄存器54重写。这种指示例如可以包括用于随后的DMA传输操作的在 控制寄存器42中的一位或更多位的预定状态。
在一个实施方式中,DMA控制器20可以包括多个传输数据计数寄 存器54a、 54b、 54c,各传输数据计数寄存器专用于DMA通道以利用该 通道来保存多于一个连续DMA传输操作的传输数据计数。可以设置任意 希望数量n个传输数据计数寄存器54,使得DMA控制器20能够执行每 通道多达n个连续DMA传输操作,而无需等待处理器12读取传输数据计数。传输数据计数寄存器54的数量n可以随各DMA通道而改变,并 且可以基于已知或预知的DMA传输活动水平、处理器12的响应时间以 及系统的10的延迟(latency)要求等而由系统设计者确定。n个传输数 据计数寄存器54可以形成循环队列,其中DMA控制器总是向下一个连 续的传输数据计数寄存器54进行写入。或者,传输数据计数寄存器54 可以包括时间戳字段(未示出),DMA控制器对各传输数据计数保存一 个时间戳或者按时序递增的顺序号,使得处理器12能够将传输数据计数 与DMA传输操作关联起来。
在一个实施方式中,并非将一个或更多个传输数据计数寄存器的硬 件资源专用于各DMA通道,而是多通道DMA控制器20可以包括一个 或更多个共享的传输数据计数寄存器54。在该情况下,各传输数据计数 寄存器54可以包括DMA通道标识符字段(未示出),从而处理器12能 够明确地将各传输数据计数与相应的DMA通道关联起来。在一个实施方 式中,各个共享的传输数据计数寄存器54另外包括时间戳字段(未示出), 使得处理器12能够查明与给定的DMA通道相关联的多个传输数据计数 中的哪一个应用于哪个DMA传输操作。
在一个实施方式中,各DMA通道的寄存器组40包括传输数据计数 保存地址寄存器52。处理器12利用在DMA传输操作之后DMA控制器 20对传输数据计数进行存储的存储器16位置的地址来初始化(或者,在 链接的DMA传输操作的情况下由DMA控制器20读取)该寄存器52。 该实施方式对在不等待处理器12读取传输数据计数的情况下DMA控制 器20可以执行的连续DMA传输操作的数量提供了实质上无限制的灵活 性,而无需实现可能很少或从未被利用过的昂贵的硬件寄存器。
处理器将各传输数据计数保存地址与相应的DMA传输操作关联起 来,而不再需要DMA通道标识符、时间戳或其他标识信息。
图3描述了根据本发明的各种实施方式执行一个或更多个DMA传 输操作的方法,总体以60指示。该方法60从框62开始。对寄存器组40 进行初始化(框64)。起初,处理器12向寄存器组40写入数据。在链接 的DMA传输操作中,DMA控制器20从前一个DMA传输操作期间在参数链接地址寄存器50中指定的地址读取寄存器组40的数据。
DMA控制器20从源寄存器44中指定的源读取控制寄存器42中指 定的数据(框66)。该源可以是外围设备28、 30、 32,或者是存储器16 中的位置。然后,DMA控制器20向目标寄存器46中指定的目标写入数 据(框68)。该目标也可以是外围设备28、 30、 32,或者是存储器16中 的位置。在任一情况下,DMA控制器20可以从单个位置(例如FIFO的 输出)读出或向其写入,或者可以递增例如在控制寄存器42中指定的读 取/写入地址。
DMA控制器20例如通过对传输大小寄存器48或其他计数器进行递 增或递减来维持在DMA传输操作中传输的数据的计数(框70)。该处理 一直持续到DMA传输完成为止(框72)。在以下情况下DMA传输操作 完成,即当已经传输了传输大小寄存器48所指定的数据量时;当数据 源(例如经由边带控制信号)向DMA控制器20表明传输完成时;当数 据目标(例如经由边带控制信号)向DMA控制器20表明不能接受更多 数据时;或者当DMA控制器20识别出文件末尾(EOF)标志或表示分 组、帧等的末尾的其他预定数据模式时(如可以在DMA控制器20中的 控制寄存器42或其他寄存器中指定的)。
当DMA传输操作完成时,DMA控制器20保存传输数据计数,从 而在开始随后的DMA传输操作前无需等待处理器12读取传输数据计数。 在一个实施方式中,将传输数据计数保存到专用于DMA通道的下一个可 用传输数据计数寄存器54a、 54b、 ...54(n-l)(框76)。在另一实施方式 中,DMA控制器20将传输数据计数保存到下一个可用的共享传输数据 计数寄存器54a、 54b、 ...54(n-l)(框77)。在另一实施方式中,DMA控 制器20将传输数据计数写入到存储器16中在传输数据计数保存地址寄 存器52中指定的地址处(框7S)。
如果参数链接地址寄存器50包含表示链接DMA操作的有效地址 (框80),则DMA控制器20从存储器16中的指定地址处读取数据以对 寄存器组40进行初始化(框64)(但如果保存到寄存器54,则不重写传 输数据计数)并且继续执行另一个DMA传输操作,而不等待处理器12从之前的DMA传输操作读取传输数据计数。如果参数链接地址寄存器 50不包含有效地址且DMA传输操作已经完成,则方法60在框82结束。
由于通过保存传输计数而将处理器12与DMA传输操作解耦,因此 未知大小的DMA传输无需使系统停止,并且DMA控制器20无需等待 处理器12,而是能够立刻开始随后的DMA传输操作。这种能力显著地 提高了通过数据处理系统10的数据传输。
当然,在不脱离本发明的本质特征的情况下,可以通过除此处所具 体阐述的方式之外的其他方式来实现本发明。这些实施方式在所有方面 都应当视为示例性而非限制性的,旨在将落入所附权利要求的含义和等 同范围内的所有改变都包含于此。
权利要求
1、一种借助于具有一个或更多个通道的直接存储器存取(DMA)控制器在处理器的干预最小的情况下执行DMA操作的方法,该方法包括针对至少一个DMA通道而执行以下步骤执行第一DMA传输并维持传输数据计数;对所述传输数据计数进行存储;以及在所述处理器读取所存储的传输数据计数之前,开始执行第二DMA传输。
2、 根据权利要求1所述的方法,其中,对所述传输数据计数进行存储的步骤包括以下步骤将所述计数写入到预定的存储器位置。
3、 根据权利要求2所述的方法,其中,所述预定的存储器位置是由 所述处理器针对各DMA传输而指定的。
4、 根据权利要求1所述的方法,其中,对所述传输数据计数进行存 储的歩骤包括以下步骤将该计数保存到所述DMA控制器中的DMA传 输计数寄存器。
5、 根据权利要求4所述的方法,其中,所述DMA传输计数寄存器 与所述DMA通道相关联。
6、 根据权利要求5所述的方法,其中,所述DMA传输计数寄存器 是与所述DMA通道相关联的多个DMA传输计数寄存器中的一个。
7、 根据权利要求4所述的方法,其中,所述DMA传输计数寄存器 由两个或更多个DMA通道共享。
8、 根据权利要求7所述的方法,其中,所述DMA传输计数寄存器 是由两个或更多个DMA通道共享的多个DMA传输计数寄存器中的一 个。
9、 一种支持一个或更多个直接存储器存取(DMA)通道的DMA控 制器,该DMA控制器包括与各DMA通道相关联的寄存器组,该组包括至少一个计数器,该 计数器用于维持各DMA操作中传输的数据的计数;以及控制电路,该控制电路可操作用于在各DMA操作之后保存传输数 据计数,并且进一步可操作用于在处理器读取所保存的传输数据计数之 前开始随后的DMA操作。
10、 根据权利要求9所述的DMA控制器,其中,各寄存器组进一 步包括传输数据计数保存地址寄存器,并且其中,所述控制电路进一步 可操作用于将所述传输数据计数写入到存储器中在所述传输数据计数保 存地址寄存器中存储的地址处。
11、 根据权利要求9所述的DMA控制器,其中,各寄存器组进一 步包括在各DMA操作之前没有被重写的传输数据计数寄存器,并且其 中,所述控制电路可操作用于将所述传输数据计数保存到所述传输数据 计数寄存器。
12、 根据权利要求11所述的DMA控制器,其中,各寄存器组进一 步包括多个传输数据计数寄存器,并且其中,所述控制电路将多个连续 DMA操作的所述传输数据计数保存到所述传输数据计数寄存器。
13、 根据权利要求12所述的DMA控制器,其中,所述控制电路另 外将时间戳与各传输数据计数一起保存。
14、 根据权利要求9所述的DMA控制器,该DMA控制器进一步 包括在进行各DMA操作之前没有被重写的共享的传输数据计数寄存器, 并且其中,所述控制电路可操作用于将来自任意DMA通道的传输数据计 数保存到所述共享的传输数据计数寄存器。
15、 根据权利要求14所述的DMA控制器,该DMA控制器进一步 包括多个共享的传输数据计数寄存器,并且其中,所述控制电路将多个 连续DMA操作的传输数据计数保存到所述共享的传输数据计数寄存器。
16、 根据权利要求15所述的DMA控制器,其中,所述控制电路另 外将时间戳与各传输数据计数一起保存。
17、 一种数据处理系统,该数据处理系统包括 处理器;存储器;支持一个或更多个直接存储器存取(DMA)通道的DMA控制器;与各DMA通道相关联的寄存器组,该组包括至少一个计数器,该 计数器可操作用于维持各DMA操作中传输的数据的计数;以及控制电路,其可操作用于在各DMA操作之后保存传输数据计数, 并且进一步可操作用于在所述处理器读取所保存的传输数据计数之前开 始随后的DMA操作。
18、 根据权利要求17所述的系统,其中,各寄存器组进一步包括传 输数据计数保存地址寄存器,并且其中,所述控制电路进一步可操作用 于将所述传输数据计数写入到存储器中在所述传输数据计数保存地址寄 存器中存储的地址处。
19、 根据权利要求17所述的系统,其中,各寄存器组进一步包括在 进行各DMA操作之前没有被重写的传输数据计数寄存器,并且其中,所 述控制电路可操作用于将所述传输数据计数保存到所述传输数据计数寄 存器。
20、 根据权利要求19所述的系统,其中,所述寄存器组进一步包括 多个传输数据计数寄存器,并且其中,所述控制电路将多个连续DMA操 作的所述传输数据计数保存到所述传输数据计数寄存器。
21、 根据权利要求17所述的系统,该系统进一步包括在进行各DMA 操作之前没有被重写的共享的传输数据计数寄存器,并且其中,所述控 制电路可操作用于将来自任意DMA通道的传输数据计数保存到所述共 享的传输数据计数寄存器。
22、 根据权利要求21所述的系统,该系统进一步包括多个共享的传 输数据计数寄存器,并且其中,所述控制电路将多个连续DMA操作的传 输数据计数保存到所述共享的传输数据计数寄存器。
全文摘要
DMA控制器维持各DMA操作中传输的数据的计数,并在DMA操作结束时保存传输数据计数。DMA控制器然后可以开始随后的DMA传输操作而无需等待处理器读取该传输数据计数。传输数据计数可以被写入到存储器中在传输数据计数保存地址寄存器中指定的地址处;可以被保存到DMA通道专用的传输数据计数寄存器中;或者可以被保存到在两个或更多个DMA通道之间共享的传输数据计数寄存器中。处理器可以读取传输数据计数,并且在适当的情况下,在DMA控制器开始该DMA通道上的另一个DMA操作之后,将相关的传输数据计数寄存器清零。
文档编号G06F13/28GK101636721SQ200780044082
公开日2010年1月27日 申请日期2007年11月23日 优先权日2006年11月28日
发明者克拉伦斯·V·罗伯茨, 大卫·巴罗 申请人:Lm爱立信电话有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1