999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

處理元操作自主性的分析與設計

2006-12-31 00:00:00沈緒榜
計算機應用研究 2006年10期

摘 要:SIMD計算機在并行計算中有著廣泛的應用,為了增加其并行處理的能力,一個很重要的方面就是如何提高其PE(Processing Element)的操作自治能力。通過在原有指令系統中加入衛式指令和偽跳轉指令,并且加入少量相應的硬件,不僅能夠大大提高PE的操作自主性從而實現數據和指令的高度并行,而且在低功耗方面也具有重要作用。

關鍵詞:并行處理; 操作自治; 衛式指令; 偽跳轉; 低功耗

中圖法分類號:TP302.1 文獻標識碼:A 文章編號:1001-3695(2006)10-0089-04

Analysis and Design of PE’s Operation Autonomy

LI Wei, XIAO Xiao, SHEN Xubang

(Xi’an Microelectronics Technology Institute, Xi’an Shanxi 710054, China)

Abstract:SIMD machine is widely used in parallel computation. How to improve the capability of the PE’s operation autonomy in SIMD machine is very important for improving the ability of parallel computation. By incorporating guarded instructions and pseudo branches into the instruction set, the capability of the PE’s operation autonomy can be improved greatly and higher parallel of data and instructions can be achieved. It is also useful in power saving of the processor.

Key words:Computation; Operation Autonomy; Guarded Instructions; Pseudo Branches; Power Saving

由于媒體、圖像和數字信號處理的需要,當今許多處理器的設計中均包含了或大或小的處理元(PE)陣列,從而實現并行處理。這種結構的計算機一般可以分為兩類,即SIMD(Single Instruction stream,Multiple Data stream)和MIMD(Multiple Instruction stream,Multiple Data stream)。雖然MIMD計算機更為靈活,但設計復雜、成本較高,而且在當前一般的應用情況下(如圖像處理),SIMD計算機已經能夠滿足需要,所以當今大多數的并行處理器均屬于SIMD類型。典型的SIMD處理器通常包括一個宿主機和一個PE陣列,其中每一個PE都有自己的本地存儲器。宿主機發送一組指令到PE陣列,這樣每一個PE都執行相同的指令流,從而對本地數據進行操作。

雖然對SIMD計算機在并行處理方面已經有了很多的研究,但是仍面臨很多問題,其中最重要的就是PE的自治問題,因為它對整個處理器的性能有很大的影響。PE的自治包括數據值自治、數據尋址自治、指令執行自治(操作自治)、指令流自治,這里我們主要討論PE的操作自治問題。所謂操作自治就是指在指令流的執行過程中,每一個PE都能夠根據本地數據或本地的操作結果而選擇執行一個指令流中的一條或幾條指令的能力。

本文首先分析傳統SIMD計算機在PE操作自治方面所存在的一些不足,然后提出一些能夠增加PE操作自治能力的方法,最后對LS_DSP中的PE進行改進,從而使其具有較高的操作自治能力。

1 PE在操作自治方面的不足

為了說明傳統SIMD計算機中PE在操作自治方面存在的一些不足,我們以一種典型的SIMD處理器為模型。這種SIMD處理器主要包括一個宿主機和一個PE陣列,其中每個PE都能對各自的本地存儲器進行存取。宿主機負責把一組指令發送給PE陣列并對其進行控制,每一個PE處理元都執行相同的指令流從而對本地數據進行相同的操作。另外在每個PE處理元中都有一個G寄存器,它用來存儲PE的內部狀態以及掩模碼,其值可以根據每次運算的結果而改變。這樣宿主機(或者控制單元)就可以根據這個寄存器中的值而決定當前指令是否能夠執行。下面就先來分析一下PE陣列在執行各種指令時的情況。

(1)對于一般的順序指令,由于不存在跳轉,每個PE可以依據原先指令的順序來相繼執行每條指令。

(2)對于全局的ifthenelse結構,由于指令跳轉的條件取決于整個PE陣列的條件(每個PE條件的OR),這樣宿主機將會根據PE陣列的條件來為其選擇合適的指令流。所以對于這種指令可以通過修改控制單元中的PC寄存器的內容而很容易地實現跳轉。

