TW202004495A - 用於幽靈緩解之資料快取記憶體隔離 - Google Patents

用於幽靈緩解之資料快取記憶體隔離 Download PDF

Info

Publication number
TW202004495A
TW202004495A TW108109802A TW108109802A TW202004495A TW 202004495 A TW202004495 A TW 202004495A TW 108109802 A TW108109802 A TW 108109802A TW 108109802 A TW108109802 A TW 108109802A TW 202004495 A TW202004495 A TW 202004495A
Authority
TW
Taiwan
Prior art keywords
cache memory
mode
user
cpu
kernel
Prior art date
Application number
TW108109802A
Other languages
English (en)
Other versions
TWI709909B (zh
Inventor
保羅 羅賓森
Original Assignee
日商索尼互動娛樂股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日商索尼互動娛樂股份有限公司 filed Critical 日商索尼互動娛樂股份有限公司
Publication of TW202004495A publication Critical patent/TW202004495A/zh
Application granted granted Critical
Publication of TWI709909B publication Critical patent/TWI709909B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/603Details of cache memory of operating mode, e.g. cache mode or local memory mode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

按照執行模式隔離一處理器之資料快取記憶體(L1及/或L2及/或L3),從而藉由不再共用資源來消除某些惡意軟體之危險。內核模式軟體能夠調整該資料快取記憶體之兩個部分(500、502)之相對大小,以動態地適應不同工作負荷之資料快取記憶體需求。

Description

用於幽靈緩解之資料快取記憶體隔離
本申請案大體上係關於技術上具有創造性之非習知解決方案,其必須植根於電腦技術並且產生具體之技術改良。
電腦中之處理器具有至少兩種不同操作模式。第一種通常被稱為「內核模式」,而第二種可以被稱為「使用者模式」,儘管已經使用了其他術語,例如,代替「使用者模式」,該模式可以被稱為「應用模式」。內核模式用於核心作業系統(O.S.)功能,而當處理器執行應用程式時使用使用模式,即,針對特定任務之電腦程式又依賴於O.S.。某些裝置驅動器軟體亦可以按內核模式執行。
實質上,在內核模式中,處理器可以存取其基本上所有可用之資產。相反,在使用者模式中,僅允許處理器存取其可用資產之一些而非全部。在使用者模式下限制存取防止處理器執行之應用程式更改並且可能損壞關鍵作業系統資料。
現代處理器之另一特徵為快取記憶體,其載入有來自主記憶體之所選資料之副本。快取記憶體比主記憶體快,因此存取快取記憶體中之資料可以提高效能。在大多數情況下,當中央處理單元(CPU)讀取或寫入主記憶體時,資料快取記憶體之一部分(有時稱為「快取記憶體區塊」)被自動分配以含有來自主記憶體之對應部分之資料副本。資料快取記憶體記錄每個快取記憶體區塊之對應主記憶體位址,以便將來存取相同之記憶體位址將讀取或寫入資料快取記憶體而非直接存取主記憶體,從而提高效能。可以使用各種手段將資料快取記憶體之部分與記憶體之部分相關聯。作為一個簡單實例,給定32位元記憶體位址,其中最低有效位元編號為0,實施可以使用位址位元15-8來選擇256個可能之資料快取記憶體區塊中之一者。
因為較快之快取記憶體比主記憶體更昂貴,所以其通常小於主記憶體。當CPU存取主記憶體之不同部分時,可以「逐出」資料快取記憶體中之副本,並且可以重新分配資料快取記憶體之彼等部分以含有最近存取之主記憶體部分。若CPU接著存取已自資料快取記憶體中逐出之記憶體位址,則存取速度較慢,因為該記憶體部分必須重新分配資料快取記憶體之一部分,並且必須自主記憶體重新載入資料。可以藉由CPU中執行之軟體偵測此種效能差異。
與主記憶體類似,快取記憶體通常被視為由內核模式與使用者模式軟體共用之資源。使用者模式軟體通常不能直接自資料快取記憶體中讀取內核模式資料。然而,使用者模式軟體可以藉由偵測上述效能差異間接判定資料快取記憶體之哪些部分已被逐出並且載入內核模式資料。
現代處理器之另一特徵為在因其他原因而需要執行之前推測性地無序地執行某些任務,以提高效率。作為簡單實例,可以在處理器判定是否滿足條件之前執行依賴於該條件之計算。若最終判定滿足條件,則已經進行了計算並且可以使用結果,從而縮短了處理時間。若最終判定不滿足條件,則可以簡單地丟棄推測計算而不損失處理時間,因為在等待時段期間推測性地進行推測計算以判定是否滿足條件。
最近被稱為「幽靈」及「熔斷」之惡意軟體試圖利用推測執行與資料快取記憶體行為之組合。自根本上說,此等「漏洞利用」會影響內核模式軟體,以推測性地執行最終逐出資料快取記憶體之一部分之指令。藉由使用效能特徵來判定哪個部分被逐出,「漏洞利用」可以間接地導出受保護之內核模式資料之值。幽靈及熔斷之變體可能使用不同方法來影響推測執行,但其皆藉由偵測資料快取記憶體效能之差異來獲得內核模式資料之值。
考慮到上述情況,本發明原理按照執行模式隔離處理器之資料快取記憶體,從而藉由不再在內核模式與使用者模式之間共用快取記憶體資源來消除某些惡意軟體之危險。若需要,內核模式軟體可以調整資料快取記憶體之兩個部分之相對大小,以動態地適應不同工作負荷之資料快取記憶體需求。
在一種實施中,處理器將一個多個信號線曝露給指示操作模式之快取記憶體,其中快取記憶體儲存在與信號線指示之模式相關之分區中的記憶體。
因此,一種裝置包括至少一個中央處理單元(CPU)核心,該核心又包括至少第一CPU線緒及第一CPU線緒可存取之至少第一L1快取記憶體。複數個信號線在第一CPU線緒與第一L1快取記憶體之間傳送資料。該CPU線緒被組態成在複數個信號線之至少模式信號線上曝露二進位值。模式信號線上之第一二進位值指示僅與內核模式快取記憶體相關聯之記憶體位址,模式信號線上之第二二進位值指示僅與使用者模式快取記憶體相關聯之記憶體位址。利用該技術,可以僅向使用者模式快取記憶體寫入及讀取與使用者模式應用程式相關聯之資料,使得無使用者模式應用程式可以偵測內核模式快取記憶體之操作。
在一些實例中,與內核模式應用程式相關聯之資料僅可以寫入內核模式快取記憶體並且僅自其讀取。
在實例實施中,使用者模式快取記憶體及內核模式快取記憶體為第一L1快取記憶體之虛擬分區。在其他實例中,該裝置包括第二L1快取記憶體,並且使用者模式快取記憶體及內核模式快取記憶體分別由第一L1快取記憶體及第二L1快取記憶體建立。
在一些實施中,該裝置可以包括L2快取記憶體,並且與L1快取記憶體類似,僅可以向L2快取記憶體之使用者模式快取記憶體寫入及讀取與使用者模式應用相關聯之資料,使得無使用者模式應用程序可以偵測L2快取記憶體按內核模式之操作。
當虛擬地建立使用者模式及內核模式快取記憶體時,使用者模式快取記憶體及內核模式快取記憶體之相應大小可以在CPU操作期間改變。大小改變可以根據在內核模式軟體控制下之至少一個參數。在一些實例中,大小改變可以根據使用者模式快取記憶體及內核模式快取記憶體中之至少一者中之資料儲存量。在一些實施中,大小根據使用者模式快取記憶體及內核模式快取記憶體中之至少一者中之資料輸入/輸出速率而改變。
CPU核心可以為第一CPU核心,並且該裝置可以包括在CPU封裝中之至少第二CPU核心,並且第一CPU核心與第二CPU核心共用L3快取記憶體。
在另一態樣中,一種設備包括至少一個中央處理單元(CPU)核心,該核心又包括至少第一CPU線緒及第一CPU線緒可存取之L1快取記憶體總成。L1快取記憶體總成劃分為使用者模式快取記憶體及內核模式快取記憶體。
在另一態樣中,一種方法包括根據執行模式隔離處理器之資料快取記憶體,其中執行模式為內核模式或使用者模式。該方法包括僅將使用者模式應用資料寫入使用者模式快取記憶體,從而藉由不與使用者模式軟體共用內核模式快取記憶體來消除惡意軟體辨別內核模式快取記憶體中之操作之可能性。
本申請案之關於其結構及操作之細節可以參考附圖最佳地理解,其中相同之附圖標記指代相同之部分,並且其中:
本發明大體涉及電腦生態系統,包括消費電子(CE)裝置網路之各態樣,諸如但不限於分佈式電腦遊戲網路、視訊廣播、內容遞送網路、虛擬機及機器學習應用。注意,設想了隔離資料快取記憶體之許多實施,其中包括在本文描述及展示之若干電腦伺服器及移動電話。
本文之系統可以包括藉由網路連接之伺服器及用戶端組件,使得可以在用戶端與伺服器組件之間交換資料。用戶端組件可以包括一或多個計算裝置,包括諸如索尼PlayStation® 及相關主板之遊戲控制台、攜帶型電視(例如智能電視、支援網際網路之電視)、諸如膝上型電腦及平板電腦之攜帶型電腦,及其他移動裝置,包括智能手機及下文論述之其他實例。此等用戶端裝置可以在各種操作環境下操作。舉例而言,一些用戶端電腦可以使用例如Orbis或Linux作業系統、來自Microsoft之作業系統或Unix作業系統,或蘋果公司或谷歌開發之作業系統。此等操作環境可以用於執行一或多個使用者模式程式,諸如但不限於瀏覽器、電腦遊戲、網路或智能電話應用程式,諸如財務或文字處理程式之個人計算應用程式、用於諸如汽車及製造設備之裝置之控制程式,及任何其他應用程式。
伺服器及/或閘道器可以包括執行指令之一或多個處理器,該等指令將伺服器組態成藉由諸如網際網路之網路接收及發送資料。或者,用戶端及伺服器可以藉由本地內部網路或虛擬專用網路連接。伺服器或控制器可以由遊戲控制台及/或其一或多個主板(諸如Sony PlayStation®、個人電腦等)來實例化。
可以在用戶端與伺服器之間藉由網路交換資訊。為此,為了安全起見,伺服器及/或用戶端可以包括防火牆、負荷平衡器、臨時儲存裝置及代理,及用於可靠性及安全性之其他網路基礎設施。一或多個伺服器可以形成一種設備,該設備實施向網路成員提供諸如線上社交網站之安全社區之方法。
如本文所使用,指令係指用於處理系統中之資訊之電腦實施的步驟。指令可以在軟體韌體或硬體中實施,並且包括由系統之組件承擔之任何類型之程式化步驟。
處理器可以為任何習知之通用單晶片或多晶片處理器,其可以藉由諸如位址線、資料線及控制線及暫存器及移位暫存器等各種線來執行邏輯。
藉由本文之流程圖及使用者介面描述之軟體模組可以包括各種子常式、程序等。在不限制本發明之情況下,聲明由特定模組執行之邏輯可以被重新分發至其他軟體模組及/或一起組合在單一模組中及/或可用於可共用之庫中。
本文描述之本發明原理可以實施為硬體、軟體、韌體或其組合;因此,說明性組件、區塊、模組、電路及步驟在其功能方面加以闡述。
除了上文提到的內容之外,下文描述之邏輯區塊、模組及電路可以用通用處理器、數字信號處理器(DSP)、場可程式化閘陣列(FPGA)或其他可程式化邏輯來實施或執行。諸如特殊應用積體電路(ASIC)、離散閘或電晶體邏輯、離散硬體組件或其任何組合之裝置被設計用於執行本文所述之功能。處理器可以由控制器或狀態機或計算裝置之組合來實施。
當在軟體中實施時,下文描述之功能及方法可以用適當之語言編寫,諸如但不限於Java、C#或C++,並且可以儲存在電腦可讀儲存介質上或藉由諸如隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可程式化唯讀記憶體(EEPROM)、光碟唯讀記憶體(CD-ROM)或諸如數字通用光碟(DVD)之其他光碟儲存裝置、磁碟儲存裝置或其他磁性儲存裝置(包括可移動之拇指驅動器,等)之電腦可讀儲存介質傳輸。連接可以建立電腦可讀介質。作為實例,此種連接可以包括硬連線電纜,包括光纖及同軸電線及數字使用者線(DSL)及雙絞線。此種連接可以包括無線通信連接,包括紅外及無線電。
一個實施中包括之組件可以按任何適當之組合用於其他實施中。舉例而言,本文描述及/或在圖中描繪之各種組件中之任一者可以與其他實施組合、互換或自其他實施排除。
「具有A、B及C中之至少一者之系統」(同樣「具有A、B或C中之至少一者之系統」及「具有A、B、C中之至少一者之系統」)包括單獨具有A、單獨具有B、單獨具有C、具有A及B、具有A及C、具有B及C及/或具有A、B及C之系統,等等。
如圖1所示,下文參考圖2進一步描述之中央處理單元(CPU)封裝200可以在晶片組10上實施,該晶片組又可以由可以作為單一產品銷售之一組積體電路或晶片來實施。
圖1中之實例晶片組10可以藉由適當之晶片至晶片介面14與輸入/輸出控制器12通信。CPU封裝200可以與亦在下文參考圖2進一步論述之記憶體208介接。記憶體208可以為一種類型之隨機存取記憶體(RAM)。
CPU封裝200可以包括一或多個介面16,諸如低壓差分信令介面(LVDS)、PCI-express介面等,其建立CPU封裝200與諸如顯示裝置18、圖形裝置、高清多媒體介面(HDMI)裝置等之各種周邊裝置之間的通信。
I/O集線器控制器12亦可以包括各種介面18,諸如但不限於以下介面中之一者或多者:串行ATA (SATA)介面、低引腳數(LPC)介面、PCI-E介面、通用串列匯流排(USB)介面、通用I/O介面(GPIO)、區域網路(LAN)介面及其他網路介面、電源管理介面、時脈產生器介面、系統管理匯流排介面(例如,多個主串列電腦匯流排介面)、串列周邊快閃/控制器介面(SPI Flash),後者用於存取基本輸入輸出系統(BIOS) 20之啟動程式碼。
除了BIOS 20之外,I/O集線器控制器12之介面18亦可提供與包括網路之輸入/輸出裝置之通信。舉例而言,I/O控制器12可以與一或多個磁碟驅動器22、音訊揚聲器24、Wi-Fi或其他無線收發器26及諸如鍵盤、滑鼠、麥克風(用於語音輸入)、相機之輸入裝置28通信。本文之方法可以實施為由處理器、適當組態之特殊應用積體電路(ASIC)或場可程式化閘陣列(FPGA)模組執行之軟體指令,或者如熟習此項技術者所理解之任何其他方便之方式。在使用時,軟體指令可以體現在諸如CD ROM或快閃驅動器之非暫時性裝置中。或者,軟體程式碼指令可以體現在諸如無線電或光信號之暫時性配置中,或藉由經由網際網路下載來體現。
現在參考圖2,展示了具有兩個CPU核心202之實例中央處理單元(CPU)封裝200。每個CPU核心202可以包括兩個CPU線緒204,亦稱為硬體線緒或超線緒。每個CPU線緒204包括一組相應暫存器,並且可以用於執行機器程式碼。
另外,每個CPU核心202可以包括一或多個快取記憶體206,在圖2中標記為「L1」及「L2」,以指示快取記憶體206分別為1級及2級記憶體。快取記憶體層級愈低,其愈接近CPU線緒,並且愈小、愈快並且愈貴。同樣,愈遠離CPU並且愈接近主記憶體208,快取記憶體層級愈高、愈大、愈慢並且愈便宜。
在圖2中,每個CPU核心展示單一硬體L1快取記憶體,下文之圖5詳細展示了如何在內核記憶體與使用者模式記憶體之間虛擬劃分L1快取記憶體。如下文進一步描述,圖8說明每CPU核心使用兩個硬體L1快取記憶體之替代架構。
儘管圖2說明僅具有兩個CPU核心之簡化CPU封裝200,但應理解,CPU封裝可以包括兩個以上之核心。舉例而言,CPU封裝可以包括三十個CPU核心。無論CPU核心之數目如何,在圖2之實例中,CPU封裝200中之所有CPU核心202共用共同L3快取記憶體210。注意,CPU核心可以包括多於兩個層級之快取記憶體(即,超過L1層級及L2層級)或者可以僅包括一個層級(L1),並且同樣,CPU封裝可以包括多於或少於三個層級之快取記憶體。
亦如圖2所示,為了說明,CPU線緒204藉由複數個信號線212與L1快取記憶體206進行資料通信。此等信號線指示用於讀取或寫入資料之記憶體位址,其中單一記憶體位址具有複數個信號線。該等信號線中之預定模式線(例如,第一信號線214)可以用於指示操作模式,並且因此指示快取記憶體中之存取位置。舉例而言,模式線214上之「0」值可以指示內核模式,並且模式線214上之「1」值可以指示使用者模式,其中相關聯之資料由L1快取記憶體儲存在與由模式線214指示之模式對應之分區中。若需要,模式線214可以為通常使用之信號線之附加信號線,或其可以為重新使用之現有信號線。在任何情況下,CPU線緒通常首先使用記憶體位址存取L1快取記憶體,並且若L1快取記憶體具有所分配之記憶體位址,則存取其以進行讀取/寫入。否則,若未在L1快取記憶體中分配記憶體位址,則CPU線緒使用記憶體位址存取L2快取記憶體,以判定是否可以在L2快取記憶體中執行讀取/寫入操作,依此類推,至L3快取記憶體,最後到達主記憶體(若所需之記憶體位址不在任何快取記憶體中)。
因此,儘管圖2說明CPU線緒與L1快取記憶體之間的模式線,但本發明原理通常亦可以應用於其他快取記憶體層級,例如,應用於L2及L3快取記憶體。因此,儘管描述了在使用者模式與內核模式之間劃分L1快取記憶體,但亦可以根據與本發明原理一致之操作模式來劃分L2及L3快取記憶體。或者,可以不在使用者模式與內核模式之間劃分L1快取記憶體,並且可以僅對一或多個較高快取記憶體層級進行如此劃分。
圖3說明在電腦硬體300上之軟體架構,諸如可以由下文將更全面地描述之圖2或圖8中之架構實施。硬體抽象層(HAL) 302將提供給應用程式之虛擬位址映射至硬體300中之實體位址。O.S.內核304控制資料至HAL 302之輸入及輸出,並且以內核模式操作。一些驅動器支援常式306亦可以耦合至O.S.內核304,並且可以在內核模式下操作。其他內核模式驅動器308可以存取驅動器支援常式306,並且可以在內核模式下操作。某些檔案系統驅動器310亦可以在內核模式下操作,並且可以存取O.S.內核304。
另一方面,使用者應用程式312及伴隨之作業系統應用程式設計介面(API) 314可以在使用者模式下操作。使用者模式驅動器316亦可以藉由API 314在使用者模式下操作。可以允許此等使用者模式驅動器316與其他內核模式驅動器308通信。
注意,儘管所示之實例採用兩種操作模式,即使用者模式及內核模式,但一些處理器可以採用兩種以上之操作模式。舉例而言,一些架構可以包括四種操作模式,其可以被稱為「環」並且大體被描繪為嵌套圓,最裏面之環最具特權且最受保護。在此種情況下,代替使用單模信號線來指示兩個模式之間的二進位分區,可以使用兩個模式信號線(總共四個二進位值)來指示四個快取記憶體分區中之哪一者被指示。在此種情況下,提供四個快取記憶體分區(虛擬或實體)。
圖4說明與本發明原理一致之總體邏輯。自區塊400開始,將快取記憶體劃分為使用者模式快取記憶體及內核模式快取記憶體。可以僅對L1快取記憶體進行如此劃分,或亦可以對一或多個較高層級之快取記憶體進行如此劃分。分區可以為虛擬的,如圖2及圖5所示,或者為實體的,如圖8所示。當為虛擬時,可以將初始之「N-1」個快取記憶體區塊組分配給內核模式分區,並且可以將初始之「N-M」個快取記憶體區塊組分配給使用者模式分區,並且彼等分區分配可以為固定的,或者可以隨著時間而變化,如圖6及圖7之實例所說明。在任何情況下,用於內核模式快取記憶體之快取記憶體區塊使其模式信號線214之二進位值等於用於指示「內核模式」之二進位值,而使用者模式快取記憶體之記憶體位址使其模式信號線214之二進位值等於用於指示「使用者模式」之二進位值。
當如圖8所示並且在下文進一步描述使用實體快取記憶體分區時,內核模式實體快取記憶體之快取記憶體區塊使其模式信號線二進位值全部等於用於指示「內核模式」之二進位值,而使用者模式實體快取記憶體之記憶體位址使其模式信號線二進位值全部等於用於指示「使用者模式」之二進位值。
移至區塊402,在使用者模式下之CPU操作期間,允許所有使用者模式應用程式僅對使用者模式快取記憶體執行讀取/寫入操作。區塊404基本上強調不允許使用者模式應用程式存取或以其他方式「看到」內核模式快取記憶體,包括資料操作,諸如自內核模式快取記憶體逐出資料。
在一些實例中,區塊406指示至少在儲存(寫入)及(若需要亦)擷取(讀取)內核模式資料態樣,同樣僅允許以內核模式操作之程式存取內核模式快取記憶體,但通常可以允許諸如O.S.之內核模式程式代表使用者模式應用程式存取使用者模式快取記憶體,以代表此類使用者模式程式自使用者模式快取記憶體讀取及寫入使用者模式資料。
圖5說明單一實體L1快取記憶體,其被劃分為僅內核模式資料分區500,其中只能寫入及讀取內核模式資料,及使用者模式分區502,其中只能寫入及讀取使用者模式資料。虛線504指示虛擬使用者模式快取記憶體502與虛擬內核模式快取記憶體500之間的邊界。為了說明,可以為內核模式分區500分配快取記憶體區塊0至N-1,其中「N」為大於零之整數,並且可以為使用者模式分區分配快取記憶體行N-M,其中「M」為大於「N」之整數。
在操作期間,使用者模式快取記憶體502及內核模式快取記憶體500之大小可以改變,即,概念上向上或向下移動線504以增加一個模式快取記憶體之大小而犧牲另一者。在一實例中,在內核模式軟體之控制下的一或多個參數可以用於此目的。
圖6及圖7說明用於在圖5中之使用者模式快取記憶體502與內核模式快取記憶體500之間動態分配快取記憶體區塊之可選替代技術。自圖6中之區塊600開始,在內核模式及使用者模式快取記憶體中識別當前資料儲存層級。若在決策菱形區塊602處判定資料儲存層級中之一者滿足臨限值,則可以在區塊604處向其分配自其他(較不完整之)模式快取記憶體獲取之額外快取記憶體區塊。自概念上講,圖5中之邊界504朝向模式快取記憶體將區塊放棄給另一模式快取記憶體而移動,所示實例中之「N」因此動態地變化。
在圖7之替代實施中,區塊700在內核模式與使用者模式快取記憶體中識別當前資料使用,例如每單位時間之I/O操作。若在決策菱形區塊702處判定資料使用中之一者滿足臨限值,則可以在區塊704處向其分配自其他(較少使用之)模式快取記憶體獲取之額外快取記憶體區塊。自概念上講,圖5中之邊界504朝向模式快取記憶體將區塊放棄給另一模式快取記憶體而移動,所示實例中之「N」因此動態地變化。
現在參考圖8,展示了實例CPU封裝800,其具有在組態及操作方面彼此相同之兩個CPU核心802,因此僅展示了一個核心之組件。每個CPU核心802可以包括兩個CPU線緒804。每個CPU線緒804包括一組相應之暫存器,並且可以用於執行機器程式碼。
另外,每個CPU核心802可以包括兩個實體層級一(L1)快取記憶體806、808。第一L1快取記憶體806僅用於使用者模式操作,並且第二L1快取記憶體808僅用於內核模式操作。當採用多於兩種操作模式時,可以提供一致數目之實體L1快取記憶體。圖8中之L1快取記憶體之操作與先前描述之虛擬L1快取記憶體劃分之操作成鏡像,只為代替虛擬快取記憶體分區,快取記憶體806、808建立實體快取記憶體分區。
在圖8中,亦設想在使用者模式L2實體快取記憶體810與內核模式L2實體快取記憶體812及使用者模式實體L3快取記憶體814與內核模式實體L3快取記憶體816之間的實體模式劃分,應理解,如按照模式進行虛擬劃分之情況,僅L1快取記憶體需要被劃分,並且因此,在其他實例中,每個核心僅需要單一L2快取記憶體,每個封裝需要單一L3快取記憶體。與圖2中之虛擬快取記憶體模式劃分之情況類似,在圖8中,CPU封裝800可以包括兩個以上之核心,並且CPU核心802可以含有兩個以上之快取記憶體層級(即,超過L1層級及L2層級),並且可以僅包括一個層級(L1),並且同樣,CPU封裝可以含有多於或少於三個層級之快取記憶體。
亦如圖8所示,為了說明,CPU線緒804藉由複數個信號線818與L1快取記憶體806、808進行資料通信,該複數個信號線指示用於讀取或寫入資料之記憶體位址,其中信號線中之模式線用於指示操作模式並且因此指示想要存取實體L1快取記憶體806、808中之哪一者。
注意,可以使用虛擬與實體快取記憶體劃分之組合。舉例而言,可以根據例如圖5來虛擬地劃分L1快取記憶體,而可以根據例如圖8來實體地劃分L2快取記憶體。
應理解,儘管已經參考一些實例實施描述了本發明之原理,但此等旨在為非限制性的,並且可以使用各種替代配置來實施本文所主張之主題。
10‧‧‧晶片組 12‧‧‧輸入/輸出控制器 14‧‧‧晶片至晶片介面 16‧‧‧介面 18‧‧‧顯示裝置 20‧‧‧基本輸入輸出系統(BIOS) 22‧‧‧磁碟驅動器 24‧‧‧音訊揚聲器 26‧‧‧無線收發器 28‧‧‧輸入裝置 200‧‧‧CPU封裝 202‧‧‧CPU核心 204‧‧‧CPU線緒 206‧‧‧L1快取記憶體 208‧‧‧記憶體 210‧‧‧L3快取記憶體 212‧‧‧信號線 214‧‧‧第一信號線 300‧‧‧電腦硬體 302‧‧‧硬體抽象層(HAL) 304‧‧‧O.S.內核 306‧‧‧驅動器支援常式 308‧‧‧其他內核模式驅動器 310‧‧‧檔案系統驅動器 312‧‧‧使用者應用程式 314‧‧‧作業系統應用程式設計介面(API) 316‧‧‧使用者模式驅動器 400‧‧‧區塊 402‧‧‧區塊 404‧‧‧區塊 406‧‧‧區塊 500‧‧‧僅內核模式資料分區/虛擬內核模式快取記憶體 502‧‧‧使用者模式分區/虛擬使用者模式快取記憶體 504‧‧‧虛線 600‧‧‧區塊 602‧‧‧區塊 604‧‧‧區塊 700‧‧‧區塊 702‧‧‧區塊 704‧‧‧區塊 800‧‧‧CPU封裝 802‧‧‧CPU核心 804‧‧‧CPU線緒 806‧‧‧第一L1快取記憶體 808‧‧‧第二L1快取記憶體 810‧‧‧使用者模式L2實體快取記憶體 812‧‧‧內核模式L2實體快取記憶體 814‧‧‧使用者模式實體L3快取記憶體 816‧‧‧內核模式實體L3快取記憶體
圖1為符合本發明原理之實例系統之方塊圖;
圖2為實例特定處理系統硬體架構之方塊圖;
圖3為實例特定處理系統軟體架構之方塊圖;
圖4為符合本發明原理之實例總體邏輯之流程圖;
圖5為在使用者模式與內核模式之間劃分之快取記憶體之示意圖;
圖6及圖7為實例動態快取記憶體分配邏輯之流程圖;及
圖8為另一實例特定處理系統硬體架構之方塊圖。
300‧‧‧電腦硬體
302‧‧‧硬體抽象層(HAL)
304‧‧‧O.S.內核
306‧‧‧驅動器支援常式
308‧‧‧其他內核模式驅動器
310‧‧‧檔案系統驅動器
312‧‧‧使用者應用程式
314‧‧‧作業系統應用程式設計介面(API)
316‧‧‧使用者模式驅動器

Claims (20)

  1. 一種裝置,該裝置包括: 至少一個中央處理單元(CPU)核心,該至少一個中央處理單元(CPU)核心包括: 至少一第一CPU線緒; 該第一CPU線緒可存取之至少一第一L1快取記憶體; 用於在該第一CPU線緒與該第一L1快取記憶體之間傳送資料之複數個信號線,該CPU線緒被組態成在該複數個信號線中之至少一模式信號線上曝露一二進位值,該模式信號線上之一第一二進位值指示僅與內核模式快取記憶體相關聯之一記憶體位址,該模式信號線上之一第二二進位值指示僅與使用者模式快取記憶體相關聯之一記憶體位址,其中與一使用者模式應用程式相關聯之資料僅能夠寫入至使用者模式快取記憶體並且自其讀取,使得無使用者模式應用程式能夠偵測該內核模式快取記憶體之操作。
  2. 如申請專利範圍第1項之裝置,其中與一內核模式應用程式相關聯之資料僅能夠寫入至內核模式快取記憶體並且自其讀取。
  3. 如申請專利範圍第1項之裝置,其中該使用者模式快取記憶體及該內核模式快取記憶體為該第一L1快取記憶體之虛擬分區。
  4. 如申請專利範圍第1項之裝置,該裝置包括一第二L1快取記憶體,其中該使用者模式快取記憶體及該內核模式快取記憶體分別由該第一L1快取記憶體及該第二L1快取記憶體建立。
  5. 如申請專利範圍第1項之裝置,該裝置包括L2快取記憶體,其中與使用者模式應用程式相關聯之資料僅能夠寫入至該L2快取記憶體之使用者模式快取記憶體並且自其讀取,使得無使用者模式應用程式能夠偵測該L2快取記憶體按該內核模式之操作。
  6. 如申請專利範圍第3項之裝置,其中該使用者模式快取記憶體及該內核模式快取記憶體之相應大小在CPU操作期間改變。
  7. 如申請專利範圍第6項之裝置,其中該等大小在內核模式軟體之控制下根據至少一個參數而改變。
  8. 如申請專利範圍第6項之裝置,其中該等大小根據該使用者模式快取記憶體及該內核模式快取記憶體中之至少一者中之資料儲存量而改變。
  9. 如申請專利範圍第6項之裝置,其中該等大小根據該使用者模式快取記憶體及該內核模式快取記憶體中之至少一者中之資料輸入/輸出速率而改變。
  10. 如申請專利範圍第1項之裝置,其中該CPU核心為一第一CPU核心,並且該裝置至少包括在一CPU封裝中之一第二CPU核心,並且該第一CPU核心與該第二CPU核心共用一L3快取記憶體。
  11. 一種設備,該設備包括: 至少一個中央處理單元(CPU)核心,該至少一個中央處理單元(CPU)核心包括: 至少一第一CPU線緒;及 該第一CPU線緒可存取之一L1快取記憶體總成; 該L1快取記憶體總成被劃分為使用者模式快取記憶體及內核模式快取記憶體。
  12. 如申請專利範圍第11項之設備,其中該L1快取記憶體總成包括被分成該使用者模式快取記憶體及該內核模式快取記憶體之單一實體L1快取記憶體。
  13. 如申請專利範圍第11項之設備,其中該L1快取記憶體總成包括僅建立該使用者模式快取記憶體之一第一實體L1快取記憶體及僅建立該內核模式快取記憶體之一第二實體L1快取記憶體。
  14. 如申請專利範圍第11項之設備,其中在按一使用者模式之CPU操作期間,允許所有使用者模式應用程式僅對該使用者模式快取記憶體執行輸入/輸出操作,而不允許使用者模式應用程式存取或以其他方式「看到」內核模式快取記憶體,包括自內核模式快取記憶體逐出資料。
  15. 如申請專利範圍第14項之設備,其中按一內核模式操作之程式僅被允許存取內核模式快取記憶體以寫入內核模式資料。
  16. 如申請專利範圍第11項之設備,該設備包括: 用於在該第一CPU線緒與該L1快取記憶體總成之間傳送資料之複數個信號線,該CPU線緒被組態成在該複數個信號線中之至少一模式信號線上曝露一二進位值,該模式信號線上之一第一二進位值指示僅與內核模式快取記憶體相關聯之一記憶體位址,該模式信號線上之一第二二進位值指示僅與使用者模式快取記憶體相關聯之一記憶體位址,其中與一使用者模式應用程式相關聯之資料僅能夠被寫入至使用者模式快取記憶體並且自其讀取,使得無使用者模式應用程式能夠偵測該內核模式快取記憶體之操作。
  17. 如申請專利範圍第11項之設備,該設備包括L2快取記憶體,其中與使用者模式應用程式相關聯之資料僅能夠被寫入至該L2快取記憶體之使用者模式快取記憶體並且自其讀取,使得無使用者模式應用程式能夠偵測該L2快取記憶體按該內核模式之操作。
  18. 如申請專利範圍第11項之設備,其中該CPU核心為一第一CPU核心,並且該設備至少包括在一CPU封裝中之一第二CPU核心,並且該第一CPU核心與該第二CPU核心共用一L3快取記憶體。
  19. 一種方法,該方法包括: 根據執行模式隔離一處理器之資料快取記憶體,執行模式包括內核模式及使用者模式;及 僅將使用者模式應用程式資料寫入至使用者模式快取記憶體,從而藉由不與使用者模式軟體共用內核模式快取記憶體來消除惡意軟體辨別內核模式快取記憶體中之操作之可能性。
  20. 如申請專利範圍第19項之方法,該方法包括使用內核模式軟體來調整該內核模式快取記憶體及該使用者模式快取記憶體之相對大小。
TW108109802A 2018-04-12 2019-03-21 用於幽靈緩解之資料快取記憶體隔離的方法及裝置 TWI709909B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/951,553 US10691621B2 (en) 2018-04-12 2018-04-12 Data cache segregation for spectre mitigation
US15/951,553 2018-04-12

Publications (2)

Publication Number Publication Date
TW202004495A true TW202004495A (zh) 2020-01-16
TWI709909B TWI709909B (zh) 2020-11-11

Family

ID=68159981

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108109802A TWI709909B (zh) 2018-04-12 2019-03-21 用於幽靈緩解之資料快取記憶體隔離的方法及裝置

Country Status (5)

Country Link
US (2) US10691621B2 (zh)
KR (1) KR102436979B1 (zh)
CN (1) CN112602068B (zh)
TW (1) TWI709909B (zh)
WO (1) WO2019199544A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10691621B2 (en) * 2018-04-12 2020-06-23 Sony Interactive Entertainment Inc. Data cache segregation for spectre mitigation

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049866A (en) * 1996-09-06 2000-04-11 Silicon Graphics, Inc. Method and system for an efficient user mode cache manipulation using a simulated instruction
US6243788B1 (en) * 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
US8706964B1 (en) * 2007-09-28 2014-04-22 The Mathworks, Inc. Automatic generation of cache-optimized code
US8019946B2 (en) 2008-07-31 2011-09-13 Samsung Electronics Co., Ltd. Method and system for securing instruction caches using cache line locking
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
EP2689336A1 (en) * 2011-03-25 2014-01-29 BlackBerry Limited Dynamic power management of cache memory in a multi-core processing system
GB2511957B (en) * 2011-11-22 2015-02-11 Mips Tech Inc Processor with kernel mode access to user space virtual addresses
US20170242797A1 (en) * 2014-09-25 2017-08-24 Intel Corporation Reducing interconnect traffics of multi-processor system with extended mesi protocol
US9747218B2 (en) 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
US10001995B2 (en) 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US10579125B2 (en) 2016-02-27 2020-03-03 Intel Corporation Processors, methods, and systems to adjust maximum clock frequencies based on instruction type
US10931652B2 (en) * 2017-01-24 2021-02-23 Microsoft Technology Licensing, Llc Data sealing with a sealing enclave
US10691621B2 (en) * 2018-04-12 2020-06-23 Sony Interactive Entertainment Inc. Data cache segregation for spectre mitigation

Also Published As

Publication number Publication date
CN112602068B (zh) 2024-01-30
KR102436979B1 (ko) 2022-08-29
US10691621B2 (en) 2020-06-23
WO2019199544A1 (en) 2019-10-17
CN112602068A (zh) 2021-04-02
US20200272582A1 (en) 2020-08-27
US20190317903A1 (en) 2019-10-17
KR20200131857A (ko) 2020-11-24
TWI709909B (zh) 2020-11-11
US11307999B2 (en) 2022-04-19

Similar Documents

Publication Publication Date Title
EP3230873B1 (en) Computing method and apparatus with persistent memory
US9021148B2 (en) Fast path userspace RDMA resource error detection
KR20200016809A (ko) 솔리드-스테이트 스토리지 미디어의 격리 영역들의 가상화
US9239682B2 (en) I/O hint framework for Server Flash Cache
US10061701B2 (en) Sharing of class data among virtual machine applications running on guests in virtualized environment using memory management facility
US10241926B2 (en) Migrating buffer for direct memory access in a computer system
US11836087B2 (en) Per-process re-configurable caches
US20220114086A1 (en) Techniques to expand system memory via use of available device memory
US9715455B1 (en) Hint selection of a cache policy
TWI709909B (zh) 用於幽靈緩解之資料快取記憶體隔離的方法及裝置
US20200201691A1 (en) Enhanced message control banks
CN113391881A (zh) 中断的管理方法、装置、电子设备及计算机存储介质
US20150326684A1 (en) System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access
US20230281113A1 (en) Adaptive memory metadata allocation
US9977730B2 (en) System and method for optimizing system memory and input/output operations memory
US10216524B2 (en) System and method for providing fine-grained memory cacheability during a pre-OS operating environment
KR20220018499A (ko) 비휘발성 스토리지 파티션 식별자
US20240028344A1 (en) Core mapping based on latency in a multiple core processor
US11714753B2 (en) Methods and nodes for handling memory
KR20240022969A (ko) 동적으로 스택 카나리를 업데이트하는 방법 및 시스템
KR101523469B1 (ko) 식별 번호를 기록하여 블록 간의 시간적 선후 관계를 추출하는 캐시 방법 및 시스템