中文字幕无码日韩视频无码三区

有效提升指令融合的技術的制作方法

文檔序號:6585931閱讀:153來源:國知局
專利名稱:有效提升指令融合的技術的制作方法
技術領域
一般來說,本發明的實施例涉及信息處理領域,更具體地說,涉及計算系統和微處 理器中的指令融合領域。
背景技術
指令融合是指將兩個指令組合成單個指令的過程,其導致處理器內的一個操作 (或微操作“uop”)序列。存儲在處理器指令隊列(IQ)中的指令可在從IQ中讀出之后以 及在發送到指令解碼器之前或者在通過指令解碼器解碼之后進行“融合”。通常,在指令解 碼前發生的指令融合稱為“宏融合”,而在指令解碼(例如,成為uop)后發生的指令融合稱 為“微融合”。宏融合的一個例子是將比較(“CMP”)指令或測試(“TEST”)指令(“CMP/ TEST”)與條件轉移(“JCC”)指令組合在一起。例如,CMP/TEST和JCC指令對可定期地在 循環末端出現在程序中,在其中進行比較,并基于比較的結果,采取或不采取分支。由于宏 融合可有效地增加指令吞吐量,所以希望能夠找到盡可能多的機會來融合指令。對于在一些現有技術的處理器微體系結構中找到的指令融合機會,CMP/TEST和 JCC指令需要同時駐存在IQ中,使得當從IQ中讀取這些指令時,可以將它們進行融合。然 而,如果在IQ中存在可融合的CMP/TEST指令,并且尚未將進一步的指令寫入IQ中(即, CMP/TEST指令是IQ中的最后一個指令),那么即使程序順序中的下一個指令是JCC指令, 仍會從IQ中讀取CMP/TEST指令,并將它發送到解碼器而不加以融合。舉一個可能會出現 錯失融合機會的例子,如果CMP/TEST和JCC碰巧跨越(across)存儲邊界(例如,16字節邊 界),那么就會導致在一個周期內將CMP/TEST寫入IQ,而在接下來的周期內寫入JCC。在這 種情況下,如果不存在停止(stalling)情形,那么就會在從IQ中讀取CMP/TEST的同時或 之后將JCC寫入到IQ中,因此將錯失融合機會,從而導致多個不必要的IQ讀取、降低的指 令吞吐量以及過量功耗。

發明內容
一種裝置,包括指令隊列(IQ);邏輯,用于將對第一可融合指令的處理延遲閾值時間量,使得如果在所述閾值時 間量內將可與所述第一可融合指令融合的第二可融合指令存儲在所述IQ中,那么可將所 述第二可融合指令與所述第一可融合指令融合。該裝置包括狀態機,所述狀態機用于在存儲在所述IQ中的所述第一可融合指令 和存儲在所述IQ中的所述第二可融合指令之間執行中間指令時防止填充緩沖請求隊列 (fill buffer request queue)FBRQ鎖定對應于所述第一和第二可融合指令的條目。一種系統,包括存儲設備,用于分別在第一和第二訪問邊界(access boundary)內存儲第一和第 二可融合指令;
4
處理器,具有用于將所述第一和第二可融合指令提取到指令隊列(IQ)中的提取 邏輯;延遲邏輯,用于將從所述IQ中讀取所述第一可融合指令延遲閾值周期數;指令融合邏輯,用于在所述第一可融合指令之后以及在達到所述閾值周期量之前 如果將所述第二可融合指令存儲在所述IQ中則融合所述第一和第二可融合指令。


