2009-06-30 61 views
16

Linus Torvalds曾經爲一家名爲Transmeta的處理器公司工作。他們製造的處理器是核心中基於RISC的對象。如果我沒有記錯的話,這個想法是核心運行了一個任意的,可升級的「處理器仿真層」(可以是x86,powerpc等),它將高級操作碼轉換爲RISC內核指令集。代碼變形去了哪裏?

這個想法發生了什麼?您認爲這種方法在編程方面有優勢的優點,缺點和情況如何?

+2

+1非常有趣的問題。我在等待有人將x86 Flash播放器轉換爲ARM。 :-) – Zifre 2009-06-30 00:12:33

回答

7

該公司的表現並不像他們預期的那樣好,最終被Novafora收購爲節能技術。 (http://www.novafora.com/pr01-28-09.html

從我知道的所有帳戶中,該技術根本沒有與現有系統競爭。他們遠遠低於他們的表現數字。另外,儘管可能在VLIW設計之上加入另一位譯員,但我不知道他們製作的任何產品。我不記得Crusoe芯片能夠接受另一種「翻譯」微碼下載。

我個人擁有使用Crusoe處理器的設備,雖然它確實提供了電池續航時間,但設備的性能令人沮喪。有些責任可能會在它使用的特殊版本的Windows上發佈,但仍然很慢。

充其量,它對於便攜式遠程桌面很好。

恕我直言,該技術具有同樣的好處軟件虛擬機像.NET和JVM:

  • 的好處是,你也許可以 與 硬件解決方案加速代碼快(如IBM確實有它的Java加速器處理器 比純軟件JIT。
  • 不足之處在於,您永遠無法獲得執行 本機代碼的處理器獲得的原始 性能。

從某些角度來看,您可以將現代x86芯片視爲代碼變形,儘管它們非常專業。他們將x86架構轉換爲更高效的類RISC子指令集,然後執行這些指令。

這種技術的另一個例子可以是FPGA,它可以被編程爲在電路級仿真各種處理器或原始電路。我相信一些Cray系統可以帶有這種「加速器節點」。

3

明顯的優點:

  • 能夠運行任何操作系統(只是切換處理器仿真到所需要的)
  • 可能性(內核的支持,當然)在同一處理器上運行不同的二進制文檔的/ OS沒有軟件支持。

明顯CON:

  • 額外模擬層==更多的開銷==更快的處理器需要得到的一切同等的性能。
4

一方面,大多數CISC處理器在內部將它們的操作碼轉換爲類似於RISC操作的uops微操作。流水線和多核心已經縮小了RISC處理器之間的差距,以至於它們之間的差異非常小(如果有的話)。如果您需要來自C源代碼或其他程序集前端的交叉兼容性,則可以使用LLVM。 http://llvm.org/

2

大多數現代處理器實際上使用microcode來實現他們的指令集。 有很多原因,包括兼容性問題,但也有其他原因。

什麼是「硬件」和什麼是「軟件」之間的區別實際上很難做出。 現代虛擬機如JVM或CIL(.NET)也可以用硬件實現,但這可能只是使用微代碼完成。

系統中有幾層抽象的原因之一是編程人員/工程師在工作在 更高級別時不必考慮不相關的細節。

操作系統和系統庫也提供了額外的抽象層。但如果不需要它們提供的功能(即OS完成的線程調度),那麼只有這些層纔會使系統「更慢」。讓您自己的特定於程序的調度程序在Linux內核中打敗一個並非易事。

3

我想說成本的降低與數量有關,所以像Transmeta芯片之類的產品必須在銷售大量數量之前,才能與現有的大容量x86芯片進行價格競爭。

如果我記得,Transmeta芯片的一點是它的功耗很低。使每個時鐘週期來回翻轉的硅柵節省能源。代碼變體就是讓你可以在低功耗的RISC芯片上運行一個複雜的指令集(CISC)。

全美達的第一款處理器Crusoe在運行基準測試軟件時甚至出現問題,但效果並不理想。他們的第二款處理器Efficeon確實使用了比Intel Atom更低的功耗(相同的性能類別),並且在相同的功耗範圍內比Centrino表現更好。

現在,從您的軟件和靈活性的角度來看,Code Morphing只是一種即時編譯形式,具有該技術的所有優點和不足。您的x86代碼基本上在虛擬機上運行,​​並由另一個處理器模擬。現在虛擬化的最大好處是能夠在多臺虛擬機之間共享單個處理器,因此可以減少閒置的CPU週期,從而提高效率(硬件成本和能源成本)。

因此,在我看來,代碼變體就像任何形式的虛擬化一樣,都是關於如何更有效地利用資源。

3

有關硬件輔助的x86 ISA虛擬化的另一種方法,您可能需要了解有關Loongson 3 CPU的信息。