專利名稱:用于在數(shù)據(jù)推測(cè)微處理器中操作重放的系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于微處理器的領(lǐng)域,尤其關(guān)于在微處理器中執(zhí)行數(shù)據(jù)推測(cè)的領(lǐng)域。
背景技術(shù):
推測(cè)微處理器(speculative microprocessor)通過同時(shí)執(zhí)行并行指令以及通過使用符合本身設(shè)計(jì)的最短合適的時(shí)鐘周期而達(dá)到高性能。然而,在指令之間的數(shù)據(jù)及控制流程相關(guān)性(dependency)可以限制有多少指令在任何給定的時(shí)間內(nèi)可以發(fā)送。因此,有些微處理器支持推測(cè)的執(zhí)行以達(dá)到額外的性能增益。
其中一種形式的推測(cè)為控制流程推測(cè)。控制流程推測(cè)是推測(cè)其中程序控制(program control)將要進(jìn)行的方向。例如,可用分支推測(cè)以推測(cè)是否將采取分支??捎玫姆种茰y(cè)有很多形式,如從每一次單純地采用相同的推測(cè)的方法到在程序中維持該先前分支的復(fù)雜的歷史記錄以產(chǎn)生基于歷史的推測(cè)的方法。分支推測(cè)可以通過硬件最佳化、編譯器最佳化或兩者兼而有之而變得容易。基于由該分支推測(cè)機(jī)構(gòu)所提供的推測(cè),可以推測(cè)地提取及執(zhí)行指令。當(dāng)該分支指令被最終評(píng)估時(shí),該分支推測(cè)能夠被檢驗(yàn)。若該推測(cè)不正確,基于該不正確推測(cè)所推測(cè)執(zhí)行的任何指令可以撤銷。
另一種形式的推測(cè)為數(shù)據(jù)推測(cè),該數(shù)據(jù)推測(cè)是推測(cè)數(shù)據(jù)數(shù)值。所提及的數(shù)據(jù)推測(cè)的形式包含推測(cè)產(chǎn)生的用于內(nèi)存(memory)操作的地址及推測(cè)產(chǎn)生的用于在計(jì)算操作中所使用的數(shù)據(jù)數(shù)值。使用控制推測(cè)時(shí),最后是評(píng)估用以推測(cè)性產(chǎn)生數(shù)值的潛在的條件,以便將該推測(cè)被確認(rèn)或取消。
由于推測(cè)允許指令的執(zhí)行而不需等待完成相關(guān)性檢驗(yàn),若來(lái)自正確推測(cè)所獲得的性能超過不正確推測(cè)所損失的性能,則可以達(dá)到顯著的性能利益。因此需要減少因不正確推測(cè)的性能損失。
發(fā)明內(nèi)容
本發(fā)明公開了在數(shù)據(jù)推測(cè)微處理器中用于避免操作進(jìn)行中的實(shí)施例中斷該操作重放的方法及系統(tǒng)的多個(gè)實(shí)施例。在某些實(shí)施例中,微處理器可以包含通過配置以執(zhí)行操作的一個(gè)或多個(gè)功能單元、通過配置以發(fā)出操作給該功能單元以用于執(zhí)行的調(diào)度器、以及至少一個(gè)重放檢測(cè)單元。該調(diào)度器可以被配置以對(duì)于每個(gè)操作維持狀態(tài)信息。在其它事件中,這樣的狀態(tài)信息可以指示是否相關(guān)的操作具有完全的執(zhí)行。該重放檢測(cè)單元可以被配置以檢測(cè)在該調(diào)度器中的多個(gè)操作中的一個(gè)操作應(yīng)該重放。當(dāng)操作被檢測(cè)為需要重放時(shí),若該操作實(shí)施例目前正被功能單元中的一個(gè)所執(zhí)行,則該重放檢測(cè)單元被配置以禁止對(duì)于該操作的狀態(tài)信息的更新,以響應(yīng)該操作進(jìn)行中的實(shí)施例的執(zhí)行。計(jì)算機(jī)系統(tǒng)的多種實(shí)施例可以包含這樣的微處理器。
在一個(gè)實(shí)施例中,該重放檢測(cè)單元可以被配置以通過使執(zhí)行該進(jìn)行中的操作的實(shí)施例的該功能單元不信號(hào)通知調(diào)度器該操作的完成,而禁止對(duì)于該操作的狀態(tài)信息的更新。在另一個(gè)實(shí)施例中,該重放檢測(cè)單元可以被配置以通過使該調(diào)度器(scheduler)修改(modify)與該操作相關(guān)的發(fā)出計(jì)數(shù)(issue count),而禁止對(duì)于該操作的狀態(tài)信息的更新。若該操作的發(fā)出計(jì)數(shù)并不與該操作的實(shí)施例的發(fā)出計(jì)數(shù)相匹配,該調(diào)度器可以被配置以不更新該狀態(tài)信息來(lái)響應(yīng)該操作的實(shí)施例的完成。
在某些實(shí)施例中,若數(shù)據(jù)推測(cè)確認(rèn)單元檢測(cè)到對(duì)于該操作的不正確的數(shù)據(jù)推測(cè),該調(diào)度器可以被配置以更新與操作相關(guān)的狀態(tài)信息,以指示該操作需要再次發(fā)送。當(dāng)檢測(cè)到該不正確的數(shù)據(jù)推測(cè)時(shí),若該操作的實(shí)施例正在執(zhí)行,該重放檢測(cè)單元可以被配置以確保與該操作相關(guān)的狀態(tài)信息持續(xù)指示在操作的實(shí)施例執(zhí)行之后該操作需要再次發(fā)出。
在某些實(shí)施例中,微處理器可包含多個(gè)重放檢測(cè)單元。重放檢測(cè)單元可以包含在數(shù)據(jù)推測(cè)確認(rèn)單元中(例如在加載存儲(chǔ)單元中或在其它功能單元中或者在內(nèi)存控制器中)或者在該調(diào)度器本身中。
本方法的實(shí)施例可包含發(fā)送用于執(zhí)行的操作的實(shí)施例;緊接著發(fā)出(issue)該操作的實(shí)施例之后,接收該操作應(yīng)該重放的指示;以及響應(yīng)于該指示,禁止在調(diào)度器內(nèi)的該操作狀態(tài)的更新以響應(yīng)該操作的實(shí)施例的完成。禁止該更新可包含使功能單元執(zhí)行該操作的實(shí)施例成為該操作的實(shí)施例不信號(hào)通知該調(diào)度器該操作的完成。另外,禁止該更新可包含該調(diào)度器修改與該操作相關(guān)的發(fā)出計(jì)數(shù)以響應(yīng)接收該操作應(yīng)該重放的指示;以及若該操作的發(fā)出計(jì)數(shù)并不與該操作的實(shí)施例的發(fā)出計(jì)數(shù)相匹配,該調(diào)度器不更新與該操作相關(guān)的狀態(tài)信息以響應(yīng)該操作的實(shí)施例的完成。
當(dāng)結(jié)合附圖考慮下面詳細(xì)的描述時(shí),可以得到本發(fā)明的更好的理解,其中圖1是依據(jù)一個(gè)實(shí)施例而表示的微處理器。
圖2是依據(jù)一個(gè)實(shí)施例而例示的調(diào)度器。
圖3是依據(jù)一個(gè)實(shí)施例而例示的功能單元。
圖4A為依據(jù)一個(gè)實(shí)施例的禁止更新該調(diào)度器內(nèi)的不正確推測(cè)操作的狀態(tài)的方法流程圖。
圖4B為依據(jù)另一實(shí)施例的禁止更新該調(diào)度器內(nèi)的不正確推測(cè)操作的狀態(tài)的方法流程圖。
圖5是依據(jù)一個(gè)實(shí)施例而表示的例示的計(jì)算機(jī)系統(tǒng)。
圖6是依據(jù)另一實(shí)施例而表示的另一例示的計(jì)算機(jī)系統(tǒng)。
雖然本發(fā)明易于做多種修改以及可選的形式,本發(fā)明的特定實(shí)施例是以附圖中實(shí)施例的方式來(lái)表示的并且其中將做詳細(xì)描述。然而,應(yīng)該了解的是對(duì)于該附圖及詳細(xì)的說(shuō)明書并不想限定本發(fā)明在所公開的特定的形式,而相反地,本發(fā)明的目的是包括屬于如所附權(quán)利要求所定義的本發(fā)明的精神及范疇內(nèi)的所有的修改、等同及替代。需要注意的是,該標(biāo)題僅用于組織的目的并且并不想用于限定或說(shuō)明該說(shuō)明書或權(quán)利要求。而且,需要注意的是,該文字“可以(may)”以允許的含意使用于整個(gè)申請(qǐng)中(意即,具有潛在可以的、能夠的),而不是強(qiáng)制的含意(意即,必須(must))。該術(shù)語(yǔ)“包含(include)”及該名詞的派生詞是指“包含,但并不限定于(including,but not limited to)”。該術(shù)語(yǔ)“連接(connected)”表示“直接地或非直接地連接”,并且該術(shù)語(yǔ)“連結(jié)(coupled)”意指“直接地或非直接地連結(jié)”。
具體實(shí)施例方式
圖1為微處理器100的一個(gè)實(shí)施例的方塊圖。微處理器100被配置以執(zhí)行存儲(chǔ)在系統(tǒng)內(nèi)存200內(nèi)的指令。很多這些指令操作存儲(chǔ)在系統(tǒng)內(nèi)存200內(nèi)的數(shù)據(jù)。需要注意的是,系統(tǒng)內(nèi)存200可以是物理分布在整個(gè)計(jì)算機(jī)系統(tǒng)并且可以通過一個(gè)或多個(gè)微處理器100進(jìn)行存取。
微處理器100可以包含指令高速緩存器(instruction cache)106及數(shù)據(jù)高速緩存器128。微處理器100可以包含連結(jié)到該指令高速緩存器106的預(yù)取單元108(prefetch unit)。調(diào)度(dispatch)單元104可以被配置以接收來(lái)自指令高速緩存器106的指令并且調(diào)度操作(operation)給調(diào)度器(scheduler)118。一個(gè)或多個(gè)調(diào)度器118可以連結(jié)以接收來(lái)自分發(fā)單元104的調(diào)度操作(執(zhí)行命令)并且發(fā)出操作給一個(gè)或多個(gè)執(zhí)行核心(execution core)124。每個(gè)執(zhí)行核心124可以包含配置的加載/存儲(chǔ)單元以對(duì)數(shù)據(jù)高速緩存器128執(zhí)行存取。通過執(zhí)行核心124所產(chǎn)生的結(jié)果可以輸出到結(jié)果總線130。這些結(jié)果可以用作后續(xù)發(fā)出的操作數(shù)數(shù)值(operand value)的指令和/或存儲(chǔ)到注冊(cè)文件(register file)16。退出隊(duì)列(retire queue)102可以連結(jié)到調(diào)度器118及調(diào)度單元104。該退出隊(duì)列102可以被配置以決定每個(gè)發(fā)送的操作何時(shí)可以退出。在一個(gè)實(shí)施例中,該微處理器100可以設(shè)計(jì)為與x86架構(gòu)兼容。需要注意的是,微處理器100也可以包含很多其它的組件。例如,微處理器100可以包含分支推測(cè)單元(未圖示)。
指令高速緩存器106可以在由調(diào)度單元104接收到指令之前暫時(shí)地存儲(chǔ)指令??赏ㄟ^從系統(tǒng)內(nèi)存200經(jīng)過預(yù)取單元108預(yù)先取得指令碼,而將指令碼提供給指令高速緩存器106。指令高速緩存器106可以用不同配置(例如集合關(guān)聯(lián)(set-associative)、完全關(guān)聯(lián)(fully-associative)或者直接映射(direct-mapped))而實(shí)現(xiàn)。在某些實(shí)施例中,可以有多級(jí)指令和/或數(shù)據(jù)高速緩存器106和128。某些級(jí)別可以與該微處理器100整合,如圖所示,而其它級(jí)別高速緩存器可以外部連結(jié)到該微處理器100。
預(yù)取單元108可以預(yù)取來(lái)自該系統(tǒng)內(nèi)存200的指令碼而存儲(chǔ)在指令高速緩存器106中。在一個(gè)實(shí)施例中,預(yù)取單元108可以配置成從該系統(tǒng)內(nèi)存200突發(fā)(burst)指令碼進(jìn)入指令高速緩存器106。預(yù)取單元108可以使用多個(gè)特定的指令碼預(yù)取技術(shù)及算法。
調(diào)度單元104可以輸出信號(hào),該信號(hào)包括該執(zhí)行核心124可執(zhí)行的位編碼操作以及操作數(shù)地址信息、實(shí)時(shí)數(shù)據(jù)和/或位移數(shù)據(jù)。在某些實(shí)施例中,調(diào)度單元104可以包含譯碼電路(未圖示),其用于編譯某些指令以成為在執(zhí)行核心124內(nèi)可執(zhí)行的操作。簡(jiǎn)單的指令可以對(duì)應(yīng)于單一操作。在某些實(shí)施例中,較復(fù)雜的指令可以對(duì)應(yīng)于多重(multiple)操作。若操作包含更新緩存器,位于注冊(cè)文件116中的緩存器位置可以被保留(例如當(dāng)操作譯碼時(shí)),以存儲(chǔ)推測(cè)的緩存器狀態(tài)(在另一可選的實(shí)施例中,可以使用重排序緩存器以存儲(chǔ)對(duì)于每個(gè)緩存器的一個(gè)或多個(gè)推測(cè)的緩存器狀態(tài))。該緩存器映射可以轉(zhuǎn)譯源及目的操作數(shù)的邏輯緩存器的名稱成為物理緩存器名稱,以方便緩存器重新命名。該緩存器映射可以追蹤在注冊(cè)文件116內(nèi)的目前分配的緩存器。
圖1的微處理器100支持不按序的(out of order)執(zhí)行。退出隊(duì)列102可以保持用于緩存器讀取及寫入操作的該原始程序順序的追蹤、允許用于推測(cè)指令執(zhí)行及分支誤推測(cè)恢復(fù)以及促成精確排除(exception)。退出隊(duì)列102可以實(shí)現(xiàn)先進(jìn)先出的配置,當(dāng)操作有效時(shí),該操作移到該緩沖器的“底部(bottom)”,而在該隊(duì)列的“頂部(top)”產(chǎn)生用于新入口(entry)的空間。退出隊(duì)列102可以退出操作,以響應(yīng)于完成執(zhí)行的操作及在任何操作上的任何數(shù)據(jù)或控制推測(cè),直到包括依照程序命令的操作被檢驗(yàn)。在該物理緩存器內(nèi)產(chǎn)生該數(shù)值的操作退出時(shí),退出隊(duì)列102可以將物理緩存器的推測(cè)的狀態(tài)指定為微處理器100的架構(gòu)狀態(tài)。在某些實(shí)施例中,退出隊(duì)列102可以作為重排序緩沖器(reorder buffer)的一部分來(lái)執(zhí)行。這樣的重排序緩沖器也可以提供用于推測(cè)緩存器狀態(tài)的數(shù)據(jù)數(shù)值存儲(chǔ),以支持緩存器重新命名。需要注意的是,在其它實(shí)施例中,退出隊(duì)列102可以不提供任何數(shù)據(jù)數(shù)值存儲(chǔ)。相反地,當(dāng)退出操作時(shí),退出隊(duì)列102可以解除分配在注冊(cè)表116中的緩存器,該緩存器不再需要存儲(chǔ)推測(cè)緩存器狀態(tài),并且提供信號(hào)給緩存器映射而指示哪一個(gè)緩存器目前是空的。通過維持在注冊(cè)文件116中的推測(cè)的緩存器狀態(tài)(或者在可選實(shí)施例中,在重排序緩沖器中),直到產(chǎn)生這些狀態(tài)的操作有效,若分支推測(cè)不正確,則沿著誤推測(cè)路徑的推測(cè)執(zhí)行的操作的結(jié)果在注冊(cè)文件116內(nèi)可以無(wú)效。
若特定操作所需的操作數(shù)是緩存器位置,可將緩存器地址信息傳送給緩存器映射(或重排序緩沖器)。例如,在該x86架構(gòu)中,具有8個(gè)32位邏輯緩存器(例如EAX、EBX、ECX、EDX、EBP、ESI、EDI及ESP)。物理注冊(cè)文件116(或重排序緩沖器)包含存儲(chǔ)用于改變這些邏輯緩存器內(nèi)容的結(jié)果,同時(shí)允許不按序執(zhí)行。在注冊(cè)文件116中的物理緩存器可以被分配以存儲(chǔ)決定修改邏輯緩存器中的一個(gè)的內(nèi)容的每個(gè)操作的結(jié)果。因此,在特定程序的執(zhí)行期間的不同時(shí)刻,注冊(cè)文件116(或在可選的實(shí)施例中,重排序緩沖器)可以具有一個(gè)或多個(gè)的包括給定的邏輯緩存器的推測(cè)執(zhí)行內(nèi)容的緩存器。
緩存器映射可以指定物理緩存器給指定的用于操作的目的操作數(shù)的邏輯緩存器。調(diào)度單元104可以決定注冊(cè)文件116具有指定給邏輯緩存器的一個(gè)或多個(gè)的先前分配的物理緩存器,而該物理緩存器給指定為給定操作的來(lái)源操作數(shù)的邏輯注冊(cè)。該緩存器映射可以提供標(biāo)記符(tag)給最近指定給該邏輯緩存器的物理緩存器。此標(biāo)記符可以通過使用以存取在該注冊(cè)文件116內(nèi)的操作數(shù)的數(shù)據(jù)數(shù)值或通過轉(zhuǎn)發(fā)該結(jié)果總線130上的結(jié)果而接收該數(shù)據(jù)數(shù)值。若該操作數(shù)對(duì)應(yīng)于內(nèi)存位置,該操作數(shù)數(shù)值可以通過加載/存儲(chǔ)單元222而提供給該結(jié)果總線(用于結(jié)果轉(zhuǎn)發(fā)和/或存儲(chǔ)于注冊(cè)文件118內(nèi))。當(dāng)該操作通過其中一個(gè)調(diào)度器118而發(fā)出時(shí),操作數(shù)數(shù)據(jù)的數(shù)值可以提供給執(zhí)行核心124。需要注意的是,在可選實(shí)施例中,當(dāng)操作被調(diào)度時(shí),操作數(shù)數(shù)值可以提供給對(duì)應(yīng)的調(diào)度器118(而不是當(dāng)該操作被發(fā)送時(shí),提供給對(duì)應(yīng)的執(zhí)行核心124)。
在調(diào)度單元104的輸出端所提供的該位編碼操作以及實(shí)時(shí)數(shù)據(jù)可以傳送給一個(gè)或多個(gè)調(diào)度器118。需要注意的是,其中所使用的調(diào)度器是一種裝置,該裝置檢測(cè)何時(shí)操作已準(zhǔn)備執(zhí)行并且發(fā)出準(zhǔn)備好的操作給一個(gè)或多個(gè)的功能單元。例如,保留站(reservation station)是調(diào)度器。在一個(gè)調(diào)度器或群組調(diào)度器內(nèi)的操作也稱為在指令內(nèi)的操作或操作窗口(operation window)或調(diào)度窗口(scheduling window)。每個(gè)調(diào)度器118對(duì)于等待發(fā)出給執(zhí)行核心124的多個(gè)待決(pending)的操作能夠保留操作信息(例如位編碼的執(zhí)行位以及操作數(shù)數(shù)值、操作數(shù)標(biāo)記符和/或?qū)崟r(shí)數(shù)據(jù))。在某些實(shí)施例中,每個(gè)調(diào)度器118可以不提供操作數(shù)數(shù)值存儲(chǔ)。相反地,每個(gè)調(diào)度器可以監(jiān)視發(fā)出的操作數(shù)以及在注冊(cè)文件116內(nèi)可獲得的結(jié)果,以決定何時(shí)操作數(shù)數(shù)值將可以被功能單元126(從注冊(cè)文件116或結(jié)果總線130)而讀取。在某些實(shí)施例中,每個(gè)調(diào)度器118可以與專用的功能單元126相關(guān)。在其它實(shí)施例中,單一調(diào)度器118可以發(fā)出操作給不止一個(gè)的功能單元126。
調(diào)度器118可以提供給將由執(zhí)行核心124所執(zhí)行的暫時(shí)存儲(chǔ)操作信息。如前所述,每個(gè)調(diào)度器118可以存儲(chǔ)用于待決操作的操作信息。另外,每個(gè)調(diào)度器可以存儲(chǔ)已經(jīng)執(zhí)行但是仍然可以重新發(fā)出的用于操作的操作信息。操作被發(fā)給執(zhí)行核心124而用于執(zhí)行,以響應(yīng)可及時(shí)獲得產(chǎn)生的用于執(zhí)行的任何所需的操作數(shù)的數(shù)值。因此,操作所執(zhí)行的順序可以不同于該原始程序指令系列的順序。包含數(shù)據(jù)推測(cè)的操作可以仍然保持在調(diào)度器118內(nèi)直到該操作變成非推測(cè)性的為止,以便若該數(shù)據(jù)推測(cè)不正確,該操作可以重新發(fā)出。
在一個(gè)實(shí)施例中,每個(gè)執(zhí)行核心124可以包含多個(gè)功能單元126(例如功能單元126A到126C,如圖1所示)。某些功能單元,例如126A,可以被配置成執(zhí)行加法及減法的整數(shù)計(jì)算操作、以及平移、旋轉(zhuǎn)、邏輯操作及分支操作。其它功能單元,例如126B,可以被配置成包含浮點(diǎn)操作。一個(gè)或多個(gè)功能單元(例如126A)可以被配置成執(zhí)行地址的產(chǎn)生,而用于通過功能單元(例如126C)所執(zhí)行的加載及存儲(chǔ)內(nèi)存操作,該功能單元126C執(zhí)行加載及存儲(chǔ)操作以存取存儲(chǔ)在數(shù)據(jù)高速緩存器128和/或系統(tǒng)內(nèi)存內(nèi)存中的數(shù)據(jù)。在一個(gè)實(shí)施例中,這樣的功能單元126C對(duì)于可以被配置成加載/存儲(chǔ)緩沖器,其具有多個(gè)存儲(chǔ)位置以用于待決的加載和/或存儲(chǔ)的數(shù)據(jù)及地址信息。
一個(gè)或多個(gè)功能單元126也將與條件分支指令相關(guān)的執(zhí)行信息提供給分支推測(cè)單元,以便若分支被錯(cuò)誤推測(cè),該分支推測(cè)單元可以緊接著已經(jīng)進(jìn)入該指令處理流程的錯(cuò)誤推測(cè)的分支而清除指令并且重新指向預(yù)取單元106。該重新指向的預(yù)取單元106接著可以開始從指令高速緩存器106或系統(tǒng)內(nèi)存200預(yù)取該正確的指令集。在此種情況下,在該誤推測(cè)的分支指令之后所產(chǎn)生的在該原始程序序列內(nèi)的指令的結(jié)果可以丟棄,包含那些被推測(cè)執(zhí)行及暫時(shí)存儲(chǔ)在注冊(cè)文件116內(nèi)的結(jié)果。
若緩存器數(shù)值被更新,由執(zhí)行核心124內(nèi)的功能單元126所產(chǎn)生的結(jié)果可以輸出在該結(jié)果總線130上而傳到該注冊(cè)文件116。若該內(nèi)存位置的內(nèi)容被改變,在執(zhí)核心124內(nèi)所產(chǎn)生的結(jié)果可以提供給該功能單元126C。
數(shù)據(jù)高速緩存器128為高速緩存器內(nèi)存,所提供的高速緩存器內(nèi)存暫時(shí)地存儲(chǔ)在執(zhí)行核心124及該系統(tǒng)內(nèi)存200之間做轉(zhuǎn)移的數(shù)據(jù)。如同上所述的該指令高速緩存器106,該數(shù)據(jù)高速緩存器128可以在多個(gè)特定的內(nèi)存配置內(nèi)實(shí)現(xiàn),其包含集合關(guān)聯(lián)配置。此外,數(shù)據(jù)高速緩存器106及指令高速緩存器128在某些實(shí)施例中可以在單一的高速緩存器內(nèi)實(shí)現(xiàn)。
在某些實(shí)施例中,微處理器100可以包含集成的內(nèi)存控制器160,其允許該微處理器直接與系統(tǒng)內(nèi)存200接口接合。在其它實(shí)施例中,內(nèi)存控制器160可以包含在沒有直接將微處理器100與系統(tǒng)內(nèi)存200連接的總線橋內(nèi)。
數(shù)據(jù)推測(cè)如其中所述,若具有數(shù)據(jù)數(shù)值可以發(fā)現(xiàn)是不正確的并且從而被重新計(jì)算,則該數(shù)據(jù)數(shù)值是推測(cè)的。推測(cè)的數(shù)據(jù)數(shù)值是無(wú)法肯定地確定其是正確或不正確的數(shù)值。若該數(shù)據(jù)數(shù)值是某些數(shù)據(jù)推測(cè)已經(jīng)執(zhí)行的操作的結(jié)果,或者若該數(shù)據(jù)數(shù)值取決于另一個(gè)推測(cè)的數(shù)據(jù)數(shù)值(例如若產(chǎn)生的該數(shù)據(jù)數(shù)值是具有一個(gè)或多個(gè)推測(cè)的操作數(shù)的操作的結(jié)果),則數(shù)據(jù)數(shù)值可以被重新計(jì)算。
在微處理器100內(nèi)的多個(gè)機(jī)構(gòu)可以執(zhí)行數(shù)據(jù)推測(cè)。例如,調(diào)度單元104、內(nèi)存控制器160和/或一個(gè)或多個(gè)功能單元126,其中的每一個(gè)可以執(zhí)行用于特定操作的數(shù)據(jù)推測(cè)。調(diào)度單元104可以檢測(cè)到其中一個(gè)操作的結(jié)果可以用做用于另一個(gè)操作的推測(cè)操作數(shù)。例如,調(diào)度單元通過先前的存儲(chǔ)操作可以推測(cè)該加載操作將存取存儲(chǔ)在數(shù)據(jù)高速緩存器128的數(shù)據(jù)。該調(diào)度單元104可以響應(yīng)地確認(rèn)存儲(chǔ)在該緩存器內(nèi)的數(shù)據(jù)數(shù)值作為該加載操作的推測(cè)的結(jié)果,該緩存器被用作該存儲(chǔ)操作的來(lái)源。這種形式的數(shù)據(jù)推測(cè)在此稱為相關(guān)性推測(cè)。該相關(guān)性推測(cè)可以通過連結(jié)該存儲(chǔ)操作的來(lái)源以在該調(diào)度單元104內(nèi)擴(kuò)充而作為用于操作的推測(cè)的操作數(shù)來(lái)源,該操作指定該加載操作的結(jié)果作為操作數(shù)。另一種形式的相關(guān)性推測(cè)可以通過允許加載來(lái)旁通存儲(chǔ)未計(jì)算的地址,即通過推測(cè)較新的加載并不取決于初期存儲(chǔ),而在功能單元126C內(nèi)執(zhí)行。
在多重處理器系統(tǒng)中,內(nèi)存控制器160可以執(zhí)行一致性檢查以維持高速緩存器一致性。內(nèi)存控制器160在完成全部的其它微處理器的高速緩存器的一致性檢查之前可以從系統(tǒng)內(nèi)存200推測(cè)地返回高速緩存器路線的副本(copy)。若該一致性檢查接著決定將取回(retrieve)的該高速緩存器路線的正確副本目前存儲(chǔ)在另一個(gè)處理器高速緩存器內(nèi),則從系統(tǒng)內(nèi)存200所推測(cè)地取回的該高速緩存器路線的副本可以是無(wú)效的。因此,從存取該高速緩存器路線所產(chǎn)生的任何加載操作結(jié)果將是推測(cè)的,直到該一致性檢查完成為止。此類型的推測(cè)在此稱為內(nèi)存推測(cè)(memory prediction)。
調(diào)度單元104可以通過推測(cè)操作的結(jié)果而執(zhí)行數(shù)據(jù)推測(cè)。例如,某些操作可以傾向產(chǎn)生相同的結(jié)果,并且因此每當(dāng)處理其中的一個(gè)操作的時(shí)候,該結(jié)果可以由調(diào)度單元104在該操作在由功能單元126實(shí)際執(zhí)行的操作之前而推測(cè)地產(chǎn)生。此類型的數(shù)據(jù)推測(cè)在此稱為數(shù)據(jù)推測(cè)。需要注意的是,該數(shù)據(jù)推測(cè)也可以在該微處理器的其它部分內(nèi)執(zhí)行(例如在裝入存儲(chǔ)單元126C內(nèi))。
裝入存儲(chǔ)單元(功能單元)126C可以推測(cè)地產(chǎn)生該地址以及基于該推測(cè)的地址的加載指令的結(jié)果,該指令的地址還沒有經(jīng)過基于早期處理加載而被計(jì)算。例如,若該先前的N個(gè)加載操作具有通過固定平移量C所彼此間隔的目標(biāo)地址A1-AN(例如A1,A2=A1+C,....,AN=A(N-1)+C),該裝入存儲(chǔ)單元126C可以推測(cè)地返回位于最近存取的地址AN加上該固定的平移量C的數(shù)據(jù)而作為該加載操作的結(jié)果。這種類型的數(shù)據(jù)推測(cè)在此稱為地址推測(cè)。需要注意的是,地址推測(cè)的其它形式可以使用于很多實(shí)施例中。
取決于在數(shù)據(jù)推測(cè)已經(jīng)執(zhí)行的操作上的結(jié)果的操作,也可以產(chǎn)生推測(cè)的結(jié)果。例如,若地址推測(cè)用于產(chǎn)生加載操作的推測(cè)結(jié)果,任何使用該加載的推測(cè)結(jié)果作為操作數(shù)的執(zhí)行的相關(guān)操作可以產(chǎn)生推測(cè)的結(jié)果,該推測(cè)的結(jié)果可以被其它相關(guān)的操作依次用作操作數(shù)。因此,若確定在該加載操作內(nèi)的該基本(underlying)的推測(cè)是不正確的,該相關(guān)操作的結(jié)果也可以是不正確的,并且因此取決于該加載的操作的整個(gè)相關(guān)性鏈的操作可以需要重新執(zhí)行以產(chǎn)生正確的結(jié)果。在另一方面,若發(fā)現(xiàn)該基本推測(cè)是正確的,該相關(guān)性操作的結(jié)果可以是正確的(假設(shè)那些結(jié)果并非基于任何其它推測(cè)的數(shù)值)。
當(dāng)操作由功能單元而執(zhí)行時(shí),可以確認(rèn)對(duì)于數(shù)據(jù)推測(cè)已經(jīng)執(zhí)行的多個(gè)操作。例如,可以確定用于推測(cè)地產(chǎn)生操作結(jié)果的該數(shù)據(jù)推測(cè)可以通過該功能單元126來(lái)確認(rèn),該功能單元126通過比較該操作的實(shí)際結(jié)果與該推測(cè)結(jié)果而執(zhí)行該操作。由于該正確的結(jié)果已經(jīng)可用,若該數(shù)據(jù)推測(cè)是不正確的,則這樣的操作可以不需要重新執(zhí)行。其它操作可以不需要完整地執(zhí)行而被確認(rèn)。例如,若具有未經(jīng)計(jì)算的地址的加載從初期存儲(chǔ)(例如由于相關(guān)性或地址推測(cè))傳遞本身的結(jié)果,則當(dāng)計(jì)算該加載地址時(shí),該加載的推測(cè)的結(jié)果可以被確認(rèn)。若該數(shù)據(jù)推測(cè)不正確時(shí),這樣操作可以需要重新執(zhí)行(至少部分地執(zhí)行)以產(chǎn)生正確的結(jié)果。
由于對(duì)于數(shù)據(jù)推測(cè)已經(jīng)執(zhí)行的操作以及本身的相關(guān)的操作可以需要重新執(zhí)行,退出隊(duì)列102可以被配置成僅為退出操作,而對(duì)于該操作任何基本的數(shù)據(jù)推測(cè)已經(jīng)解決了。在微處理器100內(nèi)的被配置以確認(rèn)一種或多種類型的數(shù)據(jù)推測(cè)的多種組件在此被稱為用于確認(rèn)數(shù)據(jù)推測(cè)的數(shù)據(jù)推測(cè)確認(rèn)單元或裝置(means)。
重放進(jìn)行中的操作由于不正確數(shù)據(jù)推測(cè)操作可以從調(diào)度器118通過重新發(fā)出而重放。為了使已經(jīng)由該調(diào)度器118所發(fā)出的操作進(jìn)行重放,可以修改在調(diào)度器118內(nèi)的該操作的狀態(tài)以指示該操作應(yīng)該重新發(fā)出。響應(yīng)于該更新的操作狀態(tài),該調(diào)度器118可以被配置以重新發(fā)出該操作給功能單元126。若用于該操作的來(lái)源數(shù)據(jù)在結(jié)果總線130上廣播并且該操作已經(jīng)發(fā)出,則該調(diào)度器也可以被配置以標(biāo)記用于重放的操作。操作的來(lái)源數(shù)據(jù)可以因?yàn)閷?duì)于檢測(cè)到不正確的數(shù)據(jù)推測(cè)的執(zhí)行或重新執(zhí)行操作而重新廣播。通常,重放操作的需求可以被檢測(cè),其是通過檢測(cè)用于操作的不正確的數(shù)據(jù)推測(cè)及該操作需要重新執(zhí)行的數(shù)據(jù)推測(cè)確認(rèn)單元而檢測(cè)或者通過檢測(cè)該操作為因?yàn)橛糜诹硪徊僮鞯牟徽_的數(shù)據(jù)推測(cè)而需要重放的部分相關(guān)性鏈的調(diào)度器而進(jìn)行檢測(cè)。在微處理器100內(nèi)的檢測(cè)該重放操作的需求的組件在此稱為用于檢測(cè)需要重放的操作的重放檢測(cè)單元或裝置。
當(dāng)該操作的實(shí)施例在功能單元126內(nèi)為正在進(jìn)行中時(shí),某些數(shù)據(jù)推測(cè)操作可以確認(rèn)為重放。進(jìn)行中的操作的實(shí)施例是已經(jīng)由調(diào)度器118發(fā)送到功能單元126的操作,但是該操作在該功能單元126內(nèi)還沒有完全地執(zhí)行。當(dāng)該進(jìn)行中的操作的實(shí)施例完成執(zhí)行時(shí),其不應(yīng)該影響在該調(diào)度器118內(nèi)的操作的復(fù)位狀態(tài)(reset station)。否則,該進(jìn)行中的操作的實(shí)施例的完成可更新在該調(diào)度器內(nèi)的操作的狀態(tài)成為完成狀態(tài),使得該調(diào)度器錯(cuò)誤地?zé)o法重新發(fā)出該操作。因此,若檢測(cè)到進(jìn)行中的操作需要重放,檢測(cè)到需要重放的重放檢測(cè)單元可以被配置以禁止該進(jìn)行中的操作的實(shí)施例能夠更新在該調(diào)度器118內(nèi)的操作的狀態(tài)。
在一個(gè)實(shí)施例中,每個(gè)重放檢測(cè)單元可以被配置以更新存儲(chǔ)在與操作相關(guān)的調(diào)度器入口內(nèi)的發(fā)出計(jì)數(shù),以響應(yīng)檢測(cè)對(duì)于操作是不正確的數(shù)據(jù)推測(cè)。圖2例示了包含調(diào)度器入口600的調(diào)度器118的一個(gè)實(shí)施例。調(diào)度器入口600包含用于操作的標(biāo)記符、操作數(shù)標(biāo)識(shí)符(和/或操作數(shù),在某些實(shí)施例中)以及操作碼的存儲(chǔ)604。調(diào)度器入口600也包含存儲(chǔ)與該操作相關(guān)的的狀態(tài)信息606以及發(fā)出計(jì)數(shù)602。當(dāng)接收到操作應(yīng)該重放(例如由于其中一個(gè)操作的操作數(shù)在結(jié)果總線130上重新廣播或數(shù)據(jù)推測(cè)確認(rèn)單元指示用于該操作所執(zhí)行的該數(shù)據(jù)推測(cè)是不正確的)的指示時(shí),該調(diào)度器118可以增加與該操作相關(guān)的發(fā)出計(jì)數(shù)。當(dāng)該調(diào)度器118初始分配(allocate)入口給操作時(shí),用于該操作的發(fā)出計(jì)數(shù)可以設(shè)定為最小數(shù)值(例如零)。
當(dāng)該調(diào)度器118發(fā)出用于執(zhí)行的操作給功能單元126時(shí),該調(diào)度器可以提供與該操作相關(guān)的發(fā)出計(jì)數(shù)給該功能單元126。當(dāng)廣播該操作的結(jié)果時(shí),每個(gè)功能單元126可以被配置以廣播該發(fā)出計(jì)數(shù)。該功能單元126可以處理該發(fā)出計(jì)數(shù)作為部分的操作的標(biāo)記符,并且該發(fā)出計(jì)數(shù)在特定功能單元內(nèi)對(duì)于該操作的處理沒有影響。然而,當(dāng)該調(diào)度器118遇見該操作廣播的結(jié)果時(shí)(例如,當(dāng)該結(jié)果數(shù)值與該操作的發(fā)出計(jì)數(shù)及操作標(biāo)記符和/或本身的操作數(shù)在結(jié)果總線130上廣播時(shí)),該調(diào)度器118可以被配置以比較與該操作的實(shí)施例相關(guān)的發(fā)出計(jì)數(shù)與目前存儲(chǔ)在該操作的調(diào)度器入口600內(nèi)的發(fā)出計(jì)數(shù)。若這兩個(gè)發(fā)出計(jì)數(shù)數(shù)值并不相等,則該調(diào)度器118可以禁止更新在該調(diào)度器內(nèi)的操作的狀態(tài)。因此,若該操作的狀態(tài)及發(fā)出計(jì)數(shù)在該操作的發(fā)出之后但在該操作的執(zhí)行完成之前而在該調(diào)度器118內(nèi)被更新,則由功能單元126完成的操作將不修改在該調(diào)度器內(nèi)的操作的狀態(tài)。需要注意的是,該調(diào)度器118可以更新用于不正確推測(cè)的操作的發(fā)出計(jì)數(shù)而不論該操作是否在某些實(shí)施例中目前是進(jìn)行中的。其它的實(shí)施例可以限制這些已經(jīng)在進(jìn)行中的操作的更新。
在某些實(shí)施例中,由于該不相等的發(fā)出計(jì)數(shù)(issue count)表明該操作的結(jié)果因?yàn)椴徽_的數(shù)據(jù)的緣故而可以是不正確的,則若在該調(diào)度器118內(nèi)的操作的發(fā)出計(jì)數(shù)并不同與該操作的實(shí)施例的結(jié)果一起廣播的該發(fā)出計(jì)數(shù)相匹配,該調(diào)度器118可以禁止發(fā)出取決于該操作的結(jié)果的任何操作。然而,使用該潛在不正確的數(shù)據(jù)數(shù)值所執(zhí)行的任何相關(guān)的操作也將在下一次廣播該不正確推測(cè)操作的結(jié)果的時(shí)候重新發(fā)出。因此,在其它實(shí)施例中,由于正確性將仍然維持,該調(diào)度器118可以允許相關(guān)的操作以使用該不正確地推測(cè)操作的結(jié)果而執(zhí)行。
除了在該調(diào)度器內(nèi)使用發(fā)出計(jì)數(shù),某些實(shí)施例可以使用操作取消(kill)特征以禁止更新標(biāo)記用于重放的操作的狀態(tài),以響應(yīng)于進(jìn)行中的操作的實(shí)施例的完成。圖3例示功能單元126的方塊圖,該功能單元126通過配置以有效地“取消”通過確定為需要重放的進(jìn)行中的操作的實(shí)施例。該功能單元126通過防止關(guān)于該進(jìn)行中的操作的實(shí)施例的任何改變的狀態(tài)信息廣播給該調(diào)度器118而取消進(jìn)行中的操作的實(shí)施例。該功能單元126接收來(lái)自重放檢測(cè)單元確認(rèn)需要重放的發(fā)出的操作的一個(gè)或多個(gè)信號(hào)。包含在該功能單元126內(nèi)的操作取消邏輯700可以運(yùn)行以避免該功能單元126廣播信息,該信息表明在該調(diào)度器內(nèi)的該操作狀態(tài)應(yīng)該更新。由于該調(diào)度器將因此不接收該操作已經(jīng)完成執(zhí)行的指示,該調(diào)度器118將不更新在該調(diào)度器內(nèi)的操作的狀態(tài)。
因?yàn)樵谛枰胤旁摬僮鞯臋z測(cè)之前發(fā)出的操作的實(shí)施例的完成,當(dāng)在該實(shí)施例中使用發(fā)出計(jì)數(shù)以禁止修改該調(diào)度器狀態(tài)時(shí),實(shí)施操作取消邏輯700的實(shí)施例可以通過配置而禁止發(fā)出相關(guān)的操作,以響應(yīng)于該進(jìn)行中的操作的實(shí)施例的完成。然而,由于此功能性可以不需要處理器校正(correctness),其它實(shí)施例可以允許相關(guān)的操作使用由該進(jìn)行中的操作的實(shí)施例所產(chǎn)生的結(jié)果來(lái)發(fā)出及執(zhí)行。在下一次當(dāng)被不正確推測(cè)的操作發(fā)出及執(zhí)行時(shí),任何相關(guān)性操作可以重放。
由于在該不正確推測(cè)被檢測(cè)之前,在功能單元內(nèi)已經(jīng)在進(jìn)行中的操作的實(shí)施例的完成,圖4A例示禁止更新對(duì)于不正確推測(cè)的操作的調(diào)度器狀態(tài)的方法的一個(gè)實(shí)施例。在步驟801,接收進(jìn)行中的操作需要重放的指示。響應(yīng)于該需要重放該操作的檢測(cè),在該調(diào)度器內(nèi)的操作的狀態(tài)可以復(fù)位以表明該操作應(yīng)該重新發(fā)出,如步驟803所示。此外,當(dāng)檢測(cè)到該不正確的推測(cè)時(shí),是在進(jìn)行中的操作的進(jìn)行實(shí)施例的完成被禁止更新在該調(diào)度器內(nèi)的該操作的狀態(tài),如步驟805所示。功能805可以如下實(shí)現(xiàn),其通過有效地取消在功能單元內(nèi)目前執(zhí)行的該操作的進(jìn)行中的實(shí)施例或通過使用在該調(diào)度器內(nèi)的機(jī)構(gòu)(例如發(fā)出計(jì)算)以區(qū)別操作的實(shí)施例,例如依據(jù)圖4B所描述的例子。
由于在檢測(cè)到需要重放該操作之前,在功能單元內(nèi)已經(jīng)在進(jìn)行中的該操作的實(shí)施例的完成,圖4B例示禁止更新對(duì)于該操作的調(diào)度器狀態(tài)的方法的另一實(shí)施例。如同在圖4A中,在步驟801處檢測(cè)到需要重放該操作并且該操作的狀態(tài)在步驟803A在該調(diào)度器內(nèi)響應(yīng)地更新。此外,在該調(diào)度器內(nèi)用于區(qū)別操作的實(shí)施例的發(fā)出計(jì)數(shù)或其它裝置可以做修改,以響應(yīng)檢測(cè)用于該操作的不正確數(shù)據(jù),如在步驟803A所示。當(dāng)該操作的實(shí)施例完成執(zhí)行時(shí),與該操作的實(shí)施例相關(guān)的發(fā)出計(jì)數(shù)可以與在該調(diào)度器內(nèi)的操作相關(guān)的該發(fā)出計(jì)數(shù)做比較,如在步驟805A示。若該兩個(gè)發(fā)出計(jì)數(shù)匹配,在該調(diào)度器內(nèi)的操作的狀態(tài)可以更新以響應(yīng)于該操作的完成,如在步驟807所示。例如,該操作的狀態(tài)可以更新以表明該操作已經(jīng)完成執(zhí)行。若兩個(gè)發(fā)出計(jì)數(shù)并不匹配,該操作的狀態(tài)可以不更新,如在步驟805B所示。因此,基于不正確的數(shù)據(jù)推測(cè)所完成執(zhí)行的該操作的實(shí)施例與應(yīng)該重新發(fā)出以執(zhí)行而沒有不正確的數(shù)據(jù)推測(cè)的該操作的實(shí)施例有所區(qū)別。該區(qū)別允許禁止對(duì)于該操作的狀態(tài)的更新,以響應(yīng)具有不正確數(shù)據(jù)數(shù)值而執(zhí)行的該操作的實(shí)施例的完成。
例示的計(jì)算機(jī)系統(tǒng)圖5表示計(jì)算機(jī)系統(tǒng)900的一個(gè)實(shí)施例的方塊圖,該計(jì)算機(jī)系統(tǒng)900包含通過總線橋902而連結(jié)到多個(gè)系統(tǒng)組件的處理器100。處理器100可以包含如上所述的通過配置以重放操作的重放檢測(cè)單元及調(diào)度器。計(jì)算機(jī)系統(tǒng)的其它實(shí)施例是可行的并且是可以考慮的。在該描繪的系統(tǒng)中,主內(nèi)存200通過內(nèi)存總線906連結(jié)到總線橋902,并且圖形控制器908通過圖形加速端口(AGP)總線910而連結(jié)到總線橋902。多個(gè)外圍組件接口(PCI)裝置912A-912B通過PCI總線914連結(jié)到總線橋902。第二總線橋916也可以通過延伸工業(yè)標(biāo)準(zhǔn)架構(gòu)/工業(yè)標(biāo)準(zhǔn)架構(gòu)(EISA/ISA)總線920以用來(lái)提供電氣接口給一個(gè)或多個(gè)EISA/ISA裝置918。在此實(shí)施例中,處理器10通過中央處理器(CPU)總線924而連結(jié)到總線橋902以及可選的L2高速緩存器928。在某些實(shí)施例中,該處理器100可以包含集成的L1高速緩存器(未圖示)。
總線橋902提供在處理器100、主內(nèi)存200、圖形控制器908及連結(jié)到外圍組件接口總線914的裝置之間的接口。當(dāng)接收到來(lái)自連接到總線橋902的其中一個(gè)裝置的操作時(shí),總線橋902確定(identify)該操作的目標(biāo)(例如,特定的裝置或在PCI總線914的情況下,該目標(biāo)在PCI總線914上)??偩€橋902將該操作傳遞給該目標(biāo)裝置??偩€902通常將從由該來(lái)源裝置或總線所使用的協(xié)議的操作編譯成為由該目標(biāo)裝置或總線所使用的協(xié)議。
除了提供接口給用于外圍組件接口總線914的ISA/EISA總線,第二總線橋916可以并入額外的功能性(functionality)。輸入/輸出控制器(未圖示),不論是與第二總線橋916外部連接或與第二總線橋916并入,也可以包含在計(jì)算機(jī)系統(tǒng)900中以提供用于鍵盤與鼠標(biāo)922以及用于多個(gè)串行與并行端口的操作的支持。在其它實(shí)施例中,外部高速緩存器單元(未圖示)也可以連結(jié)到位于處理器100及總線橋902之間的中央處理器總線924。可選地,該外部高速緩存器可以連結(jié)到總線橋902并且用于該外部高速緩存器的高速緩存器控制邏輯可以集成在總線橋902內(nèi)。L2高速緩存器928是表示為對(duì)于處理器100的后面的配置。需要注意的是,L2高速緩存器928可以與處理器100分離、可以與處理器100集成成卡匣式(例如溝槽1或溝槽A)或甚至可以與處理器100集成在半導(dǎo)體基體上。
主內(nèi)存200是應(yīng)用程序存儲(chǔ)在其中并且處理器100主要由該內(nèi)存執(zhí)行的內(nèi)存。適當(dāng)?shù)闹鲀?nèi)存200可以包含動(dòng)態(tài)隨機(jī)存取內(nèi)存(DynamicRandom Access Memory,DRAM)。例如,多個(gè)儲(chǔ)蓄單元同步動(dòng)態(tài)隨機(jī)存取內(nèi)存(Synchronous Dynamic Random Access Memory,SDRAM)或總線式動(dòng)態(tài)隨機(jī)存取內(nèi)存(RDRAM)可以是適當(dāng)?shù)摹?br>
外圍組件接口裝置912A-912B例示為多個(gè)外圍裝置,例如網(wǎng)絡(luò)接口卡、視頻加速器、音頻卡、硬式或軟式磁盤驅(qū)動(dòng)器或驅(qū)動(dòng)控制器、小型計(jì)算機(jī)系統(tǒng)接口(Small Computer Systems Interface,SCSI)適配器及電話卡。同樣地,ISA 918為例示了多種類型的外圍裝置,諸如調(diào)制解調(diào)器、聲卡及多個(gè)數(shù)據(jù)采集卡,(例如一般用途接口總線(GeneralPurpose Interface Bus,GPIB)或區(qū)域總線接口(field bus interface)卡)。
圖形控制器908用于控制在顯示器926上的文字及圖像的著色(rendering)。圖形控制器908可以使用一般在本領(lǐng)域中已知的典型繪圖加速器,以對(duì)可以有效地轉(zhuǎn)移到主內(nèi)存200內(nèi)及由主內(nèi)存200轉(zhuǎn)移的三維數(shù)據(jù)結(jié)構(gòu)進(jìn)行著色。因此圖形控制器908可以是圖形加速端口總線910的控制者,其中該圖形加速端口總線910能夠請(qǐng)求及接收存取在總線橋902內(nèi)的目標(biāo)接口,由此獲得存取主內(nèi)存200。專用的繪圖總線調(diào)節(jié)來(lái)自主內(nèi)存200的數(shù)據(jù)的快速恢復(fù)。對(duì)于某些操作,圖形控制器908可以進(jìn)一步被配置以在AGP總線910上產(chǎn)生PCI總線處理??偩€橋902的AGP接口可以因此包含功能性以支持AGP協(xié)議處理以及PCI協(xié)議目標(biāo)與初始處理。顯示器926是任何圖像或文字能夠出現(xiàn)在其上的電子顯示器。適當(dāng)?shù)娘@示器926包含陰極射線管(cathode raytube,“CRT”)、液晶顯示器(liquid crystal display,“LCD”)等等。
需要注意的是,雖然該圖形加速端口、外圍組件接口及工業(yè)標(biāo)準(zhǔn)架構(gòu)或延伸工業(yè)標(biāo)準(zhǔn)架構(gòu)總線在該上文的描述中已經(jīng)使用作為例證,任何總線架構(gòu)可以依照所需而被替換。還需要注意的是,計(jì)算機(jī)系統(tǒng)900可以是包含額外的處理器(例如顯示為計(jì)算機(jī)系統(tǒng)900的可選組件的處理器100a)的多處理計(jì)算機(jī)系統(tǒng)。處理器10a可以類似于處理器100。更為特別地,處理器100a可以是處理器100相同的復(fù)制。處理器100a可以通過獨(dú)立總線(如圖5中所示)而連接到總線橋902或者可以與處理器100分享中央處理器總線924。而且,處理器100a可以連結(jié)到類似于L2高速緩存器928的可選的L2高速緩存器928a。
現(xiàn)參閱圖6,該圖表示計(jì)算機(jī)系統(tǒng)900的另一實(shí)施例,該計(jì)算機(jī)系統(tǒng)900可以包含如同上文所述的具有一個(gè)或多個(gè)通過配置以重放操作的重放檢測(cè)單元及調(diào)度器的處理器100。其它實(shí)施例是可行的并且是可以考慮的。在圖6的實(shí)施例中,計(jì)算機(jī)系統(tǒng)900包含多個(gè)處理節(jié)點(diǎn)1012A、1012B、1012C及1012D。每個(gè)處理節(jié)點(diǎn)通過在每個(gè)相對(duì)的處理節(jié)點(diǎn)1012A到1012D內(nèi)所包含的內(nèi)存控制器1016A到1016D而連結(jié)到相對(duì)的內(nèi)存200A到200D。另外,處理節(jié)點(diǎn)1012A到1012D包含用于在該處理節(jié)點(diǎn)1012A至1012D之間通訊的接口邏輯。例如,處理節(jié)點(diǎn)1012A包含用于與處理節(jié)點(diǎn)1012B通訊的接口邏輯1018A、用于與處理節(jié)點(diǎn)1012C通訊的接口邏輯1018B、以及用于與另一個(gè)處理節(jié)點(diǎn)(未圖示)通訊的第三接口邏輯1018C。同樣地,處理節(jié)點(diǎn)1012B包含接口邏輯1018D、1018E以及1018F;處理節(jié)點(diǎn)1012C包含接口邏輯1018G、1018H以及1018I;并且處理節(jié)點(diǎn)1012D包含接口邏輯1018J、1018K以及1018L。處理節(jié)點(diǎn)1012D被連結(jié)以通過接口邏輯1018L與多個(gè)輸入/輸出裝置(例如在菊鏈(daisy chain)配置內(nèi)的裝置1020A到1020B)通訊。其它處理節(jié)點(diǎn)可以以類似的方式與其它輸入/輸出裝置通訊。
處理節(jié)點(diǎn)1012A到1012D實(shí)現(xiàn)用于內(nèi)部處理節(jié)點(diǎn)通訊的封包式鏈接(packet-based link)。在本實(shí)施例中,該鏈接實(shí)現(xiàn)成為單向性線路集(例如線路1024A是用于從處理節(jié)點(diǎn)1012A傳送封包到處理節(jié)點(diǎn)1012B以及線路1024B是用于從處理節(jié)點(diǎn)1012B傳送封包到處理節(jié)點(diǎn)1012A)。如圖6中例示的,其它線路集1024C到1024H是用于在其它處理節(jié)點(diǎn)之間傳送封包。通常,每組線路1024可以包含一個(gè)或多個(gè)數(shù)據(jù)線路、對(duì)應(yīng)于該數(shù)據(jù)線路的一個(gè)或多個(gè)時(shí)鐘線路、以及表示該型式封包被傳送的一個(gè)或多個(gè)控制線路。該鏈接可以以高速緩存器一致的方式運(yùn)行而用于在處理節(jié)點(diǎn)之間通訊或以非一致方式運(yùn)行而用于在處理節(jié)點(diǎn)及輸入/輸出裝置之間通訊(或總線撟接到傳統(tǒng)架構(gòu)的輸入/輸出總線,例如外圍組件接口總線或工業(yè)標(biāo)準(zhǔn)架構(gòu)總線)。而且,該鏈接可以以非一致的方式使用如圖所示在輸入/輸出裝置間的菊式結(jié)構(gòu)而運(yùn)行。需要注意的是,將要從其中一個(gè)處理節(jié)點(diǎn)傳送到另一個(gè)處理節(jié)點(diǎn)的封包可以通過一個(gè)或多個(gè)中間節(jié)點(diǎn)。例如,通過處理節(jié)點(diǎn)1012A到處理節(jié)點(diǎn)1012D所傳送的封包可以通過處理節(jié)點(diǎn)1012B或處理節(jié)點(diǎn)1012C,如圖6所示??梢允褂萌魏芜m當(dāng)?shù)穆窂剿惴?。?jì)算機(jī)系統(tǒng)900的其它實(shí)施例可以包含比顯示在圖6中的實(shí)施例更多或更少的處理節(jié)點(diǎn)。
通常,該封包可以在節(jié)點(diǎn)間的線路1024上作為一個(gè)或多個(gè)的位時(shí)間(bit time)進(jìn)行傳送。該位時(shí)間可以是對(duì)應(yīng)的時(shí)鐘線路上的時(shí)鐘信號(hào)的上升沿或下降沿。該封包可以包含用于初始化處理的指令封包、用于維持高速緩存器一致性的探測(cè)封包以及來(lái)自響應(yīng)于探測(cè)及指令的響應(yīng)封包。
除了內(nèi)存控制器及接口邏輯以外,處理節(jié)點(diǎn)1012A到1012D可以包含一個(gè)或多個(gè)處理器。廣義地說(shuō),處理節(jié)點(diǎn)包括至少一個(gè)處理器并且可選地包含用于與所需的內(nèi)存及其它邏輯進(jìn)行通訊的內(nèi)存控制器。更為特別地,每個(gè)處理節(jié)點(diǎn)1012A到1012D可以包含一個(gè)或多個(gè)處理器100的復(fù)制。外部接口單元可以包含在該節(jié)點(diǎn)1018內(nèi)的該接口邏輯,以及該內(nèi)存控制器1016。
內(nèi)存200A到200D可以包括任何適當(dāng)內(nèi)存裝置。例如,內(nèi)存200A到200D可以包括一個(gè)或多個(gè)總線式動(dòng)態(tài)隨機(jī)存取內(nèi)存(RDRAM)、同步動(dòng)態(tài)隨機(jī)存取內(nèi)存(SDRAM)、靜態(tài)隨機(jī)存取內(nèi)存等等。計(jì)算機(jī)系統(tǒng)900的地址空間在內(nèi)存200A到200D之間分割。每個(gè)處理節(jié)點(diǎn)1012A到1012D可以包含用于決定哪一個(gè)地址映射到哪一個(gè)內(nèi)存200A到200D,并且因此用于特定地址的內(nèi)存請(qǐng)求的線路應(yīng)該映射到哪一個(gè)處理節(jié)點(diǎn)1012A到1012D。在一個(gè)實(shí)施例中,對(duì)于在計(jì)算機(jī)系統(tǒng)900內(nèi)的地址的一致性指針(point)為連結(jié)到對(duì)應(yīng)于該地址的內(nèi)存存儲(chǔ)字節(jié)的內(nèi)存控制器1016A到1016D。換言之,該內(nèi)存控制器1016A到1016D負(fù)責(zé)用于確保存取該對(duì)應(yīng)的內(nèi)存200A到200D的每個(gè)內(nèi)存以高速緩存器一致的方式產(chǎn)生。內(nèi)存控制器1016A到1016D可以包括用于與內(nèi)存200A到200D接口的控制電路。此外,內(nèi)存控制器1016A到1016D可以包含用于隊(duì)列內(nèi)存請(qǐng)求的請(qǐng)求隊(duì)列。
接口邏輯1018A到1018L可以包括用于從該鏈接接收封包及用于緩沖將要傳送到該鏈接上的封包的多種緩沖器。計(jì)算機(jī)系統(tǒng)900可以使用用于傳送封包的任何適當(dāng)?shù)牧鞒炭刂茩C(jī)構(gòu)。例如,在一個(gè)實(shí)施例中,每個(gè)接口邏輯1018在該接口邏輯連接到該鏈接的另一端存儲(chǔ)在該接收器內(nèi)的每個(gè)類型的緩沖器的數(shù)量的計(jì)數(shù)。該接口邏輯并不傳送封包,除非該接收接口邏輯具有自由的緩沖器以存儲(chǔ)該封包。當(dāng)接收緩沖器通過線路向前傳送封包而閑置時(shí),該接收的接口邏輯傳送消息到該傳送接口邏輯,以表明該緩沖器已經(jīng)閑置。這樣的機(jī)構(gòu)可以稱為“憑票(coupon-based)”系統(tǒng)。
輸入/輸出裝置1020A到1020B可以是任何適當(dāng)?shù)妮斎?輸出裝置。例如,輸入/輸出裝置1020A到1020B可以包含用于與另一個(gè)計(jì)算機(jī)系統(tǒng)通訊的裝置,該計(jì)算機(jī)系統(tǒng)是與裝置相連接(例如網(wǎng)絡(luò)接口卡或調(diào)制解調(diào)器)。而且,輸入/輸出裝置1020A到1020B可以包含視頻加速器、音頻卡、硬式或軟式磁盤驅(qū)動(dòng)器或驅(qū)動(dòng)控制器、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)適配器及電話卡、聲卡及多個(gè)數(shù)據(jù)采集卡,例如一般用途接口總線(GPIB)或區(qū)域總線適配卡。需要注意的是,該術(shù)語(yǔ)“輸入/輸出裝置”及術(shù)語(yǔ)“外圍裝置”在此是同義詞。
如同其中所使用的,該術(shù)語(yǔ)“時(shí)鐘周期”是指時(shí)間間隔,多級(jí)的指令處理路線在該時(shí)間內(nèi)完成本身的任務(wù)。指令及計(jì)算數(shù)值依據(jù)定義該時(shí)鐘循環(huán)的時(shí)鐘信號(hào)被內(nèi)存組件(例如緩存器或數(shù)組)所捕獲。例如,內(nèi)存組件可以捕獲依據(jù)該時(shí)鐘信號(hào)的上升沿或下降沿的數(shù)值。
該上文的討論描述信號(hào)為“確立的(asserted)”。當(dāng)信號(hào)傳遞表示特定片段信息的數(shù)值時(shí),該信號(hào)可以定義為確立的。當(dāng)特定信號(hào)傳遞一個(gè)二進(jìn)位1數(shù)值時(shí),或者可選地,當(dāng)特定信號(hào)傳遞一個(gè)二進(jìn)位零數(shù)值時(shí),該特定的信號(hào)可以定義為確立的。
許多變化及修改對(duì)于本領(lǐng)域技術(shù)人員在完全了解該上述的公開內(nèi)容時(shí)將變得顯而易見。其意圖在于下列的權(quán)利要求將被解釋以包含所有這樣的變化及修改。
工業(yè)實(shí)用性本發(fā)明通常用于微處理器。
權(quán)利要求
1.一種微處理器(100),其包括一個(gè)或多個(gè)功能單元(126),其中每個(gè)單元被配置以執(zhí)行操作;調(diào)度器(118),其被配置以通過一個(gè)或多個(gè)功能單元(126)中的一個(gè)單元發(fā)出用于執(zhí)行的多個(gè)操作的每一個(gè)操作,其中該調(diào)度器(118)被配置以維持用于該多個(gè)操作的每一個(gè)操作的狀態(tài)信息(606),其中該狀態(tài)信息(606)表示相關(guān)的操作是否已經(jīng)完成執(zhí)行;以及重放檢測(cè)單元,其被配置以檢測(cè)該多個(gè)操作中的一個(gè)操作應(yīng)該重放,其中當(dāng)該多個(gè)操作中的一個(gè)操作被檢測(cè)為需要重放時(shí),若該多個(gè)操作中的一個(gè)操作的實(shí)施例目前正被該一個(gè)或多個(gè)功能單元(126)中的一個(gè)單元執(zhí)行,則該重放檢測(cè)單元被配置以禁止對(duì)該多個(gè)操作中的一個(gè)操作的狀態(tài)信息(606)的更新,以響應(yīng)于該多個(gè)操作中的一個(gè)操作的實(shí)施例的執(zhí)行。
2.如權(quán)利要求1所述的微處理器(100),其中該重放檢測(cè)單元被配置,其通過使該執(zhí)行該操作的實(shí)施例的功能單元(126)中的一個(gè)單元不信號(hào)通知該調(diào)度器(118)該操作的實(shí)施例的完成,而禁止對(duì)該操作中的一個(gè)操作的狀態(tài)信息(606)的更新。
3.如權(quán)利要求1所述的微處理器(100),其中該重放檢測(cè)單元被配置,其通過使該調(diào)度器(118)修改與該其中一個(gè)操作相關(guān)的發(fā)出計(jì)數(shù)(602),而禁止對(duì)該操作中的一個(gè)操作的狀態(tài)信息(606)的更新,其中若該操作的發(fā)出計(jì)數(shù)(602)并不與該操作的實(shí)施例的發(fā)出計(jì)數(shù)(602)相匹配,則該調(diào)度器(118)被配置以不更新該狀態(tài)信息(606)而響應(yīng)該操作的實(shí)施例的完成。
4.如權(quán)利要求1所述的微處理器(100),其中響應(yīng)于用于檢測(cè)該多個(gè)操作中一個(gè)操作的不正確數(shù)據(jù)推測(cè)的數(shù)據(jù)推測(cè)確認(rèn)單元,該調(diào)度器(118)被配置以更新與該多個(gè)操作中的一個(gè)操作相關(guān)的狀態(tài)信息(606),以指示該相關(guān)操作需要重新發(fā)出。
5.一種計(jì)算機(jī)系統(tǒng)(900),包括內(nèi)存(200);以及處理器(100),其連結(jié)到該內(nèi)存(200)并且包括一個(gè)或多個(gè)功能單元(126),每一個(gè)單元被配置以執(zhí)行操作;調(diào)度器(118),其被配置以通過該一個(gè)或多個(gè)功能單元(126)中的一個(gè)單元發(fā)出用于執(zhí)行的多個(gè)操作的每一個(gè)操作;以及重放檢測(cè)單元,其被配置以檢測(cè)該多個(gè)操作中的一個(gè)操作應(yīng)該重放;其特征在于該調(diào)度器(118)被配置以維持對(duì)于該多個(gè)操作的每一個(gè)操作的狀態(tài)信息(606),其中該狀態(tài)信息(606)指示相關(guān)的操作是否已經(jīng)完成了執(zhí)行;以及當(dāng)檢測(cè)到該多個(gè)操作中的一個(gè)需要重放時(shí),若該多個(gè)操作中的一個(gè)目前正被該一個(gè)或多個(gè)功能單元(126)中的一個(gè)單元執(zhí)行,該重放檢測(cè)單元被配置以禁止對(duì)該多個(gè)操作中的一個(gè)操作的狀態(tài)信息(606)的更新以響應(yīng)于該多個(gè)操作中的一個(gè)操作的實(shí)施例的的執(zhí)行。
6.如權(quán)利要求5所述的計(jì)算機(jī)系統(tǒng)(900),其中該重放檢測(cè)單元被配置,以通過使執(zhí)行該操作的實(shí)施例的功能單元(126)中的一個(gè)單元不信號(hào)通知該調(diào)度器(118)該操作的實(shí)施例的完成,而禁止對(duì)該操作中的一個(gè)操作的狀態(tài)信息(606)更新。
7.如權(quán)利要求5所述的計(jì)算機(jī)系統(tǒng)(900),其中該重放檢測(cè)單元被配置,以通過使該調(diào)度器(118)修改與該操作中的一個(gè)操作相關(guān)的發(fā)出計(jì)數(shù)(602),而禁止對(duì)該操作中的一個(gè)操作的狀態(tài)信息(606)的更新,其中若該操作的該發(fā)出計(jì)數(shù)(602)并不與該操作的實(shí)施例的發(fā)出計(jì)數(shù)(602)相匹配,則該調(diào)度器(118)被配置以不更新該狀態(tài)信息(606)以響應(yīng)于該操作的實(shí)施例的完成。
8.一種方法,包括發(fā)出用于執(zhí)行的操作的實(shí)施例;緊接著所述發(fā)出,接收該操作應(yīng)該重放的指示;響應(yīng)于該接收,禁止對(duì)在調(diào)度器(118)內(nèi)該操作的狀態(tài)的更新以響應(yīng)于該操作的實(shí)施例的完成。
9.如權(quán)利要求8所述的方法,其中所述禁止包括使執(zhí)行該操作的實(shí)施例的功能單元(126)不信號(hào)通知該調(diào)度器(118)該操作的實(shí)施例的完成。
10.如權(quán)利要求8所述的方法,其中該禁止包括調(diào)度器(118),其修改與該操作相關(guān)的發(fā)出計(jì)數(shù)(602)以響應(yīng)于接收該操作應(yīng)該重放的指示;以及若該操作的該發(fā)出計(jì)數(shù)(602)并不與該操作的實(shí)施例的發(fā)出計(jì)數(shù)(602)相匹配,該調(diào)度器(118)不更新與該操作相關(guān)的狀態(tài)信息(606)以響應(yīng)于該操作的實(shí)施例的完成。
全文摘要
本發(fā)明涉及一種微處理器(100),其可包括被配置以執(zhí)行操作的一個(gè)或多個(gè)功能單元(126)、被配置以發(fā)出操作給該功能單元(126)而用于執(zhí)行的調(diào)度器(118)以及至少一個(gè)重放檢測(cè)單元。該調(diào)度器(118)可以被配置以維持用于每個(gè)操作的狀態(tài)信息(606)。在其它實(shí)施例中,這樣的狀態(tài)信息(606)可以指示是否相關(guān)的操作已經(jīng)完成執(zhí)行。該重放檢測(cè)單元可以被配置以檢測(cè)在該調(diào)度器(118)內(nèi)的其中一個(gè)操作應(yīng)該重放。當(dāng)操作被檢測(cè)為需要重放時(shí),若該操作的實(shí)施例目前正被該功能單元(126)中的一個(gè)所執(zhí)行,該重放檢測(cè)單元被配置以禁止對(duì)于該操作狀態(tài)信息(606)的更新以響應(yīng)于該操作進(jìn)行中的實(shí)施例的執(zhí)行。計(jì)算機(jī)系統(tǒng)(900)的多個(gè)實(shí)施例可以包含這樣的微處理器(100)。
文檔編號(hào)G06F9/30GK1784655SQ200480011949
公開日2006年6月7日 申請(qǐng)日期2004年1月9日 優(yōu)先權(quán)日2003年5月2日
發(fā)明者M·A·菲利普, J·K·皮克特, B·T·桑德爾 申請(qǐng)人:先進(jìn)微裝置公司