VYSOCE VÝKONNÝ PROCESOR PRO MULTIMEDIÁLNÍ APLIKACE

MAJC-5200

MAJC-5200

Přehled Nová architektura mikorprocesorů MAJC (Microprocessor Architecture for Java Computing) podporuje paralelizmus na těchto úrovních: více procesorů na čipu,vertical micro threading, využívání velmi dlouhých instrukcí (VLIW) a SIMD. První implementace, MAJC-5200, využívá některé výhody architektury MAJC k realizaci vysoce výkonného multimediálního procesoru. Na čipu jsou integrovány dva procesory,které běží na 500 MHz. Poskytují až 6.16 GFLOPS a 12.33 GOPS a vysokorychlostní rozhraní, které umožňuje I/O datový tok až 4.8 GB/s. Tento čip je vhodný pro spoustu aplikací, počínajíce grafickými, multimediálními až po digitalní zpracování signálů v např. telekomunikacích.

  1. Úvod
  2. Architektura
  3. Mikroprocesor MAJC-5200
    1. Stavební Bloky
    2. MAJC CPU
  4. Instrukční Sada
  5. Výkonnost v Multimediálních Aplikacích
  6. Závěr
  7. Literatura

1. Úvod

MAJC-5200 je výkonný všeobecně použitelný mikroprocesor (založen na MAJC [1]) obzvláště vhodný pro použití v multimédiích. Procesor je zaměřen na komunikační a síťové zařízení, různé aplikační servry a Java aplikace. Je to multiprocesorový systém, který na čipu integruje dva procesory, paměti, PCI port, dva širokopásmové I/O porty, podporu pro přenos dat a propojení všech bloků. Tento článek popisuje microprocesor MAJC-5200 a ukazuje jeho možnosti v multimediálních aplikacích. Popis začíná přehledem o architektuře MAJC v části 2. Část 3 se zaměřuje na microprocesor MAJC-5200. Na CPU, jeho pipelining, různé funkční bloky, paměťový subsystém a externí rozhraní. V sekci 4 je zmínka o instrukční sadě implementované v MAJC-5200. V části 5, je porovnání rychlosti v různých aplikacích. Závěrečné poznámky obsahuje část 6.

2. Architektura

Architektura MAJC je určena pro rychlé zpracování velkého množství dat, především audio a video. Byl vyvinut především pro překladač JAVA, umožňuje sdílení úloh, programování na celkem vysoké úrovni a snadnou implementaci. Jak již je výše napsáno, MAJC je architektura, vužívající paralelní struktury. Na nejvyšší úrovní je paralelizmus dán více procesory na čipu. Na další úrovni je schopnost vertikálního vícenásobného sdílení, která má hardwarovou podporu. Další stupeň v hierarchii paralelismů je vylepšená metoda velmi dlouhých instrukčních slov (VLIW). Insrukční slovo může obsahovat až 4 insrukce délky 32 bitů. Maximální délka instrukce je 128. Nejnižší úroveň paralelizmu je SIMD (single instruction multiple data).

3. Mikroprocesor MAJC-5200

3.1. Stavební Bloky

První implementace architektury MAJC, MAJC-5200, je 500 MHz, dvou-procesorový čip s vysokou I/O šíří pásma. Implementuje několik klíčových výhod paralelizmu architektury MAJC. Dva CPU sdílejí čtyř cestnou set-associative 16-KB data cache a společné externí rozhraní. Oba procesory mají podporu MAJC VLIW . Každý CPU obsahuje vlastní dvou cestnou set-associative instruction cache o velikosti 16 KB. Hlavní paměť je přímá Rambus DRAM (DRDRAM) s rozhraním podporujícím přenos 1.6 GB/s. Přímé rozhraní k 32-bitové/66MHz PCI poskytuje DMA a programovatelné I/O porty (PIO), které mohou přenášet až 264 MB/s. Nalezneme ještě dvě rychlá rozhraní 64-bitů/250MHz, které mohou přenášet až 4.0 GB/s:North a South UPA (Universal Port Architecture nebo-li UPA jsou rozhraní pro grafické a multiprocesorové sestavy systémů založených na UltraSparc [3]). Blok NUPA obsahuje 4 KB vstupní FIFO buffer, který je taktéž dosažitelný pro oba procesory. Další specializovaný blok na čipu je grafický peprocesor (GPP). GPP má vestavěnou podporu pro real-timeovou 3D dekompresi,rozbor dat a rozdělení dat pro oba procesory. Na čipu je Data Transfer Engine (DTE) ovládá DMA. Blokový diagram čipu je zobrazen v Obrázku 1.

