一种基于Navigator的多核嵌入式DSP并行编程模型实现方法

文档序号:8498593阅读:727来源:国知局
一种基于Navigator的多核嵌入式DSP并行编程模型实现方法
【技术领域】
[0001]本发明涉及多核嵌入式系统的并行编程领域,具体是一种基于Navigator的多核嵌入式DSP并行编程模型实现方法。
【背景技术】
[0002]随着嵌入式技术的飞速发展,嵌入式处理需求也在快速增长,在集成电路技术飞速发展的今天,多核技术在嵌入式系统中的应用已经越来越广泛。在嵌入式系统中使用多处理器共同协作完成任务,能够实现系统的多任务调度和实时性等,具有重要的意义。而多核嵌入式系统也已经成为当前主要的计算平台,无论桌面应用、移动应用、服务器还是专用嵌入式平台都采用多核结构。
[0003]当前随着多核技术的主流化,对并行计算体系结构、并行算法、并行编程模型以及并行应用都产生了重要的影响。在多核嵌入式系统中,传统的基于单线程的程序设计方法显然无法充分利用多核CPU的计算能力,必须以并行计算的思维方式来设计算法,将多核嵌入式平台的硬件优势和并行程序设计方法结合起来,获得更高的程序性能。因此,如何有效的将并行编程模型和嵌入式多核处理器结合在一起,是如今发展和研宄的重点和热点问题之一。也就是说,找到一种能够结合并行编程模型和嵌入式多核处理器的实现方法是十分必要的。
[0004]申请号为CN201010124991.6的发明专利公开了一种面向众核环境的分治映射/归约并行编程模型。该发明通过分治映射/归约并行编程模型、主存复用以及流水线执行技术等,完成对海量数据的分块处理,优化众核环境的资源使用。但是该发明主要是针对多处理器的应用,并没有详细说明在单处理上如何对多核进行调度,同时没有说明多处理间所使用的通信机制。
[0005]申请号为CN201010166248.7的发明专利公开了以一种针对嵌入式多核系统的视频编码流水化并行方法。该发明根据节点运算量和节点间的依赖关系,选择处理器负载均衡、核间通信量少的流水并行划分方案,根据该方案,对任务节点进行对象化封装,映射到相应的处理器核上,实现流水化并行执行。但是该发明只是针对基于多核系统的流水线并行,并没有采用并行编程模型,仅仅使用了多核作为任务节点,并没有充分利用嵌入式多核处理器中的多种硬件资源。
[0006]因此,本发明提出了一种充分利用多核嵌入式DSP中硬件资源实现并行编程模型的方法。

【发明内容】

