《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > VLIW處理器的設(shè)計與實(shí)現(xiàn)
VLIW處理器的設(shè)計與實(shí)現(xiàn)
來源:微型機(jī)與應(yīng)用2010年第11期
唐 騫,楊小雪
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 610031)
摘要: 介紹了基于FPGA實(shí)現(xiàn)VLIW微處理器的基本方法,對VLIW微處理器具體劃分為5個主要功能模塊。依據(jù)FPGA的設(shè)計思想,采用自頂向下和文本與原理圖相結(jié)合的流水線方式的設(shè)計方法,進(jìn)行VLIW微處理器的5個模塊功能設(shè)計,從而最終實(shí)現(xiàn)VLIW微處理器的功能,并進(jìn)行了板級功能驗(yàn)證。
關(guān)鍵詞: FPGA 微處理器 流水線
Abstract:
Key words :

摘  要: 介紹了基于FPGA實(shí)現(xiàn)VLIW微處理器的基本方法,對VLIW微處理器具體劃分為5個主要功能模塊。依據(jù)FPGA的設(shè)計思想,采用自頂向下和文本與原理圖相結(jié)合的流水線方式的設(shè)計方法,進(jìn)行VLIW微處理器的5個模塊功能設(shè)計,從而最終實(shí)現(xiàn)VLIW微處理器的功能,并進(jìn)行了板級功能驗(yàn)證。
關(guān)鍵詞: VLIW;微處理器;FPGA;流水線

    超長指令字VLIW(Very Long Instruction Word)微處理器架構(gòu)采用了先進(jìn)的清晰并行指令設(shè)計[1]。VLIW微處理器的最大優(yōu)點(diǎn)是簡化了處理器的結(jié)構(gòu),刪除了處理器內(nèi)部許多復(fù)雜的控制電路[2],它能從應(yīng)用程序中提取高度并行的指令數(shù)據(jù),并把這些機(jī)器指令均勻地分配給芯片中的眾多執(zhí)行單元[3]。本設(shè)計是針對VLIW微處理器的基本功能設(shè)計實(shí)現(xiàn)的,是針對64位指令字和192位數(shù)據(jù)進(jìn)行操作處理,主要功能是將指令和數(shù)據(jù)分別劃分到3個并行操作單元中,在執(zhí)行單元中根據(jù)3個并行指令控制,對3個并行操作單元的數(shù)據(jù)進(jìn)行并行處理,同時對操作處理數(shù)據(jù)進(jìn)行存儲處理管理。由于篇幅所限,只是將取指令單元、譯碼單元、執(zhí)行單元、寫回單元和寄存器堆這5個單元的設(shè)計方法與設(shè)計原理作簡要介紹,沒有給出各個模塊設(shè)計仿真波形圖。
1 VLIW微處理器
1.1 VLIW微處理的基本結(jié)構(gòu)

    VLIW微處理器的基本架構(gòu)如圖1所示,采用4級流水線的形式進(jìn)行架構(gòu)組織,分別是取指令(IF)、譯碼(DE)、執(zhí)行(EXE)、寫回(WR)[4]。VLIW微處理器從外部儲存器中,取出指令和數(shù)據(jù),指令通過譯碼操作,要求處理器進(jìn)行執(zhí)行動作,處理寄存器中的數(shù)據(jù)或者是取指令單元傳輸來的數(shù)據(jù),并通過寫回單元,將處理的數(shù)據(jù)存儲到寄存器中。取指令單元是從存儲器中取出相對應(yīng)的指令和數(shù)據(jù),并將相應(yīng)的信息傳輸給譯碼單元和寄存器堆單元;譯碼單元的作用是將取指令單元的指令信息翻譯為執(zhí)行單元能夠識別的操作,將相應(yīng)的信息傳輸?shù)綀?zhí)行單元中;執(zhí)行單元是執(zhí)行對應(yīng)的指令信息和處理相關(guān)的數(shù)據(jù),同時也對寄存器堆送來的數(shù)據(jù)和指令進(jìn)行相應(yīng)的操作;寫回單元是將執(zhí)行單元的數(shù)據(jù)存儲到寄存器堆中;寄存器堆是暫時存放取指令單元和寫回單元的數(shù)據(jù)或是指令。

