欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

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

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


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