TWI715686B - 用於容錯及錯誤偵測之系統、方法和裝置 - Google Patents

用於容錯及錯誤偵測之系統、方法和裝置 Download PDF

Info

Publication number
TWI715686B
TWI715686B TW105139271A TW105139271A TWI715686B TW I715686 B TWI715686 B TW I715686B TW 105139271 A TW105139271 A TW 105139271A TW 105139271 A TW105139271 A TW 105139271A TW I715686 B TWI715686 B TW I715686B
Authority
TW
Taiwan
Prior art keywords
data
instruction
scalar
processor
unit
Prior art date
Application number
TW105139271A
Other languages
English (en)
Other versions
TW201732589A (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 TW201732589A publication Critical patent/TW201732589A/zh
Application granted granted Critical
Publication of TWI715686B publication Critical patent/TWI715686B/zh

Links

Images

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/0745Error 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 in an input/output transactions management context
    • 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/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error 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/14Error detection or correction of the data by redundancy in operation
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • G06F11/184Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1608Error detection by comparing the output signals of redundant hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Abstract

說明用於容錯及偵錯的系統、方法、及裝置。舉例而言,裝置包含:用以複製指令的輸入源之電路;算術邏輯單元(ALU)電路,用以使用單一指令多重資料(SIMD)硬體,利用複製的輸入源來執行指令,以產生緊縮資料結果;以及,比較電路,係耦合至ALU電路以評估緊縮資料結果並且輸出單數資料結果至指令的目的地中。

Description

用於容錯及錯誤偵測之系統、方法和裝置
本發明的領域大致上係有關電腦處理器架構,具體而言,係有關容錯及偵錯。
由於實施成本超過獲利,所以,容錯及偵錯特點典型上無法被應用至高產量處理器中例如算術邏輯單元(ALU)等資料轉換單元中。但是,降低尺寸及增加封裝中的電晶體數目會因阿爾發(alpha)粒子及其它起因而增加錯誤機率。
105‧‧‧純量算術邏輯單元
217‧‧‧解碼電路
205‧‧‧向量算術邏輯單元
209‧‧‧比較電路
305‧‧‧複製電路
307‧‧‧複製電路
309‧‧‧向量算術邏輯單元
311‧‧‧比較電路
401‧‧‧純量算術邏輯單元
403‧‧‧向量算術邏輯單元
405‧‧‧比較器電路
501‧‧‧純量算術邏輯單元
503‧‧‧向量算術邏輯單元
505‧‧‧表決電路
601‧‧‧單一指令多重資料電路
603‧‧‧單一指令多重資料電路
900‧‧‧暫存器架構
1000‧‧‧管線
1200‧‧‧處理器
1300‧‧‧系統
1400‧‧‧系統
1500‧‧‧系統
1600‧‧‧系統晶片
在附圖中,以舉例方式而非限定方式來說明本發明,其中,類似的代號表示類似元件,以及,其中:圖1繪示對二個純量輸入運算元之典型的純量執行之實例;圖2繪示用於對二個純量輸入所實施的操作之偵錯電路的方塊圖; 圖3繪示用於對二個純量輸入所實施的操作之偵錯電路的方塊圖;圖4繪示用於偵錯的複製操作之裝置的實施例;圖5繪示用於容錯的複製操作之裝置的實施例;圖6繪示用於向量操作的偵錯或容錯之複製操作的裝置實施例;圖7繪示使用運算元複製的偵錯方法之實施例;圖8繪示使用運算元複製的偵錯方法之實施例;圖9是根據本發明的一個實施例之暫存器架構的方塊圖;圖10A是方塊圖,繪示根據本發明的實施例之示範性有序管線及示範性暫存器重命名、亂序核發/執行管線;圖10B是方塊圖,繪示根據本發明的實施例之包含在處理器中的有序架構核心及示範性暫存器重命名、亂序核發/執行架構核心之示範性實施例;圖11A-B是方塊圖,繪示更具體示範性有序核心架構,核心可為晶片中數個邏輯區塊(包含相同型式及/或不同型式的其它核心)的其中之一;圖12是根據本發明的實施例之具有一個以上的核心之處理器、具有集成的記憶體控制器、及具有集成的圖形之處理器的方塊圖;圖13-16是示範性電腦架構的方塊圖;以及圖17是方塊圖,對比根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成目標指 令集中的二進位指令。
【發明內容及實施方式】
在下述說明中,揭示許多特定細節。但是,須瞭解,沒有這些特定細節,仍可實施本發明的實施例。在其它情況中,並未詳細顯示習知的電路、結構及技術,以免模糊本說明的理解。
在說明書中述及「一個實施例」、「實施例」、「示範性實施例」等等係表示所述的實施例可以包含特定的特點、結構、或特徵,但是,每一個實施例不一定包含特定的特點、結構、或特徵。此外,這些文句不一定意指相同的實施例。此外,當配合實施例說明特定的特點、結構、或特徵時,係認為無論是否明確說明,習於此技藝者都知道可以配合其它實施例以變更此類特點、結構、或特徵。
於此詳述之實施例係使用SIMD硬體以偵測及/或核正ALU中的暫時及/或永久錯誤而可忽略地增加硬體成本及軟體性能。對於會受影響的碼之區域,這需要對SIMD單元複製輸入、執行ALU操作,以及,在值被提交而變成程式狀態的部份之前比較不同點的結構。藉由硬體,對使用者透明地達成輸入的複製及結果檢查。
簡而言之,當被賦能時,遍及多個SIMD執行單元,冗餘地執行ALU操作的序列(這將被稱為「冗餘序列」)。取決於什麼向量操作受硬體支援,此冗餘序列含有整數及/或浮點操作。遍及冗餘序列,水平地比較結果。對於偵 錯,假使任何結果不同,則為偵測到錯誤。對於容錯,取得多數票以決定最後結果。
在某些實施例中,例如藉由使用「冗餘」指令(標示使用冗餘的操作碼)或是藉由寫至控制暫存器以開啟冗餘,冗餘系列可由程式或OS來予以開啟及關閉。
當使用冗餘時,對於純量操作,隱含地或明確地複製對該操作的輸入。對於偵錯,明確地作成至少一拷貝,使得平行地達成至少二冗餘序列。對於容錯,至少作成二個拷貝而使得平行地達成至少三冗餘序列。序列的總數是奇數的以保證多數結果。這通常被稱為n-模數冗餘。當n等於3時,其被視為三倍模數冗餘或TMR。在大部份的實施例中,以沒有來自運轉的應用之向量暫存器將受衝擊之方式,實施輸入複製。舉例而言,檢查點暫存器別名表以及重命名向量暫存器,或是藉由安排純量輸入至向量ALU及遍及ALU輸入暫存器複製值,會允許此點。
在冗餘期間,如同在原始碼中,執行相同的ALU操作,但使用實施相同指令之平行ALU或向量達成它們除外。然後,使用在ALU的輸出之比較器(用於偵錯)或多數投票者(對於容錯)。典型上,結果將被置入結果SIMD暫存器中的最低效位置或是置入純量暫存器中。
在此ALU操作結束時,假使沒有錯誤,則在各結果向量內的所有值應該是相同的。為了添加可靠度,比較這些值並達成下述之一。對於偵錯,使用比較器,均等地測試結果值。假使它們不是相等的,則偵測到的CPU中的 錯誤,以及某些中斷或錯誤處理器軟體會決定是否將錯誤發訊、重試序列、等等。對於容錯,藉由遍及向量之一位元接一位元的多數票,以產生最後結果。對於具有三個結果x0、x1、及x2的TMR,這可計算成:((x0 AND x1)OR(x0 AND x2)OR(x1 AND x2)。注意,在容錯情況中,總是產生結果以及會有選項是將任何不一致發訊。
在某些實施例中,為了允許對性能及可靠度同時使用向量化,被複製的輸入值無需是純量值;其本身可為值的向量。唯一的要求是原始(非冗餘)向量的總尺寸要足夠小以允許額外複製來添加可靠度。舉例而言,如同所示,可以在用於偵錯之256位元或更大的硬體上複製128位元的向量(例如,四個單精度FP值)。類似地,可以在用於容錯的512位元向量硬體上複製128位元的向量。因此,以額外的可靠度的形式將值加至特別是對較老世代的處理器寫入的碼,而不會改變基本的向量演繹法。在某些實施例中,藉由使用較寬的向量硬體之用於錯誤之現有的向量操作會被遮蓋。舉例而言,當應用已經使用128位元向量時,其會請求遍及256位元或512位元暫存器複製128位元值。
注意,本說明書從頭到尾,向量(SIMD)ALU具有多個功能/執行單元以執行操作。
圖1繪示對二個純量輸入運算元之典型的純量執行之實例。純量輸入0 101及純量輸入1 103等輸入運算元被輸入至純量ALU 105以產生純量輸出107。舉例而言, ADD R1,R2,R3,其中,將R2及R3相加而將結果儲存於R1中。
圖2繪示用於對二個純量輸入執行的操作之偵錯電路的方塊圖。解碼電路217將具有純量輸入的指令解碼。解碼電路217會將被解碼的指令映射至在需要時將使用向量輸入之向量/SIMD指令。
輸入運算元、純量輸入0 211及純量輸入1 213分別被複製至暫時向量輸入(例如,向量暫存器)201及203。舉例而言,純量輸入0是D1,純量輸入1是D2。這些值被複製至二個向量輸入中作為資料元件。此複製可以是隱含的(提供給ALU而未使用中間緊縮資料暫存器)或是明確的(於緊縮資料暫存器中複製)。因此,向量輸入201具有均具有值D1的多個資料元件,以及向量輸入203具有均具有值D2的多個資料元件。典型上,輸入值會至少被複製二次。
向量輸入會被輸入至向量(SIMD)ALU 205以產生向量輸出207。舉例而言,ADD R1,R2,R3,其中,將R2及R3的資料元件相加。
比較電路209會比較向量輸出207的多個資料元件以決定資料元件是否相同。在某些實施例中,所有的資料元件需要是相同的或是比較電路209的輸出是標示有錯誤的訊號或是結果是否為可容忍的。在這些實施例中,當所有的資料元件是相同時,輸出是多個資料元件的其中之一,作為輸出215。在某些實施例中,輸出是純量。在其它實 施例中,比較電路的輸出值係置於緊縮資料暫存器的最低效資料元件位置。
示範性比較電路使用AND閘以測試多個資料元件。假使它們中的任一者不相同時,則AND的結果將會是0,表示錯誤。在其它實施例中,多個資料元件中的至少大部份需要是相同的,或者比較電路209的輸出會是標示有錯之訊號。在這些實施例中,當多個資料元件中的至少大部份是相同時,輸出是多個資料元件的其中之一,作為純量輸出215以便被儲存於指令的純量暫存器(在本實例中為R1)中。當然,可以使用比多數式更嚴格或較不嚴格的測試。在某些實施例中,輸出是純量及被置於原始目的地中。在其它實施例中,比較電路的輸出值會被置於被映射的指令之緊縮資料暫存器的最低效資料元件位置。
圖3繪示用於對二個純量輸入所實施的操作之偵錯電路的方塊圖。在此圖示中,例如上述詳述的解碼電路並未顯示但它是存在的。輸入運算元301和303由複製電路305和307分別被複製至向量輸入中(例如,暫時向量暫存器)。舉例而言,輸入301是2,輸入303是3,且作為資料元件而被複製至二個向量輸入中。
向量輸入被輸入至向量(SIMD)ALU 309中以產生向量輸出。舉例而言,ADD R1,R2,R3,其中,將R2(2)及R3(3)的資料元件相加(5)。
比較電路311比較向量ALU 309的向量輸出之多個資料元件以決定是否有錯誤。示範性比較電路使用及 (AND)閘以測試多個資料元件。舉例而言,當所有的資料元件不相同時,錯誤發生。
在某些實施例中,所有的資料元件需要是相同的或者比較電路311的輸出會是標示有錯誤之訊號。在這些實施例中,當所有的資料元件相同時,輸出是多個資料元件的其中之一,作為純量輸出。假使它們之中任一者不相同時,則AND的結果將是標示錯誤的0。在其它實施例中,多個資料元件中至少多數需要是相同的,或者比較電路211的輸出是標示有錯的訊號。在這些實施例中,當多個資料元件中至少多數是相同時,輸出是多個資料元件的至少其中之一,作為純量輸出。當然,可以使用比多數式更嚴格或較不嚴格的測試。在某些實施例中,輸出是純量且被置於原始目的地。在其它實施例中,比較電路的輸出值係置於被映射的指令之緊縮資料暫存器的最低效資料元件位置。
圖4繪示用於偵錯的複製操作之裝置的實施例。在圖中的左側上,顯示原始的純量操作。輸入a及b被提供給純量ALU 401以產生輸出c。
圖中的右側繪示複製操作的實施例。輸入資料a及b被提供給向量ALU 403的執行單元,且藉由提供輸入資料給向量ALU 403的至少一其它執行單元而將其複製。在本實施例中,在饋送給ALU之前,暫時的儲存位置不會被使用。
來自向量ALU 403的各執行單元之結果會被饋入至 比較器電路405中。比較器電路405決定是否有錯(如上所詳述般)。結果也會從多個執行單元的其中之一輸出至暫存器。在某些實施例中,輸出是純量且被置於原始目的地中。在其它實施例中,比較電路的輸出值係置於被映射的指令之緊縮資料暫存器的最低效資料元件位置。但是,輸出是否架構上被提交(寫回)係取決於是否有錯誤。當沒有錯誤時,則結果被提交。
圖5繪示用於容錯的複製操作之裝置的實施例。在圖中的左側上,顯示原始的純量操作。輸入a及b被提供給純量ALU 501以產生輸出c。
圖中的右側繪示複製操作的實施例。輸入資料a及b被提供給向量ALU 503的執行單元,且藉由提供輸入資料給向量ALU 503的至少一其它執行單元而將其複製。在本實施例中,在饋送給ALU之前,暫時的儲存位置不會被使用。但是,在其它實施例中,暫時儲存被用來固持複製的資料值。
來自向量ALU 503的各執行單元之結果會被饋入至表決電路505中。表決電路505藉由表決以決定結果是否正確。在某些實施例中,表決是多數票,具有最多票的結果資料值會作為結果輸出。在其它實施例中,以遍及向量之一位元接一位元的多數票,以產生最後結果。在某些實施例中,輸出是純量及係置於原始目的地中。在其它實施例中,比較電路的輸出值係置於被映射的指令之緊縮資料暫存器的最低效資料元件位置中。對於具有三個結果 x0、x1及x2的TMR,這可以如下述地計算:((x0 AND x1)OR(x0 AND x2))OR(x1 AND x2))。此外,在某些實施例中,將訊號輸出以標示表決中的任何不一致。
圖6繪示用於向量操作的偵錯或容錯之複製操作的裝置實施例。在圖示的上方,使用SIMD(單一指令多重資料)電路,執行典型的SIMD操作(例如,128位元操作)。
在下方所顯示的是使用受制於偵錯或容錯電路的資料元件複製之SIMD操作。
圖7繪示使用運算元複製的偵錯方法之實施例。在701,提取指令。舉例而言,提取ADD R1,R2,R3指令,其中,R1及R2會被相加及儲存於R1中。被提取的指令可以是純量或向量。
在703,將被提取的指令解碼。此外,解碼的指令被映射至視需要而將使用複製的資料元件之SIMD指令。
在705,提取及複製已解碼的指令之源運算元資料。在某些實施例中,藉由檢查點暫存器別名表(RAT)及重命名向量暫存器,達成複製。在其它實施例中,藉由安排輸入至向量ALU的路由及複製遍及ALU輸入的值,而達成複製。
在707,使用提取的資料及其複製品,執行已解碼的指令。如上詳述般,使用向量執行電路的不同的ALU執行單元,使得對相同操作平行地處理被提取的資料及複製品。
在709,決定操作中是否有錯誤。舉例而言,作結果 的比較,且假使它們不相等時,則有錯誤。當有錯誤時,在711,為了處理而發訊。當没有錯誤時,則在713將結果置入被映射的指令之目的地運算元(SIMD暫存器)的資料元件中,或是未被映射的指令之純量運算元(純量暫存器)的資料元件中。
圖8繪示使用運算元複製的偵錯方法之實施例。在801,提取指令。舉例而言,提取ADD R1,R2,R3指令,其中,R1及R2會被相加及儲存於R1中。被提取的指令可以是純量或向量。
在803,將被提取的指令解碼。此外,解碼的指令被映射至視需要而將使用複製的資料元件之SIMD指令。
在805,提取及複製已解碼的指令之源運算元資料。在某些實施例中,藉由檢查點暫存器別名表(RAT)及重命名向量暫存器,達成複製。在其它實施例中,藉由安排輸入至向量ALU的路由及複製遍及ALU輸入的值,而達成複製。
在807,使用提取的資料及其複製品,執行已解碼的指令。如上詳述般,使用向量執行電路的不同的ALU執行單元,使得對相同操作平行地處理被提取的資料及複製品。
在809,決定操作中的結果是否可容忍的。舉例而言,遍及結果,作一位元接一位元的多數表決。在811,最後的結果被輸出(儲存)以及產生任何不一致的訊號。當沒有不一致時,則在813輸出結果。取決於實施例,將結 果置入被映射的指令之目的地運算元(SIMD暫存器)的資料元件中,或是未被映射的指令之純量運算元(純量暫存器)的資料元件中。
下述圖詳示用以實施上述實施例之示範性架構及系統。在某些實施例中,上述一或更多個硬體組件及/或指令被如下所述地模擬、或是實施成軟體模組。
示範性暫存器架構
圖9是根據本發明的一個實施例之暫存器架構900的方塊圖。在所示的實施例中,有512位元寬的32個向量暫存器910;這些暫存器稱為zmm0至zmm31。較低的16 zmm暫存器的低階256位元係覆蓋於暫存器ymm0-16之上。較低的16 zmm暫存器的低階128位元(ymm暫存器的低階128位元)係覆蓋於暫存器xmm0-15之上。
純量操作是對zmm/ymm/xmm暫存器中最低階資料元位置執行的操作;更高階的資料元位置視實施例而保留成與它們在指令之前相同或者零化。
寫入遮罩暫存器915-在所示的實施例中,有8個大小均為64個位元之寫入遮罩暫存器(k0至k7)。在替代實施例中,寫入遮罩暫存器915大小為16個位元。如同先前所述般,在本發明的一個實施例中,向量罩暫存器k0無法作為寫入遮罩;當正常標示k0的編碼用於寫入遮罩時,其選取0xFFFF的實體接線的寫入遮罩,有效地將用於該指令的寫入遮罩禁能。
通用暫存器925-在所示的實施例中,有十六個64位元通用暫存器,它們與現有的x86定址模式一起被用來將記憶體運算元定址。這些暫存器以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15來表示。
純量浮點堆疊暫存器檔案(x87堆疊)945,MMX緊縮整數平坦暫存器檔案950疊於其上-在所示的實施例中,x87堆疊是八元件的堆疊,用以使用x87指令集擴充,對32/64/80位元浮點資料執行純量浮點操作;而MMX暫存器被用以對64位元緊縮整數資料執行操作,以及固持用於某些在MMX及XMM暫存器之間執行的操作之運算元。
本發明的替代實施例可以使用更寬或更窄的暫存器。此外,本發明的替代實施例可以使用更多、更少、或不同的暫存器檔案及暫存器。
示範性核心架構、處理器、及電腦架構
為了不同目的而以不同方式、及在不同處理器中,實施處理器核心。舉例而言,這些核心的實施包含:1)要用於通用計算的通用有序核心;2)要用於通用計算的高性能通用亂序核心;3)主要用於圖形及/或科學(通量)計算的專用核心。不同處理器的實施包含:1)CPU,包含要用於通用計算的一或更多個通用有序核心及/或要用於通用計算的一或更多個通用亂序核心;及2)協同處理器,包含主 要用於圖形及/或科學(通量)計算的一或更多個專用核心。這些不同的處理器導致不同的電腦系統架構,包含:1)在與CPU分別的晶片上的協同處理器;2)在與CPU相同的封裝組件中在分別的晶粒上的協同處理器;3)在與CPU相同的晶粒上的協同處理器(在此情況中,此協同處理器有時被稱為專用邏輯,例如集成的圖形及/或科學(輸貫量)邏輯,或是作為專用核心);及4)系統晶片,在相同晶粒上包含所述CPU(有時稱為應用核心或應用處理器)、上述協同處理器、及其它功能。於下說明示範性核心架構,接著是示範性處理器及電腦架構的說明。
示範性核心架構 有序及亂序核心方塊圖
圖10A是方塊圖,繪示根據本發明的實施例之示範性有序管線及示範性暫存器重命名、亂序核發/執行管線。圖10B是方塊圖,繪示根據本發明的實施例之要包含於處理器中之示範性暫存器重命名、亂序核發/執行架構核心以及有序架構核心之示範性實施例。圖10A-B中的實線方塊會示有序管線及有序核心,而選加的虛線方塊顯示暫存器重命名、亂序核發/執行管線及核心。將在有序態樣是亂序態樣的子集合之假設下,說明亂序態樣。
在圖10A中,處理器管線1000包含提取級1002、長度解碼級1004、解碼級1006、分配級1008、重命名級1010、排程(也稱為派遣或核發)級1012、暫存器讀取/記 憶體讀取級1014、執行級1016、寫回/記憶體寫入級1018、例外處理級1022、及提交級1024。
圖10B繪示處理器核心1090,處理器核心1090包含耦合至執行引擎單元1050之前端單元1030,引擎單元1050及前端單元1030都被耦合至記憶體單元1070。核心1090可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、很長指令字(VLIW)核心、或是混合或替代核心型式。關於又另一選項,核心1090可為專用核心,舉例而言,例如網路或通訊核心、壓縮引擎、協同處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心、等等。
前端單元1030包含分支預測單元1032,分支預測單元1032係耦合至指令快取單元1034,指令快取單元1034係耦合至指令轉譯後備緩衝器(TLB)1036,指令轉譯後備緩衝器(TLB)1036耦合至指令提取單元1038,指令提取單元1038耦合至解碼單元1040。解碼單元1040(或解碼器)將指令解碼,以及產生一或更多個微操作、微碼進入點、微指令、其它指令、或是從原始指令解碼、或是從原始指令以其它方式反應、或是從原始指令導出的其它控制訊號,以作為輸出。使用各種不同的機構,以實施解碼單元1040。適當的機構實例包含但不限於查詢表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一個實施例中,核心1090包含儲存用於某些巨集指令的微碼(例如,在解碼單元1040中或是在前端單元1030 之內)之微碼ROM或是其它媒體。解碼單元1040係耦合至執行引擎單元1050中的重命名/分配器單元1052。
執行引擎單元1050包含重命名/分配器單元1052,重命名/分配器單元1052係耦合至退出單元1054及一或更多個排程器單元1056的集合。排程器單元1056代表任何數目的不同排程器,包含保留站、中央指令窗、等等。排程器單元1056係耦合至實體暫存器檔案單元1058。各實體暫存器檔案單元1058代表一或更多個實體暫存器檔案,不同的實體暫存器檔案儲存例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標,指令指標是要被執行的下一指令的位址)、等等一或更多個不同的資料型式。在一個實施例中,實體暫存器檔案單元1058包括向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元提供架構向量暫存器、向量罩暫存器、及通用暫存器。實體暫存器檔案單元1058被退出單元1054所重疊,以顯示實施暫存器重命名及亂序執行的各種方式(例如,使用重排序緩衝器及退出暫存器檔案;使用未來檔案、歷史緩衝器、及退出暫存器檔案;使用暫存器映射及暫存器池;等等)。退出單元1054及實體暫存器檔案單元1058係耦合至執行叢集1060。執行叢集1060包含一或更多個執行單元1062的集合以及一或更多個記憶體存取單元1064的集合。執行單元1062執行不同的操作(例如,偏移、加法、減法、乘法)以及對不同型式的資料(例如,純量浮點、緊 縮整數、緊縮浮點、向量整數、向量浮點)執行操作。雖然某些實施例包含專用於特定功能或功能集的一些執行單元,但是,其它實施例可以僅包含一執行單元或是多個都執行所有功能的執行單元。由於某些實施例產生用於某些型式的資料/操作之分別的管線(例如,均具有它們自己的排程器單元、實體暫存器檔案單元、及/或執行叢集的純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線及/或記憶體存取管線,並且,在個別的記憶體存取管線的情況中,實施某些實施例,其中,僅有此管線的執行叢集具有記憶體存取單元1064),所以,排程器單元1056、實體暫存器檔案單元1058、及執行叢集1060顯示為可能為複數的。也應瞭解,在使用分別的管線時,這些管線中之一或更多者可以是亂序核發/執行,而其它是有序的。
記憶體存取單元1064的集合係耦合至記憶體單元1070,記憶體單元1070包含耦合至資料快取單元1074的資料TLB單元1072,資料快取單元1074係耦合至階層2(L2)快取單元1076。在一個示範性實施例中,記憶體存取單元1064包含載入單元、儲存位址單元、及儲存資料單元,各單元係耦合至記憶體單元1070中的資料TLB單元1072。指令快取單元1034又被耦合至記憶體單元1070中的階層2(L2)快取單元1076。L2快取單元1076係耦合至一或更多個其它階層的快取記憶體以及最後被耦合至主記憶體。
舉例而言,示範性暫存器重命名、亂序核發/執行核心架構如下所述地實施管線1000:1)指令提取1038可實施提取及長度解碼級1002和1004;2)解碼單元1040實施解碼級1006;3)重命名/分配器單元1052實施分配級1008及重命名級1010;4)排程器單元1056實施排程級1012;5)實體暫存器檔案單元1058及記憶體單元1070實施暫存器讀取/記憶體讀取級1014;執行叢集1060實施執行級1016;6)記憶體單元1070及實體暫存器檔案單元1058實施寫回/記憶體寫入級1018;7)各種單元涉及例外處理級1022;以及,8)退出單元1054及實體暫存器檔案單元1058實施提交級1024。
核心1090可支援一或更多個指令集(例如,x86指令集(增加較新版本的某些擴充);加州太陽谷的MIPS Technologies的MIPS指令集;加州太陽谷的ARM Holdings的ARM指令集(加上選加的例如NEON等增加擴充)),包含此處所述的指令。在一個實施例中,核心1090包含邏輯以支援緊縮資料指令集擴充(例如AVX1、AVX2),藉以允許由很多多媒體應用所使用的操作使用緊縮資料而執行。
應瞭解,核心支援多緒(執行二或更多個平行的操作或緒組),並且,可以各種方式如此執行,這些方式包含時間切割多緒、同時多緒(其中,單一個實體核心提供用於實體核心同時正多緒化的多個緒中的各緒之邏輯核心)、或是其組合(例如,時間切割提取及解碼以及其後的 同時多緒,例如Intel® Hyperthreading技術中所示)。
雖然在亂序執行的環境中說明暫存器重命名,但是,應瞭解,暫存器重命名可用於有序架構中。雖然所示的處理器的實施例也包含分別的指令及資料快取單元1034/1074以及共用的L2快取單元1076,但是,替代實施例具有用於指令及資料之單一內部快取,例如階層1(L1)內部快取、或是多階層的內部快取。在某些實施例中,系統包含內部快取及外部快取的組合,外部快取是核心及/或處理器的外部。替代地,所有的快取可以是核心及/或處理器的外部。
示範性有序核心架構
圖11A-B繪示更特定之示範性有序核心架構的方塊圖,其中,核心是晶片中數個邏輯區塊(包含相同型式及/或不同型式的其它核心)的其中之一。這些邏輯區塊視應用而經由設有某些固定功能邏輯之高頻寬互連網路(例如,環式網路)、記憶體I/O介面、及其它所需I/O邏輯而通訊。
圖11A是根據本發明的實施例之單一處理器核心、以及其對晶粒上互連網路1102的連接及其本地子集合的階級2(L2)快取記憶體1104之方塊圖。在一個實施例中,指令解碼器1100支援設有緊縮資料指令集擴充的x86指令集。L1快取記憶體1106允許對快取記憶體低潛時存取至純量及向量單元。雖然在一個實施例中(為了簡化設計), 純量單元1108和向量單元1110使用分開的暫存器集(分別為純量暫存器1112和向量暫存器1114)及在它們之間傳送的資料被寫至記憶體,然後從階層1(L1)快取記憶體1106讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器集或是包含通訊路徑,允許資料在二個暫存器檔案之間傳送而不用寫入及讀回)。
L2快取記憶體1104的本地子集合是被分割成多個個別的本地子集合之通用L2快取的部份,每一個處理器核心有一個個別的本地子集合。各處理器核心對於它自己的L2快取記憶體1104的本地子集合具有直接存取路徑。與存取它們自己的本地L2快取記憶體子集合之其它處理器核心相平行地,由處理器核心讀取的資料被儲存在其L2快取子集合1104中且可以被快速地存取。由處理器核心寫入的資料係儲存在它自己的L2快取子集合1104中,且假使需要時從其它子集合湧入。環式網路確保共用資料的同調性。環式網路是雙向的以允許例如處理器核心、L2快取記憶體及其它邏輯區塊以在晶片之內彼此通訊。各環式資料路徑是每一個方向1012位元寬。
圖11B是根據本發明的實施例的圖11A中的處理器核心的部份之放大視圖。圖11B包含L1快取記憶體1104的L1資料快取記憶體1106A部份、以及關於向量單元1110和向量暫存器1114的更多細節。具體而言,向量單元1110是16-寬的向量處理單元(VPU)(請參見16-寬的ALU 1128),其執行整數、單精準浮點、及雙倍精準浮點 指令中之一或更多者。VPU以拌和單元1120支援拌和暫存器輸入、以數字轉換單元1122A-B支援數字轉換、並且以記憶體輸入上的複製單元1124支援複製。寫入遮罩暫存器1126允許預測造成的向量寫入。
圖12是根據本發明的實施例之具有一個以上的核心、具有集成的記憶體控制器、及具有集成的圖形的處理器1200的方塊圖。圖12中的粗線框顯示具有單核心1202A、系統代理器1210、一或更多個匯流排控制器單元1216的組之處理器1200,而選加的虛線框顯示設有多核心1202A-N、系統代理器單元1210中一或更多個整合的記憶體控制器單元1214的組、以及專用邏輯1208的替代處理器1200。
因此,處理器1200的不同實施包含:1)CPU,設有專用邏輯1208及核心1202A-N,專用邏輯1208是集成的圖形及/或科學(通量)邏輯(包含一或更多個核心),核心1202A-N是一或更多個通用核心(例如,通用有序核心、通用亂序核心、二者之組合);2)協同處理器,設有核心1202A-N,核心1202A-N是大量主要用於圖形及/或科學(通量)的專用核心;以及,3)協同處理器,設有核心1202A-N,核心1202A-N是大量通用的有序核心。因此,處理器1200可為通用處理器、協同處理器或專用處理器,舉例而言,網路或通訊處理器、壓縮引擎、圖形處理器GPGPU(通用圖形處理單元),高通量多集成核心(MIC)協同處理器(包含30或更多個核心)、嵌入式處理器、等 等。處理器可以被實施於一或更多個晶片上。使用例如BiCMOS、CMOS、或NMOS等多種製程技術,處理器1200可以被實施於一或更多個基底上及/或為其一部份。
記憶體階層架構包含在核心內的一或更多個階層的快取記憶體、一組或一或更多個共用快取單元1206、及耦合至集成的記憶體控制器單元1214組之外部記憶體(未顯示)。共用快取單元1206組可以包含例如階層2(L2)、階層3(L3)、階層4(L4)、或其它階層快取記憶體等一或更多個中級快取、最後階層快取記憶體(LLC)、及/或其組合。雖然在一個實施例中,環式基礎互連單元1212將整合圖形邏輯1208、共用快取單元1206的組、及系統代理器單元1210/集成的記憶體控制器單元1214互連,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。在一個實施例中,在一或更多個快取單元1206與核心1202-A-N之間維持同調性。
在某些實施例中,核心1202A-N中之一或更多個核心能夠多緒化。系統代理器1210包含協調及操作核心1202A-N之那些組件。系統代理器單元1210可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含調節核心1202A-N及集成的圖形邏輯1208的電力狀態所需的邏輯及組件。顯示單元是用於驅動一或更多個外部連接的顯示器。
以架構指令集的觀點而言,核心1202A-N可以是同質的或異質的;亦即,核心1202A-N中之二或更多個能 夠執行相同的指令集,而其它核心能夠僅執行該指令集的子集合或不同的指令集。
示範性電腦架構
圖13-16是示範性電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置之此領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠併有此處所揭示的處理器及/或其它執行邏輯的多個種類的系統或電子裝置通常是適合的。
現在參考圖13,其顯示根據本發明的一個實施例之系統1300的方塊圖。系統1300可以包含耦合至控制器集線器1320之一或更多個處理器1310、1315。在一個實施例中,控制器集線器1320包含圖形記憶體控制器集線器(GMCH)1390及輸入/輸出集線器(IOH)1350(可以在分別的晶片上);GMCH 1390包含記憶體及圖形控制器,記憶體1340及協同處理器1345係耦合至記憶體及圖形控制器;IOH 1350將輸入/輸出(I/O)裝置1360耦合至GMCH 1390。替代地,記憶體及圖形控制器中之一或二者被集成於處理器之內(如上所述),記憶體1340及協同處理器1345直接被耦合至處理器1310、及設有IOH 1350之單晶 片中的控制器集線器1320。
在圖13中以虛線標示額外的處理器1315的選加本質。各處理器1310、1315包含此處所述的一或更多個處理核心以及可以是某些版本的處理器1200。
舉例而言,記憶體1340可以是動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或是二者的組合。對於至少一實施例,控制器集線器1320經由多接點匯流排而與處理器1310、1315相通訊,多接匯流排為例如前側匯流排(FSB)、例如快速路徑互連(QPI)等點對點介面、或是類似連接1395。
在一個實施例中,協同處理器1345是專用處理器,例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。在一個實施例中,控制器集線器1320包含集成的圖形加速器。
以包含架構、微架構、熱、耗電特徵、等等準則計量光譜的觀點而言,實體資源1310、1315之間有各種差異。
在一個實施例中,處理器1310執行控制一般型式的資料處理操作之指令。處理器指令可以被嵌入在指令之內。處理器1310將這些協同處理器指令視為應由附加的協同處理器1345執行的型式。因此,處理器1310在協同處理器匯流排上或其它互連上核發這些協同處理器指令(或是代表協同處理器指令的控制訊號)給協同處理器1345。協同處理器1345接收及執行收到的處理器指令。
現在參考圖14,其繪示根據本發明的實施例之第一更特定示範性系統1400的方塊圖。如圖14中所示般,多處理器系統1400是點對點互連系統,以及包含經由點對點互連1450耦合的第一處理器1470和第二處理器1480。各處理器1470及1480可以是某版本的處理器1200。在本發明的一個實施例中,處理器1470和1480分別是處理器1310和1315,而協同處理器1438是協同處理器1345。在另一實施例中,處理器1470及1480分別是處理器1310和協同處理器1345。
處理器1470及1480係顯示為分別包含集成的記憶體控制器(IMC)單元1472和1482。處理器1470也包含點對點(P-P)介面1476和1478作為它的匯流排控制器單元的一部份;類似地,第二處理器1480包含P-P介面1486和1488。處理器1470、1480可以使用P-P介面電路1478、1488而經由點對點(P-P)介面1450來交換資訊。如同圖14中所示般,IMC 1472和1482將處理器耦合至個別記憶體,亦即記憶體1432和記憶體1434,它們可以是本地附著至個別處理器的主記憶體的部份。
處理器1470、1480使用點對點介面電路1476、1494、1486、1498,經由個別的P-P介面1452、1454而均可以與晶片組1490交換資訊。晶片組1490經由高性能介面1439,而與協同處理器1438選加地交換資訊。在一個實施例中,協同處理器1438是專用處理器,例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處 理器、GPGPU、嵌入式處理器、等等。
共用的快取記憶體(未顯示)可以包含在任一處理器中或是二個處理器的外部,仍經由P-P互連與處理器連接,使得假使處理器置於低電力模式中時,任一或二個處理器的本地快取資訊可以儲存在共用的快取記憶體中。
晶片組1490可以經由介面1496而被耦合至第一匯流排1416。在一個實施例中,第一匯流排1416可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互匯流排等匯流排,但是,本發明的範圍不侷限於此。
如圖14中所示般,各式各樣的I/O裝置1414與匯流排橋接器1418係耦合至第一匯流排1416,匯流排橋接器1418係耦合第一匯流排1416至第二匯流排1420。在一個實施例中,例如協同處理器、高通量MIC處理器、GPGPU、加速器(例如,圖形加速器或是數位訊號處理(DSP)單元)、現場可編程閘陣列、或是任何其它處理器等一或更多個額外的處理器1415係耦合至第一匯流排1416。在一個實施例中,第二匯流排1420可以是低接腳數(LPC)匯流排。在一個實施例中,各種裝置可以被耦合至第二匯流排1420,舉例而言,包含鍵盤及/或滑鼠1422、通訊裝置1427及例如包含指令/碼及資料1430的碟片驅動器或其它大量儲存裝置的儲存單元1428。此外,音頻I/O 1424可以被耦合至第二匯流排1420。注意,其它架構是可能的。舉例而言,取代圖14的點對點 架構,系統可以實施多接點匯流排或其它此類架構。
現在參考圖15,其繪示根據本發明的實施例之第二更特定的示範性系統1500之方塊圖。圖14及15中類似的元件帶有類似的代號,並且,圖14的某些態樣在圖15中被省略,以免模糊圖15的其它態樣。
圖15繪示處理器1470、1480分別包含集成的記憶體及I/O控制邏輯(CL)1472和1482。因此,CL 1472、1482包含集成的記憶體控制器單元及包含I/O控制邏輯。圖15繪示不僅記憶體1432、1434係耦合至CL 1472、1482,I/O裝置1514也被耦合至控制邏輯1472、1482。舊有I/O裝置1515係耦合至晶片組1490。
現在參考圖16,其繪示根據本發明的實施例之系統晶片(SoC)1600的方塊圖。圖12中類似的元件帶有類似的代號。而且,虛線框係有關更多個先進的SoC的選加特點。在圖16中,互連單元1602係耦合至:應用處理器1610,包含一或更多個核心202A-N的集合及共用快取單元1206;系統代理器單元1210;匯流排控制器單元1216;整合記憶體控制器單元1214;一組或一或更多個協同處理器1620,包含集成的圖形邏輯、影像處理器、音頻處理器、以及視頻處理器;靜態隨機存取記憶體(SRAM)單元1630;直接記憶體存取(DMA)單元1632;以及用於耦合至一或更多個外部顯示器的顯示單元1640。在一個實施例中,協同處理器1620包含專用處理器,舉例而言,例如網路或通訊處理器、壓縮引擎、GPGPU、高 通量MIC處理器、嵌入式處理器、等等。
此處揭示的機制實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
例如圖14中所示的程式碼1430可以應用至輸入指令以執行此處所述的功能和產生輸出資訊。輸出資訊可以以已知方式而被應用至一或更多個輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程序或物件導向的程式語言來實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或機器語言來實施。事實上,此處所述的機制在範圍上不侷限於任何特定的程式語言。在任何情況中,語言可以是經過編譯或解譯的語言。
至少一實施例的一或更多個態樣可以由儲存在機器可讀取的媒體上之代表指令來予以實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以被儲存在實體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入至真正地產生邏輯的製造機器或處理器。
此機器可讀取的媒體包含但不限於由機器或裝置製造或形成的物件之非暫態、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、光碟可重寫記憶體(CD-RW)、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體、靜態隨機存取記憶體等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、相位改變記憶體(PCM)、磁性或光學卡、或適用於儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有指令或含有設計資料之非暫態、實體的機器可讀取的媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特點。這些實施例也意指程式產品。
模仿(包含二進位轉譯、碼、變體、等等)
在某些情況中,指令轉換器可以用以將指令從源指令集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變體、模仿、或以其它方式轉換至由核心處理的一或更多個其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份不在處理器 上。
圖17是方塊圖,對比根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、韌體、硬體、或其各種結合來實施。圖17繪示高階語言1702的程式,可以由x86編譯器1704編譯以產生x86二進位碼1706,二進位碼1706可以由具有至少一x86指令集核心1716的處理器原地執行。具有至少一x86指令集核心1716的處理器代表藉由共容地執行或其它方式地處理下述,而能夠執行與具有至少一x86指令集核心的英特爾處理器實質上相同功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的英特爾處理器上執行為目標之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器1704代表可以操作以產生x86二進位碼1706(例如,物件碼)之編譯器,x86二進位碼1706藉由或不藉由額外的鏈結處理,都可以在具有至少一x86指令集核心1716的處理器上執行。類似地,圖17顯示高階語言1702的程式,使用替代指令集編譯器1708,可以將其編譯以產生替代指令集二進位碼1710,替代指令集二進位碼1710可以由不具有至少一x86指令集核心1714的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司 的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器1712用以將x86二進位碼1706轉換成可以由不具有x86指令集核心1714的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製作,所以,此轉換的碼不易與替代指令集二進位碼1710相同;但是,所述轉換的碼將完成一般操作及由來自替代指令集的指令組成。因此,指令轉換器1712代表軟體、韌體、硬體或其組合,其經由模仿、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼1706。
101‧‧‧純量輸入D
103‧‧‧純量輸入1
105‧‧‧純量算術邏輯單元
107‧‧‧純量輸出

