VLIW: Różnice pomiędzy wersjami

Dodane 64 bajty ,  14 lat temu
+lnk
(+lnk)
'''VLIW''' ([[ang.]] ''Very Long Instruction Word'') – nazwa architektury mikroprocesorów z bardzo dużym słowem instrukcji.
 
== Opis ==
W przeciwieństwie do innych architektur [[mikroprocesor|mikroprocesorów]], architektura ta charakteryzuje się maksymalnie daleko idącym uproszczeniem jednostek sterujących (CU) w samym mikroprocesorze. Już od samego początku historii procesorów starano się zwiększać [[moc obliczeniowa|moc obliczeniową]] a także 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 wcześniejszego wykonania instrukcji ([[język angielski|ang.]] [[Out-of-Order Execution]]). Wszystkie te mechanizmy zwiększania równoległości wykonywania instrukcji zaszyte były w logice mikroprocesorów. W architekturze VLIW cała ta 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|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" dedykowane 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, i sama koncepcja architektury, została stworzona przez Prof. Josh Fisher w jego grupie badawczej na [[Uniwersytet Yale|Uniwersytecie Yale]] we wczesnych latach 80. Przed wprowadzeniem architektury VLIW, pojęcie planowania(?) jednostek funkcjonalnych i zrównoleglania na poziomie instrukcji w oprogramowaniu było dobrze ugruntowane w praktyce jako rozwijanie poziomego mikrokodu. Innowacją Fishera skupiało się na zaprojektowaniu kompilatora który mógł wyprodukować poziomy mikrokod z programów napisanych w normalnych [[język programowania|językach programowania]]. Zauważył że aby osiągnąć wysoką wydajność będzie wymagane poszukanie zrównoleglenia ponad tymi które były znajdywane wewnątrz ogólnych podstawowych bloków. Zaprojektował technikę planowania obszarowego (ang. region scheduling) aby zidentyfikować równoległość ponad podstawowymi blokami. Śledzenie Planowania (ang. Trace Scheduling) jest taka własnie 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ą Fisher'a było wskazanie że architektura docelowego [[Procesor|CPU]] powinna być zaprojektowana, tak, aby być sensownym celem dla kompilatora – kompilator i architektura VLIW musi być współtworzona. Było to częściowo zainspirowane trudnościami jakie Josh zaobserwował jeszcze w Yale kompilując dla architektur takich jak Floating Point Systems FPS164, które miały złożony model programowy ([[ISA]]) który oddzielał instrukcje inicjalizują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.
32 349

edycji