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