(3)對于局部的并行ifthenelse結構,指令是否跳轉取決于每個PE各自的條件。由于SIMD計算機中每個PE都執行相同的指令流,并且PE內部并沒有PC寄存器,所以實現這種局部的并行ifthenelse結構并不容易。前面提到,在每個PE中都有一個G寄存器,它可以用來存放掩模碼,利用這個寄存器就可以實現局部的并行ifthenelse結構。①在執行if語句之前,宿主機要向每個PE的本地存儲器中依次放置掩模碼,當所有的掩模碼均準備好后,宿主機向PE陣列發出一條讀存儲器指令,這樣每個PE就將掩模碼讀入G寄存器。②每個PE開始判斷條件,如果條件滿足則將G寄存器中的Active位置為1,并且執行then從句中的語句;如果條件不滿足則G寄存器中存放的還是原來的掩模碼,這樣then從句中的指令就不會被執行,PE處于等待狀態。對于else從句也執行同樣的操作,從而最終實現局部的并行ifthenelse指令。這樣整個執行時間是各個分支執行時間與掩模碼的準備時間之和。

(4)對于Switch語句以及循環語句,情況同上面相似。

通過上面的分析,可以看出SIMD計算機對于全局的ifthenelse結構是比較容易實現的;而局部的并行ifthenelse結構,則要通過宿主機(或控制單元)的介入來準備掩模碼才能實現,而且在掩模碼準備期間PE陣列是空閑的,所以會造成時間和資源的巨大浪費。除此之外,PE是不支持嵌套的局部并行ifthenelse結構的。上述均說明了PE的操作自主能力是很弱的,所以下面介紹兩種方法(衛式指令和偽跳轉指令)以提高PE的操作自治能力。

2 提高PE操作自主性的兩種方法

在這一節中,將介紹兩種提高PE操作自治能力的方法,即衛式指令和偽跳轉指令。通過使用衛式指令,PE在執行局部的并行ifthenelse結構時可以避免宿主機的介入,從而不僅可以提高PE操作自治能力、減少整個的執行時間,而且可以減少指令中的分支結構,提高指令一級的并行性。但它還是不能夠實現嵌套的ifthenelse結構,這樣通過增加偽跳轉指令便可以很好地解決這個問題。

2.1 衛式指令

所謂衛式指令就是條件執行。衛式指令執行的時候首先判斷條件是否滿足,如果條件滿足,就執行所規定的操作;如果條件不滿足,該指令自動變為NOP或PE自動變為休眠狀態。表1將局部的并行ifthenelse結構映射到了Morphosys SIMD處理器,并很好地說明了衛式指令是如何提高PE操作自主能力的。

表1 局部并行ifthenelse結構在Morphosys SIMD處理器上的映射

從表1中可以看到,MI_moveq,GT_moveq,MI_add以及GT_add都是在原有指令系統中加入的衛式指令,這些指令的前綴表明它們需要判斷的條件(其中MI表示小于,GT表示大于)。PE可以根據這些條件碼以及各PE內部的條件寄存器的值就可以判斷出條件是否滿足,從而決定該指令是否執行。所以在加入衛式指令之后,執行局部的并行ifthenelse結構就不再需要宿主機(或控制單元)的介入,這樣不僅增加了PE的操作自治能力,而且加快了操作的執行。另外,加入衛式指令之后,代碼數量明顯比原來減少,而且去掉了原來代碼中的跳轉指令,這樣有利于提高PE指令一級的并行性。據有關參考文獻,Morphosys SIMD處理器與一般的沒有衛式指令的RISC相比,對于一些對局部數據較為依賴的函數來說,其代碼數量平均能夠減少42%,跳轉語句能夠減少90%。

雖然衛式指令有以上優點,但是衛式指令只能支持簡單的ifthenelse結構,而不能支持嵌套的ifthenelse結構;另外衛式指令前面的條件碼是指令結構的一部分,由于指令碼長度是有限的,而且很多指令均無足夠的空余位來設置條件碼,所以不可能對指令系統中的所有指令都設置與其對應的衛式指令。因此,只有很少一部分或者一些比較重要的指令可以擁有與其對應的衛式指令(如ALU的算術指令)。除此之外,有些處理器的PE內部并沒有條件寄存器,所以要存放條件判斷的結果就需要使用通用寄存器。這樣衛式指令在執行的時候為了獲取條件判斷結果,就必須增加一個存儲器的讀端口,而且直到該條件所保護的最后一條衛式指令執行之后這個寄存器才能被釋放,所以這樣就大大增加了寄存器的負擔。為了解決這個問題,我們可以在PE內部增加一個scalar_mask的移位寄存器,具體實現可以參考后面的參考文獻,這里不再詳細敘述。

