基于FPGA的VLIW微處理器的設計與實(shí)現
超長(cháng)指令字VLIW微處理器架構采用了先進(jìn)的清晰并行指令設計。VLIW微處理器的最大優(yōu)點(diǎn)是簡(jiǎn)化了處理器的結構,刪除了處理器內部許多復雜的控制電路,它能從應用程序中提取高度并行的指令數據,并把這些機器指令均勻地分配給芯片中的眾多執行單元。本設計是針對VLIW微處理器的基本功能設計實(shí)現的,是針對64位指令字和192位數據進(jìn)行操作處理,主要功能是將指令和數據分別劃分到3個(gè)并行操作單元中,在執行單元中根據3個(gè)并行指令控制,對3個(gè)并行操作單元的數據進(jìn)行并行處理,同時(shí)對操作處理數據進(jìn)行存儲處理管理。
1 VLIW微處理器
1.1 VLIW微處理的基本結構
VLIW微處理器的基本架構如圖1所示,采用4級流水線(xiàn)的形式進(jìn)行架構組織,分別是取指令、譯碼、執行、寫(xiě)回。VLIW微處理器從外部?jì)Υ嫫髦?,取出指令和數據,指令通過(guò)譯碼操作,要求處理器進(jìn)行執行動(dòng)作,處理寄存器中的數據或者是取指令單元傳輸來(lái)的數據,并通過(guò)寫(xiě)回單元,將處理的數據存儲到寄存器中。取指令單元是從存儲器中取出相對應的指令和數據,并將相應的信息傳輸給譯碼單元和寄存器堆單元;譯碼單元的作用是將取指令單元的指令信息翻譯為執行單元能夠識別的操作,將相應的信息傳輸到執行單元中;執行單元是執行對應的指令信息和處理相關(guān)的數據,同時(shí)也對寄存器堆送來(lái)的數據和指令進(jìn)行相應的操作;寫(xiě)回單元是將執行單元的數據存儲到寄存器堆中;寄存器堆是暫時(shí)存放取指令單元和寫(xiě)回單元的數據或是指令。
1.2 VLIW微處理器操作方式
VLIW處理器指令操作方式是實(shí)行3種并行的操作,指令格式設置為:最高4位作為保留位,其余各20位依次劃給操作1、操作2、操作3,在每個(gè)20位中又分別留有4位的保留位,最后對16位的指令進(jìn)行劃分為操作碼、源1地址、源2地址、目標地址。3種操作方式是并行執行,相互獨立,互不干擾,并且操作執行都是64位的數據;每一種操作方式都可以實(shí)現16種操作運算:空操作、加、減、乘、裝載、移動(dòng)、讀、比較、或、與非、或非、取反、左移、右移、循環(huán)左移、循環(huán)右移等操作。任何一種操作都可以對16個(gè)寄存器中的數據進(jìn)行操作處理,且寄存器中所存儲的數據是64位。整個(gè)操作過(guò)程是將源1與源2寄存器中的數據進(jìn)行某種操作運算,將其操作處理結果存入目標寄存器中,其操作處理方式是采用寄存器尋址方式。
2 VLIW微處理器的設計與實(shí)現
根據VLIW微處理器系統架構和基本原理,將整個(gè)VLIW微處理劃分為5個(gè)主要部分,并對如圖2所示的5個(gè)部分進(jìn)行功能設計與實(shí)現。具體原理:取指令模塊把外部存儲器的數據和指令傳送給譯碼模塊,并將部分指令信息傳送給寄存器堆,實(shí)現取指令的功能;譯碼模塊將取指模塊的數據和指令進(jìn)行相對應的譯碼,實(shí)現某一種具體的操作,并將譯碼結果傳送到執行模塊中;執行模塊將譯碼模塊或者寄存器堆模塊的數據和指令實(shí)現其操作的具體功能,并將操作結果傳送到寫(xiě)回模塊中;寫(xiě)回模塊將執行模塊的信息寫(xiě)入寄存器中,并輸出相關(guān)操作處理的數據。
2.1 取指令模塊的設計
取指令模塊的功能是從外部指令/數據的Catch取得VLIW指令和數據,將取得的信息傳輸給譯碼模塊,讓指令進(jìn)行譯碼,同時(shí)也將取得的信息傳輸給寄存器堆模塊,讓執行模塊執行操作進(jìn)入內部寄存器而從寄存器堆取回數據。取指令模塊設計實(shí)現如圖3所示。將指令和數據通過(guò)選擇器分配到3個(gè)操作并行單元中,然后細分操作執行的方式。具體劃分為頂層模塊和3種并行操作模塊。頂層模塊主要實(shí)現對指令和數據進(jìn)行分流,分成操作碼和操作地址的形式。由于都是并行操作,只需要寫(xiě)出操作1的功能,其余的操作功能一致,只是輸入的操作指令和操作地址不一樣。
2.2 譯碼操作模塊的設計
譯碼操作模塊的功能是將取指令模塊傳輸來(lái)的信息進(jìn)行譯碼操作,將所進(jìn)行譯碼操作傳輸給執行模塊。由于在進(jìn)行譯碼操作時(shí),操作1、操作2、操作3的指令與數據沒(méi)有相互沖突,而且每一種操作的功能都是對16種操作進(jìn)行相對應的譯碼,不同在于輸入的各個(gè)操作的數據或指令的不相同,因此,在實(shí)現譯碼模塊時(shí),只需要實(shí)現一個(gè)操作譯碼的功能就可以。在改變輸入的情況下就實(shí)現操作2、操作3的2種操作譯碼的功能,從而可實(shí)現譯碼模塊的整個(gè)功能。譯碼模塊其劃分原理如圖4所示。
2.3 執行模塊的設計
執行模塊是在VLIW微處理器所有模塊中最復雜的模塊,其主要功能是執行VLIW指令操作,并將執行的操作結果送到寫(xiě)回模塊中。在執行模塊中采用寄存器旁路的特點(diǎn),寄存器旁路用于處理指令或者數據之間的相互沖突問(wèn)題。
將執行模塊劃分為:頂層模塊、操作1模塊、操作2模塊、操作3模塊、功能執行模塊、異常處理模塊。頂層模塊實(shí)現3種操作的數據與指令分流和中間變量的處理;操作1模塊實(shí)現寄存器旁路的功能和數據的處理;操作2模塊和操作3模塊實(shí)現的功能與操作1模塊相同,不同點(diǎn)在于中間數據沖突處理不一樣;功能執行模塊實(shí)現16種操作的具體功能;異常處理模塊實(shí)現數據或指令的異常處理的具體功能。將各個(gè)模塊連接就實(shí)現執行單元的整個(gè)功能。
2.4 寄存器堆的實(shí)現
寄存器堆的結構如圖5所示。輸入端的數據、指令是來(lái)自2個(gè)單元,一個(gè)是取指令單元數據和指令,另一個(gè)是寫(xiě)回單元的數據;輸出的指令、數據要傳輸到執行單元中進(jìn)行執行操作。因為3種操作是并行執行的,每一種操作功能都是一樣,因此在某個(gè)輸入信號下,經(jīng)由某種操作單元時(shí),在選擇器MUX下,選擇某種具體操作運算。在功能單元FU中,對取出的存儲器數據進(jìn)行相應的操作運算處理,并將操作處理的結果輸出送到執行單元中。圖中虛線(xiàn)表示將寫(xiě)回單元輸送來(lái)的操作數據直接存儲到存儲器中。實(shí)現時(shí),要注意處理數據的相關(guān)問(wèn)題。
2.5 寫(xiě)回單元的設計
寫(xiě)回單元是VLIW微處理器的最后一個(gè)單元,它的功能是將執行單元的操作結果寫(xiě)回到寄存器堆中,并在讀有效的情況下,輸出相應的操作處理數據。該模塊設計相對比較簡(jiǎn)單,要實(shí)現寫(xiě)回寄存器堆的數據和該數據的目標寄存器地址,以及讀出處理單元的操作處理數據。
2.6 綜合仿真與測試
將上述所設計的模塊,運用原理圖的設計方法,按圖2 VLIW微處理模塊劃分結構進(jìn)行相應的連接,并選擇相應的器件進(jìn)行編譯測試,其仿真測試功能波形如圖6所示。圖中的波形圖添加了中間變量寄存器的波形圖,以便能夠更好地對比輸出波形,分析處理器功能。VLIW微處理器首先將要處理的數據裝入寄存器中,利用寄存器尋址的方式,對數據進(jìn)行相應的16種功能操作運算,然后利用讀的功能讀出操作處理的數據結果。
在圖6中,添加的中間變量是寄存器地址,基本的輸入有時(shí)鐘信號、復位信號、指令、數據。復位信號為低電平時(shí),電路處于有效的工作狀態(tài),輸出相關(guān)的操作數據。運用裝載指令對寄存器依次裝入數據,在下一個(gè)時(shí)鐘脈沖時(shí),對寄存器的數據進(jìn)行讀出操作,輸出數據有效信號輸出高電平。
基于FPGA實(shí)現微處理器的設計是一個(gè)熱點(diǎn),在主流設計中主要模塊的劃分一般大致相同,主要區別在于主要模塊下的小模塊劃分是完全不相同的,并且實(shí)現與設計方式也不相同。在VLIW處理器設計中,細分各個(gè)小模塊,運用硬件描述語(yǔ)言實(shí)現各個(gè)基本模塊的功能,從而最終實(shí)現整個(gè)微處理器的邏輯功能,并在開(kāi)發(fā)板進(jìn)行相應的邏輯分析與功耗分析,為實(shí)際DSP并行處理器架構提供一定的參考基礎。
評論