TWI499973B - 利用暫存器擴充來管理與施用中央處理單元中之元資料的技術 - Google Patents

利用暫存器擴充來管理與施用中央處理單元中之元資料的技術 Download PDF

Info

Publication number
TWI499973B
TWI499973B TW099131694A TW99131694A TWI499973B TW I499973 B TWI499973 B TW I499973B TW 099131694 A TW099131694 A TW 099131694A TW 99131694 A TW99131694 A TW 99131694A TW I499973 B TWI499973 B TW I499973B
Authority
TW
Taiwan
Prior art keywords
register
metadata
boundary
memory
default
Prior art date
Application number
TW099131694A
Other languages
English (en)
Other versions
TW201118724A (en
Inventor
Baiju V Patel
Rajeev Gopalakrishna
Andrew F Glew
Robert J Kushlis
Dyke Don Alan Van
Joseph Frank Cihula
Asit K Mallick
Jims B Crossland
Gilbert Neiger
Dion Rodgers
Martin Dixon
Mark Jay Charney
Jacob Koby Gottlieb
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201118724A publication Critical patent/TW201118724A/zh
Application granted granted Critical
Publication of TWI499973B publication Critical patent/TWI499973B/zh

Links

Classifications

    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Description

利用暫存器擴充來管理與施用中央處理單元中之元資料的技術 發明領域
此領域一般係關於計算機科學,且更具體地,係關於中央處理單元(CPU)中的元資料。
發明背景
諸如C及C++之現代程式設計語言不使用元資料。重要的元資料,如指標邊界(例如邊界指的是位址的開始與結束,即分別為指標所指物件的下邊界與上邊界)及物件的資料類型在諸如C/C++程式的這些程式設計語言執行期間是不被提供的。一運行軟體程式缺少此類元資料通常造成該程式之不正常行為且導致易損性。添加元資料之一個傳統方法是將其相鄰於資料本身地儲存在記憶體中,因此軟體或硬體可確定元資料之位置;然而,這需要改變記憶體佈局/應用二進制介面(ABI)。因此,元資料只用在整個軟體需要加以重新編譯以支持新修改協定之一相當特定的環境中。
可選擇地,軟體將該資料及元資料儲存在非相鄰記憶體位置中且進一步施用一映射功能以使該資料與相對應的元資料匹配。在此情況下,該資料載入暫存器中,而該相對應的元資料載入其它現存暫存器中。而且,該軟體需要持續追蹤該等現存暫存器中之該資料與該元資料之間的相關聯關係且執行該元資料之必要傳播與無效以使其與其相對應的資料保持同步。在此情況下,當資料遭傳遞到暫存器參數中之函數時,該相對應的元資料也需要遭傳遞到暫存器中。這導致缺少透明性且必需對該使用之呼叫協定進行一擴充。而且,此技術之實施本身很慢,因為其對該軟體及系統加上了高間接費用,諸如補充暫存器不足、元資料傳播及無效所需的附加指令等,因此該技術實際上不會被採用。
第1圖說明了具有內定暫存器102之一處理器100之一簡視圖。諸如通用處理器或者專用處理器之一處理器是具有遭設計以處理程式碼指令之電子電路的一半導體晶片。大多數處理器典型地包括多個通用架構特徵,諸如內定暫存器102。一典型暫存器在該處理器上提供少量儲存空間,因此某些資料可利用該暫存器來存取,與之相對的是,存取記憶體可以是一緩慢的過程;例如,一暫存器可用來儲存指令輸入操作數及指令輸出結果。
其它通用架構特徵可包括局部儲存指令及/或資料之一快取記憶體、用以從快取記憶體及/或記憶體中擷取指令之擷取電路、用以將指令結果儲存到快取記憶體及/或記憶體之回寫電路。而且,具有暫存器102之處理器100遭顯示為與隨機存取記憶體(RAM) 104及唯讀記憶體(ROM) 106連通。
發明概要
依據本發明之一實施例,係特地提出一種方法,其包含以下步驟:將一第一處理器之內定暫存器擴充成一電腦系統之該第一處理器上之元資料暫存器,該等內定暫存器儲存有資料;及各別地將元資料儲存到該等元資料暫存器上,該元資料與該資料相關聯。
圖式簡單說明
本發明之實施例透過舉例而非限制性方式說明在附圖中之圖式中,其中同樣的參考數字表示同樣的元件且其中:第1圖說明了具有內定暫存器之一傳統處理器;第2圖說明了具有內定暫存器及界限暫存器之一處理器之一實施例;第3圖說明了在一處理器中與界限暫存器耦接之內定暫存器之一實施例;第4圖說明了用於利用作為內定暫存器之擴充暫存器的界限暫存器來管理元資料之一程序之一實施例,該等內定暫存器具有與該元資料相關聯之資料;第5圖說明了用於界限檢查之一程序之一實施例;第6圖說明了用於利用作為內定暫存器之擴充暫存器的界限暫存器來管理元資料之一程序之一實施例,該等內定暫存器包括與該元資料有關聯之資料;及第7圖說明了一計算系統之一實施例。
較佳實施例之詳細說明第2圖說明了具有內定(即,現存)暫存器202與界限暫存器204之一處理器200之一實施例。在一個實施例中,處理器200係顯示為具有內定暫存器202及表示該等內定暫存器之硬體暫存器擴充之界限暫存器204。此等界限暫存器204提供該硬體暫存器擴充以在元資料相應的資料(例如,內定暫存器202中之指標)遭複製或修改時保持該元資料(例如,界限暫存器204中之界限)且保持該元資料與其相應資料之間的相應關聯關係而不對該等內定暫存器202施加額外壓力。而且,透過(隱性或明確地)提供該等內定暫存器202與該等界限暫存器204之間的相關聯關係,此等暫存器202之呼叫協定保持相同。保持在該等界限暫存器204處之該元資料由處理器200用於不同目的。例如,該元資料包括資料類型,且處理器200可在對該資料進行操作之前確認該資料類型。
一暫存器可包括一通用或整數暫存器(其用於儲存資料及位址且被認為是一組合資料/位址暫存器)及其它暫存器,諸如一用戶可存取暫存器、一資料暫存器、一位址暫存器、一狀態暫存器、一浮點暫存器、一常數暫存器、一向量暫存器、一專用暫存器(包括一指令暫存器)、一特定模組暫存器、一控制及狀態暫存器等。在一個實施例中,整數暫存器與界限暫存器204相關聯,但該等實施例不將界限暫存器204局限於整數暫存器且可使用任一類型暫存器或者數個暫存器類型之一組合。暫存器擴充204持有與暫存器202中之資料有關聯之元資料。在一個實施例中,當一(通用)暫存器202包含一記憶體位址(例如,一指標)時,暫存器擴充204可用以指定可利用暫存器202存取(載入/儲存)之記憶體位址之範圍。暫存器202中之位址可能超過其界限暫存器204中指定之界限。此等界限可在記憶體存取的時候遭檢查。每一記憶體地址範圍由一下邊界與一上邊界構成(稍後在此文件中進一步描述及討論)。在此情況下,暫存器擴充204被稱為界限暫存器或者暫存器描述符。處理器200進一步包括一位址產生器單元206以產生或確定記憶體位址。可利用暫存器202及可取捨地其它暫存器(例如,英特爾處理器中之一索引暫存器或一恒定位移)來產生該位址。處理器200進一步包括用以比較位址範圍之下邊界與上邊界之一位址比較器(還稱為界限檢查單元)208及用以提供對與處理器200耦接之該記憶體及該等暫存器202、204中之儲存媒體之存取之一記憶體存取單元210。如圖所示,內定暫存器202與位址產生器單元206耦接,同時位址產生器單元206與界限暫存器204都與位址比較器(運算邏輯單元))208耦接,另外該位址比較器208與記憶體存取單元210耦接。處理器200可包含其它邏輯單元、電路及模組以執行如此文件通篇描述之該等實施例之各種任務。視正遭執行之任務之性質而定,內定暫存器202可包含任意數目及任意類型之暫存器,諸如通用暫存器、浮點暫存器等。例如,關於一指令,源暫存器與目的地暫存器可遭使用且此等暫存器可包括通用暫存器或浮點暫存器等。因此,一指令可透過一源暫存器提供,而該指令之結果可位於一目的地暫存器;該等源暫存器與目的地暫存器是該等內定暫存器202之一部分。
在一個實施例中,一新程式指令遭定義以產生界限且將該等界限儲存在該等界限暫存器204中。此程式指令可以 是先前在一程式中未定義之一全新操作碼或者還可以設定別名來利用先前未使用之非操作(NOP)指令。用以保持一致性之元資料傳播可藉由處理器200隱性地關於通常與指標操作(諸如ADD、SUB、INC、DEC等)一起使用之指令之一子集或者明確地利用表示傳播行為之新指令來執行。其描述了在當該元資料相對應之該資料在某些條件下遭修改時處理器200如何保留該元資料及在該元資料相對應之該資料在其它條件下遭修改時處理器200如何銷毀該元資料。因為在一個實施例中,現有指令之語義遭使用以對元資料進行傳播、保留及證明其有效/證明其無效,所以在該軟體程式中不需要額外的可能負面影響該程式碼大小及其效能的指令。
在一個實施例中,界限檢查應用到任意數目個記憶體指令且可經由一指令之一前綴明確指定,該指令前綴諸如一段超越前綴。當一指令具有與其內定段相同之段超越前綴時,該指令可實施該界限檢查,而在另一實施例中,一全新前綴可添加到該指令。在不實施此技術之此等處理器中,該內定段前綴是NOP。在不支援/實施元資料之此等處理器上沒有元資料的益處之情況下,NOP前綴之使用允許該軟體正確運行。在一個實施例中,一明確界限檢查指令可遭允許,其中這樣一指令將具有兩個或三個操作數。例如,在兩個操作數形式中,該第一操作數可用作一記憶體位址及第二操作數可用作一存取大小(位元組,字等)。
第3圖說明了一處理器中與界限暫存器204耦接之內定 暫存器202之一實施例。在一個實施例中,基於內定暫存器202之數目與類型及電腦系統之處理器架構之工作方式,暫存器擴充(例如,界限暫存器)204可包括任意數目及任意類型之暫存器。在此說明中,該等暫存器擴充寬為128個位元,其中下邊界擴充302寬64個位元以保持下邊界而上邊界擴充304寬為64個位元以保持上邊界。
例如,一新指令,例如CPMKDSC r,m ,將一暫存器及一有效位址作為操作數。暫存器值為該下邊界而該有效位址為該上邊界。該指令將該下邊界值寫入該下邊界暫存器擴充302且將該上邊界值寫入對應於該特定暫存器之該上邊界暫存器擴充304。因此,例如,CPMKDSC RAX,[RBX] ,其中RAX=1000及RBX=1004,下邊界擴充306遭寫入1000作為該下邊界值,而上邊界擴充308遭寫入1004作為RAX之描述符中之該上邊界值。此將1000及1004確立為RAX中之指標之該下邊界與上邊界。在另一實施例中,該指令可具有三個操作數以計算下邊界與上邊界,而在再一實施例中,可有兩個獨立指令來分別產生該下邊界與上邊界。
可用以對指標執行算術運算之指令,諸如INC、DEC、AND、OR、ADD及SUB,保留在此運算中使用之該暫存器之描述符內容。此等運算修改該指標值但不破壞它,這是為什麽該等描述符內容仍然有效的原因。繼續描述該以上範例,如果INC RAX遭執行五次,則RAX之值將為1005且比如RAX現在被用以利用MOV RCX,[RAX] 來存取記憶體。與RAX中之該指標有關聯之該元資料為該下邊界與上 邊界,即1000 306及1004 308。當與為1005之RAX匹配時,此資訊推斷出一界外記憶體存取(即,一緩衝器溢位)遭檢測到。在此實施例中,該CPU/處理器可發信通知一緩衝器溢位異常,使得該程式軟體可採取恰當的校正動作。
諸如MOV或LEA之指令用以在暫存器之間複製指標且除了複製指標外,還用以將一源描述符之內容傳播到一目的地描述符。當指標在內定暫存器202中之暫存器之間遭複製時,這對應於複製該界限暫存器204中之該等界限。不需要或不預期元資料之任一其它指令可使用在指令中之任一目的地暫存器之該等描述符內容無效或者將其破壞;例如,MOV RAX,0破壞了RAX之該等描述符內容,因為界限對於指標而言是重要的,但對於整數而言是不重要的。
在一個實施例中,軟體或硬體或者二者之一結合可用以判定對記憶體之細粒度存取控制。存取控制大體上指的是當各個主體存取物件時所執行之檢查,以確保試圖存取物件之任何主體具有存取此等物件之權限。例如,指標可被看作試圖存取記憶體中之不同物件之該等主體。權限可以以與該指標有關聯之界限來實現。存取控制資訊在本文中稱為(下/上)邊界資訊或值,而存取控制檢查稱為界限檢查。當利用一指標存取記憶體時,界限暫存器204及在此規定之任何方法可執行某些任務或檢查,諸如下/上邊界檢查。此等方法還可執行額外的檢查,諸如權限及/或資料類型之檢查。在一個實施例中,界限暫存器204用來為用以存取記憶體之一位址指定下/上邊界值、實施該等特定界限值 及處理任何界限違規。
在一個實施例中,界限暫存器204及方法用來指定指標之界限值(還稱為存取控制資訊)、必要時操控指標及/或界限值,及使界限值成為記憶體存取之一部分來實施。利用界限暫存器204之一新穎的細粒度存取控制或界限檢查技術遭使用。相比於該等通用(整數)暫存器中之資料物件,此處使用之該方法/裝置/系統直接將界限值與判定對一記憶體區域之存取控制之指標或指標值相關聯(相對於控制頁表或段暫存器)以促進對儲存在該等界限暫存器204中之界限值之細粒度界限檢查。
如以上所提及,在一個實施例中,一程式之一個或多個現存(但未用)指令可用以產生且指定界限值(存取控制資訊)且用以將界限值與該等內定暫存器202中之指標關聯,且指令/前綴可進一步用以向處理器200指示對特定記憶體存取之實施需要。例如,內定暫存器202可包括通用(整數)暫存器,其等要遭擴充來保持要利用包含在該等內定暫存器202中之指標來存取之位址之的下邊界及上邊界。每一內定暫存器202遭擴大為顯示為界限暫存器204之兩個附加的暫存器以保持一內定暫存器202中之該指標之下邊界值與上邊界值。
當具有一有效描述符之一內定(整數)暫存器202用來存取記憶體時,處理器200對正在遭存取之該記憶體位址執行該描述符中之界限。處理器200可接著將該操作數大小添加到內定暫存器202中之該指標以對該特定上邊界進行檢 查。例如,如果該存取為四個位元組,則處理器200可將4加到該指標且將該數字與特定上邊界比較。因此,對於界限檢查,該操作數大小是用於檢查界限之隱含操作數之一個。例如,一界限值可在一處理器架構之定址模式之基址暫存器中指定;然而,該界限還可在一變址暫存器中指定。
根據一個實施例,為了確保與該等現存ABI之互操作性及相容性,舊有指令可使與目的地暫存器有關聯之該等界限無效。在另一可以不需要該互操作性之實施例中,界限不適用的那些指令遭選擇且與目的地暫存器有關聯之界限暫存器204的該等界限(或者元資料)可無效。而且,需要將界限值從一特定源暫存器傳播到一特定目的地暫存器之任一指令可將一傳播前綴添加到該指令。如此,該等實施例提供對界限值之一細粒度控制,而且處理器200確保任何舊一有指令清除描述符以防止懸空描述符。然而,在其它此互操作性或兼容性可能不是必需的實施例中,此等條件可放寬或忽略。
在一個實施例中,界限檢查應用到任意數目個記憶體指令且可經由一指令之一前綴遭明確規定,該指令前綴諸如一段超越前綴。當一指令具有與該指令之內定段相同之段超越前綴時,該指令可執行該界限檢查,而在另一實施例中,一全新前綴可添加到該指令。在一個實施例中,一明確界限檢查指令可遭允許,其中這樣一指令將具有兩個或三個操作數。在兩個操作數之一模式中,該第一操作數用作記憶體位址且該第二操作數用作一存取大小(位元 組、字等)。來自該記憶體位址之該基址或變址暫存器之界限可用於該檢查。在三個操作數之一模式中,該等界限暫存器204之一特定界限暫存器還可與該前兩個操作數之內容一起遭明確規定。利用此圖式中描述之該技術,可執行諸如防止緩衝溢出、程式碼(例如,C/C++程式碼等)之運行類型檢查之操作。
第4圖說明了用於利用作為內定暫存器之擴充暫存器的界限暫存器管理元資料之一程序400之一實施例。在處理方塊402處,一軟體程式之一指令遭擷取及在一處理器處之一內定暫存器中解碼且如果該指令為舊有指令,則該舊有指令在處理方塊404處遭執行。在處理方塊406處,執行指標運算(例如,加、減、增量等)且在處理方塊408處,包含在該內定暫存器中之該指標之上邊界及下邊界保留在作為該內定暫存器之一擴充暫存器之該界限暫存器中。如果該舊有指令不是一指標運算指令,則在處理方塊410處使該等界限無效。
如果該指令為CMPKDSC ,則在處理方塊412處,利用包含在一內定暫存器中之一指標存取之該位址之上邊界及下邊界遭計算且在處理方塊414處此等界限接著複製到一界限暫存器中。如果該指令與舊有載入有關,則在判定方塊416處,判定是否有關於舊有載入之一界限違規。如果有,則在處理方塊420處,拋出異常,如果沒有,則在處理方塊418處執行一舊有載入操作。類似地,如果該指令與舊有儲存有關,則在判定方塊422處,判定是否有關於舊有儲 存之一界限違規。如果有,則在處理方塊420處拋出異常,如果沒有,則在處理方塊424處執行一舊有儲存操作。
如果該指令與該遭檢查之指標(例如,可具有與其相關聯之界限之一指標)載入有關,則在判定方塊426處,判定是否有關於指標載入之一界限。如果有,則在處理方塊420處,發信通知一異常,如果沒有,則在處理方塊428處針對記憶體中之該描述符計算一位址。在判定方塊430處,判定是否有該記憶體中之位址之有效界限。如果有,則在處理方塊432處,該內定暫存器之來自記憶體之該等有效界限遭複製到作為該內定暫存器之一擴充之該等界限暫存器。如果沒有,在處理方塊410處,該等界限看作無效。
類似地,如果在處理方塊402處遭擷取及解碼之該指令與已檢查之指標儲存有關,則在判定方塊434處判定是否有關於該指標儲存之一界限違規。如果有,則在處理方塊420處發信通知一異常如果沒有,則在處理方塊436處計算針對記憶體中之該描述符之一位址。在判定方塊438處,判定是否有用來儲存該位址之界限之任一記憶體。如果沒有,則在處理方塊420處發信通知一異常,如果有,則在處理方塊440處,該等界限從該界限暫存器儲存到該記憶體描述符。該等程序(從處理方塊410、414、418、424、432、440)結束於過渡方塊442。
第5圖說明了用於界限檢查之一程序500之一實施例。在處理方塊502處,利用一軟體程式之一可用指令計算要存取之最低位址。在處理方塊504處,計算要存取之最高位址。在處理方塊506處,執行一計算。該計算判定要存取之該最低位址是否大於或等於該界限暫存器中提供之該下邊界及要存取之該最高位址是否低於或等於該界限暫存器中之該上邊界;如果是,則在處理區塊510處未檢測到違規。如果不是,則檢測到一界限違規且該程序在處理區塊508處結束。
第6圖說明了用於利用作為內定暫存器之擴充暫存器之界限暫存器管理元資料之一程序600之一實施例,內定暫存器具有與該元資料有關聯之資料。在處理方塊602處,一組界限暫存器添加到已具有一組內定暫存器之該處理器。一內定暫存器可包括一通用(整數)暫存器且用以保持資料、指標等。該組界限暫存器可包括(基於硬體)暫存器,該等(基於硬體)暫存器能夠保持與存在於該等內定暫存器中之該資料有關之元資料(諸如界限)。在一個實施例中,對於每一內定暫存器,有兩個界限暫存器添加到該處理器使得該兩個界限暫存器中之一個保存一下邊界而另一個保存一上邊界,該下邊界及該上邊界與該內定暫存器中之一指標用以存取記憶體之該位址相對應。在處理方塊604處,利用該處理器之之計算邏輯使用可用但未用之一軟體程式之一個或多個指令計算與一位址有關聯之該下邊界與上邊界。
在判定方塊606處,利用該計算邏輯,判定該等計算出之界限是否有效。在一個實施例中,如果該計算出之下邊界小於已存在於該界限暫存器中之該下邊界、或者如果該計算出之上邊界大於已存在於該等界限暫存器中之該上邊界,則該計算出之界限即遭違反。此稱為該等界限之擴大。如果已判定該等界限遭擴大,則在處理方塊608處拋出一異常且該等界限不儲存在該等界限暫存器中。然而,如果該等界限未遭擴大,則在處理方塊610處,它們儲存在該下邊界暫存器與上邊界暫存器中。
本發明之實施例包括提供內定(通用)暫存器之新/擴充暫存器使得該等擴充暫存器保存元資料、利用一指令在該等擴充暫存器中產生元資料、將來自/去往記憶體之元資料載入/儲存到該等擴充暫存器、對照元資料進行記憶體存取檢查、藉由不支援元資料之此等指令執行元資料之無效而得到結果,及提供元資料與內定暫存器之隱性關聯。而且,利用先前實施之NOP為新指令執行指令編碼允許一軟體程式在沒有元資料之優勢的情況下在不正確實施本發明之處理器上正確地工作;然而;在實施該新技術且使用元資料之該等處理器上,該同一軟體提供優勢。
而且,本發明之實施例定義了為該通用暫存器中之一指標指定界限之元資料。當一指標用來參考引用記憶體時,該處理器計算要由一指令存取之位址之範圍且將此等位址與該等擴充(界限)暫存器中之該等界限進行比較以確保由該等指令之任一個存取之該等記憶體位置全部在此等界限內。對存取該等界限外之一記憶體位置之任何嘗試遭阻止且在這樣一情況下,該處理器發信通知異常以允許該軟體程式處理此狀況。一實施例包括一位址變換功能,其用以將儲存有一指標的該位址變換到該記憶體中要儲存該元資料的該位址,使得與一記憶體位址有關聯之該元資料可獲載入到或儲存到該擴充暫存器中。此位址變換技術允許該元資料儲存在與儲存有該相應資料之位置(例如,內定/通用暫存器)分開之一位置(例如,新/擴充/界限暫存器)處。為了簡便、清晰及一致,「界限」在本文用作元資料所包括內容之一範例(因此,該用語「界限暫存器」),但可想到元資料可包括與資料相關聯之任意數目的相應內容。例如,在與內定暫存器處之該相應資料有關且相關聯之擴充暫存器處,元資料可包括任意數目個資料類型[<datatype>](例如,整數、浮點等)。在另一實施例中,指標用以定型諸如結構之複雜的資料類型表。在其它實施例中,該元資料可包括記憶體存取權,諸如唯讀、讀/寫等。
第7圖說明了一計算系統(例如,一電腦)之一實施例。第7圖之示範性計算系統包括:1)一個或多個處理器701,它們中之至少一個可包括上述特徵;2)一記憶體控制中樞(MCH)702;3)一系統記憶體703(其中存在不同類型,諸如雙倍資料速率RAM(DDR RAM),延伸資料輸出RAM(EDO RAM)等);4)一快取記憶體704;5)一輸入/輸出(I/O)控制中樞(ICH)705;6)一圖形處理器706;7)一顯示器/螢幕707(其中存在不同類型,諸如陰極射線管(CRT),薄膜電晶體(TFT)、液晶顯示器(LCD)、DPL等);及8)一個或多個I/O裝置708。
該一個或多個處理器701執行指令以執行該計算系統執行之所有軟體程序。該等指令經常包含針對資料執行之某種操作。資料及指令都儲存在系統記憶體703及快取記憶體704中。快取記憶體704典型地遭設計為具有比系統記憶體703短之延遲時間。例如,快取記憶體704可整合到與該(等)處理器相同之該(等)矽晶片上及/或由較快靜態RAM(SRAM)晶胞構成而系統記憶體703可由較慢動態RAM(DRAM)晶胞構成。透過趨向於將更常使用之指令及資料儲存到快取記憶體704而非系統記憶體703,該計算系統之總性能效率提高。
系統記憶體703可由該計算系統內之其他元件審慎地使用。例如,自該計算系統之各種介面(例如,鍵盤及滑鼠、列印埠、區域網路(LAN)埠、數據機埠等)接收之資料或者自該電腦系統之一內部儲存元件(例如,硬體驅動機)擷取之資料在實施一軟體程式時在由一個或多個處理器701操作之前,通常暫時列隊進入系統記憶體703。類似地,一軟體程式確定應當自該計算系統經由該等計算系統介面之一個發送到一外部實體之資料或者儲存到一內部儲存元件之資料在遭發送或儲存之前通常暫時地在系統記憶體703中排隊。
ICH 705負責確保此資料恰當地在系統記憶體703及其恰當的相應計算系統介面(及內部儲存裝置,如果該計算系統如此設計的話)之間傳遞。MCH 702負責管理在該(等)處理器701、介面及內部儲存元件之間在彼此相近的時間出現之對系統記憶體703存取的各種競爭請求。
一個或多個I/O裝置708還可在一典型計算系統中實施。I/O裝置大體上負責傳遞資料到該計算系統以及/或者傳遞來自該計算系統之資料(例如,一網路配接器);或者負責該計算系統內之大規模非依電性儲存(例如,硬碟驅動機)。ICH 705具有雙向點對點鏈接。
本發明之各種實施例之部分可提供為一電腦程式產品,該電腦程式產品可包括具有儲存於其中之電腦程式指令之一電腦可讀媒體,該等電腦程式指令可用來規劃一電腦(或其它電子裝置)以執行根據本發明之該等實施例之一程序。機器可讀媒體可包括但不局限於軟磁片、光碟、唯讀光碟記憶體(CD-ROM)及磁光碟、ROM、RAM、可抹除可規劃唯讀記憶體(EPROM)、電氣EPROM(EEPROM)、磁卡或光卡、快閃記憶體或適於儲存電子指令之其它類型之媒體/機器可讀媒體。
在以上說明書中,本發明已參照其特定示範性實施例予以描述。然而,將明顯的是,可對其進行各種修改及改變而不脫離所附申請專利範圍中提出之本發明之廣泛精神及範圍。因此,本說明書及圖式係欲看作是說明性的而非限制性的。
100、200、701...處理器
102...內定暫存器
104...隨機存取記憶體(RAM)
106...唯讀記憶體(ROM)
202...內定(即,現存)暫存器、(通用)暫存器、內定(整數)暫存器
204...界限暫存器、暫存器擴充
206...位址產生器單元
208...位址比較器、界限檢查單元、運算邏輯單元
210...記憶體存取單元
302、306...下邊界擴充
304、308...上邊界擴充
400、500、600...程序
402~414、418、420、424、428、432、436、440、502~510、602、604、608、610...處理方塊
416、422、426、430、434、438、606...判定方塊
442...過渡方塊
702...記憶體控制中樞(MCH)
703...系統記憶體
704...快取記憶體
705...輸入/輸出(I/O)控制中樞、ICH
706...圖形處理器
707...顯示器/螢幕
7081、7082、708N...I/O裝置
第1圖說明了具有內定暫存器之一傳統處理器;
第2圖說明了具有內定暫存器及界限暫存器之一處理器之一實施例;
第3圖說明了在一處理器中與界限暫存器耦接之內定暫存器之一實施例;
第4圖說明了用於利用作為內定暫存器之擴充暫存器的界限暫存器來管理元資料之一程序之一實施例,該等內定暫存器具有與該元資料相關聯之資料;
第5圖說明了用於界限檢查之一程序之一實施例;
第6圖說明了用於利用作為內定暫存器之擴充暫存器的界限暫存器來管理元資料之一程序之一實施例,該等內定暫存器包括與該元資料有關聯之資料;及
第7圖說明了一計算系統之一實施例。
200...處理器
202...內定(即,現存)暫存器、(通用)暫存器、內定(整數)暫存器
204...界限暫存器、暫存器擴充
206...位址產生器單元
208...位址比較器器、界限檢查單元、運算邏輯單元
210...記憶體存取單元

