• / 19
  • 下載費用:30 金幣  

對管線化的軟件的動態優化.pdf

摘要
申請專利號:

CN201380076139.8

申請日:

2013.05.30

公開號:

CN105164637A

公開日:

2015.12.16

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 9/38申請日:20130530|||公開
IPC分類號: G06F9/38; G06F9/46 主分類號: G06F9/38
申請人: 英特爾公司
發明人: H·帕克; H·容; Y·吳
地址: 美國加利福尼亞
優先權:
專利代理機構: 永新專利商標代理有限公司72002 代理人: 鄔少俊; 王英
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201380076139.8

授權公告號:

||||||

法律狀態公告日:

2017.12.19|||2016.01.13|||2015.12.16

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

在實施例中,一種系統包括包含至少一個核心的處理器以執行包括S個階段的循環的操作。系統也包括階段插入單元,該單元用于向循環中加入延時階段以增加與循環的第一變量關聯的相對應的寄存器的壽命,并且延遲該寄存器的內容的存儲。系統也包括動態隨機存取存儲器(DRAM)。描述并要求保護了其他的實施例。

權利要求書

權利要求書
1.  一種系統,包括:
處理器,包括:
至少一個核心,其用于執行循環的操作;
階段插入單元,其用于向所述循環中加入延遲階段,以增加與所述循環的第一變量關聯的寄存器的壽命并且延遲所述寄存器的內容的存儲;以及
動態隨機存取存儲器(DRAM)。

2.  根據權利要求1所述的系統,其中,所述處理器還包括模變量擴展單元,所述模變量擴展單元用于將所述寄存器重命名為第二寄存器。

3.  根據權利要求2所述的系統,其中,所述模變量擴展單元還用于在所述循環的多個迭代的每個迭代中將所述寄存器從所述寄存器重命名為相應的不同的寄存器。

4.  根據權利要求1-3中的任意一項所述的系統,其中,所述處理器用于響應于正在被執行的當前迭代中的異常,提交所述循環的最近完成的迭代的結果。

5.  根據權利要求1所述的系統,其中,所述處理器還包括補償單元,所述補償單元用于響應于所述循環的第N次迭代的第M階段中的異常,重新執行所述循環的(N-S+M)迭代的存儲操作,其中,每個迭代包括S個階段。

6.  根據權利要求5所述的系統,其中,所述補償單元還用于響應于所述異常,恢復與所述循環的所述(N-S+M)迭代關聯的所述寄存器的在外值。

7.  根據權利要求6所述的系統,其中,所述處理器還包括處理程序單元,所述處理程序單元用于在所述補償單元重新執行所述存儲操作以及恢復所述寄存器的所述在外值之前處理所述異常。

8.  根據權利要求7所述的系統,其中,所述處理器還用于響應于所述異常,從所述(N-S+M+1)迭代開始繼續所述循環的執行。

9.  包括指令的至少一種計算機可讀介質,所述指令當被執行時,使系統能夠:
接收循環的管線化的調度,所述循環包括要根據所述管線化的調度而并行執行的多個迭代,其中,所述循環的每個迭代包括用于將變量的相應的值賦給寄存器的相應的賦值操作,以及用于將在所述迭代中確定的值存儲到存儲器的相應的存儲操作;以及
將延遲階段插入所述管線化的調度的每個迭代中,以延遲所述相應的存儲操作的執行并且增加每個迭代中的所述寄存器的相應的壽命。

10.  根據權利要求9所述的至少一種計算機可讀介質,還包括模變量擴展指令,所述模變量擴展指令用于利用具有第二寄存器名的第二寄存器來替代具有第一寄存器名的第一寄存器的使用,其中所述循環的第一迭代的變量的值被賦給所述第一寄存器。

11.  根據權利要求10所述的至少一種計算機可讀介質,還包括用于在多個迭代中的每個迭代中,將對應的寄存器從具有所述第一寄存器名的所述第一寄存器替代為具有相應的不同的寄存器名的相應的不同的寄存器的指令。

12.  根據權利要求9-11中的任意一項所述的至少一種計算機可讀介質,還包括用于響應于正在被執行的當前迭代中的異常,提交所述循環的最近完成的迭代的結果的指令。

13.  根據權利要求9所述的至少一種計算機可讀介質,還包括用于響應于所述循環的所述第N次迭代的第M階段中的異常,重新執行所述循環的(N-S+M)迭代的第一存儲操作的指令,其中所述循環的每個迭代包括S個階段。

14.  根據權利要求13所述的至少一種計算機可讀介質,還包括用于響應于所述循環的所述第N次迭代中的所述異常,恢復與所述(N-S+M)迭代關聯的第一寄存器的在外值的指令。

15.  根據權利要求14所述的至少一種計算機可讀介質,還包括用于在恢復所述第一寄存器的所述在外值之前處理所述異常的指令。

16.  一種方法,包括:
接收循環的管線化的調度,所述循環包括要根據所述管線化的調度而并行執行的多個迭代,每個迭代包括用于將與所述迭代關聯的變量的第一值賦給寄存器的賦值操作,以及用于將從所述迭代的執行中確定的第二值存儲到存儲器的存儲操作;以及
將延遲階段插入所述管線化的調度的每個迭代中,以延遲相應的存儲操作的執行并且增加相應的迭代中的所述寄存器的壽命。

