專利名稱:將裝載操作的猜測(cè)結(jié)果與寄存器值相連接的系統(tǒng)與方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器領(lǐng)域,特別是涉及實(shí)現(xiàn)微處理器中的數(shù)據(jù)猜測(cè)執(zhí)行(data-speculative execution)。
背景技術(shù):
超標(biāo)量(Superscalar)微處理器通過同時(shí)執(zhí)行多項(xiàng)指令,以及通過使用其設(shè)計(jì)允許的最短時(shí)鐘周期,而獲得高性能。然而,介于指令間的數(shù)據(jù)及控制流依賴性,可在任何給定時(shí)間內(nèi),限制有多少個(gè)指令可發(fā)布。因此,為了達(dá)成額外的性能增益,某些微處理器于是支持猜測(cè)執(zhí)行。
一種猜測(cè)類型是控制流猜測(cè)??刂屏鞑聹y(cè)預(yù)測(cè)程序控制進(jìn)行的方向。舉例而言,分支預(yù)測(cè)可用于預(yù)測(cè)是否將采用一分支??刹捎迷S多類型的分支預(yù)測(cè),其范圍為從每次僅作相同預(yù)測(cè)的方法,到那些在程序中維持先前分支的復(fù)雜的歷史分支記錄,以用于做出基于歷史的預(yù)測(cè)的方法。分支預(yù)測(cè)可通過硬件最佳化、編譯器最佳化或同時(shí)二者而實(shí)行。以分支預(yù)測(cè)機(jī)制所提供的預(yù)測(cè)為基礎(chǔ),則可猜測(cè)性地獲取及執(zhí)行指令。當(dāng)分支指令最后被評(píng)估時(shí),可驗(yàn)證分支預(yù)測(cè)。若預(yù)測(cè)為不正確,則任何以此不正確預(yù)測(cè)為基礎(chǔ),所猜測(cè)性執(zhí)行的指令,皆可被撤銷。
已提出的猜測(cè)的另一類型為數(shù)據(jù)猜測(cè)。舉例而言,預(yù)測(cè)數(shù)據(jù)項(xiàng)的值的值預(yù)測(cè),可包含數(shù)據(jù)的觀測(cè)模式,并以此模式作為預(yù)測(cè)的基礎(chǔ)(例如,可通過觀測(cè)該變量之前的值怎么增加或怎么減少,而預(yù)測(cè)該索引計(jì)數(shù)器變量的值)。地址預(yù)測(cè)包括預(yù)測(cè)數(shù)據(jù)的位置。另一種類型的數(shù)據(jù)猜測(cè)被稱為內(nèi)存系統(tǒng)最佳化。在多處理器的系統(tǒng)中,內(nèi)存系統(tǒng)最佳化發(fā)生在一致性檢測(cè)完成之前,使用從處理器內(nèi)部的高速緩存而來的數(shù)據(jù),處理器猜測(cè)性執(zhí)行指令時(shí)。同樣地,數(shù)據(jù)猜測(cè)的另一類型,可在裝載執(zhí)行的同時(shí),具有未計(jì)算地址的儲(chǔ)存之前,允許猜測(cè)性執(zhí)行裝載,即使該儲(chǔ)存可能將數(shù)據(jù)儲(chǔ)存至和裝載存取相同的地址。在所有這些類型的數(shù)據(jù)猜測(cè)中,基本條件最終將受到評(píng)估,允許猜測(cè)被驗(yàn)證或復(fù)原。若猜測(cè)最終為不正確,則使用猜測(cè)數(shù)據(jù)所執(zhí)行的指令,可重新執(zhí)行(例如,使用已更新及/或非猜測(cè)數(shù)據(jù))。
因?yàn)椴聹y(cè)不需等待相關(guān)性檢查完成,即允許繼續(xù)向前執(zhí)行,故當(dāng)從正確猜測(cè)而來的性能增益超過損失在不正確猜測(cè)上的性能時(shí),將可達(dá)到顯著的性能增益。因此需要能夠在微處理器中執(zhí)行數(shù)據(jù)猜測(cè),以及提供用于猜測(cè)錯(cuò)誤的高效率恢復(fù)機(jī)制。
發(fā)明內(nèi)容
本發(fā)明可實(shí)施將裝載操作的猜測(cè)結(jié)果連接到寄存器值的方法與系統(tǒng)的多種具體實(shí)施例。在一具體實(shí)施例中,一系統(tǒng)可包括一內(nèi)存文件,該內(nèi)存文件包括配置以儲(chǔ)存第一尋址模式與第一標(biāo)記的一記錄(entry),以及耦合到內(nèi)存文件的一執(zhí)行核心。該內(nèi)存文件可能配置以將包括在該記錄中的第一尋址模式與裝載操作的第二尋址模式相比較。假如第二尋址模式與儲(chǔ)存在該記錄中的第一尋址模式匹配的話,該內(nèi)存文件則配置以將由第一標(biāo)記所識(shí)別的數(shù)據(jù)值連接到裝載操作的猜測(cè)結(jié)果。該執(zhí)行核心配置以在進(jìn)行取決于裝載操作的第二操作的時(shí)候存取該猜測(cè)結(jié)果。
一種方法的具體實(shí)施例包含將第一操作的第一尋址模式與第二操作的第二尋址模式相比較。第二操作在程序設(shè)計(jì)的順序上比第一操作還早發(fā)生。假如第一尋址模式與第二尋址模式相配的話,那么第二操作的操作數(shù)的標(biāo)記所識(shí)別出的數(shù)據(jù)值則可能連接到第一操作的猜測(cè)結(jié)果。具有取決于第一操作的結(jié)果的操作數(shù)來源的第三操作,其可能使用該標(biāo)記所識(shí)別出的數(shù)據(jù)值來進(jìn)行。
當(dāng)上述詳細(xì)說明,配合下列附圖一并考慮時(shí),可對(duì)本發(fā)明有更好的了解,附圖如下圖1為一微處理器的一個(gè)具體實(shí)施例。
圖2A為分派單元的一個(gè)具體實(shí)施例的方框圖。
圖2B顯示可用于一個(gè)具體實(shí)施例的示例性存儲(chǔ)器文件儲(chǔ)存記錄。
圖3為顯示一方法的一個(gè)具體實(shí)施例的流程圖,該方法將裝載操作的猜測(cè)結(jié)果與由特定標(biāo)記所識(shí)別的數(shù)據(jù)值相連接。
圖4為調(diào)度裝置的一個(gè)具體實(shí)施例的方框圖。
圖5為顯示一方法的一個(gè)具體實(shí)施例的流程圖,該方法發(fā)布操作,并響應(yīng)不正確的數(shù)據(jù)猜測(cè)的指示,再發(fā)布操作。
圖6為分派單元的另一個(gè)具體實(shí)施例的方框圖。
圖7為分派單元的又一個(gè)具體實(shí)施例的方框圖。
圖8為顯示另一個(gè)方法的流程圖,該方法以猜測(cè)數(shù)據(jù)值發(fā)布操作,以及從預(yù)測(cè)錯(cuò)誤的情形中恢復(fù)。
圖9為一計(jì)算機(jī)系統(tǒng)的一個(gè)具體實(shí)施例。
圖10為一計(jì)算機(jī)系統(tǒng)的另一個(gè)具體實(shí)施例。
本發(fā)明適用于各種不同的變形,替代類型,以及通過圖式中的范例所顯示的特定實(shí)施例,并將在文中詳細(xì)描述。然而必須清楚,圖式及詳細(xì)說明,并不意味著將本發(fā)明限制在文中所揭露的特定類型,而是意在涵蓋所有符合本發(fā)明的精神及范疇的變形、等效及替代類型,其中本發(fā)明的精神及范疇由所附的申請(qǐng)專利范圍所定義。必須注意標(biāo)題僅就編制的目的所用,而并非用以限制或解釋該說明或申請(qǐng)專利范圍。再者,必須注意在此說明書中廣泛使用的用字″可(may)″是廣義的定義(亦即,具備潛力足以,具備能力可以),而非狹義的定義(亦即,必定可以)。用字″包含(include)″及其衍生語意表示″包含,但不僅局限于此?!逵米帧暹B接(connected)″表示″直接或間接連接″,而用字″耦合(coupled)″則表示″直接或間接耦合″。
具體實(shí)施例方式
圖1為微處理器100的一個(gè)實(shí)施例的方框圖。微處理器100用以執(zhí)行儲(chǔ)存在系統(tǒng)內(nèi)存200中的指令。許多的這些指令根據(jù)儲(chǔ)存在系統(tǒng)內(nèi)存200中的數(shù)據(jù)操作。必須注意系統(tǒng)內(nèi)存200實(shí)際上可分布在整個(gè)計(jì)算機(jī)系統(tǒng)中,并可由一個(gè)或多個(gè)微處理器100對(duì)其存取。
微處理器100可包含指令高速緩存106以及數(shù)據(jù)高速緩存128。微處理器100可包含耦合至指令高速緩存106的預(yù)取單元108。分派單元104可配置成用以接收從指令高速緩存106所發(fā)出的指令,并可分派操作至調(diào)度裝置118??神詈弦粋€(gè)或多個(gè)調(diào)度裝置118以從分派單元104接收所分派的操作,并可發(fā)布操作至一個(gè)或多個(gè)執(zhí)行核心124。執(zhí)行核心124可包含裝載/儲(chǔ)存單元126,該裝載/儲(chǔ)存單元126用以存取數(shù)據(jù)高速緩存128。由執(zhí)行核心124所產(chǎn)生的結(jié)果可輸出至結(jié)果總線130。這些結(jié)果可用以作為操作數(shù)的值,供后續(xù)發(fā)布指令及/或儲(chǔ)存至寄存器堆116所用。取回隊(duì)列(retire queue)102可耦合至調(diào)度裝置118和分派單元104。取回隊(duì)列可用以決定每個(gè)發(fā)布的操作何時(shí)可取回。在一個(gè)實(shí)施例中,微處理器100可設(shè)計(jì)用以和x86架構(gòu)兼容。必須注意微處理器100也可包含許多其它組件。舉例而言,微處理器100可包含分支預(yù)測(cè)單元(未示出)。
指令高速緩存106可在分派單元104接收指令之前先暫存指令??赏ㄟ^預(yù)取單元108,從系統(tǒng)內(nèi)存200預(yù)取代碼,而提供代碼給指令高速緩存106。指令高速緩存106可以數(shù)種不同的設(shè)置實(shí)施(例如,集合結(jié)合、完全結(jié)合或直接映射)。
預(yù)取單元108可從系統(tǒng)內(nèi)存200預(yù)取代碼,以儲(chǔ)存在指令高速緩存106之中。在一個(gè)具體實(shí)施例中,預(yù)取單元108可以將從系統(tǒng)內(nèi)存200來的突發(fā)代碼發(fā)入指令高速緩存106。預(yù)取單元108可使用數(shù)種特定代碼預(yù)取技術(shù)及算法。
分派單元104可輸出包含位編碼操作的信號(hào),該位編碼操作可被執(zhí)行核心124以及操作數(shù)地址信息、操作數(shù)立即數(shù)、及/或操作數(shù)偏移數(shù)據(jù)執(zhí)行。在某些實(shí)施例中,分派單元104可包含譯碼電路(未示出),用以將特定指令譯碼成可在執(zhí)行核心124中執(zhí)行的操作。簡(jiǎn)單指令可對(duì)應(yīng)于簡(jiǎn)單操作。在某些實(shí)施例中,更復(fù)雜的指令可對(duì)應(yīng)于多個(gè)操作。根據(jù)包括寄存器更新的操作的譯碼,寄存器堆116中的寄存器位置可保留用以儲(chǔ)存猜測(cè)寄存器狀態(tài)(在另一個(gè)具體實(shí)施例中,重排序緩沖器可用以儲(chǔ)存一個(gè)或多個(gè)為每個(gè)寄存器所用的猜測(cè)寄存器狀態(tài))。為了促進(jìn)寄存器重新命名,可使用寄存器映射134將來源及目的操作數(shù)的邏輯寄存器名稱轉(zhuǎn)譯成物理寄存器名稱。寄存器映射134可追蹤寄存器堆116中的各寄存器目前哪些已被分配,以及哪些尚未分配。
圖1的微處理器100支持無序執(zhí)行。取回隊(duì)列102可持續(xù)追蹤用于寄存器讀、寫等操作的原始程序,并允許猜測(cè)指令執(zhí)行及分支預(yù)測(cè)錯(cuò)誤的恢復(fù),并有助于明確異常。在某些實(shí)施例中,取回隊(duì)列102也可通過提供用于猜測(cè)寄存器狀態(tài)的數(shù)據(jù)值儲(chǔ)存,而支持寄存器重新命名。在許多實(shí)施例中,取回隊(duì)列102可用類似重排序緩沖器的方式動(dòng)作。然而,與典型的重排序緩沖器的不同處在于,取回隊(duì)列102無法提供任何數(shù)據(jù)值儲(chǔ)存。在某些實(shí)施例中,取回隊(duì)列102可以以先進(jìn)先出的設(shè)置實(shí)現(xiàn),在該設(shè)置中當(dāng)操作生效時(shí),將其移至緩沖器底部,以騰出空間讓新記錄停留在隊(duì)列頂端。當(dāng)操作取回時(shí),取回隊(duì)列102可解除寄存器堆116中不再需要儲(chǔ)存猜測(cè)寄存器狀態(tài)的寄存器的分配,并提供信號(hào)給寄存器映射134,指出現(xiàn)階段有哪些寄存器可用。通過維持寄存器堆116(或在另一個(gè)具體實(shí)施例,在重排序緩沖器之中)中的猜測(cè)寄存器狀態(tài),直到產(chǎn)生那些狀態(tài)的操作生效,若分支預(yù)測(cè)錯(cuò)誤,則伴隨預(yù)測(cè)錯(cuò)誤路徑的猜測(cè)性執(zhí)行操作的結(jié)果,可能會(huì)在寄存器堆116之中失效。
根據(jù)特定操作的譯碼,若所需的操作數(shù)為寄存器位置,則寄存器地址信息可發(fā)送到寄存器映射134(或重排序緩沖器)。舉例而言,在x86架構(gòu)中,有八個(gè)32位的邏輯寄存器(例如,EAX、EBX、ECX、EDX、EBP、ESI、EDI和ESP)。物理寄存器堆116(或重排序緩沖器)包含用于結(jié)果的儲(chǔ)存并允許無序執(zhí)行,其中該結(jié)果為改變這些邏輯寄存器的內(nèi)容的結(jié)果。寄存器堆116中的物理寄存器,可被分配來儲(chǔ)存各操作的結(jié)果,該操作根據(jù)譯碼,而決定修改其中一個(gè)邏輯寄存器的內(nèi)容。因此,根據(jù)數(shù)種觀點(diǎn),在特定程序執(zhí)行期間,寄存器堆116(或在另一個(gè)具體實(shí)施例中,在重排序緩沖器之中)可具有一個(gè)或多個(gè)寄存器,該寄存器包括一給定的邏輯寄存器的猜測(cè)性執(zhí)行的內(nèi)容。
寄存器映射134可指定一物理寄存器至特定的邏輯寄存器,作為用于操作的目的操作數(shù)。分派單元104可決定寄存器堆116具有一個(gè)或多個(gè)預(yù)先分配的物理寄存器,該物理寄存器作為已給定操作中的來源操作數(shù)指定給特定的邏輯寄存器。寄存器映射134可提供標(biāo)記,用于最近一次指向邏輯寄存器的物理寄存器。此標(biāo)記可用以存取在寄存器堆116中操作數(shù)的數(shù)據(jù)值,或通過在結(jié)果總線130上傳遞的結(jié)果而接收數(shù)據(jù)值。若操作數(shù)對(duì)應(yīng)于一內(nèi)存位置,則可通過裝載/儲(chǔ)存單元222,將操作數(shù)的值提供給結(jié)果總線(將結(jié)果傳送和/或儲(chǔ)存在寄存器堆118中)。當(dāng)操作由某個(gè)調(diào)度裝置118發(fā)布時(shí),操作數(shù)數(shù)據(jù)值可提供給執(zhí)行核心124。必須注意在另一個(gè)具體實(shí)施例中,當(dāng)分派操作時(shí),操作數(shù)的值便可提供給相對(duì)應(yīng)的調(diào)度裝置118(而不是當(dāng)操作發(fā)布時(shí),提供給相對(duì)應(yīng)的執(zhí)行核心124)。
位編碼操作,以及在分派單元104的輸出端所提供的立即數(shù),可按規(guī)定路線發(fā)送至一個(gè)或多個(gè)調(diào)度裝置118。必須注意如同文中所用,調(diào)度裝置是一裝置,用以偵測(cè)何時(shí)操作已待執(zhí)行,并發(fā)布已待命的操作至一或多個(gè)執(zhí)行單元。舉例而言,保留站即是調(diào)度裝置。各調(diào)度裝置118皆可保持操作信息(例如,已編碼位的執(zhí)行位及操作數(shù)的值、操作數(shù)標(biāo)記及/或立即數(shù)),該信息供正等待發(fā)布給執(zhí)行核心124的數(shù)個(gè)待處理操作所用。在某些實(shí)施例中,每個(gè)調(diào)度裝置118皆無法提供操作數(shù)的值儲(chǔ)存。取而代之的是,為決定操作數(shù)的值何時(shí)可供執(zhí)行核心124讀取(從寄存器堆116或結(jié)果總線130),各調(diào)度裝置可監(jiān)視已發(fā)布的操作以及寄存器堆116中可用的結(jié)果。在某些實(shí)施例中,各調(diào)度裝置118可配合專用的執(zhí)行核心124。在其它實(shí)施例中,單一調(diào)度裝置118可發(fā)布操作至超過一個(gè)執(zhí)行核心124。
調(diào)度裝置118可提供暫時(shí)儲(chǔ)存操作信息的功能,該操作信息由待執(zhí)行核心124執(zhí)行。如前所述,各調(diào)度裝置118可儲(chǔ)存就待處理操作所用的操作信息。此外,各調(diào)度裝置可儲(chǔ)存用于操作的操作信息,該操作已執(zhí)行過但仍可再發(fā)布。操作發(fā)布給執(zhí)行核心124以響應(yīng)任何所需操作數(shù)的值的執(zhí)行,其中該操作數(shù)已及時(shí)成為執(zhí)行可用的。因此,操作所執(zhí)行的順序不會(huì)和原始程序指令序列的順序相同。具有數(shù)據(jù)猜測(cè)的操作可繼續(xù)保留在調(diào)度裝置118之中,直到其變成非猜測(cè)為止,以便當(dāng)數(shù)據(jù)猜測(cè)為錯(cuò)誤時(shí),可對(duì)其重新發(fā)布。
在一個(gè)實(shí)施例中,各執(zhí)行核心124可包含這樣的組件,該組件配置成用來執(zhí)行加法及減法的整數(shù)算數(shù)操作,以及移位操作、循環(huán)操作、邏輯操作、分支操作。也可包含浮點(diǎn)數(shù)單元以提供浮點(diǎn)數(shù)的操作。一個(gè)或多個(gè)執(zhí)行核心124,可配置用以執(zhí)行地址產(chǎn)生,用于裝載及儲(chǔ)存內(nèi)存操作,該裝載及儲(chǔ)存內(nèi)存操作由裝載/儲(chǔ)存單元126所執(zhí)行。
執(zhí)行核心124還可提供信息給分支預(yù)測(cè)單元,該信息關(guān)于條件式分支指令的執(zhí)行,因此若當(dāng)分支猜測(cè)錯(cuò)誤時(shí),分支預(yù)測(cè)單元?jiǎng)t可在猜測(cè)錯(cuò)誤分支之后掃除指令,其中該猜測(cè)錯(cuò)誤分支已進(jìn)入到指令處理路線以及再直接預(yù)取單元106。再直接預(yù)取單元106隨后可從指令高速緩存106或系統(tǒng)內(nèi)存200之中,開始擷取正確的指令集。在此情形中,發(fā)生在猜測(cè)錯(cuò)誤分支指令之后的原始程序序列中的指令結(jié)果可摒棄不用,包括那些受猜測(cè)性執(zhí)行以及暫時(shí)儲(chǔ)存于寄存器堆116中的指令結(jié)果,皆可摒棄不用。若寄存器的值被更新,則由執(zhí)行核心124內(nèi)部組件所產(chǎn)生的結(jié)果,可輸出至結(jié)果總線130,再到寄存器堆116。若內(nèi)存位置的內(nèi)容已改變,則由執(zhí)行核心124內(nèi)部產(chǎn)生的結(jié)果可提供給裝載/儲(chǔ)存單元126。
裝載/儲(chǔ)存單元126提供介于執(zhí)行核心124及數(shù)據(jù)高速緩存128之間的一接口。在一個(gè)實(shí)施例中,裝載/儲(chǔ)存單元126可與裝載/儲(chǔ)存緩沖器一同配置,該裝載/儲(chǔ)存緩沖器具有數(shù)個(gè)供數(shù)據(jù)及地址信息用于待處理裝載及儲(chǔ)存。裝載/儲(chǔ)存單元126還可執(zhí)行相關(guān)性檢查,用于相對(duì)于待處理儲(chǔ)存指令的裝載指令,以確保數(shù)據(jù)保持一致性。
數(shù)據(jù)高速緩存128為一高速緩存,用以暫存在裝載/儲(chǔ)存單元126及系統(tǒng)內(nèi)存200之間傳送的數(shù)據(jù)。如同上述的指令高速緩存106,數(shù)據(jù)高速緩存128可在多種特定內(nèi)存配置中實(shí)行,包含一組結(jié)合的配置。此外,在某些實(shí)施例中,數(shù)據(jù)高速緩存106及指令高速緩存128可在統(tǒng)一的高速緩存中實(shí)行。
圖2A顯示分派單元104的一個(gè)具體實(shí)施例。在此實(shí)施例中,分派單元104包含寄存器映射134,以及內(nèi)存文件132。如前所述,寄存器映射134可配置用以提供寄存器重新命名。寄存器映射134可接收邏輯寄存器名稱供各來源及目的操作數(shù)所用,并可輸出最近一次指定給邏輯寄存器的物理寄存器的物理寄存器名稱。內(nèi)存文件132包含內(nèi)存文件控制器202,以及內(nèi)存文件儲(chǔ)存器204。
內(nèi)存文件儲(chǔ)存器204包含一個(gè)或多個(gè)記錄220。每個(gè)記錄220都可包含尋址模式206以及標(biāo)記208,該標(biāo)記與記錄的尋址模式有關(guān)。各標(biāo)記皆可在數(shù)據(jù)值產(chǎn)生時(shí),通過指出數(shù)據(jù)值該儲(chǔ)存于何處(例如,在重排序緩沖器之中,或在寄存器堆116之中),而識(shí)別該數(shù)據(jù)值。舉例而言,如顯示的實(shí)施例所示,各標(biāo)記皆可識(shí)別分配以儲(chǔ)存數(shù)據(jù)值的物理寄存器,如同由寄存器映射134所指示者。各尋址模式可包含全部或一些信息,用以具體指定操作之中的地址。舉例而言,快速參考圖2B,顯示一示范的尋址模式206。在此實(shí)施例中,尋址模式206包含基本邏輯寄存器名稱210,索引邏輯寄存器名稱212、以及偏移量214。一些尋址模式206可能包括一寄存器的一段邏輯寄存器名稱,用于識(shí)別內(nèi)存中的特定段。要注意的是,在許多具體實(shí)施例中,儲(chǔ)存于內(nèi)存文件儲(chǔ)存器204之中的尋址模式206可不必包含所有的尋址信息,該尋址信息具體指定用于一操作。舉例而言,內(nèi)存文件儲(chǔ)存器204中的記錄,可儲(chǔ)存少于用以具體指定在偏移量字段214中的偏移量的所有位。在其它具體實(shí)施例中,內(nèi)存文件控制器202可能依據(jù)內(nèi)存文件中的記錄是否可儲(chǔ)存特定操作的所有尋址信息,而選擇性地選擇是否要將記錄配置在內(nèi)存文件存儲(chǔ)器中。例如,假設(shè)內(nèi)存文件存儲(chǔ)器204中的各記錄儲(chǔ)存了多達(dá)16位的移位信息,而且一特定操作的尋址信息包括24位的移位信息的話,那么內(nèi)存文件控制器202就不可能配置內(nèi)存文件記錄,以用于該操作的尋址信息。在一些具體實(shí)施例中,內(nèi)存文件存儲(chǔ)器204可由幾個(gè)寄存器、鎖存器、觸發(fā)器、或者其它時(shí)鐘存儲(chǔ)器來實(shí)現(xiàn)。在另一個(gè)具體實(shí)施例中,內(nèi)存文件存儲(chǔ)器204可能包括一個(gè)或者更多個(gè)隨機(jī)存取存儲(chǔ)器(RAM)單元。
內(nèi)存文件控制器202可對(duì)在未分派的操作中的具體指定的尋址模式,和儲(chǔ)存在內(nèi)存文件儲(chǔ)存器204中的記錄內(nèi)的尋址模式做比較。若一操作的尋址模式不符合當(dāng)時(shí)儲(chǔ)存在內(nèi)存文件儲(chǔ)存器204中的記錄內(nèi)的任何尋址模式(亦即,該操作的尋址模式在內(nèi)存文件儲(chǔ)存器之中漏失),則內(nèi)存文件控制器202可在內(nèi)存文件儲(chǔ)存器204之中分配新的記錄,以便儲(chǔ)存全部或部分操作的尋址模式。若在內(nèi)存文件儲(chǔ)存器204之中,并無空閑的記錄可供分配之用,則內(nèi)存文件控制器202可選擇一記錄,并通過使用替換方案而將其覆蓋,其中該替換方案例如最近最少使用(Least Recently Used,LRU)、先進(jìn)先出(FIFO)、隨機(jī)替換等方案。除了將操作的分配模式儲(chǔ)存在已分配的記錄中之外,內(nèi)存文件控制器202還可儲(chǔ)存標(biāo)記(例如,物理寄存器的名稱),該標(biāo)記識(shí)別一裝載出或者存入內(nèi)存位置的值,該內(nèi)存位置由操作的尋址模式所識(shí)別。舉例而言,若從內(nèi)存裝載數(shù)據(jù)的操作被處理,則響應(yīng)該操作所分配的記錄可儲(chǔ)存物理寄存器的名稱,該物理寄存器分配用來儲(chǔ)存裝載操作的結(jié)果。若將數(shù)據(jù)存入內(nèi)存位置的操作被處理,則內(nèi)存文件控制器202可儲(chǔ)存儲(chǔ)存該值的寄存器的物理寄存器名稱,其中該值通過儲(chǔ)存操作存在內(nèi)存文件儲(chǔ)存器204之中。
若一操作的尋址模式(或一部份該模式)已將一記錄存入內(nèi)存文件204中(亦即,該操作的尋址模式命中內(nèi)存文件儲(chǔ)存器內(nèi)部),則內(nèi)存文件控制器202可使用或修改該記錄,該記錄包括有相符的尋址模式。若一裝載操作(從特定地址裝載值到寄存器中的操作)被處理,則內(nèi)存文件控制器202可輸出物理寄存器名稱208,該物理寄存器名稱208儲(chǔ)存在匹配的記錄中。若一儲(chǔ)存操作(該操作將從寄存器來的數(shù)據(jù)儲(chǔ)存入特定內(nèi)存地址)被處理,則內(nèi)存文件控制器202可覆蓋標(biāo)記(例如,物理寄存器名稱208),該標(biāo)記與數(shù)據(jù)已儲(chǔ)存的標(biāo)記儲(chǔ)存于相符的記錄之中。
若一裝載操作被處理,且該裝載操作命中于內(nèi)存文件儲(chǔ)存器204中,則由內(nèi)存文件控制器202所輸出的標(biāo)記,可用以將由標(biāo)記所識(shí)別的儲(chǔ)存的值連接到裝載操作的猜測(cè)結(jié)果。舉例而言,在某些實(shí)施例中,當(dāng)分派裝載操作給調(diào)度裝置118時(shí),則由內(nèi)存文件132所輸出的標(biāo)記,也能提供給調(diào)度裝置(例如,作為猜測(cè)來源操作數(shù)標(biāo)記)。調(diào)度裝置118可發(fā)布該操作,以響應(yīng)標(biāo)記所識(shí)別的值的可用性(例如,在寄存器堆116或結(jié)果總線130之中)。執(zhí)行核心124可執(zhí)行裝載操作,以使已連接的值可像結(jié)果總線130上的裝載操作的猜測(cè)結(jié)果那樣廣播傳遞(必須注意在某些實(shí)施例中,產(chǎn)生作為裝載結(jié)果的數(shù)據(jù)值,其自身不可被標(biāo)記,或用其它方式識(shí)別自身為猜測(cè)值)。在其它實(shí)施例中,數(shù)據(jù)值可通過將標(biāo)記存入猜測(cè)映射中而連接至裝載操作的猜測(cè)結(jié)果,如下所述。
作為連接的結(jié)果,一旦由標(biāo)記所定義的數(shù)據(jù)值為可用時(shí)(例如,在寄存器堆116之中,或在結(jié)果總線130之上),則該數(shù)據(jù)值可被作為猜測(cè)結(jié)果傳遞,以允許依賴的操作使用猜測(cè)值的結(jié)果執(zhí)行。在許多情況下,如果相關(guān)操作的執(zhí)行被延遲,這將允許依賴的操作使用該裝載操作的猜測(cè)結(jié)果更快地執(zhí)行,直至該裝載操作的非猜測(cè)結(jié)果可用。在某些實(shí)施例中,數(shù)據(jù)值可通過執(zhí)行裝載操作而傳遞,以使數(shù)據(jù)值作為裝載操作的猜測(cè)結(jié)果輸出至結(jié)果總線130。舉例而言,在一個(gè)實(shí)施例中,不采取三次循環(huán)執(zhí)行裝載非猜測(cè)性的方式(假設(shè)裝載命中于數(shù)據(jù)高速緩存128內(nèi)部),而是通過輸出數(shù)據(jù)值及標(biāo)記,以單次循環(huán)的方式執(zhí)行裝載,其中該標(biāo)記識(shí)別數(shù)據(jù)值作為裝載結(jié)果。在其它實(shí)施例中,數(shù)據(jù)值可用較不直接的方式傳遞,亦即直接將內(nèi)存文件控制器202所輸出的標(biāo)記,提供給依賴的操作(具有操作數(shù)的操作,其操作數(shù)由裝載操作提供)作為分派的猜測(cè)操作數(shù)來源。傳遞數(shù)據(jù)值的裝置,可包含一個(gè)或多個(gè)配置用以修正裝載操作的分派單元,使該裝載操作作為猜測(cè)寄存器間的移動(dòng)操作而執(zhí)行,或使該裝載操作作為猜測(cè)操作數(shù)來源標(biāo)記提供標(biāo)記給依賴的操作;調(diào)度裝置根據(jù)已連接的數(shù)據(jù)值可用性配置用以發(fā)布修正的裝載和/或依賴的操作;以及執(zhí)行核心配置用以將已連接的數(shù)據(jù)值作為裝載的結(jié)果輸出,或使用該已連接的數(shù)據(jù)值執(zhí)行依賴的操作。
該裝載儲(chǔ)存單元126(或者用于確認(rèn)微處理器100內(nèi)的連接的另一個(gè)裝置)可能確認(rèn)儲(chǔ)存在由內(nèi)存文件132所識(shí)別的物理寄存器中的數(shù)值與裝載操作的猜測(cè)結(jié)果的連接。假如該連接不正確的話,裝載儲(chǔ)存單元126就可能使該裝載再發(fā)布以及/或者在結(jié)果總線130上廣播傳遞該裝載操作的正確結(jié)果。再發(fā)布該裝載可能會(huì)導(dǎo)致任何依賴性操作,該些操作使用裝載的猜測(cè)結(jié)果來執(zhí)行以再發(fā)布,并且使用更新、非猜測(cè)性數(shù)值來執(zhí)行?;蛘?,假如該連接不正確的話,處理器100就可能清除發(fā)生在錯(cuò)誤猜測(cè)之后的操作,并且使用裝載操作的正確結(jié)果的那些操作重新開始執(zhí)行。
如圖所示,內(nèi)存文件132追蹤操作之中的尋址模式,該操作在數(shù)據(jù)高速緩存128(或系統(tǒng)內(nèi)存200)之中用于存取數(shù)據(jù)。因此,儲(chǔ)存于物理寄存器中的寄存器的值可被連接至內(nèi)存中儲(chǔ)存在特定地址的值。
為了進(jìn)一步顯示內(nèi)存文件132的操作,現(xiàn)在假設(shè)有一連串的操作將被分派單元104處理,該一連串操作包含下列操作MOV EBX,[EDX+EAX-偏移量A](裝載1)…MOV ECX,[EDX+EAX-偏移量A](裝載2)…MOV[EDX+EAX-偏移量A],EAX(儲(chǔ)存1)
這些操作的任何一個(gè),皆可通過程序命令的一個(gè)或多個(gè)干擾操作而分離。如上所示,這三個(gè)操作的任何一個(gè),皆包含相同的尋址模式,EDX+EAX-偏移量A。
當(dāng)裝載1(LOAD1)的尋址模式提供給內(nèi)存文件132時(shí),內(nèi)存文件控制器202可檢查內(nèi)存文件儲(chǔ)存器204以供尋址模式所用,該尋址模式符合LOAD1的尋址模式。假設(shè)尋址模式在內(nèi)存文件儲(chǔ)存器204之中丟失,則內(nèi)存文件控制器202可分配一記錄(通過使用未分配的記錄,或通過覆蓋已分配的記錄而完成),以儲(chǔ)存全部或一些裝載操作的尋址模式,以及裝載操作的目的物理寄存器的物理寄存器名稱,如同由寄存器映射134所提供。由于裝載操作在內(nèi)存文件儲(chǔ)存器之中丟失,內(nèi)存文件控制器202從而無法輸出用于該裝載操作的標(biāo)記。
當(dāng)裝載2(LOAD2)隨后由內(nèi)存文件132處理,則其尋址模式可符合響應(yīng)LOAD1分配的記錄的尋址模式(假設(shè)該記錄并未因響應(yīng)干擾操作而被覆蓋)。響應(yīng)LOAD2的尋址模式命中于內(nèi)存文件儲(chǔ)存器204,內(nèi)存文件控制器202可輸出物理寄存器的物理寄存器名稱,該物理寄存器系分配以儲(chǔ)存LOAD1的結(jié)果。該物理寄存器名稱可用以將LOAD1所裝載的數(shù)據(jù)值連接至LOAD2的猜測(cè)結(jié)果。
當(dāng)儲(chǔ)存1(STORE1)由內(nèi)存文件132處理,其尋址模式可命中記錄以響應(yīng)LOAD1(再次假設(shè),沒有干擾操作造成此記錄被覆蓋)。不采取輸出物理寄存器的物理寄存器名稱,該物理寄存器分配用以儲(chǔ)存LOAD1的結(jié)果(為用于LOAD2而完成),而是內(nèi)存文件控制器202可以用包含由STORE1所儲(chǔ)存的數(shù)據(jù)的寄存器的物理寄存器名稱來覆蓋儲(chǔ)存在該記錄中的物理寄存器名稱208。因此,當(dāng)后續(xù)裝載操作命中此記錄,內(nèi)存文件控制器202將輸出STORE1的來源物理寄存器的寄存器名稱,而不輸出LOAD1的目的寄存器的物理寄存器名稱。
因?yàn)閮?nèi)存文件132被用于作為猜測(cè)結(jié)構(gòu),故儲(chǔ)存在內(nèi)存文件儲(chǔ)存器204中的信息的精確性對(duì)于微處理器100的正確操作可能不是關(guān)鍵的(例如,在內(nèi)存文件132中預(yù)測(cè)錯(cuò)誤,可能無法在微處理器100的輸出中造成錯(cuò)誤)。然而,為了提高將裝載操作的猜測(cè)結(jié)果正確連接至儲(chǔ)存在物理寄存器中的值所帶來的好處,和/或?yàn)榱藴p低任何因?yàn)轭A(yù)測(cè)錯(cuò)誤的猜測(cè)連接所招致的性能損失,可能需要改善內(nèi)存文件132的精確性。在某些實(shí)施例中,內(nèi)存文件132的精確性,可在更新用以具體指定地址的寄存器時(shí),通過偵測(cè)出內(nèi)存文件儲(chǔ)存器204中的失效記錄而獲得提高。舉例而言,每個(gè)尋址模式可包含一個(gè)或多個(gè)邏輯寄存器識(shí)別器,該邏輯寄存器識(shí)別器用以識(shí)別用于地址計(jì)算的基地址及索引地址。若后續(xù)操作修改其中一個(gè)邏輯寄存器,而該邏輯寄存器已具體指定作為記錄的尋址模式206的一部分,則此記錄可能會(huì)失效。因此,如圖2A中所示,為了執(zhí)行記錄失效,則各操作的目的寄存器的邏輯寄存器名稱可輸入至內(nèi)存文件132。
此外,在某些實(shí)施例中,內(nèi)存文件儲(chǔ)存器204內(nèi)部的記錄可被失效,以響應(yīng)監(jiān)看另一裝置,該裝置獲得特定地址的數(shù)據(jù)寫入權(quán)。同樣地,記錄同樣可被失效以響應(yīng)偵測(cè)到的預(yù)測(cè)錯(cuò)誤。一般而言,諸如可能影響到內(nèi)存文件儲(chǔ)存器204中的記錄的精確性的許多情況可被監(jiān)看,并用以決定何時(shí)使記錄失效。然而,由于內(nèi)存文件132為猜測(cè)結(jié)構(gòu),所以當(dāng)實(shí)行特定監(jiān)控方法的額外硬件成本超過內(nèi)存文件精確性的潛在改良的負(fù)擔(dān)時(shí),某些實(shí)施例將不實(shí)行某些這類監(jiān)控方法。
必須注意內(nèi)存文件132允許介于操作之間的相關(guān)性被用以將寄存器的值連接到猜測(cè)裝載結(jié)果,該操作從操作流中彼此相對(duì)的操作中移出。因此,內(nèi)存文件可提供介于操作間的相關(guān)的歷史紀(jì)錄,該操作可被數(shù)個(gè)干擾操作分離。
圖3顯示一種將裝載操作的猜測(cè)結(jié)果連接到寄存器的值的方法的具體實(shí)施例的流程圖。在步驟301,標(biāo)記與尋址模式相結(jié)合,指出二者可能儲(chǔ)存相同的數(shù)據(jù)值。標(biāo)記及尋址模式二者都具體指定用于第一裝載或儲(chǔ)存操作。舉例而言,如果第一操作為裝載操作,則標(biāo)記可識(shí)別分配以儲(chǔ)存裝載的結(jié)果的物理寄存器,而且該尋址模式可被用來計(jì)算用于裝載的地址。若取代第一操作為儲(chǔ)存操作,則尋址模式可指出該儲(chǔ)存的目的地址,且標(biāo)記可識(shí)別正由儲(chǔ)存操作所儲(chǔ)存的數(shù)據(jù)。在某些實(shí)施例中,可通過將標(biāo)記及尋址模式儲(chǔ)存在內(nèi)存文件中的記錄中而將二者結(jié)合。
若裝載操作的尋址模式與第一操作的尋址模式相符,則裝載的猜測(cè)結(jié)果可連接至由標(biāo)記所識(shí)別的數(shù)據(jù)值,該標(biāo)記具體指定用于第一操作,如步驟303至305所指出。如果裝載操作的尋址模式不符合第一操作的尋址模式,則裝載的尋址模式與用于裝載目的的標(biāo)記可被結(jié)合(例如,通過將二者儲(chǔ)存在內(nèi)存文件中的記錄中),如步驟303至311所指出。再者,一般而言可通過存取數(shù)據(jù)高速緩存來執(zhí)行裝載,如步驟313所示。在一個(gè)實(shí)施例中,裝載操作的尋址模式可用以和一個(gè)以上的先前操作的尋址模式相比較。舉例而言,裝載的尋址模式可和目前儲(chǔ)存在內(nèi)存文件中的各尋址模式相比較。
如步驟307所示,若裝載的猜測(cè)結(jié)果連接至由標(biāo)記所識(shí)別的數(shù)據(jù)值,則該數(shù)據(jù)值可傳遞至一個(gè)或多個(gè)依賴的操作,以作為裝載操作的猜測(cè)結(jié)果。數(shù)據(jù)值可通過正在傳遞的結(jié)果而傳遞,或通過傳遞表示依賴的操作可使用數(shù)據(jù)值作為猜測(cè)操作數(shù)來源的一指示,如下文中更詳細(xì)描述的。在一個(gè)實(shí)施例中,若數(shù)據(jù)值通過正傳遞的結(jié)果而傳遞,則依賴的操作可在產(chǎn)生數(shù)據(jù)值的操作完成執(zhí)行的一周期之后,使用該傳遞數(shù)據(jù)值來執(zhí)行。若數(shù)據(jù)值通過指示而傳遞,該指示表示依賴的操作可使用物理寄存器作為猜測(cè)操作數(shù)來源,則可在產(chǎn)生數(shù)據(jù)值的操作完成執(zhí)行之后,立即發(fā)布依賴的操作。猜測(cè)結(jié)果可在該猜測(cè)結(jié)果被驗(yàn)證之前先予以傳遞,如步驟309所示。不必存取數(shù)據(jù)高速緩存,即可傳遞猜測(cè)結(jié)果(亦即,猜測(cè)結(jié)果可在非猜測(cè)結(jié)果之前傳遞,該非猜測(cè)結(jié)果由存取數(shù)據(jù)高速緩存而產(chǎn)生)。
若猜測(cè)結(jié)果在步驟309被驗(yàn)證為正確,則裝載操作無需執(zhí)行數(shù)據(jù)高速緩存存取即可完成。然而,若猜測(cè)結(jié)果在步驟309的驗(yàn)證判定為不正確,則為了獲得正確的結(jié)果(未示出),數(shù)據(jù)高速緩存的存取可被執(zhí)行。如果這樣,則任何使用裝載的猜測(cè)結(jié)果而執(zhí)行的依賴的操作,可使用裝載的正確結(jié)果而被再執(zhí)行。必須注意在某些情況中,驗(yàn)證動(dòng)作(在步驟309)可在已連接的數(shù)據(jù)值被傳遞作為裝載的猜測(cè)結(jié)果之前(步驟307)先行執(zhí)行。在這種情況中,裝載可正常執(zhí)行,或當(dāng)連接判定為正確時(shí),數(shù)據(jù)值則可傳遞作為裝載操作的非猜測(cè)結(jié)果。
有數(shù)種實(shí)施例可用許多不同的方式,將裝載操作的猜測(cè)結(jié)果連接到寄存器數(shù)據(jù)值。在某些實(shí)施例中,可通過識(shí)別用于操作數(shù)的兩個(gè)來源來連接數(shù)據(jù)值一個(gè)是猜測(cè)來源,一個(gè)是非猜測(cè)來源。猜測(cè)來源可為已連接的數(shù)據(jù)值。可提供猜測(cè)來源用于裝載操作,以指出連接至裝載的猜測(cè)結(jié)果的數(shù)據(jù)值。在某些實(shí)施例中,猜測(cè)來源還可被提供用于這種裝載操作的操作。因此,某些操作數(shù)可能具有兩個(gè)標(biāo)記一個(gè)用以識(shí)別猜測(cè)來源,以及一個(gè)用以識(shí)別非猜測(cè)來源。在這種實(shí)施例中,各調(diào)度裝置118皆可提供標(biāo)記儲(chǔ)存用于猜測(cè)操作數(shù)及非猜測(cè)操作數(shù)二者,如圖4中所示。
圖4顯示可包含在微處理器之中的調(diào)度裝置118的一個(gè)具體實(shí)施例。在所顯示的實(shí)施例中,調(diào)度裝置118包含調(diào)度裝置控制器502以及操作儲(chǔ)存器504。響應(yīng)分派單元分派操作,調(diào)度裝置控制器502可在操作儲(chǔ)存器504之中分配記錄,以儲(chǔ)存對(duì)應(yīng)于該操作的信息。舉例而言,在操作儲(chǔ)存器504之中的記錄522可包含一個(gè)操作碼字段510、一個(gè)或多個(gè)操作數(shù)字段、以及一個(gè)結(jié)果字段516。結(jié)果字段516可儲(chǔ)存用以識(shí)別物理寄存器的標(biāo)記,且記錄的操作結(jié)果應(yīng)儲(chǔ)存在該物理寄存器之中。當(dāng)發(fā)布操作時(shí),此標(biāo)記可通過一個(gè)或多個(gè)標(biāo)記總線520的其中一個(gè)傳遞到各調(diào)度裝置118。各調(diào)度裝置可將傳遞于標(biāo)記總線520上的標(biāo)記與用于未處理的操作的操作數(shù)標(biāo)記(猜測(cè)及非猜測(cè)二者,如下所述)做比較,以判定未處理的操作的操作數(shù)何時(shí)可用。因此,可發(fā)布操作(或?qū)⑵錁?biāo)示為已待命發(fā)布),以響應(yīng)出現(xiàn)在標(biāo)記總線520之上的來源操作數(shù)標(biāo)記。
各操作數(shù)字段可包含用于猜測(cè)標(biāo)記及非猜測(cè)標(biāo)記的儲(chǔ)存,該猜測(cè)標(biāo)記識(shí)別猜測(cè)操作數(shù)來源,該非猜測(cè)標(biāo)記識(shí)別非猜測(cè)操作數(shù)來源。在所顯示的記錄522之中,操作數(shù)1的兩個(gè)來源由非猜測(cè)標(biāo)記512以及猜測(cè)標(biāo)記514所識(shí)別。調(diào)度裝置118可配置用以發(fā)布操作,以響應(yīng)一個(gè)或多個(gè)表示操作的操作數(shù)可用的指示。若從猜測(cè)來源或非猜測(cè)來源而來的操作數(shù)為可用,則該操作數(shù)為可用。若從猜測(cè)來源及非猜測(cè)來源而來的操作數(shù)皆為可用,則可使用從非猜測(cè)來源而來的可用的值執(zhí)行該操作。在某些實(shí)施例中,調(diào)度裝置118會(huì)將非猜測(cè)操作數(shù)來源為可用的操作,比只有猜測(cè)操作數(shù)來源為可用的操作優(yōu)先發(fā)布。
應(yīng)該注意的是,操作可包含一些具有猜測(cè)來源的操作數(shù),以及其它不具有猜測(cè)來源的操作數(shù)。同時(shí)必須注意,相同的來源可以是用于一個(gè)操作的猜測(cè)來源,以及用于另一個(gè)操作的非猜測(cè)來源。在某些實(shí)施例中,當(dāng)執(zhí)行操作時(shí),只有一個(gè)數(shù)據(jù)值可讀取,用于各操作數(shù)(例如,執(zhí)行核心124可讀取猜測(cè)操作數(shù)來源,或非猜測(cè)操作數(shù)來源其一,但不是二者)。這使得在寄存器堆116之中增加額外的端口變得不必要。在某些實(shí)施例中,猜測(cè)來源以及物理來源可儲(chǔ)存在相同的儲(chǔ)存位置(例如,在寄存器堆116之中),而猜測(cè)來源不可被標(biāo)記,或以其它方式識(shí)別為猜測(cè)來源。
在許多實(shí)施例中,調(diào)度裝置118可配置成在操作已發(fā)布給執(zhí)行核心124之后,保持分配給該操作的記錄。當(dāng)調(diào)度裝置118發(fā)布操作,而對(duì)一個(gè)或多個(gè)猜測(cè)操作數(shù)的可用性做出響應(yīng)時(shí),調(diào)度裝置可保持分配給操作的記錄522,以使該操作在猜測(cè)連接為不正確時(shí),能再發(fā)布該操作。在某些實(shí)施例中,裝載/儲(chǔ)存單元可配置用以驗(yàn)證猜測(cè)連接,該猜測(cè)連接當(dāng)猜測(cè)裝載結(jié)果連接至儲(chǔ)存在物理寄存器中的數(shù)據(jù)值時(shí)而發(fā)生。若連接為正確,則裝載儲(chǔ)存單元因?yàn)榭赏ㄟ^連接而得到正確的結(jié)果,而不用廣播傳遞裝載的非猜測(cè)性結(jié)果。如果這樣,則當(dāng)用于操作的識(shí)別非猜測(cè)操作數(shù)來源的標(biāo)記在結(jié)果總線130上廣播傳遞時(shí),調(diào)度裝置118可配置用以再發(fā)布操作。
在另一種情況下,裝載/儲(chǔ)存單元可以在廣播傳遞儲(chǔ)存的結(jié)果時(shí)加上額外的狀態(tài)位,該額外狀態(tài)位對(duì)廣播傳遞做出屏蔽,或指出該猜測(cè)連接正確以及不必再發(fā)布裝載。然而,若猜測(cè)連接不正確,裝載/儲(chǔ)存單元可執(zhí)行數(shù)據(jù)高速緩存及/或內(nèi)存存取,以獲得用于裝載的正確結(jié)果,并廣播傳遞該裝載的結(jié)果。在結(jié)果永遠(yuǎn)會(huì)廣播傳遞的一些實(shí)施例中,額外的狀態(tài)位可指出猜測(cè)連接不正確。因此,在許多實(shí)施例中,在微處理器中已經(jīng)可用的相同標(biāo)記及結(jié)果總線,可被用來指出猜測(cè)連接不正確。在其它實(shí)施例中,可實(shí)行另一種指示機(jī)制(例如,使用分離的結(jié)果總線130及/或結(jié)果標(biāo)記總線520,以指出預(yù)測(cè)錯(cuò)誤)。
圖5顯示一種發(fā)布及再發(fā)布操作的方法的實(shí)施例的流程圖,該操作具有猜測(cè)及非猜測(cè)操作數(shù)來源二者。如果操作的猜測(cè)操作數(shù)來源可用,則可發(fā)布該操作,如步驟801至803所示。當(dāng)數(shù)據(jù)值在寄存器堆內(nèi)部的特定寄存器中時(shí),或當(dāng)數(shù)據(jù)值輸出至結(jié)果總線時(shí),操作的猜測(cè)操作數(shù)來源可變?yōu)榭捎?。必須注意在某些情況中,就相同操作數(shù)所用的操作的非猜測(cè)操作數(shù)來源,可在猜測(cè)操作數(shù)來源之前成為可用。在這些情況中,可在猜測(cè)操作數(shù)來源變?yōu)榭捎弥鞍l(fā)布操作。在某些實(shí)施例中,后續(xù)的猜測(cè)來源的可用性無法觸發(fā)操作的再發(fā)布。
可使用由猜測(cè)操作數(shù)來源所提供的數(shù)據(jù)值執(zhí)行已發(fā)布的操作,如步驟805所指出;且操作的結(jié)果可廣播傳遞,如步驟807所指出。廣播傳遞操作的結(jié)果允許執(zhí)行依賴的操作。
若在一小段時(shí)間過后猜測(cè)來源判定為不正確(例如,由猜測(cè)來源以及非猜測(cè)來源所提供的數(shù)據(jù)值并不相同,或用以產(chǎn)生猜測(cè)來源的標(biāo)記的猜測(cè)連接并不正確),則非猜測(cè)來源的標(biāo)記無法廣播傳遞作為指示,該指示表示猜測(cè)來源的值為不正確。廣播傳遞非猜測(cè)來源的標(biāo)記包括以調(diào)度裝置通過再發(fā)布操作做出響應(yīng)的方式廣播傳遞標(biāo)記。舉例而言,在某些實(shí)施例中,若標(biāo)記已廣播傳遞,且該標(biāo)記的相關(guān)狀態(tài)標(biāo)志設(shè)定在特定值,則調(diào)度裝置可對(duì)此做出響應(yīng)。然而在其它實(shí)施例中,可能沒有相關(guān)的狀態(tài)標(biāo)志,則調(diào)度裝置可設(shè)置為在非猜測(cè)標(biāo)記廣播傳遞時(shí)立即再發(fā)布操作。
圖6顯示分派單元104的另一個(gè)具體實(shí)施例,該分派單元可包含在微處理器100之中。在此實(shí)施例中,分派單元104包含寄存器映射134、內(nèi)存文件132、以及猜測(cè)寄存器映射800。類似寄存器映射134,猜測(cè)寄存器映射800可將邏輯寄存器名稱轉(zhuǎn)譯為物理寄存器名稱。然而,猜測(cè)寄存器映射800可猜測(cè)性將邏輯寄存器名稱映射至物理寄存器名稱(例如,對(duì)內(nèi)存文件132將儲(chǔ)存在物理寄存器中的值連接至裝載操作的猜測(cè)結(jié)果做出響應(yīng))。猜測(cè)寄存器映射800可允許用于操作的猜測(cè)操作數(shù)的值,該操作并不包含將要與寄存器數(shù)據(jù)值連接的尋址模式。舉例而言,若有一有效猜測(cè)映射用于邏輯寄存器EAX,則具有將EAX作為來源操作數(shù)的操作可具有兩個(gè)來源標(biāo)記由寄存器映射134所提供的非猜測(cè)標(biāo)記,以及由猜測(cè)寄存器映射800所提供的猜測(cè)標(biāo)記。因?yàn)椴僮骺稍谄洳聹y(cè)來源可用時(shí)立即發(fā)布,故猜測(cè)寄存器映射800可通過猜測(cè)操作數(shù)標(biāo)記,并繞過所有干擾裝載及儲(chǔ)存,而將數(shù)據(jù)使用者直接連接至數(shù)據(jù)制造者。必須注意在某些實(shí)施例中,猜測(cè)映射可儲(chǔ)存不同于物理寄存器名稱的標(biāo)記(例如,在具有重排序緩沖器的實(shí)施例中,其中該重排序緩沖器包含用于猜測(cè)寄存器狀態(tài)的儲(chǔ)存)。
猜測(cè)寄存器映射800包含猜測(cè)寄存器映射控制器802以及猜測(cè)寄存器映射儲(chǔ)存器804。猜測(cè)寄存器映射儲(chǔ)存器可包含一個(gè)或多個(gè)記錄802。各記錄802可和特定邏輯寄存器產(chǎn)生關(guān)聯(lián),并可將物理寄存器的物理寄存器標(biāo)識(shí)符812指示給目前已猜測(cè)映射的邏輯寄存器。各猜測(cè)寄存器映射的記錄820還可包含表示目前該記錄是否有效的指示(未示出)。在某一實(shí)施例中,猜測(cè)寄存器映射儲(chǔ)存器804,可包含用于各邏輯寄存器的記錄。在其它實(shí)施例中,猜測(cè)寄存器映射儲(chǔ)存器804可包含比邏輯寄存器要少的記錄。在此實(shí)施例中,各記錄820可包含此記錄目前所對(duì)應(yīng)的邏輯寄存器的指示。
猜測(cè)寄存器映射控制器802可配置用以更新記錄820,以對(duì)指示做出響應(yīng),其中該指示表示裝載操作的猜測(cè)結(jié)果已連接至由特定物理寄存器名稱所識(shí)別的數(shù)據(jù)值。在所顯示的實(shí)施例中,此指示由內(nèi)存文件132所提供。待更新的記錄820是用于邏輯寄存器的記錄,該邏輯寄存器被具體指定作為裝載操作的目的。記錄可通過用于該裝載操作的內(nèi)存文件132,更新為包含物理寄存器標(biāo)識(shí)符輸出。在其它實(shí)施例中,猜測(cè)寄存器映射記錄可響應(yīng)不同于那些由內(nèi)存文件132所提供的指示(在某些這些實(shí)施例中,分派單元104可以不包含內(nèi)存文件)的指示而產(chǎn)生。舉例而言,分派單元104可偵測(cè)條件移動(dòng)指令CMOV EAX,EBX若Z,且能有效指出用于EAX的猜測(cè)寄存器映射記錄,應(yīng)識(shí)別目前映射至EBX的物理寄存器。一般而言,猜測(cè)寄存器映射記錄可響應(yīng)任何預(yù)測(cè)機(jī)制而產(chǎn)生,該預(yù)測(cè)機(jī)制指出邏輯寄存器應(yīng)猜測(cè)性映射至特定的物理寄存器。
在某些實(shí)施例中,在操作提供給寄存器映射134的相同周期中,可將這些操作提供給猜測(cè)寄存器映射800。當(dāng)寄存器映射134執(zhí)行為了一操作的非猜測(cè)寄存器重新命名,則猜測(cè)寄存器映射800可指出是否有任一邏輯寄存器連接至特定物理寄存器,該邏輯寄存器具體指定作為儲(chǔ)存其中一個(gè)操作的猜測(cè)來源操作數(shù)。若在用于其中一個(gè)操作的邏輯寄存器來源的猜測(cè)寄存器映射儲(chǔ)存器804中存在有效記錄,則猜測(cè)寄存器映射控制器802可輸出儲(chǔ)存于該邏輯寄存器記錄的物理寄存器名稱。分派單元104可在操作分派至調(diào)度裝置118時(shí),輸出此猜測(cè)物理寄存器名稱以作為猜測(cè)來源。因此,如果一個(gè)ADD操作被提供給猜測(cè)寄存器映射800,且ADD的其中一個(gè)來源在猜測(cè)寄存器映射儲(chǔ)存器804之中具有有效的記錄,則在該記錄中所識(shí)別的物理寄存器的標(biāo)記可作為猜測(cè)來源操作數(shù)標(biāo)記而提供給調(diào)度裝置118。如前所述,調(diào)度裝置可配置用以儲(chǔ)存猜測(cè)性及非猜測(cè)性操作數(shù)標(biāo)記二者,并在某些實(shí)施例中可配置用以再發(fā)布操作(若已發(fā)布過),以對(duì)正在結(jié)果總線上廣播傳遞的非猜測(cè)性標(biāo)記做出響應(yīng)。
在猜測(cè)映射內(nèi)部的記錄可因響應(yīng)用于特定邏輯寄存器的數(shù)據(jù)值將修改的指示而失效。舉例而言,若由分派單元104處理ADD EAX,ECX的操作,則猜測(cè)寄存器映射控制器802可因?yàn)锳DD操作即將修改該寄存器的值,而使目前指定給EAX的猜測(cè)映射記錄失效。
一般而言,每當(dāng)一個(gè)操作的猜測(cè)結(jié)果連接至寄存器的數(shù)據(jù)值,則猜測(cè)操作數(shù)標(biāo)記可提供給調(diào)度裝置118。在某些實(shí)施例中,內(nèi)存文件132及其它可追蹤數(shù)個(gè)周期的相關(guān)性的結(jié)構(gòu)(例如,下文中所描述的猜測(cè)寄存器映射),可用以連接猜測(cè)結(jié)果至寄存器的值。舉例而言,分派單元104可產(chǎn)生用于操作的猜測(cè)標(biāo)記,而對(duì)識(shí)別連接的內(nèi)存文件132做出響應(yīng)。在某些實(shí)施例中,不需使用這種猜測(cè)映射,即可產(chǎn)生猜測(cè)標(biāo)記。舉例而言,一連串的指令可包含ADD EBX,EBX (相加1)MOV[尋址模式A],EBX(儲(chǔ)存1)ADD[尋址模式A],ECX(相加2)這些指令可以是連續(xù)指令(例如,可直接以程序順序,一個(gè)接一個(gè)執(zhí)行)。這些指令可分離成下列片段指令操作(以邏輯地址轉(zhuǎn)譯為實(shí)體地址的方式顯示),用于在執(zhí)行核心124內(nèi)部執(zhí)行ADD PR2,PR2,PR1 (相加1)MOV[尋址模式A],PR2(儲(chǔ)存1)MOV PR3,[尋址模式A] (裝載就ADD2所用)ADD PR4,PR3,PR5 (相加就ADD2所用)MOV[尋址模式A],PR4(儲(chǔ)存就ADD2所用)在相加2(ADD2)的裝載操作、相加操作及儲(chǔ)存操作等片段指令被分派之前,分派單元104可偵測(cè)在序列中任何片段指令操作之間是否存在任何相關(guān)性,使得操作允許連接至猜測(cè)結(jié)果。此外,正被儲(chǔ)存1(STORE1)儲(chǔ)存的數(shù)據(jù)可連接至裝載的猜測(cè)結(jié)果(例如,通過內(nèi)存文件)。因?yàn)闆]有干擾操作,因此分派單元可具有偵測(cè)在同一分派周期中的裝載操作和相加操作(兩操作都由同一指令所導(dǎo)出)之間的相關(guān)性所需的所有信息。根據(jù)這兩種相關(guān)性,分派單元104可將被STORE1、PR2儲(chǔ)存的數(shù)據(jù)標(biāo)記連接到作為ADD2一部分執(zhí)行的裝載操作的猜測(cè)結(jié)果。這種猜測(cè)連接可依次允許分派單元將加法操作的來源連接到儲(chǔ)存在PR2中的值,其中該加法操作作為ADD2一部分執(zhí)行。于是分派單元可輸出指示,該指示表示可猜測(cè)性地使用PR作為用于加法的一個(gè)操作數(shù)的來源,而PR3為該操作數(shù)的非猜測(cè)來源。因此,在一個(gè)實(shí)施例中,通過分派單元所輸出的操作及操作數(shù)標(biāo)識(shí)符,可具體指定如下ADD PR2,PR2,PR1(相加1)MOV[尋址模式A],PR2 (儲(chǔ)存1)MOV PR3,[尋址模式A] (儲(chǔ)存就相加2所用)ADD PR4,PR2*,PR3,PR5 (用于相加2的相加,其中PR2*為用于ECX的猜測(cè)來源,PR3為用于ECX的非猜測(cè)來源)MOV[尋址模式A],PR4 (用于相加2的儲(chǔ)存)在其它實(shí)施例中,分派單元104不可用來識(shí)別供操作所用的猜測(cè)來源操作數(shù),該操作基于裝載操作。取而代之,為了提供猜測(cè)裝載結(jié)果給依賴的操作,分派單元104可包含操作轉(zhuǎn)換器180,用以將裝載操作轉(zhuǎn)換成一個(gè)或多個(gè)操作,該操作包含寄存器間的移動(dòng)操作。為了響應(yīng)在裝載操作的猜測(cè)結(jié)果和由特定物理寄存器名稱所識(shí)別的數(shù)據(jù)值之間存在連接的指示,裝載操作的轉(zhuǎn)換可被執(zhí)行。該指示由連接檢測(cè)器182所提供,在某些實(shí)施例中,該連接檢測(cè)器可包含內(nèi)存文件132。如上所述,在其它實(shí)施例中,連接檢測(cè)器182可包含配置用以連接數(shù)據(jù)值的邏輯,以對(duì)例如條件移動(dòng)操作等操作做出響應(yīng)。
在一個(gè)實(shí)施例中,操作轉(zhuǎn)換器可接收用于操作的輸入操作碼及一指示,而該指示關(guān)于寄存器的值和操作的猜測(cè)結(jié)果之間是否偵測(cè)出存在用于操作的連接。若操作為裝載并且已偵測(cè)到猜測(cè)連接,則操作轉(zhuǎn)換器可輸出操作碼以用于寄存器間的移動(dòng)操作。分派單元104,可使用由連接偵測(cè)單元所輸出的標(biāo)記作為用于寄存器間移動(dòng)的來源操作數(shù)標(biāo)記,而分派寄存器間的移動(dòng)操作。
在某些實(shí)施例中,操作轉(zhuǎn)換器可配置用以分派產(chǎn)生的寄存器間的移動(dòng),而使得調(diào)度裝置儲(chǔ)存操作數(shù)標(biāo)記,該操作數(shù)標(biāo)記是在分配給寄存器間的移動(dòng)操作的記錄中的寄存器間的移動(dòng)和記錄中的原始裝載操作二者所需的。如果寄存器間的移動(dòng)操作的猜測(cè)結(jié)果偵測(cè)為不正確,則會(huì)允許操作作為原始裝載操作被再發(fā)布。為了實(shí)現(xiàn)此方法,可將額外的來源操作數(shù)加至各寄存器間的移動(dòng)操作,該寄存器間的移動(dòng)操作由修改裝載操作而產(chǎn)生(或在另一個(gè)具體實(shí)施例中,可修改一個(gè)已存在的來源操作數(shù)而實(shí)行此方法)。在某些實(shí)施例中,通過執(zhí)行用于原始裝載的地址計(jì)算和/或?qū)⒁堰B接的數(shù)據(jù)值和實(shí)際的裝載結(jié)果數(shù)據(jù)值做比較,寄存器間的移動(dòng)操作的猜測(cè)結(jié)果可被驗(yàn)證。如果猜測(cè)結(jié)果不正確,則為了獲得正確的裝載結(jié)果,可存取數(shù)據(jù)高速緩存。再次廣播傳遞正確的裝載結(jié)果,可使調(diào)度裝置再發(fā)布任何之前使用不正確的值而執(zhí)行的依賴的操作。
在某些實(shí)施例中,操作轉(zhuǎn)換器180可配置用以將裝載操作轉(zhuǎn)換成為雙重性操作。類似于裝載操作,此雙重性操作可包括地址計(jì)算以及數(shù)據(jù)移動(dòng)。不同于裝載之處在于,由雙重性操作所啟動(dòng)的數(shù)據(jù)移動(dòng)是寄存器間的移動(dòng)。再者,由雙重性操作所啟動(dòng)的數(shù)據(jù)移動(dòng)可在地址計(jì)算完成之前發(fā)生。地址計(jì)算可用以驗(yàn)證猜測(cè)連接是否正確。若猜測(cè)連接不正確,則可將雙用途操作作為正常裝載操作再發(fā)布,且其結(jié)果可基于數(shù)據(jù)高速緩存的存取完成,再次廣播傳遞至依賴的操作。
下列范例顯示不同實(shí)施例如何轉(zhuǎn)換此示范的操作序列ADD PR2,PR1,PR1(相加1)STORE[尋址模式A],PR2(儲(chǔ)存1)LOAD PR3,[尋址模式A](裝載1)ADD PR4,PR3,PR3(相加2)在此序列中,通過一個(gè)或多個(gè)干擾操作,可以將具體指定的操作分離。然而,假設(shè)沒有干擾操作出現(xiàn)來修改尋址模式A中所用的值,或修改儲(chǔ)存在從尋址模式A以及PR2中計(jì)算而得的地址中的數(shù)據(jù)值,則可在儲(chǔ)存在PR之中的數(shù)據(jù)值和從尋址模式A計(jì)算而得的地址之間偵測(cè)出猜測(cè)連接。
在一個(gè)具體實(shí)施例中,為對(duì)由猜測(cè)連接檢測(cè)器182所做的猜測(cè)連接的偵測(cè)做出響應(yīng),操作轉(zhuǎn)換器180可將裝載1(LOAD1)轉(zhuǎn)換成為雙用途移動(dòng)操作MOV PR3,PR2。除具體指定寄存器來源及目的之外,此雙用途移動(dòng)操作也可具體指定尋址模式A,以使LOAD1的地址計(jì)算可被執(zhí)行。然而,雙用途移動(dòng)操作的移動(dòng)部分,可在ECX為可用之后立即發(fā)布。在兩部分操作的移動(dòng)部分的結(jié)果廣播傳遞之后,相加2(ADD2)可使用移動(dòng)操作的猜測(cè)結(jié)果作為操作數(shù)而立即發(fā)布。當(dāng)執(zhí)行地址計(jì)算時(shí)可驗(yàn)證猜測(cè)連接。若猜測(cè)連接不正確,則裝載/儲(chǔ)存單元可提供一指示給調(diào)度裝置,使調(diào)度裝置再發(fā)布雙用途移動(dòng)操作以作為裝載操作??蓮V播傳遞裝載操作的結(jié)果,而造成例如ADD2的任何依賴的操作,該依賴的操作可能已使用移動(dòng)的猜測(cè)結(jié)果再發(fā)布而完成執(zhí)行。必須注意此雙用途操作可使用單一調(diào)度裝置記錄而調(diào)度,以及調(diào)度裝置118可選擇雙用途操作以用于發(fā)布兩次一次用于裝載的地址計(jì)算,而另一次用于寄存器間的移動(dòng)。
在另一個(gè)實(shí)施例中,操作轉(zhuǎn)換器180可將LOAD1轉(zhuǎn)換成為二連接操作,分別是LOAD PR3,[尋址模式A],以及MOV PR3,PR2,以對(duì)猜測(cè)連接的偵測(cè)做出響應(yīng)。與之前包含雙用途操作的范例不同處在于,這些已連接的操作可各自在調(diào)度裝置118中占用一個(gè)記錄,而不必共享單一調(diào)度裝置記錄。當(dāng)發(fā)布寄存器間的移動(dòng)操作時(shí),例如ADD2的依賴的操作可使用PR3的猜測(cè)值而發(fā)布,該P(yáng)R3的猜測(cè)值作為操作數(shù)的值。LOAD操作可標(biāo)記為裝載操作的特別類型,因此若猜測(cè)連接被確定為正確,則裝載的結(jié)果標(biāo)記不必廣播傳遞(或和表示移動(dòng)的結(jié)果正確的指示一起廣播傳遞,并表示不應(yīng)再發(fā)布依賴的操作)。此外,若裝載及移動(dòng)操作二者皆在同一周期廣播傳遞其結(jié)果,則可提供一指示,以使裝載結(jié)果而不是移動(dòng)結(jié)果被依賴的操作所用。此情形可能發(fā)生在某些實(shí)施例中,增加額外的位給微處理器100之中的各標(biāo)記總線,以指出調(diào)度裝置應(yīng)響應(yīng)哪個(gè)標(biāo)記。如猜測(cè)連接不正確(例如,如同由裝載結(jié)果標(biāo)記的廣播傳遞所指出),則可取消移動(dòng)操作(例如,對(duì)移動(dòng)操作進(jìn)行調(diào)度的調(diào)度裝置118可解除目前正分配給寄存器間的移動(dòng)的調(diào)度裝置記錄的分配,以使操作不會(huì)再發(fā)布)。在許多實(shí)施例中,調(diào)度裝置可配置用以再發(fā)布任何依賴的操作,該依賴的操作使用猜測(cè)裝載結(jié)果而執(zhí)行,以對(duì)再次出現(xiàn)在結(jié)果總線的裝載結(jié)果標(biāo)記做出響應(yīng)。
圖8顯示一將裝載操作轉(zhuǎn)換成包含猜測(cè)寄存器間的移動(dòng)操作的操作的方法的具體實(shí)施例。如圖中所示,如果在步驟1401偵測(cè)出處于由特定標(biāo)記所識(shí)別的寄存器數(shù)據(jù)值和裝載操作的猜測(cè)結(jié)果之間的連接(例如,通過內(nèi)存文件),則可將裝載操作修改成包含寄存器間的移動(dòng)操作的操作,該寄存器間的移動(dòng)操作具有與連接至猜測(cè)裝載結(jié)果的數(shù)據(jù)值的標(biāo)記相同的來源操作數(shù)標(biāo)記,如步驟1403所示。在步驟1405,寄存器間的移動(dòng)操作的執(zhí)行,可包括將由標(biāo)記所識(shí)別的數(shù)據(jù)值連同裝載結(jié)果的標(biāo)記,輸出至結(jié)果總線。
在步驟1409。猜測(cè)結(jié)果可被驗(yàn)證(例如,通過執(zhí)行用于原始裝載的地址計(jì)算)。若猜測(cè)結(jié)果為正確,則裝載的結(jié)果不用在結(jié)果總線上再次廣播傳遞(或換種方式,裝載的結(jié)果可和指示一并廣播傳遞,該指示為響應(yīng)再次廣播傳遞的結(jié)果而不再發(fā)布依賴的操作)。若猜測(cè)結(jié)果為不正確,則可存取數(shù)據(jù)高速緩存以接收正確的裝載結(jié)果,并可在結(jié)果總線上廣播傳遞正確的裝載結(jié)果。這會(huì)依次造成任何已發(fā)布的依賴的操作使用將再發(fā)布的猜測(cè)結(jié)果的值。必須注意在某些情況中,可在寄存器間的移動(dòng)操作執(zhí)行之前驗(yàn)證猜測(cè)結(jié)果。若猜測(cè)結(jié)果為不正確,則不可執(zhí)行寄存器間的移動(dòng)操作。
若在裝載操作的猜測(cè)結(jié)果和寄存器數(shù)據(jù)值之間沒有偵測(cè)出連接(例如,裝載的尋址模式在內(nèi)存文件中丟失),則不可修改裝載。一般而言,裝載可執(zhí)行存取數(shù)據(jù)高速緩存,以及在結(jié)果總線上廣播傳遞其結(jié)果,如步驟1417及1419所示。
圖9顯示計(jì)算機(jī)系統(tǒng)400的一個(gè)實(shí)施例的方框圖,該計(jì)算機(jī)系統(tǒng)400包含通過總線橋接器402耦合至各種系統(tǒng)組件的處理器100。如上所述,處理器100的實(shí)施例可包含分派單元104、內(nèi)存文件132、調(diào)度裝置118及/或猜測(cè)寄存器映射800。計(jì)算機(jī)系統(tǒng)的其它實(shí)施例是可行的及可以預(yù)期的。在所描述的系統(tǒng)中,主存儲(chǔ)器200通過內(nèi)存總線406與總線橋接器402耦合,以及圖形控制器408通過圖形加速端口(AGP)總線410與總線橋接器402耦合。數(shù)個(gè)外圍設(shè)備互連(PCI)裝置412A至412B通過外圍設(shè)備互連總線414耦合至總線橋接器402。也可使用第二總線橋接器416通過擴(kuò)充的工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)/工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(EISA/ISA),提供適當(dāng)?shù)碾娮咏涌诮o一或多個(gè)擴(kuò)充的工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)/工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)裝置418。在此范例中,處理器100通過中央處理單元(CPU)總線424耦合至總線橋接器402,以及可供選擇的第二級(jí)(L2)高速緩存428。在某些實(shí)施例中,處理器100可包含集成的第一級(jí)(L1)高速緩存(未示出)。
總線橋接器402提供介于處理器100,主存儲(chǔ)器404、圖形控制器408、以及附加在外圍設(shè)備互連總線414之上的裝置之間的一接口。當(dāng)從連接至總線橋接器402的其中一個(gè)裝置接收操作時(shí),總線橋接器402識(shí)別該操作的目標(biāo)(例如,特定裝置,或就外圍設(shè)備互連總線414而言,該目標(biāo)在外圍設(shè)備互連總線414上)??偩€橋接器402系按規(guī)定路徑將操作發(fā)送至目標(biāo)裝置。一般而言,總線橋接器402將操作從來源裝置或總線所使用的協(xié)議,轉(zhuǎn)譯成為由目標(biāo)裝置或總線所使用的協(xié)議。
除了提供接口給擴(kuò)充的工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)/工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)總線用于外圍設(shè)備互連總線414之外,第二總線橋接器416還可包括其它功能。從第二總線橋接器416外接或內(nèi)建的輸出/輸入控制器(未示出),也可包含在計(jì)算機(jī)系統(tǒng)400之中,以提供用于鍵盤及鼠標(biāo)422的操作上的支持,并用于數(shù)種串行端口及并列端口。在其它實(shí)施例中,外接的高速緩存單元(未示出),也可耦合到處于處理器100和總線橋接器402之間的中央處理單元總線424。在另一些實(shí)施例中,外接的高速緩存可耦合至總線橋接器402和高速緩存控制邏輯,因?yàn)樵撏饨拥母咚倬彺婵杉傻娇偩€橋接器402之中。第二級(jí)高速緩存428相對(duì)于處理器100以后部配置(backside configuration)的方式顯示。必須注意,第二級(jí)高速緩存428可從處理器100中分離,而和處理器100一起集成到卡匣(cartridge)中(例如,插槽1或插槽A),或甚至和處理器100一并集成到半導(dǎo)體基板上。
主存儲(chǔ)器200是一內(nèi)存,該內(nèi)存中儲(chǔ)存應(yīng)用程序,并且處理器100主要從該處執(zhí)行。適合的主存儲(chǔ)器200包括動(dòng)態(tài)隨機(jī)存取內(nèi)存(DRAM)。舉例而言,多組同步動(dòng)態(tài)隨機(jī)存取內(nèi)存(SDRAM)或Rambus動(dòng)態(tài)隨機(jī)存取內(nèi)存(RDRAM)都是合適的。
外圍設(shè)備互連裝置412A至412B顯示許多外圍裝置,例如網(wǎng)絡(luò)適配卡、視頻加速卡、音效卡、硬盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、或驅(qū)動(dòng)控制器、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)適配器、以及電話卡。同理,工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)裝置418顯示許多類型的外圍設(shè)備,例如調(diào)制解調(diào)器、聲卡、以及許多數(shù)據(jù)采集卡,例如一般用途接口總線(GPIB)或現(xiàn)場(chǎng)總線接口卡。
圖形控制器408用以控制顯示器426上文字及圖形的著色。圖形控制器408可使本領(lǐng)域技術(shù)人員所公知的傳統(tǒng)的圖形加速器具體化,以提供能有效存入主存儲(chǔ)器200中以及從主存儲(chǔ)器200中取出的三維空間的數(shù)據(jù)結(jié)構(gòu)。因此,因?yàn)閳D形控制器408可請(qǐng)求及接收在總線橋接器402之中的目標(biāo)接口的存取,從而獲得對(duì)主存儲(chǔ)器200的存取,故可作為圖形加速端口總線410的主控制器。專用的圖形總線,可提供從主存儲(chǔ)器404的快速數(shù)據(jù)獲取。就某些操作而言,圖形控制器408可進(jìn)一步配置用來在圖形加速端口總線410上產(chǎn)生外圍設(shè)備互連協(xié)議處理。總線橋接器402的AGP接口因此可包括支持AGP協(xié)議事務(wù)及PCI協(xié)議目標(biāo)和啟動(dòng)程序事務(wù)二者的功能性。在圖形或文字可顯示的前提下,顯示器426可以是任何電子顯示器。合適的顯示器426包含陰極射線管(CRT)、液晶顯示器(LCD)等。
必須注意,雖然圖形加速端口、外圍設(shè)備互連、以及工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)或擴(kuò)充的工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)等總線,已在上述說明中使用作為范例,但是實(shí)際上任何總線結(jié)構(gòu)可根據(jù)需要進(jìn)行代替。必須進(jìn)一步注意,計(jì)算機(jī)系統(tǒng)400可以是包含額外處理器(例如,顯示作為可供選擇的計(jì)算機(jī)系統(tǒng)400的組件的處理器100a)的多處理計(jì)算機(jī)系統(tǒng)。處理器100a可相似于處理器100。更確切地說,處理器100a可以完全相同于處理器100。處理器100a可通過獨(dú)立總線(如圖9所示)連接至總線橋接器402,或可和處理器100共享中央處理單元總線224。再者,處理器100a可用類似于第二級(jí)高速緩存428的方式耦合至可供選擇的第二級(jí)高速緩存428a。
現(xiàn)在參考圖10,顯示計(jì)算機(jī)系統(tǒng)400的另一具體實(shí)施例,該計(jì)算機(jī)系統(tǒng)可包含如上所述的分派單元104、內(nèi)存文件132、調(diào)度裝置118及/或猜測(cè)寄存器映射800。計(jì)算機(jī)系統(tǒng)的其它實(shí)施例也是可行的和可考慮的。在圖10的實(shí)施例中,計(jì)算機(jī)系統(tǒng)400包含數(shù)個(gè)處理節(jié)點(diǎn)612A、612B、612C以及612D。各處理節(jié)點(diǎn)皆通過內(nèi)存控制器616A至616D而耦合至各自的內(nèi)存614A至614D,其中該內(nèi)存控制器616A至616D包含在其各自的處理節(jié)點(diǎn)612A至612D之中。此外,處理節(jié)點(diǎn)612A至612D包含用于在處理節(jié)點(diǎn)612A至612D之間通訊的接口邏輯。舉例而言,處理節(jié)點(diǎn)612A包含用以與處理節(jié)點(diǎn)612B通訊的接口邏輯618A、用以與處理節(jié)點(diǎn)612C通訊的接口邏輯618B、和用以與另一處理節(jié)點(diǎn)(未示出)通訊的第三接口邏輯618C。同理,處理節(jié)點(diǎn)612B包含接口邏輯618D、618E以及618F;處理節(jié)點(diǎn)612C包含接口邏輯618G、618H以及618I;而處理節(jié)點(diǎn)612D包含接口邏輯618J、618K以及618L。處理節(jié)點(diǎn)612D被耦合以通過接口邏輯618L與多個(gè)輸入/輸出裝置(例如,菊鏈配置中的裝置620A至620B)通訊。其它處理節(jié)點(diǎn)可用類似方式而與其它輸出入裝置通訊。
處理節(jié)點(diǎn)612A至612D實(shí)行基于數(shù)據(jù)包的連接,用于處理節(jié)點(diǎn)間的通訊。在本實(shí)施例中,連接被實(shí)現(xiàn)為數(shù)組單向線路(例如,線路624A被用于將數(shù)據(jù)包從處理節(jié)點(diǎn)612A傳送至處理節(jié)點(diǎn)612B,而線路624B被用于將數(shù)據(jù)包從處理節(jié)點(diǎn)612B傳送至處理節(jié)點(diǎn)612A)。其它組的線路624C至624H被用于傳送其它處理節(jié)點(diǎn)之間的數(shù)據(jù)包,如圖10中所示。一般而言,每組線路624可包含一條或多條數(shù)據(jù)線路,一條或多條對(duì)應(yīng)至數(shù)據(jù)線路的時(shí)鐘線路,以及一條或多條指示傳送的數(shù)據(jù)包類型的控制線路。對(duì)于處理節(jié)點(diǎn)間的通訊,可以采用高速緩存連貫的方式來操作連接,對(duì)于處理節(jié)點(diǎn)和輸出/輸入裝置(或總線橋接器至公知結(jié)構(gòu)的輸出/輸入總線,例如外圍設(shè)備互連總線,或工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)總線)之間的通訊,可以采用高速緩存不連貫的方式來操作連接。再者,可如所示的在輸出/輸入裝置之間使用菊鏈?zhǔn)浇Y(jié)構(gòu),而以不連貫的方式操作連接。應(yīng)該注意的是,從一個(gè)處理節(jié)點(diǎn)傳送至另一處理節(jié)點(diǎn)的數(shù)據(jù)包可通過一個(gè)或多個(gè)中間節(jié)點(diǎn)。舉例而言,由處理節(jié)點(diǎn)612A傳送至處理節(jié)點(diǎn)612D的數(shù)據(jù)包可通過處理節(jié)點(diǎn)612B或處理節(jié)點(diǎn)612C,如圖10所示。任何適合的路由算法都可使用。計(jì)算機(jī)系統(tǒng)400的其它實(shí)施例可包含較圖10所顯示的實(shí)施例更多或更少的處理節(jié)點(diǎn)。
一般而言,數(shù)據(jù)包可作為在節(jié)點(diǎn)間的線路624上的一個(gè)或多個(gè)位時(shí)間(bit time)被傳送。一個(gè)位時(shí)間可以是在相對(duì)應(yīng)的時(shí)鐘線路上的時(shí)鐘信號(hào)的上升沿或下降沿。數(shù)據(jù)包可包含用于初始化事務(wù)的命令數(shù)據(jù)包,用于保持高速緩存連貫性的探測(cè)數(shù)據(jù)包,以及從響應(yīng)探測(cè)及命令而來的響應(yīng)數(shù)據(jù)包。
處理節(jié)點(diǎn)612A至612D除了包含內(nèi)存控制器及接口邏輯之外,還可包含一個(gè)或多個(gè)處理器。具體而言,處理節(jié)點(diǎn)包括至少一個(gè)處理器,并可選擇性地包含內(nèi)存控制器,用于和內(nèi)存及其它所需的邏輯通訊。更確切地說,各處理節(jié)點(diǎn)612A至612D可包括一個(gè)或多個(gè)完全相同的處理器100。外接接口單元18可包含在節(jié)點(diǎn)中的接口邏輯618,以及內(nèi)存控制器616。
內(nèi)存614A至614D可包括任何合適的內(nèi)存裝置。舉例而言,內(nèi)存614A至614D可包括一個(gè)或多個(gè)RAMBUS動(dòng)態(tài)隨機(jī)存取內(nèi)存、同步動(dòng)態(tài)隨機(jī)存取內(nèi)存、靜態(tài)隨機(jī)存取內(nèi)存等。計(jì)算機(jī)系統(tǒng)400的地址空間在內(nèi)存614A至614D之中分割。各處理節(jié)點(diǎn)612A至612D可包含內(nèi)存映射,用以決定哪個(gè)地址對(duì)應(yīng)至哪個(gè)內(nèi)存614A至614D,以及因此對(duì)于特定地址的內(nèi)存請(qǐng)求哪個(gè)處理節(jié)點(diǎn)612A至612D應(yīng)該被路由。在一個(gè)實(shí)施例中,用于計(jì)算機(jī)系統(tǒng)400中的一個(gè)地址的連貫性點(diǎn)是耦合到對(duì)應(yīng)于地址的內(nèi)存儲(chǔ)存字節(jié)的內(nèi)存控制器616A至616D。換句話說,內(nèi)存控制器616A至616D用以確保各內(nèi)存對(duì)所對(duì)應(yīng)的內(nèi)存614A至614D的存取以高速緩存連貫的方式發(fā)生。內(nèi)存控制器616A至616D可包括用于連接內(nèi)存614A至614D的控制電路。此外,內(nèi)存控制器616A至616D可包含用于隊(duì)列內(nèi)存請(qǐng)求的請(qǐng)求隊(duì)列。
接口邏輯618A至618L可包括各種緩沖器,用于接收來自連接的數(shù)據(jù)包,并可緩沖將要由該連接所傳送的數(shù)據(jù)包。計(jì)算機(jī)系統(tǒng)400可使用任何合適的用來傳送數(shù)據(jù)包的流量控制機(jī)制。舉例而言,在一個(gè)實(shí)施例中,各接口邏輯618儲(chǔ)存許多各型緩沖器的計(jì)數(shù)值,該緩沖器位于連接的另一端的接收器之中,接口邏輯連接到該連接。除非接收接口邏輯具有可用的緩沖器用以儲(chǔ)存數(shù)據(jù)包,否則接口邏輯不會(huì)傳送數(shù)據(jù)包。通過按規(guī)定路徑向前發(fā)送數(shù)據(jù)包,接收緩沖器為可用,接收接口邏輯將信息傳送至發(fā)送接口邏輯以指示緩沖器已為可用。這種機(jī)制可稱之為″基于配給的(coupon-based)″系統(tǒng)。
輸出/輸入裝置620A至620B可為任何合適的輸出/輸入裝置。舉例而言,輸出/輸入裝置620A至620B可包含與另一計(jì)算機(jī)系統(tǒng)通訊的多個(gè)裝置,這些裝置(例如,網(wǎng)絡(luò)適配卡或調(diào)制解調(diào)器)可以耦合到該另一計(jì)算機(jī)系統(tǒng)。再者,輸出/輸入裝置620A至620B可包含視頻加速卡、音效卡、硬盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、或驅(qū)動(dòng)控制器、小型計(jì)算機(jī)系統(tǒng)接口適配器、以及電話卡、聲卡、以及許多數(shù)據(jù)采集卡,例如一般用途接口總線,或現(xiàn)場(chǎng)總線接口卡。必須注意,術(shù)語″輸出/輸入裝置″以及術(shù)語″外圍設(shè)備″在文中為同義詞。
如文中所用,術(shù)語″時(shí)鐘周期″或″周期″表示一段時(shí)間間隔,在其中指令處理流水線的各種階段完成其任務(wù)。根據(jù)時(shí)鐘信號(hào)所定義的時(shí)鐘周期,指令及計(jì)算值皆由內(nèi)存單元(例如寄存器或數(shù)組)獲得。舉例而言,內(nèi)存單元可根據(jù)時(shí)鐘信號(hào)的上升沿或下降沿而獲得值。
一旦充分了解上述揭示內(nèi)容,則本領(lǐng)域技術(shù)人員可知本發(fā)明可有多種變化及變形。下列所解釋的權(quán)利要求范圍意在包含所有這類變化及變形。
權(quán)利要求
1.一種數(shù)據(jù)猜測(cè)系統(tǒng),包含一內(nèi)存文件(132),包括配置以儲(chǔ)存第一尋址模式(206)與第一標(biāo)記(208)的一記錄(220),其中該內(nèi)存文件配置以將包括在該記錄中的第一尋址模式與一裝載操作的第二尋址模式相比較,其中假如該第二尋址模式匹配儲(chǔ)存在該記錄中的第一尋址模式的話,該內(nèi)存文件則配置以將由該第一標(biāo)記識(shí)別出的一數(shù)據(jù)值連接到該裝載操作的一猜測(cè)性結(jié)果;以及一執(zhí)行核心(124),連接到該內(nèi)存文件,其中該執(zhí)行核心配置以當(dāng)將取決于該裝載操作的第二操作執(zhí)行時(shí),存取該猜測(cè)性結(jié)果。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),進(jìn)一步包含用來發(fā)送第一標(biāo)記以作為該第二操作的猜測(cè)性操作數(shù)來源標(biāo)記的裝置。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),進(jìn)一步包含用來將該數(shù)據(jù)值發(fā)送到一結(jié)果總線以及用來指示出該數(shù)據(jù)值為該裝載操作的結(jié)果的裝置。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其中該內(nèi)存文件配置以猜測(cè)性地連接由該第一標(biāo)記所識(shí)別出的數(shù)據(jù)值,該第一標(biāo)記具有通過輸出該第一標(biāo)記以作為裝載操作的猜測(cè)性來源操作數(shù)標(biāo)記的裝載操作的結(jié)果。
5.根據(jù)權(quán)利要求1所述的系統(tǒng),其中該第一尋址模式為儲(chǔ)存操作尋址模式的一部份,其中該儲(chǔ)存操作在程序順序上比該裝載操作更早發(fā)生。
6.根據(jù)權(quán)利要求1所述的系統(tǒng),進(jìn)一步包含一裝載/儲(chǔ)存單元,該單元配置以將裝載操作的猜測(cè)性結(jié)果是否與由該第一標(biāo)記所識(shí)別出的數(shù)據(jù)值予以正確連結(jié)的指示輸出。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其中該裝載/儲(chǔ)存單元配置以通過將裝載操作的結(jié)果標(biāo)記輸出在結(jié)果總線(130)上而將該裝載操作的猜測(cè)結(jié)果不正確地連結(jié)到該數(shù)據(jù)值的指示輸出。
8.根據(jù)權(quán)利要求1所述的系統(tǒng),其中該內(nèi)存文件配置以將包括在該記錄中的該第一尋址模式與儲(chǔ)存操作的第三尋址模式相比較,其中假如該第三尋址模式匹配該第一尋址模式的話,該內(nèi)存文件則配置以將用來識(shí)別儲(chǔ)存操作的來源操作數(shù)的第二標(biāo)記代替該第一標(biāo)記。
9.一種數(shù)據(jù)猜測(cè)方法,包含將第一操作的第一尋址模式與第二操作的第二尋址模式相比較,其中該第二操作在程序順序上比該第一操作更早發(fā)生;假如該第一尋址模式匹配該第二尋址模式的話,則將由該第二操作的操作數(shù)的標(biāo)記所識(shí)別的一數(shù)據(jù)值連接到該第一操作的猜測(cè)結(jié)果;執(zhí)行第三操作,該第三操作具有取決于該第一操作的結(jié)果的一操作數(shù)來源,其中該執(zhí)行包含存取由該標(biāo)記所識(shí)別出的數(shù)據(jù)值。
10.一種計(jì)算器系統(tǒng),包含一系統(tǒng)內(nèi)存(200);以及一微處理器(100),耦合到該系統(tǒng)內(nèi)存,該微處理器包括一內(nèi)存文件(132),包括配置以儲(chǔ)存第一尋址模式(206)與第一標(biāo)記的一記錄(220),其中該內(nèi)存文件配置以將包括在該記錄中的該第一尋址(208)模式與一裝載操作的第二尋址模式相比較,其中假如該第二尋址模式匹配儲(chǔ)存在該記錄中的該第一尋址模式,則該內(nèi)存文件配置以將由該第一標(biāo)記所識(shí)別的數(shù)據(jù)值連接到該裝載操作的猜測(cè)結(jié)果;以及一執(zhí)行核心(124),耦合到該內(nèi)存文件,其中該執(zhí)行核心配置以在將取決于該裝載操作的第二操作執(zhí)行的時(shí)候存取該猜測(cè)結(jié)果。
全文摘要
本發(fā)明揭露一種系統(tǒng),該系統(tǒng)可包括一內(nèi)存文件(132),該內(nèi)存文件包括配置以將第一尋址模式與第一標(biāo)記儲(chǔ)存的一記錄,以及耦合該內(nèi)存文件的一執(zhí)行核心。該內(nèi)存文件可能配置以將包括在記錄中的第一尋址模式與裝載操作的第二尋址模式相比較。假如第二尋址模式匹配儲(chǔ)存在該記錄中的第一尋址模式的話,那么該內(nèi)存文件則配置以將第一標(biāo)記所識(shí)別出的數(shù)據(jù)值連接到該裝載操作的猜測(cè)結(jié)果。該執(zhí)行核心配置以在執(zhí)行取決于裝載操作的第二操作時(shí),存取該猜測(cè)結(jié)果。
文檔編號(hào)G06F9/38GK1625733SQ02828873
公開日2005年6月8日 申請(qǐng)日期2002年12月20日 優(yōu)先權(quán)日2002年4月30日
發(fā)明者J·K·皮克特 申請(qǐng)人:先進(jìn)微裝置公司