基本介紹
超長指令字(Very Long Instruction Word,VLIW)技術是1983年由美國耶魯大學的Josh Fisher在研製ELI-512機器時首先實現的。
採用VLlW技術的計算機在開發指令級並行上與超標量計算機有所不同,它是由編譯程式在編譯時找出指令間潛在的並行性,進行適當調整安排,把多個能並行執行的操作組合在一起,構成一條具有多個操作段的超長指令,由這條超長指令控制VLlW機器中多個互相獨立工作的功能部件,每個操作段控制一個功能部件,相當於同時執行多條指令。VLlW指令的長度和機器結構的硬體資源情況有關,往往長達上百位。
傳統的設計計算機的做法是先考慮並確定系統結構,然後才去設計編譯程式。而對於VLIW計算機來說,編譯程式同系統結構兩者必須同時進行設計,它們之間的關係十分緊密。據統計,通常的科學計算程式存在著大量的並行性。如果編譯程式能把這些並行性充分挖掘出來,就可以使VLIW機器的各功能部件保持繁忙並達到較高的機器效率 。
超長指令字技術的特點
VLIW技術的主要特點可概括如下:
①只有一個控制器(單一控制流),每個時鐘周期啟動一條長指令;
②超長指令字被分成多個控制欄位。每個欄位直接地、獨立地控制特定的功能部件;
③含有大量的數據通路及功能部件,由於編譯程式在編譯時已考慮到可能出現的“相關”問題,所以控制硬體較簡單;
④在編譯階段完成超長指令中多個可並行執行操作的調度 。
採用超長指令字結構的原因
和超標量技術以及超流水線技術一樣,超長指今字(very longinstruction word,VLIW)結構也是一種提高標量處理速度的技術。那么有了超標量技術和超流水線技術後為什麼還要有超長指今字技術呢?它和前兩種技術有什麼區別呢 ?
超標量技術和超流水線技術的一個共同特點是它們在執行時通過對指令進行分析,提高指令啟動速度來加快指令的執行速度。其前提時需要在指令執行對由硬體對指令進行相關性分析,當指令之間不存在相關依賴性
的時候,由硬體決定將這些指今同時啟動執行。例如,當有一個加法部件和一個乘法部件的處理器從存儲器中讀取到這樣兩條指令:
ADD C,A,B
MULT F,D,E
在這兩條指令中,前一條指令是對暫存器A和暫存器B中的數據進行加法運算,結果存放在暫存器C中;後一條指令是將暫存器D中的數據與暫存器E中的數據作乘法運算,結果放入暫存器F中。如果計算機中有一個加法運算器和一個乘法運算器,那么在啟動執行這兩條指令時,控制器將發現這兩條指今在不同的運算部件中執行,而且運算的數據放在各不相同的暫存器中(不相關)。因此這兩條指令可以在不同的部件上同時啟動執行。指令的同時啟動執行可以大大提高計算機的運算速度。但是這種相關性分析功能使得控制器的電路變得非常複雜,而且如果要增加同時啟動的指令數量時,相關性分析就會變得更加複雜,比如要同時啟動三條、四條甚至更多的指令時。解決這個問題的有效方法是將這種分析功能由軟體完成,也就是由軟體(編譯程式)進行相關性分析,由軟體將互不相關的可以同時啟動的指令組合成一個指令包。這個指令包就是一條超長指令字。硬體在執行時以指今包為單位進行讀取和解碼,指令包中的多條操作指令可以同時啟動,而不需要由硬體再進行任何相關性分析,這樣就可以簡化控制器電路,而且有可能同時啟動更多的指令,進一步提高處理器的性能。對於上述例子,超長指令字結構的處理器可以用一條指令表示這網個操作:
ADD A,B,C;
MULT D,E,F
和超標量結構計算機一樣,超長指令字結構的計算機也使用多個獨立的運算部件,所有運算部件由同一機器時鐘來驅動。超長指令字計算機一
般將指令代碼劃分成許多欄位,每個欄位控制一個特定的運算部件。運算部件的操作可以採用流水線技術來進一步提高機器性能。因為每個運算操作需要的執行時間是已知的,軟體在對運算操作進行安排時已考慮了可能出現的數據相關和運算部件的使用衝突,所以控制硬體可以做得比較簡單。由於超長指令字結構的計算機具有這些優點,它在計算機中被越來越多地得到採用,如惠普公司與Intel公司合作開發的Merced微處理器 。