專利名稱:用于支持?jǐn)?shù)據(jù)推測式執(zhí)行的微處理器的排程器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)微處理器的領(lǐng)域,尤其有關(guān)微處理器中執(zhí)行的排程作業(yè)。
背景技術(shù):
超純量微處理器藉由同時執(zhí)行多個指令,并使用與其設(shè)計一致的可行的最短時脈周期,而獲致高效能。然而,各指令間的資料相依性及控制流相依性可能限制了在任何特定時間可發(fā)出的指令數(shù)目。因此,某些微處理器支持推測式執(zhí)行(speculative execution),以便獲致額外的效能增益。
其中一種類型的推測是控制流推測。控制流推測預(yù)測程控將進(jìn)行的方向。例如,可利用分支預(yù)測來預(yù)測將采取的一分支??墒褂迷S多類型的分支預(yù)測,其范圍自每次只作相同的預(yù)測的方法至維護(hù)程序中各先前分支的復(fù)雜歷史以便進(jìn)行基于歷史的預(yù)測的方法??山?jīng)由硬件最佳化、編譯器最佳化、或以上兩者來幫助分支預(yù)測。根據(jù)分支預(yù)測機(jī)制,可以推測方式提取及執(zhí)行各指令。當(dāng)最后評估分支指令時,可驗證該分支預(yù)測。如果該預(yù)測是錯誤的,則可使根據(jù)該錯誤的預(yù)測而以推測方式執(zhí)行的任何指令無效。
另一種類型的推測是預(yù)測資料值的資料推測。某些數(shù)據(jù)推測涉及預(yù)測將響應(yīng)一加載指令而提供的值??山逵勺粉欗憫?yīng)存儲指令而存儲的值而執(zhí)行上述的資料推測,而且如果一后續(xù)的加載作業(yè)使用相同的緩存器及(或)位移,而指定一地址如同其中一個先前存儲作業(yè)所使用,則推測地使用先前存儲的值。另一種類型的資料推測,值預(yù)測,是預(yù)測數(shù)據(jù)項的值。值預(yù)測可能涉及檢視資料型樣并根據(jù)這些型樣而進(jìn)行預(yù)測。例如,可檢視一索引計數(shù)器變量的各先前值的遞增或遞減方式,而預(yù)測該變量的值。
另一種類型的資料推測是地址預(yù)測,而地址預(yù)測涉及數(shù)據(jù)位置的預(yù)測。另一種類型的資料推測被稱為內(nèi)存系統(tǒng)樂觀式存取(memorysystem optimism)。在多處理器系統(tǒng)中,當(dāng)一處理器在高速緩存一致性檢查完成之前,即使用來自該處理器的自身高速緩存的數(shù)據(jù)來推測式的執(zhí)行一指令時,即發(fā)生內(nèi)存系統(tǒng)樂觀式存取。同樣地,另一種類型的資料推測可容許下列的情形在執(zhí)行一加載作業(yè)時有而存儲作業(yè)的地址尚未計算出來之前,即推測式執(zhí)行加載作業(yè),縱使該存儲作業(yè)可能將資料存儲到該加載作業(yè)所存取的相同地址。在所有這些類型的資料推測中,最后要評估潛在的狀況,而可證實或取消該推測。如果該推測最后確認(rèn)是錯誤的,則可重新執(zhí)行(諸如利用更新的和(或)非推測的資料)先前使用該推測的數(shù)據(jù)執(zhí)行的指令。
因為推測式執(zhí)行可在無須等候相依性檢查完成的情形下繼續(xù)執(zhí)行,所以如果因正確的推測而得到的效能超過因錯誤的推測而失掉的效能,則可獲致可觀的效能增益。當(dāng)一推測的結(jié)果是錯誤的,即取消以推測方式執(zhí)行的指令,并以非推測方式重新開始執(zhí)行。為了取消推測式執(zhí)行,可記錄每一推測,以便在推測證實是錯誤預(yù)測時可識別以推測方式執(zhí)行的各指令。
推測式執(zhí)行的一個結(jié)果是排程器(在整份說明書中,系將諸如排程器及指令保留區(qū)(reservation station)等的排程裝置整體地稱為“排程器”)在執(zhí)行之后可能無法解除推測式作業(yè)的分配,這是因為若潛在的推測是錯誤的,則需要重新發(fā)出這些作業(yè)。在數(shù)個時脈周期中可能無法作出潛在的推測是否正確的決定,而且可能無法決定為了作出上述決定而要耗用多少的時脈周期。此種不確定性可能將難以確定自排程器解除作業(yè)的時機(jī)。因此,排程器的資料項可能在比所需要還長的一段時間中保持被分配給推測式作業(yè),而造成了排程器中空間的浪費(fèi)。
發(fā)明內(nèi)容
本發(fā)明揭示在微處理器中多種排程作業(yè)的方法及系統(tǒng)的實施例。在一實施例中,一微處理器可包含數(shù)個執(zhí)行單元、以及耦合而將作業(yè)發(fā)出到至少一個該等執(zhí)行單元的一排程器。該排程器可包含一具有數(shù)個資料項的作業(yè)存儲單元、以及一排程器控制單元??蓪⒃撟鳂I(yè)存儲單元中的一第一資料項分配給一第一作業(yè)。該第一資料項包含該第一作業(yè)的各操作數(shù)的來源狀態(tài)指示。每一來源狀態(tài)指示系指示該第一作業(yè)的各別操作數(shù)的值是否是推測的。該排程器控制單元的組態(tài)設(shè)定成響應(yīng)接收到一第二作業(yè)的結(jié)果的值是非推測的指示,而更新該第一資料項的其中一個來源狀態(tài)指示,以便指示該第一作業(yè)的操作數(shù)中對應(yīng)的那個操作數(shù)的值是非推測的。
一種方法的實施例可涉及下列步驟一第一來源狀態(tài)指示指示一第一作業(yè)的第一操作數(shù)的值是推測的,其中該第一操作數(shù)是一第二作業(yè)的結(jié)果;響應(yīng)接收到用來指示該第二作業(yè)的結(jié)果的值不是推測的的一第一結(jié)果狀態(tài)指示,而更新該第一來源狀態(tài)指示,以便指示該第一操作數(shù)的該值不是推測的;以及一第二結(jié)果狀態(tài)指示響應(yīng)該第一來源狀態(tài)指示的更新,而指示該第一作業(yè)的結(jié)果的值不是推測的。
一種方法的另一實施例可涉及下列步驟對應(yīng)于一第一分支作業(yè)的第一操作數(shù)的第一來源狀態(tài)指示指示該第一操作數(shù)的值是推測的;接收一第二作業(yè)的結(jié)果的值是非推測的指示,其中該第二作業(yè)的結(jié)果是該第一操作數(shù);響應(yīng)接收到該指示,而更新該第一來源狀態(tài)指示,以便指示該第一操作數(shù)的該值是非推測的;以及將該第一來源狀態(tài)指示更新而指示該第一操作數(shù)是非推測的操作數(shù),延遲響應(yīng)該第一分支作業(yè)結(jié)果的值的指令預(yù)先提取機(jī)制改向以及處理管線的清除,直到第一來源狀態(tài)指示已更新完成指示第一運(yùn)元為非推測。
計算機(jī)系統(tǒng)的一實施例包含一系統(tǒng)內(nèi)存、以及耦合到該系統(tǒng)內(nèi)存的一微處理器。該微處理器可包含數(shù)個執(zhí)行單元、以及耦合而將作業(yè)發(fā)出到至少一個該等執(zhí)行單元的一排程器。該排程器可包含數(shù)個資料項。將一第一資料項分配給一第一作業(yè)。該第一資料項可包含該第一作業(yè)的各操作數(shù)的來源狀態(tài)指示,且每一來源狀態(tài)指示可指示該第一作業(yè)的各別操作數(shù)的值是否是推測的。該排程器的組態(tài)可被設(shè)定成響應(yīng)接收到一第二作業(yè)的結(jié)果的值是非推測的指示,而更新該第一資料項的其中一個來源狀態(tài)指示,以便指示該第一作業(yè)的操作數(shù)中對應(yīng)的那個操作數(shù)的值是非推測的。
若參閱前文中的詳細(xì)說明,并配合下列圖式,將可更易于了解本發(fā)明,這些圖式有第1圖標(biāo)出一微處理器的一實施例。
第2圖是一排程器實施例的方塊圖。
第3圖是操作一微處理器的方法的實施例的流程圖。
第4圖標(biāo)出一計算機(jī)系統(tǒng)的實施例。
第6圖標(biāo)出一計算機(jī)系統(tǒng)的另一實施例。
雖然本發(fā)明易于作出各種修改及替代形式,但是該等圖式中系以舉例方式示出本發(fā)明的一些特定實施例,且已在本文中詳細(xì)說明了這些特定實施例。然而,我們當(dāng)了解,該等圖式及本文對該等圖式的詳細(xì)說明的用意并非將本發(fā)明限制在所揭示的特定形式,相反地,本發(fā)明將涵蓋最后的申請專利范圍所界定的本發(fā)明的精神及范圍內(nèi)的所有修改、等效物、及替代。請注意,各標(biāo)題只是用于組織的目的,且該等標(biāo)題的用意并非在用來限制或詮釋說明或申請專利范圍。此外,請注意,在本申請案的全文中系以容許的意義(亦即有可能、能夠)而非以強(qiáng)制的意義(亦即必須)使用詞語“可能”(“may”)。術(shù)語“包括”(“include”)及其衍生詞語意指“包括但不限于”(“including,but not limited to”)。術(shù)語“被連接”(“connected”)意指“直接地或間接地被連接”,且術(shù)語“被耦合”(“coupled”)意指“直接地或間接地被耦合”。
具體實施例方式
第1圖--微處理器第1圖是一微處理器(100)的實施例的方塊圖。微處理器(100)的組態(tài)設(shè)定成執(zhí)行一系統(tǒng)內(nèi)存(200)中存儲的指令。許多這些指令對系統(tǒng)內(nèi)存(200)中存儲的數(shù)據(jù)執(zhí)行運(yùn)算。請注意,可在實體上將系統(tǒng)內(nèi)存(200)分布到整個計算機(jī)系統(tǒng),且可由一個或多個微處理器(100)存取該系統(tǒng)內(nèi)存(200)。微處理器(100)包含一解除分配資料項機(jī)制,用以響應(yīng)推測式作業(yè)及(或)操作數(shù)變?yōu)榉峭茰y的,而解除對一個或多個排程器(118)的資料項的分配。請注意,在本文的用法中,排程器是將各作業(yè)排程以供執(zhí)行并將各作業(yè)發(fā)出到一個或多個執(zhí)行核心或其它執(zhí)行作業(yè)的構(gòu)件。例如,指令保留區(qū)是排程器的一個例子。
微處理器(100)可包含一指令高速緩存(106)及一數(shù)據(jù)高速緩存(128)。微處理器(100)可包含一被耦合到指令高速緩存(106)的預(yù)先提取單元(108)??蓪⒁慌砂l(fā)單元(104)的組態(tài)設(shè)定成自指令高速緩存(106)接收指令并將作業(yè)派發(fā)到一個或多個排程器(118)??蓪⒁粋€或多個排程器(118)耦合成自派發(fā)單元(104)接收被派發(fā)的作業(yè)并將作業(yè)發(fā)出到一個或多個執(zhí)行核心(124)。執(zhí)行核心(124)可包含一組態(tài)被設(shè)定成執(zhí)行對數(shù)據(jù)高速緩存(128)的存取的加載/存儲單元(126)??蓪⒁粋€或多個執(zhí)行核心(124)產(chǎn)生的結(jié)果輸出到一結(jié)果總線(130)??蓪⑦@些結(jié)果用來作為后續(xù)發(fā)出的指令的操作數(shù)值,且(或)可將這些結(jié)果存儲到緩存器文件(116)??蓪⒁煌诵蓐犃?102)耦合到一個或多個排程器(118)及派發(fā)單元(104)??蓪⒃撏诵蓐犃械慕M態(tài)設(shè)定成決定每一發(fā)出的作業(yè)退休的時機(jī)。在一實施例中,可將微處理器(100)設(shè)計成與x86架構(gòu)兼容。請注意,微處理器(100)亦可包含許多其它的組件。
在派發(fā)單元(104)接收指令之前,指令高速緩存(106)可暫時地存儲這些指令??山?jīng)由預(yù)先提取單元(108)自系統(tǒng)內(nèi)存(200)預(yù)先提取指令碼,而將指令碼提供給指令高速緩存(106)??梢远喾N組態(tài)(例如組關(guān)系型、完全關(guān)系型、或直接對映式)來實施指令高速緩存(106)。
預(yù)先提取單元(108)可自系統(tǒng)內(nèi)存(200)預(yù)先提取指令碼,以便存儲在指令高速緩存(106)內(nèi)。在一實施例中,可將預(yù)先提取單元(108)的組態(tài)設(shè)定成將來自系統(tǒng)內(nèi)存(200)的指令碼以整段方式傳送到指令高速緩存(106)。預(yù)先提取單元(108)可采用各種特定的指令碼預(yù)先提取技術(shù)及算法。
派發(fā)單元(104)可輸出其中包括執(zhí)行核心(124)可執(zhí)行的經(jīng)位編碼的作業(yè)以及操作數(shù)地址信息、立即資料、及(或)位移資料等的信號。在某些實施例中,派發(fā)單元(104)可包含譯碼電路(圖中未示出),用以將某些指令譯碼成可在一個或多個執(zhí)行核心(124)內(nèi)執(zhí)行的作業(yè)。簡單的指令可對應(yīng)于單一的作業(yè)。在某些實施例中,更復(fù)雜的指令可對應(yīng)于多個作業(yè)。在將一涉及一緩存器的更新的作業(yè)譯碼后,可保留緩存器文件(116)內(nèi)的一緩存器位置,以便存儲推測式緩存器狀態(tài)(在一替代實施例中,可使用一重新排序緩沖區(qū)來存儲每一緩存器的一個或多個推測式緩存器狀態(tài))。一緩存器對映表(134)可將來源及目標(biāo)操作數(shù)的邏輯緩存器名稱轉(zhuǎn)換為實體緩存器名稱,以便協(xié)助緩存器更名。緩存器對映表(134)可追蹤緩存器文件(116)內(nèi)的哪些緩存器目前被分配及解除分配。
第1圖所示的微處理器(100)支持非循序執(zhí)行。退休隊列(102)可追蹤緩存器讀取及寫入作業(yè)的原始程序順序,而可進(jìn)行推測式指令執(zhí)行及分支錯誤預(yù)測回復(fù),并有助于精確的異常狀況處理。在某些實施例中,退休隊列(102)亦可提供推測式緩存器狀態(tài)的資料值存儲,而支持緩存器更名。在許多實施例中,退休隊列(102)可以類似于一重新排序緩沖區(qū)的方式工作。然而,與一典型的重新排序緩沖區(qū)不同,退休隊列(102)可能無法提供任何的資料值存儲。在某些實施例中,可以一種先進(jìn)先出的組態(tài)來實施退休隊列(102),在此種組態(tài)中,當(dāng)確認(rèn)了作業(yè)為有效時,即將該等作業(yè)移到緩沖區(qū)的“底部”,因而將該隊列的“頂部”的空間讓給新的資料項。當(dāng)作業(yè)退休時,退休隊列(102)可將緩存器文件(116)中不再需要存儲推測式緩存器狀態(tài)的各緩存器解除分配,并將用來指示哪些緩存器目前已空出來的信號提供給緩存器對映表(134)。維護(hù)緩存器文件(116)內(nèi)(或者在一替代實施例中系在一重新排序緩沖區(qū)內(nèi))的推測式緩存器狀態(tài),直到產(chǎn)生這些狀態(tài)的作業(yè)被確認(rèn)為有效為止,而如果一分支預(yù)測是錯誤的,則可在緩存器文件(116)中使沿著一錯誤預(yù)測的路徑執(zhí)行推測式作業(yè)的結(jié)果無效。
在將一特定的作業(yè)譯碼時,如果一必須的操作數(shù)是一緩存器位置,則可將緩存器地址信息傳送到緩存器對映表(134)(或一重新排序緩沖區(qū))。例如,在x86架構(gòu)中,共有8個32位邏輯緩存器(例如,EAX、EBX、ECX、EDX、EBP、ESI、EDI、及ESP)。實體緩存器文件(116)(或一重新排序緩沖區(qū))包含用于改變這些邏輯緩存器內(nèi)容的結(jié)果的存儲空間,因而容許非循序執(zhí)行。可分配緩存器文件(116)中的一實體緩存器,以便存儲每一作業(yè)的結(jié)果,而于將該作業(yè)譯碼時,即決定要修改其中一個實體緩存器的內(nèi)容。因此,在一特定程序執(zhí)行期間的各點上,緩存器文件(116)(或者在替代實施例中為一重新排序緩沖區(qū))可以有一個或多個存放了一特定邏輯緩存器的推測式執(zhí)行內(nèi)容的緩存器。
緩存器對映表(134)可將一實體緩存器指定給規(guī)定為一作業(yè)的目標(biāo)操作數(shù)的特定邏輯緩存器。派發(fā)單元(104)可決定緩存器文件(116)具有一個或多個先前被分配的實體緩存器,且該等實體緩存器指定給在一特定作業(yè)中規(guī)定為一來源操作數(shù)的一邏輯緩存器。緩存器對映表(134)可將一標(biāo)記提供給最近被指定給該邏輯緩存器的實體緩存器??衫迷摌?biāo)記來存取緩存器文件(116)中的操作數(shù)的資料值,或者可利用該標(biāo)記來接收經(jīng)由結(jié)果總線(130)而傳送的結(jié)果的資料值。如果該操作數(shù)對應(yīng)于一記憶位置,則可經(jīng)由加載/存儲單元(126)而在結(jié)果總線上提供操作數(shù)值(以供結(jié)果轉(zhuǎn)送及(或)存儲在緩存器文件(116)中)。當(dāng)其中一個排程器(118)發(fā)出作業(yè)時,可將操作數(shù)資料值提供給一個或多個執(zhí)行核心(124)。請注意,在替代實施例中,于配發(fā)一作業(yè)時,可將操作數(shù)值提供給一對應(yīng)的排程器(118)(而不是于發(fā)出該作業(yè)時將操作數(shù)值提供給一對應(yīng)的執(zhí)行核心(124))。
可將派發(fā)單元(104)的輸出端上提供的經(jīng)位編碼的作業(yè)及立即運(yùn)算資料傳送到一個或多個排程器(118)。請注意,在本文的用法中,排程器是一種偵測各作業(yè)已準(zhǔn)備好可執(zhí)行的時機(jī)并將已準(zhǔn)備好的作業(yè)發(fā)出到一個或多個執(zhí)行單元的裝置。例如,指令保留區(qū)是一種排程器。每一排程器(118)可存放正在等候?qū)l(fā)出到執(zhí)行核心(124)的數(shù)個待處理的作業(yè)的作業(yè)信息(例如經(jīng)位編碼的執(zhí)行位、以及操作數(shù)值、操作數(shù)標(biāo)記、及(或)立即運(yùn)算數(shù)據(jù))。在某些實施例中,每一排程器可以不提供操作數(shù)值的存儲空間。每一排程器可代的以監(jiān)視發(fā)出的作業(yè)以及緩存器文件(116)中可得到的結(jié)果,以便決定一個或多個執(zhí)行核心(124)何時可(自緩存器文件(116)或結(jié)果總線(130))讀取操作數(shù)值。在某些實施例中,可使每一排程器(118)與一專用的執(zhí)行核心(124)相關(guān)聯(lián)。在其它的實施例中,單一的排程器(118)可將作業(yè)發(fā)出到一個以上的執(zhí)行核心(124)。
可提供排程器(118)(或?qū)⒆鳂I(yè)排程以供執(zhí)行的其它裝置),以便暫時性地存儲一個或多個執(zhí)行核心(124)將要執(zhí)行的作業(yè)信息。如前文所述,每一排程器(118)可存儲待處理的作業(yè)的作業(yè)信息。此外,每一排程器可存儲已經(jīng)被執(zhí)行過但仍然可能再度發(fā)出的作業(yè)的作業(yè)信息。為了響應(yīng)任何必須的一個或多個操作數(shù)的值已及時備妥可供執(zhí)行,而將作業(yè)發(fā)出到一個或多個執(zhí)行核心(124)以供執(zhí)行。因此,各作業(yè)執(zhí)行的順序可能與原始程序指令序列的順序不同??蓪⑸婕百Y料推測的各作業(yè)保留在一個或多個排程器(118)中,直到該等作業(yè)變?yōu)榉峭茰y的為止,因而如果資料推測是錯誤的,則可重新發(fā)出該等作業(yè)。
在一實施例中,每一執(zhí)行核心(124)可包含組態(tài)被設(shè)定成執(zhí)行加法及減法的整數(shù)算術(shù)運(yùn)算、以及移位、旋轉(zhuǎn)、邏輯作業(yè)、及分支作業(yè)的若干組成部分。亦可包含一浮點單元,以便提供浮點運(yùn)算。可將一個或多個執(zhí)行核心(124)的組態(tài)設(shè)定成為執(zhí)行地址產(chǎn)生,該地址產(chǎn)生系用于加載/存儲單元(126)執(zhí)行加載及存儲內(nèi)存作業(yè)。
該等一個或多個執(zhí)行核心(124)亦可將與條件分支指令的執(zhí)行有關(guān)的信息提供給分支預(yù)測單元(132)。如果來自執(zhí)行核心(124)的信息指示一分支預(yù)測是錯誤的,則分支預(yù)測單元(132)可清除已進(jìn)入指令處理管線且系在該錯誤預(yù)測的分支之后的各指令,并使預(yù)先提取單元(108)的提取方向改向。被改向的預(yù)先提取單元(108)然后可開始自指令高速緩存(106)或系統(tǒng)內(nèi)存(200)提取一組正確的指令。在此種情形中,可舍棄原始指令序列中在該錯誤預(yù)測的分支指令之后發(fā)生的指令的結(jié)果,其中包括以推測方式執(zhí)行且系暫時性地存儲在加載/存儲單元(126)及(或)緩存器文件(116)中的那些指令的結(jié)果。
如果一分支指令的任何操作數(shù)是推測的(例如,如將于下文中說明的,因為已對產(chǎn)生該分支指令的其中一個操作數(shù)的作業(yè)執(zhí)行了資料推測,而發(fā)生上述的情形),則該分支指令的結(jié)果將是推測的。在某些實施例中,可利用分支指令的推測式結(jié)果來決定是否錯誤預(yù)測了分支作業(yè)。如果該推測式結(jié)果指示一分支指令被錯誤預(yù)測了,則分支預(yù)測單元(132)可使預(yù)先提取單元(108)的提取方向改向,并清除指令處理管線。然而,在其它的實施例中,可將分支預(yù)測單元(132)的組態(tài)設(shè)定成等候到分支作業(yè)的結(jié)果變?yōu)榉峭茰y的,然后才使預(yù)先提取單元(108)的提取方向改向,并清除處理管線。如果分支作業(yè)的推測式結(jié)果證實是錯誤的,則上述的方式可造成較少的提取改向及管線清除。
如果正在更新一緩存器值,則可將一個或多個執(zhí)行核心(124)內(nèi)的各組成部分所產(chǎn)生的結(jié)果經(jīng)由結(jié)果總線(130)而輸出到緩存器文件(116)。如果正在改變一記憶位置的內(nèi)容,則可將一個或多個執(zhí)行核心(124)內(nèi)產(chǎn)生的結(jié)果提供給加載/存儲單元(126)。
加載/存儲單元(126)提供了一個或多個執(zhí)行核心(124)與資料高速緩存(128)間的一接口。在一實施例中,可將加載/存儲單元(126)的組態(tài)設(shè)定成具有一加載/存儲緩沖區(qū),該加載/存儲緩沖區(qū)具有數(shù)個存儲位置,用于存放待處理的加載或存儲作業(yè)的資料及地址信息。加載/存儲單元(126)亦可執(zhí)行加載指令對待處理的存儲指令之間的相依性檢查,以便確保維持了資料的一致性。
數(shù)據(jù)高速緩存(128)是一種為了暫時性地存儲在加載/存儲單元(126)與系統(tǒng)內(nèi)存(200)之間轉(zhuǎn)移的數(shù)據(jù)而提供的高速緩存。如同前文所述的指令高速緩存(106),可以各種特定內(nèi)存組態(tài)來實施資料高速緩存(128),包括一組關(guān)系型的組態(tài)。此外,在某些實施例中,可以統(tǒng)一高速緩存的方式來實施資料高速緩存(128)及指令高速緩存(106)。
第1圖所示微處理器(100)中產(chǎn)生的資料值可包括推測狀態(tài)指示。每一推測狀態(tài)指示可指示一相關(guān)聯(lián)的資料值是否為推測的。例如,緩存器文件(116)中存儲的資料值可分別具有一相關(guān)聯(lián)的推測狀態(tài)指示,亦可將該推測狀態(tài)指示存儲在緩存器文件(116)及(或)緩存器對映表(134)中。同樣地,執(zhí)行核心(124)所產(chǎn)生的資料值可分別具有一相關(guān)聯(lián)的推測狀態(tài)指示,且可自執(zhí)行核心(124)輸出推測狀態(tài)指示以及相關(guān)聯(lián)的資料值,且(或)可將該推測狀態(tài)指示以及用來識別該資料值的一標(biāo)記輸出到標(biāo)記總線。在一實施例中,可存儲推測狀態(tài)指示以及緩存器對映表(134)中識別的每一實體緩存器??山?jīng)由標(biāo)記總線而傳送推測狀態(tài)指示及標(biāo)記,其中該等標(biāo)記系用來識別與該等推測狀態(tài)指示相關(guān)聯(lián)的實體緩存器??商娲貙⑼茰y狀態(tài)指示以及與該等推測狀態(tài)指示相關(guān)聯(lián)的資料值傳送至結(jié)果總線。
如本說明書所述,如果一資料值有被重新計算的可能性,則該資料值是推測的。如果一資料值是已執(zhí)行了某一資料推測的作業(yè)的結(jié)果(例如,如果在派發(fā)單元(104)中預(yù)測了該作業(yè)的結(jié)果),或者如果一資料值取決于可能被重新計算的另一資料值(例如,一資料值是使用一個或多個推測的操作數(shù)來執(zhí)行的作業(yè)的結(jié)果),則可能重新計算該資料值。推測狀態(tài)指示是用來指示一操作數(shù)或一作業(yè)是推測的一種方式的其中一個例子。
在一實施例中,推測狀態(tài)指示可以是單一的狀態(tài)位,而如果相關(guān)聯(lián)的資料值是推測的,則設(shè)定該狀態(tài)位,否則清除該狀態(tài)位??蓪?zhí)行核心(124)的組態(tài)設(shè)定成如果用來產(chǎn)生一資料值的任何操作數(shù)是推測的,則設(shè)定對該資料值的推測狀態(tài)指示??蓪⒓虞d/存儲單元(126)的組態(tài)設(shè)定成設(shè)定與資料值相關(guān)聯(lián)的推測狀態(tài)指示,以便指示該資料值是否為推測的(例如,如果容許加載作業(yè)將未經(jīng)過計算的地址傳送給存儲作業(yè),則所得到的資料值可能是推測的)。同樣地,當(dāng)將(諸如緩存器文件(116)中的)存儲位置分配成存儲作業(yè)的結(jié)果時,如果該作業(yè)的任何操作數(shù)是推測的,或者如果該作業(yè)本身是推測的,則可設(shè)定該存儲位置中的推測狀態(tài)指示。例如,如果將存儲位置分配給加載作業(yè)的結(jié)果,則因為該加載作業(yè)可能未命中資料高速緩存(128),或者該加載作業(yè)將未經(jīng)計算的地址傳送給存儲作業(yè),所以可設(shè)定該加載作業(yè)的結(jié)果的推測狀態(tài)指示。如果利用緩存器對映表(134)來追蹤推測式緩存器狀態(tài),則緩存器文件(116)中對映到相同邏輯緩存器的實體緩存器可以有不同的推測狀態(tài)指示。
如果在將作業(yè)派發(fā)到排程器(118)之前,先對該作業(yè)執(zhí)行資料預(yù)測及(或)值預(yù)測,則該作業(yè)是推測的。例如,某些作業(yè)經(jīng)常可能產(chǎn)生相同的結(jié)果。可將這些結(jié)果存儲在一查詢表中。當(dāng)在派發(fā)單元(104)中處理這些作業(yè)中的一個作業(yè)時,可以利用該查詢表而以推測方式產(chǎn)生該作業(yè)的結(jié)果,并將該結(jié)果存儲在緩存器文件(116)內(nèi)分配給存儲該作業(yè)的結(jié)果的緩存器(或一重新排序緩沖區(qū)內(nèi)的存儲位置)中。因為該結(jié)果是推測的,所以亦可設(shè)定該結(jié)果的推測狀態(tài)指示,以便指示該結(jié)果是推測的。當(dāng)執(zhí)行該作業(yè)時,可將該作業(yè)的實際結(jié)果與推測式結(jié)果比較,以便決定該推測是否正確。如果該推測是錯誤的,則可以實際結(jié)果取代推測式結(jié)果(例如,藉由在結(jié)果總線上廣播該實際結(jié)果),且可利用該實際結(jié)果而重新發(fā)出已執(zhí)行的且系利用該推測式結(jié)果來計算其結(jié)果的任何作業(yè)。如果該推測是正確的,則可將該結(jié)果不再是推測的結(jié)果的指示提供給排程器(118)及緩存器文件(116)。如將于下文中說明的,每一排程器(118)可為每一作業(yè)維護(hù)一個或多個推測狀態(tài)指示,以便追蹤可能要重新發(fā)出哪些作業(yè),并決定何時可自該排程器移除這些作業(yè)。為了響應(yīng)已正確地完成作業(yè)或操作數(shù)執(zhí)行的推測的指示,每一排程器(118)可更新推測狀態(tài)指示,以便指示作業(yè)及(或)操作數(shù)不再是推測的。
第2圖--排程器第2圖標(biāo)出組態(tài)設(shè)定成重新發(fā)出作業(yè)的排程器(118)的實施例。排程器(118)包含一排程器控制單元(304)及一作業(yè)存儲單元(302)。排程器控制單元(304)可控制作業(yè)存儲單元(302),以便分配及解除分配用于作業(yè)的資料項。當(dāng)派發(fā)單元(104)將作業(yè)派發(fā)到排程器時,排程器控制單元(304)可將作業(yè)存儲單元(302)中的資料項(320)分配給該作業(yè)。該資料項(320)可保持被分配給該作業(yè),直到解決了該作業(yè)或作業(yè)的任何操作數(shù)的推測為止,并已將該推測的結(jié)果(例如該推測的成功或失敗)轉(zhuǎn)送到任何相依的作業(yè)(例如,由該作業(yè)的結(jié)果產(chǎn)生操作數(shù)值的作業(yè))為止。
在某些實施例中,排程器(118)可以是處理器(100)中的數(shù)個排程器(118)的其中之一。在該實施例中,可將每一排程器(118)耦合成將作業(yè)發(fā)出到不同的執(zhí)行核心(124)。可將每一排程器(118)耦合到一組的一個或多個標(biāo)記總線,系經(jīng)由該等標(biāo)記總線而在各排程器之間傳送用來識別發(fā)出的作業(yè)的結(jié)果的標(biāo)記(諸如以供結(jié)果轉(zhuǎn)送及(或)成功訊息轉(zhuǎn)送,其中的情形將于下文中詳細(xì)說明的)。
作業(yè)存儲單元(302)中的每一資料項可包含數(shù)個字段。第2圖所示的例示資料項(320)包含用來存儲譯碼后的作業(yè)的一作業(yè)字段(322)、用來指示作業(yè)本身是否為推測的作業(yè)的一作業(yè)推測狀態(tài)區(qū)位(324)、以及該作業(yè)的每一操作數(shù)用的數(shù)組字段(326至330)。在該例子中,Operand1及Operand2這兩個操作數(shù)各有一組操作數(shù)字段。Operand1的字段是(326A)及(330A),且Operand2的字段是(326B)及(330B)。每一操作數(shù)的字段包括用來存儲該操作數(shù)的標(biāo)記的一標(biāo)記字段(326)、及用來指示該操作數(shù)的值是否為(或是否將為)推測的一來源推測狀態(tài)區(qū)位(330)。該等來源推測狀態(tài)區(qū)位(330)分別存儲諸如推測狀態(tài)位等的來源推測狀態(tài)指示,而如果一對應(yīng)的值是推測的,則設(shè)定該推測狀態(tài)位,否則將清除該推測狀態(tài)位。請注意,在許多實施例中,數(shù)個額外操作數(shù)中的每一操作數(shù)可包含一組操作數(shù)字段。例如,在一實施例中,每一資料項(320)可包含五個操作數(shù)(例如三個緩存器來源及兩個旗標(biāo)來源)的操作數(shù)字段的存儲空間。每一排程器資料項(320)可包含用于每一操作數(shù)的一來源推測狀態(tài)指示。
在某些實施例中,排程器資料項(320)可包含一值字段,而如果系將操作數(shù)值自排程器(118)提供給執(zhí)行核心(124),則值字段存儲每一操作數(shù)的一操作數(shù)值。在此種實施例中,如果已經(jīng)可取得(諸如自緩存器文件(116)或重新排序緩沖區(qū))該等操作數(shù)值,或者當(dāng)該等操作數(shù)值變?yōu)榭扇〉脮r(例如,該等操作數(shù)值在結(jié)果總線(130)上),則在派發(fā)作業(yè)時,可將該等操作數(shù)值存儲到作業(yè)的資料項(320)。請注意,其它的實施例可以不在每一排程器資料項(320)中包含此種值字段。
于派發(fā)時,可將用來識別作業(yè)的操作數(shù)的標(biāo)記存儲在該作業(yè)的資料項(320)中。如果尚無法取得操作數(shù)值,則可使用該操作數(shù)的標(biāo)記來識別將因待處理的作業(yè)產(chǎn)生的該操作數(shù)值。例如,當(dāng)將產(chǎn)生該操作數(shù)值的作業(yè)發(fā)出到執(zhí)行核心(124)時,發(fā)出的排程器(118)可在標(biāo)記總線(340)上輸出該操作數(shù)的標(biāo)記。排程器控制單元(304)可將標(biāo)記總線(340)上的該等標(biāo)記與作業(yè)存儲單元(302)內(nèi)所分配的各數(shù)據(jù)項中的操作數(shù)標(biāo)記比較。如果標(biāo)記總線(340)上的一標(biāo)記與一操作數(shù)標(biāo)記符合,則排程器控制單元(304)可決定于某一數(shù)目的時脈周期之后將可在結(jié)果總線(130)上取得該標(biāo)記所識別的操作數(shù)值。
當(dāng)將一作業(yè)派發(fā)到排程器(118)時,可將來源推測狀態(tài)指示(330)存儲在作業(yè)存儲單元(302)中的該作業(yè)的資料項(320)中。如果在被分配給存放操作數(shù)值的緩存器或其它存儲位置中設(shè)定了一推測狀態(tài)指示(或者如果設(shè)定了與緩存器對映表中識別的特定緩存器相關(guān)聯(lián)的推測狀態(tài)指示),則在該作業(yè)的資料項(320)中設(shè)定該操作數(shù)的來源推測狀態(tài)指示。同樣地,如果已對作業(yè)本身執(zhí)行了任何資料推測或值推測,則可設(shè)定作業(yè)推測狀態(tài)指示(324)(例如,當(dāng)派發(fā)相關(guān)聯(lián)的作業(yè)時,派發(fā)單元(104)可將作業(yè)推測狀態(tài)指示提供給排程器(118))。
當(dāng)將一作業(yè)派發(fā)到排程器(118)時,派發(fā)單元(104)可分配緩存器或存儲位置,用以存儲該作業(yè)的結(jié)果。如果應(yīng)設(shè)定該作業(yè)的任何來源狀態(tài)指示(330),或者如果應(yīng)設(shè)定作業(yè)狀態(tài)指示(324),則亦可設(shè)定與分配給該作業(yè)結(jié)果的緩存器或存儲位置相關(guān)聯(lián)的推測狀態(tài)指示??蓪⑴c各結(jié)果存儲位置相關(guān)聯(lián)的推測狀態(tài)指示存儲在重新排序緩沖區(qū)、緩存器文件、及(或)緩存器對映表中。該等推測狀態(tài)指示可用來將每一操作數(shù)的推測狀態(tài)傳播到整個相依性煉。
排程器控制單元(304)可選擇將作業(yè)存儲單元(302)中的資料項所存儲的作業(yè)發(fā)出到執(zhí)行核心(124),以供執(zhí)行。排程器控制單元(304)可選擇可(諸如自緩存器文件(116))取得操作數(shù)值的作業(yè),或者可選擇如標(biāo)記總線(340)上的標(biāo)記所指示的將可于某一數(shù)目的時脈周期內(nèi)在結(jié)果總線(130)上取得操作數(shù)值的作業(yè)。可根據(jù)是否可取得作業(yè)的操作數(shù)(在有操作數(shù)的情形下)、以及作業(yè)的相對存在時間(例如,可將優(yōu)先權(quán)給予等候發(fā)出較久的作業(yè)、及(或)在程序順序中發(fā)生得較早的作業(yè)),而選擇該等作業(yè)。每一資料項可具有一相關(guān)聯(lián)的準(zhǔn)備就緒指示,用以指示該資料項是否已準(zhǔn)備好而可被發(fā)出。在許多實施例中,本身不是推測式作業(yè)的作業(yè)及并無任何推測的操作數(shù)值的作業(yè)的優(yōu)先級可高于推測式作業(yè)及具有推測的操作數(shù)值的作業(yè)。
當(dāng)所執(zhí)行的作業(yè)的作業(yè)推測狀態(tài)及來源推測狀態(tài)為清除時,排程器控制單元(304)可將分配給作業(yè)的資料項解除分配。然而,當(dāng)執(zhí)行推測式作業(yè)及(或)其操作數(shù)具有推測的值的作業(yè)時,并不將分配給該等作業(yè)的資料項解除分配。若保留作業(yè)存儲單元(302)中分配的該等資料項,則在推測證實是錯誤的情形下,可讓排程器控制單元(304)重新發(fā)出該等作業(yè)。因為已設(shè)定來源推測狀態(tài)指示(330)而可在排程器內(nèi)清楚地識別與推測式作業(yè)相依的各作業(yè),所以亦可在作業(yè)存儲單元(302)內(nèi)保留分配給各相依作業(yè)的資料項。此種方式可響應(yīng)一錯誤的推測被偵測到,而重新執(zhí)行該相依煉中的該等作業(yè)。
當(dāng)推測解決時,排程器控制單元(304)更新作業(yè)存儲單元(302)中的每一資料項(320)中的作業(yè)推測狀態(tài)指示(324)及來源推測狀態(tài)指示(330)(例如,每當(dāng)正確地解決一推測時,藉由清除適當(dāng)?shù)膩碓礌顟B(tài)指示(330)及(或)作業(yè)狀態(tài)指示(324),而進(jìn)行更新)。在此種方式下,當(dāng)來源狀態(tài)指示(330)及作業(yè)狀態(tài)指示(324)指示將不會重新發(fā)出一資料項(320)的作業(yè)時(例如,當(dāng)該資料項的來源狀態(tài)指示及作業(yè)狀態(tài)指示被清除時),即可將該資料項(320)解除分配。當(dāng)解決一作業(yè)的推測時,排程器控制單元(304)可清除該作業(yè)的作業(yè)狀態(tài)指示。排程器控制單元(304)是用來更新推測狀態(tài)指示的一種裝置的一個例子。
如果該作業(yè)的作業(yè)推測狀態(tài)指示(324)及來源推測狀態(tài)指示(330)被清除,則排程器控制單元(304)可重新選擇發(fā)出的作業(yè),這是因為該等狀態(tài)指示被清除指示了已正確地解決了該作業(yè)及其操作數(shù)的任何資料推測及值推測。一旦已正確地解決了該作業(yè)的推測之后,該作業(yè)的結(jié)果就不再是推測的。排程器控制單元(304)重新選擇該發(fā)出的作業(yè),以便將該作業(yè)結(jié)果的成功轉(zhuǎn)送到各相依的作業(yè),且可將該成功的指示存儲在同一排程器(118)中的作業(yè)存儲單元(302)中,或存儲在微處理器內(nèi)的不同的排程器中。排程器控制單元(304)響應(yīng)接收到作業(yè)的推測式結(jié)果是成功的(亦即不是推測的)指示,而可更新存儲單元(302)中的來源推測狀態(tài)指示,該等來源推測狀態(tài)指示系指示該作業(yè)所產(chǎn)生的結(jié)果操作數(shù)不再是推測的。
在某些實施例中,可利用結(jié)果轉(zhuǎn)送時所用的標(biāo)記總線來轉(zhuǎn)送作業(yè)結(jié)果的成功訊息。例如,當(dāng)排程器控制單元(304)選擇已解決了作業(yè)推測及(或)操作數(shù)值推測的發(fā)出的作業(yè)時,可輸出與該作業(yè)的結(jié)果對應(yīng)的各標(biāo)記至標(biāo)記總線(340)、以及一個指示用于指示正在輸出的該等標(biāo)記系為該作業(yè)所產(chǎn)生的各操作數(shù)清除來源推測狀態(tài)指示(330)。在某些實施例中,于轉(zhuǎn)送成功訊息期間,可使用于結(jié)果轉(zhuǎn)送期間用來決定正在產(chǎn)生哪些作業(yè)的操作數(shù)值的(諸如排程器控制單元(304)中的)相同的標(biāo)記比較器。成功訊息若被轉(zhuǎn)送的作業(yè)可能因成功訊息的轉(zhuǎn)送而不會被重新執(zhí)行,且因而轉(zhuǎn)送成功訊息所耗用的時間可能短于結(jié)果轉(zhuǎn)送所耗用的時間(系取決于該作業(yè)的執(zhí)行時間)。成功訊息轉(zhuǎn)送亦可清除與分配用來存儲作業(yè)結(jié)果的存儲位置或緩存器相關(guān)聯(lián)的(諸如存儲在緩存器文件、重新排序緩沖區(qū)、或緩存器對映表的)推測狀態(tài)指示,因而后續(xù)被派發(fā)的作業(yè)得知該作業(yè)的結(jié)果不是推測的。
在替代實施例中,可將一組不同的標(biāo)記總線及標(biāo)記比較器用于成功訊息轉(zhuǎn)送(而不是使用結(jié)果轉(zhuǎn)送所用的相同標(biāo)記總線)。在將一組不同的標(biāo)記總線及標(biāo)記比較器用于成功訊息轉(zhuǎn)送的實施例中,在選擇另一作業(yè)進(jìn)行成功訊息轉(zhuǎn)送的相同時脈周期中,排程器(118)可選擇一作業(yè)以供執(zhí)行。
在將相同的標(biāo)記總線(340)用于結(jié)果轉(zhuǎn)送以及成功訊息轉(zhuǎn)送的實施例中,排程器控制單元(304)可將優(yōu)先權(quán)授予在自作業(yè)存儲單元(302)選擇作業(yè)時尚未被發(fā)出的作業(yè)。例如,當(dāng)沒有未被發(fā)出的作業(yè)準(zhǔn)備好可供選擇時,排程器控制單元(304)可選擇已發(fā)出的作業(yè)進(jìn)行成功訊息轉(zhuǎn)送。當(dāng)選擇一作業(yè)進(jìn)行成功訊息轉(zhuǎn)送時,可將該作業(yè)的資料項解除分配(亦即,可自排程器移除該作業(yè))。在其它的實施例中,可在轉(zhuǎn)送各作業(yè)的成功訊息的一段時間后,自排程器移除該等作業(yè)。在此種實施例中,每一資料項可有一相關(guān)聯(lián)的成功轉(zhuǎn)送指示,用以指示是否已選擇一資料項,該資料項的成功訊息被轉(zhuǎn)送,因而不會選擇相同的作業(yè)進(jìn)行一次以上成功訊息轉(zhuǎn)送。
亦可將排程器控制單元(304)的組態(tài)設(shè)定成偵測與加載/存儲單元(126)輸出的資料值相關(guān)聯(lián)的推測狀態(tài)指示,以便滿足一加載作業(yè)。排程器控制單元(304)可使用這些推測狀態(tài)指示,以更新那些依賴加載作業(yè)的作業(yè)的來源推測狀態(tài)指示(330)。如果該加載作業(yè)的任何推測最后為錯誤的,則可利用正確的資料值而重新發(fā)出各相依的作業(yè)。亦可響應(yīng)與加載/存儲單元(126)輸出的資料相關(guān)聯(lián)的推測狀態(tài)指示,而更新與被分配用來存儲該資料值的緩存器及(或)存儲位置相關(guān)聯(lián)的(諸如存儲在重新排序緩沖區(qū)、緩存器文件、或緩存器對映表的)推測狀態(tài)指示。
當(dāng)解決了分支指令為推測或分支指令的操作數(shù)值為推測時,成功訊息轉(zhuǎn)送可能涉及排程器(118)將該成功指示傳送到分支預(yù)測單元(132)。在某些實施例中,可將分支指令的推測式結(jié)果轉(zhuǎn)送到分支預(yù)測單元。在某些實施例中,分支預(yù)測單元(132)可根據(jù)分支指令的推測式結(jié)果使預(yù)先提取單元(108)的提取方向改向,并而清除處理管線。在其它的實施例中,分支預(yù)測單元(132)可將使預(yù)先提取單元(108)的提取方向改向及清除處理管線延遲到分支指令變?yōu)榉峭茰y的為止。因此,如有需要,則分支預(yù)測單元(132)可等候到涉及分支指令的推測的成功,然后才使預(yù)先提取單元(108)的提取方向改向并清除處理管線。在某些實施例中,當(dāng)排程器控制單元(304)選擇分支指令進(jìn)行成功訊息轉(zhuǎn)送時,可轉(zhuǎn)送該分支指令的推測的成功訊息。在其它的實施例中,可將分支預(yù)測單元(132)的組態(tài)設(shè)定成當(dāng)該分支指令的來源推測狀態(tài)指示及(或)作業(yè)推測狀態(tài)指示被清除時,即立刻使用該分支指令的結(jié)果,而無須等候到排程器控制單元(304)選擇該分支指令進(jìn)行成功訊息轉(zhuǎn)送。因此,在某些實施例中,當(dāng)成功地解決分支作業(yè)時,即可進(jìn)行分支改向。
如果在發(fā)出作業(yè)之前,正確地解決了該作業(yè)的推測及(或)該作業(yè)的操作數(shù)值的推測,則當(dāng)排程器控制單元(304)選擇該作業(yè)并將該作業(yè)發(fā)出到一功能單元(212)時,可清除該作業(yè)的作業(yè)推測狀態(tài)指示(324)及來源推測狀態(tài)指示(330)。因此,功能單元(212)所產(chǎn)生的資料可以有一告知該作業(yè)的結(jié)果不是推測的結(jié)果的相關(guān)聯(lián)的指示(例如輸出于標(biāo)記總線上或包含于資料本身)。排程器控制單元(304)可接收該指示,并利用該指示來更新被分配給各相依的作業(yè)的各資料項中的來源推測狀態(tài)指示。亦可利用來自功能單元(212)輸出的資料相關(guān)聯(lián)的指示來更新與分配用來存儲作業(yè)結(jié)果的緩存器或存儲位置相關(guān)聯(lián)的(諸如存儲在緩存器文件、重新排序緩沖區(qū)、或緩存器對映表的)推測狀態(tài)指示。
請注意,在某些實施例中,系追蹤推測式作業(yè)及操作數(shù),并將各資料值的推測狀態(tài)傳送到各相依的作業(yè),因而可在作業(yè)變成排程器中最久的未退休作業(yè)之前,即自該排程器移除該等作業(yè)。此種方式可以比其它分配方式更快速地將排程器(118)中的各資料項分配給新的作業(yè)。
第3圖標(biāo)出操作一支持?jǐn)?shù)據(jù)推測及值推測的微處理器的一種方法的一實施例。在步驟(350)中,將排程器中的資料項分配給作業(yè)。如果該作業(yè)本身是推測的,則可在步驟(352)中設(shè)定該資料項中的作業(yè)推測狀態(tài)指示。同樣地,如步驟(352)所示,可針對具有推測的值的任何操作數(shù)而設(shè)定該資料項中的來源推測狀態(tài)指示。如步驟(354至356)所示,如果接收到已正確地解決了作業(yè)或操作數(shù)值的推測的指示,則可清除適當(dāng)?shù)淖鳂I(yè)推測狀態(tài)指示或來源推測狀態(tài)指示??赡芤蜣D(zhuǎn)送先前作業(yè)的成功訊息,而接收到該指示。如步驟(358至360)所示,如果所有的來源推測狀態(tài)指示及作業(yè)推測狀態(tài)指示都被清除,而指示已正確地解決了所有的推測,則可轉(zhuǎn)送該作業(yè)的結(jié)果不是推測的結(jié)果的一指示。該指示可讓排程器針對各相依的作業(yè)而更新來源推測狀態(tài)指示,并經(jīng)由相依煉而傳送該推測的成功訊息。如步驟(362)所示,亦可將該排程器中的該作業(yè)的資料項解除分配,因而可將該資料項重新分配給一個新的作業(yè)。
第4圖--計算機(jī)系統(tǒng)第4圖標(biāo)出一計算機(jī)系統(tǒng)(400)的一實施例的一方塊圖,該計算機(jī)系統(tǒng)(400)包含一處理器(100),該處理器(100)系經(jīng)由一總線橋接器(402)而耦合到各種系統(tǒng)組件。處理器(100)可包含前文所述的一排程器(118)的一實施例。計算機(jī)系統(tǒng)的其它實施例也是可行的,且可考慮采用。在所示的系統(tǒng)中,一主存儲器(200)系經(jīng)由一內(nèi)存總線(406)而耦合到總線橋接器(402),且一圖形控制器(408)系經(jīng)由一AGP總線(410)而耦合到總線橋接器(402)。數(shù)個PCI裝置(412A至412B)系經(jīng)由一PCI總線(414)而耦合到總線橋接器(402)。亦可設(shè)有一輔助總線橋接器(416),以便經(jīng)由一EISA/ISA總線(420)而提供一個或多個EISA或ISA裝置(418)的電氣接口。在該例子中,處理器(100)系經(jīng)由一CPU總線(424)而耦合到總線橋接器(402),以及一非必須的L2高速緩存(428)。在某些實施例中,處理器(100)可包含一整合式L1高速緩存(圖中未示出)。
總線橋接器(402)提供了處理器(100)、主存儲器(200)、圖形控制器(408)、與連接到PCI總線(414)的各裝置間的接口。當(dāng)自連接到總線橋接器(402)的其中一個裝置接收到作業(yè)時,總線橋接器(402)即識別該作業(yè)的目標(biāo)(例如,該目標(biāo)是一特定的裝置,或者在PCI總線(414)的情形中,該目標(biāo)是在PCI總線(414)上)??偩€橋接器(402)將該作業(yè)傳送到目標(biāo)裝置。總線橋接器(402)通常將作業(yè)自來源裝置或總線所用的協(xié)議轉(zhuǎn)換為目標(biāo)裝置或總線所用的協(xié)議。
輔助總線橋接器(416)除了將EISA/ISA總線接口提供給PCI總線(414)之外,還包含了額外的功能。亦可在計算機(jī)系統(tǒng)(400)內(nèi)設(shè)有在輔助總線橋接器(416)外部或與輔助總線橋接器(416)整合的一輸入/輸出控制器(圖中未示出),以便將作業(yè)支持提供給鍵盤及鼠標(biāo)(422)、以及各種序列及并行端口。在其它的實施例中,亦可在處理器(100)與總線橋接器(402)之間將一外部高速緩存單元(圖中未示出)耦合到CPU總線(424)。在替代實施例中,可將該外部高速緩存耦合到總線橋接器(402),且可將該外部高速緩存的高速緩存控制邏輯電路整合到總線橋接器(402)中。在處理器(100)的后端組態(tài)中示出L2高速緩存(428)。請注意,L2高速緩存(428)可與處理器(100)分離,L2高速緩存(428)可連同處理器(100)而被整合到一卡匣中(例如,slot 1或slot A架構(gòu)),甚至可將L2高速緩存(428)連同微處理器(100)整合到一半導(dǎo)體基材中。
主存儲器(200)是用來存儲應(yīng)用程序且處理器(100)執(zhí)行時所主要使用的一內(nèi)存。適當(dāng)?shù)闹鞔鎯ζ?200)包括動態(tài)隨機(jī)存取內(nèi)存(DynamicRandom Access Memory;簡稱DRAM)。例如,復(fù)數(shù)組SDRAM(Synchronous DRAM;簡稱SDRAM)或RambusDRAM(RDRAM)是可適用的。
PCI裝置(412A至412B)是諸如網(wǎng)絡(luò)適配卡、影像加速器、聲卡、硬盤機(jī)或軟盤機(jī)或磁盤控制器、小型計算機(jī)系統(tǒng)接口(Small ComputerSystem Interface;簡稱SCSI)配接器、及電話適配卡等的各種周邊裝置的例示。同樣地,ISA裝置(418)是諸如調(diào)制解調(diào)器、聲卡、及GPIB或現(xiàn)場總線適配卡等的各種資料擷取卡等的各種周邊裝置的例示。
設(shè)有圖形控制器(408),以便控制一顯示器(426)上的文字及影像的演算(rendeving)。圖形控制器(408)可采用此項技術(shù)中普遍知道的典型圖形控制器,以便對可有效地移進(jìn)移出主存儲器(200)的三維數(shù)據(jù)結(jié)構(gòu)進(jìn)行演算。圖形控制器(408)因而可以是AGP總線(410)的主控裝置,可要求并取得總線橋接器(402)內(nèi)的目標(biāo)接口的主控權(quán),以便因而存取主存儲器(200)。一專用的圖形總線可適應(yīng)自主存儲器(200)迅速擷取的資料。對于某些作業(yè)而言,可將圖形控制器(408)的組態(tài)進(jìn)一步設(shè)定成在AGP總線(410)上產(chǎn)生PCI協(xié)議交易。總線橋接器(402)的AGP接口因而可包含支持AGP協(xié)議交易以及PCI協(xié)議目標(biāo)及發(fā)出裝置交易的功能。顯示器(426)是一可呈現(xiàn)影像或文字的電子顯示器。一適當(dāng)?shù)娘@示器(426)包括一陰極射線管(Cathode Ray Tube;簡稱CRT)、一液晶顯示器(Liquid Crystal Display;簡稱LCD)等的顯示器。
請注意,雖然在前文的說明中系將AGP、PCI、以及ISA或EISA總線用來作為例子,但是可視需要而替換任何的總線架構(gòu)。又請注意,計算機(jī)系統(tǒng)(400)可以是一包含額外的微處理器(例如,圖中將處理器(100a)示為計算機(jī)系統(tǒng)(400)的非必須的組件)的多重處理計算機(jī)系統(tǒng)。處理器(100a)可類似于微處理器(10)。更具體而言,處理器(100a)可以與處理器(100)相同。可將處理器(100a)經(jīng)由一獨立的總線(如第5圖所示)而連接到總線橋接器(402),或者處理器(100a)可與處理器(100)共享CPU總線(424)。此外,可將處理器(100a)耦合到與L2高速緩存(428)類似的非必須的L2高速緩存(428a)。
第5圖--多節(jié)點處理系統(tǒng)現(xiàn)在請參閱第5圖,圖中示出可包含一處理器(100)的一計算機(jī)系統(tǒng)(400)的另一實施例,而處理器(100)具有一前文所述的可重新發(fā)出的排程器。其它的實施例也是可行的,也可以考慮采用。在第5圖所示的實施例中,計算機(jī)系統(tǒng)(400)包含數(shù)個處理節(jié)點(512A)、(512B)、(512C)、及(512D)。每一處理節(jié)點系經(jīng)由每一各別處理節(jié)點(512A至512D)內(nèi)包含的一內(nèi)存控制器(516A至516D)而耦合到一各別的內(nèi)存(514A至514D)。此外,處理節(jié)點(512A至512D)包含用來在該等處理節(jié)點(512A至512D)之間通訊的接口邏輯電路。例如,處理節(jié)點(512A)包含接口邏輯電路(518A),用以與處理節(jié)點(512B)通訊,包含接口邏輯電路(518B),用以與處理節(jié)點(512C)通訊,并包含一第三接口邏輯電路(518C),用以與另一處理節(jié)點(圖中未示出)通訊。同樣地,處理節(jié)點(512B)包含接口邏輯電路(518D)、(518E)、及(518F);處理節(jié)點(512C)包含接口邏輯電路(518G)、(518H)、及(518I);以及處理節(jié)點(512D)包含接口邏輯電路(518J)、(518K)、及(518L)。處理節(jié)點(512D)被耦合成經(jīng)由接口邏輯電路(518L)而與多個輸入/輸出裝置(例如,按照鏈環(huán)組態(tài)配置的裝置(520A至520B))通訊。其它的處理節(jié)點可以類似的方式與其它的I/O裝置通訊。
處理節(jié)點(512A至512D)實施一封包式鏈路,以供處理節(jié)點間的通訊。在本實施例中,系將該鏈路實施為一組單向線路(例如,線路(524A)系用來將封包自處理節(jié)點(512A)傳送到處理節(jié)點(512B),且線路(524B)系用來將封包自處理節(jié)點(512B)傳送到處理節(jié)點(512A))。如第5圖所示,其它組的線路(524C至524H)系用來在其它的處理節(jié)點之間傳送封包。一般而言,每一組的線路(524)可包含一條或多條資料線路、對應(yīng)于該等資料線路的一條或多條時脈線路、以及用來指示所載送的封包類型的一條或多條控制線路??梢砸环N與高速緩存一致的方式操作該鏈路,以供各處理節(jié)點間的通訊,或者以一種非一致性的方式操作該鏈路,以供一處理節(jié)點與一I/O裝置(或諸如PCI總線或ISA總線等傳統(tǒng)結(jié)構(gòu)的I/O總線的總線橋接器)間的通訊。此外,可利用所示各I/O裝置間的鏈環(huán)結(jié)構(gòu)而以一種非一致性的方式操作該鏈路。請注意,將自某一處理節(jié)點傳送到另一處理節(jié)點的一封包可通過一個或多個中間節(jié)點。例如,如第5圖所示,由處理節(jié)點(512A)傳送到處理節(jié)點(512D)的封包可通過處理節(jié)點(512B)或處理節(jié)點(512C)??墒褂萌魏芜m當(dāng)?shù)穆窂竭x擇算法。計算機(jī)系統(tǒng)(400)的其它實施例可包含比第5圖所示實施例較多或較少的處理節(jié)點。
一般而言,可在各節(jié)點間的線路(524)上以一個或多個位時間的方式傳送該等封包。一位時間可以是對應(yīng)的時脈線路上的時脈信號的上升緣或下降緣。該等封包可包括用來激活交易的命令封包、用來維持高速緩存一致性的探測封包、以及響應(yīng)探測及命令的響應(yīng)封包。
各處理節(jié)點(512A至512D)除了包含一內(nèi)存控制器及接口邏輯電路之外,還可包含一個或多個處理器。廣義而言,處理節(jié)點包含至少一個處理器,且或可視需要而包含用來與內(nèi)存及其它邏輯電路通訊的內(nèi)存控制器。更具體而言,每一處理節(jié)點(512A至512D)可包含一個或多個處理器(100)。外部接口單元(18)可包含節(jié)點內(nèi)的接口邏輯電路(518)、以及內(nèi)存控制器(516)。
內(nèi)存(514A至514D)可包括任何適當(dāng)?shù)膬?nèi)存裝置。例如,內(nèi)存(514A至514D)可包括一個或多個RAMBUS DRAM(RDRAM)、同步DRAM(SDRAM)、及靜態(tài)RAM等內(nèi)存裝置。計算機(jī)系統(tǒng)(400)的地址空間系分布在內(nèi)存(514A至514D)之間。每一處理節(jié)點(512A至512D)可包含內(nèi)存對映表,用以決定哪些地址系對映到哪些內(nèi)存(514A至514D),并決定應(yīng)將對一特定地址的內(nèi)存要求傳送到哪一處理節(jié)點(512A至512D)。在一實施例中,計算機(jī)系統(tǒng)(400)內(nèi)的地址的一致性點是耦合到存儲與該地址對應(yīng)的字節(jié)的內(nèi)存的內(nèi)存控制器(516A至516D)。換言的,內(nèi)存控制器(516A至516D)負(fù)責(zé)確保以一種與高速緩存一致的方式進(jìn)行對該對應(yīng)的內(nèi)存(514A至514D)的各內(nèi)存存取。內(nèi)存控制器(516A至516D)可包含用來連接到內(nèi)存(514A至514D)的控制電路。此外,內(nèi)存控制器(516A至516D)可包含用來使內(nèi)存要求排隊等候的要求隊列。
接口邏輯電路(518A至518L)可包含各種緩沖器,用以自鏈路接收封包,并緩沖存儲將要經(jīng)由該鏈路而傳送的封包。計算機(jī)系統(tǒng)(400)可采用任何適當(dāng)?shù)姆獍骺刂茩C(jī)制以傳送封包。例如,在一實施例中,每一接口邏輯電路(518)存儲在該接口邏輯電路所連接的鏈路的另一端上的接收器內(nèi)的每一種類型的緩沖器的數(shù)目。在接收的接口邏輯電路有可存儲封包的空緩沖器之前,傳送的接口邏輯電路并不傳送該封包。當(dāng)藉由向前傳送封包而空出接收的緩沖器時,接收的接口邏輯電路即將訊息傳送到該傳送的接口邏輯電路,而指示該緩沖器已空出??蓪⒋朔N機(jī)制稱為“配給票式”系統(tǒng)。
I/O裝置(520A至520B)可以是任何適當(dāng)?shù)腎/O裝置。例如,I/O裝置(520A至520B)可包含若干裝置,用以與該等裝置可耦合的另一計算機(jī)系統(tǒng)(例如,該等裝置可以是網(wǎng)絡(luò)適配卡或調(diào)制解調(diào)器)溝通。此外,I/O裝置(520A至520B)可包括影像加速器、聲卡、硬盤機(jī)或軟盤機(jī)或磁盤控制器、小型計算機(jī)系統(tǒng)接口(SCSI)配接器、及電話適配卡、聲音卡、以及諸如GPIB或現(xiàn)場總線適配卡等的各種資料擷取卡。請注意,在本文中,術(shù)語“I/O裝置”及“周邊裝置”是同義語。
在本文的用法中,術(shù)語“時脈周期”意指指令處理管線的各階段完成其工作的時間間隔。各存儲元件(例如緩存器或記憶數(shù)組)根據(jù)界定時脈周期的一時脈信號而捕獲指令及計算出的值。例如,一存儲元件可根據(jù)時脈信號的上升緣或下降緣而捕獲一值。
前文的討論中系將信號描述為“被觸發(fā)”(“asserted”)。當(dāng)信號載有指示了特定件的信息的值時,可將該信號定義為被觸發(fā)。當(dāng)特定信號載有一個二進(jìn)制的“一”值時,或者替代性地當(dāng)信號載有一個二進(jìn)制的“零”值時,可將該特定信號定義為被觸發(fā)。
熟習(xí)此項技術(shù)者在完全了解前文的揭示事項之后,將可易于作出許多的變化及修改。要將最后的申請專利范圍詮釋為包含所有此類的變化及修改。
工業(yè)應(yīng)用性本發(fā)明可普遍適用于微處理器的領(lǐng)域。
權(quán)利要求
1.一種微處理器(100),包含多個執(zhí)行單元(124);以及耦合而將作業(yè)發(fā)出到該等多個執(zhí)行單元中的至少一個執(zhí)行單元的一排程器(118),其中該排程器包含包含多個資料項(320)的作業(yè)存儲單元(302),其中系將第一資料項分配給第一作業(yè),其中該第一作業(yè)系對一個或多個操作數(shù)執(zhí)行作業(yè),其中該第一資料項包含一個或多個來源狀態(tài)指示(330A,330B),其中每一來源狀態(tài)指示系指示該等一個或多個操作數(shù)中的各別操作數(shù)的一值是否是推測的;以及耦合到該作業(yè)存儲單元(302)的排程器控制單元(304),且該排程器控制單元(304)的組態(tài)被設(shè)定成響應(yīng)接收到第二作業(yè)的結(jié)果的值是非推測的值的指示,而更新該第一資料項中包含的該等一個或多個來源狀態(tài)指示中的一個來源狀態(tài)指示(330A,330B),以便指示該等一個或多個操作數(shù)中的各別操作數(shù)的一值是非推測的。
2.如權(quán)利要求1所述的微處理器,其中該等多個執(zhí)行單元中的一第一執(zhí)行單元的組態(tài)被設(shè)定成執(zhí)行該第一作業(yè)以產(chǎn)生該第一作業(yè)的結(jié)果,其中該第一作業(yè)的結(jié)果包含一個結(jié)果指示,其中該結(jié)果指示系指示如果該第一資料項中包含的該等一個或多個來源狀態(tài)指示中的任何來源狀態(tài)指示系指示該等一個或多個操作數(shù)中的各別操作數(shù)是推測的,則該第一作業(yè)的該結(jié)果的值是推測的。
3.如權(quán)利要求1所述的微處理器,其中對應(yīng)于該第二作業(yè)的結(jié)果的一標(biāo)記等于對應(yīng)于該等一個或多個操作數(shù)中的操作數(shù)的標(biāo)記,其中將該排程器控制單元的組態(tài)設(shè)定成響應(yīng)在標(biāo)記總線上接收到對應(yīng)于該第二作業(yè)的結(jié)果的標(biāo)記,而更新該第一資料項中包含的該等一個或多個來源狀態(tài)指示中的一來源狀態(tài)指示。
4.如權(quán)利要求3所述的微處理器,其中將該排程器控制單元的組態(tài)被設(shè)定成響應(yīng)接收到在該標(biāo)記總線提供了對應(yīng)于該第一操作數(shù)的標(biāo)記以更新推測式的狀態(tài)指示的指示,而更新該等一個或多個來源狀態(tài)指示中的來源狀態(tài)指示。
5.如權(quán)利要求1所述的微處理器,其中將該排程器控制單元的組態(tài)設(shè)定成如果該第一資料項中包含的該等一個或多個來源狀態(tài)指示的每一個來源狀態(tài)指示系指示該等一個或多個操作數(shù)中的一各別操作數(shù)的值是非推測的,則響應(yīng)該第一作業(yè)的重新發(fā)出,而將該第一資料項解除分配。
6.如權(quán)利要求1所述的微處理器,進(jìn)一步包含耦合到該排程器的分支預(yù)測單元、以及耦合到該分支預(yù)測單元的預(yù)先提取單元,其中如果該第一個作業(yè)是一個分支作業(yè),則將該分支預(yù)測單元的組態(tài)設(shè)定成在該第一資料項中的該等一個或多個來源狀態(tài)指示的每一個來源狀態(tài)指示系指示該等一個或多個操作數(shù)中的一各別操作數(shù)的一值是非推測的值之前,延遲響應(yīng)該第一作業(yè)的結(jié)果而使該預(yù)先提取單元的提取方向改向并清除一處理管線。
7.如權(quán)利要求1所述的微處理器,其中將該排程器控制單元的組態(tài)設(shè)定成選擇該作業(yè)存儲單元中的該等多個資料項的資料項中存儲的作業(yè)并將所選擇的作業(yè)提供給功能單元以供執(zhí)行,其中該排程器控制單元的組態(tài)設(shè)定成將優(yōu)先權(quán)給予具有非推測的操作數(shù)的作業(yè),非推測系由作業(yè)存儲單元中的每一個資料項中包含的來源狀態(tài)指示所指示。
8.一種方法,包含下列步驟第一來源狀態(tài)指示(330A)系指示第一作業(yè)的第一操作數(shù)的值是推測的,其中該第一操作數(shù)是第二作業(yè)的一結(jié)果;響應(yīng)接收到用來指示該第二作業(yè)的結(jié)果的值不是推測的值的一第二結(jié)果狀態(tài)指示,而更新該第一來源狀態(tài)指示,以便指示該第一操作數(shù)的該值不是推測的;以及第一結(jié)果狀態(tài)指示響應(yīng)該更新,而指示該第一作業(yè)的結(jié)果的值不是推測的。
9.如權(quán)利要求8所述的方法,進(jìn)一步包含下列步驟將該第一作業(yè)派發(fā)到排程器,其中該派發(fā)步驟包含將該排程器中的第一資料項分配給該第一作業(yè),其中該第一資料項包含該第一來源狀態(tài)指示。
10.一種方法,包含下列步驟對應(yīng)于第一分支指令的第一操作數(shù)的第一來源狀態(tài)指示系指示該第一操作數(shù)的值是推測的;接收第二作業(yè)的結(jié)果的值是非推測的值的一指示,其中該第二作業(yè)的結(jié)果是該第一操作數(shù);響應(yīng)該接收步驟,而更新該第一來源狀態(tài)指示,以便指示該第一操作數(shù)的值是非推測的;以及在該更新步驟之前,延遲響應(yīng)該第一分支指令的結(jié)果的值而使一指令預(yù)先提取機(jī)制改向并清除一處理管線。
全文摘要
一微處理器(100)可包含數(shù)個執(zhí)行單元(124)、以及耦合而將作業(yè)發(fā)出到至少一個該等執(zhí)行單元(124)的一排程器(118)。該排程器(118)可包含數(shù)個資料項(320)??蓪⒌谝毁Y料項分配給第一作業(yè)。該第一資料項包含該第一作業(yè)的每一操作數(shù)的來源狀態(tài)指示(330A,330B)。每一個來源狀態(tài)指示(330A,330B)系指示該第一作業(yè)的一各別操作數(shù)的值是否是推測的。該排程器(118)的組態(tài)設(shè)定成響應(yīng)接收到第二作業(yè)的結(jié)果的值是非推測的值的指示,而更新該第一資料項的其中一個來源狀態(tài)指示(330A,330B),以便指示該第一作業(yè)的各別操作數(shù)的值是非推測的。
文檔編號G06F9/38GK1678986SQ03820181
公開日2005年10月5日 申請日期2003年7月16日 優(yōu)先權(quán)日2002年8月28日
發(fā)明者B·T·桑德, M·阿爾薩普, M·菲利波 申請人:先進(jìn)微裝置公司