TW201346533A - 透過二進制轉譯之暫存器錯誤保護技術 - Google Patents

透過二進制轉譯之暫存器錯誤保護技術 Download PDF

Info

Publication number
TW201346533A
TW201346533A TW101149321A TW101149321A TW201346533A TW 201346533 A TW201346533 A TW 201346533A TW 101149321 A TW101149321 A TW 101149321A TW 101149321 A TW101149321 A TW 101149321A TW 201346533 A TW201346533 A TW 201346533A
Authority
TW
Taiwan
Prior art keywords
register
processor
code
registers
information
Prior art date
Application number
TW101149321A
Other languages
English (en)
Other versions
TWI551982B (zh
Inventor
Xavier Vera
Javier Carretero Casado
Matteo Monchiero
Tanausu Ramirez
Enric Herrero
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201346533A publication Critical patent/TW201346533A/zh
Application granted granted Critical
Publication of TWI551982B publication Critical patent/TWI551982B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一些實作提供用於至少部份基於正由一個二進制轉譯器所轉譯之程式碼的至少一個程式碼片段而檢測具有比臨界時段長之壽命的暫存器值的技術和配置。對於被檢測為具有比臨界時段長之壽命的一個暫存器值而言,係可在要由此二進制轉譯器輸出的至少一個經轉譯程式碼片段中包括要在此暫存器值之壽命之期間內致使對所檢測之此暫存器值之取用的至少一個指令。

Description

透過二進制轉譯之暫存器錯誤保護技術 發明領域
本揭示係有關微處理器之技術領域。
發明背景
軟式錯誤是一種正在逐漸增加的問題。同時,朝向增加處理器核心之數量的潮流也創造了要增加可靠性特徵以減少每核心故障率,例如得時間內故障(failure in time,FIT)率,的需求。由於一些限制,例如潛時和常態性負擔,暫存器檔案目前僅由奇偶(parity)保護,這在發生複數個打擊(strike)或複數個錯誤時會是一項問題。此外,奇偶僅能檢測奇數數量的錯誤。當暫存器係以長壽命來儲存暫存器值(即,這些值被儲存較長時期而不被讀取)時,可能會在不被檢測到的情況下發生複數個錯誤。這個問題被稱為靜默資料訛誤(Silent Data Corruption)。
要避免靜默資料訛誤的一個選擇是擦洗暫存器檔案。然而,擦洗暫存器檔案可能會在效能上有重大的衝擊。另一個選擇是在暫存器檔案中使用較強健的錯誤檢測和校正程式碼。然而,較強健的程式碼可能會造成嚴重的 潛時問題,並且可能會在晶片上需要較大區域。
發明概要
依據本發明之一實施例,係特地提出一種處理器,其包含:多個暫存器;以及一個指令產生邏輯,用於產生至少一個指令以週期性地從該等多個暫存器中之至少一個暫存器中讀取資訊,以檢測該等多個暫存器中之該至少一個暫存器是否含有有錯資訊。
100、700‧‧‧系統
102、704‧‧‧處理器
104、708‧‧‧記憶體
106‧‧‧儲存體
108‧‧‧系統匯流排
110‧‧‧暫存器
112‧‧‧微碼單元
114‧‧‧轉譯器
116‧‧‧分析方塊
118‧‧‧檢測方塊
120‧‧‧程式碼轉譯方塊
200‧‧‧處理程序流程
202‧‧‧分析和剖析要被且/或正被一個二進制轉譯器轉譯的程式碼,以檢測出具有比臨界更長之壽命的暫存器值
204‧‧‧在臨界時段之期間內將會致使對儲存此暫存器值的暫存器之取用的至少一個指令包括在要被執行的經轉譯程式碼中
300‧‧‧邏輯配置
302、402、502、602‧‧‧原始程式碼
304‧‧‧運行時間資訊
306、404、504、604‧‧‧經轉譯程式碼
308‧‧‧剖析資訊
310‧‧‧臨界值;臨界
312‧‧‧檢測結果
400、500、600‧‧‧參數
406、506、606‧‧‧壽命
408、508、510、512、608、610‧‧‧指令
702(702-1~702-N)‧‧‧核心
706‧‧‧時鐘產生器
710‧‧‧輸入/輸出控制集線器
712‧‧‧電源
714‧‧‧記憶體控制器
716‧‧‧大容量儲存體
718‧‧‧作業系統
720‧‧‧網路埠
722‧‧‧網路
724‧‧‧顯示裝置
係參照隨附圖式之圖來提出詳細說明。在這些圖中,參照號碼的最左邊的(一或數個)位元可識別出此參照號碼首次出現的圖。在不同的圖中對相同參照號碼的使用係指出類似或相同的項目或特徵。
圖1依據一些實作例示出一個示範系統。
圖2依據一些實作例示出一個示範處理程序流程。
圖3依據一些實作例示出一個示範邏輯方塊圖的選擇部件。
圖4依據一些實作例示出一種示範轉譯。
圖5依據一些實作例示出一種示範轉譯。
圖6依據一些實作例示出一種示範轉譯。
圖7例示出一個示範系統,一些實作可在此系統中操作。
較佳實施例之詳細說明 概覽
本揭示包括用於在二進制轉譯之期間內檢測長壽暫存器值、並藉由將用於取用這些暫存器值的指令包括在由二進制轉譯器所輸出的程式碼內以縮短所檢測之暫存器值之壽命的技術和配置。一些實作可係使用二進制轉譯器來檢測具有長壽命的暫存器值,並將指令包括在經轉譯程式碼內以縮短所檢測之暫存器值的壽命。對於長壽暫存器值的檢測可係奠基於:(1)在轉譯前先對程式碼作分析;(2)對經轉譯程式碼的分析;(3)有關經轉譯程式碼的運行時間資訊,或(4)前述之任何組合。
二進制轉譯是可用來創造出原本可執行於一個以處理器為基礎之平台上的在轉譯後可用於以另一個處理器為基礎之平台的一個二進制程式的一個版本的一種技術。例如,一個二進制轉譯器可將意欲用於以蘋果公司(Apple®)威力晶片(PowerPC)處理器為基礎的一個程式轉換成可執行於以英特爾公司(Intel®)Core Duo®處理器為基礎的蘋果平台上的一個程式。然而,當於本文中使用時,不應將二進制轉譯解釋為是受限於將意欲要在一第一平台上執行的程式轉換成可執行於一第二平台上的程式。相反地,當於本文中使用時,二進制轉譯係包括對於一個二進制程式的任何重寫行為,例如對已經可在一個執行平台上執行的一個程式的動態最佳化。因此,於本文中,經轉譯的程式碼係指已經受到轉換以在一個不同平台上使 用的程式碼、已經被最佳化的程式碼、或已經被轉換並被最佳化的程式碼。
如於上文中所提及的,程式,或程式的一些部份,係可在此軟體被執行時被最佳化(即,在「運行時間」中被最佳化)。這樣的「動態最佳化」可得益於剖析包括有與所執行之程式的這些部份之實際執行有關之許多資訊的資訊。程式碼係可在操作於測試資料上或是在操作於實際末端使用者資料上時被剖析。藉由在末端使用者環境中剖析軟體,所導致的剖析資訊可反映出實際使用圖樣,並且可有助於動態最佳化處理程序。
在一個無限制意味的示範實作中,動態轉譯和利用動態剖析的最佳化可係在兩個階段中進行。第一個階段(例如,一個冷轉譯階段)將用於一第一平台的指令之方塊(例如,一連串的指令)轉譯成用於一第二平台的指令之方塊。這些冷方塊可以有也可以沒有被最佳化,並且係裝備有指令以測量對這些冷方塊之執行的不同面向。例如,裝備指令可對各別冷方塊被執行的次數作計數,或可運算出在一個暫存器值之壽命中發生的循環之數量。應注意,由裝備指令所獲得的結果並不一定是很精確的,其亦可為估算值或近似值。在冷方塊已被執行後(或被執行足量次數以給予合理的可信賴輪廓後),第二階段(例如,一個熱轉譯階段)開始。在熱轉譯階段中,這些冷方塊係利用在執行冷方塊之期間內所產生的輪廓資訊而被最佳化。在一些實作中,這些冷方塊可能並沒有全部都被最佳化, 而是只有一個子集可被最佳化。例如,只有被發現是具有長壽命暫存器值的冷方塊或是常常被執行的冷方塊可從屬於熱轉譯階段最佳化。
示範實作
圖1依據一些實作例示出一個以處理器為基礎之系統100的一個示範框架。系統100是一個以處理器為基礎之系統,其包括一個處理器102、用來儲存可由此處理器執行之資料和程式的一個記憶體104、以及一個儲存單元(例如儲存體106),他們全都藉由一個系統匯流排108而相互連接。處理器102包括一或多個暫存器110和一個微碼單元112。
在一些實作中,體現一個二進制轉譯器114的一個程式可係儲存在儲存體106上、經由系統匯流排108而被載入到記憶體104中、並由處理器102在可能亦被儲存在此碟片系統上(不一定是在記憶體104上)的資料上執行。在一些其他實作中,二進制轉譯器114可係作為韌體而被儲存在處理器102上的微碼單元112中,而非從記憶體104和儲存體106載入。
二進制轉譯器114包括一個分析方塊116、一個檢測方塊118、和一個程式碼轉譯方塊120。大體而言,分析方塊116分析原始程式碼、運行時間資訊和經轉譯程式碼,以產生剖析資訊。檢測方塊118接收所產生的剖析資訊和一個臨界值,並從這些識別出或檢測出具有比此臨界值更長之壽命的暫存器值。程式碼轉譯方塊120使用剖析資訊和由 檢測方塊118所產生的結果來產生經轉譯程式碼。二進制轉譯器114的額外細節係針對圖3而有所描述。
圖2依據一個實作而例示出一個示範處理程序流程200,當中,係檢測出長壽命暫存器值,並將指令包括在經轉譯程式碼內,以縮短其壽命。
於202,要被且/或正被一個動態二進制轉譯器轉譯的程式碼受到分析和剖析,以檢測出具有比臨界時段更長之壽命的暫存器值。如於上文中所述的,此分析和剖析可係利用程式碼而在轉譯、經轉譯程式碼、經轉譯程式碼之運行時間資訊、或其任何組合之前進行。
當於本文中使用時,暫存器值之壽命的範例是:(1)介於此暫存器值被儲存在一個暫存器R中和下一次對暫存器R之取用之間的一個時段,以及(2)在此暫存器值係儲存在內時介於對暫存器R之取用和下一次取用之間的時段。會被檢測為是具有比十個指令之臨界值時段長之壽命的一個暫存器值之範例是於一號指令(1)被儲存在一個暫存器中,並且在,例如,十八號指令(18)之前不會再被取用的一個暫存器值。由於在這個暫存器值的壽命中的指令之數量大於十,所以此暫存器值會被檢測為是具有比臨界時段長的壽命。當於本文中使用時,係以最廣的方式來賦義對一個暫存器之取用,因為此暫存器值係以某種方式被使用,(即,被讀取、被移動、被複製、在一個操作中被使用等等)另外,於本文中,暫存器值之壽命和臨界時段可能係以介於原始程式碼的兩個點之間的指令之數量的 方式來論述。然而,這是為了要簡化本文中之論述,並且不應被解釋為是一種限制。暫存器值之壽命和臨界時段可係藉由可被用作對介於執行程式碼的兩個點之間的一個時段之指示的任何度量來量測,例如介於這兩個點之間的秒數、在經轉譯程式碼中介於這兩個點之間的指令數、在這兩個點之間退役的指令數、或在這兩個點之間發生的時鐘週期數。此外,在一些實作中,臨界時段可係一個可程式規劃臨界。此可程式規劃臨界可基於各種條件而變化,例如電壓位準、執行電腦之高度、周遭或內部溫度、以及以市場區隔為基礎的靜默資料訛誤FIT目標。
於204,對於被檢測為具有比臨界長之壽命的一個暫存器值,會致使對儲存此暫存器值的暫存器之取用的至少一個指令係在此臨界時段之期間內的一個點或在此臨界時段之末端被包括在經轉譯程式碼中。繼續前面的在一號指令(1)被儲存且在十八號指令(18)之前不會再被取用的暫存器值之範例,要將此暫存器值複製到一個臨時位置的一個指令可係在十號指令(10)之前或之後被插入,以確保此暫存器之壽命受限於十個或更少個指令。
圖3依據一個實作,例示出一個示範邏輯配置300的一個方塊圖。邏輯配置300可係被實施為硬體的各被組配來進行一或多個功能的數個部件、可係被實施在當中有一或多個程式被用來進行這些不同功能的軟體或韌體中、或可係為硬體、韌體和/或軟體的組合。為便論述,係將二進制轉譯器114作為儲存在一個電腦可讀儲存媒體上的一組 軟體常式來論述。
在操作上,分析方塊116分析原始程式碼302、運行時間資訊304、和經轉譯程式碼306,以產生剖析資訊308。剖析資訊308可係利用動態剖析而以於上文中所論述的方式產生。此剖析資訊並不受限於任何特定測量法或論據,而僅簡單提供由檢測方塊118和程式碼轉譯方塊120所需的資訊。
檢測方塊118接收剖析資訊308和一個臨界值310。從這些當中,檢測方塊118識別出或檢測出具有比臨界310長之壽命的暫存器值。檢測方塊118接著輸出檢測結果312,包括對於所檢測到的暫存器值的識別、對於要插入要取用儲存所檢測到之暫存器值的暫存器的指令的位置之指示、和/或可由程式碼轉譯方塊120使用以將要在臨界時段內取用儲存所檢測到之暫存器值的暫存器的指令包括在內的任何資訊。
程式碼轉譯方塊120使用剖析資訊308和檢測結果312來產生經轉譯程式碼306。在產生經轉譯程式碼306的過程中,程式碼轉譯方塊120可(1)將原始程式碼302從可在一第一平台上執行的程式碼轉譯成可在一第二平台上執行的程式碼;(2)若原始程式碼已可由執行平台執行,便將原始程式碼302最佳化;(3)將經轉譯程式碼306最佳化;(4)在經轉譯且/或經最佳化的程式碼中插入指令以在臨界時段中取用儲存所檢測到之長壽命暫存器值的這些暫存器;或(5)前述幾項當中的一個組合。
在替代實作中,檢測方塊118可被整合到分析方塊116中,或者是,檢測方塊118可獨立於分析方塊116和剖析資訊308而接收原始程式碼302、運行時間資訊304、經轉譯程式碼306和臨界310,並檢測長壽命暫存器值。
圖4、5和6依據一些實作而例示出二進制轉譯器114的示範輸入和輸出。為簡化說明,在圖4、5和6的這些範例中,係假設原始程式碼已經、不需要、或是將不會從一個平台被轉譯到另一個平台或被最佳化。因此,只有對長壽命暫存器值的檢測和為了縮短暫存器值壽命而對指令之容括會被論述。此外,在有關於圖4、5和6的論述中,臨界時段是介於程式碼中之兩個點之間的指令之數量。
圖4例示出二進制轉譯器114的一個示範輸入和輸出,當中,對於二進制轉譯器114的參數400是為二(2)的臨界時段,並且被用來縮短長暫存器值壽命的取用類型是「讀取」動作(即,將暫存器值載入到一個臨時位置)。詳言之,此二進制轉譯器接收原始程式碼402,並利用參數400而輸出經轉譯程式碼404。
在操作上,二進制轉譯器114分析原始程式碼402,以判定暫存器值的壽命,並檢測出具有比臨界時段長之壽命的暫存器值。如於圖4中所例示的,暫存器值V的壽命406是六。詳言之,在儲存暫存器r中之值V與要取用暫存器r的下一個指令(將值V複製到暫存器g中)之間有六個指令(I1、I2、I3、I4、I5和I6)發生。因此,暫存器值V被檢測為是一個長壽命暫存器值。
基於此檢測,二進制轉譯器114將指令408包括在經轉譯程式碼404中。指令408致使儲存在暫存器r中的值V在指令I2與I3之間被讀取到暫存器Tmp中,並再次在指令I4與I5之間被讀取到暫存器Tmp中。因此,暫存器值V的壽命被縮減到在儲存和/或取用間之兩個指令的臨界時段。以此方式,可避免由於在原始程式碼402中在暫存器值V之長壽命當中發生的複數個錯誤而無法由奇偶檢測出的靜默資料訛誤,因為在經轉譯程式碼404中,在被縮短的暫存器值V之壽命之期間內比較不可能發生複數個錯誤。
圖5例示出二進制轉譯器114的一個示範輸入和輸出,當中,對於二進制轉譯器114的參數500是為三個指令(3)的臨界時段,並且被用來縮短長暫存器值壽命的取用類型是「移動」動作(即,將暫存器值移動到一個不同暫存器)。詳言之,此二進制轉譯器接收原始程式碼502,並利用參數500而輸出經轉譯程式碼504。
在操作上,二進制轉譯器114分析原始程式碼502,以判定暫存器值的壽命,並檢測出具有比臨界時段長之壽命的暫存器值。如於圖5中所例示的,暫存器值W的壽命506是七。詳言之,在儲存暫存器r中之值W與要取用暫存器r的下一個指令(將值W複製到暫存器g中)之間有七個指令(I1、I2、I3、I4、I5、I6和I7)發生。因此,暫存器值W被檢測為是一個長壽命暫存器值。
基於此檢測,二進制轉譯器114將指令508和510包括在經轉譯程式碼504中。指令508致使值W在指令I3與I4 之間被移動到暫存器Tmp1。接下來,由於在指令508和暫存器值W之壽命的原始末端之間的指令之數量為四(這大於為三的臨界),所以二進制轉譯器114插入另一個指令510,以將值W從Temp1移動到Temp2。因為四個指令的壽命不是為三之臨界的倍數,所以二進制轉譯器114可從於臨界時段之末端插入指令510改變成更平均地分散此暫存器值之壽命。這在經轉譯程式碼504中係以在指令I5和I6之間而非在臨界時段之末端(在指令I6和I7之間)置放指令510來示出。
在暫存器值W之壽命的原始末端,指令512被包括在經轉譯程式碼504中。指令512係從暫存器Temp2,而非從暫存器r,將暫存器值W載入到暫存器g中。因此,暫存器值W的壽命可免於超出在取用之間的三個指令的臨界時段。此外,對於「移動」的使用進一步可使任何暫存器免於甚至是將一個暫存器值儲存比臨界時段更長的時間。以此方式,可避免由於在原始程式碼502中在暫存器值W之長壽命當中發生複數個錯誤而無法由奇偶檢測出的靜默資料訛誤,因為在經轉譯程式碼504中,在被縮短的暫存器值W之壽命之期間內比較不可能發生複數個錯誤,也因為任何給定暫存器儲存暫存器值W的時段已被縮減。
如於上文中所論述的,在原始程式碼502中,暫存器值W的壽命之前是大於臨界,而非為臨界的倍數。為了處理這個,二進制轉譯器114插入了複數個取用指令,並將原始程式碼502中之暫存器值W之壽命的最末時段細分 成小於臨界的數個時段,以使所插入之取用平均分佈。然而,本發明之實作並不受限於這種方式。暫存器值之長壽命被細分的方式可依據實作之細節而被客製化。例如,在較不具侵略性的一個實作中,暫存器值壽命被縮短到實質上比檢測臨界值長的時段。簡言之,有鑑於本文中所提供之揭示,對於熟習本技藝之一般知識者而言,會有在縮短長暫存器值壽命之方式上的許多變化是很明顯可見的。
圖6例示出二進制轉譯器114的一個示範輸入和輸出,當中,對於二進制轉譯器114的參數500是為三個指令(3)的臨界時段,並且被用來縮短長暫存器值壽命的取用類型是「移動到記憶體」動作(即,將暫存器值移動到快取記憶體或系統記憶體)。詳言之,此二進制轉譯器接收原始程式碼602,並利用參數600而輸出經轉譯程式碼604。
在一些情況中,要將暫存器值保持在暫存器檔案中,將暫存器值移動到快取記憶體或移動到系統記憶體可能會是較為如意的。例如,在非常長壽命暫存器值的事例中,由於在那個壽命中包括有許多「讀取」和「移動」類型的取用所產生的常態性負擔可能會比由於將值移動到快取記憶體或系統記憶體中並接著移回暫存器檔案所產生的常態性負擔還要大。因為快取記憶體和系統記憶體係使用比典型上針對暫存器所使用的奇偶保護更為強健的錯誤檢測和錯誤校正能力,所以在快取記憶體和系統記憶體中的值可具有長壽命,並較少機會有像是靜默資料訛誤這樣的錯誤。
在操作上,二進制轉譯器114分析原始程式碼502,以判定暫存器值的壽命,並檢測出具有比臨界時段長之壽命的暫存器值。如於圖6中所例示的,暫存器值X的壽命606是八。詳言之,在儲存暫存器r中之值X與要取用暫存器r的下一個指令(將值X複製到暫存器g中)之間有八個指令(I1、I2、I3、I4、I5、I6、I7和I8)發生。因此,暫存器值X被檢測為是一個長壽命暫存器值。
基於此檢測,二進制轉譯器114將指令608和610包括在經轉譯程式碼604中。指令608致使值X在指令I1之前被移動到記憶體位置M[k]。指令610係被包括在暫存器X之壽命的原始末端處,其致使暫存器值X從記憶體位置M[k]被載入到暫存器g中。因此,暫存器值X的壽命可免於在取用之間超出三個指令的臨界時段。以此方式,可避免由於在原始程式碼502中在暫存器值X之長壽命當中發生複數個錯誤而無法由奇偶檢測出的靜默資料訛誤。此外,對於「移動到記憶體」取用類型的使用亦可移除對於可能會對經轉譯程式碼604之效能造成嚴重衝擊的複數個「讀取」和「移動」類型取用的需求。
在前面的說明中,為作說明,係提出許多特定細節,以提供對所描述之實作的通盤瞭解,然而,熟於此技者會可識出,係可在沒有這些特定細節的情況下實施許多其他實作。
雖然已於本文中例示出數個範例以作論述之用,亦有許多其他組態可供使用,並且因此,本文中之實 作並不受限於任何特定組態或配置。例如,本文中之論述係有關由二進制轉譯器之特定部件輸出和接收的信號。這不應被看作是一項限制,因為通訊不一定要是逕直的,並且這些特定部件也不一定要是分開的功能性單元。有鑑於在本文中所提供的揭示,對於熟於此技者而言,這些和其他變化會是明顯可見的。
於本文中所描述的這些處理程序僅是供論述所用的範例。有鑑於本文中之揭示,對於熟於此技者而言,許多其他變化會是明顯可見的。此外,雖然本文中之揭示已針對對於本文中之技術和處理程序的執行而提出適當框架、結構和環境的數個範例,本文中之實作並不受限於所示出和論述的這些特定範例。
於本文中所例示的這些處理程序係作為在一個邏輯流程圖中的操作之集合而示出,其代表了一連串的操作,這些操作中的一些或全部可係實施在硬體、軟體或其當中之組合中。在軟體的情境中,這些方塊係代表儲存在當由一或多個處理器執行時可進行所載述之操作的一或多個電腦可讀取媒體上的電腦可執行指令。一般而言,電腦可執行指令包括常式、程式、物件、部件、資料結構、和進行特定功能或實施特定抽象資料類型的其他諸如此類者。並不欲使描述這些操作的順序被解釋成是一種限制。任何數量的所描述方塊都可被以任何順序和/或平行地組合以實施此處理程序,並非所有的方塊都需要被執行。
示範系統架構
圖7例示出一個系統700之示範架構的選擇部件,作為可在當中運作一些實作的環境的一個範例。系統700可包含任何各式各樣的裝置,在此列舉出一些非限制性範例,例如,桌上型運算裝置、膝上型運算裝置、輸入板運算裝置、隨身型易網機運算裝置、無線運算裝置、或伺服器運算裝置。
系統700可包括在一或多個處理器(例如處理器704)中的一或多個核心702、一個時鐘產生器706、一個記憶體708(例如,隨機存取記憶體(random access memory,RAM))、一個輸入/輸出控制集線器710、和一個電源712(例如,一個電池或一個電源供應器)。處理器704可包括單一個701或複數個核心702-1、...、702-N(其中N是>1的一個整數),例如一第一核心702-1、和上至並包括第N個核心702-N的一或多個額外核心。處理器704可包括一個記憶體控制器714,以致能對記憶體708的取用(例如,從中讀取或寫入)。在一些實作中,記憶體708和大容量儲存體716中之至少一者可包括可儲存指令,此等指令在由處理器704執行時會致使處理器704進行二進制轉譯器114之功能。
時鐘產生器706可產生一個時鐘信號,此時鐘信號為對於處理器704之這N個核心702中之一或多者的作業頻率的基礎。例如,這N個核心702中之一或多者可係操作於由時鐘產生器706所產生的時鐘信號之倍數。
輸入/輸出控制集線器710可耦接至大容量儲存體716。大容量儲存體716可包括一或多個非依電性儲存裝 置,例如磁碟驅動器、固體狀態驅動機、及其他諸如此類者。在大容量儲存體716中可係儲存有一個作業系統718。
輸入/輸出控制集線器710可耦接至一個網路埠720。此網路埠720可使系統700能夠經由網路722而與其他裝置通訊。網路722可包括複數個網路,例如纜線網路(例如,公用交換電話網路和其他諸如此類者)、無線網路(例如,802.11、分碼多重接取(code division multiple access,CDMA)、全球移動系統(global system for mobile,GSM)、長程演進(Long Term Evolution,LTE)及其他諸如此類者)、其他類型的通訊網路、或當中之任何組合。輸入/輸出控制集線器710可耦接至能夠顯示文字、圖形及其他諸如此類者的一個顯示裝置724。
當述於本中文時,處理器704可包括複數個運算單元或複數個核心。係可將處理器704實施為一或多個微處理器、微電腦、微控制器、數位信號處理器、中央處理單元、狀態機、邏輯電路、和/或基於操作指令而操縱信號的任何裝置。除了其他能力以外,處理器704尚可被組配來提取和執行儲存在記憶體708或其他電腦可讀取媒體上的電腦可讀取指令。
記憶體708是用於儲存由處理器704執行以進行於上文中所述之各種功能之指令的電腦儲存媒體的一個範例。大體上,記憶體708可包括依電性記憶體,也可包括非依電性記憶體(例如RAM、ROM或其他諸如此類者)。於本文中可係將記憶體708稱作記憶體或電腦儲存媒體,並且 記憶體708可係能夠將電腦可讀取且處理器可執行的程式指令儲存為可由作為被組配來實行於本文中之實作中所描述的操作和功能的一個特定機器的處理器704執行之電腦程式碼的非依電性媒體。
此外,本揭示已提供如所描述和如於圖式中所例示的各種示範實作。然而,本揭示並不受限於在本文中所描述和例示的這些實作,而是,本揭示係可延伸至其他實作,如熟於此技者所會熟知或將會熟知的。於本說明書中對於「一個實作」、「此實作」、「這些實作」或「一些實作」的指涉係指所描述的一個特定特徵、結構或特性係被包括在至少一個實作中,並且這些詞語在本說明書中各處之出現並不一定全係指同一個實作。
結論
雖然已以特定於結構性特徵和/或方法學動作的語言來描述本主旨,於後附申請專利範圍中所界定之主旨並不受限於在上文中所描述的這些具體特徵或動作。而是,在上文中所描述的這些具體特徵或動作係作為實施申請專利範圍的示範形式而被揭露。本揭示意欲要涵蓋對於所揭露之實作的任何和所有改編或改變,並且後附申請專利範圍不應被解釋成是受限於在本說明書中所揭露的具體實作。相反地,本文件之範疇係要整個由後附申請專利範圍以及此等申請專利範圍所被賦予的等效體之完整範圍來判定。
100‧‧‧系統
102‧‧‧處理器
104‧‧‧記憶體
106‧‧‧儲存體
108‧‧‧系統匯流排
110‧‧‧暫存器
112‧‧‧微碼單元
114‧‧‧二進制轉譯器
116‧‧‧分析方塊
118‧‧‧檢測方塊
120‧‧‧程式碼轉譯方塊

Claims (22)

  1. 一種處理器,其包含:多個暫存器;以及一個指令產生邏輯,用於產生至少一個指令以週期性地從該等多個暫存器中之至少一個暫存器中讀取資訊,以檢測該等多個暫存器中之該至少一個暫存器是否含有有錯(erroneous)資訊。
  2. 如申請專利範圍第1項之處理器,其進一步包含:一個檢測邏輯,用以至少部份基於正由一個二進制轉譯器所轉譯之程式碼的至少一部分而檢測出該等多個暫存器中之要儲存在比一個臨界時段長之時間內將不會被取用之資訊的至少一個暫存器。
  3. 如申請專利範圍第2項之處理器,其中:該指令產生邏輯係用於產生該至少一個指令以週期性地從由該檢測邏輯所檢測出的該至少一個暫存器中讀取資訊。
  4. 如申請專利範圍第2項之處理器,其進一步包含:一個分析邏輯,用以分析正由該二進制轉譯器所轉譯之該程式碼的至少一部分;並且其中該檢測邏輯係用於至少部份基於由該分析邏輯所進行之分析的結果而檢測出要儲存在比該臨界時段長之時間內將不會被取用之該資訊的該至少一個暫存器。
  5. 如申請專利範圍第2項之處理器,其中:該檢測邏輯係用於至少部份基於由該二進制轉譯器所作之對該程式碼之至少一部分的動態剖析而檢測出要儲存在比該臨界時段長之時間內將不會被取用之該資訊的該至少一個暫存器。
  6. 如申請專利範圍第2項之處理器,其中:該臨界時段是可程式規劃的。
  7. 一種系統,其包含:一個記憶體;耦接至該記憶體的一個處理器,該處理器包含:多個暫存器;及一個指令產生邏輯,用於產生至少一個指令以週期性地將資訊從該等多個暫存器中之至少一個暫存器移動至該等多個暫存器中之至少一個其他暫存器,以有助於避免該資訊變得訛誤(corrupt)。
  8. 如申請專利範圍第7項之系統,該處理器進一步包含:一個檢測邏輯,用以至少部份基於正由一個二進制轉譯器所轉譯之程式碼的至少一部分而檢測出該等多個暫存器中之要儲存在比一個臨界時段長之時間內將不會被取用之資訊的至少一個暫存器。
  9. 如申請專利範圍第8項之系統,其中:該指令產生邏輯產生該至少一個指令以週期性地從由該檢測邏輯所檢測出的該至少一個暫存器中移動資訊。
  10. 如申請專利範圍第8項之系統,該處理器進一步包含:一個分析邏輯,用以分析正由該二進制轉譯器所轉譯之該程式碼的至少一部分,並且其中該檢測邏輯係用於至少部份基於由該分析邏輯所進行之分析的結果而檢測出要儲存在比該臨界時段長之時間內將不會被取用之該資訊的該至少一個暫存器。
  11. 如申請專利範圍第8項之系統,其中:該檢測係至少部份基於由該二進制轉譯器所作之對該程式碼之至少一部分的動態剖析而進行。
  12. 如申請專利範圍第8項之系統,其中:該臨界時段是可程式規劃的。
  13. 一種處理器,其包含:多個暫存器;以及一個邏輯,用於至少部份基於對於被儲存在該等多個暫存器中之至少一者中的資訊將會被儲存在該等多個暫存器中之該至少一者中達至少一個臨界時段的判定,而致使被儲存在該等多個暫存器中之該至少一者中的該資訊被儲存到一個記憶體位置中。
  14. 如申請專利範圍第13項之處理器,其進一步包含:一個檢測邏輯,用以至少部份基於正由一個二進制轉譯器所轉譯之程式碼的至少一部分而檢測出該等多個暫存器中之要儲存在比一個臨界時段長之時間內將不會被取用之資訊的至少一個暫存器。
  15. 如申請專利範圍第14項之處理器,其中:該指令產生邏輯產生至少一個指令,以致使被儲存在由該檢測邏輯所檢測出的該至少一個暫存器中的資訊被儲存到一個記憶體位置中。
  16. 如申請專利範圍第14項之處理器,其進一步包含:一個分析邏輯,用以分析正由該二進制轉譯器所轉譯之該程式碼的至少一部分;並且其中該檢測邏輯至少部份基於由該分析邏輯所進行之分析的結果而檢測出要儲存在比該臨界時段長之時間內將不會被取用之該資訊的該至少一個暫存器。
  17. 如申請專利範圍第14項之處理器,其中:該檢測係至少部份基於由該二進制轉譯器所作之對該程式碼之至少一部分的動態剖析而進行。
  18. 如申請專利範圍第14項之處理器,其中:該臨界時段是可程式規劃的。
  19. 一種方法,其包含下列步驟:由包含有多個暫存器的一個處理器,至少部份基於正由一個二進制轉譯器所轉譯之程式碼的至少一個程式碼片段而檢測出一個暫存器,該暫存器要儲存在比一個臨界時段長之時間內將不會被取用的一個暫存器值;以及產生至少一個指令,以在該暫存器值之壽命之期間內致使對所檢測出之該暫存器的取用。
  20. 如申請專利範圍第19項之方法,其中: 該臨界時段是可程式規劃的。
  21. 一種維持指令的電腦可讀取媒體,該等指令要由處理器執行以致使此處理器進行包含下列之操作:至少部份基於正由一個二進制轉譯器所轉譯之程式碼的至少一個程式碼片段而檢測出一個暫存器,該暫存器要儲存在比一個臨界時段長之時間內將不會被取用的一個暫存器值;以及致使該二進制轉譯器在要由該二進制轉譯器輸出的至少一個經轉譯程式碼片段中包括有用於在該暫存器值之壽命之期間內致使對所檢測出之該暫存器之取用的至少一個指令。
  22. 如申請專利範圍第21項之電腦可讀取媒體,其中:該臨界時段是可程式規劃的。
TW101149321A 2011-12-30 2012-12-22 透過二進制轉譯之暫存器錯誤保護技術 TWI551982B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/068051 WO2013101165A1 (en) 2011-12-30 2011-12-30 Register error protection through binary translation

Publications (2)

Publication Number Publication Date
TW201346533A true TW201346533A (zh) 2013-11-16
TWI551982B TWI551982B (zh) 2016-10-01

Family

ID=48698399

Family Applications (3)

Application Number Title Priority Date Filing Date
TW105121003A TWI603192B (zh) 2011-12-30 2012-12-22 透過二進制轉譯之暫存器錯誤保護技術
TW106127133A TW201820138A (zh) 2011-12-30 2012-12-22 透過二進制轉譯之暫存器錯誤保護技術
TW101149321A TWI551982B (zh) 2011-12-30 2012-12-22 透過二進制轉譯之暫存器錯誤保護技術

Family Applications Before (2)

Application Number Title Priority Date Filing Date
TW105121003A TWI603192B (zh) 2011-12-30 2012-12-22 透過二進制轉譯之暫存器錯誤保護技術
TW106127133A TW201820138A (zh) 2011-12-30 2012-12-22 透過二進制轉譯之暫存器錯誤保護技術

Country Status (3)

Country Link
US (2) US9405647B2 (zh)
TW (3) TWI603192B (zh)
WO (1) WO2013101165A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10558437B1 (en) * 2013-01-22 2020-02-11 Altera Corporation Method and apparatus for performing profile guided optimization for high-level synthesis
US9448788B1 (en) * 2014-01-22 2016-09-20 SecondWrite LLC Binary rewriting system
GB2539455A (en) * 2015-06-16 2016-12-21 Nordic Semiconductor Asa Memory watch unit
US10296464B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for dynamic profiling in a processor

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185667B1 (en) * 1998-04-09 2001-02-06 Teranex, Inc. Input/output support for processing in a mesh connected computer
US7219167B2 (en) * 2003-09-25 2007-05-15 Intel Corporation Accessing configuration registers by automatically changing an index
USRE45632E1 (en) * 2005-01-03 2015-07-28 O'shantel Software L.L.C. Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support
US7392433B2 (en) * 2005-01-25 2008-06-24 International Business Machines Corporation Method and system for deciding when to checkpoint an application based on risk analysis
US7689804B2 (en) 2006-12-20 2010-03-30 Intel Corporation Selectively protecting a register file
US7757040B2 (en) * 2007-01-30 2010-07-13 International Business Machines Corporation Memory command and address conversion between an XDR interface and a double data rate interface
US8352812B2 (en) * 2007-08-03 2013-01-08 Intel Corporation Protecting data storage structures from intermittent errors
US8381032B2 (en) * 2008-08-06 2013-02-19 O'shantel Software L.L.C. System-directed checkpointing implementation using a hypervisor layer
US8489919B2 (en) * 2008-11-26 2013-07-16 Arizona Board Of Regents Circuits and methods for processors with multiple redundancy techniques for mitigating radiation errors
US8464035B2 (en) * 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state
US8560924B2 (en) * 2010-01-05 2013-10-15 International Business Machines Corporation Register file soft error recovery
US8966027B1 (en) * 2010-05-24 2015-02-24 Amazon Technologies, Inc. Managing replication of computing nodes for provided computer networks
US9043580B2 (en) * 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US8826257B2 (en) * 2012-03-30 2014-09-02 Intel Corporation Memory disambiguation hardware to support software binary translation

Also Published As

Publication number Publication date
WO2013101165A1 (en) 2013-07-04
TWI603192B (zh) 2017-10-21
US20160342495A1 (en) 2016-11-24
US20130318401A1 (en) 2013-11-28
TW201820138A (zh) 2018-06-01
TW201714084A (en) 2017-04-16
US9405647B2 (en) 2016-08-02
TWI551982B (zh) 2016-10-01

Similar Documents

Publication Publication Date Title
Dixit et al. Silent data corruptions at scale
Hari et al. SASSIFI: An architecture-level fault injection tool for GPU application resilience evaluation
Hort et al. A survey of performance optimization for mobile applications
US9990212B2 (en) Testing and repair of a hardware accelerator image in a programmable logic circuit
US9400732B2 (en) Performance regression testing in presence of noise
US8196119B2 (en) Computer program product of code coverage utilizing efficient dynamic mutation of logic (EDML)
US8001432B2 (en) Uninitialized memory detection using error correction codes and built-in self test
US8898049B2 (en) System level power profiling of embedded applications executing on virtual multicore system-on-chip platforms
JP2008546123A (ja) ビット・レベル・エラーの計数に基づくエラー緩和の選択的アクティブ化
US9201993B2 (en) Goal-driven search of a stochastic process using reduced sets of simulation points
TWI551982B (zh) 透過二進制轉譯之暫存器錯誤保護技術
US20110016455A1 (en) Power Profiling for Embedded System Design
JP4651620B2 (ja) 電力算出装置、電力算出方法、耐タンパ性評価装置及び耐タンパ性評価方法
US20100036981A1 (en) Finding Hot Call Paths
US9047096B2 (en) Real-time temperature sensitive machine level code compilation and execution
CN111338864B (zh) 内存问题检测方法、装置、计算机设备及存储介质
Reya et al. GreenPy: evaluating application-level energy efficiency in Python for green computing
US9753084B2 (en) Debug circuit, semiconductor device, and debug method
US20160357655A1 (en) Performance information generating method, information processing apparatus and computer-readable storage medium storing performance information generation program
US8756580B2 (en) Instance-based field affinity optimization
US20130142301A1 (en) Floating-point event counters with automatic prescaling
JP2016212574A (ja) デバッグ回路、半導体装置及びデバッグ方法
Tompazi et al. Instruction-aware learning-based timing error models through significance-driven approximations
Tabkhi et al. Application-specific power-efficient approach for reducing register file vulnerability
Bergaoui et al. Impact of software optimization on variable lifetimes in a microprocessor-based system

Legal Events

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