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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 手把手課堂:擴(kuò)展PowerPC的復(fù)數(shù)運(yùn)算指令集

          手把手課堂:擴(kuò)展PowerPC的復(fù)數(shù)運(yùn)算指令集

          作者: 時(shí)間:2011-05-06 來(lái)源:電子產(chǎn)品世界 收藏

            汽車多媒體系統(tǒng)面臨著嚴(yán)峻的技術(shù)挑戰(zhàn):如何在漫長(zhǎng)的整個(gè)產(chǎn)品壽命周期中實(shí)現(xiàn)系統(tǒng)的可升級(jí)性?轎車和卡車的壽命通常都在十年以上。這就使汽車多媒體系統(tǒng)難以跟上消費(fèi)電子產(chǎn)品和移動(dòng)通信標(biāo)準(zhǔn)迅速變化的步伐。在大多數(shù)情況下,只更新多媒體軟件是不夠的,甚至是不可能的。

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

            許多應(yīng)用,尤其是多媒體編解碼器,還需要提高計(jì)算性能。然而,為將來(lái)的使用而設(shè)計(jì)具有“后備”計(jì)算能力的系統(tǒng),既不經(jīng)濟(jì),在技術(shù)上也不可行,因?yàn)樵S多技術(shù)變化是根本無(wú)法預(yù)見(jiàn)的。

            一種解決方案是以某種方式隨軟件一起升級(jí)計(jì)算平臺(tái),使系統(tǒng)經(jīng)過(guò)升級(jí)能夠?yàn)楦郊拥能浖幚碡?fù)荷提供足夠的計(jì)算能力。您如果使用 ® Virtex®-5 FXT器件構(gòu)建系統(tǒng),就可以為處理器的輔助處理單元 (APU) 增加專用的計(jì)算操作,從而為設(shè)計(jì)賦予更高的計(jì)算能力。

            Missing Link電子公司致力于打造可重新配置的平臺(tái),以便將經(jīng)久耐用的汽車和航天電子設(shè)備與迅速變化的消費(fèi)和移動(dòng)通信市場(chǎng)掛起勾來(lái)。我們相信,在 Virtex-5 FXT器件中,處理器的APU是塊寶。它為嵌入式系統(tǒng)設(shè)計(jì)人員提供的計(jì)算能力,在傳統(tǒng)上只有自行定制ASSP器件的“大戶”才有幸享用。既然賽靈思用戶現(xiàn)在擁有這般可用資源,我們認(rèn)為每個(gè)人都應(yīng)該利用APU來(lái)優(yōu)化自己的設(shè)計(jì)。

            通過(guò)APU擴(kuò)展指令集的基本原理設(shè)計(jì)人員想優(yōu)化嵌入式系統(tǒng)時(shí),通常是設(shè)法擴(kuò)展處于設(shè)計(jì)核心位置的微處理器的指令集,以此來(lái)達(dá)到優(yōu)化目的。從傳統(tǒng)上講這是最佳方案,因?yàn)榍度胧较到y(tǒng)的復(fù)雜性在于設(shè)計(jì)的軟件部分。您也可以增加專用的硬件模塊,直截了當(dāng)?shù)貫樵O(shè)計(jì)賦予新功能。

            不過(guò),您可能會(huì)發(fā)現(xiàn),增加指令的方法在彌補(bǔ)硬件變化方面具有某些顯著的優(yōu)越性,并且在一定程度上易于為設(shè)計(jì)人員所實(shí)現(xiàn)。例如,通過(guò)擴(kuò)展指令,您可以更精細(xì)地優(yōu)化設(shè)計(jì)。另外,擴(kuò)展指令集通常不會(huì)干擾存儲(chǔ)器訪問(wèn),因此具有優(yōu)化系統(tǒng)整體性能的可能性。盡管有個(gè)人、公司和學(xué)術(shù)研究機(jī)構(gòu)發(fā)表過(guò)有關(guān)論著,然而對(duì)于不熟悉這種技法的任何人來(lái)說(shuō),擴(kuò)展指令集都可能看似一種“魔術(shù)”。但實(shí)際上,這并非那么復(fù)雜。請(qǐng)?jiān)囅肽绾瓮ㄟ^(guò)APU接口向處理器的指令集增加某些相當(dāng)簡(jiǎn)單的指令,以此來(lái)優(yōu)化Virtex-5 FXT設(shè)計(jì)。

            一般而言,要擴(kuò)展嵌入式微處理器的指令集,您需要明白您是要進(jìn)行軟硬件兩方面修改。首先,您要為系統(tǒng)增加硬件模塊,以完成專門的計(jì)算。這些計(jì)算是在 FPGA 結(jié)構(gòu)中并行執(zhí)行,而不是在軟件中依次執(zhí)行。用賽靈思公司的話來(lái)說(shuō),這些硬件模塊稱為“結(jié)構(gòu)協(xié)處理模塊”,即FCM。您可以用VHDL或Verilog語(yǔ)言編寫這些FCM,它們將在Virtex-5 FXT器件的FPGA結(jié)構(gòu)中終結(jié)。您可以將一個(gè)或多個(gè)FCM連接到PowerPC處理器的APU接口。

            下一步是調(diào)整軟件代碼,以便啟用增加的指令。您有兩種可選方法(假定您在用C語(yǔ)言編程)。第一種方法是修改C編譯器,令其自動(dòng)利用附加指令可施展功效的情形。我們把這種方法留給學(xué)術(shù)界和致力于ASSP的某些人。

            第二種方法較為簡(jiǎn)潔,不必觸及編譯器,而是使用所謂編譯器認(rèn)識(shí)的函數(shù)。也就是說(shuō),我們要在軟件代碼中手動(dòng)調(diào)用一個(gè)能使用這些附加指令的C宏或C函數(shù)。

            無(wú)論使用哪種方法,我們都必須調(diào)整匯編器,使其支持新指令。幸好,賽靈思公司在嵌入式開(kāi)發(fā)套件 (EDK) 中包括了PowerPC的編譯器和匯編器,它們已經(jīng)支持這些附加指令。PowerPC遇到這些新指令時(shí),迅速察覺(jué)它們不是其原指令集的組成部分,進(jìn)而將它們交給APU予以處理。賽靈思公司已將APU配置成解譯這些指令,為相應(yīng)的FCM提供運(yùn)算元數(shù)據(jù),然后讓FCM執(zhí)行計(jì)算。

            如果這一步妥善完成,則軟件在運(yùn)行時(shí)需要的指令就會(huì)較少。因此,我們無(wú)需提高CPU的時(shí)鐘頻率(這可能造成其他麻煩),就可以從設(shè)計(jì)中獲得更多計(jì)算能力。

            之所以使用APU,而不是通過(guò)PLB總線將硬件模塊連接到微處理器,主要是因?yàn)镻owerPC處理器與APU/FCM之間的較大帶寬和較短延遲。另一優(yōu)越性在于,系統(tǒng)需要通過(guò)PLB總線來(lái)快速訪問(wèn)外設(shè),而APU不依賴CPU對(duì)外設(shè)的接口,因此不會(huì)增加PLB總線的負(fù)擔(dān)。

            APU為PowerPC與FCM之間提供多種接口方式。我們可以使用某種“加載存儲(chǔ)指令”法,也可以使用“用戶定義指令”(UDI) 法。賽靈思公司 的《用戶指南》UG200 的第12章詳細(xì)介紹了這些技法。

            我們?cè)谑纠袑⑹褂肬DI法,因?yàn)檫@種方法可以最大限度地控制系統(tǒng),從而實(shí)現(xiàn)最高性能。

            示例設(shè)計(jì)描述

            我們用增加一條UDI的方法擴(kuò)展了PowerPC處理器的指令集,以執(zhí)行復(fù)數(shù)乘法運(yùn)算,這對(duì)于許多多媒體解碼系統(tǒng)來(lái)說(shuō)是一種簡(jiǎn)便易行的優(yōu)化方法。EDK圖顯示了總體設(shè)計(jì),包括如何通過(guò)APU將復(fù)數(shù)乘法器的FCM連接到PowerPC處理器,以及軟件如何運(yùn)用FCM。

            我們選擇復(fù)數(shù)乘法作為示例,是因其在流式媒體數(shù)據(jù)解碼方面具有廣泛的適用性,也是因其能夠明確說(shuō)明如何通過(guò)增加專用指令來(lái)利用 APU。

           


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: Xilinx PowerPC 運(yùn)算指令集

          評(píng)論


          相關(guān)推薦

          技術(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); })();