CN109558226A - 一种基于核间中断的dsp多核并行计算调度方法 - Google Patents
一种基于核间中断的dsp多核并行计算调度方法 Download PDFInfo
- Publication number
- CN109558226A CN109558226A CN201811305984.9A CN201811305984A CN109558226A CN 109558226 A CN109558226 A CN 109558226A CN 201811305984 A CN201811305984 A CN 201811305984A CN 109558226 A CN109558226 A CN 109558226A
- Authority
- CN
- China
- Prior art keywords
- core
- data
- buffer
- pointer
- internuclear
- 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 70
- 238000012545 processing Methods 0.000 claims abstract description 35
- 238000005094 computer simulation Methods 0.000 claims abstract description 13
- 238000003860 storage Methods 0.000 claims description 28
- 238000010586 diagram Methods 0.000 claims description 10
- 238000012790 confirmation Methods 0.000 claims description 5
- 239000002131 composite material Substances 0.000 description 7
- 230000003139 buffering effect Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 235000019580 granularity Nutrition 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000005070 sampling 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种基于核间中断的DSP多核并行计算调度方法。该调度方法包括:根据使用的并行计算模型,在源代码中配置核间关系数据结构;在源代码中为核间关系数据结构中的前向缓冲区和后向缓冲区配置缓冲区数据结构;将源代码编译成可执行的二进制文件,并下载到DSP中;DSP运行程序,其中核0通过核间中断控制各个处理周期的开始和结束,并对部分数据进行处理;同时,除核0以外的核按照核间中断的周期进行数据处理。本调度方法能够在不使用任何操作系统的情况下实现DSP的多核并行计算。并支持多种并行计算模型,使得其具有很高的通用性。
Description
技术领域
本发明涉及一种DSP多核并行计算调度方法,尤其涉及一种基于核间中断的DSP多核并行计算调度方法。
背景技术
在DSP(数字信号处理器)领域,目前最为流行的多核并行计算机制是TI公司(Texas Instruments,美国德州仪器)的SYS/BIOS操作系统。这个操作系统对底层的硬件细节进行了封装,极大的降低了使用多核DSP的技术门槛。特别的,TI公司还将并行计算应用程序接口OpenMP移植到了SYS/BIOS操作系统中,使程序员能够较为容易的将原有的单核运行程序转化为多核并行计算的程序。
但是,一些应用领域对处理数据的延时有着苛刻的要求。如果使用操作系统,将很难精确的控制每项计算任务所引起的延时。这在对延时特别敏感、可靠性要求特别高的应用场景中是不满足要求的。例如无线通信技术中,LTE等通信协议规定了物理层在一定的时间之内需要确保将接收到的数据包传递给上层。一旦超时就认为这个数据包传送失败。如果数据包中包含了通信协议中的控制信息,还会导致接下来的一连串数据包接收失败。
此外,在现有文献中(如参考文献[1]杨方,基于TMS320C6678的多核DSP并行处理应用技术研究,北京理工大学硕士论文,2014年6月),针对FFT(快速傅里叶变换)、雷达成像等应用场景开发了专门的并行处理机制,但是这些并行处理机制大都针对具体的计算任务进行了定制化的设计,缺乏通用性,因而很难直接应用到其它计算任务中。例如,上述参考文献[1]中的并行机制只适合于主从模型,而无法实现通信系统中需要的数据流模型。
发明内容
本发明所要解决的技术问题在于提供一种基于核间中断的DSP多核并行计算调度方法。
为了实现上述目的,本发明采用下述技术方案:
一种基于核间中断的DSP多核并行计算调度方法,包括如下步骤:
步骤S1:根据使用的并行计算模型,在源代码中配置核间关系数据结构;
步骤S2:在源代码中为核间关系数据结构中的前向缓冲区和后向缓冲区配置缓冲区数据结构;
步骤S3:将源代码编译成可执行的二进制文件,并下载到DSP中;
步骤S4:DSP运行程序,其中核0通过核间中断控制各个处理周期的开始和结束,并对部分数据进行处理;同时,除核0以外的核按照核间中断的周期进行数据处理。
其中较优地,所述核间关系数据结构用于描述DSP的各个核之间的输入输出关系,所述核间关系数据结构如下:
其中,所述前向核,是指在核间关系连接示意图中与某个核直接相连且位于该核之前的核,所述前向核用于往核间缓冲区写数据;所述后向核,是指在核间关系连接示意图中与某个核直接相连且位于该核之后的核,所述后向核用于从核间缓冲区读数据;前向核/后向核的编号数组中包含了当前核所有的前向核/后向核的编号;前向缓冲区用于存放当前核的输入数据,后向缓冲区用于存放当前核的输出数据;前向/后向缓冲区指针数组中包含了所有指向前向/后向缓冲区的指针;前向/后向缓冲区指针的数量则说明了当前核有多少个前向/后向缓冲区指针。
其中较优地,所述缓冲区数据结构作为前向缓冲区或后向缓冲区,用于放置两个直接相连的核之间的数据,所述缓冲区数据结构如下:
其中,所述数据指针0和所述数据指针1分别用于指向乒乓结构的两块内存区域;所述缓冲区数据长度是指每块内存区域的长度;缓冲区读取指示器用来说明在当前周期内,两块内存区域中的哪一块存放有供读取的数据;缓冲区类型用来说明该缓冲区是否为乒乓结构。
其中较优地,步骤S4中,核0通过核间中断控制各个处理周期的开始和结束,并对部分数据进行处理的过程,包括如下子步骤:
步骤S41:核0向其它所有核发送中断信号,通知这些核开始进行数据处理;
步骤S42:根据核间关系数据结构,获取核0的所有前向核的数量,各个前向核的编号,以及指向各个前向核对应的缓冲区数据结构的指针;
步骤S43:根据所获取的所有前向核的相关信息,读入各个前向核在本周期内的输入数据;
步骤S44:对获取的数据进行处理;
步骤S45:根据核间关系数据结构,获取核0的所有后向核的数量,各个后向核的编号,以及指向各个后向核对应的缓冲区数据结构的指针;
步骤S46:根据所获取的所有后向核的相关信息,写回核0在本周期内的输出数据;
步骤S47:核0查询中断源标志位是否被清除,以此确认其它核是否完成了数据处理;
步骤S48:待所有核都完成数据处理之后,转到步骤S41开始下一个周期的数据处理。
其中较优地,步骤S4中,除核0以外的核按照核间中断的周期进行数据处理的过程,包括如下子步骤:
步骤S41′:收到核0发来的中断信号后,进入中断服务程序;
步骤S42′:确认中断源标志位是否为0;如果不为0,则转到步骤S50′;如果为0,则继续进入下一步;
步骤S43′:检查缓冲区读取指示器的值;如果缓冲区读取指示器等于-1,那么没有输入数据,转到步骤S49′;如果缓冲区读取指示器等于0或1,那么当前周期有输入数据,继续进入下一步;
步骤S44′:根据核间关系数据结构,获取当前核的所有前向核的数量,各个前向核的编号,以及指向各个前向核对应的缓冲区数据结构的指针;
步骤S45′:根据所获取的所有前向核的相关信息,读入各个前向核在本周期内的输入数据;
步骤S46′:对读入的数据进行处理;
步骤S47′:根据核间关系数据结构,获取当前核的所有后向核的数量,各个后向核的编号,以及指向各个后向核对应的缓冲区数据结构的指针;
步骤S48′:根据所获取的所有后向核的相关信息,写回当前核在本周期内的输出数据;
步骤S49′:清除中断源标志位;
步骤S50′:结束中断服务程序。
其中较优地,在根据所获取的所有前向核的相关信息,读入各个前向核在本周期内的输入数据的过程中,依次对每一个前向核执行如下子步骤:
步骤S120:丢弃预取器中的数据以及L1数据缓存中的旧数据;
步骤S121:根据指向缓冲区数据结构的指针,读取到缓冲区数据结构;
步骤S122:根据缓冲区读取指示器的值,找到指向输入数据的数据指针;
步骤S123:丢弃预取器中的数据以及L1数据缓存中的旧数据;
步骤S124:通过数据指针读取输入数据;
步骤S125:判断是否已经遍历所有的前向核;如果否,则转到步骤S120;如果是,则结束。
其中较优地,在根据所获取的所有后向核的相关信息,写回当前核在本周期内的输出数据的过程中,依次对每一个后向核执行如下子步骤:
步骤S210:丢弃预取器中的数据以及L1数据缓存中的旧数据;
步骤S211:根据指向缓冲区数据结构的指针,读取到缓冲区数据结构。
步骤S212:根据缓冲区读取指示器的值,找到指向输出数据的数据指针;
步骤S213:更新缓冲区读取指示器;
步骤S214:对L1数据缓存执行写回的操作;
步骤S215:通过数据指针写回输出数据;
步骤S216:对L1数据缓存执行写回的操作;
步骤S217:判断是否已经遍历所有的后向核;如果否,则转到步骤S210;如果是,则结束。
本发明所提供的基于核间中断的DSP多核并行计算调度方法可以应用于多种并行计算模型中,使得其具有很高的通用性。并且,本调度方法能够在不使用任何操作系统的情况下实现DSP的多核并行计算,解决了现有调度方法使用操作系统后,很难精确的控制每项计算任务所引起的延时的问题。
附图说明
图1为本发明所提供的基于核间中断的DSP多核并行计算调度方法的流程图;
图2为DSP多核并行计算模型中,主从模型的示意图;
图3为DSP多核并行计算模型中,数据流模型的示意图;
图4为DSP多核并行计算模型中,主从模型和数据流模式的复合模式A的示意图;
图5为DSP多核并行计算模型中,主从模型和数据流模式的复合模式B的示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术内容做进一步的详细说明。
如图1所示,本发明所提供的基于核间中断的DSP多核并行计算调度方法包括如下步骤:
步骤S1:根据使用的并行计算模型,在源代码中配置核间关系数据结构;
步骤S2:在源代码中为核间关系数据结构中的前向缓冲区和后向缓冲区配置缓冲区数据结构;
步骤S3:将源代码编译成可执行的二进制文件,并下载到DSP中;
步骤S4:DSP运行程序,其中核0通过核间中断控制各个处理周期的开始和结束,并对部分数据进行处理;同时,除核0以外的核按照核间中断的周期进行数据处理。
其中,DSP具有多个核,不同的核以数字编号相区别(如图2~图5中的每个方框代表一个核)。例如,在图2~图5中,DSP具有8个核,各个核从数字“0”开始按顺序进行编号,分别表示为:核0、核1、核2……核7。其中,多核DSP的并行计算模型主要包括主从模型(如图2所示)、数据流模型(如图3所示)及这两种模型的复合模式(如图4所示的复合模式A和图5所示的复合模式B)。
在使用本基于核间中断的DSP多核并行计算调度方法时,DSP工程师对DSP所要进行的计算任务进行并行性分析,并选择一种最为合适的并行计算模型。
需要强调的是,本基于核间中断的DSP多核并行计算调度方法中,假设DSP的计算任务输入数据的到来是周期性。即DSP一次读入一个周期内需要处理的数据,并在这个周期之内处理完数据,然后在下一个周期再次读取数据,如此周而复始的循环操作。此外,本基于核间中断的DSP多核并行计算调度方法中,还假设DSP的所有核的处理周期是一样的,或者可以等效的认为是一样的。
在本专利中,DSP的各个核的运行时间的分配是在源代码中通过配置数据结构的方式预先指定好的,而不是在运行过程中动态分配的。相应的数据结构包括核间关系数据结构和缓冲区数据结构。其中,核间关系数据结构用于描述DSP的核间输入输出关系,以适应各种不同并行计算模型。该核间关系数据结构如下:
所谓前向核,是指在核间关系连接示意图中与某个核直接相连且位于该核之前的核,前向核用于往核间缓冲区写数据。例如,在图3所示的数据流模型中,核1的前向核为核0,而核0没有前向核。所谓后向核,是指在核间关系连接示意图中与某个核直接相连且位于该核之后的核,后向核用于从核间缓冲区读数据。例如,在图3所示的数据流模型中,核1的后向核为核2,而核7没有后向核。
根据所选取的并行计算模型,可能出现一个核有多个前向核,因此需要用一个数组来表示,即前向核的编号数组。前向核的编号数组中包含了当前核所有的前向核的编号。例如,在图5所示的复合模式B中,核2有两个前向核:核1和核4。同样的,一个核也有可能有多个后向核,因此也需要用一个数组来表示,即后向核的编号数组。后向核的编号数组中包含了当前核所有的后向核的编号。例如,在图5所示的复合模式B中,核0有三个后向核:核1、核4和核5。
从数据输入输出的角度来说,对于当前核而言,前向核是输入,而后向核是输出,需要分别配置缓冲区来存放数据。即前向核负责往核间缓冲区写数据,后向核负责从核间缓冲区读数据。核间关系数据结构(1)只是将指向缓冲区数据结构的指针保存下来,这样本基于核间中断的DSP多核并行计算调度方法就可以根据对应缓冲区的指针来读取相应缓冲区的所有信息。
在本基于核间中断的DSP多核并行计算调度方法中,每个前向核均提供一个输入,所以有多少个前向核,就有多少个前向核的缓冲区的指针。因此需要用一个指针数组来表示,其中包含了所有指向前向缓冲区的指针。类似的,后向缓冲区指针数组包含了所有指向后向缓冲区的指针。前向缓冲区用于存放当前核的输入数据,后向缓冲区用于存放当前核的输出数据。
在具体的编程过程中,一个函数可能会有多个输入参数,也就是说,一个前向核可能提供多于一个输入。在本基于核间中断的DSP多核并行计算调度方法中,认为已经将多个输入参数打包在一起(如使用C语言中的结构)。这样,从形式上来讲,每个前向核均只提供一个输入。对于后向核,也采用类似的方法来确保一个后向核对应一个后向缓冲区。
根据并行计算模型的不同,不同核的前向核/前向缓冲区的数量可能不一样,所以需要一个专门的指示量来说明前向核/前向缓冲区的数量,即前向缓冲区指针的数量。前向缓冲区指针的数量说明了当前核有多少个前向缓冲区指针。值得注意的一点是,一个前向核对应唯一的一个前向缓冲区,但前向缓冲区的数量有可能多于前向核的数量。这种情况发生在连接关系最前面的核节点。对于这些核节点而言,没有前向核,但有前向缓冲区,该前向缓冲区存放的是DSP整个计算任务的输入数据。类似的,对于连接关系最后面的核节点,其后向缓冲区的数量多于后向核的数量,并且该后向缓冲区中存放的是DSP整个计算任务的输出数据。
在核间连接关系中两个直接相连的核是输入-输出关系。一个核的输出是另一个核的输入。由于这两个直接相连的核同时在读、写数据,所以两个核之间的缓冲区需要采用乒乓结构。该缓冲区数据结构如下:
由于两个核之间的缓冲区采用了乒乓结构,所以需要在内存中开辟两块区域分别存放读和写的数据。数据指针0和数据指针1分别指向乒乓结构的这两块内存区域。缓冲区数据长度是指每块内存区域的长度。
在多核DSP并行计算过程中,前向核往其中一块内存区域写数据,后向核则在另一块内存区域读取数据。下一组数据到来的时候,上述前向核和后向核还需要切换内存区域。例如,在第N组数据到达的周期(以下简称周期N),前向核往数据指针0指向的内存区域写数据,后向核则在数据指针1指向的内存区域读数据。到了周期N+1,后向核切换到数据指针0指向的内存区域来读取周期N时前向核写的数据;而数据指针1指向的内存区域中的数据在周期N时已经被后向核所读取,所以前向核可以在此写入周期N+1的数据。可以看到,两块内存区域的读写关系在不断的切换,所以需要一个指示器来说明当前周期哪块区域是用来读数据的,即缓冲区读取指示器。由于用于写数据的区域可以从缓冲区读取指示器推算出,本基于核间中断的DSP多核并行计算调度方法中不再设置专门的缓冲区写入指示器。
通常情况下,缓冲区读取指示器的值为0或1,分别代表数据指针0和数据指针1。在本基于核间中断的DSP多核并行计算调度方法中,缓冲区读取指示器的值还有可能为-1,这表示此时数据指针0和数据指针1所指向的内存区域中都没有合法的数据。例如,在图3的数据流模型中,输入数据从核0到核7一级一级的传递并依次进行处理。在周期1,只有核0有输入数据,其它核都没有输入数据。因此,核1,2,……,7对应的缓冲区读取指示器的值为-1,不进行数据处理。在周期2,数据传递到了核1,此时核0和核1有输入数据,而其它核没有输入数据。因此,核2,3,……,7对应的缓冲区读取指示器的值为-1,不进行数据处理。
需要强调的是,虽然核间连接关系中两个直接相连的核之间的缓冲区需要采用乒乓结构。但对于核间连接关系最前面和最后面的核节点而言,不一定需要采用乒乓结构。不同的计算任务的输入、输出数据的来源千差万别,如ADC(模/数转换器)采样后的数据,网络接口的数据,总线上的数据等。这就使得所需要的缓冲区结构也有所不同。例如,有可能是一个单块的缓冲区。此时只需用数据指针0指向该区域即可。所以还需要设置一个缓冲区类型来说明当前采用的缓冲区是否为乒乓结构。
根据所确定的并行计算模型,在源代码中配置核间关系数据结构和缓冲区数据结构,然后将源代码编译成可执行的二进制代码,并下载到DSP中。DSP在运行编译好的程序时,核0向其它核发送中断信号,并使得除核0以外的核在收到中断信号后进行数据处理。
步骤S4中,由于控制处理周期的开始和结束所需的计算资源很少,为了充分发挥DSP的计算能力,本基于核间中断的DSP多核并行计算调度方法还使用核0进行数据处理。因此,使用核0负责控制各个处理周期的开始和结束,并对部分数据进行处理,包括如下子步骤:
步骤S41:核0向其它所有核发送中断信号,通知这些核开始进行数据处理;
在一个处理周期开始时,核0向除核0以外的核(如核1~核7)发送中断信号,通知除核0以外的核开始进行数据处理。具体的说,当核0向除核0以外的核发送中断信号时,为了保证除核0以外的核能够及时收到中断信号,除核0以外的核平时都处于空转状态。其中较佳的,除核0以外的核空转可以采用无限次循环NOP指令实现。
步骤S42:根据核间关系数据结构,获取核0的所有前向核的数量,各个前向核的编号,以及指向各个前向核对应的缓冲区数据结构的指针;
步骤S43:根据所获取的所有前向核的相关信息,读入各个前向核在本周期内的输入数据;
DSP的各个核在运行的过程中,需要进行读入核间数据的操作。其目的是根据DSP缓冲区数据一致性的要求,读入本周期内需要处理的数据(即下面所述的输入数据)。
根据所获取的所有前向核的相关信息,获取各个前向核的输入数据的过程中,依次对每一个前向核执行如下步骤:
步骤S120:丢弃预取器中的数据以及L1数据缓存中的旧数据;
步骤S121:根据指向缓冲区数据结构的指针,读取到缓冲区数据结构;
步骤S122:根据缓冲区读取指示器的值,找到指向输入数据的数据指针;
步骤S123:丢弃预取器中的数据以及L1数据缓存中的旧数据;
步骤S124:通过数据指针读取输入数据;
步骤S125:判断是否已经遍历所有的前向核;如果否,则转到步骤S120;如果是,则结束。
由于缓冲区数据结构放置于DSP核上自带的4MB多核共享缓存。因此,读取、修改缓冲区数据结构时需要维护数据的一致性。
具体的说,在缓冲区数据结构中,数据指针0、数据指针1、缓冲区数据长度和缓冲区类型在初始化之后就不再修改,但缓冲区读取指示器需要在DSP程序运行过程中不断的更新。例如,假设核A的输出是核B的输入,那么核A通过缓冲区读取指示器找到用于写入数据的指针,核B通过缓冲区读取指示器找到用于读取输入数据的指针。因此,核B在检索缓冲区读取指示器之前,首先要丢弃预取器(prefetch)中的数据以及L1数据缓存中的旧数据,再读取缓冲区数据结构。其中,预取器和L1数据缓存为DSP内部的硬件结构,在此不再赘述。
根据获取的缓冲区数据结构,利用缓冲区读取指示器的值,可以找到指向输入数据的数据指针,再进而通过数据指针读取输入数据。由于DSP具有预取器和数据缓存,多核同时读写数据的时候需要手工维护数据的一致性。由于DSP对核上自带缓存和DDR3内存的处理机制不一致,下面分别讨论。
首先考虑输入输出数据放置于核上自带的4MB多核共享缓存的情况。假设核A的输出是核B的输入。为了确保核B能够读到核A传送过来的数据,核B在读取数据之前,首先要丢弃预取器中的数据以及L1数据缓存中的旧数据,然后再到多核共享缓存中读取数据。
DSP在对缓存进行操作时存在一个最小的颗粒度。丢弃数据时一个颗粒度内的所有数据一起被处理。为了避免不相关的数据受到影响,需要进行核间一致性维护的数据在放置时均要按照这个颗粒度来安排。在C语言中可以通过如下编译指令实现:
#pragma DATA_ALIGN(buffer,CACHE_L1D_LINESIZE);
其中,buffer为需要进行一致性维护的数据。
默认情况下DSP不对DDR3内存中的数据进行缓存。如果将计算任务的输入、输出数据放到DDR3内存,在读取输入数据时,无需对预取器和L1数据缓存进行任何额外操作,直接读取输入数据即可。
步骤S44:对获取的数据进行处理;
核0根据步骤S33获取的当前核的输入数据,进行数据处理。其中数据处理为DSP工程师需要运行的各种方法,如进行音视频压缩和解码等。
步骤S45:根据核间关系数据结构,获取核0的所有后向核的数量,各个后向核的编号,以及指向各个后向核对应的缓冲区数据结构的指针;
步骤S46:根据所获取的所有后向核的相关信息,写回核0在本周期内的输出数据;
根据所获取的所有后向核的相关信息,写回核0的输出数据的过程中,依次对每一个后向核执行如下子步骤:
步骤S210:丢弃预取器中的数据以及L1数据缓存中的旧数据;
步骤S211:根据指向缓冲区数据结构的指针,读取到缓冲区数据结构。
步骤S212:根据缓冲区读取指示器的值,找到指向输出数据的数据指针;
步骤S213:更新缓冲区读取指示器;
步骤S214:对L1数据缓存执行写回的操作;
步骤S215:通过数据指针写回输出数据;
步骤S216:对L1数据缓存执行写回的操作;
步骤S217:判断是否已经遍历所有的后向核;如果否,则转到步骤S210;如果是,则结束。
由于缓冲区数据结构放置于DSP核上自带的4MB多核共享缓存。因此,读取、修改缓冲区数据结构时需要维护数据的一致性。
具体的说,在缓冲区数据结构中,数据指针0、数据指针1、缓冲区数据长度和缓冲区类型在初始化之后就不再修改,但缓冲区读取指示器需要在DSP程序运行过程中不断的更新。例如,假设核A的输出是核B的输入,那么核A通过缓冲区读取指示器找到用于写入数据的指针,核B通过缓冲区读取指示器找到用于读取输入数据的指针。因此,缓冲区读取指示器的更新由核A负责。核A更新缓冲区读取指示器后,要对L1数据缓存执行写回的操作。核B在检索缓冲区读取指示器之前,首先要丢弃预取器中的数据以及L1数据缓存中的旧数据,然后再检索缓冲区读取指示器的值。
根据缓冲区读取指示器的值,可以找到指向输出数据的数据指针,再进而通过数据指针写回输出数据。同样,由于DSP具有预取器和数据缓存,多核同时读写数据的时候需要手工维护数据的一致性。由于DSP对核上自带缓存和DDR3内存的处理机制不一致,下面分别讨论。
首先考虑输入输出数据放置于核上自带的4MB多核共享缓存的情况。假设核A的输出是核B的输入。为了确保核B能够读到核A传送过来的数据,核A在写完输出数据之后,要对L1数据缓存执行写回的操作;
默认情况下DSP不对DDR3内存中的数据进行缓存。如果将计算任务的输入、输出数据放到DDR3内存,在写回输出数据时,也无需对L1数据缓存进行任何额外操作,直接写数据即可。
步骤S47:核0查询中断源标志位是否被清除,以此确认其它核是否完成了数据处理;
步骤S48:待所有核都完成数据处理之后,转到步骤S41开始下一个周期的数据处理。
另外,步骤S4中,除核0以外的核按照核间中断的周期进行数据处理的过程,包括如下子步骤:
步骤S41′:收到核0发来的中断信号后,进入中断服务程序;
除核0以外的核接收到核0发送的中断信号后,会暂停当前程序的运行,转而进入中断函数。
步骤S42′:确认中断源标志位是否为0;如果不为0,则转到步骤S50′;如果为0,则继续进入下一步;
除核0以外的核接收到核0发送的中断信号后,会进入中断函数;并且在中断服务程序运行完之后除核0以外的核可以通过清除中断源标志位的方式来回复核0,从而协调各个核之间的运行。
例如,以C6600系列DSP为例,核间中断为主中断事件(Primary Interrupts),不经过CIC(chip-level interrupt controller,芯片级中断控制器),而是由INTC(CorePacinterrupt controller,核级中断控制器)来处理。该DSP有两组寄存器,IPCGRx(中断生成寄存器)和IPCARx(中断确认寄存器)。核0通过写入IPCGRx来引起核间中断,该条指令会同时修改IPCGRx和IPCARx中的中断源标志位。在本专利中,中断源标志位设为0。除核0以外的核在接收到中断信号之后,先检查IPCARx中的中断源标志位是否为0。这是因为DSP有多个中断源,在进行中断处理之前,需要先确认此次中断确实是本基于核间中断的DSP多核并行计算调度方法所引发的。如果为0,则进行数据处理(如压缩音视频码,解音视频码等)。在处理的过程中,DSP自动关闭中断总开关以避免中断嵌套。在处理完成之后,接收方清除IPCARx中的中断源标志位,并退出中断服务函数。此后,DSP自动打开中断总开关准备迎接下一次中断事件。核0通过查询中断源标志位是否被清除来确认中断接收方是否完成了本周期内数据的处理。
步骤S43′:检查缓冲区读取指示器的值;如果缓冲区读取指示器等于-1,那么没有输入数据,转到步骤S49′;如果缓冲区读取指示器等于0或1,那么当前周期有输入数据,继续进入下一步;
检查缓冲区读取指示器的值,如果缓冲区读取指示器等于0或1,那么当前核在当前周期有输入数据,可以进行数据处理。如果缓冲区读取指示器等于-1,那么当前核在当前周期没有输入数据,则直接清除中断源标志位。
步骤S44′:根据核间关系数据结构,获取当前核的所有前向核的数量,各个前向核的编号,以及指向各个前向核对应的缓冲区数据结构的指针;
步骤S45′:根据所获取的所有前向核的相关信息,读入各个前向核在本周期内的输入数据;
该步骤的实现过程同步骤S43,在此不再赘述。
步骤S46′:对读入的数据进行处理;
除核0以外的核根据步骤S45′获取的当前核的输入数据,进行数据处理。其中数据处理为DSP工程师需要运行的各种方法,如进行音视频压缩和解码等。
步骤S47′:根据核间关系数据结构,获取当前核的所有后向核的数量,各个后向核的编号,以及指向各个后向核对应的缓冲区数据结构的指针;
步骤S48′:根据所获取的所有后向核的相关信息,写回当前核在本周期内的输出数据;
该步骤的实现过程同步骤S46,在此不再赘述。
步骤S49′:清除中断源标志位;
当除核0以外的核完成数据处理后,清除中断源标志位,以便于核0通过查询中断源标志位是否被清除来确认除核0以外的核是否完成了本周期内数据的处理。
步骤S50′:结束中断服务程序。
以上描述了本基于核间中断的DSP多核并行计算调度方法,下面将该调度方法应用在图2~图5所示的应用场景中进行测试。
在主从模型中,最大的加速比等于DSP拥有的核数N。而在其它模型中,由于需要填满流水线和排空流水线,最大加速比通常达不到N。在不考虑本调度方法自身开销的情况下,最大的加速比如下:
其中,K为并行计算模型中流水线的级数,L表示有多少个周期的数据参与了测试。如果长时间测试(即L趋向于无穷大)或者退化到主从模型(即K=1),那么理想加速比等于N。
本调度方法的效率定义为:
表1为测试中各项参数的取值
将表1测试中各项参数的取值带入公式(3),可以得到理想加速比,并通过公式(4)得到本调度方法的效率(参见表2所示)。
表2为将本调度方法应用在DSP开发板上的测试结果
核间关系 | 串行时钟周期 | 并行时钟周期 | 实测加速比 | 理想加速比 | 效率 |
图2 | 71185203 | 9058948 | 7.858 | 8 | 98.2% |
图3 | 571038207 | 88614092 | 6.444 | 6.486 | 99.3% |
图4 | 286350432 | 39857367 | 7.184 | 7.273 | 98.8% |
图5 | 574948834 | 80378348 | 7.153 | 7.273 | 98.3% |
可以看到,本调度方法在各种并行计算模型下的效率均超过了98%。
本发明所提供的基于核间中断的DSP多核并行计算调度方法可以应用于多种并行计算模型中,使得其具有很高的通用性。并且,本调度方法能够在不使用任何操作系统的情况下实现DSP的多核并行计算,解决了现有调度方法使用操作系统后,很难精确的控制每项计算任务所引起的延时的问题。
以上对本发明所提供的基于核间中断的DSP多核并行计算调度方法进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将属于本发明专利权的保护范围。
Claims (7)
1.一种基于核间中断的DSP多核并行计算调度方法,其特征在于包括如下步骤:
步骤S1:根据使用的并行计算模型,在源代码中配置核间关系数据结构;
步骤S2:在源代码中为核间关系数据结构中的前向缓冲区和后向缓冲区配置缓冲区数据结构;
步骤S3:将源代码编译成可执行的二进制文件,并下载到DSP中;
步骤S4:DSP运行程序,其中核0通过核间中断控制各个处理周期的开始和结束,并对部分数据进行处理;同时,除核0以外的核按照核间中断的周期进行数据处理。
2.如权利要求1所述的DSP多核并行计算调度方法,其特征在于:
所述核间关系数据结构用于描述DSP的各个核之间的输入输出关系,所述核间关系数据结构如下:
其中,所述前向核,是指在核间关系连接示意图中与某个核直接相连且位于该核之前的核,所述前向核用于往核间缓冲区写数据;所述后向核,是指在核间关系连接示意图中与某个核直接相连且位于该核之后的核,所述后向核用于从核间缓冲区读数据;前向核/后向核的编号数组中包含了当前核所有的前向核/后向核的编号;前向缓冲区用于存放当前核的输入数据,后向缓冲区用于存放当前核的输出数据;前向/后向缓冲区指针数组中包含了所有指向前向/后向缓冲区的指针;前向/后向缓冲区指针的数量则说明了当前核有多少个前向/后向缓冲区指针。
3.如权利要求2所述的DSP多核并行计算调度方法,其特征在于:
所述缓冲区数据结构作为前向缓冲区或后向缓冲区,用于放置两个直接相连的核之间的数据,所述缓冲区数据结构如下:
其中,所述数据指针0和所述数据指针1分别用于指向乒乓结构的两块内存区域;所述缓冲区数据长度是指每块内存区域的长度;缓冲区读取指示器用来说明在当前周期内,两块内存区域中的哪一块存放有供读取的数据;缓冲区类型用来说明该缓冲区是否为乒乓结构。
4.如权利要求3所述的DSP多核并行计算调度方法,其特征在于:
步骤S4中,核0通过核间中断控制各个处理周期的开始和结束,并对部分数据进行处理的过程,包括如下子步骤:
步骤S41:核0向其它所有核发送中断信号,通知这些核开始进行数据处理;
步骤S42:根据核间关系数据结构,获取核0的所有前向核的数量,各个前向核的编号,以及指向各个前向核对应的缓冲区数据结构的指针;
步骤S43:根据所获取的所有前向核的相关信息,读入各个前向核在本周期内的输入数据;
步骤S44:对获取的数据进行处理;
步骤S45:根据核间关系数据结构,获取核0的所有后向核的数量,各个后向核的编号,以及指向各个后向核对应的缓冲区数据结构的指针;
步骤S46:根据所获取的所有后向核的相关信息,写回核0在本周期内的输出数据;
步骤S47:核0查询中断源标志位是否被清除,以此确认其它核是否完成了数据处理;
步骤S48:待所有核都完成数据处理之后,转到步骤S41开始下一个周期的数据处理。
5.如权利要求3所述的DSP多核并行计算调度方法,其特征在于:
步骤S4中,除核0以外的核按照核间中断的周期进行数据处理的过程,包括如下子步骤:
步骤S41′:收到核0发来的中断信号后,进入中断服务程序;
步骤S42′:确认中断源标志位是否为0;如果不为0,则转到步骤S50′;如果为0,则继续进入下一步;
步骤S43′:检查缓冲区读取指示器的值;如果缓冲区读取指示器等于-1,那么没有输入数据,转到步骤S49′;如果缓冲区读取指示器等于0或1,那么当前周期有输入数据,继续进入下一步;
步骤S44′:根据核间关系数据结构,获取当前核的所有前向核的数量,各个前向核的编号,以及指向各个前向核对应的缓冲区数据结构的指针;
步骤S45′:根据所获取的所有前向核的相关信息,读入各个前向核在本周期内的输入数据;
步骤S46′:对读入的数据进行处理;
步骤S47′:根据核间关系数据结构,获取当前核的所有后向核的数量,各个后向核的编号,以及指向各个后向核对应的缓冲区数据结构的指针;
步骤S48′:根据所获取的所有后向核的相关信息,写回当前核在本周期内的输出数据;
步骤S49′:清除中断源标志位;
步骤S50′:结束中断服务程序。
6.如权利要求4或5所述的DSP多核并行计算调度方法,其特征在于:
在根据所获取的所有前向核的相关信息,读入各个前向核在本周期内的输入数据的过程中,依次对每一个前向核执行如下步骤:
步骤S120:丢弃预取器中的数据以及L1数据缓存中的旧数据;
步骤S121:根据指向缓冲区数据结构的指针,读取到缓冲区数据结构;
步骤S122:根据缓冲区读取指示器的值,找到指向输入数据的数据指针;
步骤S123:丢弃预取器中的数据以及L1数据缓存中的旧数据;
步骤S124:通过数据指针读取输入数据;
步骤S125:判断是否已经遍历所有的前向核;如果否,则转到步骤S120;如果是,则结束。
7.如权利要求4或5所述的DSP多核并行计算调度方法,其特征在于:
在根据所获取的所有后向核的相关信息,写回当前核在本周期内的输出数据的过程中,依次对每一个后向核执行如下子步骤:
步骤S210:丢弃预取器中的数据以及L1数据缓存中的旧数据;
步骤S211:根据指向缓冲区数据结构的指针,读取到缓冲区数据结构。
步骤S212:根据缓冲区读取指示器的值,找到指向输出数据的数据指针;
步骤S213:更新缓冲区读取指示器;
步骤S214:对L1数据缓存执行写回的操作;
步骤S215:通过数据指针写回输出数据;
步骤S216:对L1数据缓存执行写回的操作;
步骤S217:判断是否已经遍历所有的后向核;如果否,则转到步骤S210;如果是,则结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811305984.9A CN109558226B (zh) | 2018-11-05 | 2018-11-05 | 一种基于核间中断的dsp多核并行计算调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811305984.9A CN109558226B (zh) | 2018-11-05 | 2018-11-05 | 一种基于核间中断的dsp多核并行计算调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109558226A true CN109558226A (zh) | 2019-04-02 |
CN109558226B CN109558226B (zh) | 2021-03-30 |
Family
ID=65865852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811305984.9A Expired - Fee Related CN109558226B (zh) | 2018-11-05 | 2018-11-05 | 一种基于核间中断的dsp多核并行计算调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558226B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459872A (zh) * | 2020-04-22 | 2020-07-28 | 中国科学院上海微系统与信息技术研究所 | 一种多核并行计算的快速核间数据同步方法 |
CN112199076A (zh) * | 2020-10-10 | 2021-01-08 | 中国运载火箭技术研究院 | 一种飞行控制软件架构及其设计方法 |
WO2021224739A1 (en) * | 2020-05-06 | 2021-11-11 | International Business Machines Corporation | Utilizing coherently attached interfaces in a network stack framework |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080256382A1 (en) * | 2007-04-12 | 2008-10-16 | International Business Machines Corporation | Method and system for digital frequency clocking in processor cores |
CN103714039A (zh) * | 2013-12-25 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 通用计算数字信号处理器 |
CN104820582A (zh) * | 2015-05-14 | 2015-08-05 | 西安电子科技大学 | 一种基于Navigator的多核嵌入式DSP并行编程模型实现方法 |
CN105045658A (zh) * | 2015-07-02 | 2015-11-11 | 西安电子科技大学 | 一种利用多核嵌入式dsp实现动态任务调度分发的方法 |
-
2018
- 2018-11-05 CN CN201811305984.9A patent/CN109558226B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080256382A1 (en) * | 2007-04-12 | 2008-10-16 | International Business Machines Corporation | Method and system for digital frequency clocking in processor cores |
CN103714039A (zh) * | 2013-12-25 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 通用计算数字信号处理器 |
CN104820582A (zh) * | 2015-05-14 | 2015-08-05 | 西安电子科技大学 | 一种基于Navigator的多核嵌入式DSP并行编程模型实现方法 |
CN105045658A (zh) * | 2015-07-02 | 2015-11-11 | 西安电子科技大学 | 一种利用多核嵌入式dsp实现动态任务调度分发的方法 |
Non-Patent Citations (2)
Title |
---|
W. CHONGWEN,Z. DESHEN: "The Design of TMS320 DSP Simulation and Testing System", 《2010 SECOND WORLD CONGRESS ON SOFTWARE ENGINEERING》 * |
徐松: "基于TMS320C6678 DSP平台的多核导航制导软件设计", 《信息科技辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459872A (zh) * | 2020-04-22 | 2020-07-28 | 中国科学院上海微系统与信息技术研究所 | 一种多核并行计算的快速核间数据同步方法 |
CN111459872B (zh) * | 2020-04-22 | 2023-05-12 | 中国科学院上海微系统与信息技术研究所 | 一种多核并行计算的快速核间数据同步方法 |
WO2021224739A1 (en) * | 2020-05-06 | 2021-11-11 | International Business Machines Corporation | Utilizing coherently attached interfaces in a network stack framework |
GB2610750A (en) * | 2020-05-06 | 2023-03-15 | Ibm | Utilizing coherently attached interfaces in a network stack framework |
US11863469B2 (en) | 2020-05-06 | 2024-01-02 | International Business Machines Corporation | Utilizing coherently attached interfaces in a network stack framework |
CN112199076A (zh) * | 2020-10-10 | 2021-01-08 | 中国运载火箭技术研究院 | 一种飞行控制软件架构及其设计方法 |
CN112199076B (zh) * | 2020-10-10 | 2022-08-09 | 中国运载火箭技术研究院 | 一种飞行控制软件架构及其设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109558226B (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108268278B (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
US10033387B2 (en) | Method apparatus for high-level programs with general control flow | |
CN111512292A (zh) | 用于可配置空间加速器中的非结构化数据流的装置、方法和系统 | |
CN102906726B (zh) | 协处理加速方法、装置及系统 | |
CN103714039B (zh) | 通用计算数字信号处理器 | |
CN111090464B (zh) | 一种数据流处理方法及相关设备 | |
CN108563808A (zh) | 基于fpga的异构可重构图计算加速器系统的设计方法 | |
US20120131309A1 (en) | High-performance, scalable mutlicore hardware and software system | |
CN107346351A (zh) | 用于基于源代码中定义的硬件要求来设计fpga的方法和系统 | |
EP3844620A1 (en) | Method, apparatus, and system for an architecture for machine learning acceleration | |
CN109558226A (zh) | 一种基于核间中断的dsp多核并行计算调度方法 | |
US11782760B2 (en) | Time-multiplexed use of reconfigurable hardware | |
JP2021501947A (ja) | メモリ・ネットワーク・プロセッサ | |
CN110427337A (zh) | 基于现场可编程门阵列的处理器内核及其运行方法 | |
CN112799726A (zh) | 数据处理装置、方法及相关产品 | |
CN111752879B (zh) | 一种基于卷积神经网络的加速系统、方法及存储介质 | |
CN110852930B (zh) | 一种基于OpenCL的FPGA图处理加速方法和系统 | |
CN109446740B (zh) | 一种片上系统架构性能仿真平台 | |
US7409670B1 (en) | Scheduling logic on a programmable device implemented using a high-level language | |
US11467836B2 (en) | Executing cross-core copy instructions in an accelerator to temporarily store an operand that cannot be accommodated by on-chip memory of a primary core into a secondary core | |
CN102629238B (zh) | 支持向量条件访存的方法和装置 | |
KR20220036950A (ko) | 순수 함수 신경망 가속기 시스템 및 아키텍처 | |
CN112559403B (zh) | 一种处理器及其中的中断控制器 | |
US12056506B2 (en) | Access to intermediate values in a dataflow computation | |
US7370311B1 (en) | Generating components on a programmable device using a high-level language |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210330 |
|
CF01 | Termination of patent right due to non-payment of annual fee |