專利名稱:經(jīng)由用于條件評估的使者指令的條件指令執(zhí)行的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及處理器領(lǐng)域,且更明確地說,涉及一種經(jīng)由用于條件評估的使者 指令的條件指令執(zhí)行方法。
技術(shù)背景微處理器在很多種應(yīng)用中執(zhí)行計(jì)算任務(wù)。高執(zhí)行速度、低功率消耗和小尺寸通常是 處理器設(shè)計(jì)者的重要目標(biāo),尤其是在例如便攜式電子裝置的嵌入式應(yīng)用中。然而, 一個(gè) 重要的考慮因素是準(zhǔn)確度。包括在處理器設(shè)計(jì)中用以改進(jìn)執(zhí)行速度或其它度量的任何結(jié) 構(gòu)特征還需要確保軟件代碼的正確執(zhí)行。許多現(xiàn)代處理器采用管線結(jié)構(gòu),其中在執(zhí)行中交迭連續(xù)的指令,其中每一指令具有 多個(gè)執(zhí)行步驟。為獲得改進(jìn)的性能,指令應(yīng)不斷流動(dòng)通過管線。然而,指令可出于各種 原因而停滯在管線中,所述原因例如指令之間的數(shù)據(jù)依賴性(也稱為數(shù)據(jù)危險(xiǎn))。高性能 處理器可采用超標(biāo)量設(shè)計(jì),其中部分管線是重復(fù)的。多個(gè)管線可最小化管線停滯對整個(gè) 系統(tǒng)性能的影響,因?yàn)榭蓪⒌群蛲芫€的指令分派到另一管線以立即執(zhí)行。為了最大程度利用由超標(biāo)量管線提供的潛在性能增益,高性能處理器通常支持無序 執(zhí)行。也就是說,可以不同于其程序次序的次序來執(zhí)行指令,如果這樣做沒有被指令間 的相依性排除的話。作為此類依賴性的一個(gè)實(shí)例,執(zhí)行用以從寄存器讀取操作數(shù)的邏輯 或算術(shù)操作的指令直到先前指令(其將結(jié)果寫入所述寄存器)己計(jì)算出其結(jié)果時(shí)才能執(zhí) 行(數(shù)據(jù)可被轉(zhuǎn)發(fā),其中完成可暗示著指令已離開管線)。不能無序地執(zhí)行這兩個(gè)指令, 否則將發(fā)生不正確的結(jié)果。檢測指令間的依賴性的過程被稱為危險(xiǎn)檢測。在將指令分派 到執(zhí)行管線中之前,通常非常早地在管線中執(zhí)行危險(xiǎn)檢測。大多數(shù)指令集結(jié)構(gòu)包括條件指令,其是依據(jù)條件評估來執(zhí)行或不執(zhí)行某操作的指令。 條件評估通常在執(zhí)行管級中執(zhí)行,其在管線深處。條件指令可通過將是否將執(zhí)行操作的 認(rèn)識(shí)推遲到管線深處而極大地使危險(xiǎn)檢測變復(fù)雜。然而,在管線中較早地需要操作是否 將影響(例如)寄存器的內(nèi)容的認(rèn)識(shí)以進(jìn)行危險(xiǎn)檢測。以下實(shí)例性代碼段說明此問題ADD rl,r7,r8 相加r7和r8的內(nèi)容,并將總和放置在rl中CMP rl,rl2 將rl和r12的內(nèi)容進(jìn)行比較(設(shè)置代碼或旗標(biāo)以反映比較結(jié)果)ADDEQrl,r8,r9如果先前比較是相等的,那么相加r8和r9的內(nèi)容,并將總 和放置在rl中。否則,rl不變ADDNE rl,r3,r4 如果先前比較不是相等的,那么相加r3和r4的內(nèi)容,并將 總和放置在rl中。否則,rl不變AND rl0,r6,rl 將r6的內(nèi)容與rl的內(nèi)容進(jìn)行邏輯"與",將結(jié)果放置在r10中 最終AND指令具有對ADDNE指令的rl依賴性。也就是說,ADDNE必須在AND 執(zhí)行之前計(jì)算出其結(jié)果,使得由ADDNE寫入到rl中的數(shù)據(jù)將可由AND使用。然而, ADDNE是條件指令,且可能不執(zhí)行ADD操作。在此情況下,AND指令的真正依賴性是 在ADDEQ指令上。在前述實(shí)例(描繪常用軟件構(gòu)造)中,將執(zhí)行ADDEQ和ADDNE 指令中的僅一者,因?yàn)闂l件EQ (相等)和NE (不相等)是相互排斥且完全的。然而, 一般來說,由于ADDEQ指令是有條件的,因而AND實(shí)際上可具有對較早指令(在此情 況下是最初ADD)的依賴性。另外,如果先前條件指令不執(zhí)行,那么隨后指令可能根本 沒有依賴性。由條件指令呈現(xiàn)的偶然依賴性且尤其是可能的多級別偶然依賴性極大地使準(zhǔn)確危險(xiǎn) 檢測的任務(wù)變復(fù)雜,所述任務(wù)對于準(zhǔn)確地進(jìn)行無序程序執(zhí)行來說是必要的。 發(fā)明內(nèi)容在一個(gè)實(shí)施例中,將可操作以在滿足條件時(shí)執(zhí)行操作的條件指令轉(zhuǎn)換為可操作以評 估所述條件的使者指令和可操作以執(zhí)行所述操作的非條件基礎(chǔ)指令。執(zhí)行所述使者指令, 且同時(shí)暫停所述基礎(chǔ)指令。所述使者指令評估所述條件且將所述條件評估報(bào)告回所述基 礎(chǔ)指令?;谒鰲l件評估,將所述基礎(chǔ)指令發(fā)射到管線中以供執(zhí)行,或?qū)⑵鋪G棄(或 用NOP或空指令來代替)。在任一情況下,可解決隨后指令的依賴性。在另一實(shí)施例中, 一種處理器包含指令執(zhí)行管線,所述指令執(zhí)行管線包括指令發(fā)布 管級和條件評估管級。所述處理器包括從條件評估管級到指令發(fā)布管級的反饋路徑。所 述處理器進(jìn)一步包括管線控制器,其可操作以在指令發(fā)布管級處將條件指令轉(zhuǎn)換為使者 指令和非條件基礎(chǔ)指令,發(fā)布所述使者指令,且響應(yīng)于來自所述條件評估管級的由所述 使者指令作出的反饋而有條件地發(fā)布所述基礎(chǔ)指令。在另一實(shí)施例中,解碼可操作以僅在滿足條件時(shí)執(zhí)行操作的條件指令。將所述條件 指令轉(zhuǎn)換為可操作以評估所述條件的使者指令和可操作以執(zhí)行所述操作的非條件基礎(chǔ)指 令。執(zhí)行所述使者指令。如果不滿足所述條件,那么確定沒有其它指令依賴于所述條件 指令。另一實(shí)施例涉及一種在管線處理器中執(zhí)行危險(xiǎn)檢測的方法。解碼條件指令,其中所
述條件指令可操作以僅在條件為"真"時(shí)執(zhí)行操作。將所述條件指令轉(zhuǎn)換為兩個(gè)單獨(dú)的 指令,即使者指令和在執(zhí)行時(shí)可操作以執(zhí)行所述操作的非條件基礎(chǔ)指令。執(zhí)行所述使者 指令并致使其評估所述條件。取決于使者指令所作的條件評估而定,執(zhí)行或不執(zhí)行所述 基礎(chǔ)指令。檢測一個(gè)或一個(gè)以上隨后指令與所述基礎(chǔ)指令之間的數(shù)據(jù)依賴性。另一實(shí)施例涉及一種執(zhí)行條件指令的方法。將所述條件指令轉(zhuǎn)換為使者指令和基礎(chǔ) 指令。執(zhí)行所述使者指令。響應(yīng)于由使者指令所作的條件評估來有條件地執(zhí)行所述基礎(chǔ) 指令。
圖1是處理器的功能方框圖。圖2是超標(biāo)量管線的功能方框圖。圖3是條件指令執(zhí)行的流程圖。
具體實(shí)施方式
圖1描繪處理器10的功能方框圖。處理器IO根據(jù)控制邏輯14在指令執(zhí)行管線12 中執(zhí)行指令。管線12可以是超標(biāo)量設(shè)計(jì),其具有多個(gè)平行管線(例如12a和12b)。管線 12a、 12b包括各種寄存器或鎖存器16 (其以管級進(jìn)行組織)和一個(gè)或一個(gè)以上算術(shù)邏輯 單元(ALU) 18。通用寄存器(GPR)文件20提供構(gòu)成存儲(chǔ)器層級頂部的寄存器。管線 12a、 12b從指令高速緩沖存儲(chǔ)器(1-高速緩沖存儲(chǔ)器或1$) 22取出指令,其中由指令側(cè) 轉(zhuǎn)譯后備緩沖器(ITLB) 24管理存儲(chǔ)器尋址和許可。從數(shù)據(jù)高速緩沖存儲(chǔ)器(D-高速緩沖存儲(chǔ)器或D$) 26存取數(shù)據(jù),其中由主轉(zhuǎn)譯后 備緩沖器(TLB) 28管理存儲(chǔ)器尋址和許可。在各種實(shí)施例中,ITLB可包含部分TLB 的副本?;蛘撸琁TLB和TLB可為集成的。類似地,在處理器IO的各種實(shí)施例中,I-高 速緩沖存儲(chǔ)器22和D-高速緩沖存儲(chǔ)器26可為集成的或聯(lián)合的。在存儲(chǔ)器接口 30的控 制下,I-高速緩沖存儲(chǔ)器22和/或D-高速緩沖存儲(chǔ)器26中的未中造成存取主(芯片外) 存儲(chǔ)器32。處理器10可包括輸入/輸出(I/O)接口34,從而控制對各種外圍裝置36的 存取。所屬領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到處理器10的多種變化是可能的。舉例來說,處理器 IO可包括用于I和D高速緩沖存儲(chǔ)器中的任一者或兩者的第二等級(L2)高速緩沖存儲(chǔ) 器。另外,在特定實(shí)施例中可省略處理器10中所描述的功能塊中的一者或一者以上。圖2描繪超標(biāo)量管線結(jié)構(gòu)。處理器管線12包括指令取出管級40,其從I-高速緩沖存 儲(chǔ)器22取出指令。在解碼管級42處解碼所述指令。 一旦已知所述指令,危險(xiǎn)檢測邏輯 44便檢測所述經(jīng)解碼指令與當(dāng)前正執(zhí)行的指令(例如產(chǎn)生經(jīng)解碼指令所需的操作數(shù)的指
令)之間的依賴性。在危險(xiǎn)檢測邏輯44隨后的是擴(kuò)展/發(fā)布管級46,其將解碼指令發(fā)布 到多個(gè)執(zhí)行管線12a、 12b的一者中。如上所述,條件指令極大地使危險(xiǎn)檢測變復(fù)雜。為了簡化此任務(wù),可將所述條件指 令轉(zhuǎn)變?yōu)閮蓚€(gè)相關(guān)指令使者指令和基礎(chǔ)指令。如本文使用,"使者指令"是其唯一操作 為評估條件指令的條件且將所述條件評估報(bào)告回基礎(chǔ)指令的指令。使者指令不讀取或?qū)?入任何通用寄存器,不改變?nèi)魏螚l件代碼,且不執(zhí)行任何存儲(chǔ)器存取。舉例來說,對應(yīng) 于條件指令"ADDEQ rl,r3,r4"的使者指令是(例如)通過檢查條件寄存器中由先前 比較或其它指令設(shè)置的EQ位來檢測并報(bào)告EQ (相等)條件的指令。使者指令既不讀取 r3或r4,也不寫入rl。如本文使用,"基礎(chǔ)指令"是一種非條件指令,其所執(zhí)行的操作與條件指令將在其條 件被評估為"真"時(shí)所執(zhí)行的操作相同,且具有相同的操作數(shù)和目的地。舉例來說,對 應(yīng)于條件指令"ADDEQ rl, r3, r4"的基礎(chǔ)指令是"ADD rl, r3, r4"。在一個(gè)實(shí)施例中, 在發(fā)布管級46處暫?;A(chǔ)指令,等待其條件評估。一旦將條件指令轉(zhuǎn)變?yōu)槭拐咧噶詈突A(chǔ)指令,便將使者指令發(fā)射到執(zhí)行管線12a、12b 中,且同時(shí)暫停所述基礎(chǔ)指令。所述使者指令前進(jìn),直到其到達(dá)條件評估管級48、 50為 止。此處,使者指令評估與所述條件指令相關(guān)的條件,且將所述條件評估報(bào)告回暫停在 發(fā)布管級46處的基礎(chǔ)指令。使者指令可接著前進(jìn)通過剩余管線12a、 12b;可由前進(jìn)通過 剩余管線12a、 12b的NOP (無操作或空指令)來取代;或其可被丟棄且所得的管"氣泡" 由管線12a、 12b中的下一隨后指令填充。簡單地說,使者指令的有用壽命在評估和報(bào)告 條件指令的條件評估后結(jié)束,且接著可以不影響處理器程序狀態(tài)的任何方式來處置使者 指令,如所屬領(lǐng)域的技術(shù)人員眾所周知。在使者指令報(bào)告條件評估之后,如果條件評估是"真",那么將發(fā)布管級46處暫停 的基礎(chǔ)指令發(fā)射到可用的執(zhí)行管線12a、 12b中。如果滿足條件或條件測試"通過",那 么認(rèn)為條件評估為"真"。相反地,如果未滿足條件或條件測試"失敗",那么條件評估 為"假"。在"真"條件評估的情況下,非條件基礎(chǔ)指令執(zhí)行,且其對寄存器文件或存儲(chǔ) 器的影響是已知的。因此,危險(xiǎn)檢測邏輯44可針對所述基礎(chǔ)指令隨后的讀取所述基礎(chǔ)指 令寫入的任何寄存器或存儲(chǔ)器位置的所有指令執(zhí)行危險(xiǎn)檢測。如果由使者指令報(bào)告的條件評估是"假",那么不執(zhí)行基礎(chǔ)指令。所述基礎(chǔ)指令可由 NOP替代,所述NOP被發(fā)射到可用的執(zhí)行管線12a、 12b中?;蛘撸A(chǔ)指令可被丟棄, 且隨后指令前進(jìn)以填充所述管線氣泡。在任一情況下,危險(xiǎn)檢測邏輯44均知道所述基礎(chǔ)
指令(且相應(yīng)地,原始條件指令)未曾改變?nèi)魏渭拇嫫骰虼鎯?chǔ)器位置,且隨后指令對所 述原始條件指令沒有任何依賴性。危險(xiǎn)檢測邏輯44可接著越過所述條件指令觀看一個(gè)或 一個(gè)以上先前指令,以確定隨后指令的實(shí)際依賴性。在圖3中以流程圖形式描述此過程。在指令解碼(方框52)之后,如果指令是條件 指令(方框54),那么將其轉(zhuǎn)換為使者指令和基礎(chǔ)指令(方框56)。在指令發(fā)布管級46 處暫?;A(chǔ)指令,且將使者指令發(fā)布到可用的執(zhí)行管線12a、 12b中(方框58)。當(dāng)所述 使者指令到達(dá)條件評估管級48、 50時(shí),其評估條件(方框60)且將所述條件評估報(bào)告 到基礎(chǔ)指令。如果條件評估"真",那么將基礎(chǔ)指令發(fā)布到可用管線12a、 12b中(方框 62)。如果條件評估"假",那么丟棄基礎(chǔ)指令或?qū)⑵滢D(zhuǎn)換為NOP,所述NOP被發(fā)布到管 線12a、 12b中(方框64)。在任一情況下,且同樣如果經(jīng)解碼指令不是條件指令(方框 54),那么針對隨后指令執(zhí)行危險(xiǎn)檢測(方框66),因?yàn)闂l件指令是否將執(zhí)行是已知的。盡管本文已相對于本發(fā)明特定特征、方面和實(shí)施例描述了本發(fā)明概念,但將明了在 本發(fā)明概念的寬廣范圍內(nèi)能夠作出多種變化、修改和其它實(shí)施例,且因此應(yīng)將所有變化、 修改和實(shí)施例視為屬于本文所揭示的發(fā)明性概念的范圍內(nèi)。因此,應(yīng)在所有方面中將本 發(fā)明實(shí)施例理解為說明性的而并非限制性的,且希望屬于所附權(quán)利要求書的意義和等效 范圍內(nèi)的所有改變均涵蓋在其中。
權(quán)利要求
1.一種在管線處理器中執(zhí)行條件指令的方法,所述條件指令可操作以在滿足條件時(shí)執(zhí)行操作,所述方法包含將所述條件指令轉(zhuǎn)換為可操作以確定是否滿足所述條件的使者指令和可操作以執(zhí)行所述操作的非條件基礎(chǔ)指令;執(zhí)行所述使者指令;以及如果所述使者指令的執(zhí)行指示滿足所述條件,那么執(zhí)行所述非條件基礎(chǔ)指令。
2. 根據(jù)權(quán)利要求l所述的方法,其進(jìn)一步包含如果所述使者指令的執(zhí)行指示未滿足 所述條件,那么代替所述非條件基礎(chǔ)指令而執(zhí)行NOP指令。
3. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包含如果所述使者指令的執(zhí)行指示未滿足 所述條件,那么丟棄所述基礎(chǔ)指令。
4. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包含在執(zhí)行所述使者指令之后,針對所述條件指令隨后的指令執(zhí)行危險(xiǎn)檢測。
5. —種處理器,其包含指令執(zhí)行管線,其包括指令發(fā)布管級和條件評估管級; 從所述條件評估管級到所述指令發(fā)布管級的反饋路徑;以及管線控制器,其可操作以在所述指令發(fā)布管級處將條件指令轉(zhuǎn)換為使者指令和非 條件基礎(chǔ)指令,發(fā)布所述使者指令,且響應(yīng)于來自所述條件評估管級的由所述使者 指令作出的反饋而有條件地發(fā)布所述基礎(chǔ)指令。
6. 根據(jù)權(quán)利要求5所述的處理器,其進(jìn)一步包含危險(xiǎn)檢測邏輯,所述危險(xiǎn)檢測邏輯可 操作以在所述條件評估之后檢測隨后指令對所述條件指令的依賴性。
7. —種在管線處理器中執(zhí)行危險(xiǎn)檢測的方法,其包含解碼條件指令,所述條件指令可操作以僅在滿足條件時(shí)執(zhí)行操作;將所述條件指令轉(zhuǎn)換為可操作以評估所述條件的使者指令和可操作以執(zhí)行所述操作的非條件基礎(chǔ)指令;執(zhí)行所述使者指令,以獲得條件評估;以及如果未滿足所述條件,那么確定隨后指令均不依賴于所述條件指令。
8. 根據(jù)權(quán)利要求7所述的方法,其進(jìn)一步包含如果滿足所述條件,那么檢測讀取由 所述條件指令寫入的寄存器或存儲(chǔ)器位置的任何隨后指令的依賴性。
9. 根據(jù)權(quán)利要求8所述的方法,其進(jìn)一步包含如果滿足所述條件,那么執(zhí)行所述非 條件基礎(chǔ)指令。
10. 根據(jù)權(quán)利要求9所述的方法,其中在執(zhí)行所述非條件基礎(chǔ)指令之前檢測所述依賴性。
11. 根據(jù)權(quán)利要求IO所述的方法,其進(jìn)一步包含暫停針對其檢測依賴性的隨后指令, 直到所述非條件基礎(chǔ)指令完成執(zhí)行為止。
12. 根據(jù)權(quán)利要求7所述的方法,其進(jìn)一步包含如果未滿足所述條件,那么代替所述 非條件基礎(chǔ)指令而執(zhí)行NOP指令。
13. 根據(jù)權(quán)利要求7所述的方法,其進(jìn)一步包含如果未滿足所述條件,那么丟棄所述 基礎(chǔ)指令。
14. 一種在管線處理器中執(zhí)行危險(xiǎn)檢測的方法,其包含解碼條件指令,其中所述條件指令可操作以僅在條件為"真"時(shí)才執(zhí)行操作; 將所述條件指令轉(zhuǎn)換為兩個(gè)單獨(dú)的指令,即使者指令和在執(zhí)行時(shí)可操作以執(zhí)行所 述操作的非條件基礎(chǔ)指令;執(zhí)行所述使者指令且致使所述使者指令評估所述條件;依據(jù)所述使者指令對所述條件的評估而定,執(zhí)行或不執(zhí)行所述基礎(chǔ)指令;以及 檢測一個(gè)或一個(gè)以上隨后指令與所述基礎(chǔ)指令之間的數(shù)據(jù)依賴性。
15. 根據(jù)權(quán)利要求14所述的方法,其進(jìn)一步包含響應(yīng)于檢測到所述依賴性,延遲所 述隨后指令中的一者或一者以上的執(zhí)行,直到所述基礎(chǔ)指令已執(zhí)行所述操作為止。
16. 根據(jù)權(quán)利要求14所述的方法,其進(jìn)一步包含響應(yīng)于檢測到一個(gè)或一個(gè)以上隨后 指令對所述基礎(chǔ)指令沒有依賴性,立即發(fā)射所述一個(gè)或一個(gè)以上隨后指令以供執(zhí) 行。
17. —種執(zhí)行條件指令的方法,其包含將所述條件指令轉(zhuǎn)換為使者指令和基礎(chǔ)指令; 執(zhí)行所述使者指令,以及響應(yīng)于所述使者指令所作的條件評估來有條件地執(zhí)行所述基礎(chǔ)指令。
18. 根據(jù)權(quán)利要求17所述的方法,其進(jìn)一步包含對所述條件指令隨后的一個(gè)或一個(gè)以上指令執(zhí)行危險(xiǎn)檢測。
19. 根據(jù)權(quán)利要求18所述的方法,其中如果不執(zhí)行所述基礎(chǔ)指令,那么在一個(gè)或一個(gè) 以上隨后指令與所述條件指令之間不存在依賴性。
全文摘要
通過將可操作以在滿足條件時(shí)執(zhí)行操作的條件指令轉(zhuǎn)換為可操作以評估所述條件的使者指令和可操作以執(zhí)行所述操作的非條件基礎(chǔ)指令來簡化危險(xiǎn)檢測。執(zhí)行所述使者指令,且同時(shí)暫停所述基礎(chǔ)指令。所述使者指令評估所述條件且將所述條件評估報(bào)告回所述基礎(chǔ)指令?;谒鰲l件評估,將所述基礎(chǔ)指令發(fā)射到管線中以供執(zhí)行,或?qū)⑵鋪G棄(或用NOP或空指令來代替)。在任一情況下,可解決隨后指令的依賴性。
文檔編號(hào)G06F9/38GK101151591SQ200680009952
公開日2008年3月26日 申請日期2006年2月10日 優(yōu)先權(quán)日2005年2月10日
發(fā)明者托馬斯·安德魯·薩托里烏斯, 杰弗里·托德·布里奇斯, 羅德尼·韋恩·史密斯, 詹姆斯·諾里斯·迪芬德爾費(fèi)爾, 邁克爾·斯科特·麥基爾文 申請人:高通股份有限公司