TW202215238A - 集中-分散操作記憶體保護 - Google Patents

集中-分散操作記憶體保護 Download PDF

Info

Publication number
TW202215238A
TW202215238A TW110132114A TW110132114A TW202215238A TW 202215238 A TW202215238 A TW 202215238A TW 110132114 A TW110132114 A TW 110132114A TW 110132114 A TW110132114 A TW 110132114A TW 202215238 A TW202215238 A TW 202215238A
Authority
TW
Taiwan
Prior art keywords
memory
vector
memory protection
address
circuit
Prior art date
Application number
TW110132114A
Other languages
English (en)
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 TW202215238A publication Critical patent/TW202215238A/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
    • 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
    • G06F12/1425Protection 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 the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection 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 the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

揭露了用於集中-分散操作記憶體保護的系統及方法。舉例而言,積體電路可包含:處理器核心;記憶體保護電路,其經組態以利用保護區組核對記憶體保護違規;及索引範圍電路,其經組態以:在將處理器核心的向量暫存器中儲存的索引元組寫至向量暫存器中時,記憶索引元組的最大值及最小值;基於記憶體中的向量的基址位址、所記憶的最小值及所記憶的最大值,將佔用該向量暫存器的集中-分散記憶體指令的位址範圍決定為一組索引;及在單一時脈循環期間使用記憶體保護電路核對存取位址範圍內的向量的元素是否將引起記憶體保護違規。

Description

