您的位置 首页 应用

SHARC并行体系软件设计办法及其程序完成

从系统结构出发可以将并行系统分为共享存储器并行系统和分布存储器并行系统。AD公司推出的SHARC系列DSP芯片同时支持这二种并行处理器结构。通常,将AD公司的一系列双位高性能浮点DSP称为SHARC(

跟着数字信号处理(Digital Signal ProcESSor,DSP)技能的开展,DSP已被广泛应用于雷达、通讯等范畴。尽管DSP阅历了几代的开展,运算速度和才能都有了很大的进步,但在许多状况下,单片DSP现已不能满意实时处理的要求,有必要寻求多片DSP并行处理的计划。

从体系结构动身能够将并行体系分为同享存储器并行体系散布存储器并行体系。AD公司推出的SHARC系列DSP芯片一起支撑这二种并行处理器结构。一般,将AD公司的一系列双位高性能浮点DSP称为SHARC(Super Harvard Architecture)。关于同享存储器体系,经过SHARC间的外部同享总线完结。关于散布存储器体系,经过2个SHARC间的链路口直接衔接,完结DSP间点对点的通讯。

可是,不能认为将多个SHARC相互进行硬件衔接就完结了并行处理。真实的并行处理应该是使互连的各个DSP能够和谐作业,缩短体系处理的时刻。这需求并行体系中SHARC间能完结数据流的传递。并行体系中各个SHARC间数据流的传递同数据处理平等重要。本文针对这二种并行办法,别离给出了软件的规划办法和规划技巧,而且给出了针对ADSP2116X的程序完结。

1 同享存储器并行体系的规划

SHARC为多处理器体系供给了强壮的支撑,用户能够在不附加任何外围电路的状况下构成同享存储器并行体系。SHARC具有一套奇妙的散布式总线裁定机制。运用2~6片SHARC把各SHARC的相应引脚相连就能够同享外部总线。每片SHARC都能够拜访其他SHARC的片内存储器,还能够经过设置IOP寄存器发动其他SHARC的DMA操作。

组成同享存储器并行体系时,每一个SHARC都有一个专一的标识:ID2~0,取值规模为000~110。ID=001标明该SHARC为1号DSP,ID=010标明该SHARC为2号DSP,依此类推。ID=000标明是单DSP体系。在多DSP体系中,ID=001号的DSP是有必要存在的,这是DSP加载成功今后的主处理器。

在同享存储器体系中,任何时刻都只要一片SHARC能够驱动外部总线,该SHARC就被称为主处理器。其他的从SHARC假如需求拜访总线,则有必要先恳求总线。主处理器假如此刻没有数据传递或许总线占用时刻到,就会开释总线操控权,把自己的外部总线驱动为三态,完结总线操控权的搬运。

主处理器对从SHARC的内存拜访和对自己的内存拜访相同简略,既能够经过内核直接读写完结,也能够经过外部口DMA完结。在同享存储器并行体系中,每一片SHARC依据自己的ID号都有一个映射的多处理器存储空间。例如关于ADSP2116X,ID=001的SHARC对应的多处理器存储空间为0x100000~0x1F FFFF,ID=010的SHARC对应的多处理器存储器空间为0x20 0000~0x2F FFFF等。同享存储体系的LDF文件与单DSP体系有些不同。下面给出它的一个示例(以2个SHARC为例)。

例1:同享存储器体系LDF文件。
ARCHITECTURE(ADSP-21160)
SEARCH_DIR($ADI_DSP211xxlib)
MPMEMORY{
DSP1{START(0X100000)}    //榜首片DSP在多处理
//器空间的映射地址
DSP2{START(0X200000)} }   //第二片DSP在多处理
//器空间的映射地址
MEMORY
{pm_rsTI { TYPE(PM RAM)START(0x00040004)END
(0x0004000f)WIDTH(48) }
pm_code { TYPE(PM RAM)START(0x00040100)END
(0x00049fff)WIDTH(48) }
dm_data { TYPE(DM RAM)START(0x00050000)END
(0x00059fff)WIDTH(32) } }
PROCESSOR DSP1
{LINK_AGAINST(DSP2.DXE)    //需求从头衔接的
//DSP2的方针文件
OUTPUT(DSP1.DXE)       //DSP1输出的方针文件
……             //和单DSP体系相同,故省略,下同
}
PROCESSOR DSP2
{LINK_AGAINST(DSP1.DXE)    //需求从头衔接的
//DSP1的方针文件
OUTPUT(DSP2.DXE)        //DSP2输出的方针文件
……
}

这样,这二片DSP便能够经过外部总线拜访对方的内部资源。当DSP1需求直接拜访DSP2中的某一变量时,只需求DSP2将该变量设置为global类型,DSP1就能够在多处理器空间中经过外部总线直接拜访该变量,当然,也能够依据变量的内存地址直接拜访。

在同享存储器并行体系中,当二个SHARC之间经过总线进行数据传递时,假如此刻其他的DSP需求拜访外部总线,则只要挂起等候。这样,在多个DSP间数据交换比较频频时,体系的功率就会大大下降。别的,在同享存储器并行体系中,最多只能有6个DSP相互衔接。假如需求更多的DSP并行作业,同享存储器并行体系便力不从心。选用以下介绍的散布存储器并行体系,能够有用地处理这个问题。

2 散布存储器并行体系的规划

ADSP2116X供给了独立的6个链路口,每个链路口能够完结与其他ADSP2116X或许外围设备点对点的通讯。每个链路口包含8位双向数据线(LxDAT7~0),1个双向时钟信号(LxCLK),1个双向承认信号(LxACK)。可是,链路口没有为发送和接纳供给2套管脚,所以在任何时刻链路口只能作业在单工状况。依托链路口进行双DSP间的数据传递时,只需求把2个DSP的10个管脚对应衔接即可,不需求任何外部附加逻辑。

在ADSP2116X内部有6个链路缓冲器。用户经过界说LAR寄存器,能够为每个链路口挑选一个或几个缓存器。链路缓冲器一端与内部总线相连,另一端经过LAR寄存器与不同的链路口相连。需求留意的是,链路口与链路缓存器是彻底不同的概念。链路缓冲器能够理解为一个双向的FIFO,而链路口只是代表其对外的10个管脚。链路口的特性很大程度上是由其正在运用的缓冲器的特性决议的。

ADSP2116X的链路口发送时钟频率能够经过LCTLx寄存器的LxCLKD位设置(1,1/2,1/3,1/4核时钟频率),链路口数据线依据需求能够挑选为8位或4位。发送方在时钟LxCLK的上升沿送出8/4位码,接纳方运用时钟下降沿锁存8/4位码,而且接纳方使LxACK有用,标明已准备好接纳下一个字。在每个字开端发送时,发送方假如看到LxACK无效,则将LxCLK坚持为高,并等候LxACK有用后才开端发送新字。当发送缓冲为空时,LxCLK将坚持为低电平。
链路口数据传输能够经过DMA办法和内核直接拜访二种办法。DMA办法传输时不需求内核干涉,在传输数据量比较大时功率很高,可是需求首要进行DMA参数设置。当仅有单个数据需求经过链路口传递的状况下,往往不运用DMA办法,而是经过ADSP2116X的内核直接拜访。用户能够经过LCOM寄存器中缓冲器的状况来操控内核对链路口缓冲进行读写操作,也能够经过相应的中止从链路口缓冲器中读写数据,如“DM(LBUF0)=R0;”或许“R0=DM(LBUF0);”等。值得留意的是,无论是企图从一个空的链路缓冲中读,仍是企图向满的缓冲中写,内核的指令都会挂起,直到操作成功停止。因而,内核指令直接读写链路缓存时,需求首要判别链路缓冲状况。

ADSP2116X为每个链路口供给了一个专用的DMA通道,它们别离占用DMA中的4~9通道。链路口的DMA运用十分便利,只需将对应的DMA参数寄存器(IIx,IMx,Cx)设置完毕,使能LCTLx中对应通道的LxDEN即可。在当时DMA完毕(或许链式DMA悉数完毕)后,会触发一个可屏蔽中止告诉用户。发动链路口DMA的次序如下:

(1)由LAR寄存器的AxLB为链路口分配一个LBUFx;
(2)由LCTL寄存器的LxEN使能这个LBUFx,并设置好LCTL操控寄存器;
(3)设置DMA参数(IIy,IMy,Cy);
(4)置位LCTL寄存器的LxDEN,就发动了DMA。
其间:x=0~5,y=4~9。
下面给出一个运用链路口DMA发送数据的示例。

例2:运用链路口0进行数据发送。
.SECTION/dm dm_data;
.VAR trans_data[size];
.SECTION/pm pm_code:
……
r0=0x0002c688;
dm(LAR)=r0;
r9=0x00000229; /*LBUF0使能、发送、8位字宽、核时钟速率*/
dm(LCTL0)=r9;
r0=trans_data;
dm(II4)=r0;  /*需求发送数据的开端地址*/
r0=1;
dm(IM4)=r0;
r0=size;
dm(C4)=r0;
ustat1=dm(LCTL0);
bit set ustat1 L0DEN;  /*发动发送DMA*/
dm(LCTL0)=ustat1;

假如传输的数据不在一段接连的内存区,而是在多段数据块中,能够运用链式DMA链式DMA能够在当时DMA操作完毕后自动从头装备当时通道并开端新的DMA,一切这些操作都不需求内核的干涉。在链式DMA过程中,用户只要对DMA参数装备一次,就能够便利地完结多块数据的DMA传输。

链式DMA是经过CPx寄存器完结的。关于ADSP2116X来说,CPx是一个19位的寄存器。寄存器中低18位标明相关于基地址0x40000的偏移量,用户在这个地址的内部存储器中寄存下一次DMA的参数,这些参数叫做TCB(Transfer Control Blocks)。CPx中的第19位是操控当时链式DMA完结后是否发生中止的PCI位。假如把大局地址赋给CPx,则PCI位一定为1,标明一定会发生中止。

用户只需求在内存区填写多个TCB的表格,用其间的CPx字段将每个表格串起来并将榜首个表格的完毕地址放入CPx寄存器,就能够发动链式DMA。要停止一个链式DMA,只需求把最终一个TCB中的CPx字段填0即可。TCB结构如图1所示。

下面是树立一个链式DMA的次序:

  (1)在片内存储器中树立需求的TCB数据块;
(2)设置DMA参数寄存器,使能相应的LxDEN和LxCHEN;
(3)将榜首个TCB的最终一个地址的偏移量写入CPx寄存器中,即发动了链式DMA。

链路口的数据传递能够依托中止。链路口中止的发生有以下3种状况:
(1)DMA使能时,DMA完结后将发生一个可屏蔽中止。
(2)DMA制止时,发送时LxBUF非满,接纳时LxBUF非空。
(3)外部设备拜访一个未指定的链路口,或许拜访一个已指定但LBUF被制止的链路口时,将发生一个链路服务恳求(LSRQ)中止,且一切的链路口共用一个中止矢量。

前2种状况比较简略,只需求留意:ADSP2116X链路口的中止屏蔽、锁存与ADSP2106X不同,它从IRPTL/IMASK中分离出来,独自存在于寄存器LIRPTL中,而且在IMASK中加了一个链路口中止总开关LPISUMI。假如要使能某个链路口中止,则需求设置3个操控位。例如使能L0BUF中止,需求以下指令:“bit set imask LPISUMI;bit set lirptl LP0MSK;bit set mode1 IRPTEN;”。

关于上面的链路服务恳求中止(LSRQ),在多SHARC通讯时比较有用。经过该中止能够完结运用同一个链路口完结接纳和发送数据的功用,而且在2个SHARC一个自动、另一个被迫的状况下不依托外部逻辑完结2个链路口的数据传递同步。例如SHARC-1需求经过链路口向SHARC-2传送数据,因为SHARC-1自动发送,因而只需装备好DMA参数,发动DMA即可。可是关于SHARC-2,因为被迫接纳,事前并不知道SHARC-1何时向自己发送数据,因而很难在恰当的时分发动DMA接纳。经过LSRQ中止,就能够很容易地处理这个问题。

首要将两边的链路口设置为无效。当SHARC-1需求向SHARC-2通讯时(发送或接纳)将自己的链路口设为有用,并依据需求从自己的链路缓冲中读写数据。因为链路通讯协议规则:当发送数据时,假如对方没有响应,则将LxCLK置为高电平,数据线坚持不变;当需求接纳数据时,假如对方没有响应,则LxACK坚持为高电平。这样,SHARC-2就会触发LSRQ中止。因为LSRQ中止的一切链路口共用一个中止矢量,因而在中止服务子程序中,首要需求判别哪个链路口有服务恳求,且要区别是发送仍是接纳恳求,然后装备相应的DMA参数,使能该链路口,从而在两边之间树立一个单向的数据通路。两边传递数据完结,会发生一个如上文中链路口中止状况(1)所示的中止。在中止服务程序中,依然将各自的链路口设置为无效,等候下一次通讯恳求。下面给出一个运用LSRQ中止完结数据传递的示例。

例3:装备L0BUF,运用LSRQ中止完结数据传递。
r0=0x0002c688;
dm(LAR)=r0;
ustat1=dm(LCTL0);
bit clr ustat1 L0EN;  /*制止链路缓冲0*/
dm(LCTL0)=ustat1;
ustat1=dm(LSRQ);
bit set ustat1 L0TM;  /*链路0发送屏蔽*/
bit set ustat1 L0RM;  /*链路0接纳屏蔽*/
dm(LSRQ)=ustat1;
bit set imask LSRQI;  /*使能LSRQ中止*/
bit set mode1 IRPTEN;
……

上面的程序段能够放在主程序的开端。经过以上的装备,就能够经过LSRQ中止便利地完结与另一片SHARC的链路口通讯(发送、接纳)。别的需求留意的是,当修正链路缓冲器的使能位LxEN时,有必要将该中止屏蔽(bit clr imask LSRQI),不然有或许发生不行意料的LSRQ中止。

3 完毕语

选用同享存储器并行体系和散布存储器并行体系各有特色,结合这二种体系规划的思维更易于构建并行处理体系。规划时,能够选用子模块结构把这二者结合起来。子模块内部,选用同享存储器和散布存储器并存,各个SHARC间依据需求既能够经过总线传送数据,又能够经过链路口传送数据。子模块之间选用散布式存储器体系,经过链路口进行数据传递。选用以上规划,能够完结有用的并行处理,使体系整体性能有很大的进步。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/198372.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部