VLIW: Różnice pomiędzy wersjami

Dodane 2 bajty ,  14 lat temu
→‎Historia: int., drobne redakcyjne
(→‎Opis: usuwam "a")
(→‎Historia: int., drobne redakcyjne)
 
== Historia ==
Termin VLIW, ioraz sama koncepcja architektury, została stworzona przez Prof. [[Josh Fisher]] w grupie badawczej na [[Uniwersytet Yale|Uniwersytecie Yale]] 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ęzyk programowania|językach programowania]]. 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ą Fisher'a było wskazanie że architektura docelowego [[procesor]]a 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 w Yale kompilując dla architektur takich jak Floating Point Systems FPS164, które miały złożony model programowy ([[ISA]]), model 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 samo-oczyszczają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 1980 roku, tak więc dodanie jeszcze jednego kawałka do tego całego skomplikowania powinien być co najwyżej małym kosztem.