集中-分散操作記憶體保護
本發明與集中-分散操作記憶體保護有關。
出於偵測程式排序記憶體危險的目的,包含Roger Espasa及Mateo Valero的研究人員已研究了將跨步操作記錄為基址+範圍(base+range)及以全位址範圍分散/集中的方案。
概述
本文描述了用於集中-分散操作記憶體保護的系統及方法。一些處理器架構可實施有序或無序向量機。向量記憶體指令可花費若干循環來執行。甚至對於有序向量機,有利的是,即使當存取記憶體及可引起例外二者時,仍允許跟隨指令在當前向量指令完成之前開始執行。決定跟隨記憶體指令與當前向量記憶體指令是否具有寫後讀(RAW)、讀後寫(WAR)或寫後寫(WAW)危險,亦是有用的。
有利的是,為賦能針對記憶體保護違規的向量的快速掃描,用最小的硬體針對任何記憶體保護違規高速核對向量記憶體指令。每一個向量記憶體指令可到達許多不同位址處的許多元素,且可花費許多循環來執行。當位址範圍在指令發出時已知(比如,具有單位跨步或更大恆定跨步的向量)時,則可在發出時間計算可能的位址範圍為: 範圍= [基址, 基址+ (VL-1) *跨步+ (每元素的位元組-1) ] 其中基址是向量在記憶體中的基址位址,及VL是指令的主動向量長度。然後,可最佳化處理器架構中的硬體,以僅核查不是每一個元素位址都在該範圍內的範圍。當直到執行時間位址仍然未知時(比如,對於分散-集中指令),傳統設計是保守的且假定可到達任何位址。
關於單位跨步或其他恆定跨步向量記憶體指令,如果C是記憶體可能每循環核對的個別硬體的數目,則傳統系統每循環僅處理C個元素。本文描述的一些處理器架構及方法可增加每循環處理的元素的數目K,以對於給定的C允許自相同硬體有較大吞吐量。核查較少的記憶體位址/循環(比如,C=1或C=2)允許較簡單的硬體、較高的頻率及/或較低的功率。
在C=2的情況中,藉由基於跨步值及保護區組選擇K>2,可改良性能,使得對於該群組,仍只有二個記憶體位址需要核對,其中二個記憶體位址對應於該群組到達的第一及最後位元組位址。舉例而言,可如下決定每群組或子向量的最大元素數目: K=f1(跨步, 保護-區組, 機器-寬度) 其中f1()是將跨步、寬度及保護區組映射至最大元素數目的任意函數。在一些實施方式中,為簡化硬體,K可被約束為取二的次方的值。
在C=1的情況中,藉由亦考慮到基址位址,核對可被最佳化(比如,K = f2(基址, 跨步, 保護-區組, 機器-寬度)),使得對於具有大小K>=1的群組,僅核對C=1個記憶體位址就夠了。K元素群組到達的位址範圍可被約束為全部位於單保護區組上,亦即,最後位元組位址與基址位址位於相同保護區組上。在C=1的此情況中,所有元素發生保護違規,或者沒有元素發生保護違規,這樣簡化了例外處置。
在一些架構中,分散/集中向量記憶體操作可被包含於記憶體保護區組內。如果位址索引元素的寬度被約束為8b或16b,或比完整位址寬度小的任何已知值,則該範圍獨立於資料值被約束。關於無正負號的n位元索引: 範圍= [基址, 基址+ 2^n - 1 +每元素位元組- 1] 獨立於基址位址,如果索引範圍適合裝入單保護區組內,則可使用C=2保護核對來核對整個範圍(比如,核對範圍中的第一及最後位元組位址)。如果該基址已知,則可最佳化,以當範圍的最後位元組及基址落入相同保護區組中時,僅使用單記憶體核對(C=1)。
在一些架構中,如果n為未知或很大,則對於分散/集中指令,當向量暫存器被用作分散/集中指令的索引向量時,仍可藉由記憶可參考的位址範圍來最佳化記憶體保護違規核對。當向量暫存器被寫入時,向量內的最小元素及最大元素可被記錄。然後,確保指令涉及的元素被儲存於該範圍內: 範圍= [基址+最小值, 基址+最大值+每元素位元組- 1] 依據基址的值、最小值及最大值,在C=2或C=1機器上可有效處置記憶體保護核對。
如本文使用的術語“記憶”意指在向量暫存器被寫入時最小值/最大值被即時計算且另外被記錄於微架構結構(比如,暫存器)中。資訊被記憶的粒度可較細(比如,向量暫存器的子片)或較粗(比如,向量暫存器的群組)。
在一些實施中,為節省空間還是為具有保持最小值/最大值的側結構而仍用快速且小型電路系統計算最小值/最大值,可使用min=(索引向量中所有元素的按位元“AND”)及max=(所有元素的按位元“OR”)的近似法。如果VL小於可能的最大VL而讓尾元素不受干擾,或如果一些元素被遮罩且不受干擾,則先前範圍被延伸,而非被覆寫。如果VL小於可能的最大VL,而且尾未知策略(tail-agnostic policy)將尾元素設定至其可能的最大值,或如果一些元素被遮罩,而且遮罩未知策略(mask-agnostic policy)將被遮罩元素設定至其可能的最大值,則所記憶的上限被設定至其可能的最大值。如果VL小於可能的最大VL而且尾未知策略(tail-agnostic policy)將尾元素設定至其可能的最小值,或如果一些元素被遮罩,而且遮罩未知策略(mask-agnostic policy)將被遮罩元素設定至其可能的最小值,則所記憶的下限被設定至其可能的最小值。
當最小值/最大值為程式設計師所知時,亦可實施更有效的危險核對。關於最小值/最大值,代替記錄最小值/最大值,對於指令可具有明確的引數。可假定所有元素位於最小值/最大值內,則如果違反假設,則在運轉時間發生例外。
在一些實施方式中,向量運算記憶體保護技術可被用於實現優於傳統處理器的一或更多優點。舉例而言,本文描述的結構及技術可使用具有小電路面積及功率消耗的簡單記憶體保護電路賦能向量記憶體操作的快速記憶體保護掃描。
如本文使用的術語“電路”指被結構化成實施一或更多功能的電子元件(比如,電晶體、電阻器、電容器及/或電感器)的配置。舉例而言,電路可包含一或更多電晶體,該一或更多電晶體互連以形成共同地實施邏輯函數的邏輯閘。 詳述
圖1是使用向量記憶體操作的記憶體保護來執行指令的積體電路110的實例的方塊圖。積體電路110包含處理器核心120。處理器核心120包含向量劃分電路130,向量劃分電路130經組態以將記憶體中的向量劃分為子向量,從而促進對向量記憶體指令的快速記憶體保護掃描。處理器核120經組態以從位於積體電路110外部的記憶體140及/或位於積體電路110內部的記憶體142提取指令及存取所儲存的資料。積體電路110包含記憶體保護電路150,該記憶體保護電路150經組態以利用保護區組對一或更多位址實行記憶體保護核對。積體電路110可提供優於傳統處理器架構的優點,舉例而言,諸如使用具有小電路面積及功率消耗的簡單記憶體保護電路賦能向量記憶體操作的快速記憶體保護掃描。舉例而言,積體電路110可實施圖4的程序400。舉例而言,積體電路110可實施圖6的程序500。舉例而言,積體電路110可實施圖6的程序600。舉例而言,積體電路110可實施圖7的程序700。
積體電路110包含處理器核心120,處理器核心120可包含管線,該管線經組態以執行包含恆定跨步向量記憶體指令的指令。管線分級,諸如,提取、解碼、重新命名、派遣、發出、執行、記憶體存取及回寫級。舉例而言,處理器核心120可經組態以執行RISC V指令集的指令。
處理器核心120可經組態以自位於積體電路110外部、儲存指令及/或資料的記憶體140提取指令。處理器核心120可經組態以回應於包含向量記憶體指令(比如,向量載入指令310或向量儲存指令330)的指令存取記憶體140中的資料。舉例而言,處理器核心120可直接地或經由一或更多快取存取記憶體中的資料。處理器核心120亦可經組態以從位於積體電路110內部、儲存指令及/或資料的記憶體142提取指令。處理器核心120可經組態以回應於包含向量記憶體指令的指令存取記憶體142中的資料。雖然圖1中未顯示,但在一些實施方式中,積體電路110可包含多個處理器核心。
積體電路110包含記憶體保護電路150,該記憶體保護電路150經組態以利用保護區組核對記憶體保護違規。記憶體保護電路150可允許特權軟體來定義記憶體區域及對它們中的每一個賦予記憶體存取許可。記憶體保護電路150的保護區組用相關存取許可限制此等記憶體區域的大小及由此限制此等記憶體區域的解析度。舉例而言,保護區組可對應於記憶體頁面(比如,4kB或8kB頁面)。在一些實施方式中,記憶體保護電路150亦指定此等記憶體區域的記憶體屬性以及快取及緩衝屬性,該記憶體屬性可指定此等區域的排序及合併行為。可使用記憶體保護電路150來監視交易,包含處理器核心120的指令提取及資料存取,當記憶體保護違規被偵測時,這樣可觸發故障例外。舉例而言,嘗試對未經授權的記憶體的存取可導致硬體故障(比如,分段故障、儲存違規例外或煩擾程序的異常終止)。記憶體保護電路150可起防止程序對尚未分配給該程序的記憶體進行存取的作用,這樣可防止程序內的錯誤或惡意軟體影響其他程序或操作系統。在此實例中,記憶體保護電路150是處理器核心120的一部分。在一些實施方式中,記憶體保護電路150可在處理器核心120的外部(比如,外部記憶體系統的一部分)。
記憶體保護電路150可為各種大小及複雜度。在一些實施方式中,記憶體保護電路150經組態以每時脈循環核對二個位址。舉例而言,記憶體保護電路150可具有二個位址埠,該二個位址埠在單一時脈循環期間允許接收二個位址及對於記憶體保護違規獨立地核對記憶體中的二個位址。舉例而言,藉由將包含位址的記憶體區域的記憶體保護鍵或環與相關於處理器核心120正執行的及正在該位址嘗試存取記憶體的程序的記憶體保護鍵或環數進行比較,可核對位址。在一些實施方式中,記憶體保護電路150經組態以每時脈循環核對單一位址,且由此可佔據較小的電路面積且消耗較小的功率。在一些實施方式中,記憶體保護電路150可具有多於二個位址埠或另外經組態以對於記憶體保護違規每時脈循環核對多於二個位址或位址範圍。
積體電路110包含向量劃分電路130。向量劃分電路130可經組態以劃分記憶體(比如,記憶體140或記憶體142)中正被存取的向量,以允許與向量的其他子向量的記憶體存取平行地執行對子向量的記憶體保護掃描,且增加向量記憶體指令的吞吐量。向量劃分電路130可經組態以將向量記憶體指令辨識的向量劃分為大於一的最大長度的子向量及一或更多具有小於或等於最大長度的長度的附加子向量。在一些實施方式中,基於保護區組及向量記憶體指令(比如,向量載入指令310或向量儲存指令330)辨識的向量的跨步,可決定最大長度。舉例而言,向量劃分電路130可經組態以決定最大長度,使得最大長度與保護區組成正比及與向量的跨步成反比。舉例而言,最大長度可被決定為 g/s,其中 g為保護區組(比如,以位元組為單位)且 s為向量的跨步(比如,以位元組為單位)。在一些實施方式中,最大長度被約束為二的次方(比如,二的最大次方小於或等於 g/s)。最大長度亦可取決於向量的元素寬度。最大長度亦可取決於處理器核心120的機器寬度,亦即,處理器核心每時脈循環可處理多少向量元素。舉例而言,最大長度可被決定為min( w, ( g/s)),其中 w是處理器核心120的機器寬度。舉例而言,向量可為單位跨步向量,使得跨步為一。舉例而言,向量可具有大於一的恆定跨步(比如,跨步可對應於矩陣中列的長度,以存取依照列的順序被儲存的矩陣資料結構的行向量)。向量劃分電路130可經組態以使用記憶體保護電路150核對存取子向量的元素是否將引起記憶體保護違規。在使用記憶體保護電路150核對存取一或更多附加子向量中一者的元素是否將引起記憶體保護違規之前,向量劃分電路130可經組態以存取子向量的元素。舉例而言,向量劃分電路130可為處理器核心120的管線的執行級的一部分。
在一些實施方式中,記憶體保護電路150經組態以每時脈循環核對二個位址,及在單一時脈循環期間,藉由將子向量的第一元素的位址及子向量的最後元素的位址輸入至記憶體保護電路150中,向量劃分電路130核對存取子向量的元素是否將引起記憶體保護違規。在一些實施方式中,記憶體保護電路150經組態以每時脈循環核對單一位址,及向量劃分電路130經組態以基於向量的基址位址決定最大長度。舉例而言,考慮到向量的基址位址可賦能將向量劃分為與記憶體中的保護區組邊界對準的子向量的決定,以保證子向量被包含於單保護區組內,且因此使用與子向量的元素中的任一者相關的位址,可針對記憶體保護違規用對記憶體保護電路150的單參考核對子向量。
舉例而言,積體電路110可經組態以回應於與一或更多附加子向量中一者的元素相關的記憶體保護違規的偵測而出現例外。在一些實施方式中,出現例外可暫停處理器核心120中的執行。在一些實施方式中,出現例外可引起來自磁碟的頁面被帶入記憶體140或記憶體142。
圖2是使用向量運算的記憶體保護執行指令的積體電路210的實例的方塊圖。積體電路210包含處理器核心220。處理器核心220包含處理器管線230,處理器管線230包含向量劃分電路280,向量劃分電路280經組態以將記憶體中的向量劃分為子向量,從而促進對向量記憶體指令的快速記憶體保護掃描。處理器核心220包含一或更多暫存器檔案240,暫存器檔案240可包含向量暫存器。處理器核心220包含L1指令快取250及L1資料快取252。積體電路210包含外部記憶體系統260,外部記憶體系統260可包含儲存指令及資料的記憶體,及/或提供對位於積體電路210外部、儲存指令及/或資料的記憶體262的存取。外部記憶體系統260包含記憶體保護電路270,記憶體保護電路270可經組態以用保護區組對一或更多位址執行記憶體核對。積體電路210可提供優於傳統處理器架構的優點,舉例而言,諸如使用具有小電路面積及功率消耗的簡單記憶體保護電路賦能向量記憶體操作的快速記憶體保護掃描。舉例而言,積體電路210可實施圖4的程序400。舉例而言,積體電路210可實施圖5的程序500。舉例而言,積體電路210可實施圖6的程序600。舉例而言,積體電路210可實施圖7的程序700。
積體電路210包含處理器核心220,處理器核心220包含管線230,管線230經組態以執行包含恆定跨步向量記憶體指令的指令。管線230包含一或更多提取級,提取級經組態以自積體電路210的記憶體系統檢索指令。舉例而言,管線230可經由L1指令快取250提取指令。管線230可包含附加級,諸如解碼、重新命名、派遣、發佈、執行、記憶體存取及回寫級。舉例而言,處理器核心220可包含管線230,管線230經組態以執行RISC V指令集的指令。
積體電路210包含處理器核心220的一或更多暫存器檔案240。一或更多暫存器檔案240可儲存處理器核心220的部分或所有架構狀態。舉例而言,一或更多暫存器檔案240可包含一組向量暫存器。舉例而言,一或更多暫存器檔案240可包含一組控制及狀態暫存器(CSR)。舉例而言,一或更多暫存器檔案240可包含一組純量暫存器。
積體電路210包含處理器核心220的L1指令快取250。L1指令快取250可為指令記憶體的集合關聯式快取。為避免串聯讀出標籖陣列及資料陣列的長潛時及平行讀出陣列的高功率,可使用方式預測器(way predictor)。方式預測器在早期提取級可被存取,且命中方式可被編碼為資料陣列的讀出索引。標籖陣列可在後期提取級被存取,且可用於驗證方式預測器。
積體電路210包含處理器核心220的L1資料快取252。舉例而言,L1資料快取252可為集合關聯式VIPT快取,意味著其純粹用虛擬位址位元VA[set]索引及完全用所有轉譯實體位址位元PA[msb:12]標記。關於低功率消耗,可依串列查找標籖及資料陣列,使得至多單一資料SRAM方式可被存取。舉例而言,L1資料快取252的線大小可為64位元組,及拍(beat)大小可為26位元組。
積體電路210包含外部記憶體系統260,外部記憶體系統260可包含儲存指令及資料的記憶體及/或對位於積體電路210外部、儲存指令及/或資料的記憶體262提供存取。舉例而言,外部記憶體系統260可包含L2快取,L2快取可經組態以實施快取一致性協定/策略,從而橫跨多個L1快取而保持快取一致性。雖然圖2中未顯示,但在一些實施方式中,積體電路210可包含多個處理器核心。舉例而言,外部記憶體系統260可包含多個層。
外部記憶體系統260包含記憶體保護電路270,記憶體保護電路270經組態以用保護區組核對記憶體保護違規。記憶體保護電路270可允許特權軟體定義記憶體區域及對它們中的每一者賦予記憶體存取許可。記憶體保護電路270的保護區組限制具有相關存取許可的此等記憶體區域的大小及因此限制其解析度。舉例而言,保護區組可對應於記憶體的頁面(比如,4kB或8kB頁面)。在一些實施方式中,記憶體保護電路270亦指定此等記憶體區域的記憶體屬性以及快取及緩衝屬性,該記憶體屬性可指定此等區域的排序及合併行為。可使用記憶體保護電路270來監視交易,包含處理器核心220的指令提取及資料存取,當記憶體保護違規被偵測時,這樣可觸發故障例外。舉例而言,嘗試對未經授權的記憶體的存取可導致硬體故障(比如,分段故障、儲存違規例外或煩擾程序的異常終止)。記憶體保護電路270可起防止程序對尚未分配給記憶體保護電路270的記憶體進行存取的作用,這樣可防止程序內的錯誤或惡意軟體影響其他程序或操作系統。
記憶體保護電路270可為各種大小及複雜度。在一些實施方式中,記憶體保護電路270經組態以每時脈循環核對二個位址。舉例而言,記憶體保護電路270可具有在單一時脈循環期間允許接收二個位址及針對記憶體保護違規獨立地對記憶體中的二個位址都進行核對的二個位址埠。舉例而言,藉由將包含位址的記憶體區域的記憶體保護鍵或環與相關於處理器核心220正執行的及正在該位址嘗試存取記憶體的程序的記憶體保護鍵或環數進行比較,可核對位址。在一些實施方式中,記憶體保護電路270經組態以每時脈循環核對單一位址,且因此可佔據較小的電路面積且消耗較小的功率。在一些實施方式中,記憶體保護電路270可具有多於二個位址埠或另外經組態以針對記憶體保護違規每時脈循環核對多於二個位址或位址範圍。
管線230包含向量劃分電路280。向量劃分電路280可經組態以劃分記憶體中正被存取的向量,以允許將與向量的其他子向量的記憶體存取平行地被執行的子向量的記憶體保護掃描,且增加向量記憶體指令的吞吐量。向量劃分電路280可經組態以決定大於一、對應於單一時脈循環中要存取的向量元素的數目的最大長度。基於保護區組及向量記憶體指令(比如,向量載入指令310或向量儲存指令330)辨識的向量的跨步,可決定最大長度。舉例而言,最大長度與保護區組成正比及與跨步成反比。舉例而言,最大長度可被決定為 g/s,其中 g為保護區組(比如,以位元組為單位) 及 s為向量的跨步(比如,以位元組為單位)。在一些實施方式中,最大長度被約束為二的次方(比如,二的最大次方小於或等於 g/s)。最大長度亦可取決於向量的元素寬度。最大長度亦可取決於管線230的機器寬度,亦即,管線每時脈循環可處理多少向量元素。舉例而言,最大長度可被決定為min( w, ( g/s)),其中 w是管線230的機器寬度。舉例而言,向量可為單位跨步向量,使得跨步為一。舉例而言,向量可具有大於一的恆定跨步(比如,跨步可對應於矩陣中列的長度,以存取依照列的順序被儲存的矩陣資料結構的行向量)。向量劃分電路280可經組態以將向量劃分為最大長度的子向量及一或更多具有小於或等於最大長度的長度的附加子向量。在使用記憶體保護電路270核對存取一或更多附加子向量中一者的元素是否將引起記憶體保護違規之前,向量劃分電路280可經組態以使用記憶體保護電路270核對存取子向量的元素是否將引起記憶體保護違規。向量劃分電路280可經組態以存取子向量的元素。舉例而言,向量劃分電路280可為管線230的執行級的一部分。
在一些實施方式中,記憶體保護電路270經組態以每時脈循環核對二個位址,及在單一時脈循環期間,藉由將子向量的第一元素的位址及子向量的最後元素的位址輸入至記憶體保護電路270中,向量劃分電路280核對存取子向量的元素是否將引起記憶體保護違規。在一些實施方式中,記憶體保護電路270經組態以每時脈循環核對單一位址,及向量劃分電路280經組態以基於向量的基址位址決定最大長度。舉例而言,考慮到向量的基址位址可賦能將向量劃分為與記憶體中的保護區組邊界對準的子向量的決定,以保證子向量被包含於單保護區組內且因此使用與子向量的元素中的任一者相關的位址,可針對記憶體保護違規用對記憶體保護電路270的單參考核對子向量。
舉例而言,積體電路210可經組態以回應於與一或更多附加子向量中一者的元素相關的記憶體保護違規的偵測而出現例外。在一些實施方式中,出現例外可暫停處理器核心220的執行。在一些實施方式中,出現例外可引起來自磁碟的頁面被帶入。
圖3是包含向量載入指令310及向量儲存指令330的實例性向量記憶體指令300的記憶體映射。向量載入指令310包含:運算碼312;目的地暫存器欄位314,其辨識待用於儲存向量載入指令310的結果的架構暫存器;寬度欄位316,其規定正自記憶體載入的向量的記憶體元素的大小;基址暫存器欄位318,其辨識儲存記憶體中的向量的基址位址的架構暫存器;跨步暫存器欄位320,其辨識儲存記憶體中的向量的跨步(比如,單位跨步向量載入或另一個恆定跨步中一者)的架構暫存器;及模式欄位322,其規定向量載入指令310的附加或可選參數(比如,包含記憶體定址模式及/或每一個分段中的欄位的數目)。向量儲存指令330包含:運算碼332;來源暫存器欄位334,其辨識為儲存而保持向量資料的架構暫存器;寬度欄位336,其規定記憶體中正儲存的向量的記憶體元素的大小;基址暫存器欄位338,其辨識儲存記憶體中的向量的基址位址的架構暫存器;跨步暫存器欄位340,其辨識儲存記憶體中的向量的跨步的架構暫存器;及模式欄位342,其規定向量儲存指令330的附加或可選參數(比如,包含記憶體定址模式及/或每一個分段中的欄位的數目)。舉例而言,在RISC-V處理器核心中,向量載入指令310可為具有向量編碼延伸的LOAD-FP指令,及向量儲存指令330可為具有向量編碼延伸的STORE-FP指令。
圖4是向量運算記憶體保護的程序400的實例的流程圖。程序400包含:使用處理器核心提取410向量記憶體指令;將向量記憶體指令辨識的向量劃分420為大於一的最大長度的子向量及一或更多具有小於或等於最大長度的長度的附加子向量;核對430存取子向量的元素是否將引起記憶體保護違規;如果(在步驟435)偵測到記憶體保護違規,則出現440例外;及如果(在步驟435)未偵測到記憶體保護違規,則在使用記憶體保護電路核對存取一或更多附加子向量中一者的元素是否將引起記憶體保護違規之前,存取450子向量的元素。程序400可提供優於傳統技術的優點,舉例而言,諸如,使用具有小電路面積及功率消耗的簡單記憶體保護電路賦能向量記憶體操作的快速記憶體保護掃描。舉例而言,使用圖1的積體電路110可實施程序400。舉例而言,使用圖2的積體電路210可實施程序400。
程序400包含使用包含管線的處理器核心(比如,處理器核心220)提取410向量記憶體指令,管線經組態以執行包含恆定跨步向量記憶體指令的指令。舉例而言,向量記憶體指令可為向量載入指令310。舉例而言,向量記憶體指令可為向量儲存指令330。在一些實施方式中,經由一或更多快取(比如,L1指令快取250)自記憶體(比如,記憶體262)提取410向量記憶體指令。
程序400包含將向量記憶體指令辨識的向量劃分420為大於一的最大長度的子向量及一或更多具有小於或等於最大長度的長度的附加子向量。舉例而言,向量可部分地藉由向量記憶體指令的、包含記憶體中的基址位址、元素寬度及/或規定向量被或將被儲存於記憶體中的什麼地方的跨步的參數來辨識。在一些實施方式中,基於保護區組及向量的跨步(比如,向量載入指令310或向量儲存指令330),可決定最大長度。舉例而言,程序400可包含決定最大長度,使得最大長度與記憶體保護電路(比如,記憶體保護電路150)的保護區組成正比及與向量的跨步成反比。舉例而言,最大長度可被決定為 g/s,其中 g為保護區組(比如,以位元組為單位) 及 s為向量的跨步(比如,以位元組為單位)。在一些實施方式中,最大長度被約束為二的次方(比如,二的最大次方小於或等於 g/s)。最大長度亦可取決於向量的元素寬度。最大長度亦可取決於執行指令的處理器核心的機器寬度,亦即,處理器核心每時脈循環可處理多少向量元素。舉例而言,最大長度可被決定為min( w, ( g/s)),其中 w是處理器核心的機器寬度。舉例而言,向量可為單位跨步向量,使得跨步為一。舉例而言,向量可具有大於一的恆定跨步(比如,跨步可對應於矩陣中列的長度,以存取依照列的順序被儲存的矩陣資料結構的行向量)。在一些實施方式中,基於向量的基址位址決定最大長度,這樣可賦能向量的劃分420產生的子向量與記憶體中的保護區組對準,以保證子向量的所有元素位於單保護區組中,從而簡化對子向量的記憶體保護掃描。舉例而言,這種簡化可賦能經組態以每時脈循環核對單一位址的記憶體保護電路的使用,因此,這樣可佔據較小的電路面積及消耗較少的功率。
程序400包含使用記憶體保護電路核對430存取子向量的元素是否將引起記憶體保護違規。在一些實施方式中,記憶體保護電路(比如,記憶體保護電路150)經組態以每時脈循環核對二個位址,及核對430存取子向量的元素是否將引起記憶體保護違規包含在單一時脈循環期間將子向量的第一元素的位址及子向量的最後元素的位址輸入至記憶體保護電路中。舉例而言,若子向量的最大長度保證子向量的元素可位於不多於二個相鄰保護區組中,則此手段可有效。在一些實施方式中,若已知子向量的元素在單保護區組中,則藉由將與子向量的元素(比如,第一元素或任何其他元素)相關的單一位址輸入至記憶體保護電路中可實現核對430存取子向量的元素是否將引起記憶體保護違規。在一些實施方式中,若使用較大的子向量,則與針對記憶體保護違規核對430子向量的元素相關的複雜度可與所涉及的保護區組的數目成比例。舉例而言,可使用具有更多輸入位址埠的較大記憶體保護電路在每時脈循環核對更多元素,從而提高向量記憶體指令的執行效能。
如果(在步驟435)偵測到記憶體保護違規,則回應於與子向量的元素相關的記憶體保護違規的偵測,出現440例外。在一些實施方式中,出現例外可暫停處理器核心(比如,處理器核心120)的執行。在一些實施方式中,出現例外可引起來自磁碟的頁面被帶入記憶體(比如,記憶體140或記憶體142)。
如果(在步驟435)未偵測到記憶體保護違規,則在(比如,使用記憶體保護電路150)核對存取一或更多附加子向量中一者的元素是否將引起記憶體保護違規之前存取450該子向量的元素。舉例而言,存取450元素可包含在向量載入指令的執行期間自記憶體(比如,自記憶體140)讀出此等元素的值。舉例而言,存取450元素可包含在向量儲存指令的執行期間將此等元素的值寫至記憶體(比如,自記憶體140)中。因此,為記憶體保護掃描而將向量劃分420為子向量可使向量記憶體指令的執行更平行,且提高處理核心的效能。雖然圖4中未明確地顯示,但在先前核對的430子向量繼續藉由處理器核心的管線中的後續級在記憶體中被存取450而直到所有子向量已被核對430及被存取450或例外已經發生440時,針對記憶體保護違規核對430向量的子向量可串行地繼續。
圖5是向量運算記憶體保護的程序500的實例的流程圖。程序500包含:決定510大於一、對應於要在單一時脈循環中存取的向量元素的數目的最大長度;將向量劃分520為最大長度的子向量及一或更多具有小於或等於最大長度的長度的附加子向量;核對530存取子向量的元素是否將引起記憶體保護違規;如果(在步驟535)偵測到記憶體保護違規,則出現540例外;及如果(在步驟535)未偵測到記憶體保護違規,則在使用記憶體保護電路核對存取一或更多附加子向量中一者的元素是否將引起記憶體保護違規之前,存取550子向量的元素。程序500可提供優於傳統技術的優點,舉例而言,諸如賦能使用具有小電路面積及功率消耗的簡單記憶體保護電路對向量記憶體操作的快速記憶體保護掃描。舉例而言,使用圖1的積體電路110可實施圖5的程序500。舉例而言,使用圖2的積體電路210可實施程序500。
程序500包含:決定510大於一、對應於要在單一時脈循環中存取的向量元素的數目的最大長度。基於保護區組(比如,記憶體保護電路150的保護區組)及向量記憶體指令所辨識的向量的跨步,可決定510最大長度。在一些實施方式中,最大長度與保護區組成正比及與跨步成反比。舉例而言,最大長度可被決定510為 g/s,其中 g為保護區組(比如,以位元組為單位) 及 s為向量的跨步(比如,以位元組為單位)。在一些實施方式中,最大長度被約束為二的次方(比如,二的最大次方小於或等於 g/s)。最大長度亦可取決於向量的元素寬度。最大長度亦可取決於執行指令的處理器核心的機器寬度,亦即,處理器核心每時脈循環可處理多少向量元素。舉例而言,最大長度可被決定為min( w, ( g/s)),其中 w是處理器核心的機器寬度。舉例而言,向量可為單位跨步向量,使得跨步為一。舉例而言,向量可具有大於一的恆定跨步(比如,跨步可對應於矩陣中列的長度,以存取依照列的順序被儲存的矩陣資料結構的行向量)。在一些實施方式中,基於向量的基址位址決定510最大長度,這樣可賦能劃分520向量得到的子向量與記憶體中的保護區組對準,以保證子向量的所有元素都位於單保護區組中,從而簡化對子向量的記憶體保護掃描。舉例而言,此簡化可賦能經組態以每時脈循環核對530單一位址的記憶體保護電路的使用,因此,這樣可佔據較小的電路面積及消耗較少的功率。
程序500包含將向量劃分520為最大長度的子向量及一或更多具有小於或等於最大長度的長度的附加子向量。在一些實施方式中,劃分520向量包含對各子向量賦予向量的最大長度連續元素的群組,直到向量的所有元素被賦予子向量。舉例而言,如果向量中的元素的數目不可被最大長度整除,則子向量可具有比最大長度少的元素。在一些實施方式中,劃分520向量包含對各子向量賦予大小小於或等於最大長度的向量的連續元素的群組,其中已知每一個群組(比如,基於向量的基址位址及又基於群組中的元素的位址)將位於記憶體保護電路的單保護區組的邊界內。舉例而言,如果其第一元素或其最後元素遠離保護區組邊界,則子向量可具有比最大長度少的元素。
程序500包含(比如,使用記憶體保護電路)核對530存取子向量的元素是否將引起記憶體保護違規。在一些實施方式中,記憶體保護電路(比如,記憶體保護電路150)經組態以每時脈循環核對二個位址,及核對530存取子向量的元素是否將引起記憶體保護違規包含在單一時脈循環期間將子向量的第一元素的位址及子向量的最後元素的位址輸入至記憶體保護電路中。舉例而言,若子向量的最大長度保證子向量的元素可位於不多於二個相鄰保護區組中,則此手段可有效。在一些實施方式中,若已知子向量的元素在單保護區組中,則藉由將與子向量的元素(比如,第一元素或任何其他元素)相關的單一位址輸入至記憶體保護電路可實現核對530存取子向量的元素是否將引起記憶體保護違規。在一些實施方式中,若使用較大的子向量,則與針對記憶體保護違規核對530子向量的元素相關的複雜度可與所涉及的保護區組的數目成比例。舉例而言,可使用具有更多輸入位址埠的較大記憶體保護電路在每時脈循環核對更多元素,從而提高向量記憶體指令的執行效能。
如果(在步驟535)偵測到記憶體保護違規,則回應於與子向量的元素相關的記憶體保護違規的偵測,出現540例外。在一些實施方式中,出現例外可暫停處理器核心(比如,處理器核心120)的執行。在一些實施方式中,出現例外可引起來自磁碟的頁面被帶入記憶體(比如,記憶體140或記憶體142)。
如果(在步驟535)未偵測到記憶體保護違規,則在(比如,使用記憶體保護電路150)核對存取一或更多附加子向量中一者的元素是否將引起記憶體保護違規之前存取550該子向量的元素。舉例而言,存取550元素可包含在向量載入指令的執行期間自記憶體(比如,自記憶體140)讀出此等元素的值。舉例而言,存取550元素可包含在向量儲存指令的執行期間將此等元素的值寫至記憶體(比如,自記憶體140)中。由此,為記憶體保護掃描而將向量劃分520為子向量可使向量記憶體指令的執行更平行,且提高處理核心的效能。雖然圖5中未明確地顯示,但在先前核對的530子向量繼續藉由處理器核心的管線中的後續級在記憶體中被存取550而直到所有子向量已被核對530及被存取550或例外已經發生540時,針對記憶體保護違規核對530向量的子向量可串行地繼續。
圖6是使用具有二個輸入位址埠的記憶體保護電路的向量運算記憶體保護程序600的實例的流程圖。程序600包含:決定610子向量的最大長度,使得子向量的元素最多被儲存於記憶體中的二個相鄰保護區組中;及在單一時脈循環期間,輸入620子向量的第一元素的位址及子向量的最後元素的位址,以針對記憶體保護違規核對整個子向量。藉由限制子向量的大小而在劃分中處理向量,對每一個子向量實行記憶體保護掃描的複雜度可被降低。藉由將子向量的大小限制調適至記憶體保護電路的記憶體保護區組及向量的跨步及/或元素寬度,可提高向量記憶體指令的執行的平行度及效能。程序600可提供優於傳統技術的優點,舉例而言,諸如賦能使用具有小電路面積及功率消耗的簡單記憶體保護電路對向量記憶體操作的快速記憶體保護掃描。舉例而言,可使用圖1的積體電路110實施程序600。舉例而言,可使用圖2的積體電路210實施程序600。
圖7是使用具有單輸入位址埠的記憶體保護電路的向量運算記憶體保護程序700的實例的流程圖。程序700包含:基於記憶體保護電路的保護區組及向量的跨步、寬度及基址位址決定710劃分的子向量,使得每一個子向量具有記憶體中的僅一個保護區組中的元素;及將子向量的任何元素(比如,第一元素)的位址輸入720至記憶體保護電路中,以針對記憶體保護違規核對整個子向量。藉由將向量的元素的位址與對應於記憶體保護電路的保護區組的邊界的位址進行比較,可決定710劃分,以保證子向量的所有元素在單保護區組內。這樣可降低每一個子向量的記憶體保護掃描的複雜度。程序700可提供優於傳統技術的優點,舉例而言,諸如賦能使用具有小電路面積及功率消耗的簡單記憶體保護電路對向量記憶體操作的快速記憶體保護掃描。舉例而言,可使用圖1的積體電路110實施程序700。舉例而言,可使用圖2的積體電路210實施程序700。
圖8是支持集中-分散記憶體指令記憶體保護的積體電路810的實例的方塊圖。積體電路810包含處理器核心820。處理器核心820包含處理器管線830,處理器管線830包含索引範圍電路880,索引範圍電路880經組態以決定集中-分散記憶體指令的位址範圍,從而促進對集中-分散記憶體指令的快速記憶體保護掃描。處理器核心820包含一或更多暫存器檔案840,一或更多暫存器檔案840包含向量暫存器882。處理器核心820包含L1指令快取850及L1資料快取852。積體電路810包含外部記憶體系統860,外部記憶體系統860可包含儲存指令及資料的記憶體及/或對位於積體電路810外部、儲存指令及/或資料的記憶體862提供存取。外部記憶體系統860包含記憶體保護電路870,記憶體保護電路870可經組態以利用保護區組對一或更多位址實行記憶體保護核對。積體電路810可提供優於傳統處理器架構的優點,舉例而言,諸如賦能使用具有小電路面積及功率消耗的簡單記憶體保護電路對集中-分散記憶體操作的快速記憶體保護掃描。舉例而言,積體電路810可實施圖9的程序900。舉例而言,積體電路810可實施圖10的程序1000。舉例而言,積體電路810可實施圖11的程序1100。
積體電路810包含處理器核心820,處理器核心820包含管線830,管線830經組態以執行包含集中-分散記憶體指令的指令。管線830包含一或更多提取級,一或更多提取級經組態以自積體電路810的記憶體系統檢索指令。舉例而言,管線830可經由L1指令快取850提取指令。管線830可包含附加級,諸如,解碼、重新命名、派遣、發佈、執行、記憶體存取及回寫級。舉例而言,處理器核心820可包含管線830,管線830經組態以執行RISC V指令集的指令。
積體電路810包含處理器核心820的一或更多暫存器檔案840。一或更多暫存器檔案840可儲存處理器核心820的部分或所有架構狀態。舉例而言,一或更多暫存器檔案840可包含一組向量暫存器。舉例而言,一或更多暫存器檔案840可包含一組控制與狀態暫存器(CSR)。舉例而言,一或更多暫存器檔案840可包含一組純量暫存器。
積體電路810包含處理器核心820的L1指令快取850。L1指令快取850可為指令記憶體的集合關聯式快取。為避免串聯讀出標籖陣列及資料陣列的長潛時及平行讀出陣列的高功率,可使用方式預測器(way predictor)。方式預測器在早期提取級可被存取,且命中方式可被編碼為資料陣列的讀出索引。標籖陣列可在後期提取級被存取,且可用於驗證方式預測器。
積體電路810包含處理器核心820的L1資料快取852。舉例而言,L1資料快取852可為集合關聯式VIPT快取,意味著其純粹用虛擬位址位元VA[set]索引及完全用所有轉譯實體位址位元PA[msb:12]標記。關於低功率消耗,可依串列查找標籖及資料陣列,使得至多單一資料SRAM方式可被存取。舉例而言,L1資料快取852的線大小可為64位元組,及拍大小可為86位元組。
積體電路810包含外部記憶體系統860,外部記憶體系統860可包含儲存指令及資料的記憶體及/或對位於積體電路810外部、儲存指令及/或資料的記憶體862提供存取。舉例而言,外部記憶體系統860可包含L2快取,L2快取可經組態以實施快取一致性協定/策略,從而橫跨多個L1快取而保持快取一致性。雖然圖8中未顯示,但在一些實施方式中,積體電路810可包含多個處理器核心。舉例而言,外部記憶體系統860可包含多個層。
外部記憶體系統860包含記憶體保護電路870,記憶體保護電路870經組態以用保護區組核對記憶體保護違規。記憶體保護電路870可允許特權軟體定義記憶體區域及對它們中的每一者賦予記憶體存取許可。記憶體保護電路870的保護區組限制具有相關存取許可的此等記憶體區域的大小及因此限制其解析度。舉例而言,保護區組可對應於記憶體的頁面(比如,4kB或8kB頁面)。在一些實施方式中,記憶體保護電路870亦指定此等記憶體區域的記憶體屬性以及快取及緩衝屬性,該記憶體屬性可指定此等區域的排序及合併行為。可使用記憶體保護電路870來監視交易,包含處理器核心820的指令提取及資料存取,當記憶體保護違規被偵測時,這樣可觸發故障例外。舉例而言,嘗試對未經授權的記憶體的存取可導致硬體故障(比如,分段故障、儲存違規例外或煩擾程序的異常終止)。記憶體保護電路870可起防止程序對尚未分配給記憶體保護電路870的記憶體進行存取的作用,這樣可防止程序內的錯誤或惡意軟體影響其他程序或操作系統。
記憶體保護電路870可為各種大小及複雜度。在一些實施方式中,記憶體保護電路870經組態以每時脈循環核對二個位址。舉例而言,記憶體保護電路870可具有在單一時脈循環期間允許接收二個位址及針對記憶體保護違規獨立地對記憶體中的二個位址都進行核對的二個位址埠。舉例而言,藉由將包含位址的記憶體區域的記憶體保護鍵或環與相關於處理器核心820正執行的及正在該位址嘗試存取記憶體的程序的記憶體保護鍵或環數進行比較,可核對位址。在一些實施方式中,記憶體保護電路870經組態以每時脈循環核對單一位址,且因此可佔據較小的電路面積且消耗較小的功率。在一些實施方式中,記憶體保護電路870可具有多於二個位址埠或另外經組態以針對記憶體保護違規每時脈循環核對多於二個位址或位址範圍。
管線830包含索引範圍電路880。索引範圍電路880可經組態以決定集中-分散記憶體指令的位址範圍,從而促進對集中-分散記憶體指令的快速記憶體保護掃描。索引範圍電路880可經組態以在單一時脈循環期間使用記憶體保護電路870核對存取位址範圍內的向量的元素是否將引起記憶體保護違規。索引範圍電路880可經組態以將位址範圍的大小與記憶體保護電路870的記憶體保護區組(大小)進行比較。如果位址範圍的跨距小於記憶體保護區組,則可確保集中-分散指令所涉及的向量的元素位於記憶體中的一或二個相鄰記憶體保護區組內。在一些實施方式中,記憶體保護電路870經組態以每時脈循環核對二個位址,及索引範圍電路880經組態以在單一時脈循環期間將位址範圍的第一位元組的位址及位址範圍的最後位元組的位址輸入至記憶體保護電路870中。在一些實施方式中,記憶體保護電路經組態以每時脈循環核對單一位址,及索引範圍電路經組態以核對位址範圍落入單記憶體保護區組內;以及在單一時脈循環期間,將地址範圍中的單一位址輸入至記憶體保護電路中。舉例而言,核對位址範圍落入單記憶體保護區組內可包含將位址範圍與記憶體中的不同記憶體保護模塊之間的邊界進行比較。
可藉由索引範圍電路880實施各種技術來決定集中-分散記憶體指令的位址範圍。在一些實施方式中,索引範圍電路880經組態以在將處理器核心820的向量暫存器882中儲存的索引元組寫至向量暫存器882中時,記憶索引元組的最大值,及在將索引元組寫至向量暫存器882中時,記憶索引元組的最小值。可使用各種類型的資料儲存電路(比如,正反器、鎖存器或暫存器)來儲存藉由記憶決定的索引的最大值及最小值。舉例而言,索引範圍電路880可經組態以將最大值儲存於處理器核心820的微架構暫存器中。基於記憶體中的向量的基址位址、所記憶的最小值及所記憶的最大值,索引範圍電路880可經組態以將佔用向量暫存器882的集中-分散記憶體指令的位址範圍決定為一組索引。舉例而言,在由集中-分散記憶體指令辨識的暫存器中可供給基址位址。舉例而言,位址範圍可被決定為:[(基址位址+所記憶的最小值), (基址位址+所記憶的最大值+每元素位元組-1)]。舉例而言,積體電路810可實施圖9的程序900。
在一些實施方式中,基於記憶體中的向量的基址位址及一組索引的最大位元寬度,索引範圍電路880可經組態以將佔用向量暫存器882的集中-分散記憶體指令的位址範圍決定為該組索引。舉例而言,位址範圍可被決定為:[基址位址, 基址位址+ 2^n - 1 +每元素位元組-1],其中n是該組索引的最大位元寬度。舉例而言,積體電路810可實施圖10的程序1000。
在一些實施方式中,索引範圍電路880經組態以將處理器核心的向量暫存器882中儲存的索引元組的上限決定為向量暫存器882中儲存的所有索引的按位元“OR”,及將索引元組的下限決定為向量暫存器882中儲存的所有索引的按位元“AND”。基於記憶體中的向量的基址位址、上限、下限,索引範圍電路880可經組態以將佔用向量暫存器882的集中-分散記憶體指令的位址範圍決定為一組索引。舉例而言,位址範圍可被決定為:[(基址位址+下限), (基址位址+上限+每元素位元組-1)]。舉例而言,積體電路810可實施圖11的程序1100。
舉例而言,索引範圍電路880可為管線830的執行級的一部分。舉例而言,積體電路810可經組態以回應於與向量的元素相關的記憶體保護違規的偵測而出現例外。在一些實施方式中,出現例外可暫停處理器核心820的執行。在一些實施方式中,出現例外可引起來自磁碟的頁面被帶入。
圖9是使用索引極值記憶的集中-分散記憶體指令記憶體保護程序900的實例的流程圖。程序900包含:使用包含管線的處理器核心提取902集中-分散記憶體指令,該管線經組態以執行指令;在將索引元組寫至向量暫存器中時,記憶910處理器核心的向量暫存器中儲存的索引元組的最大值;在將索引元組寫至向量暫存器中時,記憶912索引元組的最小值;基於記憶體中的向量的基址位址、所記憶的最小值及所記憶的最大值,將佔用向量暫存器的集中-分散記憶體指令的位址範圍決定920為一組索引;及在單一時脈循環期間使用記憶體保護電路核對930存取位址範圍內的向量的元素是否將引起記憶體保護違規。在935,如果已偵測到記憶體保護違規,則程序900包含出現940例外。在935,如果未偵測到記憶體保護違規,則程序900包含存取向量元素,以執行集中-分散記憶體指令。程序900可提供優於傳統技術的優點,舉例而言,諸如,賦能使用具有小電路面積及功率消耗的簡單記憶體保護電路對集中-分散記憶體操作的快速記憶體保護掃描。舉例而言,可使用圖8的積體電路810實施程序900。
程序900包含使用包含管線的處理器核心(比如,處理器核心820)提取902集中-分散記憶體指令,該管線經組態以執行包含集中-分散記憶體指令的指令。舉例而言,集中-分散記憶體指令可為所索引的向量載入指令(比如,RISC V指令集架構的vloxei16.v指令)。舉例而言,集中-分散記憶體指令可為所索引的向量儲存指令(比如,RISC V指令集架構的vsuxei64.v指令)。在一些實施方式中,經由一或更多快取(比如,L1指令快取250)自記憶體(比如,記憶體262)提取902集中-分散記憶體指令。
程序900包含在將索引元組寫至向量暫存器中時,記憶910處理器核心的向量暫存器(比如,向量暫存器882)中儲存的索引元組的最大值。程序900包含在將索引元組寫至向量暫存器中時,記憶912索引元組的最小值。可使用各種類型的資料儲存電路(比如,正反器、鎖存器或暫存器)來儲存藉由記憶決定的索引的最大值及最小值。舉例而言,記憶910向量暫存器中儲存的索引元組的最大值可包含將該最大值儲存於處理器核心的微架構暫存器中。在一些實施方式中,資訊被記憶的粒度可較細(比如,向量暫存器的子片)或較粗(比如,向量暫存器的群組)。
程序900包含將佔用向量暫存器的集中-分散記憶體指令的位址範圍決定920為基於記憶體中的向量的基址位址、所記憶的最小值及所記憶的最大值的一組索引。舉例而言,在由集中-分散記憶體指令辨識的暫存器中可供給基址位址。舉例而言,位址範圍可被決定920為:[(基址位址+所記憶的最小值), (基址位址+所記憶的最大值+每元素位元組- 1)]。
程序900包含在單一時脈循環期間使用記憶體保護電路(比如,記憶體保護電路870)核對930存取位址範圍內的向量的元素是否將引起記憶體保護違規。舉例而言,核對930存取位址範圍內的向量的元素是否將引起記憶體保護違規可包含將位址範圍的大小與記憶體保護電路的記憶體保護區組(大小)進行比較。如果位址範圍的跨距小於記憶體保護區組,則可確保集中-分散指令所涉及的向量的元素位於記憶體中的一或二個相鄰記憶體保護區組內。在一些實施方式中,記憶體保護電路經組態以每時脈循環核對二個位址,及核對930存取位址範圍內的向量的元素是否將引起記憶體保護違規包含在單一時脈循環期間將位址範圍的第一位元組的位址及位址範圍的最後位元組的位址輸入至記憶體保護電路中。在一些實施方式中,記憶體保護電路經組態以每時脈循環核對單一位址,及核對930存取位址範圍內的向量的元素是否將引起記憶體保護違規包含:核對位址範圍落在單記憶體保護區組內;及在單一時脈循環期間將位址範圍中的單一位址輸入至記憶體保護電路中。舉例而言,核對位址範圍落在單記憶體保護區組內可包含將位址範圍與記憶體中的不同記憶體保護模塊之間的邊界進行比較。
如果(在步驟935)偵測到記憶體保護違規,則回應於與向量的元素相關的記憶體保護違規的偵測,出現940例外。在一些實施方式中,出現例外可暫停處理器核心(比如,處理器核心820)的執行。在一些實施方式中,出現例外可引起來自磁碟的頁面被帶入記憶體(比如,記憶體860或記憶體862)。
如果(在步驟935)未偵測到記憶體保護違規,則程序900包含存取950向量的元素,以執行集中-分散記憶體指令。舉例而言,在向量載入指令的執行期間,存取950元素可包含自記憶體(比如,自記憶體860)讀出此等元素的值。舉例而言,在向量儲存指令的執行期間,存取950元素可包含將此等元素的值寫至記憶體(比如,自記憶體860)中。
圖10是使用索引大小約束的集中-分散記憶體指令記憶體保護程序1000的實例的流程圖。程序1000包含:使用包含管線的處理器核心提取1002集中-分散記憶體指令,該管線經組態以執行指令;基於記憶體中的向量的基址位址及一組索引的最大位元寬度,將佔用向量暫存器的集中-分散記憶體指令的位址範圍決定1020為該組索引;及在單一時脈循環期間使用記憶體保護電路核對1030存取位址範圍內的向量的元素是否將引起記憶體保護違規。在1035,如果已偵測到記憶體保護違規,則程序1000包含出現1040例外。在1035,如果未偵測到記憶體保護違規,則程序1000包含存取向量元素,以執行集中-分散記憶體指令。程序1000可提供優於傳統技術的優點,舉例而言,諸如,賦能使用具有小電路面積及功率消耗的簡單記憶體保護電路對集中-分散記憶體操作的快速記憶體保護掃描。舉例而言,可使用圖8的積體電路810實施程序1000。
程序1000包含使用包含管線的處理器核心(比如,處理器核心820)提取1002集中-分散記憶體指令,該管線經組態以執行包含集中-分散記憶體指令的指令。舉例而言,集中-分散記憶體指令可為所索引的向量載入指令(比如,RISC V指令集架構的vloxei16.v指令)。舉例而言,集中-分散記憶體指令可為所索引的向量儲存指令(比如,RISC V指令集架構的vsuxei64.v指令)。在一些實施方式中,經由一或更多快取(比如,L1指令快取250)自記憶體(比如,記憶體262)提取1002集中-分散記憶體指令。
程序1000包含將佔用向量暫存器的集中-分散記憶體指令的位址範圍決定1020為基於記憶體中的向量的基址位址及一組索引的最大位元寬度的一組索引。舉例而言,在由集中-分散記憶體指令辨識的暫存器中可供給基址位址。舉例而言,位址範圍可被決定1020為:[基址位址, 基址位址+ 2^n - 1 +每元素位元組- 1],其中n是該組索引的最大位元寬度(比如,8位元或16位元索引的8或16)。
程序1000包含在單一時脈循環期間使用記憶體保護電路(比如,記憶體保護電路870)核對1030存取位址範圍內的向量的元素是否將引起記憶體保護違規。舉例而言,核對1030存取位址範圍內的向量的元素是否將引起記憶體保護違規可包含將位址範圍的大小與記憶體保護電路的記憶體保護區組(大小)進行比較。如果位址範圍的跨距小於記憶體保護區組,則可確保集中-分散指令所涉及的向量的元素位於記憶體中的一或二個相鄰記憶體保護區組內。在一些實施方式中,記憶體保護電路經組態以每時脈循環核對二個位址,及核對1030存取位址範圍內的向量的元素是否將引起記憶體保護違規包含在單一時脈循環期間將位址範圍的第一位元組的位址及位址範圍的最後位元組的位址輸入至記憶體保護電路中。在一些實施方式中,記憶體保護電路經組態以每時脈循環核對單一位址,及核對1030存取位址範圍內的向量的元素是否將引起記憶體保護違規包含:核對位址範圍落在單記憶體保護區組內;及在單一時脈循環期間將位址範圍中的單一位址輸入至記憶體保護電路中。舉例而言,核對位址範圍落在單記憶體保護區組內可包含將位址範圍與記憶體中的不同記憶體保護模塊之間的邊界進行比較。
如果(在步驟1035)偵測到記憶體保護違規,則回應於與向量的元素相關的記憶體保護違規的偵測,出現1040例外。在一些實施方式中,出現例外可暫停處理器核心(比如,處理器核心820)的執行。在一些實施方式中,出現例外可引起來自磁碟的頁面被帶入記憶體(比如,記憶體860或記憶體862)。
如果(在步驟1035)未偵測到記憶體保護違規,則程序1000包含存取1050向量的元素,以執行集中-分散記憶體指令。舉例而言,在向量載入指令的執行期間,存取1050元素可包含自記憶體(比如,自記憶體860)讀出此等元素的值。舉例而言,在向量儲存指令的執行期間,存取1050元素可包含將此等元素的值寫至記憶體(比如,自記憶體860)中。
圖11是使用索引界限的集中-分散記憶體指令記憶體保護程序1100的實例的流程圖。程序1100包含:使用包含管線的處理器核心提取1102集中-分散記憶體指令,該管線經組態以執行指令;將處理器核心的向量暫存器中儲存的索引元組的上限決定1110為向量暫存器中儲存的所有索引的按位元“OR”;及將索引元組的下限決定1112為向量暫存器中儲存的所有索引的按位元“AND”;基於記憶體中的向量的基址位址、上限及下限,將佔用向量暫存器的集中-分散記憶體指令的位址範圍決定1120為一組索引;及在單一時脈循環期間使用記憶體保護電路核對1130存取位址範圍內的向量的元素是否將引起記憶體保護違規。在1135,如果已偵測到記憶體保護違規,則程序1100包含出現1140例外。在1135,如果未偵測到記憶體保護違規,則程序1100包含存取向量元素,以執行集中-分散記憶體指令。程序1100可提供優於傳統技術的優點,舉例而言,諸如,賦能使用具有小電路面積及功率消耗的簡單記憶體保護電路對集中-分散記憶體操作的快速記憶體保護掃描。舉例而言,可使用圖8的積體電路810實施程序1100。
程序1000包含使用包含管線的處理器核心(比如,處理器核心820)提取1102集中-分散記憶體指令,該管線經組態以執行包含集中-分散記憶體指令的指令。舉例而言,集中-分散記憶體指令可為所索引的向量載入指令(比如,RISC V指令集架構的vloxei16.v指令)。舉例而言,集中-分散記憶體指令可為所索引的向量儲存指令(比如,RISC V指令集架構的vsuxei64.v指令)。在一些實施方式中,經由一或更多快取(比如,L1指令快取250)自記憶體(比如,記憶體262)提取1102集中-分散記憶體指令。
程序1100包含將處理器核心的向量暫存器(比如,向量暫存器882)中儲存的索引元組的上限決定1110為向量暫存器中儲存的所有索引的按位元“OR”。 程序1100包含將索引元組的下限決定1112為向量暫存器中儲存的所有索引的按位元“AND”。
程序1100包含將佔用向量暫存器的集中-分散記憶體指令的位址範圍決定1120為基於記憶體中的向量的基址位址、上限及下限的一組索引。舉例而言,位址範圍可被決定1120為:[(基址位址+下限), (基址位址+上限+每元素位元組-1)]。
程序1100包含在單一時脈循環期間使用記憶體保護電路(比如,記憶體保護電路870)核對1130存取位址範圍內的向量的元素是否將引起記憶體保護違規。舉例而言,核對1130存取位址範圍內的向量的元素是否將引起記憶體保護違規可包含將位址範圍的大小與記憶體保護電路的記憶體保護區組(大小)進行比較。如果位址範圍的跨距小於記憶體保護區組,則可確保集中-分散指令所涉及的向量的元素位於記憶體中的一或二個相鄰記憶體保護區組內。在一些實施方式中,記憶體保護電路經組態以每時脈循環核對二個位址,及核對1130存取位址範圍內的向量的元素是否將引起記憶體保護違規包含在單一時脈循環期間將位址範圍的第一位元組的位址及位址範圍的最後位元組的位址輸入至記憶體保護電路中。在一些實施方式中,記憶體保護電路經組態以每時脈循環核對單一位址,及核對1130存取位址範圍內的向量的元素是否將引起記憶體保護違規包含:核對位址範圍落在單記憶體保護區組內;及在單一時脈循環期間將位址範圍中的單一位址輸入至記憶體保護電路中。舉例而言,核對位址範圍落在單記憶體保護區組內可包含將位址範圍與記憶體中的不同記憶體保護模塊之間的邊界進行比較。
如果(在步驟1135)偵測到記憶體保護違規,則回應於與向量的元素相關的記憶體保護違規的偵測,出現1140例外。在一些實施方式中,出現例外可暫停處理器核心(比如,處理器核心820)的執行。在一些實施方式中,出現例外可引起來自磁碟的頁面被帶入記憶體(比如,記憶體860或記憶體862)。
如果(在步驟1135)未偵測到記憶體保護違規,則程序1100包含存取1150向量的元素,以執行集中-分散記憶體指令。舉例而言,在向量載入指令的執行期間,存取1050元素可包含自記憶體(比如,自記憶體860)讀出此等元素的值。舉例而言,在向量儲存指令的執行期間,存取1150元素可包含將此等元素的值寫至記憶體(比如,自記憶體860)中。
於第一態樣中,此說明書中描述之標的可被具體實施於用於執行指令之積體電路中,該積體電路包含:處理器核心,其包含經組態以執行包含恆定跨步向量記憶體指令的指令的管線;記憶體保護電路,其經組態以用保護區組核對記憶體保護違規;及向量劃分電路。向量劃分電路經組態以:決定大於一、對應於在單一時脈循環中要被存取的向量元素的數目的最大長度,其中該最大長度是基於保護區組及藉由向量記憶體指令辨識的向量的跨步而被決定;將向量劃分為最大長度的子向量及一或更多具有小於或等於最大長度的長度的附加子向量;使用記憶體保護電路核對存取子向量的元素是否將引起記憶體保護違規;及在使用記憶體保護電路核對存取一或更多附加子向量中一者的元素是否將引起記憶體保護違規之前,存取子向量的元素。
於第二態樣中,此說明書中描述之標的可被具體實施於方法中,此等方法包含:使用包含管線的處理器核心提取向量記憶體指令,管線經組態以執行包含恆定跨步向量記憶體指令的指令;將藉由向量記憶體指令辨識的向量劃分為大於一的最大長度的子向量及一或更多具有小於或等於最大長度的長度的附加子向量;使用記憶體保護電路核對存取子向量的元素是否將引起記憶體保護違規;及在使用記憶體保護電路核對存取一或更多附加子向量中一者的元素是否將引起記憶體保護違規之前,存取子向量的元素。
於第三態樣中,此說明書中描述之標的可被具體實施於用於執行指令之積體電路中,該積體電路包含:處理器核心,其包含經組態以執行包含恆定跨步向量記憶體指令的指令的管線;記憶體保護電路,其經組態以用保護區組核對記憶體保護違規;及向量劃分電路。向量劃分電路經組態以:將藉由向量記憶體指令辨識的向量劃分為大於一的最大長度的子向量及一或更多具有小於或等於最大長度的長度的附加子向量;使用記憶體保護電路核對存取子向量的元素是否將引起記憶體保護違規;及在使用記憶體保護電路核對存取一或更多附加子向量中一者的元素是否將引起記憶體保護違規之前,存取子向量的元素。
於第四態樣中,此說明書中描述之標的可被具體實施於用於執行指令之積體電路中,該積體電路包含:處理器核心,其包含經組態以執行包含集中-分散記憶體指令的指令的管線;記憶體保護電路,其經組態以用保護區組核對記憶體保護違規;及索引範圍電路,其經組態以:在將索引元組寫至向量暫存器中時,記憶處理器核心的向量暫存器中儲存的索引元組的最大值;在將索引元組寫至向量暫存器中時,記憶索引元組的最小值;基於記憶體中的向量的基址位址、所記憶的最小值及所記憶的最大值,將佔用向量暫存器的集中-分散記憶體指令的位址範圍決定為一組索引;及在單一時脈循環期間使用記憶體保護電路核對存取位址範圍內的向量的元素是否將引起記憶體保護違規。
於第五態樣中,此說明書中描述之標的可被具體實施於方法中,此等方法包含:使用包含管線的處理器核心提取集中-分散記憶體指令,管線經組態以執行包含集中-分散記憶體指令的指令;在將索引元組寫至向量暫存器中時,記憶處理器核心的向量暫存器中儲存的索引元組的最大值;在將索引元組寫至向量暫存器中時,記憶索引元組的最小值;基於記憶體中的向量的基址位址、所記憶的最小值及所記憶的最大值,將佔用向量暫存器的集中-分散記憶體指令的位址範圍決定為一組索引;及在單一時脈循環期間使用記憶體保護電路核對存取位址範圍內的向量的元素是否將引起記憶體保護違規。
於第六態樣中,此說明書中描述之標的可被具體實施於用於執行指令之積體電路中,該積體電路包含:處理器核心,其包含經組態以執行包含集中-分散記憶體指令的指令的管線;記憶體保護電路,其經組態以用保護區組核對記憶體保護違規;及索引範圍電路,其經組態以:基於記憶體中的向量的基址位址及一組索引的最大位元寬度,將佔用向量暫存器的集中-分散記憶體指令的位址範圍決定為該組索引;及在單一時脈循環期間使用記憶體保護電路核對存取位址範圍內的向量的元素是否將引起記憶體保護違規。
於第七態樣中,此說明書中描述之標的可被具體實施於方法中,此等方法包含:使用包含管線的處理器核心提取集中-分散記憶體指令,管線經組態以執行包含集中-分散記憶體指令的指令;基於記憶體中的向量的基址位址及一組索引的最大位元寬度,將佔用向量暫存器的集中-分散記憶體指令的位址範圍決定為該組索引;及在單一時脈循環期間使用記憶體保護電路核對存取位址範圍內的向量的元素是否將引起記憶體保護違規。
於第八態樣中,此說明書中描述之標的可被具體實施於用於執行指令之積體電路中,該積體電路包含:處理器核心,其包含經組態以執行包含集中-分散記憶體指令的指令的管線;記憶體保護電路,其經組態以用保護區組核對記憶體保護違規;及索引範圍電路,其經組態以:將處理器核心的向量暫存器中儲存的索引元組的上限決定為向量暫存器中儲存的所有索引的按位元“OR”;將索引元組的下限決定為向量暫存器中儲存的所有索引的按位元“AND”;基於記憶體中的向量的基址位址、上限、下限,將佔用向量暫存器的集中-分散記憶體指令的位址範圍決定為一組索引;及在單一時脈循環期間使用記憶體保護電路核對存取位址範圍內的向量的元素是否將引起記憶體保護違規。
於第九態樣中,此說明書中描述之標的可被具體實施於方法中,該方法包含:使用包含管線的處理器核心提取集中-分散記憶體指令,管線經組態以執行包含集中-分散記憶體指令的指令;將處理器核心的向量暫存器中儲存的索引元組的上限決定為向量暫存器中儲存的所有索引的按位元“OR”;將索引元組的下限決定為向量暫存器中儲存的所有索引的按位元“AND”;基於記憶體中的向量的基址位址、上限及下限,將佔用向量暫存器的集中-分散記憶體指令的位址範圍決定為一組索引;及在單一時脈循環期間使用記憶體保護電路核對存取位址範圍內的向量的元素是否將引起記憶體保護違規。
儘管已結合特定實施方式描述了該揭露內容,但應當理解,本揭露內容並不限於所揭露之實施方式,而相反地,其旨在涵蓋包含於所附申請專利範圍的範疇內之各種修改及等效配置,依據此範疇做最廣泛解釋,藉以涵蓋全部此等修改及等效結構。
110、210、810:積體電路 120、220、820:處理器核心 130、280:向量劃分電路 140、142、262、862:記憶體 150、270、870:記憶體保護電路 230、830:處理器管線 240、840:暫存器檔案 250、850:L1指令快取 252、852:L1資料快取 260、860:外部記憶體系統 300:向量記憶體指令 310:向量載入指令 330:向量儲存指令 312、332:運算碼(opcode) 314:目的地暫存器欄位 316、336:寬度欄位 318、338:基址暫存器欄位 320、340:跨步暫存器欄位 322、342:模式欄位 334:來源暫存器欄位 400、500、600、700、900、1000、1100:程序 435、535、935、1035、1135:步驟 880:索引範圍電路 882:向量暫存器
當配合附圖閱讀時,依下面的詳細描述最佳地理解本揭露內容。要強調的是,根據慣例,圖式的各種特徵未按比例。相反地,為清楚起見,各種特徵的大小可被任意放大或縮小。 圖1是支持向量運算記憶體保護的積體電路的實例的方塊圖。 圖2是支持向量運算記憶體保護的積體電路的實例的方塊圖。 圖3是向量記憶體指令的實例的記憶體映像。 圖4是向量運算記憶體保護程序的實例的流程圖。 圖5是向量運算記憶體保護程序的實例的流程圖。 圖6是使用具有二個輸入位址埠的記憶體保護電路的向量運算記憶體保護程序的實例的流程圖。 圖7是使用具有單輸入位址埠的記憶體保護電路的向量運算記憶體保護程序的實例的流程圖。 圖8是支持集中-分散記憶體指令的記憶體保護的積體電路的實例的方塊圖。 圖9是使用索引極值點記憶的集中-分散記憶體指令記憶體保護程序的實例的流程圖。 圖10是使用索引大小約束的集中-分散記憶體指令記憶體保護程序的實例的流程圖。 圖11是使用索引界限的集中-分散記憶體指令記憶體保護程序的實例的流程圖。
810:積體電路
820:處理器核心
830:處理器管線
840:暫存器檔案
850:L1指令快取
852:L1資料快取
860:外部記憶體系統
862:記憶體
870:記憶體保護電路
880:索引範圍電路
882:向量暫存器

