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