<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 可以獲得同RTL設(shè)計(jì)一樣的I/O速度

          可以獲得同RTL設(shè)計(jì)一樣的I/O速度

          ——
          作者: 時(shí)間:2005-09-10 來(lái)源:EDN電子設(shè)計(jì)技術(shù) 收藏
          可以獲得同RTL設(shè)計(jì)一樣的I/O速度
           可配置處理器基于隊(duì)列與端口的機(jī)制
            對(duì)于SoC設(shè)計(jì)中的許多任務(wù)而言,將一個(gè)處理器中的所有輸入和輸出接口都映象成存儲(chǔ)器地址既無(wú)必要也無(wú)效率。有時(shí)候?qū)⑤斎?輸出接口映象到存儲(chǔ)器地址可以讓程序員或者編譯器去動(dòng)態(tài)地選擇幾個(gè)計(jì)算部件的源和目的。然而,如果動(dòng)態(tài)尋址不那么重要的話,那么將外部信號(hào)和處理器執(zhí)行部件直接相連能夠進(jìn)一步加速系統(tǒng)的性能并可以減少?gòu)?fù)雜度。基于硬線連接的接口對(duì)許多RTL設(shè)計(jì)人員來(lái)說(shuō)也是非常熟悉的,它允許處理器在不改變現(xiàn)存RTL模塊中各個(gè)模塊接口(“pin”)定義的情況下去替換那些硬件模塊。
            Tensilica為SoC設(shè)計(jì)的Xtensa LX可配置處理器可以將信號(hào)直接與其SoC邏輯模塊中的執(zhí)行部件進(jìn)行連接,而且其輸出信號(hào)可以直接與其它SoC模塊連接,而不需要利用其傳統(tǒng)的總線。因此,數(shù)據(jù)搬移就不需要傳統(tǒng)的加載和存儲(chǔ)指令,所以數(shù)據(jù)輸入/輸出就不會(huì)有額外的開銷。這些附加的訪問(wèn)處理器端口可由Tensilica的指令擴(kuò)展語(yǔ)言TIE進(jìn)行建立,TIE語(yǔ)言包含了兩個(gè)新的適用于Xtensa LX處理器的技術(shù)特征,即TIE端口和隊(duì)列技術(shù)。

          本文引用地址:http://www.ex-cimer.com/article/8465.htm

            兩種基本的接口握手信號(hào)風(fēng)格適合不同的輸入和輸出環(huán)境,用于將處理器與外部信號(hào)直接互連:
            ● 通過(guò)端口進(jìn)行數(shù)值輸入和狀態(tài)輸出;
            ● 輸入和輸出隊(duì)列。
            考慮圖1所示的一個(gè)簡(jiǎn)單的硬件功能模塊框圖。該功能模塊基本的輸入和輸出信號(hào)可以簡(jiǎn)化成模塊邊界的硬線連接。
            輸入和輸出端口可以用于可配置處理器操作的源操作數(shù)和目的操作數(shù),這樣可以確??焖俣`活的硬件接口。下面的程序是圖1中的功能模塊的實(shí)現(xiàn),用TIE語(yǔ)言寫成。該例子采用隊(duì)列技術(shù)將數(shù)據(jù)從功能模塊中搬入和搬出。
            1: state state1 24 add_read_write
            2: state state2 24 add_read_write
            3: state lastinput1 24
            4: state nextoutput1 24
            5: queue input1 24 in
            6: queue input2 24 in
            7: queue output1 24 out
            8: operation lookup.mul.mul {} {in input1, in input2, in state1, in state2, inout lastinput1, out output1, inout nextoutput1, out VAddr, in MemDataIn32} {
            9: assign VAddr = {8'h0, lastinput1 + state1};
            10: assign lastinput1 = input1;
            11: wire [23:0] mulout = MemDataIn32[23:0] * input2;
            12: assign output1 = nextoutput1;
            13: assign nextoutput1 = mulout * state2;}
            14: schedule inst_sched {lookup.mul.mul} {use state2 4; use nextoutput1 3; use input1 2; use input2 2; def lastinput1 3; def nextoutput1 4; def mulout 3; def output1 3; }
            以上為具有輸入和輸出隊(duì)列的數(shù)據(jù)通路TIE實(shí)現(xiàn)示例。
            在上面的例子中,第14行schedule語(yǔ)句中的“use”和“def”變量說(shuō)明Xtensa處理器流水線各級(jí)中輸入隊(duì)列接口有數(shù)據(jù)(use),而處理器輸出隊(duì)列接口則接收從流水線(def)中來(lái)的輸出數(shù)據(jù)。輸入隊(duì)列接口在流水線訪存級(jí)(第2級(jí))有數(shù)據(jù),而輸出隊(duì)列接口在流水線寫回級(jí)(第3級(jí))接收數(shù)據(jù)。狀態(tài)lastinput1和 狀態(tài)nextoutput1允許后輸入到隊(duì)列中的數(shù)據(jù)用于后續(xù)的指令,而前面指令中后計(jì)算出來(lái)的結(jié)果則被送入到輸出隊(duì)列。


            隊(duì)列輸入和輸出直接和硬線結(jié)構(gòu)相連接。對(duì)相應(yīng)隊(duì)列結(jié)構(gòu)的訪問(wèn)將自動(dòng)從輸入隊(duì)列中彈出數(shù)據(jù)以及從輸出隊(duì)列中壓入數(shù)據(jù)。隊(duì)列控制機(jī)制采用指令消除方法(由于其它各種事件所引起),并確保即使在處理遇到未期望的錯(cuò)誤條件下也能夠沒(méi)有額外的數(shù)據(jù)壓入或者彈出隊(duì)列。
            隊(duì)列是指令映象連接的一種方式。它們非常適合專用處理器中的操作數(shù)數(shù)據(jù)流,因?yàn)檎?qǐng)求/應(yīng)答握手信號(hào)已經(jīng)是隊(duì)列接口的一部分,如圖2所示。
            隊(duì)列輸入表示數(shù)據(jù)流被處理器上運(yùn)行的應(yīng)用程序所使用。使用的指令順序執(zhí)行,執(zhí)行結(jié)果也是順序可見(jiàn)的。類似地,隊(duì)列輸出表示應(yīng)用程序處理器產(chǎn)生的一系列數(shù)據(jù)。數(shù)據(jù)的生產(chǎn)和消費(fèi)(使用)可以由硬件進(jìn)行管理,因此可能的指令執(zhí)行消除效應(yīng)都被隱藏了,并且不需要顯式的請(qǐng)求/應(yīng)答握手信號(hào)。如果沒(méi)有產(chǎn)生出足夠多的數(shù)據(jù),那么處理器就會(huì)暫停使用這些操作數(shù)。如果消費(fèi)處理器落后的話,那么產(chǎn)生處理器就會(huì)暫停產(chǎn)生操作數(shù),并允許數(shù)據(jù)填入輸入緩沖區(qū)。這些隊(duì)列會(huì)在處理器之間形成一種高效的數(shù)據(jù)流連接,尤其是當(dāng)幾個(gè)處理器形成一個(gè)大規(guī)模的計(jì)算流水線時(shí)更是如此。
            第二種接口直接連接的方式是基于端口,即基于一組硬線的數(shù)據(jù)輸入和狀態(tài)輸出。這些端口在執(zhí)行諸如測(cè)試外部狀態(tài)、條件信息或者控制其它邏輯功能這些任務(wù)時(shí)尤其有用。
            上面的例子也可以采用輸入數(shù)據(jù)和輸出狀態(tài)方式來(lái)實(shí)現(xiàn),如下面圖所示。該實(shí)現(xiàn)使用一個(gè)顯式的數(shù)據(jù)輸出信號(hào)next_data來(lái)指示input1和input2所需要的新的數(shù)據(jù)值,并且一個(gè)新的輸出數(shù)據(jù)在output1信號(hào)線上出現(xiàn)。系統(tǒng)開發(fā)人員負(fù)責(zé)確保外部邏輯在下一次使用input1和input2端口前有足夠的時(shí)間來(lái)響應(yīng)輸出的next_data信號(hào)。上面的保證對(duì)中等程度性能的應(yīng)用程序而言是非常容易實(shí)現(xiàn)的,只需要在一個(gè)輸入數(shù)據(jù)和其后的下一個(gè)輸入之間占用幾十個(gè)時(shí)鐘周期。然而,數(shù)據(jù)隊(duì)列對(duì)于超高速數(shù)據(jù)速率輸入的情況下一般是非常簡(jiǎn)單和快速的。注意到,指令集和程序必須顯式說(shuō)明next_data信號(hào)來(lái)請(qǐng)求新的輸入數(shù)據(jù),并指示一個(gè)新的輸出數(shù)據(jù)可用


          關(guān)鍵詞: Tensilica公司

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();