VIS指令集

Visual Instruction Set(縮寫VIS),是一個用於SPARC處理器的SIMD多媒體指令集擴展。VIS在所有的UltraSPARC以及較新的SPARC64處理器上都有實現。

VIS有三個版本。VIS 1.0和VIS 2.0已在先前的SPARC處理器上得到實現;VIS 3.0 將在Rock微處理器中首次實現。[1]

VIS重用了SPARC處理器中的64位長浮點寄存器來儲存8位,16位或者32位的整數數值。從這方面來講,VIS大概更像MMX而不怎麼像SSESSE2AltiVec,後者都具有專用的128位SIMD寄存器。但是,MMX只有8個寄存器可用,而SPARC處理器通常具有數目大得多的寄存器,這是RISC處理器的特色之一。

作為RISC處理器的擴展指令集,VIS嚴格遵守RISC的設計原則--保持指令集的精簡與高效。這很不同於CISC處理器擴展指令集(如MMX/SSE/SSE2/SSE3/SSE4/3D Now!)的做法。理論上,RISC的設計原則可以保持流水線的簡單高效,從而可能帶來更大的吞吐量及性能提升。

然而,IntelAMD可以很容易的為x86/x64處理器加入新的指令集擴展,Sun卻必須在這方面非常謹慎。這可能是CISC相較於RISC的優勢之一。有時候程序員們不得不組合幾條VIS指令來完成MMX/SSE只用一條指令便可完成的某項操作。值得指出的是,更少的指令數目並不一定就會帶來更大的性能提升。

VIS包含一系列對圖形圖像網絡等的處理支持,其中大多數只可用於整型數據。

有三種方法可以在程序中使用VIS:

  • 使用內嵌匯編
  • 使用VSDK中的內嵌模板,這很類似於使用編譯器原語,使用起來有些像調用C語言函數
  • 使用mediaLib多媒體函數庫。這個庫提供C函數接口,並在SPARC平台上使用VIS(同時在x86/x64平台上使用MMX/SSE/SSE2)來加速多媒體應用程序

參考資料

  1. ^ Liang He; Harlan McGhan. MT mediaLib for Chip MultiThreaded (CMT) Processors (PDF). Sun Microsystems, Inc. May 2005 [2007-12-03]. (原始內容 (PDF)存檔於2008-07-06). 

外部連結