17.  根據權利要求16所述的方法,還包括將與第一迭代中的變量關聯的寄存器從第一寄存器替代為第一替代寄存器,并且將所述第一替代寄存器重新分配給所述循環的后續迭代中的變量。

18.  根據權利要求16所述的方法,還包括響應于發生在特定迭代中的異常,經由處理程序代碼的執行而處理所述異常。

19.  根據權利要求18所述的方法,還包括提交所述循環的最近完成的迭代的結果。

20.  根據權利要求19所述的方法,還包括從所述最近完成的迭代開始繼續所述循環的執行。

21.  一種裝置,包括用于執行權利要求16-20中的任意一項所述的方法的單元。

22.  一種處理器,包括:
至少一個核心,其用于執行循環的操作;以及
階段插入邏輯,其用于向所述循環中加入延遲階段,以增加與所述循環的第一迭代的第一變量關聯的寄存器的壽命并且延遲在所述迭代中確定的第二變量的值的內容的存儲。

23.  根據權利要求22所述的處理器,還包括模變量擴展單元,所述模變量擴展單元用于在所述循環的多個迭代中的每個迭代中將所述寄存器從所述寄存器替代為相應的不同的寄存器。

24.  根據權利要求22所述的處理器,還包括補償單元,所述補償單元用于響應于所述循環的第N次迭代的第M階段中的異常,重新執行所述循環的第(N-S+M)次迭代的存儲操作,其中每個迭代包括S個階段。

25.  根據權利要求24所述的處理器,其中,所述補償單元還用于響應于所述循環的所述第N次迭代中的所述異常,恢復與所述循環的所述第(N-S+M)次迭代關聯的第一寄存器的在外值。

說明書

