TW201935305A - 用於後快取互鎖之系統和方法 - Google Patents

用於後快取互鎖之系統和方法 Download PDF

Info

Publication number
TW201935305A
TW201935305A TW108104321A TW108104321A TW201935305A TW 201935305 A TW201935305 A TW 201935305A TW 108104321 A TW108104321 A TW 108104321A TW 108104321 A TW108104321 A TW 108104321A TW 201935305 A TW201935305 A TW 201935305A
Authority
TW
Taiwan
Prior art keywords
write
data
target address
processor
transaction
Prior art date
Application number
TW108104321A
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 TW201935305A publication Critical patent/TW201935305A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

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)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明提供用於經組態以執行第一處理及與該第一處理解耦之第二處理之一寫入互鎖的系統及方法。在一些態樣中,該第一處理包含自一處理器接收包括一目標位址之一儲存指令;將對應於該儲存指令之一第一條目儲存於一資料結構中;針對至少一個策略起始對該儲存指令之一檢查;及回應於該檢查之成功完成而自該資料結構移除該第一條目。該第二處理包含自該處理器接收包括一目標位址之一寫入異動;判定該資料結構中之任一條目是否與該寫入異動之該目標位址有關;及回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關而致使將該資料寫入至該寫入異動之該目標位址。

Description

用於後快取互鎖之系統和方法
本申請案與用於後快取互鎖之系統和方法有關。

相關申請案
本申請案依據35 U.S.C. § 119(e)主張2018年2月2日申請標題為「用於後快取互鎖之系統及方法(SYSTEMS AND METHODS FOR POST CACHE INTERLOCKING)」之具有代理人案號D0821.70003US00之美國臨時專利申請案第62/625,770號及2018年2月26日申請標題為「用於後快取互鎖之系統及方法(SYSTEMS AND METHODS FOR POST CACHE INTERLOCKING)」之具有代理人案號D0821.70003US01之美國臨時專利申請案第62/635,475號之權益,該等美國臨時專利申請案各自以全文引用之方式併入本文中。
本申請案與以下申請案在同一天申請:
• 國際專利申請案第______號,標題為「用於安全初始化之系統及方法(SYSTEMS AND METHODS FOR SECURE INITIALIZATION)」,具有代理人案號D0821.70000WO00,依據35 U.S.C. § 119(e)主張2018年2月2日申請標題為「用於安全初始化之系統及方法(SYSTEMS AND METHODS FOR SECURE INITIALIZATION)」之具有代理人案號D0821.70000US00之美國臨時專利申請案第62/625,822號及2018年2月26日申請標題為「用於安全初始化之系統及方法(SYSTEMS AND METHODS FOR SECURE INITIALIZATION)」之具有代理人案號D0821.70000US01之美國臨時專利申請案第62/635,289號之權益;及
• 國際專利申請案第______號,標題為「用於快取後互鎖之系統及方法(SYSTEMS AND METHODS FOR POST CACHE INTERLOCKING)」,具有代理人案號D0821.70003WO00,依據35 U.S.C. § 119(e)主張2018年2月2日申請標題為「用於快取後互鎖之系統及方法(SYSTEMS AND METHODS FOR POST CACHE INTERLOCKING)」之具有代理人案號D0821.70003US00之美國臨時專利申請案第62/625,770號及2018年2月26日申請標題為「用於快取後互鎖之系統及方法(SYSTEMS AND METHODS FOR POST CACHE INTERLOCKING)」之具有代理人案號D0821.70003US01之臨時專利申請案第62/635,475號之權益。
上文提及之申請案中之每一者以全文引用之方式併入本文中。
電腦安全性在社會各階層,自個人至企業至政府機構均已變為愈來愈迫切的問題。例如,在2015年,安全性研究人員識別出零日漏洞,其將允許攻擊者經由網際網路侵入Jeep Cherokee之機載電腦系統且控制車輛之儀錶盤功能、轉向、制動,及傳動。在2017年,WannaCry勒索軟體攻擊估計影響全球超過200,000台電腦,從而至少引起數億美元之經濟損失。值得注意地,該攻擊嚴重破壞英國的若干國民健康服務醫院的操作。同一年,美國消費者信用報告機構艾可飛公司(Equifax)的資料外泄曝光人員資料,諸如全名、身分證號碼、出生日期、位址、駕駛執照號碼、信用卡號等。據報導該攻擊影響超過1億4千萬消費者。
安全性專家一直與攻擊者進行追趕遊戲。一旦報告漏洞,安全性專家就爭相修補該漏洞。未能以及時方式修補漏洞(例如,歸因於對資源之較差管理及/或資源之缺乏)之個人及組織變為攻擊者之容易目標。
一些安全性軟體監控電腦上及/或網路內之活動,且尋找可指示攻擊之形態。此方法無法防止惡意程式碼首先被執行。常常,在出現任何可疑形態時已經發生損壞。
在一些態樣中,本文中所描述之系統及方法提供一種用於藉由寫入互鎖執行之方法,包含執行第一處理及與該第一處理解耦之第二處理之動作。該第一處理包含自處理器接收包括目標位址之儲存指令。該第一處理進一步包含將對應於該儲存指令之第一條目儲存於資料結構中,其中該第一條目包括關於該儲存指令之該目標位址之資訊。該第一處理進一步包含針對至少一策略起始對該儲存指令之檢查。該第一處理進一步包含回應於該檢查之成功完成而自該資料結構移除該第一條目。該第二處理包含自該處理器接收包括目標位址之寫入異動,將資料寫入至該目標位址。該第二處理進一步包含回應於接收到該寫入異動而判定該資料結構中之任一條目是否與該寫入異動之該目標位址有關。該第二處理進一步包含回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關而致使將該資料寫入至該寫入異動之該目標位址。
在一些具體實例中,該第二處理進一步包含致使該寫入異動暫停。在一些具體實例中,使該寫入異動暫停一段時間。該段時間係基於在該處理器執行該儲存指令與該第一處理中藉由該寫入互鎖將該儲存指令儲存於該資料結構中之間的估計時間量而選擇。在一些具體實例中,使該寫入異動暫停直到在該第一處理中已經自該處理器接收到選定數目個指令。
在一些具體實例中,該方法進一步包含將該資料結構在策略違反時之快照儲存至可藉著待由該處理器執行之違反處理程式碼進行存取之位址範圍之動作。該方法進一步包含對該處理器觸發中斷以起始該違反處理程式碼之執行之動作。在一些具體實例中,該中斷致使該處理器使來自資料快取記憶體之包括至少一個位址之至少一個資料快取行失效,該至少一個位址在該策略違反時處於該資料結構中。
在一些具體實例中,該方法進一步包含將該資料結構在策略違反時之快照儲存至可藉著待由該處理器執行之違反處理程式碼進行存取之位址範圍之動作。該方法進一步包含對該處理器觸發中斷以起始該違反處理程式碼之執行,以致使自資料快取記憶體收回包括在該策略違反時處於該資料結構中之至少一個位址之至少一個資料快取行之動作。該方法進一步包含進入違反處置模式之動作,其中向該處理器確認該處理器嘗試至主記憶體之未來寫入,但該等未來寫入經捨棄且不發送至該主記憶體。該方法進一步包含回應於該處理器已完成違反處理之指示而退出該違反處置模式之動作。
在一些具體實例中,該指示包含自該處理器接收到之指示該處理器已完成違反處理之信號。在一些具體實例中,該指示包含已收回包括在該策略違反時處於該資料結構中之至少一個位址之所有資料快取行的判定。
在一些具體實例中,來自該處理器之該寫入異動包含第一寫入異動,且藉由該寫入互鎖在第一介面上進行接收。回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關,經由第二介面上之第二寫入異動將該資料寫入至該寫入異動之該目標位址。
在一些具體實例中,來自該處理器之該寫入異動包含第一寫入異動,且藉由該寫入互鎖在第一介面上進行接收。該第二處理進一步包含將該第一寫入異動儲存於寫入佇列中之動作。該第二處理進一步包含向該處理器確認該第一寫入異動之動作。回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關,經由第二介面上之第二寫入異動將該資料寫入至該寫入異動之該目標位址。
在一些具體實例中,該第二處理進一步包含判定該寫入異動之該目標位址是否經快取之動作。回應於判定該寫入異動之該目標位址未經快取而將該第一寫入異動儲存於該寫入佇列中。
在一些具體實例中,藉由該第二寫入異動所寫入之該資料係自儲存該第一寫入異動之該寫入佇列中之條目加以擷取。在一些具體實例中,該第二處理進一步包含在擷取該第二寫入異動之該資料之後,將儲存該第一寫入異動之該條目自該寫入佇列移除之動作。
在一些具體實例中,該寫入互鎖向該處理器確認該寫入異動,但捨棄該寫入異動之該資料。
在一些具體實例中,來自該處理器之該寫入異動包含第一寫入異動,且藉由該寫入互鎖在第一介面上進行接收。該第二處理進一步包含判定該寫入異動之該目標位址是否經快取之動作。該第二處理進一步包含回應於判定該寫入異動之該目標位址經快取而致使該第一寫入異動暫停直到判定該資料結構中之條目並不與該寫入異動之該目標位址有關之動作。回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關,經由第二介面上之第二寫入異動將該資料寫入至該寫入異動之該目標位址。
在一些具體實例中,判定該寫入異動之該目標位址是否經快取包含判定該寫入異動之該目標位址是否包括於未經快取位址之位址範圍中。在一些具體實例中,判定該寫入異動之該目標位址是否經快取包含判定來自資料快取記憶體之信號是否將該寫入異動之該目標位址指示為經快取。
在一些具體實例中,執行第一破壞性讀取指令,使嘗試存取該第一破壞性讀取指令之目標位址之第二破壞性讀取指令暫停,且回應於對該第一破壞性讀取指令之檢查之成功完成而允許繼續進行該第二破壞性讀取指令。
在一些具體實例中,執行破壞性讀取指令且將讀取自該破壞性讀取指令之目標位址之資料俘獲於緩衝區中,且回應於對該破壞性讀取指令之檢查之成功完成而捨棄經俘獲於該緩衝區中之該資料。在一些具體實例中,回應於對該破壞性讀取指令之該檢查之不成功完成,將經俘獲於該緩衝區中之該資料恢復至該目標位址。在一些具體實例中,回應於對該破壞性讀取指令之該檢查之不成功完成,向嘗試存取該破壞性讀取指令之該目標位址之後續指令提供經俘獲於該緩衝區中之該資料。
在一些態樣中,本文中所描述之系統及方法提供一種用於藉由寫入互鎖執行之方法,包含自處理器接收包括目標位址之儲存指令之動作,將資料儲存至該目標位址,其中該目標位址未經快取。該方法進一步包含將該資料儲存於與該寫入互鎖相關聯之寫入佇列中之動作。該方法進一步包含針對至少一個策略起始對該儲存指令之檢查之動作。該方法進一步包含回應於該檢查之成功完成而致使寫入異動將該資料寫入至該目標位址之動作。
在一些具體實例中,該方法進一步包含判定該目標位址是否經快取之動作,其中回應於判定該目標位址未經快取而將該資料儲存於該寫入佇列中。
在一些態樣中,本文中所描述之系統及方法提供一種用於藉由寫入互鎖執行之方法,包含執行第一處理及與該第一處理解耦之第二處理之動作。該第一處理包含自處理器接收包括目標位址之儲存指令及待儲存至該儲存指令之該目標位址之資料。該第一處理進一步包含將對應於該儲存指令之第一條目儲存於資料結構中,其中該第一條目包括該儲存指令之該目標位址及該資料。該第一處理進一步包含針對至少一個策略以起始對該儲存指令之檢查。該第一處理進一步包含回應於該檢查之成功完成而自該資料結構移除該第一條目且將該資料儲存於與該寫入互鎖相關聯之快取記憶體中。該第二處理包含自該處理器接收包括目標位址之讀取異動,自該目標位址讀取資料。該第二處理進一步包含判定該資料結構中之任一條目是否與自該處理器接收到之該讀取異動之該目標位址有關。該第二處理進一步包含回應於判定該資料結構中之條目並不與該讀取異動之該目標位址有關而致使該讀取異動存取與該寫入互鎖相關聯之該快取記憶體中之資料。
在一些具體實例中,使該讀取異動暫停直到該資料結構中之條目並不與該讀取異動之該目標位址有關。
在一些具體實例中,回應於判定該資料結構中之至少一個條目與該讀取異動之該目標位址有關,致使該讀取異動自該資料結構中與該讀取異動之該目標位址相關的最新條目來存取資料。
在一些具體實例中,獨立於用於該資料快取行之已變更位元之狀態,該處理器之資料快取記憶體收回資料快取行而無需執行寫入異動。
在一些具體實例中,該寫入互鎖確認來自該處理器之該資料快取記憶體之寫入異動,但捨棄關於該寫入異動之資料。
應瞭解,前述概念及下文更詳細地論述之額外概念的所有組合(限制條件為此等概念並非彼此不相容)預期作為本文中所記載之發明主題的部分。詳言之,在本發明結尾處出現之所主張發明標的之全部組合預期作為本文所記載之本發明標的之一部分。
攻擊者所利用之許多漏洞追溯到資料及可執行指令混植(intermingle)於同一記憶體中之電腦架構設計。此混植允許攻擊者藉由將惡意程式碼偽裝為資料而將惡意程式碼注入至遠端電腦中。例如,程式可將緩衝區分配於電腦之記憶體中以儲存經由網路接收之資料。若該程式接收比該緩衝區可保存之資料更多的資料,但在將所接收的資料寫入至緩衝區中之前並未檢查該資料之大小,則所接收的資料之部分將超出緩衝區邊界寫入至鄰近記憶體中。攻擊者可利用此行為將惡意程式碼注入至鄰近記憶體中。若鄰近記憶體分配用於可執行程式碼,則惡意程式碼最終可由電腦執行。
已經提出使得電腦硬體更具安全性意識之技術。例如,記憶體位置可與用於執行安全性策略之詮釋資料相關聯,且可檢查指令以符合安全性策略。例如,在給定待執行之指令之情況下,可檢查與指令相關聯之詮釋資料及/或與指令之一或多個運算元相關聯之詮釋資料以判定是否應接受指令。另外或替代地,適合的詮釋資料可與指令之輸出相關聯。
圖1展示根據一些具體實例之用於執行策略之例示硬體系統100。在此實例中,硬體系統100包括主機處理器110,其可具有任何合適的指令集架構(instruction set architecture,ISA),諸如精簡指令集計算(reduced instruction set computing,RISC)架構或複雜指令集計算(complex instruction set computing,CISC)架構。主機處理器110可經由寫入互鎖112執行記憶體存取。寫入互鎖112可連接至系統匯流排115,其經組態以在諸如寫入互鎖112、應用程式記憶體120、詮釋資料記憶體125、唯讀記憶體(ROM)130、一或多個周邊裝置135等各種組件之間傳送資料。
在一些具體實例中,由主機處理器110操控(例如,修改、消耗及/或產生)之資料可儲存於應用程式記憶體120中。此類資料在本文中被稱作「應用程式資料」,區別於用於執行策略之詮釋資料。後者可儲存於詮釋資料記憶體125中。應瞭解,應用程式資料可包括由作業系統(OS)操控之資料、OS之指令、由一或多個使用者應用程式操控之資料,及/或該一或多個使用者應用程式之指令。
在一些具體實例中,應用程式記憶體120及詮釋資料記憶體125可實體上分離,且主機處理器110可能無法存取詮釋資料記憶體125。以此方式,即使攻擊者成功將惡意程式碼注入至應用程式記憶體120中且致使主機處理器110執行惡意程式碼,詮釋資料記憶體125亦可能不受影響。然而,應瞭解,本發明之態樣不限於將應用程式資料及詮釋資料儲存於實體上分離之記憶體上。另外或替代地,詮釋資料可與應用程式資料儲存於同一記憶體中,且可使用實施有適合的保護方案的記憶體管理組件以防止執行於主機處理器110上之指令修改詮釋資料。另外或替代地,詮釋資料可與應用程式資料混植於同一記憶體中,且一或多個策略可用於保護詮釋資料。
在一些具體實例中,可提供標記處理硬體140以確保藉由主機處理器110執行之指令符合一或多個策略。標記處理硬體140可包括任何合適的電路組件或電路組件之組合。例如,標記處理硬體140可包括將應用程式記憶體120中之位址映射至詮釋資料記憶體125中之位址之標記映射表142。例如,標記映射表142可將應用程式記憶體120中之位址X映射至詮釋資料記憶體125中之位址Y。此位址Y在本文中被稱作「詮釋資料標記」或僅被稱作「標記」。儲存於位址Y處之值在本文中亦被稱作「詮釋資料標記」或僅被稱作「標記」。
在一些具體實例中,儲存於位址Y處之值又可為位址Z。此類間接定址可重複任一合適次數,且最終可在詮釋資料記憶體125中產生用於儲存詮釋資料之資料結構。此類詮釋資料以及任何中間位址(例如,位址Z)在本文中亦被稱作「詮釋資料標記」或僅被稱作「標記」。
應瞭解,本發明之態樣不限於將位址儲存於詮釋資料記憶體中之標記映射表。在一些具體實例中,標記映射表條目本身可儲存詮釋資料,使得標記處理硬體140能夠存取詮釋資料而無需執行記憶體操作。在一些具體實例中,標記映射表條目可儲存所選位元型樣,其中位元型樣之第一部分可對詮釋資料進行編碼,且位元型樣之第二部分可對詮釋資料記憶體中可儲存有其他詮釋資料之位址進行編碼。此可提供在速度與表達性之間的所需平衡。例如,標記處理硬體140能夠僅使用儲存於標記映射表條目本身中之詮釋資料來迅速檢查某些策略。對於較複雜規則情況下之其他策略,標記處理硬體140可存取儲存於詮釋資料記憶體125中之其他詮釋資料。
再次參看圖1,藉由將應用程式記憶體位址映射至詮釋資料記憶體位址,標記映射表142可在應用程式資料與描述應用程式資料之詮釋資料之間創建相關性。在一個實例中,儲存於詮釋資料記憶體位址Y處且因此與儲存於應用程式記憶體位址X處之應用程式資料相關聯之詮釋資料可指示應用程式資料可為可讀取、可寫入及/或可執行的。在另一實例中,儲存於詮釋資料記憶體位址Y處且因此與儲存於應用程式記憶體位址X處之應用程式資料相關聯之詮釋資料可指示應用程式資料之類型(例如,整數、指標、16位元字組、32位元字組等)。取決於待執行策略,相關於該策略之任何合適詮釋資料可與一段應用程式資料相關聯。
在一些具體實例中,詮釋資料記憶體位址Z可儲存於詮釋資料記憶體位址Y處。與儲存於應用程式記憶體位址X處之應用程式資料相關聯之詮釋資料可儲存於詮釋資料記憶體位址Z處,而不是詮釋資料記憶體位址Y處(或外加詮釋資料記憶體之位址Y處)。例如,詮釋資料符號「RED」之二進位表示可儲存於詮釋資料記憶體位址Z處。藉由將詮釋資料記憶體位址Z儲存於詮釋資料記憶體位址Y中,儲存於應用程式記憶體位址X處之應用程式資料可標記為「RED」。
以此方式,詮釋資料符號「RED」之二進位表示可僅儲存於詮釋資料記憶體125中一次。例如,若儲存於另一應用程式記憶體位址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所使用之暫存器,諸如用於儲存指令之運算元或結果之暫存器。
在一些具體實例中,除了寫入指令或替代寫入指令,還可對破壞性讀取指令進行佇列。例如,嘗試存取破壞性讀取指令之目標位址之後續指令可佇列於非快取記憶體區域中。若判定應允許破壞性讀取指令且當判定應允許破壞性讀取指令時,則佇列指令可經載入以供執行。
在一些具體實例中,可執行第一破壞性讀取指令。標記處理硬體140可判定是否應允許第一破壞性讀取指令。若第二破壞性讀取指令嘗試存取第一破壞性讀取指令之目標位址,則可使第二破壞性讀取指令暫停直到判定應允許第一破壞性讀取指令。若判定應允許第一破壞性讀取指令且當判定應允許第一破壞性讀取指令時,則第二破壞性讀取指令未暫停且可允許繼續進行。
在一些具體實例中,可允許繼續進行破壞性讀取指令,且自目標位址讀取之資料可俘獲於緩衝區中。若判定應允許破壞性讀取指令且當判定應允許破壞性讀取指令時,則緩衝區中俘獲之該資料可捨棄。若判定不應允許破壞性讀取指令且當判定不應允許破壞性讀取指令時,則緩衝區中俘獲之該資料可恢復至該目標位址。另外或替代地,可藉由經緩衝資料為後續讀取服務。
應瞭解,本發明之態樣不限於對已經藉由主機處理器所執行之指令(諸如已經被主機處理器之執行管線所引退之指令)來執行詮釋資料處理。在一些具體實例中,可在主機處理器之執行管線之前、期間及/或之後對指令執行詮釋資料處理。
在一些具體實例中,在給定接收自主機處理器110之位址(例如,儲存有指令之位址或指令所提及之位址)之情況下,標記處理硬體140可使用標記映射表142來識別對應標記。另外或替代地,對於接收自主機處理器110之暫存器識別符,標記處理硬體140可自標記處理硬體140內之標記暫存器檔案146存取標記。
在一些具體實例中,若應用程式記憶體位址並不具有標記映射表142中之對應標記,則標記處理硬體140可將查詢發送至策略處理器150。該查詢可包括有疑慮之應用程式記憶體位址,且策略處理器150可回傳用於該應用程式記憶體位址之標記。另外或替代地,策略處理器150可針對包括該應用程式記憶體位址之位址範圍創建新標記映射條目。以此方式,可在與有疑慮之應用程式記憶體位址相關聯之標記映射表142中提供適合標記以供未來參考。
在一些具體實例中,標記處理硬體140可將查詢發送至策略處理器150以檢查是否應允許藉由主機處理器110所執行之指令。該查詢可包括一或多個輸入,諸如指令之指令類型(例如,作業碼)、用於程式計數器之標記、用於提取指令之應用程式記憶體位址之標記(例如,程式計數器所針對之記憶體中之字組)、用於儲存有指令之運算元之暫存器之標記,及/或用於指令所提及之應用程式記憶體位址之標記。在一個實例中,該指令可為載入指令,且指令之運算元可為應用程式記憶體位址,應用程式資料將自該應用程式記憶體位址載入。該查詢尤其可包括用於儲存有應用程式記憶體位址之暫存器之標記以及用於應用程式記憶體位址本身之標記。在另一實例中,該指令可為算術指令,且可存在兩個運算元。該查詢尤其可包括用於儲存有第一運算元之第一暫存器之第一標記及用於儲存有第二運算元之第二暫存器之第二標記。
亦應瞭解,本發明之態樣不限於每次對單一指令執行詮釋資料處理。在一些具體實例中,主機處理器之ISA中之多個指令可例如經由至策略處理器150之單一查詢作為指令束而共同被檢查。此查詢可包括更多輸入以允許策略處理器150檢查指令束中之所有指令。類似地,可經由至策略處理器150之單一查詢來檢查語義上可對應於多個操作之CISC指令,其中該查詢可包括足夠的輸入以允許策略處理器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所描述)。可使用來自策略處理器150之查詢回應而在規則快取記憶體144中創建此映射。然而,如在一些具體實例中,一或多個映射可提前安置於規則快取記憶體144中,但此提前不是必要的。
在一些具體實例中,規則快取記憶體144可用於提供效能增強。例如,在藉由一或多個輸入標記來查詢策略處理器150之前,標記處理硬體140可首先藉由該一或多個輸入標記來查詢規則快取記憶體144。在快取命中狀況下,標記處理硬體140可藉由來自規則快取記憶體144之決策及/或一或多個輸出標記繼續進行查詢,而無需查詢策略處理器150。此可提供顯著加速。在快取未命中狀況下,標記處理硬體140可查詢策略處理器150且將來自策略處理器150之回應安置於規則快取記憶體144中以供未來可能使用。
在一些具體實例中,若標記處理硬體140判定應允許有疑慮之指令(例如,基於規則快取記憶體144中之命中或規則快取記憶體144中之未命中,隨後以來自策略處理器150指示未發現策略違反之回應),則標記處理硬體140可向寫入互鎖112指示執行指令之結果可寫回至記憶體。另外或替代地,標記處理硬體140可藉由一或多個輸出標記更新詮釋資料記憶體125、標記映射表142,及/或標記暫存器檔案146(例如,如接收自規則快取記憶體144或策略處理器150)。作為一個實例,對於儲存指令,詮釋資料記憶體125可藉由標記映射表142以經由位址轉譯而進行更新。例如,儲存指令所提及之應用程式記憶體位址可用於自標記映射表142查找詮釋資料記憶體位址,且接收自規則快取記憶體144或策略處理器150之詮釋資料可以該詮釋資料記憶體位址而儲存至詮釋資料記憶體125。作為另一實例,當待更新詮釋資料儲存於標記映射表142中之條目中(相較於儲存於詮釋資料記憶體125中)時,可更新標記映射表142中之該條目。作為另一實例,對於算術指令,對應於由主機處理器110所用於儲存執行該算術指令之結果之暫存器之標記暫存器檔案146中之條目可藉由適合的標記進行更新。
在一些具體實例中,若標記處理硬體140判定有疑慮之指令表示策略違反(例如,基於規則快取記憶體144中之未命中,隨後以來自策略處理器150指示已經發現策略違反之回應),則標記處理硬體140可向寫入互鎖112指示執行該指令之結果應被捨棄而非寫回至記憶體。另外或替代地,標記處理硬體140可將中斷發送至主機處理器110。回應於接收到該中斷,主機處理器110可切換至任何合適的違反處理程式碼。例如,主機處理器110可停止、重設、記錄該違反且繼續進行、對應用程式碼及/或應用程式資料執行完整性檢查、通知操作員等。
在一些具體實例中,標記處理硬體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)及/或一或多個軟體組件(例如作業系統、一或多個使用者應用程式等)之目標系統。
在一些具體實例中,該目標描述可包括對複數個命名實體之描述。命名實體可表示目標系統之組件。作為一個實例,命名實體可表示硬體組件,諸如組態暫存器、程式計數器、暫存器檔案、計時器、狀態旗標、記憶體傳送單元、輸入/輸出裝置等。作為另一實例,命名實體可表示軟體組件,諸如函式、模組、驅動器、服務常式等。
在一些具體實例中,策略連結器225可經程式化以搜索該目標描述以識別與策略有關之一或多個實體。例如,該策略可將某些實體名稱映射至對應詮釋資料符號,且策略連結器225可搜索該目標描述以識別具有彼等實體名稱之實體。策略連結器225可自該目標描述識別彼等實體之描述,且使用該等描述以藉由適合的詮釋資料符號來註解藉由連結器210所輸出之目標程式碼。例如,策略連結器225可將讀取標籤應用至可執行與可連結格式(Executable and Linkable Format,ELF)檔案之.rodata區段,將讀取標籤及寫入標籤應用至ELF檔案之.data區段,且將執行標籤應用至ELF檔案之.text區段。此類資訊可用於執行用於記憶體存取控制及/或可執行程式碼保護(例如,藉由檢查讀取、寫入及/或執行特權)之策略。
應瞭解,本發明之態樣不限於將目標描述提供至策略連結器225。在一些具體實例中,除了策略連結器225或替代策略連結器225,還可將目標描述提供至策略編譯器220。策略編譯器220可檢查該目標描述之誤差。例如,若策略中所提及之實體並不存在於該目標描述中,則可藉由策略編譯器220標示誤差。另外或替代地,策略編譯器220還可搜索該目標描述以搜索與待執行之一或多個策略相關的實體,且可產生僅包括對於相關實體之實體描述之經過濾目標描述。例如,策略編譯器220可使待執行策略之「init」陳述式中之實體名稱與該目標描述中之實體描述匹配,且可自該目標描述移除不具有對應「init」陳述式之實體描述。
在一些具體實例中,載入器215可基於由策略連結器225所產生之初始化規格而初始化目標系統。例如,參考圖1之實例,載入器215可將資料及/或指令載入至應用程式記憶體120中,且可使用初始化規格以識別與載入至應用程式記憶體120中之該資料及/或指令相關聯之詮釋資料標籤。載入器215可將初始化規格中之詮釋資料標籤解析成各別二進位表示。然而,應瞭解,本發明之態樣不限於在載入時解析詮釋資料標籤。在一些具體實例中,詮釋資料標籤之範圍在策略連結期間可已知,且因此可在此時例如藉由策略連結器225來解析詮釋資料標籤。此可有利地減少初始化規格之載入時處理。
在一些具體實例中,策略連結器225及/或載入器215可維持詮釋資料之二進位表示返回至詮釋資料標籤之映射。可例如藉由除錯器230使用此映射。例如,在一些具體實例中,可提供除錯器230以顯示初始化規格之人類可讀取版本,其可列出一或多個實體且針對每一實體,列出與實體相關聯之一組一或多個詮釋資料標籤。另外或替代地,除錯器230可經程式化以顯示藉由詮釋資料標籤所註解之組合程式碼,諸如藉由分解藉由詮釋資料標籤所註解之目標程式碼而產生之組合程式碼。此類組合程式碼之實例展示於圖6中且論述於下文。在除錯期間,除錯器230可在執行期間停止程式,且允許以人類可讀取形式檢測實體及/或與實體相關聯之詮釋資料標記。例如,除錯器230可允許檢測策略違反中所涉及之實體及/或造成該策略違反之詮釋資料標記。除錯器230可使用詮釋資料之二進位表示返回至詮釋資料標籤之映射而進行此操作。
在一些具體實例中,習知除錯工具可經擴展以允許審查與策略執行相關之問題,例如上文所述。另外或替代地,可提供獨立策略除錯工具。
在一些具體實例中,載入器215可將詮釋資料標籤之二進位表示載入至詮釋資料記憶體125中,且可將在應用程式記憶體位址與詮釋資料記憶體位址之間的映射記錄於標記映射表142中。例如,載入器215可在標記映射表142中創建條目,其將應用程式記憶體120中儲存有指令之應用程式記憶體位址映射至與詮釋資料記憶體125中儲存有與指令相關聯之詮釋資料之詮釋資料記憶體位址。另外或替代地,載入器215可將詮釋資料儲存於標記映射表142本身中(相較於詮釋資料記憶體125),以允許存取而無需執行任何記憶體操作。
在一些具體實例中,除標記映射表142之外或替代標記映射表142,載入器215可初始化標記暫存器檔案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)可評估一或多個策略及以即時方式解析該一或多個預設符號。
圖3展示根據一些具體實例之用於執行策略之例示硬體系統300。硬體系統300可包括類似於圖1中展示之硬體系統100之組件。硬體系統300可進一步包括資料快取記憶體-與主機處理器110相關聯之快取記憶體302。寫入互鎖112可經組態以執行用於包括資料快取記憶體之策略,諸如快取記憶體302之處理器。例如,寫入互鎖112可執行用於儲存指令之一或多個安全性策略。然而,應瞭解,本發明之態樣不限於將寫入互鎖用於作為儲存指令之指令。例如,寫入互鎖112可用於其他指令,諸如載入指令或另一合適的指令。
本申請案發明人已認識到,將寫入互鎖提供至包括快取記憶體之主機處理器可以是有益的。由於快取記憶體之記憶體側相較於主機處理器側可發現較少存取,且此等存取之次序可不反映主機處理器之指令執行之次序,因此提供此特徵並非簡單明瞭的。快取記憶體之存在可使主機處理器能夠在資料字組之一版本離開快取記憶體之前多次寫入該資料字組,且多次消耗該資料字組,其在如果有任何版本曾經如此進行的情況下。此外,由於快取收回可發生在需要特定快取行以用於保存新位址之資料行時,因此關於修改該行中之資料之指令,自快取記憶體寫出至主記憶體可不按照次序。
本申請案發明人已認識到,提供以下互鎖可以是具有挑戰性:該互鎖能夠判定何時允許自主機處理器之快取記憶體繼續進行至系統之其餘部分之回寫事件係安全的,鑒於該回寫事件包括在回寫至主記憶體之前已經在快取記憶體內可能寫入及/或消耗許多次之資料。關於圖3論述之例示寫入互鎖112提供一種解決方案,其中例如主機處理器之快取記憶體可在判定應允許繼續進行儲存指令時完成該儲存指令。當相對於相關策略待完成驗證相關聯指令時,可使此類操作暫停。被稱作「黑名單」、「評分卡」或另一合適術語之資料結構用於確保主機處理器之快取記憶體沒有資料被寫回至一位址,為此儲存指令目前待完成驗證。圖7展示根據一些具體實例之例示評分卡700。儘管此資料結構在本發明中所述一些具體實例中被稱作「評分卡」,但其可被稱為用於此資料結構之「黑名單」或另一合適術語。在下文中更詳細地描述此資料結構。
在一些具體實例中,寫入互鎖112可自主機處理器110接收儲存指令。該儲存指令可包括儲存資料之目標位址。寫入互鎖112可將對應於儲存指令之條目儲存於資料結構中。該資料結構可實施為硬體組件或實施於寫入互鎖112可進行存取的記憶體之一部分中。該資料結構可實施於寫入互鎖112內或其外部。此資料結構可實施為表、佇列、堆疊,或使用另一合適的技術來實施。對應於儲存指令之該條目可包括關於該目標位址之資訊。例如,該資料結構可呈由位址索引之「評分卡」形式,其中評分卡中之每一條目均與各別儲存指令之目標位址相關聯。該等條目可包括及/或由該目標位址、該目標位址之一部分、該目標位址之雜湊或該目標位址之該部分,或關於該目標位址之另一合適索引進行索引。在一些具體實例中,主機追蹤介面(host trace interface,HTI)可呈現虛擬位址,而主機處理器之資料快取記憶體可呈現實體位址。因而,寫入互鎖112可例如藉由使用轉譯後備緩衝器(Translation Lookaside Buffer,TLB)及頁面表遍歷(page table walker)硬體來實現虛擬位址至實體位址之轉譯。在一些具體實例中,若藉由HTI與資料快取記憶體呈現之位址並不匹配,則評分卡中之條目可包括來自HTI及資料快取記憶體之位址之共同部分。例如,評分卡中之條目可包括來自HTI之虛擬位址與來自資料快取記憶體之實體位址之共同部分,例如來自兩個位址之相同較低位址位元。
在一些具體實例中,該資料結構中之該條目可指示該目標位址可具有來自尚未相對於策略待完成驗證之指令之寫入,且因此藉由主機處理器110至該目標位址之寫入為不安全的。由於至少當前儲存指令之至該目標位址之寫入可能仍然待完成,因此允許至該目標位址之此寫入將存在問題。產生經寫入資料之指令是否違反任何策略尚不得而知。在一些具體實例中,該資料無需儲存於此資料結構中。此資料結構可明顯小於儲存完整位址以及待儲存至該位址之資料之資料結構。圖7展示根據一些具體實例之例示評分卡700。在此評分卡中,將「目標位址A」儲存於第一條目中,但不存在針對此位址所儲存之對應資料,此係由於對於此特定寫入互鎖實施方案可能不需要。將「目標位址B」之雜湊而非完整「目標位址B」儲存於第二條目中。同樣,不存在針對此位址所儲存之對應資料,此係由於對於此特定寫入互鎖實施方案可能不需要。將「目標位址C」之一部分而非完整「目標位址C」儲存於第三條目中。同樣,不存在針對此位址所儲存之對應資料,此係由於對於此特定寫入互鎖實施方案可能不需要。在一些具體實例中,評分卡700可僅包括位址之儲存區、位址之雜湊、位址之一部分,或另一合適的索引,且無需包括對應資料之儲存區。
在一些具體實例中,寫入互鎖112可使來自主機處理器110之寫入異動暫停。例如,寫入互鎖112可請求系統匯流排115使寫入異動暫停。在一些具體實例中,系統匯流排115可實施進階可擴展介面(Advanced Extensible Interface,AXI)匯流排協定以提供使寫入異動暫停之能力。在一些具體實例中,寫入互鎖112可使寫入異動暫停,同時等待儲存指令相對於一或多個策略之檢查。
在一些具體實例中,寫入互鎖112可執行兩個解耦組之處理步驟。第一組處理步驟可係關於判定該儲存指令中之該目標位址何時自不安全變為安全以供寫入。第一組處理步驟無需限於相對於相關策略檢查該儲存指令,且替代地可涵蓋將使該儲存指令中之該目標位址自不安全變為安全之任何類型之檢查。第二組處理步驟可係關於檢查來自主機處理器110之該寫入異動之該目標位址對於寫入是否為不安全的,及因此是否應繼續使該寫入異動暫停。
在一些具體實例中,寫入互鎖112可藉由自主機處理器110接收關於儲存指令之資訊而執行第一組處理步驟。關於儲存指令之資訊可包括目標位址。寫入互鎖112可將對應於儲存指令中之該目標位址之條目儲存於該資料結構中。寫入互鎖112可起始儲存指令針對一或多個策略之檢查。在一些具體實例中,寫入互鎖112可請求標記處理硬體140確保藉由主機處理器110執行之儲存指令遵守一或多個策略,如關於圖1所述。在一些具體實例中,當標記處理硬體140檢查儲存指令之遵從性時,可使主機處理器110暫停執行其他指令。若標記處理硬體140判定應允許有疑慮之儲存指令(例如,基於規則快取記憶體144中之命中或來自策略處理器150之回應),則標記處理硬體140可向寫入互鎖112指示儲存指令遵守相關策略。回應於接收到對儲存指令之檢查成功完成之指示,寫入互鎖112可自該資料結構移除對應於儲存指令之位址之條目。
在一些具體實例中,寫入互鎖112可藉由接收包括目標位址之寫入異動而執行第二組處理步驟,將資料自主機處理器110寫入至該目標位址。寫入互鎖112可判定該資料結構中是否存在關於寫入異動之該目標位址之任何條目。例如,寫入互鎖112可使用來自主機處理器110之寫入異動之該目標位址對該資料結構進行索引以判定是否存在關於該位址之任何條目。若寫入互鎖112判定該資料結構中不存在與寫入異動之該目標位址有關之條目,則寫入互鎖112可致使將資料寫入至寫入異動之該目標位址。例如,寫入互鎖112可請求系統匯流排115釋放寫入異動。在一些具體實例中,系統匯流排115可實施AXI匯流排協定以提供釋放寫入異動之能力。因此,可將執行寫入異動之結果寫回至記憶體。若寫入互鎖112判定資料結構中存在與該目標位址有關之條目,則寫入互鎖112可繼續使寫入異動暫停,例如直至標記處理硬體140回傳關於該位址之指令遵守相關策略之指示。
圖4展示根據一些具體實例之用於執行策略之例示方塊圖400。方塊圖400說明關於圖3論述之第一處理步驟及第二處理步驟之解耦執行。在例如寫入互鎖112之此具體實例中,主機處理器之快取記憶體302可在判定應允許寫入異動繼續進行時完成該寫入異動。當相對於相關策略待完成驗證相關聯指令時,可使此類異動暫停。評分卡420用於確保主機處理器之快取記憶體不將資料寫回至一位址,為此儲存指令目前待完成驗證。
在一些具體實例中,寫入互鎖112可執行兩個解耦組之處理步驟。第一組處理步驟可關於寫入互鎖112經由HTI 410以自主機處理器110接收關於儲存指令之資訊。關於儲存指令之該資訊可包括目標位址。寫入互鎖112可將對應於儲存指令中之該目標位址之條目儲存於評分卡420中。標記處理硬體140可判定儲存指令之該目標位址何時自不安全變為安全以供寫入。在一些具體實例中,寫入互鎖112可請求標記處理硬體140確保藉由主機處理器110執行之儲存指令遵守一或多個策略,如關於圖1所述。在一些具體實例中,當標記處理硬體140檢查儲存指令之遵從性時,可使主機處理器110暫停執行其他指令。若標記處理硬體140判定應允許有疑慮之儲存指令(例如,基於規則快取記憶體144中之命中,或來自策略處理器150之回應),則標記處理硬體140可向寫入互鎖112指示儲存指令遵守相關策略。回應於接收到對儲存指令之檢查成功完成之「允許」指示,寫入互鎖112可自評分卡420移除對應於儲存指令之該位址之條目。若標記處理硬體140判定應拒絕有疑慮之儲存指令(例如,基於藉由策略處理器150偵測到之違反),則標記處理硬體140可向寫入互鎖112指示儲存指令並未遵守相關策略。回應於接收到對儲存指令之檢查之「拒絕」指示,寫入互鎖112可請求主機處理器110起始合適的違反處理程式碼。本發明中隨後描述用於請求違反處理之例示程序。
第二組處理步驟可關於決策區塊440判定來自主機處理器110之該寫入異動之該目標位址對於寫入是否為不安全,及是否應繼續使該寫入異動暫停。在一些具體實例中,寫入互鎖112可自主機處理器110接收包括目標位址之寫入異動,將資料寫入至該目標位址。回應於接收到該寫入異動,寫入互鎖112之決策區塊440可判定評分卡420中是否存在關於寫入異動之該目標位址之任何條目。例如,決策區塊440及/或寫入互鎖112可使用寫入異動之該目標位址對評分卡420進行索引以判定是否存在關於該位址之任何條目。若決策區塊440判定評分卡420中不存在與寫入異動之該目標位址有關之條目,則決策區塊440可使資料寫入至記憶體120中之寫入異動之該目標位址。例如,決策區塊440及/或寫入互鎖112可請求系統匯流排115釋放寫入異動。在一些具體實例中,系統匯流排115可實施AXI匯流排協定以提供釋放寫入異動之能力。因此,可將執行儲存指令之結果寫回至記憶體120。在一些具體實例中,寫入互鎖112可在第一介面(例如第一記憶體介面)上接收寫入異動,且可經由不同於第一介面之第二介面上之另一寫入異動將資料寫入至寫入異動之該目標位址。若決策區塊440判定評分卡420中存在與該目標位址有關之條目,則決策區塊440可繼續使寫入異動暫停,例如直至標記處理硬體140回傳關於該位址之指令遵守相關策略之指示。
在一些具體實例中,第二組處理步驟可進一步關於決策區塊430判定寫入異動之該目標位址是否經快取。在一些具體實例中,決策區塊430可藉由判定該寫入異動之該目標位址是否包括於未經快取位址之位址範圍中而判定該寫入異動之該目標位址是否經快取。在一些具體實例中,決策區塊430可藉由判定來自主機處理器110之資料快取記憶體之信號是否將寫入異動之該目標位址指示為經快取而判定寫入異動之該目標位址是否經快取。若決策區塊430判定寫入異動之該目標位址經快取,則第二組處理步驟可繼續進行至決策區塊440,如上文所述。若決策區塊430判定寫入異動之該目標位址未經快取,則可將寫入異動之資料儲存於寫入佇列450中。在一些具體實例中,寫入互鎖112可向主機處理器110確認寫入異動,但捨棄寫入異動之資料。在將寫入異動之資料儲存於寫入佇列450中之後,寫入互鎖112可繼續進行至決策區塊460,如下文進一步描述。寫入互鎖112可包括仲裁器470以在待寫入至記憶體120之自決策區塊440與自決策區塊460輸出之資料之間進行選擇。若寫入異動之該目標位址經快取,則仲裁器470可選擇自決策區塊440輸出之資料。若寫入異動之該目標位址未經快取,則仲裁器470可選擇自決策區塊460輸出之資料。
在一些具體實例中,決策區塊460可判定來自主機處理器110之寫入異動之該目標位址對於寫入是否為不安全,及是否應繼續使寫入異動暫停。寫入互鎖112之決策區塊460可判定評分卡420中是否存在關於寫入異動之該目標位址之任何條目。例如,決策區塊460及/或寫入互鎖112可使用寫入異動之該目標位址對評分卡420進行索引以判定是否存在關於該位址之任何條目。若決策區塊460判定評分卡420中不存在與寫入異動之該目標位址有關之條目,則決策區塊460可致使資料寫入至記憶體120中之寫入異動之該目標位址。因此,可將儲存指令之資料寫入至記憶體120。在一些具體實例中,寫入互鎖112可在第一介面(例如第一記憶體介面)上接收寫入異動,且可經由不同於第一介面之第二介面上之另一寫入異動將資料寫入至寫入異動之該目標位址。
若決策區塊460判定評分卡420中存在與該目標位址有關之條目,則決策區塊460可繼續使寫入異動暫停,例如直至標記處理硬體140回傳關於該位址之指令遵守相關策略之指示。在一些具體實例中,可使寫入異動暫停一段時間,其基於在主機處理器110執行儲存指令與第一處理中藉由寫入互鎖112將儲存指令儲存於資料結構中之間的估計時間量而選擇該段時間。在一些具體實例中,可使該寫入異動暫停直至在該第一處理中已經自主機處理器110接收到選定數目個指令。
在一些具體實例中,可實施寫入互鎖112以處置包括未經快取目標位址之儲存指令而無需使用評分卡。寫入互鎖112可經由HTI 410以自主機處理器110接收關於儲存指令之資訊。關於儲存指令之該資訊可包括未經快取之目標位址。寫入互鎖112可將資料儲存於寫入佇列450中。在一些具體實例中,寫入互鎖112可判定該目標位址是否經快取,且可回應於判定該目標位址未經快取而將資料儲存於寫入佇列450中之條目中。寫入互鎖112可請求標記處理硬體140確保藉由主機處理器110執行之儲存指令遵守一或多個策略,如關於圖1所描述。若標記處理硬體140判定應允許有疑慮之儲存指令(例如,基於規則快取記憶體144中之命中,或來自策略處理器150之回應),則標記處理硬體140可向寫入互鎖112指示儲存指令遵守相關策略。回應於接收到對儲存指令之檢查成功完成之「允許」指示,寫入互鎖112可致使寫入異動將資料寫入至該目標位址。例如,寫入互鎖112可請求系統匯流排115致使寫入異動將資料寫入至該目標位址。在一些具體實例中,系統匯流排115可實施AXI匯流排協定以提供致使寫入異動將資料寫入至該目標位址之能力。因此,可將執行儲存指令之結果寫回至記憶體120。在一些具體實例中,藉由寫入異動寫入之資料係自寫入佇列450中之條目擷取。在一些具體實例中,在擷取寫入異動之資料之後,自寫入佇列450移除儲存資料之條目。在一些具體實例中,寫入互鎖112可向主機處理器110確認寫入異動,但捨棄寫入異動之資料。
在一些具體實例中,寫入互鎖112與兩個不同介面相互作用以用於接收及寫入關於寫入異動之資料。例如,寫入互鎖112可在第一介面(例如第一記憶體介面)上接收第一寫入異動。在一些具體實例中,回應於寫入互鎖112判定寫入異動之該目標位址經快取,寫入互鎖112可致使第一寫入異動暫停直至判定資料結構中之條目並不與寫入異動之該目標位址有關。回應於寫入互鎖112判定資料結構中之條目並不與寫入異動之該目標位址有關,寫入互鎖112可致使經由不同於第一介面之第二介面上之第二寫入異動將資料寫入至寫入異動之該目標位址。
在一些具體實例中,回應於寫入互鎖112判定寫入異動之該目標位址未經快取,寫入互鎖112可將第一寫入異動儲存於寫入佇列中且向處理器確認第一寫入異動。回應於寫入互鎖112判定資料結構中之條目並不與寫入異動之該目標位址有關,寫入互鎖112可致使經由第二介面上之第二寫入異動將資料寫入至寫入異動之該目標位址。在一些具體實例中,藉由該第二寫入異動寫入之該資料係自儲存該第一寫入異動之該寫入佇列中之條目擷取。在一些具體實例中,在擷取第二寫入異動之資料之後,寫入互鎖112可自寫入佇列移除儲存第一寫入異動之條目。在一些具體實例中,寫入互鎖112可向該處理器確認該寫入異動,但捨棄該寫入異動之該資料。
圖5展示根據一些具體實例之用於執行策略之例示硬體系統500。例示硬體系統500可包括類似於圖1中展示之例示硬體系統100之組件。在此實例中,硬體系統500進一步包括資料快取記憶體-與主機處理器110相關聯之快取記憶體302,及與寫入互鎖112相關聯之快取記憶體502,寫入互鎖112可經組態以執行用於包括資料快取記憶體(諸如快取記憶體302)之處理器之策略。例如,寫入互鎖112可經組態以執行用於儲存指令之一或多個安全性策略。然而,應瞭解,本發明之態樣不限於將寫入互鎖用於作為儲存指令之指令。例如,寫入互鎖112可用於其他指令,諸如載入指令或另一合適的指令。
本申請案發明人已認識到,待解決問題為互鎖可如何知曉何時允許自主機處理器之快取記憶體繼續進行至系統之其餘部分之回寫事件係安全的,鑒於回寫事件包括在回寫至主記憶體之前已經在快取記憶體內可能寫入及/或消耗許多次之資料。關於圖5論述之寫入互鎖112提供一種解決方案,其中捨棄來自主機處理器之快取記憶體之所有回寫傳送,且替代地,一旦已經相對於相關策略驗證相關聯指令,就起始來自與寫入互鎖112相關聯之快取記憶體的所有記憶體操作,諸如回寫快取記憶體或另一合適的快取記憶體。
在一些具體實例中,寫入互鎖112可自主機處理器110接收儲存指令。該儲存指令可包括目標位址及待儲存至該位址之資料。寫入互鎖112可將對應於儲存指令之條目儲存於資料結構中。該資料結構可實施作為硬體組件或實施於寫入互鎖112可進行存取的記憶體之一部分中。該資料結構可實施於寫入互鎖112內或其外部。此資料結構可實施作為表、佇列、堆疊,或另一合適的資料結構。對應於儲存指令之該條目可包括儲存指令中之該目標位址及待儲存至該位址之資料。資料結構中之該條目可指示對於該目標位址之寫入待完成(pending),且因此藉由來自主機處理器110之任何指令或來自主機處理器110之任何異動而自該目標位址進行之讀取為陳舊。由於至少當前儲存指令之至該目標位址之寫入仍然待完成,因此允許自該目標位址進行此讀取將存在問題。主機處理器不瞭解此待完成狀態且因此無法緩解一致性問題。在一些具體實例中,回應於將該條目儲存於資料結構中,寫入互鎖112可將儲存指令已經完成之指示回傳至主機處理器110。在一些具體實例中,寫入互鎖112回應於將該條目儲存於資料結構中而不採取額外動作。在一些具體實例中,儲存指令導致寫入資料及位址經由HTI而自主機處理器流送至標記處理硬體。視情況,主機處理器可取回確認信號。因此,主機處理器可將指令登記為完整寫入且經引退,且後續讀取可讀取此位址之新資料。圖7展示根據一些具體實例之例示評分卡700。在此評分卡中,將「目標位址D」及待儲存至此目標位址之「資料D」儲存於第四條目中,由於對於此特定寫入互鎖實施方案可能需如此。在此具體實例中,評分卡700包括該目標位址及待儲存至該位址之資料之儲存區。
在一些具體實例中,寫入互鎖112可執行兩個解耦組之處理步驟。第一組處理步驟可關於判定儲存指令中之該目標位址對於讀取何時不再是陳舊。第一組處理步驟無需限於相對於相關策略檢查該儲存指令,且替代地可涵蓋將指示該儲存指令中之該目標位址不再是陳舊之任何類型之檢查。第二組處理步驟可關於檢查儲存指令中之該目標位址對於讀取是否為不安全,及嘗試自該目標位址讀取資料之讀取異動或載入指令是否應暫停。在一些具體實例中,寫入互鎖112可藉由自主機處理器110接收包括目標位址之儲存指令及待儲存至之儲存指令之該目標位址之資料而執行第一組處理步驟。寫入互鎖112可將對應於儲存指令之條目儲存於資料結構中。該條目可包括儲存指令中之該目標位址及資料。寫入互鎖112可起始儲存指令針對一或多個策略之檢查。在一些具體實例中,寫入互鎖112可請求標記處理硬體140確保藉由主機處理器110執行之儲存指令遵守一或多個策略,如關於圖1所描述。若標記處理硬體140判定應允許有疑慮之儲存指令(例如,基於規則快取記憶體144中之命中,或來自策略處理器150之回應),則標記處理硬體140可向寫入互鎖112指示儲存指令遵守相關策略。
回應於接收到對儲存指令之檢查成功完成之指示,寫入互鎖112可自資料結構移除對應於儲存指令之條目且將資料儲存於與寫入互鎖112相關聯之快取記憶體,例如回寫快取記憶體或另一合適的快取記憶體中。例如,寫入互鎖112可將該目標位址之至少一部分(例如,該目標位址之索引部分)及待儲存至該位址之資料儲存於與寫入互鎖112相關聯之快取記憶體,諸如快取記憶體502中。在一些具體實例中,快取記憶體502可被稱為回寫快取記憶體或用於與寫入互鎖112相關聯之快取記憶體之另一合適的術語。在一些具體實例中,快取記憶體502可包括於寫入互鎖112內。在一些具體實例中,快取記憶體502可在寫入互鎖112外部實施。在一些具體實例中,該快取記憶體可限於線緩衝器或可實施作為全相聯快取記憶體、成組相聯快取記憶體,或另一合適類型之快取記憶體。在一些具體實例中,快取記憶體502無需與主機處理器110之快取記憶體(例如快取記憶體302)一樣大,由於其用途可限於儲存關於寫入指令之位址及資料條目。
在一些具體實例中,寫入互鎖112可藉由接收包括目標位址之讀取異動而執行第二組處理步驟,自主機處理器110自該目標位址讀取資料。寫入互鎖112可判定資料結構中是否存在關於自主機處理器110接收到之讀取異動之該目標位址之任何條目。該讀取異動可由載入指令、儲存指令,或另一合適的指令所引起。若主機處理器之資料快取記憶體並不具有包括儲存指令之該位址之經快取行,則儲存指令可引起讀取異動。在此狀況下,主機處理器之資料快取記憶體可將來自該記憶體之該行讀取至快取記憶體中且接著修改儲存指令所請求之該行之該部分。例如,寫入互鎖112可接收關於該目標位址之載入指令之指示,且可使用儲存指令之該目標位址對資料結構進行索引以判定是否存在關於該目標位址之條目。若資料結構中存在與讀取異動之該(等)目標位址有關之一或多個條目,則可使讀取異動暫停直至資料結構中之條目並不與讀取異動之目標位址有關。例如,系統匯流排115可使讀取異動暫停。在一些具體實例中,系統匯流排115可實施AXI匯流排協定以提供使讀取異動暫停之能力。在一些具體實例中,若寫入互鎖112判定資料結構中存在關於讀取異動之該目標位址之一或多個條目,則寫入互鎖112可致使讀取異動自與讀取異動之該目標位址相關的資料結構中之最新條目存取資料。若寫入互鎖112判定資料結構中不存在關於讀取異動之該目標位址之條目,則寫入互鎖112可致使讀取異動存取與寫入互鎖112相關聯之快取記憶體502中的資料。例如,寫入互鎖112可請求系統匯流排115以允許讀取異動存取與寫入互鎖112相關聯之快取記憶體中的資料。在一些具體實例中,系統匯流排115可實施AXI匯流排協定以提供允許讀取異動存取與寫入互鎖112相關聯之快取記憶體中的資料的能力。
在一些具體實例中,每次在將該位址及待儲存至該位址之資料儲存於與寫入互鎖112相關聯之快取記憶體502中之後,可判定該位址及資料是否待收回。在一些具體實例中,寫入互鎖112可基於藉由主機處理器110引退之快取管理指令判定將快取記憶體502中之行收回或使其失效的需要。例如,寫入互鎖112可判定將位址及資料儲存於快取記憶體502中之快取行為完整且需要收回。若寫入互鎖112判定位址及資料待收回,則寫入互鎖112自快取記憶體移除該位址及資料且致使資料儲存至記憶體120中之該位址。例如,寫入互鎖112可收回儲存位址及資料之快取行且產生將資料儲存至記憶體120中之該位址之請求。在一些具體實例中,寫入互鎖112可請求系統匯流排115將資料儲存至記憶體120中之該位址。系統匯流排115可實施AXI匯流排協定以提供將資料儲存至記憶體120中之該目標位址之能力。因此,可將執行儲存指令之結果寫回至記憶體。
圖6展示根據一些具體實例之用於執行策略之例示方塊圖600。方塊圖600說明關於圖5論述之第一處理步驟及第二處理步驟之解耦執行。在寫入互鎖112之此具體實例中,捨棄來自主機處理器之快取記憶體302之所有回寫傳送,且替代地,一旦已經相對於相關策略驗證相關聯指令,就起始來自與寫入互鎖112相關聯之快取記憶體502之所有記憶體操作。評分卡620用於確保主機處理器110並不請求自具有寫入仍然待完成之位址讀取資料。
在一些具體實例中,寫入互鎖112可執行兩個解耦組之處理步驟。第一組處理步驟可關於寫入互鎖112經由HTI 610而自主機處理器110接收關於儲存指令之資訊。關於儲存指令之該資訊可包括目標位址及待儲存至該位址之資料。寫入互鎖112可將對應於儲存指令中之該目標位址及資料之條目儲存於評分卡620中。評分卡620可實施作為硬體組件或實施於寫入互鎖112可進行存取之記憶體之一部分中。評分卡620中之該條目可指示儲存指令中之該目標位址具有寫入待完成,且因此可使自該目標位址進行之讀取暫停直至寫入完成或可藉由自評分卡回傳最新完成資料而完成。由於至少當前儲存指令至該目標位址之寫入仍然待完成,因此允許自該目標位址進行此讀取將存在問題,且因此記憶體系統將回傳陳舊資料。
寫入互鎖112可判定儲存指令中之該目標位址對於讀取何時不再是陳舊。在一些具體實例中,寫入互鎖112可請求標記處理硬體140確保藉由主機處理器110執行之儲存指令遵守一或多個策略,如關於圖1所描述。若標記處理硬體140判定應允許有疑慮之儲存指令(例如,基於規則快取記憶體144中之命中,或來自策略處理器150之回應),則標記處理硬體140可向寫入互鎖112指示儲存指令遵守相關策略。回應於接收到對儲存指令之檢查成功完成之「允許」指示,寫入互鎖112可自評分卡620移除對應於儲存指令之條目且將資料儲存於與寫入互鎖112相關聯之快取記憶體502中。若標記處理硬體140判定應拒絕有疑慮之儲存指令(例如,基於藉由策略處理器150偵測到之違反),則標記處理硬體140可向寫入互鎖112指示儲存指令並未遵守相關策略。回應於接收到對儲存指令之檢查之「拒絕」指示,寫入互鎖112可請求主機處理器110起始合適的違反處理程式碼。本發明中隨後描述用於請求違反處理之例示程序。
第二組處理步驟可關於寫入互鎖112接收包括目標位址之讀取異動,自主機處理器110自該目標位址讀取資料。決策區塊630可判定儲存指令中之該目標位址對於讀取是否為不安全,及是否應使嘗試自該目標位址讀取資料之來自主機處理器110之讀取異動暫停。在一些具體實例中,寫入互鎖112之決策區塊630可判定評分卡620中是否存在關於自主機處理器110接收到之讀取異動之該目標位址之任何條目。例如,寫入互鎖112可自主機處理器110接收讀取異動之關於該目標位址之指示,且可使用讀取異動之該目標位址對評分卡620進行索引以判定是否存在關於該目標位址之條目。若評分卡620中存在與讀取異動之該目標位址有關之條目,則可使該讀取異動暫停直至資料結構中之條目並不與讀取異動之該目標位址有關。例如,系統匯流排115可使讀取異動暫停。在一些具體實例中,系統匯流排115可實施AXI匯流排協定以提供使讀取異動暫停之能力。在一些具體實例中,若決策區塊630判定評分卡620中存在關於讀取異動之該目標位址之一或多個條目,則決策區塊630可致使讀取異動自評分卡620中與讀取異動之該目標位址相關之最新條目存取資料。若決策區塊630判定評分卡620中不存在與讀取異動之該目標位址有關之條目,則決策區塊630可致使讀取異動存取與寫入互鎖112相關聯之快取記憶體502中的資料。例如,決策區塊630及/或寫入互鎖112可請求系統匯流排115以允許讀取異動存取與寫入互鎖112相關聯之快取記憶體502中的資料。在一些具體實例中,系統匯流排115可實施AXI匯流排協定以提供允許讀取異動存取與寫入互鎖112相關聯之快取記憶體502中的資料的能力。
在一些具體實例中,本文中所論述之硬體系統(例如,圖1中之硬體系統100、圖3中之硬體系統300,及/或圖5中之硬體系統500)經組態以處置可發生在標記處理硬體140回傳指令並未遵守一或多個策略之指示時的策略違反。例如,標記處理硬體140可回傳儲存指令正嘗試寫入至未指定為應用程式資料可進行存取之位址的指示。若標記處理硬體140判定有疑慮之指令表示策略違反(例如,基於規則快取記憶體144中之命中,或來自策略處理器150之回應),則標記處理硬體140可將中斷發送至主機處理器110。回應於接收到該中斷,主機處理器110可切換至任何合適的違反處理程式碼。例如,主機處理器100可停止、重設、記錄該違反,且繼續、對應用程式碼及/或應用程式資料執行完整性檢查、通知操作員,或執行另一合適的動作。
在一些具體實例中,當發生策略違反時,寫入互鎖112可致使將評分卡之快照保存至可藉由主機處理器110之違反處理程式碼進行存取之位址範圍。該快照可以多個方式保存。作為一個實例,寫入互鎖112可將評分卡之快照儲存至寫入互鎖112內之專用實體記憶體區塊。此可需要實施用於主機處理器110之路徑以讀取寫入互鎖112中關於儲存快照之記憶體區塊之一或多個位址範圍。作為另一實例,寫入互鎖112可自動地將評分卡之快照儲存至主機處理器110可進行存取的預組態記憶體位置。作為又一實例,策略處理器150可執行程式碼以經由特殊功能暫存器(Special Function Register,SFR)介面自評分卡擷取值且將評分卡之快照儲存至主機處理器110可進行存取之記憶體位置。
在一些具體實例中,快照可由主機處理器110之違反處理程式碼用於使來自快取記憶體302之資料快取行失效,該等資料快取行含有在該違反時處於該評分卡中之位址中之任一者。例如,ARM指令集架構(ISA)提供可基於位址使快取資料失效之指令。在另一實例中,RISC-V ISA並不提供此類指令且可能需要額外程式碼及/或硬體以便基於位址使快取資料失效。在一些具體實例中,對於並不提供基於位址使快取資料失效之指令之主機處理器,寫入互鎖112可在偵測到策略違反後進入特殊模式,其中可向快取記憶體302確認未來記憶體寫入,但該等未來寫入經捨棄且不發送至記憶體。此特殊模式可允許主機處理器110之違反處理程式碼結合寫入互鎖112,用以藉由讀取與處於評分卡中之位址共享快取行之其他位址而收回該等快取行。以此方式,可收回來自快取記憶體302之含有在該違反時處於該評分卡中之位址中之任一者的所有資料快取行。在一些具體實例中,寫入互鎖112可在策略處理器150以主機處理器110之違反處理程式碼執行具有特殊詮釋資料標記之指令時退出該特殊模式。在一些具體實例中,為避免此指令由規則快取記憶體144定址,可特意防止規則快取記憶體144填入有輸入標記至決策及/或輸出標記之任何相關映射。此將迫使具有特殊詮釋資料標記之指令調用策略處理器,其又可寫入至寫入互鎖中之SFR以使寫入互鎖退出該特殊模式。
在一些具體實例中,寫入互鎖112可將評分卡在策略違反時之快照儲存至可藉由主機處理器110之違反處理程式碼進行存取之位址範圍。寫入互鎖112可對主機處理器110觸發中斷以起始違反處理程式碼之執行。該中斷可致使主機處理器110使來自資料快取記憶體之包括至少一個位址之至少一個資料快取行失效,該至少一個位址在該策略違反時處於該評分卡中。
在一些具體實例中,寫入互鎖112可將評分卡在策略違反時之快照儲存至可藉由主機處理器110之違反處理程式碼進行存取之位址範圍。寫入互鎖112可對主機處理器110觸發中斷以起始違反處理程式碼之執行,且致使自資料快取記憶體收回包括在該策略違反時處於該評分卡中之至少一個位址之至少一個資料快取行。寫入互鎖112可進入違反處置模式,其中向主機處理器110確認主機處理器110所嘗試對記憶體120之未來寫入,但該等未來寫入經捨棄且不發送至記憶體120。寫入互鎖112可回應於主機處理器110已完成違反處理之指示而退出違反處置模式。在一些具體實例中,該指示可包括自主機處理器110接收到之指示主機處理器110已完成違反處理之信號。在一些具體實例中,該指示可包括已收回包括在該策略違反時處於該評分卡中之至少一個位址之所有資料快取行的判定。
在一些具體實例中,來自圖5之硬體系統500之寫入互鎖實施方案可優於來自圖3之硬體系統300之寫入互鎖實施方案。在圖5之硬體系統500中,寫入互鎖112可在指令驗證後將每一儲存指令之資料儲存於快取記憶體502中。當偵測到策略違反時,來自策略遵從性指令之資料及相關位址存在於記憶體系統中,從而使得主機處理器110能夠在策略違反指令處出現異常之情況下在恢復執行之前倒回到最後一個策略遵從性指令。寫入互鎖之此實施方案可實現用於主機處理器110之穩固策略違反回應選項,諸如交替概念、違反記錄,或另一合適的策略違反回應,同時繼續執行攻擊型執行緒。在無此資料之情況下,策略違反回應可以是終止攻擊型執行緒或重設主機處理器110。
在一些具體實例中,主機處理器110之違反處理程式碼可執行交替概念。例如,在偵測到違反時,嵌入於發射物中之主機處理器可將發射物之導引切換為可發射模式,使得攻擊型程式碼無法存取發射物之破壞性潛能。另外,主機處理器可允許發射物緩緩降落以避免更進一步違反。在一些具體實例中,主機處理器110之違反處理程式碼可選擇性地決定處理器之快取記憶體中之哪些資料可能受該違反影響且收回該資料,同時保持處理器之快取記憶體中之資料不受該違反影響。在一些具體實例中,主機處理器110之違反處理程式碼可起始記錄模式,其中允許攻擊型執行緒運行,且俘獲並記錄違反以供未來參考。例如,開發人員可執行軟體程式以測試主機處理器110之違反處理程式碼是否偵測到軟體程式中之任何違反。
在一些具體實例中,來自圖3之硬體系統300之寫入互鎖實施方案可優於來自圖5之硬體系統500之寫入互鎖實施方案。在圖3之硬體系統300中,資料並不儲存於「評分卡」的資料結構中。此資料結構可明顯小於儲存位址以及待儲存至該位址之資料之資料結構,諸如由圖5之硬體系統500使用之資料結構。若資料結構以硬體來實施,則來自圖3之硬體系統300之寫入互鎖實施方案將需要較少面積及功率來進行作用。另外,實施圖3之硬體系統300而無需與寫入互鎖相關聯之快取記憶體,而圖5之硬體系統500需要與寫入互鎖相關聯之快取記憶體以供其操作。對於來自圖3之硬體系統300之寫入互鎖實施方案,此增加面積及功率節省。
在一些具體實例中,在圖3之硬體系統300中,藉由主機處理器110進行之一些寫入可在發生回寫操作之前重寫於快取記憶體302中。在策略違反之情況下,違反指令,或在違反之後的指令可重寫一或多個字組之最後一個有效資料值。在此等情況下,將主機處理器110倒回到違反之前的時點以便將攻擊型指令作為異常而重新執行的選項可以是無法取用。
在一些具體實例中,可不實施使主機處理器110倒回至最後一個有效指令。此可歸因於未由互鎖所俘獲之某一處理器狀態,諸如算術邏輯單元(Arithmetic Logic Unit,ALU)狀態旗標。例如,ARM ISA提供使用一或多個ALU狀態旗標(例如,最後一個操作之結果為負、為零、產生進位,抑或造成溢位)作為輸入以供其操作之指令。另外,經由破壞性讀取所消耗資料之執行緒可能需要大量硬體支援以使得能夠重新執行彼等破壞性資料讀取。因此,不進行倒回對於此類具體實例可具有有限影響。
在一些具體實例中,甚至在不進行倒回之情況下,主機處理器110之違反處理程式碼可清空快取記憶體中自違反指令或自遵循違反指令之指令所得到之任何資料值。為支援此操作,寫入互鎖112可將評分卡之快照儲存至寫入互鎖112內之記憶體區塊。對於此解決方案,主機處理器110之違反處理程式碼無需對快照進行存取。替代地,主機處理器110之違反處理程式碼可清空及使全部快取記憶體302失效/重寫全部快取記憶體302,且已進入違反模式之寫入互鎖112可捨棄至存在於評分卡之快照中之位址之任何寫入。在一些具體實例中,主機處理器110之違反處理程式碼可僅清空快照指示之快取行,這可能需要主機處理器110存取快照之複本。一旦主機處理器110已清空快取記憶體302,就可終止目前執行之執行緒。在一些具體實例中,替代終止經歷違反之執行緒,主機處理器110之違反處理程式碼可週期性地對執行緒進行快照且自該時點重新開始該執行緒,其中將斷點設定為違反指令位址。
圖8展示根據一些具體實例之用於執行策略之例示流程圖800及850。流程圖800及850對應於第一組處理步驟及與第一組處理步驟解耦之第二組處理步驟,例如如關於圖4所描述,以用於藉由寫入互鎖來執行,例如寫入互鎖112。例如,第一組處理步驟可關於判定儲存指令中之該目標位址何時自不安全變為安全以供寫入,且第二組處理步驟可關於檢查來自處理器之寫入異動之該目標位址對於寫入是否為不安全,及是否應繼續使寫入異動暫停。
流程圖800對應於第一組處理步驟。
在802處,寫入互鎖112自處理器接收包括目標位址之儲存指令。例如,寫入互鎖112可經由HTI 410以自主機處理器110接收關於儲存指令之資訊。
在804處,寫入互鎖112將對應於儲存指令之條目儲存於資料結構中。該條目可包括關於儲存指令之該目標位址之資訊,例如儲存指令之目標位址之一部分或整個目標位址。例如,寫入互鎖112可將對應於儲存指令之該目標位址之條目儲存於評分卡420中。
在806處,寫入互鎖112起始儲存指令針對至少一個策略之檢查。例如,寫入互鎖112可請求標記處理硬體140確保藉由主機處理器110執行之儲存指令遵守一或多個策略,如關於圖1所描述。
在808處,寫入互鎖112回應於檢查成功完成而自資料結構移除該條目。舉例而言,若標記處理硬體140判定應允許有疑慮之儲存指令(例如,基於規則快取記憶體144中之命中,或來自策略處理器150之回應),則標記處理硬體140可向寫入互鎖112指示儲存指令遵守相關策略。回應於接收到對儲存指令之檢查成功完成之「允許」指示,寫入互鎖112可自評分卡420移除對應於儲存指令之該位址之條目。
流程圖850對應於第二組處理步驟,其與第一組處理步驟解耦。
在852處,寫入互鎖112自處理器接收包括目標位址之寫入異動,將資料寫入至該目標位址。
在一些具體實例中,寫入互鎖112判定寫入異動之該目標位址是否經快取。在一些具體實例中,寫入互鎖112藉由判定該寫入異動之該目標位址是否包括於未經快取位址之位址範圍中,而判定該寫入異動之該目標位址是否經快取。在一些具體實例中,寫入互鎖112藉由判定來自資料快取記憶體之信號是否將該寫入異動之該目標位址指示為經快取,而判定該寫入異動之該目標位址是否經快取。
在854處,寫入互鎖112判定資料結構中之任一條目是否與寫入異動之該目標位址有關。例如,決策區塊440及/或寫入互鎖112可使用寫入異動之該目標位址對評分卡420進行索引以判定是否存在關於該目標位址之任何條目。若判定資料結構中之條目並不與寫入異動之該目標位址有關,則寫入互鎖112繼續進行至856。
在一些具體實例中,若判定資料結構中之至少一個條目與寫入異動之該目標位址有關,則寫入互鎖112致使寫入異動暫停。在一些具體實例中,使該寫入異動暫停一段時間。該段時間係基於在該處理器執行該儲存指令與該第一處理中藉由該寫入互鎖將該儲存指令儲存於該資料結構中之間的估計時間量而選擇。在一些具體實例中,使該寫入異動暫停直至在該第一處理中已經自該處理器接收到選定數目個指令。
在856處,寫入互鎖112致使資料寫入至寫入異動之該目標位址。例如,決策區塊440及/或寫入互鎖112可請求系統匯流排115釋放寫入異動。
在一些具體實例中,來自該處理器之該寫入異動包含第一寫入異動,且藉由寫入互鎖112在第一介面上進行接收。回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關,經由第二介面上之第二寫入異動將該資料寫入至該寫入異動之該目標位址。
圖9展示根據一些具體實例之用於處置策略違反之例示流程圖900。流程圖900對應於在策略違反時用於藉由寫入互鎖來執行之步驟,例如寫入互鎖112。
在902處,寫入互鎖112將資料結構在策略違反時之快照儲存至可藉著待由處理器執行之違反處理程式碼進行存取之位址範圍。該快照可以多個方式保存。作為一個實例,寫入互鎖112可將評分卡之快照儲存至寫入互鎖112內之專用實體記憶體區塊。此可能需要實施用於主機處理器110之路徑以讀取寫入互鎖112中關於儲存該快照之記憶體區塊之一或多個位址範圍。作為另一實例,寫入互鎖112可自動地將評分卡之快照儲存至主機處理器110可進行存取的預組態記憶體位置。作為又一實例,策略處理器150可執行程式碼以經由特殊功能暫存器(SFR)介面而自評分卡擷取值,且將評分卡之快照儲存至主機處理器110可進行存取之記憶體位置。
在904處,寫入互鎖112對處理器觸發中斷以起始違反處理程式碼之執行。在一些具體實例中,該中斷致使該處理器使來自資料快取記憶體之包括至少一個位址之至少一個資料快取行失效,該至少一個位址在該策略違反時處於該資料結構中。例如,ARM指令集架構(ISA)提供可基於位址使快取資料失效之指令。
圖10展示根據一些具體實例之用於處置策略違反之例示流程圖1000。流程圖1000對應於在策略違反時用於藉由寫入互鎖所執行之步驟,例如寫入互鎖112。
在1002處,寫入互鎖112將資料結構在策略違反時之快照儲存至可藉著待由處理器執行之違反處理程式碼進行存取之位址範圍。該快照可以多個方式保存。作為一個實例,寫入互鎖112可將評分卡之快照儲存至寫入互鎖112內之專用實體記憶體區塊。此可能需要實施用於主機處理器110之路徑以讀取寫入互鎖112中關於儲存該快照之記憶體區塊之一或多個位址範圍。作為另一實例,寫入互鎖112可自動地將評分卡之快照儲存至主機處理器110可進行存取的預組態記憶體位置。作為又一實例,策略處理器150可執行程式碼以經由特殊功能暫存器(SFR)介面而自評分卡擷取值,且將評分卡之快照儲存至主機處理器110可進行存取之記憶體位置。
在1004處,寫入互鎖112對處理器觸發中斷以起始違反處理程式碼之執行,以致使自資料快取記憶體收回包括在該策略違反時處於資料結構中之至少一個位址之至少一個資料快取行。例如,可針對並不提供基於位址使快取資料失效之指令之主機處理器觸發中斷,例如基於RISC-V ISA之處理器。
在1006處,寫入互鎖112進入違反處置模式,其中向處理器確認處理器所嘗試對主記憶體之未來寫入,但該等未來寫入經捨棄且不發送至主記憶體。例如,此特殊模式可允許主機處理器110之違反處理程式碼結合寫入互鎖112,用以藉由讀取與處於評分卡中之位址共享快取行之其他位址而收回該等快取行。
在1008處,寫入互鎖112回應於處理器已完成違反處理之指示而退出違反處置模式。例如,寫入互鎖112可在策略處理器150以主機處理器110之違反處理程式碼執行具有特殊詮釋資料標記之指令時退出該特殊模式。
在一些具體實例中,該指示包含自該處理器接收到之指示該處理器已完成違反處理之信號。在一些具體實例中,該指示包含已收回包括在該策略違反時處於該資料結構中之至少一個位址之所有資料快取行的判定。
圖11展示根據一些具體實例之用於執行策略之例示流程圖1100。流程圖1100對應於針對包括未經快取目標位址之儲存指令以在不使用評分卡之情況下藉由寫入互鎖來執行的步驟,例如寫入互鎖112。
在1102處,寫入互鎖112自處理器接收包括目標位址之儲存指令,將資料儲存至該目標位址,其中該目標位址未經快取。例如,寫入互鎖112可經由HTI 410而自主機處理器110接收關於儲存指令之資訊。關於儲存指令之該資訊可包括未經快取之目標位址。
在1104處,寫入互鎖112將資料儲存於與寫入互鎖相關聯之寫入佇列中。在一些具體實例中,寫入互鎖112可判定該目標位址是否經快取,且可回應於判定該目標位址未經快取而將資料儲存於寫入佇列中。
在1106處,寫入互鎖112起始儲存指令針對至少一個策略之檢查。例如,寫入互鎖112可請求標記處理硬體140確保藉由主機處理器110執行之儲存指令遵守一或多個策略,如關於圖1所描述。
在1108處,寫入互鎖112回應於檢查成功完成而致使寫入異動將資料寫入至該目標位址。舉例而言,若標記處理硬體140判定應允許有疑慮之儲存指令(例如,基於規則快取記憶體144中之命中,或來自策略處理器150之回應),則標記處理硬體140可向寫入互鎖112指示儲存指令遵守相關策略。回應於接收到對儲存指令之檢查成功完成之「允許」指示,寫入互鎖112可致使寫入異動將資料寫入至該目標位址。
圖12展示根據一些具體實例之用於執行策略之例示流程圖1200及1250。流程圖1200及1250對應於第一組處理步驟及與第一組處理步驟解耦之第二組處理步驟(例如如關於圖6所描述),以用於藉由寫入互鎖來執行,例如寫入互鎖112。例如,第一組處理步驟可關於判定儲存指令之該目標位址對於讀取何時不再是陳舊,且第二組處理步驟可關於檢查儲存指令之該目標位址對於讀取是否為不安全,及嘗試自該目標位址讀取資料之讀取異動是否應以另一合適方式暫停或處置。
流程圖1200對應於第一組處理步驟。
在1202處,寫入互鎖112自處理器接收包括目標位址之儲存指令及待儲存至儲存指令中之該目標位址之資料。例如,寫入互鎖112可經由HTI 610而自主機處理器110接收關於儲存指令之資訊。關於儲存指令之該資訊可包括目標位址及待儲存至該位址之資料。
在1204處,寫入互鎖112將對應於儲存指令之條目儲存於資料結構中。該條目可包括儲存指令之該目標位址及/或資料。例如,寫入互鎖112可將對應於儲存指令之該目標位址及資料之條目儲存於評分卡620中。
在1206處,寫入互鎖112針對至少一個策略起始對儲存指令之檢查。例如,寫入互鎖112可請求標記處理硬體140確保藉由主機處理器110執行之儲存指令遵守一或多個策略,如關於圖1所描述。
在1208處,寫入互鎖112回應於檢查成功完成而自資料結構移除該條目,且將資料儲存於與寫入互鎖相關聯之快取記憶體中。舉例而言,若標記處理硬體140判定應允許有疑慮之儲存指令(例如,基於規則快取記憶體144中之命中,或來自策略處理器150之回應),則標記處理硬體140可向寫入互鎖112指示儲存指令遵守相關策略。回應於接收到對儲存指令之檢查成功完成之「允許」指示,寫入互鎖112可自評分卡620移除對應於儲存指令之條目,且將資料儲存於與寫入互鎖112相關聯之快取記憶體502中。
流程圖1250對應於第二組處理步驟,其與第一組處理步驟解耦。
在1252處,寫入互鎖112自處理器接收包括目標位址之讀取異動,以自該目標位址讀取資料。
在1254處,寫入互鎖112判定資料結構中之任一條目是否與自處理器接收到之讀取異動之該目標位址有關。例如,決策區塊630及/或寫入互鎖112可使用讀取異動之該目標位址來對評分卡620進行索引以判定是否存在關於該目標位址之條目。若判定資料結構中之條目並不與寫入異動之該目標位址有關,則寫入互鎖112繼續進行至1256。
在一些具體實例中,若判定資料結構中之至少一個條目與寫入異動之該目標位址有關,則使讀取異動暫停直至資料結構中之條目並不與讀取異動之該目標位址有關。在一些具體實例中,若判定資料結構中之至少一個條目與寫入異動之該目標位址有關,則寫入互鎖112致使讀取異動自資料結構中與讀取異動之該目標位址相關之最新條目存取資料。
在1256處,寫入互鎖112致使讀取異動存取與寫入互鎖相關聯之快取記憶體中的資料。例如,決策區塊630及/或寫入互鎖112可請求系統匯流排115允許讀取異動存取與寫入互鎖112相關聯之快取記憶體502中的資料。
例示電腦
圖13示意性地展示上面可實施本發明之任何態樣之例示電腦1300。
在圖13中所展示之具體實例中,電腦1300包括具有一或多個處理器之處理單元1301及可包括例如揮發性及/或非揮發性記憶體1302之非暫時性電腦可讀取儲存媒體1302。記憶體1302可儲存程式化處理單元1301以執行本文所述功能中任一者的一或多個指令。除了系統記憶體1302,電腦1300亦可包括其他類型之非暫時性電腦可讀取媒體,諸如儲存裝置1305(例如,一或多個磁碟機)。儲存裝置1305亦可儲存一或多個應用程式及/或由應用程式(例如,軟體程式庫)使用之資源,該一或多個應用程式及資源可載入至記憶體1302中。
電腦1300可具有一或多個輸出裝置及/或輸入裝置,如圖13中所說明的1306及1307。可例如使用此等裝置以呈現使用者介面。可用於提供使用者介面之輸出裝置之實例包括用於輸出之視覺呈現之印表機及顯示螢幕,及用於輸出之聽覺呈現之揚聲器及其他聲音產生裝置。可用於使用者介面之輸入裝置之實例包括鍵盤及指標裝置(例如,滑鼠、觸控板,及數位化平板)。作為另一實例,輸入裝置1307可包括用於俘獲音訊信號之麥克風,且輸出裝置1306可包括用於視覺再現之顯示螢幕,及/或用於聽覺再現已辨識文字之揚聲器。
在圖13中所展示之實例中,電腦1300亦包括一或多個網路介面(例如,網路介面1310)以實現經由各種網路(例如,網路1320)之通信。網路之實例包括區域網路(例如,企業網路)及廣域網路(例如,網際網路)。此類網路可基於任何合適技術且根據任何合適協定進行操作,且可包括無線網路及/或有線網路(例如,光纖網路)。
此外,本發明技術可按以下組態體現:
(1)一種用於藉由寫入互鎖執行之方法,其包含以下動作:
執行第一處理及與該第一處理解耦之第二處理,其中:
該第一處理包含:
自處理器接收包括目標位址之儲存指令;
將對應於該儲存指令之第一條目儲存於資料結構中,其中該第一條目包括關於該儲存指令之該目標位址之資訊;
針對至少一個策略以起始對該儲存指令之檢查;以及
回應於該檢查之成功完成而自該資料結構移除該第一條目;且
該第二處理包含:
自該處理器接收包括目標位址之寫入異動,將資料寫入至該目標位址;
回應於接收到該寫入異動而判定該資料結構中之任一條目是否與該寫入異動之該目標位址有關;以及
回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關而致使將該資料寫入至該寫入異動之該目標位址。
(2)如(1)所述之方法,其中該第二處理進一步包含:
致使該寫入異動暫停。
(3)如(2)所述之方法,其中:
該寫入異動暫停一段時間;且
該段時間係基於在該處理器執行該儲存指令與該第一處理中藉由該寫入互鎖將該儲存指令儲存於該資料結構中之間的估計時間量而選擇。
(4)如(2)所述之方法,其中:
該寫入異動經暫停直到在該第一處理中已經自該處理器接收到選定數目個指令。
(5)如(1)至(4)中任一項所述之方法,其進一步包含以下動作:
將該資料結構在策略違反時之快照儲存至可藉著待由該處理器執行之違反處理程式碼進行存取之位址範圍;及
對該處理器觸發中斷以起始該違反處理程式碼之執行。
(6)如(5)所述之方法,其中:
該中斷致使該處理器使來自資料快取記憶體之包括至少一個位址之至少一個資料快取行失效,該至少一個位址在該策略違反時處於該資料結構中。
(7)如(1)至(4)中任一項所述之方法,其進一步包含以下動作:
將該資料結構在策略違反時之快照儲存至可藉著待由該處理器執行之違反處理程式碼進行存取之位址範圍;
對該處理器觸發中斷以起始該違反處理程式碼之執行,以致使自資料快取記憶體收回包括在該策略違反時處於該資料結構中之至少一個位址之至少一個資料快取行;
進入違反處置模式,其中向該處理器確認由該處理器嘗試至主記憶體之未來寫入,但該等未來寫入經捨棄且不發送至該主記憶體;以及
回應於該處理器已完成違反處理之一指示而退出該違反處置模式。
(8)如(7)所述之方法,其中:
該指示包含自該處理器接收到之指示該處理器已完成違反處理之信號。
(9)如(7)所述之方法,其中:
該指示包含已收回包括在該策略違反時處於該資料結構中之至少一個位址之所有資料快取行的判定。
(10)如(1)至(9)中任一項所述之方法,其中:
來自該處理器之該寫入異動包含第一寫入異動,且藉由該寫入互鎖在第一介面上進行接收;且
回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關,經由第二介面上之第二寫入異動將該資料寫入至該寫入異動之該目標位址。
(11)如(1)至(9)中任一項所述之方法,其中:
來自該處理器之該寫入異動包含第一寫入異動,且藉由該寫入互鎖在第一介面上進行接收;
該第二處理進一步包含以下動作:
將該第一寫入異動儲存於寫入佇列中;及
向該處理器確認該第一寫入異動;以及
回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關,經由第二介面上之第二寫入異動將該資料寫入至該寫入異動之該目標位址。
(12)如(11)所述之方法,其中:
該第二處理進一步包含判定該寫入異動之該目標位址是否經快取之動作;且
回應於判定該寫入異動之該目標位址未經快取而將該第一寫入異動儲存於該寫入佇列中。
(13)如(11)所述之方法,其中由該第二寫入異動所寫入之該資料係自儲存該第一寫入異動之該寫入佇列中之條目加以擷取。
(14)如(13)所述之方法,其中該第二處理進一步包含以下動作:
在擷取該第二寫入異動之該資料之後,將儲存該第一寫入異動之該條目自該寫入佇列移除。
(15)如(1)至(14)中任一項所述之方法,其中:
該寫入互鎖向該處理器確認該寫入異動,但捨棄該寫入異動之該資料。
(16)如(1)至(9)或(15)中任一項所述之方法,其中:
來自該處理器之該寫入異動包含第一寫入異動,且藉由該寫入互鎖在第一介面上進行接收;
該第二處理進一步包含以下動作:
判定該寫入異動之該目標位址是否經快取;及
回應於判定該寫入異動之該目標位址經快取,致使該第一寫入異動暫停直到判定該資料結構中之條目並不與該寫入異動之該目標位址有關;以及
回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關,經由第二介面上之第二寫入異動將該資料寫入至該寫入異動之該目標位址。
(17)如(16)所述之方法,其中:
判定該寫入異動之該目標位址是否經快取包含判定該寫入異動之該目標位址是否包括於未經快取位址之位址範圍中。
(18)如(16)所述之方法,其中:
判定該寫入異動之該目標位址是否經快取包含判定來自資料快取記憶體之信號是否將該寫入異動之該目標位址指示為經快取。
(19)如(1)至(18)中任一項所述之方法,其中:
執行第一破壞性讀取指令;
將嘗試存取該第一破壞性讀取指令之目標位址之第二破壞性讀取指令予以暫停;且
回應於對該第一破壞性讀取指令之檢查之成功完成,允許繼續進行該第二破壞性讀取指令。
(20)如(1)至(18)中任一項所述之方法,其中:
執行破壞性讀取指令且將讀取自該破壞性讀取指令之目標位址之資料俘獲於緩衝區中;且
回應於對該破壞性讀取指令之檢查之成功完成,捨棄經俘獲於該緩衝區中之該資料。
(21)如(20)所述之方法,其中:
回應於對該破壞性讀取指令之該檢查之不成功完成,將經俘獲於該緩衝區中之該資料恢復至該目標位址。
(22)如(20)所述之方法,其中:
回應於對該破壞性讀取指令之該檢查之不成功完成,向嘗試存取該破壞性讀取指令之該目標位址之後續指令提供經俘獲於該緩衝區中之該資料。
(23)一種用於藉由寫入互鎖執行之方法,其包含以下動作:
自處理器接收包括目標位址之儲存指令,將資料儲存至該目標位址,其中該目標位址未經快取;
將該資料儲存於與該寫入互鎖相關聯之寫入佇列中;
針對至少一個策略以起始對該儲存指令之檢查;以及
回應於該檢查之成功完成,致使寫入異動將該資料寫入至該目標位址。
(24)如(23)所述之方法,其進一步包含以下之一動作:
判定該目標位址是否經快取,其中回應於判定該目標位址未經快取而將該資料儲存於該寫入佇列中。
(25)一種用於藉由寫入互鎖執行之方法,其包含以下動作:
執行第一處理及與該第一處理解耦之第二處理,其中:
該第一處理包含:
自處理器接收包括目標位址之儲存指令及待儲存至該儲存指令之該目標位址之資料;
將對應於該儲存指令之第一條目儲存於資料結構中,其中該第一條目包括該儲存指令之該目標位址及該資料;
針對至少一個策略以起始對該儲存指令之檢查;以及
回應於該檢查之成功完成:
自該資料結構移除該第一條目;且
將該資料儲存於與該寫入互鎖相關聯之快取記憶體中;
該第二處理包含:
自該處理器接收包括目標位址之讀取異動,自該目標位址讀取資料;
判定該資料結構中之任一條目是否與自該處理器接收到之該讀取異動之該目標位址有關;以及
回應於判定該資料結構中之條目並不與該讀取異動之該目標位址有關,致使該讀取異動存取與該寫入互鎖相關聯之該快取記憶體中之資料。
(26)如(25)所述之方法,其中:
該讀取異動經暫停直至該資料結構中之條目並不與該讀取異動之該目標位址有關。
(27)如(25)或(26)所述之方法,其中該第二處理進一步包含以下動作:
回應於判定該資料結構中之至少一個條目與該讀取異動之該目標位址有關,致使該讀取異動自該資料結構中與該讀取異動之該目標位址相關一最新條目來存取資料。
(28)如(25)至(27)中任一項所述之方法,其中:
獨立於用於資料快取行之已變更位元之狀態,該處理器之資料快取記憶體收回該資料快取行而無需執行寫入異動。
(29)如(25)至(28)中任一項所述之方法,其中:
該寫入互鎖確認來自該處理器之該資料快取記憶體之寫入異動,但捨棄關於該寫入異動之資料。
如本文中所提及,術語「回應於」可指代由於結果而起始或起因於。在第一實例中,回應於第二動作執行第一動作可包括在第一動作與第二動作之間的間隙步驟。在第二實例中,回應於第二動作執行第一動作可不包括在第一動作與第二動作之間的間隙步驟。
如本說明書及申請專利範圍中所使用,參考一或多個要素之清單片語「至少一個」應理解為意謂選自要素清單中之任何一或多個要素的至少一個要素,但未必包括要素清單內所特定地列出的每一個要素中之至少一者,且未必排除要素清單中之要素的任何組合。此定義亦允許可視情況存在片語「至少一個」所指的要素清單內所特定地識別之要素除外的要素,無論與特定地識別之彼等要素相關抑或不相關。因此,作為非限制性實例,「A及B中之至少一者」(或等效地「A或B中之至少一者」或等效地「A及/或B中之至少一者」)在一個具體實例中可指至少一個(視情況包括多於一個)A而不存在B(且視情況包括B除外的要素);在另一具體實例中指至少一個(視情況包括多於一個)B而不存在A(且視情況包括A除外的要素);在又一具體實例中指至少一個(視情況包括多於一個)A及至少一個(視情況包括多於一個)B(且視情況包括其他要素)等。
如本文在說明書及申請專利範圍中使用之片語「及/或」應理解為意謂如此結合之要素的「任一者或兩者」,亦即,在一些狀況下經結合存在且在其他狀況下未經結合存在的要素。使用「及/或」列出的多個要素應以相同方式解釋,亦即,如此結合之「一或多個」要素。可視情況存在藉由「及/或」條項所特定地識別之要素除外的其他要素,無論與特定地識別之彼等要素相關抑或不相關。因此,作為非限制性實例,參考「A及/或B」在結合諸如「包含」之開放式措辭使用時,在一個具體實例中,可僅指A(視情況包括B除外的要素);在另一具體實例中,可僅指B(視情況包括除A除外的要素);在又一具體實例中,可指A及B兩者(視情況包括其他要素)等。
在申請專利範圍中使用諸如「第一」、「第二」、「第三」等次序術語修飾請求項要素本身並不意謂一個請求項要素相對於另一請求項要素的任何優先順序、優先性或次序或執行方法動作之時間次序,而是僅用作標籤以區分具有某一名稱之一個請求項要素與具有相同名稱(但使用次序術語)之另一要素,以區分該等請求項要素。
本文中所使用之措辭及術語係出於描述之目的,且不應被視為限制性的。本文中對「包括」、「包含」、「具有」、「含有」、「涉及」及其變體的使用意謂涵蓋在其後所列出之項目及其等效物以及額外項目。
在已詳細地描述本文中所描述之技術之若干具體實例之情況下,所屬技術領域中具有知識者將易於想到各種修改及改良。此類修改及改良意欲在本發明之精神及範圍內。因此,前述描述僅藉助於實例且不意欲為限制性的。技術僅如藉由以下申請專利範圍及其等效物所界定而受限。
100‧‧‧硬體系統
110‧‧‧主機處理器
112‧‧‧寫入互鎖
115‧‧‧系統匯流排
120‧‧‧應用程式記憶體
125‧‧‧詮釋資料記憶體
130‧‧‧唯讀記憶體
135‧‧‧周邊裝置
140‧‧‧標記處理硬體
142‧‧‧標記映射表
144‧‧‧規則快取記憶體
146‧‧‧標記暫存器檔案
150‧‧‧策略處理器
200‧‧‧軟體系統
205‧‧‧編譯器
210‧‧‧連結器
215‧‧‧載入器
220‧‧‧策略編譯器
225‧‧‧策略連結器
230‧‧‧除錯器
300‧‧‧硬體系統
302‧‧‧快取記憶體
400‧‧‧方塊圖
410‧‧‧HTI
420‧‧‧評分卡
430、440、460‧‧‧決策區塊
450‧‧‧寫入佇列
470‧‧‧仲裁器
500‧‧‧硬體系統
502‧‧‧快取記憶體
600‧‧‧方塊圖
610‧‧‧HTI
620‧‧‧評分卡
630‧‧‧決策區塊
700‧‧‧評分卡
800‧‧‧流程圖
802、804、806、808‧‧‧步驟
850‧‧‧流程圖
852、854、856‧‧‧步驟
900‧‧‧流程圖
902、904‧‧‧步驟
1000‧‧‧流程圖
1002、1004、1006、1008‧‧‧步驟
1100‧‧‧流程圖
1102、1104、1106、1108‧‧‧步驟
1200‧‧‧流程圖
1202、1204、1206、1208‧‧‧步驟
1250‧‧‧流程圖
1252、1254、1256‧‧‧步驟
1300‧‧‧電腦
1301‧‧‧處理單元
1302‧‧‧記憶體
1305‧‧‧儲存裝置
1306‧‧‧輸出裝置
1307‧‧‧輸入裝置
1310‧‧‧網路介面
1320‧‧‧網路
圖1展示根據一些具體實例之用於執行策略之例示硬體系統100。
圖2展示根據一些具體實例之用於執行策略之例示軟體系統200。
圖3展示根據一些具體實例之用於執行策略之例示硬體系統300。
圖4展示根據一些具體實例之用於執行策略之例示方塊圖400。
圖5展示根據一些具體實例之用於執行策略之例示硬體系統500。
圖6展示根據一些具體實例之用於執行策略之例示方塊圖600。
圖7展示根據一些具體實例之例示評分卡700。
圖8展示根據一些具體實例之用於執行策略之例示流程圖800及850。
圖9展示根據一些具體實例之用於處置策略違反之例示流程圖900。
圖10展示根據一些具體實例之用於處置策略違反之例示流程圖1000。
圖11展示根據一些具體實例之用於執行策略之例示流程圖1100。
圖12展示根據一些具體實例之用於執行策略之例示流程圖1200及1250。
圖13示意性地展示上面可實施本發明之任何態樣之例示電腦1300。