Claims (14)

  1. 一種用於容錯及錯誤偵測之裝置,包括:用以複製純量算術指令的輸入源之電路;算術邏輯單元(ALU)電路,用以使用單一指令多重資料(SIMD)硬體,利用複製的輸入源來執行該純量算術指令,以產生緊縮資料結果;以及比較電路,係耦合至該ALU電路以評估該緊縮資料結果並且輸出單數資料結果至該純量算術指令的目的地中,其中該單數資料結果係被儲存為純量於緊縮資料目的地暫存器的最低效資料元件中。
  2. 如申請專利範圍第1項之裝置,又包括:解碼電路,用以將該純量算術指令解碼及將該純量算術指令映射至SIMD指令。
  3. 如申請專利範圍第1項之裝置,其中,該輸入源為純量。
  4. 如申請專利範圍第1項之裝置,其中,該比較電路係用以表決多數結果以輸出。
  5. 如申請專利範圍第4項之裝置,其中,該比較電路係用以輸出標示該表決的一致或不一致之訊號。
  6. 如申請專利範圍第1項之裝置,其中,該比較電路係用以輸出當有錯誤時之標示。
  7. 一種用於容錯及錯誤偵測之方法,包括:將純量算術指令解碼;複製已解碼的該純量算術指令之源資料; 使用該複製的資料來執行已解碼的該純量算術指令,以產生緊縮資料結果;以及評估該緊縮資料結果並且輸出單數資料結果至該純量算術指令的目的地中,其中該單數資料結果係被儲存為純量於緊縮資料目的地暫存器的最低效資料元件中。
  8. 如申請專利範圍第7項之方法,又包括:將已解碼的該純量算術指令映射至單一指令多重資料(SIMD)指令。
  9. 如申請專利範圍第7項之方法,其中,該純量算術指令為單一指令多重資料(SIMD)指令。
  10. 如申請專利範圍第7項之方法,又包括:判定有錯誤;以及輸出標示該錯誤的訊號。
  11. 如申請專利範圍第7項之方法,又包括:判定該緊縮資料結果係可容忍的;以及輸出標示該緊縮資料結果之間一致的訊號。
  12. 如申請專利範圍第7項之方法,又包括:決定該緊縮資料結果係不可容忍的;以及輸出標示該緊縮資料結果之間不一致的訊號。
  13. 如申請專利範圍第7項之方法,其中,複製已解碼的該純量算術指令的源資料包括將該源資料複製到至少一緊縮資料暫存器中。
  14. 如申請專利範圍第7項之方法,其中,複製已解碼的該純量算術指令的源資料包括安排該源資料至執行硬 體的路由。
