亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

識(shí)別微處理器中的數(shù)據(jù)推測操作的推測指針的制作方法

文檔序號(hào):6482823閱讀:288來源:國知局
專利名稱:識(shí)別微處理器中的數(shù)據(jù)推測操作的推測指針的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及微處理器領(lǐng)域,并且尤其涉及在微處理器中執(zhí)行數(shù)據(jù)推測。
背景技術(shù)
超標(biāo)量微處理器通過同時(shí)執(zhí)行多個(gè)指令以及通過使用符合其設(shè)計(jì)的最短可行的時(shí)鐘周期,而達(dá)到高性能。然而,各指令之間的數(shù)據(jù)和控制流相依性可以限制在任何給定的時(shí)間可發(fā)出多少個(gè)指令。因此,有些微處理器為了達(dá)成額外的增益,而支持推測執(zhí)行功能。
其中一種類型的推測是控制流推測??刂屏魍茰y推測程序控制將進(jìn)行的方向。例如,可以使用分支推測以推測是否將采用一個(gè)分支??梢允褂迷S多種類型的分支推測,范圍從每次僅作相同推測的方法,到那些在程序中保留先前各分支的復(fù)雜歷史記錄,而基于歷史來作推測的方法??赏ㄟ^硬件最佳化、編譯器最佳化、或者兩者兼而有之,而有助于分支推測。根據(jù)由分支推測機(jī)構(gòu)所提供的推測,可以推測地取得指令并執(zhí)行指令。當(dāng)最后評(píng)估分支指令時(shí),可驗(yàn)證該分支推測。若該推測不正確,則可撤銷基于該不正確的推測而推測執(zhí)行的任何指令。
另一種類型的推測是數(shù)據(jù)推測,該數(shù)據(jù)推測推測數(shù)據(jù)值。所提出的數(shù)據(jù)推測的類型包括以推測方式產(chǎn)生用于內(nèi)存操作的地址,以及推測地產(chǎn)生用于計(jì)算機(jī)操作的數(shù)據(jù)值。與控制推測相同,最后評(píng)估用來推測產(chǎn)生值的基本(underlying)狀況,允許可以驗(yàn)證或取消。

發(fā)明內(nèi)容
本發(fā)明公開了根據(jù)與微處理器中各種驗(yàn)證單元有關(guān)的推測指針,而用于退出操作的各種方法和系統(tǒng)的實(shí)施例,該推測指針識(shí)別哪一個(gè)操作為數(shù)據(jù)推測操作。在一個(gè)實(shí)施例中,微處理器可包括退出隊(duì)列和一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元。配置各數(shù)據(jù)推測驗(yàn)證單元以驗(yàn)證對(duì)操作所執(zhí)行的數(shù)據(jù)推測。每個(gè)數(shù)據(jù)推測驗(yàn)證單元產(chǎn)生用來識(shí)別未完成(outstanding)的操作的個(gè)別推測指針,對(duì)這些未完成的操作數(shù)據(jù)推測已由數(shù)據(jù)推測驗(yàn)證單元所驗(yàn)證。配置退出隊(duì)列以根據(jù)從各數(shù)據(jù)推測驗(yàn)證單元所接收的推測指針而選擇性地退出各操作。
在一個(gè)實(shí)施例中,其中數(shù)據(jù)推測驗(yàn)證單元可包含于加載存儲(chǔ)單元中??膳渲眠@樣的數(shù)據(jù)推測驗(yàn)證單元以驗(yàn)證數(shù)據(jù)推測的類型,譬如相依性推測、地址推測、和/或數(shù)據(jù)推測。例如,可配置包含于加載存儲(chǔ)單元中的數(shù)據(jù)推測驗(yàn)證單元,以驗(yàn)證推測較遲加載操作(younger loadoperation)并不根據(jù)(依賴于)具有未經(jīng)計(jì)算地址的較早存儲(chǔ)操作(older store operation)的相依性推測。同樣地,可配置包含于加載存儲(chǔ)單元中的數(shù)據(jù)推測驗(yàn)證單元,以驗(yàn)證推測較遲加載操作將等同于較早存儲(chǔ)操作的來源的相依性推測。
另外一個(gè)數(shù)據(jù)推測驗(yàn)證單元可包含于功能單元中,該功能單元被配置以執(zhí)行非內(nèi)存操作。可配置這樣的數(shù)據(jù)推測驗(yàn)證單元以驗(yàn)證推測非內(nèi)存操作結(jié)果的數(shù)據(jù)推測。而另外一個(gè)數(shù)據(jù)推測驗(yàn)證單元可包含于內(nèi)存控制器中,并被配置以驗(yàn)證內(nèi)存推測。
在一個(gè)實(shí)施例中,可配置其中一個(gè)數(shù)據(jù)推測驗(yàn)證單元以接收識(shí)別每個(gè)未完成的操作的信息,對(duì)于這些未完成的操作已執(zhí)行由該數(shù)據(jù)推測驗(yàn)證單元所驗(yàn)證的一種類型的數(shù)據(jù)推測??膳渲迷摂?shù)據(jù)推測驗(yàn)證單元以驗(yàn)證哪一個(gè)未完成的操作已由該數(shù)據(jù)推測驗(yàn)證單元驗(yàn)證,通過前進(jìn)(advance)個(gè)別的推測指針以識(shí)別一個(gè)操作,該操作要比已驗(yàn)證了一種數(shù)據(jù)推測類型的該最遲的未完成的操作更遲,并且要比已執(zhí)行了該種數(shù)據(jù)推測類型的另一個(gè)未完成的操作更早的操作。若目前沒有由該數(shù)據(jù)推測驗(yàn)證單元識(shí)別為數(shù)據(jù)推測的操作,則該數(shù)據(jù)推測驗(yàn)證單元可設(shè)定其個(gè)別推測指針的值以指示目前沒有未完成的操作相對(duì)于該數(shù)據(jù)推測驗(yàn)證單元是數(shù)據(jù)推測。
在退出隊(duì)列接收多個(gè)推測指針的實(shí)施例中,可配置退出隊(duì)列以通過判斷該操作是否要早于由所有推測指針識(shí)別是非數(shù)據(jù)推測的最遲操作,而判定操作是否退出。
在計(jì)算機(jī)系統(tǒng)中可包括微處理器,該微處理器包括一個(gè)或多個(gè)產(chǎn)生推測指針的數(shù)據(jù)推測驗(yàn)證單元,以及根據(jù)這些推測指針而退出操作的退出隊(duì)列。
在一些實(shí)施例中,一種方法可以包含對(duì)于操作執(zhí)行(perform)數(shù)據(jù)推測;驗(yàn)證單元驗(yàn)證對(duì)操作所執(zhí)行的數(shù)據(jù)推測;驗(yàn)證單元產(chǎn)生推測指針以指示經(jīng)驗(yàn)證后對(duì)驗(yàn)證單元來說不是數(shù)據(jù)推測的操作;以及針對(duì)指出那些對(duì)驗(yàn)證單元而言不是數(shù)據(jù)推測操作的推測指針,而退出該操作作為響應(yīng)。
這樣的方法也可包含一個(gè)或多個(gè)其它的驗(yàn)證單元,其驗(yàn)證對(duì)于其它操作所執(zhí)行的數(shù)據(jù)推測,并產(chǎn)生其它的推測指針,其指示對(duì)驗(yàn)證單元而言其它的操作不是數(shù)據(jù)推測的其它操作。退出此操作也許要依賴于(根據(jù))所有的推測指針。各驗(yàn)證單元可驗(yàn)證不同類型的數(shù)據(jù)推測。