Claims (29)

  1. 一種用於藉由寫入互鎖執行之方法,其包含以下動作: 執行第一處理及與該第一處理解耦之第二處理,其中: 該第一處理包含: 自處理器接收包括目標位址之儲存指令; 將對應於該儲存指令之第一條目儲存於資料結構中,其中該第一條目包括關於該儲存指令之該目標位址之資訊; 針對至少一個策略起始對該儲存指令之檢查;以及 回應於該檢查之成功完成而自該資料結構移除該第一條目;且 該第二處理包含: 自該處理器接收包括目標位址之寫入異動,將資料寫入至該目標位址; 回應於接收到該寫入異動而判定該資料結構中之任一條目是否與該寫入異動之該目標位址有關;以及 回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關而致使將該資料寫入至該寫入異動之該目標位址。
  2. 如請求項1所述之方法,其中該第二處理進一步包含: 致使該寫入異動暫停。
  3. 如請求項2所述之方法,其中: 該寫入異動暫停一段時間;且 該段時間係基於在該處理器執行該儲存指令與該第一處理中藉由該寫入互鎖將該儲存指令儲存於該資料結構中之間的估計時間量而選擇。
  4. 如請求項2所述之方法,其中: 該寫入異動經暫停直至在該第一處理中已經自該處理器接收到選定數目個指令。
  5. 如請求項1至4中任一項所述之方法,其進一步包含以下動作: 將該資料結構在策略違反時之快照儲存至可待由該處理器執行之違反處理程式碼進行存取之位址範圍;及 對該處理器觸發中斷以起始該違反處理程式碼之執行。
  6. 如請求項5所述之方法,其中: 該中斷致使該處理器使來自資料快取記憶體之包括至少一個位址之至少一個資料快取行失效,該至少一個位址在該策略違反時處於該資料結構中。
  7. 如請求項1至4中任一項所述之方法,其進一步包含以下動作: 將該資料結構在策略違反時之快照儲存至藉著待由該處理器執行之違反處理程式碼進行存取之位址範圍; 對該處理器觸發中斷以起始該違反處理程式碼之執行,以致使自資料快取記憶體收回至少一個資料快取行,該至少一個資料快取行包括在該策略違反時處於該資料結構中之至少一個位址; 進入違反處置模式,其中向該處理器確認由該處理器所嘗試至主記憶體之未來寫入,但該等未來寫入經捨棄且不發送至該主記憶體;以及 回應於該處理器已完成違反處理之指示而退出該違反處置模式。
  8. 如請求項7所述之方法,其中: 該指示包含自該處理器接收到之指示該處理器已完成違反處理之一信號。
  9. 如請求項7所述之方法,其中: 該指示包含已收回包括在該策略違反時處於該資料結構中之至少一個位址之所有資料快取行的判定。
  10. 如請求項1至9中任一項所述之方法,其中: 來自該處理器之該寫入異動包含第一寫入異動,且藉由該寫入互鎖在第一介面上進行接收;且 回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關,經由第二介面上之第二寫入異動將該資料寫入至該寫入異動之該目標位址。
  11. 如請求項1至9中任一項所述之方法,其中: 來自該處理器之該寫入異動包含第一寫入異動,且藉由該寫入互鎖在第一介面上進行接收; 該第二處理進一步包含以下動作: 將該第一寫入異動儲存於寫入佇列中;及 向該處理器確認該第一寫入異動;且 回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關,經由第二介面上之第二寫入異動將該資料寫入至該寫入異動之該目標位址。
  12. 如請求項11所述之方法,其中: 該第二處理進一步包含判定該寫入異動之該目標位址是否經快取之動作;且 回應於判定該寫入異動之該目標位址未經快取而將該第一寫入異動儲存於該寫入佇列中。
  13. 如請求項11所述之方法,其中由該第二寫入異動寫入之該資料係自儲存該第一寫入異動之該寫入佇列中之條目加以擷取。
  14. 如請求項13所述之方法,其中該第二處理進一步包含以下動作: 在擷取該第二寫入異動之該資料之後,將儲存該第一寫入異動之該條目自該寫入佇列移除。
  15. 如請求項1至14中任一項所述之方法,其中: 該寫入互鎖向該處理器確認該寫入異動,但捨棄該寫入異動之該資料。
  16. 如請求項1至9或15中任一項所述之方法,其中: 來自該處理器之該寫入異動包含第一寫入異動,且藉由該寫入互鎖在第一介面上進行接收; 該第二處理進一步包含以下動作: 判定該寫入異動之該目標位址是否經快取;及 回應於判定該寫入異動之該目標位址經快取,致使該第一寫入異動暫停直至判定該資料結構中之條目並不與該寫入異動之該目標位址有關;且 回應於判定該資料結構中之條目並不與該寫入異動之該目標位址有關,經由第二介面上之第二寫入異動將該資料寫入至該寫入異動之該目標位址。
  17. 如請求項16所述之方法,其中: 判定該寫入異動之該目標位址是否經快取包含判定該寫入異動之該目標位址是否包括於未經快取位址之位址範圍中。
  18. 如請求項16所述之方法,其中: 判定該寫入異動之該目標位址是否經快取包含判定來自資料快取記憶體之信號是否將該寫入異動之該目標位址指示為經快取。
  19. 如請求項1至18中任一項所述之方法,其中: 執行第一破壞性讀取指令; 將嘗試存取該第一破壞性讀取指令之目標位址之第二破壞性讀取指令予以暫停;且 回應於對該第一破壞性讀取指令之檢查之成功完成,允許繼續進行該第二破壞性讀取指令。
  20. 如請求項1至18中任一項所述之方法,其中: 執行破壞性讀取指令且將讀取自該破壞性讀取指令之目標位址之資料俘獲於緩衝區中;且 回應於對該破壞性讀取指令之檢查之成功完成,將俘獲於該緩衝區中之該資料捨棄。
  21. 如請求項20所述之方法,其中: 回應於對該破壞性讀取指令之該檢查之不成功完成,將俘獲於該緩衝區中之該資料恢復至該目標位址。
  22. 如請求項20所述之方法,其中: 回應於對該破壞性讀取指令之該檢查之不成功完成,向嘗試存取該破壞性讀取指令之該目標位址之後續指令提供經俘獲於該緩衝區中之該資料。
  23. 一種用於藉由寫入互鎖執行之方法,其包含以下動作: 自處理器接收包括目標位址之儲存指令,將資料儲存至該目標位址,其中該目標位址未經快取; 將該資料儲存於與該寫入互鎖相關聯之寫入佇列中; 針對至少一個策略起始對該儲存指令之檢查;以及 回應於該檢查之成功完成,致使寫入異動將該資料寫入至該目標位址。
  24. 如請求項23所述之方法,其進一步包含以下動作: 判定該目標位址是否經快取,其中回應於判定該目標位址未經快取而將該資料儲存於該寫入佇列中。
  25. 一種用於藉由寫入互鎖執行之方法,其包含以下動作: 執行第一處理及與該第一處理解耦之第二處理,其中: 該第一處理包含: 自處理器接收包括目標位址之儲存指令及待儲存至該儲存指令之該目標位址之資料; 將對應於該儲存指令之第一條目儲存於資料結構中,其中該第一條目包括該儲存指令之該目標位址及該資料; 針對至少一個策略起始對該儲存指令之檢查;以及 回應於該檢查之成功完成: 自該資料結構移除該第一條目;及 將該資料儲存於與該寫入互鎖相關聯之快取記憶體中; 該第二處理包含: 自該處理器接收包括目標位址之讀取異動,自該目標位址讀取資料; 判定該資料結構中之任一條目是否與自該處理器接收到之該讀取異動之該目標位址有關;以及 回應於判定該資料結構中之條目並不與該讀取異動之該目標位址有關,致使該讀取異動存取與該寫入互鎖相關聯之該快取記憶體中之資料。
  26. 如請求項25所述之方法,其中: 該讀取異動經暫停直至該資料結構中之條目並不與該讀取異動之該目標位址有關。
  27. 如請求項25或26所述之方法,其中該第二處理進一步包含以下動作: 回應於判定該資料結構中之至少一個條目與該讀取異動之該目標位址有關,致使該讀取異動自該資料結構中與該讀取異動之該目標位址相關的最新條目來存取資料。
  28. 如請求項25至27中任一項所述之方法,其中: 獨立於用於資料快取行之已變更位元之狀態,該處理器之資料快取記憶體收回該資料快取行而無需執行寫入異動。
  29. 如請求項25至28中任一項所述之方法,其中: 該寫入互鎖確認來自該處理器之該資料快取記憶體之寫入異動,但捨棄關於該寫入異動之資料。
TW108104321A 2018-02-02 2019-02-01 用於後快取互鎖之系統和方法 TW201935305A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862625770P 2018-02-02 2018-02-02
US62/625,770 2018-02-02
US201862635475P 2018-02-26 2018-02-26
US62/635,475 2018-02-26

Publications (1)

Publication Number Publication Date
TW201935305A true TW201935305A (zh) 2019-09-01

Family

ID=65494529

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108104321A TW201935305A (zh) 2018-02-02 2019-02-01 用於後快取互鎖之系統和方法

Country Status (3)

Country Link
US (1) US20210055954A1 (zh)
TW (1) TW201935305A (zh)
WO (1) WO2019152822A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI850525B (zh) * 2020-04-08 2024-08-01 南韓商三星電子股份有限公司 在包括網路鍵值客戶端及網路鍵值目標的網路鍵值儲存體中對鎖定請求進行協調的系統與方法以及包含指令的非暫時性電腦可讀取媒體
TWI850923B (zh) * 2022-08-18 2024-08-01 大陸商長江存儲科技有限責任公司 記憶體元件及其操作方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210357497A9 (en) 2018-02-02 2021-11-18 Dover Microsystems, Inc. Systems and methods for transforming instructions for metadata processing
WO2019152772A1 (en) 2018-02-02 2019-08-08 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
TW201945971A (zh) 2018-04-30 2019-12-01 美商多佛微系統公司 用於檢查安全性能的系統和方法
TW202022678A (zh) 2018-11-06 2020-06-16 美商多佛微系統公司 用於停滯主處理器的系統和方法
US12124566B2 (en) 2018-11-12 2024-10-22 Dover Microsystems, Inc. Systems and methods for metadata encoding
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
EP3912061A1 (en) 2019-01-18 2021-11-24 Dover Microsystems, Inc. Systems and methods for metadata classification
US11232208B2 (en) 2019-02-26 2022-01-25 The Trustees Of The University Of Pennsylvania Methods, systems, and computer readable media for adaptive metadata architecture
US12079197B2 (en) 2019-10-18 2024-09-03 Dover Microsystems, Inc. Systems and methods for updating metadata
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
US12253944B2 (en) 2020-03-03 2025-03-18 Dover Microsystems, Inc. Systems and methods for caching metadata
US12124576B2 (en) 2020-12-23 2024-10-22 Dover Microsystems, Inc. Systems and methods for policy violation processing
US11797231B2 (en) * 2021-08-17 2023-10-24 Micron Technology, Inc. Hazard detection in a multi-memory device

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247653A (en) * 1990-08-17 1993-09-21 Seagate Technology, Inc. Adaptive segment control and method for simulating a multi-segment cache
US5973662A (en) * 1997-04-07 1999-10-26 Johnson Controls Technology Company Analog spectrum display for environmental control
US6571204B1 (en) * 1998-08-04 2003-05-27 Micron Technology, Inc. Bus modeling language generator
JP2001155487A (ja) * 1999-11-30 2001-06-08 Mitsubishi Electric Corp 半導体集積回路および半導体集積回路システム
NO315959B1 (no) * 2002-04-16 2003-11-17 Thin Film Electronics Asa Fremgangsmåter til lagring av data i et ikke-flyktig minne
US8601223B1 (en) * 2006-09-19 2013-12-03 Nvidia Corporation Techniques for servicing fetch requests utilizing coalesing page table entries
US7516287B2 (en) * 2006-09-28 2009-04-07 Emc Israel Development Center, Ltd. Methods and apparatus for optimal journaling for continuous data replication
US8484524B2 (en) * 2007-08-21 2013-07-09 Qualcomm Incorporated Integrated circuit with self-test feature for validating functionality of external interfaces
US7774540B2 (en) * 2007-12-26 2010-08-10 Hitachi Global Storage Technologies Netherlands B.V. Storage system and method for opportunistic write-verify
US8145805B2 (en) * 2008-06-09 2012-03-27 Emulex Design & Manufacturing Corporation Method for re-sequencing commands and data between a master and target devices utilizing parallel processing
US8838853B2 (en) * 2010-01-18 2014-09-16 Marvell International Ltd. Access buffer
US20150195340A1 (en) * 2010-09-30 2015-07-09 Google Inc. Determining if an Application is Cached
US9672153B2 (en) * 2011-06-13 2017-06-06 Arm Limited Memory interface control
JP5847459B2 (ja) * 2011-06-30 2016-01-20 キヤノン株式会社 読取制御装置、画像読取方法及びプログラム
US10198350B2 (en) * 2011-07-28 2019-02-05 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
EP2677715A1 (en) * 2012-06-22 2013-12-25 Alcatel Lucent A method and a server for evaluating a request for access to content from a server in a computer network
JP6011194B2 (ja) * 2012-09-21 2016-10-19 富士通株式会社 演算処理装置及び演算処理装置の制御方法
WO2014061068A1 (en) * 2012-10-19 2014-04-24 Hitachi, Ltd. Storage system and method for controlling storage system
US10049061B2 (en) * 2012-11-12 2018-08-14 International Business Machines Corporation Active memory device gather, scatter, and filter
US9032165B1 (en) * 2013-04-30 2015-05-12 Amazon Technologies, Inc. Systems and methods for scheduling write requests for a solid state storage device
WO2016086085A1 (en) * 2014-11-26 2016-06-02 The Travelers Indemnity Company Targeted user access control system
US9547460B2 (en) * 2014-12-16 2017-01-17 Dell Products, Lp Method and system for improving cache performance of a redundant disk array controller
CN105302478B (zh) * 2015-09-23 2019-09-24 联想(北京)有限公司 一种数据存储方法及电子设备
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
GB2548845B (en) * 2016-03-29 2019-11-27 Imagination Tech Ltd Handling memory requests
CN107608905B (zh) * 2017-09-11 2020-05-12 杭州中天微系统有限公司 擦写Flash数据的方法及装置
US10514990B2 (en) * 2017-11-27 2019-12-24 Intel Corporation Mission-critical computing architecture
US10831745B2 (en) * 2018-01-30 2020-11-10 Walmart Apollo, Llc Database protocols and retrieval techniques

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI850525B (zh) * 2020-04-08 2024-08-01 南韓商三星電子股份有限公司 在包括網路鍵值客戶端及網路鍵值目標的網路鍵值儲存體中對鎖定請求進行協調的系統與方法以及包含指令的非暫時性電腦可讀取媒體
TWI850923B (zh) * 2022-08-18 2024-08-01 大陸商長江存儲科技有限責任公司 記憶體元件及其操作方法