TW105139271A 2015-12-29 2016-11-29 用於容錯及錯誤偵測之系統、方法和裝置 TWI715686B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/983,026 2015-12-29
US14/983,026 US10248488B2 (en) 2015-12-29 2015-12-29 Fault tolerance and detection by replication of input data and evaluating a packed data execution result

Publications (2)

Publication Number Publication Date
TW201732589A TW201732589A (zh) 2017-09-16
TWI715686B true TWI715686B (zh) 2021-01-11

Family

ID=59088439

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105139271A TWI715686B (zh) 2015-12-29 2016-11-29 用於容錯及錯誤偵測之系統、方法和裝置

Country Status (5)

Country Link
US (1) US10248488B2 (zh)
EP (1) EP3398070A4 (zh)
CN (1) CN108292252B (zh)
TW (1) TWI715686B (zh)
WO (1) WO2017117317A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10579536B2 (en) * 2016-08-09 2020-03-03 Arizona Board Of Regents On Behalf Of Arizona State University Multi-mode radiation hardened multi-core microprocessors
GB2559122B (en) * 2017-01-24 2020-03-11 Advanced Risc Mach Ltd Error detection using vector processing circuitry
GB2567190B (en) 2017-10-05 2020-02-26 Advanced Risc Mach Ltd Error recovery for intra-core lockstep mode
US10747819B2 (en) 2018-04-20 2020-08-18 International Business Machines Corporation Rapid partial substring matching
US10782968B2 (en) 2018-08-23 2020-09-22 International Business Machines Corporation Rapid substring detection within a data element string
US10732972B2 (en) 2018-08-23 2020-08-04 International Business Machines Corporation Non-overlapping substring detection within a data element string
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
US10996951B2 (en) 2019-09-11 2021-05-04 International Business Machines Corporation Plausibility-driven fault detection in string termination logic for fast exact substring match
US11042371B2 (en) 2019-09-11 2021-06-22 International Business Machines Corporation Plausability-driven fault detection in result logic and condition codes for fast exact substring match

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060190700A1 (en) * 2005-02-22 2006-08-24 International Business Machines Corporation Handling permanent and transient errors using a SIMD unit
US20100106944A1 (en) * 2004-07-13 2010-04-29 Arm Limited Data processing apparatus and method for performing rearrangement operations
TW201344579A (zh) * 2011-11-30 2013-11-01 Intel Corp 提供向量水平比較功能之指令與邏輯

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IN169637B (zh) * 1987-07-01 1991-11-23 Digital Equipment Corp
US4924467A (en) * 1988-08-24 1990-05-08 Unisys Corporation System for checking duplicate logic using complementary residue codes to achieve high error coverage with a minimum of interface signals
US6938183B2 (en) * 2001-09-21 2005-08-30 The Boeing Company Fault tolerant processing architecture
US8505002B2 (en) * 2006-09-29 2013-08-06 Arm Limited Translation of SIMD instructions in a data processing system
US20080209185A1 (en) * 2007-02-28 2008-08-28 Advanced Micro Devices, Inc. Processor with reconfigurable floating point unit
US8200947B1 (en) * 2008-03-24 2012-06-12 Nvidia Corporation Systems and methods for voting among parallel threads
KR101877347B1 (ko) * 2011-09-26 2018-07-12 인텔 코포레이션 벡터 로드-op/저장-op에 스트라이드 기능을 제공하는 명령어 및 로직
US9104515B2 (en) 2012-12-14 2015-08-11 Fujitsu Limited Floating-point error detection and correction
TWI485558B (zh) 2013-03-29 2015-05-21 Ind Tech Res Inst 容錯系統以及容錯運算方法
US10423413B2 (en) * 2013-07-09 2019-09-24 Texas Instruments Incorporated Vector load and duplicate operations
US20150186137A1 (en) * 2013-12-27 2015-07-02 Tal Uliel Systems, apparatuses, and methods for vector bit test
US9396056B2 (en) * 2014-03-15 2016-07-19 Intel Corporation Conditional memory fault assist suppression

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100106944A1 (en) * 2004-07-13 2010-04-29 Arm Limited Data processing apparatus and method for performing rearrangement operations
US20060190700A1 (en) * 2005-02-22 2006-08-24 International Business Machines Corporation Handling permanent and transient errors using a SIMD unit
TW201344579A (zh) * 2011-11-30 2013-11-01 Intel Corp 提供向量水平比較功能之指令與邏輯

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Zhi Chen、Ryoichi Inagaki、Alexandru Nicolau、Alexander V.Veidenbaum,Software Fault Tolerance for FPUs via Vectorization,2015 International Conference on Embedded Computer System:Architectures, Modeling, and Simulation (SAMOS XV),IEEE,19 July 2015 *

