VLIW: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Wipur (dyskusja | edycje)
różne poprawki
Wipur (dyskusja | edycje)
m drobne redakcyjne
Linia 2: Linia 2:


== Opis ==
== Opis ==
Już od samego początku historii procesorów starano się zwiększać [[moc obliczeniowa|moc obliczeniową]] oraz szybkość wykonywania programu poprzez zwiększanie liczby jednostek wykonawczych w procesorach. Dzięki temu przy dogodnych warunkach udawało się wykonać więcej niż jedną instrukcję w tym samym czasie. Poprawienie warunków równoległego (i szybszego) wykonywania instrukcji zostało osiągnięte przez wprowadzenie techniki [[wykonywanie poza kolejnością|wcześniejszego wykonania instrukcji]]. Wszystkie te mechanizmy zwiększania równoległości wykonywania instrukcji zaszyte były w logice mikroprocesorów. W przeciwieństwie do innych architektur [[mikroprocesor]]ów, architektura VLIW charakteryzuje się maksymalnie daleko idącym uproszczeniem jednostek sterujących (CU) w samym mikroprocesorze. Logika została maksymalnie uproszczona aż do całkowitego zaniku niektórych elementów. Całą złożoność przepływu sterowania w mikroprocesorze, czyli wykonywania rozkazów (programu), przerzucono na barki oprogramowania – [[kompilator]]ów. Rezygnacja z całej tej logiki wymusiła dostarczenie do procesora wystarczającej liczby danych – sygnałów sterujących. Z tego powodu pojedyncze rozkazy posiadają w sobie już zdekodowane (lub wstępnie zdekodowane) sygnały sterujące, dane oraz, co najważniejsze, "instrukcje" dla konkretnych jednostek wykonawczych mikroprocesora. Tak stworzona pojedyncza instrukcja procesora VLIW ma wielkość rzędu setek bitów: 256 lub więcej.
Już od samego początku historii procesorów starano się zwiększać [[moc obliczeniowa|moc obliczeniową]] oraz szybkość wykonywania programu poprzez zwiększanie liczby jednostek wykonawczych w procesorach. Dzięki temu przy dogodnych warunkach udawało się wykonać więcej niż jedną instrukcję w tym samym czasie. Poprawienie warunków równoległego (i szybszego) wykonywania instrukcji osiągnięto przez wprowadzenie techniki [[wykonywanie poza kolejnością|wcześniejszego wykonania instrukcji]]. Wszystkie te mechanizmy zwiększania równoległości wykonywania instrukcji zaszyte były w logice mikroprocesorów. W przeciwieństwie do innych architektur [[mikroprocesor]]ów, architektura VLIW charakteryzuje się daleko idącym uproszczeniem jednostek sterujących (CU) w samym mikroprocesorze. Logika została uproszczona aż do całkowitego zaniku niektórych elementów. Całą złożoność przepływu sterowania w mikroprocesorze, czyli wykonywania rozkazów (programu), przerzucono na oprogramowanie – [[kompilator]]y. Rezygnacja z całej tej logiki wymusiła dostarczanie do procesora wystarczającej liczby danych – sygnałów sterujących. Z tego powodu pojedyncze rozkazy mają w sobie już zdekodowane (lub wstępnie zdekodowane) sygnały sterujące, dane oraz, co najważniejsze, „instrukcje” dla konkretnych jednostek wykonawczych mikroprocesora. Tak stworzona pojedyncza instrukcja procesora VLIW ma wielkość rzędu setek bitów: 256 lub więcej.


== Historia ==
== Historia ==

Wersja z 19:39, 24 sty 2019

VLIW (od ang. very long instruction word) – nazwa architektury mikroprocesorów z bardzo długim słowem instrukcji.

Opis

Już od samego początku historii procesorów starano się zwiększać moc obliczeniową oraz szybkość wykonywania programu poprzez zwiększanie liczby jednostek wykonawczych w procesorach. Dzięki temu przy dogodnych warunkach udawało się wykonać więcej niż jedną instrukcję w tym samym czasie. Poprawienie warunków równoległego (i szybszego) wykonywania instrukcji osiągnięto przez wprowadzenie techniki wcześniejszego wykonania instrukcji. Wszystkie te mechanizmy zwiększania równoległości wykonywania instrukcji zaszyte były w logice mikroprocesorów. W przeciwieństwie do innych architektur mikroprocesorów, architektura VLIW charakteryzuje się daleko idącym uproszczeniem jednostek sterujących (CU) w samym mikroprocesorze. Logika została uproszczona aż do całkowitego zaniku niektórych elementów. Całą złożoność przepływu sterowania w mikroprocesorze, czyli wykonywania rozkazów (programu), przerzucono na oprogramowanie – kompilatory. Rezygnacja z całej tej logiki wymusiła dostarczanie do procesora wystarczającej liczby danych – sygnałów sterujących. Z tego powodu pojedyncze rozkazy mają w sobie już zdekodowane (lub wstępnie zdekodowane) sygnały sterujące, dane oraz, co najważniejsze, „instrukcje” dla konkretnych jednostek wykonawczych mikroprocesora. Tak stworzona pojedyncza instrukcja procesora VLIW ma wielkość rzędu setek bitów: 256 lub więcej.

