Jump to content

Visual Instruction Set: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m spelling
Imgaril (talk | contribs)
Line 53: Line 53:
[[Category:SIMD computing]]
[[Category:SIMD computing]]
[[Category:Sun Microsystems hardware]]
[[Category:Sun Microsystems hardware]]
[[Category:SPARC microprocessor architecture]]


[[no:Visual Instruction Set]]
[[no:Visual Instruction Set]]

Revision as of 11:52, 28 September 2011

Visual Instruction Set, or VIS, is a SIMD instruction set for SPARC V9 microprocessors developed by Sun Microsystems. There are three versions of VIS: VIS 1, VIS 2 and VIS 2+. An updated version, VIS 3.0, was planned for implementation on the cancelled Rock processor.[1]

History

VIS 1 was introduced in 1994 and was first implemented by Sun in their UltraSPARC microprocessor (1995) and by Fujitsu in their SPARC64 GP microprocessors (2000).

VIS 2 was first implemented by the UltraSPARC III. All subsequent UltraSPARC and SPARC64 microprocessors implement the instruction set.

Differences vs x86

However VIS is not an instruction toolkit like Intel's MMX and SSE. MMX has only 8 registers shared with the FPU stack, while SPARC processors usually have a much larger number of registers (one characteristics of RISC architectures).

As with the SIMD instruction set extensions on RISC processors, VIS strictly conform 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, SSE3, SSE4, 3DNow!.

Basically, this RISC principle can make the pipelines more simple and efficient and consequently bring better throughput and performance.

However, Intel and AMD can easily add new instruction set extensions to x86/x64 processors while Sun must be very careful in adding new extensions to SPARC processors, which may be considered an advantage of CISC over RISC.

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 doesn't 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/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 -mvis option
  • Use inline assembly
  • Use inline template in VSDK, similar to compiler intrinsics, which have C function like interfaces
  • Use the mediaLib 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

  1. ^ Liang He (2005). "MT mediaLib for Chip MultiThreaded (CMT) Processors" (PDF). Sun Microsystems, Inc. Retrieved 2007-12-03. {{cite web}}: Unknown parameter |coauthors= ignored (|author= suggested) (help); Unknown parameter |month= ignored (help)