Visual Instruction Set
A Visual Instruction Set, röviden VIS, a Sun Microsystems által a SPARC V9 mikroprocesszorokhoz kifejlesztett SIMD utasításkészlet-kiterjesztés. A VIS-nek öt változata létezik: VIS 1, VIS 2, VIS 2+, VIS 3 és a VIS 4.[1]
Történet
[szerkesztés]A VIS 1 1994-ben jelent meg, elsőként a Sun UltraSPARC (1995) és a Fujitsu SPARC64 GP mikroprocesszoraiban (2000) volt megvalósítva.
A VIS 2 első implementációja az UltraSPARC III processzorban volt. Minden ez után következő UltraSPARC és SPARC64 mikroprocesszor megvalósítja az utasításkészlet.
A VIS 3 először a SPARC T4 mikroprocesszorban jelent meg.
A VIS 4-et először a SPARC M7 mikroprocesszorban valósították meg.
Eltérések az x86 architektúra hasonló kiterjesztéseitől
[szerkesztés]A VIS nem egy utasítás-eszközkészlet, mint az Intel MMX és SSE kiterjesztései. Az MMX-nek csak 8 regisztere van megosztva az FPU-ban alkalmazott veremmel, míg a SPARC processzoroknak 32 regisztere van, amelyek a dupla pontosságú (64 bites) lebegőpontos regiszterek álneveiként használhatók.
Más RISC processzorok SIMD utasításkészlet-bővítéseihez hasonlóan, a VIS is szigorúan megfelel az RISC fő elvének, így az utasításkészlet tömör és hatékony.
Ez a kialakítás nagyon különbözik a CISC processzorokon kialakított hasonló kiterjesztésektől, mint amilyen az MMX, SSE, SSE2, SSE3, SSE4 és a 3DNow!.
A programozóknak gyakran több VIS utasítást kell használniuk egy művelet elvégzéséhez, amely elvégezhető egy MMX vagy SSE utasítással, de a kevesebb utasítás nem garantálja automatikusan a jobb teljesítményt.
Funkcionalitás
[szerkesztés]A VIS újrahasznosítja a SPARC V9 meglévő 64 bites lebegőpontos regisztereit, több 8, 16 vagy 32 bites egész szám érték tárolására. Ebből a szempontból a VIS jobban hasonlít az MMX kialakításához, mint más SIMD architektúrák, például az SSE/SSE2/AltiVec.
A VIS számos műveletet tartalmaz, amelyek elsősorban a grafikát támogatják, így a legtöbbjük csak egész értékekkel használható. Ezek a között megtalálható például a 3D-ről 2D-re történő konverzió, élfeldolgozás és pixeltávolság számítása.
A VIS a programkódban négy módon használható:
- A GCC
-mvis
opciójával, ekkor a fordítóprogram automatikusan állítja elő a könyvtári függvényhívásokat és generálja a gépi kódú utasításokat - Inline assembly használatával: egyes magas szintű nyelvek biztosítanak beágyazott assembly kód lehetőséget
- Inline sablonok (template-ek) használatával a VSDK-ban, ez hasonlít a compiler intrinsics, a fordítóprogram által behelyettesített függvényhívásokhoz, amelyek C funkcióhoz hasonló interfész-felülettel rendelkeznek
- A mediaLib, a Sun hordozható multimédiás könyvtárának használatával, amely C függvény-interfészekkel rendelkezik. Ez a VIS-t használja a SPARC platformokon (és az MMX/SSE/SSE2 kiterjesztéseket az x86/x64 platformokon) a multimédiás alkalmazások végrehajtásának felgyorsítására.
Jegyzetek
[szerkesztés]- ↑ Liang He: MT mediaLib for Chip MultiThreaded (CMT) Processors (PDF). Sun Microsystems, Inc., 2005. május 1. [2006. december 30-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. december 3.)
Fordítás
[szerkesztés]Ez a szócikk részben vagy egészben a Visual Instruction Set című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
Források
[szerkesztés]- Gwennap, Linley (1995. december 5.). "UltraSparc Adds Multimedia Instructions". Microprocessor Report. (Az UltraSparc új multimédiás utasításairól) (angolul)
- Tremblay, Marc et al. (1996. augusztus). "VIS Speeds New Media Processing". IEEE Micro. (angolul)
További információk
[szerkesztés]- An introduction to SPARC’s SIMD offerings (small tutorial) (Bevezetés a SPARC SIMD kínálatába, kis bemutató) (angolul)
- UltraSPARC and VIS Instruction Set Extensions (UltraSPARC és VIS utasításkészlet-bővítések) (angolul)
- GCC SPARC VIS Built-in Functions (GCC SPARC VIS beépített funkciók) (angolul)
Kapcsolódó szócikkek
[szerkesztés]