TWI603192B - 透過二進制轉譯之暫存器錯誤保護技術 - Google Patents
透過二進制轉譯之暫存器錯誤保護技術 Download PDFInfo
- Publication number
- TWI603192B TWI603192B TW105121003A TW105121003A TWI603192B TW I603192 B TWI603192 B TW I603192B TW 105121003 A TW105121003 A TW 105121003A TW 105121003 A TW105121003 A TW 105121003A TW I603192 B TWI603192 B TW I603192B
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- profile
- translated
- translated code
- register
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/263—Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation 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)
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 (18)
- 一種二進制轉譯器,包含:分析邏輯,其用以分析藉由該二進制轉譯器所轉譯的程式碼的至少一部分以產生設定檔;檢測邏輯,其用以至少部份基於該設定檔檢測處理器核心之複數個暫存器中的至少一個暫存器,該處理器核心之複數個暫存器中的至少一個暫存器係用以儲存在比一個臨界時段長之時間內將不會被取用之資訊;以及程式碼轉譯邏輯,其用以使用該設定檔及該檢測的至少一暫存器資訊產生經轉譯的程式碼。
- 如申請專利範圍第1項所述之二進制轉譯器,其中該檢測邏輯係用以接收該設定檔以及代表該臨界時段的臨界值。
- 如申請專利範圍第2項所述之二進制轉譯器,其中該檢測邏輯係用以輸出該檢測的暫存器值的識別以及用於***至少一指令以存取儲存該檢測的暫存器值的該些暫存器之位置的指示。
- 如申請專利範圍第1項所述之二進制轉譯器,其中該分析邏輯用以進一步利用運行時間資訊以及經轉譯的程式碼以產生該設定檔。
- 如申請專利範圍第1項所述之二進制轉譯器,其中當產生該經轉譯的程式碼時,該程式碼轉譯邏輯係用以最佳化該經轉譯的程式碼。
- 如申請專利範圍第1項所述之二進制轉譯器,其 中當產生該經轉譯的程式碼時,該程式碼轉譯邏輯係用以***指令在該經轉譯的程式碼中以在該臨界時段期間存取儲存該檢測的長壽命暫存器值之該檢測的暫存器。
- 一種方法,包含:分析由二進制轉譯器轉譯的程式碼的至少一部分以產生設定檔;至少部份基於該設定檔檢測處理器核心之複數個暫存器中的至少一個暫存器,該處理器核心係用以儲存在比一個臨界時段長之時間內將不會被取用之資訊;以及使用該設定檔及該檢測的至少一暫存器資訊產生經轉譯的程式碼。
- 如申請專利範圍第7項所述之方法,更包含:接收該設定檔以及代表該臨界時段的臨界值。
- 如申請專利範圍第8項所述之方法,其中該檢測之輸出為該檢測的暫存器值的識別以及用於***至少一指令以存取儲存該檢測的暫存器值的該些暫存器之位置的指示。
- 如申請專利範圍第7項所述之方法,其中該分析利用運行時間資訊以及經轉譯的程式碼以產生該設定檔。
- 如申請專利範圍第7項所述之方法,其中當產生該經轉譯的程式碼時,最佳化該經轉譯的程式碼。
- 如申請專利範圍第7項所述之方法,其中當產生該經轉譯的程式碼時,***指令在該經轉譯的程式碼中以在該臨界時段期間存取儲存該檢測的長壽命暫存器值之該 檢測的暫存器。
- 一種維持指令的非暫態電腦可讀取媒體,該等指令由處理器執行以導致該處理器執行包含下列之操作:分析由二進制轉譯器轉譯的程式碼的至少一部分以產生設定檔;至少部份基於該設定檔檢測處理器核心之複數個暫存器中的至少一個暫存器,該處理器核心係用以儲存在比一個臨界時段長之時間內將不會被取用之資訊;以及使用該設定檔及該檢測的至少一暫存器資訊產生經轉譯的程式碼。
- 如申請專利範圍第13項所述之非暫態電腦可讀取媒體,更包含:接收該設定檔以及代表該臨界時段的臨界值。
- 如申請專利範圍第14項所述之非暫態電腦可讀取媒體,其中該檢測之輸出為該檢測的暫存器值的識別以及用於***至少一指令以存取儲存該檢測的暫存器值的該些暫存器之位置的指示。
- 如申請專利範圍第13項所述之非暫態電腦可讀取媒體,其中該分析利用運行時間資訊以及經轉譯的程式碼以產生該設定檔。
- 如申請專利範圍第13項所述之非暫態電腦可讀取媒體,其中當產生該經轉譯的程式碼時,最佳化該經轉譯的程式碼。
- 如申請專利範圍第13項所述之非暫態電腦可讀 取媒體,其中當產生該經轉譯的程式碼時,***指令在該經轉譯的程式碼中以在該臨界時段期間存取儲存該檢測的長壽命暫存器值之該檢測的暫存器。
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 |
---|---|
TW201714084A TW201714084A (en) | 2017-04-16 |
TWI603192B true TWI603192B (zh) | 2017-10-21 |
Family
ID=48698399
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105121003A TWI603192B (zh) | 2011-12-30 | 2012-12-22 | 透過二進制轉譯之暫存器錯誤保護技術 |
TW101149321A TWI551982B (zh) | 2011-12-30 | 2012-12-22 | 透過二進制轉譯之暫存器錯誤保護技術 |
TW106127133A TW201820138A (zh) | 2011-12-30 | 2012-12-22 | 透過二進制轉譯之暫存器錯誤保護技術 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101149321A TWI551982B (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)
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 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW424183B (en) * | 1998-04-09 | 2001-03-01 | Lockheed Corp | Global input/output support for a mesh connected computer |
TWI245222B (en) * | 2003-09-25 | 2005-12-11 | Intel Corp | Accessing configuration registers by automatically changing an index |
US20060168473A1 (en) * | 2005-01-25 | 2006-07-27 | International Business Machines Corporation | Method and system for deciding when to checkpoint an application based on risk analysis |
US20080183925A1 (en) * | 2007-01-30 | 2008-07-31 | International Business Machines Corporation | Memory Command and Address Conversion Between an XDR Interface and a Double Data Rate Interface |
US20090037783A1 (en) * | 2007-08-03 | 2009-02-05 | Xavier Vera | Protecting data storage structures from intermittent errors |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US7689804B2 (en) | 2006-12-20 | 2010-03-30 | Intel Corporation | Selectively protecting a register file |
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 |
-
2011
- 2011-12-30 WO PCT/US2011/068051 patent/WO2013101165A1/en active Application Filing
- 2011-12-30 US US13/994,697 patent/US9405647B2/en not_active Expired - Fee Related
-
2012
- 2012-12-22 TW TW105121003A patent/TWI603192B/zh not_active IP Right Cessation
- 2012-12-22 TW TW101149321A patent/TWI551982B/zh not_active IP Right Cessation
- 2012-12-22 TW TW106127133A patent/TW201820138A/zh unknown
-
2016
- 2016-08-02 US US15/226,854 patent/US20160342495A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW424183B (en) * | 1998-04-09 | 2001-03-01 | Lockheed Corp | Global input/output support for a mesh connected computer |
TWI245222B (en) * | 2003-09-25 | 2005-12-11 | Intel Corp | Accessing configuration registers by automatically changing an index |
US20060168473A1 (en) * | 2005-01-25 | 2006-07-27 | International Business Machines Corporation | Method and system for deciding when to checkpoint an application based on risk analysis |
US20080183925A1 (en) * | 2007-01-30 | 2008-07-31 | International Business Machines Corporation | Memory Command and Address Conversion Between an XDR Interface and a Double Data Rate Interface |
US20090037783A1 (en) * | 2007-08-03 | 2009-02-05 | Xavier Vera | Protecting data storage structures from intermittent errors |
Also Published As
Publication number | Publication date |
---|---|
US9405647B2 (en) | 2016-08-02 |
US20160342495A1 (en) | 2016-11-24 |
WO2013101165A1 (en) | 2013-07-04 |
TW201820138A (zh) | 2018-06-01 |
TWI551982B (zh) | 2016-10-01 |
TW201346533A (zh) | 2013-11-16 |
US20130318401A1 (en) | 2013-11-28 |
TW201714084A (en) | 2017-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9400732B2 (en) | Performance regression testing in presence of noise | |
US9990212B2 (en) | Testing and repair of a hardware accelerator image in a programmable logic circuit | |
US8001432B2 (en) | Uninitialized memory detection using error correction codes and built-in self test | |
US9201993B2 (en) | Goal-driven search of a stochastic process using reduced sets of simulation points | |
TWI603192B (zh) | 透過二進制轉譯之暫存器錯誤保護技術 | |
US9170919B2 (en) | Apparatus and method for detecting location of source code error in mixed-mode program | |
GB2500080A (en) | Prefetch optimizer tool for controlling hardware and software prefetching | |
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) | 内存问题检测方法、装置、计算机设备及存储介质 | |
US9448909B2 (en) | Randomly branching using performance counters | |
US9753084B2 (en) | Debug circuit, semiconductor device, and debug method | |
US9720037B2 (en) | Debug circuit, semiconductor device, and debug method | |
US8514999B2 (en) | Floating-point event counters with automatic prescaling | |
US8756580B2 (en) | Instance-based field affinity optimization | |
US20160357655A1 (en) | Performance information generating method, information processing apparatus and computer-readable storage medium storing performance information generation program | |
JP2016149155A (ja) | メモリへの読取り又は書込み | |
US20020188889A1 (en) | Performance measurement for embedded systems | |
US9519567B2 (en) | Device, method of generating performance evaluation program, and recording medium | |
US10534691B2 (en) | Apparatus and method to improve accuracy of performance measurement for loop processing in a program code | |
WO2023036076A1 (zh) | 一种软件监测方法以及相关装置 | |
JP6926921B2 (ja) | コンパイルプログラム、コンパイル方法及び並列処理装置 | |
KR20170065845A (ko) | 프로세서 및 제어 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |