专利名称:可变长度的dma获取控制命令节点联结的方法及其系统的制作方法
技术领域:
本发明涉及DMA(Direct Memory Access,直接内存存取)获取节点联结的方法,特别有关于一种可变长度的DMA获取控制命令节点联结的方法及其系统。
背景技术:
在计算机系统或者嵌入式系统用DMA获取节点联结是一种常见的方法,它是由软件把要处理的数据按照一定的顺序放到内存中,由硬件自动去获取数据的一种方法。
直接内存存取为一个特殊的硬件结构,它允许接口装置与内存之间直接转移数据,而不需经由CPU的参与。在外围与内存之间需要大量数据转移时,此种方式可说是一种不需要中断服务程序的中断服务,直接由硬件完成此特定的工作,节省了许多程序执行的时间。当一装置有数据需传输到内存时,CPU要从该装置把数据读出再由CPU写到内存。所有的动作均由CPU控制,非常不符合效率。而DMA即是不透过CPU而直接由装置写到内存,因此有非常好的效率。
当进行DMA存取时,程序所作的动作是去控制DMA控制器,给DMA控制器一些数据,比方说要传送数据的装置,要存取的内存地址范围等等。然后DMA控制器就暂时接管整个总线,而直接存取内存的数据到指定的I/O装置。
图1为传统的DMA获取控制命令节点联结的功能方块图。如图所示,其中由系统内存11储存命令节点联结(Command node link),再利用DMA控制器13的控制,经DMA缓存器12将命令节点联结传送至命令更新控制器14,DMA缓存器12为一先进先出的缓存器。而命令更新控制器14将更新命令节点联结并传送至命令控制缓存器15及下一命令节点联结指针缓存器16,进而提供DMA控制器13来处理。系统内存11中放的节点联结为等长度的节点组成,DMA控制器13读到后把所有的命令参数都更新到命令更新控制器14中。如此会占有比较大的系统内存11,而且系统需要更新命令控制缓存器15的时间亦将较长。
是以传统的DMA控制器13获取控制命令节点联结都是定长度的,且不管控制字码是不是有变化,都将把所有的控制字全部都更新到系统内存11。硬件通过DMA控制器13去获取所有的控制字码,更新到对应的缓存器中。这样一来系统便要用较大内存去存储控制命令节点联结,比较浪费,DMA控制器13也要花比较长的时间去读取,导致系统的效率较低。
发明内容
有鉴于此,本发明于节点的表头(heard)中加入下一命令码,并提供有效的节点联结的长度以撷取当前的节点,而不需如公知技术中将所有等长度的节点通通更新至内存中,借此达成节省内存空间并提高系统效率。
本发明提供一种可变长度的DMA获取控制命令节点联结的方法,其特征在于,步骤包括首先主机填写一节点联结下一指针缓存器(node link nextpointer register)及一节点联结下一命令缓存器(node link next commandregister);再储存所有节点联结至系统内存中;然后锁存该节点联结下一指针缓存器的值至一节点联结当前指针缓存器(node link current pointer register),与锁存该节点联结下一命令缓存器的值至一节点联结当前命令缓存器(nodelink current command register);跟着计算当前节点的长度;然后根据该节点联结当前指针缓存器的指针(pointer)及该计算当前节点的长度撷取当前的节点;接着将该节点中的表头(header)更新到该节点联结下一指针缓存器及该节点联结下一命令缓存器;最后译码出要更新的命令控制缓存器之地址,将命令参数更新到对应的缓存器。
本发明另提供一种可变长度的DMA获取控制命令节点联结的系统,其特征在于,包括一节点联结下一指针缓存器,用于缓存节点联结下一指标;一节点联结当前指针缓存器,接收该节点联结下一指针缓存器的值;一节点联结下一命令缓存器,用于缓存节点联结下一命令;一节点联结当前指针缓存器,接收该节点联结下一命令缓存器的值;一命令译码器,用于接收该节点联结当前命令缓存器的值,并将该节点联结当前命令缓存器的值译码而产生一第一译码信号及一第二译码信号;一DMA控制器,根据该第一译码信号于该节点联结当前指针缓存器撷取当前的节点;一命令控制缓存器,用于缓存命令控制信号;及一命令更新控制器,根据该第二译码信号更新该命令控制缓存器及根据该DMA控制器的信号更新该节点联结下一指针缓存器与该节点联结下一命令缓存器。
图1为传统的DMA获取控制命令节点联结的功能方块图;图2为本发明DMA获取控制命令节点联结系统的功能方块图;及图3为本发明DMA获取控制命令节点联结方法的动作流程图。
其中,附图标记11系统内存 12DMA缓存器13DMA控制器 14命令更新控制器15命令控制缓存器16下一命令节点联结指针缓存器21命令译码器22节点联结当前指针缓存器23节点联结下一指针缓存器24节点联结当前命令缓存器25节点联结下一命令缓存器26第一译码信号 27第二译码信号具体实施方式
配合附图将本发明实施利详细说明如下。
图2为本发明DMA获取控制命令节点联结系统的功能方块图。如图所示,其系统包括系统内存11、DMA缓存器12、DMA控制器13、命令更新控制器14、命令控制缓存器15、命令译码器21、节点联结当前指针缓存器22、节点联结下一指针缓存器23、节点联结当前命令缓存器24及节点联结下一命令缓存器25。其中由系统内存11储存命令节点联结,再利用DMA控制器13的控制,经DMA缓存器12将命令节点联结传送至命令更新控制器14,DMA缓存器12为一先进先出的缓存器。节点联结下一指针缓存器23缓存节点联结下一指标,节点联结当前指针缓存器22接收节点联结下一指针缓存器23的值。节点联结下一命令缓存器25缓存节点联结下一命令,节点联结当前命令缓存器24接收节点联结下一命令缓存器25的值。命令译码器21用于接收节点联结当前命令缓存器24的值,并将节点联结当前命令缓存器24的值译码而产生第一译码信号26(为当前节点的长度)及第二译码信号27(为欲更新的命令控制缓存器的地址)。DMA控制器13根据第一译码信号26于节点联结当前指针缓存器22撷取当前的节点,藉此不必像公知技术中每个节点皆固定长度。命令控制缓存器15用于缓存命令控制信号。命令更新控制器14根据第二译码信号27更新命令控制缓存器15及根据DMA控制器13的信号更新节点联结下一指针缓存器23与节点联结下一命令缓存器25。
而每个控制命令节点的结构系作了改变,每个节点的表头(header)部分增加了下一个命令的码(code),如下表1所示。其中下一个命令的码利用命令译码器21译码后提供DMA控制器13及命令更新控制器14。
表1控制命令节点联结的结构图3为本发明DMA获取控制命令节点联结方法的动作流程图。如图所示,包括以下步骤步骤S301,系统首先通过主机接口(图未示)去填写节点联结下一指针缓存器23(node link next pointer register)和节点联结下一命令缓存器25(node linknext command register)。
步骤S303,然后写入所有的节点联结到系统内存11中。
步骤S305,主机(图未示)去启动DMA控制器13开始去工作,DMA控制器13便把节点联结下一指针缓存器23和节点联结下一命令缓存器25的值分别锁存到节点联结当前指针缓存器22和节点联结当前命令缓存器24。
步骤S307,命令译码器21根据节点联结当前命令缓存器24中的当前命令(current command)计算出当前节点(current node)的长度。
步骤S309,而根据节点联结当前指针缓存器22指定的指针中去抓当前的节点。
步骤S311,然后把抓回来的表头(header)部分更新到节点联结下一指针缓存器23和节点联结下一命令缓存器25。
步骤S313,同时命令译码器21根据节点联结当前命令缓存器24中的当前命令(current command)译码出要更新的命令控制缓存器15的地址,把命令参数更新到相应的缓存器。
当更新完毕后,命令更新控制器14产生一个脉冲告知系统开始工作,当系统完成当前的命令后,也会产生一个脉冲告知DMA去抓下一个节点综上所述,通过本发明的系统及方法对节点撷取有效的长度,而不必如公知技术的DMA控制器获取控制命令节点联结都是固定长度的,且不管控制字码是不是有变化,都将把所有的控制字全部都更新到系统内存。以达成节省系统内存空间,加快读取时间而增进系统效率。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的普通技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种可变长度的DMA获取控制命令节点联结的方法,其特征在于,包括以下步骤步骤一,系统填写一节点联结下一指针缓存器及一节点联结下一命令缓存器;步骤二,储存所有节点联结至一系统内存中;步骤三,锁存该节点联结下一指针缓存器的值至一节点联结当前指针缓存器,与锁存该节点联结下一命令缓存器的值至一节点联结当前命令缓存器;步骤四,根据节点联结当前命令缓存器中的当前命令计算出当前节点的长度;步骤五,根据该节点联结当前指针缓存器的指针及该计算当前节点的长度撷取当前节点;步骤六,将该当前节点中的表头更新到该节点联结下一指针缓存器及该节点联结下一命令缓存器;及步骤七,译码出要更新的命令控制缓存器的地址,将命令参数更新到对应的缓存器。
2.根据权利要求1所述的DMA获取控制命令节点联结方法,其特征在于,该表头包括一下一命令节点联结指标及一下一命令码。
3.根据权利要求1所述的DMA获取控制命令节点联结方法,其特征在于,由系统启动该DMA以锁存该节点联结下该指针缓存器的值至该节点联结当前指针缓存器,与锁存该节点联结下该命令缓存器的值至该节点联结当前命令缓存器。
4.根据权利要求1所述的DMA获取控制命令节点联结方法,其特征在于,该当前节点的长度利用一命令译码器根据节点当前命令缓存器中的值计算出。
5.根据权利要求1所述的DMA获取控制命令节点联结方法,其特征在于,所述的将命令参数更新到对应的缓存器,利用一命令译码器译码出要更新的命令控制缓存器的地址而更新。
6.根据权利要求1所述的DMA获取控制命令节点联结方法,其特征在于,所述的将命令参数更新到对应的缓存器之后,更包括利用一命令更新控制器产生一脉冲通知系统开始工作,而当系统完成当前的命令后便产生一个脉冲告知DMA去抓下一个节点。
7.一种可变长度的DMA获取控制命令节点联结的系统,其特征在于,包括一节点联结下一指针缓存器,用于缓存节点联结下一指标;一节点联结当前指针缓存器,接收该节点联结下一指针缓存器的值;一节点联结下一命令缓存器,用于缓存节点联结下一命令;一节点联结当前命令缓存器,接收该节点联结下一命令缓存器的值;一命令译码器,用于接收该节点联结当前命令缓存器的值,并将该节点联结当前命令缓存器的值译码而产生一第一译码信号及一第二译码信号;一DMA控制器,根据该第一译码信号于该节点联结当前指针缓存器撷取当前的节点;一命令控制缓存器,用于缓存命令控制信号;及一命令更新控制器,根据该第二译码信号更新该命令控制缓存器及根据该DMA控制器的信号更新该节点联结下一指针缓存器与该节点联结下一命令缓存器。
8.根据权利要求7所述的DMA获取控制命令节点联结的系统,其特征在于,该第一译码信号为一当前节点的长度。
9.根据权利要求7所述的DMA获取控制命令节点联结的系统,其特征在于,该第二译码信号为欲更新的该命令控制缓存器的地址。
10.根据权利要求7所述的DMA获取控制命令节点联结的系统,其特征在于,该命令更新控制器接收该DMA控制器撷取当前的节点中的表头以更新该节点联结下一指针缓存器与该节点联结下一命令缓存器。
11.根据权利要求10所述的DMA获取控制命令节点联结的系统,其特征在于,该表头包括一下一命令节点联结指标及一下一命令码。
12.根据权利要求7所述的DMA获取控制命令节点联结的系统,其特征在于,更包括一系统内存以储存所有的节点联结。
全文摘要
一种可变长度的DMA获取控制命令节点联结方法,其特征为在节点的表头(heard)加入下一命令码(next command code),再利用命令译码器译码出当前节点长度,译码出节点长度去抓取当前的节点,以改善公知技术中固定长度的节点浪费内存空间的情形,并缩短了每次撷取节点联结的时间,进而提升系统效率。
文档编号G06F13/28GK101051296SQ20061007205
公开日2007年10月10日 申请日期2006年4月4日 优先权日2006年4月4日
发明者叶巧玉 申请人:扬智科技股份有限公司