文獻標識碼: A
文章編號: 0258-7998(2013)04-0022-04
作為開發指令級并行性的經典結構,超長指令字VLIW(Very Long Instruction Word)在處理器研究領域占有極其重要的位置[1]。
VLIW處理器將指令調度任務交給編譯器,編譯器通過開發應用中的并行性提高處理器中執行單元的利用率。而實際應用中的有限并行性使得處理器中的功能單元有較多閑置,即VLIW指令字中有較多無效指令槽。但是為了保持規整的超長指令字格式,這些無效指令槽即使不代表實際的部件操作,也需要存儲于處理器指令存儲器中,這就意味著對指令存儲單元的極大浪費。
為了解決這一問題,國內外相關研究機構采取了不同的方法,雖然取得了一定的成果,但效果不夠明顯。本文針對上述問題,提出了一種新的VLIW壓縮技術——指令前綴壓縮技術,其主要思想是通過壓縮指令字中的無效指令槽,同時添加相應的附加前綴編碼,以此來減小存儲器的面積。本文首先對專用VLIW處理器架構及其指令字格式進行了分析,提出了字處理指令槽空閑率高的問題。然后針對該問題,提出了指令前綴壓縮技術,并詳細介紹了該技術的理論以及前綴編碼信息。其次設計了用于解壓縮的專用電路,并對電路的結構以及內部模塊進行了介紹。最后,通過實驗驗證了本文提出的指令前綴壓縮技術的有效性。實驗結果表明,該技術能夠平均獲得47.2%的代碼體積節省,極大地節省了指令存儲器的空間。
1 專用VLIW處理器分析
1.1 專用VLIW處理器架構
本文針對一款領域專用VLIW處理器[2]進行討論,其硬件架構如圖1所示。
4個字處理指令槽0~3,其指令結構完全相同,能夠獨立指示并控制相應的功能單元,支持多字并行處理。指令槽4為分支控制指令槽,其操作碼被送往分支轉移部件控制相應的電路模塊工作,進而控制程序計數器跳轉。分支控制指令槽與4個字處理指令槽進行拼裝,可實現分支控制與多字密碼處理間的并行,由指令特征域來進行標識。
運行于專用VLIW處理器上的應用程序主要分為三類,對這三類應用程序的字處理指令槽進行了分析,分析結果如圖3所示。
由圖3可知,對于不同的應用,VLIW指令字的字處理指令槽使用率差別比較大,但對大部分應用來說,各個指令槽的使用率基本在50%以下。所以在存儲指令時,如果按照VLIW的方式進行存儲,指令存儲器的冗余度會比較高,進而會浪費大量指令存儲器的存儲空間。所以需要尋找一種對VLIW指令字進行特殊處理的方法,以此來節省指令存儲器的存儲空間。
1.3 VLIW指令壓縮相關研究
針對上述問題, Wolfe A等人通過引入數據壓縮的方法,利用壓縮編碼算法對VLIW進行重新編碼[4],達到了壓縮VLIW指令字、節省存儲單元空間的目的。但該方法的解碼邏輯比較復雜,帶來了較大的硬件開銷。朱少波等人通過對代碼的深入分析,采用改進的寄存器分配算法[5],使得同一條指令的源寄存器編號能夠盡量在目標寄存器的輻射范圍內,以獲得最大的壓縮率。但此種方法對VLIW代碼體積壓縮有限,不能滿足指令存儲器面積縮減的要求。楊惠等人通過引入專用硬件支持編譯調度的循環軟流水,有效提高了指令并行性[6]。該方法雖降低了代碼存儲空間,但并沒有針對VLIW個別指令槽空閑率高的本質進行改進,且對某些算法來說,優化空間有限。
本文在上述相關研究的基礎上,通過對VLIW指令的指令槽空閑率高的問題進行深入分析,提出了一種新的VLIW壓縮技術——指令前綴壓縮技術,通過壓縮指令字中的無效指令槽來減小存儲器的面積,同時設計了用于解壓縮的專用電路。
2 VLIW指令前綴壓縮技術
2.1 指令前綴壓縮技術理論分析
指令前綴壓縮技術通過將VLIW各個字處理指令槽中的無效操作剔除,減小無效指令槽對存儲空間的浪費[7],并將剩余有效的指令槽重新編碼,緊湊存儲在指令存儲器中。最后在每一條完整指令前添加前綴編碼,以標識此條完整指令的長度、包含有效指令槽的個數以及其中的每一個指令槽在重新拼裝之后的VLIW指令字中的位置。
將原始的應用程序輸入到編譯器中,編譯器對每條指令進行分析,判斷各個字處理指令槽的使用情況。通常,在處理器的VLIW指令字設計過程中,將無效指令槽設置為空指令。因此,在對指令槽的使用情況進行判斷時,只需判斷每個字處理指令槽的使用情況,若為空指令,則表示該指令槽對應一條空操作。之后,將無效指令槽刪除,剩余的有效指令槽依次存儲,并在一條完整指令前添加前綴編碼。圖4(a)是包含兩個有效指令槽的VLIW指令壓縮實現方式示意圖;圖4(b)是存儲原始VLIW指令字的指令存儲器示意圖;圖4(c)是存儲指令前綴壓縮之后的VLIW指令字的指令存儲器示意圖。
為了后續能夠有效地解壓縮,需要對控制程序執行的分支指令的目標指令進行特殊處理。在對程序進行編譯的過程中,若檢測出是目標指令,則另起一行進行存儲。如果目標指令所在位置的上一行沒有存滿,則在目標指令的上一條指令末添0,這樣便于分支指令的尋址。
2.2 指令前綴編碼設計
每一條完整的VLIW指令字都有一個前綴編碼,用于標識此條指令字的長度、包含指令槽的個數以及其中的每一個指令槽在重新拼裝之后的VLIW指令字中的位置。下面對前綴編碼進行詳細說明。
(1)模板類型標識,位寬為4 bit,用于指示此條完整指令的模板類型。
(2)寫使能標識,位寬為8 bit,用于指示4個字處理指令槽的第一、第二寫使能。
(3)指令槽個數標識,位寬為3 bit,用于指示此條完整指令包含幾個有效的指令槽。
(4)指令槽位置標識,位寬為15 bit,用于指示5個指令槽在VLIW指令字中的位置。
(5)保留位,位寬為7 bit。
2.3 解壓縮電路設計
解壓縮電路架構如圖5所示,包括控制電路、指令緩存器、指令緩存器移位和填裝電路、指令拼裝電路。
2.3.1 控制電路
控制電路的主要功能包含兩部分,一部分負責產生指令緩沖器狀態信號(當前指令緩存中包含幾個有效的指令槽);另一部分負責產生讀取指令存儲器的控制信號。指令緩沖器狀態信號輸入到指令緩存器移位和填裝電路,配合其他數據完成從指令緩存器中移出一條完整指令的任務,并對指令緩存器進行更新。指令存儲器讀控制信號用于控制指令存儲器的讀取,在該信號的產生過程中,采用預計算的思想,即預計算下一個周期指令緩存在移出一條完整的指令之后,剩余的有效指令槽的個數,以此作為指令存儲器讀控制信號是否為高電平的判斷條件。
2.3.2 指令緩存器
指令緩沖器的主要功能是存儲從指令存儲器中讀取的指令,其位寬是407 bit,內部存儲的每一條完整指令的長度是不固定的,范圍為37 bit~185 bit。并且每一條完整指令前都會有一定的前綴編碼,用于存儲與該指令相關的信息。所以指令緩存器中存儲的完整指令的個數也是不固定的。用指令緩沖器狀態信號作為指令緩沖器是否更新的判斷條件。
2.3.3 指令緩存器移位和填裝電路
該電路的功能是對指令緩存器進行更新。在指令緩沖器狀態信號和當前需要移出的指令長度的共同控制下,該電路在指令緩存器移出一條完整的指令之后,及時對其進行更新。這樣,在任何一個時鐘周期,指令緩存器的格式都是一樣的,即起始的37 bit都是其后一條完整指令的前綴編碼。移位和填裝電路的原理圖如圖6所示。
2.3.4 指令拼裝電路
指令拼裝電路的功能是對從指令緩存器中移出的每一條完整指令進行重新拼裝,使其滿足VLIW指令字的格式,以便于后續譯碼器對VLIW指令字的譯碼。因為從指令緩存器中移出的指令都包含一個前綴編碼,所以拼裝電路首先需要對此前綴編碼進行譯碼,以產生拼裝電路需要的控制信號。然后在控制信號的作用下,將每一次從指令緩存器中移出的指令拼裝成VLIW指令字。
3 實驗結果分析
為了驗證本文設計的指令前綴壓縮技術的有效性,對圖3中的3類應用分別進行了測試。分析測試結果得到如表1所示的代碼壓縮性能報告。
從表1可以看出,本文提出的指令前綴壓縮技術能夠平均獲得47.2%的代碼體積節省,極大地減少了代碼體積,節省了指令存儲器的空間。指令前綴壓縮技術能獲得較好的壓縮性能,這是因為功能單元的利用率差異較大,除配置指令外,VLIW指令字的字處理指令槽時常出現空閑的情況。
本文采用0.18 ?滋m CMOS工藝,利用Synopsis Design Complier工具,基于標準單元庫對解壓縮邏輯電路進行綜合,時鐘頻率為200 MHz,面積為51 486.69 μm2。結果顯示,本文設計的解壓縮電路能以很小的面積代價獲取指令存儲器面積較大的節省。
在未來的工作中,可將本文設計的指令前綴壓縮技術和解壓縮電路應用到專用VLIW處理器中,作為降低處理器功耗的一種有效手段。
參考文獻
[1] 愈磊,羅金平,周興銘.VLIW技術的最新發展[J].計算機工程,2002,28(1):1-4.
[2] 王昭順,張建林,曹文彬.VLIW體系結構微處理器的一種設計方法[J].計算機科學,2000,27(8):40-42.
[3] LEE R B,SHI Z,YANG X.Efficient permutation instructions for fast software cryptography[J].IEEE Micro,2001,21(6):56-69.
[4] WOLFE A,CHANIN A.Executing compressed programs on an embedded RISC architecture[C].Proceedings of the 25th International Symposium on Micrcmarchitecture, 1992:81-91.
[5] 朱少波,姚慶棟,洪享,等.一種面向VLIW指令壓縮的寄存器分配算法[J].計算機工程,2003,29(20):154-156.
[6] 楊惠,陳書明,萬江華.一種基于VLIW DSP架構的高性能取指流水線[J].國防科技大學學報,2011,33(4):102-106.
[7] 管茂林,何義,楊乾明,等.基于程序特征分析的流處理器VLIW壓縮技術與解壓實現[J].國防科技大學學報,2012,34(1):138-143.