從上面可以看出,在某些情況下衛式指令的應用可能會受到一定的限制,但對于一些簡單的ifthenelse結構使用衛式指令還是比較有效的。

2.2 偽跳轉指令

前面已經說明衛式指令不能實現嵌套的ifthenelse結構。下面介紹一種新方法,它可以克服衛式指令的缺點,從而實現嵌套的并行ifthenelse結構。這種方法只需要增加一組偽跳轉指令,而且不需要增加很多硬件,這樣就用較小的代價實現了PE操作自治能力的進一步提高,并且對于PE功耗的節省有很重要的作用。

所謂偽跳轉指令就是指根據條件判斷的結果(或無條件),在偽跳轉指令之后的若干語句都變為NOP指令或在此期間PE變為休眠狀態,直到某個條件觸發PE使之恢復操作。在這個過程中,PE還是順序執行所有語句,只不過有些語句變為了NOP指令,或者在此期間PE變為了休眠狀態,所以說這種跳轉是一種偽跳轉。通過表2來明確說明偽跳轉的實現方式。

在表2中,pBracc和pBra都是偽跳轉指令,所不同的是,pBracc是條件跳轉,而pBra是無條件跳轉。偽跳轉指令后面所跟的T1,T2等是用戶自己定義的標號,并不是一個地址,它們用來指明偽跳轉指令所要跳轉到的位置。這些標號要通過匯編程序來為其編碼(全0不可用),最終作為指令的一部分。匯編程序中NOP指令后面所跟的標號和偽跳轉指令中所定義的標號是一致的,所以所有偽跳轉指令最終跳轉到的目標都是NOP指令。TReg是PE內部的一個五位的寄存器,當pBracc執行并且條件滿足或者pBra執行時,就把它們后面所跟標號的編碼值放入TReg中,當跳轉結束后或在其他情況下TReg放入值都為全0。Awake用來控制PE是否處于活動狀態,當PE處于活動(Awake=1)狀態時,就能執行相應操作;當PE處于休眠狀態(Awake=0)時,就不執行指令,從而使得PE處于低功耗狀態。

表2 偽跳轉指令應用實例

整個偽跳轉指令的具體執行過程可以描述如下:在所有指令執行之前應把TReg清0,將Awake置1。當執行到偽跳轉指令時,如果條件成立并且此刻Awake=1,那么就將標號的編碼打入到TReg寄存器中,并且將Awake清0,表明PE處于休眠狀態。當執行到NOP指令,并且TReg寄存器中的值和NOP指令中的標號編碼值相等時,表明指令已經實現了跳轉,這時就將TReg寄存器清0,并且將Awake置1,從而繼續執行下面的指令。

從上面的討論中可知,這種偽跳轉指令是對真正的跳轉指令的一種模擬,它所實現的功能和真正的跳轉指令是一樣的。所以通過加入一組偽跳轉指令,PE便可以實現嵌套的ifthenelse結構,而且不用宿主機或者控制單元的參與。這種方法不僅對指令系統無苛刻的要求,而且實現起來所需要的硬件也很少,因此是一種提高PE處理元操作自主性的較好方法。

3 LS_DSP中PE操作自主性的設計

通過上面的介紹,我們已經對如何提高PE的操作自主性有了較為深入的理解。通過在原有指令系統中加入衛式指令和偽跳轉指令,不僅能夠使PE的操作自主能力得到較大的提高,而且對PE功耗的節省有重要作用。LS_DSP是西安微電子研究所設計的一個專門用于圖像處理的SIMD處理器,有關此處理器的詳細資料可參閱相關文獻。此處理器也由一個宿主機和一個PE陣列組成,因此應用以上所提及的兩種方法可以將其中的PE改進為一個操作自治能力較強的處理元。

3.1 加入衛式指令

雖然衛式指令有一些缺點,但是利用它實現一些簡單的沒有嵌套的ifthenelse結構還是比較方便的。尤其是對于有關ALU的算術類指令和傳送類指令,如果有與其對應的衛式指令,對PE的操作會帶來很大的方便,從而對于提高PE的操作自治能力有較大幫助。LS_DSP的指令系統中已存在條件傳送指令,因此我們只需要加一組與ALU有關的衛式指令即可。通過對原有指令系統的分析,加入的四條衛式指令為條件加(paddic)、條件減(psubic)、條件乘(pmulic)、條件除(pdivic)。它們都屬于REG2類型的指令,并且執行周期與原來的加減乘除四條指令相同。

