Јако дуга реч инструкције или VLIW се односи на архитектуру процесора дизајнирану да искористи предност паралелности на нивоу инструкције (ILP). Док конвенционални процесори углавном прихватају програме који издају инструкције једну за другом, VLIW процесор прихвата програме који експлицитно могу дефинисати које ће се инструкције извршавати истовремено (тј. паралелно). Циљ овог типа процесорске архитектуре је да постигне веће перформансе без додатне комплексности неких других приступа.
Преглед Традиционални приступ побољшању перформанси у процесорским архитектурама је укључивао разбијање инструкција на под-кораке да би се инструкције могле извршавати делимично паралелно (проточна обрада), тако што би се индивидуалне инструкције извршавале потпуно независно у различитим деловима процесора (суперскаларна архитектура), или чак у редоследу супротном од онога како је записано у програму (извршавање ван реда). Сви ови приступи укључују повећану сложеност харвера (вишу цену, већа електронска кола, већу потрошњу струје) јер процесор мора суштински све одлуке да прави интерно. VLIW приступ, за разлику од тога, зависи од самих програма код којих мора бити направљена одлука које ће се инструкције извршавати паралелно и како ће се решавати конфликти. У пракси ово значи да компајлер (софтвер који генерише финални програм) постаје доста сложенији, али је хардвер једноставнији од већине других приступа паралелизму.
Као што је случај са сваком новом архитектуром, концепт је употребљив само онолико колико га генерисање кода учини. Архитектура дизајнирана за употребу у обради сигнала може имати одређене наменске инструкције ради убрзања одређених компликованих инструкција као што је брза Фуриерова трансформација (FFT) или одређена израчунавања која се користе у томографским контекстима. Међутим, ове оптимизације су неупотребљиве ако компајлери нису способни да примете релевантне конструкције у изворном коду и конструишу машински код који ће правилно искористити напредне инструкције процесора. Услед тога, програмери морају бити способни да пишу код тако да компајлеру буде лак за читање.
Мотивација Процесор који извршава сваку инструкцију једну за другом (нпр. скаларна архитектура без проточне обраде) може користити процесорске регистре неефикасно, потенцијално доводећи до лоших перформанси. Перформанса моће бити унапређена извршавањем различитих под-корака секвенцијалних инструкција паралелно (ово је проточна обрада), или чак извршавати инструкције потпуно паралелно као код суперскаларних архитектура. Додатна унапређења се могу постићи извршавањем инструкција редоследом другачијим од онога како је писано у програму; ово се зове извршавање ван реда.
Ове све три технике имају цену сложености харвера. Пре извршавања инструкција паралелно, процесор мора проверити да инструкције немају међусобну зависност. На пример, ако се резултат прве инструкције користи као улаз друге инструкције, онда се те две инструкције не могу извршити паралелно нити се друга инструкција сме извршити пре прве. Модерни процесори са ванредним извршавањем су повећали хардверске ресурсе посвећене распорели инструкција и одређивању међузависности.
VLIW приступ, за разлику од тога, извршава операције паралелно на основу фиксног распореда одређеног приликом компилације програма. С обзиром да се одређивање распореда инстукција (укључујући које се операције могу извршавати паралелно) ради од стране компајлера, процесору није потребан хардвер за расподелу који три горе наведене технике захтевау. Као резултат, VLIW процесори пружају значајну рачунарску моћ са мање хардверске сложености (али већом сложености компајлера) него што је случај са већином суперскаларних процесора.
Дизајн Код суперскаларног дизајна, број извршних јединица је невидљив са аспекта скупа инструкција. Свака инструкција представља тачно једну операцију. За већину суперскаларних архитектура, ширина инструкције је 32 бита или мање. VLIW је тип MIMD-а.
За разлику од тога, једна VLIW инструкција представља вишеструке операције; специфично, једна интрукција представља бар једну операцију за сваку извршну јединицу уређаја. На пример, ако VLIW уређај има 5 извршних јединица, онда би VLIW инструкција за тај уређај имала 5 операционих поља, где би свако поље одређивало одређивало операцију за једну извршну јединицу. Да би се то постигло, VLIW инструкције су углавном бар 64 бита широке, а на неким архитектурама и много шире.
На пример, ово је инструкција за SHARC. У једном циклусу, она извршава множење са покретним зарезом, сабирање са покретним зарезом и 2 операције аутоинкрементирања. Све ово стаје у једну 48-битну инструкцију:
f12=f0*f4, f8=f8+f12, f0=dm(i0,m3), f4=pm(i8,m9);
Још од најранијих дана рачунарске архитектуре, неки процесори су добили неколико додатних аритметичко логичких јединица (ALU) које раде паралелно. Суперскаларни процесори користе хардвер да одлуче које се операције могу извршавати паралелно. VLIW процесори користе сотфвер (компајлер) да одлуче које ђе се операције извршавати паралелно. С обзиром да је сложеност распоређивања инструкција пренета на компајлер, сложеност хардвера може бити знатно смањена.
Сличан проблем се јавља када се резултат паралелизоване инструкције користи као улаз гранање. Већина модерних процесора „нагађа“ које ће гранање или скок бити предузето и пре него што се рачунање заврши, тако да може унапред да учита инструкције за ту грану, или (код неких архитектура) да их рачуна спекулативно. Ако процесор погреши при нагађању, све ове инструкције и њихов контекст морају бити „одбачене“ и затим поново учитане исправне, што захтева време.
Ово је довело до знатно сложеније логике покађања инструкција, и једноставност оригиналног RISC дизајна је изгубљена. VLIW нема ову логику, и стога има нижу потрошњу енергије, вероватно мање дизајнерских дефеката и других негативних особина.
Код VLIW-а, компајлер користи хеуристике и профиле информација да погоди смер гране. Ово му омогућава да спекулативно помери и преуреди редослед операција пре него што крене гранање, при чему даје предност највероватнијем путу који очекује кроз грану. Ако гранање крене непредвиђеним путем, компајлер је већ генерисао компензаторни код да би одбацио спекулативне резултате ради чувања програмске семантике.
Акроним VLIW се такође може односити на Променљиву дужину речи инструкције, процесорски скуп инструкција дизајниран да учитава (или копира) дословну вредност броја машинског кода у RAM на чипу ради бржег процесорског декодирања.
Векторска процесорска језгра (SIMD) се могу комбиновати са VLIW архитектуром као што је Fujitsu FR-V, додатно повећавајући пропустност и брзину.
Историја Термин VLIW, и концепт саме VLIW архитектуре, је измислио Josh Fisher у својој истаживачкој групи на Yale универзитету током раних 1980их. Његов оригинални развој распоређивања траса као компилационе технике за VLIW је развијен када је био апсолвент на New York универзитету. Пре VLIW-а, концепт прерасподеле функционалних јединица и паралелизма на инструкцијском нивоу у софтверу је био добро познат у пракси развоја хоризонталног микрокода. Фишерове инвоације су се односиле на развој компајлера који би генерисао хоризонтални микрокод из програма писаних у обичним програмским језицима. Схватио је да ради постизања добрих перформанси и рада на широкоулазним машинама, мора да нађе паралелизам већи од оног унутар основног блока. Развио је технике расподеле региона ради идентификовања дубљег паралелизма него над основним блоковима. Прерасподела траса је једна од таквих техника, и укључује прво прерасподелу највероватнијих путева основног блока, уметање компензационог кода да се избори са спекулативним покретима, распоређује другу највероватнију трасу, и тако даље, док се прерасподела не заврши.
Друга Фишерова иновација је концепт да циљана процесорска архитектура треба бити дизајнирана тако да је лако компајлирати за њу – компајлер и архитектура за VLIW морају бити дизајнирани у пару. Ово је било делимично инспирисано тешкоћом коју је Фишер приметио на Јејлу у вези компајлирања за архитектуре као што је Floating Point Systems-ов FPS164, који је имао сложени архитектуру сета инструкција (CISC) која је раздвајала иницирање инструкције од инструкција које су чувале резултат, што је захтевало јако компликоване алгоритме расподеле. Фишер је развио сет принципа који карактеришу правилни VLIW дизајн, као што су самоизгладњујућа проточна обрада, широке вишепортне регистарске фајлове, и меморијске архитектуре. Ови принципи олакшавају компајлерима да генеришу брз код.
Први VLIW компајлер је описан у докторском раду Џона Елиса, који је надгледао Фишер. Компајлер је назван Bulldog, по маскоти Јејла. Џон Рутенберг је такође развио неке важне алгоритме расподеле.
Фишер напушта Јејл 1984. да би основао своју стартап компанију, Multiflow, заједно са кооснивачима Џоном Одонелом и Џоном Рутенбергом. Multiflow је производила TRACE серију VLIW минисуперрачунара, и испоручила свој први рачунар 1987. Multiflow-ов VLIW је могао да обради 28 операција паралелно по инструкцији. TRACE систем је био имплементиран у MSI/LSI/VLSI комбинацију паковану у кабинете, технологија која није више била толико корисна када је постало финансијски ефикасније интегрисати све компоненте процесора (осим меморије) у један чип. Multiflow је рано захватио следећи талас, када је архитектура чипова почела да дозвољава вишеструке процесоре. Главне полупроводничке компаније су препознале вредност Multiflow технологије у овом контексту, па су компајлери и архитектура лиценцирани већини ових компанија.
Имплементација Компанија Cydrome је производила нумеричке VLIW процесоре коришћењем ECL технологије у истом временском периоду (касне 1980е). Ова компанија, као и Multiflow, прекинула је пословање након неколико година.
Једна од компанија које су лиценцирале Multiflow технологију је био Хјулет-Пакард, коме се Џош Фишер прикључио након што је Multiflow распуштен. Bob Rau, оснивач Cydrome-а, такође се прикључио HP-у након што се Cydrome распао. Њих двојца су водили истраживање рачунарских архитектура у оквиру Hewlett-Packard-а током 1990их.
Као додатак наведеним системима, отприлике у истом периоду (око 1989-1990), Интел је имплементирао VLIW у Intel i860, њихов први 64-битни процесор; i860 је такође био први VLIW процесор на једном чипу. Овај процесор је могао да ради и у једноставном RISC моду и у VLIW моду: Током раних 1990их, Интел је представио i860 RISC процесор. Овај једноставни чип је могао да ради у 2 мода: скаларном моду и VLIW моду. У VLIW моду, процесор је увек дохватао 2 инструкције и претпостављао да је једна целобројна инструкција, а друга са покретним зарезом.
VLIW мод је знатно коришћен у уграђеним DSP апликацијама с обзиром да су извршавање и сетови података били једноставни, добро организовани и предвидљиви, што је омогућавало дизајнерима да искористе све предности паралелног извршавања; у VLIW моду i860 је могао да одржи перформансе са покретним зарезом у опсегу од 20-40 MFLOPS са дуплом прецизношћу (што је јако пуно за процесор тог времена који је радио на 25-50Mhz).
Током 1990их, Hewlett-Packard је истражио овај проблем као нуспојаву њиховог истраживања на PA-RISC породици процесора. Они су открили да се процесор може знатно поједноставити уклањањем сложене логике расподеле са процесора преносећи је на компајлер. Компајлери су тада било много сложенији од оних из 1980их, па је додатна сложеност у компајлеру сматрана небитном.