TWI798370B - 非暫時性電腦可讀取儲存媒體以及用於在裝置中存取資料的系統與方法 - Google Patents

非暫時性電腦可讀取儲存媒體以及用於在裝置中存取資料的系統與方法 Download PDF

Info

Publication number
TWI798370B
TWI798370B TW108107018A TW108107018A TWI798370B TW I798370 B TWI798370 B TW I798370B TW 108107018 A TW108107018 A TW 108107018A TW 108107018 A TW108107018 A TW 108107018A TW I798370 B TWI798370 B TW I798370B
Authority
TW
Taiwan
Prior art keywords
cache
cache line
access
line
speculative
Prior art date
Application number
TW108107018A
Other languages
English (en)
Other versions
TW201945941A (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 TW201945941A publication Critical patent/TW201945941A/zh
Application granted granted Critical
Publication of TWI798370B publication Critical patent/TWI798370B/zh

Links

Images

Classifications

    • 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
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • 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
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/55Detecting local intrusion or implementing counter-measures
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • 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/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

快取可易於受到例如幽靈及熔斷等旁路攻擊,所述攻擊 涉及指令的推測性執行,進而透露關於不允許攻擊者存取的快取的資訊。存取權限可儲存於快取中,例如快取表的條目中或快取表的區域資訊中。視需要,若在記憶體指令待決時存取權限發生改變,則可重新檢查存取權限。視需要,隨機索引值可儲存於快取中,且至少部分地用於識別快取行的記憶體位置。視需要,可將記憶體指令的推測性負載中所涉及的快取行標記為推測性。在將推測性負載鑒別為非推測性的條件下,可將快取行標記為非推測性;且在將推測性負載鑒別為被誤推測的條件下,可自快取移除快取行。

Description

非暫時性電腦可讀取儲存媒體以及用於在裝置 中存取資料的系統與方法 [相關申請案的交叉參考]
本申請案主張於2018年3月5日提出申請的美國臨時申請案第62/638,450號的權利。上述申請案的全部揭露內容併入本文供參考。
本發明是有關於用於在電腦記憶體裝置中存取資料的方法及系統,包括用於改良快取安全性的機制及技術。
本章節提供與本發明有關的背景資訊,所述背景資訊未必是先前技術。
處理器可配備有快取,該些快取可儲存某一大容量記憶體(例如動態隨機存取記憶體(dynamic random access memory,DRAM))中所儲存的資料及指令的複本。在本文中,用語「記憶體」可用以統指所有現有的及未來的記憶體實施方案。快取記憶體或簡稱為「快取」可由較其他記憶體實施方案更小且快得多的 記憶體構建而成,且隨後在任何給定時間只能保存主記憶體或輔助儲存裝置中所儲存的資料的一部分的複本。較小的快取可使用靜態隨機存取記憶體(static random access memory,SRAM)來實作,且大的快取可使用DRAM來實作。
電腦系統的記憶體系統可包括一系列快取,且一些電腦系統可包括實體上及/或邏輯上較靠近主記憶體的較大及較慢的快取(在本文被稱為較高層階快取)、以及實體上及/或邏輯上較靠近處理器的較小及較快的快取(在本文被稱為較低層階快取)。此種配置可被稱為快取階層(cache hierarchy)、記憶體階層或記憶體系統。快取階層中的每一層階(level)被稱為快取層階。
本章節提供對本發明的大體概述,而不是對其完整範圍或其所有特徵的全面揭露。
在示例性實施例中,提供一種用於在裝置的快取中存取資料的方法,其中所述方法包括:將所述快取中所儲存的快取行的存取權限儲存於緩衝器中;對於涉及所述快取行的記憶體指令,至少部分地基於所述快取行的所述存取權限來判斷是否允許所述記憶體指令存取所述快取行;以及在判斷不允許所述記憶體指令存取所述快取行的條件下,避免改變所述快取。
在示例性實施例中,提供一種用於在裝置中存取資料的系統,所述系統包括:快取;以及至少一個處理器,被配置以:將快取行的存取權限儲存於緩衝器中;對於涉及所述快取行的記 憶體指令,至少部分地基於所述快取行的所述存取權限來判斷是否允許所述記憶體指令存取所述快取行;以及在判斷不允許所述記憶體指令存取所述快取行的條件下,避免改變所述快取。
依據本文中所提供的說明,其他適用領域將變得顯而易見。本發明內容中的說明及具體實例僅旨在用於說明,而非旨在限制本發明的範圍。
101、204、401、501、511、701:CPU
102:第一層階私有快取/層階1快取
103:第二層階快取/快取
104:磁碟
105:主記憶體/記憶體
200:指令快取
201:指令TLB(ITLB)
202:CPU核心
205:資料TLB(DTLB)
206:資料快取
207:層階2(及可能更高層階)快取
208:記憶體
301:CPU/CPU核心
302:虛擬位址(VADDR)/位址
303:資料轉譯後備緩衝器(DTLB)/TLB
304、308、312:位址標簽(ATAG)
305:實體頁訊框(PPF)
306、310、415、416、424:多工器(MUX)
307、504、514:L1快取
309、313、505:資料(DATA)
311:L2快取
314:第三多工器(MUX)
315、450:資料傳回
316:實體位址(PADDR)
317:L1未命中(L1 MISS)
318、319、320:邏輯
402:位址(ADDR)
410、610:CLB1
411、421、611:位址標簽(AT)
412、422、612:快取位置表(CLT)
413、425:區域資訊(RI)
414:位置資訊/LI
417、418、502、512:位址
420:CLB2
423:CLB1指標(CIP)
430:快取階層L1/L1快取
431:快取行(DATA)
432、442、506:反向指標(BP)
440:快取階層L2/L2快取
441:快取行(DATA)/資料單元
503:CLB1A
507、517:箭頭
513:CLB1、CLB1B
523:共享式L2快取/L2快取
570、571:節點
580、590:節點
601:CPU/處理器
614、622、714:實體位址(PA)
615:區域分類位元(P)
616、716:隨機索引值(RIV)
617、717:TLB重新載入位元(TR)
618、623、718:存取權限(AP)
620、710:TLB
621、711:虛擬位址標簽(VAT)
630:CLB2/L1快取
640、740:比較
712:欄位存在位元(PB)
併入本說明書中並構成本說明書一部分的附圖示出一或多個示例性實施例,並與本說明一起闡釋該些示例性實施例的至少一些部分。附圖並非旨在限制本發明的範圍。在圖式中:
圖1是示出多處理器系統的示例性實施例的方塊圖。
圖2是包括快取階層的單處理器系統的示例性實施例的方塊圖。
圖3示出二層階快取階層的示例性實施例,所述二層階快取階層包括集合關聯快取(set-associative cache)及集合關聯資料轉譯後備緩衝器(translation look-aside buffer,TLB)。
圖4是示出包括二層階快取階層及二層階快取行位址後備緩衝器(cacheline address lookaside buffer,CLB)階層的系統的示例性實施例的方塊圖,其中第一層階被虛擬存取(virtually accessed)且第二層階被實體存取(physically accessed)。
圖5是說明包括二個中央處理單元(central processing unit,CPU)的系統的示例性實施例的方塊圖,所述二個CPU連接至二 層階快取階層及二層階快取行後備緩衝器階層。
圖6是示出說明圖4所示CLB1的經擴展實施方案的示例性實施例的方塊圖。
圖7是示出說明圖3所示TLB的經擴展實施方案的示例性實施例的方塊圖。
以下對示例性實施例的說明是參照附圖進行。在不同的圖式中,相同的參考編號識別相同或相似的元件。以下詳細說明並不限制本發明。相反,本發明的範圍由隨附申請專利範圍界定。為簡單起見,以下示例性實施例中的一些實施例是關於快取階層的術語及結構以及用於在此類階層中執行查找的方法而論述。然而,示例性實施例並非僅限於該些配置,而是可擴展至稍後所論述的其他佈置。
在本說明書通篇中所提及的「示例性實施例(example embodiment或example embodiments)」旨在意指可在所揭露的標的的至少一個示例性實施例中包括特徵、結構或特徵。因此,在本說明書通篇的各個地方出現的片語「在示例性實施例中(in an example embodiment或in example embodiments)」未必是指同一實施例或相同的實施例。此外,在一或多個示例性實施例中,可以任何適合的方式組合各特徵、結構或特徵。
現在將參照附圖更全面地闡述示例性實施例。
圖1繪示示例性電腦系統,其中每一CPU 101被指派有 其自己的第一層階私有快取(first-level private cache)102(L1快取),其中私有快取是如下快取:資料單元的空間只能由所述快取本端的(local)CPU的及/或與所述快取處於同一節點中的CPU的活動存取,其中所述快取是所述節點私有的。在此示例性電腦系統中,第二層階快取(second-level cache,L2)103由所有CPU 101共享,且可包含由所有CPU 101存取的資料及指令。快取103為共享式快取,由於資料單元的空間可供任何CPU 101的活動使用。快取103亦是共享式快取,由於每一資料單元只能存在於一個共享式複本中,而每一私有快取可具有複製的複本。主記憶體105亦儲存所有CPU 101可存取的指令及資料。主記憶體105是使用實體位址(physical address;或簡稱PA)來存取,而由CPU 101產生的位址被識別為虛擬位址(virtual address;或簡稱VA)。具有數個CPU及數個私有快取的電腦系統(例如圖1中所示的示例性電腦系統)的特徵可為快速地在快取中的一者中找到所請求資料單元及/或使在不同節點中儲存的資料的多個複本保持一致的機制。
在圖1所示的示例性電腦系統中,若CPU 101存取儲存於磁碟104上的資料,則虛擬記憶體系統(圖1中未示出)將被識別為一頁(page)的資料組塊(chunk)自磁碟104移動至記憶體105,並創建自與所述頁對應的虛擬位址至實體位址的轉譯。被識別為「轉譯後備緩衝器」或簡稱TLB的一種特殊的轉譯快取(圖1中未示出)快取自虛擬頁至實體頁的轉譯映射。虛擬記憶體系統 可被視為快取系統,其將位於磁碟104中的資料的一部分儲存於記憶體105中。
圖2示出圖1所示快取組織的更詳細視圖,其中CPU 204被示出為包含數個類快取(cache-like)結構(例如指令TLB(ITLB,201)及資料TLB(DTLB,205))以及CPU核心202。層階1快取102被示出為包括夾置於CPU 204與層階2(及可能更高層階)快取207之間的指令快取200及資料快取206。圖2亦示出連接至快取階層的大容量記憶體208。
當CPU 204請求快取中存在的資料(被稱為快取命中(cache hit))時,所述請求可較對快取中不存在的資料的存取(被稱為快取未命中(cache miss))快得多地得以服務。在CPU 204上運行且經歷較少快取未命中的應用程式可能會較展現出較多快取未命中的應用程式更快地執行及/或消耗更少的能量,假設此二個應用程式在其他方面具有類似的性質。因此,提供如下電腦系統可為有利的:所述電腦系統減少快取未命中及/或使快取命中及快取未命中相對於其存取延時(access latency)及/或此類記憶體異動所消耗的能量而言為有效的。
資料可以固定組塊儲存於快取中,該些固定組塊大於處理器的字元大小(被稱為快取行)。示例性實施例的特徵可為例如32個位元組、64個位元組及128個位元組等的快取行大小、以及更大及/或更小的快取行大小、及/或可變的快取行大小。
在示例性實施例中,記憶體208中的資料放置可以如下 的方式被組織:每一資料字元被靜態映射成駐存(reside)於一個特定快取行中。每一快取可具有隨機索引值(random index value),以識別所述快取的其中可駐存有每一快取行的一部分(被稱為集合)。所述集合可包含同時保存一或多個快取行的空間。集合可保存的快取行的數目被稱為其關聯性(associativity)。在集合關聯快取中,所有集合的關聯性為相同的。關聯性亦可因集合而異。集合中可保存快取行的空間中的每一者被稱為路(way)。
為了確定每一集合中所儲存的每一快取行的身份,快取中的快取行各自具有與其相關聯的某一識別符(identifier),例如位址標簽(address tag,ATAG)。當在快取中尋找特定快取行時,可使用快取行的位址來確定所述快取行可駐存於的快取集合。將對應集合的快取行的位址標簽與用於識別快取行的位址的標簽部分(例如,參見圖3中所示且以下所述的位址標簽(ATAG))進行比較,以判斷所需的快取行是否駐存於快取中,且若駐存於快取中,則判斷其駐存於哪一路中(例如,其駐存於可保存快取行的集合中的空間中的哪一者中)。在示例性實施例中,此種ADDR位址標簽的大小可相當大,且可處於30個位元至40個位元的範圍內,此可為快取行的大小的6%至10%。
在示例性實施例中,快取可具有內建的對策來判斷欲在集合中保留哪一快取行以及欲逐出(亦被稱為替換)哪一快取行以為正引入集合中的新快取行騰出空間(被稱為快取的替換策略(replacement policy))。所述被替換的快取行被稱為犧牲者 (victim)或被替換快取行。可與快取記憶體結合使用的替換策略包括但不限於最近最少使用(least-recently used,LRU)、偽LRU(pseudo-LRU)及隨機替換策略。
在包容性(inclusive)快取階層中,一個快取層階中存在的資料區塊(例如,快取行)(例如,L1快取中的資料區塊)的複本亦可存在於更高快取層階(此處,更高是指數字高於1的快取層階)中,例如,L2快取及L3快取中。排除性(exclusive)快取階層在整個快取階層中僅存在有資料區塊(例如,快取行)的一個複本,而非包容性(non-inclusive)階層可具有此二種對策的混合。在排除性快取階層及非包容性快取階層的示例性實施例中,快取行可在自給定快取層階被逐出後儲存於下一更高快取層階中。
現在闡述用於識別例如圖1及圖2中所示的示例性快取階層內的特定快取位置的一些技術。圖3示出包含CPU 301、資料轉譯後備緩衝器(DTLB)303、L1快取307及L2快取311的電腦系統節點的組織的實例,L2快取311的特徵為包括ATAG 312及資料(DATA)313的快取條目(cache entries)。CPU 301產生包含虛擬位址302(VADDR)的記憶體請求,虛擬位址302(VADDR)用於在DTLB 303中執行關聯查找(associative lookup)。在此實例中,虛擬位址302被劃分成三個部分:P-OFFSET(頁偏移量,例如包含低階位元)、標簽(TAG)及索引(INDEX)。虛擬位址302的INDEX部分用於識別DTLB 303內可儲存位址轉 譯的集合。
在此實例中使用的所示出DTLB 303具有雙路關聯組織,其示出所識別集合的二個條目。每一條目包含位址標簽(ATAG)304及實體頁訊框(physical page frame,PPF)305。將虛擬位址302的TAG部分與所識別集合的每一條目的ATAG 304進行比較。邏輯318針對條目中的任一者來判斷是否存在匹配,且若存在匹配,則控制多工器(multiplexer,MUX)306選擇對應的PPF 305。藉由將由MUX 306選擇的PPF 305與虛擬位址302的P-OFFSET部分序連來構成實體位址(PADDR)316。另一選擇為,若所識別集合的條目中的任一者均不與虛擬位址302的TAG部分匹配,則執行TLB填充操作,並將對應的轉譯條目引入DTLB 303中。
PADDR 316用於在L1快取307中執行查找。更具體而言,PADDR 316的INDEX部分用於識別可儲存包含所請求資料的快取行的集合。L1索引可包含與DTLB索引不同的位元。所繪示的L1快取307具有2路關聯組織,其中在所識別集合中具有二個條目。每一條目包含位址標簽(ATAG)308及對應快取行的資料309。將PADDR 316的TAG部分與所識別集合的每一條目的ATAG進行比較。邏輯319針對條目中的任一者來判斷是否存在匹配,且控制MUX 310選擇對應的資料並將資料傳回315至CPU核心301。若條目中的任一者均不匹配(由L1未命中(L1 MISS)317繪示),則由提供給第三多工器(MUX)314的邏輯320在L2快 取311中執行查找,第三多工器(MUX)314將資料傳回315至CPU核心301。
雖然針對L2快取查找將PADDR 316劃分成INDEX部分及TAG部分可不同於針對L1快取查找所作的劃分,但針對L2快取查找剩餘的步驟可與針對L1快取中的查找而執行的剩餘步驟類似。若確定在L2快取中未命中,則可在更高層階快取中執行新的查找或執行對記憶體的存取。若L1快取所使用的PADDR 316的INDEX部分完全由P_OFFSET位元構成,則可在來自MUX 306的PPF資訊可用之前開始對L1快取307的存取。此可被稱為虛擬索引實體標簽快取(virtually indexed,physically tagged cache,VIPT)。L2(及更高層階)快取可較L1快取包含更大數目的集合,且TLB可轉譯位址位元中的一些位址位元來用作索引位元。
在示例性實施例中,可將各自具有與圖3所示者類似的記憶體階層的數個「節點」連接於一起,以形成連貫的多處理器系統。在圖1所示的多處理器的示例性實施例中,每一CPU具有其自己的私有L1快取。多處理器配置可能會使對所請求資料的駐存位置進行定位的任務複雜化,乃因在下一更高快取層階中搜尋資料可能不夠。採用搜尋其他節點的快取並且使儲存於不同節點中的資料的多個複本保持一致的機制來執行該些任務。
圖4呈現包括無標簽快取(tag-less cache)的示例性實施例,所述無標簽快取可依賴於與匹配的快取表條目(cache table entry)CTE(有時被稱為區域位置條目)的所請求快取行對應的 位置資訊LI(有時被稱為快取行指標CP)來指示所請求快取行駐存於哪一快取中以及所述快取中的哪一位置。此將使實施例在適當的快取處執行直接快取查找。
例如,圖4所示的示例性系統示出示例性多處理器系統中的無標簽節點,其中位置資訊可用於區分L1快取與L2快取。位置資訊亦可用於區分在示例性多處理器系統的其餘部分(圖4中未示出)中存在的其他快取。位置資訊亦可能夠識別快取內儲存所請求資料的關聯路(associative way)。圖4中所示的示例性無標簽節點可連接至示例性多處理器系統中的其他節點,所述其他節點具有由集合關聯快取形成的二層階快取階層及CPU(其可包含一或多個快取,此處繪示為L0),其中CPU 401產生位址(ADDR)402。在示例性實施例中,ADDR 402是VA。在另一示例性實施例中,ADDR 402是PA。圖4亦示出由集合關聯快取行位址後備緩衝器(CLB)形成的二層階CLB階層,其中CLB1 410及CLB2 420是用ADDR進行索引。CLB1中的每一條目至少包含位址標簽(address tag,AT)411、快取位置表(cache location table,CLT)412。在示例性實施例中,AT 411儲存虛擬位址的一部分,且在不同的實施例中,AT 411儲存實體位址的一部分。所述條目可儲存附加資訊,例如區域資訊(region information,RI)413。CLT儲存對應區域(亦被稱為微頁(micropage))的快取行的位置資訊(LI)。圖4示出每區域四個LI作為實例。發明人的實證研究表明,每區域8個至16個LI(例如,每區域8個至16個資料 單元及/或快取行)是具成本效益且有效的。位置資訊編碼多處理器系統內可找到對應快取行的位置。位置資訊例如可包含可在其中找到資料單元的快取的身份。位置資訊亦可包含所述快取內可找到資料單元的位置,且被稱為關聯快取中的路資訊。另一選擇為,位置資訊可包含可在其中找到資料單元的節點的身份,及/或可包含提供關於資料單元的位置的資訊的符碼(symbol)。例如,符碼「MEM」可指示可在記憶體中找到資料單元。在示例性實施例中,符碼「don’t know」指示對應資料單元的位置未記錄於與區域對應的CLT中。
區域資訊(RI)413儲存適用於區域的屬性。此種屬性例如可為區域(或其一部分)的實體位址及一些區域分類資訊(例如,若區域僅駐存於此CLB中而不駐存於其他CLB中,則為編碼)。
MUX 416選擇具有與ADDR 402的TAG部分匹配的AT 411的CLT,且MUX 415基於ADDR 402的位置資訊偏移量(LI-OFFSET)部分來選擇與所請求快取行對應的LI 414。若所選LI中所儲存的快取身份對應於L2快取440,則使用位址402的INDEX部分及位置資訊414的一部分來形成用於在L2快取440中存取所請求資料單元的位址417。在集合關聯L2快取440的實例中,所述部分包含與儲存所請求資料單元的關聯路對應的資訊。在示例性實施例中,L2索引是使用ADDR 402的一部分及區域資訊RI 413中所儲存的一些實體位址而形成。若所選LI中所儲存的快取身份對應於L1快取430,則以類似的方式形成用於在L1 快取430中存取所請求資料單元的位址418。
對於包括具有相同關聯性的集合關聯快取的快取階層,每一LI中的位元數目取決於快取階層的由CLB所涵蓋的路數目及快取數目。可為無效型樣(invalid pattern)保留一個LI值(「MEM」)。在此實施方案中,LI位元的數目等於以2為底由CLB所涵蓋的路數目的對數加上以2為底由CLB所涵蓋的快取層階數目的對數加上1(例如,log2(路數)+log2(層階數)+1)。若不同的快取層階的路數目各異,或者若使用除集合關聯快取之外的快取,則可存在其他LI表示。在示例性實施例中,LI的大小可較位址標簽的大小小得多。可使用6個LI位元來編碼在每一層階處具有16路關聯快取的2層階快取階層。
圖4示出其中L1快取430及L2快取440中的每一條目分別具有分別相關聯的反向指標(backwards pointer,BP)432及442與其快取行(DATA)431及441的示例性實施例。在不同的實施例中,BP指標指向其各自的在CLB2 420中或CLB1中相關聯的CTE。CLB2 420中的每一CTE包含位址標簽(AT)421、CLT 422、CLB1指標(CIP)423及區域資訊(RI)425。若CLB2條目具有駐存於CLB1 410中的對應CLT,則其CIP將指向那個條目。在此種情形中,CLB1 410將包含此區域的最新資訊(up-to-date information)。在此種情形中,CLB1中的CTE被識別為主動CLB條目,而CLB2 420中所述區域的CLB條目包含被動條目(passive entry)。CLB2 420可將層階及路資訊提供至一或多個多工器 (MUX)424。在示例性實施例中,若CLB1 410包含區域的主動條目(active entry),則CLB2 420可包含所述區域的被動條目。
在示例性實施例中,當未能在CLB1 410中找到匹配的CTE時,在CLB2 420中尋找對應的CTE並將其複製至CLB1,同時將CLB1中的舊條目複製至CLB2 420。該些操作可被稱為「溢出及填充(spill and fill)」或簡稱為「溢出/填充」,此在圖4中表示為SPILL及FILL。當包容性快取將資料單元逐出至下一層階以為新的資料單元騰出空間時,可發生溢出,所述新的資料單元可能是自下一快取層階引入(填充)。在不同的CLB層階之間將執行類似的溢出/填充活動,其中由於所述CLB層階形成包容性階層,因此CLB條目在所述CLB層階之間移動。在示例性實施例中,目錄(directory)DIR位於CLB階層的根處,且溢出/填充是在最高層階CLB處進行。
在示例性實施例中,可與溢出/填充活動並行地起始對所請求資料單元的存取。
在示例性實施例中,CLB階層是包容性的,但快取階層L1 430、L2 440及更高層階快取不強加包容性。一或多個快取可向CPU 401傳回450資料。
在示例性實施例中,多層階CLB實施方案的CLB的內容與所述CLB所管理的多層階快取系統的資料單元的位置保持一致。在快取階層中被移動(包括但不限於由來自CPU的對資料單元的請求、對資料單元的逐出、預取(prefetching)活動及一致性 活動所引起的移動)的資料單元引起對其在CLB中的一或多者中的對應位置資訊的更新。例如,在圖4中,自L2快取440逐出資料單元441可涉及以下步驟:跟隨資料單元441的相關聯的BP 442指標以找到對應的CTE,所述CTE可駐存於CLB2 420中;並將所述CTE的對應位置資訊更新成指向資料單元的新位置(例如,儲存MEM符碼)。若對應的CLB2的CTE的CIP指標有效,則跟隨CIP以在CLB1 410中找到對應的CTE,並更新其與快取行相關聯的位置資訊。在示例性實施例中,若存在有效CIP指標,則不更新CLB2中的條目。在示例性實施例中,僅更新使用中CLT。
在使用無標簽快取系統(例如,其中儲存於快取中的資料單元不具有與其相關聯的位址標簽的快取系統)的示例性實施例中,當CPU 401請求位於不同儲存裝置中的各種快取行時,可能會發生數個不同類型的異動。例如,圖4中所繪示的節點可為由數個此種快取節點構成的較大多處理器系統的子系統(或節點)。使諸多節點中的快取的資料保持一致可涉及快取一致性協定,所述快取一致性協定可包括探聽及/或基於目錄的一致性。一致性協定可向圖4中所繪示的節點發送一致性請求(EXTERNAL REQUESTS)。該些請求可首先轉至CLB2 420,其可確定此快取系統不具有所請求的快取行(CLB2未命中,或者對具有非使用中(inactive)CIP的條目的CLB2命中,且所請求快取行的位置資訊保存無效記憶體型樣)。若如此,則不涉及與資料快取L1及L2有關的進一步行動(被稱為一致性過濾(coherence filtering)),而 是可更新使用中CLT中對應的LI以追蹤與資料單元相關聯的新位置。否則,CLB2查找可提供所請求的位置資訊(CLB2命中,且所請求快取行的位置資訊保存快取行的位置),或者其可確定CLB1 410儲存相關聯的位置資訊(CLB2命中及有效CIP)。在後一種情形中,在CLB1 410中的查找可確定所請求快取行的位置或者確定快取行不駐存於此快取子系統中。CLB1中的對應位置資訊包含記憶體型樣。視一致性請求的性質(例如失效請求、讀取請求或排除性讀取請求)而定,一致性協定可對所請求資料單元執行一些操作,並可能改變其狀態。使用中CLT中的對應LI亦可被更新以追蹤與資料單元相關聯的新位置。
即使圖4中所示的節點包括二個快取層階,在示例性實施例中,節點亦可使用其他數目的層階來進行組裝,並且可包含多於一個CPU。此外,在示例性實施例中,節點中快取層階的數目及CLB層階的數目可有所不同。
示例性實施例亦可應用於具有共享由CLB管理的快取的數個CPU的系統。例如,圖5示出根據示例性實施例由各自處於自己的單層階快取階層內的二個CPU節點(580及590)構建的示例性系統,所述單層階快取階層具有一個CLB1(CLB1A 503及CLB1B 513)及私有快取L1快取(504及514)。圖5所示的示例性系統亦包含在二個CPU 501、511之間共享的共享式L2快取523(有時被稱為最末層階(last-level)快取LLC)。在圖5所示的示例性系統中,共享式L2快取523包含特徵為資料505及反向 指標(BP)506的條目。
CLB1(513或503)中的查找基於由其各自的CPU(501、511)產生的位址502、512來選擇單個LI,例如使用與CLB1 410類似的技術。如由CLB1A 503及CLB1B 513中所示的二個CLT條目起始的三個箭頭(包括507、517)所指示,所選LI可識別出位置在對應的L1快取(分別為504及514)中、L2快取523中或另一節點(分別由570及571所示)中。在此實例中,CLB1A 503在共享式L2 523中識別所存取資料505,而CLB1B 513識別出其所存取資料是位於其L1 514中(由實心箭頭所示)。若識別出其他節點儲存資料,則在所述其他節點的CLB中執行查找以確定所請求快取行在其私有快取內的確切位置。
減少電腦系統中可能容許安全攻擊(例如幽靈(Spectre)、熔斷(Meltdown)及其他旁路攻擊)的旁門(side-door)的存在可為有利的。
處理器亂序地執行獨立的指令,以隱藏由繁忙的功能單元引起的延遲或記憶體存取延遲。在示例性實施例中,處理器可嘗試將指令串流中的後續操作排程給可用功能單元,而不是停頓(stall)。在完成後,指令在重新排序緩衝器(reorder buffer,ROB)中排入佇列。當指令自ROB退出時,指令被正式認可並使得系統中的其他處理器及/或處理器核心自外部可見。指令只能在所有先前的指令已退出時自重新排序緩衝器退出。
現在論述可與快取的安全性有關的一些推測性執行 (speculative execution)方面。
參照圖1所示的示例性電腦系統,CPU 101可較其對快取及記憶體的存取更快地執行指令。為了補償此種情形,CPU可執行推測性工作。推測性工作的實例包括沿著可能是錯誤路徑的執行路徑開始執行指令,以不同於程式次序的次序執行指令,以及在第一次請求資料之前將資料預取至快取中。
在一些處理架構中,處理器可在發生分支或函式呼叫時推測程式中欲提取的下一指令,及/或推測應由負載傳回的值。在一些此種情況中,對第一指令進行評估的處理器無法判斷是否應執行程式中的下一指令。此種情況可因在將虛擬位址轉譯成實體位址並隨後檢查位置的存取權限時出現延遲所致。作為實例,若程式中的下一指令嘗試藉由讀取操作來存取記憶體位置A,則可能會花費一些時間來判斷所述程式是否具有存取記憶體位置A的權限(permission)。當處理器正在等待查看其是否具有讀取A的權限時,其可推測性地執行讀取,只要其在最終確定不允許存取時「抹除」所述讀取的軟體可見作用即可。
在一些情況中,推測可由被誤預測的分支引起。分支預測(branch prediction)是一種由處理器用來減少不被執行的推測性指令的數目的技術。分支涉及分支目標的計算。條件分支(conditional branch)另外涉及對分支條件的評估,以判斷是否「接受」分支。一個分支目標緩衝器(Branch Target Buffer,BTB)可儲存自最近執行的分支指令的位址至分支目標位址的映射。維持 最近分支結果的記錄的另一硬體組件用於判斷是否接受分支。
幽靈及熔斷攻擊利用CPU快取作為重要的資訊洩露(information leakage)源。基於快取的旁路攻擊是其中敵手在受侵害程式(victim program)執行時探索快取行為以獲取關於所述受侵害程式的知識且然後按照所述知識行動以攻擊主機系統的安全惡意探索(security exploit)。具體而言,該些情況依賴於敵手能夠區分快取命中與未命中。
一些基於快取的攻擊可利用計時通道(timing channel)作為攻擊向量的一部分。該些計時通道可利用可量測的記憶體及/或頁表存取延時差來監視受侵害者行為。計時攻擊的實例包括充填+探測(Prime+Probe)及排清+重新載入(Flush+Reoad)。
在充填+探測攻擊中,攻擊者首先藉由以其自己的快取行填充一或多個集合來對快取進行充填,且隨後容許受侵害者執行。在受侵害者已執行之後,攻擊者藉由重新存取其先前所充填的快取行並對該些存取進行計時來探測快取。較長的存取時間(即,快取未命中)表明受侵害者已觸及映射至同一集合的位址,進而逐出攻擊者的快取行。
排清+重新載入攻擊可具有與充填+探測類似的目標,但可依賴於攻擊者與受侵害者之間的共享式虛擬記憶體(例如,共享式唯讀庫或頁重複資料刪除(page deduplication))以及藉由虛擬位址進行排清的能力。在排清+重新載入攻擊中,攻擊者可識別特定快取行,而非僅僅快取集合。在排清+重新載入中,且攻擊者 可藉由排清感興趣的共享式快取行且隨後容許受侵害者執行而開始。在受侵害者已執行之後,攻擊者可重新載入先前所逐出的快取行,同時對存取的持續時間進行計時,以判斷快取行是否由受侵害者預先載入。
熔斷及幽靈代表最近發現的一類快取計時旁路攻擊,其利用了亂序及推測性執行對快取狀態的影響。熔斷打破了阻止應用程式存取任意系統記憶體的機制。幽靈對現代處理器中的分支預測器進行誤訓練,以欺騙應用程式存取其記憶體中的任意位置。在誘導推測性執行之後,二種攻擊使用計時旁路(具體而言,排清+重新載入)來識別處理器推測性地存取了哪些位址。藉由誘導對取決於(藉由位址計算)前一特權讀取存取的非特權讀取存取的推測性執行,攻擊可能能夠存取特權內核記憶體。
熔斷及幽靈攻擊表明,CPU快取可能會被推測性執行的指令毀壞。即使推測性指令的軟體可見作用被抹除,微架構作用亦可能依然存在。另外,熔斷及幽靈攻擊證明,可利用受侵害者記憶體存取與攻擊者記憶體存取間的軟體相依性(software dependency),使得攻擊者可將可被執行排清+重新載入攻擊的位址的範圍增加至除了共享式記憶體之外亦包括非共享式記憶體位置。
綜上所述,包括圖1至圖5中所繪示的示例性系統在內的各種快取實施方案可能易於受到包括幽靈及熔斷在內的旁路攻擊,此歸因於微架構狀態的改變(例如,由對稍後不應被執行的 指令的推測性執行而引起),該些改變可由快取自己的過程觀察到且有時亦可由不被允許存取資料的其他過程觀察到。
設計快取系統以降低針對安全攻擊(例如旁路攻擊)的脆弱性(vulnerability)可為有利的。一些快取系統可涉及考量是否容許執行記憶體指令的過程對其所存取位址執行此記憶體指令。在一些快取系統中,當發佈記憶體指令時不執行存取權限檢查。而是,至少對於一些記憶體指令,當指令被認可時才執行存取權限檢查。可藉由TLB來檢查存取權限。存取權限可能隨時間而改變(例如,藉由TLB失效,使一或數個條目失效,並強制在下一次存取時重新載入TLB),並且存取權限只能在認可時間應用。儘管自架構觀點來看,晚期存取權限檢查可為可接受的,但晚期權限檢查可能會允許無權限的推測性指令改變快取的狀態,此可能容許在各過程之間洩露秘密資訊。
可以額外欄位擴展包括圖3及圖4中所繪示的實例在內的示例性實施例,以實作與使快取系統安全相關聯的實施例。
在示例性實施例中,圖3所示TLB 303的每一條目的有效負載被擴展成亦編碼對區域的存取的存取權限。使用位址302的完整虛擬位址來存取TLB 303,所述完整虛擬位址可能包括任何過程ID(亦稱為位址空間識別符(Address Space Identifier),ASID)、虛擬機ID(例如,VMID)、以及可能對虛擬位址的其他特定擴展。位址標簽AT 312亦被擴展成儲存完整虛擬位址的對應位元。當發佈記憶體指令時,檢查CLB中的存取權限。違反存取 權限使得快取階層中不發生快取行移動或狀態改變且使得CPU被告知違反存取權限的記憶體指令。
在示例性實施例中,圖4所示區域資訊RI 413被擴展成亦編碼對區域的存取的存取權限。使用位址402的完整虛擬位址來存取CLB1 410,所述完整虛擬位址可能包括任何過程ID(亦稱為位址空間識別符,ASID)、虛擬機ID(例如,VMID)、以及可能對虛擬位址的其他特定擴展。位址標簽AT 411亦被擴展成儲存完整虛擬位址的對應位元。當發佈記憶體指令時,檢查CLB中的存取權限。違反存取權限使得記憶體階層中不發生快取行移動或狀態改變,且CPU被告知違反存取權限的記憶體指令。
在示例性實施例中,對區域或頁執行存取權限改變(例如,TLB失效)亦涉及移除CLB1 410中的對應條目(或藉由某種其他手段使所述對應條目失效)。然而,L1快取430及L2快取440中的由儲存於其CLT 412中的位置資訊(LI)所指向的快取行可被逐出(有時被稱為強制性逐出)。
在示例性實施例中,對具有有標簽快取的系統執行存取權限改變(例如,TLB失效)亦涉及移除圖3所繪示的TLB 303中的對應條目(或藉由某種其他手段使所述對應條目失效)。分別在圖7及圖6中繪示並在以下更詳細地闡述以上所論述的對圖3及圖4的擴展,所述擴展可達成存取權限的有效改變。
在示例性實施例中,自CLB2 420填充CLB1 410條目(圖4中的FILL箭頭)亦包括存取TLB(圖4中未示出)的步驟。自 TLB讀取的存取權限作為存取權限AP儲存於經擴展區域資訊(RI)中。區域資訊亦被擴展成儲存TLB重新載入位元(TR)。當CLB1 410接收到存取權限改變(例如,TLB失效)時,其為對應的區域設定TR,但不會逐出CLB條目或使CLB條目失效。此將強制進行新的TLB重新載入(存取在CLB1 410填充期間所使用的TLB)以讀取(可能被修改的)存取權限位元。然而,由於CLB1 410條目未自CLB1 410被移除或失效,因此不能逐出任何快取行。
在示例性實施例中,可包括附加機制來處置在發佈記憶體指令的時間與記憶體指令被認可的時間之間的存取權限改變。在示例性實施例中,若存取權限被改變(可能藉由在檢查初始快取存取權限的時間與認可指令的時間之間接收到TLB失效),則管線將重新檢查其存取權限。此可適用於有標簽快取(例如圖3中所示)及/或無標簽快取(例如圖4中所示)的經擴展功能。在示例性實施例中,此是藉由當分別對CLB1 410及TLB 303發生存取權限改變時為每一進行中的指令(即,介於發佈與認可之間的指令)設定RECHECK位元來實作。只有在設定RECHECK位元的情況下,才需要在認可時間重新檢查存取權限(例如,分別地,藉由在圖3中執行TLB 303查找或者在圖4中執行CLB1 410查找)。在另一示例性實施例中,識別受存取權限改變影響的進行中指令,並強制該些指令在認可時間重新檢查其權限。
在示例性實施例中,快取的一部分可包括隨機索引值 (random index value,RIV),所述隨機索引值(RIV)與儲存於快取中的快取行相關聯,且用於識別快取行在裝置的記憶體中的位置。隨機索引值(RIV)可儲存於區域的區域資訊(RI)413中。例如,儲存於此欄位中的RIV位元的數目可自單個位元至用於對系統中的快取進行索引的最大位元數目不等。在示例性實施例中,RIV被初始化成儲存應用程式所不知道的隨機值。在示例性實施例中,RIV可用於確定在處理器存取快取時欲使用的索引。在示例性實施例中,隨機索引值是藉由將RIV位元與一些位址位元進行互斥或(XOR)運算以計算快取索引或位元的一些其他邏輯變換而形成。RIV位元亦可在不進行任何邏輯變換的情況下直接用作快取的索引位元。在系統中可能具有一些快取是完全依賴於位址位元進行索引,而其他快取則依賴於隨機索引。
在示例性實施例中,TLB 303亦可將具有隨機索引值(RIV)的欄位添加至其有效負載。那一頁的所有快取行均可使用RIV來計算其索引。(假設頁大小為4k個位元組且快取行大小為64個位元組,則每一頁具有64個快取行。)在示例性實施例中,可將存在位元(presence bit,PB)欄位添加至TLB 303的有效負載,所述存在位元(PB)欄位儲存數目與頁上的快取行的數目對應的位元(例如,64個位元)。
現在假設RIV索引僅應用於一個快取層階(例如,L1),則每當在那個快取中儲存快取行時,設定對應的PB位元,且每當逐出所述快取行時,清除所述位元。如此一來,TLB可知曉集合 的最後一個快取行何時被逐出。在示例性實施例中,當TLB條目被逐出時,仍駐存於L1中的任何快取行亦被逐出。然而,假設TLB的觸達範圍(reach)較L1大小大得多,則此應不會產生很多的效能問題。實際上,知道哪些TLB條目仍具有有效L1快取行可提示TLB的替換邏輯避免替換在L1快取中存在有快取行的條目,而是可選擇另一TLB條目進行逐出,此可改良效能。
圖6示出可如何如上所論述以更多區域資訊來擴展圖4所示CLB1 410的示例性實施例(經擴展CLB1被指代為610)。為了清楚起見,在圖6中省略了圖4中的一些未改變的組件。由CPU 601產生可能由VA+ASID+VMID構成的虛擬位址。虛擬位址的一部分(CI)用於對CLB1 610進行索引,且一部分與儲存於有索引的集合中的CLB1 610條目(僅示出一個條目)的所有位址標簽(AT)611進行比較。每一條目包含欄位的快取位置表(CLT)612(儲存區域快取行的LI)、實體位址(PA)614、區域分類位元(P)615、隨機索引值(RIV)616、TLB重新載入位元(TR)617、及存取權限(AP)618。將由處理器產生的虛擬位址的一部分與集合中所有條目的AT 611進行比較640。若存在匹配,則使用那個條目的欄位來存取對應區域的RIV 616,RIV 616用於至少部分地對L1快取進行索引,且使用對應快取行的位置資訊(LI)來找到正確的快取層階(例如,L1快取)及所述快取內的關聯路。
若存在未命中(有索引的CLB1 610集合的AT 611中的任一者均不與由處理器601產生的位址匹配),則起始在TLB 620 中的查找以擷取實體位址(PA)622及存取權限AP 623。若TLB 620中存在與虛擬位址標簽(virtual address tag,VAT)621的匹配,則使用匹配的TLB 620條目的PA 622在CLB2 630中執行查找,並將來自匹配的CLB2 630條目的資訊與PA 622及AP 623一起使用來創建新的CLB1 610條目。同時,將新的隨機數寫入至RIV 616,將TR 617取消設定(unset),且若此為系統中僅有的CLB1 610條目,則設定P 615。
圖7示出可如何針對條目中的每一者以更多欄位擴展圖3所示TLB 303的示例性實施例(由TLB 710繪示)。由CPU 701產生由VA+ASID+VMID構成的虛擬位址。虛擬位址的一部分(TI)用於對TLB 710進行索引,且一部分與儲存於有索引的集合中的TLB條目(僅示出一個條目)的虛擬位址標簽(VAT)711進行比較740。每一條目包含欄位存在位元(PB)712(儲存頁的每快取行一個位元)、實體位址(PA)714、隨機索引值(RIV)716、TLB重新載入位元717、及存取權限(AP)718。將由處理器產生的虛擬位址的一部分與集合中所有條目的虛擬位址標簽VAT 711進行比較。若存在匹配,則使用那個條目的欄位來存取記憶體階層。RIV 716用於對快取L1快取進行索引以找到適當的集合,且將那個集合的所有快取行的位址標簽(AT)與實體位址的一部分進行比較。
圖7中所繪示的TLB 710與圖6所示CLB1 610的類似之處在於,其均儲存PA、RIV、AP、TR且亦儲存一些每快取行 的位置資訊(例如,PB 712儲存關於頁的哪些快取行儲存於L1中的資訊)。因此,TLB 710可被視為一種形式的快取位置緩衝器(cache location buffer,CLB)。
以下章節概述上述示例性實施例的特徵可如何減少各種安全攻擊。以下說明適用於藉由圖6及圖7所述的示例性實施例以及其他示例性實施例。
熔斷攻擊涉及過程間攻擊(inter-process attack),其中攻擊過程可提示受攻擊過程推測性地存取攻擊者的位址空間且在微架構狀態中留下可能透露秘密的痕跡。熔斷攻擊部分地依賴於如下事實:無權限的推測性指令被容許影響微架構狀態。在發佈時間執行的早期權限檢查(如由得到圖6及圖7的擴展所示)將足以減少此類攻擊(即使架構實施方案的其他部分(例如共享式分支預測器狀態(shared branch predictor state))亦可為固定的)。
幽靈攻擊涉及對過程自己的位址空間的推測性存取的副作用,即可能自過程的一部分將資料透露給過程的碼的已被設計成不能存取所述資料的一部分。一個此種實例是,使碼能夠沖出安全隔離構造(security isolation construct)(例如,及時(just-in-time,JIT)執行沙箱(sandbox))並存取過程中因所述安全隔離構造而應在界外的資料。此安全漏洞是藉由容許非推測性存取(該些存取被執行)可觀察到由推測性(且稍後未被執行的)存取引起的微架構副作用而達成,例如藉由量測計時以判斷資料是否儲存於快取中。
可利用此種推測類型的攻擊的實例包括:排清+重新載入,依賴於能夠非推測性地命中推測性載入的資料;以及充填+探測,依賴於推測性載入的資料將非推測性載入的資料逐出。
在排清+重新載入中,攻擊者清空所選資料集合的快取,且然後藉由間接法(indirection)使其所控制的資料自推測性負載(例如,負載controlled_data[speculative_data])推測性地載入至快取中。然後,攻擊者可對針對其受控制資料中的所有元素的存取進行計時,以查看哪一元素被快取,且藉此推斷出推測性資料的值。若推測性地載入的資料可由非推測性負載存取,則此種攻擊可能會成功。
在充填+探測中,使用相反的方法。首先,將受控制資料以使得每一受控制資料元素在快取中的索引位元中的一些索引位元被知道的方式載入至快取中。然後,攻擊者將推測性資料載入至快取中,此會逐出受控制資料元素中的一者。然後,攻擊者可對推測性資料元素中的每一者的載入進行計時,以判斷哪一個資料元素被逐出,藉此獲得關於推測性資訊的資訊。若推測性載入的資料逐出非推測性載入的資料,則此種攻擊會成功。
可藉由區分推測性載入的資料與非推測性資料來減少此類攻擊,視需要同時減少阻止推測性負載的效能成本。亦即,可在推測時自DRAM提取推測性資料,但推測性資料在快取階層中的作用只有在其不再為推測性時才能可見。
充填+探測攻擊的一部分涉及如下事實:攻擊者關於特 定快取層階知道每一快取行的快取索引。此種攻擊者可在攻擊之前完全填充快取行的集合中的一或多者,且然後在攻擊之後對針對已充填的快取行的存取進行計時以推算關於快取的一些秘密資訊。然而,若不知道快取行的隨機索引值,則填充集合及/或基於在攻擊之後對某些存取的計時來推算秘密資訊可變得更加困難。本文所述的示例性實施例可分別使用CLB1 610區域及TLB 710條目的隨機索引值(RIV)欄位來減少此類攻擊。RIV可包括應用程式(包括攻擊者)不知道且可至少部分地用於為快取存取產生索引位元的隨機數。
圖6及圖7示出利用RIV產生隨機快取索引的快取系統。如前所述,分別位於CLB1 610及TLB 710中的隨機索引值616、716最初被設定為任何應用程式所不知道的隨機數。以下說明是基於圖6及圖7。
週期性地改變隨機索引值可進一步減少充填+探測攻擊。隨機索引亦可使得設計旁路「充填+探測」安全攻擊更加困難,乃因被窺探資料的以及惡意探測存取的索引是不容易知道的。此種攻擊涉及在可發起攻擊之前確定足夠的區域的動態索引來填充集合。動態索引可增加攻擊的難度(例如,增加時間),包括通過以比攻擊者可存取快取行的速率更快的速率主動地改變所述快取行的動態索引。
在示例性實施例中,可以所選速率動態地改變CLB1 610及TLB 710中區域的隨機索引值。當隨機索引值被改變時,區域 的位置資訊(LI)所指向的快取行可被複製至由新隨機索引值所識別的新集合。
在示例性實施例中,當自快取移除分別地由區域的LI所指向或由區域的PB記錄的最後一個快取行時,可將所述區域的隨機索引值改變為新的隨機數,所述快取使用所述隨機索引值來計算其隨機索引值。在此種情形中,隨機索引值可在不移動任何快取行的情況下被改變為新的隨機值。例如,參照圖6,若僅使用CLB1 610的隨機索引值616欄位來計算L1快取630的隨機索引值616,並且CLT 612確定區域的最後一個快取行自L1快取630被逐出,則CLT的區域的隨機索引值616可在不移動L1快取630中的任何快取行的情況下改變為新的隨機數。圖7的類似實例依賴於PB 712來判斷何時逐出其頁中的一者的最後一個快取行,以容許進行有效的隨機索引值716更新。
在示例性實施例中,系統偵測在所選時間週期內未改變其隨機索引值的區域,以使其隨機索引值改變,即使所述區域的快取行中的一些快取行可能由於隨機索引值改變而被重新定位亦如此。此達成所選隨機索引值改變週期,同時將對快取行的重新定位限制於在較長時間週期內在L1中駐存有資料的區域/頁。
無標簽快取可展現較高的關聯性,乃因其關聯性的成本僅使其LI的大小以對數方式增長。例如,可用另外一個LI位元達成所有快取的關聯性的加倍。高關聯性本身使得「充填+探測」旁路攻擊線性地具有更高成本。
對於較高關聯性快取組織,替換演算法變得不那麼有影響力,進而容許無標簽快取容易地支援隨機替換。由於諸多旁路攻擊利用替換演算法(如,LRU)的知識來發起其攻擊,因而切換成隨機替換會使得快取在統計上更難以預測,進而導致攻擊時間更長。不僅隨機地替換資料而且隨機地保護資料的方法可使得難以確定隨機索引值。雖然隨機替換可能預期產生不那麼有效的快取行為,但大關聯性將使得與最佳替換的效能差異相對小。
缺乏包容性可容許無標簽快取減少在整個快取階層中對推測性資料的儲存。在一些示例性電腦系統中,推測性負載可能會使得在資料被引入時發生在每一層階處儲存及/或移除資料這一系列事件。無標簽快取可達成任意資料快取策略,此可便利於將推測性資料放置於快取中而不影響其他快取。此種放置可減少洩露的資料量,及/或以使得對推測的作用及推測可被觀察的方式進行控制更容易的方式促進將推測隔離的靈活性。
雖然快取設計的該些性質中的每一者均可有助於減少此類攻擊,但示例性實施例可以如下方式組合該些性質:可使得能夠對資料進行推測性預取以達成效能,同時防止推測性存取在逐出非推測性資料(充填+探測)時及/或在自非推測性存取命中(排清+重新載入)時變得可見。
缺乏包容性、及無標簽快取可在多個層階中追蹤資料的便利性可以單獨的推測性快取來達成無標簽快取,此可減少推測性存取。
在示例性實施例中,推測性負載可僅僅儲存於推測性快取中,藉此減少自記憶體階層的其餘部分對非推測性資料的逐出(充填+探測)。可減少自其他負載對推測性快取中的資料的命中,此可減少藉由非推測性存取進行的偵測(排清+重新載入)。當管線已將負載認可及/或退出且負載被確保為非推測性時,來自推測性快取的資料可安全地移動至常規階層中,以達成推測性預取的效能益處。在一些實施方案中,可在指令被認可之前進行向非推測性的轉換。在示例性實施例中,一旦可確定指令不再是推測性且將被執行,就進行向非推測性的轉換。
將RIV分別引入至CLB及TLB中可容許藉由減少對推測性載入的資料的命中及/或使得難以依據由推測性負載引起的逐出進行學習(充填+探測)來保護快取階層免受此類攻擊。此種方法可組合高關聯性、隨機索引及強制包容性缺乏的作用,以為推測性資料的載入及儲存提供安全區快取。推測性負載可儲存於安全快取中,並被標記為推測性。一旦推測被鑒別,若進行誤推測,則可默默地逐出資料。否則,推測性負載作為推測性的標記被取消設定,且自此時開始其亦可儲存於快取階層的其餘部分中。
在示例性實施例中,可設計L1快取以減少旁路攻擊。在示例性實施例中,L1快取可展現32路關聯性、隨機索引、隨機替換及對推測性載入的資料的追蹤。追蹤推測性載入的資料可減少對推測性資料的命中,此可減少排清+重新載入攻擊。減少充填+探測攻擊可涉及選擇難以確定的隨機索引值(此可允許增加關 聯性),並使用隨機索引位元來隱蔽資料在快取中的儲存位置。
在示例性實施例中,可不時地改變區域的隨機索引值。例如,若攻擊者確定出區域的索引,則可在攻擊者存取所述區域之前改變隨機索引值。在示例性實施例中,可以所選的週期及/或頻率來改變一或多個隨機索引值。在示例性實施例中,可基於攻擊的速度及/或所選的安全等級來選擇改變隨機索引值的週期及/或頻率。在示例性實施例中,區域的子集可具有不時地改變的隨機索引值,乃因每當區域被首次引入時或當區域中的最後一個快取行被逐出時,便可免費改變索引位元。若區域的動態索引位元在所述區域於快取中駐存有資料時改變,則可逐出並重新儲存那些快取行,但可能無需搜尋L1快取來找出該些快取行,乃因可藉由查看在L1快取中存在有資料的CLB條目來找到該些快取行。
在示例性實施例中,由於非包容性快取階層,為記憶體請求傳回的快取行當安裝於L1快取中時可能不能安裝於L2快取中。快取行可在L1快取逐出後被安裝於L2快取,並且只有在認為適當的情況下才安裝於L2快取(例如,由一些快取放置啟發法導引)。對於推測性存取,快取行只能安裝於安全的L1快取中,及/或被標記為推測性(此可減少非推測性存取),同時使所述快取行保持靠近處理器及/或處理器核心以促進推測性預取。當推測完成且指令被確定為欲被執行時,可將快取行移動至適當的位置中以供將來重複使用。
在示例性實施例中,狀態機(state machine,SM)可將資 料引至安全快取或者推測性快取中。在示例性實施例中,狀態機可決定將哪些快取行安裝於L1快取及/或L2快取中,且亦決定何時對所述快取行進行升階(promote)。在一些實施例中,當記憶體請求變為非推測性時,例如,當知道其不能再是惡意旁路攻擊的一部分時,處理器可告知狀態機。若狀態機正在處置長延時DRAM存取並且其前面的所有分支已被鑒別(以及不執行推測性指令的其他潛在原因),則處理器可告知狀態機:記憶體請求不再是推測性的,且其可安全地安裝於某一其他快取中。若當自DRAM傳回資料時快取行仍被視為推測性的,則自L1快取來滿足記憶體請求,且將快取行標記為推測性的。
為了清楚起見,本文中的一些說明闡述可如何將快取行定位及/或傳回至作出請求的CPU的技術。一些實例未詳細闡述選擇及/或向CPU傳回快取行內所包含的所請求字元的各種方式,但此類細節對於熟習此項技術者而言可為顯而易見的。
為了清楚起見,本文中的一些說明藉由闡述排除性快取階層而闡述了對快取階層的資料的處置。熟習此項技術者可理解,所述的實施例可擴展成涵蓋包容性記憶體階層及非排除性記憶體階層。
儘管以上所述的示例性實施例可與單處理器系統及多處理器系統(例如以上分別參照圖1及圖2示出及闡述的那些系統)結合使用,然而根據示例性實施例的CLB可結合單處理器系統而示出,但亦可與多處理器系統一起使用。
可在各種架構中實作包括所論述及/或在圖中呈現的示例性實施例在內的本發明的標的。在示例性實施例中,快取可由例如以下等的一或多個軟體組件儲存、存取及/或控制:在一或多個處理器上執行的執行緒或過程;軟體庫,例如儲存於記憶體中並由作業系統及/或應用程式的過程及/或執行緒存取的指令集合;及/或儲存於可由處理器執行的非暫時性電腦可讀取媒體上的指令集合。在示例性實施例中,快取可由一或多個硬體裝置儲存、存取及/或控制。在示例性實施例中,此類硬體裝置可包括處理電路系統,例如但不限於分別具有一或多個處理器核心的一或多個處理器。此類處理器可包括:中央處理單元(CPU);圖形處理單元(Graphics Processing Unit,GPU);多核心CPU或GPU的核心;算術邏輯單元(arithmetic logic unit,ALU);數位訊號處理器;微控制器及/或微電腦;系統晶片(System-on-Chip,SoC);現場可程式化閘陣列(field programmable gate array,FPGA);可程式化邏輯陣列(Programmable Logic Array,PLA);應用專用積體電路(Application-Specific Integrated Circuit,ASIC);模組化邏輯裝置,例如封裝邏輯晶片;及/或能夠以所定義的方式對指令作出回應並執行指令的任何其他裝置。在示例性實施例中,快取可由例如以下的相同及/或不同類型的組件的組合儲存、存取及/或控制:單處理器電腦或多處理器電腦中的多個處理器及/或處理核心;協同運行的二或更多個處理器,例如CPU及GPU;利用ASIC的CPU;及/或由處理器執行的軟體。示例性實施例可包括單個裝置(例如包括儲存、存取及管理快取的一或多 個CPU的電腦)的組件。示例性實施例可包括多個裝置(例如具有進行通訊以存取及/或管理快取的CPU的二或更多個裝置)的組件。示例性實施例可包括被包含於伺服器計算裝置、伺服器電腦、一系列伺服器電腦、伺服器場、雲端電腦、內容平台、行動計算裝置、智慧型電話、平板電腦或機上盒中的一或多個組件。示例性實施例可包括直接通訊的組件(例如,多核心處理器的二或更多個核心)及/或間接(例如,藉由匯流排、藉由有線或無線通道或網路、及/或藉由例如微控制器或仲裁器等中間組件)通訊的組件。示例性實施例的特徵可為分別由裝置或組件執行的快取管理器的多個實例,其中此類實例可同時、連續及/或以交錯方式執行。示例性實施例的特徵可為快取管理器的實例在二或更多個裝置或組件上的分佈。
示例性實施例可包括儲存於記憶體中的組件,包括快取及電腦可讀取指令在內。記憶體的非限制性實例包括但不限於:可重寫非揮發性記憶體裝置(例如,包括快閃記憶體裝置、可抹除可程式化唯讀記憶體裝置或遮罩唯讀記憶體裝置);揮發性記憶體裝置(例如,包括靜態隨機存取記憶體裝置或動態隨機存取記憶體裝置);磁性儲存媒體(例如,包括類比或數位磁帶或硬碟機);以及光學儲存媒體(例如,包括壓縮碟片(Compact Disk,CD)、數位通用碟片(Digital Versatile Disk,DVD)或藍光碟)。具有內建可重寫非揮發性記憶體的記憶體實例包括但不限於:記憶體卡;以及具有內建ROM的媒體,包括但不限於ROM卡帶; 等等。示例性實施例可包括及/或利用為有形或非暫時性電腦可讀取儲存媒體的記憶體裝置,例如隨機存取記憶體(RAM)、唯讀記憶體(ROM)、永久大容量儲存裝置(例如磁碟機)、及/或任何其他類似的能夠儲存及記錄資料的資料儲存機制。記憶體可被配置以儲存用於一或多個作業系統及/或用於實作本文所述的示例性實施例的電腦程式、程式碼、指令或其某一組合。記憶體可包括通用串列匯流排(Universal Serial Bus,USB)快閃磁碟機、記憶體棒、藍光/DVD/CD-ROM光碟機、記憶體卡、及/或其他類似的電腦可讀取儲存媒體。在示例性實施例中,快取、電腦程式、程式碼及/或指令或其某一組合可藉由網路介面自遠端資料儲存裝置載入至一或多個本端記憶體及/或一或多個本端處理器中。在示例性實施例中,快取、電腦程式、程式碼及/或指令或其某一組合可自另一本端記憶體及/或另一本端處理器或組件載入。
儘管以上在某些示例性電腦架構的上下文中進行闡述,但在電腦系統內以及電腦系統外的諸多其他設定中均存在快取,並且上述實施例同樣適用於此種其他上下文。此類用途的實例是虛擬記憶體系統,其將資料自慢速大容量儲存器(例如磁碟或快閃記憶體)快取至可使用動態RAM實作的更快且更小的大容量記憶體中。電腦系統中的其他快取實例包括但不限於磁碟快取、網路快取及名稱快取。此類快取的組織及快取機制可能與上述快取的組織及快取機制不同,例如,集合的大小、集合的實施方案及關聯性等方面的差異。不管快取機制的實施方案如何,本 文所述的示例性實施例均可適用於實作各種快取方案。
所揭露的實施例例如闡述與各種快取階層相關聯的系統及方法。然而,示例性實施例旨在涵蓋包含於本發明精神及範圍內的替代方案、修改及等效方案。此外,在對示例性實施例的詳細說明中,闡述諸多具體細節以提供對本發明的全面理解。然而,熟習此項技術者將理解,可在沒有此類具體細節的情況下實踐各種實施例。
雖然在示例性實施例中以一些組合闡述了本發明實施例的特徵及元件,但每一特徵或元件可在沒有示例性實施例的其他特徵及元件的情況下單獨使用,或者可與本文所揭露的其他特徵及元件以各種組合使用或者在沒有所述其他特徵及元件的情況下使用。可在電腦程式、軟體或韌體中實作本申請案中所提供的方法或流程圖,所述電腦程式、軟體或韌體有形地實施於電腦可讀取儲存媒體中以供通用電腦或處理器執行。
本書面說明使用所揭露的標的的實例,以使任何熟習此項技術者能夠實踐所述標的,包括製造及使用任何裝置或系統以及執行任何所併入的方法。所述標的的可專利範圍由申請專利範圍界定,且可包括熟習此項技術者聯想到的其他實例。此類其他實例旨在處於申請專利範圍的範圍內。
601:CPU/處理器
610:CLB1
611:位址標簽(AT)
612:快取位置表(CLT)
614、622:實體位址(PA)
615:區域分類位元(P)
616:隨機索引值(RIV)
617:TLB重新載入位元(TR)
618、623:存取權限(AP)
620:TLB
621:虛擬位址標簽(VAT)
630:CLB2/L1快取
640:比較

Claims (20)

  1. 一種用於在裝置的快取中存取資料的方法,所述方法包括:將隨機索引值儲存於緩衝器中;將快取行儲存於所述快取中至少部分地基於所述隨機索引值的位置處;將所述快取行的存取權限儲存於所述緩衝器中;對於涉及所述快取行的記憶體指令,至少部分地基於所述快取行的所述存取權限來判斷是否允許所述記憶體指令存取所述快取行;以及在判斷不允許所述記憶體指令存取所述快取行的條件下,避免改變所述快取。
  2. 如申請專利範圍第1項所述的方法,更包括:在改變所述快取行的所述存取權限的條件下,使所述快取中的所述快取行失效。
  3. 如申請專利範圍第1項所述的方法,其中,所述緩衝器包括快取表,所述快取表包括快取表條目,所述快取表條目識別所述快取行在所述裝置的記憶體中的區域,且儲存所述快取行的所述存取權限包括將所述存取權限儲存於所述快取行的所述快取表條目中。
  4. 如申請專利範圍第1項所述的方法,其中,所述緩衝器包括快取表,所述快取表包括快取表條目,所述 快取表條目識別所述快取行在所述裝置的記憶體中的區域及所述快取表的區域資訊,且儲存所述快取行的所述存取權限包括將所述存取權限儲存於所述快取表的所述區域資訊中。
  5. 如申請專利範圍第1項所述的方法,更包括:在於判斷允許待處理的記憶體指令存取所述快取行之後改變所述快取行的所述存取權限的條件下,至少部分地基於所述存取權限來重新判斷是否允許所述待處理的記憶體指令存取所述快取行。
  6. 如申請專利範圍第1項所述的方法,更包括:在判斷允許所述記憶體指令存取所述快取行的條件下,藉由至少部分地基於所述隨機索引值來確定所述存取行的所述位置而存取所述快取行。
  7. 如申請專利範圍第6項所述的方法,更包括:以所選速率週期性地改變所述隨機索引值。
  8. 如申請專利範圍第7項所述的方法,更包括:在將所述隨機索引值改變為新隨機索引值的條件下,將所述快取行移動至至少部分地基於所述新隨機索引值的新位置。
  9. 如申請專利範圍第6項所述的方法,更包括:在自所述快取移除所述快取行的條件下,改變所述隨機索引值。
  10. 如申請專利範圍第1項所述的方法,更包括: 在將所述快取行儲存為所述記憶體指令的推測性負載的條件下,將所述快取行標記為推測性;在將所述記憶體指令的所述推測性負載鑒別為非推測性的條件下,將所述快取行標記為非推測性;以及在將所述記憶體指令的所述推測性負載鑒別為被誤推測的條件下,自所述快取移除所述快取行。
  11. 一種用於在裝置中存取資料的系統,所述系統包括:快取,儲存快取行;以及至少一個處理器,被配置以:將隨機索引值儲存於緩衝器中;將所述快取行儲存於所述快取中至少部分地基於所述隨機索引值的位置處;將所述快取行的存取權限儲存於所述緩衝器中;對於涉及所述快取行的記憶體指令,至少部分地基於所述快取行的所述存取權限來判斷是否允許所述記憶體指令存取所述快取行;以及在判斷不允許所述記憶體指令存取所述快取行的條件下,避免改變所述快取。
  12. 如申請專利範圍第11項所述的系統,其中,所述緩衝器包括快取表,所述快取表包括快取表條目,所述快取表條目識別所述快取行在記憶體中的區域,且所述至少一個處理器被配置以將所述存取權限儲存於所述快 取行的所述快取表條目中。
  13. 如申請專利範圍第11項所述的系統,其中,所述緩衝器包括快取表,所述快取表包括快取表條目,所述快取表條目識別所述快取行在記憶體中的區域及所述快取表的區域資訊,且所述至少一個處理器被配置以將所述存取權限儲存於所述快取表的所述區域資訊中。
  14. 如申請專利範圍第11項所述的系統,其中所述至少一個處理器更被配置以,在改變所述快取行的所述存取權限的條件下,使所述快取中的所述快取行失效。
  15. 如申請專利範圍第11項所述的系統,其中所述至少一個處理器更被配置以:在判斷允許所述記憶體指令存取所述快取行的條件下,藉由至少部分地基於所述隨機索引值來確定所述存取行的所述位置而存取所述快取行。
  16. 如申請專利範圍第15項所述的系統,其中所述至少一個處理器更被配置以,以所選速率週期性地改變所述隨機索引值。
  17. 如申請專利範圍第16項所述的系統,其中所述至少一個處理器更被配置以,在將所述隨機索引值改變為新隨機索引值的條件下,將所述快取行移動至至少部分地基於所述新隨機索引值的新位置。
  18. 如申請專利範圍第15項所述的系統,其中所述至少一 個處理器更被配置以,在自所述快取移除所述快取行的條件下,改變所述隨機索引值。
  19. 如申請專利範圍第11項所述的系統,其中所述至少一個處理器更被配置以:在將所述快取行儲存為所述記憶體指令的推測性負載的條件下,將所述快取行標記為推測性;在將所述記憶體指令的所述推測性負載鑒別為非推測性的條件下,將所述快取行標記為非推測性;以及在將所述記憶體指令的所述推測性負載鑒別為被誤推測的條件下,自所述快取移除所述快取行。
  20. 一種非暫時性電腦可讀取儲存媒體,包含指令,所述指令在由處理器執行時使所述處理器執行操作,所述操作包括:將隨機索引值儲存於緩衝器中;將快取行儲存於快取中至少部分地基於所述隨機索引值的位置處;將所述快取行的存取權限儲存於所述緩衝器中;對於涉及所述快取行的記憶體指令,至少部分地基於所述快取行的所述存取權限來判斷是否允許所述記憶體指令存取所述快取行;以及在判斷不允許所述記憶體指令存取所述快取行的條件下,避免改變所述快取。
TW108107018A 2018-03-05 2019-03-04 非暫時性電腦可讀取儲存媒體以及用於在裝置中存取資料的系統與方法 TWI798370B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862638450P 2018-03-05 2018-03-05
US62/638,450 2018-03-05

Publications (2)

Publication Number Publication Date
TW201945941A TW201945941A (zh) 2019-12-01
TWI798370B true TWI798370B (zh) 2023-04-11

Family

ID=65685221

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108107018A TWI798370B (zh) 2018-03-05 2019-03-04 非暫時性電腦可讀取儲存媒體以及用於在裝置中存取資料的系統與方法

Country Status (5)

Country Link
US (1) US10915466B2 (zh)
EP (1) EP3537305B1 (zh)
KR (1) KR102287758B1 (zh)
CN (1) CN110232031A (zh)
TW (1) TWI798370B (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10116436B1 (en) * 2017-09-26 2018-10-30 Intel Corporation Techniques for preventing memory timing attacks
US11372972B2 (en) * 2018-03-19 2022-06-28 Intel Corporation Side-channel exploit detection
US20190332384A1 (en) * 2018-04-30 2019-10-31 Hewlett Packard Enterprise Development Lp Processor architecture with speculative bits to prevent cache vulnerability
US11169805B2 (en) * 2018-04-30 2021-11-09 Hewlett Packard Enterprise Development Lp Dynamic processor cache to avoid speculative vulnerability
US11055226B2 (en) * 2018-06-29 2021-07-06 Intel Corporation Mitigation of cache-latency based side-channel attacks
US10929535B2 (en) * 2018-06-29 2021-02-23 Intel Corporation Controlled introduction of uncertainty in system operating parameters
US20200034152A1 (en) * 2018-07-30 2020-01-30 Cavium, Llc Preventing Information Leakage In Out-Of-Order Machines Due To Misspeculation
US11068612B2 (en) * 2018-08-01 2021-07-20 International Business Machines Corporation Microarchitectural techniques to mitigate cache-based data security vulnerabilities
US11221957B2 (en) * 2018-08-31 2022-01-11 International Business Machines Corporation Promotion of ERAT cache entries
US11635965B2 (en) * 2018-10-31 2023-04-25 Intel Corporation Apparatuses and methods for speculative execution side channel mitigation
US20210081575A1 (en) * 2019-09-12 2021-03-18 Microsoft Technology Licensing, Llc Hybrid mitigation of speculation based attacks based on program behavior
CN111241599B (zh) * 2019-09-19 2022-08-23 中国科学院信息工程研究所 一种处理器芯片安全依赖的动态识别及维护方法
CN111638913B (zh) * 2019-09-19 2023-05-12 中国科学院信息工程研究所 一种基于随机化索引的处理器芯片分支预测器安全增强方法及电子装置
CN111274573B (zh) * 2019-09-19 2022-09-09 中国科学院信息工程研究所 一种基于访存请求序列的处理器芯片假安全依赖冲突的识别方法
US11210102B2 (en) * 2019-11-26 2021-12-28 Arm Limited Speculative buffer for speculative memory accesses with entries tagged with execution context identifiers
KR102358108B1 (ko) 2019-12-09 2022-02-07 충남대학교 산학협력단 소스코드 내 cpu 취약점 탐색 방법
KR20210079637A (ko) * 2019-12-20 2021-06-30 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
CN111259384B (zh) * 2020-01-17 2022-06-14 中国科学院计算技术研究所 一种基于缓存随机无效的处理器瞬态攻击防御方法
CN111274198B (zh) * 2020-01-17 2021-11-19 中国科学院计算技术研究所 一种微架构
CN111274584B (zh) * 2020-01-17 2022-07-15 中国科学院计算技术研究所 一种基于缓存回滚以防御处理器瞬态攻击的装置
CN111414321B (zh) * 2020-02-24 2022-07-15 中国农业大学 一种基于动态映射机制的cache防护方法及装置
US11029957B1 (en) 2020-03-27 2021-06-08 Intel Corporation Apparatuses, methods, and systems for instructions to compartmentalize code
US11797673B2 (en) 2020-08-27 2023-10-24 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by expeditiously initiating flushing of instructions dependent upon a load instruction that causes a need for an architectural exception
US11868469B2 (en) 2020-08-27 2024-01-09 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by preventing all dependent instructions from consuming architectural register result produced by instruction that causes a need for an architectural exception
US11907369B2 (en) 2020-08-27 2024-02-20 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception
US11733972B2 (en) 2020-10-06 2023-08-22 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by providing random load data as a result of execution of a load operation that does not have permission to access a load address
KR102526499B1 (ko) * 2020-09-28 2023-05-02 고려대학교 산학협력단 Fpga 기반 캐시 무효화 방법 및 이를 수행하는 장치
US11734426B2 (en) 2020-10-06 2023-08-22 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by prevents cache line data implicated by a missing load address from being filled into a data cache memory when the load address specifies a location with no valid address translation or no permission to read from the location
US11853424B2 (en) * 2020-10-06 2023-12-26 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by refraining from allocating an entry in a data TLB for a missing load address when the load address misses both in a data cache memory and in the data TLB and the load address specifies a location without a valid address translation or without permission to read from the location
WO2022092499A1 (ko) * 2020-10-30 2022-05-05 재단법인대구경북과학기술원 신뢰가능한 실행 환경을 이용한 캐시 부 채널 공격 탐지 방법 및 장치
CN113779649B (zh) * 2021-09-08 2023-07-14 中国科学院上海高等研究院 一种针对投机执行攻击的防御方法
CN114244581B (zh) * 2021-11-29 2024-03-29 西安四叶草信息技术有限公司 缓存中毒漏洞检测方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110167222A1 (en) * 2010-01-05 2011-07-07 Samsung Electronics Co., Ltd. Unbounded transactional memory system and method
TW201227301A (en) * 2010-09-13 2012-07-01 Ibm Real address accessing in a coprocessor executing on behalf of an unprivileged process
CN102906703A (zh) * 2010-02-24 2013-01-30 先进微装置公司 硬件交易存储器的自动暂停及回复
TW201411490A (zh) * 2012-06-15 2014-03-16 Ibm 受限異動執行
TW201702883A (zh) * 2015-03-27 2017-01-16 英特爾公司 池式記憶體位址轉譯之技術
US20170286421A1 (en) * 2016-03-31 2017-10-05 Arm Limited Indexing entries of a storage structure shared between multiple threads

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6412043B1 (en) * 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6519684B1 (en) * 1999-11-23 2003-02-11 Motorola, Inc. Low overhead method for selecting and updating an entry in a cache memory
US6470437B1 (en) * 1999-12-17 2002-10-22 Hewlett-Packard Company Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design
US7874009B2 (en) * 2005-05-26 2011-01-18 Panasonic Corporation Data processing device
US7802055B2 (en) * 2006-04-19 2010-09-21 Qualcomm Incorporated Virtually-tagged instruction cache with physically-tagged behavior
WO2015075674A1 (en) * 2013-11-21 2015-05-28 Green Cache AB Systems and methods for direct data access in multi-level cache memory hierarchies
CN104679669B (zh) * 2014-11-27 2018-04-27 华为技术有限公司 高速缓存cache存储器系统及访问缓存行cache line的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110167222A1 (en) * 2010-01-05 2011-07-07 Samsung Electronics Co., Ltd. Unbounded transactional memory system and method
CN102906703A (zh) * 2010-02-24 2013-01-30 先进微装置公司 硬件交易存储器的自动暂停及回复
TW201227301A (en) * 2010-09-13 2012-07-01 Ibm Real address accessing in a coprocessor executing on behalf of an unprivileged process
TW201411490A (zh) * 2012-06-15 2014-03-16 Ibm 受限異動執行
TW201702883A (zh) * 2015-03-27 2017-01-16 英特爾公司 池式記憶體位址轉譯之技術
US20170286421A1 (en) * 2016-03-31 2017-10-05 Arm Limited Indexing entries of a storage structure shared between multiple threads

Also Published As

Publication number Publication date
KR20190105507A (ko) 2019-09-17
TW201945941A (zh) 2019-12-01
EP3537305A1 (en) 2019-09-11
US20190272239A1 (en) 2019-09-05
EP3537305B1 (en) 2021-04-28
US10915466B2 (en) 2021-02-09
CN110232031A (zh) 2019-09-13
KR102287758B1 (ko) 2021-08-09

Similar Documents

Publication Publication Date Title
TWI798370B (zh) 非暫時性電腦可讀取儲存媒體以及用於在裝置中存取資料的系統與方法
US10725992B2 (en) Indexing entries of a storage structure shared between multiple threads
US11126714B2 (en) Encoding of input to storage circuitry
CN112074823B (zh) 预测限制存储器区域类型的装置、方法、计算机可读存储介质
US10031849B2 (en) Tracking alternative cacheline placement locations in a cache hierarchy
US4775955A (en) Cache coherence mechanism based on locking
US7793067B2 (en) Translation data prefetch in an IOMMU
US9311239B2 (en) Power efficient level one data cache access with pre-validated tags
KR102478766B1 (ko) 디스크립터 링 관리
WO2021032943A1 (en) Capability write address tracking
KR20180122969A (ko) 멀티 프로세서 시스템 및 이에 포함된 프로세서의 데이터 관리 방법
Singh et al. SPX64: A scratchpad memory for general-purpose microprocessors
EP0220451B1 (en) A cache coherence mechanism based on locking
US11494300B2 (en) Page table walker with page table entry (PTE) physical address prediction
US11379372B1 (en) Managing prefetch lookahead distance based on memory access latency
Lipp Cache attacks on arm
US11822652B1 (en) Prime and probe attack mitigation
Jaamoum Strategies for securing cache memories against software side-channel attacks
CN117807588A (zh) 基于备份缓存的一级数据缓存侧信道攻击防御方法及系统
Gruss Cache Covert Channels
Mangard Cache Attacks and Rowhammer on ARM