国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      多處理器/多內(nèi)核消息傳遞機(jī)中的推測(cè)預(yù)取方法和裝置的制作方法

      文檔序號(hào):6465430閱讀:197來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):多處理器/多內(nèi)核消息傳遞機(jī)中的推測(cè)預(yù)取方法和裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明的實(shí)施例通常涉及多處理器/多內(nèi)核平臺(tái)上的消息傳遞,更具體 地,涉及內(nèi)核之間的數(shù)據(jù)預(yù)取技術(shù)和消息傳遞技術(shù)的新穎組合。
      背景技術(shù)
      多處理器和/或多內(nèi)核系統(tǒng)中存在多種使各單獨(dú)內(nèi)核能夠在單獨(dú)內(nèi)核之間發(fā)送消息的硬件機(jī)制。例如,英特爾IXP2xxx系列的網(wǎng)絡(luò)處理器具有 多種用來(lái)將32位消息從一個(gè)內(nèi)核發(fā)送到另一個(gè)內(nèi)核的硬件機(jī)制。許多微處 理器內(nèi)核也具有推測(cè)預(yù)取硬件,其將數(shù)據(jù)從存儲(chǔ)器層次結(jié)構(gòu)的一個(gè)級(jí)取至 一個(gè)或多個(gè)更高級(jí)。例如,如果處理器檢測(cè)到運(yùn)行于其上的軟件以固定間 隔(stride)重復(fù)地訪問(wèn)數(shù)據(jù),該處理器可以推測(cè)地取得處理器期望軟件下次 將請(qǐng)求的數(shù)據(jù)。在內(nèi)核之間傳遞的消息常包含地址引用(reference)或指針。在現(xiàn)有系統(tǒng) 中,接收方內(nèi)核的執(zhí)行流水線(xiàn)隨需要解引用(dereference)所述指針并從存儲(chǔ) 單元取得數(shù)據(jù)。在所述執(zhí)行流水線(xiàn)中的指令能夠被執(zhí)行之前等待將要獲得 的數(shù)據(jù)可能產(chǎn)生較大的延遲。在由Erik J. Johnson和Aaron R. Kunze合著 的"IXP 2400/2800 Programming: The Complete Microengine Coding Guide" (英特爾出版社,2003沖記載了消息傳遞的一種實(shí)現(xiàn)。第10章記載了消息 傳遞。


      通過(guò)下述關(guān)于本發(fā)明的詳細(xì)說(shuō)明,其特征和優(yōu)點(diǎn)將顯而易見(jiàn),其中 圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例、使用消息傳遞預(yù)取的多內(nèi)核處理器 的框圖;圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例、用于預(yù)取在被傳遞的消息中引用的 數(shù)據(jù)的示例性方法的流程圖;圖3是可在其上實(shí)施本發(fā)明實(shí)施例的多內(nèi)核處理器的框圖; 圖4是由一個(gè)實(shí)施例使用的協(xié)議架構(gòu)的框圖; 圖5是根據(jù)請(qǐng)求保護(hù)的主題使用的用于物理互連的裝置的框圖; 圖6A-C是由多個(gè)實(shí)施例使用的系統(tǒng)的多個(gè)實(shí)施例;以及 圖7示出了根據(jù)本發(fā)明實(shí)施例的四插槽多內(nèi)核系統(tǒng)。
      具體實(shí)施例方式
      本發(fā)明的一個(gè)實(shí)施例是涉及在多個(gè)內(nèi)核之間集成預(yù)取和消息傳遞的系 統(tǒng)和方法。與現(xiàn)有系統(tǒng)的情況不同,本發(fā)明的實(shí)施例避免不適時(shí)地從遠(yuǎn)程 物理存儲(chǔ)器或另 一個(gè)處理器的高速緩存獲取信息。在本發(fā)明的實(shí)施例中, 當(dāng)指針被解引用時(shí),數(shù)據(jù)很可能已經(jīng)在本地高速緩存中或在前往本地高速 緩存的途中。
      說(shuō)明書(shū)中對(duì)本發(fā)明的"一個(gè)實(shí)施例"或"實(shí)施例"的引用是指結(jié)合該 實(shí)施例而描述的特定的特征、結(jié)構(gòu)或特點(diǎn)包含在本發(fā)明的至少一個(gè)實(shí)施例 中。因此,在說(shuō)明書(shū)中多處出現(xiàn)的短語(yǔ)"在一個(gè)實(shí)施例中"并不必然都指 同一個(gè)實(shí)施例。
      為了便于說(shuō)明,闡述了許多具體的配置和細(xì)節(jié),以提供對(duì)本發(fā)明的透 徹理解。然而,對(duì)于本領(lǐng)域技術(shù)人員而言顯而易見(jiàn)的是,本發(fā)明的實(shí)施例 無(wú)需在此給出的具體細(xì)節(jié)也可以被實(shí)現(xiàn)。此外,為了避免使本發(fā)明難以理 解,公知的特征被省略或簡(jiǎn)化。在該說(shuō)明書(shū)中可以給出各種示例。這些僅 僅是對(duì)本發(fā)明的具體實(shí)施例的描述。本發(fā)明的范圍并不限于所給出的示例。
      本發(fā)明的實(shí)施例允許軟件將一個(gè)或多個(gè)內(nèi)核間消息所指定的物理地址 指定到處理器內(nèi)核。當(dāng)接收到包含物理地址的消息時(shí),將該消息置于硬件 隊(duì)列中,等待接收方內(nèi)核上的軟件對(duì)其使用。當(dāng)所述消息在隊(duì)列中時(shí),基 于運(yùn)行在接收方處理器上的代碼將很快訪問(wèn)數(shù)據(jù)的假設(shè),該消息中的地址 被發(fā)送至硬件預(yù)取器以推測(cè)地預(yù)取該數(shù)據(jù)??蛇x擇地,所述消息也可以指 定將預(yù)取的字節(jié)數(shù)。在取得所述消息后,所述應(yīng)用通常能夠立即訪問(wèn)與所 述消息相關(guān)聯(lián)的數(shù)據(jù)。
      在現(xiàn)有系統(tǒng)中,硬件預(yù)取器可以連同執(zhí)行流水線(xiàn)一起使用。流水線(xiàn)中 的指令可以令數(shù)據(jù)被預(yù)取,以便在所述指令準(zhǔn)備執(zhí)行時(shí),可以馬上獲得所述數(shù)據(jù)。但是,這些預(yù)取器需要在試圖進(jìn)行預(yù)取之前將指令放入執(zhí)行流水 線(xiàn)中。與之相反,本發(fā)明的實(shí)施例將預(yù)取器集成有內(nèi)核到內(nèi)核(內(nèi)核-內(nèi)銜 消息傳遞機(jī)制,使得來(lái)自存儲(chǔ)器或其它內(nèi)核的高速緩存的所需數(shù)據(jù)比僅使 用執(zhí)行流水線(xiàn)預(yù)取器時(shí)更快地可用。當(dāng)前存在兩種類(lèi)型的消息傳遞硬件架構(gòu)。第一種消息傳遞硬件架構(gòu)中,消息通過(guò)互連(如下文所述的點(diǎn)對(duì)點(diǎn)(pTp)互連)被發(fā)送到接收方內(nèi)核,且被 入隊(duì)到接收方內(nèi)核上的一個(gè)或多個(gè)硬件隊(duì)列中。第二種中,消息被發(fā)送到 單獨(dú)的硬件單元,在這里它們被排到多個(gè)內(nèi)核之間共享的硬件隊(duì)列中。例 如,IXP2xxx處理器包含可被所有內(nèi)核訪問(wèn)并能用來(lái)在任意組內(nèi)核之間發(fā) 送消息的硬件隊(duì)列單元。本發(fā)明在第一種架構(gòu)中最為有用,這是因?yàn)楫?dāng)硬 件隊(duì)列和預(yù)取器物理上接近時(shí),它們的耦合更容易實(shí)現(xiàn),然而,這兩種架 構(gòu)都可以使用所公開(kāi)的發(fā)明的實(shí)施例。對(duì)于第一種架構(gòu),在圖l中示出了 示例實(shí)施例。圖中圈定的數(shù)字代表了用于從一個(gè)內(nèi)核向另一個(gè)內(nèi)核發(fā)送指 針消息的方法的可能的序列。出于說(shuō)明的目的,可將消息傳遞機(jī)制稱(chēng)為用于消息傳遞的"互連"。所 述的互連可以是硬件、固件或軟件結(jié)構(gòu),或者可以是三者的任意組合???以理解平臺(tái)架構(gòu)常常規(guī)定了互連的配置。圖2是示出圖1所示的示例性方法的流程圖。下面將依次敘述圖1和 2。在實(shí)現(xiàn)在具有如點(diǎn)對(duì)點(diǎn)(pTp)互連架構(gòu)這樣的處理器/內(nèi)核互連101的平 臺(tái)上的實(shí)施例中,(1)在方框201中,發(fā)送方內(nèi)核103利用硬件消息傳遞 機(jī)制向接收方內(nèi)核105發(fā)送消息。能夠理解,可以利用內(nèi)核消息傳遞的各 種機(jī)制和布局。(2)在方框203中,當(dāng)接收方內(nèi)核105接收到消息時(shí),該 消息被同時(shí)入隊(duì)到107并發(fā)送到預(yù)取器109。隊(duì)列107可以是內(nèi)核中靠近 預(yù)取器的一組寄存器或存儲(chǔ)器。(3)在方框205中,預(yù)取器109發(fā)出對(duì)共 享高速緩存或共享存儲(chǔ)器111 (取決于所述架構(gòu))的存儲(chǔ)器引用。高速緩存 是分層的,所以必要時(shí)可從較低級(jí)的高速緩存或共享存儲(chǔ)器獲得數(shù)據(jù)???選地,該消息可以包含應(yīng)被預(yù)取的數(shù)據(jù)量。(4)在方框207中,由指針引 用的數(shù)據(jù)被置于接收方內(nèi)核105的本地高速緩存113中。(5)在方框209 中,接收方內(nèi)核105將所述消息從隊(duì)列107中出隊(duì)。(6)在方框211中, 該指針被解引用,且在高速緩存113中找到該數(shù)據(jù)以便在執(zhí)行流水線(xiàn)115中使用。在實(shí)施例中,可以使用軟件作為消息出隊(duì)和指針解引用的機(jī)制。在現(xiàn)有系統(tǒng)中,如Intel Core 2 Duo處理器這樣的雙核處理器,每 一內(nèi)核擁有自己的Ll高速緩存和共享的L2高速緩存。Ll高速緩存有自 己的硬件預(yù)取器。Ll預(yù)取器將數(shù)據(jù)從L2高速緩存預(yù)取到Ll高速緩存。 高速緩存預(yù)取器試圖猜測(cè)將有可能需要什么數(shù)據(jù)。如果預(yù)取未命中,艮P, 數(shù)據(jù)不在L2高速緩存中,則高速緩存預(yù)取器從存儲(chǔ)器獲得該數(shù)據(jù)。L2高 速緩存具有直接從存儲(chǔ)器獲取數(shù)據(jù)的硬件預(yù)取器。然而,在現(xiàn)有系統(tǒng)中, 這些高速緩存預(yù)取器只能與執(zhí)行流水線(xiàn)一起才能工作。隊(duì)列107可由執(zhí)行流水線(xiàn)115進(jìn)行輪詢(xún),或發(fā)起中斷處理程序(中斷服 務(wù)例程)以向流水線(xiàn)警告己經(jīng)接收到消息。在實(shí)施例中,可以使用多于一個(gè) 隊(duì)列。例如,有些消息可能包含可執(zhí)行的指令。其它消息可能包含在發(fā)送 方內(nèi)核上執(zhí)行的操作的結(jié)果數(shù)據(jù)。其它消息還可以包含請(qǐng)求接收方處理器 完成工作或指示發(fā)送方處理器的工作已完成的警告(或中斷)。消息可以包 含或可以不包含將要預(yù)取的地址弓I用。對(duì)應(yīng)各種消息類(lèi)型可以實(shí)現(xiàn)專(zhuān)門(mén)的 隊(duì)列??梢詫?shí)現(xiàn)一個(gè)單獨(dú)的隊(duì)列來(lái)保存所有消息類(lèi)型。將可以理解,對(duì)單 個(gè)隊(duì)列來(lái)說(shuō),可以使用各種方法來(lái)指示將由執(zhí)行流水線(xiàn)使用的消息的類(lèi)型。為了靈活支持存儲(chǔ)器指針和非指針消息,軟件需要一種為硬件識(shí)別該 消息是否包含指針的機(jī)制。這可以通過(guò)針對(duì)每個(gè)消息由發(fā)送方軟件在發(fā)送 消息時(shí)設(shè)置一標(biāo)志來(lái)指示該消息包含指針來(lái)完成。指針識(shí)別也可以通過(guò)隊(duì) 列自身的屬性來(lái)實(shí)現(xiàn)。例如,特定隊(duì)列可以只包含帶有指針的消息。當(dāng)消息發(fā)送者有理由相信消息發(fā)送時(shí)物理存儲(chǔ)器中的數(shù)據(jù)在消息被接 收到時(shí)仍存在于物理存儲(chǔ)器的相同位置中時(shí),本發(fā)明的實(shí)施例能更為高效 地執(zhí)行。因此,當(dāng)被在內(nèi)核之間傳遞的指針引用的數(shù)據(jù)具有到物理存儲(chǔ)器 的長(zhǎng)效映射時(shí),本發(fā)明效果最佳。同時(shí),使用該特征的軟件必須確保由指 針引用的數(shù)據(jù)在可被緩存的存儲(chǔ)器中。上述限制在包括操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu) 和網(wǎng)絡(luò)分組在內(nèi)的很多環(huán)境下都是合理的。如上所述,可以在平臺(tái)上實(shí)現(xiàn)高速緩存預(yù)取器。在一個(gè)實(shí)施例中,一 個(gè)或多個(gè)內(nèi)核-內(nèi)核消息隊(duì)列107使用附加的預(yù)取器109來(lái)與執(zhí)行流水線(xiàn)進(jìn) 行通信。在另一實(shí)施例中,可修改現(xiàn)有的硬件預(yù)取器以容許內(nèi)核-內(nèi)核消息 傳遞預(yù)取??梢詫?shí)現(xiàn)一種類(lèi)似于現(xiàn)有的直接高速緩存存取系統(tǒng)中所采取的機(jī)制。在現(xiàn)有系統(tǒng)中,預(yù)取器可以具有針對(duì)將要發(fā)送到高速緩存層次結(jié)構(gòu) 的外發(fā)預(yù)取請(qǐng)求的未決隊(duì)列。特定的實(shí)現(xiàn)隨不同平臺(tái)而不同。 一種將現(xiàn)有 的預(yù)取器和消息隊(duì)列連接起來(lái)的方法包括一個(gè)簡(jiǎn)單的多路復(fù)用器。特別地, 被寫(xiě)入消息隊(duì)列的消息物理地址將簡(jiǎn)單地繼續(xù)(通過(guò)專(zhuān)用線(xiàn))至預(yù)取器的未
      決隊(duì)列。多路復(fù)用器在正常預(yù)取器請(qǐng)求和那些來(lái)自消息隊(duì)列的"提示(hint)" 之間進(jìn)行仲裁。因?yàn)轭A(yù)取器的未決隊(duì)列包含物理地址請(qǐng)求,所述提示的物 理地址簡(jiǎn)單地變成對(duì)高速緩存層次結(jié)構(gòu)的預(yù)取請(qǐng)求。
      可以理解,有多種方式可以將接口開(kāi)放給軟件,以允許軟件配置和/ 或使用該內(nèi)核消息預(yù)取特性。如果指針消息或非指針消息的確定是所述隊(duì) 列硬件的屬性,則可使用控制寄存器或映射到內(nèi)核的存儲(chǔ)器或I/O空間上 的寄存器來(lái)操控所述接口 。如果針對(duì)每個(gè)發(fā)送的消息作出關(guān)于該消息是指 針消息還是非指針消息的判定,則對(duì)軟件的接口可以與對(duì)隊(duì)列特性自身的 接口相耦合。例如,如果通過(guò)指令集中的指令發(fā)送消息,可將一個(gè)標(biāo)志指 定為該指令的一個(gè)額外的操作數(shù)。其它的實(shí)現(xiàn)選擇包括使用發(fā)送方內(nèi)核的 本地控制寄存器。
      在現(xiàn)有的多內(nèi)核/處理器系統(tǒng)中,當(dāng)在內(nèi)核之間發(fā)送包含地址指針的消 息且接收方內(nèi)核解引用該指針時(shí),因?yàn)楸仨殢奈锢泶鎯?chǔ)器或發(fā)送方處理器 的一致性高速緩存取得數(shù)據(jù),所以經(jīng)常出現(xiàn)流水線(xiàn)停頓。因?yàn)閷㈩A(yù)取與內(nèi) 核消息傳遞集成使得當(dāng)解引用指針時(shí),數(shù)據(jù)更有可能已經(jīng)在本地高速緩存 中,或在前往本地高速緩存的途中,因此,本發(fā)明的實(shí)施例使得接收方內(nèi) 核的流水線(xiàn)執(zhí)行更快。
      應(yīng)該注意, 一般而言有很多不同的現(xiàn)有方法實(shí)現(xiàn)了消息傳遞(硬件和軟 件)和預(yù)取(常常是硬件),且本發(fā)明可以用任意種類(lèi)的消息傳遞和預(yù)取方案 來(lái)實(shí)現(xiàn)。沒(méi)有公知的技術(shù)將上述技術(shù)組合并具備上述的優(yōu)點(diǎn)。
      本發(fā)明的一個(gè)實(shí)施例可在如圖3示出的平臺(tái)上實(shí)現(xiàn)。平臺(tái)300可以包 含一個(gè)或多個(gè)處理器310。所示出的示例性平臺(tái)300具有兩個(gè)處理器 310a-b。然而,可以理解,平臺(tái)上能存在任意數(shù)目的處理器l-"。所示出的 處理器310a-b每個(gè)包含兩個(gè)內(nèi)核311a-b和311c-d,但可以理解每個(gè)處理 器可以具有多于兩個(gè)的內(nèi)核。在另一個(gè)實(shí)施例中,可以使用具有多內(nèi)核的 單個(gè)處理器。處理器310a-b可以通過(guò)前端總線(xiàn)301與也稱(chēng)作北橋的存儲(chǔ)器控制中心(MCH) 314進(jìn)行通信。MCH 314通過(guò)存儲(chǔ)器總線(xiàn)303與系統(tǒng)存儲(chǔ) 器312進(jìn)行通信。MCH 314也可通過(guò)圖形總線(xiàn)305與高級(jí)圖形端口(AGP) 316進(jìn)行通信。MCH 314可以通過(guò)直接模塊接口(DMI)總線(xiàn)307與也稱(chēng)作 南橋的I/O控制中心(ICH) 320進(jìn)行通信。 一些較舊的平臺(tái)可能使用外圍部 件互連(PCI)總線(xiàn)在MCH 314和ICH 320之間通信。ICH 320可以通過(guò)低引 腳數(shù)(LPC)總線(xiàn)356耦合到一個(gè)或多個(gè)部件,如PCI硬盤(pán)驅(qū)動(dòng)器(未示出)、 如IDE 322、 USB 324、 LAN 326和音頻328這樣的遺留部件、以及超級(jí)I/O (SIO)控制器356。處理器310可以是能執(zhí)行軟件的任意類(lèi)型的多內(nèi)核處理器,例如微處 理器、數(shù)字信號(hào)處理器、微控制器或類(lèi)似的部件。存儲(chǔ)器312可以是硬盤(pán)、軟盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器 (ROM)、閃速存儲(chǔ)器或任意其它類(lèi)型的可由處理器310讀取的介質(zhì)。存儲(chǔ) 器312可以存儲(chǔ)用于執(zhí)行本發(fā)明的方法實(shí)施例的指令。例如閃速存儲(chǔ)器352這樣的非易失性存儲(chǔ)器可以通過(guò)低引腳數(shù)(LPC) 總線(xiàn)309耦合到I/O控制器。BIOS固件354通常處于閃速存儲(chǔ)器352中, 且引導(dǎo)過(guò)程將執(zhí)行來(lái)自閃存或固件的指令。在一些實(shí)施例中,平臺(tái)300是能夠進(jìn)行服務(wù)器管理任務(wù)的服務(wù)器。該 平臺(tái)實(shí)施例可以具有通過(guò)LPC 309耦合到ICH 320的基板管理控制器 (BMC) 350。在其它實(shí)施例中,可以使用符合點(diǎn)對(duì)點(diǎn)(pTp)互連架構(gòu)的平臺(tái)。當(dāng)前技 術(shù)發(fā)展的一個(gè)領(lǐng)域涉及可靠性、可用性和可服務(wù)性(RAS)?;谇岸丝偩€(xiàn) (FSB)架構(gòu)的當(dāng)前系統(tǒng)不允許單個(gè)總線(xiàn)部件的熱插拔。同樣地,當(dāng)前系統(tǒng)因 為要傳送初始化值的原因而受到管腳限制的不利影響,并且也由于初始通 電配置(POC)值的錯(cuò)誤而必須進(jìn)行多次熱啟動(dòng)。在一個(gè)實(shí)施例中,點(diǎn)對(duì)點(diǎn)(pTp)架構(gòu)平臺(tái)支持分層協(xié)議方案,這將在下 面進(jìn)一步論述。圖4示出了底層網(wǎng)絡(luò)的高速緩存一致性(cache coherence) 協(xié)議的抽象視圖的一個(gè)例子。圖4是一個(gè)實(shí)施例使用的協(xié)議架構(gòu)。該架構(gòu)描繪了耦合到網(wǎng)絡(luò)結(jié)構(gòu) (network fabric)的多個(gè)高速緩存代理(caching agent)和本地代理(home agent)。例如,該網(wǎng)絡(luò)結(jié)構(gòu)符合分層協(xié)議方案,且可以包含鏈路層、物理層、協(xié)議層、路由層或傳輸層中任一個(gè)或全部。所述結(jié)構(gòu)便于點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中從 一種協(xié)議(本地或高速緩存代理)傳輸消息到另一種協(xié)議。在一個(gè)方面,該 圖描繪了底層網(wǎng)絡(luò)的高速緩存一致性協(xié)議的抽象視圖。
      圖5是根據(jù)本文所述發(fā)明的實(shí)施例而使用的物理互連裝置的框圖。在
      一個(gè)方面,該裝置描繪了用于處理器、芯片組和/或i/o橋接部件的高速緩
      存一致性的、基于鏈路的互連方案的物理層。例如,所述物理互連可以由 集成設(shè)備的每個(gè)物理層實(shí)施。特別地,物理層提供通過(guò)包含兩個(gè)單向鏈路 的物理互連的兩個(gè)端口之間的通信。特別地, 一個(gè)單向鏈路504從第一集 成設(shè)備的第一發(fā)送端口 550a到第二集成設(shè)備的第一接收端口 550b。同樣 地,第二單向鏈路506從第二集成設(shè)備的第一發(fā)送端口 550b到第一集成設(shè) 備的第一接收端口 550a。然而,請(qǐng)求保護(hù)的主題并未限制于兩個(gè)單向鏈路。 本領(lǐng)域技術(shù)人員將理解,請(qǐng)求保護(hù)的主題支持任何已知的信號(hào)傳輸技術(shù), 例如雙向鏈路等。
      圖6A-C描繪了多種包含一個(gè)或多個(gè)處理器的點(diǎn)對(duì)點(diǎn)系統(tǒng)。請(qǐng)求保護(hù) 的主題可以包含若干實(shí)施例,例如,包含一個(gè)處理器606 (圖6A)、包含兩 個(gè)處理器(P) 602 (圖6B)和包含四個(gè)處理器(P) 604 (圖6C)。在實(shí)施例602 和604中,每一處理器耦合到存儲(chǔ)器(M)621,且通過(guò)網(wǎng)絡(luò)結(jié)構(gòu)連接到每個(gè) 處理器623,所述網(wǎng)絡(luò)結(jié)構(gòu)可以包含鏈路層、協(xié)議層、路由層、傳輸層和 物理層中的任一個(gè)或全部。所述結(jié)構(gòu)有助于點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中從一種協(xié)議(本地 或高速緩存代理)向另一種協(xié)議傳輸消息。如前所述,網(wǎng)絡(luò)結(jié)構(gòu)系統(tǒng)支持結(jié) 合圖4-6而描述的任何實(shí)施例。
      對(duì)實(shí)施例606來(lái)說(shuō),單處理器P 623通過(guò)對(duì)應(yīng)于分層協(xié)議方案的網(wǎng)絡(luò) 結(jié)構(gòu)鏈路耦合到被標(biāo)為IO+M+F的圖形和存儲(chǔ)器控制器625。圖形和存儲(chǔ) 器控制器耦合到存儲(chǔ)器且能通過(guò)快速外圍部件互連(PCI)鏈路來(lái)實(shí)現(xiàn)接收 和發(fā)送。同樣地,圖形和存儲(chǔ)器控制器耦合到輸入/輸出控制中心(ICH) 627。 此夕卜,ICH627通過(guò)低引腳數(shù)(LPC)總線(xiàn)耦合到固件中心(FWH)629。同時(shí), 對(duì)一個(gè)不同的單處理器實(shí)施例來(lái)說(shuō),該處理器將包含外部網(wǎng)絡(luò)結(jié)構(gòu)鏈路。 該處理器可以包含多個(gè)具有分離或共享的高速緩存的內(nèi)核,其中每個(gè)內(nèi)核 耦合到一個(gè)X-bar型路由器和非路由全局鏈路接口 。X-bar型路由器是一插 槽中多個(gè)內(nèi)核之間的pTp互連。X-bar是在一種"十字條(cross-bar)",意指每個(gè)部件與其它每個(gè)部件之間都有十字鏈路或連接。這通常比pTp互連 鏈路更快,且可在片上實(shí)現(xiàn),促進(jìn)了并行通信。因此,該外部網(wǎng)絡(luò)結(jié)構(gòu)鏈 路耦合到X-bar路由器和非路由全局鏈路接口。多處理器系統(tǒng)的實(shí)施例包含通過(guò)點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)631 (由處理節(jié)點(diǎn)之間的 粗線(xiàn)表示)互連的多個(gè)處理節(jié)點(diǎn)623。為了論述方便,可互換地使用術(shù)語(yǔ)"處 理節(jié)點(diǎn)"和"計(jì)算節(jié)點(diǎn)"。處理器之間的鏈路通常是全寬的(或最大寬度), 而從處理器到I/0中心(IOH)芯片組(CS)的鏈路通常為半寬的。每個(gè)處理節(jié) 點(diǎn)623包含一個(gè)或多個(gè)與關(guān)聯(lián)的存儲(chǔ)器621耦合的中央處理器623,所述 關(guān)聯(lián)的存儲(chǔ)器構(gòu)成系統(tǒng)主存儲(chǔ)器。在替代性的實(shí)施例中,存儲(chǔ)器621可以 物理地合并在一起以組成可被所有處理節(jié)點(diǎn)623訪問(wèn)的主存儲(chǔ)器。每個(gè)處 理節(jié)點(diǎn)623還可以包括存儲(chǔ)器控制器625作為與存儲(chǔ)器621的接口。每個(gè) 處理節(jié)點(diǎn)623,包括與其相關(guān)聯(lián)的存儲(chǔ)器控制器625,可以在同一個(gè)芯片上 實(shí)現(xiàn)。在替代性的實(shí)施例中,每個(gè)存儲(chǔ)器控制器625可以實(shí)現(xiàn)在不同于與 其關(guān)聯(lián)的處理節(jié)點(diǎn)623的一個(gè)芯片上。每個(gè)存儲(chǔ)器621可以包含一個(gè)或多個(gè)類(lèi)型的存儲(chǔ)器件,例如,雙列直 插式存儲(chǔ)模組(DIMM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)(DRAM)器件、同步動(dòng)態(tài)隨機(jī)存 取存儲(chǔ)(SDRAM)器件、雙倍數(shù)據(jù)速率(DDR) SDRAM器件或其它適用于服 務(wù)器或一般應(yīng)用的易失性或非易失性存儲(chǔ)器件。所述系統(tǒng)也可以包括一個(gè)或多個(gè)輸入/輸出(I/0)控制器627以向處理 節(jié)點(diǎn)623和其它系統(tǒng)部件提供接口,使它們?cè)L問(wèn)如閃速存儲(chǔ)器或固件中心 (FWH) 629這樣的I/O設(shè)備。在一個(gè)實(shí)施例中,每個(gè)I/O控制器627可以 耦合到一個(gè)或多個(gè)處理節(jié)點(diǎn)。I/O控制器627和它們各自的處理節(jié)點(diǎn)623 之間的鏈路被稱(chēng)為I/O鏈路。I/O設(shè)備可以包括工業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)設(shè)備、 外圍部件互連(PCI)設(shè)備、PCI Express設(shè)備、通用串行總線(xiàn)(USB)設(shè)備、小 型計(jì)算機(jī)系統(tǒng)接口(SCSI)設(shè)備、或其它標(biāo)準(zhǔn)的或?qū)S械倪m用于服務(wù)器或一 般應(yīng)用的I/O設(shè)備。I/O設(shè)備可以是有線(xiàn)的或無(wú)線(xiàn)的。在一個(gè)實(shí)施例中,I/O 設(shè)備可以包含無(wú)線(xiàn)發(fā)射器和無(wú)線(xiàn)發(fā)射器接收器。該系統(tǒng)可以是服務(wù)器、多處理器桌面計(jì)算設(shè)備、嵌入式系統(tǒng)、網(wǎng)絡(luò)設(shè) 備、或其中多個(gè)處理節(jié)點(diǎn)通過(guò)廣域網(wǎng)遠(yuǎn)程連接的分布式計(jì)算設(shè)備。在如圖6C所示的實(shí)施例中,網(wǎng)絡(luò)631為處理節(jié)點(diǎn)623提供了部分連通性。因此,每個(gè)處理節(jié)點(diǎn)623直接連接到部分、但可能并不是全部的其 它處理節(jié)點(diǎn)。處理節(jié)點(diǎn)623通過(guò)直接連接或間接連接(例如,使用另一個(gè)處 理器作為媒介)連接到另一個(gè)處理節(jié)點(diǎn)。
      一種由網(wǎng)絡(luò)631搭載的消息是監(jiān)聽(tīng)消息,其包含與可影響高速緩存(未 示出)中數(shù)據(jù)項(xiàng)的一致性狀態(tài)的存儲(chǔ)器事務(wù)相關(guān)的信息。存儲(chǔ)器事務(wù)指需要 訪問(wèn)任意存儲(chǔ)器件621或任意高速緩存的事務(wù)。當(dāng)任意處理節(jié)點(diǎn)執(zhí)行存儲(chǔ) 器事務(wù)時(shí),該處理節(jié)點(diǎn)在網(wǎng)絡(luò)621上發(fā)出監(jiān)聽(tīng)消息(或等價(jià)地,監(jiān)聽(tīng)請(qǐng)求), 以請(qǐng)求所有其它處理節(jié)點(diǎn)驗(yàn)證或更新在各自本地高速緩存中的數(shù)據(jù)項(xiàng)的一 致性狀態(tài)。當(dāng)執(zhí)行直接存儲(chǔ)器存取(DMA)B寸,I/O控制器627也發(fā)出和接 收監(jiān)聽(tīng)消息。因此,任何處理節(jié)點(diǎn)623和I/0控制器627都可以是一個(gè)監(jiān) 聽(tīng)消息的請(qǐng)求節(jié)點(diǎn)以及另一個(gè)監(jiān)聽(tīng)消息的目的節(jié)點(diǎn)。
      當(dāng)?shù)谝惶幚砉?jié)點(diǎn)發(fā)送監(jiān)聽(tīng)消息至不直接連接到第一處理節(jié)點(diǎn)的第二處 理節(jié)點(diǎn)時(shí),第一和第二處理節(jié)點(diǎn)使用第三處理節(jié)點(diǎn)作為轉(zhuǎn)發(fā)節(jié)點(diǎn)。在這種 情況下,第三處理節(jié)點(diǎn)作為轉(zhuǎn)發(fā)節(jié)點(diǎn)用于將監(jiān)聽(tīng)消息轉(zhuǎn)發(fā)至第一和第二處 理節(jié)點(diǎn)。所述轉(zhuǎn)發(fā)可以通過(guò)一種扇出(fan-out)機(jī)制來(lái)執(zhí)行,該機(jī)制復(fù)制輸 入的監(jiān)聽(tīng)消息并將被復(fù)制的消息轉(zhuǎn)發(fā)到不同目的地。
      圖7示出了根據(jù)本發(fā)明實(shí)施例的四插槽系統(tǒng)700。處理器710、 720、 730和740可以包含任意數(shù)目的內(nèi)核。每個(gè)處理器710、 720、 730和740 都具有與之耦合的存儲(chǔ)器,分別為715、 725、 735和745。處理器之間的 點(diǎn)線(xiàn)表示pTp互連總線(xiàn)。處理器和其存儲(chǔ)器之間的粗體線(xiàn)表示FBD連接。 所述處理器中的一些,如該例中的710和730,可以通過(guò)pTp互連總線(xiàn)連 接到輸入/輸出中心(IOH)750。 1OH750可以通過(guò)如灰線(xiàn)所示多個(gè)快速外圍 部件互連(PCI-e)總線(xiàn)耦合到多個(gè)設(shè)備(未示出)。IOH 750通過(guò)如虛線(xiàn)所示的 直接媒體接口(DMI)總線(xiàn)耦合到輸入/輸出控制中心(ICH) 760。 ICH 760可 以耦合到固件中心(FWH) 770和視頻圖形適配器(VGA) 780。
      本文所述的技術(shù)并不限于任意特定的硬件或軟件配置;其可以適用于 任何計(jì)算、消費(fèi)電子或處理環(huán)境。所述技術(shù)可以用軟件、硬件或兩者的組 合來(lái)實(shí)現(xiàn)。
      為了模擬,程序代碼可以利用硬件描述語(yǔ)言或另一種基本給出了期望 所設(shè)計(jì)的硬件如何執(zhí)行的模型的功能描述語(yǔ)言來(lái)表示硬件。程序代碼可以是匯編或機(jī)器語(yǔ)言,或者是可被編譯和/或解釋的數(shù)據(jù)。此外,本領(lǐng)域中普 遍地以各種形式將軟件視為執(zhí)行動(dòng)作或產(chǎn)生結(jié)果。這種表達(dá)方法僅僅是對(duì) 處理系統(tǒng)執(zhí)行程序代碼以使處理器執(zhí)行動(dòng)作或產(chǎn)生結(jié)果的簡(jiǎn)要表述方式。
      每個(gè)程序都可以用高級(jí)過(guò)程式或面向?qū)ο缶幊陶Z(yǔ)言來(lái)實(shí)現(xiàn),以使其與 處理系統(tǒng)通信。然而,如果需要,可以用匯編或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)程序。在 任何情形下,均可以編譯或解釋所述語(yǔ)言。
      可以用程序指令使采用所述指令編程的通用或?qū)S锰幚硐到y(tǒng)執(zhí)行本文 所述的操作??蛇x擇地,所述操作可以由包含用于執(zhí)行所述操作的硬連線(xiàn) 邏輯的特定硬件部件執(zhí)行,也可通過(guò)已編程計(jì)算機(jī)部件和定制硬件部件的 任意組合來(lái)執(zhí)行。此處描述的方法可以以計(jì)算機(jī)程序產(chǎn)品的形式來(lái)提供, 所述計(jì)算機(jī)程序產(chǎn)品可包括其上存儲(chǔ)了指令的機(jī)器可訪問(wèn)介質(zhì),所述指令 可用來(lái)對(duì)處理系統(tǒng)或其它電子設(shè)備進(jìn)行編程來(lái)執(zhí)行所述方法。
      程序代碼或指令可以存儲(chǔ)在如易失性和/或非易失性存儲(chǔ)器中,例如存 儲(chǔ)器件和/或相關(guān)聯(lián)的機(jī)器可讀的或機(jī)器可訪問(wèn)的介質(zhì),包括固態(tài)存儲(chǔ)器、 硬盤(pán)驅(qū)動(dòng)器、軟盤(pán)、光存儲(chǔ)、磁帶、閃速存儲(chǔ)器、記憶棒、數(shù)字視頻盤(pán)、
      數(shù)字多用盤(pán)(DVD)等,以及更多的如機(jī)器可訪問(wèn)生物狀態(tài)保持存儲(chǔ)器這樣 的特殊介質(zhì)。機(jī)器可讀介質(zhì)可以包含以機(jī)器可讀的形式存儲(chǔ)、傳輸或接收 信息的任意機(jī)制,且該介質(zhì)可以包含有形介質(zhì),例如天線(xiàn)、光纖、通信接 口等,通過(guò)該有形介質(zhì),電、光、聲或其它形式的編碼有該程序代碼的傳 播信號(hào)或載波可以傳遞過(guò)去。程序代碼可以以分組、串行數(shù)據(jù)、并行數(shù)據(jù)、 傳播信號(hào)等的形式傳輸,且可以以壓縮或加密格式進(jìn)行使用。
      程序代碼可以在可編程機(jī)器上執(zhí)行的程序中實(shí)現(xiàn),可編程機(jī)器例如移 動(dòng)或固定計(jì)算機(jī)、個(gè)人數(shù)字助理、機(jī)頂盒、移動(dòng)電話(huà)和尋呼機(jī)、消費(fèi)電子 設(shè)備(包括DVD播放器、個(gè)人視頻錄像機(jī)、個(gè)人視頻播放器、衛(wèi)星接收器、
      立體聲接收器、有線(xiàn)電視接收器)和其它電子設(shè)備,每個(gè)都包括處理器、處 理器可讀的易失性和/或非易失性存儲(chǔ)器、至少一個(gè)輸入設(shè)備和/或一個(gè)或
      多個(gè)輸出設(shè)備。程序代碼可以應(yīng)用到使用輸入設(shè)備輸入的數(shù)據(jù)上以執(zhí)行所 描述的實(shí)施例和產(chǎn)生輸出信息。輸出信息可以應(yīng)用到一個(gè)或多個(gè)輸出設(shè)備 上。本領(lǐng)域技術(shù)人員可以認(rèn)識(shí)到,所公開(kāi)的技術(shù)主題的實(shí)施例可以用各種 計(jì)算機(jī)系統(tǒng)配置完成,包括多內(nèi)核多處理器系統(tǒng)、小型計(jì)算機(jī)、大型計(jì)算機(jī)、以及是普適或微型的計(jì)算機(jī)或?qū)嶋H可嵌入任意設(shè)備的處理器。
      盡管操作可以描述成順序的處理過(guò)程,但是有些操作實(shí)際上可以并行、 并發(fā)、和/或在分布式環(huán)境中執(zhí)行,所利用的程序代碼存儲(chǔ)在本地或遠(yuǎn)程以 便由單或多處理器機(jī)器訪問(wèn)。此外,在有些實(shí)施例中,可以在不背離本發(fā) 明公開(kāi)的技術(shù)主題的精神的基礎(chǔ)上重新安排操作的順序。程序代碼可由嵌 入的控制器使用,或與嵌入的控制器一起使用。
      雖然參考示出的實(shí)施例描述了本發(fā)明,但說(shuō)明書(shū)并非解釋為限制性的。 各種對(duì)示出的實(shí)施例的修改和本發(fā)明的其它實(shí)施例對(duì)本發(fā)明相關(guān)領(lǐng)域技術(shù) 人員來(lái)說(shuō)是顯而易見(jiàn)的,它們都被認(rèn)為落入了本發(fā)明的精神和范圍之內(nèi)。
      權(quán)利要求
      1、 一種系統(tǒng),用于在多內(nèi)核消息傳遞平臺(tái)中進(jìn)行推測(cè)預(yù)取,該系統(tǒng)包括至少一個(gè)處理器,所述至少一個(gè)處理器中的每一個(gè)具有至少一個(gè)內(nèi)核, 其中所述系統(tǒng)包括多個(gè)內(nèi)核;所述多個(gè)內(nèi)核中的接收方內(nèi)核,其具有本地高速緩存、用于存儲(chǔ)接收 到的消息的至少一個(gè)消息隊(duì)列、以及消息傳遞預(yù)取器,該消息傳遞預(yù)取器 以通信方式耦合到共享高速緩存或共享存儲(chǔ)器至少二者之一 ,并且還耦合 到所述本地高速緩存;互連,用于在所述多個(gè)內(nèi)核之間傳遞消息;和所述多個(gè)內(nèi)核中的發(fā)送方內(nèi)核,用于發(fā)送消息到所述接收方內(nèi)核,其 中包含存儲(chǔ)器引用的消息被發(fā)送到所述接收方內(nèi)核的所述至少一個(gè)消息隊(duì) 列和所述消息傳遞預(yù)取器,并且其中,所述消息傳遞預(yù)取器被配置為推測(cè)地取得在接收到的消息中引 用的數(shù)據(jù),其中所取得的數(shù)據(jù)在本地高速緩存、共享高速緩存、除所述接 收方內(nèi)核之外的其它內(nèi)核的本地高速緩存或共享存儲(chǔ)器之一 中。
      2、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中,所述多個(gè)內(nèi)核中的至少一個(gè)內(nèi) 核進(jìn)一步包括至少一個(gè)獨(dú)立于所述消息傳遞預(yù)取器的執(zhí)行流水線(xiàn)預(yù)取器。
      3、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中,所述多個(gè)內(nèi)核中的至少一個(gè)內(nèi) 核進(jìn)一步包括與所述消息傳遞預(yù)取器處于同一預(yù)取器單元中的執(zhí)行流水線(xiàn) 預(yù)取器,其中多路復(fù)用器在執(zhí)行流水線(xiàn)預(yù)取請(qǐng)求和消息隊(duì)列預(yù)取請(qǐng)求之間 作出仲裁。
      4、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中,所述平臺(tái)包括點(diǎn)對(duì)點(diǎn)互連架構(gòu), 其中消息經(jīng)互連發(fā)送到所述接收方內(nèi)核,且該消息在所述接收方內(nèi)核中的 一個(gè)或多個(gè)硬件隊(duì)列中入隊(duì)。
      5、 根據(jù)權(quán)利要求4所述的系統(tǒng),進(jìn)一步包括執(zhí)行流水線(xiàn),該執(zhí)行流水 線(xiàn)用于識(shí)別何時(shí)接收到新的消息,其中,或者由所述執(zhí)行流水線(xiàn)輪詢(xún)所述 至少一個(gè)消息隊(duì)列以確定新消息是否已到達(dá),或者一旦在所述至少一個(gè)消 息隊(duì)列中接收到消息就發(fā)起中斷來(lái)向所述執(zhí)行流水線(xiàn)通知新消息已到達(dá)。
      6、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中,所述消息進(jìn)一步包括將要預(yù)取 的字節(jié)數(shù)。
      7、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中,第一消息隊(duì)列用于存儲(chǔ)包含存 儲(chǔ)器引用的消息,并且至少另外一個(gè)消息隊(duì)列用于存儲(chǔ)不包含存儲(chǔ)器引用 的消息。
      8、 根據(jù)權(quán)利要求7所述的系統(tǒng),進(jìn)一步包括用于選擇消息隊(duì)列的模塊, 該消息隊(duì)列用來(lái)存儲(chǔ)包含存儲(chǔ)器引用的消息。
      9、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中,使用單個(gè)隊(duì)列來(lái)存儲(chǔ)包含存儲(chǔ) 器引用和不包含存儲(chǔ)器引用的消息,該系統(tǒng)進(jìn)一步包括用于識(shí)別所存儲(chǔ)的 消息的類(lèi)型的模塊。
      10、 根據(jù)權(quán)利要求9所述的系統(tǒng),其中,所述用于識(shí)別所存儲(chǔ)的消息 的類(lèi)型的模塊進(jìn)一步包括與所述消息相對(duì)應(yīng)的標(biāo)志,所述標(biāo)志指示消息類(lèi) 型,其中所述標(biāo)志存儲(chǔ)在所述消息或控制寄存器之一中。
      11、 根據(jù)權(quán)利要求9所述的系統(tǒng),其中,所述用于識(shí)別所存儲(chǔ)的消息 的類(lèi)型的模塊進(jìn)一步包括與所述消息隊(duì)列相關(guān)聯(lián)的隊(duì)列屬性,該隊(duì)列屬性 用于指示所述隊(duì)列中所有消息的消息類(lèi)型。
      12、 一種系統(tǒng),用于在多內(nèi)核消息傳遞平臺(tái)中進(jìn)行推測(cè)預(yù)取,該系統(tǒng) 包括至少一個(gè)處理器,所述至少一個(gè)處理器中的每一個(gè)具有至少一個(gè)內(nèi)核,其中所述系統(tǒng)包括多個(gè)內(nèi)核;所述多個(gè)內(nèi)核中的接收方內(nèi)核,其具有本地高速緩存; 單獨(dú)的硬件單元,其由所述多個(gè)內(nèi)核共享,用于使消息在至少一個(gè)硬件消息隊(duì)列中入隊(duì),所述至少一個(gè)硬件消息隊(duì)列用于為所述接收方內(nèi)核存儲(chǔ)接收到的消息;消息傳遞預(yù)取器,其以通信方式耦合至所述單獨(dú)的硬件單元、共享高 速緩存或共享存儲(chǔ)器至少二者之一、以及所述接收方內(nèi)核;互連,其經(jīng)所述單獨(dú)的硬件單元在所述多個(gè)內(nèi)核之間傳遞消息;和所述多個(gè)內(nèi)核中的發(fā)送方內(nèi)核,其經(jīng)所述單獨(dú)的硬件單元向所述接收 方內(nèi)核發(fā)送消息,其中包含存儲(chǔ)器引用的消息被發(fā)送到所述接收方內(nèi)核的 所述至少一個(gè)硬件消息隊(duì)列和所述消息傳遞預(yù)取器,并且其中,所述消息傳遞預(yù)取器被配置為推測(cè)地取得在接收到的消息中引 用的數(shù)據(jù),其中所取得的數(shù)據(jù)存儲(chǔ)在本地高速緩存、共享高速緩存、除所 述接收方內(nèi)核之外的其它內(nèi)核的本地高速緩存或共享存儲(chǔ)器之一 中。
      13、 根據(jù)權(quán)利要求12所述的系統(tǒng),其中,所述多個(gè)內(nèi)核中的至少一個(gè) 內(nèi)核進(jìn)一步包括至少一個(gè)獨(dú)立于所述消息傳遞預(yù)取器的執(zhí)行流水線(xiàn)預(yù)取 器。
      14、 根據(jù)權(quán)利要求12所述的系統(tǒng),其中,所述多個(gè)內(nèi)核中的至少一個(gè) 內(nèi)核進(jìn)一步包括與所述消息傳遞預(yù)取器在同一預(yù)取器單元中的執(zhí)行流水線(xiàn) 預(yù)取器,其中多路復(fù)用器在執(zhí)行流水線(xiàn)預(yù)取請(qǐng)求和消息隊(duì)列預(yù)取請(qǐng)求之間 作出仲裁。
      15、 根據(jù)權(quán)利要求14所述的系統(tǒng),進(jìn)一步包括執(zhí)行流水線(xiàn),該執(zhí)行流 水線(xiàn)用于識(shí)別何時(shí)接收到新的消息,其中,或者由所述執(zhí)行流水線(xiàn)輪詢(xún)所 述至少一個(gè)消息隊(duì)列以確定新消息是否已到達(dá),或者一旦在所述至少一個(gè) 消息隊(duì)列中接收到消息就發(fā)起中斷來(lái)向所述執(zhí)行流水線(xiàn)通知新消息已到 達(dá)。
      16、 根據(jù)權(quán)利要求12所述的系統(tǒng),其中,第一消息隊(duì)列用于存儲(chǔ)包含 存儲(chǔ)器引用的消息,并且至少另外一個(gè)消息隊(duì)列用于存儲(chǔ)不包含存儲(chǔ)器引 用的消息。
      17、 根據(jù)權(quán)利要求16所述的系統(tǒng),進(jìn)一步包括用于選擇消息隊(duì)列的模 塊,該消息隊(duì)列用來(lái)存儲(chǔ)包含存儲(chǔ)器引用的消息。
      18、 根據(jù)權(quán)利要求12所述的系統(tǒng),其中,使用單個(gè)隊(duì)列來(lái)存儲(chǔ)包含存 儲(chǔ)器引用和不包含存儲(chǔ)器引用的消息,該系統(tǒng)進(jìn)一步包括用于識(shí)別所存儲(chǔ) 的消息的類(lèi)型的模塊。
      19、 根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述用于識(shí)別所存儲(chǔ)的消息 的類(lèi)型的模塊進(jìn)一步包括與所述消息相對(duì)應(yīng)的標(biāo)志,所述標(biāo)志指示消息類(lèi) 型,其中所述標(biāo)志存儲(chǔ)在所述消息或控制寄存器之一中。
      20、 一種由機(jī)器實(shí)現(xiàn)的方法,用于在多內(nèi)核消息傳遞平臺(tái)中進(jìn)行推測(cè) 預(yù)取,該方法包括由發(fā)送方內(nèi)核發(fā)送一個(gè)消息,該消息包含存儲(chǔ)器引用指針且被發(fā)送到 接收方內(nèi)核;由所述接收方內(nèi)核接收所述消息;同時(shí)使所述消息在消息隊(duì)列中入隊(duì)并且將所述消息轉(zhuǎn)發(fā)到消息預(yù)取器中;基于所述存儲(chǔ)器引用指針,由所述消息預(yù)取器發(fā)出存儲(chǔ)器引用,以獲 取被引用的存儲(chǔ)器;將所獲取的對(duì)應(yīng)于所述存儲(chǔ)器引用的數(shù)據(jù)存儲(chǔ)在所述接收方內(nèi)核的本 地高速緩存中;由所述接收方內(nèi)核使所述消息從所述消息隊(duì)列中出隊(duì);和解引用所述存儲(chǔ)器引用指針;和獲取存儲(chǔ)在所述接收方內(nèi)核的本地高速緩存中的所述數(shù)據(jù)。
      21、 根據(jù)權(quán)利要求20所述的方法,其中所述數(shù)據(jù)從本地高速緩存、共 享高速緩存、除所述接收方內(nèi)核之外的其它內(nèi)核的本地高速緩存或共享存 儲(chǔ)器之一中獲取。
      22、 根據(jù)權(quán)利要求20所述的方法,其中,所述消息進(jìn)一步包括將要預(yù) 取的字節(jié)數(shù)。
      23、 根據(jù)權(quán)利要求20所述的方法,其中,所述消息預(yù)取器是由執(zhí)行流 水線(xiàn)使用的同一個(gè)預(yù)取器或者未由所述執(zhí)行流水線(xiàn)使用的單獨(dú)的預(yù)取器二者之一。
      24、 一種機(jī)器可讀介質(zhì),其具有用于在多內(nèi)核消息傳遞平臺(tái)中進(jìn)行推 測(cè)預(yù)取的指令,所述指令存儲(chǔ)在該介質(zhì)上,并且在被機(jī)器執(zhí)行時(shí)使得該機(jī) 器由發(fā)送方內(nèi)核發(fā)送一個(gè)消息,該消息包含存儲(chǔ)器引用指針并且被發(fā)送 到接收方內(nèi)核;由所述接收方內(nèi)核接收所述消息;同時(shí)使所述消息在消息隊(duì)列中入隊(duì)并且將所述消息轉(zhuǎn)發(fā)到消息預(yù)取器;基于所述存儲(chǔ)器引用指針,由所述消息預(yù)取器發(fā)出存儲(chǔ)器引用,以獲 取被引用的存儲(chǔ)器;將所獲取的對(duì)應(yīng)所述存儲(chǔ)器弓I用的數(shù)據(jù)存儲(chǔ)在所述接收方內(nèi)核的本地 高速緩存中;由所述接收方內(nèi)核使所述消息從所述消息隊(duì)列中出隊(duì);和 解引用所述存儲(chǔ)器引用指針;和獲取存儲(chǔ)在所述接收方內(nèi)核的本地高速緩存中的所述數(shù)據(jù)。
      25、 根據(jù)權(quán)利要求24所述的介質(zhì),其中,所述數(shù)據(jù)從本地高速緩存、 共享高速緩存、除所述接收方內(nèi)核之外的其它內(nèi)核的本地高速緩存或共享 存儲(chǔ)器之一中獲取。
      26、 根據(jù)權(quán)利要求25所述的介質(zhì),其中,所述消息進(jìn)一步包括將要預(yù) 取的字節(jié)數(shù)。
      27、 根據(jù)權(quán)利要求25所述的介質(zhì),其中,所述消息預(yù)取器是由執(zhí)行流 水線(xiàn)所使用的同一個(gè)預(yù)取器或者未由所述執(zhí)行流水線(xiàn)使用的單獨(dú)的預(yù)取器二者之一。
      全文摘要
      在一些實(shí)施例中,本發(fā)明涉及在多處理器/多內(nèi)核平臺(tái)中的內(nèi)核之間的數(shù)據(jù)預(yù)取技術(shù)和消息傳遞技術(shù)的新穎組合。在一實(shí)施例中,接收方內(nèi)核具有消息隊(duì)列和消息預(yù)取器。到來(lái)的消息同時(shí)被寫(xiě)入所述消息隊(duì)列和所述消息預(yù)取器中。所述預(yù)取器推測(cè)地取得在已接收的消息中引用的數(shù)據(jù),以便該數(shù)據(jù)在該消息在執(zhí)行流水線(xiàn)中被執(zhí)行時(shí)或之后不久便可用。還描述和請(qǐng)求保護(hù)其它實(shí)施例。
      文檔編號(hào)G06F9/38GK101311894SQ20081012879
      公開(kāi)日2008年11月26日 申請(qǐng)日期2008年3月31日 優(yōu)先權(quán)日2007年3月30日
      發(fā)明者A·孔澤, E·約翰遜, H·加特勒 申請(qǐng)人:英特爾公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1