Claims (13)

  1. 一種用於進行載入或儲存操作的方法,其包含以下步驟:將資料儲存至一電腦系統的一第一處理器的一內定暫存器中;將與儲存於該內定暫存器中之該資料相關聯的元資料分開儲存到至少一個元資料暫存器中,其中,各個元資料暫存器是一相關聯內定暫存器的一硬體暫存器擴充,並且其中,該元資料包括與一記憶體位址相關聯的界限;擷取一舊有載入或儲存指令;判定該舊有載入或儲存指令是否違反以元資料形式儲存的該等界限;若該舊有載入或儲存指令違反以元資料形式儲存的該等界限,則拋出一異常;以及若該舊有載入或儲存指令並未違反以元資料形式儲存的該等界限,則執行該舊有載入或儲存指令。
  2. 如申請專利範圍第1項所述之方法,其進一步包含以下步驟:計算由一內定暫存器中之一指標所用來存取該記憶體的一位址的一下邊界和一上邊界;以及將該下邊界和該上邊界儲存在一元資料暫存器中。
  3. 如申請專利範圍第1項所述之方法,其進一步包含以下步驟: 對利用與含有該等界限中之一或多者的一或多個界限暫存器相關聯的一個或多個內定暫存器所進行的記憶體存取行為進行自動界限檢查。
  4. 如申請專利範圍第1項所述之方法,其進一步包含以下步驟:使一前綴與用於產生和傳播與目的地暫存器相關聯的一組界限的一指令相關聯,以及利用該前綴與現存記憶體操作來明確地執行對該組界限的界限檢查,其中,該前綴包括一NOP前綴或一新前綴。
  5. 如申請專利範圍第1項所述之方法,其進一步包含以下步驟:執行一指令,該指令包括用於進行一指標運算的一舊有指令,用以將與一源指標相關聯的一組界限傳播至一目的地指標,其中,若該指標運算未被進行則該組界限無效。
  6. 如申請專利範圍第5項所述之方法,其進一步包含以下步驟:將一前綴加至被自該源指標傳播至該目的地指標的該組界限,其中,該前綴指出該組界限之自該源指標至該目的地指標之傳播。
  7. 如申請專利範圍第1項所述之方法,其進一步包含以下步驟:計算與記憶體存取相關聯的一位址範圍,以及 將具有與一指標相關的一最低位址和一最高位址的該位址範圍與已在該等元資料暫存器中的該下邊界和該上邊界作比較,以防止超出該下邊界和該上邊界之界限範圍的任何記憶體存取。
  8. 如申請專利範圍第7項所述之方法,其中,防止行為包含避免界限違規,該界限違規係發生在該最低位址小於已在該等元資料暫存器中的該下邊界、或該最高位址大於已在該等元資料暫存器中的該上邊界時。
  9. 一種處理器,其包含:數個內定暫存器,用以儲存資料;至少一個元資料暫存器,用以分開儲存與儲存在該等內定暫存器中之該資料相關聯的元資料,其中,各個元資料暫存器是一相關聯內定暫存器的一硬體暫存器擴充,並且其中,該元資料包括與由代表該內定暫存器中之該資料的一指標所用來存取記憶體的一位址相關聯的多個界限;以及用於進行以下步驟的邏輯元件:擷取一舊有載入或儲存指令;判定該舊有載入或儲存指令是否違反以元資料形式儲存的該等界限;若該舊有載入或儲存指令違反以元資料形式儲存的該等界限,則拋出一異常;及若該舊有載入或儲存指令並未違反以元資料形式儲存的該等界限,則執行該舊有載入或儲存指 令。
  10. 如申請專利範圍第9項所述之處理器,其中,該元資料包括與由表示該等內定暫存器中之該資料的指標所用來存取記憶體的位址相關聯的界限,該處理器包含:用於計算由一內定暫存器中之一指標所用來存取該記憶體的一位址的一下邊界和一上邊界的邏輯元件。
  11. 如申請專利範圍第10項所述之處理器,其中係有至少兩個元資料暫存器對應於該等內定暫存器中之各者,其中,該等至少兩個元資料暫存器中之一第一者係用於儲存該下邊界,且該等至少兩個元資料暫存器中之一第二者係用於儲存該上邊界。
  12. 一種用於進行載入或儲存操作的設備,其包含:用於將資料儲存至一電腦系統之一第一處理器之一內定暫存器中的構件;用於將與儲存於該內定暫存器中之該資料相關聯的元資料分開儲存到至少一個元資料暫存器中的構件,其中,各個元資料暫存器是一相關聯內定暫存器的一硬體暫存器擴充,並且其中,該元資料包括與一記憶體位址相關聯的界限;用於擷取一舊有載入或儲存指令的構件;用於判定該舊有載入或儲存指令是否違反以元資料形式儲存之該等界限的構件;用於在該舊有載入或儲存指令違反以元資料形式儲存之該等界限時拋出一異常的構件;以及 用於在該舊有載入或儲存指令並未違反以元資料形式儲存之該等界限時執行該舊有載入或儲存指令的構件。
  13. 如申請專利範圍第12項所述之設備,其中,該元資料包括與由表示該等內定暫存器中之該資料的指標所用來存取記憶體的位址相關聯的界限,該設備進一步包含:用於計算由一內定暫存器中之一指標所用來存取該記憶器的一位址的一下邊界和一上邊界的構件。
