TWI416317B - 微處理器以及其所適用之操作、測試、初始化方法 - Google Patents

微處理器以及其所適用之操作、測試、初始化方法 Download PDF

Info

Publication number
TWI416317B
TWI416317B TW099125310A TW99125310A TWI416317B TW I416317 B TWI416317 B TW I416317B TW 099125310 A TW099125310 A TW 099125310A TW 99125310 A TW99125310 A TW 99125310A TW I416317 B TWI416317 B TW I416317B
Authority
TW
Taiwan
Prior art keywords
fuse
microprocessor
fuses
value
control
Prior art date
Application number
TW099125310A
Other languages
English (en)
Other versions
TW201106151A (en
Inventor
G Glenn Henry
Darius D Gaskins
Stephan Gaskins
Terry Parks
Dinesh K Jain
Original Assignee
Via Tech Inc
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 Via Tech Inc filed Critical Via Tech Inc
Publication of TW201106151A publication Critical patent/TW201106151A/zh
Application granted granted Critical
Publication of TWI416317B publication Critical patent/TWI416317B/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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)
  • Microcomputers (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

微處理器以及其所適用之操作、測試、初始化方法
本發明主要相關於微處理器之技術領域,特別係有關於微處理器中之保險絲使用技術。
近代的微處理器中所包含之保險絲係可於微處理器之製造過程中被選擇性地燒熔,且保險絲可根據讀取自其中之控制值而被選擇性地燒熔以控制微處理器之運作。通常而言,當非熔斷保險絲被讀取時會回傳二進制0(binary zero),而當熔斷保險絲被讀取時則會回傳二進制1(binary one)(或者可反向設定)。然而,本發明之發明人觀察到該領域之微處理器所具有之熔斷保險絲卻會改變其值,也就是說,熔斷保險絲會不正確地回傳二進制0,即便其於微處理器之測試階段中會正確地回傳二進制1,這種情況被稱為保險絲重長(re-growing)或保險絲再生長(re-growth),意即熔斷保險絲在微處理器的持續運作過程中可被實質地改變,使其於被讀取時回傳非熔斷值而不是回傳熔斷值。保險絲再生長則端視其值會對微處理器的後續運作造成災難性的結果,此外,由保險絲再生長所引起的問題亦很難在失敗分析中被偵測出來。
美國專利申請案12/609,207敘述針對此問題提出一種使用了錯誤偵測與修正(Error Detection And Correction,EDAC)之保險絲的解決方案,此解決方案中的保險絲是可修正的,也就是大部分的保險絲係設置於由微碼所寫入之控制硬體中,具體而言,該微碼從保險絲讀取數值、於需要時使用錯誤偵測與修正之保險絲去修改該數值、然後將修正後之數值寫入硬體(例如:特定模組暫存器(Model Specific Register,MSR)、特徵控制暫存器(Feature Control Register,FCR)、修補硬體(patch hardware)等)。然而,仍有些保險絲是無法由微碼所修正的,意即,當晶片啟動時,不可修正之保險絲中的數值被直接掃描(scan)至硬體暫存器,而未經過微碼使用錯誤偵測與修正技術去修正該數值。舉例來說,不可修正之保險絲有快取修正保險絲、以及鎖相迴路(Phase Lock Loop,PLL)校正保險絲。在微處理器之一實施例中,微碼無法讀取不可修正之保險絲。
因此,亟需一種方法可以決定不可修正之保險絲是否發生了保險絲再生長狀況。
本發明之一實施例提供了一種微處理器。該微處理器包括了複數第一保險絲以及複數第二保險絲。上述第一保險絲其中一預定數量之保險絲被選擇性地熔斷,且由上述第一保險絲提供複數第一控制值至上述微處理器之第一電路以控制上述微處理器之運作。上述第二保險絲根據上述預定數量之熔斷保險絲而被熔斷。其中上述微處理器於重設時執行以下步驟:讀取上述第一保險絲並計數其中已熔斷之保險絲數量;自上述第二保險絲讀取上述預定數量;比對上述計數數量與讀取自上述第二保險絲之上述預定數量;以及於上述計數數量不同於上述讀取自上述第二保險絲之上述預定數量時避免提取與執行使用者程式指令。
本發明之另一實施例提供了一種操作方法,適用於操作一微處理器。上述操作方法操作包括以下步驟:讀取複數第一保險絲,其中一預定數量之保險絲被選擇性地熔斷,且其中複數第一控制值自上述第一保險絲被提供至一微處理器之第一電路以控制上述微處理器之運作;計數上述第一保險絲中已熔斷之保險絲之數量;自複數第二保險絲讀取上述預定數量,其中上述第二保險絲係根據上述預定數量之已熔斷保險絲而被熔斷;比對上述計數之保險絲數量與上述讀取之預定數量;以及於上述計數之保險絲數量不同於上述讀取之預定數量時避免上述微處理器提取與執行使用者程式指令。
本發明之另一實施例提供了一種微處理器,包括複數第一保險絲以及複數第二保險絲。上述第一保險絲根據一預定值被選擇性地熔斷,其中上述預定值係用以供上述微處理器之電路以控制上述微處理器之運作。上述第二保險絲根據錯誤偵測資訊被選擇性地熔斷,其中上述錯誤偵測資訊係用以偵測上述第一保險絲中之一錯誤,該錯誤指示上述微處理器之一熔斷保險絲回傳一非熔斷二進制值。其中上述微處理器為因應一第一使用者程式指令,而根據來自上述第二保險絲之錯誤偵測資訊決定是否存在上述第一保險絲中之上述錯誤。
本發明之另一實施例提供了一種測試方法,適用於執行一微處理器之一使用者程式啟動之測試。上述測試方法包括以下步驟:於上述微處理器之運作中執行一第一使用者程式指令;以及決定上述微處理器之複數第一保險絲中是否存在一錯誤指示出一熔斷保險絲回傳一非熔斷二進制值,其中上述第一保險絲係根據一預定值被選擇性地熔斷,上述預定值係用以供上述微處理器之電路以控制上述微處理器之運作。其中上述決定步驟係使用來自上述微處理器之複數第二保險絲之錯誤偵測資訊所執行,上述第二保險絲係根據上述錯誤偵測資訊被選擇性地熔斷;其中上述決定步驟之執行係因應上述第一使用者程式指令之執行。
本發明之另一實施例提供了一種測試方法,適用於實地測試一微處理器以決定該微處理器之複數保險絲是否有一或多個已熔斷保險絲於被讀取時回傳非熔斷值。上述測試方法包括以下步驟:因應上述微處理器之一重設而讀取上述保險絲中之一預定數量之保險絲;決定上述預定數量之保險絲是否指示應針對上述保險絲執行測試;於上述預定數量之保險絲指示應針對上述保險絲執行測試時,針對上述保險絲執行測試以決定是否有一或多個已熔斷保險絲於被讀取時不回傳熔斷值而是回傳非熔斷值;以及於上述預定數量之保險絲指示不應針對上述保險絲執行測試時,避免執行上述測試。
本發明之另一實施例提供了一種微處理器,包括複數第一保險絲、複數第二保險絲、一控制硬體、以及一狀態機。上述第一保險絲係根據複數控制值被選擇性地熔斷。上述第二保險絲係根據計算自上述控制值之一錯誤修正值被選擇性地一併熔斷。上述控制硬體係用以接收上述控制值並將上述控制值提供至上述微處理器之電路以控制上述微處理器之運作。上述狀態機係序列地耦接至上述控制硬體、上述第一保險絲、以及第二保險絲,用將上述控制值自上述第一保險絲序列地掃描至上述控制硬體、並將上述控制值與上述錯誤修正值序列地掃描至一第一暫存器。其中上述微處理器係用以執行以下步驟:自上述第一暫存器讀取上述控制值與上述錯誤修正值;使用上述錯誤修正值偵測並修正上述控制值中之一錯誤;將修正之上述控制值寫入一第二暫存器;以及使上述狀態機將修正之上述控制值自上述第二暫存器序列地掃描至上述控制硬體。
本發明之另一實施例提供了一種初始化方法,適用於初始化一微處理器。上述初始化方法包括以下步驟:將複數控制值自複數第一保險絲序列地掃描至上述微處理器之電路以控制上述微處理器之運作,其中上述第一保險絲係根據上述控制值被選擇性地熔斷;將上述控制值與上述錯誤修正值分別自上述第一保險絲與複數第二保險絲序列地掃描至一第一暫存器,其中上述第二保險絲係根據計算自上述控制值之上述錯誤修正值被選擇性地一併熔斷;自上述第一暫存器讀取上述控制值與上述錯誤修正值;使用上述錯誤修正值偵測並修正上述控制值中之一錯誤;將修正之上述控制值寫入一第二暫存器;以及使修正之上述控制值從上述第二暫存器被序列地掃描至一控制硬體。
本發明之另一實施例提供了一種微處理器,包括複數第一保險絲以及複數第二保險絲。上述第一保險絲其中一預定數量之保險絲被選擇性地熔斷,且複數第一控制值自上述第一保險絲被提供至上述微處理器之第一電路以控制上述微處理器之運作。上述第二保險絲係根據上述預定數量之熔斷保險絲以及上述預定數量之一布林補數而被熔斷。其中上述微處理器於重設時執行以下步驟:自上述第二保險絲讀取上述預定數量與上述布林補數;將讀取自上述第二保險絲之上述預定數量進行布林補數運算以產生一結果;比對該結果與讀取自上述第二保險絲之上述布林補數;以及於上述結果不同於讀取自上述第二保險絲之上述布林補數時,避免讀取並執行使用者程式指令。
本發明之另一實施例提供了一種操作方法,適用於操作一微處理器。上述操作方法包括以下步驟:將複數第一控制值自複數第一保險絲提供至上述微處理器之第一電路以控制上述微處理器之運作,其中上述第一保險絲之一預定數量之保險絲被選擇性地熔斷;自複數第二保險絲讀取上述預定數量以及上述預定數量之一布林補數,其中上述第二保險絲係根據上述預定數量之已熔斷保險絲與上述布林補數而被熔斷;將讀取自上述第二保險絲之上述預定數量作布林補數運算以產生一結果;比對上述結果與讀取自上述第二保險絲之上述布林補數;以及於上述結果不同於讀取自上述第二保險絲之上述布林補數時避免上述微處理器提取與執行使用者程式指令。
本發明之實施例係使微處理器之微碼能夠讀取不可修正之保險絲。當微處理器之一部分在製造時,便決定了其中將被熔斷之不可修正之保險絲數量,舉例來說,假設一微處理器的某一部份有1000個不可修正之保險絲,而其中的147個將被熔斷,接著,該熔斷數量被當作簽章熔斷在可修正之保險絲之一集合中,該集合之保險絲係可透過上述錯誤偵測與修正技術由微碼所修正。當微處理器重設(reset)而執行重設微碼時,微處理器讀取所有不可修正之保險絲並計數其中被熔斷之保險絲數量,然後比對計數之數量與讀取自可修正之保險絲之上述簽章(於可修正之保險絲在需要時進行修正之後)。若計數之數量不同於上述簽章,則不允許該部份離開重設程序、或將此錯誤輸出至一軟體可讀取之暫存器。
第1圖係根據本發明所述之微處理器之示意圖。微處理器100包括多個保險絲172,在一實施例中,保險絲172為多晶矽(polysilicon)保險絲,但其它保險絲技術,例如金屬保險絲,亦可應用在本發明之實施例中。保險絲172雖然是實質相同的結構,但邏輯上則可分為兩個群組,即錯誤偵測與修正保險絲132與資料保險絲,而資料保險絲又可再分為可修正資料保險絲152與不可修正資料保險絲192,某一特定的保險絲172是否被配置為資料保險絲或錯誤偵測與修正保險絲132係端視微處理器100的製造者(manufacturer)所使用的錯誤偵測與修正演算法而定。
保險絲172係設定使微處理器100之製造者可於輸入136提供規定電壓(prescribed voltage)以選擇性地去個別熔斷保險絲172。在一實施例中,製造者透過聯合測試行動小組(Joint Test Action Group,JTAG)掃描介面指定(specify)要熔斷哪個保險絲172。在一實施例中,每個保險絲172的一面係接地、而另一面則連接至一主動(active)裝置,例如:微處理器100可讀取之一電晶體。因此,若一保險絲172為非熔斷時,則具有傳導性且可讀取到一低電壓(轉換後則為二進制0);反之,若一保險絲172為已熔斷時,則不具有傳導性且可讀取到一高電壓(轉換後則為二進制1)。在其它實施例中,可使用相反的二進制值轉換法。
雖然保險絲172可於製造過程中被個別熔斷且每個保險絲172構成(constitute)了單一二進制數位(位元),但邏輯上,可修正資料保險絲152則視為單一實體(entity)並具有被熔斷之單一共同(collective)數值,而錯誤偵測與修正保險絲132則視為另一單一實體並具有被熔斷之單一共同數值。製造者使用一錯誤偵測與修正演算法去計算熔斷至錯誤偵測與修正保險絲132之單一共同數值,該錯誤偵測與修正演算法係將該單一共同數值熔斷至可修正資料保險絲152作為其輸入,相關步驟細節於後續作進一步描述。
微處理器100亦包括控制硬體124,控制硬體124係用以接收並儲存控制值134、以及將控制值134提供至微處理器100之電路以控制微處理器100之運作。控制硬體124可包括以下元件:用以修補微碼之微碼修補硬體;微處理器100之特徵控制暫存器,用以致能或去能微處理器100之功能或功能單元、以及/或用以指示微處理器100具有哪些功能或功能單元,其中微處理器100之特徵或功能單元可為符點單元(Floating Point Unit,FPU)、矩陣數學擴展(Matrix Math eXtension,MMX)單元、單指令多資料流擴展(Streaming SIMD Extensions,SSE)單元、快取與轉譯後備緩衝區(Translation Lookaside Buffer,TLB)、呼叫/返回(call/return)堆疊、亂數產生器、加密引擎、混合乘加(fused-multiply-add)指令功能、微碼修補相關功能、虛擬機器擴展(Virtual Machine eXtension,VMX)、效能監控功能、處理器步進(stepping)與系列資訊、預取(prefetch)功能、分支預測功能、分頁查表(table-walking)相關之功能、以及功率管理功能;微處理器100之設定暫存器,用以控制微處理器100中的一或多個時脈訊號頻率、控制微處理器100之電壓位準、或其它。需注意的是,除了上述元件,本發明之控制硬體124可包括之元件並不在此限。
在傳統的微處理器中,控制值係讀取自保險絲並被寫入控制硬體,而並沒有錯誤偵測與修正之優點。如上所述,如果一熔斷保險絲發生保險絲再生長之情形而具有傳導性並被錯誤地讀取為1而非0,則該傳統之微處理器極有可能因為寫入不正確的值到控制硬體而將無法正常運作。然而,本發明之微處理器100亦包括錯誤偵測與修正保險絲132可用以偵測讀取自可修正資料保險絲152之一錯誤值,並修正該錯誤值使正確之數值能被寫入控制硬體,其中該錯誤值係由一再生長之保險絲172所引起。
微處理器100更包括指令快取102,用以快取儲存由微處理器100所提取並執行之程式指令,該程式指令可包括諸如系統軟體或應用程式等使用者程式指令。
微處理器100還包括指令轉譯器104,用以自指令快取102接收指令,並於指令為微處理器100之巨集指令集之指令時,將該指令(亦可稱為巨集指令)轉譯成實際由微處理器100之執行單元114所執行之一或多個微指令。然而,當指令為微處理器100之巨集指令集之指令時,指令轉譯器104將控制移交(transfer)給微指令之微碼序列,其中該微碼序列係儲存於微碼單元116之微碼唯讀記憶體中。
微碼單元116之微碼唯讀記憶體亦儲存重設微碼122之微指令之序列。當微處理器100重設時,微碼單元116開始提取並執行重設微碼122之微指令,重設微碼122係執行各式運算以初始化微處理器100去準備開始提取並執行使用者程式指令。特別是,重設微碼122根據控制值134編程(program)微處理器100之控制硬體124。微處理器100根據讀取自保險絲172之數值產生控制值134,其中保險絲172係於製造過程中熔斷。然而,如上所述,保險絲172在被熔斷後仍有可能發生再生長的情況而使其值從熔斷值改變為未熔斷值,微處理器100亦包括錯誤偵測與修正保險絲132,用以致能微處理器100以修正讀取自可修正資料保險絲152之數值中的錯誤,以下將詳細說明。用以指定不可修正資料保險絲192於製造過程中被熔斷之數量之簽章188係於可修正資料保險絲152被熔斷時儲存於可修正資料保險絲152中。有利地,重設微碼122計數不可修正資料保險絲192中被熔斷之保險絲數量,並比對計數數量與簽章188或於製造過程中儲存於可修正資料保險絲152中的被熔斷之不可修正資料保險絲192數量。此一機制使重設微碼122能夠偵測到不可修正資料保險絲192中的再生長保險絲,後續將作詳細說明。
微處理器100亦包括指令配送器(dispatcher)106,用以自指令轉譯器104或微碼單元116接收微指令,例如重設微碼122的指令,並將微指令配送至執行單元114。執行單元114包括一或多個整數單元,該整數單元包括用以執行算術與邏輯運算之算術與邏輯單元,特別是,執行單元114包括係用以針對輸入運算元執行布林互斥或(Boolean XOR)運算,其中重設微碼122係使用布林互斥或運算去執行錯誤偵測與修正演算法以偵測並修正讀取自保險絲172之數值之錯誤。此外,執行單元114更用以針對輸入運算元執行算術運算,其中重設微碼122係使用該算術運算去計數不可修正資料保險絲192中之熔斷保險絲數量並比對計數之數量與儲存於可修正資料保險絲152之簽章188,以偵測不可修正資料保險絲192中發生之保險絲再生長錯誤。執行單元114亦執行指令以自控制硬體124讀取資料與寫入資料至控制硬體124。
執行單元114更執行指令以自暫存裝置144讀取資料與寫入資料至暫存裝置144。在一實施例中,暫存裝置144可為一隨機存取記憶體(Random Access Memory,RAM)。特別是,根據第3圖所示,重設微碼122讀取可修正資料保險絲152並將讀取之數值寫入暫存裝置144作為資料保險絲數值126、讀取錯誤偵測與修正保險絲132並將讀取之數值寫入暫存裝置144作為錯誤偵測與修正保險絲數值128、以及讀取資料保險絲數值126與錯誤偵測與修正保險絲數值128以產生修正資料保險絲數值118,其中重設微碼122將修正資料保險絲數值118寫入暫存裝置144並接著將之讀取出來以供寫入控制硬體124之用。修正資料保險絲數值118包括讀取自可修正資料保險絲152之簽章188之修正簽章值183。最後,由重設微碼122所計數之不可修正資料保險絲192中的熔斷保險絲數量係儲存於暫存裝置144,後續將作詳細說明。
在讀取完保險絲172、於需要時修正完資料保險絲數值126、寫入至控制硬體124、以及開始提取並執行使用者程式指令之後,微處理器100為因應使用者程式指令請求讀取或寫入控制硬體124,而讀取或寫入部分之控制硬體124。在一實施例中,使用者程式指令為x86架構之特定模組暫存器讀取(ReaD from Model-Specific Register,RDMSR)指令、以及特定模組暫存器寫入(Write to Model-Specific Register,WRMSR)指令。
如上所述,可修正資料保險絲152與不可修正資料保險絲192之間之一差異為不可修正資料保險絲192之數值164係直接被提供至電路,而未經過重設微碼122使用錯誤偵測與修正保險絲132去修正。關於不可修正資料保險絲192之使用包括以下步驟,但本發明不限於此。若微處理器100之製造者決定快取記憶體中的一行(column)位元單位(bitcell)損壞時,他/她可將不可修正資料保險絲192中之一者熔斷以使快取記憶體使用另一行冗餘位元單位而非使用損壞那一行位元單位。快取記憶體可包括以下元件,但本發明不在此限:一L1快取資料陣列、一L2快取標籤陣列、以及一分支目標位址快取陣列。某些不可修正資料保險絲192控制以下設定:針對微處理器100之各式鎖相迴路的工作週期(duty cycle)或其它控制;電荷幫浦(charge pump)設定;鎖相迴路之時脈頻率;輸入/輸出焊接點(input/output pad)之設定,包括允許多工偵錯之功能;選擇時脈是否於微處理器100中被搬移以增加頻率;避免保險絲失效時所用之冗餘保險絲;僅用於製造過程中之辨識用途之保險絲;設定電壓識別號碼之接腳(pin);以及用以控制電壓與時脈倍增器(multiplier)之匯流排選擇(Bus SELect,BSEL)接腳。
第二圖係根據本發明所述用以製造如第一圖所示之微處理器100之操作流程圖。流程開始於方塊201。
於方塊201,微處理器100之製造者決定簽章188,意即不可修正資料保險絲192中將被熔斷之保險絲數量。流程繼續進行至方塊202。
於方塊202,處理器100之製造者決定要熔斷至可修正資料保險絲152中的控制值,每個可修正資料保險絲152構成單一位元,該單一位元之二進制值則端視對應之保險絲為熔斷或非熔斷而設為0或1。自每個可修正資料保險絲152所讀取之位元值不是被直接寫入控制硬體124之一位元、就是用以產生將被寫入控制硬體124之一位元之位元值,可對照如第3圖之方塊132與316所示。因此,於方塊202,該製造者決定哪些保險絲172將配置為可修正資料保險絲152、哪些保險絲172將配置為錯誤偵測與修正保險絲132,將每個可修正資料保險絲152與控制硬體124之一位元關聯在一起,並決定想要熔斷至可修正資料保險絲152之位元值。舉例來說,該製造者可決定用一特定之可修正資料保險絲152去儲存用以選擇性地開關一預設微碼值,該預設微碼值係控制微處理器100之一特定分支預測功能是否開啟,該製造者亦可決定是否熔斷該特定之可修正資料保險絲152以提供該位元值去開關預設微碼值。該製造者針對每個可修正資料保險絲152執行以上步驟。以產生熔斷至錯誤偵測與修正保險絲132之位元值的角度來看(請見以下方塊204之敘述),雖然每個可修正資料保險絲152皆構成單一位元,但全部之可修正資料保險絲152被視為單一實體並具有被熔斷之單一共同數值、或被視為複數個各自具有單一共同數值的字(word),以下將於方塊204作進一步敘述。如此一來,單一共同數值係於製造微處理器100之前以及製造完後運作之前就已預先設定。另外,該控制值係包括於方塊201中所決定且將於方塊206被熔斷至可修正資料保險絲152之簽章188。流程繼續進行至方塊204。
於方塊204,製造者針對於方塊202中所決定之控制值使用錯誤偵測與修正演算法,以計算出欲熔斷至錯誤偵測與修正保險絲132之錯誤偵測與修正值。在一實施例中,錯誤偵測與修正演算法可為例如該領域熟知的單錯修正雙錯偵測(Signel Error Correction Double Error Detection,SECDED)之(72,64)漢明碼(Hamming code)演算法;然而,本發明之其它實施例亦可使用其它的錯誤偵測與修正演算法。以下將說明的是垂直碼(vertical code)演算法。
在第3圖所示之實施例中,於方塊306,第1圖之重設微碼122以軟體執行錯誤偵測與修正演算法以讀取保險絲172、以及偵測與修正其中之錯誤。因此,在此實施例中,製造者在方塊204係使用了垂直碼演算法以計算錯誤偵測與修正值,且重設微碼122在方塊306係使用了垂直碼演算法。在一實施例中,被用作為可修正資料保險絲152與錯誤偵測與修正保險絲132的保險絲172被設置為58個記憶庫(bank),每個記憶庫具有64個保險絲,意即每個記憶庫為64位元寬。前50個記憶庫在邏輯上係被配置為錯誤偵測與修正保險絲132之記憶庫,因此,在邏輯上,方塊202所決定之控制值為50個控制字,每個控制字為64位元,且錯誤偵測與修正演算法產生了8個錯誤偵測與修正字,每個錯誤偵測與修正字為64位元。製造者針對50個控制字的位元截片(bit slices)使用該錯誤偵測與修正演算法,也就是說,製造者針對50個控制字的第0個位元使用該錯誤偵測與修正演算法以產生8個錯誤偵測與修正字的第0個位元、針對50個控制字的第1個位元使用該錯誤偵測與修正演算法以產生8個錯誤偵測與修正字的第1個位元、以此類推(由於該錯誤偵測與修正演算法假設有64個輸入位元以產生8個錯誤偵測與修正字元但總共僅有50個控制字,所以製造者假設「遺缺的(missing)」14個控制字中所有的位元皆為0)。
另外,如美國專利申請案12/609,207中的第4圖與第5圖所示,另一實施例則使用了水平碼演算法。在該另一實施例中,一硬體錯誤偵測與修正單元以硬體執行錯誤偵測與修正演算法以讀取被用作為可修正資料保險絲152與錯誤偵測與修正保險絲132的保險絲172,並偵測與修正其中之錯誤。因此,在此實施例中,製造商使用一水平碼演算法以計算錯誤偵測與修正值,且錯誤偵測與修正單元使用了該水平碼演算法。在一實施例中,可修正資料保險絲152與錯誤偵測與修正保險絲132被設置為50個記憶庫,每個記憶庫具有72個保險絲,意即每個記憶庫為72位元寬。在邏輯上,每個記憶庫中的前64個位元係被配置為可修正資料保險絲15,因此,在上個段落所述之實施例中,方塊202所決定之控制值在邏輯上而言為50個控制字,每個控制字為64位元;然而,在此實施例中,錯誤偵測與修正演算法產生了50個錯誤偵測與修正演字,每個錯誤偵測與修正字為8位元。製造商係針對逐個記憶庫使用該錯誤偵測與修正演算法,也就是說,製造者針對關聯於記憶庫0之64位元控制字使用該錯誤偵測與修正演算法以產生聯於記憶庫0之8位元錯誤偵測與修正字、針對關聯於記憶庫1之64位元控制字使用該錯誤偵測與修正演算法以產生聯於記憶庫1之8位元錯誤偵測與修正字、以此類推。
需注意的是,在上述垂直碼演算法與水平碼演算法之實施例中錯誤偵測與修正值係根據包括了方塊201所決定之簽章188的控制值所計算得到,且該控制值將於方塊206被燒熔至可修正資料保險絲152。流程繼續進行至方塊206。
於方塊206,製造者將方塊202所決定之控制值燒熔至可修正資料保險絲152,並將方塊204所計算的錯誤偵測與修正值燒熔至錯誤偵測與修正保險絲132。此外,製造商將不可修正資料保險絲192燒熔,特別係燒熔掉在方塊201中決定數量之不可修正資料保險絲192。流程結束於方塊206。
第3圖係顯示第1圖之微處理器100之運作流程圖。流程開始於方塊302。
於方塊302,微處理器因重設而開始提取並執行重設微碼122之指令。流程繼續進行至方塊304。
於方塊304,重設微碼122讀取可修正資料保險絲152以及錯誤偵測與修正保險絲132,並將資料保險絲數值126以及錯誤偵測與修正保險絲數值128寫入暫存裝置144。從可修正資料保險絲152以及錯誤偵測與修正保險絲132所讀取出的數值包括簽章188,簽章188即為不可修正資料保險絲192中被燒熔的保險絲數量。在一實施例中,微處理器100之微指令集包括一指令用將保險絲172之一記憶庫移至微處理器100之一通用暫存器(未繪示)、以及另一指令用將一數值從通用暫存器移至暫存裝置144。再者,其中一執行單元114係用以執行上述指令。重設微碼122使用關聯於保險絲172之每個記憶庫之一序列(a sequence),該序列包括一指令用以讀取每個保險絲172之記憶庫、以及另一指令用將資料保險絲數值126以及錯誤偵測與修正保險絲數值128寫入暫存裝置144。流程繼續進行至方塊306。
於方塊306,重設微碼122針對暫存裝置144中的資料保險絲數值126以及錯誤偵測與修正保險絲數值128使用錯誤偵測與修正演算法,以決定資料保險絲數值126中是否有錯誤,若有,則接著決定該錯誤是否可修正。在一實施例中,微處理器100之微指令集包括一指令用將一數值從暫存裝置144移至一通用暫存器、複數指令用以針對通用暫存器中之數值執行算術與邏輯運算(例如:互斥或、移位(shift)、或旋轉(rotate))、以及另一指令用將一數值從通用暫存器移至暫存裝置144。再者,其中一執行單元114係用以執行上述指令,重設微碼122使用上述指令之一序列去針對暫存裝置144中的資料保險絲數值126以及錯誤偵測與修正保險絲數值128使用錯誤偵測與修正演算法,以決定資料保險絲數值126中是否有錯誤,若有,則接著決定該錯誤是否可修正。在一實施例中,重設微碼122使用如第2圖所述之一垂直碼演算法。流程繼續進行至方塊308。
於決策方塊308,重設微碼122根據方塊306所執行之運算決定資料保險絲數值126中是否有錯誤,若有,流程繼續進行至方塊314;若否,則流程繼續進行至方塊312。
於方塊312,重設微碼122使用資料保險絲數值126將控制值134寫入控制硬體124。在一實施例中,重設微碼122將資料保險絲數值126直接寫入控制硬體124。在另一實施例中,重設微碼122修改資料保險絲數值126以產生控制值134供寫入控制硬體124。舉例來說,在一實施例中,重設微碼122將資料保險絲數值126與一預設控制值作互斥或運算,其中該預設控制值係儲存於重設微碼122中之一常數,然後重設微碼122將所得之結果寫入控制硬體124,如此一來,使得資料保險絲數值126成為一開關機制以開關微碼預設控制值。另外,由於控制硬體124可為上述各種硬體中之任何一者(例如:微碼修補硬體、特徵控制暫存器、以及設定暫存器),且資料保險絲數值126可具有對應於上述各種硬體之不同部分(portion)之控制值,所以重設微碼122可將某些部分之資料保險絲數值126直接寫入某些部分之控制硬體124,並可將其它部分之資料保險絲數值126再寫入控制硬體124之前進行修改。再者,應可理解重設微碼122可執行一序列之指令以自暫存裝置144讀取資料保險絲數值126,並將上述部分(或上述修改之部分)之資料保險絲數值126寫入控制硬體124。流程繼續進行至方塊322。
於決策方塊314,重設微碼122使用錯誤偵測與修正保險絲數值128以決定方塊306或方塊308所偵測到的錯誤是否為可修正的,若是,流程繼續進行至方塊316;若否,則流程繼續進行至方塊318。
於決策方塊316,重設微碼122使用錯誤偵測與修正演算法去修正錯誤的資料保險絲數值126,以產生修正資料保險絲數值118,然後使用修正資料保險絲數值118將控制值134寫入控制硬體124。需注意的是,不論重設微碼122是否將修正資料保險絲數值118當作控制值134寫入控制硬體124,重設微碼122都會使用錯誤偵測與修正演算法去修正錯誤的資料保險絲數值126以產生修正資料保險絲數值118。也就是說,不論決策方塊308是否發現錯誤,重設微碼122都會產生修正資料保險絲數值118,使暫存裝置144中的修正簽章值183可用以與決策方塊324中的計數數量194(將於後續作進一步說明)作比對。如上述方塊312之說明,重設微碼122可將修正資料保險絲數值118、或修正資料保險絲數值118之一部分在寫入控制硬體124之前作修改。如上述方塊304中所述,由於從可修正資料保險絲152以及錯誤偵測與修正保險絲132所讀取之數值包括簽章188,所以有利地,於方塊316,可將簽章188於需要時進行修正以作為資料保險絲數值修正的一部份,若簽章188為不可修正的,此一條件將於決策方塊314中被偵測出,使方塊318能適當地處理此不可修正之錯誤。流程繼續進行至方塊322。
於方塊318,重設微碼122避免微處理器100離開重設程序。若流程係由決策方塊314進行至方塊318,係因為資料保險絲數值126之錯誤中的位元數量過多而微處理器100無法使用錯誤偵測與修正保險絲數值128去進行修正,也就是說,重設微碼122避免微處理器100提取並執行使用者程式指令。在另一實施例中,重設微碼122允許微處理器100離開重設程序,意即,允許微處理器100提取並執行例如基本輸出輸入系統(BIOS)或其它系統軟體之使用者程式指令;然而,重設微碼122傳送一錯誤狀態至系統軟體以告知關於資料保險絲數值126中不可修正之錯誤。若流程係由決策方塊324進行至方塊318(將於後續作進一步說明),重設微碼122則避免微處理器100離開重設程序,因為重設微碼122決定了從暫存裝置144中的修正資料保險絲數值118所讀取的簽章188與方塊322中的計數數量194並不相同。流程結束於方塊318。
於方塊322,重設微碼122讀取不可修正資料保險絲192、計數其中被熔斷之保險絲數量、以及將計數數量194寫入暫存裝置144,上述計數數量194為第1圖中所示的記數之已燒熔不可修正保險絲之數量194。流程繼續進行至決策方塊324。
於決策方塊324,重設微碼122自暫存裝置144中的修正資料保險絲數值118讀取修正簽章值183,並比對修正簽章值183與方塊322中的計數數量194以決定兩者是否相同,若不同,流程繼續進行至方塊318;若相同,則流程繼續進行至方塊326。在另一實施例中,重設微碼122自暫存裝置144中的資料保險絲數值126讀取該簽章,並比對該簽章與方塊322中的計數數量194是否相同,也就是說,重設微碼122所使用的係於方塊306中可能未使用錯誤偵測與修正演算法進行修正之簽章。
於方塊326,重設微碼122使微處理器100開始執行使用者程式指令。流程結束於方塊326。
關於第1圖至第3圖所述之不可修正資料保險絲192之再生長問題之解決方法,需注意到簽章188係被熔斷至保險絲172中,而保險絲172可能會再生長。簽章188再生長之問題有一部份已根據本發明一實施例而有所改善,因為簽章188可被熔斷至可修正資料保險絲152,而可修正資料保險絲152係經過上述錯誤偵測與修正方案(scheme)所執行之錯誤偵測。然而,錯誤偵測與修正方案在能偵測的錯誤位元上存在限制,因此,有可能當過多的可修正資料保險絲152發生再生長時,會使得無法偵測到簽章188中的錯誤。針對此一問題,以下將根據第4圖至第6圖作進一步說明。
更具體說明,該問題係透過將簽章188以及該簽章之布林補數186(請見第4圖)燒熔至可修正資料保險絲152。然後再從可修正資料保險絲152讀取簽章188以及該簽章之布林補數186,針對簽章188執行布林補數運算以產生一結果,並且比對該結果與讀取自可修正資料保險絲152之布林補數186。若比對結果不相同,表示偵測到錯誤。由於為了不偵測到簽章188之錯誤,保險絲172中的簽章188與其補數186需要將自己的狀態反向(invert),所以此解決方法可能比第1圖至第3圖所示之錯誤偵測與修正方案更為可靠,而這則需要使簽章188中之一保險絲172從熔斷狀態改為未熔斷狀態(如保險絲再生長),且使補數186中對應位元的保險絲172從未熔斷狀態改為熔斷狀態,反之亦然。然而,儘管前述已清楚著墨了關於保險絲172由熔斷狀態改為未熔斷狀態之問題(即本發明主要欲解決之問題),但尚未著墨關於保險絲172由未熔斷狀態改為熔斷狀態的狀況。因此,簽章方案/簽章之補數方案不太可能不去偵測不可修正資料保險絲192之簽章188中之錯誤。
第4圖係根據本發明另一實施例所述之微處理器100之示意圖。第4圖之微處理器100類似於第1圖之微處理器100,故在此僅針對新增以及/或不同的元件作說明。其中一個差異是可修正資料保險絲152不僅包括代表不可修正資料保險絲192中的熔斷保險絲數量之簽章188,亦包括了代表簽章188之布林反轉值之簽章補數186。此外,自可修正資料保險絲152被讀取至暫存裝置144之資料保險絲數值126不僅包括簽章184,還包括了簽章補數185。再者,重設微碼122計算出簽章184之補數以作為簽章182之補數。
第5圖係顯示製造第4圖之微處理器100之運作流程圖。流程開始於方塊201。
於方塊201,微處理器100之製造者決定一簽章,該簽章為不可修正資料保險絲192中將被熔斷之保險絲數量。且微處理器100之製造者決定該簽章之補數。流程繼續進行至方塊202。
於方塊202,微處理器100之製造者決定欲燒熔至可修正資料保險絲152之控制值。第5圖之方塊202類似於第2圖之方塊202,然而,需注意到的是該控制值不僅包括方塊201所決定之簽章,亦包括該簽章之補數。流程繼續進行至方塊204。
於方塊204,該製造者針對方塊202所決定之控制值使用錯誤偵測與修正演算法,以計算將燒熔至錯誤偵測與修正保險絲132之錯誤偵測與修正值。第5圖之方塊204類似於第2圖之方塊204,然而,需注意到的是該錯誤偵測與修正值係根據第5圖之方塊201決定之控制值所計算出來的,且該錯誤偵測與修正值包括該簽章與該簽章之補數。流程繼續進行至方塊206。
於方塊206,該製造者將方塊202所決定之控制值燒熔至可修正資料保險絲152,並將方塊204所計算之錯誤偵測與修正值燒熔至錯誤偵測與修正保險絲132,類似於第2圖之方塊206。流程結束於方塊206。
第6圖係顯示第4圖之微處理器100之運作流程圖。第6圖所執行之步驟除了以下特別指出之差異處之外,其它步驟則類似於第3圖之步驟。
於方塊304,由重設微碼122自可修正資料保險絲152讀取出並寫入至暫存裝置144之資料保險絲數值126包括了簽章184與簽章補數185。流程從方塊304繼續往下進行至新的方塊652。
於方塊652,重設微碼122將來自暫存裝置144之簽章184作補數運算以產生一結果,然後比對該結果與來自暫存裝置144之簽章補數182。流程繼續進行至新的決策方塊654。
於決策方塊654,重設微碼122決定方塊652之比對是否相同,若是,流程繼續往下進行方塊306;若否,則流程繼續往下進行方塊318,因為微處理器100已決定了簽章188以及/或簽章補數186中發生了錯誤。
第4圖至第6圖之實施例具有的一個優點是不需要由錯誤檢查與修正(Error Checking and Correction,ECC)來修正保險絲172中的簽章188,但簽章補數186提供了簽章188之完整性檢查。
關於第1圖至第6圖之實施例所說明之不可修正資料保險絲192之再生長問題之解決方案,其測試係因應處理器之重設而執行。如果在重設時偵測到保險絲再生長之錯誤,解決方法之一就是把發生錯誤的部分取消(kill),意即,重設微碼122避免微處理器離開重設程序。然而,如果發生錯誤的部分自行取消,則整台電腦對基本輸出輸入系統而言就是當機的狀態,因此對使用者而言也會是當機狀態,意即該電腦無法執行任何程式碼、無法發出嗶嗶的信號聲、無法開關信號燈、或產生任何影像信號告知使用者有錯誤發生。如此一來,則很難收集有意義的實地故障(field failure)資訊以供故障分析與解決。
解決方法之二就是讓發生錯誤的部分繼續執行並盡量嘗試回報錯誤。然而,處理器本身可得的錯誤回報機制(即退除(absent)任何執行中的外部程式碼)很有限,特別是因為處理器的重設碼並非可自由地寫入記憶體中,即使重設碼可自由地寫入記憶體中,基本輸出輸入系統也很可能會將它重寫掉。若重設時的處理器保險絲測試錯誤狀態將被保留起來,則基本輸出輸入系統必須立即於開始執行時盡快讀取該錯誤狀態,而這需要系統製造者願意讓微處理器100之製造者在為處理器訂作之基本輸出輸入系統新增程式碼,特別是用以讀取處理器所回報之錯誤狀態。然而,微處理器100之製造者可能無法在其所應用的所有系統中都這麼做。
有個方法是讓保險絲測試成為使用者發起(user-initiated),而不是僅能夠由重設所發起。所以,微處理器100中新增了一個特定模組暫存器,讓使用者軟體將一特定模組暫存器寫入指令執行至該特定模組暫存器時,微處理器100執行上述任何一種或同時執行上述保險絲測試並回報偵測到的錯誤。這使得使用者軟體能夠將偵測到的錯誤呈報給使用者,此外,這也使得使用者能夠選擇要繼續使用該系統或將該系統關閉。
再者,是否在重設時執行保險絲測試乃是製造時可選用之一選項,其中係於製造時藉由選擇性地燒熔一保險絲以指示該選項(例如:已燒熔保險絲指示不在重設時執行保險絲測試、非燒熔保險絲指示在重設時執行保險絲測試)。然而,保險絲並非一定可靠,所以與其燒熔單一保險絲以選擇該選項,不如燒熔多個保險絲(如第7圖的保險絲187中的四個保險絲)並針對該多個保險絲執行或運算以決定選擇了哪個選項。即便選擇在重設時執行保險絲測試,仍可透過特定模組暫存器寫入指令選擇使用者發起之保險絲測試。
第7圖係根據本發明另一實施例所述之微處理器100之示意圖。第7圖之微處理器100類似於第1圖之微處理器100,故在此僅針對新增以及/或不同的元件作說明。其中一個差異是燒熔至可修正資料保險絲152之保險絲187係是否於重設時執行保險絲測試之一選項,另一個差異則是重設微碼122不僅包括重設時的保險絲測試微碼常式(microcode routines),亦包括使用者發起之保險絲測試微碼常式。在一實施例中,重設時的保險絲測試微碼常式與使用者發起之保險絲測試微碼常式中的一有效部分為相同程式碼。此外,自可修正資料保險絲152讀取至暫存裝置144之資料保險絲數值126包括重設時的保險絲測試選項之保險絲數值181。再者,微處理器100包括可由使用者程式(例如基本輸出輸入系統或其它系統軟體)寫入之一特定模組暫存器174,其中,特定模組暫存器174係由使用者程式所寫入以使微處理器100執行保險絲測試並回傳一錯誤狀態值至特定模組暫存器174,讓使用者程式透過特定模組暫存器讀取指令去讀取。最後,微處理器100之其它相關功能單元,諸如:指令轉譯器104、指令解碼器108、執行單元114、以及重設微碼122,則被修改以解碼並執行導向至特定模組暫存器174中的特定模組暫存器寫入指令與特定模組暫存器讀取指令,將於後續根據第10圖與第11圖作進一步說明。
第8圖係顯示製造第7圖之微處理器100之運作流程圖。流程開始於方塊800。
於方塊800,微處理器100之製造者決定是否燒熔第7圖中之重設時保險絲測試選項之保險絲187。流程繼續進行至方塊201。
於方塊201,微處理器100之製造者決定一簽章,該簽章為不可修正資料保險絲192中將被燒熔之保險絲數量。流程繼續進行至方塊202。
於方塊202,微處理器100之製造者決定欲燒熔至可修正資料保險絲152之控制值,第8圖之方塊202係類似於第2圖之方塊202,然而,需注意的是該控制值亦包括方塊800所決定之保險絲187,且該控制值將於方塊206中被燒熔至可修正資料保險絲152。流程繼續進行至方塊204。
於方塊204,微處理器100之製造者針對方塊202所決定之控制值使用錯誤偵測與修正演算法,以計算將燒熔至錯誤偵測與修正保險絲132之錯誤偵測與修正值。第8圖之方塊204係類似於第2圖之方塊204,然而,需注意的是該錯誤偵測與修正值係根據根據方塊202所決定之控制值所計算得到的。流程繼續進行至方塊206。
於方塊206,微處理器100之製造者將方塊202所決定之控制值燒熔至可修正資料保險絲152,並將方塊204所計算之錯誤偵測與修正值燒熔至錯誤偵測與修正保險絲132,類似於第2圖中的方塊206。此外,該製造者燒熔不可修正資料保險絲192,特別是不可修正資料保險絲192中被燒熔的保險絲數量係於方塊201所決定。流程繼續進行至方塊206。
第9圖係顯示第7圖之微處理器100之運作流程圖。第9圖中所執行之步驟除了以下將說明之差異之外,其餘步驟則類似於第3圖中所執行之步驟。於方塊304自可修正資料保險絲152所讀取之數值亦包括如上述重設時的保險絲測試選項之保險絲數值。
此外,流程從方塊304往下進行至新的方塊903。於方塊903,重設微碼122針對讀取自暫存裝置144之重設時保險絲測試選項之保險絲數值181執行或運算以產生一選項位元值。流程繼續進行至新的決策方塊905。
於決策方塊905,重設微碼122決定方塊903所產生之選項位元值是否指示進行重設時的保險絲測試,若是,流程繼續進行至方塊306;若否,則流程結束。
最後,流程從決策方塊314的「否」分支進行至新的決策方塊917。
於決策方塊917,重設微碼122決定不可修正之故障係由重設時之保險絲測試所偵測到、抑或由使用者發起之保險絲測試所偵測到。若是由重設時之保險絲測試偵測到,流程繼續進行至方塊318;若是由使用者發起之保險絲測試偵測到,則流程繼續進行至新的方塊919。
於方塊919,使用者發起之保險絲測試之重設微碼122將錯誤狀態值載入第7圖中保險絲測試之特定模組暫存器174。流程結束於方塊919。
第10圖係顯示第7圖之微處理器100執行特定模組暫存器寫入指令之運作流程圖,其中,該特定模組暫存器寫入指令被導向至第7圖之特定模組暫存器174。流程開始於方塊1002。
於方塊1002,使用者程式執行被導向至特定模組暫存器174之一特定模組暫存器寫入指令。流程繼續進行至方塊1004。
於方塊1004,指令轉譯器104解碼該特定模組暫存器寫入指令,並將控制轉移至重設微碼122中的特定模組暫存器寫入處理程序(WRMSR hanlder),該特定模組暫存器寫入處理程序會呼叫使用者發起之保險絲測試微碼常式。流程繼續進行至方塊1006。
於方塊1006,使用者發起之保險絲測試微碼常式執行第3圖、第6圖、以及/或第9圖中方塊306至方塊326所述之保險絲測試,特別是,重設微碼122根據方塊919之錯誤狀態填入(populate)保險絲測試之特定模組暫存器174。流程結束於方塊1006。
第11圖係顯示第7圖之微處理器100執行特定模組暫存器讀取指令之運作流程圖,其中,該特定模組暫存器讀取指令被導向至第7圖之特定模組暫存器174。流程開始於方塊1102。
於方塊1102,使用者程式執行被導向至特定模組暫存器174之一特定模組暫存器讀取指令。流程繼續進行至方塊1104。
於方塊1104,指令轉譯器104解碼該特定模組暫存器讀取指令,並將控制轉移至重設微碼122中的特定模組暫存器讀取處理程序(RDMSR hanlder),該特定模組暫存器讀取處理程序會將保險絲測試之特定模組暫存器174中的數值複製到一般通用暫存器,例如EDX-EAX暫存器中,而EDX-EAX暫存器可由使用者程式所讀取。流程結束於方塊1104。
雖然上述實施例係使用x86架構,但根據本發明之實施例所揭露之內容當可將本發明所述由使用者發起之保險絲測試之實施例稍作修改以應用於其它架構之處理器。微處理器中的保險絲所具有的廣闊應用可實現許多重要的功能,因此需要有可靠的方法以得知何時發生保險絲再生長。第7圖至第11圖所示之實施例即藉由讓製造者能夠實地收集更多有用的失誤資料,來協助完成此一目標,此外,亦可提供使用者一個較具意義之失誤指示,而不只是呈現一個當機的系統。
如以上實施例所述,當微處理器啟動時,某些控制值(即不可修正之保險絲中的控制值)被直接掃描至硬體暫存器,而不是讓重設微碼使用錯誤偵測與修正技術去修正該控制值。在微處理器之一實施例中,微碼甚至無法讀取不可修正之保險絲。上述其它實施例則使不可修正之保險絲能夠被讀取以偵測其中的控制值是否有錯誤。然而,上述之實施例並未使偵測到的錯誤能夠被修正。
以下將於第12圖至第14圖說明之實施例係使微碼能夠修正不可修正之保險絲,明確來說,這裡所說的不可修正之保險絲包括了錯誤偵測與修正保險絲以及資料保險絲。重設時,不可修正之保險絲數值被讀取至各自關聯一保險絲記憶庫之掃描暫存器。然後,一狀態機將不可修正的資料與錯誤偵測與修正保險絲數值自掃描暫存器序列地掃描至一微碼可讀取之暫存器。該微碼於需要時修正資料保險絲數值,並將修正數值寫入一微碼可寫入之暫存器,使微碼可寫入之暫存器中的修正數值被序列地掃描回到保險絲記憶庫中的掃描暫存器。該微碼接著使掃描暫存器中的修正數值被序列地掃描至控制硬體(諸如快取修正控制暫存器以及鎖相迴路調整控制暫存器)。
第12圖係根據本發明另一實施例所述之微處理器100之示意圖。第12圖之微處理器100類似於第1圖之微處理器100,包括了一指令快取102、指令轉譯器104、指令配送器106、執行單元114、微碼單元116、重設微碼122、一保險絲燒熔電壓輸入136、以及暫存裝置144。
第12圖之微處理器100亦包括控制硬體124,控制硬體124係用以接收並儲存一控制值164、以及用將控制值164提供至微處理器100之電路(circuits)以控制微處理器100之運作。控制硬體124可控制以下步驟(但不限於此):挑選位元單位之冗餘行以取代快取記憶體中位元單位裡損壞的一行;針對微處理器100之各式鎖相迴路的工作週期或其它控制;電荷幫浦設定;鎖相迴路之時脈頻率;輸入/輸出焊接點之設定,包括允許多工偵錯之功能;選擇時脈是否於微處理器100中被搬移以增加頻率;避免保險絲失效時所用之冗餘保險絲;僅用於製造過程中之辨識用途之保險絲;設定電壓識別號碼之接腳;以及用以控制電壓與時脈倍增器之匯流排選擇接腳。
處理器100還包括不可修正資料保險絲192,第12圖之不可修正資料保險絲192包括資料保險絲195以及錯誤偵測與修正保險絲193,錯誤偵測與修正保險絲193係提供重設微碼122以修正資料保險絲195中之錯誤,例如由保險絲再生長所造成之錯誤,以下將作進一步說明。
處理器100亦包括透過一平行介面耦接至資料保險絲195以及錯誤偵測與修正保險絲193之掃描暫存器191,微處理器100還包括一微碼可讀取之暫存器196與一微碼可寫入之暫存器197,且微碼可讀取之暫存器196與微碼可寫入之暫存器197皆耦接至執行單元114。在一實施例中,微碼可讀取之暫存器196與微碼可寫入之暫存器197皆為64位元寬。微處理器100亦包括狀態機199,狀態機199係由個別之雙向序列介面耦接至:掃描暫存器191、微碼可讀取之暫存器196、微碼可寫入之暫存器197、以及控制硬體124。在一實施例中,狀態機199為一共通片上處理器(Common On-chip Processor,COP)用以使用公知之聯合測試行動小組機制去掃描儲存元件之間之序列位元串流。在一實施例中,該序列介面係運作於微處理器100之核心時脈頻率之一部分;該部分於一實施例中為八分之一。此具有一優點,係指不可修正資料保險絲192、狀態機199、以及控制硬體124之間之距離相對地為遠;此外,微碼可讀取之暫存器196與微碼可寫入之暫存器197係介接於微處理器100之平行域(如執行單元114)與微處理器100之序列域(例如:不可修正資料保險絲192、狀態機199、以及控制硬體124),並且與該平行域相對地為近、但與該序列域相對地為遠,其中該平行域係以全核心時脈頻率運作,而該序列係以上述核心時脈頻率之一部分運作。
再者,重設微碼122係用以執行以下步驟:讀取資料保險絲195並將讀取之數值寫入暫存裝置144作為資料保險絲數值166;讀取錯誤偵測與修正保險絲193並將讀取之數值寫入暫存裝置144作為錯誤偵測與修正保險絲數值168;以及讀取資料保險絲數值166與錯誤偵測與修正保險絲數值168以產生一修正資料保險絲數值158,其中修正資料保險絲數值158係寫入暫存裝置144然後再從暫存裝置144讀出以供寫入微碼可寫入之暫存器197之用。
第13圖係根據本發明所述製造第12圖之微處理器100之運作流程圖。第12圖所示之步驟類似於美國專利申請案12/609,207之第2圖所述之步驟;然而,第12圖之步驟係針對第12圖之不可修正資料保險絲192(也就是資料保險絲195以及錯誤偵測與修正保險絲193)而執行,而不是針對第1圖之保險絲172而執行。流程開始於方塊202。
於方塊202,微處理器100之製造者決定欲熔斷至資料保險絲195之控制值,每個資料保險絲195構成具有一二進制值之單一位元,且其二進制值視對應之資料保險絲195為已熔斷或未熔斷而設為0或1。讀取自資料保險絲195之位元值將被掃描至控制硬體124之一位元,以下將於第14圖中進一步說明。因此,於方塊202,該製造者決定哪些不可修正資料保險絲192將被配置為資料保險絲195、而哪些不可修正資料保險絲192將被配置為錯誤偵測與修正保險絲193,並且該製造者將每個資料保險絲195關聯至控制硬體124之一位元、以及決定欲熔斷至資料保險絲195之位元值。該製造者係針對每個資料保險絲195執行以上步驟。以產生熔斷至錯誤偵測與修正保險絲193之數值的角度來看(進一步說明請見以下方塊204之敘述),雖然每個資料保險絲195皆構成單一位元,但全部之資料保險絲195可視為單一實體並具有被熔斷之單一共同數值、或被視為複數個各自具有單一共同數值的字,以下將於方塊204作進一步說明。如此一來,單一共同數值係於製造微處理器100之前以及製造完後運作之前就已預先設定。流程由方塊202進行至方塊204。
於方塊204,微處理器100之製造商針對方塊202所決定之控制值使用錯誤偵測與修正演算法,以計算將燒熔至錯誤偵測與修正保險絲193之錯誤偵測與修正值,該錯誤偵測與修正演算法可為上述之演算法之一者,包括第2圖與第3圖所述之垂直與水平碼演算法。流程繼續進行至方塊206。
於方塊206,該製造商將方塊202所決定之控制值燒熔至資料保險絲195,以及將方塊204所計算之錯誤偵測與修正值燒熔至錯誤偵測與修正保險絲193。流程結束於方塊206。
第14圖係顯示第12圖之微處理器100之運作流程圖。第14圖中某些步驟方塊於第12圖中以圈畫之編號1至6標示,並對照說明於以下敘述步驟1至步驟6。流程開始於方塊1402。
於方塊1402,微處理器100因應重設而開始提取並執行重設微碼122之指令。流程繼續進行至方塊1404。
於方塊1404,如第12圖之步驟1所示,不可修正資料保險絲192數值(也就是資料保險絲195數值以及錯誤偵測與修正保險絲193數值)載入至掃描暫存器191。流程繼續進行至方塊1406。
於方塊1406,如第12圖之步驟2所示,狀態機199將方塊1404所載入之資料保險絲195數值序列地掃描至控制硬體124,使得微處理器100可根據來自資料保險絲195之起始值進行運作,即使資料保險絲195中的一或多個保險絲可能發生再生長。這是必要的程序,因為微處理器100無法在控制硬體124沒有載入任何數值時正常地運作。在一實施例中,有1000個不可修正資料保險絲192以及將其讀入之有效的掃描暫存器191(每個掃描暫存器191為32位元);掃描暫存器191係以連續的方式序列地連接起來,使得數值能夠被序列地掃描進入或離開掃描暫存器191,從而省去有效的寫入硬體,寫入硬體需要使用一平行匯流排將每個掃描暫存器191連接至狀態機199或微處理器100之其它元件。流程繼續進行至方塊1408。
於方塊1408,如第12圖之步驟3所示,重設微碼122執行指令使狀態機199將資料保險絲195數值以及錯誤偵測與修正保險絲193數值自掃描暫存器191讀取至微碼可讀取之暫存器196。流程繼續進行至方塊1412。
於方塊1412,如第12圖之步驟4所示,重設微碼122讀取微碼可讀取之暫存器196,並將資料保險絲數值166以及錯誤偵測與修正保險絲數值168寫入暫存裝置144。然後,類似於第3圖之方塊306,重設微碼122針對資料保險絲數值166以及錯誤偵測與修正保險絲數值168使用錯誤偵測與修正演算法以決定資料保險絲數值166之是否有錯誤,若是,則決定該錯誤是否可修正。流程繼續進行至方塊1414。
於方塊1414,重設微碼122根據方塊1412所執行之作業決定資料保險絲數值166中是否有不可修正之錯誤,若是,流程繼續進行至方塊1416;若否,則流程繼續進行至決策方塊1418。
於方塊1416,因為資料保險絲數值166中的錯誤之位元數量過多以致於無法使用微處理器100錯誤偵測與修正保險絲數值168去修正,所以重設微碼122避免微處理器100離開重設程序。也就是說,重設微碼122避免微處理器100去提取並執行使用者程式指令。在另一實施例中,重設微碼122可允許微處理器100離開重設程序,意即去提取並執行如基本輸出輸入系統或其它系統軟體之使用者程式指令;然而,類似於上述第3圖之方塊318,重設微碼122會傳送一錯誤狀態至系統軟體以告知資料保險絲數值166中有一不可修正之錯誤。流程結束於方塊1416。
於方塊1418,重設微碼122於需要時使用錯誤偵測與修正演算法去修正錯誤的資料保險絲數值166以產生修正資料保險絲數值158,並且如第12圖之步驟5所示,將修正資料保險絲數值158寫入微碼可寫入之暫存器197,使狀態機199將寫入至微碼可寫入之暫存器197之修正資料保險絲數值158序列地掃描回掃描暫存器191。在一實施例中,微處理器100之微指令集包括了使狀態機199執行上述作業之一指令。流程繼續進行至方塊1422。
於方塊1422,如第12圖之步驟6所示,重設微碼122使狀態機199從掃描暫存器191將修正之數值掃描至控制硬體124,以使用修正資料保險絲數值158控制微處理器100之運作,而非使用方塊1406所掃描之初始值去控制微處理器100之運作。有利地是,如果在初始值中有任何可修正之錯誤,該錯誤於此也會被一併修正。流程繼續進行至方塊1424。
於方塊1424,重設微碼122完成了微處理器100之初始化,然後讓微處理器100開始提取並執行使用者程式指令。流程結束於方塊1424。
在一實施例中,狀態機199自掃描暫存器191所接收到的資料保險絲195數值的一部分包括一位址資訊,該位址資訊係針對所關聯之資料指定控制硬體暫存器124中之一目的位置,也就是說,狀態機199處理資料保險絲195數值的該部分中的位址資訊,並將該部分寫入該位址資訊所指定之控制硬體暫存器124。在此實施例中,如第12圖至第14圖所述,重設微碼122修正資料保險絲數值166以產生修正資料保險絲數值158之步驟、以及使狀態機199將修正資料保險絲數值158序列地掃描至控制硬體124之步驟意味著重設微碼122不僅修正了資料保險絲數值166之資料部分,亦有利地修正了資料保險絲數值166之位址部分。相較於其它實施例中,微碼自目的控制硬體暫存器讀取數值並使用錯誤偵測與修正保險絲數值以針對自目的控制硬體暫存器所讀取之數值執行錯誤偵測與修正,此實施例具有其它的優點例如:由重設微碼122所執行之錯誤偵測與修正之計算比較不複雜,且當偵測到錯誤時需要修正的位元也比較少。舉例說明,假設不可修正資料保險絲192係以位元單位之一冗餘行去取代一快取記憶體中位元單位裡的一損壞行。假設快取記憶體有1024行位元單位,每一行在控制硬體124中具有一個6位元暫存器用以指定64個冗餘行中之一者以取代一損壞行。也就是說,控制硬體124中有1024個可能的目的位置可供修正資料保險絲數值158之一6位元資料量寫入,以使用64個冗餘行中之一者取代一損壞行。因此,假設一設定具有資料保險絲195中64個16位元的位址/資料保險絲集合,更具體來說,前10個位元為一位址,指示目的的控制硬體124中1024個6位元資料暫存器的哪個資料暫存器需要從預設的0值作修改(altered),最後6個位元則為新的資料數值。在此範例中,第12圖至第14圖所示之實施例需要有足夠的錯誤偵測與修正保險絲193以偵測並修正資料保險絲數值166中的1024位元(64*16)。然而,在另一實施例中,微碼係用以自目的控制硬體暫存器讀取數值並使用錯誤偵測與修正保險絲去執行錯誤偵測與修正,由於該微碼不會知道是控制硬體中的哪個暫存器發生錯誤,所以為了偵測並修正一錯誤,該微碼則必須讀取全部1024個控制暫存器,意即6144(1024*6)個位元,因此,此實施例比第12圖至第14圖所示之實施例需要更多錯誤偵測與修正保險絲。
由上述說明可發現,第12圖至第14圖所述之裝置與方法係優於第1圖至第11圖所述之裝置與方法,因為第12圖至第14圖所示之實施例可同時偵測並修正不可修正資料保險絲192中的錯誤,而第1圖至第11圖所示之實施例僅能用以偵測錯誤。
第12圖至第14圖所述之重設時的測試亦可執行為使用者發起之測試,類似於第7圖至第11圖所示之實施例。
第12圖至第14圖所述之裝置與方法具有之一優點是其使用了序列匯流排去連接掃描暫存器191、以及控制硬體198本質上可減少將修正保險絲數值傳遞給控制硬體124所需之線路數量,這是因為不可修正資料保險絲192在空間上可置於遠離控制硬體124的地方,以及/或需要被寫入修正數值之控制硬體124的數量很龐大。此外,提供一機制供重設微碼122執行錯誤偵測與修正大大地簡化了一解決方案之狀態機199,在該解決方案中,狀態機199執行錯誤偵測與修正,或者在該解決方案中,錯誤偵測與修正係執行於保險絲數值被載入掃描暫存器191之時。
本發明雖以各種實施例揭露如上,然而其僅為範例參考而非用以限定本發明的範圍,任何熟習此項技藝者,在不脫離本發明之精神和範圍內,當可做些許的更動與潤飾。舉例來說,軟體可實現相關於本發明之裝置與方法的功能、製造、模組化(modeling)、模擬(simulation)、描述(description)、以及/或測試等等。該軟體可使用一般程式設計語言(如:C、C++)、硬體描述語言(Hardware Description Language,HDL)(如:Verilog HDL、VHDL等等)、或其它可得之程式來實作。且該軟體可配置於任何公知的電腦可使用媒體中,例如:半導體、磁碟、或光碟(如唯讀記憶光碟(Compact Disc Read-Only Memory,CD-ROM)、數位多功能光碟(Digital Versatile Disc Read-Only Memory,DVD-ROM)等等)。本發明所述之裝置與方法之實施例可包括於一半導體智財核心(semiconductor intellectual property core)中,例如:微處理器核心(如:嵌入於硬體描述語言中),再進一步轉換為硬體的積體電路產品。另外,本發明所述之裝置與方法可以硬體與軟體之一組合方式嵌入。因此,上述實施例並非用以限定本發明之範圍,本發明之保護範圍當視後附之申請專利範圍所界定者為準。特別是,本發明可實作於一微處理器裝置,且該微處理器裝置可使用於一般用途之電腦。最後,熟習此項技藝者應當可理解在不脫離本發明之精神和範圍內,以上述所揭露之實施例與概念設計出與本發明相同目的之其它架構。
100...微處理器
102...指令快取
104...指令轉譯器
106...指令配送器
108...指令解碼器
114...執行單元
116...微碼單元
118、158...修正資料保險絲數值
122...重設微碼
124、198...控制硬體
126、166...資料保險絲數值
128、168...錯誤偵測與修正保險絲數值
132、193...錯誤偵測與修正保險絲
134...控制值
136...保險絲燒熔電壓輸入
144...暫存裝置
152...可修正資料保險絲
164...控制值
172...保險絲
174...特定模組暫存器
181...重設時保險絲測試選項之保險絲數值
182、184、188...簽章
183...修正簽章值
185、186...簽章補數
191...掃描暫存器
192...不可修正資料保險絲
194...計數數量
195...資料保險絲
196...微碼可讀取之暫存器
197...微碼可寫入之暫存器
199...狀態機
第1圖係根據本發明所述之微處理器之示意圖。
第2圖係根據本發明所述製造第1圖之微處理器100之運作流程圖。
第3圖係顯示第1圖之微處理器100之運作流程圖。
第4圖係根據本發明另一實施例所述之微處理器100之示意圖。
第5圖係顯示製造第4圖之微處理器100之運作流程圖。
第6圖係顯示第4圖之微處理器100之運作流程圖。
第7圖係根據本發明另一實施例所述之微處理器100之示意圖。
第8圖係顯示製造第7圖之微處理器100之運作流程圖。
第9圖係顯示第7圖之微處理器100之運作流程圖。
第10圖係顯示第7圖之微處理器100執行特定模組暫存器寫入指令之運作流程圖。
第11圖係顯示第7圖之微處理器100執行特定模組暫存器讀取指令之運作流程圖。
第12圖係根據本發明另一實施例所述之微處理器100之示意圖。
第13圖係根據本發明所述製造第12圖之微處理器100之運作流程圖。
第14圖係顯示第12圖之微處理器100之運作流程圖。
100...微處理器
102...指令快取
104...指令轉譯器
106...指令配送器
114...執行單元
116...微碼單元
118...修正資料保險絲數值
122...重設微碼
124...控制硬體
126...資料保險絲數值
128...錯誤偵測與修正保險絲數值
132...錯誤偵測與修正保險絲
134...控制值
136...保險絲燒熔電壓輸入
144...暫存裝置
152...可修正資料保險絲
164...控制值
172...保險絲
183...修正簽章值
188...簽章
194...計數數量

Claims (49)

  1. 一種微處理器,包括:複數第一保險絲,其中一預定數量之保險絲被選擇性地熔斷,且由上述第一保險絲提供複數第一控制值至上述微處理器之第一電路以控制上述微處理器之運作;以及複數第二保險絲,根據上述預定數量之熔斷保險絲而被熔斷,其中上述微處理器於重設時執行以下步驟:讀取上述第一保險絲並計數其中已熔斷之保險絲數量;自上述第二保險絲讀取上述預定數量;比對上述計數數量與讀取自上述第二保險絲之上述預定數量;以及於上述計數數量不同於上述讀取自上述第二保險絲之上述預定數量時避免提取與執行使用者程式指令。
  2. 如申請專利範圍第1項所述之微處理器,其中上述第二保險絲之熔斷係更根據一錯誤修正值所進行,且上述錯誤修正值係用以修正上述讀取之預定數量所發生之一錯誤。
  3. 如申請專利範圍第2項所述之微處理器,其中上述第一控制值係自上述第一保險絲直接且未經過錯誤修正地提供至上述第一電路以控制上述微處理器之運作,其中上述第二保險絲之熔斷係更根據複數第二控制值所進行,且 上述微處理器更修正自上述第二保險絲所讀取之上述第二控制值之一錯誤、以及將修正之上述第二控制值提供至上述微處理器之第二電路以控制上述微處理器之運作。
  4. 如申請專利範圍第1項所述之微處理器,其中上述微處理器於上述計數之保險絲數量不同於上述讀取之預定數量時,向一系統軟體回報錯誤。
  5. 如申請專利範圍第1項所述之微處理器,更包括:一微碼單元,用以讀取上述第一保險絲並計數其中已熔斷之保險絲數量、自上述第二保險絲讀取上述預定數量、以及比對上述計數之保險絲數量與上述讀取之預定數量。
  6. 一種操作方法,適用於操作一微處理器,包括:讀取複數第一保險絲,其中一預定數量之保險絲被選擇性地熔斷,且其中複數第一控制值自上述第一保險絲被提供至一微處理器之第一電路以控制上述微處理器之運作;計數上述第一保險絲中已熔斷之保險絲之數量;自複數第二保險絲讀取上述預定數量,其中上述第二保險絲係根據上述預定數量之已熔斷保險絲而被熔斷;比對上述計數之保險絲數量與上述讀取之預定數量;以及於上述計數之保險絲數量不同於上述讀取之預定數量時避免上述微處理器提取與執行使用者程式指令。
  7. 如申請專利範圍第6項所述之操作方法,其中上述 第二保險絲之熔斷係更根據一錯誤修正值所進行,且上述錯誤修正值係用以修正上述讀取之預定數量所發生之一錯誤。
  8. 如申請專利範圍第7項所述之操作方法,更包括:自上述第一保險絲直接且未經過錯誤修正地將上述第一控制值係提供至上述第一電路以控制上述微處理器之運作,其中上述第二保險絲之熔斷係更根據複數第二控制值所進行,且上述操作微處理器之方法更包括:修正自上述第二保險絲所讀取之上述第二控制值之一錯誤;以及將修正之上述第二控制值提供至上述微處理器之第二電路以控制上述微處理器之運作。
  9. 如申請專利範圍第6項所述之操作方法,更包括:於上述計數之保險絲數量不同於上述讀取之預定數量時,向一系統軟體回報錯誤。
  10. 如申請專利範圍第6項所述之操作方法,其中上述計數第一保險絲中已熔斷之保險絲數量之步驟、上述自第二保險絲讀取上述預定數量之步驟、上述比對之步驟、以及上述避免提取與執行使用者程式指令之步驟係執行於上述微處理器重設之時。
  11. 一種微處理器,包括:複數第一保險絲,根據一預定值被選擇性地熔斷,其中上述預定值係用以供上述微處理器之電路以控制上述微處理器之運作;以及 複數第二保險絲,根據錯誤偵測資訊被選擇性地熔斷,其中上述錯誤偵測資訊係用以偵測上述第一保險絲中之一錯誤,該錯誤指示上述微處理器之一熔斷保險絲回傳一非熔斷二進制值,其中上述微處理器為因應一第一使用者程式指令,而根據來自上述第二保險絲之錯誤偵測資訊決定是否存在上述第一保險絲中之上述錯誤。
  12. 如申請專利範圍第11項所述之微處理器,其中上述微處理器為因應上述第一使用者程式指令,而更產生一錯誤狀態值以指示是否存在上述第一保險絲中之上述錯誤,其中上述微處理器為因應一第二使用者程式指令,而回傳上述錯誤狀態值。
  13. 如申請專利範圍第11項所述之微處理器,其中於上述微處理器根據來自上述第二保險絲之錯誤偵測資訊決定存在上述第一保險絲中之上述錯誤時,上述微處理器避免提取與執行所有的使用者程式指令。
  14. 如申請專利範圍第11項所述之微處理器,更包括:一微碼單元,用以根據來自上述第二保險絲之錯誤偵測資訊決定是否存在上述第一保險絲中之上述錯誤。
  15. 如申請專利範圍第11項所述之微處理器,其中上述錯誤偵測資訊包括由上述第一保險絲被選擇性地熔斷時根據之上述預定值所計算出之一錯誤偵測與修正值,其中上述微處理器更藉由使用上述錯誤偵測與修正值並根據來自上述第二保險絲之錯誤偵測資訊決定是否存在上述第一 保險絲中之上述錯誤、以及於上述錯誤存在時根據上述錯誤偵測與修正值提供一修正之上述預定值至上述電路。
  16. 如申請專利範圍第11項所述之微處理器,其中上述錯誤偵測資訊包括上述第一保險絲中被選擇性地熔斷之保險絲之一預定數量,其中上述微處理器更藉由讀取上述第一保險絲以計數其中已熔斷之保險絲數量並比對計數之數量與上述預定數量,去根據來自上述第二保險絲之錯誤偵測資訊決定是否存在上述第一保險絲中之上述錯誤。
  17. 如申請專利範圍第11項所述之微處理器,其中上述錯誤偵測資訊包括上述第一保險絲中被選擇性地熔斷之保險絲之一預定數量、以及上述預定數量之一布林補數,其中上述微處理器更藉由將上述預定數量進行布林補數運算以產生一結果並比對該結果與上述布林補數,去根據來自上述第二保險絲之錯誤偵測資訊決定是否存在上述第一保險絲中之上述錯誤。
  18. 一種測試方法,適用於執行一微處理器之一使用者程式啟動之測試,包括:於上述微處理器之運作中執行一第一使用者程式指令;以及決定上述微處理器之複數第一保險絲中是否存在一錯誤指示出一熔斷保險絲回傳一非熔斷二進制值,其中上述第一保險絲係根據一預定值被選擇性地熔斷,上述預定值係用以供上述微處理器之電路以控制上述微處理器之運作; 其中上述決定步驟係使用來自上述微處理器之複數第二保險絲之錯誤偵測資訊所執行,上述第二保險絲係根據上述錯誤偵測資訊被選擇性地熔斷;其中上述決定步驟之執行係因應上述第一使用者程式指令之執行。
  19. 如申請專利範圍第18項所述之測試方法,更包括:因應上述決定步驟而產生一錯誤狀態值以指示上述第一保險絲中是否存在一熔斷保險絲回傳一非熔斷二進制值之上述錯誤;以及因應一第二使用者程式指令之執行而回傳上述錯誤狀態值。
  20. 如申請專利範圍第18項所述之測試方法,更包括:於上述決定步驟指示上述第一保險絲中存在上述錯誤時,避免提取並執行所有的使用者程式指令。
  21. 如申請專利範圍第18項所述之測試方法,其中上述錯誤偵測資訊包括由上述第一保險絲被選擇性地熔斷時根據之上述預定值所計算出之一錯誤偵測與修正值,其中上述決定步驟包括:使用上述錯誤偵測與修正值以決定上述第一保險絲中是否存在上述錯誤;以及於決定存在錯誤時,使用上述錯誤偵測與修正值提供一修正之預定值至上述電路。
  22. 如申請專利範圍第18項所述之測試方法,其中上述錯誤偵測資訊包括上述第一保險絲中被選擇性地熔斷之 保險絲之一預定數量,其中上述決定步驟包括:讀取上述第一保險絲以計數其中已熔斷之保險絲之數量;以及比對上述計數之數量與讀取自上述第二保險絲之上述預定數量。
  23. 如申請專利範圍第18項所述之測試方法,其中上述錯誤偵測資訊包括上述第一保險絲中被選擇性地熔斷之保險絲之一預定數量、以及上述預定數量之一布林補數,其中上述決定步驟包括:將讀取自上述第二保險絲之上述預定數量進行布林補數運算以產生一結果;以及比對該結果與讀取自上述第二保險絲之上述布林補數。
  24. 一種測試方法,適用於實地測試一微處理器以決定該微處理器之複數保險絲是否有一或多個已熔斷保險絲於被讀取時回傳非熔斷值,包括:因應上述微處理器之一重設而讀取上述保險絲中之一預定數量之保險絲;決定上述預定數量之保險絲是否指示應針對上述保險絲執行測試;於上述預定數量之保險絲指示應針對上述保險絲執行測試時,針對上述保險絲執行測試以決定是否有一或多個已熔斷保險絲於被讀取時不回傳熔斷值而是回傳非熔斷值;以及於上述預定數量之保險絲指示不應針對上述保險絲執 行測試時,避免執行上述測試。
  25. 如申請專利範圍第24項所述之測試方法,其中上述決定步驟包括將讀取自上述預定數量之保險絲之數值作布林或運算,並決定布林或運算後的結果是否為真。
  26. 一種微處理器,包括:複數第一保險絲,根據複數控制值被選擇性地熔斷;複數第二保險絲,根據計算自上述控制值之一錯誤修正值被選擇性地一併熔斷;一控制硬體,用以接收上述控制值並將上述控制值提供至上述微處理器之電路以控制上述微處理器之運作;以及一狀態機,序列地耦接至上述控制硬體、上述第一保險絲、以及第二保險絲,用將上述控制值自上述第一保險絲序列地掃描至上述控制硬體、並將上述控制值與上述錯誤修正值序列地掃描至一第一暫存器,其中上述微處理器係用以執行以下步驟:自上述第一暫存器讀取上述控制值與上述錯誤修正值;使用上述錯誤修正值偵測並修正上述控制值中之一錯誤;將修正之上述控制值寫入一第二暫存器;以及使上述狀態機將修正之上述控制值自上述第二暫存器序列地掃描至上述控制硬體。
  27. 如申請專利範圍第26項所述之微處理器,其中上 述狀態機係用以因應上述微處理器之一重設而將上述控制值自上述第一保險絲序列地掃描至上述控制硬體。
  28. 如申請專利範圍第26項所述之微處理器,更包括:一微碼單元,用以執行上述讀取步驟、上述偵測與修正步驟、上述寫入步驟、以及上述使狀態機將修正之上述控制值自上述第二暫存器序列地掃描至上述控制硬體之步驟,其中上述微碼單元更用以使上述狀態機將上述控制值與上述錯誤修正值序列地掃描至上述第一暫存器,其中上述微碼單元包括由耦接至上述第一暫存器與上述第二暫存器之複數執行單元所執行之複數指令。
  29. 如申請專利範圍第26項所述之微處理器,其中上述控制值之一部分包括複數位址資訊,該位址資訊係用以針對上述控制值的每個資料資訊向上述狀態機指定上述控制硬體之一目的暫存器。
  30. 如申請專利範圍第26項所述之微處理器,其中上述微處理器係用以於無法使用上述錯誤修正值將上述控制值中之上述錯誤修正時,避免提取並執行使用者程式指令。
  31. 如申請專利範圍第26項所述之微處理器,其中上述微處理器係用以於無法使用上述錯誤修正值將上述控制值中之上述錯誤修正時,產生軟體可讀取之一錯誤狀態值。
  32. 如申請專利範圍第26項所述之微處理器,其中上述第一暫存器與上述第二暫存器係序列地耦接至上述狀態機。
  33. 一種初始化方法,適用於初始化一微處理器,包括: 將複數控制值自複數第一保險絲序列地掃描至上述微處理器之電路以控制上述微處理器之運作,其中上述第一保險絲係根據上述控制值被選擇性地熔斷;將上述控制值與一錯誤修正值分別自上述第一保險絲與複數第二保險絲序列地掃描至一第一暫存器,其中上述第二保險絲係根據計算自上述控制值之上述錯誤修正值被選擇性地一併熔斷;自上述第一暫存器讀取上述控制值與上述錯誤修正值;使用上述錯誤修正值偵測並修正上述控制值中之一錯誤;將修正之上述控制值寫入一第二暫存器;以及使修正之上述控制值從上述第二暫存器被序列地掃描至一控制硬體。
  34. 如申請專利範圍第33項所述之初始化方法,其中上述將控制值掃描至上述電路之步驟係因應上述微處理器之一重設而執行。
  35. 如申請專利範圍第33項所述之初始化方法,其中上述讀取步驟、上述偵測並修正之步驟、上述寫入步驟、以及上述使修正之上述控制值從上述第二暫存器被序列地掃描至上述控制硬體之步驟係由上述微處理器之一微碼單元所執行,其中上述微碼單元係用以發起將上述控制值與上述錯誤修正值分別自上述第一保險絲與上述第二保險絲序列地掃描至上述第一暫存器之步驟,其中上述微碼單元 包括由耦接至上述第一暫存器與上述第二暫存器之複數執行單元所執行之複數指令。
  36. 如申請專利範圍第33項所述之初始化方法,其中上述控制值之一部分包括複數位址資訊,該位址資訊係用以針對上述控制值之每個資料資訊指定一目的暫存器。
  37. 如申請專利範圍第33項所述之初始化方法,更包括:於上述微處理器無法使用上述錯誤修正值修正上述控制值中之上述錯誤時,避免上述微處理器提取並執行使用者程式指令。
  38. 如申請專利範圍第33項所述之初始化方法,更包括:於上述微處理器無法使用上述錯誤修正值修正上述控制值中之上述錯誤時,產生軟體可讀取之一錯誤狀態值。
  39. 如申請專利範圍第33項所述之初始化方法,其中上述使修正之上述控制值從上述第二暫存器被序列地掃描至上述控制硬體之步驟係執行於上述微處理器提取並執行使用者程式指令之前。
  40. 一種微處理器,包括:複數第一保險絲,其中一預定數量之保險絲被選擇性地熔斷,且複數第一控制值自上述第一保險絲被提供至上述微處理器之第一電路以控制上述微處理器之運作;以及複數第二保險絲,根據上述預定數量之熔斷保險絲以及上述預定數量之一布林補數而被熔斷, 其中上述微處理器於重設時執行以下步驟:自上述第二保險絲讀取上述預定數量與上述布林補數;將讀取自上述第二保險絲之上述預定數量進行布林補數運算以產生一結果;比對該結果與讀取自上述第二保險絲之上述布林補數;以及於上述結果不同於讀取自上述第二保險絲之上述布林補數時,避免讀取並執行使用者程式指令。
  41. 如申請專利範圍第40項所述之微處理器,其中上述微處理器於重設時更執行以下步驟:讀取上述第一保險絲並計數其中已熔斷之保險絲數量;比對上述計數數量與讀取自上述第二保險絲之上述預定數量;以及於上述計數數量不同於讀取自上述第二保險絲之上述預定數量時,避免讀取並執行使用者程式指令。
  42. 如申請專利範圍第40項所述之微處理器,其中上述第一控制值係自上述第一保險絲直接且未經過錯誤修正地提供至上述第一電路以控制上述微處理器之運作,其中上述第二保險絲之熔斷係更根據複數第二控制值所進行,且上述微處理器更修正自上述第二保險絲所讀取之上述第二控制值之一錯誤、以及將修正之上述第二控制值提供至上述微處理器之第二電路以控制上述微處理器之運作。
  43. 如申請專利範圍第40項所述之微處理器,其中上述微處理器於上述計數數量不同於上述布林補數時,向一系統軟體回報錯誤。
  44. 如申請專利範圍第40項所述之微處理器,更包括:一微碼單元,用以讀取來自上述第二保險絲之上述預定數量與上述布林補數、將讀取自上述第二保險絲之上述預定數量作布林補數運算以產生一結果、以及比對該結果與讀取自上述第二保險絲之上述布林補數。
  45. 一種操作方法,適用於操作一微處理器,包括:將複數第一控制值自複數第一保險絲提供至上述微處理器之第一電路以控制上述微處理器之運作,其中上述第一保險絲之一預定數量之保險絲被選擇性地熔斷;自複數第二保險絲讀取上述預定數量以及上述預定數量之一布林補數,其中上述第二保險絲係根據上述預定數量之已熔斷保險絲與上述布林補數而被熔斷;將讀取自上述第二保險絲之上述預定數量作布林補數運算以產生一結果;比對上述結果與讀取自上述第二保險絲之上述布林補數;以及於上述結果不同於讀取自上述第二保險絲之上述布林補數時避免上述微處理器提取與執行使用者程式指令。
  46. 如申請專利範圍第45項所述之操作方法,其中上述第二保險絲之熔斷係更根據一錯誤修正值所進行,且上述錯誤修正值係用以修正上述讀取之預定數量所發生之一 錯誤。
  47. 如申請專利範圍第45項所述之操作方法,其中上述第一控制值自上述第一保險絲直接且未經過錯誤修正地被提供至上述第一電路以控制上述微處理器之運作,其中上述第二保險絲之熔斷係更根據複數第二控制值所進行,且上述方法更包括:修正自上述第二保險絲所讀取之上述第二控制值中之一錯誤;以及將修正之上述第二控制值提供至上述微處理器之第二電路以控制上述微處理器之運作。
  48. 如申請專利範圍第45項所述之操作方法,更包括:上述結果不同於讀取自上述第二保險絲之上述布林補數時,向一系統軟體回報錯誤。
  49. 如申請專利範圍第45項所述之操作方法,其中上述提供上述第一控制值之步驟、上述讀取上述預定數量以及上述布林補數之步驟、上述布林補數運算之步驟、上述比對之步驟、以及上述避免提取與執行使用者程式指令之步驟係執行於上述微處理器重設之時。
TW099125310A 2009-08-07 2010-07-30 微處理器以及其所適用之操作、測試、初始化方法 TWI416317B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US23224709P 2009-08-07 2009-08-07
US12/719,307 US8281222B2 (en) 2009-08-07 2010-03-08 Detection and correction of fuse re-growth in a microprocessor
US12/719,291 US8281198B2 (en) 2009-08-07 2010-03-08 User-initiatable method for detecting re-grown fuses within a microprocessor
US12/719,260 US8276032B2 (en) 2009-08-07 2010-03-08 Detection of uncorrectable re-grown fuses in a microprocessor
US12/719,322 US8281223B2 (en) 2009-08-07 2010-03-08 Detection of fuse re-growth in a microprocessor

Publications (2)

Publication Number Publication Date
TW201106151A TW201106151A (en) 2011-02-16
TWI416317B true TWI416317B (zh) 2013-11-21

Family

ID=43535696

Family Applications (1)

Application Number Title Priority Date Filing Date
TW099125310A TWI416317B (zh) 2009-08-07 2010-07-30 微處理器以及其所適用之操作、測試、初始化方法

Country Status (3)

Country Link
US (4) US8281222B2 (zh)
CN (1) CN103123597B (zh)
TW (1) TWI416317B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9041411B2 (en) * 2005-08-10 2015-05-26 Nxp B.V. Testing of an integrated circuit that contains secret information
US8234543B2 (en) * 2009-03-06 2012-07-31 Via Technologies, Inc. Detection and correction of fuse re-growth in a microprocessor
CN101998636B (zh) * 2009-08-14 2013-07-31 电信科学技术研究院 一种终端标识的使用方法、系统和设备
US8639970B2 (en) * 2011-04-25 2014-01-28 Lsi Corporation Isolating and correcting VPD data mismatch and/or corruption
US20140013082A1 (en) * 2011-12-30 2014-01-09 Intel Corporation Reconfigurable device for repositioning data within a data word
IL300761A (en) 2013-08-05 2023-04-01 Immatics Biotechnologies Gmbh Innovative immunotherapy against several tumors, such as lung cancer, including NSCLC
TWI777194B (zh) 2013-08-05 2022-09-11 德商伊瑪提克斯生物科技有限公司 新穎肽類,細胞及其用於治療多種腫瘤的用途,其製造方法及包含其等之醫藥組成物(一)
US9348690B2 (en) 2013-08-21 2016-05-24 Via Alliance Semiconductor Co., Ltd. Correctable configuration data compression and decompression system
US9223715B2 (en) 2013-08-21 2015-12-29 Via Alliance Semiconductor Co., Ltd. Microprocessor mechanism for decompression of cache correction data
JP5657079B1 (ja) * 2013-10-24 2015-01-21 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
US9497099B2 (en) * 2013-12-16 2016-11-15 Artesyn Embedded Computing, Inc. Voting architecture for safety and mission critical systems
US9665490B2 (en) 2014-05-22 2017-05-30 Via Alliance Semiconductor Co., Ltd. Apparatus and method for repairing cache arrays in a multi-core microprocessor
US9524241B2 (en) 2014-05-22 2016-12-20 Via Alliance Semiconductor Co., Ltd. Multi-core microprocessor power gating cache restoral mechanism
US9395802B2 (en) 2014-05-22 2016-07-19 Via Alliance Semiconductor Co., Ltd. Multi-core data array power gating restoral mechanism
US9606933B2 (en) 2014-05-22 2017-03-28 Via Alliance Semiconductor Co., Ltd. Multi-core apparatus and method for restoring data arrays following a power gating event
US9583210B1 (en) * 2015-12-22 2017-02-28 Intel Corporation Fuse-based integrity protection
US10565121B2 (en) * 2016-12-16 2020-02-18 Alibaba Group Holding Limited Method and apparatus for reducing read/write contention to a cache
US10360989B2 (en) * 2017-12-04 2019-07-23 Micron Technology, Inc. Electronic device with a fuse-read trigger mechanism
US11645134B2 (en) * 2019-08-20 2023-05-09 Micron Technology, Inc. Apparatuses and methods for fuse error detection
US11561857B2 (en) * 2021-05-11 2023-01-24 Robert Bosch Gmbh Method for the secured storing of a data element to be stored by a computer program in an external memory

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5946497A (en) * 1996-05-17 1999-08-31 Advanced Micro Devices, Inc. System and method for providing microprocessor serialization using programmable fuses
US6386456B1 (en) * 1999-06-04 2002-05-14 International Business Machines Corporation Memory card identification system
TW200710674A (en) * 2005-05-17 2007-03-16 Ibm Processor, data processing system, and method for initializing a memory block
US7266025B2 (en) * 2003-10-03 2007-09-04 Kabushiki Kaisha Toshiba Semiconductor integrated circuit
TWI291657B (en) * 2005-12-09 2007-12-21 Tyan Computer Corp Initialization method for multiple processors

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2837433B2 (ja) 1989-06-05 1998-12-16 三菱電機株式会社 半導体記憶装置における不良ビット救済回路
US5206583A (en) * 1991-08-20 1993-04-27 International Business Machines Corporation Latch assisted fuse testing for customized integrated circuits
US5279975A (en) * 1992-02-07 1994-01-18 Micron Technology, Inc. Method of testing individual dies on semiconductor wafers prior to singulation
US5517455A (en) 1994-03-31 1996-05-14 Sgs-Thomson Microelectronics, Inc. Integrated circuit with fuse circuitry simulating fuse blowing
US5867505A (en) * 1996-08-07 1999-02-02 Micron Technology, Inc. Method and apparatus for testing an integrated circuit including the step/means for storing an associated test identifier in association with integrated circuit identifier for each test to be performed on the integrated circuit
TW374951B (en) 1997-04-30 1999-11-21 Toshiba Corp Semiconductor memory
US5889679A (en) 1997-07-15 1999-03-30 Integrated Device Technology, Inc. Fuse array control for smart function enable
US5973977A (en) 1998-07-06 1999-10-26 Pmc-Sierra Ltd. Poly fuses in CMOS integrated circuits
US6622208B2 (en) * 2001-03-30 2003-09-16 Cirrus Logic, Inc. System and methods using a system-on-a-chip with soft cache
US6687170B2 (en) 2001-12-06 2004-02-03 Infineon Technologies Richmond, Lp System and method for storing parity information in fuses
DE10162306A1 (de) 2001-12-19 2003-07-03 Philips Intellectual Property Verfahren und Anordnung zur Verifikation von NV-Fuses sowie ein entsprechendes Computerprogrammprodukt und ein entsprechendes computerlesbares Speichermedium
US6768694B2 (en) 2002-10-07 2004-07-27 International Business Machines Corporation Method of electrically blowing fuses under control of an on-chip tester interface apparatus
JP2004178674A (ja) * 2002-11-26 2004-06-24 Toshiba Microelectronics Corp 半導体メモリ
US6876594B2 (en) * 2002-12-26 2005-04-05 Texas Instruments Incorporated Integrated circuit with programmable fuse array
CN1514647A (zh) * 2003-07-29 2004-07-21 上海千里眼信息科技有限公司 远程视频和图像的视察系统
DE10338032B4 (de) * 2003-08-19 2009-12-17 Infineon Technologies Ag Prozessor mit elektronischen Sicherungen zum Speichern von Geheimdaten
US7139944B2 (en) 2003-08-25 2006-11-21 International Business Machines Corporation Method and system for determining minimum post production test time required on an integrated circuit device to achieve optimum reliability
US7030641B1 (en) 2003-09-18 2006-04-18 Analog Devices, Inc. Programmable fuse state determination system and method
US20050144524A1 (en) 2003-12-04 2005-06-30 International Business Machines Corporation Digital reliability monitor having autonomic repair and notification capability
JP2005174386A (ja) 2003-12-08 2005-06-30 Elpida Memory Inc 半導体集積回路装置
US6988237B1 (en) 2004-01-06 2006-01-17 Marvell Semiconductor Israel Ltd. Error-correction memory architecture for testing production errors
US7222274B2 (en) * 2004-02-25 2007-05-22 International Business Machines Corporation Testing and repair methodology for memories having redundancy
US7484140B2 (en) 2004-07-07 2009-01-27 Freescale Semiconductor, Inc. Memory having variable refresh control and method therefor
US7236007B1 (en) * 2004-09-24 2007-06-26 Altera Corporation Methods and systems for achieving improved intellectual property protection for programmable logic devices
JP2006210670A (ja) 2005-01-28 2006-08-10 Nec Electronics Corp 半導体装置
JP2006268971A (ja) * 2005-03-24 2006-10-05 Elpida Memory Inc 半導体記憶装置及びそのテスト方法
JP2006294096A (ja) 2005-04-07 2006-10-26 Elpida Memory Inc ヒューズ検出方法、及びヒューズ検出回路を備えた半導体記憶装置
WO2007027607A2 (en) 2005-08-31 2007-03-08 International Business Machines Corporation Random access electrically programmable-e-fuse rom
US7401270B2 (en) 2005-10-20 2008-07-15 Infineon Technologies Ag Repair of semiconductor memory device via external command
US7489180B2 (en) * 2006-07-28 2009-02-10 Texas Instruments Incorporated Systems and methods for efuse fusing time reduction
US7551470B2 (en) * 2006-10-19 2009-06-23 International Business Machines Corporation Non volatile memory RAD-hard (NVM-rh) system
US7827390B2 (en) 2007-04-10 2010-11-02 Via Technologies, Inc. Microprocessor with private microcode RAM
WO2008133680A1 (en) * 2007-04-26 2008-11-06 Agere Systems Inc. Embedded memory repair on the basis of fuse burn state machine and a fus download state machine
US20090031108A1 (en) 2007-07-24 2009-01-29 Via Technologies Configurable fuse mechanism for implementing microcode patches
JP5169135B2 (ja) * 2007-10-22 2013-03-27 サンケン電気株式会社 スイッチング電源装置
US8077531B2 (en) * 2008-01-16 2011-12-13 Hynix Semiconductor Inc. Semiconductor integrated circuit including column redundancy fuse block
US7729163B2 (en) 2008-03-26 2010-06-01 Micron Technology, Inc. Phase change memory
US7663957B2 (en) * 2008-05-27 2010-02-16 Via Technologies, Inc. Microprocessor with program-accessible re-writable non-volatile state embodied in blowable fuses of the microprocessor
US7978493B1 (en) * 2008-09-18 2011-07-12 Altera Corporation Data encoding scheme to reduce sense current
US8127184B2 (en) * 2008-11-26 2012-02-28 Qualcomm Incorporated System and method including built-in self test (BIST) circuit to test cache memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5946497A (en) * 1996-05-17 1999-08-31 Advanced Micro Devices, Inc. System and method for providing microprocessor serialization using programmable fuses
US6386456B1 (en) * 1999-06-04 2002-05-14 International Business Machines Corporation Memory card identification system
US7266025B2 (en) * 2003-10-03 2007-09-04 Kabushiki Kaisha Toshiba Semiconductor integrated circuit
TW200710674A (en) * 2005-05-17 2007-03-16 Ibm Processor, data processing system, and method for initializing a memory block
TWI291657B (en) * 2005-12-09 2007-12-21 Tyan Computer Corp Initialization method for multiple processors

Also Published As

Publication number Publication date
TW201106151A (en) 2011-02-16
US20110035616A1 (en) 2011-02-10
US20110035623A1 (en) 2011-02-10
CN103123597B (zh) 2015-10-28
US8281222B2 (en) 2012-10-02
US20110035622A1 (en) 2011-02-10
US8281223B2 (en) 2012-10-02
CN103123597A (zh) 2013-05-29
US8281198B2 (en) 2012-10-02
US20110035617A1 (en) 2011-02-10
US8276032B2 (en) 2012-09-25

Similar Documents

Publication Publication Date Title
TWI416317B (zh) 微處理器以及其所適用之操作、測試、初始化方法
US8234543B2 (en) Detection and correction of fuse re-growth in a microprocessor
US7376887B2 (en) Method for fast ECC memory testing by software including ECC check byte
US8261140B2 (en) Uninitialized memory detection using error correction codes and built-in self test
US7487397B2 (en) Method for cache correction using functional tests translated to fuse repair
JPS6229827B2 (zh)
JPH0799498B2 (ja) 誤りのあるマイクロ命令を訂正する装置
CN105304144A (zh) 存储器错误检测方法及装置
Wagner et al. Shielding against design flaws with field repairable control logic
JPH0548502B2 (zh)
JP3996623B2 (ja) ルックアップしたエントリーの重複検出方法および装置
US10910082B1 (en) Apparatus and method
US8069376B2 (en) On-line testing for decode logic
CN101894062B (zh) 微处理器以及其所适用的操作方法
CN101794249B (zh) 微处理器及初始化微处理器的方法
CN101930391B (zh) 微处理器及其所适用的测试方法
CN101930390B (zh) 微处理器及其所适用的操作方法
JP7160860B2 (ja) メモリエラーを訂正するためのシステム及び方法
CN101930386B (zh) 微处理器及其所适用的初始化方法
US8806318B2 (en) Fault position determining circuit, storage device and information processing apparatus
WO2023108600A1 (en) System, method and apparatus for reducing power consumption of error correction coding using compacted data blocks
US9645882B2 (en) Field repairable logic
US9921906B2 (en) Performing a repair operation in arrays