微波EDA网,见证研发工程师的成长! 2025濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柟缁㈠枟閸庡顭块懜闈涘缂佺嫏鍥х閻庢稒蓱鐏忣厼霉濠婂懎浜惧ǎ鍥э躬婵″爼宕熼鐐差瀴闂備礁鎲¢悷銉ф崲濮椻偓瀵鏁愭径濠勵吅闂佹寧绻傚Λ顓炍涢崟顓犵<闁绘劦鍓欓崝銈嗙箾绾绡€鐎殿喖顭烽幃銏ゅ川婵犲嫮肖闂備礁鎲¢幐鍡涘川椤旂瓔鍟呯紓鍌氬€搁崐鐑芥嚄閼搁潧鍨旀い鎾卞灩閸ㄥ倿鏌涢锝嗙闁藉啰鍠栭弻鏇熺箾閻愵剚鐝曢梺绋款儏濡繈寮诲☉姘勃闁告挆鈧Σ鍫濐渻閵堝懘鐛滈柟鍑ゆ嫹04闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻閻愮儤鍋嬮柣妯荤湽閳ь兛绶氬鎾閳╁啯鐝曢梻浣藉Г閿氭い锔诲枤缁辨棃寮撮姀鈾€鎷绘繛杈剧秬濞咃絿鏁☉銏$厱闁哄啠鍋撴繛鑼枛閻涱噣寮介褎鏅濋梺闈涚墕濞诧絿绮径濠庢富闁靛牆妫涙晶閬嶆煕鐎n剙浠遍柟顕嗙節婵$兘鍩¢崒婊冨箺闂備礁鎼ú銊╁磻濞戙垹鐒垫い鎺嗗亾婵犫偓闁秴鐒垫い鎺嶈兌閸熸煡鏌熼崙銈嗗27闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻閻愮儤鍋嬮柣妯荤湽閳ь兛绶氬鎾閳╁啯鐝栭梻渚€鈧偛鑻晶鎵磼椤曞棛鍒伴摶鏍归敐鍫燁仩妞ゆ梹娲熷娲偡閹殿喗鎲奸梺鑽ゅ枂閸庣敻骞冨鈧崺锟犲礃椤忓棴绱查梻浣虹帛閻熴垽宕戦幘缁樼厱闁靛ǹ鍎抽崺锝団偓娈垮枛椤攱淇婇幖浣哥厸闁稿本鐭花浠嬫⒒娴e懙褰掑嫉椤掑倻鐭欓柟杈惧瘜閺佸倿鏌ㄩ悤鍌涘 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻閻愮儤鍋嬮柣妯荤湽閳ь兛绶氬鎾閻樻爠鍥ㄧ厱閻忕偛澧介悡顖氼熆鐟欏嫭绀€闁宠鍨块、娆戠磼閹惧墎绐楅梻浣告啞椤棝宕橀敐鍡欌偓娲倵楠炲灝鍔氭繛鑼█瀹曟垿骞橀懜闈涙瀭闂佸憡娲﹂崜娑㈡晬濞戙垺鈷戦柛娑樷看濞堟洖鈹戦悙璇ц含闁诡喕鍗抽、姘跺焵椤掆偓閻g兘宕奸弴銊︽櫌婵犮垼娉涢鍡椻枍鐏炶В鏀介柣妯虹仛閺嗏晛鈹戦鑺ュ唉妤犵偛锕ュ鍕箛椤掑偊绱遍梻浣筋潐瀹曟﹢顢氳閺屻劑濡堕崱鏇犵畾闂侀潧鐗嗙€氼垶宕楀畝鍕厱婵炲棗绻戦ˉ銏℃叏婵犲懏顏犵紒杈ㄥ笒铻i柤濮愬€ゅΣ顒勬⒒娴e懙褰掓晝閵堝拑鑰块梺顒€绉撮悞鍨亜閹哄秷鍏岄柛鐔哥叀閺岀喖宕欓妶鍡楊伓闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻閻愮儤鍋嬮柣妯荤湽閳ь兛绶氬鎾閳╁啯鐝栭梻渚€鈧偛鑻晶鎵磼椤曞棛鍒伴摶鏍归敐鍫燁仩妞ゆ梹娲熷娲偡閹殿喗鎲奸梺鑽ゅ枂閸庣敻骞冨鈧崺锟犲礃椤忓棴绱查梻浣虹帛閻熴垽宕戦幘缁樼厱闁靛ǹ鍎抽崺锝団偓娈垮枛椤攱淇婇幖浣哥厸闁稿本鐭花浠嬫⒒娴e懙褰掑嫉椤掑倻鐭欓柟杈惧瘜閺佸倿鏌ㄩ悤鍌涘
首页 > 硬件设计 > 嵌入式设计 > SHARC并行系统软件设计方法

SHARC并行系统软件设计方法

时间:02-17 来源:互联网 点击:

  随着数字信号处理(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间的数据传递

鐏忓嫰顣舵稉鎾茬瑹閸╃顔勯弫娆戔柤閹恒劏宕�

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top