TW099131694A 2009-09-30 2010-09-17 利用暫存器擴充來管理與施用中央處理單元中之元資料的技術 TWI499973B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/571,269 US8635415B2 (en) 2009-09-30 2009-09-30 Managing and implementing metadata in central processing unit using register extensions

Publications (2)

Publication Number Publication Date
TW201118724A TW201118724A (en) 2011-06-01
TWI499973B true TWI499973B (zh) 2015-09-11

Family

ID=43781580

Family Applications (1)

Application Number Title Priority Date Filing Date
TW099131694A TWI499973B (zh) 2009-09-30 2010-09-17 利用暫存器擴充來管理與施用中央處理單元中之元資料的技術

Country Status (5)

Country Link
US (1) US8635415B2 (zh)
JP (1) JP5425738B2 (zh)
CN (1) CN102033735B (zh)
DE (1) DE102010046892A1 (zh)
TW (1) TWI499973B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI743611B (zh) * 2019-12-04 2021-10-21 新唐科技股份有限公司 處理裝置與其資料存取方法

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304898B2 (en) * 2011-08-30 2016-04-05 Empire Technology Development Llc Hardware-based array compression
US9239801B2 (en) * 2013-06-05 2016-01-19 Intel Corporation Systems and methods for preventing unauthorized stack pivoting
US20150205609A1 (en) 2013-12-11 2015-07-23 Mill Computing, Inc. Computer Processor Employing Operand Data With Associated Meta-Data
CN104571952B (zh) * 2014-12-25 2017-08-01 华中科技大学 一种分开处理数据与元数据读写请求的方法
US10437699B2 (en) 2015-01-21 2019-10-08 International Business Machines Corporation Measuring execution time of benchmark programs in a simulated environment
US9477453B1 (en) * 2015-06-24 2016-10-25 Intel Corporation Technologies for shadow stack manipulation for binary translation systems
GB2540206B (en) * 2015-07-10 2018-02-07 Advanced Risc Mach Ltd Apparatus and method for executing instruction using range information associated with a pointer
GB2541714B (en) 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
GB2544315B (en) * 2015-11-12 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10936713B2 (en) 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10162694B2 (en) 2015-12-21 2018-12-25 Intel Corporation Hardware apparatuses and methods for memory corruption detection
GB2547249B (en) * 2016-02-12 2019-09-11 Advanced Risc Mach Ltd An apparatus and method for generating signed bounded pointers
GB2562062B (en) * 2017-05-02 2019-08-14 Advanced Risc Mach Ltd An apparatus and method for managing capability metadata
US10416963B2 (en) * 2017-06-19 2019-09-17 Arm Limited Bounds checking
WO2019152805A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. System and method for translating mapping policy into code
TWI794405B (zh) 2018-02-02 2023-03-01 美商查爾斯塔克德拉普實驗室公司 用於政策執行處理的系統及方法
EP3788488A1 (en) 2018-04-30 2021-03-10 Dover Microsystems, Inc. Systems and methods for checking safety properties
TW202022678A (zh) 2018-11-06 2020-06-16 美商多佛微系統公司 用於停滯主處理器的系統和方法
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11068268B2 (en) * 2019-08-05 2021-07-20 Arm Limited Data structure processing
GB2591788B (en) * 2020-02-06 2022-06-01 Advanced Risc Mach Ltd Saving and restoring registers
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
US11429590B2 (en) 2020-10-15 2022-08-30 International Business Machines Corporation Protecting against invalid memory references
US11983600B2 (en) 2020-12-14 2024-05-14 International Business Machines Corporation Compilation of a quantum program
US11983532B2 (en) * 2020-12-30 2024-05-14 International Business Machines Corporation Optimize bound information accesses in buffer protection
US11966331B2 (en) * 2020-12-30 2024-04-23 International Business Machines Corporation Dedicated bound information register file for protecting against out-of-bounds memory references
GB2606185B (en) * 2021-04-28 2023-06-21 Advanced Risc Mach Ltd Technique for constraining access to memory using capabilities

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601462A (zh) * 2003-09-27 2005-03-30 英特尔公司 处理器的扩展寄存器空间装置和方法
TW200534089A (en) * 2004-01-14 2005-10-16 Ibm Method and apparatus for providing pre and post handlers for recording events
CN101226468A (zh) * 2008-01-30 2008-07-23 中国科学院计算技术研究所 一种risc处理器装置及其有界访存方法
CN101470599A (zh) * 2007-12-28 2009-07-01 富士通株式会社 处理单元

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4542456A (en) * 1982-04-28 1985-09-17 At&T Bell Laboratories Method and apparatus for performing range checks
US6349380B1 (en) * 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
WO2003065165A2 (en) * 2002-01-31 2003-08-07 Arc International Configurable data processor with multi-length instruction set architecture
CN1271523C (zh) * 2002-08-21 2006-08-23 先进数字芯片株式会社 具有扩展指令的中央处理器
DE10329680A1 (de) * 2003-07-01 2005-02-10 Universität Stuttgart Prozessorarchitektur für exakte Zeigeridentifizierung
US7380276B2 (en) * 2004-05-20 2008-05-27 Intel Corporation Processor extensions and software verification to support type-safe language environments running with untrusted code
US7231509B2 (en) * 2005-01-13 2007-06-12 International Business Machines Corporation Extended register bank allocation based on status mask bits set by allocation instruction for respective code block
US7526578B2 (en) * 2006-02-17 2009-04-28 International Business Machines Corporation Option ROM characterization
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
US7962729B2 (en) * 2009-01-05 2011-06-14 International Business Machines Corporation Dynamic runtime range checking of different types on a register using upper and lower bound value registers for the register

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601462A (zh) * 2003-09-27 2005-03-30 英特尔公司 处理器的扩展寄存器空间装置和方法
TW200534089A (en) * 2004-01-14 2005-10-16 Ibm Method and apparatus for providing pre and post handlers for recording events
CN101470599A (zh) * 2007-12-28 2009-07-01 富士通株式会社 处理单元
CN101226468A (zh) * 2008-01-30 2008-07-23 中国科学院计算技术研究所 一种risc处理器装置及其有界访存方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI743611B (zh) * 2019-12-04 2021-10-21 新唐科技股份有限公司 處理裝置與其資料存取方法

