TW202026931A - 用於元資料編碼的系統和方法 - Google Patents

用於元資料編碼的系統和方法 Download PDF

Info

Publication number
TW202026931A
TW202026931A TW108141021A TW108141021A TW202026931A TW 202026931 A TW202026931 A TW 202026931A TW 108141021 A TW108141021 A TW 108141021A TW 108141021 A TW108141021 A TW 108141021A TW 202026931 A TW202026931 A TW 202026931A
Authority
TW
Taiwan
Prior art keywords
metadata
address
tag
memory
target address
Prior art date
Application number
TW108141021A
Other languages
English (en)
Inventor
伊利 柏林
史蒂芬 米爾本
格雷戈里 T 沙利文
安德魯 薩瑟蘭德
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 TW202026931A publication Critical patent/TW202026931A/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/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/567Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)

Abstract

用於元資料處理的系統和方法。在某些實施例中,一目標位址可以從一主機處理器加以接收。所述目標位址可被用來存取對映資訊以及解碼資訊,所述對映資訊以及所述解碼資訊是和所述目標位址相關的。所述對映資訊可被用來對映所述目標位址至一元資料位址。所述元資料位址可被用來擷取元資料,並且所述解碼資訊可被用來解碼所擷取的元資料。

Description

用於元資料編碼的系統和方法
本申請案涉及用於元資料編碼的系統和方法。
此申請案是根據第35號美國法典第119條(e)項主張2018年11月12日申請的美國臨時專利申請案序號62/759,936的權益,其名稱為“SYSTEMS AND METHODS FOR METADATA PROCESSING”,帶有代理人文件編號D0821.70011US00,並且藉此以其整體被納入作為參考。
電腦資安在社會的所有階層,從個人到商業乃至於政府機構已經變成是一項越來越急迫的問題。例如,在2015年,資安研究員已經識別出一零時差漏洞,其將會容許攻擊者經由網際網路駭入Jeep Cherokee的車載電腦系統,並且取得對於所述交通工具的儀表板功能、轉向、煞車以及變速箱的控制。在2017年,想哭(WannaCry)勒索軟體攻擊據估計已經影響全球超過200,000部電腦,在經濟上造成至少數億美金的損失。值得注意的是,所述攻擊癱瘓在英國的數間國家保健服務醫院的運作。在同年,在Equifax(一家美國消費者信用報告機構)的資料外洩暴露個人的資料,例如是全名、社會安全號碼、生日、地址、駕照號碼、信用卡號、等等。所述攻擊據報導已經影響超過一億四千萬的消費者。
資安專業人士不斷想要趕上攻擊者。一旦漏洞被報告出,資安專業人士趕著修補所述漏洞。無法及時修補漏洞(例如,由於管理不良及/或缺少資源)的個人及組織則變成攻擊者容易攻擊的目標。
某些資安軟體監視在一電腦上及/或在一網路之內的活動,並且尋找可能指出一攻擊的模式。此種方法並不阻礙惡意程式碼最初的執行。通常,等到任何可疑的模式浮現時,損壞已經造成。
根據某些實施例,提出一種用於元資料處理之方法,所述方法包括以下動作:從一主機處理器接收一目標位址;利用所述目標位址來存取對映資訊以及解碼資訊,所述對映資訊以及所述解碼資訊是和所述目標位址相關的;利用所述對映資訊以將所述目標位址對映到一元資料(metadata)位址;利用所述元資料位址以擷取元資料;以及利用所述解碼資訊以解碼所擷取的元資料。
根據某些實施例,提出一種用於元資料處理之方法,所述方法包括以下動作:從一主機處理器接收一目標位址;決定是否從一元資料記憶體擷取一和所述目標位址相關的元資料值;響應於決定從所述元資料記憶體擷取一元資料值:將所述目標位址對映到一元資料位址;以及利用所述元資料位址以從所述元資料記憶體擷取一元資料值;以及響應於決定不從所述元資料記憶體擷取一元資料值,決定一預設的元資料值。
根據某些實施例,提出一種用於元資料處理之方法,所述方法包括以下動作:將一或多個元資料標籤關聯到一應用程式記憶體區域;針對於和所述應用程式記憶體區域相關的所述一或多個元資料標籤產生一編碼;以及產生對應用於和所述應用程式記憶體區域相關的所述一或多個元資料標籤的所述編碼的解碼資訊。
根據某些實施例,提出一種用於元資料處理之方法,所述方法包括以下動作:從一主機處理器接收一目標位址;利用所述目標位址來存取和所述目標位址相關的對映資訊,其中:所述對映資訊是和一應用程式記憶體位址範圍相關的;所述目標位址屬於所述應用程式記憶體位址範圍;以及所述對映資訊包括指出用於所述應用程式記憶體位址範圍的一標記粒度(tagging granularity)的資訊;利用所述對映資訊以將所述目標位址對映到一元資料位址;以及利用所述元資料位址以擷取元資料。
根據某些實施例,提出一種用於元資料處理之方法,所述方法包括以下動作:從一主機處理器接收一目標位址;利用所述目標位址來存取和所述目標位址相關的對映資訊;利用所述對映資訊以將所述目標位址對映到至少第一元資料位址以及第二元資料位址;利用所述第一及第二元資料位址以分別擷取第一及第二元資料;以及組合所述第一及第二元資料。
根據某些實施例,提出一種系統,其包括電路及/或一或多個藉由可執行的指令而被程式化的處理器,其中所述電路及/或所述一或多個被程式化的處理器是被配置以執行在此所述的方法的任一種。
根據某些實施例,提出一種至少一個的電腦可讀取媒體,其已經於其上儲存針對於在此所述的電路的任一個的至少一網表(netlist)。
根據某些實施例,提出一種至少一個的電腦可讀取媒體被提出,其已經於其上儲存至少一硬體描述,當所述硬體描述被合成時,其產生在此所述的網表的任一個。
根據某些實施例,提出一種至少一個的電腦可讀取的媒體,其已經於其上儲存在此所述的可執行的指令的任一個。
許多攻擊者所利用的漏洞追溯回到其中資料以及可執行的指令被混合在同一記憶體中的一種電腦架構的設計。此混合讓攻擊者能夠藉由偽裝惡意碼成為資料而將所述惡意碼注入一遠端的電腦中。譬如,一程式可以在一電腦的記憶體中配置一緩衝器來儲存經由一網路接收到的資料。若所述程式接收比所述緩衝器能夠保存的更多的資料,但是在寫入所述資料到所述緩衝器之前並不檢查所接收到的資料的尺寸,則所接收到的資料的部分將會超出所述緩衝器的邊界而被寫入相鄰的記憶體中。攻擊者可以利用此特性來注入惡意碼到所述相鄰的記憶體中。若所述相鄰的記憶體被配置用於可執行的碼,則所述惡意碼最終可藉由所述電腦來加以執行。
技術已經被提出來使得電腦硬體更有資安意識的。譬如,記憶體位置可以是和用於實行資安策略的元資料相關的,並且指令可被檢查是否符合所述資安策略。例如,給定一將被執行的指令,和所述指令相關的元資料及/或和所述指令的一或多個運算元相關的元資料可被檢查以判斷所述指令是否應該被容許。額外或替代的是,適當的元資料可以是和所述指令的一輸出相關的。
圖1是展示根據某些實施例的一用於實行策略的舉例說明的硬體系統100。在此例子中,所述系統100包含一主機處理器110,其可以具有任何適當的指令集架構(ISA),例如一精簡指令集計算(RISC)架構、或是一複雜指令集計算(CISC)架構。所述主機處理器110可以經由一寫入互鎖112來執行記憶體存取。所述寫入互鎖112可以連接至一系統匯流排115,所述系統匯流排115被配置以在各種的構件,例如是所述寫入互鎖112、一應用程式記憶體120、一元資料記憶體125、一唯讀記憶體(ROM)130、一或多個週邊裝置135、等等之間傳輸資料。
在某些實施例中,藉由所述主機處理器110處理(例如,修改、消耗、及/或產生)的資料可被儲存在所述應用程式記憶體120中。此種資料在此被稱為“應用程式資料”,以與用於實行策略的元資料有區別的。後者可被儲存在所述元資料記憶體125中。應該體認到的是,應用程式資料可包含藉由一作業系統(OS)處理的資料、所述OS的指令、藉由一或多個使用者應用程式處理的資料、及/或所述一或多個使用者應用程式的指令。
在某些實施例中,所述應用程式記憶體120以及所述元資料記憶體125可以是實體上分開的,因而所述主機處理器110可能沒有存取到所述元資料記憶體125。以此種方式,即使攻擊者成功注入惡意碼到所述應用程式記憶體120中,並且使得所述主機處理器110執行所述惡意碼,但是所述元資料記憶體125可以不受影響。然而,應該體認到的是,本揭露內容的特點並不限於在實體上分開的記憶體上儲存應用程式資料以及元資料。額外或替代的是,元資料可被儲存在和應用程式資料的同一記憶體中,並且一記憶體管理構件可被利用,其實施一適當的保護設計以避免在所述主機處理器110上執行的指令修改所述元資料。額外或替代的是,元資料可以和應用程式資料混合在同一記憶體中,並且一或多個策略可被用來保護所述元資料。
在某些實施例中,標籤處理硬體140可被設置以確保正藉由所述主機處理器110執行的指令符合一或多個策略。所述標籤處理硬體140可包含任何適當的電路構件、或是電路構件的組合。譬如,所述標籤處理硬體140可包含一標籤對映表142,其將所述應用程式記憶體120中的位址對映至所述元資料記憶體125中的位址。例如,所述標籤對映表142可以將所述應用程式記憶體120中的一位址X對映至所述元資料記憶體125中的一位址Y。在所述位址Y所儲存的一值在此有時被稱為一“元資料標籤”、或單純稱為一“標籤”。
在某些實施例中,在所述位址Y所儲存的一值可以進而是一位址Z。此種間接可以重複任意適當的次數,並且最終可以導向在用於儲存元資料的元資料記憶體125中的一資料結構。此種元資料以及任何中間的位址(例如,所述位址Z)在此亦被稱為“元資料標籤”、或單純稱為“標籤”。
應該體認到的是,本揭露內容的特點並不限於儲存一元資料記憶體中的位址的一標籤對映表。在某些實施例中,一標籤對映表項目本身可以儲存元資料,因而所述標籤處理硬體140可以是能夠在未執行記憶體操作下存取所述元資料。在某些實施例中,一標籤對映表項目可以儲存一所選的位元模式,其中所述位元模式的一第一部分可以編碼元資料,並且所述位元模式的一第二部分可以編碼在一元資料記憶體中進一步的元資料可被儲存所在的一位址。此可以在速度及表現度之間提供一所要的平衡。譬如,所述標籤處理硬體140可以是能夠快速地檢查某些策略,其僅利用在所述標籤對映表項目本身中所儲存的元資料。對於其它具有較複雜規則的策略,所述標籤處理硬體140可以存取在所述元資料記憶體125中所儲存的進一步的元資料。
再次參照圖1,藉由將應用程式記憶體位址對映到元資料記憶體位址,所述標籤對映表142可以在應用程式資料以及描述所述應用程式資料的元資料之間產生一關聯。在一例子中,在所述元資料記憶體位址Y所儲存並且因此和在所述應用程式記憶體位址X所儲存的應用程式資料相關的元資料可以指出所述應用程式資料可能是可讀取的、可寫入的、及/或可執行的。在另一例子中,在所述元資料記憶體位址Y所儲存並且因此和在所述應用程式記憶體位址X所儲存的應用程式資料相關的元資料可以指出所述應用程式資料的一種類型(例如,整數、指標、16位元的字、32位元的字、等等)。根據一將被實行的策略,任何與所述策略相關的適當的元資料都可以是和一項應用程式資料相關的。
在某些實施例中,一元資料記憶體位址Z可被儲存在所述元資料記憶體位址Y。和在所述應用程式記憶體位址X所儲存的應用程式資料相關的元資料可被儲存在所述元資料記憶體位址Z,而不是(或是額外地)所述元資料記憶體位址Y。譬如,一元資料符號“RED”的一個二進位表示可被儲存在所述元資料記憶體位址Z。藉由在所述元資料記憶體位址Y中儲存所述元資料記憶體位址Z,在所述應用程式記憶體位址X所儲存的應用程式資料可以被標記“RED”。
以此種方式,所述元資料符號“RED”的二進位表示在所述元資料記憶體120中可以只被儲存一次。譬如,若在另一應用程式記憶體位址X’所儲存的應用程式資料亦被標記“RED”,則所述標籤對映表142可以將所述應用程式記憶體位址X’對映到其中所述元資料記憶體位址Z亦被儲存的一元資料記憶體位址Y’。
再者,以此種方式,標籤更新可以被簡化。譬如,若在所述應用程式記憶體位址X所儲存的應用程式資料在一後續的時間將被標記“BLUE”,則一元資料記憶體位址Z’可被寫入在所述元資料記憶體位址Y,以取代所述元資料記憶體位址Z,因而所述元資料符號“BLUE”的一個二進位表示可被儲存在所述元資料記憶體位址Z’。
因此,本發明人已經體認且理解到一具有任何適當長度N的元資料記憶體位址鏈可被使用於標記,其包含N=0(例如,其中一元資料符號的一個二進位表示被儲存在所述元資料記憶體位址Y本身)。
在應用程式資料以及元資料之間的關聯(在此亦被稱為“標記”)可以在任何適當程度的粒度、及/或可變的粒度下加以完成。譬如,標記可以逐字來加以完成。額外或替代的是,在記憶體中的一區域可被對映到單一標籤,因而在所述區域中的所有字都是和相同的元資料相關的。此可以有利地縮減所述標籤對映表142及/或所述元資料記憶體125的尺寸。例如,可以針對於一整個位址範圍維持單一標籤,此相對於維持多個標籤分別對應在所述位址範圍中的不同位址。
在某些實施例中,所述標籤處理硬體140可被配置以施加一或多個規則至和一指令相關的元資料及/或和所述指令的一或多個運算元相關的元資料,以判斷所述指令是否應該被容許。譬如,所述主機處理器110可以提取及執行一指令,並且可以佇列執行所述指令的一結果到所述寫入互鎖112中。在所述結果被寫回到所述應用程式記憶體120中之前,所述主機處理器110可以傳送一指令類型(例如,運算碼)、所述指令被儲存所在的一位址、所述指令所參照的一或多個記憶體位址、及/或一或多個暫存器識別符至所述標籤處理硬體140。此種暫存器識別符可以識別所述主機處理器110在執行所述指令中所用的一暫存器,例如是用於儲存所述指令的一運算元或是一結果的一暫存器。
在某些實施例中,破壞性的讀取指令可以額外或替代寫入指令而被佇列。譬如,後續嘗試存取一破壞性的讀取指令的一目標位址的指令可被佇列在一並非高速緩存的記憶體區域中。若且當判斷出的是所述破壞性的讀取指令應該被容許時,所述佇列的指令可被載入以用於執行。
在某些實施例中,一破壞性的讀取指令可被容許進行,因而從一目標位址讀取的資料可被捕捉在一緩衝器中。若且當判斷出的是所述破壞性的讀取指令應該被容許時,在所述緩衝器中所捕捉的資料可被拋棄。若且當判斷出的是所述破壞性的讀取指令不應該被容許時,在所述緩衝器中所捕捉的資料可以被回復至所述目標位址。額外或替代的是,一後續的讀取可以藉由所述緩衝的資料來加以服務。
應該體認到的是,本揭露內容的特點並不限於在已經藉由一主機處理器執行的指令上執行元資料處理,例如是已經被所述主機處理器的執行管線退休的指令。在某些實施例中,元資料處理可以在所述主機處理器的執行管線之前、期間、及/或之後,在指令上加以執行。
在某些實施例中,給定一從所述主機處理器110接收到的位址(例如,一指令被儲存所在的一位址、或是被一指令所參照的一位址),所述標籤處理硬體140可以使用所述標籤對映表142來識別一對應的標籤。額外或替代的是,針對於一從所述主機處理器110接收到的暫存器識別符,所述標籤處理硬體140可以從所述標籤處理硬體140之內的一標籤暫存器檔146存取一標籤。
在某些實施例中,若一應用程式記憶體位址在所述標籤對映表142中並不具有一對應的項目,則所述標籤處理硬體140可以傳送一詢問至一策略處理器150。所述詢問可包含討論中的應用程式記憶體位址,並且所述策略處理器150可以針對於所述應用程式記憶體位址傳回一標籤。額外或替代的是,所述策略處理器150可以對於一包含所述應用程式記憶體位址的位址範圍產生一新的標籤對映項目。以此種方式,所述適當的標籤可以在所述標籤對映表142中被做成可利用的,以供和討論中的應用程式記憶體位址相關的未來的參考。
在某些實施例中,所述標籤處理硬體140可以傳送一詢問至所述策略處理器150,以檢查一藉由所述主機處理器110執行的指令是否應該被容許。所述詢問可包含一或多個輸入,例如是所述指令的一指令類型(例如,運算碼)、用於一程式計數器的一標籤、用於所述指令被提取所來自的一應用程式記憶體位址的一標籤(例如,所述程式計數器指向的記憶體中的一字)、用於所述指令的一運算元被儲存在其中的一暫存器的一標籤、及/或用於所述指令所參照的一應用程式記憶體位址的一標籤。在一例子中,所述指令可以是一載入指令,並且所述指令的一運算元可以是將被載入的應用程式資料所來自的一應用程式記憶體位址。除了其它方面以外,所述詢問可包含所述應用程式記憶體位址被儲存在其中的一暫存器的一標籤、以及用於所述應用程式記憶體位址本身的一標籤。在另一例子中,所述指令可以是一算術指令,因而可以有兩個運算元。除了其它方面以外,所述詢問可包含用於一第一運算元被儲存在其中的一第一暫存器的一第一標籤、以及用於一第二運算元被儲存在其中的一第二暫存器的一第二標籤。
亦應該體認到的是,本揭露內容的特點並不限於一次在單一指令上執行元資料處理。在某些實施例中,在一主機處理器的ISA中的多個指令可以例如是經由單一詢問至所述策略處理器150而作為一捆來一起被檢查。此種詢問可包含更多的輸入以容許所述策略處理器150能夠檢查在所述捆中的全部的指令。類似地,一可以在語義上對應多個運算的CISC指令可以經由單一詢問至所述策略處理器150而被檢查,其中所述詢問可包含充分的輸入以容許所述策略處理器150能夠檢查在所述CISC指令之內的全部構成的運算。
在某些實施例中,所述策略處理器150可包含一可配置的處理單元,例如是一微處理器、一現場可程式化的閘陣列(FPGA)、及/或任何其它適當的電路。所述策略處理器150可以已經於其中載入一或多個策略,其描述所述主機處理器110的被容許的操作。響應於來自所述標籤處理硬體140的一詢問,所述策略處理器150可以評估所述策略中的一或多個來判斷一討論中的指令是否應該被容許。譬如,所述標籤處理硬體140可以傳送一中斷信號至所述策略處理器150、以及一或多個有關於討論中的指令的輸入(例如,如上所述的)。所述策略處理器150可以將所述詢問的輸入儲存在一工作記憶體中(例如,在一或多個佇列中),以用於立即或延後的處理。例如,所述策略處理器150可以用某種適當的方式(例如,根據和每一個詢問相關的一優先權旗標)來優先化查詢的處理。
在某些實施例中,所述策略處理器150可以在一或多個輸入(例如,一或多個輸入標籤)上評估一或多個策略,以判斷一討論中的指令是否應該被容許。若所述指令將不被容許,則所述策略處理器150可以如此通知所述標籤處理硬體140。若所述指令將被容許,則所述策略處理器150可以計算一或多個輸出(例如,一或多個輸出標籤)以被回傳至所述標籤處理硬體140。舉例而言,所述指令可以是一儲存指令,因而所述策略處理器150可以計算用於應用程式資料將被儲存到的一應用程式記憶體位址的一輸出標籤。作為另一例子的是,所述指令可以是一算術指令,因而所述策略處理器150可以計算用於儲存執行所述算術指令的一結果的一暫存器的一輸出標籤。
在某些實施例中,所述策略處理器150可被程式化以執行除了那些有關於策略的評估工作之外或替代的一或多個工作。譬如,所述策略處理器150可以執行有關於標籤初始化、開機載入、應用程式載入、用於所述元資料記憶體125的記憶體管理(例如,垃圾收集)、記錄、除錯支援、及/或中斷處理的工作。這些工作中的一或多個可以在背景中(例如,在來自所述標籤處理硬體140的服務查詢之間)加以執行。
在某些實施例中,所述標籤處理硬體140可包含一規則快取144,以用於對映一或多個輸入至一決策及/或一或多個輸出。譬如,一對於所述規則快取144的詢問可以類似一對於所述策略處理器150的詢問而被建構,以檢查一藉由所述主機處理器110執行的指令是否應該被容許。若有一快取命中,則所述規則快取144可以輸出一關於所述指令是否應該被容許的決策、及/或一或多個輸出標籤(例如,如上相關所述策略處理器150所述的)。在所述規則快取144中的此種對映可以利用來自所述策略處理器150的一詢問響應而被產生。然而,其並非必須的,因為在某些實施例中,一或多個對映可以提前被安裝到所述規則快取144中。
在某些實施例中,所述規則快取144可被用來提供一效能強化。譬如,在利用一或多個輸入標籤來查詢所述策略處理器150之前,所述標籤處理硬體140可以先利用所述一或多個輸入標籤來詢問所述規則快取144。在一快取命中的情形中,所述標籤處理硬體140可以利用來自所述規則快取144的一決策及/或一或多個輸出標籤來進行,而不查詢所述策略處理器150。此可以提供一顯著的加速。在一快取未命中的情形中,所述標籤處理硬體140可以詢問所述策略處理器150,並且可以安裝來自所述策略處理器150的一響應到所述規則快取144中以供可能未來的使用。
在某些實施例中,若所述標籤處理硬體140判斷一討論中的指令應該被容許(例如,根據在所述規則快取144中的一命中、或是在所述規則快取144中的一未命中,接著是來自所述策略處理器150的一指出未發現有策略違反的響應),則所述標籤處理硬體140可以向所述寫入互鎖112指出執行所述指令的一結果可被寫入回到記憶體。額外或替代的是,所述標籤處理硬體140可以利用一或多個輸出標籤(例如,如同從所述規則快取144或是所述策略處理器150接收到的)來更新所述元資料記憶體125、所述標籤對映表142、及/或所述標籤暫存器檔146。舉例而言,針對於一儲存指令,所述元資料記憶體125可以藉由所述標籤對映表142,根據一位址轉換而被更新。譬如,所述儲存指令所參照的一應用程式記憶體位址可被用來從所述標籤對映表142查詢一元資料記憶體位址,並且從所述規則快取144或是所述策略處理器150接收到的元資料可以在所述元資料記憶體位址處被儲存至所述元資料記憶體125。作為另一例子的是,在其中將被更新的元資料是被儲存在所述標籤對映表142中的一項目內的情形(相對於被儲存在所述元資料記憶體125中),在所述標籤對映表142中的該項目可被更新。作為另一例子的是,針對於一算術指令,在所述標籤暫存器檔146中的對應於所述主機處理器110用於儲存執行所述算術指令的一結果的一暫存器的一項目可以利用一適當的標籤而被更新。
在某些實施例中,若所述標籤處理硬體140判斷討論中的指令代表一策略違反(例如,根據在所述規則快取144中的一未命中,接著是來自所述策略處理器150的一指出已經發現一策略違反的響應),則所述標籤處理硬體140可以向所述寫入互鎖112指出執行所述指令的一結果應該被拋棄,而不是被寫回到記憶體。額外或替代的是,所述標籤處理硬體140可以傳送一中斷至所述主機處理器110。響應於接收所述中斷,所述主機處理器110可以切換到任何適當的違反處理碼。例如,所述主機處理器100可以停止、重置、記錄所述違反並且繼續、在應用碼及/或應用程式資料上執行一完整性檢查、通知一操作者、等等。
在某些實施例中,所述規則快取144可以利用一雜湊函數以及一記憶體的一指定的部分(例如,所述元資料記憶體125)來加以實施。譬如,一雜湊函數可被施加至所述規則快取144的一或多個輸入,以產生在所述元資料記憶體125中的一位址。對應於所述一或多個輸入的一規則快取項目可被儲存至所述元資料記憶體125中的該位址,且/或從其加以擷取。此種項目可包含所述一或多個輸入及/或一或多個對應的輸出,所述輸出可以是從所述一或多個輸入在執行時間、載入時間、連結時間、或是編譯時間計算出的。
在某些實施例中,所述標籤處理硬體140可包含一或多個配置暫存器。此種暫存器可以是可經由所述標籤處理硬體140的一配置介面存取的(例如,藉由所述策略處理器150)。在某些實施例中,所述標籤暫存器檔146可被實施為配置暫存器。額外或替代的是,可以有一或多個應用程式配置暫存器及/或一或多個元資料配置暫存器。
儘管實施方式的細節被展示在圖1中並且在以上論述,但應該體認到的是本揭露內容的特點並不限於任何特定的構件、或是構件的組合、或是構件的任何特定的配置的使用。譬如,在某些實施例中,所述策略處理器150的一或多個功能可以藉由所述主機處理器110來加以執行。舉例而言,所述主機處理器110可以具有不同的操作模式,例如用於使用者應用程式的一使用者模式、以及用於一作業系統的一特權模式。策略相關的碼(例如,標記、評估策略、等等)可以在和所述作業系統相同的特權模式、或是一不同的特權模式(例如,具有甚至更多的保護以防止特權提升)中執行。
圖2是展示根據某些實施例的一用於實行策略的舉例說明的軟體系統200。譬如,所述軟體系統200可被程式化以產生可執行碼,且/或載入所述可執行碼到圖1中所示的舉例說明的硬體系統100中。
在圖2所示的例子中,所述軟體系統200包含一軟體工具鏈,其具有一編譯器205、一連結器210、以及一載入器215。所述編譯器205可被程式化以處理原始碼成為可執行碼,其中所述原始碼可以是具有一較高階的語言,而所述可執行碼可以是具有一較低階的語言。所述連結器210可被程式化以結合藉由所述編譯器205產生的多個目的檔成為單一目的檔,以藉由所述載入器215而被載入記憶體中(例如,在圖1的例子中的舉例說明的應用程式記憶體120)。儘管未被展示,但藉由所述連結器210輸出之目的檔可被轉換成為一適當的格式,並且被儲存在永續儲存器中,例如是快閃記憶體、硬碟、唯讀記憶體(ROM)、等等。所述載入器215可以從所述永續儲存器擷取所述目的檔,並且載入所述目的檔到隨機存取記憶體(RAM)中。
在某些實施例中,所述編譯器205可被程式化以產生用於實行策略的資訊。譬如,當所述編譯器205轉換原始碼成為可執行碼時,所述編譯器205可以產生有關資料類型、程式語意及/或記憶體佈局的資訊。舉例而言,所述編譯器205可被程式化以標記在一函式的一或多個指令以及實施呼叫設計慣例操作(例如,從一呼叫者函式傳遞一或多個參數至一被呼叫者函式、從被呼叫者函式傳回一或多個值至呼叫者函式、儲存一返回位址以在被呼叫者函式返還控制回到呼叫者函式時,指出在所述呼叫者函式的碼中恢復繼續執行之處、等等)的一或多個指令之間的一邊界。譬如,此種邊界可以在初始化期間被使用來標記某些指令為函式開頭或是函式結尾。在執行時間,一堆疊策略可以被實行,因而當函式開頭指令執行時,在一呼叫堆疊中的某些位置(例如,其中一返回位址被儲存之處)可以被標記為“框架”位置,並且當函式結尾指令執行時,所述“框架”標籤可被移除。所述堆疊策略可以指出實施所述函式的一主體(相對於函式開頭以及函式結尾)的指令只能讀取存取到“框架”位置。此可以避免攻擊者覆寫一返回位址並且藉此獲得控制。
作為另一例子的是,所述編譯器205可被程式化以執行控制流程分析,譬如是用以識別一或多個控制轉移點以及個別的目的地。此種資訊可被用在實行一控制流程策略。作為又一例子的是,所述編譯器205可被程式化以執行類型分析,例如是藉由施加像是指標、整數、浮點數、等等的類型標籤。此種資訊可被用來實行一避免誤用(例如,利用一浮點數作為一指標)的策略。
儘管未顯示在圖2中,所述軟體系統200在某些實施例中可以包含一個二元分析構件,其被程式化以將藉由所述連結器210產生的目的碼(相對於原始碼)取作為輸入,並且執行一或多個類似於那些藉由所述編譯器205所執行的分析(例如,控制流程分析、類型分析、等等)。
在圖2的例子中,所述軟體系統200進一步包含一策略編譯器220以及一策略連結器225。所述策略編譯器220可被程式化以轉換用一策略語言所撰寫的一策略成為策略碼。譬如,所述策略編譯器220可以輸出用C或是某種其它適當的程式化語言撰寫的策略碼。額外或替代的是,所述策略編譯器220可以輸出由所述策略參照的一或多個元資料符號。在初始化,此種元資料符號可以是和一目標系統的一或多個記憶體位置、暫存器、及/或其它機器狀態相關的,並且可被解析成為元資料的一個二進位表示以被載入所述目標系統的一元資料記憶體或是某種其它硬體儲存(例如,暫存器)中。如上所論述,元資料的此種二進位表示、或是一指向所述二進位表示被儲存所在的一位置的指標在此有時被稱為一“標籤”。
應該體認到的是,本揭露內容的特點並不限於在載入時間解析元資料符號。在某些實施例中,一或多個元資料符號可以靜態地(例如,在編譯時間或是連結時間)被解析。例如,所述策略編譯器220可以處理一或多個可應用的策略,並且解析藉由所述一或多個策略所定義的一或多個元資料符號成為一靜態定義的二進位表示。額外或替代的是,所述策略連結器225可以解析一或多個元資料符號成為一靜態定義的二進位表示、或是一指向儲存一靜態定義的二進位表示的一資料結構的指標。本發明人已經體認且領悟到靜態解析元資料符號可以有利地降低載入時間的處理。然而,本揭露內容的特點並不限於用任何特定的方式來解析元資料符號。
在某些實施例中,所述策略連結器225可被程式化以處理目的碼(例如,如同藉由所述連結器210輸出的)、策略碼(例如,如同藉由所述策略編譯器220輸出的)、及/或一目標說明,以輸出一初始化規格。所述初始化規格可被所述載入器215使用以安全地初始化具有一或多個硬體構件(例如,在圖1中所示的舉例說明的硬體系統100)及/或一或多個軟體構件(例如,一作業系統、一或多個使用者應用程式、等等)的一目標系統。
在某些實施例中,所述目標說明可包含複數個命名實體(named entities)的說明。一命名實體可以代表一目標系統的一構件。舉例而言,一命名實體可以代表一硬體構件,例如是一配置暫存器、一程式計數器、一暫存器檔、一計時器、一狀態旗標、一記憶體轉移單元、一輸入/輸出裝置、等等。作為另一例子的是,一命名實體可以代表一軟體構件,例如是一函式、一模組、一驅動程式、一服務常式、等等。
在某些實施例中,所述策略連結器225可被程式化以搜尋所述目標說明,以識別與一策略有關的一或多個實體。譬如,所述策略可以將某些實體名稱對映到對應的元資料符號,並且所述策略連結器225可以搜尋所述目標說明以識別具有那些實體名稱的實體。所述策略連結器225可以從所述目標說明識別那些實體的說明,並且使用所述說明以適當的元資料符號來註釋藉由所述連結器210輸出的目的碼。譬如,所述策略連結器225可以施加一Read標籤至一可執行與可連結格式(ELF)檔的一.rodata區段,一讀取標籤以及一寫入標籤至所述ELF檔的一.data區段,以及一執行標籤至所述ELF檔的一.text區段。此種資訊可被用來實行一用於記憶體存取控制及/或可執行碼保護的策略(例如,藉由檢查讀取、寫入、及/或執行特權)。
應該體認到的是,本揭露內容的特點並不限於提供一目標說明至所述策略連結器225。在某些實施例中,一目標說明可以額外或是替代所述策略連結器225而被提供至所述策略編譯器220。所述策略編譯器220可以檢查所述目標說明是否有錯誤。譬如,若在一策略中所參照的一實體並不存在於所述目標說明中,則一錯誤可以藉由所述策略編譯器220來設定旗標。額外或替代的是,所述策略編譯器220可以在所述目標說明中搜尋和一或多個將被實行的策略相關的實體,並且可以產生一經過濾的目標說明,其只包含針對於相關的實體的實體說明。譬如,所述策略編譯器220可以比對在一將被實行的策略的一“init”陳述中的一實體名稱至所述目標說明中的一實體說明,並且可以從所述目標說明移除(或是單純忽略)沒有對應的“init”陳述的實體說明。
在某些實施例中,所述載入器215可以根據藉由所述策略連結器225產生的一初始化規格來初始化一目標系統。譬如,參考圖1的例子,所述載入器215可以載入資料及/或指令到所述應用程式記憶體120中,並且可以使用所述初始化規格來識別和正被載入所述應用程式記憶體120中的資料及/或指令相關的元資料標籤。所述載入器215可以解析在所述初始化規格中的元資料標籤成為個別的二進位表示。然而,應該體認到的是,本揭露內容的特點並不限於在載入時間解析元資料標籤。在某些實施例中,各式各樣的元資料標籤可以是在策略連結期間已知的,並且因此元資料標籤可以在所述時間例如藉由所述策略連結器225而被解析。此可以有利地減少所述初始化規格的載入時間處理。
在某些實施例中,所述策略連結器225及/或所述載入器215可以維持元資料的二進位表示回到元資料標籤的人可讀的版本的一對映。此種對映例如可被一除錯器230使用。譬如,在某些實施例中,所述除錯器230可被設置以顯示一初始化規格的一人可讀的版本,其可以表列一或多個實體、以及對於每一個實體的一組和所述實體相關的一或多個元資料標籤。額外或替代的是,所述除錯器230可被程式化以顯示被註釋有元資料標籤的組合語言碼,例如是藉由反組譯被註釋有元資料標籤的目的碼所產生的組合語言碼。在除錯期間,所述除錯器230可以在執行期間停止一程式,並且容許用人可讀的形式檢查實體及/或和所述實體相關的元資料標籤。譬如,所述除錯器230可以容許檢查在一策略違反中牽涉到的實體、及/或造成所述策略違反的元資料標籤。所述除錯器230可以利用所述元資料的二進位表示回到元資料標籤的對映來完成此。
在某些實施例中,一習知的除錯工具可被擴充以容許檢視相關於例如是如上所述的策略執行的問題。額外或替代的是,一獨立的策略除錯工具可加以設置。
在某些實施例中,所述載入器215可以載入所述元資料標籤的二進位表示到所述元資料記憶體125中,並且可以在所述標籤對映表142中記錄在應用程式記憶體位址以及元資料記憶體位址之間的對映。譬如,所述載入器215可以在所述標籤對映表142中產生一項目,其對映一指令被儲存在所述應用程式記憶體120中所在的一應用程式記憶體位址至和所述指令相關的元資料被儲存在所述元資料記憶體125中所在的一元資料記憶體位址。額外或替代的是,所述載入器215可以在所述標籤對映表142本身中(而不是所述元資料記憶體125)儲存元資料,以容許在無執行任何記憶體操作下的存取。
在某些實施例中,所述載入器215可以額外或替代所述標籤對映表142來初始化所述標籤暫存器檔146。譬如,所述標籤暫存器檔146可包含分別對應複數個實體的複數個暫存器。所述載入器215可以從所述初始化規格識別和所述實體相關的元資料,並且在所述標籤暫存器檔146中的個別的暫存器內儲存所述元資料。
再次參考圖1的例子,所述載入器215在某些實施例中可以將策略碼(例如,如同藉由所述策略編譯器220輸出的)載入到所述元資料記憶體125中,以藉由所述策略處理器150來執行。額外或替代的是,一個別的記憶體(未顯示在圖1中)可被設置以供所述策略處理器150使用,並且所述載入器215可以將策略碼及/或相關的資料載入到所述個別的記憶體中。
在某些實施例中,一元資料標籤可以是根據多個元資料符號而定的。譬如,一實體可能遭受到多個策略,並且因此可能是和分別對應於所述不同策略的不同元資料符號相關的。本發明人已經體認且領悟到同一組的元資料符號被所述載入器215解析成為同一個二進位表示(其有時在此被稱為一“規範的”表示)可能是所期望的。譬如,一元資料標籤{A、B、C}以及一元資料標籤{B、A、C}可藉由所述載入器215解析成為同一個二進位表示。以此種方式,句法上不同,但是語義上等同的元資料標籤可以具有相同的二進位表示。
本發明人已經進一步體認且領悟到確保元資料的一個二進位表示並不在元資料儲存中重複可能是所期望的。譬如,如上所論述,在圖1的例子中舉例說明的規則快取144可以對映輸入標籤至輸出標籤,並且在某些實施例中,所述輸入標籤可以是元資料的二進位表示被儲存所在的元資料記憶體位址,而不是所述二進位表示本身。本發明人已經體認且領悟到若元資料的一相同的二進位表示被儲存在兩個不同的元資料記憶體位址X及Y,則所述規則快取144可能無法“辨認”所述元資料記憶體位址Y,即使所述規則快取144已經針對於所述元資料記憶體位址X儲存一對映也是如此。此可能會導致大量不必要的規則快取未命中,其可能會劣化系統效能。
再者,本發明人已經體認且領悟到具有一種在元資料的二進位表示以及其儲存位置之間的一對一的對應性可以使得元資料比較變得容易。譬如,在兩件元資料之間的等同可以單純藉由比較元資料記憶體位址來加以判斷,而非比較元資料的二進位表示。此可以導致顯著的效能改善,尤其是其中所述二進位表示是大的情形(例如,許多元資料符號被封入單一元資料標籤內)。
於是,在某些實施例中,所述載入器215可以在儲存元資料的一個二進位表示(例如,到所述元資料記憶體125中)之前,檢查元資料的二進位表示是否已經被儲存。若元資料的二進位表示已經被儲存,則並不是在一不同的儲存位置再次儲存其,而是所述載入器215可以參照到現有的儲存位置。此種檢查可以在起動時及/或當一程式在起動後被載入時(具有或是不具有動態連結)加以完成。
額外或替代的是,一類似的檢查可以在元資料的一個二進位表示由於評估一或多個策略(例如,藉由舉例說明的策略處理器150)而被產生時加以執行。若元資料的所述二進位表示已經被儲存,則一對於現有的儲存位置的參照可被使用(例如,被安裝在舉例說明的規則快取144中)。
在某些實施例中,所述載入器215可以產生一雜湊表,其將雜湊值對映到儲存位置。在儲存元資料的一個二進位表示之前,所述載入器215可以使用一雜湊函數以將元資料的二進位表示縮減成為一雜湊值,並且檢查所述雜湊表是否已經包含一和所述雜湊值相關的項目。若是的話,則所述載入器215可以判斷元資料的二進位表示已經被儲存,並且可以從所述項目擷取有關元資料的二進位表示的資訊(例如,一指向元資料的二進位表示的指標、或是一指向所述指標的指標)。若所述雜湊表尚未包含一和所述雜湊值相關的項目,則所述載入器215可以儲存元資料的二進位表示(例如,至一暫存器或是在一元資料記憶體中的一位置),在所述雜湊表中產生和所述雜湊值相關的一新的項目,並且在所述新的項目中儲存適當的資訊(例如,一暫存器識別符、一指向在所述元資料記憶體中的元資料的二進位表示的指標、一指向所述指標的指標、等等)。然而,應該體認到的是,本揭露內容的特點並不限於使用一雜湊表以用於追蹤已經被儲存的元資料的二進位表示。額外或替代的是,其它的資料結構可被使用,例如一圖形資料結構、一有序列表、一無序列表、等等。任何適當的資料結構或是資料結構的組合都可以根據任何適當的標準或是標準的組合,例如是存取時間、記憶體使用率、等等而被選擇。
應該體認到的是,在以上所介紹以及在以下更加詳細描述的技術可以用許多方式的任一種來加以實施,因為所述技術並不限於任何特定的實施方式。實施方式的細節的例子在此只是為了舉例說明的目的而被提供。再者,在此揭露的技術可以個別地或是用任何適當的組合來加以利用,因為本揭露內容的特點並不限於任何特定的技術或是技術的組合的利用。
譬如,儘管在此論述的例子是包含一編譯器(例如,在圖2的例子中的舉例說明的編譯器205及/或舉例說明的策略編譯器220),但應該體認到的是,本揭露內容的特點並不限於利用一編譯器。在某些實施例中,一軟體工具鏈可被實施為一解譯器。例如,一種延遲初始化設計可被實施,其中一或多個預設的符號(例如,“UNINITIALIZED”)可被使用於起動時標記,並且一策略處理器(例如,在圖1的例子中的舉例說明的策略處理器150)可以評估一或多個策略,並且用一剛好及時的方式來解析所述一或多個預設的符號。
本發明人已經體認且領悟到降低用於儲存元資料的記憶體量可能是所期望的。此可以藉由利用較小的元資料標籤而被達成。譬如,藉由將一應用程式記憶體中的每一個字關聯到16位元的元資料,而非32位元的元資料,一在元資料記憶體使用率上的50%縮減可被達成。然而,若每一個元資料值僅為16位元長的,則最多216 (=65,536)個不同的元資料值可以是可利用的,若許多複雜的策略將同時被實行,則此可能是不足的。譬如,在記憶體中的一元資料值可以是一元資料標籤的一個二進位表示,其可以是根據分別對應於多個策略的多個元資料符號而定的。在對於每一個不同的元資料符號使用一位元的一種編碼下,一16位元長的元資料值只能夠容納16個不同的元資料符號。
於是,在某些實施例中,技術被提出以用於降低元資料記憶體使用率,同時使得足夠大的數量的不同的元資料值是可供利用的。譬如,不同的元資料編碼/解碼設計可加以設置,使得具有一縮小的尺寸(例如,16位元)的單一元資料值可以根據哪個編碼/解碼設計被使用而被解析成具有一未縮小的尺寸(例如,32位元)的不同的元資料值。以此種方式,具有縮小的尺寸的元資料值可被儲存在一元資料記憶體中,並且可被轉換成為具有未縮小的尺寸的元資料值以用於評估策略(例如,藉由一策略處理器或是一規則快取)。
在某些實施例中,一應用程式記憶體可包含複數個區域,並且可以針對於每一個區域設置一不同的元資料編碼/解碼設計。本發明人已經體認且領悟到某些元資料符號可以是只關聯到在某些應用程式記憶體區域中的位址。舉例而言,用於一Read-Write-eXecute(RWX)策略的一“EXECUTE”符號可以是只關聯到在一用於儲存碼的應用程式記憶體區域中的位址[1]。同樣地,用於一堆疊策略的一“PROLOGUE”或是“EPILOGUE”符號可以是只關聯到在一用於儲存碼的應用程式記憶體區域中的位址。因此,當針對於一只儲存資料(而非碼)的應用程式記憶體區域產生一編碼時,所述“EXECUTE”、“PROLOGUE”以及“EPILOGUE”符號可以被忽視。因此,此種區域化的編碼可以使用比一編碼所有符號的全域的編碼較少的位元。
再者,本發明人已經體認且領悟到假設有一種用以消除歧義(disambiguate)的方式 (例如,根據應用程式記憶體區域),則同一元資料值可被用來編碼不同的元資料標籤。譬如,用於所述RWX策略的“EXECUTE”符號可以只關聯到在一用於儲存碼的應用程式記憶體區域中的位址,而用於所述RWX策略的“WRITE”符號可以只關聯到在一用於儲存資料的應用程式記憶體區域中的位址。因此,在一元資料值(例如,一16位元的值)中的一相同的位元位置可被用來編碼所述“EXECUTE”符號以及所述“WRITE”符號。
為了消除歧義,所述碼記憶體區域以及所述資料記憶體區域在某些實施例中分別可以是和不同的字首(例如,不同的16位元的字首)相關的。當標記在所述碼記憶體區域中的一位址時,編碼所述“EXECUTE”符號以及所述“WRITE”符號兩者的元資料值可以藉由在開頭附加和所述碼記憶體區域相關的字首而被解析,此產生對應於一包括所述“EXECUTE”符號的元資料標籤的一元資料值(例如,一32位元的值)。相對地,當標記在所述資料記憶體區域中的一位址時,編碼所述“EXECUTE”符號以及所述“WRITE”符號兩者的元資料值可以藉由在開頭附加和所述資料記憶體區域相關的字首而被解析,此產生對應於一包括所述“WRITE”符號的元資料標籤的一元資料值(例如,一32位元的值)。然而,應該體認到的是,本揭露內容的特點並不限於任何特定的元資料編碼/解碼設計、或是用於元資料標籤的任何特定的縮小的尺寸。在某些實施例中,不同的縮小的尺寸(例如,1位元、2位元、3位元、4位元、5位元、7位元、8位元、等等)例如可以根據待被列舉的不同的元資料符號的數量來加以設置。
本發明人已經體認且領悟到某些元資料符號可以是和在多個應用程式記憶體區域中的位址相關的。譬如,一用於所述RWX策略的“READ”符號可以是和在一碼記憶體區域中的位址、以及在一資料記憶體區域中的位址相關的。對於一包括此種符號的元資料標籤而言,橫跨所述不同的應用程式記憶體區域提供一相同的編碼可能是所期望的,因而只有一規則可被設置在一規則快取(例如,在圖1中所示的舉例說明的規則快取144)中。
於是,在某些實施例中,一組所選的元資料值可以被標明為“全域的”元資料值。譬如,一範圍的元資料值(例如,{0000 0000 0000 0000、 …、 0000 0000 0001 1111})可以被標明為一“全域的”元資料範圍。在某些實施例中,一種均勻的編碼/解碼設計可被使用於全域的元資料值,而可變的編碼/解碼設計可被使用於其它的元資料值。譬如,和在一應用程式記憶體區域中的一位址相關的一全域的元資料值可以藉由在開頭附加16個零而被解析,而不論所述應用程式記憶體區域為何。以此種方式,和在多個應用程式記憶體區域中的位址相關的元資料標籤可以橫跨所述不同的區域而被均勻地編碼。
在某些實施例中,用於元資料標籤的不同的縮小的尺寸可被使用,例如是根據標記粒度而定。譬如,8位元的元資料值可被使用於標記16位元的半字(例如,16位元的指令),而16位元的元資料值可被使用於標記32位元的字(例如,32位元的指令),但是兩種類型的元資料值可被轉換成為具有一未縮小的尺寸(例如,32位元)的元資料值以用於評估策略(例如,藉由一策略處理器或是一規則快取)。以此種方式,一適當的標籤尺寸(例如,一最小的標籤尺寸)可以根據和某一標記粒度相關的元資料複雜度來加以選擇。
在某些實施例中,用於對映應用程式記憶體位址至元資料記憶體位址的資訊可被儲存在一標籤對映表中。圖3是展示根據某些實施例的一舉例說明的標籤對映表項目300。譬如,所述項目300可以是在圖1中所示的舉例說明的標籤對映表142中的一項目。
在某些實施例中,所述標籤對映表142可被實施為一完全關聯的陣列,儘管此並非必須的。額外或替代的是,所述標籤對映表142可被實施利用一硬體分頁表遍歷器。譬如,若所述標籤對映表142變成是滿的,則一或多個溢位項目可被儲存在一元資料記憶體內的一表中。若一輸入位址並不相符在所述標籤對映表142中的任何項目,則所述硬體分頁表遍歷器可被用來遍歷在所述元資料記憶體中的所述表,以尋找一符合所述輸入位址的項目。
在圖3的例子中,所述標籤對映表項目300儲存一偏移值,以被加到在一應用程式記憶體(例如,在圖1中所示的舉例說明的應用程式記憶體120)中的一位址以獲得在一元資料記憶體(例如在圖1中所示的舉例說明的元資料記憶體125)中的一位址。
額外或替代的是,所述標籤對映表項目300可以儲存將所述標籤對映表項目300關聯到一或多個應用程式記憶體位址的資訊。譬如,所述標籤對映表項目300可以儲存一開始位址以及一結束位址,其可以指出和所述標籤對映表項目300相關的一位址範圍。
在某些實施例中,當一主機處理器(例如,在圖1中所示的舉例說明的主機處理器110)嘗試從一應用程式記憶體載入資料時,所述載入指令的一目標位址可被標籤處理硬體(例如,在圖1中所示的舉例說明的標籤處理硬體140)使用來判斷所述載入指令是否應該被容許。所述標籤處理硬體可以匹配所述目標位址與在一標籤對映表(例如所述標籤對映表項目300)中的一項目。譬如,所述標籤處理硬體可以判斷所述目標位址落入藉由在所述標籤對映表項目300中所儲存的開始位址及結束位址所指出的一應用程式記憶體範圍之內。所述標籤處理硬體接著可以將在所述標籤對映表項目300中所儲存的偏移值加到所述目標位址以獲得一元資料記憶體位址,並且可以使用所述元資料記憶體位址來從所述元資料記憶體擷取一和所述目標位址相關的元資料標籤。
然而,應該體認到的是,本揭露內容的特點並不限於任何用於將所述目標位址對映到一元資料記憶體位址的特定的技術。在某些實施例中,一元資料記憶體位址可以藉由施加一遮罩至所述目標位址來加以獲得。譬如,所述遮罩可包含N個零,因而一具有2N 位址的區塊可被對映到同一元資料記憶體位址。遮罩N個最低有效位元至零的一結果可以與一第一值相比較。若所述結果符合所述第一值,則所述目標位址可以和一第二值組合(例如,利用一OR運算)以獲得所述元資料記憶體位址。在某些實施例中,所述第一值可以指出在所述應用程式記憶體中的一具有尺寸2N 的位址區塊,並且所述第二值可以是指出一具有N個尾隨的零的偏移。所述第一及第二值可以不共用2的任何冪次,因而利用一OR運算來結合所述目標位址與所述第二值可以導致所述目標位址以及所述偏移的一總和。此可以在一晶片上的面積上提供節省,因為一OR運算可以是比一加法運算更簡單實施的。
在圖3所示的例子中,所述應用程式記憶體以及所述元資料記憶體是同一實體記憶體的部分。一記憶體管理構件可被利用,其實施一適當的保護設計以避免在所述主機處理器上執行的指令修改在所述元資料記憶體中所儲存的元資料。然而,應該體認到的是,本揭露內容的特點並非限於此的。在某些實施例中,所述應用程式記憶體以及所述元資料記憶體可被實施在實體分開的記憶體上,並且一適當的對映設計可被用來對映應用程式記憶體位址至元資料記憶體位址。
在某些實施例中,用於解碼元資料值的資訊可以額外或替代用於對映應用程式記憶體位址至元資料記憶體位址的資訊,而被儲存在一標籤對映表中。圖4是展示根據某些實施例的另一舉例說明的標籤對映表項目400。在此例子中,所述標籤對映表項目400包含一被表示“UTag”(代表“上標籤”)的欄位,其可以儲存一值以用於解析從一元資料記憶體(例如,在圖1中所示的舉例說明的元資料記憶體125)擷取的一編碼的元資料值成為一解碼的元資料值,以被提供至一策略處理器(例如,在圖1中所示的舉例說明的策略處理器150)或是一規則快取(例如,在圖1中所示的舉例說明的規則快取144)。譬如,所述UTag欄位可以儲存一16位元的字首以在開頭被附加到16位元的編碼的元資料值,以獲得32位元的解碼的元資料值。
應該體認到的是,本揭露內容的特點並不限於任何特定的元資料編碼/解碼設計。譬如,在所述UTag欄位中的字首可以具有任何適當的長度(例如,1位元、2位元、3位元、4位元、…、8位元、…、16位元、等等)。再者,所述標籤對映表項目400可以額外或替代所述UTag欄位包含一“LTag”(代表“下標籤”)欄位。所述LTag欄位可以儲存一後置(postfix)以被附加到編碼的元資料值,並且所述後置可以具有任何適當的長度(例如,1位元、2位元、3位元、4位元、…、8位元、…、16位元、等等)。
額外或替代的是,所述標籤對映表項目400可包含一“ATag”(代表“額外的標籤”)欄位以及一“Pos”(代表“位置”)欄位。所述Pos欄位可以儲存一值,其指出將一編碼的元資料值劃分成為上部分以及下部分的一位元位置,在所述ATag欄位中所儲存的一位元串將被插入在兩者之間。在某些實例中,所述Pos欄位可以指出所述下部分是空的,因而在所述ATag欄位中所儲存的位元串將被附加,就像是一後置被儲存在一LTag欄位中。在某些實例中,所述Pos欄位可以指出所述上部分是空的,因而在所述ATag欄位中所儲存的位元串將在開頭被附加,就像是一字首被儲存在一UTag欄位中。
在某些實施例中,另一種適當的轉換可以藉由在一內部的位元位置,在開頭附加、附加、或是插入來額外或替代插入值來加以利用。此種轉換可以導致一具有任何適當長度的解碼的元資料值,其可以是大於或小於、或是等於一對應的編碼的元資料值的一長度。
在某些實施例中,在所述UTag欄位中的字首可以對應於藉由在所述標籤對映表項目400中所儲存的一開始位址以及一結束位址所指出的一位址範圍。因此,藉由在不同的標籤對映表項目中儲存不同的字首,不同的編碼可以分別對於不同的位址範圍來加以提供。然而,應該體認到的是,本揭露內容的特點並不限於在每一個標籤對映表項目中儲存一不同的字首。譬如,在某些實施例中,一應用程式記憶體(例如,在圖1中所示的舉例說明的應用程式記憶體120)可包含複數個區域,例如在圖4的例子中的區域AMR1、AMR2及AMR3。和在所述區域AMR1、AMR2及AMR3中的位址相關的元資料分別可被儲存在元資料記憶體區域MMR1、MMR2及MMR3中。對於在同一應用程式記憶體區域之內的位址範圍,一相同的元資料字首可被使用,而不同的元資料字首分別可被使用於在不同的應用程式記憶體區域中的位址範圍。
在某些實施例中,所述標籤對映表項目400可以額外或替代所述UTag欄位來包含一被表示為“位元數量”的欄位。所述位元數量欄位可以儲存一值,其指出將從所述元資料記憶體擷取的一編碼的元資料值的一長度。譬如,所述位元數量欄位可以儲存一值,其指出編碼的元資料值可以具有零個位元、一個位元、兩個位元、三個位元、四個位元、五個位元、…、8個位元(或是一個位元組)、…、16個位元(或是兩個位元組)、等等的一長度。然而,應該體認到的是,本揭露內容的特點並不限於指出就位元而論的編碼的元資料長度。在某些實施例中,一“位元組數量”欄位可加以設置。
本發明人已經體認且領悟到所述位元數量欄位以及所述UTag欄位可以組合加以使用,以提供彈性的編碼/解碼設計。譬如,所述UTag欄位可以儲存一32位元的值。根據在所述位元數量欄位中指出的一編碼的元資料長度,來自所述UTag欄位的更多或較少的位元可被使用於解碼。舉例而言,所述位元數量欄位可以指出一0位元的編碼的元資料長度,因而在所述UTag欄位中的32位元的值可被使用作為一32位元的經解碼的元資料值。無元資料值可從所述元資料記憶體擷取。作為另一例子的是,所述位元數量欄位可以指出一8位元(或是一位元組)的編碼的元資料長度,因而在所述UTag欄位中的32位元的值的較高的24位元可以在開頭附加到從所述元資料記憶體擷取的一8位元的編碼的元資料值,此產生一32位元的經解碼的元資料值。作為另一例子的是,所述位元數量欄位可以指出一16位元(或兩個位元組)的編碼的元資料長度,因而在所述UTag欄位中的32位元的值的較高的16位元可以在開頭附加到從所述元資料記憶體擷取的一16位元的編碼的元資料值,此依然產生一32位元的經解碼的元資料值。作為另一例子的是,所述位元數量欄位可以指出一24位元(或三個位元組)的編碼的元資料長度,因而在所述UTag欄位中的32位元的值的較高的8位元可以在開頭附加到從所述元資料記憶體擷取的一24位元的編碼的元資料值,此依然產生一32位元的經解碼的元資料值。
來自所述元資料記憶體的一或多個位元及/或來自所述UTag欄位的一或多個位元的任何適當的組合都可被利用,因為本揭露內容的特點並非限於此的。再者,本揭露內容的特點並不限於任何特定長度的解碼的元資料值。譬如,在某些實施例中,64位元的解碼的元資料值可以額外或替代32位元的解碼的元資料值而被使用。
應該體認到的是,本揭露內容的特點並不限於具有一UTag欄位或是一位元數量欄位。在某些實施例中,一標籤對映表項目可以額外或替代在圖4中所示的舉例說明的位元數量以及UTag欄位來包含一“LOffset”欄位(代表“下偏移”)以及一“UOffset”欄位(代表“上偏移”)。所述“LOffset”欄位可以是類似於在圖3所示的舉例說明的標籤對映項目300中的“偏移”欄位。譬如,在所述“LOffset”欄位中的一偏移值可以被加到一輸入的應用程式記憶體位址以獲得一第一元資料記憶體位址,一或多個第一位元可以從其加以擷取。一不同的偏移值可被儲存在所述“UOffset”欄位中,並且可被加到所述輸入的應用程式記憶體位址以獲得一第二元資料記憶體位址,一或多個第二位元可以從其加以擷取。所述一或多個第二位元可以在開頭附加至所述一或多個第一位元,以提供一解碼的元資料值。
在某些實施例中,一輸入的應用程式記憶體位址可以在加上來自所述“LOffset”欄位的一偏移值之前,先被向右移位M個位元位置。以此種方式,一具有2M 應用程式記憶體位址的區塊可以是和同一下標籤部分相關的。額外或替代的是,一輸入的應用程式記憶體位址可以在加上來自所述“UOffset”欄位的一偏移值之前,先被向右移位N個位元位置。以此種方式,一具有2N 應用程式記憶體位址的區塊可以是和同一上標籤部分相關的。N可以(儘管不必要)等於M。譬如,M可以是零(因此沒有向右移位),而N可以是非零的。
在某些實施例中,一標籤對映表項目可以額外或替代在圖4中所示的舉例說明的UTag欄位來包含一欄位,其儲存有關一壓縮機制的資訊。譬如,和在一應用程式記憶體區域中的位址相關的元資料值可以是已知的(例如,在編譯時),因而一適當的無損失的壓縮機制可被選擇以用於所述記憶體區域。舉例而言,一運行長度編碼可被使用於一元資料記憶體中的一頁的元資料值。有關所述編碼的資訊可被儲存在一標籤對映表項目中,並且可被使用於解碼。譬如,在某些實施例中,一元資料快取可被利用,並且有關所述編碼的資訊可被傳送至一快取區塊,其膨脹/收縮快取線作為其操作的部分。額外或替代的是,靜態分析可以在和一應用程式記憶體區域(例如,一用於儲存碼的區域,而非儲存資料)中的位址相關的元資料值上加以執行,並且一適當的壓縮機制可以根據所述元資料值的熵來加以選擇。
在某些實施例中,一標籤對映表項目可以額外或替代有關一壓縮機制的資訊來包含儲存有關一加密機制的資訊的一欄位。譬如,和在一應用程式記憶體區域中的位址相關的元資料值可被儲存在一外部的記憶體中,其可能比晶片上的記憶體較不安全的。因此,所述元資料值可以用一加密的形式來儲存,並且一對應於所述應用程式記憶體區域的標籤對映表項目可以儲存一用於加密及/或解密所述元資料值的密鑰。
應該體認到的是,加密可以在壓縮之前或是之後施加、或是在無壓縮下施加。同樣地,壓縮可以在無加密下施加。兩者都不是必須的。
本發明人已經體認且領悟到,使用具有不是2的一冪次的一長度的編碼的元資料值有時可能是所期望的。然而,若一元資料值的一長度不是2的一冪次(例如,24位元),則在一標記粒度(例如,32位元)以及所述元資料值的長度之間的比例可能不是2的一冪次(例如,4/3)。因此,一或多個乘法器可被用來從一輸入的應用程式記憶體位址產生一元資料記憶體位址。譬如,所述輸入的應用程式記憶體位址可以藉由向右移位所述輸入位址兩個位元位置來除以4,並且接著乘以3。本發明人已經體認且領悟到此種乘法器可能是昂貴的(例如,就時間、面積及/或功率而論)。於是,技術被提供以用於處理具有一不是2的冪次的長度的編碼的元資料值,而不利用乘法器來產生元資料位址。
在某些實施例中,一標籤對映表項目可以儲存多個偏移,以用於處理具有一不是2的冪次的長度的編碼的元資料值。譬如,額外或替代所述位元數量欄位的是可以有一“Offset1”欄位以及一“Offset0”欄位。在所述“Offset1”欄位中的一偏移值可以被加到一輸入的應用程式記憶體位址以獲得一第一元資料記憶體位址,可以從其擷取2M 個第一位元。在所述“Offset0”欄位中的一偏移值可被加到所述輸入的應用程式記憶體位址以獲得一第二元資料記憶體位址,可以從其擷取2N 個第二位元。所述2N 個第二位元可以在開頭附加至所述2M 個第一位元,此產生一具有一2M +2N 的長度的編碼的元資料值。以此種方式,編碼的元資料值可以被處理以具有一3位元(21 +20 )、5位元(22 +20 )、6位元(22 +21 )、9位元(23 +20 )、10位元(23 +21 )、12位元(23 +22 )、17位元(24 +20 )、18位元(24 +21 )、20位元(24 +22 )、或是24位元(24 +23 )的長度。
在某些實施例中,一標籤對映表項目可以儲存超過兩個偏移。譬如,除了所述“Offset1”欄位以及所述“Offset0”欄位之外,可以有一“Offset2”欄位。在所述“Offset2”欄位中的一偏移值可以被加到一輸入的應用程式記憶體位址以獲得一第三元資料記憶體位址,可以從其擷取2O 第三位元。所述2O 第三位元、所述2N 個第二位元、以及所述2M 第一位元可以串級,其產生一具有一2M +2N +2O 的長度的編碼的元資料值。以此種方式,編碼的元資料值可以被處理以具有一7位元(22 +21 +20 )、11位元(23 +21 +20 )、13位元(23 +22 +20 )、14位元(23 +22 +21 )、19位元(24 +21 +20 )、21位元(24 +22 +20 )、22位元(24 +22 +21 )、25位元(24 +23 +20 )、26位元(24 +23 +21 )、或是28位元(24 +23 +22 )的長度。
應該體認到的是,任何適當數量的偏移都可被使用,例如是零個、一個、兩個、三個、四個、等等。然而,本發明人已經體認且領悟到,在每一個額外的偏移下,一額外的提取可以從一元資料記憶體或是一元資料快取來加以執行,此可能會造成變慢(例如,一或多個額外的時脈週期)。因此,一適當數量的偏移可被選擇以提供相關編碼的元資料長度的一所要的彈性程度,而不顯著地影響效能。
在某些實施例中,所述標籤對映表項目400可以額外或替代所述位元數量以及UTag欄位來包含一被表示為“全域的範圍”欄位。所述全域的範圍欄位可以儲存一值,其指出一範圍的元資料值。譬如,所述全域的範圍欄位可以儲存一值(例如,0000 0000 0001 1111),其指出一開始在零的範圍的一上限(例如,{0000 0000 0000 0000, …, 0000 0000 0001 1111})。在某些實施例中,若從所述元資料記憶體擷取的一編碼的元資料值落在所述全域的範圍欄位中指出的範圍之內,則所述編碼的元資料值可以藉由在開頭附加一適當數量的零而被解析,而不利用來自所述UTag欄位的任何字首。以此種方式,一種均勻的編碼/解碼設計可被使用於在所述全域的範圍欄位中指出的範圍之內的編碼的元資料值,而可變的編碼/解碼方案可被使用於其它編碼的元資料值。
在某些實施例中,所述標籤對映表項目400可以額外或替代所述位元數量、UTag以及全域的範圍欄位來包含一被表示為“尺寸”的欄位。所述尺寸欄位可以儲存一指出標記的粒度的值。舉例而言,所述尺寸欄位可以儲存一值,其指出對於藉由在所述標籤對映表項目400中所儲存的開始位址以及結束位址指出的位址範圍,標記是逐區塊地被完成。譬如,每一個區塊可包含2N 個字,其中N是在所述尺寸欄位中所儲存的值。以此種方式,對於一整個區塊的應用程式記憶體位址而言,可以只儲存一元資料值,此可以降低被用來儲存元資料值的記憶體量。例如,一主機處理器可以嘗試使得均勻被標記(整個緩衝器都是相同的元資料值)並且大於一所選的臨界尺寸(例如,210 個字,亦即一千位元組或1KB)的緩衝器共處一地。藉由在所述尺寸欄位中儲存N=10,對於一千位元組的應用程式記憶體可以只儲存一元資料值,相較於逐字的標記,此可以代表在元資料記憶體覆蓋區上的1024倍的縮減。
本發明人已經體認且領悟到在此所述用於針對不同的應用程式記憶體區域編碼元資料的技術中的一或多個可以額外或替代針對於其它儲存區域的編碼元資料而被使用。譬如,在某些實施例中,同一元資料值可被用來標記在一記憶體對映的週邊裝置中(例如,一通用非同步收發傳輸器或UART)的所有暫存器。此元資料值可以直接被儲存在一用於所述週邊裝置的標籤對映表項目中。然而,在某些實例中,所述元資料值的尺寸可能超過所述標籤對映表項目的容量。於是,在某些實施例中,針對於一週邊裝置的一元資料值可被儲存在一元資料記憶體中,並且一尺寸欄位可被設置在一用於所述週邊裝置的標籤對映表項目中。所述尺寸欄位可以儲存根據和所述週邊裝置相關的記憶體位址的一範圍的尺寸所選的一值(例如,針對於一4KB裝置,N=12)。
儘管本發明人已經體認且領悟到施加一較低粒度的標記(例如,透過所述尺寸欄位)的各種的優點,但應該體認到的是本揭露內容的特點並不限於任何特定粒度的標記。在某些實施例中,一較高粒度的標記例如可以透過一遮罩而被施加。在某些實施例中,一標籤對映表項目可以額外或替代在圖4中所示的舉例說明的尺寸欄位來包含一欄位,其儲存一個兩位元的遮罩。舉例而言,若針對於藉由在所述標籤對映表項目400中所儲存的開始位址及結束位址指出的位址範圍,標記將以逐字(例如,針對於32位元的字)而被完成,則所述兩位元的遮罩可被設定為2’b00。所述兩個位元的遮罩可被施加至一輸入的應用程式記憶體位址(例如,0x123)以獲得一被遮罩的應用程式記憶體位址(例如,0x120),其接著可被對映到一元資料記憶體位址。以此種方式,四個不同的位元組的位址(例如,0x120、0x121、0x122以及0x123)可被對映到同一元資料記憶體位址,藉此達成逐字的標記。
作為另一例子的是,若針對於藉由在所述標籤對映表項目400中所儲存的開始位址及結束位址指出的位址範圍,標記將以逐半字(例如,針對於16位元的字)而被完成,則所述兩位元的遮罩可被設定為2’b10。所述兩個位元的遮罩可被施加至一輸入的應用程式記憶體位址(例如,0x123)以獲得一被遮罩的應用程式記憶體位址(例如,0x122),其接著可被對映到一元資料記憶體位址。以此種方式,兩個不同的位元組的位址(例如,0x122以及0x123)可被對映到同一元資料記憶體位址,藉此達成逐半字的標記。
儘管各種的元資料編碼技術在以上是相關一標籤對映表項目而被描述,但應該體認到的是本揭露內容的特點並不限於利用一標籤對映表。在某些實施例中,固定的硬體邏輯及/或一藉由軟體而被程式化的處理器可以額外或替代一標籤對映表來加以利用。
圖5A展示根據某些實施例的一用於解碼元資料值的舉例說明的程序500A。譬如,所述程序500A可以藉由標籤處理硬體(例如,在圖1中所示的舉例說明的標籤處理硬體140)來加以執行。
在動作505,所述標籤處理硬體可以接收在一應用程式記憶體中(例如,在圖1中所示的舉例說明的應用程式記憶體120)的一目標位址。譬如,當一主機處理器(例如,在圖1中所示的舉例說明的主機處理器110)嘗試從所述應用程式記憶體載入資料、或是儲存資料至所述應用程式記憶體時,所述載入或儲存指令的一目標位址可被提供至所述標籤處理硬體。
在動作510,所述標籤處理硬體可以對映所述目標位址至一元資料記憶體(例如,在圖1中所示的舉例說明的元資料記憶體125)中的一位址。譬如,所述標籤處理硬體可以匹配所述目標位址至在一標籤對映表(例如,在圖4中所示的舉例說明的標籤對映表項目400)中的一項目。此可以用任何適當的方式來完成。例如,在某些實施例中,在所述標籤對映表中的每一個項目可以儲存一開始位址以及一結束位址,藉此指出在所述應用程式記憶體中的一範圍。所述目標位址可以匹配到對應於所述目標位址落入的一應用程式記憶體範圍的一項目。
在某些實施例中,一偏移值可被儲存在匹配所述目標位址的標籤對映表項目中(例如,在圖4中所示的舉例說明的偏移欄位中)。所述標籤處理硬體可以將所述偏移值加至所述目標位址以獲得一元資料記憶體位址。在某些實施例中,所述目標位址可以在加上所述偏移值之前先被移位一適當的量。譬如,匹配所述目標位址的標籤對映表項目可以例如是在圖4中所示的舉例說明的尺寸欄位中儲存標記粒度的一指示(例如,每32位元)。額外或替代的是,匹配所述目標位址的標籤對映表項目可以例如是在圖4中所示的舉例說明的位元數量欄位中儲存將從所述元資料記憶體擷取的一元資料值的一長度的一指示(例如,8位元)。所述目標位址可以向右被移位根據在所述標記粒度以及所述元資料長度之間的一比例所決定的一量(例如,被移位2以反映一4=22 的比例)。
在動作515,所述標籤處理硬體可以使用在動作510所判斷出的元資料記憶體位址,以從所述元資料記憶體擷取一元資料值。在某些實施例中,所擷取的元資料值可以具有在匹配所述目標位址的標籤對映表項目中指出的長度。
在動作520,所述標籤處理硬體可以解碼從所述元資料記憶體擷取的元資料值。譬如,所述標籤處理硬體可以決定一適當的解碼設計。在某些實施例中,所述標籤對映表可以儲存一組所選的元資料值的一指示(例如,相關在圖4中所示的舉例說明的全域的範圍欄位所論述的一或多個所選的元資料值的範圍)。所述標籤處理硬體可以判斷所擷取的元資料值是否屬於所選的元資料值組。若所擷取的元資料值屬於所選的元資料值組,則所述標籤處理硬體可以施加一所選的解碼設計(例如,在開頭附加一適當數量的零以獲得具有一所要的長度的一解碼的元資料值)。若所擷取的元資料值並不屬於所選的元資料值組,則所述標籤處理硬體可以使用在匹配所述目標位址的標籤對映表項目中所儲存的解碼資訊來解碼所擷取的元資料值。譬如,匹配所述目標位址的標籤對映表項目可以儲存一字首,以在開頭附加至所擷取的元資料值來獲得一解碼的元資料值(例如,如上相關在圖4中所示的舉例說明的UTag欄位所論述的)。
圖5B展示根據某些實施例的另一用於解碼元資料值的舉例說明的程序500B。譬如,所述程序500B可以藉由標籤處理硬體(例如,在圖1中所示的舉例說明的標籤處理硬體140)來加以執行。
在動作555,所述標籤處理硬體可以接收在一應用程式記憶體(例如,在圖1中所示的舉例說明的應用程式記憶體120)中的一目標位址。譬如,當一主機處理器(例如,在圖1中所示的舉例說明的主機處理器110)嘗試從所述應用程式記憶體載入資料、或是儲存資料至所述應用程式記憶體時,所述載入或儲存指令的一目標位址可被提供至所述標籤處理硬體。
在動作560,所述標籤處理硬體可以判斷是否從一元資料記憶體(例如,在圖1中所示的舉例說明的元資料記憶體125)擷取一元資料值。譬如,所述標籤處理硬體可以匹配所述目標位址至一標籤對映表(例如,在圖4中所示的舉例說明的標籤對映表項目400)中的一項目。此可以用任何適當的方式來完成。例如,在某些實施例中,在所述標籤對映表中的每一個項目可以儲存一開始位址以及一結束位址,藉此指出在所述應用程式記憶體中的一範圍。所述目標位址可以匹配到對應於所述目標位址落入的一應用程式記憶體範圍的一項目。
在某些實施例中,匹配所述目標位址的標籤對映表項目可以(例如,在圖4中所示的舉例說明的位元數量欄位中)儲存將從所述元資料記憶體擷取的一元資料值的一長度的一指示。若所指出的元資料長度是零,所述標籤處理硬體可以決定不從所述元資料記憶體擷取任何值。所述標籤處理硬體可以在動作565決定一預設的元資料值。譬如,匹配所述目標位址的標籤對映表項目可以儲存一適當長度(例如,32位元)的一值以使用作為一預設的元資料值(例如,如上相關在圖4中所示的舉例說明的UTag欄位所論述的)。
在某些實施例中,若所指出的元資料長度大於零(例如,8位元),則所述標籤處理硬體可以在動作570對映所述目標位址至所述元資料記憶體中的一位址。在某些實施例中,一偏移值可被儲存在匹配所述目標位址的標籤對映表項目中(例如,在圖4中所示的舉例說明的偏移欄位中)。所述標籤處理硬體可以將所述偏移值加到所述目標位址以獲得一元資料記憶體位址。在某些實施例中,所述目標位址可以在加上所述偏移值之前先被移位一適當的量。譬如,匹配所述目標位址的標籤對映表項目例如可以在圖4中所示的舉例說明的尺寸欄位中儲存標記粒度的一指示(例如,每32位元)。所述目標位址可以向右被移位根據在所述標記粒度以及所述元資料長度之間的一比例所決定的一量(例如,被移位2以反映一4=22 的比例)。
在動作575,所述標籤處理硬體可以使用在動作570所決定的元資料記憶體位址以從所述元資料記憶體擷取一元資料值。在某些實施例中,所擷取的元資料值可以具有在匹配所述目標位址的標籤對映表項目中所指出的長度。
在動作580,所述標籤處理硬體可以決定是否解碼從所述元資料記憶體擷取的元資料值。譬如,若所擷取的元資料值的長度符合一策略處理器(例如,在圖1中所示的舉例說明的策略處理器150)或是一規則快取(例如,在圖1中所示的舉例說明的規則快取144)所預期的一長度,則所述標籤處理硬體可以決定不解碼所擷取的元資料記憶體。然而,此並非必須的。在某些實施例中,所述標籤處理硬體可以使用一保長的編碼/解碼設計,並且可以解碼所擷取的元資料值,即使所述長度匹配也是如此。
若判斷出的是所擷取的元資料值將被解碼,則所述標籤處理硬體可以在動作585決定一適當的解碼設計。譬如,在某些實施例中,所述標籤對映表可以儲存一組所選的元資料值(例如,相關在圖4中所示的舉例說明的全域的範圍欄位所論述的一或多個所選的元資料值的範圍)的一指示。所述標籤處理硬體可以判斷所擷取的元資料值是否屬於所選的元資料值組。若所擷取的元資料值屬於所選的元資料值組,則所述標籤處理硬體可以施加一所選的解碼設計(例如,在開頭附加一適當數量的零以獲得具有一所要的長度的一解碼的元資料值)。若所擷取的元資料值並不屬於所選的元資料值組,則所述標籤處理硬體可以使用在匹配所述目標位址的標籤對映表項目中儲存的解碼資訊來解碼所擷取的元資料值。譬如,一適當的字首可以從所述預設的元資料值獲得,並且可以在開頭附加至所擷取的元資料值以獲得一解碼的元資料值(例如,如上相關在圖4中所示的舉例說明的UTag欄位所論述的)。
儘管記憶體存取是相關圖5A-B而被論述的,但應該體認到的是在此所述的技術可以額外或是替代地被用來編碼/解碼和主機處理器暫存器相關的元資料。譬如,一主機處理器可以具有複數個一般用途的暫存器及/或配置暫存器(例如,用於RISC-V的控制及/或狀態暫存器)。在某些實施例中,存取此種暫存器可以藉由一標籤對映表來加以調解。
圖6是展示根據某些實施例的一用於編碼元資料值的舉例說明的程序600。譬如,所述程序600可以藉由一策略編譯器(例如,在圖2中所示的舉例說明的策略編譯器220)、一策略連結器(例如,在圖2中所示的舉例說明的策略連結器225)、一策略處理器(例如,在圖1中所示的舉例說明的策略處理器150)及/或標籤處理硬體(例如,在圖1中所示的舉例說明的標籤處理硬體140)來加以執行。
在動作605,一或多個元資料符號可以是和一應用程式記憶體區域相關的。譬如,如上所論述,用於一RWX策略的一“EXECUTE”符號可以是和一用於儲存碼的應用程式記憶體區域相關的,用於所述RWX策略的一“WRITE”符號可以是和一用於儲存資料的應用程式記憶體區域相關的,且/或用於所述RWX策略的一“讀取”符號可以是和兩種記憶體區域相關的。然而,應該體認到的是,本揭露內容的特點並不限於利用任何特定的策略。在某些實施例中,一或多個其它策略(例如,一堆疊策略、一堆積策略、等等)可以額外或替代一RWX策略而被使用。
在元資料符號以及應用程式記憶體區域之間的關聯可以用任何適當的方式來執行。譬如,在某些實施例中,所述策略編譯器及/或所述策略連結器可以從描述在一應用程式記憶體(例如,在圖1中所示的舉例說明的應用程式記憶體120)中的碼及資料佈局的一ELF檔、及/或指出哪些記憶體位置是唯讀、可執行的、等等的旗標獲得資訊。所述策略編譯器及/或所述策略連結器可以使用此種資訊以關聯一或多個元資料符號與一應用程式記憶體區域。
本發明人已經體認且領悟到在元資料符號以及應用程式記憶體區域之間的直接的關聯可以是依據一目標系統的記憶體佈局及/或其它實施方式的細節而定。因此,根據此種關聯產生的一編碼可能不是可橫跨不同的目標系統應用的。於是,在某些實施例中,在元資料符號以及應用程式記憶體區域之間的關聯可以間接被產生,例如是透過域(domain)。
譬如,一應用程式記憶體可以具有用於一程式堆疊的一區域、用於一程式堆積(heap)的一區域、及/或用於一或多個ELF資料區段的一區域。這些區域的每一個可以是和一Mem域相關的,例如是指出所述區域是在一應用程式記憶體中(例如,並非是一週邊裝置)。額外或替代的是,這些區域可以分別是和一堆疊域、一堆積域、以及一資料域相關的。因此,域可以代表虛擬的區域,其可以根據一目標系統是如何被實施的而被對映到實體區域。
額外或替代的是,一策略語言可以被假設容許元資料符號能夠被指定到一或多個域。例如,所述“EXECUTE”符號可被指定到一碼域,所述“WRITE”符號可被指定到一資料域,且/或所述“READ”符號可被指定到所述碼域以及所述資料域兩者。
在某些實施例中,所述策略編譯器及/或所述策略連結器可被程式化,以根據具有一或多個相關的域的一或多個元資料符號來建構一元資料標籤。譬如,一元資料標籤{EXECUTE, READ}可以藉由組合元資料標籤{EXECUTE}以及{READ}(例如,經由一集合聯集)而被建構。所述組合的元資料標籤{EXECUTE, READ}可以是和所述構件元資料標籤{EXECUTE}以及{READ}的個別的域集合的一交集相關的。例如,所述元資料標籤{EXECUTE}可以是和{Code}相關的,所述元資料標籤{READ}可以是和{Code, Data}相關的,因而所述集合的交集可以是{Code}。
在某些實施例中,所述策略編譯器及/或所述策略連結器可被程式化,以在做出一嘗試以結合並不共用至少一域的元資料標籤時觸發一錯誤。譬如,若所述元資料標籤{EXECUTE}是和{Code}相關的,並且所述元資料標籤{WRITE}是和{Data}相關的,則一嘗試結合{EXECUTE}與{WRITE}可能觸發一錯誤。
在某些實施例中,所述策略編譯器及/或所述策略連結器可被程式化,以關聯一組的一或多個域與一應用程式記憶體區域或是其它的儲存區域。譬如,所述策略編譯器及/或所述策略連結器可以使用來自一目標說明的資訊,其可能描述一給定的目標系統的一ISA及/或一系統單晶片(SoC)的一或多個特點,以指定每一個域給在所述目標說明中的一或多個相關的特點。
舉例而言,所述資料域可被指定給和一ELF檔的程式資料區段相關的一應用程式記憶體區域,而所述碼域可被指定給和一ELF檔的可執行的區段相關的一應用程式記憶體區域。作為另一例子的是,所述Mem域可被指定給所述應用程式記憶體,而一核心域可被指定給一ISA的一或多個非記憶體特點,例如是一暫存器檔、一或多個控制及/或狀態暫存器、等等。然而,應該體認到的是,本揭露內容的特點並不限於利用任何特定的域、或是完全無任何域。在某些實施例中,一或多個域可以根據一作業系統及/或一應用程式的一或多個特點而被設置。
在某些實施例中,一元資料標籤可以是和具有至少一與所述元資料標籤共同的域的一應用程式記憶體區域相關的。譬如,所述元資料標籤{EXECUTE, READ}可以具有所述域集合{Code},其可以是和具有一亦包含Code的域集合的一應用程式記憶體區域相關的。
返回圖6的例子,用於一應用程式記憶體區域的一編碼可以在動作610,例如藉由所述策略編譯器及/或所述策略連結器來加以產生。譬如,在動作605和所述應用程式記憶體區域相關的元資料標籤可被識別(例如,元資料標籤具有至少一域是與所述應用程式記憶體區域共同的)。一編碼可以針對於此種元資料標籤而被產生,其例如藉由列舉這些元資料標籤,並且在所述列舉中利用一元資料標籤的一索引的一個二進位表示作為所述元資料標籤的一編碼。額外或替代的是,和所述應用程式記憶體區域相關的一或多個域相關的元資料符號可被識別。每一個此種元資料符號可被指定到在一個二進位表示中的一個別的位元位置。在此種位元位置中的一個0或是一個1可以個別指出對應的元資料符號的不存在或存在(或是反之亦然)。
額外或替代的是,一和所述應用程式記憶體區域相關的歧義消除值可被產生(例如,如上相關圖4的例子所論述的,以被使用作為上位元、下位元、或是額外的位元)。
在某些實施例中,一全域的編碼可被使用於和多個應用程式記憶體區域相關的一元資料標籤。譬如,用於所述RWX策略的“READ”符號可以是和一碼記憶體區域以及一資料記憶體區域兩者相關的。因此,所述元資料標籤{READ}可以利用所述全域的編碼而被編碼。
在動作615,解碼資訊可以相關所述應用程式記憶體區域而被儲存。在某些實施例中,一標籤對映表項目(例如,在圖4中所示的舉例說明的標籤對映項目400)可被產生,其對應於所述應用程式記憶體區域。譬如,所述策略編譯器及/或所述策略連結器可以使用來自所述ELF檔的位址資訊及/或一或多個連結腳本、在動作610產生的歧義消除值、等等,以初始化所述標籤對映表項目。
本揭露內容的各種特點的舉例說明的配置是在以下加以提供。
A1.一種用於元資料處理之方法,所述方法包括以下動作:從主機處理器接收目標位址;利用所述目標位址來存取對映資訊以及解碼資訊,所述對映資訊以及所述解碼資訊是和所述目標位址相關的;利用所述對映資訊以將所述目標位址對映到元資料位址;利用所述元資料位址以擷取元資料;以及利用所述解碼資訊以解碼所擷取的元資料。
A2.如配置A1之方法,其中:所述解碼資訊包括對應於所述目標位址所屬的應用程式記憶體區域的值;以及利用所述解碼資訊以解碼所擷取的元資料包括利用對應於所述應用程式記憶體區域的所述值來解碼所擷取的元資料。
A3.如配置A2之方法,其中:利用對應於所述應用程式記憶體區域的所述值來解碼所擷取的元資料包括組合對應於所述應用程式記憶體區域的所述值與所擷取的元資料。
A4.如配置A3之方法,其中:組合對應於所述應用程式記憶體區域的所述值與所擷取的元資料包括在開頭將對應於所述應用程式記憶體區域的所述值附加至所擷取的元資料。
A5.如配置A1之方法,其中利用所述目標位址來存取對映資訊以及解碼資訊的所述動作包括:匹配所述目標位址至標籤對映表中的項目,所述標籤對映表項目儲存所述對映資訊以及所述解碼資訊。
A6.如配置A5之方法,其中:所述標籤對映表項目對應於應用程式記憶體區域;以及匹配所述目標位址至所述標籤對映表項目包括判斷所述目標位址落在所述應用程式記憶體區域之內。
A7.如配置A6之方法,其中:所述應用程式記憶體區域包括應用程式記憶體位址範圍;以及所述標籤對映表項目儲存所述應用程式記憶體位址範圍的開始位址以及結束位址。
A8.如配置A5之方法,其中:所述標籤對映表項目儲存指出將被擷取的元資料量的值;以及利用所述元資料位址以擷取元資料包括從所述元資料位址開始擷取所指出的元資料量。
A9.如配置A5之方法,其中:匹配所述目標位址至所述標籤對映表中的項目包括:判斷所述目標位址是否匹配在所述標籤對映表中的項目;以及響應於判斷所述目標位址並不匹配在所述標籤對映表中的項目,利用頁表遍歷器來判斷所述目標位址是否匹配分開儲存的溢位項目。
A10.如配置A1之方法,其中:所述對映資訊包括偏移;以及利用所述對映資訊以將所述目標位址對映到元資料記憶體位址包括加上所述偏移。
A11.如配置A1之方法,其進一步包括以下的動作:判斷所擷取的元資料是否屬於所選的元資料值組,其中利用所述解碼資訊以解碼所擷取的元資料的所述動作是響應於判斷所擷取的元資料並不屬於所選的元資料值組而被執行的。
A12.如配置A11之方法,其中:所選的元資料值組包括所選的元資料值的範圍。
A13.如配置A1之方法,其中:所述目標位址包括應用程式記憶體位址;以及所述元資料位址包括元資料記憶體位址。
A14.如配置A1之方法,其中:所述目標位址包括應用程式暫存器位址;以及所述元資料位址包括元資料暫存器位址。
A15.如配置A1之方法,其中:所述目標位址包括應用程式暫存器位址;以及所述元資料位址包括元資料記憶體位址。
A16.如配置A1之方法,其中:所述目標位址包括應用程式記憶體位址;以及所述元資料位址包括元資料暫存器位址。
A17.如配置A1之方法,其中:所述解碼資訊包括密碼的密鑰;以及利用所述解碼資訊以解碼所擷取的元資料包括利用所述密碼的密鑰以解密所擷取的元資料。
B1.一種用於元資料處理之方法,所述方法包括以下動作:從主機處理器接收目標位址;決定是否從元資料記憶體擷取和所述目標位址相關的元資料值;響應於決定從所述元資料記憶體擷取元資料值:將所述目標位址對映到元資料位址;以及利用所述元資料位址以從所述元資料記憶體擷取元資料值;以及響應於決定不從所述元資料記憶體擷取元資料值,決定預設的元資料值。
B2.如配置B1之方法,其中:判斷是否擷取和所述目標位址相關的元資料值包括:匹配所述目標位址至標籤對映表中的項目,所述標籤對映表項目儲存指出將從所述元資料記憶體擷取的位元數量的資訊;以及判斷將從所述元資料記憶體擷取的位元數量是否為零。
B3.如配置B2之方法,其中:所述預設的元資料值是從所述標籤對映表項目獲得的。
C1.一種用於元資料處理之方法,所述方法包括以下動作:將一或多個元資料標籤關聯到應用程式記憶體區域;針對於和所述應用程式記憶體區域相關的所述一或多個元資料標籤產生編碼;以及產生對應用於和所述應用程式記憶體區域相關的所述一或多個元資料標籤的所述編碼的解碼資訊。
C2.如配置C1之方法,其中:關聯一或多個元資料標籤以及針對於所述應用程式記憶體區域產生編碼的所述動作是在編譯時間及/或連結時間執行的。
C3.如配置C2之方法,其中:產生解碼資訊的所述動作是在編譯時間及/或連結時間執行的。
C4.如配置C1之方法,其中:關聯一或多個元資料標籤、針對於所述應用程式記憶體區域產生編碼、以及產生解碼資訊的所述動作是在執行時間執行的。
C5.如配置C1之方法,其進一步包括以下的動作:在載入時間儲存和所述應用程式記憶體區域相關的所述解碼資訊。
C6.如配置C1之方法,其中:針對於和所述應用程式記憶體區域相關的所述一或多個元資料標籤產生編碼的所述動作包括針對於所述應用程式記憶體區域產生歧義消除值;以及所述解碼資訊包括所述歧義消除值。
C7.如配置C1之方法,其中:針對於所述一或多個元資料標籤產生編碼的所述動作包括列舉所述一或多個元資料標籤。
C8.如配置C1之方法,其中:所述一或多個元資料標籤包括一或多個第一元資料標籤;所述編碼包括第一編碼;以及所述方法進一步包括以下的動作:針對於一或多個第二元資料標籤產生第二編碼,其中所述一或多個第二元資料標籤的每一個是和複數個應用程式記憶體區域相關的。
D1.一種用於元資料處理之方法,所述方法包括以下動作:從主機處理器接收目標位址;利用所述目標位址來存取和所述目標位址相關的對映資訊,其中:所述對映資訊是和應用程式記憶體位址範圍相關的;所述目標位址屬於所述應用程式記憶體位址範圍;以及所述對映資訊包括指出用於所述應用程式記憶體位址範圍的標記粒度的資訊;利用所述對映資訊以將所述目標位址對映到元資料位址;以及利用所述元資料位址以擷取元資料。
D2.如配置D1之方法,其中:指出用於所述應用程式記憶體位址範圍的標記粒度的所述資訊包括指出和所擷取的元資料相關的區塊的記憶體位址的資訊。
D3.如配置D1之方法,其中:指出用於所述應用程式記憶體位址範圍的標記粒度的所述資訊包括指出和所擷取的元資料相關的連續的字的數量的資訊。
E1.一種用於元資料處理之方法,所述方法包括以下動作:從主機處理器接收目標位址;利用所述目標位址來存取和所述目標位址相關的對映資訊;利用所述對映資訊以將所述目標位址對映到至少第一元資料位址以及第二元資料位址;利用所述第一及第二元資料位址以分別擷取第一及第二元資料;以及組合所述第一及第二元資料。
E2.如配置E1之方法,其中:所述第一元資料包括2M 位元的元資料;所述第二元資料包括2N 位元的元資料,其中N是不同於M;以及組合所述第一及第二元資料包括串級所述第一及第二元資料。
F1.一種包括電路及/或一或多個藉由可執行的指令而被程式化的處理器之系統,其中所述電路及/或所述一或多個被程式化的處理器被配置以執行配置A1-A17、B1-B3、C1-C8、D1-D3及E1-E2的任一項的方法。
F2. 一種至少一個的電腦可讀取媒體,其已經針對於如配置F1之電路而於其上儲存至少一網表。
F3. 一種至少一個的電腦可讀取媒體,其已經於其上儲存至少一硬體描述,當所述硬體描述被合成時,其產生配置F2的所述至少一網表。
F4.如配置F3之至少一個的電腦可讀取媒體,其中所述至少一硬體描述是具有加密的形式。
F5. 一種至少一個的電腦可讀取媒體,其已經於其上儲存配置F1的所述可執行的指令。
圖7是概要地展示本揭露內容的任一特點可在其上實施的一舉例說明的電腦1000。
在圖7所示的例子中,所述電腦1000包含一具有一或多個處理器的處理單元1001、以及一例如可包含揮發性及/或非揮發性記憶體的非暫態的電腦可讀取儲存媒體1002。所述記憶體1002可以儲存一或多個指令以程式化所述處理單元1001,以執行在此所述的函式的任一個。除了所述系統記憶體1002之外,所述電腦1000亦可包含其它類型的非暫態的電腦可讀取媒體,例如是儲存1005(例如,一或多個磁碟機)。所述儲存1005亦可以儲存一或多個應用程式及/或應用程式所用到的資源(例如,軟體函式庫),其可被載入所述記憶體1002中。
所述電腦1000可以具有一或多個輸入裝置及/或輸出裝置,例如是在圖7中描繪的裝置1006及1007。譬如,這些裝置可被使用來呈現一使用者介面。可被用來提供一使用者介面的輸出裝置的例子包含用於輸出的視覺呈現的印表機及顯示器螢幕、以及用於輸出的可聽見的呈現的揚聲器及其它的聲音產生裝置。可被使用於一使用者介面的輸入裝置的例子包含鍵盤以及指向裝置(例如,滑鼠、觸控板、以及數位平板電腦)。作為另一例子的是,所述輸入裝置1007可包含一用於捕捉音訊信號的麥克風,並且所述輸出裝置1006可包含一用於視覺上產生識別的文字的顯示器螢幕、及/或一用於可聽見地產生識別的文字的揚聲器。
在圖7中所示的例子中,所述電腦1000亦包含一或多個網路介面(例如,所述網路介面1010),以致能經由各種的網路(例如,所述網路1020)的通訊。網路的例子包含一本地區域網路(例如,一企業網路)以及一廣域網路(例如,網際網路)。此種網路可以基於任何適當的技術並且根據任何適當的協定來運作,並且可包含無線網路及/或有線網路(例如,光纖網路)。
至此已經敘述至少一實施例的數個特點,所體認到的是各種的改變、修改、以及改善都將會輕易地為熟習此項技術者所思及。此種改變、修改、以及改善欲在本揭露內容的精神及範疇之內。於是,先前的說明及圖式只是舉例而已。
上述本揭露內容的實施例可以用許多方式的任一種來加以實施。例如,所述實施例可以利用硬體、軟體、或是其之一組合來加以實施。當用軟體來加以實施時,所述軟體程式碼可以在任何適當的處理器或是一組處理器上加以執行,而不論其是否被設置在單一電腦中、或是被分散在多個電腦之間。
再者,在此概述的各種方法或程序都可被編碼為軟體,其可在一或多個處理器上執行,所述處理器執行各種作業系統或平台的任一種。此種軟體可以利用一些適當的程式語言及/或程式化工具(其包含腳本語言及/或腳本工具)的任一種來加以撰寫。在某些實例中,此種軟體可被編譯為可執行的機器語言程式碼或是中間的程式碼,其在一框架或是虛擬機器上加以執行。額外或替代的是,此種軟體可被直譯。
在此揭露的技術可以被體現為一非暫態的電腦可讀取媒體(或是多個電腦可讀取媒體)(例如,一電腦記憶體、一或多個軟碟片、壓縮碟片、光碟、磁帶、快閃記憶體、在現場可程式化的閘陣列或其它半導體裝置中的電路配置、或是其它非暫態的實體電腦儲存媒體),其被編碼一或多個程式,當所述程式在一或多個處理器上執行時,其執行實施以上論述的本揭露內容的各種實施例的方法。所述一或多個電腦可讀取媒體可以是可攜式的,使得一或多個被儲存於其上的程式可被載入到一或多個不同的電腦或其它處理器上,以實施如上所論述的本揭露內容的各種特點。
所述術語“程式”或“軟體”在此被使用來指稱任意類型的電腦程式碼或是電腦可執行的指令集,其可被採用來程式化一或多個處理器以實施如上所論述的本揭露內容的各種特點。再者,應該體認到的是,根據此實施例的一特點,一或多個電腦程式(當被執行時,其執行本揭露內容的方法)並不需要存在於單一電腦或處理器上,而是可以用一種模組化方式被分散在一些不同的電腦或處理器之間以實施本揭露內容的各種特點。
電腦可執行的指令可以具有許多形式(例如是程式模組),其藉由一或多個電腦或其它裝置來加以執行。程式模組可包含常式、程式、物件、構件、資料結構、等等,其執行特定的任務、或是實施特定的抽象資料類型。所述程式模組的功能可以根據在各種實施例中的需要來加以組合或分散。
再者,資料結構可以用任何適當的形式而被儲存在電腦可讀取媒體中。為了圖示的簡化起見,資料結構可能被展示以具有透過在所述資料結構中的位置相關的欄位。此種關係同樣地可以藉由指定針對於所述欄位的儲存至一電腦可讀取媒體中的位置來加以達成,所述位置傳達在所述欄位之間的關係。然而,任何適當的機制都可被用來在一資料結構的欄位中的資訊之間建立一關係,其包含透過指標、標籤、或是其它在資料元素之間建立關係的機制的使用。
本揭露內容的各種特點及方面都可以單獨、用兩個或多個的任意組合、或是用各種未明確地在先前敘述的實施例中論述的配置來加以利用,並且因此並不受限於在先前的說明中闡述或是在圖式中描繪的構件的細節及配置。例如,在一實施例中敘述的特點可以用任何方式與在其它實施例中敘述的特點加以組合。
再者,在此揭露的技術可以被體現為方法,所述方法的例子已經加以提出。被執行作為一種方法的部分的動作可以用任何適當的方式來加以排序。於是,其中動作是以一不同於所描繪的順序而被執行的實施例可被建構,其可以包含同時執行某些動作,即使所述動作在舉例說明的實施例中被展示為順序的動作。
例如是“第一”、“第二”、“第三”、等等的序數詞在所述申請專利範圍中用以修飾一申請專利範圍元件的使用本身並不意味著一申請專利範圍元件相對於另一申請專利範圍元件的任何優先權、先後次序、或是順序、或是一種方法的動作被執行所在的時間順序,而是僅僅被使用作為標籤以區別具有某一名稱的一申請專利範圍元件與另一具有相同名稱(但是為了所述序數詞的使用)的元件,來區別所述申請專利範圍元件而已。
再者,在此使用的措辭及術語是為了說明之目的,因而不應該被視為限制性的。“包含”、“包括”、“具有”、“內含”、“涉及”以及其之變化在此的使用意謂涵蓋被表列在其後的項目及其等同物與額外的項目。
100:硬體系統 110:主機處理器 112:寫入互鎖 115:系統匯流排 120:應用程式記憶體 125:元資料記憶體 130:唯讀記憶體(ROM) 135:週邊裝置 140:標籤處理硬體 142:標籤對映表 144:規則快取 146:標籤暫存器檔 150:策略處理器 200:軟體系統 205:編譯器 210:連結器 215:載入器 220:策略編譯器 225:策略連結器 230:除錯器 300:標籤對映表項目 400:標籤對映表項目 500A:程序 505:動作 510:動作 515:動作 520:動作 500B:程序 555:動作 560:動作 565:動作 570:動作 575:動作 580:動作 585:動作 600:程序 605:動作 610:動作 615:動作 1000:電腦 1001:處理單元 1002:非暫態的電腦可讀取儲存媒體 1005:儲存 1006:裝置 1007:裝置 1010:網路介面 1020:網路
[圖1]是展示根據某些實施例的一用於實行策略的舉例說明的硬體系統100。 [圖2]是展示根據某些實施例的一用於實行策略的舉例說明的軟體系統200。 [圖3]是展示根據某些實施例的一舉例說明的標籤對映表項目300。 [圖4]是展示根據某些實施例的另一舉例說明的標籤對映表項目400。 [圖5A]展示根據某些實施例的一用於解碼元資料值的舉例說明的程序500A。 [圖5B]展示根據某些實施例的另一用於解碼元資料值的舉例說明的程序500B。 [圖6]是展示根據某些實施例的一用於編碼元資料值的舉例說明的程序600。 [圖7]概要地展示本揭露內容的任一特點可在其上實施的一舉例說明的電腦1000。
500A:程序
505:動作
510:動作
515:動作
520:動作

