一種基于記分牌原理的兩級(jí)緩置發(fā)射的調(diào)控裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及超標(biāo)量微處理器的指令流水線技術(shù)領(lǐng)域,特別是涉及一種基于記分牌原理的兩級(jí)緩置發(fā)射的調(diào)控裝置。
【背景技術(shù)】
[0002]現(xiàn)代超標(biāo)量處理器一般包括取指,譯碼,重命名,發(fā)射,執(zhí)行,退出等基本的流水線站臺(tái),且包含多個(gè)執(zhí)行部件,允許多條指令并行執(zhí)行。作為連接指令流水線和執(zhí)行部件的橋梁,發(fā)射部件可以實(shí)時(shí)判斷處理器當(dāng)前的運(yùn)行狀態(tài),從指令窗口中挖掘可以并行的指令,并動(dòng)態(tài)調(diào)度到執(zhí)行部件上執(zhí)行。在發(fā)射部件之前的流水站臺(tái),指令均順序進(jìn)入,順序流出;而對(duì)于發(fā)射部件而言,指令順序進(jìn)入,亂序流出。
[0003]為了支持指令動(dòng)態(tài)調(diào)度,在超標(biāo)量處理器中經(jīng)常采用記分牌技術(shù),其原理為:在記分牌狀態(tài)中集中記錄所有當(dāng)前操作數(shù)的狀態(tài),標(biāo)明是否可用,即是否可以被指令讀出使用。指令對(duì)某個(gè)操作數(shù)要進(jìn)行寫操作時(shí),封鎖該操作數(shù),使之不可用;當(dāng)該指令執(zhí)行完成后,則將該操作數(shù)解鎖,標(biāo)明此操作數(shù)可用。在操作數(shù)被封鎖期間,以該操作數(shù)為源操作數(shù)的指令不可發(fā)射至執(zhí)行部件,以消除寫后讀冒險(xiǎn),保證有數(shù)據(jù)相關(guān)性的指令嚴(yán)格按照程序序執(zhí)行。而沒有數(shù)據(jù)相關(guān)性的指令,在記分牌上也沒有可關(guān)聯(lián)性,可以亂序發(fā)射至執(zhí)行部件,亂序執(zhí)行。
[0004]具體來(lái)說(shuō),系統(tǒng)中用于維護(hù)指令間數(shù)據(jù)相關(guān)性的記分牌狀態(tài)表(后續(xù)簡(jiǎn)稱為記分牌狀態(tài)表)包含η位的信息,集中記錄了η個(gè)操作數(shù)是否可用的信息,即是否被封鎖。每一位對(duì)應(yīng)一個(gè)操作數(shù),為“O”表示該操作數(shù)可用,即已經(jīng)解鎖;為“I”表示該操作數(shù)不可用,即被封鎖。
[0005]經(jīng)過重命名站臺(tái)的每條指令都帶有一個(gè)η位的源記分牌,每一位對(duì)應(yīng)一個(gè)操作數(shù)。源記分牌中為“O”的位置表示本條指令的執(zhí)行不需要對(duì)應(yīng)的操作數(shù)可用,為“I”的位置表示本條指令的執(zhí)行需要對(duì)應(yīng)的操作數(shù)可用。每條指令的源記分牌,根據(jù)其源操作數(shù)的個(gè)數(shù),可以有零位或者多位為“I”。
[0006]同時(shí),經(jīng)過重命名站臺(tái)的每條指令都帶有一個(gè)η位的目標(biāo)記分牌,每一位對(duì)應(yīng)一個(gè)操作數(shù)。目標(biāo)記分牌中為“O”的位置表示本條指令不會(huì)修改對(duì)應(yīng)的操作數(shù),為T的位置表示本條指令會(huì)修改對(duì)應(yīng)的操作數(shù)。每條指令的目標(biāo)記分牌,根據(jù)其目標(biāo)操作數(shù)的個(gè)數(shù),可以有零位或者一位為“I”。
[0007]指令從上一級(jí)站臺(tái)進(jìn)入發(fā)射部件時(shí),若其目標(biāo)指示牌中第m位為I,則將記分牌狀態(tài)表的第m位置“I”,即將其封鎖;待該指令被發(fā)射至執(zhí)行部件,并執(zhí)行完成后,將記分牌狀態(tài)表的第m位清“O”,即將其解鎖。
[0008]對(duì)于進(jìn)入發(fā)射部件的指令,每個(gè)周期都將自己的源記分牌與記分牌狀態(tài)表相比較,只要兩者在相同的位置出現(xiàn)了 “I”,就意味著存在數(shù)據(jù)寫后讀冒險(xiǎn),該指令不允許被發(fā)射。
[0009]通常情況下,由于發(fā)射部件中緩存的指令已經(jīng)經(jīng)過了譯碼、重命名等站臺(tái)的處理,包含較多的信息,且查找、判斷等控制邏輯較為復(fù)雜,在物理實(shí)現(xiàn)時(shí),布線密集,邏輯級(jí)數(shù)多,延遲較長(zhǎng),是物理設(shè)計(jì)的難點(diǎn)。隨著處理器頻率和發(fā)射帶寬的提升,指令發(fā)射邏輯容易成為流水線關(guān)鍵路徑。因此發(fā)射部件設(shè)計(jì)需要兼顧性能和物理實(shí)現(xiàn),才能達(dá)到最好效果。
[0010]因此,在發(fā)射部件的設(shè)計(jì)中,傳統(tǒng)的一級(jí)緩置設(shè)計(jì)往往難以同時(shí)滿足性能和時(shí)序的要求。而若采用兩級(jí)緩置設(shè)計(jì),則可以將指令分別存儲(chǔ)在兩個(gè)緩沖中,在緩存的指令總數(shù)相當(dāng)?shù)那疤嵯?,與只有一級(jí)發(fā)射緩沖相比,可以降低物理實(shí)現(xiàn)難度,有利于提高處理器的頻率。
[0011]在兩級(jí)緩置發(fā)射的設(shè)計(jì)中,為了盡可能有好的性能表現(xiàn),充分發(fā)揮兩級(jí)緩沖的作用,總是盡可能的將操作數(shù)沒有準(zhǔn)備好的指令放在接近流水線上游的一級(jí)緩沖中,而將操作數(shù)已經(jīng)接近準(zhǔn)備好的指令放在接近流水線下游的二級(jí)緩沖中,這樣既充分利用資源,又能最大程度減少對(duì)性能帶來(lái)的影響。因此,控制指令從一級(jí)緩沖發(fā)射至二級(jí)緩沖的時(shí)機(jī)顯得至關(guān)重要。其中,接近流水線上游的一級(jí)緩沖這里稱之為一級(jí)等待隊(duì)列,接近流水線下游的二級(jí)緩沖稱之為二級(jí)發(fā)射隊(duì)列。
【發(fā)明內(nèi)容】
[0012]本發(fā)明所要解決的技術(shù)問題是提供一種基于記分牌原理的兩級(jí)緩置發(fā)射的調(diào)控裝置,使指令在一級(jí)等待隊(duì)列等候,避免無(wú)謂的占用二級(jí)發(fā)射隊(duì)列條目。
[0013]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:提供一種基于記分牌原理的兩級(jí)緩置發(fā)射的調(diào)控裝置,包括一級(jí)等待隊(duì)列和二級(jí)發(fā)射隊(duì)列,所述一級(jí)等待隊(duì)列和二級(jí)發(fā)射隊(duì)列之間設(shè)置了一個(gè)通用調(diào)控記分牌,所述通用調(diào)控記分牌用于調(diào)控所有指令從一級(jí)等待隊(duì)列發(fā)向二級(jí)發(fā)射隊(duì)列的時(shí)機(jī);其中,與指令的源記分牌有效位置對(duì)應(yīng)的通用調(diào)控記分牌的狀態(tài)全部為解鎖狀態(tài),作為該指令被允許從一級(jí)等待隊(duì)列發(fā)射至二級(jí)發(fā)射隊(duì)列的條件之
O
[0014]所述通用調(diào)控記分牌的寬度和用于維護(hù)指令間數(shù)據(jù)相關(guān)性的記分牌狀態(tài)表的寬度一致,每一位有兩種狀態(tài):為“O”表示解鎖狀態(tài),為“I”表示封鎖狀態(tài)。
[0015]對(duì)于LOAD類指令,所述通用調(diào)控記分牌的執(zhí)行周期數(shù)與命中一級(jí)數(shù)據(jù)緩存時(shí)的執(zhí)行周期數(shù)相同。假設(shè)指令的目標(biāo)記分牌的第m位為有效位置,執(zhí)行周期數(shù)為N,則該指令從重命名站臺(tái)進(jìn)入一級(jí)等待隊(duì)列后,立即將通用調(diào)控記分牌的第m位封鎖;該指令從一級(jí)等待隊(duì)列發(fā)射至二級(jí)發(fā)射隊(duì)列后第N個(gè)周期,將通用調(diào)控記分牌的第m位解鎖。
[0016]指令進(jìn)入一級(jí)等待隊(duì)列,若發(fā)現(xiàn)存在與本指令的源記分牌有效位置對(duì)應(yīng)的通用調(diào)控記分牌的狀態(tài)有任意一位或幾位為封鎖狀態(tài),則指令被禁止發(fā)射至二級(jí)發(fā)射隊(duì)列,這樣可以保證操作數(shù)肯定沒有準(zhǔn)備好的指令在一級(jí)等待隊(duì)列等候,而不占用二級(jí)發(fā)射隊(duì)列的條目。分析如下:
[0017]假設(shè)指令j直接數(shù)據(jù)相關(guān)于指令i,即指令j會(huì)引用指令i的結(jié)果。若指令i在一級(jí)等待隊(duì)列等候Wli個(gè)周期,在二級(jí)發(fā)射隊(duì)列等候W2i個(gè)周期,執(zhí)行周期為Ni,目標(biāo)記分牌的有效位置為第Mi位,其中Wli > I,W2i > l,Ni> 1,0< Mi <n。根據(jù)指令順序進(jìn)入發(fā)射部件的特點(diǎn),指令j肯定比指令i后進(jìn)入一級(jí)等待隊(duì)列,一種可能是指令j與指令i在同一個(gè)周期進(jìn)入,但位置靠后;另一種可能是指令j與指令i是不同的周期進(jìn)入,指令j更晚。
[0018]以指令i進(jìn)入一級(jí)等待隊(duì)列的時(shí)刻為第O個(gè)周期,則通用調(diào)控記分牌的第Mi位被封鎖的時(shí)刻為第O個(gè)周期,被解鎖的時(shí)刻為第Wli+N1-1個(gè)周期。意味著若指令j在第O個(gè)周期至第Wli+N1-Ι個(gè)周期之間到達(dá)一級(jí)等待隊(duì)列,由于通用調(diào)控記分牌相應(yīng)位置沒有解鎖,指令j都會(huì)在第Wli+Ni個(gè)周期之后才可能進(jìn)入二級(jí)發(fā)射隊(duì)列。而記分牌狀態(tài)表相應(yīng)位置會(huì)在第Wli+W2i+N1-1個(gè)周期解鎖,由于W2i > I,可以得出Wli+W2i+Ni_l 2 Wli+Ni,故指令j在第Wli+Ni個(gè)周期前進(jìn)入二級(jí)發(fā)射隊(duì)列沒有意義,只能無(wú)謂增加其在二級(jí)發(fā)射隊(duì)列中的等待時(shí)間,無(wú)謂占用二級(jí)發(fā)射隊(duì)列的條目,因?yàn)樵谶@之前,記分牌狀態(tài)表相應(yīng)位置肯定沒有解鎖。
[0019]另一方面,如果指令j在第Wli+Ni個(gè)周期之后才被允許進(jìn)入二級(jí)發(fā)射隊(duì)列,則可能的情況是:記分牌狀態(tài)表相應(yīng)位置已經(jīng)解鎖,但是指令j還沒有進(jìn)入二級(jí)發(fā)射隊(duì)列,無(wú)法及時(shí)發(fā)射至執(zhí)行部件,從而影響性能。
[0020]故通用調(diào)控記分牌的意義就在于在操作數(shù)肯定沒有準(zhǔn)備好的情況下,