TWI540509B - 用以部署處理器特徵之方法以及用於硬體轉譯之製造物件、含有故障偵測與轉返功能的處理器、多處理器以及計算系統 - Google Patents

用以部署處理器特徵之方法以及用於硬體轉譯之製造物件、含有故障偵測與轉返功能的處理器、多處理器以及計算系統 Download PDF

Info

Publication number
TWI540509B
TWI540509B TW101150102A TW101150102A TWI540509B TW I540509 B TWI540509 B TW I540509B TW 101150102 A TW101150102 A TW 101150102A TW 101150102 A TW101150102 A TW 101150102A TW I540509 B TWI540509 B TW I540509B
Authority
TW
Taiwan
Prior art keywords
language
processor
register
executable
instruction
Prior art date
Application number
TW101150102A
Other languages
English (en)
Other versions
TW201346765A (zh
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 TW201346765A publication Critical patent/TW201346765A/zh
Application granted granted Critical
Publication of TWI540509B publication Critical patent/TWI540509B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)

Description

用以部署處理器特徵之方法以及用於硬體轉譯之製造物件、含有故障偵測與轉返功能的處理器、多處理器以及計算系統 發明領域
本揭示內容一般係有關微處理器之領域。特別是,本揭示內容係有關具有故障偵測與轉返功能之硬體編譯及/或轉譯技術。
發明背景
現代處理器通常包括新特徵,例如,以改善安全性或支援虛擬化或多執行緒、及/或新指令以提供計算上密集的操作,並提供可透過使用各種不同的資料儲存裝置,諸如,例如,單一指令多重資料(SIMD)向量暫存器之一有效實施態樣來利用之一高階資料平行處理。
由於許多該等處理器編譯器之調整遠落後在硬體發行之後,所以新特徵、指令及/或資源會無法充分利用。
另一方面,故障容錯與故障偵測特徵典型不應用在高產量處理器中之該等新特徵、指令及/或資源上,因為該實施態樣成本已超過優點。然而,於一多處理器之一封裝體及/或處理元件中減少電晶體維度與增加數量,在使裝 置更快且更有效率的情況下,會由於阿爾法粒子與其他偶發因素而增加故障機率。
此外,會有某些極端環境是故障容錯為電腦系統高度期待的一特徵。例如,由海軍研究學院之太空系統學術群使用場可規劃閘陣列(FPGA)來開發之一可組配故障容錯處理器(CFTP)。其之後可部署為美國海軍學術(USNA)MidSTAR-1衛星之一實驗性板體上酬載。一第二CFTP系統,CFTP-2可部署為一完全地面式系統並於使用加州大學戴維斯粒子迴旋加速器之一質子光束中測試。
二進制轉譯為另一指令集透過編碼轉譯之一指令集的模擬。指令序列可從來源轉譯至該目標指令集。靜態二進制轉譯係針對將一可執行檔的所有編碼轉換為可在該目標架構中運作之編碼而不需先執行該編碼,如同在動態二進制轉譯中完成的那般。此很難正確做到,因為並非所有編碼皆可被該轉譯器發現。例如,該可執行的某些部分可僅透過間接分支來達到,其數值僅在運作時間時可知。
動態二進制轉譯可看見一短指令序列-典型以一單一基本方塊的順序-之後將其轉譯並貯存該所生序列。編碼可僅在其被發現以及可能的分支指令完成指向已轉譯且儲存的編碼時才轉譯。諸如指令集模擬的某些情況中,目標指令集可與來源指令集相同,提供諸如指令追蹤、有條件斷點與熱點偵測之測試與除錯特徵。該類實施態樣可提供除錯與軟體/硬體開發支援,其典型不針對故障容錯或故障偵測。此外,二進制轉譯技術典型無法改善新特徵、 指令及/或資源的使用。
已可找出某些編譯器技術來直接以硬體特徵為目標。該等技術已被應用在,例如,FPGA技術中。一編譯器可採用高階來源碼來作為一輸入並將該來源碼編譯以產生FPGA邏輯元件作為一輸出。一般而言,該類FPGA實施態樣會限制以其他方式,例如,從超大型積體電路(VLSI)取得的效能上優點,而其實施態樣會額外更大及/或更重,並需要較高的供應電壓。
迄今,該類無法充分利用、故障容錯、效能及效率限制議題之潛在解決方案仍尚未被適當地探索。
依據本發明之一實施例,係特地提出一種用以部署處理器特徵之方法,該方法包含下列步驟:接收一處理器中之一可執行執行緒部分,該可執行執行緒以一第一語言編碼;將該可執行執行緒部分編碼為一第二語言來包括一或更多指令以支援不編碼為該可執行執行緒部分之該第一語言編碼的一或更多處理器特徵;以該第二語言來儲存該可執行執行緒部分;以及以該第二語言來執行該可執行執行緒部分以使用該一或更多處理器特徵。
105、205‧‧‧處理器
110、120、210、220‧‧‧執行緒
111、121、211、221‧‧‧檢查邏輯元件
112、122、212、222‧‧‧執行單元
113、123、213、223‧‧‧暫存器對映
117、217、267‧‧‧匯流排
130、230‧‧‧編譯及/或轉譯邏輯元件
131、261‧‧‧執行緒T1
132、262‧‧‧執行緒T2
140、240‧‧‧I快取記憶體
141、241‧‧‧T1’
142、242‧‧‧T2’
151、251‧‧‧暫存器A
152、252‧‧‧暫存器B
153、253‧‧‧暫存器C
201‧‧‧多處理系統
260‧‧‧記憶體
301、401、501‧‧‧程序
310、320、330、340、410、420、430、440、470、480、490、510、520、530、540、544、548、550、560、570、580、590‧‧‧處理方塊
本發明係藉由該等附圖之圖形中的範例而非限制來加以繪示。
圖1繪示一使用具有故障偵測與轉返功能之硬體編譯及/或轉譯技術的處理器系統之一實施例。
圖2繪示一使用具有故障偵測與轉返功能之硬體編譯及/或轉譯技術的一多處理系統之實施例。
圖3繪示一使用具有故障偵測與轉返功能之硬體編譯及/或轉譯技術的一程序之一實施例的流程圖。
圖4繪示一使用具有故障偵測與轉返功能之硬體編譯及/或轉譯技術的一程序之一替代實施例的流程圖。
圖5繪示一使用具有故障偵測與轉返功能之硬體編譯及/或轉譯技術的一程序之另一替代實施例的流程圖。
較佳實施例之詳細說明
本案揭示具有故障偵測與轉返功能之硬體編譯及/或轉譯技術。編譯及/或轉譯邏輯元件可接收以一語言編碼之程式,並將該等程式編碼為一第二語言來包括指令以支援不編碼為該等程式之初始語言編碼的處理器特徵。於一實施例中,一執行單元可執行該第二語言之指令,包括一操作檢查指令來執行一第一操作並記錄該第一操作的結果來作一比較、以及一操作測試指令來執行一第二操作並藉由比較該第二操作的結果與該記錄的第一操作結果來執行一故障偵測操作。某些實施例中,一執行單元可執行該第二語言之指令,包括提交指令來記錄對映至架構暫存器之暫存器的執行檢查點狀態、以及轉返指令來將對映至架構暫存器之暫存器回復至之前記錄的執行檢查點狀態。
下列揭示內容中,諸如執行緒、程式、與程序之術語可互相交換使用以說明程式語言或機器語言或兩者之 指令序列或命令序列、或者作為該執行序列本身或作為執行該等序列之處理裝置的實施例。透過硬體編譯及/或轉譯,支援新處理器特徵之指令可用來由之前以語言編碼,不支援該等新處理器特徵之程式的重新編譯、轉譯或工具提供以改善效能、故障容錯、安全性、病毒偵測、等等。可體認支援具有轉返功能之硬體編譯及/或轉譯的某些實施例在無顯著增加實施態樣成本的情況下,可提供高產量處理器中典型的故障容錯及/或故障偵測之特徵。於故障容錯為電腦系統之一高度所需特徵的極端環境中,包含具有轉返功能之硬體編譯及/或轉譯的商業處理器可提供故障容錯及/或故障偵測以及高階整合的優點,且更小更輕、並比諸如FPGA技術之其他替代方案具有更好的能源效率。因為在一封裝體中減少電晶體維度與增加數量會由於阿爾法粒子與其他偶發因素而增加故障機率,所以該類特徵的需求會日漸增加。
本發明之該等與其他實施例可根據下列教示來實現,且應可證實在不違背本發明之更廣泛精神與範疇的情況下,下列教示中可作各種不同的修改與變化。因此,該等規格說明與圖示應以一舉例解說而非一限制觀點來視之,且本發明僅以該等申請專利範圍及其等效項目來度量。
圖1繪示一使用具有故障偵測與轉返功能之硬體編譯及/或轉譯技術的一處理器105之實施例。處理器105可包括多處理或多執行緒硬體,個別包含執行單元112與暫存器對映113、以及執行單元122與暫存器對映123之執行緒110與執行緒120。
一編譯及/或轉譯邏輯元件130可(例如,經由一匯流排117)接收以一語言編碼之可執行程式部分,執行緒T1 131與執行緒T2 132,並將其編碼為一第二語言來包括指令以支援不編碼為該等可執行程式部分,執行緒T1 131與執行緒T2 132,之初始語言編碼的一或更多處理器105特徵。某些替代實施例中,該初始語言可為,例如,一不同處理器架構之一高階程式語言、或一解釋語言、或一類語言、或一機器語言、或甚至,例如,一傳統處理器之相同或一類似的機器語言。某些實施例中,該初始語言可由軟體或中介軟體產生,其從一高階語言成為一不同處理器架構之該類語言、或該機器語言、或者成為一傳統處理器之相同或類似的機器語言。以該第二語言編碼之可執行程式部分,T1’141與T2’142可儲存於,例如,I快取記憶體140中。某些實施例中,該第二語言可包括新指令來支援新處理器105特徵,但亦具有可由具有共享一共同指令集之至少一部分的不同微架構之處理器執行的一指令基礎。例如,英代爾®奔騰4處理器、英代爾®核心TM處理器、以及來自加州森尼韋爾(Sunnyvale)之超微半導體公司之處理器可執行接近該x86指令集同一版本(具有已被加入較新版本的某些擴充版),但具有不同的內部設計。同樣地,由其他處理器開發公司,諸如安謀控股有限公司、MIPS、或其授權或採用者設計的處理器可共享至少一部分一共同指令集,但可包括不同的處理器設計。
用以回應於支援新處理器105特徵之該第二語言 的指令之一實施例,執行單元112可執行一提交指令來記錄對映至該可執行程式部分,例如T1’141之架構暫存器的暫存器之一第一執行檢查點狀態(例如,對映至暫存器對映113之R1與R2的暫存器A 151中的暫存器可記錄在暫存器B 152中作為一執行檢查點狀態,而對映至暫存器對映113之Rn的暫存器C 153中的暫時儲存不記錄在該執行檢查點狀態)。執行單元122可執行另一提交指令來記錄對映至該可執行程式部分,例如T1’142之架構暫存器的暫存器之一執行檢查點狀態(例如,對映至暫存器對映123之R1與R3的暫存器A 151中的暫存器可記錄在暫存器B 152中作為一執行檢查點狀態,而對映至暫存器對映123之R4與Rn的暫存器C 153中的暫時儲存不記錄在該執行檢查點狀態)。此外,用以回應於支援新處理器105特徵之該第二語言的指令,若需要將對映至架構暫存器的暫存器個別回復至最近個別記錄的執行檢查點狀態,執行單元112及/或執行單元122可執行一轉返指令。
如新處理器105特徵之一範例,處理器105之執行緒110與執行緒120的實施例能夠在一特定時間執行一序列指令並完成另一程序可見的整個序列之淨效應。因此從另一執行緒觀點,該指令序列顯示已被細微地執行。為建立該假象,該細微執行開始前,處理器105需能夠將執行緒轉返至一之前檢查點狀態。為何執行緒110或執行緒120需轉返一原子區域,例如,以避免由於糾結記憶體參考造成的停頓現象、或以宣告檢查來執行已不安全地最佳化之編碼 部分、或修正由於阿爾法粒子與其他偶發因素造成的一故障、或解決精確的例外事項、或掌握中斷等等,會有各種原因。處理器105之執行緒110與執行緒120的某些實施例中,可不需要從不同的執行緒於相同週期中讀取或寫入暫存器。於是,可體認一暫存器設定可包含一統一的儲存胞元,其含有來自兩個不同執行緒之儲存胞元,但限制存取一或其他執行緒而因此簡化該儲存胞元的設計。根據該類實施例,一儲存胞元設計可含有,例如,來自A 151、B 152、C 153之三個實際的儲存胞元。一執行緒可從A 151或B 152讀取、寫入A 151或B 152、從A 151移至B 152或者從B 152移至A 151。一執行緒之暫存器組合的下半部分可被遮蓋,使得針對暫存器子集合(該標準集合)可一直轉返至一之前檢查點狀態。因此,針對某些實施例,暫存器索引可對映至該儲存結構,使得針對某些儲存胞元,標準暫存器可對映至,例如,A 151與B 152,針對某些其他儲存胞元,該非標準(或暫時)暫存器可對映至C 153。
用以回應於支援新處理器105特徵之該第二語言的指令之另一實施例,執行單元112(或執行單元122)可執行一操作檢查指令(諸如一加法檢查、減法檢查、乘法檢查、計算有效位址檢查、等等)以執行一操作(諸如一加法、減法、乘法、計算有效位址、等等)並記錄該操作結果來使用檢查邏輯元件111(或檢查邏輯元件121)作一比較。執行單元112或執行單元122亦可執行一操作測試指令以執行一第二操作(諸如一加法、減法、乘法、計算有效位址、等等)並藉 由比較該第二操作的結果與之前記錄的操作結果來執行故障偵測。針對某些實施例,例如根據偵測到一不等式或根據超過一最大值或根據某些其他條件,可採用一陷阱或一中斷。或者,若故障偵測前需要將對映至架構暫存器的暫存器回復至最近記錄的執行檢查點狀態,則可設定一旗標來條件式執行一轉返指令。某些實施例中,該第二語言之操作檢查指令與操作測試指令可藉由將一檢查指示器與一測試指示器提供至該第二語言之指令操作的一操作子集合來執行。該類實施例中,該檢查指示器針對一操作來設定時,檢查邏輯元件111或檢查邏輯元件121中之一檢查閂鎖可以該操作之輸出載入(以及該正常輸出閂鎖的載入)。同樣地,該測試指示器針對一操作來設定時,該正常輸出閂鎖的內容可與檢查邏輯元件111或檢查邏輯元件121中之檢查閂鎖的內容作比較來偵測一故障或某些其他條件。一檢查閂鎖可被加入任何虛擬類型的一執行單元來賦能故障偵測、安全性檢查、病毒偵測、除錯、等等。
圖2繪示一使用具有故障偵測與轉返功能之硬體編譯及/或轉譯技術的多處理系統201之實施例。系統201包括記憶體260與處理器205。處理器205包括多處理或多執行緒硬體,執行緒210與執行緒220個別包含執行單元212與暫存器對映213、以及執行單元222與暫存器對映223。一編譯及/或轉譯邏輯元件230可(例如,經由來自記憶體260之匯流排217與267)接收以一語言編碼之可執行程式部分,執行緒T1 261與執行緒T2 262,並將其編碼為一第二語言來包括指 令以支援不編碼為該可執行程式部分,執行緒T1 261與執行緒T2 262,編碼之初始語言的一或更多處理器205特徵。某些替代實施例中,該初始語言可為,例如,一不同處理器架構之一高階程式語言、或一解釋語言、或一類語言、或一機器語言、或甚至,例如,一傳統處理器之相同或一類似的機器語言。以該第二語言編碼之可執行程式部分,執行緒T1’241與執行緒T2’242,可儲存於,例如記憶體260與I快取記憶體240中。某些實施例中,該第二語言可包括新指令來支援新的處理器205特徵,但亦可具有由具有共享一共同指令集之至少一部分的不同微架構之處理器執行的一指令基礎。用以回應於支援新處理器105特徵之該第二語言的指令之一實施例,執行單元212可執行一提交指令來記錄對映至該可執行程式部分,例如T1’241之架構暫存器的暫存器之一第一執行檢查點狀態(例如,對映至暫存器對映213之R1與R2的暫存器A 251中的暫存器可記錄在暫存器B 252中作為一執行檢查點狀態,而對映至暫存器對映213之Rn的暫存器C 253中的暫時儲存不記錄在該執行檢查點狀態)。執行單元222可執行另一提交指令來記錄對映至該可執行程式部分,例如T1’242之架構暫存器的暫存器之一執行檢查點狀態(例如,對映至暫存器對映223之R1與R3的暫存器A 251中的暫存器可記錄在暫存器B 252中作為一執行檢查點狀態,而對映至暫存器對映223之R4與Rn的暫存器C 253中的暫時儲存不記錄在該執行檢查點狀態)。此外,用以回應於支援新處理器205特徵之該第二語言的指令,若需 要將對映至架構暫存器的暫存器個別回復至最近個別記錄的執行檢查點狀態,執行單元212及/或執行單元222可執行一轉返指令。
用以回應於支援新處理器205特徵之該第二語言的指令之另一實施例,執行單元212(或執行單元222)可執行一操作檢查指令(諸如一加法檢查、減法檢查、乘法檢查、計算有效位址檢查、等等)以執行一操作(諸如一加法、減法、乘法、計算有效位址、等等)並記錄該操作結果來使用檢查邏輯元件211(或檢查邏輯元件221)作一比較。執行單元212或執行單元222亦可執行一操作測試指令以執行一第二操作(諸如一加法、減法、乘法、計算有效位址、等等)並藉由比較該第二操作的結果與之前記錄的操作結果來執行故障偵測。針對某些實施例,例如根據偵測到一不等式或根據超過一最大值或根據某些其他條件,可採用一陷阱或一中斷。或者,若故障偵測前需要將對映至架構暫存器的暫存器回復至最近記錄的執行檢查點狀態,則可設定一旗標來條件式執行一轉返指令。
圖3繪示一使用具有故障偵測與轉返功能之硬體編譯及/或轉譯技術的一程序之一實施例的流程圖。本文揭示之程序301與其他程序可由包含由通用機器或由專用機器或由兩者的一組合執行之專屬硬體或軟體或韌體操作碼的處理方塊來執行。
處理方塊310中,以一第一語言編碼之一可執行執行緒部分於一處理器中接收。處理方塊320中,該可執行 執行緒部分編碼為一第二語言來包括一或更多指令以支援該第一語言編碼不支援的新處理器特徵。處理方塊330中,該第二語言之可執行執行緒部分可儲存於,例如,系統記憶體260及/或一處理器快取記憶體240中。處理方塊340中,該第二語言之可執行執行緒部分的一操作可被執行來使用該等新處理器特徵。
可體認程序301可用來由之前以語言編碼,不支援該等新處理器特徵之程式的重新編譯、轉譯或工具提供來改善效能、故障容錯、安全性、病毒偵測、等等。可體認該類程式之前已使用語言,包括但不侷限於一高階程式語言、或一解釋語言、或一不同機器語言、或甚至,例如,一傳統處理器之相同或一類似的機器語言來編碼。
圖4繪示一使用具有故障偵測與轉返功能之硬體編譯及/或轉譯技術的一程序之一替代實施例的流程圖。處理方塊410中,以一第一語言,例如,一高階程式語言、或一解釋語言、或一不同處理器架構之一機器語言、或甚至,亦即一傳統處理器之相同或一類似的機器語言編碼之一可執行執行緒部分於一處理器中接收。處理方塊420中,該可執行執行緒部分可編碼為一第二語言來包括一或更多指令以支援該第一語言編碼不支援的新處理器特徵。處理方塊430中,該第二語言之可執行執行緒部分可儲存於,例如,系統記憶體260及/或一處理器快取記憶體240中。
處理方塊440中,可執行該第二語言之一提交操作來使用包括記錄對映至架構暫存器之暫存器的一執行檢 查點狀態之該等新處理器特徵。處理方塊450中,可作一決定對映至架構暫存器之暫存器是否應回復至一之前執行檢查點狀態。若需回復,則處理方塊460中,可執行該第二語言之一轉返操作來使用包括回復該之前執行檢查點狀態的該等新處理器特徵,並且處理進行直到處理方塊440中另一提交操作被執行為止。
另外處理方塊470中,該第二語言之執行緒部分的執行會繼續直到處理方塊480中其完成為止。之後處理方塊490中,另一提交操作可被執行來記錄對映至架構暫存器之暫存器的另一執行檢查點狀態。
可體認程序401在無顯著增加實施態樣成本的情況下,可提供高產量處理器中典型的故障容錯及/或故障偵測之特徵。於故障容錯為電腦系統之一高度所需特徵的極端環境中,包含具有轉返功能之硬體編譯及/或轉譯的商業處理器可提供故障容錯及/或故障偵測以及高階整合的優點,且更小更輕、並比諸如FPGA技術之其他替代方案具有更好的能源效率。因為在一封裝體中減少電晶體維度與增加數量會由於阿爾法粒子與其他偶發因素而增加故障機率,所以該類特徵的需求會日漸增加。
圖5繪示一使用具有故障偵測與轉返功能之硬體編譯及/或轉譯技術的一程序501之另一替代實施例的流程圖。處理方塊510中,以一第一語言,例如,一高階程式語言、或一解釋語言、或一不同處理器架構之一機器語言、或甚至,亦即一傳統處理器之相同或一類似的機器語言編 碼之一可執行執行緒部分於一處理器中接收。處理方塊520中,該可執行執行緒部分可編碼為一第二語言來包括一或更多指令以支援該第一語言編碼不支援的新處理器特徵。處理方塊530中,該第二語言之可執行執行緒部分可儲存於,例如,系統記憶體及/或一處理器快取記憶體中。
處理方塊540中,可執行一提交操作來記錄對映至架構暫存器之暫存器的一執行檢查點狀態。處理方塊544中,可執行該第二語言之一操作檢查指令來使用包括記錄一操作結果來作為一未來操作,例如,偵測一故障或病毒的一比較之新處理器特徵。處理方塊548中,可執行該第二語言之一操作測試指令來使用包括比較一操作結果與一之前操作結果的一故障偵測操作之新處理器特徵。處理方塊550中,可作一決定對映至架構暫存器之暫存器是否應回復至一之前執行檢查點狀態。若需回復,則處理方塊560中,可執行一轉返操作來回復該之前執行檢查點狀態,並且處理進行直到處理方塊540中另一提交操作被執行為止。
另外處理方塊570中,該第二語言之執行緒部分的執行會繼續直到處理方塊580中其完成為止。之後處理方塊590中,另一提交操作可被執行來記錄對映至架構暫存器之暫存器的另一執行檢查點狀態。
透過硬體編譯及/或轉譯,支援新處理器特徵之指令可用來由之前以語言編碼,不支援該等新處理器特徵之程式的重新編譯、轉譯或工具提供以改善效能、或故障容錯、安全性、或病毒偵測、等等。可體認該類程式之前 已使用語言,包括但不侷限於一高階程式語言、或一解釋語言、或一不同機器語言、或甚至,例如,一傳統處理器之相同或一類似的機器語言來編碼。
亦可體認支援具有轉返功能之硬體編譯及/或轉譯的某些實施例在無顯著增加實施態樣成本的情況下,可提供高產量處理器中典型的故障容錯及/或故障偵測之特徵。於故障容錯為電腦系統之一高度所需特徵的極端環境中,包含具有轉返功能之硬體編譯及/或轉譯的商業處理器可提供故障容錯及/或故障偵測以及高階整合的優點,且更小更輕、並比諸如FPGA技術之其他替代方案具有更好的能源效率。因為在一封裝體中減少電晶體維度與增加數量會由於阿爾法粒子與其他偶發因素而增加故障機率,所以該類特徵的需求會日漸增加。
上述說明意欲繪示本發明之較佳實施例。從以上討論中,應亦很明顯地尤其在該類技術領域中,成長會相當快速而不易預知進一步進展,在不違背本發明之原則且位於該等後附申請專利範圍及其等效項目中的情況下,本發明之安排與細節可由業界熟於此技者加以修改。
105‧‧‧處理器
110、120‧‧‧執行緒
111、121‧‧‧檢查邏輯元件
112、122‧‧‧執行單元
113、123‧‧‧暫存器對映
117‧‧‧匯流排
130‧‧‧編譯及/或轉譯邏輯元件
131‧‧‧執行緒T1
132‧‧‧執行緒T2
140‧‧‧I快取記憶體
141‧‧‧T1’
142‧‧‧T2’
151‧‧‧暫存器A
152‧‧‧暫存器B
153‧‧‧暫存器C

Claims (30)

  1. 一種用以部署處理器特徵之方法,該方法包含下列步驟:接收一處理器中之一可執行執行緒部分,該可執行執行緒以一第一語言編碼;將該可執行執行緒部分編碼為一第二語言來包括一或更多指令以支援不編碼為該可執行執行緒部分之該第一語言編碼的一或更多處理器特徵;以該第二語言來儲存該可執行執行緒部分;以及以該第二語言來執行該可執行執行緒部分以使用該一或更多處理器特徵。
  2. 如申請專利範圍第1項之方法,其中支援一或更多處理器特徵之該一或更多指令包含一轉返指令。
  3. 如申請專利範圍第2項之方法,其中該轉返指令支援之該一或更多處理器特徵包含將對映至架構暫存器之暫存器回復至一之前執行檢查點狀態。
  4. 如申請專利範圍第2項之方法,其中支援一或更多處理器特徵之該一或更多指令包含一提交指令。
  5. 如申請專利範圍第4項之方法,其中該提交指令支援之該一或更多處理器特徵包含記錄對映至架構暫存器之暫存器的一執行檢查點狀態。
  6. 如申請專利範圍第4項之方法,其中該轉返指令與該提交指令支援之該一或更多處理器特徵包含對映至架構暫存器之暫存器中的狀態之理論性修改以及該等暫存器 回復至一之前執行檢查點狀態。
  7. 如申請專利範圍第6項之方法,其中該轉返指令與該提交指令支援之該一或更多處理器特徵包含故障容錯與故障偵測。
  8. 如申請專利範圍第6項之方法,其中該轉返指令與該提交指令支援之該一或更多處理器特徵包含病毒偵測。
  9. 如申請專利範圍第1項之方法,其中支援一或更多處理器特徵之該一或更多指令包含一操作測試指令。
  10. 如申請專利範圍第9項之方法,其中該操作測試指令支援之該一或更多處理器特徵包含比較一操作結果與一之前操作結果之一故障偵測操作。
  11. 如申請專利範圍第9項之方法,其中支援一或更多處理器特徵之該一或更多指令包含一操作檢查指令。
  12. 如申請專利範圍第11項之方法,其中該操作檢查指令支援之該一或更多處理器特徵包含由一未來的操作測試指令來記錄一比較之一操作結果。
  13. 一種用於硬體轉譯之製造物件,其包含:一包括用於硬體轉譯之資料與指令的機器可存取媒體,使得其由一機器存取時,可使該機器執行下列步驟:接收一處理器中之一可執行執行緒部分,該可執行執行緒以一第一語言編碼;將該可執行執行緒部分編碼為一第二語言來包括一或更多指令以支援不編碼為該可執行執行緒部分之 該第一語言編碼的一或更多處理器特徵;以該第二語言來儲存該可執行執行緒部分;以及以該第二語言來執行該可執行執行緒部分以使用該一或更多處理器特徵。
  14. 如申請專利範圍第13項之製造物件,其中支援一或更多處理器特徵之該一或更多指令包含一轉返指令。
  15. 如申請專利範圍第14項之製造物件,其中該轉返指令支援之該一或更多處理器特徵包含將對映至架構暫存器之暫存器回復至一之前執行檢查點狀態。
  16. 如申請專利範圍第14項之製造物件,其中支援一或更多處理器特徵之該一或更多指令包含一提交指令。
  17. 如申請專利範圍第16項之製造物件,其中該提交指令支援之該一或更多處理器特徵包含記錄對映至架構暫存器之暫存器的一執行檢查點狀態。
  18. 如申請專利範圍第16項之製造物件,其中該轉返指令與該提交指令支援之該一或更多處理器特徵包含對映至架構暫存器之暫存器中的狀態之理論性修改以及該等暫存器回復至一之前執行檢查點狀態。
  19. 如申請專利範圍第18項之製造物件,其中該轉返指令與該提交指令支援之該一或更多處理器特徵包含故障容錯與故障偵測。
  20. 如申請專利範圍第18項之製造物件,其中該轉返指令與該提交指令支援之該一或更多處理器特徵包含病毒偵測。
  21. 一種處理器,其包含:一轉譯邏輯元件,其用以接收以一第一語言編碼之一可執行程式部分,並將該可執行程式部分編碼為一第二語言來包括指令以支援不編碼為該可執行程式部分之該第一語言編碼的一或更多處理器特徵;一執行單元,其用以回應於支援該一或更多處理器特徵之該第二語言的該等指令,來執行:一操作檢查指令,其用以執行一第一操作並記錄該第一操作的結果來作一比較,以及一操作測試指令,其用以執行一第二操作並藉由比較該第二操作的結果與該記錄的第一操作的結果來執行一故障偵測。
  22. 如申請專利範圍第21項之處理器,其中該執行單元用以回應於支援該一或更多處理器特徵之該第二語言的該等指令,亦執行:一提交指令,其用來記錄對映至該處理器之架構暫存器的暫存器之一執行檢查點狀態,以及一轉返指令,其用來將對映至該處理器之架構暫存器的暫存器回復至該執行檢查點狀態。
  23. 一種多處理器,其包含:一編譯/轉譯邏輯元件,其用以接收以一第一語言編碼之一第一可執行程式部分,並將該第一可執行程式部分編碼為一第二語言來包括指令以支援不編碼為該第一可執行程式部分之該第一語言編碼的一或更多處理器特徵; 一第一執行單元,其用以回應於支援該一或更多處理器特徵之該第二語言的該等指令,來執行:一第一提交指令,其用來記錄對映至該第一可執行程式部分之架構暫存器的暫存器之一第一執行檢查點狀態,以及一轉返指令,其用來將對映至該第一可執行程式部分之架構暫存器的暫存器回復至該第一執行檢查點狀態。
  24. 如申請專利範圍第23項之多處理器,其中該編譯/轉譯邏輯元件用於接收以該第一語言編碼之一第二可執行程式部分,並將該第二可執行程式部分編碼為該第二語言來包括指令以支援不編碼為該第二可執行程式部分之該第一語言編碼的該一或更多處理器特徵,該多處理器包含:一第二執行單元,其用以回應於支援該一或更多處理器特徵之該第二語言的該等指令,來執行:一第二提交指令,以記錄對映至該第二可執行程式部分之架構暫存器的暫存器之一第二執行檢查點狀態,以及一第二轉返指令,以將對映至該第二可執行程式部分之架構暫存器的暫存器回復至該第二執行檢查點狀態。
  25. 如申請專利範圍第24項之多處理器,其中對映至該第一可執行程式部分之架構暫存器的該等暫存器以及 對映至該第二可執行程式部分之架構暫存器的該等暫存器從該多處理器中之相同實體暫存器檔案來配置。
  26. 如申請專利範圍第25項之多處理器,其中該等第一與第二執行單元用以回應於支援該一或更多處理器特徵之該第二語言的該等指令,亦執行:一操作檢查指令,其用以執行一第一操作並記錄該第一操作的結果來作一比較,以及一操作測試指令,其用以執行一第二操作並藉由比較該第二操作的結果與該記錄的第一操作的結果來執行一故障偵測。
  27. 一種計算系統,其包含:一用以儲存以一第一語言編碼之一第一可執行程式部分的可定址記憶體;以及一多處理器,其包括:一編譯/轉譯邏輯元件,其用以接收該第一可執行程式部分,並將該第一可執行程式部分編碼為一第二語言來包括指令以支援不編碼為該第一可執行程式部分之該第一語言編碼的一或更多處理器特徵;以及一第一執行單元,其用以回應於支援該一或更多處理器特徵之該第二語言的該等指令,來執行:一第一提交指令,以記錄對映至該第一可執行程式部分之架構暫存器的暫存器之一第一執行檢查點狀態,以及一轉返指令,以將對映至該第一可執行程式 部分之架構暫存器的該等暫存器回復至該第一執行檢查點狀態。
  28. 如申請專利範圍第27項之系統,該可定址記憶體用來儲存以該第一語言編碼之一第二可執行程式部分,其中該編譯/轉譯邏輯元件用來接收該第二可執行程式部分,並將該第二可執行程式部分編碼為該第二語言來包括指令以支援不編碼為該第二可執行程式部分之該第一語言編碼的該一或更多處理器特徵,該多處理器包含:一第二執行單元,其用以回應於支援該一或更多處理器特徵之該第二語言的該等指令,來執行:一第二提交指令,以記錄對映至該第二可執行程式部分之架構暫存器的暫存器之一第二執行檢查點狀態,以及一第二轉返指令,以將對映至該第二可執行程式部分之架構暫存器的該等暫存器回復至該第二執行檢查點狀態。
  29. 如申請專利範圍第28項之系統,其中該等第一與第二執行單元用以回應於支援該一或更多處理器特徵之該第二語言的該等指令,亦執行:一操作檢查指令,其用以執行一第一操作並記錄該第一操作的結果來作一比較,以及一操作測試指令,其用以執行一第二操作並藉由比較該第二操作的結果與該記錄的第一操作的結果來執行一故障偵測。
  30. 如申請專利範圍第29項之系統,其中對映至該第一可執行程式部分之架構暫存器的該等暫存器以及對映至該第二可執行程式部分之架構暫存器的該等暫存器從該多處理器中之相同實體暫存器檔案來配置。
TW101150102A 2011-12-30 2012-12-26 用以部署處理器特徵之方法以及用於硬體轉譯之製造物件、含有故障偵測與轉返功能的處理器、多處理器以及計算系統 TWI540509B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/341,812 US8893094B2 (en) 2011-12-30 2011-12-30 Hardware compilation and/or translation with fault detection and roll back functionality

Publications (2)

Publication Number Publication Date
TW201346765A TW201346765A (zh) 2013-11-16
TWI540509B true TWI540509B (zh) 2016-07-01

Family

ID=48695920

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101150102A TWI540509B (zh) 2011-12-30 2012-12-26 用以部署處理器特徵之方法以及用於硬體轉譯之製造物件、含有故障偵測與轉返功能的處理器、多處理器以及計算系統

Country Status (3)

Country Link
US (2) US8893094B2 (zh)
TW (1) TWI540509B (zh)
WO (1) WO2013101840A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
WO2013048468A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
US9489283B1 (en) * 2013-03-14 2016-11-08 The Mathworks, Inc. Unified hardware and software debugging
US20170286110A1 (en) * 2016-03-31 2017-10-05 Intel Corporation Auxiliary Cache for Reducing Instruction Fetch and Decode Bandwidth Requirements
US9690680B1 (en) * 2016-09-23 2017-06-27 International Business Machines Corporation Testing hybrid instruction architecture

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154877A (en) * 1997-07-03 2000-11-28 The University Of Iowa Research Foundation Method and apparatus for portable checkpointing using data structure metrics and conversion functions
US6161219A (en) * 1997-07-03 2000-12-12 The University Of Iowa Research Foundation System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints
US6988183B1 (en) * 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
US20020100029A1 (en) * 2000-07-20 2002-07-25 Matt Bowen System, method and article of manufacture for compiling and invoking C functions in hardware
US6658656B1 (en) 2000-10-31 2003-12-02 Hewlett-Packard Development Company, L.P. Method and apparatus for creating alternative versions of code segments and dynamically substituting execution of the alternative code versions
US6708288B1 (en) * 2000-10-31 2004-03-16 Hewlett-Packard Development Company, L.P. Compiler-based checkpointing for support of error recovery
US7131119B2 (en) 2001-05-30 2006-10-31 International Business Machines Corporation Code optimization
US7346897B2 (en) * 2002-11-20 2008-03-18 Purenative Software Corporation System for translating programming languages
US7367057B2 (en) * 2003-06-30 2008-04-29 Intel Corporation Processor based system and method for virus detection
US7206969B2 (en) * 2003-09-10 2007-04-17 Hewlett-Packard Development Company, L.P. Opportunistic pattern-based CPU functional testing
US7581210B2 (en) * 2003-09-10 2009-08-25 Hewlett-Packard Development Company, L.P. Compiler-scheduled CPU functional testing
US20050071438A1 (en) 2003-09-30 2005-03-31 Shih-Wei Liao Methods and apparatuses for compiler-creating helper threads for multi-threading
US8166282B2 (en) 2004-07-21 2012-04-24 Intel Corporation Multi-version register file for multithreading processors with live-in precomputation
US7496735B2 (en) 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
TW200617703A (en) * 2004-11-30 2006-06-01 Tokyo Electron Ltd Dynamically reconfigurable processor
US7716638B2 (en) * 2005-03-04 2010-05-11 Microsoft Corporation Methods for describing processor features
US20080005332A1 (en) 2006-06-08 2008-01-03 Georgia Tech Research Corporation Method for Opportunistic Computing
US8060728B2 (en) 2007-05-14 2011-11-15 Apple Inc. Generating stop indicators during vector processing
US8584102B2 (en) * 2007-12-27 2013-11-12 Microsoft Corporation Creating and using deltas to modify existing computer code
US7966459B2 (en) 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
US20100199269A1 (en) 2008-02-05 2010-08-05 Panasonic Corporation Program optimization device and program optimization method
US8621183B2 (en) 2008-07-28 2013-12-31 Advanced Micro Devices, Inc. Processor with support for nested speculative sections with different transactional modes
US8909902B2 (en) 2008-11-24 2014-12-09 Intel Corporation Systems, methods, and apparatuses to decompose a sequential program into multiple threads, execute said threads, and reconstruct the sequential execution
US20100146241A1 (en) * 2008-12-09 2010-06-10 Novafora, Inc. Modified-SIMD Data Processing Architecture
US20110283089A1 (en) * 2009-01-28 2011-11-17 Harshal Ingale modularized micro processor design
US9940138B2 (en) 2009-04-08 2018-04-10 Intel Corporation Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations
US20110208921A1 (en) 2010-02-19 2011-08-25 Pohlack Martin T Inverted default semantics for in-speculative-region memory accesses
US8688963B2 (en) 2010-04-22 2014-04-01 Oracle International Corporation Checkpoint allocation in a speculative processor
US9501285B2 (en) * 2010-05-27 2016-11-22 International Business Machines Corporation Register allocation to threads
US9880848B2 (en) 2010-06-11 2018-01-30 Advanced Micro Devices, Inc. Processor support for hardware transactional memory
US8560816B2 (en) 2010-06-30 2013-10-15 Oracle International Corporation System and method for performing incremental register checkpointing in transactional memory
US20120079245A1 (en) 2010-09-25 2012-03-29 Cheng Wang Dynamic optimization for conditional commit