LS_DSP中衛式指令的硬件實現如圖1所示。在譯碼邏輯譯出paddi,psubi,pmuli,pdivi以及paddic,psubic,pmulic,pdivic之后,利用它們可以產生add,sub,mul,div四個信號。用它們來代替原來的paddi,psubi,pmuil,pdivi送往控制產生邏輯,從而產生ALU的控制信號以及寄存器讀寫信號,然后利用Awake1對這些控制信號加以約束,便可以實現正確的操作。在使用時,四條衛式指令必須與比較指令合用。比較指令首先將比較的結果打入到PE內部的條件寄存器Cond中,Cond=1為條件滿足,Cond=0為條件不滿足。這樣這四條衛式指令就可以根據Cond的值來確定PE是執行指令還是處于休眠狀態。圖1中Awake1信號的邏輯表達式如下:

Awake1=(paddic_+psubic_+pmulic_+pdivic_)× cond

其中,paddic_,psubic_,pmulic_,pdivic_表示paddic,psubic,pmulic,pdivic經過了一級觸發器。Awake1=1表示PE正常工作;Awake1=0表示PE處于休眠狀態,不進行任何操作。

3.2 加入偽跳轉指令

在LS_DSP的指令系統中已經加入了四條衛式指令,為了使LS_DSP中PE的操作自治能力得到進一步的提升,再加入兩條偽跳轉指令,即pBrac和pBra。pBrac是條件跳轉,它同上面四條衛式指令一樣,要與比較指令配合使用。pBra是無條件跳轉,可以單獨使用。

在2.2節中已經說明pBrac,pBra以及帶標號的NOP指令后面所跟的標號是由匯編程序為其編碼的,并作為指令的一部分。所以這里將這三種指令的最后五位作為標號區。另外為了實現偽跳轉,需要加入的主要硬件還有一個五位的標號寄存器TReg以及一個五位的比較器。pBrac和pBra是雙周期指令,兩個執行周期依次為P1,P0;帶標號的NOP指令為單周期指令,執行周期只有一個P0周期。這三條指令的執行過程如下:

(1)對于pBrac指令,P1周期判斷條件,并且將IR寄存器中的最后五位暫存在Temp寄存器中;在P0周期如果條件滿足,則將Temp中的值存入TReg中并使Awake2為0,否則保持原值。

(2)對于pBra指令,情況與pBrac指令基本相同,只不過不用判斷條件是否滿足。

(3)對于NOP指令,在執行周期首先將指令寄存器IR中的最后五位保存在寄存器IR5中,然后與TReg中存放的標號編碼相比較。如果相等,則表示跳轉結束,并使TReg=00000,Awake2=1。

為了實現上述操作,需要在每個PE中加入少量邏輯,如圖2所示。圖2中的IR0~IR4來自控制單元的指令寄存器IR,IR5,Temp與TReg都由五個D觸發器構成,Awake是一個D觸發器,Comp為五位比較器電路。xxx表示在譯碼級譯出的指令信號,xxx_表示xxx經過一級觸發器后得到的信號。為了與3.1節中的Awake1結合以實現對PE的控制,利用Awake1與Awake2生成Awake。這樣類似圖1最終可利用Awake來控制PE中各個功能部件的數據來源、控制信號以及寄存器的讀寫信號,即Awake=1時,操作正常;Awake=0時,各功能部件數據來源和控制信號被截斷,并且寄存器讀寫信號為0,從而實現低功耗要求。圖2中的使能信號以及復位信號的表達式如下:

enable1=pBrac+pBra

enable2=pBrac_×cond×p1×awake+pBra×p1×awake

enable3=enable2

RESET=reset+NOP_×e×awake

4 結論

本文通過分析傳統SIMD計算機在PE操作自治方面所存在的一些不足,提出了兩種提高PE操作自治能力的方法,即衛式指令和偽跳轉,并將這兩種方法應用于西安微電子研究所研制的SIMD處理器LS_DSP中,從而不僅使其PE的操作自治能力得到大幅度提高,而且對PE功耗的節省也有著重要的作用。

