Paralelný počítačový systém typu SIMD (PPS SIMD predstavoval paralelný asociatívny počítačový systém, ktorý bol navrhnutý a zrealizovaný v osemdesiatych rokoch minulého storočia v rámci úlohy: III-8-3 “Paralelné a špecializované problémovo orientované počítačové systémy” a čiastkovej úlohy: III-8-3/05 “Paralelný počítačový systém novej generácie pre spracovanie obrazov, riadenie databáz a báz znalostí”. Pôvodne bol určený pre spracovanie obrazov a signálov a pre úlohy, v ktorých bolo potrebné súčasne spracovávať veľké množstvo údajov. Neskôr sa ukázalo, že počítače tohoto typu sú vhodné aj pre riešenie vedecko-technických problémov, v ktorých prevláda spracovávanie vzoriek údajov regulárneho charakteru. Takéto úlohy sa vyskytujú v oblasti meteorológie, jadrovej fyziky, geofyziky, chémie, a v rôznych simuláciách. Konkrétne v numerickej matematike je to riešenie systémov lineárnych rovníc, systémov obyčajných a diferenciálnych rovníc, maticové operácie a rôzne rýchle transformácie (Fourier, Walsh, Hadamard, atď). V oblasti nenumerickej matematiky je to spracovanie obrazov, rozpoznávanie scén s mobilnými objektami, rýchle spracovanie signálov z rôznych zdrojov, ako radar, sonar, atď., a paralelné spracovanie údajov a informácií v znalostných systémoch.
Architektúra a technické prostriedky PPS SIMD
PPS SIMD je modulárne organizovaný paralelný asociatívny počítačový systém architektúry SIMD (Single Instruction Multiple Data), v ktorom sa jeden inštrukčný tok vykonáva nad mnohonásobným dátovým tokom. Systém pozostával z dvoch základných častí: zo sekvenčnej a paralelnej jednotky a z voliteľnej vstupno/výstupnej jednotky. Táto štruktúra umožňovala paralelné vykonávanie skalárnych a vektorových procesov, ktoré mohli navzájom komunikovať a synchronizovať svoje činnosti.
Sekvenčná jednotka predstavovala nejaký komerčný procesor (PDP 11, SM50/50, alebo IBM PC). Jeho úlohou bolo riadenie činnosti systému, vybavovanie požiadaviek na vstupno-výstupné operácie, vykonávanie diagnostických funkcií a vykonávanie skalárnych výpočtov.
Paralelná jednotka pozostávala z riadiacej jednotky, z 1 až 32 asociatívnych modulov a z viacerých prepojovacích a medzistykových blokov.
Jadro systému tvoril asociatívny modul. Predstavoval aritmeticko-logickú jednotku, ktorá vykonávala operácie podľa inštrukcií riadiacej jednotky. Operácie sa vykonávali štandardne nad všetkými aktívnymi asociatívnymi modulmi súčasne. Asociatívny modul zahrňoval:
-
stránkovo organizovanú asociatívnu pamäť s multi-dimenzionálnym prístupom k údajom (MDA), pričom jedna stránka predstavovala maticu 256 slov x 256 bitov. V každom pamäťovom cykle bol vždy sprístupnený jeden 256 bitový vektor – bitový rez, slovný rez, alebo zmiešaný spôsob.
-
256 procesorových elementov, ktoré umožňovali paralelné vykonávanie aritmetických, logických a prehľadávacích operácií.
-
permutačnú sieť, ktorá vykonávala usporiadanie/pre-usporiadanie údajov v spojitosti s ich prenosom z/do pamäti MDA a taktiež umožňovala realizáciu funkcií manipulovania s údajmi.
-
rozhodovací blok, ktorý umožňoval získať všetky položky vyhovujúce zadanému kritériu prehľadávania údajov v pamäti MDA – asociatívny výber údajov.
Programové prostriedky PPS SIMD
Programové vybavenie paralelného počítačového systému PPS SIMD pozostávalo z nasledujúcich programových modulov:
-
operačný systém riadiaceho sekvenčného počítača (DOS RV, UNIX) a jeho štandardné systémové a používateľské programy
-
asemblerový jazyk ASPL (Associative Programming Language)
-
makroasembler (makroprocesor-asembler)
-
spojovací program (linker)
-
ukladací program (loader)
-
ladiaci program (debugger)
-
riadiaci program (monitor)
-
diagnostické programy
-
knižnica podprogramov
Toto základné programové vybavenie umožňovalo vytváranie zdrojových programov, ich konvertovanie do odpovedajúceho strojového kódu a ich vykonávanie. Používateľský program mohol pozostávať z dvoch častí: z programu, ktorý sa vykonával na sekvenčnom počítači a z programu, ktorý sa vykonával na paralelnom počítači, pričom obe časti mohli bežať súčasne a navzájom medzi sebou komunikovať.
Na tvorbu programov pre paralelnú časť systému bol vyvinutý špecializovaný, strojovo orientovaný jazyk symbolických adries “ASPL” (Associative Programming Language). Okrem inštrukcií a pseudoinštrukcií jazyk obsahoval aj makroinštrukcie, z ktorých boli vytvorené štandardné knižnice.
Bolo vytvorené rozšírenie jazykov Fortran a C o možnosti volania paralelných podprogramov čo poskytlo transparentnosť paralelného prostredia pre používateľa.