TW201823970A - 可靠度提升系統和方法 - Google Patents

可靠度提升系統和方法 Download PDF

Info

Publication number
TW201823970A
TW201823970A TW106137219A TW106137219A TW201823970A TW 201823970 A TW201823970 A TW 201823970A TW 106137219 A TW106137219 A TW 106137219A TW 106137219 A TW106137219 A TW 106137219A TW 201823970 A TW201823970 A TW 201823970A
Authority
TW
Taiwan
Prior art keywords
execution
instructions
instruction
operations
code
Prior art date
Application number
TW106137219A
Other languages
English (en)
Other versions
TWI681333B (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 TW201823970A publication Critical patent/TW201823970A/zh
Application granted granted Critical
Publication of TWI681333B publication Critical patent/TWI681333B/zh

Links

Classifications

    • 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/079Root cause analysis, i.e. error or fault diagnosis
    • 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error 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 the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • 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
    • 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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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/3842Speculative instruction execution
    • 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
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)

Abstract

本發明揭示用於提升可靠度的系統和方法。在一具體實施例中,一種系統包括一處理器,其構成執行程式指令並同時進行伴隨執行該等程式指令的可靠度提升運算(例如錯誤檢查、錯誤降低等)。該錯誤檢查可包含:識別該等程式指令的一特定部分的功能;同時推測執行多組運算;及比較來自該等多組運算的執行結果。該等多組運算係該等程式指令的特定部分的函式重複。若該等執行結果具有匹配值,則可使該值在架構上可見。若該等執行結果不具有匹配值,則可將該系統置於安全模式。可進行的錯誤降低運算可包括一校正程序。該校正程序可包含程序回復(Rollback)到一已知有效狀態。

Description

可靠度提升系統和方法
本發明係關於採用處理的電子系統中的錯誤降低。特別是,本發明係關於一種用於利用推測執行提升可靠度的系統和方法。
數位電腦、視訊設備和電話系統等眾多電子技術皆有助於提高生產力,並可減少在大多數商業、科學和娛樂領域中處理資訊的成本。是否能可靠地提供正確的結果經常非常重要。例如,在多種應用(例如駕駛輔助系統、自動駕駛系統、金融異動系統、健康相關系統等)中,資訊的準確分析和系統可靠度皆至關重要。然而,有許多因素會負面地影響系統表現可靠度的能力(例如環境因素、α粒子干擾、電磁干擾、組件耗損、硬體有問題等)。再者,確保可靠度可接受的傳統嘗試經常很昂貴,並會負面地影響性能。
關於確保或改善執行可靠度,傳統方法通常會擇一針對重複非共用硬體或在較高軟體層級中重複。該等重複系統(例如擇一在硬體、軟體或兩者中)會產生針對可靠度進行比較的結果。硬體中的傳統重複通常會涉及昂貴的附加硬體,而軟體中的傳統重複通常會涉及延遲和對性能的負面影響。因此,需要其他方法。
【簡述】
本發明提出用於提升可靠度的系統和方法。在一具體實施例中,一種系統包括一處理器,其構成執行程式指令並伴隨執行該等程式指令同時進行可靠度提升運算。該系統也包括一記憶體,其構成儲存該處理器的資訊。該等可靠度提升運算包括錯誤檢查和視需要的錯誤降低。在一示例性實作中,該錯誤檢查包括:識別該等程式指令的一特定部分的功能;同時推測執行多組運算;及比較來自該等多組運算的執行結果。該等多組 運算係該等程式指令的特定部分的函式重複。若來自該等多組運算的該等執行結果具有匹配值,則可使該值在架構上可見。若來自該等多組運算的該等執行結果不具有匹配值,則可將該系統置於安全模式。依據該等執行結果中的比較不匹配以進行錯誤降低運算。該錯誤降低運算可包括一校正程序。該校正程序可包括回復到一已知有效狀態。
該等多組運算可對應於多個原始指令集。在一具體實施例中,較高階指令轉換(例如轉譯、解碼、解譯、其組合等)成重複該等較高階指令的功能的原始指令組。在一示例性實作中,該記憶體包括一轉換系統,其將ARM架構碼轉換成原始機器指令。該ARM架構碼對應於該等程式指令的特定部分。在一具體實施例中,最佳化可實行為該等多個原始指令集的轉換和建立的一部分。在一示範中,進行實作動態編碼最佳化(Dynamic code optimization,DCO)。
在一具體實施例中,一種可靠度提升方法包括:進行一指令剖析處理,其包括確定與程式指令相關聯的功能;執行該等程式指令並同時進行伴隨執行該等程式指令的錯誤檢查。該方法可包括準備用於執行和錯誤檢查的原始機器指令。該錯誤檢查可包括:同時推測執行多組運算,其中該等多組運算係該等程式指令的函式重複;及比較來自該推測執行的結果。若該比較匹配,則使該所得到的值在架構上可見。依據該比較中的不匹配以進行錯誤降低。若該比較不匹配,則該錯誤降低可包括校正錯誤。在一具體實施例中,若確認該比較匹配值,而且若該比較不匹配,則進行一程序回復,以恢復到已知有效狀態。
該可靠度提升可應用於多種運算。可靠度提升錯誤檢查可應用於載入和儲存路徑。該可靠度提升可包括比較與該特定碼部分相關聯的載入運算的結果。該可靠度提升可包括比較輸入分支值。在一具體實施例中,儲存使在架構上可見的值,而且該錯誤檢查包括檢查儲存。該儲存檢查可包括:將來自一第一暫存器的一初始儲存值儲存至一第一儲存位置;從該第一儲存位置載入一傳回儲存值,其中該傳回儲存值係載入一第二暫存器中;及比較該第一暫存器中的初始儲存值和該第二暫存器中的傳回儲存值。附加錯誤降低可基於該第一暫存器中的初始儲存值中的不匹配和該 第二暫存器中的傳回儲存值進行。
在一具體實施例中,一種電腦可讀取媒體包括在其上編碼的指令,其在透過處理器執行時會進行包含錯誤檢查和視需要的錯誤降低的可靠度提升運算。該等運算包括一特定碼部分的轉換和最佳化,以產生原始機器指令;及該等原始機器指令的自檢推測執行。該錯誤降低係基於該自檢推測執行的結果。特定碼部分的轉換和最佳化可包括建立該等原始機器指令的多個指令流。該等多個指令流可包括多個原始指令集,其係該特定碼部分的函式重複。該自檢推測執行可包括同時推測執行該等多個指令流;及比較該等結果。依據比較不匹配以進行錯誤降低。
在一具體實施例中,一種執行程式的方法包括:將包括一高階語言的指令的程式轉換成一處理器原始的複數指令,該等複數指令用於在該處理器上執行,其中該程式的一部分係轉換成原始機器指令的一第一碼部分和原始機器指令的一第二碼部分。該轉換可包括自動確定轉換成一第一碼部分和第二碼部分的程式部分。該第一碼部分和該第二碼部分係彼此函式等效,而且與該程式的該部分係函式等效。該處理器推測執行該第一碼部分和該第二碼部分,以產生各自第一結果和第二結果。在一示例性實作中,該處理器實質上同時推測執行該第一碼部分和該第二碼部分,以產生各自第一結果和第二結果。將該等第一結果和該等第二結果進行比較,以產生比較結果。
依據該比較結果內的不匹配以進行錯誤降低處理。在一具體實施例中,進行錯誤降低處理包括該處理器回復到該等複數指令的執行的一最後的已知確認點。在一示例性實作中,進行錯誤降低處理包括該處理器產生一失效狀況。
該處理器可以係依序執行微處理器、亂序執行微處理器等。在一示例性實作中,該處理器包括複數執行單元,而且該處理器推測執行該第一碼部分和該第二碼部分,以產生各自第一結果和第二結果。該等執行單元可並行運算,以在該處理器設定處於推測執行模式時,執行該第一碼部分和該第二碼部分。該處理器依據該比較結果的匹配可使該等結果在架構上可見。該等複數指令的部分可以係該程式的可靠度關鍵部分。該轉 換可透過二進制轉譯系統進行。該方法可更包括最佳化用於在該處理器上執行的第一碼部分和第二碼部分。
100‧‧‧系統
110、811、821、831、1310‧‧‧原始碼
120、814、822、832‧‧‧編譯器
130、330、1330‧‧‧目的碼
140‧‧‧轉換組件
150‧‧‧可靠度提升處理組件
200、600、1000‧‧‧可靠度提升方法
331‧‧‧原始機器指令;原始指令
332‧‧‧非原始指令
340‧‧‧轉換處理
342‧‧‧轉譯處理
343‧‧‧解碼處理
344‧‧‧解譯處理
350‧‧‧可靠度提升區塊
351‧‧‧重複區塊
352‧‧‧推測執行處理
353‧‧‧比較區塊
354‧‧‧使在架構上可見區塊
355‧‧‧置於安全模式區塊
400、500‧‧‧可靠度提升系統;錯誤降低系統
410、510‧‧‧ARM指令
420、520‧‧‧轉換組件
411、511‧‧‧碼部分;較高階指令碼部分或區域
412、413、414、419、512、513、514、519‧‧‧碼部分
419、419A、419B、519、519A、519B‧‧‧區域
411A、411B、511A、511B‧‧‧原始機器指令部分或區域
421、531‧‧‧函式重複組件
430、530‧‧‧執行組件
440、540‧‧‧比較組件
441、447、541、547‧‧‧比較邏輯
450、550‧‧‧確認組件
700‧‧‧程式執行方法
810、830‧‧‧習知指令管線嘗試;習知重複嘗試
812‧‧‧原始碼的第一副本
813‧‧‧原始碼的第二副本
815‧‧‧第一目的碼
823‧‧‧第一目的碼
816‧‧‧第二目的碼
817‧‧‧第一硬體核心
818、835‧‧‧機器碼的第一副本
819、838‧‧‧機器碼的第二副本
820‧‧‧有效可靠度提升指令管線;可靠度提升方法
827‧‧‧具有錯誤降低的第一硬體核心;具有錯誤檢查和錯誤降低的第一硬體核心
828‧‧‧第一原始機器指令;原 828第一原始機器指令碼
829‧‧‧第二原始機器指令
833‧‧‧目的碼的第一副本;目的碼
834‧‧‧硬體組件;第一硬體核心
837‧‧‧硬體組件;第二硬體核心
900‧‧‧微處理系統
902‧‧‧ARM指令
904‧‧‧轉譯系統
910‧‧‧微處理器核心
911‧‧‧提取邏輯
912‧‧‧解碼邏輯;解碼器
913‧‧‧排程器
914‧‧‧執行邏輯
915、916‧‧‧引擎
917‧‧‧比較組件
918‧‧‧記憶體邏輯
919‧‧‧寫回邏輯
920‧‧‧記憶體階層
921‧‧‧L1處理器快取
922‧‧‧L2處理器快取
923‧‧‧L3處理器快取
924‧‧‧記憶體控制器
927‧‧‧主記憶體
928‧‧‧輔助儲存體
929‧‧‧第三儲存體
1220‧‧‧暫存器
1110‧‧‧第一暫存器
1120‧‧‧第二暫存器
1130‧‧‧第一儲存位置
1140‧‧‧比較器
1200‧‧‧執行指令管線
1210‧‧‧指令緩衝器
1230‧‧‧重排序緩衝器
1240‧‧‧載入緩衝器
1251、1252、1253、1254‧‧‧算術邏輯單元(ALU)
1270‧‧‧記憶體
1300‧‧‧處理流程
1340‧‧‧轉換組件
1350‧‧‧可靠度提升處理
1390‧‧‧正常處理
1420、1430、1440、1470、1490‧‧‧函式
1420A、1420B、1430A、1430B、1440A、1440B、1470A、1470B、1490A、1490B、1911‧‧‧運算
1480‧‧‧函式;運算
1500、1600、1700、1900‧‧‧處理流程
1910、1920‧‧‧錯誤檢查推測執行運算
1930‧‧‧狀況相依性運算
2000‧‧‧電腦系統
2001‧‧‧中央處理單元(CPU);中央處理器
2002‧‧‧主記憶體
2003‧‧‧晶片組
2004‧‧‧可拆卸式資料儲存裝置
2005‧‧‧南橋
2007‧‧‧輸入裝置
2008‧‧‧信號通訊連接埠
2009‧‧‧北橋
2010‧‧‧圖形子系統
2011‧‧‧圖形處理單元(GPU);器
2015‧‧‧訊框緩衝器;視訊緩衝器
2020‧‧‧顯示器;顯示裝置;顯示螢幕
2091-2095、2097‧‧‧通訊匯流排
A‧‧‧指令管線;功能
B‧‧‧指令管線;替代原始碼
Z‧‧‧原始碼;指令管線
R1、R2、R3、r1、r2、r3、r32、a、b‧‧‧暫存器
ld‧‧‧基本載入運算
C、Y、Y(O)‧‧‧目的碼
D、E、R、T、D(O)、E(O)、R(O)‧‧‧原始機器指令
T(O)‧‧‧機器指令
併入並形成本說明書的一部分的所附圖式,藉由範例而非限制例示本發明的具體實施例。本說明書中所提及的所附圖式除非具體地註明,否則應理解為未按比例繪製。
第一圖係依據一具體實施例的示例性系統的方塊圖。
第二圖係依據一具體實施例的示例性電腦所實行的錯誤降低方法的方塊圖。
第三圖係依據可靠度提升方法的一具體實施例的處理流程的方塊圖。
第四圖係依據一具體實施例的錯誤降低系統的方塊圖。
第五圖係依據一具體實施例的錯誤降低系統的方塊圖。
第六圖係依據一具體實施例的示例性電腦所實行的可靠度提升方法的流程圖。
第七圖係依據一具體實施例的示例性程式執行方法的流程圖。
第八圖係習知指令管線(pipeline)嘗試與依據一具體實施例的示例性有效錯誤降低指令管線的方塊圖比較。
第九圖示意性描繪出依據一具體實施例的微處理系統。
第十圖係依據一具體實施例的示例性電腦所實行的錯誤降低方法的流程圖。
第十一圖係依據一具體實施例的示例性儲存可靠度提升的方塊圖。
第十二圖係依據一具體實施例的執行指令管線的方塊圖。
第十三圖係依據一具體實施例的示例性處理流程1300的方塊圖。
第十四圖係依據一具體實施例的示例性運算序列的方塊圖。
第十五圖係依據一具體實施例的示例性錯誤檢查的處理流 程。
第十六圖係依據一具體實施例的確認點之間的示例性多個錯誤檢查的處理流程。
第十七圖係依據一具體實施例的示例性不同指令管線的處理流程。
第十八圖係依據本發明的一具體實施例的示例性轉換和最佳化的方塊圖。
第十九圖係依據一具體實施例的錯誤檢查的示例性處理流程。
第二十圖係依據一具體實施例的示例性電腦系統的方塊圖。
現將詳細參照本發明的該等較佳具體實施例,其範例在所附圖式中例示。儘管將搭配該等較佳具體實施例說明本發明,但應可理解,其並非旨在將本發明限制在這些具體實施例。反之,本發明旨在涵蓋可包括在如所附諸申請專利範圍所界定出的本發明的精神與範疇內的替代例、修飾例和相等物。再者,在下列本發明的實施方式中,闡述眾多具體細節以提供對本發明的周密理解。然而,此領域一般技術者將明白,本發明可實作而無需這些具體細節。在其他實例中,已習知的方法、程序、組件和電路並未詳細說明,以免不必要地模糊本發明的態樣。
概述
本發明提出用於改善可靠度的系統和方法。該可靠度提升可應用於該處理的各種態樣(例如包括執行運算、載入運算、儲存運算等),並有助於改善各種性能度量(例如單位小時失效數(Failure in time,FIT)等)。該等可靠度提升系統和方法可包括利用推測執行的有效錯誤檢查的自動實作。在一具體實施例中,較高階指令(例如關鍵碼、安全相關碼等)的特定部分與透過推測執行的多組運算而重複的功能相關聯。該等多個推測執行可包括多組運算或控制,其係視為函式重複(即使其可能並非確切字面重複)。在一示例性實作中,儘管該等多組運算可進行或達成類似功能,但其可包括將結果載入不同暫存器中的指示(例如以允許並行執行、實現比較等)。該 等多組運算可對應於多個原始硬體指令集。在一具體實施例中,該等原始硬體指令或微碼係處理器實際上執行的該等指令。
比較來自該等多組運算的推測執行的該等結果。在一具體實施例中,若該比較指示該等多個推測執行導致不相同或不匹配的值,則不會使該等所得到的值在架構上可見。在一示例性實作中,不匹配結果可觸發各種錯誤降低運算(例如回復到該最後的有效確認狀態、轉送該錯誤的通知、附加失效分析、失效處理程序(handler)等)。若該比較指示該等多個推測執行導致相同或匹配的值,則可使該匹配值或結果在該系統內在架構上可見。使該結果在架構上可見可包括將該值轉送至一確認階段。
應可瞭解,與重複功能相關聯的該等多組運算可經由各種機制建立或引入。在一具體實施例中,與重複功能相關聯的多組運算的建立或引入,可實行為原始硬體指令或微碼的產生或形成的一部分。在一示例性實作中,該等原始硬體指令的產生或形成包括一二進制輸入(例如邏輯1和0、高和低電壓等),其在該基原始器或硬體層級利用。在一示例性實作中,該產生或形成可與將非原始指令轉換(例如解碼、解譯、轉譯等)成原始硬體指令相關聯。在一具體實施例中,原始硬體指令或微碼的產生或形成涉及指令集架構(Instruction Set Architecture,ISA)層級指令。該等ISA層級指令可以係原始ISA指令或非原始ISA指令。可進行中間處理,以在非原始ISA指令與原始ISA指令之間進行轉換。
應可瞭解,該可靠度提升可用於達成多種目的。在一具體實施例中,該可靠度提升透過識別和校正若非如此則會錯誤的結果,而有助於改善單位小時失效數(FIT)管理。該可靠度提升也可用於幫助識別硬體問題。該可靠度提升可擴展至儲存運算,並有助於識別和校正儲存問題。
第一圖係依據一具體實施例的示例性系統100的方塊圖。系統100包括原始碼110、編譯器120、目的碼130、轉換組件140和可靠度提升處理組件150。原始碼110可包括各種語言(例如FORTRAN、C++、Java等)的各種使用者編程碼。編譯器120會將原始碼110編譯或轉譯成目的碼130。目的碼130可包括各種架構指令(例如ARM指令、CISC指令等)。轉換組件140會確定目的碼係原始機器指令格式或非原始格式,然後將非原 始指令轉換(例如轉譯、解碼等)成原始機器指令。可靠度提升處理組件150會以無縫地有助於錯誤檢查和錯誤降低的方式進行處理。該可靠度提升可在沒有該架構的該等較高層級的知識(例如在該應用層級、程式層級等)的情況下進行,而且無需該等較高層級進行調整。在一具體實施例中,該等較高層級可指示其想要錯誤檢查和錯誤降低透過簡單通知進行,而不必對該等較高層級進行變更,或確保可取得附加硬體以進行該減輕。
在一具體實施例中,該可靠度提升包括進行重複一功能並比較該等結果的運算。若該比較指示匹配,則該匹配結果或值會接受為良好或有效。若該等比較結果不匹配,則可實行各種減輕運算(例如回復到已知有效或良好狀態並再次嘗試等)。在一示例性實作中,報告和追蹤失效或不匹配事件,並進行附加分析(例如偵測硬體組件失效等)。
第二圖係依據一具體實施例的可靠度提升方法200的方塊圖。
在步驟210,進行指令剖析處理。在一具體實施例中,接收或存取和剖析指令以確定對應功能。該所接收的指令可以係較高階語言指令。在一示例性實作中,該功能與指令的一部分或區塊相關聯。該剖析可針對指令的運算碼(op-codes)、運算元(operands)、定址模式等。
在步驟220,準備原始機器指令用於執行。在一具體實施例中,轉換處理確定目的碼係原始或非原始格式,然後將非原始指令轉換(例如轉譯、解碼、其組合等)成原始機器指令。該轉換處理的該等結果包括一第一組原始機器指令,其能從步驟211實行剖析功能。在一示例性實作中,重複處理可建立也能從步驟211實行該剖析功能的第二組原始機器指令。
在步驟230,進行或執行與該等原始機器指令集相關聯的運算,並伴隨進行該等運算進行錯誤檢查處理。所進行的錯誤檢查的類型,可依與該功能(例如執行運算、儲存運算等)相關聯的運算的類型而定。該等運算可推測執行。在一具體實施例中,運算的錯誤檢查包括同時進行重複該功能並比較該等結果的運算。若該比較指示匹配,則該匹配結果或值會接受為良好或有效,而且使其在架構上可見。若該等比較結果不匹配,則將該處理置於安全模式。在一具體實施例中,將該處理置於安全模式可包 括前進至步驟240。
在步驟240,視需要地進行錯誤降低。各種減輕運算皆可實行,並可依與該功能(例如執行運算、儲存運算等)相關聯的運算的類型而定。在一具體實施例中,與推測執行相關聯的該等減輕運算可包括回復到一已知有效或良好狀態;及再次嘗試。與儲存運算相關聯的減輕運算可包括錯誤校正碼(Error correcting code,ECC)運算。在一示例性實作中,追蹤不匹配事件,並進行附加分析(例如偵測硬體組件失效等)。
第三圖係依據可靠度提升方法的一具體實施例的處理流程的方塊圖。接收目的碼330,並包括原始機器指令331和非原始指令332。在一具體實施例中,目的碼330類似於目的碼130,並可包括各種架構指令(例如ISA指令、ARM指令、CISC指令等)。在區塊340中,轉換處理確定目的碼330的部分係非原始或原始機器指令格式,然後將非原始指令轉換成原始機器指令。在一具體實施例中,該轉換係透過硬體進行。原始指令331係原始機器指令格式,並直接地轉送用於可靠度提升處理。有關非原始指令332,轉換處理340確定要使用的轉換處理(例如轉譯處理342、解碼處理343或解譯處理344等),並將非原始指令332轉換(例如轉譯、解碼等)成原始機器指令。該等原始機器指令係針對進行與該等非原始指令類似的功能。該等原始機器指令係轉送用於區塊350中的可靠度提升處理。在區塊351中,該等原始機器指令配置為導引在推測執行處理352期間重複該功能的多組運算。在一具體實施例中,來自對應於功能的轉換區塊340的第一組機器碼指令,係透過建立重複該功能的第二組機器碼指令的重複區塊351接收。在一示例性實作中,原始硬體指令係透過硬體(例如分離器、排程器等)而在功能上重複。
在一具體實施例中,重複該功能的第一組運算在指令管線A中執行,而且重複該功能的第二組運算在指令管線B中執行。該等推測執行的該等結果在區塊353中進行比較。若該等推測執行結果匹配,則在區塊354中使該結果值在架構上可見。在一具體實施例中,確認該匹配結果值。若該等推測執行結果不匹配,則在區塊355中將該系統置於安全模式。該安全模式可包括一回復。在一示例性實作中,該安全模式包括一視需要 的錯誤降低處理。
重複功能的推測執行
在一具體實施例中,推測執行係進行一組運算的處理,而且若結果適當則該處理向前移動,若該等結果不適當則可將該處理置於安全模式。該安全模式可包括將該處理重新置於一有效狀況或狀態(例如回復到先前狀態、跳轉至另一已知有效狀態、停止運算等)。在一示例性實作中,該推測執行係檢查失效或錯誤的自檢推測執行。該推測執行資料可從該等架構和其他運算「隱藏」。在可靠度建立前,該等架構和其他運算不知道該等推測執行結果。在可靠度建立之後,可確認該等結果或使其在架構上可見。在一示例性實作中,亂序所進行的運算係視為推測執行。
在一具體實施例中,只要該硬體儲存該等狀態並在進行回復時還原該等狀態,則該等確認和回復功能根本上係硬體機制。該等所提出的系統和方法強力地運用該硬體支援推測執行並在需要時再次嘗試的事實。在一示例性實作中,若存在失效狀況(例如該比較中的不匹配),則該硬體發出比較失效指令。該比較失效指令可包括要進行以依據一失效狀況的運算。該比較失效指令可用於返回已知有效的先前確認點。在一具體實施例中,進行一般比較,而且若存在不匹配,則該比較失效指令啟動至處理程序或中斷的分支。該推測的確切形式並未限制。該可靠度提升處理與推測和機器的許多形式皆相容。
第四圖係依據一具體實施例的可靠度提升系統400的方塊圖。接收ARM指令410,並分成碼部分411、412、413、414和419。在一具體實施例中,該等ARM指令類似於目的碼130。該等碼部分會轉送至轉換組件420。轉換組件420會確定該等ARM指令部分是否係原始機器格式,然後將非原始機器格式的ARM指令部分轉換成原始機器指令。轉換組件420可包括一函式重複組件421,其以該原始機器語言或微碼建立多個函式重複。例如,較高階指令碼部分或區域411的功能會轉換和轉送至執行組件430,作為重複的原始機器指令部分或區域411A和411B。在一具體實施例中,原始機器指令部分或區域411A和411B會在執行時實行相同功能。同樣地,區域419會在區域419A和419B中轉換和重複。該等原始機器指 令區域係透過執行組件430(例如在處理器中等)推測執行,而且該等結果會轉送至比較組件440。該執行實質上可並行進行。在一示例性實作中,比較組件440包括比較邏輯441和447。比較邏輯441會比較411A和411B的結果。比較邏輯447會比較區域419A和419B的結果。若該比較指示該結果匹配,則該各自值會轉送至確認組件450(例如確認緩衝區、確認暫存器等)。若該比較指示該等結果不匹配,則該處理會回復到該最後的有效確認點,而且執行組件430再次進行該執行,或可採取一些其他的錯誤降低。
第五圖係依據一具體實施例的可靠度提升系統500的方塊圖。錯誤降低系統500類似於錯誤降低系統400,不同之處在於該函式重複係在錯誤降低系統500的執行組件中進行。接收ARM指令510,並分成碼部分511、512、513、514和519。該等碼部分會轉送至轉換組件520,並轉換成原始機器指令。轉換組件520會確定該等ARM指令部分是否係原始機器格式,然後將非原始部分轉譯成原始機器指令。該等原始機器指令會轉送至用於執行的執行組件530。執行組件530包括一函式重複組件521,其導引在功能上重複該等原始機器指令或微碼的多組運算。在一示例性實作中,函式重複組件521會建立函式重複或副本(copies)的多個該等原始機器指令集或微碼。例如,較高階指令碼部分或區域511的功能會轉換為重複的原始機器指令部分或區域511A和511B。在一具體實施例中,原始機器指令部分或區域511A和511B會在執行時實行類似功能。同樣地,區域519會在區域519A和519B中轉換和重複。該等推測執行結果會轉送至比較組件540(其可包括比較邏輯541和547)。若該等比較指示該等各自推測執行結果匹配,則該值會轉送至確認組件550。若該等各自推測執行結果不匹配,則該處理會回復到該最後的有效確認點,而且執行組件530再次進行該執行。或者,可採取一些其他的錯誤降低動作。
在一具體實施例中,一組運算可對應於一組原始機器指令(例如機器碼、微碼、二進制碼等)。指令剖析和轉換處理可包括自動準備或建立係一較高階碼部分的函式重複的多個原始機器指令集。轉換系統可自動建立或產生該等函式重複的原始硬體指令。該轉換系統會接收較高階碼(例如非硬體原始的指令、無法透過硬體直接執行的指令等),並將其轉換成 原始硬體指令。在一示例性實作中,接收原始硬體指令,並可透過硬體直接地執行,而且無需進一步轉換(例如轉譯、解碼、解譯等)。錯誤檢查可包括基於該等多個原始機器指令集以推測執行該重複功能。該等推測執行從已知有效或良好狀態開始,並沿著該推測路徑向下前進。
在一具體實施例中,轉換包括二進制轉譯。在一示例性實作中,動態二進制轉譯器可用於熱碼推測執行。該熱碼推測執行可包括錯誤檢查和錯誤降低運算。
存在多種可實行的函式。該功能可包括數學運算,例如各種值的加法、乘法、除法等。該功能可包括邏輯運算,例如各種輸入的邏輯「或(OR)」、邏輯「及(AND)」等。第六圖係依據一具體實施例的示例性可靠度提升方法600的流程圖。可靠度提升方法600係用於提升與較高階碼部分相關聯的執行運算的可靠度。步驟605係與特定功能相關聯的較高階碼部分的範例。接收或存取該較高階碼部分,並在步驟610中進行剖析處理。在一具體實施例中,步驟610中所進行的剖析處理類似於步驟210中所進行的剖析處理。該剖析處理包括識別與該較高階碼部分相關聯的特定功能。在一示例性實作中,該特定功能係ADD,其中暫存器R1中的值會加到暫存器R2中的值,而且該結果會載入暫存器R3中。
在一具體實施例中,步驟610中的剖析包括準備用於類似於步驟220執行的原始機器指令。原始機器指令的準備可包括確定所接收或存取的指令是否係一原始機器指令格式;及若不是,則將非原始機器指令轉換成原始機器指令。該等所得到的原始機器指令會導引對應的運算組(例如在步驟621、622等)。
在步驟620,進行錯誤檢查處理。在一具體實施例中,推測執行對應於該特定功能的多組運算。應可瞭解,可存在該功能的超過兩個重複的推測執行,這也可提高識別錯誤的可能性。該等推測執行實質上可同時發生。每組運算皆係較高階碼部分功能的函式重複。步驟621係第一組推測執行的運算的範例,其中暫存器r1中的值會加到暫存器r2中的值,而且該結果會載入暫存器r3中。步驟622係第二組推測執行的運算的範例,其中暫存器r1中的值會加到暫存器r2中的值,而且該結果會載入暫存器 32中。步驟623係比較暫存器r3和暫存器32中的值的範例。若該比較結果是匹配,則該處理會前進至步驟624,而且暫存器r3中的值視為有效。在一具體實施例中,使暫存器r3中的有效值在架構上可見,而且該處理前進至另一指令集(直到該程式完成)。在一示例性實作中,確認該結果。若該比較導致不匹配,則該處理前進至步驟630,並進行錯誤降低。該錯誤降低可包括一回復到一最後的已知有效狀態。該處理可從該最後的已知有效狀態再次重複。
隨著執行的該等期間增加,對α粒子干擾的易損性會提高,而且推測執行錯誤檢查和錯誤降低可以非常有幫助。在一具體實施例中,不太可能錯誤將多次以完全相同的方式發生,並對至該比較的輸入多次產生完全相同的錯誤值。因此,透過在推測執行的多組運算中重複該功能,有可能該比較將偵測到失效的發生。此外,存在回復到有效狀態並重複該等運算可校正該問題的合理期望。該回復執行可以較少推測並具有較高成功機率的方式進行。在一具體實施例中,執行失效係視為可透過推測執行錯誤檢查和錯誤降低而同時偵測到和校正。
第七圖係依據一具體實施例的示例性程式執行方法700的流程圖。在一示例性實作中,程式執行方法700包括執行程式指令和可靠度提升運算。該等可靠度提升運算可包括錯誤檢查和錯誤降低。應可瞭解,程式執行方法700可在多種處理器(例如依序執行微處理器、亂序執行微處理器等)上實行。該處理器可包括複數執行單元。
在步驟710,包括一高階語言的指令的程式會轉換(例如轉譯、解碼、解譯等)成處理器原始的複數指令。該等複數指令可在該處理器上執行。在一示例性實作中,該等複數指令的一部分係該程式的關鍵可靠度部分。
在一具體實施例中,該程式的一部分會轉換成原始機器指令的第一碼部分和原始機器指令的第二碼部分。該第一碼部分和該第二碼部分係彼此函式等效,而且與該程式的該部分在函式上等效。該轉換可包括最佳化用於在該處理器上執行的該等複數指令。該轉換可包括自動確定要轉換該等複數指令的哪一項。
在步驟720,該處理器推測執行該第一碼部分和該第二碼部分,以產生各自第一結果和第二結果。該第一碼部分和該第二碼部分的推測執行實質上可同時。在一示例性實作中,並行運算的複數執行單元可在該處理器設定處於推測執行模式時,執行該第一碼部分和該第二碼部分。
在步驟730,該等第一結果會和該等第二結果進行比較,以產生比較結果。若該等第一結果和第二結果匹配,則該第一結果會視為有效或良好。在一具體實施例中,該處理器依據該比較結果的匹配會使該等結果在架構上可見。
在步驟740,依據該比較結果內的不匹配進行錯誤降低處理。在一具體實施例中,進行該錯誤降低處理包括該處理器回復到該等複數指令的執行的一最後的已知有效或確認點。進行錯誤降低處理可包括該處理器產生一失效狀況。
在一具體實施例中,由於對性能和成本的負面影響極小或不存在,因此推測執行錯誤檢查視為「不受拘束(free)」。在一示例性實作中,由於該推測執行在該原始編程關鍵路徑的限制內發生,因此該錯誤檢查不會明顯降低性能速度或負面影響時序。相較於僅執行該原始碼的一版本而沒有錯誤檢查推測執行,該錯誤檢查在一示例性實作中,不會使該關鍵路徑時序在確認點之間明顯更久。該錯誤檢查對與關鍵路徑上的確認點相關聯的確認時序具有一點或無明顯的負面影響。再者,該錯誤檢查不會對記憶體引入附加或新的拖延(stalls)。有關成本,在一示例性實作中,該錯誤檢查無需附加專用重複硬體。
與傳統方法的差異
請即重新參考第八圖,例示習知指令管線嘗試810和830相對於依據一具體實施例的有效可靠度提升指令管線820的方塊圖比較。
在習知重複嘗試810中,接收原始碼811,而且軟體中存在重複以產生原始碼的第一副本812和原始碼的第二副本813。儘管這可能似乎係重複該原始碼的簡單程序,但實際上其經常在傳統上需要程式設計師相當多的協調和努力。編譯器814會編譯或轉譯原始碼副本,以序列地產生第一目的碼815(對應於原始碼的第一副本812)和第二目的碼816(對應於 原始碼的第二副本813)。該編譯器會將該碼轉送至第一硬體核心817。第一硬體核心817會解譯來自編譯器814的碼,並分別基於第一目的碼815和第二目的碼816建立機器碼的第一副本818和機器碼的第二副本819。第一硬體核心817隨後序列地執行該碼。即使該編譯器將原始碼直接地轉譯成機器碼,但該等轉譯和執行仍會序列地進行,從而大約加倍該執行時間,由此增加非必要的延遲。
即使軟體方法中的傳統重複嘗試透過使用用於執行機器碼的第一副本818和機器碼的第二副本819(例如重複硬體等)的附加硬體而縮短該時間軸,但這無助於減輕與軟體方法中的傳統重複相關聯的許多問題。第一硬體核心817的重複硬體不會縮短多少習知重複嘗試810的時間軸。建立該原始碼的該等副本(例如原始碼的第一副本812、原始碼的第二副本813等)並產生該目的碼(例如第一目的碼815、第二目的碼816等)仍需要時間。再者,涉及使用更多硬體核心(例如除了第一硬體核心817之外等)的傳統嘗試通常會消耗附加資源。若除了第一硬體核心817之外還加入第二重複硬體核心(未顯示)執行機器碼的第二副本819,則硬體習知重複嘗試830中的重複所例示的該等負面影響和資源消耗會同樣影響重複嘗試810。
硬體方法中的傳統重複係在習知重複嘗試830中進行例示,其包括兩個昂貴且消耗資源的硬體核心。接收原始碼831,而且編譯器832編譯或轉譯該原始碼,並產生對應於原始碼831的第一副本的目的碼的第一副本833。該編譯器將該碼轉送至硬體組件834和837中的重複。第一硬體核心834解譯來自編譯器832的目的碼833,並建立機器碼的第一副本835,然後執行該碼。同樣地,第二硬體核心837解譯來自編譯器832的目的碼833,並建立機器碼的第二副本838,然後執行該碼。該等多個硬體核心可具有與硬體方案中的傳統重複相關聯的多種特性和特徵。硬體方案中的傳統重複可包括:獨立核心,其具有記憶體外部的一共用點;兩個獨立核心,其共用第二階快取;軟體,其重複或副本該碼;及兩個不同核心,其獨立地運行該等副本;多個雙重鎖定步驟處理器核心,其按時脈基礎在時脈上運行相同碼,並在每次循環比較一組信號以確定一切皆相同;依此類推。可惜的是,在硬體方法中的傳統重複中使用兩個核心,會使硬體的 數量和成本大約加倍。
依據本發明的一具體實施例的可靠度提升方法820,比該等習知重複嘗試810和830任一者皆更有效且可行。可靠度提升方法820無需像習知重複嘗試810那樣多的時間,而且不會對該原始碼的程式設計師造成顯著壓力或不便。可靠度提升方法820無需像習知重複嘗試830那樣多的昂貴資源。接收原始碼821,並容易地編譯或轉譯成第一目的碼823。第一目的碼823可以係架構層級碼(例如ARM指令、CISC指令等)。在一具體實施例中,不同於該等習知方法,本領域到目前為止皆無需對錯誤檢查或錯誤降低考量或消耗資源。編譯器822將第一目的碼823轉送至具有錯誤降低的第一硬體核心827。具有錯誤檢查和錯誤降低的第一硬體核心827,推測執行函式上類似的該等第一原始機器指令828和第二原始機器指令829。在一具體實施例中,與第一原始機器指令碼828相關聯的運算係視為第一串流,而且與第二原始機器指令829相關聯的運算係視為第二串流。在一具體實施例中,不同於習知重複嘗試810的該等消耗時間的序列運算和習知重複嘗試830的昂貴第二硬體核心,具有錯誤檢查和錯誤降低的第一硬體核心827可在單個硬體核心中實質上並行實行該等第一原始機器指令828和第二原始機器指令829。
軟體運算中的習知重複經常包括更新內部狀態,這會造成問題。軟體方法中的習知重複通常會需求手動重新結構化大量碼,而且程式設計師或使用者必須重寫該等演算法才能克服該等問題。一般來說,軟體碼中的習知重複並未結構化為容易地解開問題或進行回復。遇到無效或不可靠的資料時,基本上廢除或丟棄一整串碼並重新開始對軟體方法中的習知重複而言,經常不實用。可能不實用的一項原因在於,其他運算可能已重寫回復或重新開始所需要的原始輸入資料。
該可靠度提升自檢推測執行包括該功能的自動重複,以及該檢查或比較的自動插入。在一具體實施例中,該自檢推測執行對使用者和較高階程式顯而易見。該較高階程式或應用程式可以可靠度提升推測執行方式運行,而不必手動地重寫該軟體或程式碼。該推測執行會等待重寫或銷毀該輸入值,直到確認該等所產生或得到的輸出的可靠度為止。此外, 該等可靠度提升運算彈性地排程和執行的能力,也有助於提高軟體方法中的習知重複的性能。在一具體實施例中,應用程式可指示可靠度提升係要對應用程式碼的特定部分進行,但該應用程式不知道較低階的該等實作細節(例如推測執行運算、錯誤降低、排程、協調等)。
該可靠度提升可透過多種觸發啟動。在一具體實施例中,針對特定碼部分觸發可靠度提升推測執行模式。在一具體實施例中,頁表屬性可與該特定碼部分相關聯,並用於觸發該推測執行。在一示例性實作中,使用可見暫存器幫助將該機器設定為處於該推測執行模式。
應可瞭解,實行或排程與可靠度提升相關聯的異動的次序可以有彈性。在一具體實施例中,該等可靠度提升運算可依序、亂序、交插等。在一示例性實作中,依序運算會以實質上與所取回的相同的次序執行該等指令,而未在序列器中重排序,而且亂序運算會執行相對於對應的非原始指令所重定序的指令。可靠度提升運算可以與應用程式次序不同的次序進行。該可靠度提升可在擇一係亂序機器或依序機器的機器上運算。有關微處理器架構,可存在具有重排序緩衝器的亂序處理器,而且其會在針對匹配/不匹配檢查該重排序緩衝器內容之後,將該資料從該重排序緩衝器退出。在一具體實施例中,由於存在要回復到的某物,因此無論事物是否重排序,該錯誤檢查仍可推測執行。可存在兩條獨立並行的指令路徑,然後在某一點比較該等結果以決定是否存在匹配並確認,或是否存在不匹配並回復。在一示例性實作中,該演算法或微碼可排程進行可靠度提升運算的次序。
範例可靠度提升系統
第九圖係依據一具體實施例的示例性微處理系統900的方塊圖。微處理系統900包括一微處理器核心910和相關聯軟體;及記憶體階層920,其可能與本說明書所說明的該等系統和方法有關而採用。特別是,可能實行該所描繪出的系統以有效地利用以上所說明的該等可靠度提升方法,而且這將在以下與各種範例有關而進一步加以說明。
接收ARM指令902,並轉送至轉譯系統904。在一具體實施例中,該等ARM指令類似於目的碼120,而且微處理系統900類似於可 靠度提升處理組件150。
該微處理器核心更包括處理硬體,其通常會包括提取邏輯911、解碼邏輯912、排程器913、執行邏輯914、記憶體邏輯918和寫回邏輯919。提取邏輯911會從記憶體階層920的一或多個位置(但通常會擇一從L2和L3快取及主記憶體所支援的統一或專用L1快取)取回指令。在一具體實施例中,該提取邏輯可包括一轉譯位址快取(Translation-address cache,THASH)。解碼邏輯912會將所接收的非原始機器指令解碼成原始機器指令。該解碼可包括剖析運算碼、運算元和定址模式。該等原始機器指令會轉送至排程器913。排程器913會排程從用於透過執行邏輯914執行的解碼邏輯912和提取邏輯911接收的原始機器指令。執行邏輯914包括引擎915和916,其可進行功能上重複的推測執行,而且該等功能上重複的推測執行可能實質上並行地進行。執行邏輯914包括比較組件917,其會比較該等功能上重複的推測執行的該等結果。在載入/儲存架構中,記憶體邏輯918會進行載入和儲存運算,例如將來自主記憶體的運算元載入處理器暫存器中。對產生主要結果的運算(例如相對於在該執行程式中進行至另一位置的分支的運算)而言,寫回邏輯919會將該結果寫至適當位置,例如處理器暫存器。
應可理解,該等以上指令階段(pipetages)在某種程度上係一般精簡指令集電腦(RISC)實作所特有並包括在其中。更普遍係,微處理器可包括提取指令階段、解碼指令階段和執行邏輯,其中記憶體和寫回功能係透過該執行邏輯執行。該等所提出的可靠度提升系統和方法,係透過這些和其他微處理器實作而具優勢地實行。
在一具體實施例中,指令可能係每次一項進行提取和執行,從而可能需求多次時脈循環。在此期間,可能未使用該資料路徑的重要部分。除了或代替單項指令之外,預取方法可能用於改善性能,並避免與讀取和儲存運算(例如指令的讀取,以及將此類指令載入處理器暫存器及/或執行佇列中)相關聯的等待時間瓶頸。此外,該示例性微處理器可能指令管線化,以利用指令層平行度並更好地利用該資料路徑,使得同時存在處於不同執行階段的多項指令。又再者,提取邏輯911、解碼邏輯913、執行邏輯 913等可用多個邏輯階段個別地指令管線化以改善性能。應可瞭解,也可使用支援並行作業的多個執行極限的超級微處理器。
微處理器核心910包括及/或可與記憶體階層920的各種記憶體和儲存位置通訊。記憶體階層920包括L1處理器快取921、L2處理器快取922、L3處理器快取933、記憶體控制器924、主記憶體927(例如一或多個DRAM晶片、固態記憶體等)、輔助儲存體928(例如磁儲存單元、光儲存單元等)及/或第三儲存體929(例如遠端伺服器、網際網路雲端等)。一些或所有這些位置可能係記憶體映射,然而在某些實作中,該等處理器暫存器可能與該等其他位置不同地映射,或可能實行使得其並非記憶體映射。該等L1、L2和L3快取可能在該處理器晶粒/核心上或不在,然而在許多情況下,至少該L1快取將在該處理器核心上。應可理解,以上該等記憶體/儲存組件係以存取時間和容量的遞增次序列出,然而存在可能的例外情形。記憶體控制器924可能用於處置該協定,並提供主記憶體927所需求的信號介面,以及排程記憶體存取。該記憶體控制器可在該處理器晶粒或單獨晶粒上實行。應可理解,以上所闡述的該等位置係非限制性,而且可能使用其他記憶體/儲存位置而不悖離此揭示內容的範疇。
微處理器核心910構成執行通常透過該處理器原始的工業標準架構ISA說明和定義的指令。在一具體實施例中,原始機器指令係透過將非原始指令轉換成原始機器指令而產生。原始碼會轉換成目的碼,而且若該目的碼係非原始指令,則該目的碼會轉換成原始機器指令。該等轉換實質上提供等效功能。在一具體實施例中,轉換可包括該等非原始指令的轉譯、解碼、解譯等。該轉換可涉及硬體解碼器,其接收非原始目標ISA指令,並從那些非原始目標ISA指令產生原始指令。該轉換可包括將該等非原始目標ISA指令轉譯成原始機器指令,通常會透過一轉譯系統904。在一具體實施例中,轉譯系統904係動態二進制轉譯系統,而且執行該等轉譯無需硬體解碼器(例如該等轉譯係繞過該解碼器選路至該等執行單元等)。在一示例性實作中,轉換係透過動態編碼最佳化處理進行,其中該轉換成原始機器指令係透過解碼器912進行,並包括最佳化特徵。該轉譯系統可包括一劃分(carved out)的專用安全段的指令記憶體並可包括一追蹤快 取。
微處理器核心910可構成執行特性可能係複雜指令集運算架構(CISC架構)、精簡指令集運算架構(RISC架構)及/或超長指令字(Very Long Instruction Word,VLIW)架構的各種指令集架構。再者,特定指令集可具有與一個以上的這些體系(regimes)相關聯的特性。此外,係視為CISC實作的一些指令集事實上可以RISC般方式在微處理器核心910上執行。例如,廣為採用的x88架構儘管係視為CISC系統,但經常會以與指令管線化RISC實作更相關聯的方式實行。再者,不論該特定ISA或其特性如何,本發明所揭示內容皆提供有效地利用該等ISA碼部分的轉譯的方式。
將碼例示為一連串處理器識別的指令(例如ISA指令)可能需要編譯作業系統、應用程式、驅動程式等的碼,以產生透過微處理器910執行的二進制碼。在編譯或後處理運算期間,可採用VLIW型技術(例如在軟體層中)進行各種最佳化。在某些情況下,採用這些軟體最佳化使得該微處理器可以程式次序執行指令,而無需該複雜的危害偵測,以及許多複雜指令集運算(CISC)和精簡指令集運算(RISC)執行指令管線中呈現的避免/減輕硬體。話雖如此,在某些情況下,替代或除了VLIW技術之外,可採用軟體及/或解碼和執行硬體進行動態最佳化並避免危害。
記憶體階層920儲存位置可包括一安全/專用記憶體配置,其可在原始ISA指令的執行期間透過微處理器核心910存取。該記憶體配置可能例如用於執行軟體層,並儲存相關聯資料。在一具體實施例中,存在已從目標ISA碼的對應區塊產生的轉譯庫。這些轉譯的長度和其已最佳化的程度可能有所不同。
該可靠度減輕可應用於同時偵測暫態和永久失效或可還原和不可還原問題。在一具體實施例中,可校正或修復暫態問題和可還原問題。在一示例性實作中,該等暫態問題和可還原問題係透過錯誤降低技術(例如回復到有效確認點、進行錯誤校正碼(ECC)等)而校正。永久失效或不可還原問題本來就不太容易校正或修復。硬體製造商等有問題可視為永久或不可還原問題。在一具體實施例中,該等錯誤檢查結果的分析可包括確定該硬體中是否存在一故障或有問題。例如,若特定硬體組件往往產生指示 大量推測執行比較不匹配或其他錯誤的結果,則這進而可指示該硬體中存在故障,而且該硬體已損壞或變差,而不是非預期性錯誤。在一示例性實作中,可使用暫時解決方法(例如利用備用組件、啟用替代組件等)。備用或替代指令管線或記憶體區塊可能用於該處理或儲存。
範例可靠度提升方法
第十圖係依據一具體實施例的示例性可靠度提升方法1000的流程圖。
在步驟1010,進行指令剖析處理。在一具體實施例中,接收或存取較高階語言指令。剖析該等較高階語言,以確定與該等較高階指令相關聯的功能。
在步驟1020,進行與指令相關聯的運算,並伴隨進行該等運算進行錯誤檢查處理。該錯誤檢查處理可包括推測執行對應於一特定功能的多組運算;及比較該等結果。該等多組運算可以係該特定功能的函式重複。若該比較匹配,則可使該所得到的值在架構上可見。在一示例性實作中,確認該結果。若該等比較結果不匹配,則該處理前進至步驟1040。
在步驟1030,儲存使在架構上可見的值,而且也檢查該儲存是否存在錯誤。在一具體實施例中,進行錯誤校正碼(ECC)處理。
在步驟1040,進行錯誤降低。各種減輕運算皆可實行,並可依與該功能(例如執行運算、儲存運算等)相關聯的運算類型而定。在一具體實施例中,與推測執行相關聯的該等減輕運算可包括回復到一已知有效或良好狀態(例如最後的確認狀態等);及再次嘗試。在一示例性實作中,與儲存運算相關聯的該等減輕運算可包括一同位(parity)校正處理。若該錯誤校正碼指示記憶體儲存問題,則可實行該同位校正處理。
各種可靠度提升機制皆可包括在該錯誤檢查和錯誤降低中,以實現狀態要素、運算要素和資料路徑的可靠度提升。該可靠度提升可包括特徵,其會保護以免位元在狀態要素、運算要素和資料路徑內受到交換(getting flipped)。在一具體實施例中,存在處置加算、載入和儲存異動的算術邏輯運算單元(Arithmatic Logic Unit,ALU)、載入管道(pipe)和儲存管道。該等算術/邏輯函式、載入和儲存可至少部分並行地完成。該等算術/ 邏輯函式、載入和儲存可能交插或混合。應可瞭解,該可靠度提升可應用於執行路徑、載入路徑和儲存路徑,其有助於該處理器的核心內的處理器和資料路徑的大部分或重要部分的可靠度提升涵蓋。實際而言,該核心相當大的部分可受到錯誤降低或保護涵蓋。在一具體實施例中,若完成對應的單位小時失效數(FIT)分析,則該涵蓋實際上非常良好。在一示例性實作中,該錯誤降低係60%至70%。有關在資料路徑中從一組件至另一的信號傳遞期間發生的錯誤,該等資料路徑之一而非其他資料路徑中的錯誤會導致該等資料路徑上的該等兩個信號之間的差異。該差異可透過比較該等信號而取得或偵測到。
狀態要素和儲存的可靠度提升
除了不匹配的比較結果(例如分支錯誤導引(misdirect)、分頁錯誤(page fault)、該推測可能出錯的其他不同方式等)之外,該可靠度提升也可處理其他問題。有關狀態要素或儲存組件,錯誤校正碼(ECC)機制也可用於錯誤降低。儘管ECC可能不太容易調適用於運算組件的錯誤降低,但幾乎任何固定資料結構皆可用ECC進行保護。ECC運算可用於該等緩衝器中所儲存的資訊。ECC可用於幫助識別和校正該等檢查點或回復值中的錯誤。在維護檢查點或回復值的儲存要素中具有有效資訊可能很重要,因為該回復值係設想為用於實現回復和繼續運算(例如從與該等運算要素中的推測執行相關的出錯還原等)最後的已知有效或良好值。在一示例性實作中,該重排序緩衝器也受到ECC保護,而且若來自該重排序緩衝器的資訊中存在錯誤位元交換,則可偵測到並可能加以校正。
在一具體實施例中,該等載入和儲存資料路徑包括錯誤降低保護。該等載入和儲存資料路徑中的可靠度提升可能有點複雜。在一具體實施例中,比較儲存運算的該等結果可能很複雜,因為該資料實際上已不在該等暫存器中。在一示例性實作中,該可靠度提升確實嘗試要驗證的是,該儲存正確地儲存至該記憶體。同樣地,存在針對資料路徑載入運算的可靠度提升必須注意該比較中實際上完成什麼的情況。在一示例性實作中,若載入發出兩次而且該快取中存在兩個命中,則需要注意確保實際上什麼完成兩次相對於什麼未完成兩次。在載入運算的發出與該等命中之間可存 在重疊,因為兩者在該快取接合。在一範例中,無論何時要實際上觀測這些問題,通常皆會進入大型儲存結構,並可受到錯誤校正碼(ECC)保護。
在一具體實施例中,可靠度提升係針對碼部分,其涉及與大型ECC所保護的結構相關聯的載入和儲存。資訊可載入暫存器中,然後儲存在該ECC所保護的結構中。該所儲存的資訊以後可從該ECC所保護的結構取回,並載入暫存器中。實際上比較該儲存的該等最後結果可能很難。在一示例性實作中,該輸入的所儲存的資訊係載入暫存器中,而且該可靠度提升會確定該暫存器值與用於兩者運算的該等值相同。在一具體實施例中,可能沒有錯誤降低的唯一事物係該儲存與該最後快取本身之間的資料路徑。應可瞭解,從儲存位置重新載入值並與傳送至該儲存的值比較的可靠度提升,也可應用於非ECC所保護的儲存。
在另一具體實施例中,存在可幫助針對該儲存與該最後快取本身之間的資料路徑提供可靠度提升涵蓋的方式。第一種方式係該儲存發生處與實際上寫入快取中之間的資料路徑中的端對端保護機制。第二種方式係檢查機制。該檢查機制可包括儲存兩次;及一進行比較。第三種方式係儲存該等資訊或值、讀回該等值並比較該等值。在一示例性實作中,存在具有應為相同資料、至相同位址的兩個獨立儲存,然後就在該資料寫至該快取之前進行比較。這可幫助針對該儲存與該最後快取本身之間的資料路徑提供可靠度提升涵蓋。
下列係載入的一虛擬碼範例:
ld:ld a=[]
ld b=[]
comp alt ab
載入兩次並比較該等結果。在一具體實施例中,即使存在至暫存器「a」的載入和至暫存器「b」的載入,但該基本載入運算「ld」仍視為與特定位址相關聯的單次載入異動。若要檢查該等異動結果的可靠度,則比較暫存器「a」和暫存器「b」中的該等值。由於實際上必須確保從相同位址載入兩次時,不論何時完成皆獲得相同答案,因此這充分運用更多該等機器機制以能重排序載入和儲存。若該比較指示該等暫存器中的該等值匹配,則 該異動係視為成功或有效。若該等值不匹配,則將由於不同原因而失敗,指示該行已消失。這可在該推測執行期間發生,並在資料在某些執行模式下失去時指示。若存在不匹配,則可進行錯誤降低處理。在一示例性實作中,正在檢查該等暫存器中的該等值時,存在對嘗試變更該等暫存器值的其他異動的防範。該等快取存在接合點,而且該等快取受到錯誤校正碼(ECC)保護。實際上仍保護該資料路徑,以免該快取進入也受到保護的暫存器檔案中。涵蓋從未受到ECC保護的事物跨越資料路徑或跨越運算時。
下列係儲存的一虛擬碼範例:
st:st[m]=a
ld b=[m]
comp alt ab
由於控制和彈性地輸出任何事物的能力,因此為了儲存會移回該資料。所以為了儲存,該值會移至該儲存裝置,並已不在該暫存器中進行比較,但可載入和比較以檢查所載入的資料是否係轉送用於儲存的值。這與執行該儲存兩次不完全相同,但係以類似方式進行保護。在一具體實施例中,進行向下至提供如同執行時類似保護的儲存單元的往返。在一示例性實作中,儲存可靠度提升係在某些推測執行模式下完成。
在一具體實施例中,儲存使在架構上可見的值,而且該錯誤檢查包括檢查儲存。第十一圖係依據一具體實施例的示例性儲存可靠度提升的方塊圖。該儲存檢查可包括將來自一第一暫存器1110的一初始儲存值儲存至一第一儲存位置1130。傳回儲存值會從第一儲存位置1130載入至第二暫存器1120。第一暫存器1110中的初始儲存值和第二暫存器1120中的傳回儲存值會轉送至用於比較的比較器1140。若該比較指示該等結果匹配,則第一儲存位置1130中所儲存的值會接受為準確。若該比較指示該等結果不匹配,則可進行錯誤降低。該錯誤降低可包括多種方法(例如錯誤校正碼(ECC)、同位校正、再次重複該儲存處理等)。
在一具體實施例中,針對分支運算進行可靠度提升時存在許多要考量的事物。該可靠度提升與執行兩次可能導致錯誤降低漏洞的傳統軟體不完全相同。一示例性錯誤降低實作係進行單位小時失效數(FIT)分 析,以確定實際上那些漏洞的實際問題點。此外,對消耗資源的任何事物皆可能存在瓶頸。
分支運算的可靠度提升
下列係分支的一虛擬碼範例:
Br:comp alt inputs
br[]
針對分支比較該等輸入。若係間接目標,則比較該等間接目標以確定其皆相同。若正針對該分支使用旗標(flag),則該處理確定其皆相同。然後若其匹配,則會與該分支一起前進,但確實僅存在一分支,所以該分支本身可能未受到涵蓋,但至少確定涵蓋導引至該分支的相同事物。在一示例性實作中,存在對饋入該分支中的狀況進行比較並僅進行該分支一次的分支。基本上可就在該分支之前檢查該旗標,並確定在該等兩條獨立計算路徑之間受到涵蓋且前後一致(因為該點存在兩個不同的旗標集)。
範例可靠度提升指令管線
應也可瞭解,該等運算可彈性地分配給不同硬體。在一具體實施例中,存在多個算術邏輯單元(ALU)。為了在所選定的不同ALU上實行,分配與對應於該所重複的功能的不同指令集相關聯的運算。在一示例性實作中,該微碼具有控制並指定在哪些硬體(例如ALU、載入管道等)上執行特定運算組。為了在如演算法所選定的任何特定硬體上實行,可排程該等推測執行運算,這進而可提高該演算法的穩健性。
第十二圖係依據一具體實施例的執行指令管線1200的方塊圖。執行指令管線1200可類似於或包括執行組件(例如430、530等)和比較組件(例如440、540等)。執行指令管線1200包括指令緩衝器1210、暫存器1220、重排序緩衝器1230、載入緩衝器1240、記憶體1270和算術邏輯單元(ALU)1251、1252、1253及1254。應可瞭解,該等錯誤降低推測執行運算可在執行指令管線1200的該等組件之間交插。
第十三圖係依據一具體實施例的示例性處理流程1300的方塊圖。原始碼1310是由編譯器1320編譯成目的碼1330;透過轉換組件1340轉換成原始機器指令。在1380檢查可靠度提升觸發。若觸發可靠度提升, 則進行可靠度提升處理1350。若未觸發該可靠度提升,則進行正常處理1390。應可瞭解,正常處理1390也可包括許多函式,其包括指令轉換(例如轉譯、解譯、解碼等)最佳化、推測執行(例如分支預測推測執行、與可靠度提升錯誤檢查無關的其他推測執行等)依此類推。
範例運算序列
第十四圖係依據一具體實施例的示例性運算序列的方塊圖。該基準參考號碼(例如1420A(1)、1430A(1)等)指示該運算所相關聯的函式,該等後綴A和B指示該等運算係函式重複,而且括弧內的該等值指示正在執行該運算的次數。函式1420係透過推測執行的運算1420A和1420B而在功能上重複。(1)指示係第一次進行該等運算(例如1420A(1)和1420B(1))。該等推測執行的該等結果匹配,而且該序列前進至下一函式1430。函式1430係透過推測執行的運算1430A和1430B而在功能上重複。該等推測執行的該等結果不匹配,而且該序列回復以再次進行該等運算。函式1430係透過再次推測執行的運算1430A和1430B而在功能上重複,而且(2)指示係第二次進行該等運算(例如1430A(2)和1430B(2))。第二推測執行的該等結果匹配,而且該序列進行函式1440。函式1440係透過推測執行的運算1440A和1440B而在功能上重複。該等推測執行的該等結果匹配,而且該序列經由多個其他函式(未顯示)進行,直到該序列進行函式1470。
函式1470係透過推測執行的運算1470A和1470B而在功能上重複。運算1470A和1470B的第一推測執行的該等結果不匹配,而且該序列回復以再次進行該等運算。再次推測執行運算1470A和1470B。該等第二推測執行的該等結果匹配,而且該序列前進至函式1480。應可瞭解,一些函式可能不會推測執行。函式1480未在功能上重複,而且運算1480非推測執行一次。該序列前進至函式1490,其係透過由於該等結果匹配故推測執行一次的運算1490A和1490B而在功能上重複。該序列可結束或可繼續(未顯示)。
應可瞭解,在該推測執行期間進行該等錯誤檢查運算的次序存在顯著彈性。該等推測錯誤檢查運算可能交插,這係優於軟體中的傳統重複的顯著改善。在一具體實施例中,進行該運算的幾個小步驟,並比較 該等中間結果。在一示例性實作中,該實際比較在推測執行期間的何時發生係隨意或取決於該使用者。該可靠度檢查不必限制在確認結果或使在架構上可見的架構邊界。可在架構邊界決策點之間進行多個可靠度錯誤檢查運算。該演算法或微碼可排程是否就在架構邊界決策點之前或更早,進行可靠度提升推測執行比較。在一示例性實作中,進行少量推測執行運算,並比較中間結果。若該比較指示該等中間結果有效,則該處理前進,除非該比較值在架構邊界,否則不必加以確認或使在架構上可見。在一具體實施例中,異動可能在早期或晚期失效或失敗。
在一具體實施例中,排程可靠度提升活動以調節關鍵路徑考量因素。在一示例性實作中,該等可靠度提升運算順應關鍵路徑時序要求。在一具體實施例中,該等多個重複功能推測執行串流的執行可在關鍵路徑確認點之間獨立地處理。在一示例性實作中,只要是在各自確認點之前,則依據不可靠狀況的失效或失敗的時序皆有彈性。
在一具體實施例中,最佳化可導致不同的處理達成相同的功能。該處理或執行可針對特徵的該等各自推測執行串流特性。在一具體實施例中,該等推測執行串流係在不同指令管線上進行。
該等指令管線可具有不同的特性和特徵。在一具體實施例中,最佳化係針對特徵的該等各自特性。在一示例性實作中,在具有第一組特性和特徵的第一指令管線上處理一推測執行串流,而且在具有第二組特性和特徵的第二指令管線上處理另一推測執行串流。該等不同的指令管線可能進行不同的指令或運算以達成相同的功能。
第十五圖係依據一具體實施例的錯誤檢查的示例性處理流程1500。處理流程1500係針對進行K等於U乘以V(K=U×V)和P等於K乘以T(P=K×T)的函式。該較高階語言指令K=U×V會轉換成機器指令(例如在R1中載入U而且在R2中載入V、將R1中的值乘以R2中的值,並在R3中載入結果)。這些原始機器指令係使用指令管線A資源執行。該較高階語言指令K=U×V的功能係透過另一組原始機器指令重複(例如在R11中載入U而且在R12中載入V、將R11中的值乘以R12中的值,並在R13中載入結果)。這些原始機器指令係使用指令管線B資源執行。將R3中所 得到的值和R13中所得到的值進行比較。若該等值匹配,則R3中的值在架構上確認。若該等值不匹配,則該處理回復再次開始。
該較高階語言指令P=K×T會轉換成原始機器指令(例如在R5中載入T、將R3中的值乘以R5中的值,並在R7中載入結果)。這些原始機器指令係使用指令管線A資源執行。該較高階語言指令P=K×T的功能係透過另一組原始機器指令重複(例如在R15中載入T、將R3中的值乘以R15中的值,並在R17中載入結果)。這些原始機器指令係使用指令管線B資源執行。將R7中所得到的值和R17中所得到的值進行比較。若該等值匹配,則R7中的值在架構上確認。若該等值不匹配,則該處理回復到安全或可靠的點(例如R3中的確認),並再次開始該處理。
應可瞭解,可在確認點之間檢查失效。第十六圖係依據一具體實施例在確認點之間具有多個錯誤檢查的示例性處理流程1600。處理流程1600係針對進行P等於U乘以V加T(P=U×V+T)的函式。該較高階語言指令U×V會轉換成原始機器指令(例如在R1中載入U而且在R2中載入V、將R1中的值乘以R2中的值,並在R3中載入結果)。這些機器指令係使用指令管線A資源執行。該較高階語言指令K=U×V的功能係透過另一組原始機器指令重複(例如在R11中載入U而且在R12中載入V、將R11中的值乘以R12中的值,並在R13中載入結果)。這些原始機器指令係使用指令管線B資源執行。將R3中所得到的值和R13中所得到的值進行比較。若該等值匹配R3中的值,則該處理前進(但不必確認R3)。若該等值不匹配,則該處理回復再次開始。加上T會轉換成原始機器指令(例如在R5中載入T、將R3中的值加上R5中的值,並在R7中載入結果)。這些原始機器指令係使用指令管線A資源執行。該較高階語言指令加上T的功能係透過另一組原始機器指令重複(例如在R15中載入T、將R13中的值加上R15中的值,並在R17中載入結果)。這些原始機器指令係使用指令管線B資源執行。將R7中所得到的值和R17中所得到的值進行比較。若該等值匹配,則R7中的值在架構上確認。若該等值不匹配,則該處理回復到安全或可靠的點(例如R3和R13中的值),並再次開始該處理。
應也可瞭解,不同的指令管線可能具有不同的特性或能力。 第十七圖係示例性處理流程1700,其中不同的指令管線可能依據一具體實施例具有不同的特性或能力。指令管線B可基於單項原始機器指令進行加法和乘法。指令管線A會基於兩項原始機器指令進行乘法和加法。處理流程1700係針對進行P等於U乘以V加T(P=U×V+T)的函式。對指令管線A而言,該較高階指令P=U×V+T係轉換成在R1中載入U、在R2中載入V、在R5中載入T,然後將R1和R2中的值相乘,並加上R5中的值。對指令管線B而言,該較高階語言指令U×V係轉換成另一組原始機器指令:在R11中載入U而且在R12中載入V,將R11中的值乘以R12中的值,並在R13中載入結果。該較高階語言指令加上T的功能係轉換成原始機器指令(例如在R15中載入T、將R13中的值加上R15中的值,並在R17中載入結果)。將R7中所得到的值和R17中所得到的值進行比較。若該等值匹配,則R7中的值在架構上確認。若該等值不匹配,則該處理回復到安全或可靠的點,並再次開始該處理。
在一示例性實作中,該推測執行檢查對關鍵路徑時序有一點或無影響。在一示例性實作中,該推測執行檢查不會使確認點之間的關鍵路徑時序比其他位置發生的明顯地更長。再者,該推測執行檢查不會對記憶體引入附加或新的拖延。
在一具體實施例中,該關鍵路徑與在顯示器或螢幕上呈現值相關聯。返回參照第十五圖,R3中的值係在指令管線C資源的關鍵路徑顯示需要之前進行確認,而且R7中的值係在該關鍵路徑顯示需要之前進行確認。返回參照第十六圖和第十七圖,R7中的值係在關鍵路徑顯示需要之前進行確認。在一具體實施例中,若錯誤降低處理無法在關鍵路徑要求之前完成,則可採取替代性措施。在一自動駕駛車輛示例性實作中,若該等錯誤降低處理無法在關鍵路徑安全要求(例如在範圍狹小時序限制下完成處理的安全要求、重試次數有限等)內完成,則可採取替代性措施(例如通知發生問題、安全關機等)。
在一具體實施例中,該比較輸出(例如輸入值匹配、輸入值不匹配等)僅係使值在架構上可見的複數因素或考量因素之一。在一示例性實作中,通過該錯誤檢查推測執行比較(例如推測執行結果值相同、匹配、 指示執行可靠等)使該等結果合乎條件用於確認,但不必導致使該等結果在架構上可見。第十九圖係依據一具體實施例的錯誤檢查的示例性處理流程1900。處理流程1900類似於處理流程1500,不同之處在於存在有條件的相依性。下列係用於處理流程1900的示例性虛擬碼:
K=U×V
If(K>100)then
(P=K×T)
else
(P=0)
End If.
該較高階語言指令K=U×V係在錯誤檢查推測執行運算1910中進行。由於不存在針對該K=U×V函式的有條件的相依性,因此若該等比較結果匹配,則該等結果會在運算1911中確認。該較高階語言指令P=K×T係在「巢狀」推測執行中進行,亦即錯誤檢查推測執行運算1920係依照該等有條件的相依性運算1930的結果進行。該P=K×T函式具有K大於100的有條件的相依性,但作為最佳化的一部分,該P=K×T函式係在確定K值之前,與該K=U×V運算大致並行推測地進行。若該有條件的相依性滿足,則該等錯誤檢查推測執行運算1920會確定R7中的P值是否無「失效」,並合乎架構確認條件。該錯誤檢查比較指示該T值良好,但其在該有條件的相依性滿足前未確認。
應可瞭解,可在確認點之間檢查失效。第十六圖係依據一具體實施例在確認點之間具有多個錯誤檢查的示例性處理流程1600。處理流程1600係針對進行P等於U乘以V加T(P=U×V+T)的函式。該較高階語言指令U×V會轉換成原始機器指令(例如在R1中載入U而且在R2中載入V、將R1中的值乘以R2中的值,並在R3中載入結果)。這些機器指令係使用指令管線A資源執行。該較高階語言指令K=U×V的功能係透過另一組原始機器指令重複(例如在R11中載入U而且在R12中載入V、將R11中的值乘以R12中的值,並在R13中載入結果)。這些原始機器指令係使用指令管線B資源執行。將R3中所得到的值和R13中所得到的值進行比較。 若該等值匹配R3中的值,則該處理前進(但不必確認R3)。若該等值不匹配,則該處理回復再次開始。加上T會轉換成原始機器指令(例如在R5中載入T、將R3中的值加上R5中的值,並在R7中載入結果)。這些原始機器指令係使用指令管線A資源執行。該較高階語言指令加上T的功能係透過另一組原始機器指令重複(例如在R15中載入T、將R13中的值加上R15中的值,並在R17中載入結果)。這些原始機器指令係使用指令管線B資源執行。將R7中所得到的值和R17中所得到的值進行比較。若該等值匹配,則R7中的值在架構上確認。若該等值不匹配,則該處理回復到安全或可靠的點(例如R3中的確認),並再次開始該處理。
可能考量或作為因素計入有關使值在架構上可見的決策的其他項目可包括:該推測執行結果在解決控制相依性之後是否仍需要;該結果是否與一有條件的分支或分支預測相關聯;是否發生一架構事件(例如一頁面違規、一記憶體調正違規、一記憶體排序違規、一中斷點、執行一非法指令等);樂觀並行控制是否存在問題;是否觸發一例外情形等。該失效事件可能在該轉換期間發生,或係由於進行該轉換的特定方式的人為誤差。
最佳化
用於改善可靠度的該等系統和方法可以係動態或變更各種態樣或特徵,以依據不斷變化的條件。為了重複功能的該等多組運算產生或形成該等指令,可動態地引入針對各種考量因素的調節。在一具體實施例中,該等調節或變更可針對性能上的特定差異(例如更快速、更少功率、改善與外部組件的相容性等)。用於改善可靠度的系統和方法可包括各種最佳化,其針對改善可靠度提升運算(例如包括錯誤檢查運算、錯誤降低運算等)的性能和效率。
該轉換(例如解碼、轉譯、解譯等)成可靠度錯誤檢查重複功能原始機器指令,可與各種類型的最佳化一起利用或包括在其中。在一具體實施例中,該轉換包括動態二進制轉譯。該轉換可利用動態編碼最佳化(Dynamic Code Optimization,DCO)。在一示例性實作中,該動態編碼最佳化係在具有基準層級機器中所包括的硬體解碼器的系統上實行,在該基準層級機 器中至少一些原始機器指令或微碼可運算,而無需二進制轉譯。在一具體實施例中,該最佳化處理包括重新最佳化,以越來越快速最佳化。也可存在針對正確性進行檢查並超出習知二進制轉譯的捷徑。
最佳化可包括使用替代版本的原始碼,其在可接受的容差內能達成相同的可觀測功能。該處理可擇一重導引至不同的原始轉譯或對應的目標ISA碼。最佳化可利用碼部分設定檔輔助原始轉譯的動態形成。該設定檔可包括一組指令是否係特定類型轉換(例如轉譯相對於解碼相對於解譯等)的一良好或不佳候選者的一指示。
該最佳化可包括多種不同機制。有關該轉換(例如轉譯、解碼、解譯等)類型的決策可基於使用指令集的頻率。在一具體實施例中,使用追蹤指令轉換成原始機器指令的次數的追蹤機制或分支計數表。在一示例性實作中,「熱門」或經常使用的指令集可動態進行轉譯和最佳化。若該追蹤機制指示一組指令不經常地執行,或存在與硬體解碼可能較佳的轉譯運算相關聯的相對較高管理負擔(overhead)的指示。可導引最佳化避開硬體解碼器。在一示例性實作中,可使用減少或繞過使用硬體解碼器的硬體重導引器。
該最佳化可包括轉譯失效減輕,其針對轉譯期間可能出現的問題(例如與架構失效、由於過度最佳化的失效等相關聯)。在一具體實施例中,存在已從ISA碼的對應區塊產生的轉譯庫。這些轉譯的長度和已最佳化的程度可能有所不同。應可瞭解,如本說明書所使用的用語「區塊」可指稱各種長度的指令集或序列,而且不必限於可能指稱為「基本區塊」。
儘管就執行原始指令而論說明了大部分的可靠度提升推測執行,但應可瞭解,其他類型的指令可透過該等執行組件利用。在一具體實施例中,所選定的非原始指令可透過該等推測執行組件可利用或直接執行。這可提供優於轉換實作類型的最佳化效率。在一示例性實作中,能夠執行非原始指令的系統可用於執行針對現成處理系統所編譯的碼。直接執行的該等非原始指令,可在用於可靠度提升錯誤檢查的執行層級重複和推測執行。
應可瞭解,最佳化可在各種指令層實行,或在指令層之間遞 迴。在一示例性實作中,最佳化係在針對建立與重複功能相關聯的該等多組運算的轉換(例如轉譯、解碼、解譯等)期間或作為其一部分動態地實行。在一具體實施例中,該等最佳化可導致比架構層級指令的簡單直接轉譯相對更好(例如更快速、更少功率等)的性能。最佳化也可在轉換成原始機器指令之前,在該目的碼或ISA層級和原始碼層級進行。
第十八圖係依據本發明的一具體實施例在各種層級的示例性轉換和最佳化的方塊圖。在步驟1801,接收用於實行功能A的原始碼Z。在該原始碼層級進行第一最佳化。在一具體實施例中,在該原始碼層級的最佳化包括在步驟1820,確定是否可取得更有效的用於實行功能A的一替代原始碼。若可取得更有效地實行功能A的替代原始碼B,則該處理前進至步驟1825。若無法取得更有效地實行功能A的替代原始碼,則原始碼Z係用於在步驟1831中產生目的碼Y,其在步驟1832中最佳化成目的碼Y(O)。目的碼Y(O)會在步驟1833中轉換成原始機器指令R。原始機器指令R會實行透過原始機器指令T重複的功能A。在步驟1834中最佳化原始機器指令R,以產生原始機器指令R(O)。應可瞭解,可組合語言層與最佳化之間的轉換(例如可組合步驟131和132、可組合步驟1833和1834等)。在步驟1835中最佳化原始機器指令T,以產生機器指令T(O)。該等原始機器指令R(O)和T(O)可作為可靠度提升錯誤檢查處理的一部分推測執行。
若可取得更有效實行功能A的替代原始碼,則該處理前進至步驟1825,其中原始碼B係用於在步驟1841中產生目的碼C,其在步驟1842中最佳化並在步驟1843中轉換成原始機器指令D。原始機器指令D會實行透過原始機器指令E重複的功能A。在步驟1844中最佳化原始機器指令D,以產生原始機器指令D(O)。在步驟1845中最佳化原始機器指令E,以產生原始機器指令E(O)。該等原始機器指令D(O)和E(O)可作為可靠度提升錯誤檢查處理的一部分推測執行。
應可瞭解,該等最佳化可針對多種項目,而且不必限於原始機器指令特性。該最佳化可能係針對具有不同特性的指令管線。返回參照第十六圖和第十七圖,在一具體實施例中,指令管線Z比指令管線A更快速,而且可能選定最佳化以利用更快速的指令管線Z(在第十七圖中),而非 指令管線A(在第十六圖中)。在一示例性實作中,該指令管線A使用比指令管線Z更少的資源(Power),而且選定指令管線A作為最佳化的一部分以節省資源。
zzz請即參考第二十圖,顯示示例性電腦系統2000的方塊圖,在其上可實行本發明的具體實施例的電腦系統的一具體實施例。電腦系統2000包括中央處理單元(Central processor unit,CPU)2001;主記憶體2002(例如隨機存取記憶體);晶片組2003,其具有North Bridge(北橋)2009和South Bridge(南橋)2005;可拆卸式資料儲存裝置2004;輸入裝置2007;信號通訊連接埠2008;及圖形子系統2010,其耦合到顯示器2020。電腦系統2000包括幾個匯流排,其用於通訊地耦合電腦系統2000的該等組件。通訊匯流排2091(例如前側匯流排)將晶片組2003的北橋2009耦合到中央處理單元2001。通訊匯流排2092(例如主記憶體匯流排)將晶片組2003的北橋2009耦合到主記憶體2002。通訊匯流排2093(例如進階圖形埠(Advanced Graphics Port)介面、快速週邊組件互連(Peripheral Component Interconnect (PCI)Express)匯流排等)將晶片組2003的北橋耦合到圖形子系統2010。通訊匯流排2094、2095和2097(例如PCIe匯流排等)將晶片組2003的南橋2005分別耦合到可拆卸式資料儲存裝置2004、輸入裝置2007、信號通訊連接埠2008。圖形子系統2010包括圖形處理單元(Graphics processor unit,GPU)2011和訊框緩衝器2015。
電腦系統2000的該等組件共同地運算,以提供多方面的功能和性能。在一示例性實作中,電腦系統2000的組件共同地運算,以提供預定類型的功能。通訊匯流排2091、2092、2093、2094、2095和2097會通訊資訊。中央處理器2001會處理資訊。主記憶體2002會儲存用於中央處理器2001的資訊和指令。可拆卸式資料儲存裝置2004也會儲存資訊和指令(例如用作大型資訊庫)。輸入裝置2007會提供用於輸入資訊及/或用於在顯示器2020上指向或突顯資訊的機制。信號通訊連接埠2008會提供至外部裝置的通訊介面(例如與網路的介面)。顯示裝置2020會依據訊框緩衝器2015中所儲存的資料顯示資訊。圖形處理器2011會處理來自中央處理器2001的圖形命令,並將該所得到的資料提供給用於透過顯示螢幕2020儲存和取回的視訊 緩衝器2015。可靠度提升錯誤檢查推測執行和錯誤降低可用於電腦系統2000內的各種運算(例如用於CPU 2001上的執行運算、GPU 2011上的執行運算等)。
多種應用
該可靠度提升可用於多種應用,包括安全應用、醫療應用、自動化導引和控制(例如用於汽車、航電系統、船艦等)、金融應用等。若在該應用的傳統實作中發生可靠度錯誤而且未偵測到,則可能產生非常有害的結果(例如自動駕駛車撞到行人、醫療設備故障、金融異動遺失金錢等)。可靠度提升推測執行可幫助校正或減輕錯誤。儘管許多該等範例指出該安全模式涉及回復或錯誤校正碼(ECC)等校正處理,但應可瞭解,可採取其他動作。錯誤降低安全模式可基於該應用。在一示例性實作中,自動駕駛或自動化導引應用安全模式可包括將該車輛轉回人員控制,或自動停止該車輛。在一具體實施例中,傳送警告以通知使用者,例如對潛在危險發出警示、請求手動依據(例如手動地接管車輛行駛、手動地重複檢查該等結果等)依此類推。在一示例性實作中,該安全模式可包括啟動一自動化校正回應,例如自動啟動至特定處理處理程序的一中斷或分支、自動開始一車輛自動停止或停車程序、自動啟動一暫停交互作用(例如配藥、金融異動等)依此類推。
實施方式的各部分係就方法而論提出並討論。儘管步驟及其定序係在本說明書說明此方法的該等運算的圖式中進行揭示,但此類步驟和定序係示例性。各具體實施例最適合進行本說明書該等圖式的流程圖中所陳述的該等步驟的各種其他步驟或變化例,而且以不同於本說明書所描繪出和說明的序列進行。
實施方式的一些部分係就程序、步驟、邏輯區塊、處理,以及可在電腦記憶體內進行的資料位元上的運算的其他符號表示而論提出。這些描述和表示係熟習資料處理領域技術者用於最有效地將其工作的實質傳達給此領域其他技術者的方法。程序、電腦所執行的步驟、邏輯區塊、處理等在此且一般來說,係設想為導致所需結果的步驟或指令的自相一致序列。該等步驟包括物理量的實體操控。通常,但並非必然,這些量具有 能在電腦系統中儲存、傳輸、組合、比較,以及用其他方式操控的電、磁、光或量子信號形式。經驗證將這些信號指稱為位元、數值、要素、符號、字元、用語、數字或其類似物有時很方便,主要是為了通用的原因。
然而,以此為前提,所有這些和類似的用語皆與該等適當的物理量相關聯,而且僅僅係適用於這些量的方便標記。除非如從下列討論顯而易見另外具體陳述,否則應可瞭解在整個利用例如「處理」、「運算」、「計算」、「確定」、「顯示」、「存取」、「寫入」、「包括」、「儲存」、「傳輸」、「穿越」、「相關聯」、「識別」或其類似物的用語的討論中,指稱電腦系統或類似的電子運算元件的動作和處理,其中類似的電子運算元件將表示為該電腦系統的暫存器和記憶體內的物理(電子)量的資料,操控和變換成同樣地表示為該等電腦系統記憶體或暫存器或其他這樣的資料儲存、傳輸或顯示裝置內的物理量的其他資料。
一些具體實施例可能在透過一台或多台電腦或其他裝置執行的電腦可執行指令(例如程式模組)的一般上下本說明書進行說明。一般來說,程式模組包括常式、程式、物件、組件、資料結構等,其會進行特定任務或實行特定抽象資料類型。通常該等程式模組的功能可能會依各種具體實施例中所需而進行組合或分散。
前述本發明的具體實施例的描述已為了例示和描述目的而提出。其並非旨在全面性,或將本發明限制在所揭示的該等精確形式,而且根據該以上講述顯然許多修飾例和變化例皆可能。該等具體實施例係選定並說明,以最好地解說本發明的該等原理及其實務應用,由此讓其他熟習此領域技術者能最好地利用本發明,並設想具有如適合該特定用途的各種修飾例的各種具體實施例。本發明旨在透過於此所附諸申請專利範圍及其相等物而界定出本發明的範疇。

