CN116010046A - 一种基于多核dsp并行运算的控制方法及系统 - Google Patents
一种基于多核dsp并行运算的控制方法及系统 Download PDFInfo
- Publication number
- CN116010046A CN116010046A CN202211582426.3A CN202211582426A CN116010046A CN 116010046 A CN116010046 A CN 116010046A CN 202211582426 A CN202211582426 A CN 202211582426A CN 116010046 A CN116010046 A CN 116010046A
- Authority
- CN
- China
- Prior art keywords
- core
- interrupt
- queue
- inter
- core2
- 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.)
- Pending
Links
Images
Classifications
-
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于多核DSP并行运算的控制方法及系统,包括:中断步骤:在核完成运算后,将中断寄存器中接收核对应的标志位置位,将核间中断ID号赋值后写入中断寄存器,产生核间中断并发送给接收核;接收核间中断的接收核实时清除中断寄存器中的对应标志位,并获取对应核间中断ID号后使用if判断;队列管理步骤:在核完成运算后,将队列元素存入队列中;等待中断步骤完成后,接收核从对应队列中取出队列元素,以此从内存中取出对应数据并处理;内存管理步骤:申请核运算所需的缓存数据地址,或者释放指定的缓存数据地址;运算管理步骤:判断核运算完成情况,并设置对应运算的运行状态。本发明能够提高并行运算的运算效率,降低开发成本。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种基于多核DSP并行运算的控制方法及系统。
背景技术
多核DSP的运算根据核的使用情况可分为串行运算和并行运算两种运算方式。相比较串行运算,并行运算较为复杂,需对每个内核内存使用及各个核的运行机制进行详细设计,其中各个核间的数据交互和通讯则尤为重要。
目前多核DSP核间通讯方式是调用芯片厂家相关库进行核间通讯,设计较为复杂且进行了封装,集成度高,存在使用灵活性差,占用内存较多,运行机制不清晰等问题,同时对于在不同场景使用没有详细的说明,导致开发效率不高。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种基于多核DSP并行运算的控制方法及系统,以实现简单快速高效的开发,提高并行运算的运算效率,降低开发成本。
为解决上述技术问题,本发明提出的技术方案为:
一种基于多核DSP并行运算的控制方法,包括以下步骤:
中断步骤,包括:在多核DSP的任一核完成运算后,将中断寄存器中接收核对应的标志位置位,并给核间中断ID号赋值后写入中断寄存器,产生核间中断并发送给接收核;接收核在接收核间中断后,实时清除中断寄存器中的对应标志位,实时获取中断寄存器中的对应核间中断ID号并使用if判断;
队列管理步骤,包括:在多核DSP的任一核完成运算后,将运算结果对应的队列元素存入队列中;等待中断步骤完成后,接收核从对应的队列中取出队列元素,根据队列元素从内存中取出对应数据并处理;
内存管理步骤,包括:在内存中申请多核DSP的任一核运算所需的缓存数据地址,或者将内存中指定的缓存数据地址释放;
运算管理步骤,包括:判断多核DSP的任一核运算完成情况,并设置对应运算的运行状态。
进一步的,所述队列管理步骤还包括:将指定的队列元素加入到队列尾部,或者从指定的队列中选取队列头部的队列元素,并移除或保留选取的队列元素。
进一步的,所述队列元素包括数据类型、数据起始地址和长度。
进一步的,包括并行运算结果通过接收核发送的步骤,具体包括:
核2和核3运算前,执行内存管理步骤,为核2和核3分别在内存的空闲空间中申请对应的缓存数据地址;
核2和核3运算完成后,运算结果分别保存在核2和核3对应的缓存数据地址中,执行队列管理步骤,将核2和核3的运算结果对应的队列元素存入队列中;
执行中断步骤,将核2和核3对应的核间中断ID号写入中断寄存器,并将中断寄存器中第二核的核0对应的标志位置位,产生核间中断并发送给核0;
核0接收核间中断后,从对应的队列中取出队列元素,根据队列元素从内存中取出对应数据并进行数据处理和发送;
执行内存管理步骤,释放核2和核3对应的缓存数据地址。
进一步的,还包括将外部数据发送给接收核并行运算的步骤,具体包括:
核1获取的外部数据保存在预先执行内存管理步骤申请的本次缓存数据地址中;
执行运算管理步骤,判断第二核的核2和核3的运算状态,若核2或核3为空闲状态,执行内存管理步骤,在内存的空闲空间中申请下次缓存数据地址,若核2和核3均为繁忙状态,执行运算管理步骤,继续判断第二核的核2和核3的运算状态,直到核2或核3为空闲状态;
执行队列管理步骤,将核1获取的外部数据对应的队列元素存入队列中;
执行运算管理步骤,将空闲状态的核2或核3设置为繁忙状态,执行中断步骤,将核1对应的核间中断ID号写入中断寄存器,并将中断寄存器中核2或核3对应的标志位置位,产生核间中断并发送给核2或核3;
核2或核3接收核间中断后,从对应的队列中取出队列元素,根据队列元素从内存中取出对应数据并进行运算;
执行内存管理步骤,释放本次缓存数据地址,执行运算管理步骤,将运算完成的核2或核3设置为空闲状态。
本发明还提出一种基于多核DSP并行运算的控制系统,包括:
中断模块,用于在多核DSP的任一核完成运算后,将中断寄存器中接收核对应的标志位置位,并给核间中断ID号赋值后写入中断寄存器,产生核间中断并发送给接收核;
队列管理模块,用于在多核DSP的任一核完成运算后,将运算结果对应的队列元素存入队列中;
内存管理模块,用于在内存中申请多核DSP的任一核运算所需的缓存数据地址,或者将内存中指定的缓存数据地址释放,或者将指定的队列元素加入到队列尾部,或者从指定的队列中选取队列头部的队列元素,并移除或保留选取的队列元素;
运算管理模块,用于判断多核DSP的任一核运算完成情况,并设置对应运算的运行状态。
进一步的,所述队列管理模块、内存管理模块、运算管理模块之间的数据访问互斥。
与现有技术相比,本发明的优点在于:
本发明为多核DSP并行运算的控制分别配置了执行中断步骤的中断模块、执行队列管理步骤的队列管理模块、执行内存管理步骤的内存管理模块以及执行运算管理步骤的运算管理模块,可以根据实际情况搭配使用,提高了多核DSP核间并行运算的灵活性,理清了多核DSP核间交互机制,适用于多种不同场景应用,提高了多核DSP开发的效率。
附图说明
图1是本发明的模块关系图。
图2是本发明实施例一的流程图。
图3是本发明实施例二的流程图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
为了提高多核DSP开发的灵活性,简化多核DSP开发过程,提高开发效率,我们针对多核DSP并行运算的控制,设计了用于内核间进行通知的核间中断模块(中断模块),用于内核间数据交互的队列管理模块(队列管理模块),用于核运算存放缓存数据地址的内存管理模块(内存管理模块),以及核的运算状态管理模块(运算管理模块),这四个模块根据实际情况只用其中一个,三个或四个模块,极大扩展了适用范围和灵活性,下面对于每个模块进行具体说明:
1.中断模块
中断模块用于执行中断步骤,该步骤具体包括:在多核DSP的任一核完成运算后,将中断寄存器中接收核对应的标志位置位,并给核间中断ID号赋值后写入中断寄存器,产生核间中断并发送给接收核,从而完成核间通知的功能;接收核需开启核间中断接收,在接收核间中断后,实时清除中断寄存器中的对应标志位,实时获取中断寄存器中的对应核间中断ID号,实现不同核不同运算的核间中断的接收。中断模块主要功能划分如下:
a.核间中断初始化;
b.核间中断发送,包括接收核的核号及核间中断ID号;
c.核间中断接收,包括核间中断命令号。
为实现多核同时发送和同时接收核间中断的并行处理,防止出现核间中断丢失,核间中断发送通过如下代码实现:
从上面代码可知,为实现核间中断同时发送,需满足如下两个条件
a.cmd的值必须为2的n次方,这是因为DSP的中断寄存器为一个且为32位,相当于每一位对应一个中断,故为2的n次方才能实现多个中断同时发送,实现了中断的并行处理,若不如此则中断寄存器存在重新赋值的问题;
b.中断发送函数里面必须使用逻辑或置位中断寄存器。
由于存在多个中断同时到来的情况,中断接收可通过如下代码实现:
从上面代码可知,为实现核间中断同时接收,需满足如下两个条件
a.IPC_CORE2_CORE0_TCP和IPC_CORE3_CORE0_TCP作为示例,表示中断定义变量,值必须为2的n次方以实现多个中断同时接收;
b.中断接收函数里面须使用if判断核间中断ID号,可实现两个中断同时到来时的并行及时处理,防止出现核间中断丢失。
2.队列管理模块
队列管理模块用于执行队列管理步骤,该步骤具体包括:在多核DSP的任一核完成运算后,将运算结果对应的队列元素存入队列中,从而完成数据发送的准备;接收核在对应的中断步骤执行完毕后,还用于从对应的队列中取出队列元素,根据队列元素从内存中取出对应数据进行相应的其他处理。队列元素包括数据类型、数据起始地址和长度。在该过程中,运算结果的数据保留在内存中,没有被转移,只是被不同核的进行不同处理,核间需交互数据量极少,提高了系统的实时性,减少了内存的使用。队列管理模块主要功能划分如下:
a.队列管理模块的创建,包括队列元素大小及个数;
b.将指定的队列元素加入到队列尾部;
c.从指定的队列中选取队列头部的队列元素,并移除或保留选取的队列元素。
3.内存管理模块
内存管理模块用于执行内存管理步骤,该步骤具体包括:在内存中申请多核DSP的任一核运算所需的缓存数据地址,管理缓存数据在同一个核或者不同核的获取和释放,实现运算数据在不转移的情况下的快速处理,可将缓存起始地址定义在不同内存地址,提高了灵活性。由于内存管理模块申请内存为固定长度,故可采用较为简单的内存池的方式实现,提高实时性。内存管理模块主要功能划分如下:
a.内存管理模块的初始化,包括缓存起始地址,管理单元个数和管理单元大小;
b.查找并获取内存中当前空闲缓存地址;
c.将内存中指定的缓存数据地址释放;
4.运算管理模块
运算管理模块用于执行运算管理步骤,该步骤具体包括:判断多核DSP的任一核运算完成情况,并设置任一核运算的运行状态,从而实现运算的再分配功能。运算管理模块主要功能划分如下:
a.运算状态管理模块初始化。
b.获取某一运算的完成情况。
c.设置某一运算的运行状态,状态包括空闲或者繁忙。
由于队列管理模块,内存管理模块和运算管理模块涉及到多核间共享数据的读写操作,存在同时读写的问题,本发明的队列管理模块、内存管理模块、运算管理模块之间的数据访问互斥,可以通过关中断、数学算法(如Peterson算法、bakery算法)、系统锁、原子锁等方法实现,在模块内部进行了数据访问互斥处理,实现了核间共享数据的互斥访问,为模块的稳定运行提供了基础。
实施例一
本实施例基于前述的各模块,提出一种基于多核DSP并行运算的控制方法,以应用于多个数据源和一个数据目的地的情形,如图1所示,型号为TMS320C6678的多核DSP中,核2和核3同时进行运算,不定时的得出运算结果数据,需将其通过核0的以太网发送给上位机,因此包括第一核的并行运算结果通过第二核发送的步骤:
A1)第一核的核2和核3运算前,调用内存管理模块执行内存管理步骤,为核2和核3分别在内存的空闲空间中申请对应的缓存数据地址,用于保存运算结果;
A2)核2和核3运算完成后,运算结果分别保存在核2和核3对应的缓存数据地址中,调用队列管理模块执行队列管理步骤,将核2和核3的运算结果对应的队列元素存入队列中,队列元素包括运算结果的数据类型,数据起始地址和长度,队列元素结构体示例如下:
A3)调用中断模块执行中断步骤,将核2和核3对应的核间中断ID号写入中断寄存器,并将中断寄存器中第二核的核0对应的标志位置位,产生核间中断并发送给核0;
A4)核0接收核间中断后,从对应的队列中取出队列元素,具体的,从对应队列的头部获取队列元素(删除队列头),根据队列元素中的数据地址,从内存中取出对应数据并进行数据处理,处理后的数据通过以太网发送给上位机;
A5)调用内存管理模块执行内存管理步骤,释放核2和核3对应的缓存数据地址,从而完成了数据发送的功能。
实施例二
本实施例基于前述的各模块,提出一种基于多核DSP并行运算的控制方法,以应用于一个数据源和多个数据目的地的情形,如图2所示,型号为TMS320C6678的多核DSP中,核1不定时获取到外部接口传到的不定长度的数据,需将其分别发送给核2和核3进行运算,因此包括第一核将数据发送给第二核并行运算的步骤:
B1)第一核的核1获取的外部数据保存在预先调用内存管理模块执行内存管理步骤申请的本次缓存数据地址中;
B2)调用运算管理模块执行运算管理步骤,判断第二核的核2和核3的运算状态,具体的,若核2运行繁忙,则再判断核3运行状态是否繁忙,若核2或核3为空闲状态,调用内存管理模块执行内存管理步骤,在内存的空闲空间中申请下次缓存数据地址,若核2和核3均为繁忙状态,调用运算管理模块执行运算管理步骤,继续判断第二核的核2和核3的运算状态,直到核2或核3为空闲状态;
B3)调用队列管理模块执行队列管理步骤,将核1获取的外部数据对应的队列元素存入队列中,队列元素包括本次的数据地址和长度;
B4)调用运算管理模块执行运算管理步骤,将空闲状态的核2或核3设置为繁忙状态,调用中断模块将核1对应的核间中断ID号写入中断寄存器,并将中断寄存器中核2或核3对应的标志位置位,产生核间中断并发送给核2或核3,从而实现了对核2或核3的任务分配;
B5)核2或核3接收核间中断后,从对应的队列中取出队列元素,根据队列元素的数据地址从内存中取出对应数据并进行运算;
B6)核2或核3运算完成后,调用内存管理模块执行内存管理步骤,释放本次缓存数据地址,调用运算管理模块执行运算管理步骤,将运算完成的核2或核3设置为空闲状态。
至此完成了本次获取的外部数据的运算,后续每次对获取的外部数据进行并行运算则执行步骤B1至B6。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (7)
1.一种基于多核DSP并行运算的控制方法,其特征在于,包括以下步骤:
中断步骤,包括:在多核DSP的任一核完成运算后,将中断寄存器中接收核对应的标志位置位,并给核间中断ID号赋值后写入中断寄存器,产生核间中断并发送给接收核;接收核在接收核间中断后,实时清除中断寄存器中的对应标志位,实时获取中断寄存器中的对应核间中断ID号并使用if判断;
队列管理步骤,包括:在多核DSP的任一核完成运算后,将运算结果对应的队列元素存入队列中;等待中断步骤完成后,接收核从对应的队列中取出队列元素,根据队列元素从内存中取出对应数据并处理;
内存管理步骤,包括:在内存中申请多核DSP的任一核运算所需的缓存数据地址,或者将内存中指定的缓存数据地址释放;
运算管理步骤,包括:判断多核DSP的任一核运算完成情况,并设置对应运算的运行状态。
2.根据权利要求1所述的基于多核DSP并行运算的控制方法,其特征在于,所述队列管理步骤还包括:将指定的队列元素加入到队列尾部,或者从指定的队列中选取队列头部的队列元素,并移除或保留选取的队列元素。
3.根据权利要求1所述的基于多核DSP并行运算的控制方法,其特征在于,所述队列元素包括数据类型、数据起始地址和长度。
4.根据权利要求1所述的基于多核DSP并行运算的控制方法,其特征在于,包括并行运算结果通过接收核发送的步骤,具体包括:
核2和核3运算前,执行内存管理步骤,为核2和核3分别在内存的空闲空间中申请对应的缓存数据地址;
核2和核3运算完成后,运算结果分别保存在核2和核3对应的缓存数据地址中,执行队列管理步骤,将核2和核3的运算结果对应的队列元素存入队列中;
执行中断步骤,将核2和核3对应的核间中断ID号写入中断寄存器,并将中断寄存器中第二核的核0对应的标志位置位,产生核间中断并发送给核0;
核0接收核间中断后,从对应的队列中取出队列元素,根据队列元素从内存中取出对应数据并进行数据处理和发送;
执行内存管理步骤,释放核2和核3对应的缓存数据地址。
5.根据权利要求1所述的一种基于多核DSP并行运算的控制方法,其特征在于,还包括将外部数据发送给接收核并行运算的步骤,具体包括:
核1获取的外部数据保存在预先执行内存管理步骤申请的本次缓存数据地址中;
执行运算管理步骤,判断第二核的核2和核3的运算状态,若核2或核3为空闲状态,执行内存管理步骤,在内存的空闲空间中申请下次缓存数据地址,若核2和核3均为繁忙状态,执行运算管理步骤,继续判断第二核的核2和核3的运算状态,直到核2或核3为空闲状态;
执行队列管理步骤,将核1获取的外部数据对应的队列元素存入队列中;
执行运算管理步骤,将空闲状态的核2或核3设置为繁忙状态,执行中断步骤,将核1对应的核间中断ID号写入中断寄存器,并将中断寄存器中核2或核3对应的标志位置位,产生核间中断并发送给核2或核3;
核2或核3接收核间中断后,从对应的队列中取出队列元素,根据队列元素从内存中取出对应数据并进行运算;
执行内存管理步骤,释放本次缓存数据地址,执行运算管理步骤,将运算完成的核2或核3设置为空闲状态。
6.一种基于多核DSP并行运算的控制系统,其特征在于,包括:
中断模块,用于在多核DSP的任一核完成运算后,将中断寄存器中接收核对应的标志位置位,并给核间中断ID号赋值后写入中断寄存器,产生核间中断并发送给接收核;
队列管理模块,用于在多核DSP的任一核完成运算后,将运算结果对应的队列元素存入队列中;
内存管理模块,用于在内存中申请多核DSP的任一核运算所需的缓存数据地址,或者将内存中指定的缓存数据地址释放,或者将指定的队列元素加入到队列尾部,或者从指定的队列中选取队列头部的队列元素,并移除或保留选取的队列元素;
运算管理模块,用于判断多核DSP的任一核运算完成情况,并设置对应运算的运行状态。
7.根据权利要求4所述的基于多核DSP并行运算的控制系统,其特征在于,所述队列管理模块、内存管理模块、运算管理模块之间的数据访问互斥。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211582426.3A CN116010046A (zh) | 2022-12-09 | 2022-12-09 | 一种基于多核dsp并行运算的控制方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211582426.3A CN116010046A (zh) | 2022-12-09 | 2022-12-09 | 一种基于多核dsp并行运算的控制方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116010046A true CN116010046A (zh) | 2023-04-25 |
Family
ID=86027732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211582426.3A Pending CN116010046A (zh) | 2022-12-09 | 2022-12-09 | 一种基于多核dsp并行运算的控制方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116010046A (zh) |
-
2022
- 2022-12-09 CN CN202211582426.3A patent/CN116010046A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4768386B2 (ja) | 外部デバイスとデータ通信可能なインターフェイスデバイスを有するシステム及び装置 | |
US8676917B2 (en) | Administering an epoch initiated for remote memory access | |
US8112559B2 (en) | Increasing available FIFO space to prevent messaging queue deadlocks in a DMA environment | |
EP3082038A1 (en) | Method, device and system for creating a massively parallelized executable object | |
US9218222B2 (en) | Physical manager of synchronization barrier between multiple processes | |
CN106537367B (zh) | 用于基于代理的多线程消息传递通信的技术 | |
US7827024B2 (en) | Low latency, high bandwidth data communications between compute nodes in a parallel computer | |
CN113918101B (zh) | 一种写数据高速缓存的方法、系统、设备和存储介质 | |
JP2005235228A (ja) | マルチプロセッサシステムにおけるタスク管理方法および装置 | |
WO2018075182A1 (en) | Gpu remote communication with triggered operations | |
JP2003303134A (ja) | コンピュータ処理システム及びコンピュータで実行される処理方法 | |
CN111190842B (zh) | 直接存储器访问、处理器、电子设备和数据搬移方法 | |
CN107562685B (zh) | 一种基于延时补偿的多核处理器核心间数据交互的方法 | |
US20240205170A1 (en) | Communication method based on user-mode protocol stack, and corresponding apparatus | |
US20130176323A1 (en) | Method and apparatus for graphic processing using multi-threading | |
US20110173287A1 (en) | Preventing messaging queue deadlocks in a dma environment | |
CN108829530B (zh) | 一种图像处理方法及装置 | |
US8194678B2 (en) | Providing point to point communications among compute nodes in a global combining network of a parallel computer | |
US11301255B2 (en) | Method, apparatus, device, and storage medium for performing processing task | |
CN112596669A (zh) | 一种基于分布式存储的数据处理方法及装置 | |
CN116010046A (zh) | 一种基于多核dsp并行运算的控制方法及系统 | |
US9437299B2 (en) | Systems and methods for order scope transitions using cam | |
EP4036730A1 (en) | Application data flow graph execution using network-on-chip overlay | |
US20080295120A1 (en) | Asynchronous remote procedure calling method and computer product in shared-memory multiprocessor | |
TWI629638B (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 |