SHARC并行系统软件设计方法
需要设置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间根据需要既可以通过总线传送数据,又可以通过链路口传送数据。子模块之间采用分布式存储器系统,通过链路口进行数据传递。采用以上设计,可以实现有效的并行处理,使系统整体性能有很大的提高。
- 中国仪控产业蕴含巨大商机,ADI DSP助跑本土军团(05-25)
- SHARC引领第四代通用DSP高端应用潮流(09-27)
- SHARC处理器满足一高二低的浮点设计需求(04-16)
- SHARC DSP与SJA1000的CAN总线接口设计(03-14)
- 基于ADSP-2106X SHARC DSPs软件仿真器的实现(06-27)
- 基于DSP与SJA1000的CAN总线系统设计方案(07-15)