Claims (45)

  1. 一種系統包括:一處理器,其構成執行程式指令並伴隨其以進行可靠度提升運算,其中該等可靠度提升運算包括:識別該等程式指令的一特定部分的功能;同時推測執行多組運算,其中該等多組運算係該等程式指令的特定部分的函式重複;比較來自該等多組運算的推測執行結果;及依據該等執行結果中的一比較不匹配以進行一錯誤降低運算;及一記憶體,其構成儲存該處理器的資訊。
  2. 如申請專利範圍第1項之系統,其中該等可靠度提升運算更包括若來自該等多組運算的該等執行結果具有一匹配值,則使該等執行結果在架構上可見。
  3. 如申請專利範圍第1項之系統,其中該錯誤降低運算包括一校正程序。
  4. 如申請專利範圍第3項之系統,其中該錯誤降低運算包括一程序回復,以恢復到一已知有效狀態。
  5. 如申請專利範圍第1項之系統,其中該等多組運算對應於多個原始機器指令集。
  6. 如申請專利範圍第5項之系統,更包括一轉換組件,其構成將非原始指令轉換成該等多個原始機器指令集。
  7. 如申請專利範圍第6項之系統,其中該轉換組件將對應於該等程式指令的特定部分的ARM架構碼轉換成該等多個原始機器指令集。
  8. 如申請專利範圍第6項之系統,其中該轉換組件將對應於該等程式指令的特定部分的精簡指令集運算(RISC)架構碼轉換成該等多個原始機器指令集。
  9. 如申請專利範圍第6項之系統,其中該轉換組件將對應於該等程式指令的特定部分的X86架構碼轉換成該等多個原始機器指令集。
  10. 如申請專利範圍第6項之系統,其中該轉換組件將對應於該等程式指令的特定部分的複雜指令集運算(CISC)架構碼轉換成該等多個原始指 令集。
  11. 如申請專利範圍第6項之系統,其中該轉換組件將對應於該等程式指令的特定部分的GPU著色器組合語言碼轉換成該等多個原始指令集。
  12. 如申請專利範圍第6項之系統,其中最佳化該等多個原始指令集。
  13. 如申請專利範圍第1項之系統,其中比較儲存的輸入值。
  14. 如申請專利範圍第1項之系統,其中該處理器係一中央處理單元(CPU)。
  15. 如申請專利範圍第1項之系統,其中該處理器係一圖形處理單元(GPU)。
  16. 一種可靠度提升的方法,該方法包括:進行一指令剖析處理,其包括確定與程式指令相關聯的一功能;執行該等程式指令並伴隨執行進行錯誤檢查的該等程式指令,其中該錯誤檢查包括:同時推測執行多組運算,其中該等多組運算係該等程式指令的函式重複;及比較來自該推測執行的結果;及基於來自該比較的一不匹配結果進行錯誤降低。
  17. 如申請專利範圍第16項之可靠度提升的方法,其中若該比較匹配,則使該等結果在架構上可見。
  18. 如申請專利範圍第16項之可靠度提升的方法,其中該錯誤降低包括校正錯誤。
  19. 如申請專利範圍第16項之可靠度提升的方法,其中該錯誤檢查更包括若該比較匹配則確認該等結果;及若該比較不匹配則回復到一已知有效狀態。
  20. 如申請專利範圍第16項之可靠度提升的方法,更包括準備用於執行的原始機器指令。
  21. 如申請專利範圍第16項之可靠度提升的方法,其中該錯誤檢查更包括錯誤檢查載入和儲存路徑。
  22. 如申請專利範圍第16項之可靠度提升的方法,其中該比較更包括比較與該特定碼部分相關聯的載入運算的結果。
  23. 如申請專利範圍第16項之可靠度提升的方法,其中儲存使在架構上可 見的值,而且其中該錯誤檢查更包括檢查儲存。
  24. 如申請專利範圍第16項之可靠度提升的方法,其中該錯誤檢查更包括:將來自一第一暫存器的一初始儲存值儲存至一第一儲存位置;從該第一儲存位置載入一傳回儲存值,其中該傳回儲存值係載入一第二暫存器中;比較該第一暫存器中的該初始儲存值和該第二暫存器中的該傳回儲存值;及基於該第一暫存器中的初始儲存值中的一不匹配和該第二暫存器中的該傳回儲存值進行附加錯誤降低。
  25. 如申請專利範圍第16項之可靠度提升的方法,其中該比較更包括比較輸入分支值。
  26. 一種具有在其上編碼的指令之電腦可讀取媒體,其在透過處理器執行時會進行:一特定碼部分的轉換和最佳化以產生原始機器指令;該等原始機器指令的自檢推測執行;及基於該自檢推測執行的錯誤降低。
  27. 如申請專利範圍第26項之電腦可讀取媒體,其中一特定碼部分的轉換和最佳化包括建立該等原始機器指令的多個指令流。
  28. 如申請專利範圍第27項之電腦可讀取媒體,其中該自檢推測執行包括:同時推測執行該等多個指令流;及比較碼部分的該等多個指令流的結果。
  29. 如申請專利範圍第28項之電腦可讀取媒體,其中依據該比較中的一不匹配進行該錯誤降低。
  30. 如申請專利範圍第26項之電腦可讀取媒體,其中一特定碼部分的轉換和最佳化產生係該特定碼部分的函式重複的多個原始機器指令集。
  31. 一種執行程式的方法,該方法包括:將包括一高階語言的指令的該程式轉換成一處理器原始的複數指令,該等複數指令用於在該處理器上執行,其中該程式的一部分轉換成原始機器指令的一第一碼部分和原始機器指令的一第二碼部分; 其中該第一碼部分和該第二碼部分係彼此函式等效,而且與該程式的該部分係函式等效;該處理器推測執行該第一碼部分和該第二碼部分,以產生各自第一結果和第二結果;將該第一結果和該第二結果進行比較,以產生一比較結果;及依據前述比較結果內的一不匹配進行一錯誤降低處理。
  32. 一種如申請專利範圍第31項所說明之方法,其中該執行一錯誤降低處理包括該處理器回復到該等複數指令的該執行的一最後已知確認點。
  33. 如申請專利範圍第31項所說明之方法,其中該處理器係一依序執行微處理器。
  34. 如申請專利範圍第31項所說明之方法,其中該處理器係一亂序執行微處理器。
  35. 如申請專利範圍第31項所說明之方法,其中該處理器包括複數執行單元,而且其中進一步該處理器推測執行該第一碼部分和該第二碼部分,以產生各自第一結果和第二結果,其包括該等複數執行單元的執行單元並行運算,以在該處理器設定處於一推測執行模式時,執行該第一碼部分和該第二碼部分。
  36. 如申請專利範圍第31項所說明之方法,更包括該處理器依據前述比較結果的一匹配會使該等結果在架構上可見。
  37. 如申請專利範圍第31項所說明之方法,其中該進行一錯誤降低處理包括該處理器產生一失效狀況。
  38. 如申請專利範圍第31項所說明之方法,其中該等複數指令的該部分係該程式的一可靠度關鍵部分。
  39. 如申請專利範圍第31項所說明之方法,更包括最佳化用於在該處理器上執行的該第一碼部分和該第二碼部分。
  40. 如申請專利範圍第31項所說明之方法,其中該轉換包括自動確定該等複數指令的該部分。
  41. 如申請專利範圍第31項所說明之方法,其中該處理器推測執行該第一碼部分和該第二碼部分,以產生各自第一結果和第二結果,其包括該 處理器實質上同時推測執行該第一碼部分和該第二碼部分,以產生各自第一結果和第二結果。
  42. 如申請專利範圍第31項所說明之方法,其中該轉換係透過二進制轉譯系統進行。
  43. 如申請專利範圍第31項所說明之方法,其中該轉換係透過一GPU進行。
  44. 如申請專利範圍第31項所說明之方法,其中該轉換係透過一依序處理器進行。
  45. 如申請專利範圍第31項所說明之方法,其中該轉換係透過一著色器處理組件進行。
