<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > TMS320C55x的指令流水線(xiàn)及其效率的提高

TMS320C55x的指令流水線(xiàn)及其效率的提高

作者: 時(shí)間:2004-12-06 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:討論基于TCP/IP協(xié)議棧,利用8位單片機構建嵌入式WebServer的具體技術(shù)及相關(guān)實(shí)現方案;給出系統硬件原理框圖和有關(guān)軟件實(shí)現的代碼框架結構。

關(guān)鍵詞:DSP 自動(dòng)保護機制

引 言

  (以下簡(jiǎn)稱(chēng)C55x)是德州儀器公司推出的新一代低功耗高性能16位定點(diǎn)數字信號處理器(DSP)。2002年初,德州儀器公司相繼推出了系列中TMS320VC5510的正式版本,以及TMS320VC5509和 TMS320VC5502。C55x是在TMS320C54x(以下簡(jiǎn)稱(chēng)C54x)的基礎上發(fā)展而來(lái)的,其源代碼也與C54x的兼容。C55x達到了C54x的2倍的周期,并且只有C54x的1/6的功耗。C55x優(yōu)異的性能和極低的功耗使其成為具有相當競爭力的DSP產(chǎn)品。

  C55x是從C54x的基礎上發(fā)展而來(lái)的,在結構上做了相當大的擴展,在集上也有很大的。C55x繼續使用C54x在代碼密度上建立的獲得更低系統成本的標準,并將其進(jìn)一步發(fā)展為采用1~6字節的可變字節寬度的,以代碼密度。使用這種可縮放的指令字長(cháng)度,C55x每個(gè)功能的控制代碼可以比C54x的減少最多達40%。C55x還增加了總線(xiàn)寬度,其指令單元每次可從內部或外部存儲器取32位程序代碼(C54x每次只能取16位)。C55x含有指令高速緩存器(cache)以使外部存儲器訪(fǎng)問(wèn)最少,改善數據吞吐率和省電。這種指令集的設計與低功耗需求結構的聯(lián)合使用,使得應用系統具有極高的性能。

  C55x DSP的最大特點(diǎn)就在于,其強有力的并行特性和方便用戶(hù)編程的自動(dòng)保護機制,而C55x并行指令的實(shí)現和指令的高執行,在很大程度上都依賴(lài)于指令的支持。

1 TMS320C55x的指令流水線(xiàn)

  DSP指令的執行,可以是直接執行,如AD公司的218x系列DSP,也可以采用指令流水線(xiàn)的方式。德州儀器公司的DSP產(chǎn)品一般都采用指令流水線(xiàn)的工作方式,即一條指令的執行分為若干個(gè)階段完成,就像經(jīng)過(guò)工廠(chǎng)里的生產(chǎn)流水線(xiàn)上的一道道工序一樣,而同時(shí),在流水線(xiàn)的其它階段又分別有其它的指令在順序地執行著(zhù)。采用指令流水線(xiàn)的執行方式,可以大大系統的執行,使得系統可以低延遲或“無(wú)延遲”地執行較復雜的指令。因此,更多的DSP開(kāi)始采用指令流水線(xiàn)的執行方式。

C55x繼承了C54x的指令流水線(xiàn)的執行方式,其流水線(xiàn)分為兩個(gè)分離的階段,即“取指階段”和“執行階段”。在取指階段,將4字節的指令包取入指令緩沖隊列,這里面又包括提交地址、取指、預譯碼等4個(gè)階段;而在執行階段,則完成指令的譯碼執行,又可分為譯碼、取操作數、執行、寫(xiě)回結果等8個(gè)階段。圖1是“取指階段”和“執行階段”的示意圖。

  其中“數據回寫(xiě)+”只出現在數據寫(xiě)入存儲器的指令中。

  C55x的指令流水線(xiàn)一般由程序流單元(PU)控制。程序流單元對指令譯碼,分派指令到尋址單元(AU)和數據運算單元(DU),并管理全部的保護流水線(xiàn),其具有的預測轉移能力可以避免條件指令執行引起的流水線(xiàn)刷新。

