新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 手把手課堂:擴展PowerPC的復數運算指令集

手把手課堂:擴展PowerPC的復數運算指令集

作者: 時間:2011-05-06 來源:電子產品世界 收藏

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

本文引用地址:http://m.butianyuan.cn/article/119297.htm

  許多應用,尤其是多媒體編解碼器,還需要提高計算性能。然而,為將來的使用而設計具有“后備”計算能力的系統(tǒng),既不經濟,在技術上也不可行,因為許多技術變化是根本無法預見的。

  一種解決方案是以某種方式隨軟件一起升級計算平臺,使系統(tǒng)經過升級能夠為附加的軟件處理負荷提供足夠的計算能力。您如果使用 ® Virtex®-5 FXT器件構建系統(tǒng),就可以為處理器的輔助處理單元 (APU) 增加專用的計算操作,從而為設計賦予更高的計算能力。

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

  通過APU擴展指令集的基本原理設計人員想優(yōu)化嵌入式系統(tǒng)時,通常是設法擴展處于設計核心位置的微處理器的指令集,以此來達到優(yōu)化目的。從傳統(tǒng)上講這是最佳方案,因為嵌入式系統(tǒng)的復雜性在于設計的軟件部分。您也可以增加專用的硬件模塊,直截了當地為設計賦予新功能。

  不過,您可能會發(fā)現,增加指令的方法在彌補硬件變化方面具有某些顯著的優(yōu)越性,并且在一定程度上易于為設計人員所實現。例如,通過擴展指令,您可以更精細地優(yōu)化設計。另外,擴展指令集通常不會干擾存儲器訪問,因此具有優(yōu)化系統(tǒng)整體性能的可能性。盡管有個人、公司和學術研究機構發(fā)表過有關論著,然而對于不熟悉這種技法的任何人來說,擴展指令集都可能看似一種“魔術”。但實際上,這并非那么復雜。請試想您如何通過APU接口向處理器的指令集增加某些相當簡單的指令,以此來優(yōu)化Virtex-5 FXT設計。

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

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

  第二種方法較為簡潔,不必觸及編譯器,而是使用所謂編譯器認識的函數。也就是說,我們要在軟件代碼中手動調用一個能使用這些附加指令的C宏或C函數。

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

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

  之所以使用APU,而不是通過PLB總線將硬件模塊連接到微處理器,主要是因為PowerPC處理器與APU/FCM之間的較大帶寬和較短延遲。另一優(yōu)越性在于,系統(tǒng)需要通過PLB總線來快速訪問外設,而APU不依賴CPU對外設的接口,因此不會增加PLB總線的負擔。

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

  我們在示例中將使用UDI法,因為這種方法可以最大限度地控制系統(tǒng),從而實現最高性能。

  示例設計描述

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

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

 


上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