CN117312200B - 基于环形缓冲区的多通道数据dma系统 - Google Patents
基于环形缓冲区的多通道数据dma系统 Download PDFInfo
- Publication number
- CN117312200B CN117312200B CN202311589808.3A CN202311589808A CN117312200B CN 117312200 B CN117312200 B CN 117312200B CN 202311589808 A CN202311589808 A CN 202311589808A CN 117312200 B CN117312200 B CN 117312200B
- Authority
- CN
- China
- Prior art keywords
- data
- buffer
- channel
- target
- dma
- 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.)
- Active
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 206
- 238000012545 processing Methods 0.000 claims abstract description 27
- 238000012805 post-processing Methods 0.000 claims abstract description 24
- 230000005540 biological transmission Effects 0.000 claims abstract description 19
- 230000001360 synchronised effect Effects 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 claims 1
- 238000000034 method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000005070 sampling Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明涉及数据处理技术领域,尤其涉及一种基于环形缓冲区的多通道数据DMA系统,包括主机系统和GPU芯片、X个数据传输通道和环形缓冲区;环形缓冲区中设置一个读指针和写指针;GPU芯片包括一个通道管理模块、X个DMA模块、本地缓冲区和DMA后级处理模块;主机系统选择写入环形缓冲区,写入待处理数据,更新写入缓冲区的写指针值,发送给对应的DMA模块;通道管理模块选择目标通道;目标DMA模块读取待处理数据存储在目标本地缓冲区中,更新目标环形缓冲区的读指针值,发送给主机系统;目标DMA后级处理模块从目标本地缓冲区中读取数据进行后级处理。本发明能够提高主机系统向GPU芯片下发数据的处理效率以及处理性能。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于环形缓冲区的多通道数据DMA系统。
背景技术
在主机系统和GPU芯片进行通信的过程中,主机系统需要GPU向芯片下发待处理数据,例如音频数据,由GPU芯片对待处理数据进行处理。传统的处理过程需要先将待处理数据存储在内存中,GPU芯片将内存中的待处理数据存储到本地,然后对存储的本地的下发数据进行处理。传统的数下发据处理过程需要依赖主机系统分配内存,不利于内存分配的使用,且主机系统和GPU芯片之间基于单通道对下发数据进行处理,使得下发数据处理效率低,处理性能差。由此可知,如何提高下发数据的处理效率和处理性能成为亟待解决的技术问题。
发明内容
本发明目的在于,提供一种基于环形缓冲区的多通道数据DMA系统,能够提高主机系统向GPU芯片下发数据的处理效率以及处理性能。
根据本发明一方面,提供了一种基于环形缓冲区的多通道数据DMA系统,包括主机系统和GPU芯片、X个数据传输通道{Pipe1,Pipe2,…,Pipex,…,PipeX}和X个环形缓冲区,其中,Pipex为第x个数据传输通道,x的取值范围为1到X;所述主机系统和GPU芯片通过所述X个数据传输通道传输待处理数据,每一数据传输通道对应一个环形缓冲区,所述X个环形缓冲区设置在主机系统或GPU芯片中;
每一环形缓冲区中设置一个读指针和写指针,所述环形缓冲区为先入先出队列,且当所述环形缓冲区存满时,返回从所述环形缓冲区的起始位置开始存储数据;
所述GPU芯片包括一个通道管理模块、X个DMA模块、X个本地缓冲区和X个DMA后级处理模块,每一个数据传输通道对应一个DMA模块、一个本地缓冲区以及一个DMA后级处理模块;
所述主机系统基于环形缓冲区的读指针和写指针从所述X个环形缓冲区选择写入环形缓冲区,向写入缓冲区写入待处理数据,并更新写入缓冲区的写指针值,然后将更新的写入缓冲区的写指针值发送给写入缓冲区对应的DMA模块;
所述通道管理模块基于预设的轮询机制选择目标通道;目标DMA模块从目标环形缓冲区中读取待处理数据存储在目标本地缓冲区中,并更新目标环形缓冲区的读指针值,然后将目标环形缓冲区的读指针值发送给所述主机系统;目标DMA后级处理模块从目标本地缓冲区中读取数据进行后级处理。
本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种基于环形缓冲区的多通道数据DMA系统可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有以下有益效果:
本发明设置多通道实现主机系统和GPU芯片之间的数据传输,且为每一通道设置独立的环形缓冲区,环形缓冲区能欧充分利用分配的内存,无需重复分配内存,每一环形缓冲区设置了独立的读指针和写指针,基于读指针、写指针以及预设的轮询机制选择目标通道,通过目标DMA模块将目标环形缓冲区的数据读取并存储至目标本地缓冲区,目标DMA后级处理模块从目标本地缓冲区中读取数据进行后级处理。提高了主机系统向GPU芯片下发数据的处理效率以及处理性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于环形缓冲区的多通道数据DMA系统示意图;
图2为本发明实施例提供的环形缓冲区结构示意图;
图3为本发明实施例提供的使用时间片轮询调度方式管理切换多通道示意图;
图4为本发明实施例提供的音频数据转换为集成电路内置音频总线I2S串行数据示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种基于环形缓冲区的多通道数据DMA系统,如图1所示,包括主机系统和GPU(Graphics Processing Unit)芯片、X个数据传输通道{Pipe1,Pipe2,…,Pipex,…,PipeX}和X个环形缓冲区(Ring Buffer)。其中,Pipex为第x个数据传输通道,x的取值范围为1到X。所述主机系统和GPU芯片通过所述X个数据传输通道传输待处理数据,每一数据传输通道对应一个环形缓冲区,所述X个环形缓冲区设置在主机系统或GPU芯片中,图1中,将X个环形缓冲区设置在主机系统中。
每一环形缓冲区中设置一个读指针(RPTR)和写指针(WPTR),所述环形缓冲区为先入先出队列,且当所述环形缓冲区存满时,返回从所述环形缓冲区的起始位置开始存储数据,可以理解的是,返回从所述环形缓冲区的起始位置开始存储数据,是以覆盖的方式存储数据,即将新的数据覆盖原始存在环形缓冲区中的数据。
所述GPU芯片包括一个通道管理模块、X个直接存储器访问(Direct MemoryAccess,简称DMA)模块、X个本地缓冲区(Local Buffer)和X个DMA后级处理模块,每一个数据传输通道对应一个DMA模块、一个本地缓冲区以及一个DMA后级处理模块。
所述主机系统基于环形缓冲区的读指针和写指针从所述X个环形缓冲区选择写入环形缓冲区,向写入缓冲区写入待处理数据,并更新写入缓冲区的写指针值,然后将更新的写入缓冲区的写指针值发送给写入缓冲区对应的DMA模块。需要说明的是,所述主机系统基于环形缓冲区的剩余可存储空间以及待存储数据的大小来选择写入环形缓冲区,当环形缓冲区的写指针之后的环形缓冲区为空时,剩余可存储空间为写指针之后至环形缓冲区结束位置对应的存储空间。若写指针之后的环形缓冲区不为空,说明已经开始以覆盖的方式向环形缓冲区存入数据,剩余存储空间为写指针位置开始至读指针之间的存储空间。可以理解的是,从写指针开始如果到环形缓冲区结束位置还未到读指针位置,则需要返回环形缓冲区起点位置,再从起点位置继续往后直至到达读指针位置。
所述通道管理模块基于预设的轮询机制选择目标通道;目标DMA模块从目标环形缓冲区中读取待处理数据存储在目标本地缓冲区中,并更新目标环形缓冲区的读指针值,然后将目标环形缓冲区的读指针值发送给所述主机系统;目标DMA后级处理模块从目标本地缓冲区中读取数据进行后级处理。
作为一种实施例,所述主机系统将每一环形缓冲区映射至主机系统的内存中,或者映射到本地存储器中,并将每一环形缓冲区的起始地址和大小配置到对应的DMA模块中。其中,所述本地存储器为双倍速率同步动态随机存储器(DDR)或高速带宽存储器(HBM)。
如图2所示示例,环形缓冲区起始地址为Base Address,大小固定为N字节Byte,所述环形缓冲区是环形的数据结构,因此待处理数据存储超过环形缓冲区大小N Byte时,将回环到起始地址进行存储。作为一种具体实施例,主机系统为其中一个数据传输通道分配的环形缓冲区的起始地址Base Address为0x10_0000,大小为N=1024 字节Byte。那么,环形缓冲区的第一个Byte的地址为0x10_0000+0x0,依次为0x10_0000+0x1,0x10_0000+0x2,…;最后一个Byte的地址为0x10_0000+(N-1),也就是0x10_0000+0x3FF。待处理数据以音频数据为例,音频数据以2声道为例,左右声道的1个采样点采样数据大小为4 Byte,左右声道数据大小为8 Byte。因此,大小为1024 Byte的环形缓冲区可以存储N/8=1024/8=128个2 声道的视频流数据。128个2 声道的视频流数据存满Ring Buffer后,下一个2声道数据将回环至环形缓冲区的第一个Byte的地址0x10_0000+0x0存储。左声道数据的地址为0x10_0000+0x0-0x3,右声道数据的地址为0x10_0000+0x4-0x7。
其中,写指针一般初始指向环形缓冲区的起始地址Base Address,写指针初始也可以指向环形缓冲区的任一地址。待处理数据流更新多少新的数据,写指针便随之增加多少。写指针指向的地址往后的环形缓冲区称为空闲内存区域,主机系统需要保证环形缓冲区空闲内存区域的大小,以免产生上溢(Overflow)。仍以图2为例,环形缓冲区写指针初始值为0x0,也可以为0x0-0x(N-1)范围内的任一值。环形缓冲区大小为N=1024 字节Byte,写指针值范围为0x0~0x3FF。此时,待处理数据流更新256 Byte时,写指针值增加256,环形缓冲区空闲内存区域的大小为N-256=1024-256=768 Byte。
如图2所示示例,环形缓冲区读指针初始值为0x0,此时读指针值等于写指针值。当环形缓冲区中的待处理更新256 Byte时,写指针值增为0x100,主机系统将写指针值0x100发送给DMA模块。DMA模块接收到写指针值0x100,对比读指针值和写指针值。读指针值初始时为0x0,小于写指针值0x100。如此刻DMA模块调度到通道Pipe1,Pipe1向环形缓冲区发起读待处理数据的请求。例如,请求从环形缓冲区读取256 Byte的待处理数据。待处理数据从环形缓冲区中按照FIFO先入先出的方式读出,发送到DMA模块对应的本地缓冲区中。
如图2所示示例,环形缓冲区读指针初始值为0x0,此时DMA模块未更新环形缓冲区的读指针值。当DMA模块从环形缓冲区中读取待处理数据256 Byte到本地缓冲区后,读指针值增为0x100。DMA模块将读指针值0x100发送给主机系统,指针值0x100表示DMA模块从环形缓冲区中读取到了0x100地址的待处理数据。环形缓冲区大小为1024 Byte时,其空闲内存区域大小为1024-256=768 Byte。如果DMA模块将环形缓冲区中1024 Byte全部读回到本地缓冲区中,此时环形缓冲区空闲内存区域的大小为0,DMA模块需要停止继续从环形缓冲区中读取待处理数据,以免产生下溢Underflow。
以图2为例,环形缓冲区大小为1024 Byte,当前待处理数据已经存储了768 Byte,写指针值更新为0x300。通道Pipe1从环形缓冲区中读取了256 Byte 待处理数据,读指针值更新为0x100。主机系统再向环形缓冲区中存储1024-768=256 Byte待处理数据,写指针值将会更新为0x0,回环到环形缓冲区的起始位置,重新从0x0开始更新数值。主机系统再向环形缓冲区中存储512 Byte 待处理数据,写指针值则会更新为0x100。此时,写指针值等于读读指针值,环形缓冲区已存满,将会产生上溢Overflow。主机系统对比当前环形缓冲区写指针值为0x300,读指针值为0x100,计算出环形缓冲区空闲内存区域大小为512 Byte。主机系统可设置空闲内存区域大小为256 Byte为停止继续新的Audio数据流存储的水线,以保证环形缓冲区不会发生上溢Overflow。此时,主机系统可更新256 Byte待处理数据,将新写指针值0x0发送给DMA模块。
作为一种实施例,所述通道管理模块以时间片轮询的方式按照Pipe1, Pipe2,…,Pipex,…, PipeX的顺序选择目标通道,如图3所示,当前所选择的目标通道为Pipex,当满足下一时间片到达、目标通道对应的读请求执行完毕、目标通道对应的本地缓冲区已存满、目标通道对应的环形缓冲区已读空中的至少一个条件时,选择Pipe(x+1)为下一目标通道,将时间片切换至Pipe(x+1)。需要说明的是,若仅采用通用的时间片轮询的方式按照Pipe1,Pipe2,…,Pipex,…,PipeX的顺序选择目标通道,则只能满足下一时间片到达时,选择下一个通道作为下一目标通道,但是,在下一个时间片达到之前,有可能会出现当前目标通道对应的读请求执行完毕、当前目标通道对应的本地缓冲区已存满、以及当前目标通道对应的环形缓冲区已读空等情况,当出现上述任何一种情况时,若时间片还停留在当前目标通道,则会造成计算资源浪费,降低多通道数据处理效率的后果。基于此,本申请在轮询规则中设置当满足目标通道对应的读请求执行完毕、目标通道对应的本地缓冲区已存满、目标通道对应的环形缓冲区已读空中的至少一个条件时,直接选择Pipe(x+1)为下一目标通道,将时间片切换至Pipe(x+1)。其中,调度时间片的值可以通过配置寄存器来灵活调整。避免造成计算资源浪费,提高了多通道数据处理效率。
作为一种实施例,通道Pipe1在某一时刻更新了环形缓冲区写指针,Pipe1对比完读指针值和写指针值,发起读环形缓冲区中待处理的请求。时间片轮询调度在其他通道的时间片到达了,或者其他通道已经完成调度,处于空状态,轮询到了Pipe1发起的读请求。将切换到Pipe1,Pipe1的读请求被接受并发给对应的环形缓冲区,对应的环形缓冲区将待处理数据发送到Pipe1的本地缓冲区中。具体的,Pipe1请求可以从环形缓冲区读取256 Byte的待处理数据,本地缓冲区的大小为1K Byte。Pipe1的本地缓冲区中接收到256 Byte的待处理数据,那么本地缓冲区还可以接收1K-256=768 Byte 的待处理数据。当本地缓冲区的1K大小存满待处理数据,或者存放超过设置大小例如768 Byte时,Pipe1将暂停发出读请求。
需要说明的是,每次时间片的切换也需要消耗一定的计算资源,如果频繁切换时间片也会增大开销,影响多通道数据的处理效率,因此,在选择下一目标通道时,可以尽可能选择一个能够处理更多的数据的通道,避免频繁切换时间片。作为一种实施例,所述通道管理模块默认以时间片轮询的方式按照Pipe1,Pipe2,…,Pipex,…,PipeX的顺序选择目标通道,当前所选择的目标通道为Pipex,当满足下一时间片到达时,选择Pipe(x+1)为下一目标通道,将时间片切换至Pipe(x+1);当满足目标通道对应的读请求执行完毕、目标通道对应的本地缓冲区已存满、目标通道对应的环形缓冲区已读空中的至少一个条件时,获取每一Pipex对应的本地缓冲区剩余容量Ax,每一Pipex对应的环形缓冲区可读数据量Bx,每一Pipex对应的Ax和Bx的匹配度Cx, Ax和Bx越接近,Cx的值越大,基于每一Pipex对应的Ax、Bx和Cx确定每一Pipex对应的当前权重Dx,Dx=Ax+Bx+Cx,将当前Dx最大的通道确定为下一目标通道,将时间片切换至下一目标通道。需要说明的是,通过获取每一Pipex对应的当前权重Dx,能够选择出当前能够处理更多数据的下一目标通道,避免频繁切换时间片,进一步提高了多通道数据处理效率。
作为一种实施例,所述DMA模块还用于监控对应本地缓冲区中已存储的数据量,当对应本地缓冲区中已存储的数据量大于等于预设的阈值时,将对应本地缓冲区中已存储的数据读取出来,发送给对应的DMA后级处理模块进行处理,需要说明的是,DMA后级处理模块根据具体应用场景设置,在此不再赘述。具体的,所述待处理数据可以为音频数据,所述DMA模块将对应本地缓冲区中已存储的数据读取出来并转换为集成电路内置音频总线(I2S)串行数据发送给对应的DMA后级处理模块进行处理,所述预设的阈值基于系统延迟和所需缓存的音频数据量来确定,在提高了音频数据处理效率的同时,保证了音频数据的连续性。
作为一种实施例,所述GPU芯片还包括M个启动寄存器(Start Memory),每一通道对应一个启动寄存器,当本地缓冲区中已存储的数据量大于等于预设的阈值时,将配置对应的启动寄存器,将对应本地缓冲区中已存储的数据读取出来,并执行转换集成电路内置音频总线串行数据的操作,当对应本地缓冲区中已存储的数据量小于预设的阈值时,撤销对应的启动寄存器的配置,停止执行转换集成电路内置音频总线串行数据的操作。仍以待处理数据为左右两个声道的数据为例,启动和停止并转串的操作的最小边界为一帧左右声道的音频数据。
如图4所示示例,音频数据一帧包含了1个左声道数据和1个右声道数据,为8 Byte数据。左声道Audio数据是字选择线ws=0时的串行数据线sdo输出的数据,右声道Audio数据是字选择线ws=1时的串行数据线sdo输出的数据。字选择线ws的频率称为采样频率,8 Byte=64 Bit的时钟sclk的频率称为位频率。一个ws周期包含了64个sclk时钟周期,每个声道是32个sclk时钟周期。因此,每个通道Pipe启动和停止并转串的操作的最小边界为8 Byte。
作为一种实施例,每个环形缓冲区包括N个存储单元,编号依次为1,2,3…N-1,N,当读指针和写指针指向第n个存储单元时,读指针值和写指针值为n,n的取值范围为1到N。若环形缓冲区当前读指针值≤当前写指针值,且当前写指针值-当前读指针值=M,M为预设的写保护阈值,M≥0,则暂停向所述环形缓冲区域写入数据。若环形缓冲区当前读指针值≥当前写指针值,且当前读指针值-当前写指针值=R,R为预设的读保护阈值,R≥0,则暂停从所述环形缓冲区域读取数据。优选的,M和R均设置为0。
作为一种实施例,主机系统对比环形缓冲区读指针值和写指针值,控制环形缓冲区中待处理数据更新的频率。待处理数据更新超过环形缓冲区大小时,会回环到环形缓冲区起始位置存储。写指针值更新到环形缓冲区大小时,会重新从零开始更新数值。因此,主机系统根据DMA模块返回的读指针值,确认写指针值更新没有等于读指针值。环形缓冲区空闲内存区域的设置,有效地避免了产生上溢Overflow。
本发明实施例设置多通道实现主机系统和GPU芯片之间的数据传输,且为每一通道设置独立的环形缓冲区,环形缓冲区能欧充分利用分配的内存,无需重复分配内存,每一环形缓冲区设置了独立的读指针和写指针,基于读指针、写指针以及预设的轮询机制选择目标通道,通过目标DMA模块将目标环形缓冲区的数据读取并存储至目标本地缓冲区,目标DMA后级处理模块从目标本地缓冲区中读取数据进行后级处理。提高了主机系统向GPU芯片下发数据的处理效率以及处理性能。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (10)
1.一种基于环形缓冲区的多通道数据DMA系统,其特征在于,
包括主机系统和GPU芯片、X个数据传输通道{Pipe1,Pipe2,…,Pipex,…,PipeX}和X个环形缓冲区,其中,Pipex为第x个数据传输通道,x的取值范围为1到X;所述主机系统和GPU芯片通过所述X个数据传输通道传输待处理数据,每一数据传输通道对应一个环形缓冲区,所述X个环形缓冲区设置在主机系统或GPU芯片中;
每一环形缓冲区中设置一个读指针和写指针,所述环形缓冲区为先入先出队列,且当所述环形缓冲区存满时,返回从所述环形缓冲区的起始位置开始存储数据;
所述GPU芯片包括一个通道管理模块、X个DMA模块、X个本地缓冲区和X个DMA后级处理模块,每一个数据传输通道对应一个DMA模块、一个本地缓冲区以及一个DMA后级处理模块;
所述主机系统基于环形缓冲区的读指针和写指针从所述X个环形缓冲区选择写入环形缓冲区,向写入缓冲区写入待处理数据,并更新写入缓冲区的写指针值,然后将更新的写入缓冲区的写指针值发送给写入缓冲区对应的DMA模块;
所述通道管理模块基于预设的轮询机制选择目标通道;目标DMA模块从目标环形缓冲区中读取待处理数据存储在目标本地缓冲区中,并更新目标环形缓冲区的读指针值,然后将目标环形缓冲区的读指针值发送给所述主机系统;目标DMA后级处理模块从目标本地缓冲区中读取数据进行后级处理。
2.根据权利要求1所述的系统,其特征在于,
所述主机系统将每一环形缓冲区映射至主机系统的内存中,或者映射到本地存储器中,并将每一环形缓冲区的起始地址和大小配置到对应的DMA模块中。
3.根据权利要求2所述的系统,其特征在于,
所述本地存储器为双倍速率同步动态随机存储器或高速带宽存储器。
4.根据权利要求1所述的系统,其特征在于,
所述通道管理模块以时间片轮询的方式按照Pipe1,Pipe2,…,Pipex,…,PipeX的顺序选择目标通道,当前所选择的目标通道为Pipex,当满足下一时间片到达、目标通道对应的读请求执行完毕、目标通道对应的本地缓冲区已存满、目标通道对应的环形缓冲区已读空中的至少一个条件时,选择Pipe(x+1)为下一目标通道,将时间片切换至Pipe(x+1)。
5.根据权利要求1所述的系统,其特征在于,
所述通道管理模块默认以时间片轮询的方式按照Pipe1,Pipe2,…,Pipex,…,PipeX的顺序选择目标通道,当前所选择的目标通道为Pipex;
当满足下一时间片到达时,选择Pipe(x+1)为下一目标通道,将时间片切换至Pipe(x+1);
当满足目标通道对应的读请求执行完毕、目标通道对应的本地缓冲区已存满、目标通道对应的环形缓冲区已读空中的至少一个条件时,获取每一Pipex对应的本地缓冲区剩余容量Ax,每一Pipex对应的环形缓冲区可读数据量Bx, 每一Pipex对应的Ax和Bx的匹配度Cx, Ax和Bx越接近,Cx的值越大,基于每一Pipex对应的Ax、Bx和Cx确定每一Pipex对应的当前权重Dx,Dx=Ax+Bx+Cx,将当前Dx最大的通道确定为下一目标通道,将时间片切换至下一目标通道。
6.根据权利要求1所述的系统,其特征在于,
所述DMA模块还用于监控对应本地缓冲区中已存储的数据量,当对应本地缓冲区中已存储的数据量大于等于预设的阈值时,将对应本地缓冲区中已存储的数据读取出来,发送给对应的DMA后级处理模块进行处理。
7.根据权利要求6所述的系统,其特征在于,
所述待处理数据为音频数据,所述DMA模块将对应本地缓冲区中已存储的数据读取出来并转换为集成电路内置音频总线串行数据发送给对应的DMA后级处理模块进行处理。
8.根据权利要求1所述的系统,其特征在于,
所述GPU芯片还包括M个启动寄存器,每一通道对应一个启动寄存器,当本地缓冲区中已存储的数据量大于等于预设的阈值时,将配置对应的启动寄存器,将对应本地缓冲区中已存储的数据读取出来,并执行转换集成电路内置音频总线串行数据的操作,当对应本地缓冲区中已存储的数据量小于预设的阈值时,撤销对应的启动寄存器的配置,停止执行转换集成电路内置音频总线串行数据的操作。
9.根据权利要求8所述的系统,其特征在于,
所述预设的阈值基于系统延迟和所需缓存的音频数据量来确定。
10.根据权利要求1所述的系统,其特征在于,
每个环形缓冲区包括N个存储单元,编号依次为1,2,3…N-1,N,当读指针和写指针指向第n个存储单元时,读指针值和写指针值为n,n的取值范围为1到N;
若环形缓冲区当前读指针值≤当前写指针值,且当前写指针值-当前读指针值=M,M为预设的写保护阈值,M≥0,则暂停向所述环形缓冲区域写入数据;
若环形缓冲区当前读指针值≥当前写指针值,且当前读指针值-当前写指针值=R,R为预设的读保护阈值,R≥0,则暂停从所述环形缓冲区域读取数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311589808.3A CN117312200B (zh) | 2023-11-27 | 2023-11-27 | 基于环形缓冲区的多通道数据dma系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311589808.3A CN117312200B (zh) | 2023-11-27 | 2023-11-27 | 基于环形缓冲区的多通道数据dma系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117312200A CN117312200A (zh) | 2023-12-29 |
CN117312200B true CN117312200B (zh) | 2024-02-02 |
Family
ID=89286790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311589808.3A Active CN117312200B (zh) | 2023-11-27 | 2023-11-27 | 基于环形缓冲区的多通道数据dma系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117312200B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117640511B (zh) * | 2024-01-25 | 2024-03-29 | 无锡沐创集成电路设计有限公司 | 一种有线通信系统及其通信芯片、通信方法及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5121390A (en) * | 1990-03-15 | 1992-06-09 | International Business Machines Corporation | Integrated data link controller with synchronous link interface and asynchronous host processor interface |
US6226338B1 (en) * | 1998-06-18 | 2001-05-01 | Lsi Logic Corporation | Multiple channel data communication buffer with single transmit and receive memories |
CN102541779A (zh) * | 2011-11-28 | 2012-07-04 | 曙光信息产业(北京)有限公司 | 一种提高多数据缓冲区dma效率的系统和方法 |
CN103064808A (zh) * | 2011-10-24 | 2013-04-24 | 北京强度环境研究所 | 优先级可调多通道dma控制器 |
CN110704335A (zh) * | 2019-09-03 | 2020-01-17 | 苏州浪潮智能科技有限公司 | 一种基于异步环形缓冲区的数据读取、写入方法及装置 |
CN113709495A (zh) * | 2021-08-24 | 2021-11-26 | 天津津航计算技术研究所 | 一种基于pcie缓冲机制的同步解码方法 |
CN115048047A (zh) * | 2022-05-30 | 2022-09-13 | 蚂蚁区块链科技(上海)有限公司 | 一种数据处理系统和方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050223131A1 (en) * | 2004-04-02 | 2005-10-06 | Goekjian Kenneth S | Context-based direct memory access engine for use with a memory system shared by devices associated with multiple input and output ports |
US20060129714A1 (en) * | 2004-12-10 | 2006-06-15 | Fujitsu Limited | Method and apparatus for transferring data |
FR2913785B1 (fr) * | 2007-03-13 | 2009-06-12 | St Microelectronics Sa | Gestion de memoire tampon circulaire |
JP5357333B2 (ja) * | 2010-06-11 | 2013-12-04 | パナソニック株式会社 | データ転送制御装置とその集積回路とデータ転送制御方法、データ転送終了通知装置とその集積回路とデータ転送終了通知方法、およびデータ転送制御システム |
US20230185745A1 (en) * | 2021-12-13 | 2023-06-15 | Cryptography Research, Inc. | Data flow control module for autonomous flow control of multiple dma engines |
-
2023
- 2023-11-27 CN CN202311589808.3A patent/CN117312200B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5121390A (en) * | 1990-03-15 | 1992-06-09 | International Business Machines Corporation | Integrated data link controller with synchronous link interface and asynchronous host processor interface |
US6226338B1 (en) * | 1998-06-18 | 2001-05-01 | Lsi Logic Corporation | Multiple channel data communication buffer with single transmit and receive memories |
CN103064808A (zh) * | 2011-10-24 | 2013-04-24 | 北京强度环境研究所 | 优先级可调多通道dma控制器 |
CN102541779A (zh) * | 2011-11-28 | 2012-07-04 | 曙光信息产业(北京)有限公司 | 一种提高多数据缓冲区dma效率的系统和方法 |
CN110704335A (zh) * | 2019-09-03 | 2020-01-17 | 苏州浪潮智能科技有限公司 | 一种基于异步环形缓冲区的数据读取、写入方法及装置 |
CN113709495A (zh) * | 2021-08-24 | 2021-11-26 | 天津津航计算技术研究所 | 一种基于pcie缓冲机制的同步解码方法 |
CN115048047A (zh) * | 2022-05-30 | 2022-09-13 | 蚂蚁区块链科技(上海)有限公司 | 一种数据处理系统和方法 |
Non-Patent Citations (1)
Title |
---|
"基于双指针环形缓冲区的数据采集系统设计";杨泽林等;《仪表技术与传感器》(第11期);67-69 * |
Also Published As
Publication number | Publication date |
---|---|
CN117312200A (zh) | 2023-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9128925B2 (en) | System and method for direct memory access buffer utilization by setting DMA controller with plurality of arbitration weights associated with different DMA engines | |
CN117312200B (zh) | 基于环形缓冲区的多通道数据dma系统 | |
US5502833A (en) | System and method for management of a predictive split cache for supporting FIFO queues | |
JP5789894B2 (ja) | バッファマネージャおよびメモリ管理方法 | |
CN112084136B (zh) | 队列缓存管理方法、系统、存储介质、计算机设备及应用 | |
US7461214B2 (en) | Method and system for accessing a single port memory | |
US20060184737A1 (en) | Data stream generation method for enabling high-speed memory access | |
CN102841869B (zh) | 一种基于fpga的多通道i2c控制器 | |
WO2014063599A1 (zh) | 一种用于以太网设备的数据缓存系统及方法 | |
US8914571B2 (en) | Scheduler for memory | |
US20060161757A1 (en) | Dynamic allocation of a buffer across multiple clients in a threaded processor | |
US6912716B1 (en) | Maximized data space in shared memory between processors | |
KR20030053445A (ko) | 데이터 손실없는 버퍼 분할 방법 및 장치 | |
US7865632B2 (en) | Memory allocation and access method and device using the same | |
US7346722B2 (en) | Apparatus for use in a computer systems | |
US11144473B2 (en) | Quality of service for input/output memory management unit | |
US7861012B2 (en) | Data transmitting device and data transmitting method | |
US10740256B2 (en) | Re-ordering buffer for a digital multi-processor system with configurable, scalable, distributed job manager | |
US20230136539A1 (en) | Bridging module, data transmission system, and data transmission method | |
US20020078267A1 (en) | Scheduler for a data memory access having multiple channels | |
US11546276B2 (en) | Communication input-output device | |
CN112306927B (zh) | 一种io请求的处理方法、装置及系统 | |
US7899957B1 (en) | Memory controller having a buffer for providing beginning and end data | |
GB2389206A (en) | Cache control using queues to buffer requests and data | |
US20200293233A1 (en) | Apparatus and method for providing data to a master device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |