TW200937293A - Known good code for on-chip device management - Google Patents

Known good code for on-chip device management Download PDF

Info

Publication number
TW200937293A
TW200937293A TW097147296A TW97147296A TW200937293A TW 200937293 A TW200937293 A TW 200937293A TW 097147296 A TW097147296 A TW 097147296A TW 97147296 A TW97147296 A TW 97147296A TW 200937293 A TW200937293 A TW 200937293A
Authority
TW
Taiwan
Prior art keywords
kgc
processor
circuit
core
integrated circuit
Prior art date
Application number
TW097147296A
Other languages
English (en)
Inventor
Garth D Hillman
Geoffrey Strongin
Andrew R Rawson
Gary H Simpson
Ralf Findeisen
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of TW200937293A publication Critical patent/TW200937293A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/76Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Stored Programmes (AREA)

Description

200937293 \ 六、發明說明: , 【發明所屬之技術領域】 本發明係有關處理器和電腦糸統的領域,尤有關在此 種系統内使用已知優良程式碼(known good code)來擴充處 理器的架構、控制機載裝置(on-board devices),以及其 他用途。 【先前技術】 處理器是設計成用來執行定義在指令集架構 (instruction set architecture,ISA)裡的指令。ISA 定 ❹ 義了指令、該指令的編瑪方式,以及執行指令時要進行的 操作。ISA通常也會定義處理器不同的操作模式,以及為 了成功編程該處理器以完成所需操作,程式設計師需要知 道的其他資訊。換言之,ISA基本上是用來描述當提供一 串要執行的指令流時,處理器該如何操作的描述。 由於程式設計師相信處理器會依照ISA所指定的方式 、運作,對於ISA的修改必須很小心,通常會同時徵詢程式 設計師(或軟體廠商)與處理器設計師(或處理器廠商)的意、〇 見。處理器也必須跟著ISA的修改來作硬體上的修正,以 確保所需操作是處理器可以提供的。因此必須要仔細描述 修改的定義’並且獲得雙方同意,因為處理器新一代的硬 體必須要實施這些修改。之後的修改甚至需要在更新-代 的硬體上實施。 【發明内容】 ♦把例的積體電路包括至少—個處理器的核心、至少 94563 4 200937293 •一個其他的電路’以及組構成用來將KGC輸送至處理器的 核心來執行之已知優良程式碼(Known Good Code,KGC)的 來源。對於其他的電路而言,KGC包含的介面程式碼 (interface code),能讓在至少一個處理器核心上執行的 應用程式,可以藉由KGC的介面而接觸到至少一種別的電 路。 【實施方式】 雖然本發明可進行多種變更並且具有別的形式,此處 仍將以附圖作為範例,舉出特定的實施例並加以詳細說 明。然而應了解的是,附圖與詳細的說明並非用來將本發 明限制在特定的揭露内容;相反地,是打算涵蓋在所附之 申請專利範圍的精神與領域内所有的修改、均等物,以及 其他作法。 以下敘述乃關於使用已知優良程式碼(KGC)來實作處 理器架構上的變更’並且是採取更具彈性的方式(例如:透 ❹過執行KGC來模擬該變更)。此外,以下敘述亦關於其 他的應用。在敘述這些應用之前’先來簡單介紹KGC。 i知優良锃式碼(KGC)簡介 大致說來’ KGC是指一種程式褐,在其有效的壽命期 間此防止未經授權的竄改,並且是僅由通過驗證的實體所 提供。通過驗證的實體可為處理器的製造商所熟識、值得 信賴的實體。舉例來說,KGC可藉由儲存在無法修改的儲 存體中來防止竄改,其中在儲存體與處理器之間的通訊機 構也採用某種方式的保護措施。另一種作法是仍將KGC儲 94563 5 200937293 存於可被修改或是未經保護的儲存體中,但是在執行之前 必須通過密碼的驗證。 KGC可執行在安全執行的計算環境(secure execirticm computing environment,SECE)。SECE 是一種計算環境, 其中程式碼(KGC)與其相關資料是不能被同時執行在該電 腦中的其他程式碼所修改或是檢閱的。SECE可由處理器的 硬體產生(如開機時),或是在啟動後隨即執行的軟體來產 生SECE並將KGC置於SECE内。SECE的例子像是:處理器 中的微碼(microcode)引擎;一種處理器,用來將KGC從本 地安全的非揮發性記憶體載入處理器的指令與資料快取 (caches)内,並將程式碼與資料鎖定在快取中;以及一種 嵌入式(embedded)的處理器或是別的執行引擎,可從本地 非揮發性的記憶體與通訊介面,如果存在的話,來執行KGC 至其他的裝置,其中該嵌入式的處理器或是別的執行引擎 若非已經通過了驗證、被授權或是很可能經過了編碼,便 是實體上已受到保護(例如,位於多晶片(multi-chip)的模 組内)。為求明確’當KGC是由處理其他程式碼的同一顆處 理器所執行時’可稱為「本地的KGC」(native KGC);當 KGC是由橡嵌入式處理器的不同處理器所執行時,稱為「非 本地的KGC」(non-native KGC)。如果詞彙KGC使用時未 註明「本地」或「非本地」的話’則表示該處内容並無不 明綠之處,或是本地或非本地KGC皆可使用。 第1圖是某實施例之處理裔與相關KGC在概念層次的 方塊圖。如圖所不,其含有處理器10以及KGC的來源12。 6 94563 200937293 •視需要可包含加密驗證單元14七洽病舍為到伴 護的記憶體16。在卢理 -、/或是變更時會又到保 ‘ 護的記憶體16内或e ^ 1G與KGG(位於變更時會受到保 ,會受到保護(第1圖;的==)之-通訊連結也
的:透二r護的通道18直捩連結到KGC 源12不能被任何未:授=會受到保護(即KGC的來 需要加密驗謹單元所變幻,郝麽就可以不 〇雜,以及在某些情況下,==包括製造::的實 如=:可,何储二 並/又有透過受保護的通道18直接連結 到KGC的來源12 ’那麼⑽在來源12内或是在傳輸到 變更時會受到保護的記憶體16期間,有被未經授權而寬改 的風險。加密驗證單元14可用來驗證KGc,確保此種竄改 不會發生。舉例來說,加密驗證單元14可以使用處理器中 ❹用於驗證之可信任的根(ro〇t 〇f trust for verification,RTV)來驗證KGC。在各式的實施例中可採 用任意的驗證方案。 通過驗證的KGC會儲存在變更時受到保護的記憶體 16,以供處理器1〇透過受保護的通道18來讀取。某些實 施例還會保護從K G C的來源12至變更時受到保護的記憶體 16之間的通道,以及保護KGC來源12的變更,如此便不 需要加密驗證的機制了。也會實作此種實施例的情形像是
如果變更時受到保護的記憶體16,其潛時(1 atency)較KGC 7 94563 200937293 的來源12還要小,或是該記憶體16可提供除了變更保護 - 以外的其他好處(例如較低的功耗,或是在多處理器系統中 進行同時存取,其中每個處理器都具有本地變更時受到保 護的記憶體16,或是有部分的處理器會共享變更時受到保 護的記憶體16等)。 一般說來,變更時會受到保護的記憶體16可為任何一 種被限制或是已經移除可改變記憶體16内容能力的記憶 體。具體而言,變更時會受到保護的記憶體16可限制自身 内容的改變僅可由經過授權者來操作。變更時會受到保護 〇 的記憶體16可實際上被隔離開來,使得只有經過授權的實 體才能改變其内容,或是以別的方式來保護(像是鎖定在快 取記憶體内)。 第2圖至第4圖是數種KGC來源可能的實施方式。雖 然並無一一列舉出來,這些範例仍描繪出多種可保護KGC 至不同程度的實施例。應注意的是第2圖至4中的任一實 施例,可視需要採用一個以上的處理器。 q 第2圖的方塊圖是某實施例的積體電路20,其包含處 理器10與用來儲存KGC之非揮發性的記憶體22。因此非 揮發性的記憶體22便可作為KGC的來源12,同時也是變 更時會受到保護的記憶體,這是因為它和處理器10 —樣被 實質上包含在同一個積體電路20當中。也就是說,非揮發 性的記憶體22無法在積體電路20以外被存取,並且用來 存取記憶體22的通道也是實質上被保護的。 非揮發性的記憶體22可具有多種實作的方式。舉例來 8 94563 200937293 說’非揮發性的記憶體22可為一種唯讀的記憶體(rea(j- only memory,ROM)、由電池維持的MM或是固態記憶體。 其他實施例的非揮發性記憶體2 2可能是記憶體的組合(例 如’一種ROM或是別的非揮發性記憶體,以及載入並鎖定 KGC的快取記憶體)。對於載入並鎖定KGC之快取記憶體的 例子而言’也可由其他的機構來實作(像是被鎖定的項目 (entries)便不能因為連慣性(coherency)的緣故而被窺 探’以避免程式碼/資料透過連慣性的機構而被窺視;測 〇 ^ 試用的埠(ports)與其他不屬於標準快取查找的存取點,會 被停用而無法存取鎖定的項目等)。 • 第3圖是另一項實施例之處理器1〇與KGC的方塊圖。 在第3圖的實施例中,處理器的積體電路24(含有一或多 個處理器10)被包含在具有非揮發性記憶體22的多晶片模 組(multi-chip module,MCM)26内。在某些情況下,處理 器10可以仍然執行KGC(本地的KGC),或是提供一種執行 Ο 引擎28來執行KGC(非本地的KGC)。執行引擎28可和處理 器的積體電路24進行通訊。某實施例中,該執行引擎28 與非揮發性的記憶體22可以整合進同一個積體電路内(例 如單晶片系統(system on a chip)) _。具體而言,執行引擎 /非揮發性記憶體的單晶片系統可以是一種可信賴的平台 模組(trusted platform module,TPM)。本實施例的非揮 發性記憶體22能再次作為處理器1〇的KGC來源12,並且 可能不具有加密驗證單元14。在某些實施例中,處理器的 積體電路24内可能有變更時會受到保護的記憶體(例如鎖 94563 9 200937293 定快取)。 在第4圖的實施例中’處理器1 〇被包括在一種具有§己 憶體控制器30、以及儲存本地KGC之記憶體32(可為非揮 發性)的系統中。本例中由於記憶體32位於處理器10以 外,因此本地的KGC可在加密驗證單元14(例如,位於記 憶體控制器30或是處理器10裡面)進行加密驗證。也可能 具有變更時會受到保護的記憶體16(像是處理器1〇内的鎖 定快取)。
記憶體32可以是電腦系統中的基本輸出入系統 (basic input/output system,BIOS),或是包含在系統内 的其他非揮發性記憶體。
_由於修 1架構(architectural modification)而棘移至 KGC
因為KGC是由通過驗證的(可信任的來源)實體所恭 供,並且受到保護免於未經授權的竄改,因此KGC是處迫 器的製造商可以馆任的。故對於尚未以處理器的硬體變衰 來實作的架構修改’便可用KGC來實作。採用kgc實作备 架構能讓使用者(例如程式碼的作者以及包含該處理器# =統)在擴充的處理器架構以硬體實作之前(或是使月 架構中已經被刪除的部分,且該嶋部分已經在硬體實七 了 ,便可使用該擴充的處理器架構。 产二:ur理器架構(像是新的指令、對於現肩 曰:其執㈣境添加新的功能、添加新的加速器 (_1伽_賴m輯(wti_ 在 94563 200937293 處理器之内或是與處理 密妹人 在以硬體實作之乂 ° 、、”(closely coupled)), 日㈣SI:可先用KGC來實作。如果以KGC實作 擴充部分用;^處理器架構有任何麵上的問題,便能在 身)。。從:充所期實:得之:的先好行處=例如’變更該擴充本 的功耗等地可從KGC二=’更高:效能、更低 _ . . , J只1卜尤订5子估,之後以硬體實作該 ==大的信心。此外,如果競爭對手使用相同 ❹ 的:… 5丨進新的功能’也可藉由KGC來實作同樣 的功敗*,以快速趕上對手的變化。 &於木構巾被刪除的部分(像是刪除不再被廣泛使用 的才"。或疋被認為不再廣泛使用;又或是刪除不再需要 的傳統操作模式,或是被認為不再需要》可使用kgc來實 作被刪除的魏。舉說,如果报久以前的程式碼仍在 使用該項功能’ _效能會較差’但是該舊程式碼卻仍然 月巨夠正常運作,因此便能放心地進行刪除。 ❹ 使用KGC来實作架構上的修改,可實作一種用來轉移 給KGC執行的機構。該機構可包括處理器,用來偵測目前 正在執行的程式碼。如果有使用到架構修改的部分,便會 執行KGC以回應該偵測的結果。此處目前正在執行的程式 碼是指使用者的程式’雖然該程式也有可能是具有特權的 程式碼(privileged code ’像是作業系統或別的特權程式 碼)。轉移對於使用者的程式而言是透用的,如此便能就使 用者的程式模擬出系統的擴充或是刪除。 該機構包含可編程的對映表(programmable map),能 11 94563 200937293 利用可被處理器使用的資料來編寫程式,用來摘測架構上 的修改。編寫進對映表的資料會視偵測修改的方式而定。 舉例來說,如第5圖與第6圖描繪的實施例,該資料可包 :全部或疋一部分的指令編碼(instructi〇ne^心叩像 疋運算碼(〇pc〇de)、運算竭的修飾符(助、運算元 的欄位等)。該資料也包括不同賴式指示(肋如 lndlCati〇n)’來自一或多個設置/控制暫存器,用來指示 目前處理器的操作模式。該資料可能還包括執行指令時所 產=的地址或是資料’如第7圖與第8圖所描繪的實施例。〇 該:貝料包括指令編碼和執行軸產生的資料/地址與/ 或其他在執行聘期可能產生之事件(像是異常 (eXCepti〇n)、特殊種類的異常、中斷(interrupt)、特殊 種類的中斷等)的任意組合^可編程的對映表可以是任意儲 存體或是料體的組合(像是可被處理n的指令所定址的 暫存器、s己憶體的陣列等)。 第5圖的方塊圖展示在被偵測到的指令要進行執行之 則,當時之轉移機構的實施例。第5圖中,制者的程式 〇 包,I項新的指令(對映到某項架構上的擴充)。同樣的操 作可此發生在使用者的程式含有被删除的指令,或是含有 已經因為架構上的修改而被改過操作的指令。同樣在第5 ^中的還有KGC、使用者程式的狀態(state)40、KGC的狀 態42。使用者程式的狀態40包含處理器的架構狀態,對 於使用者的程式而言是可見(visible)的(例如,暫存器的 值)。KGC的狀態42也包含處理器的狀態,但是只有在執 94563 12 200937293 行KGC的程式碼時才是可見的。也就是說 碼無法讀寫KGC的狀態42。因此 f =的私式 專_ ’也4為模擬尚絲處理 作 修改的一部分。KGC的狀態42至少 ^作之木構 KGC 舉例來說’暫存器可用來儲存 KGC產生歧用的資料,與來錯存 的記憶體指標(Pointer)。暫存器也可以 GC使用 ο 執Γ設置或控制資料。如第 旎存取使用者程式的狀態4〇(箭頭44) 狀㈣。但是脱卻可以存㈣的狀rrr頭= 及使用者程式的狀態(箭頭48)。 使用者的程式包含像指令U、I2、 第5圖所示。通常指令㈣……⑽:義: =集架構中的指令,並且是由處理器ig實作的⑽為巨 =令(:acr〇 lnstructions))/ 其中一個指令(第 5 圖 ==3_構上的修改而新定義出的指 々二,且疋由KGC來實作。也就是說,該指令並未定義在 ==器硬體實作的架構中。如果Μ執行,該指令便 會:士=0的一個異常。另一種情形是該指令之前已 的新功月匕。處理器1〇可含有該指令執行階段前的對映 =Ixrte卿咖,如箭頭5(01避免異常(如果有 。如箭頭50所示 移至KGC也會啟用KGC的狀態42,使得對於正要在脱内 94563 13 200937293 執行的指令而言,KGC是可見的。某些情形 ==的特權層級,不但是用來確保 : 能,同時也能保證任何會對使用者的程式造成 =常:但是部不需要執行到KGC的事件,就算在執成
時=是可以讓異常發生。因此會將提高的特權僅限 些資源、或是整體特權保護方案中的特定部分等等。“ KGC也包括指令流KGC丨丨至脱m,如第5圖所示。 KGC的指令也是巨集指令,並且也是定義在由處理器1〇實 作的指令集架構中(但卻不具有kgc模擬的架構修改部 分)。當KGC的指令執行時便模擬出尚未實作在處理器w 内的架構修改。在KGC執行完畢時的指令,通常會回到使 用者程式中新指令的下面一個指令(如第5圖的,但是 從另-執行點處繼續執行也是有可能的(例如,如 = 指令不只-個的話,便是使用者程式中的下一行 如果偵測到錯誤的話,便是一項異常或是其他的錯誤處理 常式(error handling routine))。
同理,KGC也能模擬因為架構上的修改實作於處理器 10之後而被刪除的功能。例如若某指令已從架構中刪除, KGC便可模擬該指令,使舊的使用者程式仍然可以繼續運 作。再者,如果處理器10並未正確地實作出某個指令(像 是處理器硬體的錯誤),KGC也能用來提供正確的操作。 第6圖的方塊圖是處理器1〇的實施例,實作出對於 KGC指令執行階段前的對映。本實施例的處理器包括於 令的快取(ICache)60、取碼單元(fetch unit)62、解竭單 94563 14 200937293 元(decode unit)64、執行核心66、使用者狀態的儲存器 ⑽一、KGC狀態的儲存器7G,以及可編程的對映表72。取碼 單το 62會連接到ICache 6〇與解碼單元,並且進一步 ,接至可編程的對映表72與執行核心66。執行核心⑽則 ^7G步連接到使用者狀態的儲存器⑽以及KGC狀態的館 處理器10在執行使用者的程式時,會_取碼 ❹ 處取躲令,並令提供給解褐 二二广二:64解碼該指令後’將已解碼的指令提 =執仃核心66來執行。某些情形下解 在執仃KGC的話,便為KGC狀態的儲存器7〇)。 此=解碼單元64會連接到可編程的對表其中 T,·扁程對映表72中的程式舍太虚 執行体打# I 處理器1〇開機時、於 =任何使用者的程式前進行編程。可編 *統指定的位置讀取對體的電路㈣ 内作為預備處理器10來執^令^入;^程的對映表打 ㈣映表72内的資料,能分辨 I浚疋4刀要轉移給KGC執行的 也會用到的運算娜位、修飾符、運算元的說可 可包括不同的模式指^』只施例之可編程對映表的資料 94563 15 200937293 如果解碼單元64偵測到某個指令是指明在可編程對 映表72中,解碼單元64會放棄該指令(以及使用者程式流 内的後續指令),並且發訊號給取碼單元62去取出KGC(見 第6圖的取出KGC訊號)。本地的KGC ’舉例來說,可被鎖 定在I Cache 6 0内。另一種作法為,將本地的KGC放在同 一枚晶片中的非揮發性記憶體内或是同一個MCM中,又或 是在隔離開的系統記憶體中。其他實施例的解碼單元64可 月b會發5凡就給像是第3圖中的外部執行引擎,來執行非本 地的KGC。 解碼單元64可包含任意的解碼電路。解碼單元可含有 一或多種硬體的解碼器,組構成用來解碼指令(若具備不口、 一個解褐器,便會對不⑽指令平行解碼)。對於更複雜/的 =,解碼單元也可以包括—種微碼單元,組構成 送(dispatch)微碼的常式。 執行核心66可具有任意的執行設置(像 〇 (s叩⑽alar)、超管線(卿erpipeHned序( ordpr)、無序(ou卜〇卜_ 、 序(in 在本地種正在_,此外^行核^6只有 70。使用者狀態的儲存器68與KGC態的儲存器 有任意的半導體儲存I置(暫存器、暫=餘存器70各具 file)、記憶體陣列等)。 n 子器檔案(register 第7圖的方塊圖說明轉移機構的另—心 所偵測出的指令(要轉移給 另項實施例,處於 或是正在執行當中。和第5 仃的扣令)開始執行之後 第5圖—樣,第7圍插緣了使用者 94563 16 200937293 • 的程式以及KGC。本實施例中在實作出架構修改的指令被 執行以後’其執行時發生的事件可用來偵測KGC將要被執 行了。同樣描繪在第7圖的是使用者程式的狀態40以及 KGC的狀態42,與第5圖類似。也和第5圖類似的是使用 者的程式會存取使用者裎式的狀態40(箭頭44),而非KGC 的狀態42。而KGC則會存取KGC的狀態42(箭頭46)以及 使用者程式的狀態(箭頭48)。 ❹ 使用者的程式包括像指令II、12、13等的指令流,如 第7圖所示。通常指令II、12、13、14、10 Inst、15與 16是巨集指令。指令1〇 inst對映到輸入/輸出(1/〇), 若不是記憶體對映輸入輸出(memory-mapped I/O)便是 對映輸入輸出(in/out I/O,1010)。ι〇ΙΟ相當於χ86指令 集的IN與OUT指令。通常ΐοίο指令可為能產生1/〇週期 的任意指令,其中I/O週期發生在1/0的地址空間,該地 址空間與記憶體地址空間是分開的,對處理器而言也會認 Ο 為是分開的。指令Inst會在執行時被處理器偵測到, 並透過觸發(trigger)事件(箭頭80)轉移給KGC執行。 在某實施方式中,觸發的事件可為在執行I〇 Inst時 產生的地址。另一種作法是以執行時被讀取或寫入的資料 作為觸發事件,或是執行I0 Inst時任何其他的事件,都 Y作為觸發事件。其他實施例中該指令並不需要是一種〖/ο 只要是能引發-個事件並且可被處理器1M貞測為觸 發事件即可。其他的觸發事件包括計時器逾時、_出錯 誤(如ECC錯誤)或是機器狀態内其他可被偵測的變化。 94563 17 200937293 第8圖的方塊圖是處理器ίο的另一項實施例,實作出 根據觸發事件’在執行時或是執行後將指令對映給。 類似於第6圖,第8圖的實施例包括指令的快取(ICache) 60、取瑪單元62、解碼單元64、執行核心⑼、使用者狀 態的儲存器68、KGC狀態的儲存器7〇,以及可編程的對映 表72。取碼單元62會連接到ICache 60與解碼單元64, 並且進步連接至執行核心66。執行核心則進一步連 接到使用者狀態的儲存器68以及KGC狀態的儲存器7〇。 Ο 在第8圖的實施例中,執行核心66會連接到可編程的 =表72,該對映表72會對取碼單元犯(或是外部的執行 發出取回KGC的指示。可編程的對映表72能識別出 一段範圍的地址、資料、一段範圍的資料、異常、 中斷專,來在指令的執㈣間作為—_發事件以轉移至 、、中的資料也包括用來朗指令(像是運算碼與其他 的編碼)的資料,並可選擇性地連同執行時產生的二起 〇 =識別會發生轉移至猶的射。如前所該= 包括不同的模式指示。 外核。66除了發出需要取回/執行KGC的訊號以 外,也會對相當於觸發事件的指令進行同 指令以及所有之前的指令都執行完畢前,暫緩第二個: 指令的執行;在KGC執行完畢前,不要 位於該觸發指令之後的指令) 使用者程式中 (Pipeline)的執行階段前,切碼單元64盘 、泉 去清除(purge)使用者程式的指人,<、丨〜、他别勺早70 τ A疋利用該取回KGC的 94563 200937293 * 訊號來作為清除的訊號。 KGC的其他用_ 除了前段將KGC用於架構修改的討論以外’ KGC尚有 其他的應用_。 例如第9圖描繪的積體電路90包括一或多個通用 (general purpose,GP)的核心92A至92N ’以及一或多個 專用(special purpose,SP)的核心94A至94M。所有的核 心皆整合在單一的矽基板上(或是在其他實施方式裡則是 ® 包含在MCM中)。GP核心92A至92N可為類似處理器1〇的 處理器,設計成用來執行定義在指令集架構中的指令。sp 核心則可為加速器、添加的功能或是別的裝置。舉例來說, SP核心可以是對於圖形運算最佳化的圖形處理單元 (graphics processing units,GPUs)、用來實施加密任務 的加密加速器、可信賴的平台模組、做為電源管理的低功 耗/低效能的處理器核心,以及其他需要的裝置。如果包 ❹含不只一個SP核心’則每個SP核心都會是不同的。通常 SP核心94A至94M會包含除了 GP核心92A至92N以外其 他必須的電路。 第9圖實施例的KGC可為一種裝置管理器96,用來控 制GP核心92A至92N對於SP核心94A至94M的存取。kgc 會扼供應用私式介面(appl i cat ion programming interface’API)供使用者的程式使用,以便在GP核心92A 至92N上執行的時候’能夠存取Sp核心94A至94M。因此 SP核心94A至94M是會被修改的,包括如何存取遑竣核心 94563 19 200937293 的方式,但是GP核心92A至92N(以及使用者的程式)卻可 以不受這些修改的影響。此外KGC的裝置管理器96會處理 任務(task)的優先序,以及在Gp核心92A至9跗之間共用 SP核心94A至94M。舉例來說,當需要執行較高優^序、的 任務時,SP核心94A至94M可處理較低優先序的任kgc 的裝置管理器96會中斷SP核心,儲存對映到較低 ❹ ==開始執行較高優先輪務。脱的裝 官理器96具有安全的儲存位置,用來存放不同任務 〜、’好讓錄態不至於暴露給不相_使 是說,藉由KGC便可讓某程式的狀態,對於別 是隱藏起來的。舉例來說,如果某 私式而吕 置,那麼加密所需的金_及其他敏感的;^個加密裝 其他程序(pro⑽)無法相的。再者 /疋不相關的 96也可以模擬成sp的核心,好讓、的裝置管理器 是當所有實體的核心都在使用中而丄:可以被移除,或 為虛擬的核心來執行該需求。到新的需求時,作 Ο
Gc的裝置官理器96也能控制積體 置的啟用或是停甩。此項特徵可 電路9〇裡面,裝 多少就買多少(Pay-as-you__g〇)」的^應用,像是支援「用 特徵’停用已經過期的特徵。也可以二式,啟用已經購買的 但是於客戶另外付費之後再啟用。售出時先停用特徵, 以恥C作為裝置管理器96 心似至92N發出之請求的操作^施例’用來回應卯核 程圖。苐10圖的方塊是為了方便I撝繪於第10圖的流 '、解,也可以採用其他的 94563 20 200937293 ' 順序。KGC包含的指令在執行時能實作出第10圖的流程。 KGC會判斷被請求的核心是否存在於積體電路9〇内 (決策方塊130)。如果被請求的核心不存在的話(例如,該 核心已被移除,或是積體電路9〇後來的設計未包含該核心 —決策方塊130,No接腳),kgc便會模擬該不存在的核心 (方塊132)。另一種作法為,如果被請求的核心不在積體 電路90中,但是包含處理器的電腦系統裡其他地方有均等 的硬體(equivalent hardware)可用,KGC便會和該外部硬 體進行通訊,以實施請求的任務。藉由提供存在與否的檢 查以及核心的模擬,KGC便能讓依賴SP核心94A至94M才 能執行的程式仍然正常運作,即使這些SP核心並不存在。 如果積體電路90具有該被請求的核心(決策方塊 130,YES接腳)’ KGC會判斷被請求的核心94A至9指目前 疋否可以使用(決策方塊134)。某一類型的核心可能不只 一個,如果所請求類型的核心94A至94M其中有任何一個 ❹是可甩(像是已被啟用且正在間置)的話,便指定該核心來 執行任務。如果被請求的核心94A至94M是可用的話(決策 方塊134,YES接腳)’ KGC會編程該核心去執行被請求的 任務(方塊1.36)。該任務完成以後(決策方塊138,YES接 腳)’ KGC會通知請求的程序(reqUest〇r)(方塊140)。判斷 任務的完成可具有不同的形式。舉例來說’ KGC會輪流詢 問(poll)指定的核心94A至94M,或是由指定的核心在做 完時發出中斷。如果該完成的任務強佔(preempt) 了核心上 別的任務(決策方塊142,YES接腳),KGC會從安全的儲存 21 94563 200937293 器處’安全地傳送被強佔任務的任務狀態(taskstate)(方 塊144),葬且編程核心去實施該項請求(方塊136),從儲 存的狀態開始依照前述的方式,繼續往下執行。安全的儲 存器可以,KGC的分配資料儲存空間,除了脱以外其他 的程式碼是看不到的(像是分配的資料快取儲存器、可寫入 的Ν·Μ儲存器等)。如果該完成的任務並沒有強佔別的任 務,並且尚有任務等待被執行(位於安全的儲存器中一決策 方塊146 ’ YES接腳)’ KGC便會從安全的儲存器,安全地 傳送該等候執行之任務的任務狀態(方塊144),也會編程 〇 核心使其執行該正在等待的任務(方塊136),然後依照前 述的方式運行。 : 如果被請求的核心無法使用(決策方塊134,N〇接 腳),KGC會判斷被請求的核心是否正在執行比該請求的任 務之優先序還要低的任務。任務優先序的指定方式可採用 任忍的優先序方案(priority scheme)。該方案可和被請求 的任務有關(例如有些類型的任務,其優先序較其他類型 ❹ 高),或是根據發出請求之使用者程式的相對優先序來指 疋。如果核心94A至94M正在執行低優先序的任務(決策方 塊148 ’ YES接腳),KGC便會強佔該低優先序的任務,而 執行高優先序的任務(方塊150)。KGC會安全地傳送被強佔 任務的狀態至安全的儲存器,故該狀態對別的使用者程式 而言是隱藏起來的(甚至對於發動請求的使用者程式也是 如此)(方塊152)。之後KGC便編程該核心來執行請求(方 塊136),如前述的方式運作。至於如果沒有任何核心正在 94563 22 200937293 、 執行低優先序任務的話(決策方塊148,NO接腳),KGC便 將該任務的請求狀態儲存在安全的儲存器内,等待可以使 用的核心(方塊154)。另一種作法是必要時由j[GC模擬出 被請求的核心。 KGC的另一項應用與x86(或是IA_32,以及像是 AMD-64tm的擴充)指令集有關。χ86指令集是透過四個層級 的特權方案來控管特權。最高特權層級被稱為環〇(ring 0),通常對於作業系統的核心運作而言是必要的。在環〇 ® 執行的任何任務會影響到機器中的任一狀態,甚至是該任 務不應該存取到的狀態也會受到影響。環〇的設置會讓有 問題的程式碼對不相關的運作造成問題,同時也有安全上 的考量。 ❹ KGC可藉由分割環〇的方式來解決這些問題。第n圖 便描緣出此種相,其中環G被纟f製成圓丨⑽而直線i似 至102C則表示分割。當屬於某分割的程式碼試著要存取不 屬於該77割的資源時,KGC麗會攔戴該存取,並且判斷 該項存取疋否被允許。舉舰明,虛線崎頭⑽表示從 某分割處欲存取另—分割。該項存取會被改道SKGC 104, 實心_ _。若該項存取被允許的話, 的程序(實,讀頭m)來執行該存取。採用 各個分割互相隔離。如果某㈣被惡意的 :1了二雖然該分割會受到影響,但是對於其他 77 °]而5卩敗*減輕甚至完全不受其影響。 第11圖贿的分割可以有多種不同的實施方式。例如 94563 23 200937293 對於不同的分割指定不同的記憶體範圍,可藉由編程 程的對映表72纟達到。如果有程式碼所在之分割以外的士己 憶體地址產生,便會轉移給KGC。同樣地,設置/控制暫 存器的狀態也可以分配給各個分割,藉由編程該可編程的 對映表72來偵測出使用不允許的暫存器作為運算元的情 :’根據目前的分割而賴置/控制暫存器的存取加以^ 儘管KGC可用來實作新的架構特徵,但是在某些情形
KGC本身卻不能提供如硬體實作一般的效能。實施例中KGC 會管理可程式邏輯單元时面,其包含在具有處理器的積 體電路t。指派給KGC的功能裡至少有部分是可以由可程 式邏輯早70來實作的’因此便能具有較高的、「像硬體般」 的速度來執行。至於其他的功能仍由KGC本身來實作。 。第I2圖的方塊圖是積體電路120的實施例,其包括處 理器1〇(含使用者狀態的儲存器68與{[(^的狀態儲存器7〇)
以及可程式的邏輯單元122。第12圖裡還有脱的來源 宜,用來儲存KGC以及至少一項可程式邏輯的設置mA。 2情形中也會儲存額外的可程式邏輯設置,像是可程式 邏輯的設置124Β。 -「可=式邏輯的設置會利用程式的介面(第12圖中的 f式介面」)來載入可程式的邏輯單元122。該程式的介 積體電路12G的外部輸人/輸出隔離開來,因此只 Γ^執行在處理器1〇上的KGC來編程。KFC會從脱的 "、讀取设置124A或124B,並透過程式介面將設置寫 94563 24 200937293 - 到可程式的邏輯單元122内。 某上貫作中會在開機時選出可程式邏輯單元122的設 ,置’並且同樣在開機時由KGC將設置載入可程式的邏輯單 兀122並且一直保留下去。其他實作裡可程式的邏輯單元 122在運作時是會變動的,像是從kgc的來源丨2中,選出 別的,置來編程可程式的邏輯單元122。此種設置中程式 邏輯單元122的運作會根據KGC正在執行的任務而改變。 舉例來說’如果KGC包括兩個能得益於可程式邏輯單元122 的進仃密集計算的任務,比較常被使用的該項任務,其 «χ置便會載入可程式邏輯單元122内。如果有別的任務(尚 未載^可程式的邏輯單元122)請求的話,便會變動可程式 的邏輯單70 122。另一種作法為只有在別的任務有更頻繁 的請求下,才會改變可程式的邏輯單元122c>KGC可能會以 軟體來執行該任務,直到做出要改變可程式邏輯單元122 的決定為止。. ❿ 可程式的邏輯單元會接收輸入(第12圖的In[〇 : n]) 並且產生輸出(第12圖的〇ut[〇 : m])。該輸入源自KGC狀 態的儲存器70,而該輸出也是由KGC的狀態儲存器7〇接 收,如此便為KGC提供一種機構,可以驅動可程式的邏輯 單元122並且接收其運算結果。例如,輸入與輸出可以對 映成KGC狀態儲存器70内之暫存器的位元。 可程式的邏輯單元丨22可由任意類型的非永久性可程 式邏輯(non-permanent programmable logic)所構成,像 疋可程式邏輯閘陣列(field programmable gate array, 94563 25 200937293 FPG A)或是複合式可程式邏輯裝置(comp 1 ex pr ogr ammab 1 e logic,CPLD)技術。也可以使用快閃記憶體、可抹除的唯 讀記憶體或是隨機存取記憶體技術。 嫻熟此技術者在完全瞭解以上的揭露内容後,對於本 發明無數的變化與修改便能一目了然。以下的申請專利範 圍是打算解釋成包含所有此類的變化與修改。 【圖式簡單說明】 Ο 第1圖的方塊圖在說明處理器和相關的已知優良程式 碼(KGC)。 第2.圖是處理器與KGC第一實施例的方塊圖。 第3圖是處理器與KGC第二實施例的方塊圖。 第4圖是處理器與KGC第三實施例的方塊圖。 第5圖是說明KGC轉移機構第一實施例的方塊圖。 第6圖是處理器實施例的方塊圖,該處理器實作轉移 機構的第一實施例。 〇 第7圖的方塊圖在說明KGC轉移機構的第二實施例。 第8圖是處理器實施例的方塊圖,該處理器實作轉移 機構的第二實施例。 第9圖是採用KGC作為裝置管理器的多核心積體電 路,其實施例的方塊圖。 第10圖是以KGC作為農置管理器的實施例,說明其操 作的流程圖。 第11圖是採用KGC作為將環〇分割成保護區的機構, 其實施例的方塊圖。 26 94563 200937293 第12圖是在具有處理器的積體電路上採用KGC連同可 程式邏輯,其實施例的方塊圖。 【主要元件符號說明】
❹ 10 處理器 12 已知優良程式碼(KGC)來源 14 加密驗證 16 變更時受到保護的記憶體 18 受保護的通道 20 22 非揮發性的記憶體 24 含有處理器的積體電路 26 多晶片模組 28 30 記憶體控制器 32 40 使用者程式的狀態 42 60 指令的快取 62 64 解碼單元 66 68 使用者狀態的儲存.器 70 72 可編程的對映表 92A 積體電路 94A至94祕專用的核心
100 環 〇 104 KGC 122 可程式的邏輯單元 124B可程式邏輯的設置 執行引擎 記憶體 KGC的狀態 取碼單元 執行核心 KGC狀態的错存器 96 KGC裝置管理器 102A至102C分割 120 積體電路 124A可程式邏輯的設置 27 94563

Claims (1)

  1. 200937293 七、申請專利範圍: 1. 一種積體電路,包括: 至少一個處理器核心; 至少一種其他電路;以及 一種已知優良程式碼(Known Good Code, KGC)的來 源,係組構成用以提供KGC給該處理器核心來執行,其 中 對於其他的電路而言,KGC包含的介面程式碼,能 讓在至少一個處理器核心上執行的應用程式,可以藉由 KGC的介面而接觸到至少一種別的電路。 2. 如申請專利範圍第1項的積體電路,其中,KGC包含裝 置的管理器,係組構成用以管理對於至少一種其他電路 的存取。 3. 如申請專利範圍第2項的積體電路,其中,至少一個處 理器的核心會包含多個處理器核心,並且其中的裝置管 理器是組構成用來管理該多個處理器核心對於至少一 種其他電路的存取。 4. 如申請專利範圍第3項的積體電路,其中,該裝置管理 器是組構成用來安全地儲存從該至少一個其他裝置而 來的狀態,其會和在該多個處理器核心當中之一上面執 行的某程式有關,並且該裝置管理器是用來將其他某個 程式相關的狀態,載入該至少一種別的電路中。 5. 如申請專利範圍第4項的積體電路,其中,該被儲存的 狀態對於別的程式而言是隱藏的。 28 94563 200937293 ' 6.如申請專利範圍第1項的積體電路,其中,該至少一種 別的電路包含可程式的邏輯單元。 7. 如申請專利範圍第6項的積體電路,其中,KGC的來源 是組構成用來儲存可程式邏輯單元的組態,其會在初始 化積體電路的時候,被載入可程式的邏輯單元中。 8. 如申請專利範圍第7項的積體電路,其中,KGC的來源 係又組構成用來儲存可程式邏輯單元的第二種組態,其 會在積體電路運作的時候,被載入可程式的邏輯單元 〇 中。 9. 如申請專利範圍第6項的積體電路,其中,處理器的核 心包含使用者狀態的儲存器以及KGC狀態的儲存器,其 中KGC狀態的儲存器只有當KGC被該處理器的核心執行 時,才能在該處理器核心中被存取。 10. 如申請專利範圍第9項的積體電路,其中,可程式邏輯 單元的輸入與輸出,可以藉由KGC的狀態來存取。 ❹ 11. 一種方法,用於包含至少一個處理器核心以及至少一種 別的電路之積體電路,該方法包含: 在處理器核心上執行已知優良程式碼(KGC),其 中,對於別的電路而言,KGC包含的介面程式碼能讓在 至少一個處理器核心上執行的應用程式,可以藉由KGC 的介面而接觸到至少一種別的電路。 12.如申請專利範圍第11項的方法.,其中,KGC包含一種 裝置管理器,組構成用來管理對於至少一種其他電路的 存取,並且其中該至少一個處理器的核心包含多個處理 29 94563 200937293 器核心,且其中的該裝置管理器是組構成用來管理該多 個處理器核心對於至少一種其他電路的存取。 13. 如申請專利範圍第12項的方法,其中,存取的管理包 括安全地儲存從至少一個其他裝置而來的狀態,其會和 在多個處理器核心當中之一上面執行的某程式有關,並 且包括將其他某個程式相關的狀態,載入至少一種別的 電路中。 14. 如申請專利範圍第11項的方法,其中,該至少一種別 的電路包括可程式的邏輯單元,並且其中的執行KGC 包括了在初始化積體電路的時候,將組態載入可程式的 邏輯單元中。 15. 如申請專利範圍第14項的方法,尚包括只有當KGC正 在該處理器的核心内執行時,才能在處理器中藉由KGC 的狀態,來存取可程式邏輯單元的輸入與輸出。 16. —種電腦可以存取的儲存媒體,包含已知優良程式碼 (KGC),該KGC包含的指令當執行在包括至少一個處理 器核心與至少一種其他電路之積體電路上時,可提供一 種介面,該介面對於其他的電路而言,能藉此讓在該至 少一個處理器核心上執行的應用程式,可以接觸到該至 少一種別的電路。 17. 如申請專利範圍第16項可供電腦存取的儲存媒體,其 中,KGC包含一種裝置的管理器,組構成用來管理對於 該至少一種其他電路的存取,並且其中該至少一個處理 器的核心會包含多個處理器核心,且其中KGC會管理該 30 94563 200937293 ' 多個處理器核心對於該至少一種其他電路的存取。 18. 如申請專利範圍第16項可供電腦存取的儲存媒體,其 中,該存取的管理包括安全地儲存從該至少一個其他裝 置而來的狀態,其會和在多個處理器核心當中之一上面 執行的某程式有關,並且包括將其他某個程式相關的狀 態,載入至少一種別的電路中。 19. 如申請專利範圍第17項可供電腦存取的儲存媒體,其 中,該至少一種別的電路包括一種可程式的邏輯單元, ® 並且其中該可供電腦存取的儲存媒體尚包括可程式邏 輯單元的設置,且其中當執行KGC時,KGC會在初始化 積體電路的時候,將組態載入可程式的邏輯單元中。 20. 如申請專利範圍第19項可供電腦存取的儲存媒體,尚 包括可程式邏輯單元的第二種組態,其中,當執行KGC 時,KGC會在積體電路運作的時候載入第二種組態至可 程式的邏輯單元中。 〇 31 94563
TW097147296A 2007-12-17 2008-12-05 Known good code for on-chip device management TW200937293A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/957,930 US8612729B2 (en) 2007-12-17 2007-12-17 Known good code for on-chip device management

Publications (1)

Publication Number Publication Date
TW200937293A true TW200937293A (en) 2009-09-01

Family

ID=40427362

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097147296A TW200937293A (en) 2007-12-17 2008-12-05 Known good code for on-chip device management

Country Status (7)

Country Link
US (2) US8612729B2 (zh)
EP (1) EP2223257A1 (zh)
JP (1) JP5410445B2 (zh)
KR (1) KR101538749B1 (zh)
CN (1) CN101999123A (zh)
TW (1) TW200937293A (zh)
WO (1) WO2009078913A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105074722A (zh) * 2013-02-05 2015-11-18 哈克普鲁夫科技公司 特定于域的硬连线符号机器
US10303881B2 (en) 2013-02-05 2019-05-28 Hackproof Technologies Inc. Soft-wired radio (SWR) web machine
US10956572B2 (en) 2016-08-22 2021-03-23 Hackproof Technologies Inc. Domain-specific hardwired web browser machine
US11093616B2 (en) 2015-10-13 2021-08-17 Hackproof Technologies Inc. Soft-wired radio (SWR) web machine

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI497511B (zh) * 2012-11-08 2015-08-21 Ind Tech Res Inst 具嵌入式非揮發性記憶體之晶片及其測試方法
TWI507989B (zh) * 2013-08-08 2015-11-11 Nat Univ Tsing Hua 資源導向之嵌入式系統功率消耗分析方法
US9690928B2 (en) * 2014-10-25 2017-06-27 Mcafee, Inc. Computing platform security methods and apparatus
US10210323B2 (en) * 2016-05-06 2019-02-19 The Boeing Company Information assurance system for secure program execution
KR102309429B1 (ko) * 2017-03-20 2021-10-07 현대자동차주식회사 차량 및 그 제어 방법
FR3076920B1 (fr) * 2018-01-16 2019-12-13 Continental Automotive France Procede de reprogrammation des donnees d'une fonction logicielle executee par au moins un calculateur muni d'au moins un cœur d'execution, d'au moins un cœur de securite et d'au moins une memoire non volatile
US11442740B2 (en) * 2020-09-29 2022-09-13 Rockwell Automation Technologies, Inc. Supporting instruction set architecture components across releases

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5600845A (en) * 1994-07-27 1997-02-04 Metalithic Systems Incorporated Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6041402A (en) 1998-01-05 2000-03-21 Trw Inc. Direct vectored legacy instruction set emulation
US6390374B1 (en) 1999-01-15 2002-05-21 Todd Carper System and method for installing/de-installing an application on a smart card
US6338435B1 (en) 1999-01-15 2002-01-15 Todd Carper Smart card patch manager
US6438737B1 (en) 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
US7290081B2 (en) 2002-05-14 2007-10-30 Stmicroelectronics, Inc. Apparatus and method for implementing a ROM patch using a lockable cache
US20040025027A1 (en) * 2002-07-30 2004-02-05 Eric Balard Secure protection method for access to protected resources in a processor
US7039776B2 (en) 2003-04-17 2006-05-02 Broadcom Corporation Patch memory system for a ROM-based processor
US20070277161A1 (en) * 2004-03-04 2007-11-29 Trustees Of Boston University System and Method for Programmable Logic Acceleration of Data Processing Applications and Compiler Therefore
US7512813B2 (en) 2004-05-28 2009-03-31 International Business Machines Corporation Method for system level protection of field programmable logic devices
US20060059574A1 (en) 2004-09-10 2006-03-16 International Business Machines Corporation System for securely configuring a field programmable gate array or other programmable hardware
US8320880B2 (en) * 2005-07-20 2012-11-27 Qualcomm Incorporated Apparatus and methods for secure architectures in wireless networks
US7831813B2 (en) 2007-12-17 2010-11-09 Globalfoundries Inc. Uses of known good code for implementing processor architectural modifications

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105074722A (zh) * 2013-02-05 2015-11-18 哈克普鲁夫科技公司 特定于域的硬连线符号机器
CN105074722B (zh) * 2013-02-05 2018-01-26 哈克普鲁夫科技公司 特定于域的符号计算设备
US10242365B2 (en) 2013-02-05 2019-03-26 Hackproof Technologies Inc. Domain-specific hardwired eCommerce learning machine
US10303881B2 (en) 2013-02-05 2019-05-28 Hackproof Technologies Inc. Soft-wired radio (SWR) web machine
US11093616B2 (en) 2015-10-13 2021-08-17 Hackproof Technologies Inc. Soft-wired radio (SWR) web machine
US10956572B2 (en) 2016-08-22 2021-03-23 Hackproof Technologies Inc. Domain-specific hardwired web browser machine

Also Published As

Publication number Publication date
US20140129810A1 (en) 2014-05-08
KR20100102666A (ko) 2010-09-24
US20100174890A1 (en) 2010-07-08
JP5410445B2 (ja) 2014-02-05
CN101999123A (zh) 2011-03-30
KR101538749B1 (ko) 2015-07-22
JP2011508308A (ja) 2011-03-10
EP2223257A1 (en) 2010-09-01
US8612729B2 (en) 2013-12-17
US9058163B2 (en) 2015-06-16
WO2009078913A1 (en) 2009-06-25

Similar Documents

Publication Publication Date Title
JP7501982B2 (ja) 信頼ドメインを用いた、仮想化されたシステムにおける分離の提供
TW200937293A (en) Known good code for on-chip device management
US11520611B2 (en) Secure public cloud using extended paging and memory integrity
US7831813B2 (en) Uses of known good code for implementing processor architectural modifications
US10963281B2 (en) Nested virtualization for virtual machine exits
US20220019698A1 (en) Secure Public Cloud with Protected Guest-Verified Host Control
US11934843B2 (en) Secure arbitration mode to build and operate within trust domain extensions
TWI751731B (zh) 用以支援保護容器的即時遷移之處理器、方法、系統和指令
US7272832B2 (en) Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
KR100668000B1 (ko) 인증된 코드 방법 및 장치
KR101263061B1 (ko) 점대점 상호연결 시스템 상에서의 보안 환경 초기화 명령의실행
CN111353164A (zh) 用于信任域创建和摧毁的方法和装置
KR20120099472A (ko) 보안 애플리케이션 실행을 제공하는 방법 및 장치
CN114691288A (zh) 用于迁移受保护虚拟机的方法、装置、系统、和指令
Allievi et al. Windows internals, part 2
Brunel et al. Secbus, a software/hardware architecture for securing external memories
KR20180011847A (ko) 가상 기계들을 위한 상태 정보 보호
Hao et al. vTRUST: a formal modeling and verification framework for virtualization systems
US20240193281A1 (en) Unified encryption across multi-vendor graphics processing units
TW202407538A (zh) 無操作相容指令