[0007]本发明的目的在于提供一种基于Navigator的多核嵌入式DSP并行编程模型实现方法,通过使用嵌入式处理器上的软件组件Navigator,充分利用其各种硬件资源,实现并行编程模型。
[0008]为实现上述目的,本发明提供如下技术方案:
基于Navigator的多核嵌入式DSP并行方法,包括以下内容:
DTI推出的KeyStone架构中包含软件组件Multicore Navigator,通过该组件实现设备构件间的数据管理以及同步通信。
[0009]Multicore Navigator (简称Navigator)是一种硬件机制,帮助实现数据的移动和多核间的协同工作。主要提供核间、网络间以及外设间的通信,包括数据和消息交换,发送消息后,不再处理与该消息相关的操作,也就是说在发送消息后,发送方不管消息是否已经被接收。简单的说,就是只需要载入数据,其余操作都由系统负责完成,无需CPU的干预。Navigator 主要由 Queue Manager Subsystem (QMSS)和多个 Packet DMA (PKTDMA)组成。
[0010]Queue Manager是一个负责对队列进行加速管理的一个硬件模块。其中包括8192个队列、20个内存区域和2个Linking RAM,不同的队列号用途不一样。通过向模块中一个特定的被映射的位置写入32位的描述符(Descriptor)地址,可以将一个包(一个描述符和负载的逻辑组合)加入队列中。相反地,从此队列的相同位置读值,则可以完成包出队。
[0011]描述符(Descriptor)是在核间移动的带有信息和数据的消息。描述符有两种类型,宿主(Host)描述符和整体(Monolithic)描述符。宿主描述符更加灵活,描述符的长度即为所有负载的和,带有一个指针指向负载,可以多个宿主描述符链接使用。而整体描述符没有宿主描述符灵活,本身不能链接其他描述符,所有的负载缓冲大小相同,这样在具体的使用过程中易于造成内存空间的浪费。
[0012]所有的描述符存储在内存区域中,Navigator提供20个内存区域供描述符存储,单个描述符的大小最大支持512KB。每一个内存区域的大小相同,而且每个区域中的描述符大小也相同,但是两个内存区域中的描述符大小可以不同。内存区域按照16字节对齐,且其中描述符的大小也必须是16字节的倍数。而描述符在队列中的索引由Linking RAM实现。入队时,只需要将描述符的地址压入队列中,Linking RAM会将地址转换为索引。而出队时,也是通过已知的索引值重新获取描述符的地址。
[0013]PKTDMA即是一种DMA,它的数据目的地是由一个目的队列和空队列的队列索引决定的,而不是一个绝对的内存地址。在接收模式下,PKTDMA取出一个空描述符,遍历描述符找到缓存,PKTDMA将负载数据放入缓存中,然后将描述符放入目的队列中。在传输模式下,PKTDMA从队列中弹出描述符,遍历描述符,从缓存中读取负载数据,然后将负载数据传送到发送端口。
[0014]PKTDMA主要负责数据的移动。PKTDMA包括多条Rx DMA通道,多条Tx DMA通道和多条Rx flow通道。
[0015]128位的Tx输出和128位的Rx输入形成两条对称流,且相互独立。因为传送是基于包(一个描述符和负载的逻辑组合)的,所以无需关心负载的格式。Tx通过查看描述符中的信息判断如何处理这个包,而Rx使用flow。flow就是一个指令集,告诉Rx DMA如何处理接收到的包。Rx channel和Rx flow之间没有关系,有对应关系的是Rx packet和Rxflow。Rx flow主要定义接收端的行为。
[0016]通过一个DSP的任务或者其他硬件操作,将一个描述符放进Tx队列中,完成描述符的入队操作后,触发Tx DMA进行包的传输;而对应于Rx DMA,由数据流触发操作,接收数据包后如何处理需要根据配置的Rx flow。其中,需要注意的是,放入Tx队列的描述符,是从Tx free队列中取出的空描述符,在该空描述符中加入数据后,放入Tx队列中,最后当发送完毕后,在Tx完成队列中会有相应的描述符,需要将这个描述符进行回收;此外,针对Rx队列也是相同的操作。
[0017]2)将KeyStone架构下多核嵌入式处理器的DSP核划分为主核和从核,所述的主核完成整个应用的初始化以及必须执行且只能执行一次的操作;所述的从核执行必要的初始化操作。
[0018]多核嵌入式处理器一般多采用KeyStone架构的同构或异构处理器,且处理器上DSP核的数量至少为8个,其中,将核O作为主核,除核O外的其他核作为从核。
[0019]作为主核的核O完成整个应用的初始化以及必须执行且只能执行一次的操作。该初始化流程中主要包括对Navigator的初始化操作,以及对并行编程模型中环境变量的初始化操作。首先需要对QMSS和PKTDMA进行初始化和启动;其次,配置QMSS中使用的内存区域,包括内存区域的基地址、大小以及描述符数量等;然后,对描述符进行初始化,设置描述符的类型、数量、所属内存区域以及存储该描述符的队列;最后打开QMSS中的发送和接收队列。作为从核,也需要完成部分初始化操作,主要是QMSS的启动操作以及队列的打开。在初始化流程中,QMSS的初始化、PK
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1