3.2. MAJC CPU

Jádro každého procesoru - na obr.2 - má čtyři funkční bloky, FU0 až FU3. VLIW instrukce muže mít v sobě jednu, dvě, tři nebo čtyři obyčejné instrukce. Dvou-bitová hlavička indikuje šířku instrukce, potlačují-ce nezbytné nopy v toku instrukcí. První instrukce v balíku musí být FU0 instrukce, jenž může být paměťová operace, kontrola běhu programu (větvení, skoky, etc.) nebo operace ALU (shift,add). FU0 hraničí s LSU (load -store) kvůli zvýšení rychlosti paměťových operací. Ještě některé další instrukce jsou prováděny FU0. Instrukce pro FU1-3 jsou ryze výpočetního typu.

Obr. 1 MAJC-5200 Blokový diagram

Pipelining Během přípravné fáze jsou 32-bytová data přenesena z instrukční cache. V další části se přiřadí balík 16 -bytových instrukcí podle hlaviček Přiřazené instrukce jsou přesunuty do instrukčního bufferu a posunovány do dekódovací části. V této části se hledají bity věstící dělění programu, aby se proc. připravil na statickou i dynamickou predikci. V další části se instrukce dekóduje a čte se operand z registru. Instrukce je poté posunuta do fronty ve funkčních jednotkách.

Obr. 2 MAJC CPU

Výsledky jsou ukládány do registru skrz část write-back(WB). Obecně jsou vypočítané výsledky viditelné jiným funkčním jednotkám z Trap/WB části, s nějakou optimalizací pro výsledky FU0 a FU1. Většina instrukcí zabírá jeden cyklus, některé dva, výjjimečně čtyři. Z funkčních jednotek jsou výsledky předány mladším instrukcím hned, jakmile je to možné. Výsledky z FU0 jsou posunuty do FU2 a FU3 se zpožděním jednoho cyklu a jsou k disozici FU1 v dalším cyklu. Výsledky FU1 jsou posunuty do FU0 bez zpoždění.

Každý CPU má celkem 224 logických registrů rozdělěných do 96 globálních, přístupných všem jednotkám, 128 lokálních a 32 pro každý FU. Load/Store jednotka (LSU) na každém CPU obsluhuje všechny paměťové operace do a z registrů. LSU vehementně implementuje non-blocking memory subsystemt, aby umožnil vícenásobný nezávislý přístup do paměti. To poskytuje buffering pro více než pět loads a osum stores. To umožňuje maximálně čtyři cache mezery bez blokování běhu programu. Bezchybné předzpracovávací instrukce, které předzpracovávají blok dat (32-byte) z hlavní paměti do data cache jsou také řazeny v LSU. Přístup do data cache je hbitý, umožňující číst dvakrát v jednom cyklu.

4. Instrukční Soubor

MAJC-5200 poskytuje podporu pro 64-,32-,16- a 8-bitové integery a 32- a 16- bitová čísla s pevnou řádovou čárkou. Single (32-bitové) a double (64-bitové) čísla s plovoucí řádovou čárkou (podle IEEE 754-1985) jsou také podporována. Množství load/store operací podporuje čísla ve tvaru: byte, short, word, long a group (1,2,4,8 a 32 bytová). Připravené instrukce jsou potřeba v programech s předpovídatelnými vzorovými datovými procesy společně s multimediálním a image/grafickým procesingem a procesingem jiných signálů. MAJC-52000 implementuje skupinu podmíněných větvení, volání a skoků jako FU0 instrukcí pro kontrolu plynutí programu. Předpovídání instrukcí, které jsou podmíněně vybírány (FU1-3), transportovány (všechny FU) a ukládat (FU0) usnadňuje kompileru generovat kód s menším množstvím podmíněných skupin. Standardní logické operace - AND, OR, XOR, logické a aritmetické posuvy, aritmetické operace, sčítání a odčítání mohou být na 32 biteových integerech počítány ve všech FU. Všechny jednotky jsou způsobilé pro nastavování libovolných konstant. FU1-3 současně provádí saturované sčítání a odčítání 32-bitových integerů. FU1-3 ještě provádějí dvoucyklové násobení 32-bitových integerů a násobící sčítání (nebo násobící odečítání).U těchto instrukcí probíhá plný pipelining. Při násobení dvou 32-bitových integerů je výsledkem 64-bitový výsledek, z něhož se dále bere jen horní část. Integerová (32-bitová) instrukce pro dělění není vhodná pro pipelining a je přístupná jen jako instrukce FU0.

