臟塊寫入到系統(tǒng)存儲器14,及在完成 寫入后可將所述臟塊標(biāo)記為有效。以此方式,在一些情況下,與執(zhí)行高速緩存填充的SMMU 108相關(guān)聯(lián)的數(shù)據(jù)、帶寬及/或時延與寫出整個高速緩存行相比可減小。
[0109] 在一些情況下,SMMU 108還可執(zhí)行行逐出,其中SMMU 108替換例如由于高速緩存 壓力而正被替換的高速緩存行。作為高速緩存逐出過程的部分,SMMU 108將待逐出的行寫 出到系統(tǒng)存儲器14。在行逐出中,SMMU 108可首先將標(biāo)記為臟的任何字節(jié)或字寫出到系統(tǒng) 存儲器14。SMMU 108可接著使待逐出的整個高速緩存行無效。通過使SMMU 108寫出僅標(biāo) 記為臟的塊,本發(fā)明的技術(shù)可減少與執(zhí)行高速緩存逐出相關(guān)聯(lián)的數(shù)據(jù)、帶寬及/或時間。
[0110] 圖9是根據(jù)本發(fā)明中描述的一或多個實例的說明用于維持多核心系統(tǒng)中的高速 緩存相干性的過程的流程圖。僅出于說明的目的,參考圖1的GPU 20,然而多核心系統(tǒng)2的 任何處理器可執(zhí)行本發(fā)明的技術(shù)。
[0111] 在圖9中,第一處理器(例如,GPU 20)可經(jīng)配置以將共享可變數(shù)據(jù)28寫入到第一 處理器的第一高速緩沖存儲器的高速緩存行(300)。GPU 20可接著執(zhí)行具有釋放的存儲操 作或釋放圍欄(302)。在一些實例中,執(zhí)行具有釋放的存儲操作可致使GPU 20清空GPU20 的高速緩沖存儲器22的與共享可變數(shù)據(jù)28相關(guān)聯(lián)的高速緩存行。所述方法可進一步包含 第二處理器(例如,CPU 16)執(zhí)行具有獲取的加載操作或獲取圍欄(306)。在一些實例中, 執(zhí)行具有獲取的加載操作可致使CPU 16使高速緩沖存儲器18的與共享可變數(shù)據(jù)28相關(guān) 聯(lián)的高速緩存行無效(308)。CPU 16可接著讀取加載共享來自高速緩沖存儲器18的共享 可變數(shù)據(jù)28的值(310)。
[0112] 在一些實例中,執(zhí)行具有釋放的存儲操作進一步可進一步包含:使用第一可編程 處理器來清空第一高速緩沖存儲器的與共享可變數(shù)據(jù)相關(guān)聯(lián)的高速緩存行;及使用第一可 編程處理器等待任何先前存儲完成。
[0113] 在實例中,執(zhí)行具有獲取的加載操作進一步包括:使用第二可編程處理器使第二 可編程處理器的與共享可變數(shù)據(jù)相關(guān)聯(lián)的高速緩存行無效;使用第二可編程處理器填充第 二高速緩沖存儲器的與共享可變數(shù)據(jù)相關(guān)聯(lián)的高速緩存行;及使用第二可編程處理器防止 后續(xù)指令發(fā)布直到具有獲取的加載操作完成執(zhí)行為止。
[0114] 在一些實例中,圖9的方法進一步包括:使用第二處理器窺探第一可編程處理器 的高速緩沖存儲器;使用第二可編程處理器檢測與共享可變數(shù)據(jù)的更新值相關(guān)聯(lián)的高速緩 存命中;及響應(yīng)于檢測到與共享可變數(shù)據(jù)相關(guān)聯(lián)的高速緩存命中而使用第二可編程處理器 將共享可變數(shù)據(jù)的更新值寫入到第二可編程處理器的高速緩沖存儲器。
[0115] 在一些實例中,執(zhí)行具有釋放的存儲操作進一步包括將共享可變數(shù)據(jù)寫入到具有 比第一高速緩沖存儲器高的層級的較高層級高速緩沖存儲器、系統(tǒng)存儲器及第二處理器的 第二高速緩沖存儲器中的一者。
[0116] 在另一實例中,第一處理器可包括中央處理單元(例如,CPU 16),及第二處理器 包括圖形處理單元(GPU)(例如,GPU 20)。為使第二高速緩沖存儲器的高速緩存行無效, GPU 20可使用編譯器將無效指令插入到GPU可操作的著色器代碼中。
[0117] 在另一實例中,第一處理器的所有高速緩存行及第二處理器的所有高速緩存行為 共享的。執(zhí)行具有釋放的存儲操作可進一步第一處理器的所有高速緩存行。執(zhí)行具有獲取 的加載操作包括使第一處理器的所有高速緩沖存儲器第二無效。
[0118] 在一些情況下,第一處理器的高速緩存行的共享子集的至少一個共享行由第一可 共享性屬性指示,及第二處理器的高速緩存行的共享子集的每一共享行由第二可共享性屬 性指示。
[0119] 在另一情況下,圖9的方法進一步包括執(zhí)行高速緩存填充操作,及響應(yīng)于執(zhí)行所 述高速緩存填充操作而讀取來自頁表第一可共享性屬性或第二可共享性屬性中的一者。
[0120] 在另一實例中,圖9的方法進一步包括由編譯器發(fā)布至少一個加載指令或存儲指 令,其中至少一個加載指令或存儲指令指示第一可共享性屬性或第二可共享性屬性中的至 少一者。
[0121 ] 在另一實例中,加載指令包括共享加載指令,及存儲指令包括共享存儲指令。
[0122] 在又一實例中,所述方法進一步包括讀取多個地址指針的指示第一可共享性屬性 及第二可共享性屬性中的至少一者的一或多個位。
[0123] 在又一實例中,第一可共享性屬性及第二可共享性屬性中的至少一者指示第一高 速緩沖存儲器及第二高速緩沖存儲器中的至少一者處于未共享狀態(tài),及所述方法進一步包 括對第一高速緩沖存儲器及第二高速緩沖存儲器中的至少一者執(zhí)行高速緩存操作,及響應(yīng) 于執(zhí)行所述高速緩存操作而改變第一可共享性屬性及第二可共享性屬性中的至少一者,以 指示第一高速緩沖存儲器及第二高速緩沖存儲器中的至少一者處于共享狀態(tài)。
[0124] 在又一實例中,第一可共享性屬性及第二可共享性屬性中的至少一者指示第一高 速緩沖存儲器及第二高速緩沖存儲器中的至少一者處于共享狀態(tài),及所述方法進一步包括 對第一高速緩沖存儲器及第二高速緩沖存儲器中的至少一者執(zhí)行高速緩存操作,及響應(yīng)于 執(zhí)行所述高速緩存操作而改變第一可共享性屬性及第二可共享性屬性中的至少一者,以指 示第一高速緩沖存儲器及第二高速緩沖存儲器中的至少一者處于未共享共享狀態(tài)。
[0125] 在又一實例中,所述方法進一步包括比較存儲一或多個寄存器的地址與第一高 速緩沖存儲器及第二高速緩沖存儲器中的至少一者的地址以確定第一高速緩沖存儲器及 第二高速緩沖存儲器中的至少一者的地址區(qū)域,及確定所述地址區(qū)域是共享的還是未共享 的。
[0126] 在又一實例中,所述方法進一步包括:確定第一高速緩沖存儲器及第二高速緩沖 存儲器中的至少一者的臟字節(jié);執(zhí)行高速緩存逐出及高速緩存清空中的至少一者;及在所 述高速緩存逐出及高速緩存清空中的至少一者的期間將僅所述臟字節(jié)寫入到高速緩沖存 儲器或系統(tǒng)存儲器。
[0127] 在又一實例中,為執(zhí)行具有釋放的存儲操作,第一處理器響應(yīng)于接收到中斷、寄存 器讀取、寄存器寫入及可編程延遲中的至少一者而清空第一處理器的高速緩沖存儲器。
[0128] 在又一實例中,為執(zhí)行具有釋放的存儲操作,第一處理器響應(yīng)于高速緩存壓力、超 時及顯式軟件高速緩存維護中的至少一者而清空第一高速緩沖存儲器。
[0129] 在又一實例中,為執(zhí)行具有釋放的存儲操作,第一處理器響應(yīng)于高速緩存壓力、超 時及顯式軟件高速緩存維護中的至少一者而清空第一高速緩沖存儲器。
[0130] 在又一實例中,第一高速緩沖存儲器及第二高速緩沖存儲器中的至少一者經(jīng)虛擬 標(biāo)記。在一些實例中,執(zhí)行具有釋放的存儲操作包括將存儲在第一高速緩沖存儲器中的虛 擬地址轉(zhuǎn)譯為物理地址,及在將虛擬地址轉(zhuǎn)譯到物理地址之后基于所述物理地址清空第一 高速緩沖存儲器的高速緩存行。
[0131] 在又一實例中,執(zhí)行具有獲取的加載操作包括將存儲在第二高速緩沖存儲器中的 虛擬地址轉(zhuǎn)譯為物理地址,及在將虛擬地址轉(zhuǎn)譯到物理地址之后基于所述物理地址使第二 高速緩沖存儲器的高速緩存行無效。
[0132] 應(yīng)認識到,取決于實例,本文中所描述的技術(shù)中的任一者的某些動作或事件可用 不同序列執(zhí)行、可添加、合并或全部省略(例如,實踐所述技術(shù)并不需要所有的所描述動作 或事件)。此外,在某些實例中,可例如通過多線程處理、中斷處理或多個處理器同時而非依 序執(zhí)行動作或事件。
[0133] 在一或多個實例中,所描述的功能可以用硬件、軟件、固件或其任何組合來實施。 如果以軟件來實施,那么可將所述功能作為一或多個指令或代碼存儲在計算機可讀媒體 上。計算機可讀媒體可包含計算機數(shù)據(jù)存儲媒體。數(shù)據(jù)存儲媒體可為可由一或多個計算 機或一或多個處理器存取以檢索用于實施本發(fā)明中描述的技術(shù)的指令、代碼及/或數(shù)據(jù)結(jié) 構(gòu)的任何可用媒體。借助于實例而非限制,此類計算機可讀媒體可包括隨機存取存儲器 (RAM)、只讀存儲器(ROM)、EEPROM、CD-ROM或其它光盤存儲裝置、磁盤存儲裝置或其它磁性 存儲裝置或、可用來存儲呈指令或數(shù)據(jù)結(jié)構(gòu)的形式的所要程序代碼且可由計算機存取的任 何其它媒體。如本文所使用,磁盤及光盤包含壓縮光盤(CD)、激光光盤、光學(xué)光盤、數(shù)字多功 能光盤(DVD)、軟性磁盤及藍光光盤,其中磁盤通常以磁性方式復(fù)制數(shù)據(jù),而光盤用激光以 光學(xué)方式復(fù)制數(shù)據(jù)。上文的組合也應(yīng)包含在計算機可讀媒體的范圍內(nèi)。
[0134] 代碼可以由一或多個處理器執(zhí)行,所述一或多個處理器例如是一或多個數(shù)字信號 處理器(DSP)、通用微處理器、專用集成電路(ASIC)、現(xiàn)場可編程邏輯陣列(FPGA)、或其它 等效的集成或離散邏輯電路。因此,如本文中所使用的術(shù)語"處理器"可指上述結(jié)構(gòu)或適合 于實施本文中所描述的技術(shù)的任何其它結(jié)構(gòu)中的任一者。而且,可將所述技術(shù)完全實施于 一或多個電路或邏輯元件中。
[0135] 上文描述根據(jù)本發(fā)明的例如使用釋放一致性存儲器排序模型來實施按需高速緩 存相干性的技術(shù)。本發(fā)明還附有附錄。附錄中所描述的技術(shù)可對圖1中說明的單元中的一 或多者(例如,CPU 16、GPU 20及/或DSP 24)實施。隨附附錄以全文引用的方式并入本 發(fā)明中,及可被看作本發(fā)明的附件。
[0136] 本發(fā)明的技術(shù)可實施在廣泛多種裝置或設(shè)備中,包含無線手持機、集成電路(IC) 或一組IC(即,芯片組)。本發(fā)明中描述各種組件、模塊或單元是為了強調(diào)經(jīng)配置以執(zhí)行所 揭示的技術(shù)的裝置的功能方面,但未必需要通過不同硬件單元實現(xiàn)。確切地說,如上文所描 述,各種單元可結(jié)合合適的軟件及/或固件組合在硬件單元中,或通過互操作硬件單元的 集合來提供,所述硬件單元包含如上文所描述的一或多個處理器。
[0137] 已描述各種實例。這些及其它實例在所附權(quán)利要求書的范圍內(nèi)。
【主權(quán)項】
1. 一種方法,其包括: 使用第一可編程處理器將共享可變數(shù)據(jù)存儲到所述第一處理器的第一高速緩沖存儲 器的高速緩存行; 使用所述第一可編程處理器執(zhí)行具有釋放的存儲操作; 使用第二可編程處理器執(zhí)行具有獲取的加載操作;及 使用所述第二可編程處理器加載來自所述第二可編程處理器的高速緩沖存儲器的所 述共享可變數(shù)據(jù)的值。
2. 根據(jù)權(quán)利要求1所述的方法,其中執(zhí)行所述具有釋放的存儲操作進一步包括: 使用所述第一可編程處理器清空所述第一高速緩沖存儲器的與所述共享可變數(shù)據(jù)相 關(guān)聯(lián)的尚速緩存彳?。患? 使用所述第一可編程處理器等待任何先前存儲完成。
3. 根據(jù)權(quán)利要求1所述的方法,其中執(zhí)行所述具有獲取的加載操作進一步包括: 使用所述第二可編程處理器使所述第二可編程處理器的與所述共享可變數(shù)據(jù)相關(guān)聯(lián) 的高速緩存行無效; 使用所述第二可編程處理器填充所述第二高速緩沖存儲器的與所述共享可變數(shù)據(jù)相 關(guān)聯(lián)的尚速緩存彳??;及 使用所述第二可編程處理器防止后續(xù)指令發(fā)布直到所述具有獲取的加載操作完成執(zhí) 行為止。
4. 根據(jù)權(quán)利要求3所述的方法,其進一步包括: 使用所述第二處理器窺探所述第一可編程處理器的所述高速緩沖存儲器; 使用所述第二可編程處理器檢測與所述共享可變數(shù)據(jù)的更新值相關(guān)聯(lián)的高速緩存命 中;及 響應(yīng)于檢測到與所述共享可變數(shù)據(jù)相關(guān)聯(lián)的所述高速緩存命中而使用所述第二可編 程處理器將所述共享可變數(shù)據(jù)的所述更新值寫入到所述第二可編程處理器的所述高速緩 沖存儲器。
5. 根據(jù)權(quán)利要求1所述的方法,其中執(zhí)行所述具有釋放的存儲操作進一步包括: 將所述共享可變數(shù)據(jù)寫入到具有比所述第一高速緩沖存儲器高的層級的較高層級高 速緩沖存儲器、系統(tǒng)存儲器及所述第二處理器的所述第二高速緩沖存儲器中的一者。
6. 根據(jù)權(quán)利要求1所述的方法,其中所述第一處理器包括中央處理單元CPU,及所述第 二處理器包括圖形處理單元GPU。
7. 根據(jù)權(quán)利要求1所述的方法,其中所述第一處理器的所有所述高速緩存行及所述第 二處理器的所有所述高速緩存行為共享的, 其中執(zhí)行所述具有釋放的存儲操作進一步包括清空所述第一處理器的所有所述高速 緩存行,及 其中執(zhí)行所述具有獲取的加載操作進一步包括使所述第二第一處理器的所有所述高 速緩存行無效。
8. 根據(jù)權(quán)利要求1所述的方法,其中所述第一處理器的所有所述高速緩存行的子集為 共享的,及第二處理器的所有所述高速緩存行的子集為共享的, 其中執(zhí)行所述具有釋放的存儲操作進一步包括僅清空所述第一處理器的所述高速緩 存行的所述共享子集,及 其中執(zhí)行所述具有獲取的加載操作進一步包括僅使所述第二處理器的所有所述高速 緩存行的所述共享子集無效。
9. 根據(jù)權(quán)利要求8所述的方法,其中所述第一處理器的所述高速緩存行的所述共享子 集的至少一個共享行由第一可共享性屬性指示,及 其中所述第二處理器的所述高速緩存行的所述共享子集的每一共享行由第二可共享 性屬性指示。
10. 根據(jù)權(quán)利要求9所述的方法,其進一步包括: 執(zhí)行高速緩存填充操作;及 響應(yīng)于執(zhí)行所述高速緩存填充操作,讀取來自頁表的所述第一可共享性屬性及所述第 二可共享性屬性中的至少一者。
11. 根據(jù)權(quán)利要求9所述的方法,其進一步包括: 由編譯器發(fā)布加載指令及存儲指令中的至少一者,其中所述加載指令及所述存儲指令 中的所述至少一者指示所述第一可共享性屬性及所述第二可共享性屬性中的所述至少一 者。
12. 根據(jù)權(quán)利要求11所述的方法,其中所述加載指令包括共享加載指令,且其中所述 存儲指令包括共享存儲指令。
13. 根據(jù)權(quán)利要求9所述的方法,其進一步包括讀取多個地址指針的指示所述第一可 共享性屬性及所述第二可共享性屬性中的至少一者的一或多個位。
14. 根據(jù)權(quán)利要求9所述的方法,其中所述第一可共享性屬性及所述第二可共享性屬 性中的至少一者指示所述第一高速緩沖存儲器及所述第二高速緩沖存儲器中的至少一者 處于未共享狀態(tài),所述方法進一步包括: 對所述第一高速緩沖存儲器及所述第二高速緩沖存儲器中的至少一者執(zhí)行高速緩存 操作;及 響應(yīng)于執(zhí)行所述高速緩存操作,改變所述第一可共享性屬性及所述第二可共享性屬性 中的所述至少一者以指示所述第一高速緩沖存儲器及所述第二高速緩沖存儲器中的至少 一者處于共孚狀態(tài)。
15. 根據(jù)權(quán)利要求9所述的方法,其中所述第一可共享性屬性及所述第二可共享性屬 性中的至少一者指示所述第一高