Also Published As

Publication number Publication date
TW201732589A (zh) 2017-09-16
US10248488B2 (en) 2019-04-02
EP3398070A4 (en) 2019-10-09
EP3398070A1 (en) 2018-11-07
WO2017117317A1 (en) 2017-07-06
CN108292252B (zh) 2022-09-20
CN108292252A (zh) 2018-07-17
US20170185465A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
TWI715686B (zh) 用於容錯及錯誤偵測之系統、方法和裝置
US11645135B2 (en) Hardware apparatuses and methods for memory corruption detection
CN106716434B (zh) 具有独立的用户域与管理程序域的存储器保护密钥架构
US20170097826A1 (en) System, Method, and Apparatus for Improving Throughput of Consecutive Transactional Memory Regions
CN108845826B (zh) 多寄存器存储器访问指令、处理器、方法和系统
TWI742021B (zh) 用於多位元錯誤偵測和校正之裝置和方法
US10387148B2 (en) Apparatus and method to reverse and permute bits in a mask register
TW202314486A (zh) 原子式儲存至寬於原生支援資料寬度之記憶體資料的處理器、方法、系統與指令
CN109508206B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
US9665368B2 (en) Systems, apparatuses, and methods for performing conflict detection and broadcasting contents of a register to data element positions of another register
US20130297917A1 (en) System and method for real time instruction tracing
US10503662B2 (en) Systems, apparatuses, and methods for implementing temporary escalated privilege
JP2014182796A (ja) 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法
US20160179611A1 (en) Low overhead error checking and correction apparatus and method
US20200073659A1 (en) Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements
TW201732569A (zh) 用以監控位址衝突的計數器
WO2019133091A1 (en) Apparatus and method for vectored machine check bank reporting