Claims (38)

  1. 一種用於元資料處理之方法,所述方法包括以下動作: 從主機處理器接收目標位址; 利用所述目標位址來存取對映資訊以及解碼資訊,所述對映資訊以及所述解碼資訊是和所述目標位址相關的; 利用所述對映資訊以將所述目標位址對映到元資料位址; 利用所述元資料位址以擷取元資料;以及 利用所述解碼資訊以解碼所擷取的元資料。
  2. 如請求項1之方法,其中: 所述解碼資訊包括對應於所述目標位址所屬的應用程式記憶體區域的值;以及 利用所述解碼資訊以解碼所擷取的元資料包括利用對應於所述應用程式記憶體區域的所述值來解碼所擷取的元資料。
  3. 如請求項2之方法,其中: 利用對應於所述應用程式記憶體區域的所述值來解碼所擷取的元資料包括組合對應於所述應用程式記憶體區域的所述值與所擷取的元資料。
  4. 如請求項3之方法,其中: 組合對應於所述應用程式記憶體區域的所述值與所擷取的元資料包括在開頭將對應於所述應用程式記憶體區域的所述值附加至所擷取的元資料。
  5. 如請求項1之方法,其中利用所述目標位址來存取對映資訊以及解碼資訊的動作包括: 匹配所述目標位址至標籤對映表中的標籤對映表項目,所述標籤對映表項目儲存所述對映資訊以及所述解碼資訊。
  6. 如請求項5之方法,其中: 所述標籤對映表項目對應於應用程式記憶體區域;以及 匹配所述目標位址至所述標籤對映表中的標籤對映表項目包括判斷所述目標位址落在所述應用程式記憶體區域之內。
  7. 如請求項6之方法,其中: 所述應用程式記憶體區域包括應用程式記憶體位址範圍;以及 所述標籤對映表項目儲存所述應用程式記憶體位址範圍的開始位址以及結束位址。
  8. 如請求項5之方法,其中: 所述標籤對映表項目儲存指出將被擷取的元資料量的值;以及 利用所述元資料位址以擷取元資料包括從所述元資料位址開始擷取所指出的元資料量。
  9. 如請求項5之方法,其中: 匹配所述目標位址至所述標籤對映表中的標籤對映表項目包括: 判斷所述目標位址是否匹配在所述標籤對映表中的標籤對映表項目;以及 響應於判斷所述目標位址並不匹配在所述標籤對映表中的標籤對映表項目,利用頁表遍歷器來判斷所述目標位址是否匹配分開儲存的溢位項目。
  10. 如請求項1之方法,其中: 所述對映資訊包括偏移;以及 利用所述對映資訊以將所述目標位址對映到元資料記憶體位址包括加上所述偏移。
  11. 如請求項1之方法,其進一步包括以下的動作: 判斷所擷取的元資料是否屬於所選的元資料值組,其中利用所述解碼資訊以解碼所擷取的元資料的動作是響應於判斷所擷取的元資料並不屬於所選的元資料值組而被執行的。
  12. 如請求項11之方法,其中: 所選的元資料值組包括所選的元資料值的範圍。
  13. 如請求項1之方法,其中: 所述目標位址包括應用程式記憶體位址;以及 所述元資料位址包括元資料記憶體位址。
  14. 如請求項1之方法,其中: 所述目標位址包括應用程式暫存器位址;以及 所述元資料位址包括元資料暫存器位址。
  15. 如請求項1之方法,其中: 所述目標位址包括應用程式暫存器位址;以及 所述元資料位址包括元資料記憶體位址。
  16. 如請求項1之方法,其中: 所述目標位址包括應用程式記憶體位址;以及 所述元資料位址包括元資料暫存器位址。
  17. 如請求項1之方法,其中: 所述解碼資訊包括密碼的密鑰;以及 利用所述解碼資訊以解碼所擷取的元資料包括利用所述密碼的密鑰以解密所擷取的元資料。
  18. 一種用於元資料處理之方法,所述方法包括以下動作: 從主機處理器接收目標位址; 決定是否從元資料記憶體擷取和所述目標位址相關的元資料值; 響應於決定從所述元資料記憶體擷取元資料值: 將所述目標位址對映到元資料位址;以及 利用所述元資料位址以從所述元資料記憶體擷取元資料值;以及 響應於決定不從所述元資料記憶體擷取元資料值,決定預設的元資料值。
  19. 如請求項18之方法,其中: 決定是否擷取和所述目標位址相關的元資料值包括: 匹配所述目標位址至標籤對映表中的標籤對映表項目,所述標籤對映表項目儲存指出將從所述元資料記憶體擷取的位元數量的資訊;以及 判斷將從所述元資料記憶體擷取的位元數量是否為零。
  20. 如請求項19之方法,其中: 所述預設的元資料值是從所述標籤對映表項目獲得的。
  21. 一種用於元資料處理之方法,所述方法包括以下動作: 將一或多個元資料標籤關聯到應用程式記憶體區域; 針對於和所述應用程式記憶體區域相關的所述一或多個元資料標籤產生編碼;以及 產生對應用於和所述應用程式記憶體區域相關的所述一或多個元資料標籤的所述編碼的解碼資訊。
  22. 如請求項21之方法,其中: 關聯一或多個元資料標籤以及針對於所述應用程式記憶體區域產生編碼的動作是在編譯時間及/或連結時間執行的。
  23. 如請求項22之方法,其中: 產生解碼資訊的動作是在編譯時間及/或連結時間執行的。
  24. 如請求項21之方法,其中: 關聯一或多個元資料標籤、針對於所述應用程式記憶體區域產生編碼、以及產生解碼資訊的動作是在執行時間執行的。
  25. 如請求項21之方法,其進一步包括以下的動作: 在載入時間儲存和所述應用程式記憶體區域相關的所述解碼資訊。
  26. 如請求項21之方法,其中: 針對於和所述應用程式記憶體區域相關的所述一或多個元資料標籤產生編碼的動作包括針對於所述應用程式記憶體區域產生歧義消除值;以及 所述解碼資訊包括所述歧義消除值。
  27. 如請求項21之方法,其中: 針對於所述一或多個元資料標籤產生編碼的動作包括列舉所述一或多個元資料標籤。
  28. 如請求項21之方法,其中: 所述一或多個元資料標籤包括一或多個第一元資料標籤; 所述編碼包括第一編碼;以及 所述方法進一步包括以下的動作: 針對於一或多個第二元資料標籤產生第二編碼,其中所述一或多個第二元資料標籤的每一個是和複數個應用程式記憶體區域相關的。
  29. 一種用於元資料處理之方法,所述方法包括以下動作: 從主機處理器接收目標位址; 利用所述目標位址來存取和所述目標位址相關的對映資訊,其中: 所述對映資訊是和應用程式記憶體位址範圍相關的; 所述目標位址屬於所述應用程式記憶體位址範圍;以及 所述對映資訊包括指出用於所述應用程式記憶體位址範圍的標記粒度的資訊; 利用所述對映資訊以將所述目標位址對映到元資料位址;以及 利用所述元資料位址以擷取元資料。
  30. 如請求項29之方法,其中: 指出用於所述應用程式記憶體位址範圍的標記粒度的資訊包括指出和所擷取的元資料相關的區塊的記憶體位址的資訊。
  31. 如請求項29之方法,其中: 指出用於所述應用程式記憶體位址範圍的標記粒度的資訊包括指出和所擷取的元資料相關的連續的字的數量的資訊。
  32. 一種用於元資料處理之方法,所述方法包括以下動作: 從主機處理器接收目標位址; 利用所述目標位址來存取和所述目標位址相關的對映資訊; 利用所述對映資訊以將所述目標位址對映到至少第一元資料位址以及第二元資料位址; 利用所述第一及第二元資料位址以分別擷取第一及第二元資料;以及 組合所述第一及第二元資料。
  33. 如請求項32之方法,其中: 所述第一元資料包括2M 位元的元資料; 所述第二元資料包括2N 位元的元資料,其中N是不同於M;以及 組合所述第一及第二元資料包括串級所述第一及第二元資料。
  34. 一種包括電路及/或一或多個藉由可執行的指令而被程式化的處理器之系統,其中所述電路及/或所述一或多個被程式化的處理器被配置以執行請求項1-33的任一項的方法。
  35. 一種至少一個的電腦可讀取媒體,其已經針對於如請求項34之電路而於其上儲存至少一網表。
  36. 一種至少一個的電腦可讀取媒體,其已經於其上儲存至少一硬體描述,當所述硬體描述被合成時,其產生請求項35的所述至少一網表。
  37. 如請求項36之至少一個的電腦可讀取媒體,其中所述至少一硬體描述具有加密的形式。
  38. 一種至少一個的電腦可讀取媒體,其已經於其上儲存請求項34的所述可執行的指令。 [1]一用於所述RWX策略的“WRITE”符號可以只關聯到在一用於儲存資料的應用程式記憶體區域中的位址,並且一用於所述RWX策略的“READ”符號可以關聯到在兩個記憶體區域中的位址。