Also Published As

Publication number Publication date
DE102010046892A1 (de) 2011-04-21
US8635415B2 (en) 2014-01-21
JP2011081790A (ja) 2011-04-21
US20110078389A1 (en) 2011-03-31
TW201118724A (en) 2011-06-01
CN102033735A (zh) 2011-04-27
CN102033735B (zh) 2015-06-17
JP5425738B2 (ja) 2014-02-26

Similar Documents

Publication Publication Date Title
TWI499973B (zh) 利用暫存器擴充來管理與施用中央處理單元中之元資料的技術
US10521361B2 (en) Memory write protection for memory corruption detection architectures
KR102269006B1 (ko) 독립적인 사용자 및 관리자 도메인을 갖는 메모리 보호 키 아키텍처
US8688951B2 (en) Operating system virtual memory management for hardware transactional memory
KR101461378B1 (ko) 동기화 simd 벡터
KR100204741B1 (ko) 제1및 제2캐시 메모리 사용방법
US10289554B2 (en) Supporting fault information delivery
BR112014031436B1 (pt) Comparar e substituir entrada de tabela dat
US10416920B2 (en) System and method for improving memory transfer
US11966382B2 (en) Protecting against invalid memory references
KR20090025295A (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
CN109643283B (zh) 用于管理飞地存储器页的设备、方法和装置
CN107278295B (zh) 用于存储器损坏检测架构的字节水平粒度的缓冲器上溢检测
KR20220045211A (ko) 캐패빌리티 기입 어드레스 추적
SK284085B6 (sk) Procesor
US20200192800A1 (en) An apparatus and method for managing capability metadata
CN109690546B (zh) 支持对客户机飞地存储器页的超额订阅
US10055359B2 (en) Pinning objects in multi-level memory hierarchies
US20070022250A1 (en) System and method of responding to a cache read error with a temporary cache directory column delete
US11822652B1 (en) Prime and probe attack mitigation
US11625171B2 (en) Hardware support for memory safety with an overflow table

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees