SWAR - SWAR

SIMD w rejestrze ( SWAR ), znany również pod nazwą „Packed SIMD” to technika wykonywania równoległych operacji na danych zawartych w rejestrze procesora . SIMD oznacza pojedynczą instrukcję, wiele danych . Taksonomia Flynna z 1972 klasyfikuje SWAR jako „przetwarzanie potokowe” .

Wiele nowoczesnych procesorów komputerowych ogólnego przeznaczenia ma pewne przepisy dotyczące SIMD , w postaci grupy rejestrów i instrukcji, jak z nich korzystać. SWAR odnosi się do korzystania z tych rejestrów i instrukcji, w przeciwieństwie do stosowania wyspecjalizowanych silników przetwarzania zaprojektowanych tak, aby lepiej radzić sobie z operacjami SIMD. Odnosi się to również do użycia SIMD z rejestrami ogólnego przeznaczenia i instrukcjami, które w tamtym czasie nie miały tego robić, za pomocą różnych nowatorskich sztuczek programowych.

Architektury SWAR

Architektura SWAR to taka, która zawiera instrukcje wyraźnie przeznaczone do wykonywania równoległych operacji na danych przechowywanych w niezależnych słowach podrzędnych lub polach rejestru. Architektura obsługująca SWAR to taka, która zawiera zestaw instrukcji wystarczających do umożliwienia niezależnego przetwarzania danych przechowywanych w tych polach, nawet jeśli architektura nie zawiera instrukcji, które są wyraźnie przeznaczone do tego celu.

Wczesnym przykładem architektury SWAR był Intel Pentium z MMX , który zaimplementował zestaw rozszerzeń MMX . Natomiast Intel Pentium nie zawierał takich instrukcji, ale nadal mógł działać jako architektura SWAR dzięki starannemu ręcznemu kodowaniu lub technikom kompilatora.

Wczesne architektury SWAR obejmują DEC Alpha MVI , PA-RISC MAX firmy Hewlett-Packard , MIPS MDMX firmy Silicon Graphics Incorporated oraz SPARC V9 VIS firmy Sun . Podobnie jak MMX, wiele zestawów instrukcji SWAR jest przeznaczonych do szybszego kodowania wideo.

Historia modelu programowania SWAR

Wesley A. Clark wprowadził w latach pięćdziesiątych operacje na danych z podziałem na podsłowa. Można to postrzegać jako bardzo wczesny poprzednik SWAR.

Wraz z wprowadzeniem rozszerzeń zestawu instrukcji multimedialnych MMX firmy Intel w 1996 r. powszechne stały się procesory do komputerów stacjonarnych z możliwością przetwarzania równoległego SIMD. Na początku instrukcje te mogły być używane tylko za pomocą ręcznego kodu asemblera.

Jesienią 1996 roku profesor Hank Dietz był wykładowcą na licencjackim kursie budowy kompilatorów w Szkole Inżynierii Elektrycznej i Komputerowej Uniwersytetu Purdue. Na ten kurs przydzielił serię projektów, w których studenci mieli zbudować prosty kompilator przeznaczony do MMX. Język wejściowy był dialekt podzbiorem MasPar „s MPL nazywa NEMPL (Nie Dokładnie MPL).

W trakcie semestru dla asystenta kursu, Randalla (Randy) Fishera, stało się jasne, że istnieje szereg problemów z MMX, które utrudniałyby zbudowanie back-endu kompilatora NEMPL. Na przykład MMX ma instrukcję mnożenia danych 16-bitowych, ale nie mnożenia danych 8-bitowych. Język NEMPL nie uwzględniał tego problemu, umożliwiając programiście pisanie programów, które wymagały mnożenia 8-bitowego.

Architektura x86 Intela nie była jedyną architekturą, która zawierała instrukcje równoległe typu SIMD. VIS firmy Sun , MDMX firmy SGI oraz inne zestawy instrukcji multimedialnych zostały dodane do istniejących architektur zestawów instrukcji innych producentów w celu obsługi tak zwanych nowych aplikacji multimedialnych . Rozszerzenia te miały znaczące różnice w precyzji danych i obsługiwanych typach instrukcji.

Dietz i Fisher rozpoczęli opracowywanie idei dobrze zdefiniowanego modelu programowania równoległego, który umożliwiłby programowanie docelowe model bez znajomości specyfiki architektury docelowej. Model ten stałby się podstawą rozprawy Fishera. Akronim „SWAR” został wymyślony przez Dietza i Fishera pewnego dnia w biurze Hanka w budynku MSEE na Purdue University. Odnosi się do tej formy przetwarzania równoległego, architektur zaprojektowanych do natywnego wykonywania tego typu przetwarzania oraz ogólnego modelu programowania, który jest rozprawą Fishera.

Problem kompilacji dla tych bardzo różniących się architektur został omówiony w artykule przedstawionym na LCPC98.

Niektóre zastosowania SWAR

Przetwarzanie SWAR znalazło zastosowanie w przetwarzaniu obrazu, parowaniach kryptograficznych, przetwarzaniu rastrowym. Obliczeniowa dynamika płynów i komunikacja.

Zobacz też

Bibliografia

  1. ^ Miyaoka, Y.; Choi, J.; Togawa, N.; Yanagisawa, M.; Ohtsuki, T. (2002). Algorytm generowania jednostek sprzętowych do syntezy rdzeni procesora z upakowanymi instrukcjami typu SIMD . Konferencja Azji i Pacyfiku na temat obwodów i systemów. 1 . str. 171-176. doi : 10.1109/APCCAS.2002.1114930 . hdl : 2065/10689 .
  2. ^ Flynn, Michael J. (wrzesień 1972). „Niektóre organizacje komputerowe i ich skuteczność” (PDF) . Transakcje IEEE na komputerach . C-21 (9): 948-960. doi : 10.1109/TC.1972.5009071 .
  3. ^ Fisher Randall J (2003). SIMD ogólnego przeznaczenia w rejestrze: przetwarzanie równoległe na mikroprocesorach konsumenckich (PDF) (doktorat). Uniwersytet Purdue.
  4. ^ B Fisher Randall J .; Henry G. Dietz (sierpień 1998). S. Chatterjee; JF Prins; L. Carter; J. Ferrante; Z. Li; D. Sehra; P.-C.Yew (wyd.). „Kompilacja SIMD w rejestrze”. Materiały XI Międzynarodowych Warsztatów Językowych i Kompilatorów dla Przetwarzania Równoległego .
  5. ^ Dietz, Hank. „Zagregowane algorytmy magii” .
  6. ^ Padwa, Flavio LC; Pereira, Guilherme AS; Neto, Jose P. de Queiroz; Campos, Mario FM; Fernandes, Antonio O. (2001). „Poprawa czasu przetwarzania dużych obrazów dzięki równoległości na poziomie instrukcji” (PDF) . Cytowanie dziennika wymaga |journal=( pomoc )
  7. ^ Grabher, Filip; Johann Großschädl; Dan Page (2009). Równoległa implementacja par kryptograficznych w oprogramowaniu . Wybrane obszary w kryptografii . Notatki z wykładów z informatyki. 5381 . s. 35-50. doi : 10.1007/978-3-642-04159-4_3 . Numer ISBN 978-3-642-04158-7.
  8. ^ Persada, Onil Nazra; Thierry Goubier (12-14 września 2004). „Przyspieszenie przetwarzania rastrowego z równoległością drobnego i grubego ziarna w GRASS”. Materiały z Konferencji Użytkowników FOSS/GRASS 2004 .
  9. ^ Hauser, Tomasz; TI Mattox; RP LeBeau; HG Dietz; PG Huang (kwiecień 2003). „Optymalizacja kodu dla złożonych mikroprocesorów stosowanych do oprogramowania CFD”. SIAM Journal on Scientific Computing . 25 (4): 1461-1477. doi : 10.1137/S1064827502410530 . ISSN  1064-8275 .
  10. ^ Spracklen, Lawrence A. (2001). SWAR Systems and Communications Applications (PDF) (doktorat). Uniwersytet w Aberdeen.

Linki zewnętrzne