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而不怎么像SSE/SSE2/AltiVec,后者都具有专用的128位SIMD寄存器。但是,MMX只有8个寄存器可用,而SPARC处理器通常具有数目大得多的寄存器,这是RISC处理器的特色之一。

作为RISC处理器的扩展指令集,VIS严格遵守RISC的设计原则--保持指令集的精简与高效。这很不同于CISC处理器扩展指令集(如MMX/SSE/SSE2/SSE3/SSE4/3D Now!)的做法。理论上,RISC的设计原则可以保持流水线的简单高效,从而可能带来更大的吞吐量及性能提升。

然而,Intel/AMD可以很容易的为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).  引文使用过时参数coauthors (帮助)

外部链接

  • Sun网站上的VIS (Visual Instruction Set) (页面存档备份,存于互联网档案馆
  • VSDK (VIS Software Developer's Kit) VIS软件开发工具包 (页面存档备份,存于互联网档案馆
  • VIS Instruction Set 用户手册
精簡指令集(RISC)
多媒體加速擴展指令集 (MAX)
視覺化指令集 (VIS)
MDMX · MIPS-3D · MSA
龙芯多媒体扩展指令集 (LoongMMI) · 龙芯向量扩展指令集(LoongSX) · 龙芯高级向量扩展指令集(LoongASX)
動態視訊指令集 (MVI)
NEON
複雜指令集(CISC)
x86/x86-64
MMX · 3DNow! · 流式單指令流多資料流擴展指令集 (SSE) · SSE2 · SSE3 · 擴展SSE3 (SSSE3) · SSE4 · SSE4a · SSE5 → XOP、F16C/CVT16、FMA(包括FMA4、FMA3) · 進階加密標準指令集 (AES) · 進階矢量擴展指令集 (AVX、AVX1.1、AVX2、AVX-512) · 位操作指令集 (ABM、BMI1、BMI2、TBM)
指令集 = 被取代或取消