SIMD verze aritmetických a logických operací přístupná v FU1-3 zabírá pouze jeden cyklus. Operuje s 16-ti bitovými páry short integer nebo S.15 nebo S.13 formáty pevné řádové čárky (Sign. integer. fraction). Nadto čtyři různé saturační módy mohou automaticky vytvářet saturovaný výsledek. Násobící-sčítací část s plným pipeliningem má obě verze (regulerní a saturované ) operující na stejném typu dat. Dále je k dispozici tzv. tečkový součin, který zajišťuje 32-bitovou přesnost násobením dvou 16-bitových integerů. Lze také získat saturovaný S.31 součin dvou S.15. Další sada uniFU0 SIMD instrukcí jsou 6-ti cyklové paralelně dělící a reciproční mocninné pro S.13 pevnou řádovou čárku. Tyto instrukční formy jsou základem pro vysoce výkonné DSP, media a grafické úlohy. Násobící-sčítající instrukce a bodové součiny umožňují operace filtrování a transformace a FU0 SIMD pomáhání grafickým rutinám. Na 500 MHz je maximální výkon větší, než 12.33 GOPs pro 16-ti bitové kvantování.

Single precision floating point instrukce jsou stejně výkonné. Sčítání, odčítání, násobení a společné násobení-sčítání s plným pipeliningem jsou přístupné v FU1-3 s možností čtyř cyklů. Dělení a recipročně umocňovací instrukce implementované FU0 zabírají cyklů šest. Tyto procesor činí schopným 6.16 GFLOPS na 500MHz. Výsledek je vysoká přesnost FFT a grafických transformačních rutin s plovoucí čárkou. Funkční jednotky FU1-3 provádějí v double precision sčítací, odčítací a násobící operace s plovoucí čárkou. Tyto instrukce mají částečný pipelining pro optimální výkon a jednodušší kompilaci. Jiná instrukce s pohyblivou čárkou (jednoduchá nebo dvojitá přesnost) zahrnuje minimum a maximum dvou čísel a negaci operace.

Instrukce bitových posunů v FU1-3(bitové pole extrahuje a vede k detekci nul) jsou užitečné v rozbalování zabalených bitových toků a při ovládání datové komunikace. Bitová extrakce je také víceúčelová instrukce neboť extrahované pole může spojit dva registry. Instrukce pro posouvání Bytů v FU1-3 provádí mnohostranná permutační funkce užitá pro řazení, vyhledávání a nulování bytových polí v registrech. Také existuje instrukce pro zjišťování vzdálenosti dvou vektorů (L1-norma).Tato instrukce, kombinovaná s bytovým posunem umožňuje výborný výkon ve video aplikacích.

5. Výkon v multimediálních aplikacích

MAJC-5200 se může stát stěžejním mikroprocesorem v oblasti zahrnující výkonné grafické systémy, telekomunikační infrastruktury a zpracování dokumentů. Pro 3-D grafické zpracování má MAJC-5200 dvě výhody, které výrazně zlepšují výkon: grafický pre-procesor(GPP) a dva CPU. GPP provádí předzpracování a dekompresi informací a distribuuje nekompresované informace CPU používajíc rovnovážný nahrávací mechanismus. Geometrie transformace jsou akcelerovány užitím CPU. Tato architektura s pipeliningem zajišťuje výkon mezi 60 a 90 miliony trojúhelníků za vteřinu.

Výkon ve video a image procesingu je zajištěn hlavně instrukčním souborem, který je použitelný pro klíčových klíčových jáder. Tabulka 1 ukazuje několik málo videosignálových benchmarků a výkon MAJC s užitím jednoho CPU. Samozřejmě je v mnoha aplikacích možné obdržet vyšší výkon využitím obou CPU. Mnohostranné bitové a bytové operace pomáhají variabilní délce dekódování spolu s image a video dekompresí. Kombinace tohoto s ILP a softwarovým pipeliningem je možné dekódovat symboly různých délek a urychlit inverzní zip-zag transformaci a inverzní kvantizaci [5]. Pro výpočty pro video encoder jsou důležitým zrychlením bytové permutace a operace bodové vzdálenosti. Užitím logaritmického vyhledávacího mechanismu [5], pohyb vektoru s pm 16 rozsahem může být nalezena v 3000 cyklech. Velký soubor registrů napomáhá operaci konvoluce, neboť filtrační koeficienty, obrázková data a interpolované hodnoty mohou být jednoduše uloženy v registrech, aniž by bylo nutné používat paměť.

