專利名稱:可跨邊界對齊復數暫存器資料的處理器及其方法
技術領域:
本發明是關于資料處理的技術領域;尤指一種利用可跨邊界對齊復數暫存器資料的處理器及其方法。
背景技術:
在處理器進行資料處理時,資料的對齊與否關系到許多關鍵運算的效能,例如字串、陣列等運算的效能。如圖1所示,一筆需處理的資料(ABCDEFGHIJKL)往往跨越資料儲存邊界,當一處理器對該筆資料進行字串或陣列運算時,需先執行許多額外的運算,以便能將該筆資料還原成對齊的格式后,該處理器才能對筆資料進行相關運用。
針對處理資料未對齊的問題,一種公知方法是將資料載入處理器后,再利用各種處理器指令操作來得到所需要的資料。如圖2所示,先將位于100h處的資料(ZABC)載入暫存器R16中,將暫存器R16左移8位元以將不需要的資料(Z)移除,再將位于104h處的資料(DEFG)載入暫存器R17中,并將暫存器R17右移24位元以將不需要的資料(EFG)移除,最后將暫存器R16及暫存器R17進行或(OR)運算并將其結果存至暫存器R16中,此時暫存器R16中的內容即為所需處理的資料(ABCD)。依上述相同步驟,將資料EFGH及IJKL依序載入暫存器R17及暫存器R18中。
由上述說明可知若所需載入的未對齊資料長度為n個字組(一個字組為32位元),公知方法則需5n個指令才能描述讀取動作,同時至少需5n個指令周期才能完成讀取動作,此使得程序碼冗長,占據儲存空間,同時也增加處理器的負擔使得處理器效率不彰。
針對公知方法使用處理器指令處理未對齊資料所引超程序碼冗長及效率的問題,于美國第USP4,814,976號專利公告中,是在載入未對齊資料即同時進行對齊的動作,并將跨越邊界的一筆資料,分成兩次讀取。如圖3所示,先將位于101h至103h處的資料(ABC)載入暫存器R16的位元組0、1、2中,此時暫存器R16的位元組3中的資料為X(don’t care),再將位于104h處的資料(D)載入R16的位元組3中,此時暫存器R16中的內容即為所需處理的資料(ABCD)。依此相同步驟,依序將資料EFGH及IJKL載入暫存器R17及暫存器R18中。
由上述說明可知,若所需載入的未對齊資料長度為n個字組,則需2n個指令才能描述讀取動作,同時至少需2n個指令周期才能完成讀取動作。而且因為對同一儲存器與暫存器位置作重復讀寫,使處理機管線停止(Pipeline Stall)可能性提高。對同一儲存器位置作重復讀取,會浪費總線頻寬,尤其在有些不具有快取儲存器的系統,所造成的延誤更是明顯。
發明內容
本發明的目的在于提供一種以可跨邊界對齊復數暫存器資料的處理器及其方法,以避免公知技術的程序碼冗長、占據儲存空間的問題,同時可避免因為對同一儲存器作重復讀取,浪費總線頻寬□□□□依據本發明的特色之一,提出一種可跨邊界對齊復數暫存器資料的處理器裝置,其主要包含一解碼裝置,以對一多重移位指令進行解碼;一暫存器檔案,具有復數個暫存器,每一暫存器均為N位元,該暫存器檔案可依據一第一位址及一第二位址分別讀取暫存器,并由一第一輸出端及一第二輸出端輸出,及可依據一第三位址經由一輸入端寫入該復數暫存器其中之一(N為正整數);一移位器,耦合至該暫存器檔案的第一輸出端及第二輸出端,并將該第一輸出端及第二輸出端的輸出內容串接成一2N位元字組,再依據一移位值w將該2N位元字組移位w位元(w為正整數),并輸出該2N位元字組中的前N個位元;以及一控制裝置,耦合至該解碼裝置及暫存器檔案,依據該解碼后的多重移位指令,以設定該第一位址、第二位址、第三位址及移位值w,讀出對應暫存器的內容,以由該移位器將所讀出暫存器的內容移位w位元,并依據該第三位址將該移位器的輸出寫入該暫存器檔案。
所述的裝置,其中N為32。
所述的裝置,其中w為8、16、24其中之一。
所述的裝置,其中該移位器可向左或向右移位w位元。
所述的裝置,其中該第三位址是設定與該第一位址相同。
所述的裝置,其中該第二位址是設定為該第一位址的后續位址。
依據本發明的另一特色,提出一種可跨邊界對齊復數個暫存器資料的方法,該復數個暫存器形成一暫存器檔案,每一暫存器均為N位元,該暫存器檔案可依據一第一位址及一第二位址分別讀取暫存器,并由一第一輸出端及一第二輸出端輸出,及可依據一第三位址經由一輸入端寫入該復數暫存器其中之一(N為正整數),該方法主要包含下列步驟(A)依據一多重移位指令設定該第一位址、該第二位址、該第三位址及一移位值w;(B)依據該第一位址及第二位址讀出對應暫存器的內容;以及(C)將步驟(B)所讀出暫存器的內容串接成2N位元的字組,再對該2N位元字組進行移位w位元,并將移位后的該2N位元字組中前N個位元,依據該第三位址寫入該多個暫存器其中之一。
所述的方法,其中步驟(A)至步驟(C)是重覆執行,直到一預定個數的暫存器均已完成移位。
所述的方法,其中N為32。
所述的方法,其中w為8、16、24其中之一。
所述的方法,其中步驟(C)中移位w位元可為向左或向右移位w位元。
所述的方法,其中該第三位址是設定與該第一位址相同。
所述的方法,其中該第二位址是設定為該第一位址的后續位址。
圖1為一組未對齊資料在儲存器中排列的示意圖。
圖2為公知技術載入一組未對齊資料的程序碼。
圖3為另一公知技術載入一組未對齊資料的程序碼及暫存器的示意圖。
圖4為本發明的可跨邊界對齊復數暫存器資料的處理器裝置的方塊圖。
圖5為本發明技術控制裝置5的詳細電路圖。
圖6為本發明技術運作示意圖。
圖7為本發明技術的一應用范例。
具體實施例方式
圖4顯示本發明的利用可跨邊界對齊復數暫存器資料的處理器的方塊圖,其包括有一解碼裝置100、一控制裝置200、一暫存器檔案300及一移位器400。暫存器檔案300具有復數個暫存器3001,每一暫存器3001均為N位元,在本實施例中,N值較佳為32。該暫存器檔案300可依據一第一位址301及一第二位址302分別讀取暫存器3001,并由一第一輸出端310及一第二輸出端320輸出,及可依據一第三位址303經由一輸入端330寫入該復數暫存器3001其中之一(N為正整數)。
該解碼裝置100是對一多重移位指令進行解碼,該多重移位指令可分為一多重左移指令(Multiple Left Shin Instruction、MLSI)及一多重右移指令(Multiple Right Shift Instruction、MRSI)。其中,多重左移指令格式為MLSI Rx,Ry,w,其代表將x至y范圍內的暫存器內容值,整體進行向左移位的動作w位元。而多重右移指令格式為MRSI Rx,Ry,w,其代表將x至y范圍內的暫存器內容值,整體進行向右移位的動作w位元。解碼裝置100是對一多重移位指令進行解碼后,會產生x、y,L_R*及w訊號,并輸出至該控制裝置200,其中,L_R*訊號用以指示向左或向右移動w僅元,當L_R*訊號為1時,表示向左移動w位元,當L_R*訊號為0時,表示向右移動w位元。
該移位器400是耦合至該暫存器檔案300的第一輸出端310及第二輸出端320,并將該第一輸出端310及第二輸出端320的輸出內容串接成一64位元宇組,再依據一移位值w及L_R*訊號將該64位元字組向左或向右移位w位元(w為正整數),并輸出該移位后64位元字組中的前32個位元。
該控制裝置200耦合至該解碼裝置100及暫存器檔案300,依據該解碼后的x、y,L_R*及w訊號,以設定該暫存器檔案300的第一位址301、第二位址302、第三位址303及移位值w,并由該暫存器檔案300的第一輸出端310及第二輸出端320讀出該暫存器檔案300中第x個暫存器及第y個暫存器的內容。
圖5是該控制裝置200的詳細電路圖,其主要包含一多工器210、一比較器220、一第一位址暫存器230、一加法器240及一第二位址暫存器250。該多工器210選擇一由解碼裝置100所產生的x訊號或由該第二位址暫存器250的內容值。該多工器210的輸出寫入該第一位址暫存器230,其輸出至該暫存器檔案300的第一位址301,以存取該第一位址301所指的暫存器3001。該加法器240將該第一位址暫存器230的內容值加1后再寫至該第二位址暫存器250,該第二位址暫存器250的內容值用以存取該第二位址302所指的暫存器3001。該比較器220比較該第一位址暫存器230的內容值與解碼裝置100所產生的y訊號,若該第一位址暫存器230的內容值大于或等于該y訊號時,則產生一停止訊號(stop signal)。
圖6顯示本發明的運作示意圖,其執行一MLSI R16,R19,8指令,該指令表示將暫存器R16、R17、R18及R19的內容值向左移位8位元。當第一執行周期開始時,該解碼裝置100解碼該指令,并產生x=16、y=19,L_R*=1及w=8訊號。該多工器210選擇一由解碼裝置100所產生的x訊號(=16),控制裝置200則將該第一位址暫存器230填入16,并經由該加法器240運算將該第二位址暫存器250填入17。由于第一位址暫存器230為16,其小于19,故比較器220不會產生該停止訊號(stop signal)。亦即該暫存器檔案300可依據該第一位址301(=16)及第二位址302(=17)分別讀取暫存器R16的內容值(=ZABC)及R17的內容值(=DEFG)。并由第一輸出端310及第二輸出端320輸出至該移位器400。
該移位器400將該第一輸出端310的內容值(=ZABC)及第二輸出端320的內容值(=DEFG)串接成一64位元字組(=ZABCDEFG),再依據一移位值w=8及L_R*=1訊號將該64位元字組向左移位8位元(=ABCDEFG0),并輸出該移位后64位元字組中(=ABCDEFG0)的前3個位元(=ABCD)。控制裝置200則依據該第三位址303將該移位器400的輸出(=ABCD)寫入該暫存器檔案300的暫存器R16中。
當第二執行周期開始時,該多工器210選擇該第二位址暫存器250的內容值(=17),控制裝置200則將該第一位址暫存器230填入18,并經由該加法器240運算將該第二位址暫存器250填入18。其執行過程相同于第一執行周期,故當第二執行周期結束時,該暫存器R17的內容值為EFGH。同理,故當第三執行周期結束時,該暫存器R18的內容值為IJKL。
當第四執行周期開始時,該多工器210選擇該第二位址暫存器250的內容值(=19),控制裝置200則將該第一位址暫存器230填入19,由于第一位址暫存器230為19,故比較器220會產生該停止訊號(stop signal)終止執行程序,亦即僅需三個執行周期即可。
圖7是顯示本發明的運用示意圖,當欲將一組未對齊資料載入時,可先用載入指令(LW)分別將未對齊資料載入暫存器R16、R17、R18及R19中,再使用本發明的多重左移指令(MLSI)即可完成。由圖7可知,其程序碼僅需5個字組。
由上述說明可知,本發明的技術可解決公知技術程序碼冗長、占據儲存空間的問題,同時可避免因為對同一儲存器作重復讀取,浪費總線頻寬的問題。
應注意的是,上述諸多實施例僅是為了便于說明而舉例而已,本發明所主張的權利范圍自應以申請專利范圍所述為準,而非僅限于上述實施例。
權利要求
1.一種可跨邊界對齊復數暫存器資料的處理器裝置,主要包含一解碼裝置,以對一多重移位指令進行解碼;一暫存器檔案,具有復數個暫存器,每一暫存器均為N位元,該暫存器檔案可依據一第一位址及一第二位址分別讀取暫存器,并由一第一輸出端及一第二輸出端輸出,及可依據一第三位址經由一輸入端寫入該復數暫存器其中之一(N為正整數);一移位器,耦合至該暫存器檔案的第一輸出端及第二輸出端,并將該第一輸出端及第二輸出端的輸出內容串接成一2N位元字組,再依據一移位值w將該2N位元字組移位w位元(w為正整數),并輸出該2N位元字組中的前N個位元;以及一控制裝置,耦合至該解碼裝置及暫存器檔案,依據該解碼后的多重移位指令,以設定該第一位址、第二位址、第三位址及移位值w,讀出對應暫存器的內容,以由該移位器將所讀出暫存器的內容移位w位元,并依據該第三位址將該移位器的輸出寫入該暫存器檔案。
2.如權利要求1所述的裝置,其特征在于,其中N為32。
3.如權利要求1所述的裝置,其特征在于,其中w為8、16、24其中之一。
4.如權利要求1所述的裝置,其特征在于,其中該移位器可向左或向右移位w位元。
5.如權利要求1所述的裝置,其特征在于,其中該第三位址是設定與該第一位址相同。
6.如權利要求1所述的裝置,其特征在于,其中該第二位址是設定為該第一位址的后續位址。
7.一種可跨邊界對齊復數個暫存器資料的方法,該復數個暫存器形成一暫存器檔案,每一暫存器均為N位元,該暫存器檔案可依據一第一位址及一第二位址分別讀取暫存器,并由一第一輸出端及一第二輸出端輸出,及可依據一第三位址經由一輸入端寫入該復數暫存器其中之一(N為正整數),該方法主要包含下列步驟(A)依據一多重移位指令設定該第一位址、該第二位址、該第三位址及一移位值w;(B)依據該第一位址及第二位址讀出對應暫存器的內容;以及(C)將步驟(B)所讀出暫存器的內容串接成2N位元的字組,再對該2N位元字組進行移位w位元,并將移位后的該2N位元字組中前N個位元,依據該第三位址寫入該多個暫存器其中之一。
8.如權利要求7所述的方法,其特征在于,其中步驟(A)至步驟(C)是重覆執行,直到一預定個數的暫存器均已完成移位。
9.如權利要求7所述的方法,其特征在于,其中N為32。
10.如權利要求7所述的方法,其特征在于,其中w為8、16、24其中之一。
11.如權利要求7所述的方法,其特征在于,其中步驟(C)中移位w位元可為向左或向右移位w位元。
12.如權利要求7所述的方法,其特征在于,其中該第三位址是設定與該第一位址相同。
13.如權利要求7所述的方法,其特征在于,其中該第二位址是設定為該第一位址的后續位址。
全文摘要
本發明提出一種以可跨邊界對齊復數暫存器資料的處理器及其方法,其中,一解碼裝置用以對一多重移位指令進行解碼;一暫存器檔案具有復數個暫存囂,每一暫存器均為N位元;一移位器將暫存器檔案第一輸出端及第二輸出端的輸出內容串接成一2N位元字組,再將該2N位元字組移位w位元,并輸出其前N個位元;一控制裝置依據該解碼后的多重移位指令,以設定暫存器檔案,讀出對應暫存器的內容,以由移位器將所讀出暫存器的內容移位w位元,并依將該移位器的輸出寫入該暫存器檔案。
文檔編號G06F9/315GK1622031SQ20031011881
公開日2005年6月1日 申請日期2003年11月28日 優先權日2003年11月28日
發明者梁伯嵩 申請人:凌陽科技股份有限公司