基于FPGA實現(xiàn)VLIW微處理器的設(shè)計與實現(xiàn)
2.1 取指令模塊的設(shè)計
取指令模塊的功能是從外部指令/數(shù)據(jù)的Catch取得VLIW指令和數(shù)據(jù),將取得的信息傳輸給譯碼模塊,讓指令進行譯碼,同時也將取得的信息傳輸給寄存器堆模塊,讓執(zhí)行模塊執(zhí)行操作進入內(nèi)部寄存器而從寄存器堆取回數(shù)據(jù)。取指令模塊設(shè)計實現(xiàn)如圖3所示。將指令和數(shù)據(jù)通過選擇器分配到3個操作并行單元中,然后細分操作執(zhí)行的方式。具體劃分為頂層模塊和3種并行操作模塊。頂層模塊主要實現(xiàn)對指令和數(shù)據(jù)進行分流,分成操作碼和操作地址的形式。由于都是并行操作,只需要寫出操作1的功能,其余的操作功能一致,只是輸入的操作指令和操作地址不一樣。
2.2 譯碼操作模塊的設(shè)計
譯碼操作模塊的功能是將取指令模塊傳輸來的信息進行譯碼操作,將所進行譯碼操作傳輸給執(zhí)行模塊。由于在進行譯碼操作時,操作1、操作2、操作3的指令與數(shù)據(jù)沒有相互沖突,而且每一種操作的功能都是對16種操作進行相對應(yīng)的譯碼,不同在于輸入的各個操作的數(shù)據(jù)或指令的不相同,因此,在實現(xiàn)譯碼模塊時,只需要實現(xiàn)一個操作譯碼的功能就可以。在改變輸入的情況下就實現(xiàn)操作2、操作3的2種操作譯碼的功能,從而可實現(xiàn)譯碼模塊的整個功能。譯碼模塊其劃分原理如圖4所示。
2.3 執(zhí)行模塊的設(shè)計
執(zhí)行模塊是在VLIW微處理器所有模塊中最復雜的模塊,其主要功能是執(zhí)行VLIW指令操作,并將執(zhí)行的操作結(jié)果送到寫回模塊中。在執(zhí)行模塊中采用寄存器旁路的特點,寄存器旁路用于處理指令或者數(shù)據(jù)之間的相互沖突問題。
將執(zhí)行模塊劃分為:頂層模塊、操作1模塊、操作2模塊、操作3模塊、功能執(zhí)行模塊、異常處理模塊。頂層模塊實現(xiàn)3種操作的數(shù)據(jù)與指令分流和中間變量的處理;操作1模塊實現(xiàn)寄存器旁路的功能和數(shù)據(jù)的處理;操作2模塊和操作3模塊實現(xiàn)的功能與操作1模塊相同,不同點在于中間數(shù)據(jù)沖突處理不一樣;功能執(zhí)行模塊實現(xiàn)16種操作的具體功能;異常處理模塊實現(xiàn)數(shù)據(jù)或指令的異常處理的具體功能。將各個模塊連接就實現(xiàn)執(zhí)行單元的整個功能。
2.4 寄存器堆的實現(xiàn)
寄存器堆的結(jié)構(gòu)如圖5所示。輸入端的數(shù)據(jù)、指令是來自2個單元,一個是取指令單元數(shù)據(jù)和指令,另一個是寫回單元的數(shù)據(jù);輸出的指令、數(shù)據(jù)要傳輸?shù)綀?zhí)行單元中進行執(zhí)行操作。因為3種操作是并行執(zhí)行的,每一種操作功能都是一樣,因此在某個輸入信號下,經(jīng)由某種操作單元時,在選擇器MUX下,選擇某種具體操作運算。在功能單元FU中,對取出的存儲器數(shù)據(jù)進行相應(yīng)的操作運算處理,并將操作處理的結(jié)果輸出送到執(zhí)行單元中。圖中虛線表示將寫回單元輸送來的操作數(shù)據(jù)直接存儲到存儲器中。實現(xiàn)時,要注意處理數(shù)據(jù)的相關(guān)問題。
評論