TW106137219A 2016-10-28 2017-10-27 可靠度提升系統、方法和電腦可讀取媒體 TWI681333B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/338,247 US10289469B2 (en) 2016-10-28 2016-10-28 Reliability enhancement utilizing speculative execution systems and methods
US15/338,247 2016-10-28

Publications (2)

Publication Number Publication Date
TW201823970A true TW201823970A (zh) 2018-07-01
TWI681333B TWI681333B (zh) 2020-01-01

Family

ID=61912286

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106137219A TWI681333B (zh) 2016-10-28 2017-10-27 可靠度提升系統、方法和電腦可讀取媒體

Country Status (3)

Country Link
US (1) US10289469B2 (zh)
DE (1) DE102017125235A1 (zh)
TW (1) TWI681333B (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019136375A1 (en) 2018-01-07 2019-07-11 Nvidia Corporation Guiding vehicles through vehicle maneuvers using machine learning models
WO2019152888A1 (en) 2018-02-02 2019-08-08 Nvidia Corporation Safety procedure analysis for obstacle avoidance in autonomous vehicle
US11789449B2 (en) 2018-02-09 2023-10-17 Nvidia Corporation Controlling autonomous vehicles using safe arrival times
US11995551B2 (en) 2018-02-14 2024-05-28 Nvidia Corporation Pruning convolutional neural networks
CN111133447B (zh) 2018-02-18 2024-03-19 辉达公司 适于自主驾驶的对象检测和检测置信度的方法和系统
DE112019000122T5 (de) 2018-02-27 2020-06-25 Nvidia Corporation Echtzeiterfassung von spuren und begrenzungen durch autonome fahrzeuge
US11537139B2 (en) 2018-03-15 2022-12-27 Nvidia Corporation Determining drivable free-space for autonomous vehicles
US11080590B2 (en) 2018-03-21 2021-08-03 Nvidia Corporation Stereo depth estimation using deep neural networks
WO2019191306A1 (en) 2018-03-27 2019-10-03 Nvidia Corporation Training, testing, and verifying autonomous machines using simulated environments
WO2019191313A1 (en) 2018-03-27 2019-10-03 Nvidia Corporation Remote operation of vehicles using immersive virtual reality environments
WO2019237072A1 (en) 2018-06-08 2019-12-12 Nvidia Corporation Virtualized intrusion detection and prevention in autonomous vehicles
WO2019241022A1 (en) 2018-06-13 2019-12-19 Nvidia Corporation Path detection for autonomous machines using deep neural networks
US11966838B2 (en) 2018-06-19 2024-04-23 Nvidia Corporation Behavior-guided path planning in autonomous machine applications
JP7295234B2 (ja) 2018-07-17 2023-06-20 エヌビディア コーポレーション 自律運転マシンのための回帰ベースの線分検出
US11508049B2 (en) 2018-09-13 2022-11-22 Nvidia Corporation Deep neural network processing for sensor blindness detection in autonomous machine applications
US11610115B2 (en) 2018-11-16 2023-03-21 Nvidia Corporation Learning to generate synthetic datasets for training neural networks
CN109828788A (zh) * 2018-12-21 2019-05-31 天翼电子商务有限公司 基于线程级推测执行的规则引擎加速方法及系统
WO2020140047A1 (en) 2018-12-28 2020-07-02 Nvidia Corporation Distance to obstacle detection in autonomous machine applications
US11182916B2 (en) 2018-12-28 2021-11-23 Nvidia Corporation Distance to obstacle detection in autonomous machine applications
US11170299B2 (en) 2018-12-28 2021-11-09 Nvidia Corporation Distance estimation to objects and free-space boundaries in autonomous machine applications
WO2020163390A1 (en) 2019-02-05 2020-08-13 Nvidia Corporation Driving lane perception diversity and redundancy in autonomous driving applications
CN113811886B (zh) 2019-03-11 2024-03-19 辉达公司 自主机器应用中的路口检测和分类
US11163576B2 (en) * 2019-03-20 2021-11-02 Eta Scale Ab Systems and methods for invisible speculative execution
US11713978B2 (en) 2019-08-31 2023-08-01 Nvidia Corporation Map creation and localization for autonomous driving applications
CN113994390A (zh) 2019-12-03 2022-01-28 辉达公司 针对自主驾驶应用的使用曲线拟合的地标检测
JP2023514905A (ja) 2020-02-19 2023-04-12 エヌビディア コーポレーション 自律型車両のためのビヘイビア・プランニング
US11961243B2 (en) 2020-02-26 2024-04-16 Nvidia Corporation Object detection using image alignment for autonomous machine applications
US11830160B2 (en) 2020-05-05 2023-11-28 Nvidia Corporation Object detection using planar homography and self-supervised scene structure understanding
US11645185B2 (en) * 2020-09-25 2023-05-09 Intel Corporation Detection of faults in performance of micro instructions
US11978266B2 (en) 2020-10-21 2024-05-07 Nvidia Corporation Occupant attentiveness and cognitive load monitoring for autonomous and semi-autonomous driving applications

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704861B1 (en) * 1993-06-17 2004-03-09 Hewlett-Packard Development Company, L.P. Mechanism for executing computer instructions in parallel
US5765016A (en) * 1996-09-12 1998-06-09 Advanced Micro Devices, Inc. Reorder buffer configured to store both speculative and committed register states
US7530062B2 (en) * 2003-05-23 2009-05-05 Microsoft Corporation Optimizing compiler transforms for a high level shader language
US20070234014A1 (en) * 2006-03-28 2007-10-04 Ryotaro Kobayashi Processor apparatus for executing instructions with local slack prediction of instructions and processing method therefor
US8214808B2 (en) * 2007-05-07 2012-07-03 International Business Machines Corporation System and method for speculative thread assist in a heterogeneous processing environment
US8078942B2 (en) * 2007-09-04 2011-12-13 Oracle America, Inc. Register error correction of speculative data in an out-of-order processor
WO2010047174A1 (ja) * 2008-10-24 2010-04-29 インターナショナル・ビジネス・マシーンズ・コーポレーション ソース・コード処理方法、システム、及びプログラム
US9086889B2 (en) * 2010-04-27 2015-07-21 Oracle International Corporation Reducing pipeline restart penalty
US9626187B2 (en) * 2010-05-27 2017-04-18 International Business Machines Corporation Transactional memory system supporting unbroken suspended execution
US8539163B1 (en) * 2010-12-17 2013-09-17 Amazon Technologies, Inc. Speculative reads
US10324768B2 (en) * 2014-12-17 2019-06-18 Intel Corporation Lightweight restricted transactional memory for speculative compiler optimization

Also Published As

Publication number Publication date
US10289469B2 (en) 2019-05-14
DE102017125235A1 (de) 2018-05-03
US20180121273A1 (en) 2018-05-03
TWI681333B (zh) 2020-01-01

Similar Documents

Publication Publication Date Title
TWI681333B (zh) 可靠度提升系統、方法和電腦可讀取媒體
JP6526609B2 (ja) プロセッサ
KR102282135B1 (ko) 영구적 저장 펜스 프로세서, 방법, 시스템, 및 명령어
JP5643345B2 (ja) アグレッシブ最適化によって施された変更をロールバック可能なアグレッシブ・コード最適化を実行する装置、方法及びコンピュータ・プログラム
US6505296B2 (en) Emulated branch effected by trampoline mechanism
US20200192742A1 (en) Error recovery for intra-core lockstep mode
KR102484125B1 (ko) 벡터 처리회로를 사용한 에러 검출
CN106293626B (zh) 持久性提交处理器、方法、装置、制品和电子设备
JP2011509490A (ja) 論理エラー保護のためのハイブリッド冗長性を備えたプロセッサ
JP2000112758A (ja) 投機的実行中に発生する例外を遅延させるシステム及び方法
JP6272942B2 (ja) トランザクショナル電力管理を実行するためのハードウェア装置及び方法
KR101806279B1 (ko) 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들
CN116339828A (zh) 存储器复制指令、处理器、方法和系统
US20130326200A1 (en) Integrated circuit devices and methods for scheduling and executing a restricted load operation
US20160283247A1 (en) Apparatuses and methods to selectively execute a commit instruction
WO2009076324A2 (en) Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
Marena RISC-V: high performance embedded SweRV™ core microarchitecture, performance and CHIPS Alliance
US11048516B2 (en) Systems, methods, and apparatuses for last branch record support compatible with binary translation and speculative execution using an architectural bit array and a write bit array
CN113535236A (zh) 基于指令集体系结构的和自动的加载跟踪的方法和装置
US8683178B2 (en) Sharing a fault-status register when processing vector instructions
EP1220088B1 (en) Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US10853078B2 (en) Method and apparatus for supporting speculative memory optimizations
US20140365751A1 (en) Operand generation in at least one processing pipeline
US10346171B2 (en) End-to end transmission of redundant bits for physical storage location identifiers between first and second register rename storage structures