當(dāng)結(jié)合附圖考慮下面詳細(xì)的描述時(shí),可以得到本發(fā)明的更好的理解,其中圖1表示依照本發(fā)明的微處理器;圖2A表示依照一個(gè)實(shí)施例,如何提前推測指針的流程圖。
圖2B表示依照一個(gè)實(shí)施例,根據(jù)現(xiàn)用推測指針條件退出操作的方法的流程圖。
圖3表示依照一個(gè)實(shí)施例例示的計(jì)算機(jī)系統(tǒng)。
圖4表示依照另一個(gè)實(shí)施例的另一例示的計(jì)算機(jī)系統(tǒng)。
具體實(shí)施例方式
雖然本發(fā)明易于作各種的修改和替代(可選)形式,參考附圖例示的方式而詳細(xì)說明了本發(fā)明的特定實(shí)施例。然而,應(yīng)了解到此處特定實(shí)施例的說明并不是用來限制本發(fā)明為所公開的特定形式,而是相反地,本發(fā)明將包括所有落在所附權(quán)利要求所限定的本發(fā)明的精神和范圍內(nèi)的修改、等效和替代。應(yīng)注意的是,標(biāo)題的目的是僅用來組織本說明書,而并非想用來限制或解釋說明的內(nèi)容或權(quán)利要求。另外,要注意的是,單詞“可以、也許(may)”是以容許的意義(即,具有潛在性(potential to),能夠(being able to),而非以命令的意義(即必須(must))而使用于整個(gè)申請(qǐng)。術(shù)語“包括(include)”及其衍生詞意味著“包括,但不局限于”。術(shù)語“連接(connected)”意味著“直接或者不直接連接”,而術(shù)語“耦接(coupled)”意味著“直接或者不直接耦接”。
圖1是微處理器100的一個(gè)實(shí)施例的方塊圖。配置微處理器100以執(zhí)行存儲(chǔ)于系統(tǒng)內(nèi)存200中的指令。許多的這些指令操作存儲(chǔ)于系統(tǒng)內(nèi)存200中的數(shù)據(jù)。值得注意的是系統(tǒng)內(nèi)存200可物理(physically)分布于整個(gè)計(jì)算機(jī)系統(tǒng),并可由一個(gè)或多個(gè)微處理器100所存取。
微處理器100可包括指令高速緩存器106和數(shù)據(jù)高速緩存器128。微處理器100可包括耦接到指令高速緩存器106的預(yù)取單元108??膳渲谜{(diào)度單元(dispatch unit)104以接收從指令高速緩存器106來的指令,并調(diào)度操作給調(diào)度器(scheduler)118。一個(gè)或多個(gè)調(diào)度器118可耦接以接收從調(diào)度單元104來的分派操作,并發(fā)出操作給一個(gè)或多個(gè)執(zhí)行核心124。執(zhí)行核心124可每一個(gè)都包括加載/存儲(chǔ)單元配置以執(zhí)行存取到數(shù)據(jù)高速緩存器128。由執(zhí)行核心124所產(chǎn)生的結(jié)果可輸出到結(jié)果總線130??墒褂眠@些結(jié)果作為用于后續(xù)發(fā)出指令的操作域值和/或存儲(chǔ)到注冊(register)文件116。退出隊(duì)列102可耦接到調(diào)度器118和調(diào)度單元104??膳渲猛顺鲫?duì)列102以判定何時(shí)可退出每個(gè)發(fā)出的操作。在一個(gè)實(shí)施例中,可設(shè)計(jì)微處理器100與x86架構(gòu)兼容。應(yīng)注意的是微處理器100也可包括許多其它的組件。例如,微處理器100可包括分支推測單元(圖中未表示)。
在指令由調(diào)度單元104接收前,指令高速緩存器106可暫時(shí)存儲(chǔ)這些指令。可通過從系統(tǒng)內(nèi)存200經(jīng)過預(yù)取單元108預(yù)先取得指令碼,而將指令碼提供給指令高速緩存器106??梢愿鞣N配置方式(例如,集合相關(guān)聯(lián)、完全相關(guān)聯(lián)、或直接映射),而實(shí)施指令高速緩存器106。在一些實(shí)施例中,可以有多個(gè)層級(jí)(level)的指令和/或數(shù)據(jù)高速緩存器106和128??扇鐖D中所示,某些層級(jí)可與微處理器100整合(integrated),而高速緩存器的其它層級(jí)可設(shè)于微處理器的外部。
預(yù)取單元108可從系統(tǒng)內(nèi)存200預(yù)先取得指令碼而存儲(chǔ)于指令高速緩存器106內(nèi)。在一個(gè)實(shí)施例中,可配置預(yù)取單元108以將碼從系統(tǒng)內(nèi)存200突發(fā)(burst)到指令高速緩存器106中。預(yù)取單元108可使用多種特定碼的預(yù)先取得技術(shù)和算法。
調(diào)度單元104可輸出信號(hào),其包括可由執(zhí)行核心124所執(zhí)行的位編碼操作以及操作數(shù)地址信息、直接數(shù)據(jù)(immediate data)、和/或位移數(shù)據(jù)(displacement data)。在一些實(shí)施例中,調(diào)度單元104可包括譯碼電路(圖中未表示)用來將某些指令譯碼成可在執(zhí)行核心124內(nèi)執(zhí)行的操作。簡單的指令可對(duì)應(yīng)于單一操作。在一些實(shí)施例中,更復(fù)雜的指令可對(duì)應(yīng)于多個(gè)操作。若操作包含更新寄存器,則可保留注冊文件116內(nèi)的寄存器位置(例如,在譯碼該操作后)以存儲(chǔ)推測寄存器狀態(tài)(在一可選實(shí)施例中,可以使用重序緩沖器(reorder buffer)以存儲(chǔ)對(duì)于每個(gè)寄存器的一個(gè)或多個(gè)推測寄存器狀態(tài))。寄存器映射可將來源和目的地操作數(shù)的邏輯寄存器名稱轉(zhuǎn)譯為實(shí)際寄存器名稱,以便促使寄存器重新命名。寄存器映射可追蹤在注冊文件116內(nèi)的哪些個(gè)寄存器現(xiàn)正被分配。
圖1的微處理器100支持不按序的執(zhí)行(out of order execution)。退出隊(duì)列102可保持追蹤用于寄存器讀取和寫入操作的原始的程序序列,允許推測指令執(zhí)行和分支錯(cuò)誤推測恢復(fù),以及促進(jìn)精確的排除(exception)??梢韵冗M(jìn)先出的配置方式執(zhí)行退出隊(duì)列102,其中當(dāng)它們有效時(shí),操作移到緩沖器的“底部”,留出空間給新的在隊(duì)列的“頂部”的入口。退出隊(duì)列102可以退出操作,以響應(yīng)于完成執(zhí)行的操作及在任何操作上的任何數(shù)據(jù)或控制推測,直到包括依照程序命令的操作被檢驗(yàn)。當(dāng)退出了在實(shí)際寄存器中產(chǎn)生值的操作時(shí),退出隊(duì)列102可將該實(shí)際寄存器的推測狀態(tài)指定為微處理器100的架構(gòu)狀態(tài)。在一些實(shí)施例中,退出隊(duì)列102可執(zhí)行為重序緩沖器的一部分。這樣的重序緩沖器也可提供用于推測寄存器狀態(tài)的數(shù)據(jù)值存儲(chǔ),以便支持寄存器重新命名。值得注意的是,在其它的實(shí)施例中,退出隊(duì)列102可不提供任何的數(shù)據(jù)值存儲(chǔ)。代替地(反而),當(dāng)退出操作時(shí),退出隊(duì)列102可解除分配在注冊文件116中的寄存器,該注冊文件116不再需要存儲(chǔ)推測寄存器狀態(tài),并提供信號(hào)給寄存器映射以指示哪些寄存器現(xiàn)正閑置著。通過在注冊文件116內(nèi)維持推測的寄存器狀態(tài)(或者,在可選實(shí)施例中,在重序緩沖器內(nèi)),直到產(chǎn)生這些狀態(tài)的每個(gè)操作有效為止,若分支推測為不正確,則在注冊文件116中沿著錯(cuò)誤推測路徑而推測執(zhí)行操作的結(jié)果可以無效。
若所需的特定操作的操作數(shù)為寄存器位置,則可傳遞(route)寄存器位置信息給寄存器映射(或重序緩沖器)。例如,在x86架構(gòu)中,有8個(gè)32位邏輯寄存器(例如,EAX、EBX、ECX、EDX、EBP、ESI、EDI和ESP)。物理注冊文件116(或重序緩沖器)包括存儲(chǔ)改變這些邏輯暫存的內(nèi)容的結(jié)果,允許不按序執(zhí)行??煞峙溆谧晕募?16中的物理寄存器,以存儲(chǔ)判定修正其中一個(gè)邏輯寄存器內(nèi)容的每個(gè)操作的結(jié)果。因此,在執(zhí)行特定程序期間的不同點(diǎn),注冊文件116(或者,在可選實(shí)施例中的重序緩沖器)可具有一個(gè)或多個(gè)包含給定邏輯寄存器所推測執(zhí)行內(nèi)容的寄存器。
寄存器映射可將物理寄存器指定為指定的用于某一操作的目的地操作數(shù)的特定邏輯寄存器。調(diào)度單元104可判定注冊文件116具有一個(gè)或多個(gè)先前分配指定給在給定操作中特定為來源操作數(shù)的邏輯寄存器的物理寄存器。寄存器映射可提供標(biāo)記,用于標(biāo)記最新指定給該邏輯寄存器的物理寄存器。使用該標(biāo)記以存取于該注冊文件116中的操作數(shù)的數(shù)據(jù)值,或通過傳送在結(jié)果總線130上的結(jié)果而接收數(shù)據(jù)值。若該操作數(shù)對(duì)應(yīng)于內(nèi)存位置,則可通過加載/存儲(chǔ)單元222在結(jié)果總線(用于結(jié)果傳送和/或存儲(chǔ)于注冊文件116中)上提供操作數(shù)值。當(dāng)由其中一個(gè)調(diào)度器118發(fā)出操作時(shí),可提供操作數(shù)值給一個(gè)或多個(gè)執(zhí)行核心124。值得注意的是在可選的實(shí)施例中,當(dāng)調(diào)度操作時(shí)可提供操作數(shù)值給對(duì)應(yīng)的調(diào)度器118(代替了當(dāng)發(fā)出操作時(shí)提供給對(duì)應(yīng)的執(zhí)行核心124)。
提供于調(diào)度單元104的輸出的位編碼操作和立即數(shù)據(jù)可路由(傳遞)給一個(gè)或多個(gè)調(diào)度器118。應(yīng)注意的是在此處所使用的,調(diào)度器是一種裝置,其檢測何時(shí)操作準(zhǔn)備用于執(zhí)行,以及發(fā)出準(zhǔn)備好的操作給一個(gè)或多個(gè)功能單元。例如,保留站(reservation station)為一個(gè)調(diào)度器。在一個(gè)調(diào)度器或一組調(diào)度器中的操作也可稱為指令中或操作窗口中或調(diào)度(scheduling)窗口中的操作。每個(gè)調(diào)度器118能夠保持幾個(gè)等待發(fā)送到執(zhí)行核心124的待決(pending)操作的操作信息(例如,位編碼執(zhí)行位以及操作數(shù)值、操作數(shù)標(biāo)記、和/或?qū)崟r(shí)數(shù)據(jù))。在一些實(shí)施例中,各調(diào)度器118可不提供操作數(shù)值存儲(chǔ)。代替地,每個(gè)調(diào)度器可監(jiān)視發(fā)出的操作和在注冊文件116中可用的結(jié)果,以便判定何時(shí)將由功能單元126(從注冊文件116或結(jié)果總線130)讀取操作數(shù)值。在一些實(shí)施例中,各調(diào)度器118可與專用的功能單元126相關(guān)。在其它的實(shí)施例中,單一調(diào)度器118可發(fā)出操作給不止一個(gè)的功能單元126。
可提供調(diào)度器118以暫時(shí)存儲(chǔ)將由執(zhí)行核心124所執(zhí)行的操作信息。如前所述,各調(diào)度器118可存儲(chǔ)即將執(zhí)行操作的操作信息。此外,各調(diào)度器可存儲(chǔ)已經(jīng)執(zhí)行但也許仍再發(fā)出的操作的操作信息。可取得任何執(zhí)行所需的操作數(shù)時(shí),可發(fā)送操作給執(zhí)行核心124以執(zhí)行。因此,執(zhí)行操作的次序可不相同于原來程序指令序列的次序。包含數(shù)據(jù)推測的操作可維持在調(diào)度器118中,至少直到這些操作變成非推測為止,以便若該數(shù)據(jù)推測為不正確的話,可再發(fā)出這些操作。
在一個(gè)實(shí)施例中,各執(zhí)行核心124可包括多個(gè)功能單元126(例如,如圖1中所示的功能單元126A到126C)??膳渲弥T如126A的某些功能單元以執(zhí)行加法和減法的整數(shù)算術(shù)操作,以及位移、旋轉(zhuǎn)、邏輯操作以及分支操作??膳渲弥T如126B的其它的功能單元以適合浮點(diǎn)操作??膳渲弥T如126A的一個(gè)或多個(gè)功能單元以執(zhí)行由諸如126C的功能單元所執(zhí)行的加載和存儲(chǔ)內(nèi)存操作的地址的產(chǎn)生,該諸如126C的功能單元執(zhí)行加載和存儲(chǔ)操作以存取存儲(chǔ)在數(shù)據(jù)高速緩存器128中和/或系統(tǒng)內(nèi)存中的數(shù)據(jù)。在一個(gè)實(shí)施例中,這樣的功能單元126C可配置有加載/存儲(chǔ)緩沖器,該加載/存儲(chǔ)緩沖器具有多個(gè)用于即將執(zhí)行加載和/或存儲(chǔ)的數(shù)據(jù)和地址信息的存儲(chǔ)位置。
一個(gè)或多個(gè)功能單元126也可提供與條件分支推測單元執(zhí)行的相關(guān)的分支指令的信息,而使得若分支為錯(cuò)誤推測,則分支推測單元可去除(flush)接續(xù)于(subsequent to)錯(cuò)誤推測分支的已進(jìn)入指令處理管線的指令,以及對(duì)預(yù)取單元108重新定向。然后重新定向的預(yù)取單元108可開始從指令高速緩存器106或系統(tǒng)內(nèi)存200取得正確的指令組。在這樣的情況下,可丟棄錯(cuò)誤推測分支指令后所發(fā)生的原先程序序列中的指令結(jié)果,包括以推測方式執(zhí)行和暫時(shí)存儲(chǔ)于注冊文件116中的指令結(jié)果。
若更新了寄存器值的話,則可以由輸出執(zhí)行核心124內(nèi)的功能單元126所產(chǎn)生的結(jié)果在結(jié)果總線130上給注冊文件116。若改變了內(nèi)存位置的內(nèi)容,則在執(zhí)行核心124內(nèi)所產(chǎn)生的結(jié)果可提供給加載/存儲(chǔ)單元126C。
數(shù)據(jù)高速緩存器128為高速緩存器,提供用來暫時(shí)存儲(chǔ)轉(zhuǎn)移在執(zhí)行核心124和系統(tǒng)內(nèi)存200之間的數(shù)據(jù)。如同上述的指令高速緩存器106,指令高速緩存器128也可以不同的特定內(nèi)存配置實(shí)施,包括一組集合相關(guān)的配置。此外,在一些實(shí)施例中,可實(shí)現(xiàn)指令高速緩存器106和指令高速緩存器128結(jié)合在一體的高速緩存器中。
在一些實(shí)施例中,微處理器100可包括整合的內(nèi)存控制器160,允許微處理器直接與系統(tǒng)內(nèi)存200接口。在其它的實(shí)施例中,內(nèi)存控制器160可包含在把微處理器100間接耦接到系統(tǒng)內(nèi)存200的總線橋中。數(shù)據(jù)推測如其中所述,若可以發(fā)現(xiàn)數(shù)據(jù)值是不正確而結(jié)果要重新計(jì)算的話,則數(shù)據(jù)值是推測性的。推測的數(shù)據(jù)值是無法確實(shí)識(shí)別正確與否的數(shù)據(jù)值。若數(shù)據(jù)值為已執(zhí)行的某一數(shù)據(jù)推測操作的結(jié)果,或若該數(shù)據(jù)值依賴于另一個(gè)推測數(shù)據(jù)值的話(例如,若數(shù)據(jù)值是由具有一個(gè)或多個(gè)推測的操作數(shù)的操作所產(chǎn)生的結(jié)果),則可能要再計(jì)算數(shù)據(jù)值。
在微處理器100內(nèi)的各種機(jī)構(gòu)可執(zhí)行數(shù)據(jù)推測。例如,調(diào)度單元104、內(nèi)存控制器160、和/或一個(gè)或多個(gè)功能單元126可各自執(zhí)行用于特定操作的數(shù)據(jù)推測。調(diào)度單元104可檢測一個(gè)操作的結(jié)果可作為用于另一個(gè)操作的推測的操作數(shù)的情況。例如,調(diào)度單元可推測加載操作將通過先前的存儲(chǔ)操作,而存取存儲(chǔ)于數(shù)據(jù)高速緩存器128的數(shù)據(jù)。調(diào)度單元104可以反應(yīng)地識(shí)別存儲(chǔ)于用來作為存儲(chǔ)操作的來源的寄存器中的數(shù)據(jù)值,可作為加載操作的推測結(jié)果。此類型的數(shù)據(jù)推測此處稱為相依性推測??赏ㄟ^連結(jié)(link)存儲(chǔ)操作的來源作為操作推測的操作數(shù)來源,該操作指定該加載操作結(jié)果作為操作數(shù),而將相依性推測擴(kuò)展在調(diào)度單元104中??赏ㄟ^允許某些加載跳過具有未計(jì)算地址的存儲(chǔ),即,通過推測較遲加載并非依賴于較早的存儲(chǔ),而可在加載存儲(chǔ)單元126C中執(zhí)行另一種類型的相依性推測。
在多重處理的系統(tǒng)中,內(nèi)存控制器160可執(zhí)行一致性檢核(coherency check)以維持高速緩存器一致性。內(nèi)存控制器160在完成與其它的微處理器高速緩存器一致性檢查之前,內(nèi)存控制器160可推測地從系統(tǒng)內(nèi)存200返回復(fù)制的高速緩存器線。若一致性檢核接著判定應(yīng)取得的正確高速緩存器線的復(fù)制是正存儲(chǔ)在另一個(gè)處理器的高速緩存器中,則從系統(tǒng)內(nèi)存200推測性取得的高速緩存器線的復(fù)制可以無效。因此,從存取該高速緩存器線所產(chǎn)生的任何加載操作結(jié)果將是推測的,直到該一致性檢核完成為止。其中這樣的類型的推測稱為內(nèi)存推測。
調(diào)度單元104可通過推測操作的結(jié)果,而執(zhí)行數(shù)據(jù)推測。例如,有些操作也許傾向于產(chǎn)生相同的結(jié)果,而因此每次處理這些操作中的一個(gè)操作時(shí),該結(jié)果可以在由功能單元126實(shí)際執(zhí)行操作之前,通過調(diào)度單元104而推測地產(chǎn)生。其中,這樣類型的數(shù)據(jù)推測稱為數(shù)據(jù)推測。值得注意的是數(shù)據(jù)推測也可執(zhí)行于微處理器的其它部分(例如,在加載存儲(chǔ)單元126C中)。
加載存儲(chǔ)單元126C可根據(jù)推測地址推測地產(chǎn)生地址,以及基于較早處理的加載的模式尚未計(jì)算出地址的加載指令的結(jié)果。例如,若前面的N個(gè)加載操作目標(biāo)定為地址A1到AN,這些地址彼此以固定偏移C間隔開(例如,A1;A2=A1+C;…;AN=A(N-1)+C),則加載存儲(chǔ)單元126C可推測地返回最近存取地址AN加上固定偏移C中的數(shù)據(jù)作為加載操作的結(jié)果。這種類型的數(shù)據(jù)推測此處稱為地址推測。值得注意的是其它形式的地址推測可使用于其它的實(shí)施例中。
根據(jù)已經(jīng)執(zhí)行數(shù)據(jù)推測的操作結(jié)果的操作也可產(chǎn)生推測結(jié)果。例如,若使用地址推測以產(chǎn)生加載操作的推測結(jié)果,則任何執(zhí)行使用加載的推測結(jié)果作為操作數(shù)的依附操作可產(chǎn)生推測結(jié)果,這些推測結(jié)果可通過其它的相關(guān)操作(dependent operation)而用作操作數(shù)。因此,若在加載操作中的基本推測判定為不正確,則相關(guān)操作的結(jié)果也許也是不正確,而因此也許將須再執(zhí)行根據(jù)該加載的操作的整個(gè)相依性鏈,以便產(chǎn)生正確的結(jié)果。另一方面,若發(fā)現(xiàn)基本推測是正確的,則依附操作的結(jié)果也許是正確的(假定這些結(jié)果并不根據(jù)任何其它的推測值)。
當(dāng)由功能單元執(zhí)行多個(gè)操作時(shí),可驗(yàn)證已執(zhí)行數(shù)據(jù)推測的這些操作。例如,可通過功能單元126來驗(yàn)證用來推測地產(chǎn)生操作的結(jié)果的數(shù)據(jù)推測,該功能單元126通過比較操作的實(shí)際結(jié)果與推測結(jié)果,而執(zhí)行該操作。若數(shù)據(jù)推測為不正確,則因?yàn)橐芽扇〉谜_的結(jié)果,可不必再執(zhí)行這些操作。可不需要完全地執(zhí)行而驗(yàn)證其它的操作。例如,若具有未經(jīng)計(jì)算地址的加載從較早的存儲(chǔ)傳送(forwarding)其結(jié)果(例如,由于相依性或地址推測),則當(dāng)計(jì)算加載地址時(shí),可驗(yàn)證加載的推測結(jié)果。若數(shù)據(jù)推測是不正確的,則可必須再執(zhí)行這樣的操作(至少部分地執(zhí)行)以便產(chǎn)生正確的結(jié)果。
因?yàn)榭梢孕枰賵?zhí)行對(duì)于已執(zhí)行數(shù)據(jù)推測的操作和它們的相關(guān)操作,則可配置退出隊(duì)列102以僅退出已解決了任何基本數(shù)據(jù)推測的操作。如圖1中所示,可配置用來驗(yàn)證數(shù)據(jù)推測的各機(jī)構(gòu)(在此實(shí)施例中,內(nèi)存控制器160和功能單元126),以提供具有推測指針指示已驗(yàn)證數(shù)據(jù)推測的各操作的退出隊(duì)列102。每個(gè)推測指針可用特定的驗(yàn)證裝置(means),通過使推測指針具有相等于由該驗(yàn)證裝置所驗(yàn)證的最遲操作的標(biāo)記值,識(shí)別已驗(yàn)證數(shù)據(jù)推測的操作。退出隊(duì)列102可使用該推測指針以識(shí)別可退出哪些操作。配置以驗(yàn)證一種或多種類型數(shù)據(jù)推測的微處理器100內(nèi)的各種組件,此處稱為數(shù)據(jù)推測驗(yàn)證單元。
每個(gè)推測指針可識(shí)別在基本指令流中的哪一點(diǎn)相對(duì)于微處理器的特定部分是非推測的。例如,由內(nèi)存控制器160所產(chǎn)生的推測指針D,可識(shí)別與內(nèi)存控制器160相關(guān)的最遲非推測的操作,內(nèi)存控制器160驗(yàn)證內(nèi)存推測值。在一個(gè)實(shí)施例中,內(nèi)存控制器160可產(chǎn)生推測指針D,指向該已執(zhí)行內(nèi)存推測的最近驗(yàn)證的操作。在另一個(gè)實(shí)施例中,內(nèi)存控制器160可產(chǎn)生推測指針D,指向已執(zhí)行僅在內(nèi)存推測的最早非驗(yàn)證的操作前一個(gè)的操作。一般而言,推測指針D指示該退出隊(duì)列102,對(duì)內(nèi)存控制器160而言有哪些操作不是推測的。
在一個(gè)實(shí)施例中功能單元126A、126B可個(gè)別執(zhí)行整數(shù)和浮點(diǎn)操作。功能單元126A和126B可各自驗(yàn)證數(shù)據(jù)推測。在圖1所示的實(shí)施例中,推測指針A和B分別識(shí)別哪些操作已經(jīng)通過功能單元126A和126B驗(yàn)證。由執(zhí)行加載和存儲(chǔ)操作的功能單元126C而產(chǎn)生推測指針C。推測指針C可識(shí)別哪些操作已經(jīng)由加載存儲(chǔ)單元126C所驗(yàn)證??膳渲霉δ軉卧?26C以驗(yàn)證地址、數(shù)據(jù)、和/或相依性推測。
如上所述,各推測指針的值取決于哪些操作已通過個(gè)別的數(shù)據(jù)推測驗(yàn)證單元而被驗(yàn)證。在一些實(shí)施例中,由微處理器100的驗(yàn)證部分所產(chǎn)生的推測指針的值也可取決于識(shí)別這些已執(zhí)行數(shù)據(jù)推測的操作的信息。例如,在一個(gè)實(shí)施例中,內(nèi)存控制器160可追蹤已執(zhí)行內(nèi)存推測的每個(gè)操作。當(dāng)內(nèi)存控制器160驗(yàn)證每個(gè)操作時(shí),內(nèi)存控制器160可提前推測指針D以識(shí)別達(dá)到已執(zhí)行內(nèi)存推測的下一個(gè)最遲操作的所有的操作相對(duì)于內(nèi)存控制器160是非數(shù)據(jù)推測。在一個(gè)實(shí)施例中,內(nèi)存控制器160可通過提前推測指針D指向由內(nèi)存控制器160所追蹤的下一個(gè)最遲推測操作,而識(shí)別這些操作。同樣地,執(zhí)行其它類型的數(shù)據(jù)推測的機(jī)構(gòu)(例如,調(diào)度單元104和/或執(zhí)行加載和存儲(chǔ)操作的功能單元126C)也可追蹤已執(zhí)行數(shù)據(jù)推測的操作。在一些實(shí)施例中,至少一些這樣的數(shù)據(jù)推測機(jī)構(gòu)可提供此信息給被配置以驗(yàn)證數(shù)據(jù)推測的類型的數(shù)據(jù)推測驗(yàn)證單元(例如,加載存儲(chǔ)單元126C和/或一個(gè)或多個(gè)的其它功能單元126)。若現(xiàn)在沒有數(shù)據(jù)推測操作由特定的其中一個(gè)數(shù)據(jù)推測驗(yàn)證單元所驗(yàn)證,則通過該驗(yàn)證單元所產(chǎn)生的推測指針可設(shè)定為一個(gè)值,該值指示所有的未完成的操作相對(duì)于該特定驗(yàn)證單元是非數(shù)據(jù)推測。
退出隊(duì)列102可通過比較由推測指針?biāo)R(shí)別的操作流的部分而識(shí)別哪些操作可退出。由所有推測指針?biāo)R(shí)別為非推測的最早操作可以是可通過退出隊(duì)列102所退出的最早操作。例如,假定操作0到10(以操作0是程序順序中最早操作,以及10是程序順序中最晚操作,其中程序順序是在任何的操作重新排序或不按序處理在微處理器100內(nèi)已經(jīng)執(zhí)行之前在程序中執(zhí)行指令順序)已經(jīng)由調(diào)度單元104所調(diào)度。若推測指針A指示達(dá)到操作6的各操作為非數(shù)據(jù)推測,推測指針B指示達(dá)到操作5的各操作為非數(shù)據(jù)推測,推測指針C指示達(dá)到操作3的各操作為非數(shù)據(jù)推測,和推測指針D指示所有的未完成的操作為非數(shù)據(jù)推測(例如,因?yàn)闆]有對(duì)任何操作0到10執(zhí)行內(nèi)存推測),則退出隊(duì)列102可識(shí)別達(dá)到操作3的這些操作作為該組可退出的操作組。值得注意的是操作退出也可根據(jù)一般退出限制,例如是否這些操作已經(jīng)由功能單元126所執(zhí)行,以及是否任何影響這些操作的控制推測已經(jīng)成功地解決。例如,若數(shù)據(jù)推測操作判定為不正確并且需要再執(zhí)行,而該操作可通過一個(gè)或多個(gè)推測指針識(shí)別為非推測的,但是將不會(huì)被退出,直到該操作已經(jīng)再執(zhí)行為止。在一些實(shí)施例中,關(guān)于哪些操作已經(jīng)執(zhí)行和尚未執(zhí)行,或者若需要的話則再執(zhí)行的信息,可通過調(diào)度器118而提供給退出隊(duì)列102。
圖2A例示用來產(chǎn)生推測指針的方法的一個(gè)實(shí)施例??赏ㄟ^其中一種數(shù)據(jù)推測驗(yàn)證單元,譬如內(nèi)存控制器160和功能單元126,而至少部分地執(zhí)行這樣的方法。在201,執(zhí)行操作的數(shù)據(jù)推測。在一些實(shí)施例中可通過將驗(yàn)證數(shù)據(jù)推測的微處理器的相同部分,而執(zhí)行數(shù)據(jù)推測201。在203中若已驗(yàn)證了數(shù)據(jù)推測,則可提前推測指針如在205所示,以識(shí)別在201已執(zhí)行數(shù)據(jù)推測為非推測的操作。
在一個(gè)實(shí)施例中,在205提前推測指針可包含提前推測指針以識(shí)別最近已驗(yàn)證的操作,指示所有到達(dá)該操作的操作和包括該操作相關(guān)于特定用于驗(yàn)證數(shù)據(jù)推測的機(jī)構(gòu)為非數(shù)據(jù)推測的。在其它的實(shí)施例中,在205提前推測指針可包含提前推測指針以識(shí)別就在以程序順序?qū)⒂稍撎囟ǖ尿?yàn)證機(jī)構(gòu)所驗(yàn)證的下一個(gè)數(shù)據(jù)推測操作之前的操作。例如,加載存儲(chǔ)單元126可追蹤該加載存儲(chǔ)單元已經(jīng)對(duì)于哪些操作執(zhí)行數(shù)據(jù)推測。每當(dāng)該加載存儲(chǔ)單元126驗(yàn)證那些數(shù)據(jù)推測操作中的一個(gè)操作時(shí),該加載存儲(chǔ)單元126可提前其推測指針以指示所有到達(dá)由加載存儲(chǔ)單元執(zhí)行數(shù)據(jù)推測的下一個(gè)操作的操作,對(duì)加載存儲(chǔ)單元而言為非數(shù)據(jù)推測。其它的實(shí)施例可以以其它的方式提前指針。例如,功能單元可驗(yàn)證由調(diào)度單元所執(zhí)行的數(shù)據(jù)推測的類型。在一些實(shí)施例中,功能單元也許不知已由調(diào)度單元執(zhí)行該類型的數(shù)據(jù)推測的全部未完成的操作組。代替地,功能單元可僅知現(xiàn)在在該功能單元內(nèi)的哪些未完成的操作為數(shù)據(jù)推測的。因此,響應(yīng)于用于特定操作的驗(yàn)證數(shù)據(jù)推測,功能單元可提前該推測指針以識(shí)別在該功能單元內(nèi)正早于最早的數(shù)據(jù)推測操作(如果有的話)的該未完成的操作。若在該功能單元內(nèi)現(xiàn)在沒有任何未完成的操作為數(shù)據(jù)推測的,則功能單元可更新其推測指針的值,以指示相關(guān)于該功能單元沒有未完成的操作現(xiàn)在正是數(shù)據(jù)推測的。
圖2B例示退出未完成的操作的一個(gè)方法實(shí)施例的流程圖。在211,接收一個(gè)或多個(gè)推測指針。若接收了多個(gè)推測指針,則各推測指針可識(shí)別為非數(shù)據(jù)推測的未完成的操作的不同部分。若任何推測指針指示特定的操作仍為數(shù)據(jù)推測的,則可不退出該操作,如在213所示。然而,若無任何的推測指針識(shí)別該操作可能是數(shù)據(jù)推測的,假定符合用于該操作退出的所有的其它預(yù)定必須條件,則可退出該操作,如213到215所示。
例示的計(jì)算機(jī)系統(tǒng)圖3表示計(jì)算機(jī)系統(tǒng)900的一個(gè)實(shí)施例的方塊圖,該計(jì)算機(jī)系統(tǒng)900包括處理器100,其通過總線橋902耦接到各種系統(tǒng)組件。處理器100可包括一個(gè)或多個(gè)配置以產(chǎn)生推測指針的數(shù)據(jù)驗(yàn)證單元,以及配置以退出操作的退出隊(duì)列,該操作是由推測指針識(shí)別為非數(shù)據(jù)推測的,如上所述。計(jì)算機(jī)系統(tǒng)的其它實(shí)施例是可行的并且是可以考慮的。在所描述的系統(tǒng)中,主內(nèi)存200通過內(nèi)存總線906耦接到總線橋902,以及圖形控制器908通過AGP總線910耦接到總線橋902。多個(gè)PCI裝置912A到912B通過PCI總線914耦接到總線橋902。也可設(shè)有第二總線橋916,通過EISA/ISA總線920提供電子接口給一個(gè)或多個(gè)EISA或ISA裝置918。在本實(shí)施例中,處理器100通過CPU總線924耦接到總線橋902,以及可選的L2高速緩存器928。在一些實(shí)施例中,處理器100可包括整合的L1高速緩存器(圖中未表示)。
總線橋902提供處理器100、主內(nèi)存200、圖形控制器908、以及連接到PCI總線914裝置之間的界面。當(dāng)操作由連接到總線橋902的其中一個(gè)裝置所接收時(shí),總線橋902識(shí)別該操作的目標(biāo)(例如,特定的裝置,或在PCI總線914的情況,該目標(biāo)是在PCI總線914上)??偩€橋902將該操作傳遞給目標(biāo)裝置??偩€橋902通常從由來源裝置或總線所使用的協(xié)議轉(zhuǎn)譯操作成由目標(biāo)裝置或總線所使用的協(xié)議。
除了為PCI總線914提供接口(interface)給EISA/ISA總線以外,第二總線橋916也可結(jié)合額外的功能性??蓮耐獠拷尤耄蛘吲c第二總線橋916整合在一起的輸入/輸出控制器(圖中未表示),也可包括在計(jì)算機(jī)系統(tǒng)900內(nèi),以提供對(duì)于鍵盤和鼠標(biāo)922,以及用于各種的串行端口和并行端口的操作支持。在其它的實(shí)施例中,外部高速緩存器單元(圖中未表示)也可耦接到位于處理器100與總線橋902之間的CPU總線924?;蛘?,外部高速緩存器可耦接到總線橋902,以及用于外部高速緩存器的高速緩存器控制邏輯也可整合到總線橋902。L2高速緩存器928表示為處理器100的背側(cè)(backside)配置。值得注意的是,L2高速緩存器928可從處理器100分離,整合到具有處理器100的卡匣內(nèi)(例如,槽1或槽A),或甚至整合到具有處理器100的半導(dǎo)體基板上。
主內(nèi)存200是存儲(chǔ)應(yīng)用程序的內(nèi)存,并且處理器100主要從主內(nèi)存200而執(zhí)行。適當(dāng)?shù)闹鲀?nèi)存200可包括動(dòng)態(tài)隨機(jī)存取內(nèi)存(DRAM)。例如,多個(gè)庫的同步DRAM(SDRAM)或總線DRAM(RDRAM)可以是合適的。
PCI裝置912A到912B表示各種的外圍裝置,譬如網(wǎng)絡(luò)接口卡、視頻加速器、聲頻卡、硬盤機(jī)或軟盤機(jī)或其控制器、小計(jì)算機(jī)系統(tǒng)接口(SCSI)適配器和電話卡。同樣地,ISA裝置918例示了各種類型的外圍裝置,譬如調(diào)制解調(diào)器、聲卡、和各種數(shù)據(jù)采集卡,譬如GPIB或區(qū)域總線接口卡。
設(shè)有圖形控制器908以控制顯示器926上的文件和圖像的著色。圖形控制器908可以通常在本領(lǐng)域已知的典型的圖形加速器進(jìn)行具體實(shí)施,對(duì)能夠有效移位入主內(nèi)存200或從主內(nèi)存200移位出的三維數(shù)據(jù)結(jié)構(gòu)進(jìn)行著色。圖形控制器908因此可以是AGP總線910的主控電路。圖形控制器908能在該AGP總線910請(qǐng)求和接收到總線橋902內(nèi)的目標(biāo)接口的存取,由此而獲得到主內(nèi)存200的存取。專用圖形(graphics)總線能適應(yīng)從主內(nèi)存200快速恢復(fù)的數(shù)據(jù)。對(duì)于某些操作,可進(jìn)一步配置圖形控制器908以在AGP總線910上產(chǎn)生PCI協(xié)議處理(transaction)。總線橋902的AGP接口可因此包括功能性以支持AGP協(xié)議處理以及PCI協(xié)議目標(biāo)和起始器處理。顯示器926為任何的電子顯示器,影像或文件可呈現(xiàn)在此顯示器上。適當(dāng)?shù)娘@示器926包括陰極射線管(CRT)、液晶顯示器(LCD)等等。
應(yīng)注意的是,在上述中雖然已使用了AGP、PCI、和ISA或EISA總線作為例子,但是當(dāng)需要時(shí)用任何的總線架構(gòu)進(jìn)行替代。更值得注意的是,計(jì)算機(jī)系統(tǒng)900可以是包括額外處理器(例如,處理器100a表示為計(jì)算機(jī)系統(tǒng)900的可選的組件)的多處理計(jì)算機(jī)系統(tǒng)。處理器100a可相似于處理器100。尤其地,處理器100a可以是與處理器100完全相同的副本。處理器100a可通過獨(dú)立的總線(圖3中所示)而連接到總線橋902,或可與處理器100共享CPU總線924。而且,處理器100a可耦接到選用的相似于L2高速緩存器928的L2高速緩存器928a。
現(xiàn)參照?qǐng)D4,表示了計(jì)算機(jī)系統(tǒng)900的另一個(gè)實(shí)施例,可包括處理器100,該處理器100具有一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元配置以產(chǎn)生推測指針和退出隊(duì)列,該退出隊(duì)列依照如上述的該推測指針而退出操作。其它的實(shí)施例也是可行的并且可以考慮的。在圖4的實(shí)施例中,計(jì)算機(jī)系統(tǒng)900包括多個(gè)處理節(jié)點(diǎn)1012A、1012B、1012C和1012D。每個(gè)處理節(jié)點(diǎn)通過包含在每個(gè)個(gè)別處理節(jié)點(diǎn)1012A到1012D內(nèi)的內(nèi)存控制器1016A到1016D而耦接到個(gè)別的內(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、以及用來與又另一處理節(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通過接口邏輯1018L被耦接以與多個(gè)輸入/輸出裝置(例如,在菊式鏈(daisy-chain)配置中的裝置1020A到1020B)通訊。其它的處理節(jié)點(diǎn)可與其它的I/O裝置以相似的方式通訊。
處理節(jié)點(diǎn)1012A到1012D實(shí)施以封包為基礎(chǔ)的連結(jié)以用于處理節(jié)點(diǎn)間通訊。在本實(shí)施例中,該連結(jié)是作為單方向線組來實(shí)施的(例如,線1024A用來從處理節(jié)點(diǎn)1012A到1012B傳輸封包和線1024B用來從處理節(jié)點(diǎn)1012B到1012A傳輸封包)。其它組的線1024C到1024H用來在其它處理節(jié)點(diǎn)之間傳輸封包,如圖4中所示。一般而言,各組的線1024可包括一條或多條數(shù)據(jù)線;一條或多條對(duì)應(yīng)于各數(shù)據(jù)線的時(shí)鐘線,以及一條或多條指示傳輸?shù)姆獍愋偷目刂凭€。對(duì)于處理節(jié)點(diǎn)間的通訊,該連結(jié)可以以高速緩存器一致性方式操作,或以用于在操作處理節(jié)點(diǎn)和I/O裝置(或是譬如PCI總線或ISA總線的所知結(jié)構(gòu)的I/O總線到總線橋)之間通訊的一致性方式來操作。另外,可使用如所示的在I/O裝置之間的菊式鏈結(jié)構(gòu)而以非一致性方式操作連結(jié)。應(yīng)注意的是將從一個(gè)處理節(jié)點(diǎn)傳輸?shù)搅硪粋€(gè)處理節(jié)點(diǎn)的封包可經(jīng)過一個(gè)或多個(gè)中間節(jié)點(diǎn)。例如,由處理節(jié)點(diǎn)1012A傳輸?shù)教幚砉?jié)點(diǎn)1012D的封包可經(jīng)過處理節(jié)點(diǎn)1012B或處理節(jié)點(diǎn)1012C,如圖4中所示??墒褂萌魏芜m當(dāng)?shù)穆肪€算法。計(jì)算機(jī)系統(tǒng)900的其它實(shí)施例可包括較圖4中所示者更多或較少的處理節(jié)點(diǎn)。
一般而言,封包可以作為一個(gè)或多個(gè)位時(shí)間(bit time)而傳輸在各節(jié)點(diǎn)之間的線路1024上。該位時(shí)間可以是對(duì)應(yīng)的時(shí)鐘線上的時(shí)鐘信號(hào)的上升沿或下降沿。封包可包括用于起使處理的命令封包、維持高速緩存器一致性探測封包、和從響應(yīng)于探測和命令封包而來的反應(yīng)封包。
除了內(nèi)存控制器和接口邏輯外,處理節(jié)點(diǎn)1012A到1012D可包括一個(gè)或多個(gè)處理器。概括地說,處理節(jié)點(diǎn)包括至少一個(gè)處理器以及需要的可選擇性地包括用于與內(nèi)存和其它邏輯通訊的內(nèi)存控制器。尤其地,每個(gè)處理節(jié)點(diǎn)1012A到1012D可包括各處理器100的一個(gè)或多個(gè)副本。外部接口單元可包括在節(jié)點(diǎn)內(nèi)的接口邏輯1018以及內(nèi)存控制器1016。
內(nèi)存200A到200D可包括任何適當(dāng)?shù)膬?nèi)存裝置。例如,內(nèi)存200A到200D可包括一個(gè)或多個(gè)總線(RAMBUS)DRAM(RDRAM)、同步DRAM(SDRAM)、靜態(tài)RAM等等。計(jì)算機(jī)系統(tǒng)900的地址空間劃分在內(nèi)存200A到200D之間。各處理節(jié)點(diǎn)1012A到1012D可包括用來判定哪個(gè)地址映射到內(nèi)存200A到200D的哪個(gè)內(nèi)存的內(nèi)存映射,而因此決定具有特定地址的內(nèi)存請(qǐng)求將傳遞到哪一個(gè)處理節(jié)點(diǎn)1012A到1012D。在一個(gè)實(shí)施例中,對(duì)于計(jì)算機(jī)系統(tǒng)900內(nèi)地址的一致點(diǎn)為耦接到內(nèi)存存儲(chǔ)有對(duì)應(yīng)于該地址的字節(jié)的內(nèi)存控制器1016A到1016D。換句話說,內(nèi)存控制器1016A到1016D負(fù)責(zé)確定各內(nèi)存存取到對(duì)應(yīng)的內(nèi)存200A到200D以高速緩存器一致方式發(fā)生。內(nèi)存控制器1016A到1016D可包括用來接口到內(nèi)存200A到200D的控制電路。此外,內(nèi)存控制器1016A到1016D可包括用來排列內(nèi)存請(qǐng)求的請(qǐng)求隊(duì)列。
接口邏輯1018A到1018L可包括各種緩沖器用于從連結(jié)接收封包并緩沖將傳送到連結(jié)上的封包。計(jì)算機(jī)系統(tǒng)900可使用任何適當(dāng)?shù)挠糜趥鬏敺獍牧鞒炭刂茩C(jī)構(gòu)。例如,在一個(gè)實(shí)施例中,各接口邏輯1018存儲(chǔ)位于連接接口的連結(jié)(link)的另一端的接收器內(nèi)各種類型的緩沖器數(shù)量的數(shù)值。除非接收的接口邏輯具有閑置緩沖器以存儲(chǔ)封包,否則接口邏輯不發(fā)送封包。當(dāng)通過將封包向前傳送(forward)而使接收緩沖器為閑置時(shí),接收接口邏輯發(fā)出信號(hào)到發(fā)送接口邏輯以指示緩沖器已經(jīng)閑置。這樣的機(jī)構(gòu)可稱為“憑票(coupon-based)”系統(tǒng)。
I/O裝置1020A到1020B可以是任何適當(dāng)?shù)腎/O裝置。例如,I/O裝置1020A到1020B可以包括與其它計(jì)算機(jī)系統(tǒng)通訊的裝置(例如,用網(wǎng)絡(luò)接口卡或調(diào)制解調(diào)器),這些裝置耦接到其它計(jì)算機(jī)系統(tǒng)。另外,I/O裝置1020A到1020B可包括視頻加速器、聲頻卡、硬盤或軟盤機(jī)或驅(qū)動(dòng)控制器、小計(jì)算機(jī)系統(tǒng)接口(SCSI)適配器和電話卡、聲卡、以及各種數(shù)據(jù)采集卡,譬如GPIB或區(qū)域總線接口卡。值得注意的是術(shù)語“I/O裝置”和術(shù)語“外圍裝置”在此處規(guī)定為同義詞。
如其中所使用的術(shù)語“時(shí)鐘周期”是指時(shí)間間隔,在此時(shí)間間隔中各級(jí)的指令處理路線完成其工作。通過內(nèi)存組件(譬如寄存器或數(shù)組)依照定義時(shí)鐘周期的時(shí)鐘信號(hào)而獲得指令和計(jì)算值。例如,內(nèi)存組件可依照時(shí)鐘信號(hào)的上升沿和下降沿而獲得數(shù)值。
以上討論說明信號(hào)為“確立的(asserted)”。信號(hào)可以定義為確立的當(dāng)它輸送代表一項(xiàng)特定信息的值。特定信號(hào)可定義成確立的當(dāng)它輸送二進(jìn)制的1值,或者取而代的當(dāng)它輸送二進(jìn)制的0值時(shí)。
一旦本領(lǐng)域技術(shù)人員完全了解該上述的公開內(nèi)容,不同的變化及修改將變得顯而易見。其意圖在于下列的權(quán)利要求將被解釋以包含所有這樣的變化與修改。
工業(yè)應(yīng)用性本發(fā)明通??蓱?yīng)用于微處理器。
權(quán)利要求
1.一種微處理器(100),包括一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元,其被配置以驗(yàn)證對(duì)操作所執(zhí)行的數(shù)據(jù)推測,并產(chǎn)生個(gè)別的推測指針以用于識(shí)別已由一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元的其中一個(gè)驗(yàn)證的數(shù)據(jù)推測的未完成操作;以及退出隊(duì)列(102),其被耦接以接收來自一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元的每個(gè)單元的推測指針,并配置以根據(jù)來自一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元的每個(gè)單元所接收的推測指針而選擇性地退出操作。
2.如權(quán)利要求1所述的微處理器(100),其中,加載存儲(chǔ)單元(126)包括一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元中的一個(gè),其中包含在該加載存儲(chǔ)單元(126)中的該數(shù)據(jù)推測驗(yàn)證單元被配置以驗(yàn)證相依性推測。
3.如權(quán)利要求1所述的微處理器(100),其中,被配置以執(zhí)行非內(nèi)存操作的功能單元(126)包括一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元中的一個(gè),其中包含在該功能單元(126)中的該數(shù)據(jù)推測驗(yàn)證單元被配置以驗(yàn)證推測非內(nèi)存操作結(jié)果的數(shù)據(jù)推測。
4.如權(quán)利要求1所述的微處理器(100),其中該一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元中的一個(gè)被配置以接收識(shí)別多個(gè)未完成操作的每一個(gè)操作的信息,由該一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元的其中一個(gè)所驗(yàn)證的一種類型的數(shù)據(jù)推測已經(jīng)執(zhí)行;以及其中所述一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元中的一個(gè)被配置以確認(rèn)哪一個(gè)未完成的操作已經(jīng)被驗(yàn)證,其是通過一個(gè)或多個(gè)數(shù)據(jù)推測單元中的一個(gè)單元通過提前個(gè)別推測指針以識(shí)別一個(gè)操作要比已經(jīng)驗(yàn)證數(shù)據(jù)推測的最遲未完成操作更遲并且要比已經(jīng)執(zhí)行的該類型數(shù)據(jù)推測的另一個(gè)未完成操作更早而驗(yàn)證的。
5.一種計(jì)算機(jī)系統(tǒng)(900),包括內(nèi)存(200);以及耦接到該內(nèi)存(200)的處理器(100);其特征在于該處理器(100)包括一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元,其被配置以驗(yàn)證對(duì)于操作所執(zhí)行的數(shù)據(jù)推測,并且產(chǎn)生個(gè)別的推測指針用于識(shí)別已通過該一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元中的一個(gè)來驗(yàn)證數(shù)據(jù)推測的未完成操作;以及該處理器(100)進(jìn)一步包括退出隊(duì)列(102),其被耦接以接收來自一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元的每個(gè)單元的推測指針,并被配置以選擇地退出操作,該操作是根據(jù)從一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元的每個(gè)單元所接收的推測指針。
6.如權(quán)利要求5所述的計(jì)算機(jī)系統(tǒng)(900),其中,加載存儲(chǔ)單元(126)包括該一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元中的一個(gè)單元,其中包含在該加載存儲(chǔ)單元中的數(shù)據(jù)推測驗(yàn)證單元被配置以驗(yàn)證相依性推測。
7.如權(quán)利要求5所述的計(jì)算機(jī)系統(tǒng)(900),其中,被配置以執(zhí)行非內(nèi)存操作的功能單元(126)包括一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元中的一個(gè)單元,其中包含在該功能單元(126)中的該數(shù)據(jù)推測驗(yàn)證單元被配置以驗(yàn)證推測非內(nèi)存操作結(jié)果的數(shù)據(jù)推測。
8.一種方法,包括對(duì)于操作執(zhí)行數(shù)據(jù)推測;驗(yàn)證單元驗(yàn)證對(duì)于該操作執(zhí)行的該數(shù)據(jù)推測;該驗(yàn)證單元產(chǎn)生推測指針,其指示對(duì)該驗(yàn)證單元而言該操作是非數(shù)據(jù)推測以響應(yīng)所述驗(yàn)證;以及響應(yīng)于該推測指針,其指示操作對(duì)于該驗(yàn)證單元而言是非數(shù)據(jù)推測,而退出該操作。
9.如權(quán)利要求8所述的方法,進(jìn)一步包括另一驗(yàn)證單元,其驗(yàn)證對(duì)另一操作執(zhí)行的數(shù)據(jù)推測,并產(chǎn)生另一推測指針,其指示該另一操作對(duì)于該另一驗(yàn)證單元的而言是非數(shù)據(jù)推測;其中所述退出該操作是根據(jù)該推測指針和該另一推測指針的。
10.如權(quán)利要求8所述的方法,其中所述產(chǎn)生指示對(duì)該驗(yàn)證單元而言是非推測操作的推測指針,是取決于該操作已通過該驗(yàn)證單元執(zhí)行的任一類型的數(shù)據(jù)推測已被驗(yàn)證為最早操作。
全文摘要
本發(fā)明涉及一種微處理器(100),其可包括退出隊(duì)列(102)和一個(gè)或多個(gè)數(shù)據(jù)推測驗(yàn)證單元。配置每個(gè)數(shù)據(jù)推測驗(yàn)證單元以驗(yàn)證對(duì)操作執(zhí)行的數(shù)據(jù)推測。每個(gè)數(shù)據(jù)推測驗(yàn)證單元產(chǎn)生個(gè)別的識(shí)別未完成的操作的推測指針,這些未完成的操作已被數(shù)據(jù)推測驗(yàn)證單元驗(yàn)證。配置退出隊(duì)列(102)以根據(jù)從每個(gè)數(shù)據(jù)推測驗(yàn)證單元所接收的推測指針而選擇性地退出操作。
文檔編號(hào)G06F9/30GK1784654SQ200480011945
公開日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)微裝置公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1