Also Published As

Publication number Publication date
US9317263B2 (en) 2016-04-19
WO2013101840A1 (en) 2013-07-04
TW201346765A (zh) 2013-11-16
US20150046910A1 (en) 2015-02-12
US8893094B2 (en) 2014-11-18
US20130173893A1 (en) 2013-07-04

Similar Documents

Publication Publication Date Title
Zhang et al. DAFT: Decoupled acyclic fault tolerance
EP3507698B1 (en) Program tracing for time travel debugging and analysis
Wang et al. Compiler-managed software-based redundant multi-threading for transient fault detection
KR101559090B1 (ko) 이종 코어를 위한 자동 커널 마이그레이션
US11507475B2 (en) Error detection using vector processing circuitry
Collange et al. Dynamic detection of uniform and affine vectors in GPGPU computations
Eizenberg et al. Barracuda: Binary-level analysis of runtime races in cuda programs
US9600288B1 (en) Result bypass cache
TWI540509B (zh) 用以部署處理器特徵之方法以及用於硬體轉譯之製造物件、含有故障偵測與轉返功能的處理器、多處理器以及計算系統
Best et al. Synchronization via scheduling: techniques for efficiently managing shared state
JP2008536236A (ja) コンピュータシステムにおけるデータ値の整合性(コヒーレンス:coherence)
Meixner et al. Error detection using dynamic dataflow verification
Perez-Cerrolaza et al. GPU devices for safety-critical systems: A survey
Sheikh et al. Control-flow decoupling
Nathan et al. Argus-G: Comprehensive, low-cost error detection for GPGPU cores
Nagarajan et al. ECMon: exposing cache events for monitoring
Condia et al. On the testing of special memories in GPGPUs
Condia et al. Analyzing the sensitivity of gpu pipeline registers to single events upsets
Rosa et al. Extensive evaluation of programming models and ISAs impact on multicore soft error reliability
Zhang et al. GPU-TLS: An efficient runtime for speculative loop parallelization on gpus
Yu et al. Symbolic consistency checking of OpenMP parallel programs
Floridia et al. Deterministic cache-based execution of on-line self-test routines in multi-core automotive system-on-chips
Kim Supporting virtual memory in GPGPU without supporting precise exceptions
Lee et al. Automatic parallelization of fine-grained metafunctions on a chip multiprocessor
Haas Fault-tolerant execution of parallel applications on x86 multi-core processors with hardware transactional memory

Legal Events

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