Tabulka 1. Video/Image Processing Benchmarks (Ze Simulátorů)

Benchmark Kernel Na ´jeden MAJC CPU
8x8 IDCT (IEEE 1180 Compliant) 200 cyklů
8x8 IDCT (Non-compliant) 147 cyklů
8x8 DCT + Quantization 138 cyklů
MPEG-2 VLD+IZZ+IQ 27 MSymbols/sec
Motion Est./ 16 MV range 3000 cyklů
5x5 Convolution (512x512) 1.65 Mcyklů
512x512 Color Conversion 0.9 MCyklů

Výkon MAJCu pro zpracování jednorozměrného signálu je také udán v tabulce 2. Výkon původně vychází z násobících-sčítacích instrukcí a korespondující paměťové šíři tak, aby aktivně udržovala funkční jednotky využité. Prováděné počinky jsou často užívány pro porovnání vlastností digitálních signálových procesorů a jsou užívány v komunikační technice a při zpracování řečových signálů. Zajímavým bodem je, že narozdíl od tradičních DSP, které mají menší soubory registrů, je MAJC-5200 schopný počítat účinný Radix-4 FFT algoritmus. Všechny údaje v popisované tabulce jsou v plovoucí řádové čárce.

Dále byly vyvinuty různé aplikace. Výsledky jsou zaznamenány v tabulce 3. Opět byl použit simulátor pro jeden CPU MAJC na 500MHz.

6. Závěr

MAJC-5200, první implementace v MAJC architektuře, byla zhruba popsána. NA 500MHz procesor zpracovává více než 6 GFLOPS a 12 GOPS hrubého výkonu. Výkon MAJC-5200 v grafice, image/video procesingu a signálovém procesingu byl popsán na důkaz použitelnosti v numerických a vysoce spolehlivých operacích.

Tabulka 2. Signal Processing Benchmarks (Ze simulátorů)

Benchmark Kernel Per Single MAJC CPU
Kaskáda osmi bikvadů 2.řádu 63 cyklů
64-sample, 64-tap FIR 2757 cyklů
64-sample, 16-tý řád IIR 2021 cyklů
64-sample, 64-tap Complex FIR 8643 cyklů
Single Sample, 16th order LMS 64 cyklů
Max Search, maxim. hodnota ze 40 prvků 126 cyklů
Radix-2, 1024-point complex FFT 25196 cyklů
Radix-4, 1024-point complex FFT 16996 cyklů
Bit reversal, 1024-point 2484 cyklů

Tabulka 3. Výkon v aplikacích(Ze simulátorů)

Aplikace Využití jednoho MAJC-5200 CPU
G.723.1 (encode) - float (1% without memory effects)
G.729.A (encode) - float 2.0% (1% without memory effects)
MPEG-2 Video Decode
(4Mbps, MP@ML)
50% (37 % without memory effects)
AC-3, MP2 Audio Decode 3-5 %
JPEG Baseline Encode 40 MB/s
Proprietary Lossless Coding 40 MB/s
H.263 Codec
(128 kbps, 15 fps, CIF)
50 %

7. Literatura

  1. M.Tremblay ``A microprocessor architecture for the new millennium,'' Hot Chips 11, Palo Alto, CA, August 1999.
  2. L.Kohn, et al ``Visual Instruction Set (VIS) in UltraSparc,'' Proceedings of Compcon, IEEE CS Press, pp. 462-469,1995.
  3. Sun Microsystems, Inc. http://www.sun.com/microelectronics/UltraSPARC/
  4. M. Tremblay, ``A VLIW convergent multiprocessor system on a chip,'' Microprocessor Forum, San Jose, CA, Oct. 1999.
  5. V. Bhaskaran and K. Konstantinides, Image and Video Compression Standards: Algorithms and Architecture, Second Edition, Kluwer, Boston, 1997.

*