CN100432968C - 存储器直接存取装置及其数据传输方法 - Google Patents
存储器直接存取装置及其数据传输方法 Download PDFInfo
- Publication number
- CN100432968C CN100432968C CNB2004100526742A CN200410052674A CN100432968C CN 100432968 C CN100432968 C CN 100432968C CN B2004100526742 A CNB2004100526742 A CN B2004100526742A CN 200410052674 A CN200410052674 A CN 200410052674A CN 100432968 C CN100432968 C CN 100432968C
- Authority
- CN
- China
- Prior art keywords
- data
- data channel
- address
- register
- channel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
本发明涉及存储器直接存取(DMA)装置和方法。DMA装置包括控制寄存器、数据总线和地址总线、参数RAM以及至少一个工作引擎。参数RAM可分成多个入口,各入口与数据总线、地址总线、工作引擎一起构成一条数据通道。工作引擎包括数据搬运单元、地址计算单元和全局地址存储器。所述DMA方法包括:中央处理器发出DMA传输请求;仲裁器检查数据通道的准备位寄存器;仲裁器根据所述准备位寄存器的值作出仲裁并通知参数RAM;参数RAM设定所述数据通道的工作模式;以及所述数据通道之间协同工作进行数据搬运。
Description
技术领域
本发明涉及一种存储器直接存取装置(Direct Memory Access,DMA)及其数据传输方法,尤其涉及一种方便快速地在非连续地址空间进行数据传送操作的存储器直接存取装置。
背景技术
在图像传输日益盛行的时代,图像数据的高速传输成为一个重要的研究课题。存储器直接存取装置(DMA)广泛应用于各种处理器系统,它能直接将外围装置,如各类输入/输出设备与存储器的相应地址相连接,通过总线直接进行二者之间的数据传送,也能直接在存储器之间进行数据传输,它不需经过中央处理器的调配,能大大加快数据传输的速度。因此,采用DMA装置来进行图像数据的传输也成为一种常用方式。
在搬运图像数据的应用中,需要对各种类型的数据的传输建立模型,并常常以数据块(Block)作为数据传输的基本型。这类图像数据的搬运往往存在搬运模式多样、寻址方式复杂的特点。如图1A和1B所示的数据块模型,每次被搬运的图像数据包括有多个数据块100,而每个数据块又由多个行101(Array)构成,一个行则包含有多个连续的元素111(Element)。同一个行中的元素地址可以是连续的,也可以是按照顺序等距排列的。图1A中数据块的模型阵列类似于图1B中元素的模型阵列,而图1A中的每个数据块模型阵列的内部构成即为图1B中元素的模型阵列。对数据块进行搬运时,不但一个数据块的末位元素与下一个数据块的头位元素常常是在非连续地址上,而且即使在同一个数据块中,一行的末位元素与下一行的头位元素往往也是在非连续地址上,而数据块中的同一行中的元素也可能是在非连续地址上,这样,就对DMA等数据传输装置在非连续空间进行高速数据传输的能力提出了较高的要求。
现有技术中的一种基本型DMA装置是采用直接传输的方式进行数据搬运。在每次需要快速传送数据时,由中央处理器(CPU)发出DMA数据传输命令给DMA的内部寄存器,命令可能包括数据传输的数据起始地址和终结地址以及控制字等参数,DMA在内部寄存器的命令控制下通过总线进行外围设备和存储器之间的数据传输,并在终结地址的数据传输完成后发出中断给中央处理器。之后则等待中央处理器的下一个数据传输命令。对于非连续地址空间的数据传输,这种DMA往往需要多次向CPU发出中断,并等待CPU重新发出包含有另一起始地址参数的DMA命令。例如图1A和图1B的数据搬运,就需要在每一数据块搬运完成时发出中断,如果数据块中的行也非连续地址,也可能需要在每次行搬运结束时向CPU发出中断,甚至可能需要在行中每个元素搬运结束时向CPU发出中断。这样既增加了CPU的工作负担,也增加了时间开销,尤其在高速数据传输中容易发生丢失数据的现象。
链式DMA为非连续地址空间的数据传输做出了一些改进。链式DMA中设置了多个DMA控制器,每个DMA控制器在存储器中占用一定空间用来存放链接描述符。链接描述符中包含的参数除了与直接传输式DMA中类似的起始地址及数据长度等外,还有用来描述DMA将要访问的下一个地址的链接指针参数。这种链式DMA中为满足部分大容量DMA数据的传送而配置有多个DMA控制器,而常常也无法有效地利用闲置的DMA控制器。并且,CPU发出的DMA命令和DMA的链接描述符都存放在存储器中,增加了设计的复杂度,也造成DMA资源的浪费。另一方面,由于链式DMA需要随时从存储器中寻找命令和链接描述符,在有多个命令需要切换的情况下,可能会由于切换的不及时而造成数据丢失。
现有技术中还有一种队列式DMA。这种队列式DMA控制器包含有多个内部寄存器组成的命令寄存器库(Register bank),命令寄存器库内同时装有多个数据传输命令,每个内部寄存器中装载一个DMA命令。命令寄存器库中的DMA命令以顺序前移的方式工作。每次执行完一个内部寄存器的命令,则继续执行顺序前移的下一个内部寄存器的命令,直到判断出所有寄存器的值为零,即命令寄存器库中不再有待执行的DMA命令。这种队列式DMA虽然在一定程度上可以加快DMA命令切换的处理速度,但并没有消除链式DMA浪费资源和设计复杂的缺陷。
发明内容
本发明的目的在于提供一种结构简单、灵活而同时能够快速有效地传送非连续地址空间的数据信息的存储器直接存取装置(DMA)。它包括用来存储DMA装置整体控制信息的控制寄存器、可进行数据传输工作的数据总线和地址总线、用于存储控制参数的参数随机存取存储器、仲裁器以及至少一个工作引擎,所述工作引擎通过所述总线与控制寄存器、参数随机存取存储器和仲裁器相连,其中所述参数随机存取存储器可以划分成多个入口,其中每个入口与数据总线、地址总线和工作引擎一起构成一条数据通道。所述工作引擎包含数据搬运单元、至少一个地址计算单元、以及与所述地址计算单元耦合的全局地址存储器。所述全局地址存储器设置成在地址计算单元完成地址计算并对其写入计算结果时才进行刷新,而在不同的数据通道切换时,其中的地址数据保持不变。每条所述数据通道都可被配置成工作在数据搬运模式或基址计算模式下。所述工作引擎包括用于协调工作进程的流水线控制器。所述流水线被划分成四级:第二预装载级、第一预装载级、操作级和存储级。
本发明的另一目的在于提供一种存储器直接存取装置的数据传输方法,所述方法包括:接受中央处理器发出的DMA传输请求;由仲裁器检查数据通道的准备位寄存器;仲裁器根据所述准备位寄存器的值作出仲裁并通知参数RAM;参数RAM设定所述数据通道的工作模式;以及多条所述数据通道之间协同工作进行数据搬运。
在本发明的第一实施例中,所述数据通道至少包括第一数据通道和第二数据通道。所述数据通道之间的协同工作方式是链接方式。所述参数RAM设定所述数据通道的工作模式的步骤还包括:所述参数RAM根据所述准备位寄存器的值把第一数据通道设置为基址计算模式,并把第二数据通道设置为数据搬运模式。所述数据通道之间协同工作进行数据搬运的步骤还包括:在各条数据通道所对应的参数RAM的入口中设定链接使能寄存器和链接目标通道寄存器;激活第一数据通道的链接使能寄存器,并将该数据通道链接目标通道寄存器的值设为另一条数据通道的号码;当所述第一数据通道的第一预装载级判断有链接动作时,通知其第二预装载级的寄存器去装载第二数据通道的传输参数;所述第一数据通道在此进行新数据块的基址计算,并把结果存放在全局地址存储器中;所述第二数据通道则从全局地址存储器中取出新数据块的基址,结合传输参数计算出新数据块内每个数据的地址,并进行相应的搬运;第二数据通道又在其第一装载级判断该通道在本次执行后是否有链接动作,并通知第一数据通道装载相应的传输参数;以及第二数据通道完成一个数据块的搬运工作,又返回到第一数据通道计算下一数据块的地址。
在本发明的第二实施例中,所述数据通道至少包括第一数据通道、第二数据通道、第三数据通道和第四数据通道。所述数据通道之间的协同工作方式包括链接方式和切换方式。所述参数RAM设定所述数据通道的工作模式的步骤还包括:所述参数RAM根据所述准备位寄存器的值把第一数据通道设置为基址计算模式,把第二数据通道设置为数据搬运模式,把第三数据通道设为基址计算模式,以及把第四数据通道设为数据搬运模式。所述数据通道之间协同工作进行数据搬运的步骤还包括:在各条数据通道所对应的参数RAM的入口中设定链接使能寄存器和链接目标通道寄存器;在第二数据通道所对应的参数RAM的入口中设定切换使能寄存器;激活第一数据通道的链接使能寄存器,并将该数据通道链接目标通道寄存器的值设为另一条数据通道的号码;当所述第一数据通道的第一预装载级判断有链接动作时,通知其第二预装载级的寄存器去装载第二数据通道的传输参数;所述第一数据通道在此进行新数据块的基址计算,并把结果存放在全局地址存储器中;所述第二数据通道则从全局地址存储器中取出新数据块的基址,结合传输参数计算出新数据块内每个数据的地址,并进行相应的搬运;当需要插入新图像的数据传输时,把所述第二数据通道传输参数中的切换使能寄存器置为1,但其切换目标通道寄存器的值仍为第一数据通道的号码;从外部启动新图像的数据搬运;第三和第四数据通道以与第一、第二数据通道的数据搬运方式相同的方式进行新图像的数据搬运;新图像搬运完成后,发信号通知第二数据通道继续原图像的搬运。
本发明在DMA装置的工作引擎中设置了数据搬运单元和地址计算单元,并在工作引擎中为地址计算单元配置了相应的全局地址存储器来暂存计算得到的地址,同时相应地为数据通道设置了数据搬运模式和基址计算模式两种工作模式,这样,对于非连续地址空间的数据传输,可直接由DMA装置在内部完成地址的计算工作,相应的数据通道可直接从工作引擎的全局地址存储器中引用地址,而不必由外部CPU的计算单元承担额外的地址计算工作,也不必如基本型DMA装置多次向CPU发出中断请求地址计算,或者如链接式与队列式DMA装置事先由CPU的计算单元完成地址计算并赋值给DMA装置相应的内部寄存器。因此,本发明的DMA装置不但能够节省多次中断的时间开销,而且能够减少寄存器硬件资源的闲置,同时还能保证数据传输高速有效地进行。
另一方面,本发明中全局地址存储器中存放的地址只在地址计算单元完成新的地址计算并对其赋值时才进行刷新,而不因数据通道的切换而刷新,因此在刷新前即使有多次数据通道的切换,下一次地址计算单元进行地址计算时,仍可取用全局地址存储器中存放的地址作为计算的参数,也就是说全局地址存储器中存放的地址可多次重复使用,再结合不同数据通道可按需设置在数据搬运模式和基址计算模式两种工作模式下协同工作,不但可以加快地址计算单元的运算速度,更可充分利用地址计算单元这一有限资源完成复杂地址的计算工作。
同时,本发明为多通道DMA装置的多条数据通道提供了两种不同的协同工作方式,在完全采用链接方式时可快速完成一系列连续数据的传输,如一幅图像的完整传输;在采用链接方式与切换方式相结合时,可在完成一系列连续数据传输过程中优先插入其他数据的传输,如在一幅图像的传输过程中结合插入其他图像的传输。这样,利用本发明的DMA装置可以灵活控制数据传输的进度,保持与外界的同步,并可以随时进行其他数据的插入传输操作等。
下面将结合附图对本发明作一详细描述。
附图说明
以下附图为对本发明示例性实施例的辅助说明,结合以下附图对本发明实施例的阐述,是为进一步揭露本发明的特征所在,但并不限制本发明,图中相同标号代表实施例中相应元件或步骤,其中:
图1A为数据块100搬运模型示意图。
图1B为数据块中行101与元素111的搬运模型示意图。
图2为本发明直接存储器存取装置200的一个示例性结构框图。
图3A为本发明的直接存储器存储装置的数据通道组成示意图。
图3B为本发明的直接存储器存储装置的参数RAM 204的内部结构示意图。
图4为图2所示的直接存储器存储装置的工作引擎201,202的内部结构示意图。
图5A和5B为本发明全局地址存储器301的两个示例性结构示意图。
图6为本发明的直接存储器存储装置的控制寄存器203的内部结构示意图。
图7以一幅图像数据块搬运为例,说明链接方式的工作流程图700。
图8以两幅图像数据搬运为例,说明链接及切换方式协同工作流程图800。
具体实施方式
本实施例中结合图1A和1B中所示的应用对本发明的内容进行详细阐述。图2是本发明直接存储器存取(DMA)装置200的一个示例性结构框图,该DMA装置200主要包括控制寄存器203、参数随机存取存储器(RAM)204和读、写两个工作单元214,215。
图3A为本发明的直接存储器存储装置的数据通道组成示意图。图3A中,本发明DMA装置200中可以包含多条数据通道,在此以包含64条数据通道为例进行说明,但如因功能上之需要,也可增减通道的设置,同样应该包含在本发明的实质范围内。与数据通道一一相对应,参数RAM 204被划分为64个入口,分别存储对应数据通道的传输参数。64条数据通道共用读工作引擎201、写工作引擎202、控制寄存器203及数据总线和地址总线(图2示出)等。换言之,即每个入口与数据总线、地址总线和读或写工作引擎201,202一起构成一条数据通道。本实施例中以读、写两个工作引擎201,202把读、写操作分开,因此,当两条数据通道分别在进行读操作和写操作时,读、写两个工作引擎201,202可以同时工作,从而提高数据传输速度。在其他实施例中,为满足多条数据通道并行工作的需求,也可以配置更多的工作引擎以及更多的数据总线和地址总线等。每个工作引擎201,202中设置了工作寄存器404(图4中示出),可用来存放数据通道工作时所需的各类传输参数。
图3B为本发明的直接存储器存储装置的参数RAM 204的内部结构示意图。图3B中,参数RAM 204中的每个入口中包含多个传输参数寄存器301,分别存放数据通道传输数据的控制信息,等待进行数据传输的源数据地址和目的数据地址等传输参数。根据具体数据传输的应用的不同,传输参数还可以有不同的类型。如图1A和1B所示的应用,则还可以包括源数据块和目的数据块中每个行中的元素个数,源数据块和目的数据块中元素地址之间的偏移量,源数据块和目的数据块中行的个数,以及源数据块和目的数据块中行的偏移量等。当数据通道处于工作状态时,参数RAM 204中与该数据通道相应的入口所存放的传输参数被装载到读或写工作引擎201、202中,控制读或写工作引擎201、202的工作。
图4为图2所示的直接存储器存储装置的工作引擎201,202的内部结构示意图。参见图4,每个工作引擎201,202从逻辑功能上包括一个数据搬运单元402和一个地址计算单元403。数据搬运单元402用来进行数据的搬运工作;地址计算单元403则专门用来进行数据地址的计算。工作引擎201,202中对应于地址计算单元403设有全局地址存储器401,可以存放地址计算单元403计算出的地址,并能把其中存放的地址赋给之后需要进行数据搬运工作的数据通道。全局地址存储器401只在地址计算单元403完成地址计算并对其写入计算结果时才进行刷新,而不同的数据通道在进行切换时,全局地址存储器401中的地址数据仍然保持不变。这样,只要地址计算单元403没有新的地址计算并刷新全局地址存储器401的操作,每个工作中的数据通道都可以从全局地址存储器401中取用相同的地址数据,也就是说全局地址存储器401中的地址数据可以多次重复引用。这样,当利用多条数据通道协同工作时,可以方便地进行非连续地址空间的数据的搬运。全局地址存储器401的大小可根据使用时的需要预先进行配置,而其内部结构则可根据应用的需求由软件来定义。
本发明的DMA装置200为每一数据通道设计了数据搬运和基址计算两种工作模式,在数据搬运工作模式下,数据通道利用数据搬运单元402进行工作,并可进行简单的地址计算,如二维地址计算;在基址计算工作模式下,数据通道利用地址计算单元403计算基址,并把计算得到的基址送入全局地址存储器401。两个或两个以上的数据通道可以各自设置在不同的工作模式工作,而通过相互协同工作来完成在复杂地址模式下的数据搬运任务。
根据图1A和1B的应用,其中每个数据块100内部的行101和元素111具有一定的规律性,可以根据每个数据块100的基址和其中行的偏移量计算出各个行的起始地址,并根据行的起始地址和行中元素之间的偏移量计算出行中每个元素111的地址。而每个数据块100的基址则另须计算得出。
相应于图1A和1B所示的应用,如图4所示,每个工作引擎201,202包括一个数据搬运单元402和一个地址计算单元403。在本实施例当中,采用两条数据通道来协同完成该应用的数据搬运,两条数据通道分别设置在数据搬运工作模式和基址计算工作模式。在该应用中,全局地址存储器401需要存放的地址数据有三级,分别为数据块地址、行地址和元素地址,因此,全局地址存储器401的内部结构也如图5A所示,可划成数据块地址501、行地址502和元素地址503三部分。每部分地址都可以根据地址范围由软件来设置相应的位数。如数据块地址估计在0~8以内,则数据块地址部分501可设置成3位;行地址估计在0~16以内,则行地址部分502可设置成4位;元素地址估计在0~64以内,则元素地址部分503可设置成6位。
首先,基址计算模式下的数据通道在地址计算单元403完成数据块的基址的计算,并把计算得到的数据块基址存放到全局地址存储器401中。然后由数据搬运模式下的数据通道进行数据块内各个元素的搬运。在一个数据块的搬运过程中,数据搬运模式下的数据通道可以连续工作,利用数据块的基址进行该数据块内各行地址及元素地址的计算并同时进行元素的搬运。
一个数据块中的元素数据搬运完成时,基址计算模式下的数据通道计算出下一数据块的基址,并用计算结果刷新全局地址存储器401;数据搬运模式下的数据通道再重新从全局地址存储器401中取出相应的数据块基址开始下一数据块的数据搬运工作。
对于其他的应用,例如,假设图1A中每个数据块的地址由两维数据构成,如(x,y);每个元素的地址由四部分构成,即两维的数据块地址、行地址和行内的元素地址,这种情况下,可相应地改变全局地址存储器401的内部结构,将其划分为四个部分,即把图5A中的数据块地址部分501分成数据块x地址部分和数据块y地址部分(见图5B)。因此这种两维数据块基址的计算也是可采用一设置在基址计算模式下的数据通道来完成,而数据块内的行地址和元素地址的计算以及数据的搬运工作仍可采用另一设置在数据搬运模式下的数据通道来完成。可以理解的是,全局地址存储器401的内部结构还可以采用其它方式来划分,仍应属于本发明的范围之内。
参照图1A和1B所示的数据库模型每次被搬运的图像数据包括有多个数据块100,而每个数据块又由多个行101(Array)构成,一个行包含有多个连续的元素111(Element)。同一个行中的元素地址可以是连续的,也可以是按照顺序等距排列的。图1A中数据块100的模型阵列类似于图1B中元素111的模型阵列,而图1A中的每个数据块100模型阵列的内部构成即为图1B中元素111的模型阵列。因此,这个应用中的数据块100和每个数据块中的元素111可以采用相同的地址计算模型。这样,对于数据块的基址计算和行与元素的地址计算,可以复用数据地址计算单元。也就是说,数据搬运工作模式下的数据通道进行的对行与元素的简单地址计算可以与基址计算工作模式下的数据通道进行的对数据块的基址计算复用一个数据地址计算单元,从而简化了DMA装置的硬件结构。当然,也可以采用多个数据地址计算单元来达成不同的地址计算,并不影响本发明的实施。
参照图4,利用工作引擎201,202的数据搬运单元402和地址计算单元403,各数据通道都具备至少两种不同的工作模式,即数据搬运模式和基址计算模式。通过进行软件设置,每条数据通道可以被指定在其中任何一种工作模式下工作。本实施例中,在每个入口的传输参数寄存器中设置了工作模式(WM)位,来存放指示数据通道工作模式的控制信息。例如,可以在传输参数寄存器中设置一位WM位,当WM为0时,数据通道以数据搬运模式工作;当WM为1时,数据通道以基址计算模式工作,反之亦然。而WM位的值可以由软件来设置决定。
参照图2,DMA装置200的控制寄存器203为一组寄存器,用来存储DMA装置整体配置的控制信息,对于DMA装置200中的工作引擎201,202及其他控制器等均为始终可见,可随时调用,调用控制寄存器203中的控制信息时无须类似调用参数RAM 204中的信息所需的装载动作。控制寄存器203包括准备位寄存器601与同步寄存器602(见图6)等。准备位寄存器由多个位构成,每条数据通道与其中一个位相对应,本实施例中设置了64条数据通道,则准备位寄存器至少有64位。当数据通道所对应的准备位例如为1时,表明该数据通道准备就绪,可以响应同步事件;当数据通道所对应的准备位例如为0时,表明该数据通道不会响应任何同步事件。一般地,每次在软件对一条数据通道配置完成后就会将该数据通道对应的准备位置1,这样,当有同步事件发生时,该数据通道就能立即开始工作。
图2的DMA装置200中设有仲裁器205,可以对DMA装置200所连接的多个不同的传输操作的源设备所发出的DMA传输请求进行仲裁,决定出优先处理的DMA传输请求,从而解决多个DMA请求同时提出而产生的各种冲突。这里的源设备可以是DMA装置200所在的计算机系统内的子系统或处理器,也可以是外围设备等。仲裁器205的输入端接受来自各传输操作源设备的DMA传输请求,输出端则与工作引擎201,202相连,以及时地将仲裁得出的需优先处理的DMA传输请求送往工作引擎201,202进行处理。同时,DMA装置200中还可以设置数据缓冲器207,如FIFO。在进行写操作时,源设备发往DMA装置的数据预先存放在数据缓冲器207中,数据缓冲器207中存放的数据积累到事先定义的数据量时,DMA装置200就开始将数据缓冲器207的数据搬运给目标设备。数据缓冲器207的设置与否,与设置数量可以由实际需要确定,但对本发明并无实质上的影响。
另外,为提高DMA装置200的工作效率,可以对DMA装置200的工作采用多级流水线方式。参考图2,可以将DMA装置200的写工作单元215、读工作单元214分别划分成四级,并利用流水线控制器208和208’来协调各级流水线的工作进程。图2所示的四级流水线线分别为第二预装载级209和209’、第一预装载级210和210’、操作级211和211’以及存储级212和212’。第二预装载级209和209’把下一个要工作的数据通道的传输参数装载到工作引擎201,202中工作寄存器404(见图4)的预装载寄存器,这样,在当前数据通道传输工作完成,下一条数据通道要进入操作级211,211’时可直接在工作引擎201,202中启动操作,而无须再从参数RAM 204装载传输参数;第一预装载级210,210’数据通道接收来自预装载寄存器的数据,并判断该数据通道在本次DMA传输工作完成后是否会发生传输链接;操作级211,211’完成DMA传输操作,通过数据总线进行数据的传输,或者是完成地址的计算,并在工作执行完后发出中断;存储级212,212’则是写回参数,并根据数据通道的传输参数来判断该数据通道是否发生传输切换,以进行相应的操作。如上文所述,数据通道可以按设置工作在数据搬运模式或基址计算模式下。因此,在第一预装载级210,210’,参数RAM 204把对应于要进行DMA传输的数据通道的控制参数送入流水线控制器208;在操作级211,211’中工作引擎201,202按照流水线控制器208的控制参数中设置的工作模式,进行数据搬运或是地址计算;在存储级212,212’则检查协同工作方式。
DMA装置中常常包含有多条数据通道,利用数据通道的协同工作来完成大量数据的连续搬运任务。本发明为DMA装置的数据通道提供了两种不同的协同工作方式,一种为链接方式,另一种为切换方式。多条通道之间运用这两种方式,交叉组合成各式复杂的协同工作模式,仍属本发明的范围之内。在此将以第一数据通道和第二数据通道,两条数据通道的协同工作为例,进行解释。
图3B为本发明的直接存储器存储装置的参数RAM 204的内部结构示意图。在参数RAM 204中,与每条数据通道相对应的入口均设置了链接使能寄存器302和链接目标通道寄存器303。在需要使用链接方式协同第一数据通道与第二数据通道的工作传递时,先将与在先工作的第一数据通道对应的链接使能寄存器302激活,即打开了第一数据通道的链接功能。然后,在参数RAM 204中与第一数据通道相对应的入口内设置所要连接的目标数据通道的通道号码,在此例中即第二数据通道的通道号码。在第一数据通道的第二预装载级时,工作引擎装载参数RAM 204中与第一数据通道相对应的入口内存放的传输参数,其中装载的传输参数包含了链接使能寄存器302和链接目标通道寄存器303的值。第一数据通道在工作引擎开始进入流水线的第一预装载级时,会自动判断该通道在本次执行完成后是否会发生链接操作。当发现与该通道相对应的链接使能寄存器302已在激活状态(即已被设为1),则查看链接目标通道寄存器303中的目标通道号码,同时,通知工作引擎到参数RAM 204装载目标数据通道的传输参数,在此即第二数据通道的传输参数。这样,第一数据通道尚在操作级进行地址计算或数据搬运的同时,第二数据通道就可以进入第二预装载级将传输参数装载到工作引擎。第二数据通道在传输参数装载完毕后,可继续之后的流水线操作,而无须内、外部的中断来激发。
切换方式与链接方式相类似,参数RAM 204中与每条数据通道相对应的入口中均设置了切换使能寄存器304和切换目标通道寄存器305。在需要使用切换方式协同第一数据通道与第二数据通道的工作传递时,先将与在先工作的第一数据通道对应的切换使能寄存器304激活,即打开了第一数据通道的切换功能。然后,在参数RAM 204中与第一数据通道相对应的入口内设置所要连接的目标数据通道的通道号码,在此即第二数据通道的通道号码。与链接方式不同的是,切换方式是在第一数据通道进入流水线的存储级时,才检查该通道在本次执行完成后是否会发生切换操作。当发现与该通道相对应的切换使能寄存器304已在激活状态,就查看切换目标通道寄存器中的目标通道号码,在此示例中目标通道号码为第二数据通道,并通知控制寄存器将第二数据通道的准备位(READY)置1。在切换方式下,第一数据通道并不象链接方式下一样,直接激活第二数据通道的工作,而只是使第二数据通道进入可以响应同步事件的准备状态,需要有内部或外部的中断才能激发第二数据通道开始工作。
对于图1A和1B所示的应用,采用链接与切换方式可以有效地协调各数据通道协同工作来完成图像数据的搬运。并且,链接方式和切换方式也可以分成不同类型,如链接方式分成元素链接、行链接和块链接,切换方式分成元素切换、行切换和块切换。在元素链接/切换方式下,当数据通道使能了该功能时,数据通道每传输完一个元素后就发生一次链接/切换的动作;在行链接/切换方式下,当数据通道使能了该功能时,数据通道每传输完一个行后就发生一次链接/切换的动作;在块链接/切换方式下,当数据通道使能了该功能时,数据通道每传输完一个数据块后就发生一次链接/切换的动作。当不同类型的链接/切换同时出现而发生冲突时,则只执行优先级最高的类型的链接/切换动作。例如可以规定优先级次序为:块链接/切换优先于行链接/切换,行链接/切换优先于元素链接/切换,然而这并非是限制性的。
图7以一幅图像数据块搬运为例,说明链接方式的工作流程图700。图7中,是以采用两条数据通道链接交替协同工作为例来说明如何进行一幅图像的搬运的流程图700,然而数据通道可以不限于两条。首先,在步骤701中,由CPU发出DMA传输请求;在步骤703中,仲裁器接着会去检查通道的使用情况;在步骤705中,如第一数据通道与第二数据通道的准备位寄存器皆为1时,仲裁器将作出仲裁,并通知参数RAM;在步骤707中,参数RAM将把第一数据通道设置为基址计算模式,把第二数据通道设置为数据搬运模式;在步骤709中,第一数据通道的链接使能寄存器被激活,并且把链接目标通道寄存器的值设为第二数据通道的号码;在步骤713中,如果第一数据通道在流水线的第一预装载级判断出该次执行后有链接动作,就会通知第二预装载级的寄存器去装载第二数据通道的传输参数;在步骤713中,第一数据通道在操作级专门用来对各个数据块的基址进行计算,并把计算得到的基址暂存于相应的全局地址存储器301;在步骤715中,第二数据通道根据全局地址存储器301中取出的数据块的基址,依此计算数据块中各行的起始地址及元素的地址;在步骤717中,数据开始按照地址,由源设备搬入读工作单元214,经过数据缓冲器FIFO 207及写工作单元215,陆续搬至目标设备。
类似地,在步骤719中,第二数据通道在流水线的第一装载级可以判断出该通道在本次执行后是否将发生链接动作,即链接使能寄存器是否设置为1。如果链接使能寄存器设置为1,则返回步骤711,重复步骤711到717。这样循环往复的由两条数据通道的协同工作完成整幅图像的搬运。如果在步骤719中判断链接使能寄存器未设置为1,则发出中断,结束工作。
图8以两幅图像数据搬运为例,说明链接及切换方式协同工作流程图800。也就是说,在第一幅图像的搬运中可能会插入其它图像的DMA操作,现以四条通道来说明,设以第一数据通道与第二数据通道负责原始图像的搬运,而以第三数据通道和第四数据通道来处理新图像的搬运,以此类推。其中第三数据通道工作模式设置为新图像的基址计算模式,负责数据块基址计算;第四数据通道工作模式设为新图像的数据搬运模式,负责新图像的每个数据块内部数据地址计算和数据搬运工作。然而所述数据通道的数目以及各条数据通道所选用的工作模式并非限制性的。
图8中的步骤701-705与图7所示的步骤701-705相同。而在步骤807中,与图7中的步骤707类似,参数RAM将第一数据通道设为基址计算模式,将第二数据通道设为数据搬运模式,而第一数据通道和第二数据通道以链接方式进行原始图像的搬运。当需要在原始图像传输过程中插入新图像的数据传输时,在步骤807’中,由CPU或其它子系统发出新图像的DMA传输请求,仲裁器到控制寄存器检查通道的使用情况。。在步骤809中,把第二数据通道的切换使能寄存器304置为1(即激活),但其切换目标通道寄存器305的值仍为第一数据通道的号码。此时,第二数据通道完成原始图像中某个数据块的搬运,而并未完成整幅原始图像的搬运,但因在存储级查知为切换工作模式,因此原始图像的搬运工作就会处于暂停状态,需要等待新图像传输完成后发出的同步信号才能重新开始原始图像的搬运。此时可在步骤807’从外部以同步信号启动新图像的数据搬运。类似地,处理新图像的DMA传输的第三数据通道和第四数据通道之间也是以链接方式协同工作,直至完成新图像的传输。在步骤811中,如第三数据通道的准备位寄存器为1,仲裁器将作出仲裁,并通知参数RAM204。在步骤813中,参数RAM 204将第三数据通道设为基址计算模式,将第四数据通道设为数据搬运模式,进行新图像的搬运。在步骤815中,新图像数据搬运完成后,即可随时发出同步信号,切换回到第二数据通道。在步骤817中,再由第一和第二数据通道继续原始图像暂停的数据搬运工作,直至完成。然后发出中断,结束工作。
如果是在原始图像的数据块之间插入新图像的数据传输,需把第二数据通道传输参数中的链接方式设为块链接方式,同理,如果是在原始图像的行或元素之间插入新图像的数据传输,就把第二数据通道传输参数中的链接方式设为行链接或元素链接方式,这并非是限制性的。
本实施例只是为了进一步更清楚地描述本发明,而非对本发明的限制。应该可以理解,本发明并不限于实施例所做的阐述,任何基于本发明的修改和本发明的等同物都应涵盖在本发明的权利要求的精神和范围之内。
Claims (10)
1.一种存储器直接存取装置,包括用来存储存储器直接存取装置整体控制信息的控制寄存器、进行数据传输工作的数据总线和地址总线、用于存储控制参数的参数随机存取存储器、仲裁器以及至少一个工作引擎,所述工作引擎通过所述数据总线和地址总线与控制寄存器、参数随机存取存储器和仲裁器相连,其特征在于:
所述参数随机存取存储器划分成多个入口,其中每个入口与数据总线、地址总线和工作引擎一起构成一条数据通道,所述工作引擎包含数据搬运单元、至少一个地址计算单元、以及与所述地址计算单元耦合的全局地址存储器,其中所述全局地址存储器用于存放地址计算单元所计算的地址并能把所存放的地址赋给之后需要进行数据搬运工作的数据通道,所述全局地址存储器在地址计算单元完成地址计算并对全局地址存储器写入计算结果时才进行刷新,而在不同的数据通道切换时,全局地址存储器中的地址数据保持不变。
2.如权利要求1所述的存储器直接存取装置,其特征在于,每条所述数据通道都被配置成工作在数据搬运模式或基址计算模式下。
3.如权利要求1所述的存储器直接存取装置,其特征在于,所述工作引擎包括用于协调工作进程的流水线控制器,流水线被划分成按以下顺序依次相连的四级:第二预装载级、第一预装载级、操作级和存储级,其中,
第二预装载级把下一个要工作的数据通道的传输参数装载到工作引擎中工作寄存器的预装载寄存器;
第一预装载级接收来自预装载寄存器的数据,并判断该数据通道在本次存储器直接存取传输工作完成后是否会发生传输链接;
操作级完成存储器直接存取传输操作,通过数据总线进行数据的传输,或者是完成地址的计算并在工作执行完后发出中断;
存储级写回参数,并根据数据通道的传输参数来判断该数据通道是否发生传输切换。
4.一种采用存储器直接存取装置进行高速数据传输的方法,所述方法包括:
接受中央处理器发出的存储器直接存取传输请求;
由仲裁器检查数据通道的准备位寄存器;
仲裁器根据所述准备位寄存器的值作出仲裁并通知参数随机存取存储器;
参数随机存取存储器设定所述数据通道的工作模式;以及
多条所述数据通道之间协同工作进行数据搬运,其中所述数据通道之间的协同工作方式是链接方式和/或切换方式,
所述参数随机存取存储器划分成多个入口,其中每个入口与数据总线、地址总线和工作引擎一起构成一条数据通道,所述工作引擎包含数据搬运单元、至少一个地址计算单元、以及与所述地址计算单元耦合的全局地址存储器,其中所述全局地址存储器用于存放地址计算单元所计算的地址并能把所存放的地址赋给之后需要进行数据搬运工作的数据通道,所述全局地址存储器在地址计算单元完成地址计算并对全局地址存储器写入计算结果时才进行刷新,而在不同的数据通道切换时,全局地址存储器中的地址数据保持不变。
5.如权利要求4所述的方法,其特征在于,所述数据通道至少包括第一数据通道和第二数据通道。
6.如权利要求5所述的方法,其特征在于,所述参数随机存取存储器设定所述数据通道的工作模式的步骤还包括:所述参数随机存取存储器根据所述准备位寄存器的值把第一数据通道设置为基址计算模式,并把第二数据通道设置为数据搬运模式。
7.如权利要求6所述的方法,其特征在于,所述数据通道之间协同工作进行数据搬运的步骤还包括:
在各条数据通道所对应的参数随机存取存储器的入口中设定链接使能寄存器和链接目标通道寄存器;
激活第一数据通道的链接使能寄存器,并将该数据通道链接目标通道寄存器的值设为第二数据通道的号码;
当所述第一数据通道的第一预装载级判断有链接动作时,通知其第二预装载级的寄存器去装载第二数据通道的传输参数;
所述第一数据通道在此进行新数据块的基址计算,并把结果存放在全局地址存储器中;
所述第二数据通道则从全局地址存储器中取出新数据块的基址,结合传输参数计算出新数据块内每个数据的地址,并进行相应的搬运;
当第二数据通道的第一装载级判断该通道在本次执行后有链接动作时,通知第一数据通道装载相应的传输参数;以及
第二数据通道完成一个数据块的搬运工作,又返回到第一数据通道计算下一数据块的地址。
8.如权利要求4所述的方法,其特征在于,所述数据通道至少包括第一数据通道、第二数据通道、第三数据通道和第四数据通道。
9.如权利要求8所述的方法,其特征在于,所述参数随机存取存储器设定所述数据通道的工作模式的步骤还包括:所述参数随机存取存储器根据所述准备位寄存器的值把第一数据通道设置为基址计算模式,把第二数据通道设置为数据搬运模式,把第三数据通道设为基址计算模式,以及把第四数据通道设为数据搬运模式。
10.如权利要求9所述的方法,其特征在于,所述数据通道之间协同工作进行数据搬运的步骤还包括:
在各条数据通道所对应的参数随机存取存储器的入口中设定链接使能寄存器和链接目标通道寄存器;
在第二数据通道所对应的参数随机存取存储器的入口中设定切换使能寄存器;
激活第一数据通道的链接使能寄存器,并将该数据通道链接目标通道寄存器的值设为第二数据通道的号码;
当所述第一数据通道的第一预装载级判断有链接动作时,通知其第二预装载级的寄存器去装载第二数据通道的传输参数;
所述第一数据通道在此进行新数据块的基址计算,并把结果存放在全局地址存储器中;
所述第二数据通道则从全局地址存储器中取出新数据块的基址,结合传输参数计算出新数据块内每个数据的地址,并进行相应的搬运;
当需要插入新图像的数据传输时,把所述第二数据通道传输参数中的切换使能寄存器置为1,但其切换目标通道寄存器的值仍为第一数据通道的号码;
从外部启动新图像的数据搬运;
第三和第四数据通道以与第一、第二数据通道的数据搬运方式相同的方式进行新图像的数据搬运;
新图像搬运完成后,发信号通知第二数据通道继续原图像的搬运。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100526742A CN100432968C (zh) | 2004-07-09 | 2004-07-09 | 存储器直接存取装置及其数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100526742A CN100432968C (zh) | 2004-07-09 | 2004-07-09 | 存储器直接存取装置及其数据传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1719427A CN1719427A (zh) | 2006-01-11 |
CN100432968C true CN100432968C (zh) | 2008-11-12 |
Family
ID=35931264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100526742A Expired - Fee Related CN100432968C (zh) | 2004-07-09 | 2004-07-09 | 存储器直接存取装置及其数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100432968C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510183B (zh) * | 2009-03-23 | 2011-05-11 | 华为技术有限公司 | 数据搬运处理的方法和装置 |
TWI465905B (zh) | 2010-09-22 | 2014-12-21 | Toshiba Kk | 記憶體系統、主機控制器、及直接記憶體存取之控制方法 |
JP5614420B2 (ja) * | 2012-03-09 | 2014-10-29 | カシオ計算機株式会社 | 楽音発生装置、電子楽器、プログラム及び楽音発生方法 |
JP6176058B2 (ja) * | 2013-10-29 | 2017-08-09 | 株式会社ソシオネクスト | ダイレクトメモリアクセス制御装置、その制御方法、及び情報処理システム |
KR102743797B1 (ko) * | 2019-01-18 | 2024-12-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
CN111913898B (zh) * | 2019-05-10 | 2024-07-09 | 恩智浦美国有限公司 | 使用端点的pcie根复合体消息中断产生方法 |
US11003606B2 (en) * | 2019-06-21 | 2021-05-11 | Microchip Technology Incorporated | DMA-scatter and gather operations for non-contiguous memory |
CN112732603B (zh) * | 2019-10-14 | 2024-08-27 | 广州飒特红外股份有限公司 | 一种多通道vdma控制方法及其应用 |
CN111782154B (zh) * | 2020-07-13 | 2023-07-04 | 芯象半导体科技(北京)有限公司 | 数据搬移方法、装置及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1122927A (zh) * | 1994-11-05 | 1996-05-22 | 联华电子股份有限公司 | 虚拟阵列式直接存贮器存取装置 |
US5944800A (en) * | 1997-09-12 | 1999-08-31 | Infineon Technologies Corporation | Direct memory access unit having a definable plurality of transfer channels |
US6260081B1 (en) * | 1998-11-24 | 2001-07-10 | Advanced Micro Devices, Inc. | Direct memory access engine for supporting multiple virtual direct memory access channels |
WO2003043278A1 (en) * | 2001-11-15 | 2003-05-22 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system of retransmission |
US20040093438A1 (en) * | 2002-11-07 | 2004-05-13 | Odom Brian Keith | DMA device configured to configure DMA resources as multiple virtual DMA channels for use by I/O resources |
-
2004
- 2004-07-09 CN CNB2004100526742A patent/CN100432968C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1122927A (zh) * | 1994-11-05 | 1996-05-22 | 联华电子股份有限公司 | 虚拟阵列式直接存贮器存取装置 |
US5944800A (en) * | 1997-09-12 | 1999-08-31 | Infineon Technologies Corporation | Direct memory access unit having a definable plurality of transfer channels |
US6260081B1 (en) * | 1998-11-24 | 2001-07-10 | Advanced Micro Devices, Inc. | Direct memory access engine for supporting multiple virtual direct memory access channels |
WO2003043278A1 (en) * | 2001-11-15 | 2003-05-22 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system of retransmission |
US20040093438A1 (en) * | 2002-11-07 | 2004-05-13 | Odom Brian Keith | DMA device configured to configure DMA resources as multiple virtual DMA channels for use by I/O resources |
Also Published As
Publication number | Publication date |
---|---|
CN1719427A (zh) | 2006-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101320360B (zh) | 用于并行集成电路结构的消息排队系统和相关操作方法 | |
CN100535850C (zh) | 用于在编程引擎之间传送数据的方法和装置 | |
US4989131A (en) | Technique for parallel synchronization | |
CN1618061B (zh) | 功能性流水线 | |
CN100412848C (zh) | 计算机网络和计算机系统 | |
JP2770603B2 (ja) | 並列計算機 | |
CN100373362C (zh) | 直接存储访问控制器 | |
CN103999051B (zh) | 用于着色器核心中着色器资源分配的策略 | |
CN102135950A (zh) | 基于星型互联架构的片上异构多核系统及其通信方法 | |
JP2577865B2 (ja) | ベクトル処理装置及びその制御方法 | |
CN101165655A (zh) | 多处理器计算系统及其任务分配方法 | |
CN103078941A (zh) | 一种分布式计算系统的任务调度方法及系统 | |
CN103262002A (zh) | 优化系统调用请求通信 | |
CN102402422B (zh) | 处理器组件及该组件内存共享的方法 | |
CN100432968C (zh) | 存储器直接存取装置及其数据传输方法 | |
CN100489770C (zh) | 处理指令的系统和方法 | |
CN101636721A (zh) | 用于处理未知长度传输的dmac | |
CN105183698A (zh) | 一种基于多核dsp的控制处理系统和方法 | |
US4691280A (en) | High performance multi-processor system | |
CN104503948B (zh) | 支持多核网络处理架构的紧耦合自适应协处理系统 | |
CN101504632A (zh) | 一种dma数据传输方法、系统及一种dma控制器 | |
CN100592272C (zh) | 多处理器共享外设电路实现方法及其电路 | |
CN102129396A (zh) | 一种实时快速的线程间数据交换方法 | |
CN1378148A (zh) | 一种直接存储器访问控制器及其控制方法 | |
CN102207892B (zh) | 一种动态可重构处理器内子单元间进行同步的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081112 Termination date: 20110709 |