VIS指令集
(重定向自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)来加速多媒体应用程序
参考资料
- ^ Liang He; Harlan McGhan. MT mediaLib for Chip MultiThreaded (CMT) Processors (PDF). Sun Microsystems, Inc. May 2005 [2007-12-03]. (原始内容 (PDF)存档于2008-07-06).