Historia

Termin VLIW oraz sama koncepcja architektury, została stworzona przez prof. Josha Fishera w grupie badawczej na Uniwersytecie Yale’a we wczesnych latach 80. Przed wprowadzeniem architektury VLIW, zagadnienia projektowania jednostek funkcjonalnych i zrównoleglania na poziomie instrukcji w oprogramowaniu były dobrze ugruntowane w praktyce i rozwijane jako poziomy mikrokod. Innowacja Fishera skupiała się na zaprojektowaniu kompilatora, który mógłby wyprodukować poziomy mikrokod z programów napisanych w normalnych językach programowania. Fisher zauważył, że aby osiągnąć wysoką wydajność wymagane będzie poszukiwanie zrównoleglenia ponad tymi, które były znajdywane wewnątrz podstawowych bloków. Zaprojektował technikę planowania obszarowego (ang. region scheduling) aby zidentyfikować równoległość ponad podstawowymi blokami. Śledzenie planowania (ang. trace scheduling) jest taką właśnie techniką i uzależnia planowanie najpierw dla najbardziej prawdopodobnej ścieżki wstawiając specjalny kod kompensujący obsługujący spekulacyjne ruchy takie jak druga najbardziej prawdopodobna ścieżka i tak dalej aż planowanie zostanie zakończone.

Drugą innowacją Fishera było wskazanie, że architektura docelowego procesora powinna być zaprojektowana tak, aby stała się sensownym celem dla kompilatora – kompilator i architektura VLIW musi być współtworzona. Było to częściowo zainspirowane trudnościami, jakie Josh zaobserwował jeszcze na Uniwersytecie Yale’a kompilując dla architektur takich jak Floating Point Systems FPS164, które miały złożony model programowy (ISA), który oddzielał instrukcje inicjujące od instrukcji zapisujących rezultat działania – prowadząc do potrzeby bardzo skomplikowanego algorytmu sterującego. Josh stworzył zbiór podstaw opisujących poprawną architekturę VLIW, takie jak samooczyszczające się potoki, szerokie wieloportowe zestawy rejestrów i architekturę pamięci. Te podstawy pomogły kompilatorom tworzyć szybki kod. Obecne kompilatory są o wiele bardziej skomplikowane niż te z lat '80 XX wieku, tak więc dodanie jeszcze jednego kawałka do tego całego skomplikowania powinno być co najwyżej małym kosztem.

Fisher opuścił Uniwersytet Yale’a w 1984 i założyć firmę o nazwie Multiflow, razem ze wspólnikami Johnem O'Donnellem i Johnem Ruttenbergem. Multiflow produkował serię minisuperkomputerów VLIW o nazwie TRACE. Sprzedał pierwsze swoje maszyny około 1988. Maszyna ta mogła wykonywać 28 operacji równolegle z każdą instrukcją. Firma Multiflow upadła w 1990. Jednym z licencjobiorców tej techniki jest Hewlett-Packard, do którego dołączył Fisher po upadku jego firmy.

Procesory VLIW

Obecnie procesory VLIW są oparte na architekturze RISC, zazwyczaj z czterema lub maksymalnie ośmioma jednostkami obliczeniowymi. Po normalnej kompilacji programu, kompilator VLIW porządkuje kod na ścieżki, które wprost nie posiadają jakichkolwiek zależności. Następnie są one dzielone na cztery lub więcej części (jeden dla każdej jednostki obliczeniowej CPU) i pakowane razem w większe instrukcje z dodatkową informacją odnośnie do jednostki, na której ma być wykonywana. Rezultatem tego jest pojedynczy wielki kod operacji (stąd nazwa Very Long).

Przykładowe procesory o architekturze VLIW: TriMedia firmy Philips, Intel Itanium IA-64, rodzina C6000 firmy Texas Instruments.

Zobacz też