在附圖的各圖中示例性而非限制性地示出本發明的實施例,附圖中相似的附圖標 記指代相似的元件,其中圖1示出可在其中使用本發明的至少一個實施例的微處理器的框圖;圖2示出可在其中使用本發明的至少一個實施例的共享總線計算機系統的框圖;圖3示出可在其中使用本發明的至少一個實施例的點對點互連計算機系統的框 圖;圖4示出可用于實現本發明的至少一個實施例的狀態機的框圖;圖5是可用于執行本發明的至少一個實施例的操作的流程圖;圖6是在至少一個實施例中執行的操作的流程圖。
具體實施例方式本發明的實施例可用于提高處理器中的指令吞吐量和/或減少處理器的功耗。在 一個實施例中,找到否則將錯失的指令融合機會,并且因此進行指令融合。在一個實施例 中,通過以下方法來找到原本將錯失的指令融合機會將從指令隊列(IQ)中讀取最后一個 指令的時間或者將從IQ中讀取的最后一個指令發給解碼階段的時間延遲閾值周期數(a threshold number ofcycles),以使得可以提取任何隨后的可融合指令,將它們存儲在IQ 中(或者至少加以標識而不一定存儲在IQ中),并且隨后將它們與最后一個可融合指令進 行融合。在一個實施例中,將對第一可融合指令的讀取或發送延遲閾值周期數可以提高處 理器性能,因為這樣做可以避免將兩個否則可融合的指令分開而不是作為單個指令來解碼 和處理。閾值等待周期數的選擇取決于其中使用特定實施例的微體系結構。例如,在一個 實施例中,閾值周期數可以是2,而在其他實施例中,閾值周期數可以多于或少于2。在一個 實施例中,閾值等待周期數提供了等待將存儲在IQ中的隨后可融合指令的最大時間量,同 時保持了相對于將可融合指令作為單獨指令來處理在等待隨后可融合指令方面的總體等 待時間/性能優勢。在例如功率更關鍵的其他實施例中,閾值等待周期數可以更大,以便確 保不使用額外功率來單獨處理這兩個可融合指令,即使這些等待周期可能會引起指令吞吐 量的降低(雖然是暫時的)。圖1示出可在其中使用本發明的至少一個實施例的微處理器。具體來說,圖1示 出具有一個或多個處理器核105和110的微處理器100,每個處理器核分別具有與其相關聯 的本地高速緩存107和113。圖1中還示出共享高速緩沖存儲器115,它可存儲每個本地高 速緩存107和113中所存儲的信息的至少一些信息的版本。在一些實施例中,微處理器100 還可包括未在圖1中示出的其他邏輯,例如集成的存儲器控制器、集成的圖形控制器、以及用于執行計算機系統內的其他功能(例如I/O控制)的其他邏輯。在一個實施例中,多處 理器系統中的每個微處理器或多核處理器中的每個處理器核可包括邏輯119或以其他方 式與邏輯119相關聯,以便根據至少一個實施例實現中斷通信技術。該邏輯可包括電路、軟 件或兩者,以便實現比一些現有技術的實現更有效的指令融合。在一個實施例中,邏輯119可包括用于減小錯失指令融合機會的可能性的邏輯。 在一個實施例中,當在IQ或其他提取指令存儲結構中沒有存儲隨后指令時,邏輯119延遲 從IQ中讀取第一指令(例如CMP)。在一個實施例中,邏輯119使第一可融合指令的讀取 或發送持續閾值周期數(例如兩個周期),然后再讀取IQ或將第一可融合指令發給解碼器 或其他處理邏輯,使得如果可與第一指令融合的第二可融合指令尚未存儲在IQ中(例如, 由于這兩個可融合指令存儲在存儲器或高速緩存的不同存儲邊界中),那么不會錯失融合 這兩個可融合指令的機會。在一些實施例中,閾值可以是固定的,而在其他實施例中,閾值 可由用戶或者根據獨立于用戶的算法改變、更改。在一個實施例中,第一可融合指令是CMP 指令,而第二可融合指令是JCC指令。在其他實施例中,第一和/或第二指令可以不是CMP 或JCC指令,而是任何可融合指令。此外,本發明的實施例可應用于融合多于兩個指令。例如,圖2示出可在其中使用本發明的一個實施例的前端總線(FSB)計算機系統。 任何處理器201、205、210或215可訪問來自位于處理器核223、227、233、237、243、247、253、 257之一內或以其他方式與其相關聯的任何本地一級(Li)高速緩沖存儲器220、225、230、 235、240、245、250、255的信息。此外,任何處理器201、205、210或215可訪問來自共享二 級(L2)高速緩存203、207、213、217中任何一個的信息,或通過芯片組265訪問來自系統存 儲器260的信息。根據至少一個實施例,圖2的處理器中的一個或多個處理器可包括邏輯 219或以其他方式與邏輯219相關聯,以使得能夠提高指令融合的效率。除了如圖2所示的FSB計算機系統以外,還可以結合本發明的各種實施例使用其 他系統配置,包括點對點(P2P)互連系統和環形互連系統。例如,圖3中的P2P系統可包括 幾個處理器,其中只舉例示出兩個處理器370、380。處理器370、380均可包括與存儲器32、 34連接的本地存儲器控制器集線器(MCH)372、382。處理器370、380可經由點對點(PtP) 接口 350利用PtP接口電路378、388來交換數據。處理器370、380均可經由各自的PtP接 口 352、354利用點對點接口電路376、394、386、398來與芯片組390交換數據。芯片組390 也可以經由高性能圖形接口 339與高性能圖形電路338交換數據。本發明的實施例可位于 具有任何數量的處理核的任何處理器內,或位于圖3的每個PtP總線代理中。在一個實施 例中,任何處理器核可包括本地高速緩沖存儲器(未示出)或以其他方式與其相關聯。此 外,在這兩個處理器外部的任一處理器中可包含共享高速緩存(未示出),它也經由p2p互 連與這些處理器連接,使得如果處理器處于低功率模式,則可將任一個或者兩個處理器的 本地高速緩存信息存儲在共享高速緩存中。根據至少一個實施例,圖3的處理器或核中的 一個或多個處理器或核可包括邏輯319或以其他方式與邏輯319相關聯,以使得能夠提高 指令融合的效率。在至少一個實施例中,在諸如IQ清除操作的一些中間操作發生(在第一和第二可 融合指令之間發生)之前,第二可融合指令可能沒有存儲在IQ中,從而導致錯失融合這兩 個否則可融合的指令的機會。在一個實施例中,其中高速緩存(或緩沖器)存儲將要調度 (可能多次)以便由處理器執行的解碼指令(在將其從IQ中讀取和解碼后)或uop (例如,“解碼流緩沖器(decoded stream buffer) ” 或 “DSB”、“跟蹤高速緩存(trace cache) ” 或 “TC”)的相關序列,第一可融合uop (例如CMP)可存儲在高速緩存中,而在相同的可尋址范 圍(例如,相同的高速緩存路徑)內沒有可融合的第二 uop (例如JCC)。這可在例如JCC橫 跨高速緩存行(由于高速緩存錯失)或橫跨頁邊界(由于翻譯后援緩沖器錯失)的情況下 發生,在這種情況下,高速緩存可存儲CMP而不存儲JCC。隨后,如果在存儲CMP之后、但在 將JCC存儲在高速緩存中之前將處理器核管線清除(例如,由于斷言“清除”信號),那么高 速緩存只將CMP存儲在它的路徑之一中而不存儲JCC。在隨后查找存儲CMP的高速緩存行時,高速緩存可將錯失JCC解釋為錯失的訪 問,并且可將JCC標記為下一個高速緩存填充操作的附加點。然而,因為CMP+JCC可作為 融合的而從IQ中讀取,所以可能找不到這個附加點。因此,所請求的JCC可能不會與來自 IQ的將要填充的任何uop匹配,并且因此高速緩存將不能填充錯失JCC,而是在預期融合 的CMP+JCC的行上繼續錯失。此外,在一個利用未決填充請求隊列(PFRQ)來存儲uop高 速緩存填充請求的實施例中,為特定的融合指令填充而保留的條目可能不會被解除分配 (deallocate)(因為預期的融合指令填充從未發生),并且可能一直保持無用,直到下一個 清除操作。在一個實施例中,每次訪問錯失的融合指令條目時都會發生PFRQ條目鎖定,并 且因而可以防止對相同位置的任何隨后填充。為了防止對PFRQ條目的不正確或不當鎖定,在一個實施例中,可以使用狀態機來 監視從IQ中讀取的uop,以檢測由于例如達到對應PFRQ條目的最后一個uop但沒有檢測 到填充起始點而完全錯失具有該對應PFRQ條目的區域(例如,標記用于填充的區域)的情 況。在一個實施例中,當遇到這種情況時,狀態機可導致對PFRQ條目解除分配。在其他實 施例中,在不存在兩個可融合指令的情況下,可通過不在高速緩存中創建可從IQ中讀取的 可融合指令來避免不當PFRQ條目鎖定。例如,如果在CMP之后緊跟非JCC指令,則可在高 速緩存中創建融合指令條目,但是只有當從IQ中單獨讀出CMP時(例如,在閾值等待時間 到期之后),才不會將這個融合指令條目填充到高速緩存中。在其他實施例中,可對狀態機 檢測到跳過的填充區域的次數計數,可在跳過填充區域的次數達到某個閾值計數之后執行 高速緩存刷新或無效操作。然后,可從高速緩存移除該填充區域,并且隨后重新填充這個融 合指令。圖4示出根據一個實施例的狀態機,該狀態機可用于避免由于IQ中錯失的可融合 指令而引起的不想要的PFRQ條目鎖定情況。在狀態401,IQ中的指令不在標記用于填充 的區域中,“填充區域開始”信號指示IQ將要處理映射到填充區域的指令(根據高速緩存 散列來自填充區域的指令),但不會從保存在PFRQ中的線性指令指針(“唇部(lip)”)開 始(405)。這可導致狀態機移到狀態410。如果IQ中的下一個指令(不久將會對其解碼) 結束填充區域(例如,結束由高速緩存散列的行,或者是所采取的分支),則狀態機導致對 相應PFRQ條目解除分配415,并且狀態機返回到狀態401。然而,如果在狀態401或在狀態 410時填充指針等于填充區域唇部(430),則狀態機進入狀態420,在狀態420,訪問位于填 充區域中并且在填充開始點之后。從狀態420,填充區域指示中的最后一個uop將會使狀 態機返回425到狀態401,而不會對相應PFRQ條目解除分配。圖4中的狀態機可在硬件邏 輯、軟件、或其某個組合中實現。在其他實施例中,可以使用其他狀態機或邏輯。圖5示出可以結合本發明的至少一個實施例使用的操作的流程圖。在操作501,確定IQ中當前訪問的指令是否可與任何隨后指令融合。如果不能,則在操作505,從IQ中訪 問下一個指令,并將延遲計數復位。如果可以,則在操作510,將延遲計數器遞增,并且在操 作515,確定是否達到延遲計數閾值。如果沒有達到,那么在操作520,不對當前訪問的指令 執行任何指令融合。如果達到了,則在操作505,從IQ中訪問下一個指令,并將延遲計數復 位。在其他實施例中,可執行其他操作以提高指令融合的效率。圖6示出可以結合至少一個實施例執行的操作的流程圖。為了在具有多個解碼器 電路的處理器中執行一個實施例,有益的是確保在能夠解碼融合指令的特定解碼器電路上 解碼第一可融合指令。在圖6中,在操作601,確定特定指令是否是融合指令對中的第一指 令。如果不是,那么在操作605,發送融合指令。如果是,那么在操作610,確定在第一可融 合指令之后是否緊跟IQ中的有效指令。如果是,則在操作610,發送(issue)融合指令。如 果不是,則在操作615,確定是否將第一可融合指令發給能夠支持融合指令的解碼器。在一 個實施例中,解碼器-0能夠解碼融合指令。如果沒有將第一可融合指令發給解碼器-0,那 么在操作620,將第一可融合指令移動或“撤掉(nuke)”到不同的解碼器,直到它對應于解 碼器-0。在操作625,將計數器設置為初始值N,并且在操作630,如果在該指令之后是有效 指令,或者如果計數器為0,那么在操作635,發送融合指令。否則,在操作640,將計數器遞 減,并且撤掉無效指令。在其他實施例中,計數器可遞增到最終值。在其他實施例中,除了 撤掉操作外,其他操作也可清除無效指令。至少一個實施例的一個或多個方面可由存儲在機器可讀介質上的代表性數據實 現,這些代表性數據表示處理器中的各種邏輯,當由機器讀取時其會導致機器構造邏輯以 執行本文描述的技術。這些稱為“IP核”的表示可存儲在有形機器可讀介質(“磁帶”)中, 并提供給各種客戶或制造設施以加載到實際制造邏輯或處理器的制造機器中。因此,描述了用于指導微體系結構存儲器區域訪問的方法和裝置。應該理解,上述 描述旨在說明性而非限制性。在閱讀和理解上述描述之后,本領域技術人員將明白許多其 他實施例。因此,本發明的范圍應參考隨附權利要求以及賦予這些權利要求的等價物的全 部范圍一起來確定。
權利要求
一種裝置,包括指令隊列(IQ);邏輯,用于將對第一可融合指令的處理延遲閾值時間量,使得如果在所述閾值時間量內將可與所述第一可融合指令融合的第二可融合指令存儲在所述IQ中,那么可將所述第二可融合指令與所述第一可融合指令融合。
2.根據權利要求1所述的裝置,其中在存儲在所述IQ之前,所述第一可融合指令和所 述第二可融合指令跨越提取邊界存儲。
3.根據權利要求1所述的裝置,其中只有當所述第一可融合指令是存儲在所述IQ中的 最后一個指令時,所述邏輯才延遲對所述第一可融合指令的處理。
4.根據權利要求1所述的裝置,其中所述邏輯包括計數器,所述計數器對于在所述第 一可融合指令存儲在所述IQ中并且是所述IQ中的最后一個指令之后的每個周期遞增一 次,直到達到對應于所述閾值時間量的閾值周期數。
5.根據權利要求1所述的裝置,還包括狀態機,所述狀態機用于在存儲在所述IQ中的 所述第一可融合指令和存儲在所述IQ中的所述第二可融合指令之間執行中間指令時防止 填充緩沖請求隊列(FBRQ)鎖定對應于所述第一和第二可融合指令的條目。
6.根據權利要求5所述的裝置,其中所述中間指令將導致清除所述IQ。
7.一種方法,包括確定指令隊列(IQ)中當前訪問的指令是否可與將存儲在所述IQ中的任何隨后指令融合;如果當前訪問的指令與將存儲在所述IQ中的隨后指令不可融合,那么從所述IQ訪問 下一個指令并將所述延遲計數器復位;如果當前訪問的指令是可融合的并且是所述IQ中的最后一個指令,那么將所述延遲 計數器遞增。
8.根據權利要求7所述的方法,還包括如果所述第一和第二指令是可融合的并且所 述延遲計數器沒有達到閾值,那么將當前訪問的指令與所述隨后指令進行融合。
9.根據權利要求8所述的方法,還包括如果所述第一和第二指令是不可融合的,那么 將當前訪問的指令與所述隨后指令分開來處理。
10.根據權利要求8所述的方法,還包括如果所述延遲計數器已經達到所述閾值,那 么將當前訪問的指令與所述隨后指令分開來處理。
11.根據權利要求7所述的方法,還包括如果當前訪問的指令和所述隨后指令是可融 合的,并且在將隨后指令存儲在高速緩存中之前以及在將所述當前訪問的指令存儲在所述 高速緩存中之后執行中間事件,那么防止填充緩沖請求隊列(FBRQ)鎖定對應于所述當前 訪問指令和所述隨后指令的條目。
12.—種系統,包括存儲設備,用于分別在第一和第二訪問邊界內存儲第一和第二可融合指令;處理器,具有用于將所述第一和第二可融合指令提取到指令隊列(IQ)中的提取邏輯;延遲邏輯,用于將從所述IQ中讀取所述第一可融合指令的時間延遲閾值周期量;指令融合邏輯,用于在所述第一可融合指令之后以及在達到所述閾值周期量之前如果 將所述第二可融合指令存儲在所述IQ中則融合所述第一和第二可融合指令。
13.根據權利要求12所述的系統,還包括計數器,如果所述第一可融合指令是所述IQ 中的唯一指令,則所述計數器遞增;當達到所述閾值周期量時,所述計數器停止計數。
14.根據權利要求13所述的系統,其中如果在達到所述閾值周期量之前將所述第二可 融合指令存儲在所述IQ中,則所述計數器將復位。
15.根據權利要求13所述的系統,其中如果在達到所述閾值周期量之前將所述第二可 融合指令存儲在所述IQ中,則所述計數器將復位。
16.根據權利要求12所述的系統,其中所述存儲設備包括指令高速緩存,并且所述第 一和第二邊界的大小均為64字節。
17.根據權利要求12所述的系統,其中所述存儲設備包括動態隨機存取存儲器,并且 所述第一和第二邊界的大小均為4096字節。
18.根據權利要求12所述的系統,其中所述第一可融合指令是CMP/TEST指令,而所述 第二可融合指令是JCC指令。
19.根據權利要求18所述的系統,其中所述閾值周期數是2。
20.根據權利要求12所述的系統,還包括狀態機,所述狀態機用于在存儲在所述高速 緩存中的所述第一可融合指令和存儲在所述高速緩存中的所述第二可融合指令之間執行中間事件時防止填充緩沖請求隊列(FBRQ)鎖定對應于所述第一和第二可融合指令的條目。
全文摘要
一種用于在計算機系統中實現有效指令融合的技術。在一個實施例中,如果指令隊列中的第一指令可與第二指令融合,那么處理器邏輯將對第二指令的處理延遲閾值時間量。
文檔編號G06F9/30GK101901128SQ20091025308
公開日2010年12月1日 申請日期2009年10月30日 優先權日2008年10月30日
發明者I·歐奇爾, L·拉波波特, P·拉古文施, R·加波爾, R·瓦倫丁 申請人:英特爾公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1