2 TMS320C55x指令流水線(xiàn)的自動(dòng)保護機制

  雖然采用指令流水線(xiàn)的工作方式,可以提高系統的效率,但不同的指令執行情況不同,就有可能造成流水線(xiàn)的沖突。如:當一條指令想寫(xiě)入某寄存器時(shí),前一指令還未完成對該寄存器的讀取操作,就會(huì )產(chǎn)生流水線(xiàn)沖突的問(wèn)題,這時(shí)候就必須對流水線(xiàn)進(jìn)行保護,確保前一指令的讀取操作完成后才修改該寄存器的值。遇到這樣的情況,必須在第二條指令之前加入等待延遲。如:在設計C54x程序時(shí),就需要程序設計人員在可能發(fā)生流水線(xiàn)沖突的指令前后手工加入NOP(空操作)指令或調整指令的順序,以使第二條指令執行時(shí)能取到正確的操作數。時(shí)刻關(guān)注流水線(xiàn)的沖突問(wèn)題,在編程時(shí)是非常麻煩的;而在C55x中,由于采用多指令并行操作,流水線(xiàn)的沖突問(wèn)題也就越發(fā)嚴重。但幸運的是,C55x中的指令流水線(xiàn)具有自動(dòng)保護機制,其自動(dòng)保護機制會(huì )在可能引起沖突的指令之間自動(dòng)增加不活動(dòng)的周期,以避免沖突的發(fā)生。這些都是在指令執行時(shí)自動(dòng)加入的,不需要設計人員親自去添加等待周期,從而省去了在編程時(shí)對流水線(xiàn)沖突進(jìn)行調整的工作,大大降低了編程和調試的難度。而且,也正是由于指令流水線(xiàn)有了自動(dòng)保護機制,才使得設計人員可以放心地使用C55x的并行指令。

3 如何減少指令流水線(xiàn)的保護和延遲

  雖然C55x的自動(dòng)保護指令流水線(xiàn)結構降低了編程時(shí)的復雜度,但指令流水線(xiàn)的保護造成的延遲也是影響C55x程序執行效率的一個(gè)重要方面。

  指令流水線(xiàn)的執行方式會(huì )產(chǎn)生流水線(xiàn)的沖突和保護,而C55x支持多指令同時(shí)執行,流水線(xiàn)沖突與保護的問(wèn)題更加嚴重。所以,減少流水線(xiàn)的沖突,即減少流水線(xiàn)保護造成的延遲,對DSP的執行效率是大有影響的。下面就介紹流水線(xiàn)沖突的可能原因和如何避免流水線(xiàn)沖突,以盡量減少流水線(xiàn)保護機制所帶來(lái)的延遲。

 ?、?對寄存器訪(fǎng)問(wèn)的競爭是影響流水線(xiàn)保護和延遲的主要原因。如果出現要對某寄存器讀取/寫(xiě)入的時(shí)候,前一指令對該寄存器的寫(xiě)操作/讀操作還未完成的情況,就會(huì )造成流水線(xiàn)保護和延遲。在以寄存器為條件執行指令的條件中,如果在測試條件時(shí)前面的指令對該寄存器的修改還未完成,也會(huì )造成流水線(xiàn)保護和延遲。而C55x大部分操作都是在寄存器內或依賴(lài)寄存器來(lái)完成的,所以這是造成流水線(xiàn)保護和延遲的主要原因。這時(shí)候,需要仔細安排指令的順序,避免對寄存器訪(fǎng)問(wèn)的競爭;必要時(shí)可以采用加mmap()的方式,因為這會(huì )改變對相應的寄存器的讀取和修改的流水線(xiàn)階段,就有可能解決這個(gè)問(wèn)題。

 ?、?對存儲器訪(fǎng)問(wèn)的競爭也是影響流水線(xiàn)保護和延遲的重要原因。C55x內部存儲器分為SARAM和DARAM兩種。每個(gè)周期、每個(gè)SARAM體(bank)可被訪(fǎng)問(wèn)一次,DARAM體可被訪(fǎng)問(wèn)兩次;如果在同一周期,指令(或并行指令對)中要對同一體訪(fǎng)問(wèn)超過(guò)兩次的時(shí)候,就會(huì )造成流水線(xiàn)延遲。這時(shí)侯,可以考慮將其中一個(gè)數組復制到另一個(gè)存儲器體中去,然后再執行相應的操作。在安排程序位置的時(shí)候,將程序代碼放在SARAM區。因為,讀取程序代碼也可能和數據的存取產(chǎn)生競爭。