Claims (20)

  1. 一種用於執行指令的積體電路,包括: 一處理器核心,該處理器核心包含經組態以執行包含集中-分散記憶體指令的指令的一管線; 一記憶體保護電路,該記憶體保護電路經組態以利用一保護區組核對記憶體保護違規;及 一索引範圍電路,該索引範圍電路經組態以: 在將該處理器核心的一向量暫存器中儲存的索引的一元組寫至該向量暫存器中時,記憶索引的該元組的一最大值; 在將索引的該元組寫至該向量暫存器中時,記憶索引的該元組的一最小值; 基於記憶體中的一向量的一基址位址、所記憶的最小值及所記憶的最大值,將佔用該向量暫存器的一集中-分散記憶體指令的一位址範圍決定為一組索引;及 在一單一時脈循環期間使用該記憶體保護電路核對存取該位址範圍內的向量的元素是否將引起一記憶體保護違規。
  2. 如請求項1所述的積體電路,其中該記憶體保護電路經組態以每時脈循環核對二個位址,及該索引範圍電路經組態以: 在一單一時脈循環期間將該位址範圍的一第一位元組的一位址及該位址範圍的一最後位元組的一位址輸入至該記憶體保護電路中。
  3. 如請求項1所述的積體電路,其中該記憶體保護電路經組態以每時脈循環核對一單一位址,及該索引範圍電路經組態以: 核對該位址範圍落入一單記憶體保護區組內;及 在一單一時脈循環期間,將該位址範圍中的一單一位址輸入至該記憶體保護電路中。
  4. 如請求項1所述的積體電路,其中該索引範圍電路是該管線的一執行級的一部分。
  5. 如請求項1所述的積體電路,其中該索引範圍電路經組態以將該最大值儲存於該處理器核心的一微架構暫存器中。
  6. 如請求項1所述的積體電路,其中該積體電路經組態以: 回應於與該向量的一元素相關的一記憶體保護違規的偵測而出現一例外。
  7. 一種方法,包括: 使用包含一管線的一處理器核心提取一集中-分散記憶體指令,該管線經組態以執行包含集中-分散記憶體指令的指令; 在將該處理器核心的一向量暫存器中儲存的索引的一元組寫至該向量暫存器中時,記憶索引的該元組的一最大值; 在將索引的該元組寫至該向量暫存器中時,記憶索引的該元組的一最小值; 基於記憶體中的一向量的一基址位址、所記憶的最小值及所記憶的最大值,將佔用該向量暫存器的集中-分散記憶體指令的一位址範圍決定為一組索引;及 在一單一時脈循環期間使用一記憶體保護電路核對存取該位址範圍內的向量的元素是否將引起一記憶體保護違規。
  8. 如請求項7所述的方法,其中該記憶體保護電路經組態以每時脈循環核對二個位址,及核對存取該位址範圍內的向量的元素是否將引起一記憶體保護違規包括: 在一單一時脈循環期間將該位址範圍的一第一位元組的一位址及該位址範圍的一最後位元組的一位址輸入至該記憶體保護電路中。
  9. 如請求項7所述的方法,其中該記憶體保護電路經組態以每時脈循環核對一單一位址,及核對存取該位址範圍內的向量的元素是否將引起一記憶體保護違規包括: 核對該位址範圍落在一單記憶體保護區組內;及 在一單一時脈循環期間將該位址範圍中的一單一位址輸入至該記憶體保護電路中。
  10. 如請求項7所述的方法,包括: 回應於與該向量的一元素相關的一記憶體保護違規的偵測而出現一例外。
  11. 如請求項7所述的方法,其中記憶該向量暫存器中儲存的索引的該元組的該最大值包括: 將該最大值儲存於該處理器核心的一微架構暫存器中。
  12. 一種用於執行指令的積體電路,包括: 一處理器核心,該處理器核心包含經組態以執行包含集中-分散記憶體指令的指令的一管線; 一記憶體保護電路,該記憶體保護電路經組態以利用一保護區組核對記憶體保護違規;及 一索引範圍電路,該索引範圍電路經組態以: 將佔用一向量暫存器的一集中-分散記憶體指令的一位址範圍決定為一組索引,該組索引是基於記憶體中的一向量的一基址位址及該組索引的一最大位元寬度;及 在一單一時脈循環期間使用該記憶體保護電路核對存取該位址範圍內的向量的元素是否將引起一記憶體保護違規。
  13. 如請求項12所述的積體電路,其中該記憶體保護電路經組態以每時脈循環核對二個位址,及該索引範圍電路經組態以: 在一單一時脈循環期間將該位址範圍的一第一位元組的一位址及該位址範圍的一最後位元組的一位址輸入至該記憶體保護電路中。
  14. 如請求項12所述的積體電路,其中該記憶體保護電路經組態以每時脈循環核對一單一位址,及該索引範圍電路經組態以: 核對該位址範圍落入一單一記憶體保護區組內;及 在一單一時脈循環期間,將該地址範圍中的一單一位址輸入至該記憶體保護電路中。
  15. 如請求項12所述的積體電路,其中該索引範圍電路是該管線的一執行級的一部分。
  16. 如請求項12所述的積體電路,其中該積體電路經組態以: 回應於與該向量的一元素相關的一記憶體保護違規的偵測而出現一例外。
  17. 一種方法,包括: 使用包含一管線的一處理器核心提取一集中-分散記憶體指令,該管線經組態以執行包含集中-分散記憶體指令的指令; 將佔用一向量暫存器的該集中-分散記憶體指令的一位址範圍決定為一組索引,該組索引是基於記憶體中的一向量的一基址位址及該組索引的一最大位元寬度;及 在一單一時脈循環期間使用一記憶體保護電路核對存取該位址範圍內的該向量的元素是否將引起一記憶體保護違規。
  18. 如請求項17所述的方法,其中該記憶體保護電路經組態以每時脈循環核對二個位址,及核對存取該位址範圍內的該向量的元素是否將引起一記憶體保護違規包括: 在一單一時脈循環期間將該位址範圍的一第一位元組的一位址及該位址範圍的一最後位元組的一位址輸入至該記憶體保護電路中。
  19. 如請求項17所述的方法,其中該記憶體保護電路經組態以每時脈循環核對一單一位址,及核對存取該位址範圍內的該向量的元素是否將引起一記憶體保護違規包括: 核對該位址範圍落在一單記憶體保護區組內;及 在一單一時脈循環期間將該位址範圍中的一單一位址輸入至該記憶體保護電路中。
  20. 如請求項17所述的方法,包括: 回應於與該向量的一元素相關的一記憶體保護違規的偵測而出現一例外。
