CN107729057A - 一种在多核dsp下的数据块多缓冲流水处理方法 - Google Patents
一种在多核dsp下的数据块多缓冲流水处理方法 Download PDFInfo
- Publication number
- CN107729057A CN107729057A CN201710508679.9A CN201710508679A CN107729057A CN 107729057 A CN107729057 A CN 107729057A CN 201710508679 A CN201710508679 A CN 201710508679A CN 107729057 A CN107729057 A CN 107729057A
- Authority
- CN
- China
- Prior art keywords
- buffer
- input
- data block
- size
- data
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000005111 flow chemistry technique Methods 0.000 title claims abstract description 17
- 239000000872 buffer Substances 0.000 claims abstract description 268
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims abstract description 63
- 238000012545 processing Methods 0.000 claims abstract description 53
- 230000008569 process Effects 0.000 claims abstract description 37
- 230000015654 memory Effects 0.000 claims abstract description 24
- 238000007726 management method Methods 0.000 claims abstract description 17
- 230000001133 acceleration Effects 0.000 claims abstract description 12
- 238000010187 selection method Methods 0.000 claims abstract description 8
- 230000003139 buffering effect Effects 0.000 claims description 151
- 230000005540 biological transmission Effects 0.000 claims description 62
- UJKWLAZYSLJTKA-UHFFFAOYSA-N edma Chemical compound O1CCOC2=CC(CC(C)NC)=CC=C21 UJKWLAZYSLJTKA-UHFFFAOYSA-N 0.000 claims description 40
- 230000006870 function Effects 0.000 claims description 28
- 238000004519 manufacturing process Methods 0.000 claims description 15
- 238000011282 treatment Methods 0.000 claims description 15
- 238000009826 distribution Methods 0.000 claims description 12
- 230000009191 jumping Effects 0.000 claims description 10
- 238000012546 transfer Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 4
- 230000009977 dual effect Effects 0.000 claims description 3
- 230000009467 reduction Effects 0.000 claims description 3
- 239000000126 substance Substances 0.000 claims description 3
- 230000008901 benefit Effects 0.000 abstract description 5
- 238000011161 development Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 8
- 238000003860 storage Methods 0.000 description 6
- 238000004080 punching Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 125000002619 bicyclic group Chemical group 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明一种在多核DSP下的数据块多缓冲流水处理方法,在主控核端和加速核端之间通过请求包队列传输请求,根据任务初始化的请求包,采用多缓冲内存管理方法实现加速核多缓冲内存管理,确定加速核多缓冲模式的设置,当加速核多缓冲模式设置完成后,开始从请求包队列上获取数据块处理请求包,根据多缓冲流水选择方法选择不同的流水线,加速核开始执行数据块流水处理,输入流水线的数据块类型进行数据块的输入、计算和输出,采用灵活的多缓冲内存配置节省了用户设置缓冲区模式的操作,提高了并行开发的效率,数据块灵活设置可保证系统适用于不同粒度的数据并行计算,扩展了并行计算,充分利用了多通道并行传输能力,提升了海量数据并行的性能。
Description
技术领域
本发明属于多核并行计算领域,具体涉及一种在多核DSP下的数据块多缓冲流水处理方法。
背景技术
目前在多核处理器的数据并行处理技术中,数据块的并行处理方法分为两种:基于共享内存模型的并行处理和基于分布式存储模型并行处理。
在共享内存模型中,并行数据块都存储在同一片内存,多核采用共享的方式进行数据交互和同步,多核间没有数据传输开销,但在并行处理数据块时存在总线竞争和多核Cache一致性问题。目前一般采用的方式为设计较为复杂的硬件Cache一致性方法,或使用多核软件优化方法提高系统的并行度。如,专利CN103048245A中设计了基于多核CPU的多缓冲数据调度方法,用于数据预取和与预输出,将输入、计算和输出并行,但该方法还是针对共享存储的多线程模型设计,未能彻底解决多核间的总线竞争问题。因此,在数据块访问频率较高的海量数据并行编程模式下,基于共享内存的数据块并行处理已经不能满足需求,并行编程模式都已转换为基于分布式存储模型的并行处理模式。
在分布式存储模型中,并行数据块通过传输部件传递至本地缓冲,多核在本地处理数据块,避免了总线竞争和多核Cache一致性问题,极大地提高了数据块并行度,但数据块并行处理效率受限于多核处理器的传输带宽及并行传输能力。为了解决该问题,在嵌入式多核处理器上一般采用两种方式:
提高处理的传输带宽和并行传输能力,如Cell BE采用双环四通路并行传输总线、每个加速核具有单独的DMA传输控制器;DSP6678采用高速高带宽桥接互联总线,EDMA具有多通道设计。
计算单元采用双缓冲或多缓冲模型,如CellBE中采用了双缓冲模型来隐藏数据传输延迟,在同一时刻,输入和计算输出作用两个不同的缓冲上,从而实现输入与计算输出的重叠,从而提高并行计算的效率,这些设计虽然从一定程度上提高了并行计算效率,但又带来了以下问题:
由于加速核缓冲区大小有限,双缓冲或多缓冲的使用必然会减小数据块分割粒度,使得系统不能适用于粗粒度的海量数据并行计算,系统配置不够灵活。
多核DSP具有较高的并行传输能力,双缓冲未能充分发挥处理器的传输资源和并行能力,系统并行计算效率未能最大化。
发明内容
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种在多核DSP下的数据块多缓冲流水处理方法,用于在海量数据并行计算的环境下不同粒度的并行计算,充分利用多核并行传输能力,提高海量数据并行计算性能。
本发明采用以下技术方案:
一种在多核DSP下的数据块多缓冲流水处理方法,包括主控核和加速核,所述主控核端和加速核端之间通过请求包队列传输请求,根据任务初始化的请求包,采用多缓冲内存管理方法实现加速核多缓冲内存管理,加速核内存分配,根据该分配原则,确定加速核多缓冲模式的设置,当加速核多缓冲模式设置完成后,开始从请求包队列上获取数据块处理请求包,加速核会根据多缓冲模式,根据多缓冲流水选择方法选择不同的流水线处理方式后,加速核开始执行数据块流水处理,根据数据块流水处理方法,输入流水线的数据块类型进行数据块的输入、计算和输出。
进一步的,所述多缓冲内存管理方法主要在加速核实现,具体步骤如下:
S101、初始化加速核缓冲区,包括任务上下文缓冲区、数据块参数缓冲区、输入数据缓冲区、输出数据缓冲区和重叠缓冲区;
S102、初始化三级流水线结构,包括流水线处理标示、流水线数据块、输入缓冲区、输出缓冲区、重叠缓冲区、输入EDMA通道和输出EDMA通道;
S103、根据任务上下文的大小,分配两个任务上下文缓冲区,用于任务上下文的传输和归约;
S104、判断加速核是否需要完成任务上下文初始化,若需要初始化跳转至S115;若不需要初始化跳转至S116;
S105、调用任务上下文初始化函数,设置任务上下文;
S106、根据数据块参数的大小,分配两个数据块参数缓冲区,用户多缓冲的流水处理;
S107、根据之前分配的缓冲区,计算当前剩余的缓冲区大小,即为数据块缓冲区大小;
S108、判断本次数据并行任务是否需要使用重叠缓冲区,若需要使用跳转至S119;若不需要使用跳转至S113;
S109、根据输入缓冲区大小,设置重叠缓冲区和输出缓冲区偏移量;
S110、判断当前的数据缓冲区大小是否大于两倍的输入、重叠、输出缓冲区大小之和,若大于跳转至S111;若小于跳转至S112;
S111、将数据缓冲区模式设置为重叠双缓冲并跳转至S122;
S112、将数据缓冲区模式设置为重叠单缓冲并跳转至S122;
S113、根据输入缓冲区大小,设置输出缓冲区偏移量;
S114、判断当前的数据缓冲区大小是否大于两倍的输入、输出缓冲区大小之和,若大于跳转至S115,若小于跳转至S116;
S115、将数据缓冲区模式设置为四缓冲并跳转至S122;
S116、判断当前数据缓冲区大小是否大于单倍的输入、输出缓冲区大小之和,若大于跳转至S117;若小于跳转至S118;
S117、将数据缓冲区模式设置为双缓冲并跳转至S122;
S118、判断是否大于输入缓冲区大小且输出缓冲区未设置,若大于且未设置跳转至S119;若小于或者已设置跳转至S120;
S119、将数据块缓冲区模式设置为输入单缓冲并跳转至S122;
S120、判断是否大于输出缓冲区大小且输入缓冲区未设置,若大于且未设置则调整至S121;否则跳转至S122;
S121、将数据块缓冲区模式设置为输出单缓冲;
S122、根据输入、输出和重叠缓冲区的大小,设置缓冲区的起始地址。
进一步的,为了适应不同粒度的海量数据并行编程,合理利用加速核缓冲区,需要根据用户对任务缓冲区的设置,动态分配所述加速核缓冲区,具体为:
根据主控核上设置的不同类型缓冲区大小,根据数据缓冲大小和主控核设置的输入、输出和重叠缓冲区大小,部署多缓冲,其中,所述计算得到任务数据缓冲大小为:
数据缓冲区大小=加速核缓冲区大小–应用函数可执行段大小–2*任务上下文大小–2*数据块参数大小。
进一步的,当计算任务完成一次计算只需一个输入或者一个输出时,系统只需要分配一个缓冲区,此时数据缓冲区为单缓冲,其大小限制为:
输入缓冲区大小<=数据缓冲区大小<2*输入缓冲区大小
输入缓冲区大小<=数据缓冲区大小<2*输入缓冲区大小;
当计算任务完成一次计算需要一个输入和一个输出,但输入和输出都较大时,系统只能分配两个缓冲区,此时数据缓冲区为双缓冲,其大小限制为:
输入缓冲区大小+输出缓冲区大小<=数据缓冲区大小<2*(输入缓冲区大小+输出缓冲区大小);
当计算任务完成一次计算需要一个输入和一个输出,但输入和输出都较小时,系统完成计算时可使用两个输入和输出,此时数据缓冲区为双缓冲,其大小限制为:
2*(输入缓冲区大小+输出缓冲区大小)<=数据缓冲区大小;
当计算任务完成一次计算需要一个输入和一个输出,但输入或输出较大,超过双缓冲限制时,此时数据缓冲区为单重叠缓冲,系统可分配一个重叠缓冲,用作输入或者输出,其大小限制为:
输入缓冲区大小+重叠缓冲区大小+输出缓冲区大小<=数据缓冲区大小<2*(输入缓冲区大小+重叠缓冲区大小+输出缓冲区大小);
当计算任务完成一次计算需要一个输入和一个输出,但输入或输出较大,超过四缓冲限制,未超过双缓冲限制时,此时数据缓冲区为双重叠缓冲,系统可分配两个重叠缓冲,用作输入或者输出,其大小限制为:
2*(输入缓冲区大小+重叠缓冲区大小+输出缓冲区大小)<=数据缓冲区大小。
进一步的,所述多缓冲流水选择方法的具体步骤为:
S201、从请求包队列中获取数据块处理请求;
S202、判断数据块处理请求包是否获取成功,若未成功跳转至任务空闲,等待主控核唤醒;若成功跳转至S203;
S203、判断多缓冲区的类型,若为四缓冲跳转至S204;若为双缓冲跳转至S205;若为单缓冲跳转至S206;若为重叠双缓冲跳转至S207;
S204、调用数据块流水线处理函数直接处理数据,并跳转至S208;
S205、调用数据块流水线处理函数,然后再插入一级空流水,并跳转至S208;
S206、调用数据块流水线处理函数,然后再插入两级空流水,并跳转至S208;
S207、判断当前流水线的处理阶段,若为第一阶段调用数据块流水线处理函数直接处理,并跳转至S208,若为第二阶段调用数据块流水线处理函数后再插入一级空流水,并跳转至S208;
S208、统计已完成处理的数据块个数,并跳转至S201。
进一步的,所述多缓冲流水线处理选择方法包括:
四缓冲模式下,输入、计算和输出可并行,当获取完数据块后直接进行流水处理;
双缓冲模式下,计算和输出使用了同一缓冲区,计算和输出不能并行,当数据块流水处理完成后,需要插入一级空流水;
输入单缓冲模式下,整个计算只涉及输入和计算,输入和计算不能并行,当数据块流水处理完成后,需要插入两级空流水;
输出单缓冲模式下,整个计算只涉及计算和输出,计算和输出不能并行,当数据块流水处理完成后,需要插入两级空流水;
重叠双缓冲模式下,重叠缓冲输入和输出重叠,输入和输出不能并行,当连续两个数据块流水处理完成后,需要插入一级空流水;
重叠单缓冲模式下,输入和输出重叠,整个计算的输入、输出无法并行,当数据块流水处理完成后,需要插入两级空流水。
进一步的,所述数据块流水处理方法通过利用EDMA多通道的并行传输能力,分别为输入和输出分配传输通道,使得数据输入和输出并行,同时再利用多缓冲模式,将数据传输和计算分开,达到三级流水并行,进行数据输入、计算和结果输出处理。
进一步的,所述数据块流水处理方法的具体步骤如下:
S301、根据当前流水线执行的次数,计算当前流水线三个阶段的索引;
S302、根据设定的缓冲区类型,计算输入缓冲区和输出缓冲区和索引号;
S303、判断当前处理的数据块是否为空,若为空跳转至S304,若不为空跳转至S305;
S304、设置一级流水线的处理标示为空,并跳转至S313;
S305、设置一级流水线的处理标示和数据块;
S306、根据之前分配的多缓冲区域和计算的缓冲区索引号,设置一级流水线的数输入缓冲区、输出缓冲区和数据块参数;
S307、根据数据块参数传输列表,将数据块参数拷贝至参数缓冲区中;
S308、判断一级流水线的数据块输入传输列表是否为空,不为空跳转至S309,为空跳转至S310;
S309、获取当前空闲的EDMA传输通道,根据输入传输列表和通道号,启动EDMA进行非等待传输,将数据传输至输入缓冲区;
S310、判断一级流水线的数据块重叠传输列表是否为空,不为空跳转至S311;为空跳转至S312;
S311、获取当前空闲的EDMA传输通道,根据重叠传输列表和通道号,启动EDMA进行非等待传输,将数据传输至重叠缓冲区;
S312、根据缓冲区类型,更新输入缓冲区的索引号,用于设置下一个数据块缓冲区的索引号;
S313、判断三级流水线处理标示是否为空,若不为空则跳转至S314;若为空则跳转至S318;
S314、判断三级流水线的数据块重叠传输列表是否为空,不为空跳转至S315;为空跳转至S316;
S315、获取当前空闲的EDMA传输通道,根据重叠传输列表和通道号,启动EDMA进行非等待传输,将重叠缓冲区中的结果输出至主控核;
S316、判断三级流水线的数据块输出传输列表是否为空,不为空跳转至S317;为空跳转至S318;
S317、获取当前空闲的EDMA传输通道,根据输出传输列表和通道号,启动EDMA进行非等待传输,将输出缓冲区中的结果输出至主控核;
S318、判断二级流水的处理标示是否为空,若不为空跳转至S319;若为空跳转至S320;
S319、直接调用计算函数,将任务上下文、数据块参数、输入缓冲、输出缓冲和重叠缓冲传入函数中,开始计算;
S320、统计数据块流水线执行的次数,并结束处理。
进一步的,所述三级流水并行具体为:设定三级流水线,一级为数据输入,二级为计算,三级为结果输入;判断当前流水线是否有数据块,若有数据块分配输入通道,启动EDMA进行非等待传输;输入启动完成后,查看前两次的流水线中是否有计算结果,若有则分配输出通道,启动EDMA进行非等待传输;输出启动完成后,查看前一次的流水线中是否具有输入,若有数据则开始计算。
与现有技术相比,本发明至少具有以下有益效果:
本发明一种在多核DSP下的数据块多缓冲流水处理方法,在主控核端和加速核端之间通过请求包队列传输请求,根据任务初始化的请求包,采用多缓冲内存管理方法实现加速核多缓冲内存管理,加速核内存分配,根据该分配原则,确定加速核多缓冲模式的设置,当加速核多缓冲模式设置完成后,开始从请求包队列上获取数据块处理请求包,加速核会根据多缓冲模式,根据多缓冲流水选择方法选择不同的流水线处理方式后,加速核开始执行数据块流水处理,根据数据块流水处理方法,输入流水线的数据块类型进行数据块的输入、计算和输出,采用灵活的多缓冲内存配置节省了用户设置缓冲区模式的操作,用户只需简单配置缓冲区大小,系统可自动设置缓冲区模式,提高了并行开发的效率,数据块灵活设置可保证系统适用于不同粒度的数据并行计算,扩展了并行计算应用的范围,多缓冲的数据块的流水处理则充分利用了多通道并行传输能力,提升了海量数据并行的性能。
进一步的,多缓存内存管理方法在加速核实现可解放主控核的内存管理的负担,保证了主控核的调度效率,同时在加速核端实现减少了主控核和加速核的通信开销,提升了系统的计算效率。
进一步的,动态分配加速核缓冲区可充分利用加速核内存资源,在嵌入式环境提升了资源利用率,同时动态分配可适用于不同数据块粒度的并行算法,提升了并行计算的适用范围。
进一步的,多缓冲流水选择方法充分利用了多通道并行传输能力,提升了海量数据并行性能,而且多缓存流水还充分考虑了数据块粒度问题,在不同数据块调度粒度的基础上充分发挥多缓冲的并行传输能力,进一步提高了计算性能。
进一步的,数据块流水处理方法利用了输入传输、输出传输、缓冲区计算的不相关性,将三者并行,充分利用了硬件并行的能力,提升了加速核的计算性能,从而提升了系统整体的并行加速比。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为四缓冲流水线处理示意图;
图2为双缓冲流水线处理示意图;
图3为输入单缓冲流水线处理示意图;
图4为输出单缓冲流水线处理示意图。
图5为重叠双缓冲流水线处理示意图;
图6为重叠单缓冲流水线处理示意图;
图7为海量数据并行框架整体结构示意图;
图8为加速核缓冲区分配图;
图9为加速核多缓冲内存管理流程图;
图10为流水线处理方式选择流程图;
图11为数据块三级流水线处理流程图。
具体实施方式
本发明提供了一种在多核DSP下的数据块多缓冲流水处理方法,采用灵活的多缓冲内存管理方法,多缓冲流水选择方法和数据块流水处理方法,旨在提高多核DSP上的海量数据并行计算性能,利用多缓冲内存管理方法和多核DSP下多路并行传输能力,将双缓冲并行处理扩展为数据块多缓冲流水处理,利用软件流水的思想,将以前双缓冲模式下的两级并行扩展为输入、计算和输出三级流水并行,使得在多核DSP环境下,海量数据并行的应用范围更加广泛,计算效率成倍提升。
请参阅图7,整个海量数据流并行框架分为主控核并行中间件和加速核并行支撑系统,主控核并行中间件和加速核并行支撑系统之间通过请求包队列传输请求。
主控核负责创建海量数据并行调度环境、任务和数据块,完成任务和数据块的调度分配;
加速核负责处理具体的任务和数据块。
请参阅图8和图9,根据任务初始化的请求包,实现加速核多缓冲内存管理,加速核内存分配,根据该分配原则,确定加速核多缓冲模式的设置,多核DSP下的数据块多缓冲流水处理方法主要在加速核端实现,具体步骤如下:
(1)初始化加速核上五个缓冲区的大小,包括任务上下文缓冲区、数据块参数缓冲区、输入数据缓冲区、输出数据缓冲区和重叠缓冲区;
(2)初始化三级流水线结构,包括流水线处理标示、流水线数据块、输入缓冲区、输出缓冲区、重叠缓冲区、输入EDMA通道,输出EDMA通道;
(3)根据任务上下文的大小,分配两个任务上下文缓冲区,用于任务上下文的传输和归约
(4)判断加速核是否需要完成任务上下文初始化,若需要初始化跳转至(5);若不需要初始化跳转至(6);
(5)调用任务上下文初始化函数,设置任务上下文;
(6)根据数据块参数的大小,分配两个数据块参数缓冲区,用户多缓冲的流水处理;
(7)根据之前分配的缓冲区,计算当前剩余的缓冲区大小,即为数据块缓冲区大小;
(8)判断本次数据并行任务是否需要使用重叠缓冲区,若需要使用跳转至(9);若不需要使用跳转至(13);
(9)根据输入缓冲区大小,设置重叠缓冲区和输出缓冲区偏移量;
(10)判断当前的数据缓冲区大小是否大于两倍的输入、重叠、输出缓冲区大小之和,若大于跳转至(11);若小于跳转至(12);
(11)将数据缓冲区模式设置为重叠双缓冲并跳转至(22);
(12)将数据缓冲区模式设置为重叠单缓冲并跳转至(22);
(13)根据输入缓冲区大小,设置输出缓冲区偏移量;
(14)判断当前的数据缓冲区大小是否大于两倍的输入、输出缓冲区大小之和,若大于跳转至(15);若小于跳转至(16);
(15)将数据缓冲区模式设置为四缓冲并跳转至(22);
(16)判断当前数据缓冲区大小是否大于单倍的输入、输出缓冲区大小之和,若大于跳转至(17);若小于跳转至(18);
(17)将数据缓冲区模式设置为双缓冲并跳转至(22);
(18)判断是否大于输入缓冲区大小且输出缓冲区未设置,若大于且未设置跳转至(19);若小于或者已设置跳转至(20);
(19)将数据块缓冲区模式设置为输入单缓冲并跳转至(22);
(20)判断是否大于输出缓冲区大小且输入缓冲区未设置,若大于且未设置则调整至(21);否则跳转至(22);
(21)将数据块缓冲区模式设置为输出单缓冲;
(22)根据输入、输出和重叠缓冲区的大小,设置缓冲区的起始地址。
灵活的多缓冲内存管理方法主要根据数据块的分割粒度,配置加速核缓冲区,设置流水线的多缓冲模式。加速核缓冲区主要定义了任务计算时需要使用的存储资源,包括任务上下文缓冲区、数据块参数缓冲区、输入缓冲区、输出缓冲区和重叠缓冲区,应用函数所使用的输入、输出数据都位于该缓冲区中。
为了适应不同粒度的海量数据并行编程,合理利用加速核缓冲区,需要根据用户对任务缓冲区的设置,动态分配加速核缓冲区,具体步骤如下:
(1)根据主控核上设置的不同类型缓冲区大小,计算任务数据缓冲大小,其计算方式为:
数据缓冲区大小=加速核缓冲区大小–应用函数可执行段大小–2*任务上下文大小–2*数据块参数大小;
(2)根据数据缓冲大小和主控核设置的输入、输出和重叠缓冲区大小,部署多缓冲;
(3)当计算任务完成一次计算只需一个输入或者一个输出时,系统只需要分配一个缓冲区,此时数据缓冲区为单缓冲,其大小限制为:
输入缓冲区大小<=数据缓冲区大小<2*输入缓冲区大小
输入缓冲区大小<=数据缓冲区大小<2*输入缓冲区大小;
(4)当计算任务完成一次计算需要一个输入和一个输出,但输入和输出都较大时,系统只能分配两个缓冲区,此时数据缓冲区为双缓冲,其大小限制为:
输入缓冲区大小+输出缓冲区大小<=数据缓冲区大小<2*(输入缓冲区大小+输出缓冲区大小);
(5)当计算任务完成一次计算需要一个输入和一个输出,但输入和输出都较小时,系统完成计算时可使用两个输入和输出,此时数据缓冲区为双缓冲,其大小限制为:
2*(输入缓冲区大小+输出缓冲区大小)<=数据缓冲区大小;
(6)当计算任务完成一次计算需要一个输入和一个输出,但输入或输出较大,超过双缓冲限制时,此时数据缓冲区为单重叠缓冲,系统可分配一个重叠缓冲,用作输入或者输出,其大小限制为:
输入缓冲区大小+重叠缓冲区大小+输出缓冲区大小<=数据缓冲区大小<2*(输入缓冲区大小+重叠缓冲区大小+输出缓冲区大小);
(7)当计算任务完成一次计算需要一个输入和一个输出,但输入或输出较大,超过四缓冲限制,未超过双缓冲限制时,此时数据缓冲区为双重叠缓冲,系统可分配两个重叠缓冲,用作输入或者输出,其大小限制为:
2*(输入缓冲区大小+重叠缓冲区大小+输出缓冲区大小)<=数据缓冲区大小。
请参阅图10,当加速核多缓冲模式设置完成后,开始从请求包队列上获取数据块处理请求包,加速核会根据多缓冲模式,选择不同的流水线处理方式,具体步骤如下:
(1)从请求包队列中获取数据块处理请求。
(2)判断数据块处理请求包是否获取成功,若未成功跳转至任务空闲,等待主控核唤醒;若成功跳转至(3)。
(3)判断多缓冲区的类型,若为四缓冲跳转至(4);若为双缓冲跳转至(5);若为单缓冲跳转至(6);若为重叠双缓冲跳转至(7)。
(4)调用数据块流水线处理函数直接处理数据,并跳转至(8)。
(5)调用数据块流水线处理函数,然后再插入一级空流水,并跳转至(8)。
(6)调用数据块流水线处理函数,然后再插入两级空流水,并跳转至(8)。
(7)判断当前流水线的处理阶段,若为第一阶段调用数据块流水线处理函数直接处理,并跳转至(8);若为第二阶段调用数据块流水线处理函数后再插入一级空流水,并跳转至(8)。
(8)统计已完成处理的数据块个数,并跳转至(1)。
多缓冲流水线选择方法主要是根据不同的多缓冲模式,选择不同的流水线处理过程。通过分析不同多缓冲模式下的存储资源,确定输入、计算、输出之间的相关性,设置不同的流水线处理方式。多缓冲流水线处理选择方法原理如下:
(1)四缓冲模式下,输入、计算和输出可并行,当获取完数据块后直接进行流水处理,如图1所示。
(2)双缓冲模式下,计算和输出使用了同一缓冲区,计算和输出不能并行,当数据块流水处理完成后,需要插入一级空流水,如图2所示。
(3)输入单缓冲模式下,整个计算只涉及输入和计算,输入和计算不能并行,当数据块流水处理完成后,需要插入两级空流水,如图3所示。
(4)输出单缓冲模式下,整个计算只涉及计算和输出,计算和输出不能并行,当数据块流水处理完成后,需要插入两级空流水,如图4所示。
(5)重叠双缓冲模式下,重叠缓冲输入和输出重叠,输入和输出不能并行,当连续两个数据块流水处理完成后,需要插入一级空流水,如图5所示。
(6)重叠单缓冲模式下,输入和输出重叠,整个计算的输入、输出无法并行,当数据块流水处理完成后,需要插入两级空流水,如图6所示。
请参阅图11,在选择完不同的流水处理方式后,加速核开始执行数据块流水处理,它根据输入流水线的数据块类型,进行数据块的输入、计算和输出,具体步骤如下:
(1)根据当前流水线执行的次数,计算当前流水线三个阶段的索引
(2)根据设定的缓冲区类型,计算输入缓冲区和输出缓冲区和索引号
(3)判断当前处理的数据块是否为空,若为空跳转至(4);若不为空跳转至(5)
(4)设置一级流水线的处理标示为空,并跳转至(13)
(5)设置一级流水线的处理标示和数据块
(6)根据之前分配的多缓冲区域和计算的缓冲区索引号,设置一级流水线的数输入缓冲区、输出缓冲区和数据块参数。
(7)根据数据块参数传输列表,将数据块参数拷贝至参数缓冲区中
(8)判断一级流水线的数据块输入传输列表是否为空,不为空跳转至(9);为空跳转至(10)
(9)获取当前空闲的EDMA传输通道,根据输入传输列表和通道号,启动EDMA进行非等待传输,将数据传输至输入缓冲区。
(10)判断一级流水线的数据块重叠传输列表是否为空,不为空跳转至(11);为空跳转至(12)
(11)获取当前空闲的EDMA传输通道,根据重叠传输列表和通道号,启动EDMA进行非等待传输,将数据传输至重叠缓冲区。
(12)根据缓冲区类型,更新输入缓冲区的索引号,用于设置下一个数据块缓冲区的索引号
(13)判断三级流水线处理标示是否为空,若不为空则跳转至(14);若为空则跳转至(18)
(14)判断三级流水线的数据块重叠传输列表是否为空,不为空跳转至(15);为空跳转至(16)
(15)获取当前空闲的EDMA传输通道,根据重叠传输列表和通道号,启动EDMA进行非等待传输,将重叠缓冲区中的结果输出至主控核。
(16)判断三级流水线的数据块输出传输列表是否为空,不为空跳转至(17);为空跳转至(18)
(17)获取当前空闲的EDMA传输通道,根据输出传输列表和通道号,启动EDMA进行非等待传输,将输出缓冲区中的结果输出至主控核。
(18)判断二级流水的处理标示是否为空,若不为空跳转至(19);若为空跳转至(20)
(19)直接调用计算函数,将任务上下文、数据块参数、输入缓冲、输出缓冲和重叠缓冲传入函数中,开始计算。
(20)统计数据块流水线执行的次数,并结束处理。
数据块流水处理方法主要根据当前流水线输入的数据块,进行数据输入、计算和结果输出处理。通过利用EDMA多通道的并行传输能力,分别为输入和输出分配传输通道,使得数据输入和输出并行,同时再利用多缓冲模式,将数据传输和计算分开,最终达到三级流水并行的效果,其步骤如下:
(1)设定三级流水线,一级为数据输入,二级为计算,三级为结果输入;
(2)判断当前流水线(一级流水)是否有数据块,若有数据块分配输入通道,启动EDMA进行非等待传输;
(3)输入启动完成后,查看前两次的流水线(三级流水)中是否有计算结果,若有则分配输出通道,启动EDMA进行非等待传输;
(4)输出启动完成后,查看前一次的流水线(二级流水)中是否具有输入,若有数据则开始计算。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
Claims (9)
1.一种在多核DSP下的数据块多缓冲流水处理方法,其特征在于,包括主控核和加速核,所述主控核端和加速核端之间通过请求包队列传输请求,根据任务初始化的请求包,采用多缓冲内存管理方法实现加速核多缓冲内存管理,加速核内存分配,根据该分配原则,确定加速核多缓冲模式的设置,当加速核多缓冲模式设置完成后,开始从请求包队列上获取数据块处理请求包,加速核会根据多缓冲模式,根据多缓冲流水选择方法选择不同的流水线处理方式后,加速核开始执行数据块流水处理,根据数据块流水处理方法,输入流水线的数据块类型进行数据块的输入、计算和输出。
2.根据权利要求1所述的一种在多核DSP下的数据块多缓冲流水处理方法,其特征在于,所述多缓冲内存管理方法主要在加速核实现,具体步骤如下:
S101、初始化加速核缓冲区,包括任务上下文缓冲区、数据块参数缓冲区、输入数据缓冲区、输出数据缓冲区和重叠缓冲区;
S102、初始化三级流水线结构,包括流水线处理标示、流水线数据块、输入缓冲区、输出缓冲区、重叠缓冲区、输入EDMA通道和输出EDMA通道;
S103、根据任务上下文的大小,分配两个任务上下文缓冲区,用于任务上下文的传输和归约;
S104、判断加速核是否需要完成任务上下文初始化,若需要初始化跳转至S115;若不需要初始化跳转至S116;
S105、调用任务上下文初始化函数,设置任务上下文;
S106、根据数据块参数的大小,分配两个数据块参数缓冲区,用户多缓冲的流水处理;
S107、根据之前分配的缓冲区,计算当前剩余的缓冲区大小,即为数据块缓冲区大小;
S108、判断本次数据并行任务是否需要使用重叠缓冲区,若需要使用跳转至S119;若不需要使用跳转至S113;
S109、根据输入缓冲区大小,设置重叠缓冲区和输出缓冲区偏移量;
S110、判断当前的数据缓冲区大小是否大于两倍的输入、重叠、输出缓冲区大小之和,若大于跳转至S111;若小于跳转至S112;
S111、将数据缓冲区模式设置为重叠双缓冲并跳转至S122;
S112、将数据缓冲区模式设置为重叠单缓冲并跳转至S122;
S113、根据输入缓冲区大小,设置输出缓冲区偏移量;
S114、判断当前的数据缓冲区大小是否大于两倍的输入、输出缓冲区大小之和,若大于跳转至S115,若小于跳转至S116;
S115、将数据缓冲区模式设置为四缓冲并跳转至S122;
S116、判断当前数据缓冲区大小是否大于单倍的输入、输出缓冲区大小之和,若大于跳转至S117;若小于跳转至S118;
S117、将数据缓冲区模式设置为双缓冲并跳转至S122;
S118、判断是否大于输入缓冲区大小且输出缓冲区未设置,若大于且未设置跳转至S119;若小于或者已设置跳转至S120;
S119、将数据块缓冲区模式设置为输入单缓冲并跳转至S122;
S120、判断是否大于输出缓冲区大小且输入缓冲区未设置,若大于且未设置则调整至S121;否则跳转至S122;
S121、将数据块缓冲区模式设置为输出单缓冲;
S122、根据输入、输出和重叠缓冲区的大小,设置缓冲区的起始地址。
3.根据权利要求2所述的一种在多核DSP下的数据块多缓冲流水处理方法,其特征在于,为了适应不同粒度的海量数据并行编程,合理利用加速核缓冲区,需要根据用户对任务缓冲区的设置,动态分配所述加速核缓冲区,具体为:
根据主控核上设置的不同类型缓冲区大小,根据数据缓冲大小和主控核设置的输入、输出和重叠缓冲区大小,部署多缓冲,其中,所述计算得到任务数据缓冲大小为:
数据缓冲区大小=加速核缓冲区大小–应用函数可执行段大小–2*任务上下文大小–2*数据块参数大小。
4.根据权利要求3所述的一种在多核DSP下的数据块多缓冲流水处理方法,其特征在于,当计算任务完成一次计算只需一个输入或者一个输出时,系统只需要分配一个缓冲区,此时数据缓冲区为单缓冲,其大小限制为:
输入缓冲区大小<=数据缓冲区大小<2*输入缓冲区大小
输入缓冲区大小<=数据缓冲区大小<2*输入缓冲区大小;
当计算任务完成一次计算需要一个输入和一个输出,但输入和输出都较大时,系统只能分配两个缓冲区,此时数据缓冲区为双缓冲,其大小限制为:
输入缓冲区大小+输出缓冲区大小<=数据缓冲区大小<2*(输入缓冲区大小+输出缓冲区大小);
当计算任务完成一次计算需要一个输入和一个输出,但输入和输出都较小时,系统完成计算时可使用两个输入和输出,此时数据缓冲区为双缓冲,其大小限制为:
2*(输入缓冲区大小+输出缓冲区大小)<=数据缓冲区大小;
当计算任务完成一次计算需要一个输入和一个输出,但输入或输出较大,超过双缓冲限制时,此时数据缓冲区为单重叠缓冲,系统可分配一个重叠缓冲,用作输入或者输出,其大小限制为:
输入缓冲区大小+重叠缓冲区大小+输出缓冲区大小<=数据缓冲区大小<2*(输入缓冲区大小+重叠缓冲区大小+输出缓冲区大小);
当计算任务完成一次计算需要一个输入和一个输出,但输入或输出较大,超过四缓冲限制,未超过双缓冲限制时,此时数据缓冲区为双重叠缓冲,系统可分配两个重叠缓冲,用作输入或者输出,其大小限制为:
2*(输入缓冲区大小+重叠缓冲区大小+输出缓冲区大小)<=数据缓冲区大小。
5.根据权利要求1所述的一种在多核DSP下的数据块多缓冲流水处理方法,其特征在于,所述多缓冲流水选择方法的具体步骤为:
S201、从请求包队列中获取数据块处理请求;
S202、判断数据块处理请求包是否获取成功,若未成功跳转至任务空闲,等待主控核唤醒;若成功跳转至S203;
S203、判断多缓冲区的类型,若为四缓冲跳转至S204;若为双缓冲跳转至S205;若为单缓冲跳转至S206;若为重叠双缓冲跳转至S207;
S204、调用数据块流水线处理函数直接处理数据,并跳转至S208;
S205、调用数据块流水线处理函数,然后再插入一级空流水,并跳转至S208;
S206、调用数据块流水线处理函数,然后再插入两级空流水,并跳转至S208;
S207、判断当前流水线的处理阶段,若为第一阶段调用数据块流水线处理函数直接处理,并跳转至S208,若为第二阶段调用数据块流水线处理函数后再插入一级空流水,并跳转至S208;
S208、统计已完成处理的数据块个数,并跳转至S201。
6.根据权利要求5所述的一种在多核DSP下的数据块多缓冲流水处理方法,其特征在于,所述多缓冲流水线处理选择方法包括:
四缓冲模式下,输入、计算和输出可并行,当获取完数据块后直接进行流水处理;
双缓冲模式下,计算和输出使用了同一缓冲区,计算和输出不能并行,当数据块流水处理完成后,需要插入一级空流水;
输入单缓冲模式下,整个计算只涉及输入和计算,输入和计算不能并行,当数据块流水处理完成后,需要插入两级空流水;
输出单缓冲模式下,整个计算只涉及计算和输出,计算和输出不能并行,当数据块流水处理完成后,需要插入两级空流水;
重叠双缓冲模式下,重叠缓冲输入和输出重叠,输入和输出不能并行,当连续两个数据块流水处理完成后,需要插入一级空流水;
重叠单缓冲模式下,输入和输出重叠,整个计算的输入、输出无法并行,当数据块流水处理完成后,需要插入两级空流水。
7.根据权利要求1所述的一种在多核DSP下的数据块多缓冲流水处理方法,其特征在于,所述数据块流水处理方法通过利用EDMA多通道的并行传输能力,分别为输入和输出分配传输通道,使得数据输入和输出并行,同时再利用多缓冲模式,将数据传输和计算分开,达到三级流水并行,进行数据输入、计算和结果输出处理。
8.根据权利要求7所述的一种在多核DSP下的数据块多缓冲流水处理方法,其特征在于,所述数据块流水处理方法的具体步骤如下:
S301、根据当前流水线执行的次数,计算当前流水线三个阶段的索引;
S302、根据设定的缓冲区类型,计算输入缓冲区和输出缓冲区和索引号;
S303、判断当前处理的数据块是否为空,若为空跳转至S304,若不为空跳转至S305;
S304、设置一级流水线的处理标示为空,并跳转至S313;
S305、设置一级流水线的处理标示和数据块;
S306、根据之前分配的多缓冲区域和计算的缓冲区索引号,设置一级流水线的数输入缓冲区、输出缓冲区和数据块参数;
S307、根据数据块参数传输列表,将数据块参数拷贝至参数缓冲区中;
S308、判断一级流水线的数据块输入传输列表是否为空,不为空跳转至S309,为空跳转至S310;
S309、获取当前空闲的EDMA传输通道,根据输入传输列表和通道号,启动EDMA进行非等待传输,将数据传输至输入缓冲区;
S310、判断一级流水线的数据块重叠传输列表是否为空,不为空跳转至S311;为空跳转至S312;
S311、获取当前空闲的EDMA传输通道,根据重叠传输列表和通道号,启动EDMA进行非等待传输,将数据传输至重叠缓冲区;
S312、根据缓冲区类型,更新输入缓冲区的索引号,用于设置下一个数据块缓冲区的索引号;
S313、判断三级流水线处理标示是否为空,若不为空则跳转至S314;若为空则跳转至S318;
S314、判断三级流水线的数据块重叠传输列表是否为空,不为空跳转至S315;为空跳转至S316;
S315、获取当前空闲的EDMA传输通道,根据重叠传输列表和通道号,启动EDMA进行非等待传输,将重叠缓冲区中的结果输出至主控核;
S316、判断三级流水线的数据块输出传输列表是否为空,不为空跳转至S317;为空跳转至S318;
S317、获取当前空闲的EDMA传输通道,根据输出传输列表和通道号,启动EDMA进行非等待传输,将输出缓冲区中的结果输出至主控核;
S318、判断二级流水的处理标示是否为空,若不为空跳转至S319;若为空跳转至S320;
S319、直接调用计算函数,将任务上下文、数据块参数、输入缓冲、输出缓冲和重叠缓冲传入函数中,开始计算;
S320、统计数据块流水线执行的次数,并结束处理。
9.根据权利要求8所述的一种在多核DSP下的数据块多缓冲流水处理方法,其特征在于,所述三级流水并行具体为:设定三级流水线,一级为数据输入,二级为计算,三级为结果输入;判断当前流水线是否有数据块,若有数据块分配输入通道,启动EDMA进行非等待传输;输入启动完成后,查看前两次的流水线中是否有计算结果,若有则分配输出通道,启动EDMA进行非等待传输;输出启动完成后,查看前一次的流水线中是否具有输入,若有数据则开始计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710508679.9A CN107729057B (zh) | 2017-06-28 | 2017-06-28 | 一种在多核dsp下的数据块多缓冲流水处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710508679.9A CN107729057B (zh) | 2017-06-28 | 2017-06-28 | 一种在多核dsp下的数据块多缓冲流水处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107729057A true CN107729057A (zh) | 2018-02-23 |
CN107729057B CN107729057B (zh) | 2020-09-22 |
Family
ID=61201369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710508679.9A Active CN107729057B (zh) | 2017-06-28 | 2017-06-28 | 一种在多核dsp下的数据块多缓冲流水处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107729057B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388609A (zh) * | 2018-09-30 | 2019-02-26 | 中科驭数(北京)科技有限公司 | 基于加速核的数据处理方法和装置 |
CN107729057B (zh) * | 2017-06-28 | 2020-09-22 | 西安微电子技术研究所 | 一种在多核dsp下的数据块多缓冲流水处理方法 |
CN114064588A (zh) * | 2021-11-24 | 2022-02-18 | 建信金融科技有限责任公司 | 存储空间调度方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102761489A (zh) * | 2012-07-17 | 2012-10-31 | 中国科学技术大学苏州研究院 | 基于流水线模式的数据包零拷贝的核间通信方法 |
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
CN103345451A (zh) * | 2013-07-18 | 2013-10-09 | 四川九成信息技术有限公司 | 一种在多核处理器中缓冲数据的方法 |
CN105354012A (zh) * | 2015-12-09 | 2016-02-24 | 浪潮电子信息产业股份有限公司 | 一种多核dsp系统中edma控制器并行控制方法 |
US20160371196A1 (en) * | 2015-06-16 | 2016-12-22 | Electronics And Telecommunications Research Institute | Memory management unit and operating method thereof |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729057B (zh) * | 2017-06-28 | 2020-09-22 | 西安微电子技术研究所 | 一种在多核dsp下的数据块多缓冲流水处理方法 |
-
2017
- 2017-06-28 CN CN201710508679.9A patent/CN107729057B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102761489A (zh) * | 2012-07-17 | 2012-10-31 | 中国科学技术大学苏州研究院 | 基于流水线模式的数据包零拷贝的核间通信方法 |
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
CN103345451A (zh) * | 2013-07-18 | 2013-10-09 | 四川九成信息技术有限公司 | 一种在多核处理器中缓冲数据的方法 |
US20160371196A1 (en) * | 2015-06-16 | 2016-12-22 | Electronics And Telecommunications Research Institute | Memory management unit and operating method thereof |
CN105354012A (zh) * | 2015-12-09 | 2016-02-24 | 浪潮电子信息产业股份有限公司 | 一种多核dsp系统中edma控制器并行控制方法 |
Non-Patent Citations (1)
Title |
---|
杨瑞婕: ""嵌入式多核DSP并行编程模型的设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729057B (zh) * | 2017-06-28 | 2020-09-22 | 西安微电子技术研究所 | 一种在多核dsp下的数据块多缓冲流水处理方法 |
CN109388609A (zh) * | 2018-09-30 | 2019-02-26 | 中科驭数(北京)科技有限公司 | 基于加速核的数据处理方法和装置 |
CN114064588A (zh) * | 2021-11-24 | 2022-02-18 | 建信金融科技有限责任公司 | 存储空间调度方法及系统 |
CN114064588B (zh) * | 2021-11-24 | 2023-04-25 | 建信金融科技有限责任公司 | 存储空间调度方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107729057B (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108363615B (zh) | 用于可重构处理系统的任务分配方法和系统 | |
CN102360309B (zh) | 片上多核异构系统的调度系统与调度执行方法 | |
CN102147722B (zh) | 实现中央处理器和图形处理器功能的多线程处理器及方法 | |
CN103617088B (zh) | 在不同类型线程中分配内核资源的方法、装置及其处理器 | |
CN103336718B (zh) | 一种gpu线程调度优化方法 | |
CN107729057A (zh) | 一种在多核dsp下的数据块多缓冲流水处理方法 | |
CN109739833A (zh) | 一种基于fpga的国产平台数据库加速系统及方法 | |
CN106598731A (zh) | 基于异构多核架构的运行时系统及其控制方法 | |
KR101639853B1 (ko) | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 | |
CN103744716A (zh) | 一种基于当前vcpu调度状态的动态中断均衡映射方法 | |
CN106776024A (zh) | 一种资源调度装置、系统和方法 | |
CN102298567A (zh) | 一种集成中央运算和图形加速的移动处理器架构 | |
CN104142907B (zh) | 增强型处理器、处理方法和电子设备 | |
CN106155814A (zh) | 一种支持多种工作模式的可重构运算单元及其工作方式 | |
US20130207983A1 (en) | Central processing unit, gpu simulation method thereof, and computing system including the same | |
CN107122233A (zh) | 一种面向tsn业务的多vcpu自适应实时调度方法 | |
CN111352727A (zh) | 一种应用于图像混合集群处理系统的图像处理方法 | |
CN106575220A (zh) | 多个经集群极长指令字处理核心 | |
CN107679409A (zh) | 一种数据加密的加速方法和系统 | |
CN103218326B (zh) | 综合仲裁器装置 | |
CN103905484B (zh) | 处理超文本传输协议请求的方法及装置 | |
JP5708003B2 (ja) | 演算処理装置、計算ノード、並列計算機システム、演算処理方法および演算処理プログラム | |
KR20150012311A (ko) | 중간 계층 연산의 병렬 계산에 의해 계산을 가속하기 위한 방법 및 장치 | |
CN107426728A (zh) | 高性能接入认证处理方法、系统、控制器设备、组网装置 | |
CN109298923B (zh) | 深度流水线任务处理方法及装置 |
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 |