处理器系统及其多通道内存拷贝dma加速器和方法

文档序号:6441978阅读:313来源:国知局
专利名称:处理器系统及其多通道内存拷贝dma加速器和方法
技术领域
本发明涉及计算机硬件体系结构和处理器设计技术领域,特别涉及一种支持异步访存、内存读写并行的基于处理器内嵌多通道直接内存访问(Direct Memory Access,DMA)的处理器系统及其多通道内存拷贝DMA加速器和方法。
背景技术
在现有计算机系统中,内存拷贝(Memory Copy)是一种在内存不同位置之间传输数据的重要操作。其广泛存在于操作系统和各类应用程序当中,相关研究发现内存拷贝操作在TCP/IP协议处理中可以占到总时间开销的20%-40%。在操作系统中,内存拷贝操作通过系统内核定义的标准系统函数memcpy、bcopy等实现其功能。针对不同的计算机体系结构,操作系统对该组函数的具体实现也不同。在用户程序中,C语言标准库(ANSIC)也对内存拷贝操作提供了函数实现。如

图1所示,为现有的内存拷贝处理器系统结构,包括处理器核(CPU)l、二级缓存(Cache)模块2、内存3,其中,处理器核包括控制单元11、运算部件12、寄存器堆13、译码和访存单元14、一级缓存(Cache)模块15等。典型的内存拷贝操作,在微观上可以将其分解为对内存的一系列交替的读写操作。处理器核先对A地址发出一个读操作,当其完成后,发出一个写操作将读回的值V(A)写入地址B;之后向A+1发出读请求,将读回结果V(A+1)写入B+1 ;反复执行这一过程直到整个内存拷贝操作完成。现有的一种内存拷贝加速方法是进行指令重排优化的内存拷贝方法,该方法根据特定体系结构处理器的流水线特点,对内存拷贝操作程序指令进行重新排列,以获得连续不断的访存流并提高访存效率并降低延迟。其在操作系统内核内存拷贝函数中内嵌相应汇编指令代码替换原有通用C代码来提高程序执行效率。并根据特定体系结构的特点重排汇编访存指令,以减少处理器执行指令时的流水线停顿,如MIPS体系结构下内存拷贝函数将load和store指令四四分组排列。现有的一种内存拷贝加速方法是内存拷贝与访问同步优化的内存拷贝方法,该方法通过增加额外的硬件模块来记录分析内存拷贝操作和内存访问操作的地址,从而不阻塞处理器来提高指令执行效率。并在操作系统中提供优化的拷贝操作原语,以实现拷贝过程与其他内存访问过程的同步。现有的内存拷贝加速方法具有以下缺点(一 )系统效率低。现有技术进行内存拷贝时仍需要处理器执行相关访存和控制指令,导致整个拷贝过程中处理器无法进行其他操作,其本质上属于处理器控制的串行同步内存拷贝。(二)拷贝速度慢。现有技术的处理器内部一般集成1-2个访存部件,只有当前访存指令完成后才能执行后面的访存指令,因此现有内存拷贝方法在微观上只是对内存的串行访问,无法同时进行不相关的内存读写操作,导致拷贝速度慢。(三)不具有通用兼容性。该方法与处理器结构和程序指令集紧密相关,不同体系结构下优化后的内存拷贝程序不能相互兼容。

发明内容
本发明的目的在于提供一种处理器系统及其多通道内存拷贝DMA加速器和方法,其具有高带宽、低延迟,高并行度,可重配置化,平台无关性的优点。为实现本发明目的而提供的一种处理器系统,包括处理器核,以及内存,还包括通过数据总线连接在处理器核及内存之间的多通道DMA加速器;所述多通道DMA加速器,用于在处理器核发出内存拷贝命令产生数据读写请求时,根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,以及其中多个读写通道的读写频率和优先级,以及所述读写通道的标记位的值,控制多个读写通道并行向内存发出多次读写请求,完成数据读写。较优地,所述的处理器系统,还包括连接在内存及多通道DMA加速器之间的缓存模块,用于缓存在内存和多通道DMA加速器之间传输的数据。较优地,所述多通道DMA加速器包括至少一 DMA引擎模块和两个接口 ;所述DMA引擎模块,用于根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,以及其中多个读写通道的读写频率和优先级,以及所述读写通道的标记位的值,控制多个读写通道并行向内存发出多次读写请求;所述至少两个接口,为至少一个数据接口和一个控制与通信接口 ;所述数据接口,用于,传输所述内存拷贝命令的数据读写请求所需要读写的数据;所述控制与通信接口,用于与所述处理器核和内存进行通信,接收处理器核配置数据,并根据所述配置数据配置并存储至所述读写通道的配置寄存器。较优地,所述DMA引擎模块包括多个读写通道及其相应的标记位,连接所述处理器核和所述内存的两个流控单元及数据缓冲区;所述多个读写通道至少包括一读通道和一写通道;所述读通道,用于在所述流控单元的控制下,从内存中读取数据到所述处理器核;所述写通道,用于在所述流控单元的控制下,将处理器核发送来的数据写入到内存;所述流控单元,用于根据配置寄存器中的配置数据和读写通道的标记位的值,以及初始化时设置的值统计各读写通道使用数据总线的情况,将数据总线分配给优先级最高的读写通道使用,对每条读写通道的频率和优先级进行控制,控制不同的通道启动不同的数据传输任务,并与所述控制单元交互读写通道的工作状态;所述数据缓冲区,用于缓存读写通道中的数据;每一所述读写通道包括一配置寄存器,用于接收并存储处理器核发送来的、供读写通道读写的配置数据;每个标记位标记所述读写通道每次读写请求所读写的数据量。
较优地,所述处理器核的控制单元,包括初始化子单元和配置子单元,其中所述初始化子单元,用于在处理器核进行初始化时,对所述流控单元进行初始化,设置其初始工作状态,并启动通道的数据传输任务;所述配置子单元,用于通过所述控制与通信接口,向每条读写通道发送配置数据到所述读写通道的配置寄存器,设置每条读写通道的相应的配置寄存器的值。为实现本发明目的还提供一种多通道内存拷贝DMA加速器,用于在接收到处理器核向内存发出拷贝数据读写请求时,根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,以及其中多个读写通道的读写频率和优先级,以及所述读写通道的标记位的值,控制多个读写通道并行向内存发出多次读写请求,完成数据读写。为实现本发明目的更提供一种内存拷贝加速方法,包括如下步骤步骤S101,处理器核的控制单元向多通道DMA加速器发出内存拷贝命令;步骤S102,多通道内存拷贝DMA加速器在接收到处理器核向内存发出的内存拷贝数据读写请求时,根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,以及其中多个读写通道的读写频率和优先级,以及所述读写通道的标记位的值,控制多个读写通道并行向内存发出多次读写请求,并行数据读写,直至完成所有读写操作。较优地,所述步骤S102中,所述判断并分解所述数据读写请求的任务信息,包括如下步骤多通道内存拷贝DMA加速器根据所述任务信息判断,当拷贝数据总长度大于所述多通道DMA加速器的单个通道的总线位宽时,则对所述内存拷贝命令的任务信息进行分解,根据分解后的内存拷贝命令的任务信息,由多通道DMA加速器通过多个通道向内存发出多次读写请求;否则,多通道内存拷贝DMA加速器随机选择一通道向内存发出数据读写请求。较优地,所述并行数据读写,包括如下步骤步骤S1021,所述缓存模块连接在内存及多通道DMA加速器之间,缓存在内存和多通道DMA加速器之间传输的数据;所述缓存模块接收到多通道DMA加速器的数据读写请求后,判断所述数据读写请求中的被访问数据是否在缓存模块中是否具有相应备份;步骤S1022,如果所述数据读写请求的被访问数据在缓存模块中具有相应备份,执行步骤S1023 ;否则执行步骤S1024 ;步骤S1023,根据所述数据读写请求在缓存模块中读写相应的被访问数据,即内存访问缓存命中,返回读操作所需的被访问数据,或更新写操作对应缓存块的被访问数据;步骤S1024,所述数据读写请求无法从缓存模块的相应备份中读取被访问数据,即内存访问缓存缺失,则引发缓存替换操作,将待被访问数据由外部内存中换入到缓存模块中,并返回读操作所需的被访问数据,或对于写操作更新相应被访问数据在缓存中的备份。较优地,所述步骤S102还包括如下步骤步骤S201,处理器核设置多通道DMA加速器的每条通道的配置寄存器,并初始化s-tag的值;
步骤S202,所述多通道DMA模块的各条通道根据步骤S201中配置寄存器的值启动相应的数据传输任务;步骤S203,在每个时钟周期,各通道根据自身的工作状态设置p-tag的值,同时检测 s-tag 的 tagO tag7 ;如果通道完成步骤S201初始化时s-tag的标记位代表的数据量,则暂时停止工作,并向处理器核发出中断请求,然后执行步骤S204 ;否则返回继续执行步骤S202 ;步骤S204,处理器核检测s-tag的值并查询ρ-tag的值,根据s-tag和ρ-tag的值判断数据传输是否完成;如果是,则结束整个传输任务;否则,开始下一个标记位代表的数据传输。较优地,所述缓存模块为二级缓存模块。本发明的处理器系统及其多通道内存拷贝加速器和方法,具有以下有益效果(一)高带宽,低延迟本发明通过在处理器内加入多通道直接内存访问(DMA)加速器,通过多条通道的流水化处理,能够获得很高的带宽和很低的延迟;( 二 )高并行度本发明通过在多通道DMA加速器的每条通道设置一组标记位标记通道的工作状态,使得在处理器核计算与直接内存访问(Direct Memory Access,DMA)的数据传输之间实现了一种更细粒度的并行工作机制;(三)可重配置化本发明通过控制和通信接口实现CPU对直接内存访问(DMA)模块的实时可重配置化的数据传输过程;(四)平台无关性本发明可以有效避免软件平台的依赖,具有很好的可移植性。说明书附1为现有进行内存拷贝的处理器系统结构示意图;图2为本发明实施例的进行内存拷贝的处理器系统结构示意图;图3为本发明实施例图2中多通道DMA加速器结构示意图;图4为本发明实施例图2中控制单元结构示意图;图5为本发明实施例在一次内存拷贝操作中处理器核(CPU)与多通道DMA加速器及缓存模块的交互示意图;图6为本发明使用本发明处理器多通道内存拷贝方法的并行内存拷贝函数memcpyO的工作过程示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的处理器系统及其多通道内存拷贝DMA加速器和方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。实施例一如图2所示,为本发明实施例处理器系统,包括处理器核1,以及内存3,以及通过数据总线连接在处理器核1及内存3之间的多通道DMA (Direct Memory Access,直接内存访问)加速器4;所述多通道DMA加速器4,用于在处理器核1发出内存拷贝命令的数据读写请求时,根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,以及其中多个读写通道的读写频率和优先级,以及所述读写通道的标记位的值,控制多个读写通道并行向内存3发出多次读写请求,完成数据读写。较佳地,作为一种可实施方式,本发明实施例的处理器系统,还包括连接在内存3及多通道DMA加速器4之间的缓存模块2,用于缓存在内存3和多通道DMA加速器4之间传输的数据。作为一种可实施方式,如图2所示,所述处理器核1包括控制单元11、运算部件12、寄存器堆13、译码访存单元14和一级缓存(Cache)模块15等,将所述控制单元11、运算部件12、寄存器堆13、译码访存单元14和一级缓存(Cache)模块15作为一个硬件模块封装整体为处理器核1,所述多通道DMA加速器4通过数据总线连接在处理器核的控制单元11和内存3之间。本发明实施例处理器系统,通过集成多通道DMA加速器4,消除内存拷贝过程中处理器核的干预,通过处理器系统内部集成的多通道DMA加速器4和利用现有缓存(Cache)模块2最大程度减少DMA读写内存的延迟时间,并在保持结构独立性的同时减少对内存子系统的影响,并可实现运算部件计算过程与异步DMA引擎内存拷贝操作的并行操作。作为一种可实施方式,所述本发明实施例的多通道DMA加速器4设置于处理器系统内部,连接在处理器核1的控制单元11和内存3之间,在处理器核1与内存3之间开辟了一条直接的数据通路。作为一种可实施方式,如图3所示,本发明实施例的多通道DMA加速器4包括至少一 DMA引擎模块41和两个接口 42、43 ;所述DMA引擎模块41,用于根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,通过多个通道向内存3发出多次读写请求。较佳地,如图3所示,本发明实施例的DMA引擎模块41包括多个读写通道及其相应的标记位412,两个流控单元411及数据缓冲区413。所述多个读写通道412至少包括一读通道和一写通道。所述读通道,用于在所述流控单元的控制下,从内存3中读取数据到所述处理器核;所述写通道,用于在所述流控单元的控制下,将处理器核发送来的数据写入到内存3。所述流控单元411,用于根据处理器核发来的配置数据和读写通道的标记位的值,以及初始化时设置的值统计各读写通道使用数据总线的情况,将数据总线分配给优先级最高的读写通道使用,对每条读写通道的频率和优先级进行控制,控制不同的通道启动不同的数据传输任务,并与所述控制单元11交互读写通道的工作状态。作为一种可实施方式,流控单元411中利用一组寄存器来分别保存当前各条DMA通道所发出的访存请求个数(某条通道发出一次请求,相应寄存器值加1),根据公平调度原则在多条通道同时发出访存请求时,对应寄存器值最小的通道获得最高优先级。所述数据缓冲区413,用于缓存读写通道中的数据。每一所述读写通道412包括一配置寄存器4121,用于接收并存储处理器核发送来CN 102567256 A
的、供读写通道读写的配置数据。每个标记位标记所述读写通道每次读写请求所读写的数据量。如图3所示,本发明实施例中的多通道DMA加速器4的所述至少两个接口,为至少一个数据接口 43和一个控制与通信接口 42。所述数据接口 43,用于传输所述内存拷贝命令的数据读写请求所需要读写的数据;所述控制与通信接口 42,用于与所述处理器核1和内存3进行通信,接收处理器核配置数据,并根据所述配置数据配置并存储至所述读写通道的配置寄存器4121。较佳地,作为一种可实施方式,所述接口为基于1 位的AXI (Advancedextensible Interface)总线的接口,通过该数据总线完成内存单元的读写操作;所述缓存模块2为二级缓存模块。相应地,作为一种可实施方式,如图4所示,所述处理器核的控制单元11,包括初始化子单元111和配置子单元112,其中所述初始化子单元111,用于在处理器核进行初始化时,对所述流控单元411进行初始化,设置其初始工作状态,并启动通道的数据传输任务。所述配置子单元112,用于通过所述控制与通信接口 42,向每条读写通道发送配置数据到所述读写通道的配置寄存器4121,设置每条读写通道的相应的配置寄存器的值。较佳地,所述配置数据包括源地址、目的地址、数据段长度等的信息。所述处理器核1可以通过所述控制与通信接口 42设置每条读写通道的相应配置寄存器4121的值,从而使得流控单元能够根据置数据启动不同的数据传输任务。作为本发明实施例的核心部件,DMA引擎模块41能减少处理器核执行的指令条数,能够支持连续步长的内存拷贝操作、缓存(Cache) —致性和程序的局部性,提高内存拷贝过程中计算与数据传输之间的并行度,从而获得很高的程序运行效率,以及很低的功率和面积开销。作为一种可实施方式,本发明实施例的DMA引擎模块41,如图3所示,包括三条读通道和一条写通道;每条通道都有自己独立的配置寄存器和标记位(tag)。其中一条读写通道在启动时其它读写通道可以进行其数据传输,即四条读写通道可以并行处理数据,其有效减少了通道的启动、转换、暂停与重启开销,此外,因为多条通道可以并行工作,这就极大地增加了数据传输的带宽。处理器核1的控制单元11的配置子单元112通过所述控制和通信接口 42设置每条通道配置寄存器4121的值,较佳地,所述通道配置寄存器4121的值包括源地址、目的地址、数据段长度等的值;同时控制单元的初始化子单元完成流控单元的初始化工作,并启动通道的数据传输任务。在数据传输过程中,读写通道中的流控单元411通过所述控制和通信接口 4121将各自的标记位(tag)反馈给处理器核的控制单元11,处理器核的控制单元11标志所述通道的各自的工作状态。作为一种可实施方式,本发明实施例中,所述数据缓冲区采用先进先出(FIFO)的工作模式,容纳I字节的数据,读通道读回来的数据先暂存在数据缓冲区再由写通道写回内存。
10
流控单元411根据初始化时设置的值统计各通道使用总线的情况,将总线分配给优先级最高的通道使用,实现对每条通道的频率和优先级控制。为了减少控制和交互的延迟时间。在本发明实施例中,所述的多通道DMA加速器4在每条读写通道中都设置了一组标记位(tag),并由流控单元控制所述标记位使用。具体地说,每一组标记位(tag)都包括一个8比特位的s-tag (tag0_tag7)和一个8 比特位的 p-tag(tag0_tag7)。其中,s-tag 表示控制标记,p-tag 表示状态标记。其中s-tag是为了通过CPU预先设定好DMA通道的工作条件,从而实现在DMA开始工作后的控制。作为一种可实施方式,本发明实施例中,s-tag有8位0-7位,将整个DMA传输过程分为8段(1/8递增)。举例来说如预先将s-tag的位1、5设为1,则DMA分别在传输完成了设定数据总长度的2/8,和6/8时暂停(stall).具体来说就是如果预先打算通过DMA传输80个字节的数据,则通过设置s-tagl、5位后,当传输完成20个字节,和60个字节(这个统计和比较通过流控单元中的传输统计功能即计数寄存器实现)的时候DMA会自动进入暂停状态,暂停后通过CPU发命令来人为恢复传输。其中,p-tag是反映当前DMA传输完成的情况。拿上例来说,设DMA完成不间断的传输80个字节,则p-tag依次在DMA完成大于10、20. . . 80个字节时,其0_7位置1。该标记主要为了方便CPU查询当前DMA的传输工作情况。S-tag与P-tag在工作上没有任何交互。举例来说,可以不对s_tag进行任何设置(即无间断传输),P-tag依旧会根据DMA传输情况发生变化。二者间s-tag比较重要,是实现DMA预先控制(无干预)的设置,p-tag是CPU方便交互用。8位s-tag、p-tag不是将通道分为8段,而是将传输任务分为8段,在每完成一次基本传输请求后就要检查(通过查询比较流控单元中的计数寄存器)当前已传输数据是否已经大于等于s-tag的要求(1/8,2/8... 8/8)。P_tag代表的传输数据阶段也同s-tag,每位分别对应(1/8,2/8. ..8/8)。s-tag、p-tag的变化是根据所述CPU设置和DMA数据传输量变化,流控单元本身并不对其进行控制。只是对标记位的读写是由CPU发出后由流控单元进行接受并返回相应状态。标记位每一位代表的数据量是根据任务的总数据量来决定的,即不同任务可能不同,但是都1/8,2/8...例如80字节任务,tag的每一位代表10字节800字节任务,tag的每一位代表100字节作为一种可实施方式,在初始化子单元初始化时,将s-tag和p-tag的每一比特位标记为0 ;从LSB (Least Significant Bit,最低有效位)开始,流控单元对s_tag的每个比特位置1,当完成标记位所代表的数据传输任务时,即当每一数据传输请求从所述读写通道读写完成相应的数据量后,相应的读写通道将暂停工作,然后,读写通道则会将P-tag中的相应比特位置1。在一个具体的实施例方式中,读通道1的s-tag和p-tag的每个标记位都代表1/8的数据传输任务。流控单元接收到内存拷贝命令中的数据读写请求后,根据数据读写请求中的任务信息进行判断根据预先设置的分解方法进行分解,然后将分解后的数据读写请求分解为多个读写请求,根据配置寄存器中的配置数据,以及各个读写通道的读写频率和优先级,以及标记位的值,并行启动多个读写通道,数据读写。读通道1读完1/8的数据任务后,则暂时停止工作,并向处理器核(CPU)发出中断请求;处理器核(CPU)的控制单元收到中断请求后,由流控单元检测s-tag和p-tag的值,从而获知读通道1已经将1/8的数据段写入数据缓冲区。下面给出一个1280(160X8)字节内存拷贝(由地址A拷贝至地址B)的例子,如图5所示,进一步说明本发明实施例的处理器系统的多通道DMA加速器4。首先进行内存拷贝方法设置;(11)设置利用一个读通道r和一个写通道w同时工作来完成(最简单情况,同类型多通道间仲裁时可以认为工作中通道具有最高优先级,读写之间是并行的不需要仲裁)。(12)设置标记位策略(这里只用到s-tag)。在读通道每完成160个字节后暂停;CPU此时启动写通道将已经读回的160字节写入目标地址,同时并行的恢复刚才的读通道工作,同样写通道和读通道在完成160字节传输后暂停。循环8次至1280字节数据完成内存拷贝。然后,配置DMA通道和标记位;(21)配置读通道和写通道的源地址(A)、目的地址(B)、和长度(1观0)(22)此时只先配置读通道r的s-tag,将其0-7位置1,启动DMA的读通道r工作。其后,进行第一次读通道r暂停;(31)当读通道r完成160字节读取后(1/8),s-tag位0的判断条件被触发(位0对应1/8),读通道r暂停并发出中断信号通知CPU。 (32) CPU收到中断后,配置写通道w的标记位0-7置1,并启动写通道w工作(开始将之前读完成的120字节写入目的地址);同时恢复读通道r工作,将读通道s-tag的位置0 (如果不置0会反复发中断-对大于1/8同时小于2/8的情况)。最后,进行剩余过程;(41)此时当读通道r完成320字节(2/8)传输后再次发出中断,此时通过判断写通道w的p-tag,检查写通道w是否已经完成160字节的写(1/8);如果已经完成则恢复读通道r和写通道w,同时清除对应的s-tag位(原因同3. 2),否则继续轮询写通道w的p_tag(42)反复执行4. 1直到1280字节拷贝完成从整个过程可以看出s-tag起了至关重要的作用,CPU根据本发明实施例在以1/8(160字节)数据量传输完成后中断处理中与s-tag,p-tag进行交互。交互的方法要视具体设置而定。整个过程除了读通道!·的第一个1/8过程和写通道的最后一个1/8外,其他过程都是读写通道并行工作的。假设串行拷贝1280字节过程需要16个单位时间(读160,写160,再读160...写最后160字节),基于本发明实施例的实现只需10个单位时间(读160,写160+读下一个160...写最后一个160)。其间只需要在中断后(共8次)更改s-tag和查询p-tag的值,开销很小。实施例二
相应地,本发明实施例提供一种内存拷贝加速方法,包括如下步骤步骤S101,处理器核的控制单元向多通道DMA加速器发出内存拷贝命令;步骤S102,多通道DMA加速器在接收到处理器核向内存发出的内存拷贝命令的数据读写请求时,根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,以及其中多个读写通道的读写频率和优先级,以及所述读写通道的标记位的值,控制多个读写通道并行向内存发出多次读写请求,并行数据读写,直至完成所有读写操作;较佳地,所述步骤S102中,所述判断并分解所述数据读写请求的任务信息,包括如下步骤多通道DMA加速器根据所述任务信息判断,当拷贝数据总长度大于所述多通道DMA加速器的单个通道的总线位宽时,则对所述内存拷贝命令的任务信息进行分解,根据分解后的内存拷贝命令的任务信息,由多通道DMA加速器通过多个通道向内存发出多次读写请求;否则,多通道DMA加速器随机选择一通道向内存发出数据读写请求;较佳地,所述步骤S102中,所述并行数据读写,包括如下步骤步骤S1021,所述缓存模块连接在内存及多通道DMA加速器之间,缓存在内存和多通道DMA加速器之间传输的数据;所述缓存模块接收到多通道DMA加速器的数据读写请求后,判断所述数据读写请求中的被访问数据是否在缓存模块中具有相应备份;步骤S1022,如果所述数据读写请求的被访问数据在缓存(Cache)模块中具有相应备份,执行步骤S1023 ;否则执行步骤S1024 ;步骤S1023,根据所述数据读写请求在缓存模块中读写相应的被访问数据,即内存访问缓存(Cache)命中,返回读操作所需的被访问数据,或更新写操作对应缓存(Cache)块的被访问数据;步骤S1024,所述数据读写请求无法从缓存模块的相应备份中读取被访问数据,即内存访问缓存(Cache)缺失,则引发缓存(Cache)替换操作(Cache Evict),将待被访问数据由外部内存中换入到缓存模块中,并返回读操作所需的被访问数据,或对于写操作更新相应被访问数据在缓存(Cache)中的备份。所述缓存(Cache)替换操作(Cache Evict)是一种现有技术,因此,在本发明实施例中,不再一一详细描述。作为一种可实施方式,较佳地,本发明实施例的内存拷贝加速方法,所述步骤102还包括如下步骤步骤S201,处理器核(CPU)设置多通道DMA加速器的每条通道的配置寄存器,并初始化s-tag的值;步骤S202,所述多通道DMA模块的各条通道根据步骤S201中配置寄存器的值启动相应的数据传输任务;步骤S203,在每个时钟周期,各通道根据自身的工作状态设置p-tag的值,同时检测 s-tag 的 tagO tag7 ;如果通道完成步骤S201初始化时s-tag的标记位代表的数据量,则暂时停止工作,并向处理器核(CPU)发出中断请求,然后执行步骤S204;否则返回继续执行步骤S202。步骤S204,处理器核(CPU)检测s_tag的值并查询ρ-tag的值,根据s-tag和p-tag的值判断数据传输是否完成;如果是,则结束整个传输任务;否则,开始下一个标记位代表的数据传输。下面举例说明本发明实施例的处理器系统及其多通道内存拷贝加速器和方法。在一个具体实施例子中,一种使用本发明处理器系统及其多通道内存拷贝加速器和方法的并行内存拷贝函数memcpyO的工作过程,如图6所示。在函数memCpy(SrC,dst, len)中,src表示待拷贝数据段的源地址,dst表示拷贝的目的地址,Ien表示数据段的长度。load (src)表示所述多通道DMA加速器的读通道从源地址读取数据;store (dst)表示所述多通道DMA加速器的写通道将数据写入目的地址。如图6所示,基于读写通道的标记位(tag),该实施例中内存拷贝过程的读写操作可以实现一种流水化的处理读通道先从源地址读取tagO代表的数据量,然后向CPU发出中断请求。CPU如果判断这部分数据已准备好则开始写通道的数据传输任务,将已读取的数据写回内存的目的地址。此时,读通道继续读取tagl代表的数据量,这样写通道就可以与读通道并行工作。通过这种流水化的处理,写通道的启动和读写通道之间的转换、暂停与重启等开销都被隐藏起来,减少了处理器的开销,同时也获得了很高的带宽利用率。最后应当说明的是,很显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型。
权利要求
1.一种处理器系统,包括处理器核,以及内存,其特征在于,还包括通过数据总线连接在处理器核及内存之间的多通道DMA加速器;所述多通道DMA加速器,用于在处理器核发出内存拷贝命令产生数据读写请求时,根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,以及其中多个读写通道的读写频率和优先级,以及所述读写通道的标记位的值,控制多个读写通道并行向内存发出多次读写请求,完成数据读写。
2.根据权利要求1所述的处理器系统,其特征在于,还包括连接在内存及多通道DMA加速器之间的缓存模块,用于缓存在内存和多通道DMA加速器之间传输的数据。
3.根据权利要求1所述的处理器系统,其特征在于,所述多通道DMA加速器包括至少一DMA引擎模块和两个接口 ;所述DMA引擎模块,用于根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,以及其中多个读写通道的读写频率和优先级,以及所述读写通道的标记位的值,控制多个读写通道并行向内存发出多次读写请求;所述至少两个接口,为至少一个数据接口和一个控制与通信接口 ;所述数据接口,用于传输所述内存拷贝命令的数据读写请求所需要读写的数据;所述控制与通信接口,用于与所述处理器核和内存进行通信,接收处理器核配置数据,并根据所述配置数据配置并存储至所述读写通道的配置寄存器。
4.根据权利要求3所述的处理器系统,其特征在于,所述接口为基于1 位的总线的接口,通过该数据总线完成内存单元的读写操作;所述缓存模块为二级缓存模块。
5.根据权利要求3所述的处理器系统,其特征在于,所述DMA引擎模块包括多个读写通道及其相应的标记位,连接所述处理器核和所述内存的两个流控单元及数据缓冲区;所述多个读写通道至少包括一读通道和一写通道;所述读通道,用于在所述流控单元的控制下,从所述内存中读取数据到所述处理器核;所述写通道,用于在所述流控单元的控制下,将处理器核发送来的数据写入到内存;所述流控单元,用于根据配置寄存器中的配置数据和读写通道的标记位的值,以及初始化时设置的值统计各读写通道使用数据总线的情况,将数据总线分配给优先级最高的读写通道使用,对每条读写通道的频率和优先级进行控制,控制不同的通道启动不同的数据传输任务,并与处理器核的控制单元交互读写通道的工作状态;所述数据缓冲区,用于缓存读写通道中的数据;每一所述读写通道包括一配置寄存器,用于接收并存储处理器核发送来的、供读写通道读写的配置数据;每个标记位标记所述读写通道每次读写请求所读写的数据量。
6.根据权利要求1至5任一项所述的处理器系统,其特征在于,所述处理器核的控制单元,包括初始化子单元和配置子单元,其中所述初始化子单元,用于在处理器核进行初始化时,对所述流控单元进行初始化,设置其初始工作状态,并启动通道的数据传输任务;所述配置子单元,用于通过所述控制与通信接口,向每条读写通道发送配置数据到所述读写通道的配置寄存器,设置每条读写通道的相应的配置寄存器的值。
7.根据权利要求6所述的处理器系统,其特征在于,所述配置数据包括源地址、目的地址、数据段长度。
8.根据权利要求5所述的处理器系统,其特征在于,所述多条读写通道包括三条读通道和一条写通道,每条通道都有自己独立的配置寄存器和标记位,其中一条读写通道在启动时其它读写通道可以进行其数据传输,即四条读写通道可以并行处理数据。
9.一种多通道内存拷贝DMA加速器,其特征在于,用于在接收到处理器核向内存发出拷贝数据读写请求时,根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,以及其中多个读写通道的读写频率和优先级,以及所述读写通道的标记位的值,控制多个读写通道并行向内存发出多次读写请求,完成数据读写。
10.根据权利要求9所述的多通道内存拷贝DMA加速器,其特征在于,所述多通道DMA加速器包括至少一 DMA引擎模块和两个接口 ;所述DMA引擎模块,用于根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,以及其中多个读写通道的读写频率和优先级,以及所述读写通道的标记位的值,控制多个读写通道并行向内存发出多次读写请求;所述至少两个接口,为至少一个数据接口和一个控制与通信接口 ;所述数据接口,用于传输所述内存拷贝命令的数据读写请求所需要读写的数据;所述控制与通信接口,用于与所述处理器核和内存进行通信,接收处理器核配置数据,并根据所述配置数据配置并存储至所述读写通道的配置寄存器。
11.根据权利要求9或10所述的多通道内存拷贝DMA加速器,其特征在于,所述DMA引擎模块包括多个读写通道及其相应的标记位,连接所述处理器核和所述内存的两个流控单元及数据缓冲区;所述多个读写通道至少包括一读通道和一写通道;所述读通道,用于在所述流控单元的控制下,从内存中读取数据到所述处理器核;所述写通道,用于在所述流控单元的控制下,将处理器核发送来的数据写入到内存;所述流控单元,用于根据配置寄存器中的配置数据和读写通道的标记位的值,以及初始化时设置的值统计各读写通道使用数据总线的情况,将数据总线分配给优先级最高的读写通道使用,对每条读写通道的频率和优先级进行控制,控制不同的通道启动不同的数据传输任务,并与所述处理器的控制单元交互读写通道的工作状态;所述数据缓冲区,用于缓存读写通道中的数据;每一所述读写通道包括一配置寄存器,用于接收并存储处理器核发送来的、供读写通道读写的配置数据;每个标记位标记所述读写通道每次读写请求所读写的数据量。
12.—种内存拷贝加速方法,其特征在于,包括如下步骤步骤S101,处理器核的控制单元向多通道DMA加速器发出内存拷贝命令;步骤S102,多通道内存拷贝DMA加速器在接收到处理器核向内存发出的内存拷贝数据读写请求时,根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,以及其中多个读写通道的读写频率和优先级,以及所述读写通道的标记位的值,控制多个读写通道并行向内存发出多次读写请求,并行数据读写,直至完成所有读写操作。
13.根据权利要求12所述的内存拷贝加速方法,其特征在于,所述步骤S102中,所述判断并分解所述数据读写请求的任务信息,包括如下步骤多通道内存拷贝DMA加速器根据所述任务信息判断,当拷贝数据总长度大于所述多通道DMA加速器的单个通道的总线位宽时,则对所述内存拷贝命令的任务信息进行分解,根据分解后的内存拷贝命令的任务信息,由多通道DMA加速器通过多个通道向内存发出多次读写请求;否则,多通道内存拷贝DMA加速器随机选择一通道向内存发出数据读写请求。
14.根据权利要求12所述的内存拷贝加速方法,其特征在于,所述并行数据读写,包括如下步骤步骤S1021,所述缓存模块连接在内存及多通道DMA加速器之间,缓存在内存和多通道DMA加速器之间传输的数据;所述缓存模块接收到多通道DMA加速器的数据读写请求后,判断所述数据读写请求中的被访问数据是否在缓存模块中是否具有相应备份;步骤S1022,如果所述数据读写请求的被访问数据在缓存模块中具有相应备份,执行步骤S1023 ;否则执行步骤S1024 ;步骤S1023,根据所述数据读写请求在缓存模块中读写相应的被访问数据,即内存访问缓存命中,返回读操作所需的被访问数据,或更新写操作对应缓存块的被访问数据;步骤S1024,所述数据读写请求无法从缓存模块的相应备份中读取被访问数据,即内存访问缓存缺失,则引发缓存替换操作,将待被访问数据由外部内存中换入到缓存模块中,并返回读操作所需的被访问数据,或对于写操作更新相应被访问数据在缓存中的备份。
15.根据权利要求14所述的内存拷贝加速方法,其特征在于,所述步骤S102还包括如下步骤步骤S201,处理器核设置多通道DMA加速器的每条通道的配置寄存器,并初始化s-tag的值;步骤S202,所述多通道DMA模块的各条通道根据步骤S201中配置寄存器的值启动相应的数据传输任务;步骤S203,在每个时钟周期,各通道根据自身的工作状态设置p-tag的值,同时检测s-tag ^tJ tagO tag7 ;如果通道完成步骤S201初始化时s-tag的标记位代表的数据量,则暂时停止工作,并向处理器核发出中断请求,然后执行步骤S204 ;否则返回继续执行步骤S202 ;步骤S204,处理器核检测s-tag的值并查询p-tag的值,根据s-tag和ρ-tag的值判断数据传输是否完成;如果是,则结束整个传输任务;否则,开始下一个标记位代表的数据传输。
16.根据权利要求14所述的内存拷贝加速方法,其特征在于,所述缓存模块为二级缓存模块。
全文摘要
本发明提供一种处理器系统及其多通道内存拷贝DMA加速器和方法。该处理器系统,包括通过数据总线连接在处理器核及内存之间的多通道直接内存访问DMA加速器,用于在处理器核发出内存拷贝命令产生数据读写请求时,根据所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,并根据分解后的数据读写请求的任务信息,以及其中多个读写通道的读写频率和优先级,以及所述读写通道的标记位的值,控制多个读写通道并行向内存发出多次读写请求,完成数据读写。其具有高带宽、低延迟,高并行度,可重配置化,平台无关性的优点。
文档编号G06F13/28GK102567256SQ201110425530
公开日2012年7月11日 申请日期2011年12月16日 优先权日2011年12月16日
发明者苏孟豪, 苏文 申请人:龙芯中科技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1