參考文獻:

[1]Manuel Lois Anido, Alexander Paar, Nader Bagherzadeh. Improving the Operation Autonomy of SIMD Processing Elements by Using Guarded Intructions and Pseudo Branches[C]. Proceedings of the Euromicro Symposium on Digital System Design, 2002.148155.

[2]Dionosios N Pnevmatikatos, Gurindar S Sohi. Guarded Execution and Branch Prediction in Dynamic ILP Processors[C]. The 21st International Symposium on Computer Architecture, 1994.120129.

[3]H Singh, M Lee, G Lu, et al. MorphoSys: An Integrated Reconfigurable System for DataParallel and ComputationIntensive Applications[J]. IEEE Transactions on Computers, 2000,49(5):465-481.

[4]Dennis M Hawver, George B Adams Ⅲ. Processor Autonomy and Its Effect on Parallel Program Execution[C].Proceedings of the 6th Frontiers Symposium, 1996.144153.

[5]李莉,沈緒榜.LS SIMD微處理器的控制邏輯設計[J].計算機學報,2000,23(5):557-560.

[6]周國昌,王忠,車德亮,等.LS SIMD協處理器控制器設計[J].計算機應用研究,2005,22(7):99100,104.

作者簡介:

李煒(1980-),男,碩士研究生,研究方向為嵌入式計算機體系結構、微處理器芯片設計;肖瀟(1982-),男,碩士研究生,研究方向為嵌入式計算機體系結構、微處理器芯片設計;沈緒榜(1933-),男,院士,博導,研究方向為計算機體系結構、嵌入式計算機及其芯片設計。

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 国产亚洲欧美日韩在线观看一区二区| 国产噜噜在线视频观看| 五月激情婷婷综合| 亚洲黄色成人| 久久国产拍爱| 国产在线视频二区| 亚洲国产精品VA在线看黑人| 久久综合丝袜长腿丝袜| 欧美成在线视频| 亚洲系列中文字幕一区二区| 男女精品视频| 波多野结衣一区二区三视频| 亚洲人成色在线观看| 动漫精品啪啪一区二区三区| 亚洲欧美一区二区三区图片| 日本不卡视频在线| 一级毛片无毒不卡直接观看| 97久久免费视频| 久久香蕉国产线看观看亚洲片| 国产一二三区在线| 亚洲成网777777国产精品| 亚洲国产日韩欧美在线| 国产一级二级在线观看| 国产一在线观看| 欧美精品啪啪| 亚卅精品无码久久毛片乌克兰| 国产一级毛片yw| 国产欧美日韩91| 欧美日韩亚洲国产| 97在线公开视频| 亚洲天堂.com| 天堂在线www网亚洲| 91综合色区亚洲熟妇p| 免费一级毛片在线观看| 日韩最新中文字幕| 伊人激情综合| 色老头综合网| 日韩免费毛片| 亚洲综合亚洲国产尤物| 操国产美女| 成人在线视频一区| 亚洲视频三级| 欧美曰批视频免费播放免费| 亚洲欧洲AV一区二区三区| 国产美女无遮挡免费视频网站| 老司机精品久久| 香蕉伊思人视频| 99久久性生片| 亚洲人成网站色7777| 亚洲一区二区三区国产精品 | 成人国产精品2021| 国产微拍一区二区三区四区| 国产免费自拍视频| 视频国产精品丝袜第一页| 亚洲啪啪网| 日韩成人在线视频| 伊人精品视频免费在线| 国产一区二区丝袜高跟鞋| 婷婷午夜影院| 国产不卡网| 国产欧美日韩综合一区在线播放| 久久久噜噜噜久久中文字幕色伊伊 | 成人免费午夜视频| 国产区91| 色成人亚洲| 无码中字出轨中文人妻中文中| 亚洲精品色AV无码看| 亚洲人成影视在线观看| 91国内在线视频| 精品少妇人妻av无码久久| 国产精品亚欧美一区二区三区 | 亚洲专区一区二区在线观看| 黄色一级视频欧美| 中文天堂在线视频| 黄色网页在线播放| 国产成人AV男人的天堂| AV熟女乱| 欧美高清国产| 亚洲首页在线观看| 18禁色诱爆乳网站| 日韩欧美视频第一区在线观看| 99在线观看免费视频|