一種超標量流水線保留站處理指令的方法及裝置的制造方法
【技術領域】
[0001]本發(fā)明屬于微處理器技術領域,尤其涉及一種超標量流水線保留站處理指令的方法及裝置。
【背景技術】
[0002]微處理器通過流水線技術,在各個階段并行執(zhí)行不同的指令以提高處理器的性能。流水線技術將指令執(zhí)行的過程分為幾個階段,通過在各個不同階段執(zhí)行不同的指令,來實現指令的并行處理。
[0003]參考圖1,圖1是將指令執(zhí)行劃分為取指、譯碼、派發(fā)、發(fā)射及執(zhí)行階段的實施流程圖。
[0004]指令在流水線中必須經過分派才能開始執(zhí)行。
[0005]流水線分兩種,一種是標量流水線,另一種是超標量流水線。
[0006]在標量流水線中,所有類型的指令均在同一條流水線中執(zhí)行。
[0007]超標量流水線屬于多配置流水線,也就是多條流水線,所有類型的指令均在多條流水線中執(zhí)行,其執(zhí)行段使用不同的執(zhí)行部件,不同類型的指令要在不同的指令部件中執(zhí)行。
[0008]在超標量流水線中,在譯碼和執(zhí)行之間,指令要由集中控制轉為分布處理,這一工作應由指令分派完成。
[0009]在指令譯碼和執(zhí)行階段還要對指令進行臨時緩沖,一般解決方法是,把已經就緒的操作數讀出并放入單獨的緩沖中,并等待仍沒有就緒的操作數。所有操作數就緒以后,從緩沖中讀出指令并發(fā)射到功能部件執(zhí)行。這個臨時的緩沖為保留站。
[0010]指令分派段的保留站有兩種實現方式,一種是集中保留站,另一種是分布保留站。
[0011]參考圖2,圖2是集中保留站較佳的樣例圖。
[0012]參考圖3,圖2是分布保留站較佳的樣例圖。
[0013]然而,由于保留站沒有對操作隊列中進行分類,將指令動態(tài)發(fā)射出去,在流水線的后續(xù)階段中,需要更復雜的邏輯算法來保證訪存操作的正確執(zhí)行,因此其增加了訪存操作和執(zhí)行段控制復雜度,并降低了微處理器執(zhí)行段性能,訪存操作是指訪問保留站的操作。
【發(fā)明內容】
[0014]本發(fā)明實施例的目的在于提供一種超標量流水線保留站處理指令的方法,旨在解決保留站沒有對操作隊列中進行分類,將指令動態(tài)發(fā)射出去,導致在流水線的后續(xù)階段中,增加了訪存操作和執(zhí)行段控制復雜度,并降低了微處理器執(zhí)行段性能的問題。
[0015]本發(fā)明實施例是這樣實現的,一種超標量流水線保留站處理指令的方法,包括:
[0016]確定相關性指令和非相關性指令的判斷規(guī)則;
[0017]獲取多條流水線中寫入操作隊列中的各個指令;
[0018]根據所述判斷規(guī)則,判斷所述各個指令之間的相關性,識別所述指令為相關性指令或非相關性指令;
[0019]按操作隊列中指令寫入的順序,將所述相關性指令緩存在第一類型保留站,按操作隊列中指令寫入的順序,將所述非相關性指令緩存在第二類型保留站;
[0020]其中,所述相關性指令指的操作隊列中的計算結果或運算參數存在調用順序的指令,所述非相關性指令為操作隊列中除相關性指令以外的指令,所述第一類型保留站和第二類型保留站是不同的保留站。
[0021]本發(fā)明實施例的另一目的在于提供一種超標量流水線保留站處理指令的裝置,包括:
[0022]獲取單元,用于獲取多條流水線中寫入操作隊列中的各個指令;
[0023]判斷單元,用于根據所述判斷規(guī)則,判斷所述各個指令之間的相關性,識別所述指令為相關性指令或非相關性指令;
[0024]緩存單元,按操作隊列中指令寫入的順序,將所述相關性指令緩存在第一類型保留站,按操作隊列中指令寫入的順序,將所述非相關性指令緩存在第二類型保留站;
[0025]其中,所述相關性指令指的操作隊列中的計算結果或運算參數存在調用順序的指令,所述非相關性指令為操作隊列中除相關性指令以外的指令,所述第一類型保留站和第二類型保留站是不同的保留站。
[0026]在本實施例中,按操作隊列中指令寫入的順序,將所述相關性指令緩存在第一類型保留站,按操作隊列中指令寫入的順序,將所述非相關性指令緩存在第二類型保留站,完成了對操作隊列中的指令進行分類,從而后續(xù)可以分別單獨發(fā)送到不同的功能部件,執(zhí)行相應的功能,提高微處理器執(zhí)行段性能,提高流水線執(zhí)行段并行性處理的性能。
【附圖說明】
[0027]圖1是將指令執(zhí)行劃分為取指、譯碼、派發(fā)、發(fā)射及執(zhí)行階段的實施流程圖;
[0028]圖2是集中保留站較佳的樣例圖;
[0029]圖3是分布保留站較佳的樣例圖;
[0030]圖4是本發(fā)明實施例提供的一種超標量流水線保留站處理指令的方法的實現流程圖;
[0031]圖5是操作隊列中的指令需要調用前面的計算結果的較佳的樣例圖;
[0032]圖6是操作隊列中的指令需要調用前面的運算參數的較佳的樣例圖;
[0033]圖7是一種超標量流水線保留站處理指令的裝置的結構框圖。
【具體實施方式】
[0034]為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0035]參考圖4,圖4是本發(fā)明實施例提供的一種超標量流水線保留站處理指令的方法的實現流程圖,詳述如下:
[0036]在步驟S401中,確定相關性指令和非相關性指令的判斷規(guī)則;
[0037]本發(fā)明實施例,確定相關性指令和非相關性指令的判斷規(guī)則,判斷規(guī)則可以為用戶自設,也可以由系統(tǒng)設定。
[0038]其中,所述判斷規(guī)則包括操作隊列中的計算結果存在調用順序的規(guī)則和操作隊列中的運算參數存在調用順序的規(guī)則中的至少一種。
[0039]在步驟S402中,獲取多條流水線中寫入操作隊列中的各個指令;
[0040]在步驟S403中,根據所述判斷規(guī)則,判斷所述各個指令之間的相關性,識別所述指令為相關性指令或非相關性指令;
[0041]其中,所述相關性指令指的操作隊列中的計算結果或運算參數存在調用順序的指令,所述非相關性指令為操作隊列中除相關性指令以外的指令。
[0042]本發(fā)明實施例,判斷各個指令之間的相關性,存在兩種情況;
[0043]第一種情況:操作隊列中的指令需要調用前面的計算結果。
[0044]參考圖5,圖5是操作隊列中的指令需要調用前面的計算結果的較佳的樣例圖。
[0045]其中,指令div r2, rl, r0,表示rl除以r0,生成r2。
[0046]指令stb r6,4(r2),表示將r6寫入寄存器中,寄存器的地址值為4加r2的值。因為后一條指令需要用到前面指令的計算結果,表示操作隊列中的計算結果存在調用順序,因此指令div r2,rl,r0和stb r6, 4(r2)均為相關性指令。
[0047]第二種情況:操作隊列中的指令需要調用前面的運算參數。
[0048]參考圖6,圖6是操作隊列中的指令需要調用前面的運算參數的較佳的樣例圖。
[0049]其中,指令stb r6,4(r2),表示將r6寫入寄存器中,寄存器的地址值為4加r2的值。
[0050]Iwz rl, 4 (r3),表示讀取4加r3的值,放在r7里。
[0051]因此,Iwz指令與stb指令存在先寫入,后讀的順序,也就是操作隊列中的運算參數存在調用順序,4 (r2)的調用要位于4 (r3)之前。因此指令stb r6,4(r2)和Iwz r7,4(r3)均為相關性指令。
[0052]本實施例中,識別指令為相關性指令或非相關性指令,可對其進行分類,分別存放在不同的保留站中,后續(xù)減少訪存操作和執(zhí)行段控制復雜度,提高微處理器執(zhí)行段性能。
[0053]在步驟S404中,按操作隊列中指令寫入的順序,將所述相關性指令緩存在第一類型保留站,按操作隊列中指令寫入的順序,將所述非相關性指令緩存在第二類型保留站;
[0054]其中,第一類型保留站和第二類型保留站是不同的保留站。
[0055]本實施例中,指令在寫入操作隊列中時做出指令間相關性的判斷,且指令間相關性的信息保存在操作隊列中,將操作隊列中相關性已經判斷好的指令進行分類,按操作隊列中指令寫入的順序派發(fā)到第一類型保留站,按操作隊列中指令寫入的順序,將所述非相關性指令緩存在第二類型保留站。
[0056]第一類型保留站和第二類型保留站獨立實現緩存指令。
[0057]第一類型保留站和第二類型保留站均整體形成分布保留站。
[0058]第一類型保留站的保留站個數與第二類型保留站的保留站個數可以相同,也可以不同,在此不做限制。
[0059]保留站包括多個記錄項連接各個功能部件,指令分派后,可發(fā)射到功能部件執(zhí)行。
[0060]在本實施例中,按操作隊列中指令寫入的順序,將所述相關性指令緩存在第一類型保留站,按操作隊列中指令寫入的順序,將所述非相關性指令緩存在第二類型保留站,完成了對操作隊列中的指令進行分類,從而后續(xù)可以分別單獨發(fā)送到不同的功能部件,執(zhí)行相應的功能,提高微處理器執(zhí)行段性能,提高流水線執(zhí)行段并行性處理的性能。
[0061]作為本發(fā)明的一個優(yōu)選實施例,在所述將所述相關性指令緩存在第一類型保留站之后,包括:
[0062]檢測是否獲取到所述相關性指令的操作數;
[0063]當獲取到所述相關性指令的操作數時,第一類型保留站按操作隊列中指令寫入的順序,發(fā)射所述相關性指令至相應的功能部件。
[0064]在本實施例中,基于未發(fā)射相關性指令的各操作數的狀態(tài),判斷保留站中是否存在所有操作數均已準備好的待發(fā)射的相關性指令。
[0065]在本實施例中,當獲