1.2 VLIW微處理器操作方式
    VLIW處理器指令操作方式是實(shí)行3種并行的操作,指令格式設(shè)置為:最高4位作為保留位,其余各20位依次劃給操作1、操作2、操作3,在每個20位中又分別留有4位的保留位,最后對16位的指令進(jìn)行劃分為操作碼、源1地址、源2地址、目標(biāo)地址。3種操作方式是并行執(zhí)行,相互獨(dú)立,互不干擾,并且操作執(zhí)行都是64位的數(shù)據(jù);每一種操作方式都可以實(shí)現(xiàn)16種操作運(yùn)算:空操作、加、減、乘、裝載、移動、讀、比較、或、與非、或非、取反、左移、右移、循環(huán)左移、循環(huán)右移等操作。任何一種操作都可以對16個寄存器中的數(shù)據(jù)進(jìn)行操作處理,且寄存器中所存儲的數(shù)據(jù)是64位。整個操作過程是將源1與源2寄存器中的數(shù)據(jù)進(jìn)行某種操作運(yùn)算,將其操作處理結(jié)果存入目標(biāo)寄存器中,其操作處理方式是采用寄存器尋址方式。
2 VLIW微處理器的設(shè)計與實(shí)現(xiàn)
    根據(jù)VLIW微處理器系統(tǒng)架構(gòu)和基本原理,將整個VLIW微處理劃分為5個主要部分[5],并對如圖2所示的5個部分進(jìn)行功能設(shè)計與實(shí)現(xiàn)。具體原理:取指令模塊把外部存儲器的數(shù)據(jù)和指令傳送給譯碼模塊,并將部分指令信息傳送給寄存器堆,實(shí)現(xiàn)取指令的功能;譯碼模塊將取指模塊的數(shù)據(jù)和指令進(jìn)行相對應(yīng)的譯碼,實(shí)現(xiàn)某一種具體的操作,并將譯碼結(jié)果傳送到執(zhí)行模塊中;執(zhí)行模塊將譯碼模塊或者寄存器堆模塊的數(shù)據(jù)和指令實(shí)現(xiàn)其操作的具體功能,并將操作結(jié)果傳送到寫回模塊中;寫回模塊將執(zhí)行模塊的信息寫入寄存器中,并輸出相關(guān)操作處理的數(shù)據(jù)。

2.1 取指令模塊的設(shè)計
    取指令模塊的功能是從外部指令/數(shù)據(jù)的Catch取得VLIW指令和數(shù)據(jù),將取得的信息傳輸給譯碼模塊,讓指令進(jìn)行譯碼,同時也將取得的信息傳輸給寄存器堆模塊,讓執(zhí)行模塊執(zhí)行操作進(jìn)入內(nèi)部寄存器而從寄存器堆取回數(shù)據(jù)。取指令模塊設(shè)計實(shí)現(xiàn)如圖3所示。將指令和數(shù)據(jù)通過選擇器分配到3個操作并行單元中,然后細(xì)分操作執(zhí)行的方式。具體劃分為頂層模塊和3種并行操作模塊。頂層模塊主要實(shí)現(xiàn)對指令和數(shù)據(jù)進(jìn)行分流,分成操作碼和操作地址的形式。由于都是并行操作,只需要寫出操作1的功能,其余的操作功能一致,只是輸入的操作指令和操作地址不一樣。

2.2 譯碼操作模塊的設(shè)計
    譯碼操作模塊的功能是將取指令模塊傳輸來的信息進(jìn)行譯碼操作,將所進(jìn)行譯碼操作傳輸給執(zhí)行模塊。由于在進(jìn)行譯碼操作時,操作1、操作2、操作3的指令與數(shù)據(jù)沒有相互沖突,而且每一種操作的功能都是對16種操作進(jìn)行相對應(yīng)的譯碼,不同在于輸入的各個操作的數(shù)據(jù)或指令的不相同,因此,在實(shí)現(xiàn)譯碼模塊時,只需要實(shí)現(xiàn)一個操作譯碼的功能就可以。在改變輸入的情況下就實(shí)現(xiàn)操作2、操作3的2種操作譯碼的功能,從而可實(shí)現(xiàn)譯碼模塊的整個功能。譯碼模塊其劃分原理如圖4所示。

2.3 執(zhí)行模塊的設(shè)計
    執(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ù)或指令的異常處理的具體功能。將各個模塊連接就實(shí)現(xiàn)執(zhí)行單元的整個功能。