此外,我們還要注意,C55x流水線(xiàn)將某些狀態(tài)寄存器STx的某些位看作“位組”,將某些寄存器看作“寄存器組”。所以,在同時(shí)訪(fǎng)問(wèn)這些“位組”或“寄存器組”成員的時(shí)候,也會(huì )產(chǎn)生與同時(shí)訪(fǎng)問(wèn)一個(gè)寄存器或存儲器地址類(lèi)似的沖突,也會(huì )造成流水線(xiàn)延遲。

 ?、?指令緩沖隊列也有可能造成流水線(xiàn)保護和延遲。指令緩沖隊列(IBQ)用于保存準備解碼執行的指令,每次送出6字節的指令譯碼,同時(shí)從程序區取4字節的指令包補充。所以如果有太多的5或6字節的指令連續執行,就有可能使取指的速度跟不上譯碼的速度而導致延遲。而在程序執行出現子程序調用、跳轉、塊重復和循環(huán)等情況的時(shí)候,IBQ的內容被刷新,需要重新取指填充IBQ,這也會(huì )造成流水線(xiàn)延遲。在長(cháng)指令間插入一些短指令,并盡可能地使用localrepeat,可以減少出現IBQ延遲的情況。

  判斷是否有流水線(xiàn)延遲的方法可以通過(guò)高版本的開(kāi)發(fā)工具來(lái)檢查,也可在懷疑有延遲的語(yǔ)句后添加NOP指令,觀(guān)察前后的執行時(shí)間是否改變。若沒(méi)有什么變化,則說(shuō)明有延遲的情況存在,可以將其它指令調整到這個(gè)位置。

4 如何提高流水線(xiàn)的效率

  一般情況下,采用指令流水線(xiàn)可以提高系統的執行效率,但是這需要合理的程序設計來(lái)實(shí)現這一點(diǎn)。例如,上面提到的流水線(xiàn)沖突會(huì )引起流水線(xiàn)保護從而造成延遲。此外,即使在沒(méi)有流水線(xiàn)保護的情況下,也有可能影響流水線(xiàn)的效率。比如在程序中發(fā)生調用子程序、條件跳轉和塊重復循環(huán)等分支跳轉的情況時(shí),處于指令流水線(xiàn)中各階段的預處理過(guò)的指令都要丟棄,必須重新取入新的指令并重新預處理后才能執行,這就不可避免地帶來(lái)延遲。所以,盡可能地減少指令流水線(xiàn)的刷新,將使程序運行的速度提高,延遲更少。

  為了減少指令流水線(xiàn)的刷新,即減少分支跳轉的情況出現,要盡可能地用條件執行指令來(lái)代替條件跳轉指令,用單指令重復repeat(CSR)和本地循環(huán)(localrepeat)來(lái)代替塊循環(huán)(blockrepeat)。這樣不但可以加快程序的執行,而且可以減少代碼空間和程序執行時(shí)的功耗。條件執行指令會(huì )根據條件是否成立來(lái)決定指令是否執行,而不會(huì )像條件跳轉指令那樣產(chǎn)生跳轉,也就避免了出現分支跳轉的情況;而使用單指令重復和本地循環(huán),在循環(huán)結構中的指令被取入指令緩沖隊列后就不再刷新指令緩沖隊列,而直接使用指令緩沖隊列中已經(jīng)取好的指令反復執行,直到循環(huán)結束,從而也避免了取指和譯碼帶來(lái)的延遲,大大提高了流水線(xiàn)執行的效率。但在編程時(shí)需要注意的是,本地循環(huán)第一條指令和最后一條指令之間最多為55字節的指令,否則,就無(wú)法采用本地循環(huán)而必須采用塊循環(huán)方式。因為,最后一條指令前的長(cháng)度可為55字節,而最后一條可以為長(cháng)6字節的指令。所以,在整個(gè)循環(huán)指令長(cháng)度較大時(shí),可以將較短的指令前移,而將最長(cháng)的指令放在最后一條,這樣就有可能使得較長(cháng)的指令也構成本地循環(huán)的結構。

結 語(yǔ)

  TMS320C55x是一種高性能的DSP,C55x指令流水線(xiàn)的優(yōu)異性能是其中的非常重要的方面。通過(guò)合理的程序設計,減少指令流水線(xiàn)的沖突以減少保護所造成的延遲,并且盡量減少流水線(xiàn)的刷新,將使程序的執行效率更高,同時(shí)也降低了系統的功耗,從而可以真正發(fā)揮TMS320C55x的優(yōu)異性能。

tcp/ip相關(guān)文章:tcp/ip是什么




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>