說明書對管線化的軟件的動態優化
技術領域
實施例涉及管線化的軟件。
背景技術
軟件管線化是一種編譯器技術,該技術可以通過循環的多個迭代的重疊執行來增加計算密集型循環的吞吐量。在重疊的多個迭代中,由于操作順序的反轉,一些迭代可以是推測的,例如,操作的執行順序可能和循環中指示的執行順序不同。在推測的迭代過程中發生的異常可以使迭代的結果無效。用于更正無效結果的一種技術是丟棄所有之前的循環迭代的結果,并再一次開始循環計算(“卷回”),其在計算資源和時間方面會很昂貴。
附圖說明
圖1是根據本發明的實施例的用于優化循環的執行的系統的方框圖。
圖2是根據本發明的實施例的針對管線調度的循環的優化方案。
圖3是根據本發明的實施例的用于對管線調度的循環的執行進行優化的方法的流程圖。
圖4是根據本發明的實施例的處理器的方框圖。
圖5示出了根據本發明的實施例的包括多個核心的處理器的實施例。
圖6是根據本發明的實施例的系統的方框圖。
具體實施方式
在本文中呈現了裝置和方法用于以具有原子執行支持的動態優化的方式來減少卷回開銷的裝置和方法。在本發明的實施例中,呈現了可以以對軟件管線化的循環的動態二進制優化的方式來減少卷回的開銷的代碼生成技術。
原子區域可以指定執行激進推測(數據和控制兩者)的代碼的區域, 并且在該區域的末端提交更新。由于原子區域限制優化范圍,增加原子區域的大小可以是重要的。然而,更大的原子區域具有增加的卷回開銷的缺點,例如,當檢測到任何不期望的行為(例如,推測失敗異常、側退出(sideexits)、存儲器故障)時,可能丟棄在區域內取得的任何進展,可能將執行卷回到區域的開端,并且可能利用較不激進的優化來重復該循環。
響應于不期望的行為(例如,異常、故障、推測失敗、側退出),本發明的實施例使最近的非推測迭代的結果能夠恢復,并且提交自之前的提交以來的迭代。這可以通過以下方式來完成:保持之前的迭代的“在外(live-out)”值的額外的復本,并且延遲存儲操作以保持存儲器的內容完整并且不受推測的迭代干擾。
圖1是根據本發明的實施例的用于優化循環的執行的系統100的方框圖。系統100包括耦合至動態隨機存取存儲器(DRAM)180的處理器110。處理器110可以包括用于執行指令的一個或多個核心1120,1121…112n。處理器110還可以包括指令調度邏輯114、模變量擴展邏輯116、階段插入邏輯118、補償邏輯120以及包括高速緩存122的一個或多個高速緩存存儲器。可以在軟件、固件、硬件或其組合中實現指令調度邏輯114、模變量擴展邏輯116、階段插入邏輯118和補償邏輯120。
在操作中,包括多個操作的循環可以在多個核心中的一個上(例如在核心1120上)執行。指令調度邏輯114可以根據管線化的調度來調度循環的迭代。在一些實施例中,第一迭代的操作中的一個或多個可以被調度為在第二或之后的迭代中的操作中的一個或多個被調度以執行之后(例如,晚于)來執行。模變量擴展邏輯116可以將被賦值了循環的變量X的值的寄存器的寄存器名進行重命名(例如,采用替代寄存器Xi的使用來替代寄存器X),以便減少第一迭代中的一個或多個操作對之后的迭代中的一個或多個操作的依賴性。
循環執行多個迭代,并且每個迭代通常包括多個階段。迭代的每個階段包括在迭代的開始和緊接著的迭代的開始之間的多個周期(“迭代間隔”(II))。階段插入邏輯118可以在運行時在執行之前向循環的每個迭代中插入階段,以延長已經被重命名的寄存器的壽命(例如,在其期間依靠該寄存器來保存所賦值的值的時間段)并且延遲被重命名的寄存器的內容的存 儲。補償邏輯120可以完成任意還沒有執行的延遲的存儲的執行,并在完成循環后向寄存器X返回最終值。
圖2示出了根據本發明的實施例的對于管線調度的循環的優化方案。作為例性循環,偽代碼循環210包括用于向寄存器X賦值的賦值操作(X←),之后是兩個乘法(mult)操作,其后是將在迭代中確定的值(例如,寄存器X中的值或另一值)存儲到存儲器(例如,圖1的DRAM180)的存儲位置中的存儲操作。
軟件管線化的調度220是根據由諸如圖1的指令調度邏輯114的軟件調度邏輯確定的管線化的調度的、循環210的三個迭代的執行的表示。由兩個周期的發起間隔(II)將迭代0、1、2關于每個迭代的發起而分開。每個迭代可以分成階段,并且每個階段可以包括II個周期。例如,在管線化的調度220中,每個迭代包括3個階段,例如,迭代0包括階段1-3(周期0-5)。調度可以達到進行重復的穩定狀態。穩定狀態可以由包括一個迭代中的的每個操作的內核224表示。如點劃方框224所示,內核每II個周期重復一次。
迭代1和2可以被管線調度,以便利用可用的計算資源的優勢,并因此迭代0、1和2可以并行執行。例如,如果迭代0在執行中,迭代1和迭代2可以被認為是“推測的”,這是因為它們將在執行迭代0的過程中被執行,并且由于對可以在迭代0執行的過程中改變的迭代變量的依賴性,因此迭代1和迭代2可能或可能不成為循環210的精確迭代。例如,如果在周期0存儲在寄存器X中的值在迭代0的周期3中發生改變,則在周期2(迭代1)寄存器X中的值將和迭代0末尾的X的值不一致,并且因此,在迭代1之內的任何運算可能都不正確并可以被丟棄,例如,卷回至迭代0。針對X的公用寄存器的使用可能在循環210的推測迭代中創建不需要的依賴性。
由于多個迭代并行運行,在特定迭代中的寄存器X的壽命(例如,周期/階段的范圍,其中寄存器X保持可以被依賴的所賦的值)可以與在其他迭代中的寄存器X的一個或多個壽命重疊。為了避免在執行中重疊的迭代之間的依賴性,可以將寄存器X“重命名”,例如,如調度240中所示,分配給在每個迭代中具有不同的名的替代寄存器。每個壽命跨越三個迭代, 并且因此使用X的壽命的三個區別的實例:X0、X1和X2。示出了每個迭代中的Xi的壽命,例如,X0的壽命242(迭代0)、X1的壽命244(迭代1)、X2的壽命246(迭代2)、X0的壽命248(迭代3)以及X1的壽命250(迭代4)。
在管線化的調度240中示出的示例中,每三個迭代而有條件地提交(例如,服從條件而提交)一個循環。如在調度240中指示的,在提交點(例如,在周期9的末尾的提交)之前的,迭代3、周期9中發生異常(例如,溢出異常)。本發明的實施例目的在于,通過當在管線化的循環中發生不期望的行為時避免完全地卷回,從而減少丟棄的工作。
總的來說,與管線調度關聯的問題可以表示如下。
S:單個迭代中的階段的總數
E:在原子區域中要求卷回的不期望的行為,例如,異常、存儲器故障、推測失敗、以及側退出
N:在其中發生E的迭代計數(從0開始)
M:在其中發生E的迭代內的階段數(從0開始)
當在(迭代=N,階段=M)發生E時,迭代(N-S+M)已經完成。在迭代(N-S+M)完成時恢復狀態并且進行提交是令人滿意的。可以處理事件E并且可以從迭代(N-S+M+1)開始繼續(resume)循環的執行。
當在軟件管線化的循環的執行的過程中發生不期望的行為時,所生成的代碼可以能夠恢復最近完成的迭代,使得可以識別出提交點。為了實現該恢復,要恢復兩個機器狀態:寄存器狀態(X0、X1、X2)和存儲器狀態(存儲)。
恢復寄存器狀態。所感興趣的是跨“循環返回邊緣”和“在外寄存器”而存在(live)的寄存器。如果有要被執行的、等待被賦給寄存器的值的指令,則該值被認為是存在的,并且因此將該值保持在寄存器中并且對將要執行的指令可用。“循環返回邊緣”是指循環迭代的結束點,其也是循環的下一迭代的開始點。“跨循環返回邊緣而存在”的寄存器值Q是指被賦值給寄存器的(例如,寄存器R)、跨連續的迭代而存在的值,例如在第一迭代完成之后,下一迭代消耗(consume)存儲在寄存器R中的值Q。“在外寄 存器”是指被賦值了由循環結束后的循環外的操作所消耗的值的寄存器。當提交完成之后循環繼續執行時,可以重新初始化所有其他寄存器(例如,沒有被賦值“在外”或“跨循環返回邊緣而存在”的值的寄存器)。對于這些“在外寄存器”和/或“跨循環返回邊緣而存在的寄存器”來說,當異常發生時(例如,周期8-9),來自之前完成的迭代(例如,調度240中的迭代1,其在當前正在執行的迭代2之前完成)的值要被保持為存在的。可以通過在每個迭代中將每個在外寄存器的存在范圍擴展一個階段(例如,兩個周期),并且通過將X個寄存器中的每個重命名(例如,由具有相對應名的獨立寄存器來替代X個寄存器中的每個),而將來自之前迭代(例如,迭代1)的值保持為存在的。
在調度260中示出了在外和重命名的寄存器的擴展的壽命。通過將壽命244擴展額外的階段264到壽命274,在周期8-9中X1的值將仍然可用。應當注意的是,在調度260中,迭代3的X的寄存器已經被重命名為X3,這允許保持來自迭代1的X1的值直到周期9的末尾,使得在與迭代3(周期9)中的乘法操作關聯的異常的情況下,可以通過使用被賦值給X1的值來恢復迭代1的寄存器狀態。
恢復存儲器狀態。由于存儲操作具有對存儲器的最終影響(例如,除非整個原子區域卷回,否則不可恢復),所以在當前的內核期間所執行的所有存儲操作都應該來自非推測的迭代(例如,在當前的內核執行時已經完成的最近的迭代),而不來自推測的迭代。管線調度器將所有存儲保持在調度的最后階段,例如,管線調度器不推測存儲。因此,可以假設將所有的存儲調度在迭代的最后階段。在當前的內核(240中的周期8-9)執行時,存儲操作來自迭代2,并且其是推測迭代,這是因為其還沒有完成。最近完成的迭代是迭代1并且是非推測的。因此,如在調度260中所示,通過向每個迭代中增加一個階段(例如,262、266、268、270、272)可以延遲存儲。利用所增加的階段,在當前階段(例如,階段5)中執行的所有存儲都來自非推測迭代。在當前的內核(周期8-9)中,迭代1已正確完成除了存儲操作之外的其它操作。如果發生不期望的行為(例如,異常),則可以重新執行存儲操作以完成迭代1。概括而言,迭代N中的階段M處的異常可能觸發迭代(N-S+M)的結果的恢復和提交。(在迭代1中的存儲操作引起 存儲器故障的情況下,可以沒有迭代1的結果的恢復,并且卷回至最后的提交點迭代0并從迭代0繼續執行)。
擴展的階段插入。通過針對在外寄存器和存儲操作的在每個調度的末尾處的擴展的階段(例如,階段262、266、268、270、272)的插入,1和2的組合可以工作。當要發生卷回時,完成非推測迭代的擴展的階段的執行。
運行時支持。處理存儲器故障和異常的運行時代碼可以支持在本文中描述的代碼生成技術。當異常發生時,可以執行異常處理程序(handler)以處理該異常。在異常處理程序的執行之后,可以執行恢復最近的非推測迭代的狀態的補償代碼塊。該補償代碼塊可以包括調度260中的擴展的階段(例如,264)的執行,并且也可以包括其在周期9中全部存在的原始在外寄存器值(例如,X0、X1、X2、X3)的恢復。在示例260中,由于重命名的寄存器X0-X3在管線化的循環的內部,所以補償代碼塊的執行包括將寄存器X3的內容復制到寄存器X。補償代碼塊可以對每個迭代不同,并且每個補償代碼塊的執行可以將寄存器值X0、X1、X2、X3中的一個的內容復制到寄存器X。(例如,對于如圖2中發生在周期9中的異常,可以執行迭代1的補償塊,該補償塊將X1復制到X。)在執行補償塊后,可以運行提交以保存之前完成的迭代的結果(例如,調度260中的迭代1)。
圖3是根據本發明的一個或多個實施例的用于對循環的操作進行調度的方法的流程圖。在方框302處,在編譯時從管線調度器接收循環的管線化的調度。繼續到方框304,在編譯時執行模變量擴展,例如,將寄存器(例如,X)重命名為要被循環賦值的多個寄存器(例如,圖2的260中的X0、X1、X2、X3)中的一個。前進到方框306,可以在編譯時增加額外的階段,例如,包括在循環的管線化的調度的每個迭代中的一個或多個“無操作”以形成循環的修改的管線化的調度,在其中,存儲可以延遲并轉移到額外的階段,并且將補償代碼(“補償塊”)增加到循環代碼中。移動到方框308,可以在運行時執行循環的修改的管線化的調度。繼續到決策菱形框310,如果完成循環的執行(例如,沒有異常),則該方法在320結束。如果沒有完成循環的執行,則繼續至決策菱形框312,如果沒有檢測到異常,則在方框308處繼續執行修改的管線化的調度的執行。如果發生異常,則繼續至方框314,響應于該異常,在運行時執行異常處理程序。前進到方框316,可以 在運行時執行代碼的補償塊以完成還沒有被執行的任何延遲的存儲的執行,并向寄存器X返回最終值。繼續至方框318,提交了最近完成的迭代。該方法在320處結束。
現在參考圖4,示出的是根據本發明的實施例的處理器的方框圖。如圖4所示,處理器400可以是在核心域410中的包括多個核心410a-410n的多核處理器。根據本發明的實施例,核心中的一個或多個可以包括用于向管線化的調度中的循環的每個迭代中增加階段的階段插入邏輯,例如,412a、412b…412n,從而例如在從異常恢復方面提高效率。在本發明的實施例中,階段插入邏輯可以實現為軟件、固件、硬件、或它們的組合。
核心可以經由互連415耦合至系統代理或包括多種組件的非核心420。如圖所示,非核心420可以包括共享的高速緩存430,其中高速緩存430可以是末級高速緩存并包括高速緩存控制器432。此外,非核心可以包括集成的存儲器控制器440和多種接口450。
通過進一步參考圖4,處理器400可以(例如,經由存儲器總線)和系統存儲器460進行通信。此外,通過接口450,可以向多種片外組件(例如,外圍設備、大容量存儲設備等)建立連接。盡管利用圖4的實施例中的特定實現進行示出,但本發明的范圍不限于此。
參考圖5,示出了包括多個核心的處理器的實施例。處理器500包括任何處理器或處理設備,例如微處理器、嵌入式處理器、數字信號處理器(DSP)、網絡處理器、手持處理器、應用處理器、協處理器、片上系統(SOC)、或用來執行代碼的其他設備。在一個實施例中,處理器500包括至少兩個核心——核心501和核心502,其中所述兩個核心可以包括非對稱核心和對稱核心(示出的實施例)。然而,處理器500可以包括可以是對稱的或非對稱的任何數量的處理器元件。
在一個實施例中,處理元件指的是用于支持軟件線程的硬件或邏輯。硬件處理元件的示例包括:線程單元、線程槽、線程、進程單元、環境、環境單元、邏輯處理器、硬件線程、核心、和/或能夠保持處理器狀態(例如,執行狀態或構架狀態)的任何其他元件。換句話說,在一個實施例中,處理元件指的是能夠獨立地與代碼(例如,軟件線程、操作系統、應用、或其他代碼)關聯的任何硬件。物理處理器通常指的是集成電路,其中所 述集成電路潛在地包括任何數量的其他處理元件,例如核心或硬件線程。
核心常常指的是位于能夠保持獨立構架狀態的集成電路上的邏輯,其中,每個獨立地保持的構架狀態關聯于至少一些專用執行資源。與核心不同,硬件線程通常指的是位于能夠保持獨立構架狀態的集成電路上的任何邏輯,其中,獨立地保持的構架狀態共享對執行資源的訪問。可以看出,當某些資源是共享的并且其他資源專用于構架狀態時,硬件線程和核心的術語之間的線重疊。但是經常,操作系統將核心和硬件線程視為單獨的邏輯處理器,其中操作系統能夠在每個邏輯處理器上獨立地調度操作。
如在圖5中所示,物理處理器500包括兩個核心,核心501和核心502。這里,認為核心501和502是對稱核心,即,具有相同配置、功能單元、和/或邏輯的核心。在另一個實施例中,核心501包括亂序處理器核心,而核心502包括順序處理器核心。然而,可以從任何類型的核心(例如,本地核心、軟件管理的核心、適于執行本地指令集構架(ISA)的核心、適于執行翻譯的ISA的核心、協同設計的核心、或其他已知的核心)中單獨地挑選核心501和核心502。但是對于進一步討論,下文中進一步詳細描述了核心501中示出的功能單元,與在核心502中的單元以相似的方式運行。
如圖所描繪的,核心501包括兩個硬件線程501a和501b,其也可以被稱為硬件線程槽501a和501b。因此,在一個實施例中,諸如操作系統的軟件實體潛在地將處理器500視為四個分離的處理器(即能夠同時處理四個軟件線程的四個邏輯處理器或處理處理元件)。如上文所暗示的,第一線程關聯于構架狀態寄存器501a,第二線程關聯于構架狀態寄存器501b,第三線程可以關聯于構架狀態寄存器502a,并且第四線程可以關聯于構架狀態寄存器502b。這里,如前文所述,構架狀態寄存器中的每個(501a、501b、502a和502b)都可以被稱為處理元件、線程槽、或線程單元。如圖所示,構架狀態寄存器501a在構架狀態寄存器501b中被復制,因此獨立構架狀態/環境能夠針對邏輯處理器501a和邏輯處理器501b被存儲。在核心501中,其他更小的資源(例如,分配器和重命名器塊530中的指令指針和重命名邏輯)也可以針對線程501a和501b被復制。可以通過分割來共享一些資源,例如重排序/退出單元535中的重排序緩沖器、ILTB520、載入/存儲緩沖器、以及隊列。諸如通用內部寄存器、頁表基址寄存器、低級數據 高速緩存和數據TLB515、執行單元540、以及部分亂序單元535的其他資源潛在地被完全共享。
處理器500常常包括可被完全共享、可通過分割被共享、或專用于處理元件/由處理元件專用的其他資源。在圖5中,示出了具有處理器的示例性邏輯單元/資源的純示例性處理器的實施例。應當注意的是,處理器可以包括或省略任何這些功能單元,并且包括任何其他未描繪出的已知功能元件、邏輯、或固件。如圖所示,核心501包括簡化的、代表性的亂序(OOO)處理器核心。但是可以在不同的實施例中使用順序處理器。OOO核心包括分支目標緩沖器520以推測將會執行或采用的分支,并包括指令轉換緩沖器(I-TLB)520以存儲指令的地址轉換條目。
核心501還包括耦合至提取單元520以對所提取的元素進行解碼的解碼模塊525。在一個實施例中,提取邏輯包括分別和線程槽501a、501b關聯的獨立定序器。通常,核心501關聯于第一ISA,該第一ISA限定/指定可以在處理器500上執行的指令。是第一ISA一部分的機器代碼指令常常包括指令的一部分(稱為操作碼),其引用/指定將要執行的指令或操作。如由第一ISA所定義的,解碼邏輯525包括從其操作碼中識別這些指令并在管線中傳遞解碼的指令以進行處理的電路。例如,在一個實施例中,解碼器525包括被設計為或適于識別特定指令(例如,事物指令)的邏輯。作為由解碼器525的識別的結果,構架或核心501采用特定的、預先定義的操作來執行和合適的指令關聯的任務。重要的是要注意到,可以響應于單個或多個指令(其中一些可以是新或舊指令),執行在本文中所描述的任何任務、塊、操作和方法。
在一個示例中,分配器和重命名器塊530包括用于保留資源(例如,寄存器文件)以存儲指令處理結果的分配器。然而,線程501a和501b潛在地能夠亂序執行,其中分配器和重命名器塊530也保留其他資源(例如,重排序緩沖器)以用于追蹤指令結果。單元530也可以包括寄存器重命名器以將程序/指令參考寄存器重命名為處理器500內部的其他寄存器。重排序/退出單元535包括諸如上文中提到的重排序緩沖器、載入緩沖器、和存儲緩沖器的組件,以支持亂序執行和之后的被亂序執行的指令的順序退出。
在一個實施例中,調度器和執行單元塊540包括用于在執行單元上調 度指令/操作的調度器單元。例如,調度器單元可以根據管線化的調度來調度循環的操作。也包括關聯于執行單元的寄存器文件以存儲信息指令處理結果。示例性執行單元包括浮點型執行單元、整型執行單元、跳轉執行單元、載入執行單元、存儲執行單元、以及其他已知的執行單元。
根據本發明的實施例,核心501和502中的一個和兩個可以包括用于將額外的階段插入管線調度的循環的每個迭代中的代碼生成邏輯(分別為542、546)。根據本發明的實施例,代碼生成邏輯(542、546)也可以將循環迭代的變量已被賦值到的一個或多個寄存器重命名。
較低等級數據高速緩存和數據轉換緩沖器(D-TLB)551耦合至執行單元540。D-TLB551用于將最近的虛擬/線性存儲至物理地址的轉換。作為具體示例,處理器可以包括頁表結構以將物理存儲器分成多個虛擬頁。
這里,核心501和502共享對更高級或更遠離的高速緩存510(其用于高速緩存最近提取的元件)的訪問。應當注意的是,更高級或更遠離是指增加或更加遠離執行單元的高速緩存等級。在一個實施例中,更高級高速緩存510是末級數據高速緩存(處理器500上的存儲器層級中的最后的高速緩存)例如第二或第三級數據高速緩存。然而,更高級的高速緩存510并不限于此,這是因為其可以關聯于或包括指令高速緩存。追蹤高速緩存(一種指令高速緩存),代替地可以在解碼器525之后耦合以存儲最近解碼的追蹤。
在所描繪的配置中,處理器500也包括總線接口模塊505。在歷史上,控制器570已經被包含在處理器500外部的計算系統中。在這種情況下,總線接口505用于和處理器500外部的設備進行通信,例如系統存儲器575、芯片組(常常包括用于連接至存儲器575的存儲器控制集線器、以及用于連接至外圍設備的I/O控制器集線器)、存儲器控制器集線器、北橋、或其他集成電路。并且在這種情況下,總線505可以包括任何已知的互連,例如多點分支總線、點對點互連、串行互連、并行總線、一致性(例如,高速緩存一致性)總線、分層協議構架、差動總線、以及GTL總線。
存儲器575可以專用于處理器500或與系統中的其他設備共享。存儲器575的類型的常見示例包括:DRAM、SRAM、非易失性存儲器(NV存儲器)、以及其他已知的存儲設備。應當注意的是,設備580可以包括耦合 至存儲器控制器集線器的圖形加速器、處理器或卡、耦合至I/O控制器集線器的數據存儲設備、無線收發器、閃速存儲器設備、音頻控制器、網絡控制器、或其他已知的設備。
然而在所描繪的實施例中應當注意到,控制器570被示出為處理器500的一部分。最近,隨著更多的邏輯和設備被集成在單個管芯上,例如SOC,這些設備中的每個都可以被包含在處理器500上。例如,在一個實施例中,存儲器控制器集線器570和處理器500在同一個封裝和/或管芯上。這里,核心的一部分(在核心上的部分)包括一個或多個控制器570以用于和諸如存儲器575或圖形設備580的其他設備進行交互。包括用于和這樣的設備進行交互的互連和控制器的配置常常稱為核上(或非核配置)。例如,總線接口505包括具有用于和存儲器575交互的存儲器控制器的環形互連,以及用于和圖形設備580交互的圖形控制器。但是,在SOC環境中,諸如網絡接口、協處理器、存儲器575、圖形設備580、以及其他任何已知的計算機設備/接口的更多的設備可以集成在單個管芯或集成電路上以提供具有高功能性和低功耗的小形狀因子。
實施例可以在許多不同的系統類型中實現。現在參考圖6,示出的是根據本發明的實施例的系統的方框圖。如在圖6中所示,多處理器系統600是點對點互連系統,并包括經由點對點互連650耦合的第一處理器670和第二處理器680。如在圖6中所示,處理器670和680中的每個都可以是包括第一和第二處理器核心(即,處理器核心674a和674b以及處理器核心684a和684b)的多核心處理器,盡管在處理器中潛在地出現更多的核心。
仍然參考圖6,第一處理器670還包括存儲器控制器集線器(MCH)672和點對點(P-P)接口676和678。相似地,第二處理器680包括MCH682和P-P接口686和688。如在圖6中所示,MCH672和682將處理器耦合至相應的存儲器,也就是可以是本地附接至相應的處理器的系統存儲器(例如,DRAM)的部分的存儲器632和存儲器634。處理器670和680中的每個可以包括階段插入邏輯(未示出)以根據本發明的實施例,向管線調度的循環的每個迭代中插入額外的階段,并且可以包括模變量擴展邏輯以根據本發明的實施例,對與管線調度的循環的每個迭代關聯的寄存器進行重命名。額外的階段可以使得相比于丟棄循環的全部結果,能夠更高效地從 異常中恢復。根據本發明的實施例,更高效的恢復可以至少部分地由于在外變量(具有在循環內生成、并在循環外使用的值的變量)的增加的壽命。根據本發明的實施例,處理器也可以包括用于恢復存儲在經重命名的寄存器中的值,并且完成存儲操作的補償邏輯。第一處理器670和第二處理器680可以分別經由P-P互連662和654耦合至芯片組690。如圖6中所示,芯片組690包括P-P接口694和698。
此外,芯片組690包括用于通過P-P互連639將芯片組690與高性能圖形引擎638相耦合的接口692。進而,芯片組690可以經由接口696耦合至第一總線616。如圖6所示,可以將各種輸入/輸出(I/O)設備614和將第一總線616耦合至第二總線620的總線橋618一起,耦合至第一總線616。可以將各種設備耦合至第二總線620,在一個實施例中,所述各種設備包括例如鍵盤/鼠標622、通信設備626以及數據存儲單元628(例如,磁盤驅動器或可以包括代碼630的其他大容量存儲設備)。此外,可以將音頻I/O624耦合至第二總線620。可以將實施例合并入包括移動設備,例如智能蜂窩電話、UltrabookTM、平板計算機、上網本等在內的其他類型的系統。
下面的示例關于進一步的實施例。
在第一個示例中,系統包括處理器,該處理器包括至少一個核心以用于執行循環的操作,以及階段插入模塊,所述階段插入模塊用于向循環中加入延遲階段以增加與循環的第一變量關聯的寄存器的壽命,并且用于延遲寄存器的內容的存儲。該系統也包括動態隨機存取存儲器(DRAM)。處理器可選地包括用于將寄存器重命名為第二寄存器的模變量擴展邏輯。模變量擴展邏輯也可以在循環的多個迭代的每個中將寄存器從該寄存器重命名為相應的不同的寄存器。處理器可選地包括補償邏輯,所述補償邏輯用于響應于循環的第N次迭代的第M階段中的異常而重新執行循環的第(N-S+M)次迭代的存儲操作,其中循環的每個迭代都包括S個階段。補償邏輯可以響應于異常而恢復在循環的第(N-S+M)次迭代中的寄存器的在外值。處理器可選地包括處理程序邏輯,所述處理程序邏輯用于在存儲操作的重新執行之前處理異常,并恢復寄存器的在外值。處理器響應于異常,可選地從第(N-S+M+1)次迭代開始繼續執行循環。響應于正在被執行的當前的迭代中的異常,處理器可選地提交循環的最近完成的迭代的結 果。
在第二個示例中,至少一個計算機可讀介質包括當被執行時使系統能夠接收循環的管線化的調度的指令,所述循環包括要根據管線化的調度并行執行的多個迭代。循環中的每個迭代可以包括用于將相應的變量的值賦給寄存器的相應的賦值操作,以及用于將在迭代中確定的值存儲于存儲器的相應的存儲操作。當指令被執行時,可以使系統能夠將延遲階段插入管線化的調度的每個迭代中以延遲相應的存儲操作的執行,并增加每個迭代中的寄存器的相應的壽命。至少一個計算機可讀介質可以可選地包括模變量擴展指令,其用于利用具有第二寄存器名的第二寄存器來替代具有第一寄存器名的第一寄存器,其中,循環的第一迭代的變量的值被賦給所述第一寄存器。至少一個計算機可讀介質可以可選地包括用于在多個迭代的每個迭代中將具有第一寄存器名的第一寄存器替代為具有對應的不同寄存器名的對應的不同寄存器的指令。至少一個計算機可讀介質可以可選地包括用于響應于循環的第N次迭代的第M階段中的異常而重新執行循環的第(N-S+M)次迭代的第一存儲操作的指令,其中,循環的每個迭代中包括S個階段。至少一個計算機可讀介質可以可選地包括用于響應于循環的第N次迭代中的異常而護膚與第(N-S+M)次迭代關聯的第一寄存器的在外值的指令。至少一個計算機可讀介質可以可選地包括用于在第一寄存器的在外值的恢復之前處理異常的指令。至少一個計算機可讀介質可以可選地包括用于響應于正在執行的當前的迭代中的異常而提交循環的最近完成的迭代的結果。
在第三個示例中,一種方法包括接收循環的管線化的調度,其中該循環包括根據管線化的調度的要被并行地執行的多個迭代。每個迭代包括用于將與該迭代相關的變量的值賦給寄存器的賦值操作,以及用于將寄存器的內容存儲于存儲器的相應的存儲操作。該方法也包括將延遲階段插入管線化的調度的每個迭代中以延遲相應的存儲操作的執行,并且增加在相應的迭代中的寄存器的壽命。該方法可以可選地包括將與第一迭代中的變量關聯的寄存器從第一寄存器名替代成第一替代寄存器,并且將替代寄存器重新分配給在循環的后續迭代中的變量。該方法可以可選地包括,響應于發生在特定迭代中的異常,提交循環的最近完成的迭代的結果。該方法也 可以可選地包括,響應于發生在特定迭代中的異常,經由處理程序代碼的執行來處理異常。該方法可以可選地包括提交循環的最近完成的迭代的結果,并且從最近完成的迭代開始繼續循環的執行。
在第四個示例中,用于執行循環的處理器包括用于執行循環的操作的至少一個核心,以及階段插入邏輯,該階段插入邏輯用于向循環中加入延遲階段以增加與循環的第一迭代的第一變量關聯的寄存器的壽命,并且延遲寄存器的內容的存儲。處理器可以可選地包括用于將寄存器重命名為第二寄存器,或用于在循環的多個迭代中的每個迭代將寄存器從寄存器重命名為相應的不同的寄存器的重命名邏輯。處理器可以可選地包括用于響應于循環的第N次迭代的第M階段中的異常而重新執行循環的第(N-S+M)次迭代的存儲操作的補償邏輯,其中每個迭代包括S個階段。處理器可以可選地包括用于在補償邏輯重新執行存儲操作之前處理異常的處理程序邏輯。補償邏輯可以可選地響應于循環的第N次迭代中的異常而恢復與循環的第(N-S+M)次迭代關聯的第一寄存器的在外值。處理器可以響應于異常而從最近完成的迭代開始來繼續循環的執行。可選地,處理器可以響應于正在執行的當前迭代中的異常,而提交循環的最近完成的迭代的結果。
可以在許多不同類型的系統中使用實施例。例如,在一個實施例中,一種通信設備可以被布置為執行在本文中所描述的各種方法和技術。當然,本發明的范圍不限于通信設備,并且相反,其他實施例可以指向用于處理指令的其他類型的裝置,或一個或多個機器可讀介質,所述機器可讀介質包括響應于在計算設備上被執行而使得設備執行在本文中所描述的方法和技術中的一個或多個的指令。
實施例可以在代碼中實現,并且可以存儲在其上存儲有指令的非瞬時性存儲介質上,其中,所述指令可以對系統進行編程以執行所述指令。存儲介質可以包括但不限于包括軟盤、光盤、固態硬盤(SSD)、光盤只讀存儲器(CD-ROM)、可重寫光盤(CD-RW)、以及磁光盤、諸如只讀存儲器(ROM)的半導體設備、諸如動態隨機存取存儲器(DRAM)的隨機存取存儲器(RAM)、靜態隨機存取存儲器(SRAM)、可擦除可編程只讀存儲器(EPROM)、閃速存儲器、電可擦除可編程只讀存儲器(EEPROM)、磁或光卡、或適合存儲電子指令的其他任何類型的介質在內的任何類型的盤。
盡管已經關于有限數量的實施例而描述了本發明,但本領域的技術人員應該理解從中的許多修改與變型。所附權利要求旨在覆蓋落在本發明真正的精神和范圍之內的所有這些修改和變型。

關 鍵 詞:
管線 軟件 動態 優化
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:對管線化的軟件的動態優化.pdf
鏈接地址:http://www.rgyfuv.icu/p-6409663.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图