專利名稱:用于在線程之間通信的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例 一般涉及計算機(jī)處理器。
背景技術(shù):
計算機(jī)通常包括用于存儲程序的主存儲器和用于執(zhí)行在主存儲 器中存儲的程序的處理器。在一些情況下,處理器可能包括多處理 核其可以用于同時處理來自執(zhí)行的多線程的數(shù)據(jù)(例如來自多程序, 來自多處理,和/或來自多線程)。如本領(lǐng)域技術(shù)人員已知的,在處 理隨后的線程之前例如,通過同時處理線程(同時的多線程)或通 過在短時間內(nèi)處理每個線程(例如按照預(yù)定的優(yōu)先級),每個處理 核本身可以被用于處理執(zhí)行的多線程。
一般期望使得盡可能多的處理核每個都同時處理盡可能多的線 程,以便從處理器獲得最大的處理能力和效率。例如,多個線程可 以用于執(zhí)行應(yīng)用,例如執(zhí)行三維圖形呈現(xiàn)的視頻游戲、音響效果、 物理模擬、玩家輸入/輸出和其他功能。為向視頻游戲玩家提供最真 實(shí)的體驗(yàn),可能期望使得每個線程執(zhí)行給定的功能(例如一個線程 可能繪制三維場景,也稱為呈現(xiàn),而另外的線程執(zhí)行物理計算), 這在設(shè)定的時間內(nèi)需要一定量處理能力。例如,如果處理器是用于 在視頻游戲中呈現(xiàn)由視頻游戲玩家執(zhí)行的動作的三維序列,則可能 期望按照序列快速呈現(xiàn)每個圖片(稱為幀),使得動作顯得平滑地 發(fā)生(例如,如果由視頻游戲玩家執(zhí)行的動作為跳躍,則可能期望 跳躍象真實(shí)生活中的跳躍一樣向上和向下平滑地發(fā)生)。
為維持執(zhí)行線程的同時執(zhí)行,處理器可以配置為有效地從計算 機(jī)的主存儲器取回數(shù)據(jù)和/或用于每個執(zhí)行線程的指令。在一些情況 下,取回的數(shù)據(jù)和指令可以放置在稱為高速緩存的 一 個或多個小的
存儲器中,其可以位于與處理器相同的芯片上。高速緩存也可能是
按等級排列,例如,使得第一高速緩存(稱為二級高速緩存,或L2
高速緩存)由處理器中的每個處理核共享,而將多個較小的高速緩
存(稱為一級,或L1高速緩存)提供給給定的處理核或處理核的組。 當(dāng)線程所請求的數(shù)據(jù)和指令在處理器高速緩存之一中不可用時,處 理器可能從主存儲器請求數(shù)據(jù)和指令。
盡管請求的數(shù)據(jù)和指令是從主存儲器取回,但請求數(shù)據(jù)和指令 的線程的執(zhí)行可以暫時被處理核中止,以便為滿足請求提供時間。 在一些情況下,其他的線程可以執(zhí)行,而請求數(shù)據(jù)和指令的線程被 中止。然而,如果過多的線程被中止以等待數(shù)據(jù)和指令,則處理器 中的一個或多個處理核可以在從主存儲器取回數(shù)據(jù)和指令的同時, 保持空閑。
當(dāng)處理器提供執(zhí)行多線程的多個核,每個線程也可以為處理器 的高速緩存空間的使用與其他的線程竟?fàn)?。例如,因?yàn)樘幚砥髦械?高速緩存空間可能比計算機(jī)的主存儲器小,高速緩存空間可能不是 足夠大到可以保持由每個執(zhí)行的核執(zhí)行的每個線程的所有的數(shù)據(jù)和 指令。因而,當(dāng)給定的處理核從執(zhí)行第一線程切換到執(zhí)行第二線程 時,可以從高速緩存移除用于第 一線程的數(shù)據(jù)和指令并且替換為用 于第二線程的數(shù)據(jù)和指令。如果隨后恢復(fù)第一線程的執(zhí)行,則第一 線程可能再次中止,同時從主存儲器取回用于第一線程的數(shù)據(jù)和指 令并且放回到處理器的高速緩存中。在從主存儲器取回數(shù)據(jù)和指令 的同時中止執(zhí)行的線程可能降低處理器的效率。
當(dāng)處理器中的多線程從主存儲器訪問數(shù)據(jù)和指令時,向和從主 存儲器傳輸?shù)臄?shù)據(jù)量(稱為消耗的存儲器帶寬)可能隨著每個線程 向和從主存儲器發(fā)送數(shù)據(jù)而顯著地增加。當(dāng)消耗的存儲器帶寬增加 時,隨著其他的訪問的執(zhí)行,線程的每個后續(xù)的訪問會慢速執(zhí)行(例 如相對于主存儲器未由多線程訪問時的單個訪問慢速,例如,當(dāng)消 耗的存儲器帶寬為低時)。如上所述,等待存儲器訪問得以執(zhí)行的 線程可以被中止,因而降低了處理器的效率。 當(dāng)給定線程的執(zhí)行試圖訪問由處理器正在執(zhí)行的另 一 個線程的 執(zhí)行的數(shù)據(jù)和/或指令時,由線程的執(zhí)行訪問的數(shù)據(jù)和指令可能進(jìn)一 步復(fù)雜化。當(dāng)線程的執(zhí)行彼此共享數(shù)據(jù)和指令時,如果不在處理器 的通常有限的高速緩存空間中移除其他的數(shù)據(jù)和指令,將難以有效 地在存儲器中共享數(shù)據(jù)和指令。如上所述,隨著數(shù)據(jù)和指令從處理 器的高速緩存空間被移除,并且隨著其他的數(shù)據(jù)和指令被從主存儲 器取回,消耗的存儲器帶寬以及訪問時間可以增加,因而降低了處 理器的效率。
當(dāng)由處理器執(zhí)行的線程的執(zhí)行過頻繁地中止時,由處理器執(zhí)行 的應(yīng)用的性能也會受到不利影響。例如,如上所述關(guān)于呈現(xiàn)由視頻 游戲玩家執(zhí)行的動作的三維序列的視頻游戲,可能期望使得動作顯 得平滑和沒有任何的中止。然而,當(dāng)由于例如上述情形之一引起的 慢的存儲器訪問使得執(zhí)行呈現(xiàn)的線程中止時,呈現(xiàn)序列會受到中止 的不利影響,這導(dǎo)致了不平滑的動作序列。
因此,所需要是改善的方法和裝置,用于管理處理器中的存儲 器訪問。還需要是改善的方法和裝置,用于利用處理器呈現(xiàn)三維場 景。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例 一般地提供了用于在處理器中的線程之間通信 的方法和裝置。該方法包括為收件箱保留處理器中的高速緩存的第 一部分。收件箱與由處理器執(zhí)行的第一線程相關(guān)聯(lián)。該方法還包括 從第二線程接收包,其中該包包括訪問請求。該方法進(jìn)一步包括使
括在該包中的訪問請求。
一個實(shí)施例還提供了處理器,包括處理器高速緩存和收件箱控 制電路。收件箱控制電路配置為為收件箱保留處理器高速緩存的第 一部分。收件箱與由處理器執(zhí)行的第一線程相關(guān)聯(lián)。收件箱控制電 路還配置為從第二線程接收包,其中該包包括訪問請求。收件箱控
制電路進(jìn)一 步配置為處理接收的包并且確定是否授權(quán)包括在包中的 訪問請求。
一個實(shí)施例進(jìn)一 步提供了 一種方法,包括分配處理器中的高速 緩存的第一部分作為發(fā)件箱,用于由處理器執(zhí)行的第一線程。該方 法還包括將來自第 一 線程的數(shù)據(jù)放置在發(fā)件箱中并且使用發(fā)件箱控 制電路用于發(fā)件箱以將由第一線程作為包放置在收件箱中的數(shù)據(jù)發(fā) 送到用于第二線程的收件箱。
通過參考附圖所示的本發(fā)明的實(shí)施例,提供了獲得和詳細(xì)理解 本發(fā)明的上述特征、優(yōu)點(diǎn)和目的的方式以及對上述內(nèi)容簡要概括的 本發(fā)明的更特別的說明。
然而應(yīng)當(dāng)注意,只示出了本發(fā)明的典型實(shí)施例并且因此不構(gòu)成 對其范圍的限制,因?yàn)楸景l(fā)明允許其他等效的實(shí)施例。
圖1是描述根據(jù)本發(fā)明的一個實(shí)施例的示例性計算機(jī)處理器的
方框圖2 A-D是說明根據(jù)本發(fā)明的 一 個實(shí)施例的存儲器收件箱方面的 方框圖3是描述根據(jù)本發(fā)明的 一個實(shí)施例的用于分配收件箱存儲器 空間的示例性處理的流程圖4是描述根據(jù)本發(fā)明的一個實(shí)施例的用于訪問收件箱的示例 性處理的流程圖5 A-B是描述根據(jù)本發(fā)明的 一 個實(shí)施例的用于與收件箱通信 的示例性包的方框圖6 A-6C是描述根據(jù)本發(fā)明的 一 個實(shí)施例的用于經(jīng)由包訪問收 件箱的示例性處理的流程圖7 A-D是描述根據(jù)本發(fā)明的 一 個實(shí)施例的用于訪問收件箱的示 例性電路的方框圖8是描述根據(jù)本發(fā)明的一個實(shí)施例的用于訪問發(fā)件箱的示例
性電路的方框圖。
具體實(shí)施例方式
本發(fā)明 一般地提供了用于在處理器中的線程之間通信的方法和 裝置。該方法包括為收件箱保留處理器中的高速緩存的第 一 部分。 收件箱與由處理器執(zhí)行的第 一線程相關(guān)聯(lián)。該方法還包括從第二線 程接收包,其中該包包括訪問請求。該方法進(jìn)一步包括使用收件箱 控制電路用于收件箱以處理接收的包并且確定是否授權(quán)包括在包中 的訪問請求。
以下,參考本發(fā)明的實(shí)施例。然而,應(yīng)當(dāng)理解本發(fā)明不限于所 描述的特定實(shí)施例。相反,以下的特征和元素的任意的組合,無論 是否涉及不同的實(shí)施例,都可預(yù)期用于實(shí)施和實(shí)現(xiàn)本發(fā)明。此外, 本發(fā)明的各種實(shí)施例提供了優(yōu)于現(xiàn)有技術(shù)許多優(yōu)點(diǎn)。然而,雖然發(fā) 明的實(shí)施例可以實(shí)現(xiàn)優(yōu)于其他可能的方案和/或現(xiàn)有技術(shù)的優(yōu)點(diǎn),但 無論特定的優(yōu)點(diǎn)是否由給定的實(shí)施例來實(shí)現(xiàn),都不限制本發(fā)明。因 而,下列方面、特征、實(shí)施例和優(yōu)勢僅僅是說明性的并且不應(yīng)認(rèn)為 是所附權(quán)利要求書的元素或限制,除當(dāng)在一個或多個權(quán)利要求中有 明確的表述。同樣地,提及"本發(fā)明"將不構(gòu)成在此公開的任何發(fā)明 主題的概括并且不應(yīng)認(rèn)為是所附權(quán)利要求書的元素或限制,除當(dāng)在 一個或多個權(quán)利要求中有明確的表述。
以下是在附圖中描述的本發(fā)明的實(shí)施例的詳細(xì)描述。實(shí)施例為 示例并且詳細(xì)到可以明確地說明本發(fā)明。然而,所才是供的細(xì)節(jié)的數(shù)
量不試圖限制可能的實(shí)施例的變形;相反,本發(fā)明將覆蓋落入到如 由所附權(quán)利要求書限定的本發(fā)明的精神和范圍內(nèi)的所有修改、等效 方案和替代方案。
本發(fā)明的實(shí)施例可用于例如計算機(jī)系統(tǒng)的系統(tǒng)并且關(guān)于該系統(tǒng) 在以下進(jìn)行描述。在此4吏用的系統(tǒng)可以包括任何系統(tǒng),其利用處理 器和高速緩沖存儲器并且包括個人計算機(jī)、互聯(lián)網(wǎng)應(yīng)用、數(shù)字媒體 應(yīng)用、便攜式數(shù)字助理(PDA)、便攜式音樂/視頻播放器和視頻游
戲控制臺。盡管高速緩沖存儲器可以與利用高速緩沖存儲器的處理 器位于相同的晶片上,但在一些情況下,處理器和高速緩沖存儲器 可以位于不同的晶片上(例如在分離的模塊內(nèi)的分離的芯片或在單 一的模塊內(nèi)的分離的芯片)。盡管本發(fā)明的實(shí)施例如下描述的處理 器具有多處理器核以及多Ll高速緩存,但本發(fā)明的實(shí)施例可以使用 任何利用高速緩存的處理器,包括具有單一處理核的處理器。 一般 而言,本發(fā)明的實(shí)施例可以利用任何處理器并且不限于任何特定的 配置。
用于計算機(jī)系統(tǒng)的程序產(chǎn)品
本發(fā)明的一個實(shí)施例實(shí)現(xiàn)為程序產(chǎn)品,其用于例如圖1中示出
的和如下描述的計算機(jī)系統(tǒng)100的計算機(jī)系統(tǒng)。程序產(chǎn)品的一個或
多個程序定義了實(shí)施例的功能(包括在此描述的方法)并且可以包 含在各種計算機(jī)可讀介質(zhì)中。示例性計算機(jī)可讀介質(zhì)包括,但不限
于(i )永存地存儲在非可寫入存儲媒體上(例如計算機(jī)內(nèi)的只讀 存儲器設(shè)備,諸如由CD-ROM驅(qū)動器可讀的CD-R0M盤)的信息;(ii) 存儲在可寫入存儲媒體(例如在軟盤驅(qū)動器中的軟盤或磁盤驅(qū)動器) 上的可改變的信息;和(iii )由通信媒介通過例如計算機(jī)或包括無 線通信的電話網(wǎng)絡(luò)傳送到計算機(jī)的信息。后者的實(shí)施例特別地包括 從互聯(lián)網(wǎng)或其他網(wǎng)絡(luò)下載的信息。當(dāng)執(zhí)行引導(dǎo)本發(fā)明的功能的計算 機(jī)可讀指令時,這樣的計算機(jī)可讀介質(zhì)表示了本發(fā)明的實(shí)施例。
一般而言,為實(shí)現(xiàn)本發(fā)明的實(shí)施例執(zhí)行的歷程可以是操作系統(tǒng) 或特定應(yīng)用、部件、程序、模塊、對象、或指令的序列的一部分。 本發(fā)明的計算機(jī)程序通常包括多個指令,其由本地計算機(jī)翻譯成為 機(jī)器可讀格式以及因而可執(zhí)行的指令。同樣,程序包括變量和數(shù)據(jù) 結(jié)構(gòu),其或者本地地駐留于程序中或者在存儲器或存儲設(shè)備中。另 外,此后描述的各種程序可以基于應(yīng)用而得以識別,其為該應(yīng)用實(shí) 現(xiàn)在本發(fā)明的指定實(shí)施例中。然而應(yīng)當(dāng)理解,任何如下的特定程序
語表識別和/或隱含的任何指定的應(yīng)用。
示例性計算機(jī)系統(tǒng)
圖1是描述根據(jù)本發(fā)明的一個實(shí)施例的計算機(jī)系統(tǒng)ioo的方框
圖。系統(tǒng)100包括一個或多個多核處理器102。每個多核單元102 包括多個核110,其每一個排列在共享二級高速緩存(L2高速緩存) 114周圍。共享L2高速緩存114可以包括存儲器的一部分,在此稱 為收件箱存儲器116,其如下所述可用于管理對由在多核單元102中 的核IIO執(zhí)行的線程的存儲器訪問。每個核IIO還包括一級高速緩 存(Ll高速緩存)112,在某些情況下,其僅由核110使用。
在某些情況下,系統(tǒng)IOO還可以包括進(jìn)一步的中央處理單元 (CPU) 104,在某些情況下,其可以提供附加的處理功能性。系統(tǒng) 100還可以包括輸入/輸出(1/0)接口 106和存儲器接口 108,其可 以用于分別與外部的1/0設(shè)備和附加的系統(tǒng)存儲器進(jìn)行通信。系統(tǒng) 內(nèi)的每個部件可以通過高速處理器總線150進(jìn)行通信。系統(tǒng)100還 可以包括擴(kuò)展總線12 0,其可以用于將多核處理器連接到附加的系 統(tǒng)部件。雖然描述為計算機(jī)系統(tǒng)100的分離的部件,但在某些情況 下,圖1中描述的兩個或多個項(xiàng)目可以結(jié)合作為片上系統(tǒng)(SOC)的 一部分。
在處理器中使用收件箱存儲器
如上所述,可能期望在處理器中同時執(zhí)行的多線程之中有效地 分配存儲器,以改善處理器的性能。此外,當(dāng)高速緩存空間在多線 程之中共享時,將難以在同時執(zhí)行的線程之間傳輸指令和數(shù)據(jù)。
發(fā)明的實(shí)施例提供在高速緩存中的存儲器空間,稱為存儲器收 件箱,其可以分配給在例如多核處理器102的多線程處理器中執(zhí)行 的給定的線程(在此稱為擁有者線程)。本發(fā)明的一個實(shí)施例中, 收件箱的存儲器空間可以排他地分配給擁有者線程。通過將在高速 緩存中的存儲器空間排他地分配給擁有者線程,擁有者線程可保持 足夠的存儲器空間以高速緩沖存儲其自己的指令和數(shù)據(jù),沒有其他 具有竟?fàn)幍木€程置換擁有者線程的指令和數(shù)據(jù)。因此,通過在高速 緩存的分配的收件箱部分中保持擁有者線程的數(shù)據(jù)和指令以及通過 在從存儲器的較高級取回?fù)碛姓呔€程的數(shù)據(jù)和指令的同時降低停止 擁有者線程的可能性,存儲器收件箱可以改善擁有者線程的執(zhí)行。
此外,收件箱存儲器可以由其他線程使用以有效地與擁有者線 程進(jìn)行通信。例如,當(dāng)另一個線程具有將要為收件箱提供給擁有者 線程的數(shù)據(jù)和/或指令時,其他線程可以向收件箱發(fā)送數(shù)據(jù)和/或指 令,其中數(shù)據(jù)和/或指令可以由擁有者線程取回。類似地,在某些情 況下,擁有者線程可以使用收件箱作為發(fā)件箱以便與其他線程進(jìn)行 信息通信。例如,為與另一個線程進(jìn)行信息通信,擁有者線程可以 將信息放置在收件箱中并且向其他線程發(fā)送通知,以指示數(shù)據(jù)和/ 或指令的位置,以此允許其他線程取回該信息??蛇x地,例如,通
通過使用另一個線程的收件箱作為發(fā)件箱),或者通過使用專用電 路(例如用于發(fā)送線程的發(fā)件箱緩沖器和/或硬件)發(fā)送數(shù)據(jù),擁有 者線程可以直接向其他線程的收件箱提供信息。因此,收件箱存儲 器可以用于簡化發(fā)送和接收線程之間的通信,同時防止被其他線程 所用的數(shù)據(jù)和/或指令的置換。
圖2A是根據(jù)本發(fā)明的一個實(shí)施例的在多核處理器102中的存儲
器收件箱202. . . 218的方框圖。存儲器收件箱202. . . 218的描述旨
在進(jìn)行概念性描述,因此不限于任何特定的物理配置。如所述,在 每個核110中執(zhí)行的線程(例如線程T0-T7 )可以經(jīng)由共享L2高速 緩存接口 222訪問共享L2高速緩存114。此外,L2高速緩存接口 222還可以由線程T0-T7使用以訪問對應(yīng)的存儲器收件箱202...218。 如上所述,在某些情況下,可以將每個收件箱202...218分配給對應(yīng) 的線程TO-T7。這樣,收件箱Q 202可以分配給T0等。如下所述, 通過為給定的線程分配給定的收件箱,關(guān)于擁有者線程對分配的收 件箱的訪問可以不受限制,同時由其他線程的訪問是受限制的。以 下更詳細(xì)地描述示例性的限制。
圖2B是描述傳輸?shù)教幚砗?10和從處理核110傳輸?shù)?、來自?存儲器收件箱(例如收件箱202. . . 208 )和共享L2高速緩存114
的數(shù)據(jù)路徑的方框圖。如上所述,存儲器收件箱202...208和共享 L2高速緩存114兩者可經(jīng)由共享L2高速緩存接口 222得以訪問。 當(dāng)在核110中執(zhí)行的線程從收件箱202. . . 208或從共享L2高速緩 存114取回數(shù)據(jù)時,所取回的數(shù)據(jù)可以放置在Ll高速緩存112中用 于核IIO。線程的指令可以從發(fā)布單元232發(fā)布。如上所述,在一 些情況下,核110可以配置為同時執(zhí)行多線程。因此,發(fā)布單元232 可以配置為發(fā)布用于多線程的指令。在一些情況下,核110可提供 多執(zhí)行單元234. . . 238,其可以用于同時執(zhí)行在核110中的線程。 執(zhí)行單元2 34. . . 2 38可包括固定點(diǎn)執(zhí)行單元2 34,浮點(diǎn)執(zhí)行單元2 36, 和分支執(zhí)行單元238。
在本發(fā)明的 一 個實(shí)施例中,收件箱可以只用于從其他線程接收 數(shù)據(jù)(例如,其他線程可以直接在收件箱之間寫入數(shù)據(jù)和/或發(fā)送數(shù) 據(jù))。在一些情況下,收件箱也可以用于發(fā)送數(shù)據(jù)。例如,待由線 程發(fā)送的數(shù)據(jù)和/或包可以放置在收件箱中并且然后收件箱電路可 以將數(shù)據(jù)發(fā)送到接收的收件箱。
可選地,在一個實(shí)施例中,稱為發(fā)件箱的分離的緩沖器可以由 每個線程使用以從發(fā)送的線程將數(shù)據(jù)發(fā)送到接受線程的收件箱。圖 2C是描述根據(jù)本發(fā)明的 一個實(shí)施例的示例性收件箱和發(fā)件箱的方 框圖。在本發(fā)明的一個實(shí)施例中,每個發(fā)件箱可以與給定的擁有者 線程相關(guān)聯(lián)。因此,在某些情況下,每個發(fā)件箱的存儲器空間可以 排他地分配給發(fā)件箱的擁有者線程。如所述,發(fā)件箱可經(jīng)由共享L2 高速緩存接口 222得以訪問。如下更詳細(xì)的描述,發(fā)件箱存儲器空 間可用于通過發(fā)送線程來與接收的線程進(jìn)行通信。
盡管關(guān)于形成L2高速緩存114的一部分的收件箱和/或發(fā)件箱
知的方法訪問的(例如存儲器映射、寄存器等)任何類型的存儲器 (例如分離的緩沖器)。
如在此所述,收件箱和/或發(fā)件箱可在傳統(tǒng)存儲器管理系統(tǒng)之外 得以使用,以在計算機(jī)系統(tǒng)100中操縱數(shù)據(jù)。例如,在某些情況下,
線程可以更新或產(chǎn)生待今后(例如由相同的線程或由另 一 個線程) 訪問的數(shù)據(jù)。當(dāng)更新的數(shù)據(jù)是待今后訪問時,線程可以將更新的數(shù)
據(jù)放置在L1高速緩存112中。此外,當(dāng)期望時,更新的數(shù)據(jù)還可以 放置在L2高速緩存114或在收件箱202...208中,以便經(jīng)由共享 L2高速緩存接口 222更新線程。在一些情況下,如上所述,經(jīng)由共 享L2高速緩存接口 222對給定收件箱(例如收件箱G 202 )的直接 訪問將會限制到擁有該給定的收件箱的線程(例如線程TO)。
在本發(fā)明的一個實(shí)施例中,存儲器收件箱(或發(fā)件箱,如果有 的話)內(nèi)的存儲器空間可以映射到全局存儲器地址(例如包括L1 高速緩存112、 L2高速緩存114和主存儲器的所有級別的存儲器以 及所有的線程都可以使用相同的全局存儲器地址以訪問給定的存儲 器收件箱)。因此,在本發(fā)明的一個實(shí)施例中,為訪問收件箱存儲器 空間,擁有者線程可以只讀取或?qū)懭雽?yīng)于收件箱存儲器空間的、 對全局存儲器地址期望的信息。如下所述,當(dāng)不擁有存儲器收件箱 的線程試圖經(jīng)由全局存儲器地址直接訪問收件箱時,訪問可能被拒
形式,例如經(jīng)由發(fā)送給收件箱的分包化的消息。
同樣,在本發(fā)明的一個實(shí)施例中,存儲在存儲器收件箱和/或發(fā) 件箱中的信息可以是本地的,以至于被訪問的存儲器不可進(jìn)行緩沖 存儲。例如,信息在Ll高速緩存112、 L2高速緩存114、和其他的 存儲器級別中的信息可以自動地由多核處理器102緩沖存儲,使得 從給定的存儲器地址請求的信息可以自動地從主存儲器取回并且在 被訪問的同時保持在高速緩存級別112、 114之一中。相反,給定的 收件箱中的全局可尋址存儲器只可位于收件箱中并且在不是拷貝到 收件箱之外的新的地址空間的情況下,不可在存儲器層次的不同的 級別之間移動(例如主存儲器、共享L2高速緩沖存儲器114,或L1 高速緩沖存儲器)。因此,由擁有者線程對收件箱的訪問可以快速 和直接地執(zhí)行到收件箱存儲器,而不等待信息被從存儲器層次的另 一個級別取回和/或在取回期間被轉(zhuǎn)換。收件箱存儲器的不可緩沖存
儲性還可以關(guān)于如下描述的收件箱的分包化訪問得以應(yīng)用(例如接 收的包或發(fā)送的包還可以放置在不可緩沖存儲存儲器中。在利用發(fā) 件箱時,也可以對不可緩沖存儲存儲器進(jìn)行對每個發(fā)件箱的訪問。 此外,在本發(fā)明的優(yōu)選實(shí)施例中,存儲在收件箱或發(fā)件箱中的信息 可以緩沖存儲在存儲器層次的其他級別。
在本發(fā)明的 一 個實(shí)施例中,用于收件箱/發(fā)件箱緩沖器結(jié)構(gòu)的物
理存儲器還可以實(shí)現(xiàn)為例如L2高速緩存114的緩沖存儲器級別的
"鎖定的"集合。例如,在L2高速緩存114中的高速緩存集合可以 針對一個或多個存儲器收件箱和/或發(fā)件箱特定地保留并且不象其 他高速緩存集合適合于插拔置換。保留的高速緩存集合可以例如在 制造期間永存地保留或可選地在執(zhí)行期間動態(tài)地保留。
存儲器收件箱/發(fā)件箱的分配
在本發(fā)明的 一個實(shí)施例中,存儲器收件箱和/或發(fā)件箱可以從共 享L2高速緩存114提供(例如L2高速緩存114的一部分可以為收 件箱存儲器116保留)。圖2D是描述根據(jù)本發(fā)明的一個實(shí)施例的從 共享L2高速緩存114到收件箱202、 204等和發(fā)件箱220等進(jìn)行分 區(qū)的收件箱存儲器116的方框圖。
如所述,每個收件箱202、 204等和/或發(fā)件箱220等的大小和 位置可以由收件箱控制寄存器240來控制。每個收件箱202、 204 等和/或發(fā)件箱2 2 0等的狀態(tài)(例如激活的或未激活的)可以經(jīng)由收 件箱狀態(tài)寄存器262指出和/或修改。在一個實(shí)施例中,對收件箱控 制寄存器240的訪問可以是不限制的??蛇x地,在一些情況下,對 收件箱控制寄存器24 0的訪問可以例如限制到被認(rèn)可的線程的子集 (例如擁有者線程、擁有者線程的父輩、特別指定的控制線程和/ 或操作系統(tǒng)核心線程)。在一個實(shí)施例中,收件箱控制寄存器240 可包括開始地址寄存器242、 248 ...254,尺寸寄存器244、 250 . . . 256和擁有者線程標(biāo)識寄存器246、 252 ...258。還可以提 供相應(yīng)的寄存器262、 264、 266以為發(fā)件箱220等的每一個指示開 始i也址、大小、和線禾呈標(biāo)識。
在一個實(shí)施例中,開始地址寄存器242、 248 ...254可指示每 個收件箱202、 204等的開始地址。尺寸寄存器244、 250. . . 258可 指示相應(yīng)的收件箱202、 204等的大小。收件箱的存儲器空間可因而 占用從相應(yīng)的開始地址開始的和通過收件箱的指示的大小排列的每 個地址。大小可以用任何的方式指示,例如,按字節(jié)的絕對大小或 固定的大小的整數(shù)倍數(shù)(例如尺寸寄存器244、 250. ..258的大小可 以按千字節(jié)指示大小)。
在一個實(shí)施例中,擁有者線程標(biāo)識寄存器246、 252 ...258可 以識別哪個線程(例如線程到TG、T1 ...頂)擁有給定的收件箱202、 204等或發(fā)件箱220等。盡管關(guān)于線程和相應(yīng)的收件箱1、 2 ...N 進(jìn)行了描述,本發(fā)明的實(shí)施例可以用于任何類型的線程和/或收件箱 標(biāo)識(例如數(shù)字、地址等)。在本發(fā)明的一個實(shí)施例中,收件箱標(biāo)識 寄存器可以用于限制對在對應(yīng)于擁有者線程的收件箱內(nèi)的存儲器地 址的直接訪問。在一些情況下,其他線程的有限的選擇也可以允許 直接訪問,該其他線程例如為擁有者線程的父輩線程、特定的控制 線程和/或操作系統(tǒng)核心線程。在一個實(shí)施例中,訪問控制電路260 可以用于提供受限制的訪問。
圖3是描述根據(jù)本發(fā)明的 一 個實(shí)施例的用于分配收件箱存儲器 空間的處理300的方框圖。處理300可類似地用于為發(fā)件箱分配存 夂賭器空間。如所述,處理300可以在系統(tǒng)100通電的步驟302處開 始。在步驟304,可以接收開始執(zhí)行線程的請求,并且在步驟306, 線程的執(zhí)行可以開始。在步驟308,接收請求以為線程的收件箱分 配存儲器空間。請求可以包括任何類型的請求。例如,可以試圖將 請求為給定的收件箱寫入地址寄存器和尺寸寄存器。在步驟310,可 以確定是否有足夠的存儲器空間以授權(quán)分配請求。確定例如可以包 括確認(rèn)選擇的開始地址不在另 一個收件箱內(nèi)并且確認(rèn)收件箱的選擇 的大小不重疊另 一 個收件箱的存儲器空間。
如果沒有足夠的存儲器空間以授權(quán)分配請求,則在步驟320提 供收件箱存儲器空間未分配的指示。該指示可以包括任何類型的指
示。例如,可以清除(或如果愿意,可以設(shè)置)對應(yīng)于請求的收件 箱的收件箱狀態(tài)寄存器中的位,以指示該收件箱存儲器空間未分配。 如果有足夠的存儲器空間以授權(quán)請求,則在步驟312分配收件箱的
存儲器空間并且在步驟314提供收件箱存儲器空間已分配的指示。
該指示可以包括例如設(shè)置位以指示收件箱存儲器空間已分配。
在一些情況下,收件箱控制寄存器240可以與圖2C中的描述 不同地排列,例如添加或移除控制寄存器。例如,當(dāng)收件箱202、 204等和/或發(fā)件箱220等是排列在鄰近的存儲器地址時,控制寄存 器可僅包括用于第一收件箱(例如收件箱0 202 )的開始地址寄存 器242和用于每個收件箱2 02、 204等的尺寸寄存器244、 25 0、 256。 給定的寄存器的界限則可以通過將每個先前的收件箱的大小添加到 第一收件箱的開始地址來確定??蛇x地,在一個實(shí)施例中,寄存器 可以為每個收件箱和/或發(fā)件箱的開始地址提供寄存器,并且每個收 件箱可以占用開始于開始地址的存儲器地址的預(yù)先范圍。在其他的 實(shí)施例,可以在固定的位置處提供固定大小的收件箱202、 204等 和/或發(fā)件箱2 2 0等,使得用于分配收件箱存儲器空間的處理不被利 用。
訪問存儲器收件箱/發(fā)件箱 在本發(fā)明的一個實(shí)施例中,可以限制對給定的存儲器收件箱(和 /或發(fā)件箱,用于在此描寫的每個示例)的訪問,例如,關(guān)于其訪問 的類型,訪問的方式,和允許訪問的線程。在一些情況下,多訪問 方式可以有不同的限制。例如,訪問的一個方式可以直接請求訪問 收件箱存儲器空間。訪問的另外的方式可以通過分包化的請求消息 訪問收件箱。如上所述,通過提供對收件箱的受限制的訪問,收件 箱的擁有者線程可保持收件箱內(nèi)的足夠的存儲器空間以高速緩沖存 儲其自己的指令和數(shù)據(jù),沒有其他具有竟?fàn)幍木€程置換擁有者線程 的指令和數(shù)據(jù)。以下更詳細(xì)地描述關(guān)于收件箱訪問方法的示例性的限制。
如上所述,在本發(fā)明的一個實(shí)施例中,直接訪問收件箱存儲器
空間內(nèi)的存儲器地址(例如,由開始地址寄存器和尺寸寄存器識別
的)可以由訪問電路260限制在收件箱的擁有者線程。圖4是描述
用于根據(jù)本發(fā)明的一個實(shí)施例經(jīng)由收件箱存儲器空間內(nèi)的存儲器地
址直接訪問收件箱的示例性處理400的流程圖。處理400還可以關(guān)
于發(fā)件箱訪問得以應(yīng)用。
如所述,處理400可以開始于步驟402,其中例如經(jīng)由L2高速 緩存接口 222,接收L2高速緩沖存儲器空間內(nèi)的訪問存儲器地址的 請求。在步驟404,可以確定請求的存儲器地址是否在收件箱的存儲 器空間內(nèi)。這樣的確定可以例如通過將用于請求的存儲器地址與用 于在共享L2高速緩存114內(nèi)的每個分配的收件箱202、 204等的開 始地址寄存器242、 248 . 254和尺寸寄存器244、 250 . , . 256進(jìn) 行比較而做出。如果請求的存儲器地址不在收件箱存儲器空間內(nèi), 則可以在步驟420授權(quán)訪問,如對L2高速緩存114的常規(guī)的訪問。
如果請求的存儲器地址在收件箱存儲器空間內(nèi),則可以在步驟 406做出請求是否是來自于擁有收件箱存儲器空間的線程的確定。 這樣的確定可以例如通過將進(jìn)行請求的線程的線程標(biāo)識與線程標(biāo)識 寄存器(例如寄存器246、 252...258)進(jìn)行比較而做出。如果請求 的存儲器地址在收件箱存儲器空間內(nèi)并且如果請求是來自于擁有者 線程,則可以在步驟420授權(quán)訪問請求。
在 一 個實(shí)施例中,如果請求的存儲器地址在收件箱存儲器空間 內(nèi),但訪問請求是來自于擁有者線程,則可以在步驟408確定請求
是否是來自于認(rèn)可的訪問收件箱存儲器空間的線程。如上所述,認(rèn) 可的線程可包括擁有者線程的父輩、特別指定的控制線程和/或操作 系統(tǒng)核心線程。因此,如果請求的存儲器地址在收件箱存儲器空間 內(nèi)并且如果請求是來自于認(rèn)可的線程,則可以在步驟420授權(quán)訪問 請求。如果請求不是來自于認(rèn)可的線程,則可以拒絕訪問請求。在 一些情況下,訪問請求的拒絕可以導(dǎo)致產(chǎn)生的錯誤指示。例如,在 本發(fā)明的一個實(shí)施例中,錯誤指示可包括異常,其響應(yīng)于訪問請求 的拒絕通過訪問控制電路260產(chǎn)生。
在 一 些情況下,對收件箱存儲器空間的排他的訪問也可使用鎖 定來授權(quán)(例如使用寄存器向獲得鎖定的線程分配暫時的、排他的 對收件箱存儲器的訪問)。在此情況下,期望向收件箱寫入的線程可 獲得鎖定(假設(shè)另外的線程沒有保持該鎖定)。當(dāng)線程獲得鎖定時, 線程則可以授權(quán)為訪問收件箱。在線程完成訪問收件箱之后,線程 可能放棄鎖定因而其他的線程可以獲得鎖定并且訪問收件箱或者這 樣擁有者線程可以訪問收件箱。如下所述,在一個實(shí)施例中,訪問
請求包還可以用于獲得對收件箱的 一部分的排他的寫入訪問。
盡管以上關(guān)于限制對收件箱存儲器空間的所有類型的直接訪問 進(jìn)行了描述,在一些情況下,僅有某些類型的訪問,例如寫入收件 箱存儲器空間,是受限制的。在此情況下,可以自由地允許對任何 線程的其他的訪問,例如讀取訪問??蛇x地,在本發(fā)明的一個實(shí)施 例中,經(jīng)由硬件到任何給定的線程,直接訪問收件箱存儲器空間可 能不受限制。
經(jīng)由分包化的消息訪問存儲器收件箱
在本發(fā)明的 一 個實(shí)施例中,可以通過從線程發(fā)送到另 一 個線程 的收件箱的分包化的消息來提供對給定的收件箱的訪問。接收線程 可以例如按接收的順序或可選地根據(jù)由接收的包指示的優(yōu)先級來處 理接收的包。使用分包化的消息來傳輸線程之間的數(shù)據(jù)可以提供筒
據(jù)傳輸進(jìn)行通信(例如,處理器可以配置為從發(fā)送線程向接收線程 自動地路由消息)。此外,使用這樣的消息可對發(fā)送到給定的線程 的數(shù)據(jù)量提供較大的控制。在一些情況下,如下所述,通過限制發(fā) 送到給定的線程的數(shù)據(jù)量可以為線程提供可管理的負(fù)載,而不使線 程的收件箱超負(fù)荷并且不消耗處理器內(nèi)的存儲器帶寬。
一般而言,可以以本領(lǐng)域技術(shù)人員已知的任何方式執(zhí)行對給定 的收件箱的寫入。例如包可以寫入到向給定的收件箱發(fā)送包的存儲 器映射的控制電路??蛇x地,可以提供控制寄存器以允許發(fā)送線程 指示數(shù)據(jù)(例如在給定的存儲器地址處),該數(shù)據(jù)將要從發(fā)送線程傳輸?shù)浇邮站€程的收件箱。如下所述,發(fā)件箱也可以用于將數(shù)據(jù)的 包從發(fā)送線程發(fā)送到接收線程。
圖5A是描述示例性包500的方框圖,包500可用于根據(jù)本發(fā)明 的一個實(shí)施例在例如多核處理器102的處理器中的線程收件箱和/ 或發(fā)件箱之間進(jìn)行通信。如所述,包500可包括包頭502和包體504。 包頭502可指示包的目的地506以及包信息508。包信息可包4舌, 例如,奇偶信息、錯誤修正代碼(ECC)、包路由信息、包大小信息、 包來源信息(例如指示包的發(fā)送線程)或用于傳輸包的其他適當(dāng)?shù)男?息。包頭502還可指示包類型,例如,寫入請求包、寫入數(shù)據(jù)包, 通知包或用于系統(tǒng)100中的任何其他類型的包。包體5 04可包括數(shù) 據(jù)和/或指令??蛇x地,在一些情況下,例如在諸如寫入請求包或通 知包的控制包的情況下,包體504可以/人包中省略。
在本發(fā)明的 一 個實(shí)施例中,期望向接收線程的收件箱發(fā)送信息 的線程可以首先將寫入請求包發(fā)送到接受線程的收件箱。寫入請求 包可以用于確定是否在接受線程的收件箱中有足夠的空間以滿足寫 入請求。通過確定是否在接受線程的收件箱中有足夠的空間以滿足 寫入請求,系統(tǒng)100可以保證接受線程在其收件箱中有足夠的空間 以接收待寫入的數(shù)據(jù)。同樣,因?yàn)榻邮站€程可以隨著數(shù)據(jù)得以處理 而將數(shù)據(jù)從收件箱中移除,所以收件箱中的自由空間的量可指示接 收線程的繁忙程度(例如,繁忙的線程具有滿的收件箱)。因此, 通過確定是否接受線程在其收件箱中有足夠的空間,發(fā)送線程可確 定接收線程是否有足夠的時間以處理其收件箱中的數(shù)據(jù)并且不會因 不能快速處理的數(shù)據(jù)和指令而超負(fù)荷。
如果在接受線程的收件箱中有足夠的空間以滿足寫入請求,則 可以授權(quán)寫入請求(例如通過發(fā)送應(yīng)答包或通過在寄存器中設(shè)置可 以由發(fā)送線程輪詢的通知位)并且后續(xù)的數(shù)據(jù)包可以由發(fā)送線程發(fā) 送以滿足授權(quán)的寫入請求。在已經(jīng)發(fā)送了每個數(shù)據(jù)包之后,可以發(fā) 送后續(xù)的通知包以通知接收線程來自數(shù)據(jù)包的數(shù)據(jù)已經(jīng)放置在收件 箱中以便處理??蛇x地,如下所述,發(fā)送線程可以寫入特殊的寄存器以通知接收線程數(shù)據(jù)已經(jīng)放置在收件箱中以便處理。
此外,在本發(fā)明的一個實(shí)施例中,如在圖5B中所述,上述由寫 入請求包、數(shù)據(jù)包和通知包提供的一個或多個功能可以提供在單一
的包520中,其包括包頭502、寫入請求510、包括數(shù)據(jù)和/或指令 的包體504、和/或可以用于通知接收線程新的^:據(jù)已接收的通知信 息512。如下所述,使用單一的包來提供否則將由兩個或多個包提 供的功能可以降低用于在計算機(jī)系統(tǒng)100中進(jìn)行線程間通信所需的 包的數(shù)量。
圖6A和6B是描述根據(jù)本發(fā)明的一個實(shí)施例的用于使用多包訪 問收件箱的處理600、 620的流程圖。如在圖6A中所述,用于向收 件箱請求訪問處理600可以開始于步驟602,其中向收件箱請求訪 問的請求包從發(fā)送線程接收。在步驟604,可以確定收件箱是否具有 足夠的、未保留的存儲器空間以授權(quán)訪問請求。例如,請求包可以 指示發(fā)送線程請求發(fā)送的數(shù)據(jù)量。
如果在接收線程的收件箱中有不足的空間,則在步驟610向發(fā)
送線程提供請求已經(jīng)被拒絕的指示。在一個實(shí)施例中,指示可以包 括指示請求已經(jīng)被拒絕的應(yīng)答包??蛇x地,在本發(fā)明的一個實(shí)施例 中,指示可包括在狀態(tài)寄存器中清除的(或可選地,設(shè)置的)位, 其指示請求已經(jīng)被拒絕。在一些情況下,如果有的話,指示還可以 提供關(guān)于未保留的空間的數(shù)量,其在收件箱中可用。如果期望的話, 關(guān)于未保留的空間的數(shù)量的信息則可以由請求線程使用,以便發(fā)送 另 一個寫入請求包以寫入可接受的數(shù)據(jù)量。
如果在接受線程的收件箱中有足夠的未保留空間,則用于寫入 請求的存儲器空間可以在步驟606保留。盡管在本發(fā)明的一個實(shí)施 例中描述為分離的步驟604、 606,但確定是否授權(quán)請求和是否為請 求保留空間可以是單一的操作(例如原子操作)。在一些情況下,將 確定和保留執(zhí)行為單 一 的操作可防止其他的干涉寫入請求無意中干 擾未決的寫入請求。
在確定有足夠的未保留的空間以滿足寫入請求之后,在步驟608,提供請求被授權(quán)的指示。在一個實(shí)施例中,可以由指示請求被 授權(quán)的應(yīng)答包來提供指示。可選地,該指示可以提供為狀態(tài)寄存器 中的數(shù)據(jù)。在一些情況下,還可以提供為授權(quán)的請求指示保留的存 儲器空間的位置的標(biāo)識符。例如,標(biāo)識符可以是指示發(fā)送線程在何 處寫入存儲器收件箱的地址??蛇x地,標(biāo)識符可以是發(fā)送線程在包 中提供的值,該值指示在收件箱內(nèi)的何處寫入包的內(nèi)容的位置。
在本發(fā)明的一個實(shí)施例中,在訪問請求4受4又之后,進(jìn)行訪問請 求的線程可以發(fā)送寫入包以向收件箱寫入數(shù)據(jù)。在一些情況下,可
以為訪問已經(jīng)授權(quán)的每個請求包發(fā)送單一的寫入包。可選地,單一 的請求包可以用于獲得對多寫入包的訪問(例如在收件箱中分配的 空間可以由在多后續(xù)寫入包中的數(shù)據(jù)和/或指令來填寫)。
圖6 B是描述用于經(jīng)由寫入包將寫入數(shù)據(jù)到收件箱的處理6 2 0的 流程圖。處理620可以開始于步驟622,其中從發(fā)送線程接收包括 將要向收件箱存儲器空間寫入的數(shù)據(jù)和/或指令的寫入數(shù)據(jù)包。在步 驟624,可以確定訪問請求(例如如以上關(guān)于圖6A所描述)是否已 經(jīng)先前地授權(quán)給發(fā)送線程。如果訪問請求未授權(quán)(例如如果先前的 訪問請求被拒絕,或如果可接受的訪問請求未做出),則可以在步驟 640向發(fā)送線程提供寫入請求被拒絕的指示。
如果訪問請求先前已經(jīng)授權(quán),則在步驟626來自寫入數(shù)據(jù)包的 數(shù)據(jù)和/或指令可以寫入到在先前的訪問請求期間保留的收件箱存 儲器空間。當(dāng)多寫入包用于實(shí)現(xiàn)訪問請求時,計數(shù)器可以用于跟蹤 有多少訪問請求已經(jīng)由寫入包實(shí)現(xiàn)(例如如果四千字節(jié)的空間由訪 問請求所保留,則計數(shù)器可以設(shè)置為四)。在數(shù)據(jù)和/或指令已經(jīng)由 寫入數(shù)據(jù)包接收之后,可以遞減計數(shù)器以指示已經(jīng)實(shí)現(xiàn)了訪問請求 的一部分(例如在上述示例中,如果在寫入包中已經(jīng)接收了一千字 節(jié)的數(shù)據(jù),則計數(shù)器可以遞減到三)。
此外,在本發(fā)明的一個實(shí)施例中,每個寫入數(shù)據(jù)包可以指示應(yīng) 該在收件箱中的何處放置寫入數(shù)據(jù)(例如作為從保留的存儲器空間 的位移,作為收件箱內(nèi)的絕對的地址,或通過任何其他的方法)???br>
選地,寫入數(shù)據(jù)可自動地放置在收件箱中。例如,首先接收的寫入 數(shù)據(jù)可以自動地(例如通過接收線程或通過收件箱訪問電路)放置 在分配給訪問請求的收件箱存儲器空間的開始處(例如相應(yīng)的訪問 請求可以由寫入數(shù)據(jù)包指示)。每個后續(xù)的寫入數(shù)據(jù)包可以連續(xù)地放 置在存儲器收件箱中的可用位置。作為另一個示例,當(dāng)授權(quán)了訪問 請求時,可以在存儲器收件箱中分配多個插槽。每個寫入包則可以 包含指示寫入包應(yīng)該放置在哪個插槽的序列號。
在步驟628 ,寫入數(shù)據(jù)已經(jīng)放置在存儲器收件箱中之后,可以向
發(fā)送線程提供來自寫入包的數(shù)據(jù)已經(jīng)成功地寫入到接收收件箱的指
示。在步驟630,可以向接收線程提供新的寫入數(shù)據(jù)已經(jīng)放置在存 儲器收件箱中的指示。指示可以例如包括在狀態(tài)寄存器中設(shè)置位, 以指示已經(jīng)接收了新的寫入數(shù)據(jù)。該位可以由適當(dāng)?shù)慕邮站€程輪詢, 因而允許接收線程確定何時新的寫入數(shù)據(jù)已經(jīng)被接收并且已經(jīng)-故處 理??蛇x地,指示可以包括發(fā)布給接收線程的中斷或異常信號。當(dāng) 接收到中斷或異常信號時,接收線程可以暫停其正在執(zhí)行的任何處 理并且服務(wù)于該中斷(例如,接收線程可以呼叫可以將寫入數(shù)據(jù)添 加到待處理的數(shù)據(jù)的隊(duì)列的中斷操作器或異常操作器。
盡管以上關(guān)于請求包和寫入包進(jìn)行了描述,但本發(fā)明的實(shí)施例 還可以不需要請求包而使用(例如每個寫入包可以包括允許的或拒 絕的隱含的請求以將數(shù)據(jù)寫入到收件箱)。此外,本發(fā)明的實(shí)施例 還可以用于讀取請求。讀取請求可以包括例如乂人發(fā)送線程發(fā)送到4妄 收線程的讀取請求包。如果讀取請求被接受,則接收收件箱可以向 發(fā)送線程的收件箱發(fā)送包含讀取數(shù)據(jù)的讀取應(yīng)答包。
如上所述,在一個實(shí)施例中,發(fā)送線程可以使用與發(fā)件箱相關(guān) 聯(lián)的電路和存儲器,以將數(shù)據(jù)發(fā)送到接收線程的收件箱。當(dāng)使用發(fā) 件箱將數(shù)據(jù)發(fā)送到接收線程的收件箱時,發(fā)送線程可以將待發(fā)送數(shù)
務(wù)。通過使用發(fā)件箱來執(zhí)行與發(fā)送該數(shù)據(jù)相關(guān)的任務(wù),為發(fā)送線程 降低了將數(shù)據(jù)發(fā)送到接收線程所需要的處理開銷。此外,在一個實(shí)
施例中,單一的包可以用于在發(fā)件箱和收件箱之間進(jìn)行通信。例如, 發(fā)件箱電路可以自動地將單一的包傳輸?shù)浇邮帐占?,該接收收?br>
箱可位于相同的處理核IIO處,位于在相同的多核處理器102中的 另一個處理核100處,或位于另一個多核處理器102處。通過使用 單 一 的包在發(fā)件箱和收件箱之間進(jìn)行通信,可以降低發(fā)件箱和收件 箱之間的網(wǎng)絡(luò)通信量。
圖6 C是描述用于根據(jù)本發(fā)明的 一 個實(shí)施例的在發(fā)送線程和接收 線程之間使用發(fā)件箱和收件箱進(jìn)行通信的示例性處理650的方框 圖。處理可開始于步驟652,其中發(fā)送線程向擁有者線程擁有的或與 擁有者線程相關(guān)聯(lián)的發(fā)件箱寫入包括寫入請求、數(shù)據(jù)、和通知信息 的包。向發(fā)件箱寫入的包還可以包括包的包頭信息??蛇x地,例如包 頭、寫入請求和/或通知信息的包的一部分或多個部分可以自動地由
發(fā)件箱在發(fā)送包之前生成。
在步驟654,發(fā)送線程可執(zhí)行到發(fā)件箱的寫入以指示在發(fā)件箱中 的包已經(jīng)發(fā)送。例如,發(fā)送線程可直接寫入到發(fā)件箱寄存器、存儲 器映射的發(fā)件箱寄存器、或由發(fā)件箱輪詢的位置。在檢測由發(fā)送線 程提供的指示時,發(fā)件箱可以在步驟656將包括寫入請求、數(shù)據(jù)、 和通知信息的包發(fā)送到接收收件箱。如下所示,發(fā)件箱和收件箱之 間的硬件自動地從發(fā)件箱向收件箱移動包。發(fā)件箱則可以在步驟 658等待確認(rèn)包。
確認(rèn)包可以向發(fā)件箱指示包是否已經(jīng)成功地傳輸和/或是否已 經(jīng)接受由包提供的寫入請求。如下所述,在一些情況下,發(fā)件箱可 保持包的拷貝,以便在先前發(fā)送的包未被接收收件箱接收的情況下 重新發(fā)送該包。此外,在一些情況下,可以將超時添加到發(fā)件箱, 使得發(fā)件箱不會過長地等待確認(rèn)包。如下所述,當(dāng)在超時結(jié)束之前 未接收到確認(rèn)包時,發(fā)件箱可假定該包未接收并且視圖重新發(fā)送該 包。
在步驟656發(fā)件箱發(fā)送包之后,包可以自動地路由到接收收件 箱,其在步驟670接收包。當(dāng)接收了包時,收件箱可在步驟6H確
定在收件箱中是否有足夠的空間以授權(quán)由接收的包表示的寫入請 求。在一個實(shí)施例中,在收件箱中是否有足夠的空間以授權(quán)請求的 確定可以由收件箱自動地執(zhí)行。例如,通過將在接收的包中的請求 的寫入大小與指示收件箱中的自由空間的量的分配寄存器進(jìn)行比 較,收件箱電路可自動地進(jìn)行確定??蛇x地,用于接收包的收件箱 的擁有者線程可幫助確定是否接受已經(jīng)接收的包。例如,當(dāng)已經(jīng)接
收了包時,可以調(diào)用操作器(例如通過異?;蛑袛?以確定收件箱是 否有足夠的空間以便容納接收的寫入請求。
如果在收件箱中沒有足夠的空間以授權(quán)請求,則在步驟674收
件箱可向發(fā)件箱提供(例如自動地使用收件箱電路或通過來自擁有 者線程的命令)確認(rèn)包,其指示接收的數(shù)據(jù)未寫入到收件箱。
然而,如果在收件箱中有足夠的空間以授權(quán)請求,則在步驟6 7 6 , 數(shù)據(jù)可以從接收的包寫入到收件箱中并且可以向接收的擁有者線程 提供指示以通知擁有者線程新的數(shù)據(jù)已經(jīng)寫入到收件箱。該指示可 以例如作為組合的包520的一部分來提供并且可以用于寫入到門鈴 寄存器或生成中斷??蛇x地,如上所述,通過分離的;t幾制,例如通 過假定隨后由接收的收件箱檢測的中斷信號或通過寫入到門鈴寄存 器,發(fā)件箱可發(fā)送通知信息。此外,在一些情況下,通知信息可以 自動地由收件箱生成,而不從發(fā)件箱接收數(shù)據(jù)或其他信號。在向接 收擁有者線程提供了指示之后,在步驟678,收件箱可向發(fā)送的發(fā) 件箱提供(自動地使用收件箱電路或通過來自擁有者線程的命令) 接收的包中的新數(shù)據(jù)已經(jīng)成功地寫入到收件箱的確認(rèn)包。
當(dāng)發(fā)件箱從收件箱接收了確認(rèn)包(或任何其他類型的確認(rèn)信 號),可以在步驟660做出請求是否已經(jīng)授權(quán)的確認(rèn)。當(dāng)授權(quán)了向 收件箱寫入包的請求時,可以在步驟662將包的發(fā)送從發(fā)件箱移除。 然而,如果請求未授權(quán),則發(fā)件箱可嘗試重新發(fā)送包(例如先前發(fā) 送的同樣的包,其拷貝保持在發(fā)件箱中),返回步驟656。在一個實(shí) 施例中,重新發(fā)送可以自動地由發(fā)件箱電路執(zhí)行??蛇x地,可以通 知發(fā)送線程(例如由發(fā)件箱)發(fā)送包是否未成功地寫入到接收的收
件箱,因此允許發(fā)送線程嘗試重新發(fā)送包。
在一些情況下,發(fā)件箱或發(fā)送線程可僅僅嘗試按預(yù)定的次數(shù)重 新發(fā)送包。當(dāng)發(fā)件箱自動地嘗試重新發(fā)送包時并且當(dāng)發(fā)件箱在預(yù)定 的嘗試次數(shù)之后未成功地接受接收的包時,例如通過假定可由發(fā)送 線程檢測的錯誤信號或通過引起異常,發(fā)件箱將向發(fā)送線程提供錯 誤指示。同樣,盡管以上關(guān)于從接收包的收件箱發(fā)送到發(fā)送包的發(fā) 件箱的確認(rèn)包進(jìn)行了描述,但發(fā)明的實(shí)施例還可利用于收件箱以另 外的方式提供確認(rèn),例如,通過從收件箱提供由發(fā)件箱接收和解碼 的直接信號。
在一些情況下,確認(rèn)包可向發(fā)件箱提供附加信息。例如,在本 發(fā)明的一個實(shí)施例中,當(dāng)確認(rèn)包指示請求未被4更權(quán)時,確認(rèn)包還可 指示發(fā)件箱何時應(yīng)該嘗試重新發(fā)送請求。例如,收件箱可為發(fā)送另 一個包提供再次嘗試的時間,例如提供給每個發(fā)件箱的常數(shù)時間、 基于接收線程的工作量(例如由收件箱是否為滿所指示的)的估計時
間,或隨才幾的再次嘗試間隔(例如活鎖切除才幾(live-lock buster)) 其用于避免循環(huán)的定時活鎖,在其中線程重復(fù)地嘗試訪問收件箱而 不成功。在一個實(shí)施例中,響應(yīng)于接收指示請求未授權(quán)的確認(rèn)包, 發(fā)件箱還可生成再次嘗試時間,例如作為常數(shù)時間、估計時間,或 隨^L的再次嘗試間隔。
在一些情況下,否定的確認(rèn)還可包含保留或優(yōu)先級指示,其允 許發(fā)件箱在后續(xù)的時間重新發(fā)送請求。后續(xù)的請求可包括先前接收 的優(yōu)先級指示(例如作為時間戳或作為請求的壽命)其可由收件箱 用于確定是否授權(quán)請求(例如可首先授權(quán)較高優(yōu)先級的請求或較早 的請求)。
用于管理收件箱通信的示例性電路
在本發(fā)明的 一個實(shí)施例中,在收件箱之間通信的處理可由軟件 控制。例如,當(dāng)寫入請求由請求線程做出時,是否授權(quán)寫入請求的 確定可由接收寫入請求的線程做出(例如如上關(guān)于圖6A-B所述,可 由接收線程執(zhí)行一個或多個指令以確定是否授權(quán)寫入請求)。此外,在本發(fā)明的 一 個實(shí)施例中,軟件可用于在線程之間就收件箱數(shù)據(jù)包 進(jìn)行通信。例如,發(fā)送線程可將請求發(fā)送到控制線程(例如核心線 程)以在發(fā)送線程和接收線程之間路由包。核心線程則可控制傳輸 已經(jīng)發(fā)送的包所需要的通信。
可選地,在本發(fā)明的一個實(shí)施例中,可以使用硬件(例如不執(zhí) 行軟件指令)來執(zhí)行在線程和收件箱之間的通信處理。這樣的硬件 可提供在線程和收件箱之間自動路由發(fā)送的包的網(wǎng)絡(luò)電路。用于網(wǎng)
絡(luò)的電^各還可用于實(shí)現(xiàn)訪問控制,如上關(guān)于圖6A、 6B和6C所述。 圖7是描述根據(jù)本發(fā)明的一個實(shí)施例的用于在存儲器收件箱之 間路由包的示例性網(wǎng)絡(luò)路由電路的方框圖。如所述,路由電路可以 用于在核110中將數(shù)據(jù)路由到線程和從線程路由數(shù)據(jù)。在一些情況 下,路由可以在單一的核110中的、在分離的核110之間的或在分 離的處理器102、 104之間的線程之間執(zhí)行。
在本發(fā)明的 一 個實(shí)施例中,路由電路可以用于從稱為工作量管 理者線程702的控制線程路由數(shù)據(jù)和/或指令。工作量管理者線程 702可以用于分配處理工作量到處理線程704。例如,當(dāng)系統(tǒng)IOO 用于圖形處理時,處理工作量可包括數(shù)據(jù)和/或指令,其可以用于呈 現(xiàn)三維圖像的一部分。如果工作量管理者線程702確定給定的處理 線程704工作超負(fù)荷(例如,如上所述,因?yàn)樘幚砭€程704具有滿 的收件箱),則工作量管理者線程702可尋找另外的處理線程702 以分配給定的處理工作量,或工作量管理者線程702在將附加處理 工作量分配到超負(fù)荷的處理線程704之前可等待。
在本發(fā)明的一個實(shí)施例中,呈現(xiàn)工作量可包括數(shù)據(jù)和/或指令, 其用于經(jīng)由射線跟蹤呈現(xiàn)三維場景。射線跟蹤技術(shù)跟蹤到待呈現(xiàn)在 計算機(jī)屏幕上的三維場景中的假想射線的傳播,射線的行為類似于
光線。射線源于坐在計算機(jī)屏幕后的觀察者的眼睛,并且穿過構(gòu)成 計算機(jī)屏幕的像素而通過,朝向三維場景。每個跟蹤的射線行進(jìn)到 場景之中并且可以與場景以內(nèi)的物體相交。如果射線與場景以內(nèi)的 物體相交,則使用該物體的屬性以及多個其他起作用的因素來計算 射線暴露處的顏色和光的量、或者其中的缺乏。然后,使用這些計 算來確定跟蹤的射線所通過的像素的最終顏色。
對某些實(shí)施例,射線跟蹤操作可在執(zhí)行射線跟蹤操作時,利用 在此描述的收件箱和發(fā)件箱機(jī)制在處理元件之間傳輸信息。如在共
同擁有的待審美國專利申請No. 11/460, 797所述,在第一處理元件 (例如工作量管理者)上的第一線程可以通過從內(nèi)部節(jié)點(diǎn)獲取分支來 遍歷具有定義三維場景的邊界體積的節(jié)點(diǎn)的空間索引,直到達(dá)到葉 節(jié)點(diǎn),其中基于射線是否與由節(jié)點(diǎn)定義的邊界體積相交來獲取分支。 為在遍歷空間索引時加快后續(xù)的遍歷,可以記錄指示定義射線相交 的邊界體積的一個或多個節(jié)點(diǎn)和所獲取的分支的遍歷歷史。第一線 程的發(fā)件箱控制電路可用于向第二線程的收件箱發(fā)送定義射線的信 息以執(zhí)行射線圖元相交試驗(yàn)。第二線程的發(fā)件箱控制電路可用于向 第 一 線程的收件箱發(fā)送射線原始試驗(yàn)的結(jié)果。如果射線圖元相交試 驗(yàn)的結(jié)果指示射線沒有擊中包含在由葉節(jié)點(diǎn)定義的邊界體積中的圖 元,則可以使用記錄的遍歷歷史重新遍歷空間索引。
當(dāng)呈現(xiàn)由工作量管理者線程702分配的工作量是為射線跟蹤呈 現(xiàn)工作量時,分配給處理線程704的每個工作量可包括處理線程704 可通過給定的場景^J宗的一個或多個射線。處理線程704則可向工 作量管理者線程702返回關(guān)于一個或多個射線的數(shù)據(jù),工作量管理 者線程702可為來自多個處理線程704的多個射線匯編數(shù)據(jù)并且使 用匯編的數(shù)據(jù)確定對應(yīng)于射線的 一個或多個像素的顏色并且顯示待 呈現(xiàn)的場景。 ,
為向任何處理線程704分配處理工作量,每個工作量管理者702 能夠向?qū)?yīng)于分離的線程704的任何收件箱202、 204、 206、 208 發(fā)送包。在本發(fā)明的一個實(shí)施例中,全交叉條(full crossbar) 7 06 (即,工作量管理者可訪問全部的收件箱202、 204、 206、 208 )可 以用于為任何相應(yīng)的處理線程704,從任何工作量管理者線程702 向以及從任何收件箱202、 204、 206、 208 3各由包。此外,如關(guān)于 圖7B所述,當(dāng)發(fā)件箱220、 222、 224、 226等由發(fā)送線程使用以向 接收線程的收件箱202、 204、 206、 208等發(fā)送信息時,全交叉條 706還可用于執(zhí)行傳輸。
如上所述,在本發(fā)明的一個實(shí)施例中,電路可以用于自動地確 定是否授權(quán)到收件箱的訪問,而沒有使用軟件指令來進(jìn)行確定。圖 7 B是描述根據(jù)本發(fā)明的 一 個實(shí)施例的收件箱電路的方框圖。如所 述,收件箱202可包括分配寄存器712,其指示收件箱存儲器720 有多少已經(jīng)被分配以訪問請求。每次訪問請求得以授4又,都可以遞 增分配寄存器712以指示有更多的收件箱存儲器720被保留。
在處理線程704已經(jīng)從收件箱202移除了待處理的數(shù)據(jù)和/或指 令時,可以遞減分配寄存器712以指示附加的收件箱存儲器720可 用。例如,在擁有者線程已經(jīng)為處理從收件箱202移除了信息之后, 可以由收件箱202的擁有者線程遞減分配寄存器712。如上所述, 當(dāng)擁有者線程在收件箱202中、在分配寄存器712中、或在收件箱 202的任何其他部分中訪問信息時,這樣的訪問可以是針對局部的、 不可緩沖存儲存儲器地址??蛇x地,在包由擁有者線程讀取之后, 分配寄存器712可以由收件箱控制電路724自動地遞減。如果收件 箱202是滿的并且接收了寫入請求,則分配寄存器可返回指示收件 箱202為滿的值(例如預(yù)先的常數(shù))。
例如以上關(guān)于圖6A所述,當(dāng)例如通過訪問請求包接收了訪問請 求時,收件箱控制電路724可以配置為自動地確定是否授權(quán)訪問請 求。分配應(yīng)答(例如如上所述的應(yīng)答包或信號)可以提供給發(fā)送線 程以指示存儲器空間已經(jīng)分配。在一個實(shí)施例中,收件箱控制電路 724還可配置為確定是否接受進(jìn)入的寫入數(shù)據(jù)包并且在何處放置已 接受的進(jìn)入的寫入數(shù)據(jù)包。收件箱控制電路724可為收件箱202更 改收件箱控制寄存器726以指示,例如,在收件箱存儲器720內(nèi)的 寫入數(shù)據(jù)的大小和/或位置。如上所述,收件箱控制電路724還可提 供收件箱中斷,以向接受線程指示寫入數(shù)據(jù)已經(jīng)放置在收件箱存儲 器720中。
如在圖7C中所述,在本發(fā)明的一個實(shí)施例中,門鈴寄存器730
可以用于向接收線程指示訪問請求已接收。將訪問請求提供給收件
箱控制電路724之后,發(fā)送線程可將值寫入到門鈴寄存器730,其 指示訪問請求已發(fā)送??蛇x地,當(dāng)包含通知信息512的包520已接 收時,可以解析該包并且可以將通知信息放置在門鈴寄存器中。在 門鈴寄存器730中接收信息時,收件箱控制電路724可自動地發(fā)布 門鈴中斷到接收線程。如上關(guān)于圖6A-C所述,例如,在接收門鈴中 斷時, -接收線程則可處理訪問請求的全部或一部分。在一個實(shí)施例 中,門鈴寄存器730可以經(jīng)由本地讀取和/或?qū)懭胗蓳碛姓呔€程訪 問。
可選地,門鈴寄存器730還可用于指示數(shù)據(jù)已寫入到收件箱存 儲器720。例如,在發(fā)送線程已將寫入數(shù)據(jù)寫入到收件箱存儲器720 之后,發(fā)送線程可寫入到門鈴寄存器730,使得將門鈴中斷發(fā)布到 接收線程。在接收門鈴中斷時,接收線程可例如檢查收件箱控制寄 存器728以確定寫入數(shù)據(jù)已寫入到何處并且處理數(shù)據(jù)。
在一些情況下,寫入到門鈴寄存器730中的信息可提供相應(yīng)于 放置在收件箱存儲器720中的數(shù)據(jù)的優(yōu)先級水平。優(yōu)先級可以用于, 例如,確定是否和/或何時發(fā)布中斷到接收線程。例如,在一個實(shí)施 例中,如果接收線程的優(yōu)先級大于在門鈴寄存器730中接收的優(yōu)先 級,則接收線程可不被中斷,或中斷可不發(fā)布,例如,直到具有小 于或等于已接收的線程的優(yōu)先級的接收線程開始執(zhí)行。
圖8是描述根據(jù)本發(fā)明的一個實(shí)施例的用于訪問發(fā)件箱的示例 性電路的方框圖。如所述,發(fā)件箱220可包括分配寄存器812,其 指示有多少發(fā)件箱存儲器820已分配到由發(fā)件箱"0的擁有者線程 發(fā)送的包。每次擁有者線程發(fā)送包時,擁有者線程可檢查分配寄存 器812 (例如通過本地讀取)以確定發(fā)件箱存儲器820是否包含在 其中可放置發(fā)出的包的足夠的自由空間。如果發(fā)件箱220包含足夠 的空間,則發(fā)送擁有者線程可將待發(fā)送的包放置到發(fā)件箱存儲器 820中(例如通過本地存儲)并且可以響應(yīng)于數(shù)據(jù)被寫入,或者通 過發(fā)送線程或者自動地通過發(fā)件箱控制電路824,遞增分配寄存器812。
如上例如關(guān)于圖6A-C所述,在一個實(shí)施例中,發(fā)件箱控制電路 824可以用于發(fā)送包。例如,發(fā)件箱控制電路824可檢測包何時寫 入到發(fā)件箱存儲器820并且響應(yīng)于檢測包,自動地發(fā)送該包。可選 地,在將包寫入到發(fā)件箱存儲器820之后,發(fā)送線程可使用發(fā)件箱 控制寄存器828來發(fā)布命令到發(fā)件箱控制電路824以發(fā)送包。在一 些情況下,發(fā)件箱控制電路可以經(jīng)由發(fā)件箱控制寄存器828向發(fā)送 線程指示正在發(fā)送的包的狀態(tài)(例如成功發(fā)送、未決發(fā)送、或不成 功發(fā)送)。如上所述,可以通過本地讀取和/或?qū)懭胂虬l(fā)送線程提供 對發(fā)件箱控制寄存器824的訪問。發(fā)件箱控制電路824還可配置為 在成功發(fā)送包之后遞減分配寄存器812。此外,發(fā)件箱控制電路824 可以配置為生成中斷或異常以向發(fā)送線程指示在發(fā)送包的同時是否 發(fā)生錯誤和/或是否包已成功發(fā)送。
一般而言,可以以本領(lǐng)域技術(shù)人員已知的任何方式管理經(jīng)由發(fā) 件箱220發(fā)送的包。例如發(fā)件箱220可以作為先入先出(FIFO)隊(duì) 列,以首先發(fā)送發(fā)件箱中的最早的包??蛇x地,發(fā)件箱220可作為 堆棧(后入先出),或者發(fā)送線程可向每個包分配優(yōu)先級或包編號, 這可以由發(fā)件箱控制電路824在確定首先發(fā)送哪個包中使用。還可 以由發(fā)送線程通過發(fā)件箱控制寄存器828或通過包本身,向發(fā)件箱 控制電路824提供其他信息。這樣的信息可包括為發(fā)送給定的包所 應(yīng)該進(jìn)行的嘗試的次數(shù)、在發(fā)送每個包時應(yīng)該使用的超時(例如在 等待應(yīng)答中)以及其他這樣的信息。可選地,發(fā)件箱控制電路824 可以配置有用于發(fā)送包的預(yù)定的設(shè)置。
盡管先前的描述致力于本發(fā)明的實(shí)施例,但可以想象出本發(fā)明 的其他和進(jìn) 一 步的實(shí)施例而不背離本發(fā)明的基本范圍,并且本發(fā)明 的范圍由所附權(quán)利要求書限定。
權(quán)利要求
1.一種方法,包括為收件箱保留處理器中的高速緩存的第一部分,其中該收件箱與由該處理器執(zhí)行的第一線程相關(guān)聯(lián);從第二線程接收包,其中該包包括訪問請求;以及使用收件箱控制電路用于該收件箱以處理接收的包并且確定是否授權(quán)包括在該包中的訪問請求。
2. 根據(jù)權(quán)利要求1所述的方法,其中將通過向該收件箱中的存 儲器地址進(jìn)行加載或存儲的直接訪問僅提供給第 一線程。
3. 根據(jù)權(quán)利要求1所述的方法,其中在該收件箱中的存儲器地 址處存儲的數(shù)據(jù)是不可緩沖存儲的。
4. 根據(jù)權(quán)利要求1所述的方法,其中不執(zhí)行指令以便確定是否 授一又該訪問請求。
5. 根據(jù)權(quán)利要求1所述的方法,其中使用收件箱控制電路用于 該收件箱以確定是否授權(quán)包括在該包中的該訪問請求,包括使用分配寄存器用于該收件箱以確定該收件箱是否包括未保留 的和足以授權(quán)該訪問請求的存儲器空間;以及如果該高速緩存的第 一部分包括未保留的足以授權(quán)該訪問請求 的存儲器空間,則保留在該收件箱中的該存儲器空間的 一部分以滿 足訪問請求,其中保留在該收件箱中的該存儲器空間的一部分以滿 足該訪問請求包括增加存儲在該分配寄存器中的值以指示該保留的 存儲器空間的部分。
6. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括當(dāng)執(zhí)行對應(yīng)于該訪問請求的訪問時,向該第 一線程提供通知, 其中提供該通知包括至少以下之一響應(yīng)于在該收件箱中放置用于該訪問的數(shù)據(jù),向該第 一 線程發(fā)布中斷;響應(yīng)于為該收件箱向門鈴寄存器寫入的值,向該第一線程發(fā)布中斷;以及在狀態(tài)寄存器中設(shè)置一個或多個位,其由該第一線程輪詢。
7. 根據(jù)權(quán)利要求1所述的方法,其中該包包括用于該訪問請求 的數(shù)據(jù)和通知信息,其中如果該訪問請求被授權(quán),則將該數(shù)據(jù)放置 在該收件箱中,以及如果該訪問請求被4受權(quán),則該通知信息用于通 知該第一線程。
8. 根據(jù)權(quán)利要求1所述的方法,其中響應(yīng)于接收該包,將指示 該訪問請求是否被授權(quán)的確認(rèn)包發(fā)送到該第二線程的收件箱。
9. 一種處理器,包括 處理器高速緩存;以及 收件箱控制電路,配置為為收件箱保留該處理器高速緩存的第 一 部分,其中該收件箱 與由該處理器執(zhí)行的第一線程相關(guān)聯(lián);從第二線程接收包,其中該包包括訪問請求;以及處理該接收的包并且確定是否授權(quán)包括在該包中的訪問請求。
10. 根據(jù)權(quán)利要求9所述的處理器,其中該收件箱控制電路進(jìn) 一步配置為將通過向該收件箱中的存儲器地址進(jìn)行加載或存儲的直 接訪問僅提供給該第 一 線程。
11. 根據(jù)權(quán)利要求9所述的處理器,其中在該收件箱中的存儲 器地址處存儲的數(shù)據(jù)是不可緩沖存儲的。
12. 根據(jù)權(quán)利要求9所述的處理器,其中不執(zhí)行指令以便確定 是否:t更權(quán)該訪問請求。
13. 根據(jù)權(quán)利要求9所述的處理器,其中當(dāng)確定是否授權(quán)包括 在該包中的訪問請求時,將該收件箱控制電路配置為使用分配寄存器用于該收件箱以確定該收件箱是否包括未保留 的和足夠的存儲器空間以授權(quán)該訪問請求;以及如果該高速緩存的第 一部分包括未保留的足以授權(quán)該訪問請求 的存儲器空間,則保留在該收件箱中的該存儲器空間的 一 部分以滿足該訪問請求,其中保留在該收件箱中的該存儲器空間的 一 部分以 滿足該訪問請求包括增加存儲在該分配寄存器中的值以指示保留的 該存儲器空間的部分。
14. 根據(jù)權(quán)利要求9所述的處理器,其中該收件箱控制電路進(jìn)一步配置為當(dāng)執(zhí)行對應(yīng)于該訪問請求的訪問時,向該第 一線程提供通知, 其中提供該通知包括至少以下之一響應(yīng)于在該收件箱中放置用于該訪問的數(shù)據(jù),向該第 一線程發(fā)布中斷;響應(yīng)于為該收件箱向門鈴寄存器寫入的值,向該第一線程發(fā)布 中斷;以及在狀態(tài)寄存器中設(shè)置一個或多個位,其由該第一線程輪詢。
15. 根據(jù)權(quán)利要求9所述的處理器,其中該包包括用于該訪問 請求的數(shù)據(jù)和通知信息,并且其中該收件箱控制電路進(jìn) 一 步配置為如果該訪問請求被授權(quán),則將該數(shù)據(jù)放置在該收件箱中;以及 如果該訪問請求:帔授權(quán),則向該第 一線程提供該通知信息。
16. 根據(jù)權(quán)利要求9所述的處理器,其中響應(yīng)于接收該包,將 該收件箱控制電路配置為將指示是否該訪問請求被授權(quán)的確認(rèn)包發(fā)送到該第二線程的收 件箱。
17. —種方法,包括分配處理器中的高速緩存的第一部分作為發(fā)件箱,用于由該處理器執(zhí)行的第一線程;將來自于該第一線程的數(shù)據(jù)放置在該發(fā)件箱中;以及使用發(fā)件箱控制電路用于該發(fā)件箱將由該第 一 線程放置在該收件箱中的數(shù)據(jù)作為包發(fā)送到第二線程的收件箱。
18. 根據(jù)權(quán)利要求17所述的方法,其中該包進(jìn)一步包括用于將 該數(shù)據(jù)寫入該收件箱的訪問請求和用于該第二線程的通知信息。
19. 根據(jù)權(quán)利要求17所述的方法,進(jìn)一步包括響應(yīng)于由該發(fā)件箱控制電路發(fā)送的、指示在該包中的數(shù)據(jù)已寫 入到該第二線程的收件箱的該包,在該發(fā)件箱電接收確認(rèn)包之后, 將該數(shù)據(jù)從該發(fā)件箱移除。
20. 根據(jù)權(quán)利要求17所述的方法,進(jìn)一步包括響應(yīng)于由該發(fā)件箱控制電路發(fā)送的、指示在該包中的數(shù)據(jù)已寫 入到該第二線程的收件箱的該包,在該發(fā)件箱電路接收確認(rèn)包之前,將該數(shù)據(jù)保持在該發(fā)件箱中;以及響應(yīng)于對由該發(fā)件箱控制電路發(fā)送的、指示在該包中的數(shù)據(jù)未 寫入到該第二線程的收件箱的該包進(jìn)行的響應(yīng)接收確認(rèn)包,重新發(fā) 送該包。
21. 根據(jù)權(quán)利要求20所述的方法,其中該發(fā)件箱控制電路使用 隨機(jī)生成的等待間隔以在重新發(fā)送該包之前進(jìn)行等待。
22. 根據(jù)權(quán)利要求17所述的方法,進(jìn)一步包括響應(yīng)于由該發(fā)件箱控制電路發(fā)送的、指示在該包中的訪問請求 優(yōu)先級的該包,接收確:〖人包。
23. 根據(jù)權(quán)利要求17所述的方法,其中在該發(fā)件箱中的存儲器 地址處存儲的數(shù)據(jù)是不可緩沖存儲的。
24. 根據(jù)權(quán)利要求17所述的方法,其中將來自于該第一線程的 數(shù)據(jù)放置在該發(fā)件箱中包括由該第 一線程執(zhí)行本地存儲。
25. 根據(jù)權(quán)利要求17所述的方法,其中該第二線程由該處理器 執(zhí)行。
26. 根據(jù)權(quán)利要求17所述的方法,進(jìn)一步包括在射線跟蹤操作 中利用該發(fā)件箱和收件箱,包括利用該第一線程,可以通過從內(nèi)部節(jié)點(diǎn)獲取分支來遍歷具有定 義三維場景的邊界體積的節(jié)點(diǎn)的空間索引,直到達(dá)到葉節(jié)點(diǎn),其中 基于射線是否與由該節(jié)點(diǎn)定義的邊界體積相交來獲取分支。當(dāng)遍歷該空間索引時,記錄指示定義該射線相交的邊界體積的 一個或多個節(jié)點(diǎn)和所獲取的分支的遍歷歷史;以及使用發(fā)件箱控制電路用于該第 一線程向該第二線程的收件箱發(fā) 送定義該射線的信息以執(zhí)行射線圖元相交試驗(yàn);以及使用發(fā)件箱控制電路用于該第二線程向該第 一 線程的收件箱發(fā)送該射線圖元試驗(yàn)的結(jié)果。
27.根據(jù)權(quán)利要求26所述的方法,其中該射線跟蹤操作進(jìn)一步包括如果該射線圖元相交試驗(yàn)的結(jié)果指示該射線沒有擊中包含在由該葉節(jié)點(diǎn)定義的邊界體積中的圖元,則可以^f吏用該記錄的遍歷歷史重新遍歷該空間索引。
全文摘要
本發(fā)明提供了用于在處理器中的線程之間通信的方法和裝置。該方法包括為收件箱保留處理器中的高速緩存的第一部分。收件箱與由處理器執(zhí)行的第一線程相關(guān)聯(lián)。該方法還包括從第二線程接收包,其中該包包括訪問請求。該方法進(jìn)一步包括使用收件箱控制電路用于收件箱以處理接收的包并且確定是否授權(quán)包括在包中的訪問請求。
文檔編號G06F9/54GK101196835SQ20071019275
公開日2008年6月11日 申請日期2007年11月16日 優(yōu)先權(quán)日2006年12月7日
發(fā)明者E·O·梅德里奇, J·K·克里格爾, R·A·希勒, R·D·胡佛 申請人:國際商業(yè)機(jī)器公司