摘 要: 介紹了基于FPGA實(shí)現(xiàn)VLIW微處理器的基本方法,,對(duì)VLIW微處理器具體劃分為5個(gè)主要功能模塊。依據(jù)FPGA的設(shè)計(jì)思想,,采用自頂向下和文本與原理圖相結(jié)合的流水線方式的設(shè)計(jì)方法,,進(jìn)行VLIW微處理器的5個(gè)模塊功能設(shè)計(jì),從而最終實(shí)現(xiàn)VLIW微處理器的功能,,并進(jìn)行了板級(jí)功能驗(yàn)證,。
關(guān)鍵詞: VLIW,;微處理器;FPGA,;流水線
超長(zhǎng)指令字VLIW(Very Long Instruction Word)微處理器架構(gòu)采用了先進(jìn)的清晰并行指令設(shè)計(jì)[1],。VLIW微處理器的最大優(yōu)點(diǎn)是簡(jiǎn)化了處理器的結(jié)構(gòu),刪除了處理器內(nèi)部許多復(fù)雜的控制電路[2],,它能從應(yīng)用程序中提取高度并行的指令數(shù)據(jù),,并把這些機(jī)器指令均勻地分配給芯片中的眾多執(zhí)行單元[3]。本設(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ǔ)處理管理。由于篇幅所限,,只是將取指令單元,、譯碼單元、執(zhí)行單元,、寫回單元和寄存器堆這5個(gè)單元的設(shè)計(jì)方法與設(shè)計(jì)原理作簡(jiǎn)要介紹,,沒有給出各個(gè)模塊設(shè)計(jì)仿真波形圖。
1 VLIW微處理器
1.1 VLIW微處理的基本結(jié)構(gòu)
VLIW微處理器的基本架構(gòu)如圖1所示,,采用4級(jí)流水線的形式進(jìn)行架構(gòu)組織,,分別是取指令(IF)、譯碼(DE),、執(zhí)行(EXE),、寫回(WR)[4]。VLIW微處理器從外部?jī)?chǔ)存器中,,取出指令和數(shù)據(jù),,指令通過(guò)譯碼操作,要求處理器進(jìn)行執(zhí)行動(dòng)作,,處理寄存器中的數(shù)據(jù)或者是取指令單元傳輸來(lái)的數(shù)據(jù),,并通過(guò)寫回單元,將處理的數(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)的操作;寫回單元是將執(zhí)行單元的數(shù)據(jù)存儲(chǔ)到寄存器堆中,;寄存器堆是暫時(shí)存放取指令單元和寫回單元的數(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è)主要部分[5],并對(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é)果傳送到寫回模塊中;寫回模塊將執(zhí)行模塊的信息寫入寄存器中,,并輸出相關(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)行分流,分成操作碼和操作地址的形式,。由于都是并行操作,,只需要寫出操作1的功能,其余的操作功能一致,,只是輸入的操作指令和操作地址不一樣,。
2.2 譯碼操作模塊的設(shè)計(jì)
譯碼操作模塊的功能是將取指令模塊傳輸來(lái)的信息進(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ù)、指令是來(lái)自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í)行單元中,。圖中虛線表示將寫回單元輸送來(lái)的操作數(shù)據(jù)直接存儲(chǔ)到存儲(chǔ)器中。實(shí)現(xiàn)時(shí),,要注意處理數(shù)據(jù)的相關(guān)問題,。
2.5 寫回單元的設(shè)計(jì)
寫回單元是VLIW微處理器的最后一個(gè)單元,,它的功能是將執(zhí)行單元的操作結(jié)果寫回到寄存器堆中,并在讀有效的情況下,,輸出相應(yīng)的操作處理數(shù)據(jù)。該模塊設(shè)計(jì)相對(duì)比較簡(jiǎn)單,,要實(shí)現(xiàn)寫回寄存器堆的數(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中,,添加的中間變量是寄存器地址(memoryarray),,基本的輸入有時(shí)鐘信號(hào)(clock)、復(fù)位信號(hào)(reset),、指令(word),、數(shù)據(jù)(data)。復(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)輸出高電平,。要看到操作處理結(jié)果就必須用讀的操作指令,,操作執(zhí)行的結(jié)果是存儲(chǔ)到寄存器中。
基于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è)微處理器的邏輯功能,,并在開發(fā)板進(jìn)行相應(yīng)的邏輯分析與功耗分析,,為實(shí)際DSP并行處理器架構(gòu)提供一定的參考基礎(chǔ)。下階段的主要方向是進(jìn)行各個(gè)小部件的進(jìn)一步優(yōu)化設(shè)計(jì),,增強(qiáng)操作功能與操作指令的實(shí)現(xiàn)設(shè)計(jì),,進(jìn)而設(shè)計(jì)實(shí)現(xiàn)浮點(diǎn)VLIW微處理器。
參考文獻(xiàn)
[1] 石教英.計(jì)算機(jī)體系結(jié)構(gòu)[M].杭州:浙江大學(xué)出版社,,2004.
[2] 尹朝慶.計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)教程[M].北京:清華大學(xué)出版社,,2005.
[3] 李學(xué)干.計(jì)算機(jī)系統(tǒng)的體系結(jié)構(gòu)[M].北京:清華大學(xué)出版社,2006.
[4] LEE W F. VLIW microprocessor hardware design for ASIC and FPGA [M]. The MCGraw Companies,, 2008.
[5] FISHER J A,, FARABOSCHI P, YOUNG C. Embedded computing: a VLIW approach to architecture[M]. Compilers and Tools,, Denise E. M. Penrose,, 2005.