SWAR

S Vikipedije, slobodne enciklopedije

SIMD u registru ili SWAR (engl. SIMD within a register) je tehnika za obavljanje paralelnih operacija nad podacima koji se nalaze u procesorskim registrima. SIMD je skraćenica za "jednostruke instrukcije, višestruki podaci" (engl. single instruction, multiple data).

Većina modernih procesora za računare opšte svrhe imaju neke odredbe za SIMD, u formi grupe registara i instrukcija koji će ih iskoristiti. SWAR se odnosi na korišćenje tih registara i instrukcija, suprotno od korišćenja specijalizovanih endžina za obradu, koji su dizajnirani da bi bili bolji prilikom obrade SIMD operacija. Takođe se odnosi na upotrebu SIMD sa registrima opšte namene i instrukcija koje nisu namenjene da se izvršavaju istovremeno, putem raličitih novijih softverskih trikova.[1]

SWAR arhitekture[uredi | uredi izvor]

SWAR arhitektura je ona koja eksplicitno uključuje instrukcije koje su namenjene za obradu paralelnih operacija nad podacima koji su skladišteni u nezavisnim poljima registara. SWAR-sposobna arhitektura je ona koja sadrži skup instrukcija koji je dovoljan da dozvoli podacima (koji su skladišteni u ovim poljima) da budu tretirani nezavisno čak iako arhitektura ne obuhvata instrukcije koje su eksplicitno namenjene toj svrsi. Rani primer SWAR arhitekture je bio Intel Pentium sa MMX, koji je implementirao MMX skup ekstenzija. Intel Pentium, sa druge strane, nije obuhvatio takve instrukcije ali je mogao da se ponaša kao SWAR arhitektura preko pa+ljivo ručno-kodiranih ili kompajlerskih tehnika.

Rane SWAR arhitekture su obuhvatale Digital Equipment Corporation-ov Alpha procesor, Hewlett-Packard-ov PA-RISC, Silicon Graphics Incorporated-ov MIPS, i Sun-ov SPARC V9.[2]

Istorija SWAR programskog modela[uredi | uredi izvor]

Uvođenjem Intel-ovog MMX višemedijskog intrukcijskog skupa ekstenzija 1996., desktop procesori sa SIMD paralelnom obradom su postali češći. Ranije, ove instrukcije su mogle da se koriste samo preko ručno pisanog asemblerskog koda.

U jesen 1996., profesor Henk Dic (Hank Dietz) je bio instruktor na kursu Konstrukcije kopajlera za redovne studende na "Purdue univerzitetskoj školi za električni i računarski inženjering". Na ovom kursu, on je zadao seriju projekata u kojima su studenti pravili jednostavne kompajlere koji su išli u pravcu MMX. Kod kojim su pisali je bio podskup dijalekta MasPar-ovog MPL-a, zvanog NEMPL (engl. Not Exactly MPL).

Za vreme kursa tog semestra, asistentu Rendalu "Rendiju" Fišeru (Randall "Randy" Fisher) je postalo jasno da postoji broj problema sa MMX-om zbog kojih bi bilo teško napraviti bek-end (engl. back-end) NEMPL kompajlera. Na primer, MMX ima instrukciju za množenje 16-bitnih podataka ali nema za množenje 8-bitnih podataka. NEMPL jezik nije računao na ovaj problem, što je dozvoljavalo programeru da piše programe koji zahtevaju 8-bitna množenja.

Intel-ova x86 arhitektura nije bila jedina arhitektura koja je obuhvatila paralelne instrukcije poput SIMD. Sun-ov VIS, SGI-ov MDMX i drugi skupovi bišemedijskih skupova su dodati drugim postojećim skupovima instrukcija nekih proizvođača da bi podržali takozvane aplikacije "novih medija" (engl. new media). Ove ekstenѕije su imale značajne razlike u preciznosti podataka i tipova instrukcija koje su podržavali.

Dic i Fišer su počeli da razvijaju ideju o dobro definisanom paralelnom modelu programiranja koji bi dozvolio pogramiranju da označi model bez znanja o specifikacijama ciljane arhitekture. Ovaj model bi postao osnova za Fišerovu disertaciju. Akronim "SWAR" su osmislili Dic i Fišer jednog dana u Henkovoj kancelariji u MSEE zgradi na Purdue univerzitetu.[3] Odnosi se na ovu formu paralelne obrade, na arhitekture koje su dizajnirane da izvorno brše ovakve tipove obrade, i na programski model opšte namene koji je Fišerova disertacija.

Problem kompajliranja za ove široko varirajuće arhitekture je bio predmet diskusije na papiru koji je prezentovan na LCPC98[2]

Neke aplikacije koje koriste SWAR[uredi | uredi izvor]

SWAR obrada se koristila za obradu slika[4], kod kriptografskih parova[5], kod raster obrade[6], i komunikacije[7].

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ Fisher, Randall J (2003). General-Purpose SIMD Within A Register: Parallel Processing on Consumer Microprocessors (PDF) (Teza). Purdue University. 
  2. ^ a b Fisher, Randall J.; Henry G. Dietz (1998). S. Chatterjee, J. F.; Prins L.; Carter, J.; Ferrante, Z.; Li, D.; Sehr, P.-C.Yew, ur. „Compiling for SIMD Within A Register”. Proceedings of the 11th International Workshop on Languages and Compilers for Parallel Computing. Chapel Hill, North Carolina: Springer-Verlag. 
  3. ^ Dietz, Hank. „The Aggregate Magic Algorithms”. SIMD Within A Register (SWAR) Operations. 
  4. ^ Padua, Flavio L. C.; Guilherme A. S. Pereira; Jose P. de Queiroz Neto; Mario F. M. Campos; Antonio O. Fernandes (2001). „Improving processing time of large images by instruction level parallelism” (PDF). Arhivirano iz originala (PDF) 23. 09. 2015. g. Pristupljeno 23. 12. 2013. 
  5. ^ Grabher, Philipp; Johann Großschädl; Dan Page (2009). „On Software Parallel Implementation of Cryptographic Pairings”. Selected Areas in Cryptography: 35—50. doi:10.1007/978-3-642-04159-4_3. 
  6. ^ Persada, Onil Nazra; Thierry Goubier (12. 9. 2004). „Accelerating Raster Processing with Fine and Coarse Grain Parallelism in GRASS”. Proceedings of the FOSS/GRASS Users Conference 2004. 
  7. ^ Spracklen, Lawrence A. (2001). SWAR Systems and Communications Applications (PDF) (Teza). University of Aberdeen.