Also Published As

Publication number Publication date
US20210055954A1 (en) 2021-02-25
WO2019152822A1 (en) 2019-08-08

Similar Documents

Publication Publication Date Title
TW201935305A (zh) 用於後快取互鎖之系統和方法
US12530220B2 (en) Systems and methods for stalling upstream component
US12124576B2 (en) Systems and methods for policy violation processing
US12248564B2 (en) Systems and methods for transforming instructions for metadata processing
US12524394B2 (en) Systems and methods for updating metadata
US11841956B2 (en) Systems and methods for data lifecycle protection
US9129106B2 (en) Systems and methods for secure in-VM monitoring
US20220129343A1 (en) Systems and methods for reducing exception latency
US12393677B2 (en) Systems and methods for metadata classification
CN114222981B (zh) 能力写入地址跟踪
US9424427B1 (en) Anti-rootkit systems and methods
US10061918B2 (en) System, apparatus and method for filtering memory access logging in a processor
CN112464231A (zh) 基于虚拟机的威胁检测方法及系统
US20140317742A1 (en) Hypervisor-based buffer overflow detection and prevention
CN112463287A (zh) 基于插桩的访问请求处理方法及系统
US20240354412A1 (en) Systems and methods for on-demand loading of metadata
Razeen et al. Better performance through thread-local emulation
Moon Hardware techniques against memory corruption attacks
Kharbutli Improving the security of the heap through inter-process protection and intra-process temporal protection