2.4 寄存器堆的實(shí)現(xiàn)
    寄存器堆的結(jié)構(gòu)如圖5所示。輸入端的數(shù)據(jù)、指令是來自2個單元,一個是取指令單元數(shù)據(jù)和指令,另一個是寫回單元的數(shù)據(jù);輸出的指令、數(shù)據(jù)要傳輸?shù)綀?zhí)行單元中進(jìn)行執(zhí)行操作。因?yàn)?種操作是并行執(zhí)行的,每一種操作功能都是一樣,因此在某個輸入信號下,經(jīng)由某種操作單元時,在選擇器MUX下,選擇某種具體操作運(yùn)算。在功能單元FU中,對取出的存儲器數(shù)據(jù)進(jìn)行相應(yīng)的操作運(yùn)算處理,并將操作處理的結(jié)果輸出送到執(zhí)行單元中。圖中虛線表示將寫回單元輸送來的操作數(shù)據(jù)直接存儲到存儲器中。實(shí)現(xiàn)時,要注意處理數(shù)據(jù)的相關(guān)問題。

2.5 寫回單元的設(shè)計
    寫回單元是VLIW微處理器的最后一個單元,它的功能是將執(zhí)行單元的操作結(jié)果寫回到寄存器堆中,并在讀有效的情況下,輸出相應(yīng)的操作處理數(shù)據(jù)。該模塊設(shè)計相對比較簡單,要實(shí)現(xiàn)寫回寄存器堆的數(shù)據(jù)和該數(shù)據(jù)的目標(biāo)寄存器地址,以及讀出處理單元的操作處理數(shù)據(jù)。
2.6 綜合仿真與測試
    將上述所設(shè)計的模塊,運(yùn)用原理圖的設(shè)計方法,按圖2 VLIW微處理模塊劃分結(jié)構(gòu)進(jìn)行相應(yīng)的連接,并選擇相應(yīng)的器件進(jìn)行編譯測試,其仿真測試功能波形如圖6所示。圖中的波形圖添加了中間變量寄存器的波形圖,以便能夠更好地對比輸出波形,分析處理器功能。VLIW微處理器首先將要處理的數(shù)據(jù)裝入寄存器中,利用寄存器尋址的方式,對數(shù)據(jù)進(jìn)行相應(yīng)的16種功能操作運(yùn)算,然后利用讀的功能讀出操作處理的數(shù)據(jù)結(jié)果。

    在圖6中,添加的中間變量是寄存器地址(memoryarray),基本的輸入有時鐘信號(clock)、復(fù)位信號(reset)、指令(word)、數(shù)據(jù)(data)。復(fù)位信號為低電平時,電路處于有效的工作狀態(tài),輸出相關(guān)的操作數(shù)據(jù)。運(yùn)用裝載指令對寄存器依次裝入數(shù)據(jù),在下一個時鐘脈沖時,對寄存器的數(shù)據(jù)進(jìn)行讀出操作,輸出數(shù)據(jù)有效信號輸出高電平。要看到操作處理結(jié)果就必須用讀的操作指令,操作執(zhí)行的結(jié)果是存儲到寄存器中。
    基于FPGA實(shí)現(xiàn)微處理器的設(shè)計是一個熱點(diǎn),在主流設(shè)計中主要模塊的劃分一般大致相同,主要區(qū)別在于主要模塊下的小模塊劃分是完全不相同的,并且實(shí)現(xiàn)與設(shè)計方式也不相同。在VLIW處理器設(shè)計中,細(xì)分各個小模塊,運(yùn)用硬件描述語言實(shí)現(xiàn)各個基本模塊的功能,從而最終實(shí)現(xiàn)整個微處理器的邏輯功能,并在開發(fā)板進(jìn)行相應(yīng)的邏輯分析與功耗分析,為實(shí)際DSP并行處理器架構(gòu)提供一定的參考基礎(chǔ)。下階段的主要方向是進(jìn)行各個小部件的進(jìn)一步優(yōu)化設(shè)計,增強(qiáng)操作功能與操作指令的實(shí)現(xiàn)設(shè)計,進(jìn)而設(shè)計實(shí)現(xiàn)浮點(diǎn)VLIW微處理器。
參考文獻(xiàn)
[1] 石教英.計算機(jī)體系結(jié)構(gòu)[M].杭州:浙江大學(xué)出版社,2004.
[2] 尹朝慶.計算機(jī)系統(tǒng)結(jié)構(gòu)教程[M].北京:清華大學(xué)出版社,2005.
[3] 李學(xué)干.計算機(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。