有依賴的禁止級的聯(lián)合。對于 每個級S,可通過初始化為0的變量newStagesBefore(s)來對在它之前插入的新級的數(shù)量 進行記錄。然后可掃描所有循環(huán)承載依賴,并且圖示的方法決定是否插入新的級以及插入 多少。在任何循環(huán)承載依賴(a_>b)無法通過插入空白級解決的情況下,增加啟動間隔(II) 來解決它。解決它的最小π可以是如鍋找惡|〇
[0023] 進行內(nèi)核擴展的算法可例如實現(xiàn)如下: m -當前內(nèi)核的總級
[0
(II,feasiblell(e)),V(a---KiSfii).'
[0025] 在過程塊15處,圖示的方法可確定調(diào)整的局部調(diào)度(其是在執(zhí)行過程塊14之后所 得的調(diào)度)是否實現(xiàn)計算的MII。如果是的話,在過程塊17處,過程停止并且圖示的方法終 止。如果否的話,在過程塊16處,圖示的方法確定是否已發(fā)生規(guī)定時期。例如,圖示的方法 可確定時期變量(例如,變量" i ")是否等于規(guī)定時期。規(guī)定時期可以是閾值,例如預定義數(shù) 量的迭代。每當圖示的方法執(zhí)行過程塊13和14時,發(fā)生迭代,并且變量(i)相應地在過程 塊19中遞增。執(zhí)行的代碼優(yōu)化可在圖示的方法中止之前進行有限次數(shù)。因此,如果圖示的 方法確定發(fā)生規(guī)定時期,則圖示的方法在過程塊17處終止。
[0026] 在過程塊18處,圖示的方法修改調(diào)整的局部調(diào)度來對下一個處理迭代創(chuàng)建更緊 湊的調(diào)度。為了產(chǎn)生實現(xiàn)計算的最小啟動間隔的調(diào)度,調(diào)整的局部調(diào)度可基于當前調(diào)度通 過使指令從它們的當前級移到它們的下一個級來修改。這樣的方法對代碼優(yōu)化的下一個迭 代產(chǎn)生下一個迭代調(diào)度。圖示的方法重復代碼優(yōu)化,只要規(guī)定時期直到獲得實現(xiàn)計算的最 小啟動間隔的調(diào)整的局部調(diào)度才發(fā)生(即,i :_規(guī)定時期)即可。
[0027] 在過程塊19處,圖示的方法可使對于下一個處理迭代的變量(i)遞增,并且方法 返回過程塊13來繼續(xù)執(zhí)行。
[0028] 圖2B圖示執(zhí)行流水線的方法。圖示的方法可實現(xiàn)為邏輯指令集和/或固件,其存 儲在例如RAM、ROM、PR0M、閃速存儲器等機器或計算機可讀存儲介質(zhì)中,在例如PLA、FPGA、 CPLD等可配置邏輯中,在使用匯編語言編程和例如ASIC、CM0S或TTL技術(shù)等電路技術(shù)的固 定功能性硬件中,或其任何組合中。
[0029] 圖示的方法在過程塊32處提供確定對于由動態(tài)編譯器處理一個或多個循環(huán)的性 能水平,其中該性能水平通過計算最小啟動間隔(Mil)來確定。在過程塊33處,圖示的方 法提供執(zhí)行代碼優(yōu)化來對一個或多個循環(huán)產(chǎn)生在過程塊33處的規(guī)定時期內(nèi)實現(xiàn)所確定的 性能水平的流水線調(diào)度,其中執(zhí)行的代碼優(yōu)化包括分配硬件資源并且對每個分區(qū)級中包括 的指令確定局部依賴以產(chǎn)生局部調(diào)度。
[0030] 此外,執(zhí)行的代碼優(yōu)化可包括調(diào)整局部調(diào)度來解決循環(huán)承載依賴以創(chuàng)建調(diào)整的局 部調(diào)度,并且如果所調(diào)整的局部調(diào)度未實現(xiàn)性能水平且未發(fā)生規(guī)定時期,則使指令從它們 的當前級移到下一個級來產(chǎn)生下一個迭代調(diào)度。執(zhí)行的代碼優(yōu)化可重復以使用下一個迭代 調(diào)度來產(chǎn)生新的調(diào)整的局部調(diào)度,只要規(guī)定時期直到調(diào)整的局部調(diào)度實現(xiàn)性能水平才發(fā)生 即可。
[0031] 在過程塊34處,建立對于一個或多個循環(huán)的依賴圖并且每個依賴圖基于性能水 平而分區(qū)成級。圖示的方法在過程塊35處確定調(diào)整的局部調(diào)度是否實現(xiàn)性能水平并且在 過程塊36處,如果所調(diào)整的局部調(diào)度未實現(xiàn)性能水平,則圖示的方法確定是否已發(fā)生規(guī)定 時期。
[0032] 現(xiàn)在轉(zhuǎn)向圖4,圖示微處理器系統(tǒng)的圖。在圖4中示出多處理器系統(tǒng)1000,其可包 括第一處理元件1070和第二處理元件1080。盡管示出兩個處理元件1070和1080,要理解 系統(tǒng)1000的實施例還可包括僅僅一個這樣的處理元件。
[0033] 系統(tǒng)1000圖示為點到點互連系統(tǒng),其中第一處理元件1070和第二處理元件1080 經(jīng)由點到點互連1050而耦合。應理解在圖4中圖示的互連中的任一個或全部可實現(xiàn)為多 點總線而不是點到點互連。
[0034] 如在圖4中示出的,處理器元件1070和1080中的每個可以是多核處理器,其包括 第一和第二處理器核(即,處理器核1074a和1074b以及處理器核1084a和1084b)。這樣的 核1074a、1074b、1084a、1084b可配置成執(zhí)行指令代碼。
[0035] 每個處理元件1070、1080可包括至少一個共享高速緩存1896。共享高速緩存 1896a、1896b可分別存儲處理器的一個或多個部件(例如,核1074a、1074b和1084a、1084b) 所利用的數(shù)據(jù)(例如,指令)。例如,共享高速緩存可局部高速緩存在存儲器1032、1034中存 儲的數(shù)據(jù)以供處理器的部件更快速訪問。在一個或多個實施例中,共享高速緩存可包括一 個或多個中級高速緩存,例如2級(L2)、3級(L3)、4級(L4)或其它級高速緩存、最后級高速 緩存(LLC)和/或其組合。
[0036] 盡管僅示出有兩個處理元件1070、1080,要理解本發(fā)明的范圍不這樣受限制。在 其它實施例中,在指定處理器中可存在一個或多個額外處理元件。備選地,處理元件1070、 1080中的一個或多個可以是除處理器以外的元件,例如加速器或現(xiàn)場可編程門陣列。例 如,額外處理元件可包括與第一處理器1070相同的額外處理器、與第一處理器1070異構(gòu)或 不對稱的額外處理器、加速器(例如圖形加速器或數(shù)字信號處理(DSP)單元)、現(xiàn)場可編程門 陣列或任何其它處理元件。從品質(zhì)(其包括架構(gòu)、微架構(gòu)、熱、功耗特性及類似物)的度量譜 方面來看,在處理元件1070U080之間可以存在多種差異。這些差異可使它們自身有效地 表現(xiàn)為處理元件1070、1080之中的不對稱和異構(gòu)性。對于至少一個實施例,各種處理元件 1070、1080可駐存在相同的芯片封裝中。
[0037] 第一處理元件1070可進一步包括存儲器控制器邏輯(MC) 1072和點到點(P-P)接 口 1076和1078。相似地,第二處理元件1080可包括MC 1082和P-P接口 1086和1088。如 在圖4中示出的,MC 1072和1082使處理器耦合于相應的存儲器,即存儲器1032和存儲器 1034,其可以是局部附連到相應處理器的主存儲器的部分。盡管MC邏輯1072和1082圖 示為集成到處理元件1070、1080內(nèi),對于備選實施例,MC邏輯可以是在處理元件1070、1080 外部的分立邏輯,而不是在其中集成。
[0038] 第一處理元件1070和第二處理元件1080可分別經(jīng)由P-P互連1076、1086和1084 耦合于I/O子系統(tǒng)1090。如在圖4中示出的,I/O子系統(tǒng)1090包括P-P接口 1094和1098。 此外,I/O子系統(tǒng)1090包括接口 1092,用于使I/O子系統(tǒng)1090與高性能圖形引擎1038耦 合。在一個實施例中,總線可用于使圖形引擎1038耦合于I/O子系統(tǒng)1090。備選地,點到 點互連1039可使這些部件耦合。
[0039] 進而,I/O子系統(tǒng)1090可經(jīng)由接口 1096耦合于第一總線1016。在一個實施例中, 第一總線1016可以是外圍部件互連(PCI)總線或例如PCI Express總線或另一個第三代 I/O互連總線等總線,但本發(fā)明的范圍不這樣受限制。
[0040] 如在圖4中示出的,各種I/O設(shè)備1014可連同總線橋1018 -起耦合于第一總線 1016,該總線橋1018可使第一總線1016耦合于第二總線1010。在一個實施例中,第二總線 1010可以是低引腳計數(shù)(LPC)總線。各種設(shè)備可耦合于第二總線1010,這些設(shè)備包括例如 鍵盤/鼠標1012、通信設(shè)備1026 (其進而可與計算機網(wǎng)絡503通信)和數(shù)據(jù)存儲單元1019, 例如盤驅(qū)動器或其它大容量存儲設(shè)備,其在一個實施例中可包括代碼1030。代碼1030可 包括用于執(zhí)行上文描述的方法中的一個或多個的實施例的指令,例如,圖2A和/或2B的方 法。此外,音頻I/O 1024可耦合于第二總線1010。
[0041] 注意預想了其它實施例。例如,代替圖4的點到點架構(gòu),系統(tǒng)可實現(xiàn)多點總線或另 一個這樣的通信拓撲。圖4的元件也可備選地使用比在圖4中示出的更多或更少的集成芯 片來分區(qū)。
[0042] 圖5圖示根據(jù)一個實施例的處理器核200。該處理器核200可以是對于任何類型 的處理器(例如微處理器、嵌入式處理器、數(shù)字信號處理器(DSP)、網(wǎng)絡處理器或執(zhí)行代碼的 其它設(shè)備)的核。盡管在圖5中僅圖示一個處理器核200,處理元件可備選地包括不止一個 圖5中圖示的處理器核200。處理器核200可以是單線程核,或?qū)τ谥辽僖粋€實施例,處理 器核200可因為它每核可包括超過一個硬件線程上下文(或"邏輯處理器")而是多線程。
[0043] 圖5還包括存儲器27