201007558 九、發明說明: 【發明所屬之技術領域】 本發明是有關於指令編碼方法和處理器, 關於一種並行指令的指令編碼方法和處理器且特別是有 【先前技術】 爲了加快處理器的處理速度,許多 時鐘周期可以發射多條指令的能力。=寸:器都具有每個 個時鐘周期發射多條指令的能力的處種能夠每 種是超標量處理器,超標量處理器在單個時一 發射執行多條指令。爲了使這多條# 、、二期内可以 標量處理器-般具有多個處理單' 曰二^並订執行,超 二㈣運算單元和裝載/存儲單元等。超標量處理 通過硬體從應用的程式碼中尋找 要 找到較多的指令級並行,就可並订性,如果沒有 ^ , 叮 了月b出現空置的指令槽。掛於 ❹ 較低指令級並行性的一些應用, 、 . 芍稞量處理器並不能體現 出匕在性能方面的優勢。此外 利用硒k X i 〜你置慝理器由於過多的 盯日?動態調度’使得硬體開銷過大。另-種 力置/ 7字(VLIW)處理器。超長指令字處理器也可以 :::時鐘周期内發射多條指令,它主要是通過編譯器來 曰7級並仃性’然後編碼成—條由可同時發射的多條 扣:<1且σ而成的超長指令。相比於超標量處理器,超長 日々字處理器在處理器硬體開銷方面具有一定的優勢。 超長指令字處理器採用了並行指令技術,在同一時間 5 201007558 可以同時對多條指令進行處理。通常可以把同時進行處理 的並订指令稱爲一個指令包或指令字…個指令包的 往往受限於匯流排寬度。一般决 h ^ ^ 說,現今普遍使用的匯流 =2 。例如’對於64位元匯流排寬声 的處理器’其指令包的長度最大爲64位。 Ο Ο 超長指令字處理器的指令包都非 =一存放空間。而處理器需要二 =二:要求的應用程式。存儲指令代碼除了 m體,還需佔用緩存,這些對晶片面積都將造成影 重要因减4 ^較隸衫成本的最 當重晷的一/指令集代碼的編場效率是設計中面臨的非 功耗Si。而且,對指令代碼進行存取操作需要 小。的長短也直接影響著取指令代碼所需的功耗大 長立令需要執行比較複雜的功能或者帶有 勃r的“要相對較長的指令長度,而有的指令 所J的二較爲簡单’只需要相對較短的指令長度。如果 3 同樣的長度’則通常需要滿足具有最長指 ,長度的心令的要求,這樣 也採用了更長的指令長…,一:較簡单功*b的指令 储空間。因此 又’逆在—疋程度上浪費了指令存 的存儲空間。對=理器採用變長指令來減少指令佔用 來說,如果同時使令技r的超長指令字處理器 的長度是不確個指令包中的每條指令 疋的,無法判斷-個指令包是否已解碼完 6 201007558 成。因此’指令解碼的時候,必須在指令編碼中顯示每個 指令包的邊界,使得處理器的流水線能夠辨認哪幾條指八 構成了-個指令包。在—些現有的處理器中,在每條^ 編碼時加人-個連.接域,用—位或多位元代絲表示= ㈣的該條指令之後有無下—條指令,藉此可以判斷―: 才曰令包中的全部指令是否已完成解碼。 由於處理器的指令空間壓縮有時可能幅度非常大 Ο ❹ 能造成指令空間編碼十分腎浮_ s )丁刀緊張。爲了有效的節省指令 空間:ΐ發明試圖從指令包的角度來考慮改進指令編碼方 法’以節省指令編喝空間。 【發明内容】 爲克服現有技術中存在的缺陷,本發明提出了 於可發射並行指令的處理㈣指令編碼方法,可 行指令的指令長度,節省指令存儲空間和取指令功^並 本發明並提供了一種可以節省指令存儲 功耗的處理器。 知7 根據本發明的一個方面,一種用於可發射並 處理器的指令編碼方法,哕古、土故在/<r上 7 ^ ^方法將每條扣令編碼爲多個編 碼域、、特徵在於’編碼域中可選擇性地包含表徵是否後 續指令與當前指令屬於同一個指令包的連接域。 根據本發明的—個方面,連接域的設置與 的計算單元的數量和裝載/存儲單元的數量決定。 在對指令並行發射的指令包中,最多包含—條未設置 7 201007558 ΐϊΐη’並且,當指令包中包含-條未設置連接域 指令。,未設置連接域的指令編碼在指令包的最後一條 個裝實施_例中’處理器中設置了-個計算單元,多 接域,對於計算指令;=接對;令設置連 ❹ 元,施例中’處理器中設置了-個*載㈣單 域,對^載指令編碼中,對於計算指令設置連接 、裝載/存儲指令不設置連接域。 理器H爛並行指令的處 疋’記憶體中存放有多條指令職個计算早 地包含表徵是否播7的編碼域t可選擇性 連接域,連接域的气則指令屬於同—個指令包的 裝載/存儲單元的數k//定否由處理器的計算單元的數量和 在本發明的—^ 載/存儲單元,—’處理器設置了至少-個裝 指令中的裝裁/存儲指令:記:體中存放有多條指令’ 令與當前指令屬於K 域Μ置表徵是否後續指 指令在編碼誠,不設置連 ::包的連接域’指令中的計算 計算G發:實施例,,處理器設置了至少—個 令’指令中的計算指令在II::憶體中存放有多條指 與當前指令屬於n 編馬域尹設置表徵是否後續指令 J一個指令包的連接域,指令令的裳载/存 8
$於&令包内部指令排列的無關性,爲了I缩編碼空 a ’本發明提出了一種用於可發射並行指令的處理器的沪 令編碼方法,有效解決了並行指令的連接域的冗餘問題。曰 該方法將每條指令編碼爲多個編碼域,但並非每個指令的 編碼域中都包含有表徵是否後續指令與當前指令屬; 201007558 储指令在編喝域中不設置連接域 【實施方式】 參見圖1,根據本發明的—個 裝载/存料^於存料令㈣料, 匯流排可同時對兩個裝载/存儲單 時, 元15從裝載/存儲單元中取出指 ^操作。控制單 由外|罝分抽由 7並對心$進行解碼,再 由。十算早X根據解碼後的指令從开再 料執行運算。處理g Mi# β 畀儲早疋中取出資 料4 4理|^的每個流水線周期可以執行 包’一個指令包的最大县泠这 和7 例中最夕由-h 度爲 位’在本示例性實施 夕 条计算指令和兩條存取指令共:停妒人槿 成。由於在VUW體系中,一個一條^令構 Jr n ^ 個釦7包中的所有指令都是 =二個流水線周期並發執行的指令,所以同-指令包7 的㈣順序無„要’任何排列順序執行的 =樣的,這樣使得傳統基於每—條指令編瑪中都:有= 接域(Link Bit)的方法本質上有 來編碼^上有几餘,讀的冗餘不僅帶 來編碼^的㈣,也降低了指令料的 儲指令的記憶體的大小和取指令所㈣功I θ加了存 9 201007558 個指令包的連接域’而是根據處理器的硬體結構在部分指 令的編碼域中設置連接域。本發明中指令的連接域的設置 與否由處理器的計算單元的數量和裝載/存儲單元的數量 來決定。在發射並行指令的指令包中,最多包含一條 置連接域的指令,當指令包中包含—條未設置連接域的;; 令時,該未設置連接域的指令編竭在指令包的最後_條指
在一二示例性的實施例中,處理器中設置了一個計算 單元以及至少-個存儲單元。例如’圖ι所示的處理器中, =置了兩個裝載/存儲單元和—個計算單元。根據這樣的硬 ’按照本發明,可以只對該處理器的所有裝載,存儲 ^設置連接域,而對所有計算指令不設置連接域。在對 ί令並行發射的指令包中,最多包含-條計算指令。當指 包3 -條計算指令時,該計算指令編碼在指令包的 條才曰?。圖2爲一種示例性的指令編碼 =顯儲指令包括操作碼域、運算元〗域和連= :運 算r域等一令也心 域等可選性地包括運算元2域和運算元3 寄存器,或Π、運:元2域和運算元3域分別可以是 知内容,:宣 即數(指令的這些編碼域爲本領域的已 處理再贅述)°在控制單元對指令進行解碼後, 據由指令的操作碼域解碼得到的操作資訊來執 二;算Γ進行存儲/裝載指令/資料,或者進行心 寻。在—些實施例中,連接域可以用編碼中的—個 201007558 • 位或多個位來表示。例如,可以設置一们位長度、 連接位iink bii(簡稱L)的編碼域來表示連接域,當歸bit 位的值爲"夺,表示後續指令與當前指令屬於同一個指入 包;當1inkbii位的值爲〇時’表示後續指令與當前指令= 屬於同一個指令包。當然,本領域的技術人員還可以採用 其他方式表示連接域’例如触bit位的值爲0時,表 續指令與當前指令屬於同一個指令包;#如咖位的值爲 ❹1時’表示後續指令與當前指令不屬於同-個指令包。另 外’本領域的技術人員還 域,這裏不再贅述。多個位來表示連接 :據本發明的一個實施例’指令長度有例如以位元, 24位和32位元等,指今白 長度等條件…― 是64位。在指令 載/存储指令和二=二1理器可以並行執行兩條裝 二:Γ條計算指令組成的,令包。當執行由 ❺在指成的:個指令包時,兩條裝載/存儲指令放 計算t人去1⑥條计算指令放在指令包的最後,該 在控制單元進行指令_時,由 了連接域《=均爲裝載/存健指令,其中分別設置 包=與當前指令屬於同-指令包,因 裝載,存错指令根據連;域:.:令;’广令包中的這兩條 ,解碼完’後面還存在指令。當解瑪出指令包還沒 _料元根據計算指令本身的性rt時,由於控 質gp控制單元從解碼出來 11 201007558 算指令,因此,控制單… 條裝載/存儲指令和^條n當該處理器並行執行由- 地,把裝栽/存儲指令放在指令^的^的指令包時,類似 設置連接域表示後續指 該裝載/存儲指令 ❹ ❷ 計算指令放在指令包的最後,::二屬:同-指令包,而 從裝載/存館指令中的連 ^十,I未設置連接域。 其他指令,而從計曾并A °以判斷出指令包中還存在 當該處理器並行執1y可以明確指令包已經完成解碼。 時,則二:九條裝载/存儲指令組成的指令包 指令包巾裝載/存儲指令料接域可以指示出 的連接令包中在後_存儲指令 成了全部解碼==僅中執已經沒有後_ 成的於人勺拉 行由一條裝載/存儲指令組 ί I包時’通過該裝載/存儲指令的連接域可以指干出 2包中沒有後續指令。當該處理器僅執行由一條計算指 顯==二則通過計算指令本身解碼出的操作碼 解碼。’因而可以判斷出該指令包已經完成 例如,下面列出的-個指令包包含三條並行指令的例 子,其具體編碼可參見圖7。 LDW Al, D1 || LDW Α2, D2 || ADD Dl, D2, D3 該指令包可用來進行位址的計算。在指令包的三條並 订指令中,前料指令均爲LDW指令,分別用來把位址寄 存器定址制-財的記億體諸A1、A2裝制資料寄 12 201007558 存器,屬於裝载/存儲指令e ADD指令用來執行將資料寄存 :D!與資料寄存器此進行加法運算,結果存人目標資料 寄存器D3。丄靠指令屬於裝載/存儲指令,在編碼時設置 連接位元Hnk bit,在圖7中以L位表示。而細指令屬 於計算指令’在編碼時未設置連接位元Hnkbit,並且該計 ^令放在指令包的最後。在如上三條並行指令組成的指 4中’ Μ指令㈣兩條LDW指令後面都跟有其他並行 ❺ 因此’這兩條LDW指令的連接心位元都爲例如卜 表不後續指令與當前指令屬於同—個指令包。在另一示例 中,例如該指令包僅包含前兩條並行的裝載/存儲指令LDW 指令’而不包含計算指令ADD指令時,指令包中的第"条 LDW才曰令的連接位疋L位元爲例如i,表示指令包中還有 並行指令在其後,而第2條LDW指令的連接位元L位元爲 J如〇表示才曰令包已經結束,後面沒有並行指令。 從以上描述可以看出,對於可執行多條並行指令的處 ❷❹’本發明省略了計算指令的連接域而減少了指令佔用 的存倚空間,但同樣可以準確判斷出指令包是否已經完成 解碼。改變指令長度模式和/或指令包最大並行長度的情 例如僅採用16位和32位元兩類指令長度,這仍屬於 本發明的實質範圍内。 在另-些實施例中,處理器中設置了一個存儲單元以 及至少一個計算單元。例如,圖4所示的處理器40,設置 了 _個δ十算单το 42、44和一個在蚀留士 h _ 44和㈣早儿4卜根據這樣的硬 構’按照本發明,可以只對該處理器的所有計算指令 13 201007558 莰罝運接域 指令並行發射的指令存儲指令不設置連接域。在對 當:令包中包含一條裝載/存::二: : = 。 碼在指令包的最後—條指 :该裝载/存储指令編 每條裝載/存儲指令包括操作碼域和爲位—址種,域令編碼, :括地址2域等。每條計算指令也包括摔作二=
=連接域,並可選性地包括地址2域和:;數域 在控制單元對指令進行 數3域專。 瑪域解碼得到的操作4讀據由指令的操作 指令/資料,或者t彳來執行指令,例如進行存儲/裝栽 中,連接域可以用編::資:的計算等。在-些實施例 可以設置-们位長ΓΓ:位或多個位來表示。例如’ 在圖8中以連接位!^表ΐ接位的編碼域, 時,表示後# ^ Τ 接位1地阶位的值爲1 . ’’· 與當前指令屬於同一個指令包;當連 位link bit位的值爲^時,表示後續指令與當前指令不屬於 同個才曰7 l自然,本領域的技術人員還可以採用其他 方式表不連接域’例如1inkbit位的值爲G時,表示後續指 令與當前指令屬於同一個指令包;當歸阶位的值爲丨 時,表示後續指令與當前指令不屬於同—個指令包。另外, 本領域的技術人員還可以任選地用多個位來表示連接域, 這裏不再贅述。 根據本發明的一個實施例,指令長度有例如16位元, 24位和32位兀等’指令包最大長度可以是64位。在指令 長度等條件滿足的情況下,該處理器可以並行執行一條骏 201007558 载/存儲指令和兩條計算指八 載/存健指令和兩條計算圖6示意性地表示了-條裝 這樣三條指令組成的_個9=\成的一個指令包。當執行由 令包的前面’而裴載/存;:二:條計算指令放在指 控制單元進行指令:碼:裝 ❹ ❹ 計算指令,其中分別設置接^包的前兩條指令均爲 還含有後續指令時,指令 —’因此’當該指令包中 域的指示,可以知道朴兩條計算指令根據連接 續指令》當解還存在後 載/存館指令本身的性f 於㈣單元根據裝 可得知該指令爲裝載/存健,:從二碼出來的操作碼 出該指令包已經完成…切處因理此::制單元可以判斷 載/存儲指令和一條計算指令組::並行執行由-條裝 計算指令放在指令包的:面而^ 的最後。計算指令令的連接域被存^令放在指令包 當前指令屬於同-個指1,而^ 70成表示後續指令與 域,因此從計算指令的料 ^存料令未設置連接 其他指令,而從裝載:=:::=包中還存在 :。當該處理器並行執行由兩條計算指二:成已 :=tr在前的計算指令的連接域可以指示出指令 二還有後續指令’而指令包中在後的計算指令的連接域 竭2中已經沒有後續指令’從而完成全部解 碼,該處理器僅執行由一條計算指令組成的指令包時, 15 201007558 . 通過該計算指令的連接域可以户千ψ 令。當該處理器僅n 私不出扣令包中沒有後續指 處器僅執仃由一條裝載/存儲指令組成的指令包 =二載/存儲指令本身解碼出的操作碼顯示出其爲 裝载::指令’就可以判斷出該指令包已經完成解碼。 子,其具體編碼可參見圖包包含三條並行指令的例 adddi,#1F5D2(|ADDd1}D2jD3((stwd3ai β 可用來進行資料的計算和存㈣計算。在指 ^ 條並行指令中’前兩條指令爲ADD指令,第!條 D1D中ttr於短立即數的加法操作指令,❹料寄存器 ^中的資料與5位元無符號立即數_相加後,暫存於資 操作I人D2 -第2條ADD指令是基於資料寄存器的加法 的警^ ’將資料寄存D1中的資料與資料寄存器D2中 . 智存於資科寄存3 D3〇STW指令用來把資 練 中的資料存放職址寄存器Ai所指向的記憶 =位址。在這個實施例中,前兩條挪指令屬於計算指令, 1時設置連接位元(Hnkbh),在圖8中以L表示。㈣ 旨t屬於裝載/存儲指令,在編碼時未設置連接位元(驗 二’並且放在指令包的最後。在如上三條並行指令组成的 ^包中’由於指令包的兩條計算指令趣指令後面都跟 其他並订&令’因此’這兩條add指令的連接域L位元 爲例如1 ’表不後續指令與當前指令屬於同一指令包。在 #二例中’例如該指令包僅包含前兩條並行的計算指令 . D私7,而不包含裝載/存儲指令STW指令時,此時指 16 201007558 = 指令的連接位元L位元爲例如1,表 :曰令包中還有並行指令在其後,而第2 並行指令^ 表㈣日令包已經結東’後面沒有 述的幾種情況,可以看出,對於可執行多條 ==理器’本發明省略了裝載/存儲指令的連接域 ^ ”佔料存儲空間’但本發明仍可準確判斷出 二:包是否已經完成解瑪。同樣地,在改變指令長度模式 h令包最大並行長度的情況下’本發明仍可實施。 雖然本發明已以一較佳實施例揭露如上,然其並非用 以限定本發明’任何熟習此技藝者,在不脫離本發明之精 神和範圍内’當可作各種之更動與潤部,因此本發明之保 護範圍當視後附之巾請專利範圍所界定者為準。 【圖式簡單說明】
為讓本發明之上述和其他目的、特徵、優點與實施例 能更明顯易懂,所附圖式之詳細說明如下: 圖1爲根據本發明一實施例的處理器的結構示意圖。 圖2爲根據本發明一實施例的一種指令編碼示意圖。 圖3爲根據本發明一實施例的一個指令包的編碼結構 示意圖。 圖4爲根據本發明另一實施例的處理器的結構示意圖。 圖5爲根據本發明另一實施例的一種指令編碼示意圖。 17 201007558 圖6爲根據本發明另一實施例的一個指令包的編碼結 構示意圖。 圖7爲根據本發明一實施例的一示例性指令包的編碼 結構示意圖。 圖8爲根據本發明另一實施例的一示例指令包的編碼 結構示意圖。 【主要元件符號說明】 ❹ 10、40處理器 11、 13、41裝載/存儲單元 12、 42、44計算單元 15、45控制單元 Φ 18