Visual Instruction Set, or VIS, is a
SIMD
Single instruction, multiple data (SIMD) is a type of parallel processing in Flynn's taxonomy. SIMD can be internal (part of the hardware design) and it can be directly accessible through an instruction set architecture (ISA), but it should ...
instruction set extension for
SPARC V9
SPARC (Scalable Processor Architecture) is a reduced instruction set computer (RISC) instruction set architecture originally developed by Sun Microsystems. Its design was strongly influenced by the experimental Berkeley RISC system developed i ...
microprocessor
A microprocessor is a computer processor where the data processing logic and control is included on a single integrated circuit, or a small number of integrated circuits. The microprocessor contains the arithmetic, logic, and control circu ...
s developed by
Sun Microsystems
Sun Microsystems, Inc. (Sun for short) was an American technology company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, ...
. There are five versions of VIS: VIS 1, VIS 2, VIS 2+, VIS 3 and VIS 4.
History
VIS 1 was introduced in 1994 and was first implemented by Sun in their
UltraSPARC
The UltraSPARC is a microprocessor developed by Sun Microsystems and fabricated by Texas Instruments, introduced in mid-1995. It is the first microprocessor from Sun to implement the 64-bit SPARC V9 instruction set architecture (ISA). Marc Tremb ...
microprocessor (1995) and by Fujitsu in their
SPARC64 GP SPARC64 or sparc64 may refer to:
* sparc64, an alternative name used by free software projects for the SPARC V9 instruction set architecture
* HAL SPARC64
SPARC64 is a microprocessor developed by HAL Computer Systems and fabricated by Fujitsu. I ...
microprocessors (2000).
VIS 2 was first implemented by the
UltraSPARC III
The UltraSPARC III, code-named "Cheetah", is a microprocessor that implements the SPARC V9 instruction set architecture (ISA) developed by Sun Microsystems and fabricated by Texas Instruments. It was introduced in 2001 and operates at 600 to 900 ...
. All subsequent UltraSPARC and SPARC64 microprocessors implement the instruction set.
VIS 3 was first implemented in the
SPARC T4
The SPARC T4 is a SPARC multicore microprocessor introduced in 2011 by Oracle Corporation. The processor is designed to offer high multithreaded performance (8 threads per core, with 8 cores per chip), as well as high single threaded performanc ...
microprocessor.
VIS 4 was first implemented in the
SPARC M7 The SPARC T-series family of RISC processors and server computers, based on the SPARC V9 architecture, was originally developed by Sun Microsystems, and later by Oracle Corporation after its acquisition of Sun. Its distinguishing feature from earli ...
microprocessor.
Differences vs x86
VIS is not an instruction toolkit like
Intel
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California, Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the devel ...
's MMX and SSE. MMX has only 8 registers shared with the
FPU stack, while SPARC processors have 32 registers, also aliased to the double-precision (64-bit) floating point registers.
As with the SIMD instruction set extensions on other
RISC
In computer engineering, a reduced instruction set computer (RISC) is a computer designed to simplify the individual instructions given to the computer to accomplish tasks. Compared to the instructions given to a complex instruction set compu ...
processors, VIS strictly conforms to the main principle of RISC: keep the instruction set concise and efficient.
This design is very different from comparable extensions on
CISC processors, such as
MMX,
SSE,
SSE2
SSE2 (Streaming SIMD Extensions 2) is one of the Intel SIMD (Single Instruction, Multiple Data) processor supplementary instruction sets first introduced by Intel with the initial version of the Pentium 4 in 2000. It extends the earlier SSE ins ...
,
SSE3
SSE3, Streaming SIMD Extensions 3, also known by its Intel code name Prescott New Instructions (PNI), is the third iteration of the SSE instruction set for the IA-32 (x86) architecture. Intel introduced SSE3 in early 2004 with the Prescott revi ...
,
SSE4
SSE4 (Streaming SIMD Extensions 4) is a SIMD CPU instruction set used in the Intel Core microarchitecture and AMD K10 (K8L). It was announced on September 27, 2006, at the Fall 2006 Intel Developer Forum, with vague details in a white paper; more ...
,
3DNow!
3DNow! is a deprecated extension to the x86 instruction set developed by Advanced Micro Devices (AMD). It adds single instruction multiple data (SIMD) instructions to the base x86 instruction set, enabling it to perform vector processing of flo ...
.
Sometimes, programmers must use several VIS instructions to accomplish an operation that can be done with only one
MMX or
SSE instruction, but it should be kept in mind that fewer instructions do not automatically result in better performance.
Functionality
VIS re-uses existing SPARC V9 64-bit floating point registers to hold multiple 8, 16, or 32-bit integer values. In this respect, VIS is more similar to the design of
MMX than other SIMD architectures such as
SSE/
SSE2
SSE2 (Streaming SIMD Extensions 2) is one of the Intel SIMD (Single Instruction, Multiple Data) processor supplementary instruction sets first introduced by Intel with the initial version of the Pentium 4 in 2000. It extends the earlier SSE ins ...
/
AltiVec.
VIS includes a number of operations primarily for graphics support, so most of them are only for integers. These include 3D to 2D conversion,
edge processing and pixel distance.
There are four ways to use VIS in code:
*The
GCC - option
*Use
inline assembly In computer programming, an inline assembler is a feature of some compilers that allows low-level code written in assembly language to be embedded within a program, among code that otherwise has been compiled from a higher-level language such as ...
*Use inline template in
VSDK, similar to
compiler intrinsics
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
, which have C function like interfaces
*Use the
mediaLib
mediaLib (from "multimedia library") is a portable low level library for accelerating multimedia applications, with interfaces in C. It was developed by Sun Microsystems and open-sourced under the CDDL license as part of the OpenSolaris project.
...
multimedia library, which has C function interfaces. It uses VIS on SPARC platforms (and MMX/SSE/SSE2 on x86/x64 platforms) to accelerate multimedia application execution
References
* Gwennap, Linley (5 December 1995). "UltraSparc Adds Multimedia Instructions". ''
Microprocessor Report
''Microprocessor Report'' is a newsletter covering the microprocessor industry. The publication is accessible only to paying subscribers. To avoid bias, it does not take advertisements.
The publication provides extensive analysis of new high-perfo ...
''.
*
Tremblay, Marc et al. (August 1996). "VIS Speeds New Media Processing". ''
IEEE Micro
''IEEE Micro'' is a peer-reviewed scientific journal published by the IEEE Computer Society covering small systems and semiconductor chips, including integrated circuit processes and practices, project management, development tools and infrastruc ...
''.
External links
An introduction to SPARC’s SIMD offerings (small tutorial)
{{Multimedia extensions
SIMD computing
Sun Microsystems hardware
SPARC microprocessor architecture