手把手課堂:擴展PowerPC的復(fù)數(shù)運算指令集
汽車多媒體系統(tǒng)面臨著嚴峻的技術(shù)挑戰(zhàn):如何在漫長的整個產(chǎn)品壽命周期中實現(xiàn)系統(tǒng)的可升級性?轎車和卡車的壽命通常都在十年以上。這就使汽車多媒體系統(tǒng)難以跟上消費電子產(chǎn)品和移動通信標準迅速變化的步伐。在大多數(shù)情況下,只更新多媒體軟件是不夠的,甚至是不可能的。
本文引用地址:http://butianyuan.cn/article/119297.htm許多應(yīng)用,尤其是多媒體編解碼器,還需要提高計算性能。然而,為將來的使用而設(shè)計具有“后備”計算能力的系統(tǒng),既不經(jīng)濟,在技術(shù)上也不可行,因為許多技術(shù)變化是根本無法預(yù)見的。
一種解決方案是以某種方式隨軟件一起升級計算平臺,使系統(tǒng)經(jīng)過升級能夠為附加的軟件處理負荷提供足夠的計算能力。您如果使用 Xilinx® Virtex®-5 FXT器件構(gòu)建系統(tǒng),就可以為PowerPC處理器的輔助處理單元 (APU) 增加專用的計算操作,從而為設(shè)計賦予更高的計算能力。
Missing Link電子公司致力于打造可重新配置的平臺,以便將經(jīng)久耐用的汽車和航天電子設(shè)備與迅速變化的消費和移動通信市場掛起勾來。我們相信,在Xilinx Virtex-5 FXT器件中,PowerPC處理器的APU是塊寶。它為嵌入式系統(tǒng)設(shè)計人員提供的計算能力,在傳統(tǒng)上只有自行定制ASSP器件的“大戶”才有幸享用。既然賽靈思用戶現(xiàn)在擁有這般可用資源,我們認為每個人都應(yīng)該利用APU來優(yōu)化自己的設(shè)計。
通過APU擴展指令集的基本原理設(shè)計人員想優(yōu)化嵌入式系統(tǒng)時,通常是設(shè)法擴展處于設(shè)計核心位置的微處理器的指令集,以此來達到優(yōu)化目的。從傳統(tǒng)上講這是最佳方案,因為嵌入式系統(tǒng)的復(fù)雜性在于設(shè)計的軟件部分。您也可以增加專用的硬件模塊,直截了當?shù)貫樵O(shè)計賦予新功能。
不過,您可能會發(fā)現(xiàn),增加指令的方法在彌補硬件變化方面具有某些顯著的優(yōu)越性,并且在一定程度上易于為設(shè)計人員所實現(xiàn)。例如,通過擴展指令,您可以更精細地優(yōu)化設(shè)計。另外,擴展指令集通常不會干擾存儲器訪問,因此具有優(yōu)化系統(tǒng)整體性能的可能性。盡管有個人、公司和學(xué)術(shù)研究機構(gòu)發(fā)表過有關(guān)論著,然而對于不熟悉這種技法的任何人來說,擴展指令集都可能看似一種“魔術(shù)”。但實際上,這并非那么復(fù)雜。請試想您如何通過APU接口向PowerPC處理器的指令集增加某些相當簡單的指令,以此來優(yōu)化Virtex-5 FXT設(shè)計。
一般而言,要擴展嵌入式微處理器的指令集,您需要明白您是要進行軟硬件兩方面修改。首先,您要為系統(tǒng)增加硬件模塊,以完成專門的計算。這些計算是在 FPGA 結(jié)構(gòu)中并行執(zhí)行,而不是在軟件中依次執(zhí)行。用賽靈思公司的話來說,這些硬件模塊稱為“結(jié)構(gòu)協(xié)處理模塊”,即FCM。您可以用VHDL或Verilog語言編寫這些FCM,它們將在Virtex-5 FXT器件的FPGA結(jié)構(gòu)中終結(jié)。您可以將一個或多個FCM連接到PowerPC處理器的APU接口。
下一步是調(diào)整軟件代碼,以便啟用增加的指令。您有兩種可選方法(假定您在用C語言編程)。第一種方法是修改C編譯器,令其自動利用附加指令可施展功效的情形。我們把這種方法留給學(xué)術(shù)界和致力于ASSP的某些人。
第二種方法較為簡潔,不必觸及編譯器,而是使用所謂編譯器認識的函數(shù)。也就是說,我們要在軟件代碼中手動調(diào)用一個能使用這些附加指令的C宏或C函數(shù)。
無論使用哪種方法,我們都必須調(diào)整匯編器,使其支持新指令。幸好,賽靈思公司在嵌入式開發(fā)套件 (EDK) 中包括了PowerPC的編譯器和匯編器,它們已經(jīng)支持這些附加指令。PowerPC遇到這些新指令時,迅速察覺它們不是其原指令集的組成部分,進而將它們交給APU予以處理。賽靈思公司已將APU配置成解譯這些指令,為相應(yīng)的FCM提供運算元數(shù)據(jù),然后讓FCM執(zhí)行計算。
如果這一步妥善完成,則軟件在運行時需要的指令就會較少。因此,我們無需提高CPU的時鐘頻率(這可能造成其他麻煩),就可以從設(shè)計中獲得更多計算能力。
之所以使用APU,而不是通過PLB總線將硬件模塊連接到微處理器,主要是因為PowerPC處理器與APU/FCM之間的較大帶寬和較短延遲。另一優(yōu)越性在于,系統(tǒng)需要通過PLB總線來快速訪問外設(shè),而APU不依賴CPU對外設(shè)的接口,因此不會增加PLB總線的負擔。
APU為PowerPC與FCM之間提供多種接口方式。我們可以使用某種“加載存儲指令”法,也可以使用“用戶定義指令”(UDI) 法。賽靈思公司 的《用戶指南》UG200 的第12章詳細介紹了這些技法。
我們在示例中將使用UDI法,因為這種方法可以最大限度地控制系統(tǒng),從而實現(xiàn)最高性能。
示例設(shè)計描述
我們用增加一條UDI的方法擴展了PowerPC處理器的指令集,以執(zhí)行復(fù)數(shù)乘法運算,這對于許多多媒體解碼系統(tǒng)來說是一種簡便易行的優(yōu)化方法。EDK圖顯示了總體設(shè)計,包括如何通過APU將復(fù)數(shù)乘法器的FCM連接到PowerPC處理器,以及軟件如何運用FCM。
我們選擇復(fù)數(shù)乘法作為示例,是因其在流式媒體數(shù)據(jù)解碼方面具有廣泛的適用性,也是因其能夠明確說明如何通過增加專用指令來利用 APU。
評論