TW110132114A 2020-09-02 2021-08-30 集中-分散操作記憶體保護 TW202215238A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063073916P 2020-09-02 2020-09-02
US63/073,916 2020-09-02
US202163221422P 2021-07-13 2021-07-13
US63/221,422 2021-07-13

Publications (1)

Publication Number Publication Date
TW202215238A true TW202215238A (zh) 2022-04-16

Family

ID=77924521

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110132114A TW202215238A (zh) 2020-09-02 2021-08-30 集中-分散操作記憶體保護

Country Status (6)

Country Link
US (1) US20230305969A1 (zh)
EP (1) EP4208780A1 (zh)
KR (1) KR20230058487A (zh)
CN (1) CN116057516A (zh)
TW (1) TW202215238A (zh)
WO (1) WO2022051353A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2557175B2 (ja) * 1992-05-22 1996-11-27 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システム
US9244684B2 (en) * 2013-03-15 2016-01-26 Intel Corporation Limited range vector memory access instructions, processors, methods, and systems
US20190370038A1 (en) * 2016-07-27 2019-12-05 Intel Corporation Apparatus and method supporting code optimization

Also Published As

Publication number Publication date
KR20230058487A (ko) 2023-05-03
CN116057516A (zh) 2023-05-02
WO2022051353A1 (en) 2022-03-10
EP4208780A1 (en) 2023-07-12
US20230305969A1 (en) 2023-09-28

Similar Documents

Publication Publication Date Title
US7873776B2 (en) Multiple-core processor with support for multiple virtual processors
US7240160B1 (en) Multiple-core processor with flexible cache directory scheme
US7685354B1 (en) Multiple-core processor with flexible mapping of processor cores to cache banks
US7426626B2 (en) TLB lock indicator
KR102383900B1 (ko) 타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산
US9043559B2 (en) Block memory engine with memory corruption detection
US7721066B2 (en) Efficient encoding for detecting load dependency on store with misalignment
US8984261B2 (en) Store data forwarding with no memory model restrictions
US9131899B2 (en) Efficient handling of misaligned loads and stores
EP0036110A2 (en) Cache addressing mechanism
US10120800B2 (en) History based memory speculation for partitioned cache memories
US8904227B2 (en) Cache self-testing technique to reduce cache test time
TW202215238A (zh) 集中-分散操作記憶體保護
US20230315649A1 (en) Memory protection for vector operations
KR20220154821A (ko) 프로세서 파이프라인에서 간접 점프의 페치 스테이지 처리
US8423719B2 (en) Apparatus, processor and method of controlling cache memory
US20240012948A1 (en) Efficient processing of masked memory accesses
TW202215252A (zh) 遮罩記憶體存取之有效率處理