TW108141021A 2018-11-12 2019-11-12 用於元資料編碼的系統和方法 TW202026931A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862759936P 2018-11-12 2018-11-12
US62/759,936 2018-11-12

Publications (1)

Publication Number Publication Date
TW202026931A true TW202026931A (zh) 2020-07-16

Family

ID=68808531

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108141021A TW202026931A (zh) 2018-11-12 2019-11-12 用於元資料編碼的系統和方法

Country Status (4)

Country Link
US (1) US20220012329A1 (zh)
EP (1) EP3881190A1 (zh)
TW (1) TW202026931A (zh)
WO (1) WO2020102064A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210026934A1 (en) 2018-02-02 2021-01-28 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
US11797398B2 (en) 2018-04-30 2023-10-24 Dover Microsystems, Inc. Systems and methods for checking safety properties
EP3877874A1 (en) 2018-11-06 2021-09-15 Dover Microsystems, Inc. Systems and methods for stalling host processor
WO2020132012A1 (en) 2018-12-18 2020-06-25 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US12019736B2 (en) * 2020-02-27 2024-06-25 The Trustees Of The University Of Pennsylvania Methods, systems, and computer readable media for main memory tag compression
US20230009642A1 (en) * 2021-07-07 2023-01-12 Micron Technology, Inc. Programmable metadata
CN116578247B (zh) * 2023-07-10 2023-10-13 西安羚控电子科技有限公司 一种基于元数据的数据存取方法及系统
CN117746999B (zh) * 2024-02-20 2024-05-03 之江实验室 一种数据处理的方法、装置、存储介质及电子设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090031142A1 (en) * 2007-07-25 2009-01-29 Shai Halevi System, Method and Computer Program Product for Processing a Memory Page
US8806101B2 (en) * 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US9323686B2 (en) * 2012-12-28 2016-04-26 Intel Corporation Paging in secure enclaves
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10324857B2 (en) * 2017-01-26 2019-06-18 Intel Corporation Linear memory address transformation and management
US10282294B2 (en) * 2017-02-15 2019-05-07 Samsung Electronics Co., Ltd. Mitigating DRAM cache metadata access overhead with SRAM metadata cache and bloom filter
WO2018169176A1 (ko) * 2017-03-17 2018-09-20 엘지전자 주식회사 퀄리티 기반 360도 비디오를 송수신하는 방법 및 그 장치
GB2568059B (en) * 2017-11-02 2020-04-08 Advanced Risc Mach Ltd Method for locating metadata
US10635600B2 (en) * 2018-03-08 2020-04-28 Vmware, Inc. Decoupling memory metadata granularity from page size
US11853554B2 (en) * 2022-04-05 2023-12-26 Western Digital Technologies, Inc. Aligned and unaligned data deallocation

Also Published As

Publication number Publication date
US20220012329A1 (en) 2022-01-13
EP3881190A1 (en) 2021-09-22
WO2020102064A1 (en) 2020-05-22

Similar Documents

Publication Publication Date Title
TW202026931A (zh) 用於元資料編碼的系統和方法
US11748457B2 (en) Systems and methods for policy linking and/or loading for secure initialization
EP3746922B1 (en) Systems and methods for transforming instructions for metadata processing
US11841956B2 (en) Systems and methods for data lifecycle protection
US20220374415A1 (en) Systems and methods for updating metadata
US20220092173A1 (en) Systems and methods for metadata classification
US11875180B2 (en) Systems and methods for stalling host processor
US20220398312A1 (en) Systems and methods for improving efficiency of metadata processing
US20220129343A1 (en) Systems and methods for reducing exception latency
US20220114104A1 (en) Typed store buffers for hardening store forwarding
WO2023034586A1 (en) Systems and methods for on-demand loading of metadata
WO2021178493A1 (en) Systems and methods for caching metadata
JP2021157766A (ja) シャドウスタックを効率的に管理および処理するための装置および方法
WO2023212149A1 (en) Systems and methods for enforcing encoded policies