TWI402749B - 微處理器及其可複寫非依電性狀態之新值寫入方法 - Google Patents
微處理器及其可複寫非依電性狀態之新值寫入方法 Download PDFInfo
- Publication number
- TWI402749B TWI402749B TW098117058A TW98117058A TWI402749B TW I402749 B TWI402749 B TW I402749B TW 098117058 A TW098117058 A TW 098117058A TW 98117058 A TW98117058 A TW 98117058A TW I402749 B TWI402749 B TW I402749B
- Authority
- TW
- Taiwan
- Prior art keywords
- fuse
- microprocessor
- fuses
- virtual
- value
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 35
- 230000004044 response Effects 0.000 claims description 30
- 238000007664 blowing Methods 0.000 claims description 19
- 230000007717 exclusion Effects 0.000 claims description 17
- 230000008859 change Effects 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 2
- 239000004744 fabric Substances 0.000 claims 1
- 230000004927 fusion Effects 0.000 claims 1
- 230000001568 sexual effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 29
- 230000015654 memory Effects 0.000 description 27
- 230000008569 process Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 241000985694 Polypodiopsida Species 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000005684 electric field Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 201000009409 embryonal rhabdomyosarcoma Diseases 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000002844 melting Methods 0.000 description 1
- 230000008018 melting Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000005476 soldering Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C17/00—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
- G11C17/14—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
- G11C17/16—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM using electrically-fusible links
-
- 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/30003—Arrangements for executing specific machine instructions
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C17/00—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
- G11C17/14—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
- G11C17/18—Auxiliary circuits, e.g. for writing into memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microcomputers (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本申請案主張於2008年5月27日所申請之美國臨時申請案第61/056,213號之權利,其完整內容在此處納入為參考資料。
本發明係有關於微處理器,特別是有關於將非依電性狀態儲存於一微處理器中。
習知上,電腦系統包括多種形式之可複寫非依電性(non-volatile)記憶體,例如:磁帶、碟片、互補金氧半導體、電池或快閃記憶體。然而,這些資源通常由系統軟體管理,像是基本輸入輸出系統(BIOS)或作業系統,因此並沒有辦法透過一些應用軟體或微處理器作為微處理器內部使用。再者,這些記憶體位於系統之微處理器外部。
為了提供序號或其他晶片特定資訊,微處理器會具備少量之非依電性隨機存取記憶體(non-volatile random access memory,NVRAM),位於同一封裝但不同於該微處理器核心之另一晶粒(die)上。其中,兩個晶粒之間係以鍵線(bond wire)耦接。舉例而言,如Lee et al所揭露之美國第5,790,783與5,946,497號專利。然而,此解決方式將增加封裝之成本。有另外一種解決方式,可將該非依電性隨機存取記憶體與該微處理器製造於同一晶粒上,例如可建立於同一微控制器之中。然而,為包括該依電性隨機存取記憶體,晶粒上需要額外之氧化層,因而亦會增加封裝之成本。
在許多情況下,微處理器內部具有可透過程式(例如系統軟體)進行多次讀取及寫入之非依電性狀態(non-volatile state)是有幫助的。然而,如上所述,在微處理器上製造非依電性隨機存取記憶體(像是快閃記憶體)所費不貲,而且與微處理器相同封裝內增加獨立之非依電性隨機存取記憶體亦頗昂貴。更進一步,對於許多應用而言,所需之非依電性狀態數量較小。因此,需要一種具有非依電性狀態之微處理器,其中上述非依電性狀態係可透過系統軟體重複寫入(re-writable)。
本發明係揭露一微處理器,用以提供一或多個非依電性狀態位元,係以複數之熔絲實現。每一非依電性位元於該微處理器運作時,可利用程式控制下進行多次寫入,且藉由程式讀取回來,因此,該等熔絲對於程式而言,即為一可複寫非依電性狀態(re-writeable non-volatile state,RNS)。如此一來,該非依電性位元之功能相似於具有允許寫入有限次數之快閃記憶體。
一方面,本發明係揭露一微處理器,執行用來定址可複寫非依電性狀態之一指令,用以使該微處理器將一新值寫入該可複寫非依電性狀態中。於該微處理器解碼該指令後,複數之熔絲,分別由該微處理器讀取來判斷每一熔絲為已熔斷或未熔斷。每一熔絲被讀取為已熔斷時提供一第一布林值,而被讀取為未熔斷時提供一第二布林值。該等熔絲初始為未熔斷。一布林邏輯單元耦接於該等熔絲,係被配置用以對從該等熔絲所讀取之數值執行布林運算,以決定該可複寫非依電性狀態之一目前值。一熔絲熔斷裝置耦接於該等熔絲,當該新值不同於該可複寫非依電性狀態之目前值時,係被配置用以從該等熔絲中熔斷至少一個未熔斷熔絲,以將該可複寫非依電性狀態之目前值改變為該指令所指定之新值。回應於該微處理器所執行之一程式且多次執行之該指令,該微處理器係被配置用以多次讀取該等熔絲、執行布林運算、以及熔斷至少一個未熔斷熔絲以將該可複寫非依電性狀態之目前值改變為該新值。
另一方面,本發明提供一種可複寫非依電性狀態之新值寫入方法,適用於一微處理器,該可複寫非依電性狀態由該微處理器所執行之一指令定址。該方法包括透過該微處理器讀取複數之熔絲來判斷每一熔絲為已熔斷或未熔斷,用以回應該微處理器所解碼之該指令。每一熔絲被讀取為已熔斷時提供一第一布林值,而被讀取為未熔斷時提供一第二布林值。該等熔絲初始為未熔斷。該方法亦包括利用一布林邏輯單元,對從該等熔絲所讀取之數值執行布林運算,以決定該可複寫非依電性狀態之一目前值。該方法亦包括當該新值不同於該可複寫非依電性狀態之目前值時,利用一熔絲熔斷裝置,從該等熔絲中熔斷至少一個未熔斷熔絲,用以將該可複寫非依電性狀態之目前值改變為該指令所指定之新值。該方法亦包括回應於該微處理器所執行之一程式且多次執行之該指令,多次執行上述讀取之步驟、執行布林運算之步驟、以及熔斷至少一個未熔斷熔絲以將該可複寫非依電性狀態之目前值改變為一新值之步驟。
另一方面,本發明提供一種微處理器,具有可複寫非依電性狀態。為回應偵測到一既定條件,由該微處理器讀取來判斷每一熔絲為已熔斷或未熔斷。每一熔絲被讀取為已熔斷時提供一第一布林值,而被讀取為未熔斷時提供一第二布林值。該等熔絲初始為未熔斷。一布林邏輯單元耦接於該等熔絲,係被配置用以對從該等熔絲所讀取之數值執行布林運算,以決定該可複寫非依電性狀態之一目前值。一熔絲熔斷裝置耦接於該等熔絲,當一新值不同於該可複寫非依電性狀態之目前值時,係被配置用以從該等熔絲中熔斷至少一個未熔斷熔絲,以將該可複寫非依電性狀態之目前值改變為該新值。為回應多次偵測到既定條件,當該新值不同於該可複寫非依電性狀態之目前值時,該微處理器係被配置用以多次讀取該等熔絲、執行布林運算、以及熔斷至少一個未熔斷熔絲以將該可複寫非依電性狀態之目前值改變為該新值。
另一方面,本發明提供一種可複寫非依電性狀態之新值寫入方法,適用於一微處理器,該可複寫非依電性狀態由該微處理器定址。該方法包括為回應偵測到一既定條件,回應偵測到一既定條件,透過該微處理器讀取複數之熔絲來判斷每一熔絲為已熔斷或未熔斷。每一熔絲被讀取為已熔斷時提供一第一布林值,而被讀取為未熔斷時提供一第二布林值。該等熔絲初始為未熔斷。該方法亦包括利用一布林邏輯單元,對從該等熔絲所讀取之數值執行布林運算,以決定該可複寫非依電性狀態之一目前值。該方法亦包括當該新值不同於該可複寫非依電性狀態之目前值時,利用一熔絲熔斷裝置,從該等熔絲中熔斷至少一個未熔斷熔絲,用以將該可複寫非依電性狀態之目前值改變為該新值。該方法亦包括為回應多次偵測到既定條件,多次執行上述讀取之步驟、執行布林運算之步驟、以及熔斷至少一個未熔斷熔絲以將該可複寫非依電性狀態之目前值改變為該新值之步驟。
另一方面,本發明提供一種微處理器,執行用來定址可複寫非依電性狀態之一指令,用以使該微處理器將一新值寫入該可複寫非依電性狀態中。該微處理器包括複數之虛擬熔絲,每一虛擬熔絲包括複數之實體熔絲。每一實體熔絲分別由該微處理器讀取來判斷每一實體熔絲為已熔斷或未熔斷。該微處理器計算該等實體熔絲之布林或運算,當該等實體熔絲至少其中之一被讀取為已熔斷,用以產生該虛擬熔絲之一第一布林值,而當該等實體熔絲被讀取均不為已熔斷時,則產生一第二布林值。該等實體熔絲初始為未熔斷。該微處理器包括複數之虛擬位元,每一虛擬位元包括複數之虛擬熔絲。該微處理器計算該等虛擬熔絲之布林互斥運算,用以產生該虛擬位元之數值。該微處理器係被配置用以對從該等實體熔絲所讀取之數值執行布林運算,用以決定該虛擬字元之一目前值,比較該虛擬字元之每一位元及由該指令所寫入新值之每一位元,以及當該新值不同於該虛擬字元之目前值時,從該等實體熔絲中熔斷至少一個未熔斷熔絲,以將該虛擬字元之目前值改變為該指令所指定之新值。
本發明所揭露之微處理器,具有以熔絲實現之可複寫非依電性狀態,成本遠低於將快閃記憶體製造於微處理器晶片上之成本,以及與微處理器處同一封裝內但位於另一晶粒之快閃記憶體。另一項優點為微處理器封裝外,並不需要容易成為安全漏洞之外部非依電性隨機存取記憶體,例如:從一印刷電路板解焊、重新編程並重焊回印刷電路板上。另一方面,於微處理器內部中,利用熔絲實現之可複寫非依電性狀態,在微處理器讀取及執行任一程式碼之前,將有助於微處理器存取以熔絲實現之狀態,用以判斷微處理器是否需進入一降級效能狀態,甚至藉由完全限制讀取及執行外部程式碼,使微處理器本身除能(disable)。
為使本發明之上述目的、特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖示,詳細說明如下。
參考第1圖,係顯示依據本發明之一微處理器100方塊圖。如圖所示,該微處理器100包括一指令快取記憶體102、一指令解碼器104、一微碼唯讀記憶體106、一通用暫存器(general purpose)108與一執行單元112,以及其它未顯示之功能性單元。除此之外,該微處理器100包括熔絲模組114、以及耦接於該熔絲模組114之一熔絲熔斷裝置116,能夠分別定址與熔斷該熔絲模組114內之每一熔絲。該微處理器100之執行單元112提供寫入位址及寫入資料給該熔絲熔斷裝置116,而該熔絲熔斷裝置116將該寫入位址及寫入資料緩衝於該熔絲模組114。該熔絲熔斷裝置116亦將一充電輸出提供至該熔絲模組114,用以熔斷熔絲。由該熔絲模組114將讀取資料傳送給該執行單元112,用以回應該執行單元112傳送至該熔絲模組114之一讀取位址。於此實施例中,該熔絲模組114及該熔絲熔斷裝置116用以將利用熔絲實現之可複寫非依電性狀態(fuse-embodied re-writable non-volatile state,FERNS),供給該微處理器100上所執行之程式使用。
該熔絲模組114之熔絲係與記憶體單元有所區別。雖然一熔絲與一記憶體單元均可儲存一個二進位狀態,不過一熔絲與一記憶體單元相異處在於,一熔絲從一預設狀態(未熔斷,意即導電中)改變至另一狀態後(已熔斷,意即未導電),該熔絲無法回復至該預設狀態(由已熔斷至未熔斷)。相對地,一記憶體單元可於一預設狀態及另一狀態間切換,並多次回復至該預設狀態。舉例來講,一可抹除可程式化唯讀記憶體(erasable programmable read only memory,EPROM)或一電子可抹除可程式化唯讀記憶體(electronically erasable programmable read only memory,EEPROM)單元可從一預設狀態改變至另一狀態,然後同一個實體單元可藉由紫外線或電場再各自回復至該預設狀態,因此,從預設到另一狀態再到預設這樣的狀態循環可以多次執行。相反地,一實體熔絲一旦被熔斷,那同樣的熔絲無法為未熔斷。依據熔絲內部之連接與熔絲之設計,一已熔斷之熔絲可被讀取為二進位之“0”或二進位之“1”,則一未熔斷之熔絲可分別被讀取為二進位之“1”或“0”。
該指令快取記憶體102快速存取(cache)程式之指令。於一實施例中,該程式指令包括具有WRMSR及RDMSR指令之x86結構指令,用以讀寫該微處理器100之特定模組暫存器(model specific register,MSR)。於該特定模組暫存器中,該WRMSR及RDMSR指令透過ECX暫存器指定該特定模組暫存器位址空間內用來寫入或讀取之位址。如此一來,該WRMSR及RDMSR指令使用它們自己的位址空間(於此為特定模組暫存器之位址空間)。於一實施例中,FERNS於特定模組暫存器之位址空間中佔一位址範圍。
透過EDX:EAX暫存器之WRMSR指令,該程式載入欲寫入定址特定模組暫存器之資料,並透過EDX:EAX暫存器之RDMSR指令,接收從定址特定模組暫存器所讀取之資料。該指令解碼器104對從該指令快取記憶體102所擷取之程式指令進行解碼。特別是當該指令解碼器104處理到一WRMSR或RDMSR指令時,則呼叫該微碼唯讀記憶體106之一微碼常式(routine)執行該指令。於此實施例中,若該WRMSR或RDMSR指令於FERNS位址範圍內定址一特定模組暫存器,則該微碼常式執行讀取以及/或者熔斷該等熔絲114之步驟,並使該執行單元112讀取該等熔絲114之數值。於一實施例中,於FERNS位址範圍內指定一位址之一WRMSR指令,與習知之一WRMSR指令些許差異處在於,若該微處理器100並沒有成功執行該指令,像是該熔絲模組114中沒有可以用來更新FERNS新值而進行熔斷之熔絲,則前者之WRMSR指令產生一例外(exception)(例如:一x86機器檢查例外,#MC)。
於一實施例中,該熔絲熔斷裝置116為一電荷泵(charge pump),用以累加電容上之電荷,並將足以熔斷熔絲之電荷釋放至熔絲輸入端。然而,需注意的是,該熔絲熔斷裝置包含該處理器內部其它能夠熔斷熔絲之實施方式。
於另一實施例中,回應於偵測到一既定條件或事件,該微處理器100自己更新FERNS,而不是由一程式指令寫入。舉例而言,該微處理器100可持續監視一內部條件,諸如微處理器100之晶片溫度,或者一錯誤次數,像是一記憶體錯誤次數,而當溫度或錯誤次數超過一臨界值時,該微處理器100熔斷FERNS的一或多個熔絲,用以更新FERNS之數值,或許是增加FERNS之數值。以此方式,則FERNS之功能為一非依電性計數器,用以儲存超過臨界值之次數。若該非依電性計數超過一既定臨界值,該微處理器100可採取一適當措施,例如傳送一訊息、或者將該微處理器100全部或部份除能。
參考第2圖,係顯示第1圖之熔絲模組114方塊圖。於第2圖之實施例中,該微處理器100包括64個實體熔絲模組204,每一實體熔絲模組204具有64個實體熔絲(physical fuse,PF)202,而每一實體熔絲(PF)202可由該熔絲熔斷裝置116各自熔斷。於一實施例中,一微指令能夠由一實體熔絲模組204讀取所有64個實體熔絲202之數值,然後將該數值寫入至該微處理器100之一臨時暫存器(temporary register)中,用以供其它微碼指令操作。第7圖詳細說明該等實體熔絲模組204之介面。在功能性單元之佈局處理完之後,可將該等實體熔絲202放置於晶片腳位之未使用空間中,就積體電路之晶片面積而言,成本相對地較少。於一實施例中,當該微處理器100所讀取之一未熔斷實體熔絲之數值為二進位之0時,此即為預設值,而當該微處理器100讀取一已熔斷實體熔絲時,其值則為另一數值,即為二進位之1。
參考第3圖,係顯示於第2圖之實體熔絲模組204中,包括複數之實體熔絲(PF)202之一虛擬熔絲(virtual fuse,VF)302示意方塊圖。熔斷該等實體熔絲(PF)202也許相對不可靠。因此,依據一實施例,萬一實體熔絲202之熔斷不成功時,可利用一虛擬熔絲(VF)302合併多餘之實體熔絲202。一虛擬熔絲302之數值,係為該虛擬熔絲302相關之該等實體熔絲202所讀取數值之布林邏輯或運算(Boolean OR)304。於一實施例中,該邏輯或運算由處理器之硬體執行。於另一實施例中,該邏輯或運算由微碼指令執行。意即,首先該微碼先將一或多個實體熔絲模組204之實體熔絲202之數值讀取至一臨時暫存器中。接下來,該微碼對相關於該虛擬熔絲302之該等實體熔絲202數值進行邏輯或運算,用以產生該虛擬熔絲302之數值。由於一實體熔絲202之預設值為二進位之0,因此一虛擬熔絲302之預設值為二進位之0。於一實施例中,當該微處理器100欲“熔斷”一虛擬熔絲302時,該微處理器100實際上熔斷所有與該虛擬熔絲302相關之實體熔絲202。如此一來,由於與該虛擬熔絲302相關之實體熔絲202之布林或運算,只要成功熔斷至少一個實體熔絲202,則可正確讀取該虛擬熔絲302之數值(例如:二進位之1)。
於一實施例中,當該微處理器100欲熔斷一虛擬熔絲302時,便指示該熔絲熔斷裝置116依序熔斷該等實體熔絲202,用以產生一虛擬熔絲302。於另一實施例中,該微處理器100指示該熔絲熔斷裝置116同時熔斷該等實體熔絲202,用以產生一虛擬熔絲302。於一實施例中,該微處理器100僅熔斷單一個實體熔絲202,然後再確認該實體熔絲202是否已成功熔斷,而非熔斷所有實體熔絲202來產生一虛擬熔絲302。若已成功熔斷,則該微處理器100毋需熔斷虛擬熔絲302所剩餘之實體熔絲202;否則,該微處理器100會試圖熔斷虛擬熔絲302之下一個實體熔絲202,並且重複該流程直到確認一實體熔絲202已成功熔斷為止。相較於該微處理器100完全熔斷虛擬熔絲302之所有實體熔絲202,此實施例具有更快速且耗電量較少之優點。
參考第4圖,係顯示於第3圖中,包括複數之虛擬熔絲(VF)302之一虛擬位元(virtual bit,VB)402示意方塊圖。該虛擬位元(VB)402具備FERNS之可複寫特性。一虛擬位元402之數值,係為該虛擬位元402相關之該等虛擬熔絲302所讀取數值之布林邏輯互斥運算(Boolean XOR)404。於一實施例中,該邏輯互斥運算由硬體執行。於另一實施例中,該邏輯互斥運算由微碼指令執行。意即,該微碼將該虛擬位元402相關之該等虛擬熔絲302之數值進行布林互斥運算,用以產生該虛擬位元402之數值。因此,一虛擬位元402之預設值為二進位之0。當一程式指令指示該微處理器100將一個二進位數值寫入至一虛擬位元402時,該微處理器100首先讀取該虛擬位元402,用以判斷目前值是否不同於欲寫入之數值。若不相同,則該微處理器100將與該虛擬位元402相關之下一個未熔斷虛擬熔絲302熔斷,用以切換(toggle)其數值。由於互斥運算之特性,此一操作將會切換該虛擬位元402之數值。若目前之數值與欲寫入之數值相同,則該微處理器100不熔斷任何實體熔絲202。當不必要時不熔斷該等實體熔絲202,該等實體熔絲202便可被保留下來,而可增加一FERNS虛擬位元(VB)402之寫入次數。對於FERNS而言,一虛擬位元(VB)402之一寫入(例如:一WRMSR指令於該特定模組暫存器位址空間之FERNS範圍中指定一位址、或是由該微處理器100本身內部所開始之一寫入,用以回應偵測到一事件或既定條件),需要改變其位元值(意即,將“1”寫入至目前具有“0”值之FERNS之一位元中、或者將“0”寫入至目前具有“1”值之FERNS之一位元中),於此稱為一切換寫入(toggling write)。由此可知,透過切換寫入,該虛擬位元402之寫入次數與相關於虛擬位元402之該等虛擬熔絲302之數量相等(或者,於可變配置之情況下,如第12及13圖之實施例,資料虛擬熔絲1204之數量係與一虛擬位元402相關)。以下將說明與一虛擬位元402相關之虛擬熔絲302之數量可為固定、或者可變。
參考第5a及5b圖,係顯示由FERNS特徵所提供之編程介面資料類型方塊圖。第4圖之虛擬位元402,於程式所提供之FERNS資料類型中,係為基本之構建區塊(building block)。根據不同之實施例,FERNS可提供編程(program)單一虛擬位元402(如第4圖所示),以及/或者複數之虛擬位元402,舉例來講,像是由8個虛擬位元402所形成之一虛擬位元組(V-byte,如第5a圖所示)502、由16個虛擬位元402所形成之一虛擬字元(V-word,未圖示)、由32個虛擬位元402所形成之一虛擬雙字元(V-dword,未圖示)、以及由64個虛擬位元402所形成之一虛擬四字元組(V-qword,如第5b圖之504所示)。然而,需注意的是,如果需要的話,可使用任意數量之虛擬位元402來建構FERNS之編程介面。舉例來講,對於編程介面所提供之一虛擬位元組(V-byte)502資料類型而言,由該8個虛擬位元所讀取之數值可以二進位編碼,用以表示從0至256之一無號(unsigned)十進位數值,或者從-128至127之一有號(signed)十進位數值。
有一些可配置參數係與FERNS子系統相關。其一為組成一虛擬熔絲(VF)302之實體熔絲(PF)202之數量,將影響熔斷一虛擬熔絲302之可靠度。其二為組成一虛擬位元(VB)402之虛擬熔絲302之數量,將影響一虛擬位元402之可複寫次數。其三為該熔絲熔斷裝置116(例如電荷泵)欲熔斷一實體熔絲202前之充電時間,這將影響到熔斷一實體熔絲202之可靠度。其四為當該實體熔絲202進行熔斷時,允許該熔絲熔斷裝置116對該實體熔絲202輸入端進行放電之時間,此亦將影響到熔斷一實體熔絲202之可靠度。其五為熔斷實體熔絲202之最大重試次數。其六為該微處理器100每一次想要熔斷之實體熔絲202之最大數量。
該等實體熔絲202之一特性為,若一實體熔絲202被讀取為已熔斷,則它已被熔斷,也就是,其二進位之數值已被改變。換句話說,若一實體熔絲202顯示為未熔斷,則該微處理器100可以熔斷或不熔斷該實體熔絲202。進一步,隨後於另一時間讀取該實體熔絲202時則可能為已熔斷。於上述之實施例中,與一虛擬熔絲302相關之實體熔絲202數量並非固定,係為可變的。意謂著每次需要切換一虛擬熔絲302時,該微處理器100試著熔斷與該虛擬熔絲302相關之一實體熔絲202。若該單一實體熔絲202之熔斷被確認為成功,則完成該操作;然而,若該單一實體熔絲202之熔斷未被確認為成功(在重試可配置次數之後),該微處理器100配置另一實體熔絲202,用以聯結(associate with)該虛擬熔絲302,並試圖熔斷該新配置的實體熔絲202。
參考第6圖,係顯示於第1圖之該熔絲模組114中,配置該等實體熔絲(PF)202之一固定架構實施例所提供一FERNS子系統方塊圖。每一虛擬熔絲(VF)302由固定數量之實體熔絲202組成,且每一虛擬位元(VB)402由固定數量之虛擬熔絲302組成。特別是每一虛擬熔絲302係由2個實體熔絲202組成,而每一虛擬位元402由32個虛擬熔絲302組成,因此允許每一虛擬位元402進行32次之切換寫入。如圖所示,總共有2048個虛擬熔絲302。於第6圖之實施例中,將實體熔絲模組0之實體熔絲PF[0]與實體熔絲模組1之實體熔絲PF[0]進行布林或運算,用以產生虛擬熔絲VF[0];將實體熔絲模組2之實體熔絲PF[0]與實體熔絲模組3之實體熔絲PF[0]進行布林或運算,用以產生虛擬熔絲VF[1];以此類推到將實體熔絲模組62之實體熔絲PF[0]與實體熔絲模組63之實體熔絲PF[0]進行布林或運算,用以產生虛擬熔絲VF[31];持續此操作將實體熔絲模組0之實體熔絲PF[63]與實體熔絲模組1之實體熔絲PF[63]進行布林或運算,用以產生虛擬熔絲VF[2016];將實體熔絲模組2之實體熔絲PF[63]與實體熔絲模組3之實體熔絲PF[63]進行布林或運算,用以產生虛擬熔絲VF[2017];並以此類推將實體熔絲模組62之實體熔絲PF[63]與實體熔絲模組63之實體熔絲PF[63]進行布林或運算,用以產生虛擬熔絲VF[2047]。虛擬位元VB[0]為VF[31:0]之布林互斥運算;VB[1]為VF[63:32]之布林互斥運算;並以此類推至VB[63],係為VF[2047:2016]之布林互斥運算。因此,於第6圖之實施例中,2048個虛擬熔絲(VF)302係由4096個實體熔絲(PF)202所提供,並進一步提供了64個虛擬位元(VB)402。相對於其它架構而言,由於微碼所需為相對少量之移位操作,於第6圖之實施例中,實體熔絲202與虛擬熔絲302之分組特別有助於微碼之執行。然而,根據該編程介面所表示之64個虛擬位元402,此實施例需要讀取全部64個實體熔絲模組204,相對而言會比其它實施例多(如下所述)。當可考量實體熔絲202與虛擬熔絲302之其它分類方式。舉例而言,於一實例中,一熔絲模組114內部之相鄰實體熔絲202進行布林或運算,用以產生一虛擬熔絲302,而一熔絲模組114內部之該等虛擬熔絲302進行布林互斥運算,用以產生一虛擬位元402。此實施例具有讀取熔絲模組114次數較少之優點(取決於所表示之編程介面),但相對地需要較多之移位操作,用以執行布林或運算及布林互斥運算。
於第6圖中,64個虛擬位元402所表示之編程界面係以各種之實施方式加以考量。舉例來講,該微處理器100可將該64個虛擬位元402作為具有64位元寬度之單一特定模組暫存器;2個具有32位元寬度之特定模組暫存器;4個具有16位元寬度之特定模組暫存器;8個具有8位元寬度之特定模組暫存器;或者,64個單一位元之特定模組暫存器。無論如何,每一個特定模組暫存器可進行32次之切換寫入。於其它實施例中,該微處理器100可將該64個虛擬位元402作為具有不同寬度及資料類型之特定模組暫存器之組合。
參考第7圖,係顯示於第2圖中,實體熔絲模組204之介面方塊圖。每一個實體熔絲202之輸入端,係連接於一及閘704之輸出端,該及閘704具有兩個輸入端。當一實體熔絲202被讀取時,將該熔絲熔斷裝置116之輸出端接地。當一實體熔絲202被寫入時,該及閘704之一輸入端,係接收第1圖之熔絲熔斷裝置116之輸出。該及閘704之另一輸入端,係接收一控制暫存器706之一位元。該控制暫存器706具有一實體熔絲模組204之寬度,而該及閘704所接收之該位元為該控制暫存器706之位元,其係對應於該實體熔絲模組204內部中該實體熔絲202之位元位置。因此,當該實體熔絲202被寫入時,即進行熔斷時,對應於欲熔斷之該實體熔絲202,藉由將二進位之1寫入至該控制暫存器706之一特定位元,微碼可於一實體熔絲模組204內選擇特定實體熔絲202進行熔斷。
於一實施例中,該微處理器100亦包括其它可寫之控制暫存器,其由微碼控制寫入以控制選擇邏輯單元(selection logic)使微碼選擇哪些實體熔絲模組204將被讀取或進行寫入。除此之外,該微處理器100包括一可寫之控制暫存器,由微碼控制該熔絲熔斷裝置116之充電,以及該熔絲熔斷裝置116所累積電荷之釋放,用以熔斷一實體熔絲202。因此,藉由寫入該控制暫存器,微碼可單獨熔斷任一實體熔絲202,並能夠讀取整個實體熔絲模組204。於其它實施例中,若該熔絲熔斷裝置116之電量足夠,微碼將二進位之1寫入至該控制暫存器706之多個位元中,即可對該實體熔絲202進行多次熔斷。於一實施例中,該控制暫存器係使用一序列掃瞄機制,例如:一JTAG機制。
參考第8圖,係顯示於特定模組暫存器(MSR)位址空間之FERNS範圍內,微處理器100於一位置執行一WRMSR指令之操作流程圖。於第8圖之說明中,假設程式係以一虛擬位元組(V-byte)502之資料類型表示之,也就是說,於FERNS範圍之一位址進行存取之每一個WRMSR指令,係存取單一位元組之資料。流程始於步驟802。
於步驟802中,該微處理器100從該指令快取記憶體102擷取一WRMSR指令,而該指令解碼器104解碼該WRMSR指令並呼叫該WRMSR微碼常式。在一實施例中,該指令解碼器104解碼該WRMSR指令至一特定模組暫存器位址空間之FERNS範圍內之一虛擬位元組位置。流程進行至步驟804。
於步驟804中,WRMSR微碼常式讀取與特定FERNS虛擬位元組相關之實體熔絲模組,並執行所需之布林或運算及布林互斥運算,以決定該虛擬位元組之目前值。於該特定模組暫存器位址空間之FERNS範圍內,該WRMSR微碼常式決定該特定模組暫存器位址(指定於ECX暫存器中)所指定之一位置,並適當地對該控制暫存器進行寫入,用以讀取一或多個實體熔絲模組204,實體熔絲模組204包括與FERNS之虛擬位元組(V-byte)502相關之實體熔絲202。該WRMSR微碼常式隨即執行必要之布林或運算操作,用以產生該虛擬熔絲302之數值,係相關於該特定模組暫存器位址所指定之虛擬位元組502。該WRMSR微碼常式接著執行必要之布林互斥運算操作,用以產生該虛擬位元組502之虛擬位元402,以決定該虛擬位元組502之目前值。流程進行至步驟806。
於步驟806中,該WRMSR微碼常式比較虛擬位元組502之目前值及由WRMSR指令所指定之欲寫入數值,意即,EDX:EAX暫存器之低位元組所指定之數值。若任一位元不相同,則該微碼常式對該控制暫存器進行適當的寫入操作,將每一不相同位元之下一個可取得虛擬熔絲302(例如:未熔斷)相關聯之實體熔絲202熔斷,用以於該虛擬位元組502中,切換(toggle)相關之不相同虛擬位元402。該微碼允許該熔絲熔斷裝置116充電一段時間,上述充電時間係由一相關可配置數值指定,該微碼並允許該熔絲熔斷裝置116對實體熔絲202輸入端放電一段時間,上述放電時間係由該相關可配置數值指定。於一實施例中,該微處理器100能夠在多種操作電壓位準(通常稱為P-state狀態)下進行操作。在熔斷實體熔絲202之前,將該微處理器100轉移至最高之P-state狀態(意即,最高之操作電壓位準),用以於該熔絲熔斷裝置116欲熔斷實體熔絲202時,減少為了累積足夠電荷所需之時間。在實體熔絲202被熔斷之後,該微處理器100回復至先前之P-state狀態。流程進行至步驟808。
於步驟808中,該WRMSR微碼常式再次讀取該虛擬位元502之值,並與新值比較,用以判斷是否成功寫入該新值,若該熔斷未成功,重試一實體熔絲202之熔斷操作至一可配置重試次數。流程於步驟808結束。
參考第9圖,係顯示依據本發明之另一實施例,將虛擬熔絲(VF)302配置至一FERNS虛擬位元(VB)402之一固定架構方塊圖。該等虛擬熔絲302分為兩組:第一組為資料虛擬熔絲904,而第二組為時脈虛擬熔絲908。資料虛擬熔絲904之數量與時脈虛擬熔絲908之數量相同。在同一位置之一資料虛擬熔絲904與一時脈虛擬熔絲908組成一時脈-資料對912。於第9圖之實施例中,由0到31的32個時脈-資料對912組成一虛擬位元402。根據第9圖之時脈-資料實施例,於一時脈-資料對912中,資料虛擬熔絲904之數值係用以表示虛擬位元402之目前值,且根據第10a圖另一實施例之時脈-資料對912,時脈虛擬熔絲908為最後連續未熔斷之時脈虛擬熔絲908(或者,根據第10b圖之另一實施例,為已熔斷之時脈虛擬熔絲908),用以組成虛擬位元402。第9圖實施例之優點在於,該虛擬位元402之數值直接由單一虛擬熔絲302表示,因此,該微處理器100不需對複數之虛擬熔絲302執行布林互斥運算,如第6圖實施例所示用以產生該虛擬位元402之數值所需之操作。不過,該微處理器100需要判斷最後連續未熔斷之時脈虛擬熔絲908(或者,根據第10b圖之另一實施例,判斷已熔斷之時脈虛擬熔絲908)。於一些實施例中,如下所述,該虛擬位元402之切換寫入次數,可與組成該虛擬位元402之該等虛擬熔絲302之數量相等。於第9圖之實施例中,因此該虛擬位元402切換寫入之次數可達64次,而於第10a及10b圖之實施例中,該虛擬位元402切換寫入之次數可達6次。依據其它實施例,該虛擬位元402切換寫入之次數可以相等於組成該虛擬位元402之該等虛擬熔絲302之數量,係說明如下。於第9圖之實施例中,因此該虛擬位元402切換寫入之次數可達63次,而於第10a及10b圖之實施例中,該虛擬位元402切換寫入之次數可達5次。
參考第10a圖,係顯示依據第9圖固定配置架構之一第一實施例之操作時序圖。該時序圖包括由0到5所示之6個時序。時序0至5僅表示時序點,而非用以表示每一時序之間所存在之一段固定時間。更確切地說,所顯示的每一個不同時序,係表示所組成之該虛擬位元402中之一改變,用以回應於一切換寫入。如圖所示,對每一時間槽來講,每一時脈虛擬熔絲908與資料虛擬熔絲904之狀態(已熔斷-“B”或未熔斷-“U”),和該二進位虛擬位元402之數值一樣。於此實施例中,該微處理器100將時脈-資料對912中,由位置0開始依序熔斷該等虛擬熔絲302,直到位置31為止。然而,為簡化說明,第10a圖僅顯示3個時脈虛擬熔絲908及3個資料虛擬熔絲904,係對應於第9圖時脈-資料對912之位置0-2,並假設所有其它虛擬熔絲302(意謂著從位置3至31)之狀態為未熔斷。
於初始製造(initially fabricated)時,意即,當時序為0(time=0)時,所有虛擬熔絲302為未熔斷。於第10a圖之實施例中,於一時脈-資料對912中,資料虛擬熔絲904之數值係用以表示虛擬位元402之目前值,而時脈虛擬熔絲908為最後連續未熔斷之時脈虛擬熔絲908。(相對於第10b圖之實施例,於時脈-資料對912中,資料虛擬熔絲904之數值係用以表示虛擬位元402之目前值,而時脈虛擬熔絲908為最後連續已熔斷之時脈虛擬熔絲908。)也就是說,該微處理器100對該等時脈虛擬熔絲908進行掃瞄,從位置0開始,直到找出一未熔斷之時脈虛擬熔絲908,然後讀取該時脈-資料對912之資料虛擬熔絲904之數值,用以作為該虛擬位元402之數值。參考第10a圖之實施例,於時序為0(time=0)時,最後連續未熔斷之時脈虛擬熔絲908係位於位置0,則位置0之資料虛擬熔絲904用以表示該虛擬位元402之目前狀態。於此實施例中,所選擇位置上的資料虛擬熔絲904為未熔斷,因此,該虛擬位元402之數值為0。
一指令隨後請求將“1”寫入至該虛擬位元402之狀態。回應於上述請求,當時序為1(time=1)時,該熔絲熔斷裝置116熔斷位置0之資料虛擬熔絲904(VF[0]),也將該虛擬位元402之數值改變為1。之後,一指令請求將“0”寫入至該虛擬位元402之狀態。回應於上述請求,當時序為2(time=2)時,該熔絲熔斷裝置116熔斷位置0之時脈虛擬熔絲908(VF[0]),也將該虛擬位元402之數值改變為0。從位置0開始,找出最後連續未熔斷之時脈虛擬熔絲908後,如上所述,所對應時脈-資料對912之資料虛擬熔絲904之數值即為該虛擬位元402。當時序為2(time=2)時,由於位置0之時脈虛擬熔絲908為已熔斷,而位置1之時脈虛擬熔絲908為未熔斷,則位置1之資料虛擬熔絲904之數值,即為該虛擬位元402之數值。因為位置1之資料虛擬熔絲904為未熔斷,程式所讀取之該虛擬位元402將為0。
接下來,一指令請求將“1”寫入至該虛擬位元402之狀態。回應於上述請求,當時序為3(time=3)時,該熔絲熔斷裝置116熔斷位置1(VF[1])之資料虛擬熔絲904,係將該虛擬位元402之數值改變為1。以此方式繼續進行熔絲熔斷,分別如時序4及5所示,直到沒有其他時脈-資料對912可用來改變該虛擬位元402之所請求之狀態為止,此時,便利用一例外(exception)或其他條件(condition)來通知處理器。
參考第10b圖,係顯示依據第9圖固定配置架構之一第二實施例之操作時序圖。第10b圖所示之操作時序圖類似於第10a圖所示之操作時序圖。然而,於第10b圖之實施例中,時脈-資料對912之資料虛擬熔絲904之數值用來表示該虛擬位元402之目前值,其時脈虛擬熔絲908為最後連續已熔斷之時脈虛擬熔絲908。意即,該微處理器100對該等時脈虛擬熔絲908進行掃瞄,從位置0開始,直到找出一已熔斷之時脈虛擬熔絲908,然後讀取該時脈-資料對912之資料虛擬熔絲904之數值,用以作為該虛擬位元402之數值。參考第10b圖之實施例,於時序為0(time=0)時,最後連續已熔斷之時脈虛擬熔絲908係位於位置0,則位置0之資料虛擬熔絲904用以表示該虛擬位元402之目前狀態。於此實施例中,所選擇位置上的資料虛擬熔絲904為未熔斷,因此,該虛擬位元402之數值為0。
由於所有虛擬熔絲302初始為未熔斷,為使第10b圖之實施例正確操作,在程式嘗試對該虛擬位元402進行第一次寫入操作前,需熔斷位置0之時脈虛擬熔絲908。依據一實施例,於製造時,位置0之時脈虛擬熔絲為已熔斷。或者,於製造後,該微處理器100偵測該初始條件,並將熔斷位置0之時脈虛擬熔絲908作為第1個開機(power-up)程序。因此,於第10b圖中,當時序為0(time=0)時,位置0之時脈虛擬熔絲908(VF[0])為已熔斷,而其它虛擬熔絲302為未熔斷。時序為0時,由於最後連續已熔斷之時脈虛擬熔絲908位於位置0上,因此位置0之資料虛擬熔絲904為該虛擬位元402之目前狀態。於此實施例中,因為所選擇位置上的資料虛擬熔絲904為未熔斷,因此,該虛擬位元402之數值為0。
之後,一指令請求將“1”寫入至該虛擬位元402之狀態。回應於上述請求,當時序為1(time=1)時,該熔絲熔斷裝置116熔斷位置0之資料虛擬熔絲904(VF[0]),該虛擬位元402之數值被改變為1。一指令接著請求將“0”寫入至該虛擬位元402之狀態。回應於上述請求,當時序為2(time=2)時,該熔絲熔斷裝置116熔斷位置1之時脈虛擬熔絲908(VF[1]),該虛擬位元402之數值被改變為0。從位置0開始,找出最後連續已熔斷之時脈虛擬熔絲908後,如前所述,所對應時脈-資料對912之資料虛擬熔絲904之數值即為該虛擬位元402。由於位置0之時脈虛擬熔絲908為已熔斷,而位置1之時脈虛擬熔絲908為已熔斷,因此位置1之資料虛擬熔絲904之數值,即為該虛擬位元402之數值。因為位置1之資料虛擬熔絲904為未熔斷,程式所讀取之該虛擬位元402將為0。
接下來,一指令請求將“1”寫入至該虛擬位元402之狀態。回應於上述請求,當時序為3(time=3)時,該熔絲熔斷裝置116熔斷位置1(VF[1])之資料虛擬熔絲904,係將該虛擬位元402之數值改變為1。以此方式繼續進行熔絲熔斷,分別如時序4及5所示,直到沒有其他時脈-資料對912可用來改變該虛擬位元402之所請求之狀態為止,此時,便利用一例外或其他條件來通知處理器。
參考第11圖,係顯示利用第9及10b圖之實施例,於特定模組暫存器(MSR)位址空間之FERNS範圍內,該微處理器100於一位置執行一WRMSR指令之操作流程圖。意即,於一時脈資料對912中,其時脈虛擬熔絲908為最後連續已熔斷之時脈虛擬熔絲908,而其資料虛擬熔絲904之數值用以表示一虛擬位元402之目前值。於第11圖之說明中,假設程式係以一虛擬位元組(V-byte)502之資料類型表示之,意即,於FERNS範圍之一位址進行存取之每一個WRMSR指令,係存取單一位元組之資料。流程始於步驟1102。
於步驟1102中,該微處理器100從該指令快取記憶體102擷取一WRMSR指令,而該指令解碼器104解碼該WRMSR指令並呼叫該WRMSR微碼常式。在一實施例中,該指令解碼器104解碼該WRMSR指令至一特定模組暫存器位址空間之FERNS範圍內之一虛擬位元組位置。流程進行至步驟1104。
於步驟1104中,WRMSR微碼常式讀取與特定FERNS虛擬位元組相關之實體熔絲模組,並讀取最近熔斷之時脈熔絲所對應之資料熔絲,用以決定該虛擬位元組之目前值。於該特定模組暫存器位址空間之FERNS範圍內,該WRMSR微碼常式決定該特定模組暫存器位址(指定於ECX暫存器中)所指定之一位置,並適當地對該控制暫存器進行寫入,用以讀取一或多個實體熔絲模組204,實體熔絲模組204包括與FERNS之虛擬位元組(V-byte)502相關之實體熔絲202。該WRMSR微碼常式隨即執行必要之布林或運算操作,用以產生該虛擬熔絲302之數值,係相關於該特定模組暫存器位址所指定之虛擬位元組502。對於組成虛擬位元組502之每一虛擬位元402而言,該WRMSR微碼常式接著依序對該等時脈-資料對912之時脈虛擬熔絲908進行掃瞄,從位置0開始,直到找出第一個已熔斷之時脈虛擬熔絲908。該WRMSR微碼常式接著讀取與該第一個連續已熔斷時脈虛擬熔絲908相關之資料虛擬熔絲904之數值,用以作為該虛擬位元402之數值。該WRMSR微碼常式對虛擬位元組502之每一虛擬位元402進行此步驟,用以決定該虛擬位元組之目前值。流程進行至步驟1106。
於步驟1106中,該WRMSR微碼常式比較虛擬位元組502之目前值及由WRMSR指令所指定之欲寫入數值,意即,EDX:EAX暫存器之低位元組所指定之數值。若任一位元不相同,針對每一個不相同之位元,該WRMSR微碼常式對該控制暫存器進行適當的寫入操作,用以:(1)若該不相同虛擬位元402所對應之新位元值為1,則依序熔斷最近熔斷之時脈虛擬熔絲908所對應之資料虛擬熔絲904;或者(2)若該不相同之虛擬位元402所對應之新位元值為0,則依序熔斷下一個時脈虛擬熔絲908。需注意,若該新位元值與目前虛擬位元402之數值相等,該微處理器100不熔斷任何虛擬熔絲302。流程進行至步驟1108。
於步驟1108中,該WRMSR微碼常式再次讀取該虛擬位元502之值,並與新值比較,用以判斷是否成功寫入該新值,若該熔斷未成功,重試一實體熔絲202之熔斷操作至一可配置重試次數。流程於步驟1108結束。
由第10a圖可知,位置2之時脈虛擬熔絲908(VF[2])從未被熔斷。換句話說,依據第10a圖實施例所示之時脈-資料對912,最高位置之時脈虛擬熔絲908一直為未熔斷。因此,於一實施例中,最高位置之時脈虛擬熔絲908並不需要實體熔絲202。如此一來,對該實體熔絲模組204之位元而言,用來組成虛擬熔絲302之正常實體熔絲202中,若與最高位置之時脈虛擬熔絲908相關聯,由於該等實體熔絲202從未被熔斷,因此以固線(hardwire)連接至用以表示未熔斷狀態之電壓值(例如:GND),而不是用一實體熔絲202表示該些位元。以此方式,該虛擬位元402切換寫入之次數相等於組成該虛擬位元402之該等虛擬熔絲302之數量。舉例而言,於第9圖之實施例中,有63個虛擬熔絲302(係顯示64個虛擬熔絲302,但最高位置之時脈虛擬熔絲908係以固線連接),因此,該虛擬位元402切換寫入之次數可達63次。依據另一實施例,於第10a圖中,位置2之時脈虛擬熔絲908係以固線連接,而該虛擬位元402具有5個虛擬熔絲302,因此切換寫入之次數可達5次。同樣地,由第10b圖可知,位置0之時脈虛擬熔絲908(VF[0])一直為已熔斷。換句話說,依據一實施例,於該實體熔絲模組204中,對相關於最低位置時脈虛擬熔絲908之位元來講,由於所顯示之實體熔絲202一直為已熔斷,因此,以固線連接至用以表示已熔斷狀態之電壓值(例如Vcc),而不是用一實體熔絲202表示該些位元。
參考第10a圖,依據另一實施例,於該實體熔絲模組204中,與最高位置時脈虛擬熔絲908相關之位元包括該等實體熔絲202,而當一虛擬位元402之所有時脈虛擬熔絲908為已熔斷時,該微處理器100(例如微碼)將此情況視為一特例。舉例來講,第10a圖係說明具有6個虛擬熔絲302所進行之5次切換寫入。然而,依據另一實施例,該微碼藉由熔斷位置2之時脈虛擬熔絲908,來執行第6次之切換寫入,而當一虛擬位元402之所有時脈虛擬熔絲908為已熔斷時,其值為一布林零值(Boolean zero)。因此,於此實施例中,該虛擬位元402切換寫入之次數與組成該虛擬位元402之該等虛擬熔絲302之數量相等,在第10a圖的例子中為6。類似地,與第10b圖相關之另一實例中,當一虛擬位元402之所有時脈虛擬熔絲908為未熔斷時,該微碼將此情況視為一特例。因此,該虛擬位元402之初始條件並未示於第10b圖之時序0,或者,當所有時脈虛擬熔絲908為未熔斷時,即為該虛擬位元402之初始條件,且該虛擬位元402具有一布林值(Boolean one value)。如第10b圖所示之時序0,當該微處理器100接收第一次切換寫入之請求時,該微處理器100熔斷位置0之時脈虛擬熔絲908,以此類推。因此,於此實施例中,該虛擬位元402切換寫入之次數與組成該虛擬位元402之該等虛擬熔絲302之數量相等,在第10b圖的例子中為6。
如上所述,於其它實施例中,部份虛擬熔絲302不以固線連接,而該微碼將其視為一特例,則該虛擬位元402切換寫入之次數可相等於或少於組成該虛擬位元402之虛擬熔絲302之數量。
如上所述,於第6及9圖之一固定配置架構中,該FERNS子系統顯示一資料類型,比單一虛擬位元402更寬(如一虛擬位元組502),其缺點在於統計上實體熔絲202可能會被浪費,這是因為,於該虛擬位元組502中,部份虛擬位元402之切換寫入次數,將與該虛擬位元組502中其它虛擬位元402之切換寫入次數不相同。意思是,統計上來講,一虛擬位元組502內部之一虛擬位元402,在同一個虛擬位元組502內部之其它虛擬位元402用完它們的實體熔絲202之前,就先用完自己的實體熔絲202。因此,亦考量可變之配置架構。一可變配置架構試著解決浪費實體熔絲202之問題,然而,本身亦有相關之浪費,意即,利用部份實體熔絲202來實現該可變配置架構(例如:如第12圖實施例之一指標1206),而非作為實際的資料位元(例如:如第12圖實施例之一資料虛擬熔絲1204)。
參考第12圖,係顯示依據本發明實施例,配置該等虛擬熔絲(VF)302之一可變架構方塊圖,用以提供一FERNS子系統。將該等虛擬熔絲302分為複數之單元(cell)1202。一單元1202包括M個“資料”虛擬熔絲1204及N個“指標”虛擬熔絲1206。於第12圖之實施例中,M為9且N為7。該等資料虛擬熔絲1204類似於第4及6圖(或者第9圖)之虛擬熔絲302,係用以儲存數值並產生一虛擬位元402之數值。該等指標虛擬熔絲1206用以指向另一單元1202。以此方式,於該等單元1202中,一串列表單(linked list)之該等資料虛擬熔絲1204係由對應之指標虛擬熔絲1206連結而成,用以決定一虛擬位元402之數值。
於第12圖之實施例中,2048個虛擬熔絲302分為128個單元1202,以0到127表示。每一指標虛擬熔絲1206具有7個位元,因此能夠指向128個不同單元1202。舉例來講,指標值為53之指標虛擬熔絲1206指向第53個單元。一開始,每一虛擬熔絲302具有二進位之0,因此每一指標虛擬熔絲1206之初始值為0。若一指標虛擬熔絲1206之數值為0,則該微碼將該指標虛擬熔絲1206視為一空指標(null pointer),用以表示於單元1202之串列表單中,該單元1202為最後一個單元1202。因此,參考第8圖之流程圖,於步驟804、806及808中,該微碼必須依序連結該等單元1202之指標虛擬熔絲1206,以決定對哪些資料虛擬熔絲1204進行互斥運算,用以產生該虛擬位元402之數值(步驟804及808),並決定下一個可用來熔斷之資料虛擬熔絲1204(步驟806)。
如第13b圖所示,每一單元1202可分為一根單元(root cell)1304或一擴充單元(expansion cell)1312。於一特定虛擬位元402中,一或多個單元1202所連結而成之一串列表單之第一個單元1202,即為一根單元1304。因此,一根單元1304不會指向另一單元1202。每一虛擬位元402具有單一相關之根單元1304。該等根單元1304,係以固定的一對一方式,與該等虛擬位元402相關。因此,該等根單元1304為靜態地預先配置,於程式操作期間並無法動態配置。於一實施例中,藉由該微碼,該等根單元1304為靜態地預先配置,且以固定方式相關於該等虛擬位元402。反之,至少一開始時,擴充單元1312並沒有與一特定虛擬位元402相關。擴充單元1312反而位於可用(available)單元(或稱閒置單元)1202之一儲存庫(free pool)中,當需要執行程式寫入FERNS時,可為一虛擬位元402進行動態配置,並合併到該虛擬位元402之串列表單中。於FERNS子系統中,根單元1304之數量與虛擬位元402之數量相等,而可用單元1202之儲存庫(free pool)包含剩餘杓單元1202。於一實施例中,若虛擬位元402之數量為N,則該微碼靜態地將單元1202配置於位置0到N-1,作為與該N個虛擬位元402相關之根單元1304。
依據第12圖之實施例,當該微碼需要熔斷一資料虛擬熔絲1204來切換一虛擬位元402之數值時,不過,目前之單元1202中並沒有其它可用之資料虛擬熔絲1204(意即,該單元1202位於串列表單之最後),該微碼檢查該等擴充單元1312(於一實施例中,係為依序檢查),以搜尋下一個可用之擴充單元1312,直到找出所有資料虛擬熔絲1204為未熔斷之一擴充單元1312為止。接著,該微碼將目前單元1202(也就是說,沒有其它可供該單元使用之資料虛擬熔絲1204)之指標1206熔斷成一數值,係指向所找到的下一個可用之擴充單元1312,用以將擴充單元1312加到該串列表單中。該微碼隨後熔斷新連結擴充單元1312之一資料虛擬熔絲1204,用以切換該虛擬位元402之數值。
每次該微碼必須搜尋出一個可用之擴充單元1312,因為沒有非依電性儲存裝置可以用來指出下一個可用之擴充單元1312。然而,於另一實施例中,當該微處理器100啟動(boot up)時,該微碼掃瞄所有的擴充單元1312,並於該微處理器100內部設置一依電性(volatile)記憶體位置,用來指出下一個可用之擴充單元1312。如此一來,尋找下一個可用擴充單元1312之掃瞄,僅需於該微處理器100每次重置時執行一次,取代每次需要一個新擴充單元1312之掃瞄,進而改善效能。
參考第13a圖,係顯示該微處理器100之第一操作方塊圖,該微處理器100係利用第12圖虛擬熔絲(VF)302之可變配置架構。於第13a及13b圖中,一已熔斷之虛擬熔絲302係由“X”表示。於第13a圖中,一虛擬位元402之狀態僅包括一根單元1304,意謂著一串列表單包括單一之根單元1304。第13a圖係說明在該微處理器100對該虛擬位元402執行完4次切換寫入後,該虛擬位元402之狀態。為了說明,於第13a圖之實施例中,資料虛擬熔絲1204及指標虛擬熔絲1206之數量比第12圖少。具體地,參考第12圖,該根單元1304包括8個虛擬熔絲302。位置0到4之虛擬熔絲302為資料虛擬熔絲1204,而位置5到7之虛擬熔絲302為指標虛擬熔絲1206。因此,於FERNS子系統中,由該指標虛擬熔絲1206所指向之擴充單元1312之可能數量為8。於此實施例中,該微處理器100已熔斷位置0到3之資料虛擬熔絲1204,用以回應於4次之切換寫入。位置4之資料虛擬熔絲1204為未熔斷。除此之外,由於該根單元1304之資料虛擬熔絲1204尚未用完,因此該指標虛擬熔絲1206為未熔斷,用以表示該根單元1304位於該串列表單之最後,且為該串列表單中之唯一單元1202。
參考第13b圖,係顯示該微處理器100之第二操作方塊圖,該微處理器100係利用第12圖虛擬熔絲(VF)302之可變配置架構。於第13b圖中,一虛擬位元402之狀態包括第13a圖之根單元1304及2個擴充單元1312,分別以1312a及1312b表示,並與根單元1304連結,用以形成一串列表單。第13b圖係說明在該微處理器100對該虛擬位元402執行完13次切換寫入後,該虛擬位元402之狀態。具體地,該根單元1304之5個資料虛擬熔絲1204及第一擴充單元1312a之5個資料虛擬熔絲1204均為已熔斷,而下面的第二擴充單元1312b中,前3個資料虛擬熔絲1204為已熔斷。
為回應該虛擬位元402之第5次切換寫入,該微處理器100熔斷該根單元1304中位置4上的資料虛擬熔絲1204。為回應該虛擬位元402之第6次切換寫入,該微處理器100搜尋下一個可用之擴充單元1312,並在位置4上找到擴充單元1312a。因此,該微處理器100將該根單元1304之該等指標虛擬熔絲1206熔斷為4,用以指向位置4之擴充單元1312a,如第13b圖之箭頭1308所示。於擴充單元1312a中,該微處理器100接著熔斷位置0之資料虛擬熔絲1204。為回應該虛擬位元402之第7、8、9及10次切換寫入,於擴充單元1312a中,該微處理器100分別熔斷位置1到4之資料虛擬熔絲1204。為回應該虛擬位元402之第11次切換寫入,該微處理器100搜尋下一個可用之擴充單元1312,並在位置6上找到擴充單元1312b。該微處理器100於是將該第一擴充單元1312a之該等指標虛擬熔絲1206熔斷為6,用以指向位置6之該第二擴充單元1312b,如第13b圖之箭頭1316所示。於該第二擴充單元1312b中,該微處理器100隨即熔斷位置0之資料虛擬熔絲1204。為回應該虛擬位元402之第12及13次切換寫入,於該第二擴充單元1312b中,該微處理器100分別熔斷位置1到2之資料虛擬熔絲1204。該第二擴充單元1312b之指標虛擬熔絲1206為0,用以表示該第二擴充單元1312b位於該虛擬位元402相關之串列表單之最後。
儘管第12圖之可變配置架構,已於第6圖中,利用虛擬熔絲302之互斥運算,來產生一虛擬位元402數值之實施例加以說明,該可變配置架構亦可以第9圖利用時脈-資料對912,來產生一虛擬位元402數值之實施例加以說明。後者之每一單元1202係包括偶數個資料虛擬熔絲1204,使得時脈虛擬熔絲908及資料虛擬熔絲904之數量相等。也就是說資料虛擬熔絲1204中,一半為時脈虛擬熔絲908,另一半為資料虛擬熔絲904。
比較第6及12圖可知,假設實體熔絲202之數量相同,且該微處理器100為每一個虛擬熔絲302配置2個實體熔絲202,總計為4096個實體熔絲202。程式能夠執行之虛擬位元402切換寫入次數,第6圖之固定配置實施例為2048次,而第12圖之可變配置實施例為1152次(128個單元中,每一單元具有9個虛擬熔絲302)。然而,於其它實施例中,可提供一使用者介面,使得於FERNS空間中,每一個特定模組暫存器(MSR)視為寬度大於單一位元之資料類型(例如:一虛擬位元組V-byte、虛擬字元V-word、虛擬雙字元V-dword或虛擬四字元組V-qword資料類型),於FERNS子系統中,對較寬資料類型而言,可變配置架構之切換寫入次數大於固定配置架構。
依據一實施例,該程式係以4個虛擬位元組(V-byte)502表示,分別具有4個不同的特定模組暫存器(MSR)位址。因此,32個單元1202(由0至31),係以固定方式靜態地被預先配置為32個虛擬位元402所各自對應之根單元1202,用以形成4個虛擬位元組502。於一實施例中,該微碼將4組8個根單元與FERNS特定模組暫存器之位址範圍中的4個特定模組暫存器連繫在一起。剩餘96個單元1202(由32至127)一開始未被配置,且組成可用單元1202之一儲存庫,供該微碼動態配置,並依據程式欲寫入FERNS之二進位數值特性,於FERNS特定模組暫存器之位址範圍中,將4個特定模組暫存器之該等虛擬位元402連繫在一起。相較於固定配置架構,可變配置架構能更有效率地利用虛擬熔絲302,因為配置到較多虛擬熔絲302之虛擬位元402,相對地具有較多之切換寫入次數,反之,配置到較少虛擬熔絲302之虛擬位元402,相對地具有較少之切換寫入次數。
於固定及可變配置架構中,該微處理器100之製造商可指定每一個FERNS位置所保證之最少寫入次數。於第6圖之實施例中,每一個虛擬位元402可寫入至少32次,而於第12圖之實施例中,每一個虛擬位元402可寫入至少9次。不過,如上所述,每一個FERNS位置之成功寫入次數可能大於指定之最少次數,係取決於欲寫入之數值。然而,當FERNS之寫入超過指定之最少次數時,程式被要求準備處理由該微處理器100所產生之一例外或其它錯誤指示(如上所述),用以表示寫入失敗。
參考第14圖,係顯於特定模組暫存器(MSR)位址空間之FERNS範圍內,微處理器100於一位置執行一RDMSR指令之操作流程圖。於第14圖之說明中,假設程式係以一虛擬位元組(V-byte)502之資料類型表示之,意即,於FERNS範圍之一位址進行存取之每一個RDMSR指令,係存取單一位元組之資料。流程始於步驟1402。
於步驟1402中,該微處理器100從該指令快取記憶體102擷取一RDMSR指令,而該指令解碼器104解碼該RDMSR指令並呼叫該RDMSR微碼常式。在一實施例中,該指令解碼器104解碼該RDMSR指令至一特定模組暫存器位址空間之FERNS範圍內之一虛擬位元組位置。流程進行至步驟1404。
於步驟1404中,RDMSR微碼常式讀取與特定FERNS虛擬位元組相關之實體熔絲模組,並執行所需之布林或運算及布林互斥運算,以決定該虛擬位元組之目前值。於該特定模組暫存器位址空間之FERNS範圍內,該RDMSR微碼常式決定該特定模組暫存器位址(指定於ECX暫存器中)所指定之一位置,並適當地對該控制暫存器進行寫入,用以讀取一或多個實體熔絲模組204,實體熔絲模組204包括與FERNS之虛擬位元組(V-byte)502相關之實體熔絲202。該RDMSR微碼常式隨即執行必要之布林或運算操作,用以產生該虛擬熔絲302之數值,係相關於該特定模組暫存器位址所指定之虛擬位元組502。該RDMSR微碼常式接著執行必要之布林互斥運算操作,用以產生該虛擬位元組502之虛擬位元402之數值,以決定該虛擬位元組502之目前值。或者,於第9圖之時脈-資料對912實施例中,利用最近已熔斷(或未熔斷)時脈虛擬熔絲908所對應之資料虛擬熔絲904之數值,該RDMSR微碼常式產生該虛擬位元組502之虛擬位元402之數值,係詳述於第9、10a及10b圖之相關說明中。流程進行至步驟1406。
於步驟1406中,該RDMSR微碼常式將虛擬位元組502之目前值載入EDX:EAX暫存器之低位元組中。流程於步驟1406結束。
如上所述,於一些情況下,部份應用程式無法使用習知之非依電性記憶體資源(例如:磁帶、碟片、互補金氧半導體、電池或快閃記憶體),且微處理器本身可能無法透過作業系統進行存取(換言之,與微處理器外部之程式指令分開,程式指令由微處理器擷取及執行,即基本輸入輸出系統、作業系統、應用程式及公用程式)。舉例而言,於某些情況下,在執行任何基本輸入輸出系統或作業系統指令前,微處理器需採取一些措施。FERNS所考量之某些應用表示如下:(1)儲存與軟體安裝有關之資訊;(2)儲存微處理器可見之故障次數(例如:例如:一機器檢查或錯誤校正碼所回應之錯誤故障或超過溫度臨界值),當每次進行重置後,可由微處理器進行檢查,若故障次數超過一臨界值,則微處理器可以決定不要啟動,或是停止讀取及執行外部程式指令;(3)儲存微處理器之安全已被破壞且微處理器必須關閉之指示,當每次進行重置後,可由微處理器進行檢查,若微處理器已變得不安全,則微處理器可以決定不要啟動,或是停止讀取及執行外部程式指令;(4)儲存用戶訂購(所執行之硬體或軟體或兩者)已過期之指示,當每次進行重置後,微處理器可決定以較少功能啟動,直到用戶付費訂購為止(例如:微處理器於螢幕上顯示一訊息,提醒使用需付費訂購);(5)儲存用以驗證微處理器所執行軟體沒有被影響(contaminated)之資訊;(6)儲存用以判斷系統配置是否已更改之資訊,特別是,判斷已更改之系統配置是否有權拒絕特定軟體應用之存取。
儘管已以實施例說明在程式控制下,像是系統軟體,來寫入及讀取FERNS,於其它實施例中,可考量將FERNS之一部份,保留給微處理器用以進行自身之內部讀寫,與程式控制無關。於這些實施例中,該微碼寫入及讀取FERNS,係回應於其它事件,而不是回應於一程式指令。舉例來講,微處理器可自行偵測必須關閉之一記憶體檢查條件(像是錯誤校正碼之錯誤)或超過一既定溫度臨界值之條件。於關閉前,將FERNS增加一數值,用以記錄此條件之發生次數。再者,若該次數超過另一既定臨界值,則該微碼採取進一步之措施,例如:將一除能熔絲熔斷,用以將微處理器除能,無法再啟動,進而避免可能之資料錯誤或實體損壞。
儘管已以實施例說明利用X86 WRMSR及RDMSR指令來定址FERNS,於其它實施例中,可考量利用其它指令,像是微處理器之指令集架構所補充之新指令。
儘管已以實施例說明,當微處理器未成功執行一WRMSR指令時(例如:該熔絲模組內部沒有可以用來寫入新值之熔絲,或是當熔斷該些熔絲中至少一個未熔斷熔絲時,該些熔絲之未熔斷熔絲數量不足以將可複寫非依電性狀態FERNS之目前值改變為新值),微處理器產生該指令之一例外,WRMSR指令係指定FERNS位址範圍之一位址。可考量用其它方法表示程式寫入失敗,像是回傳通用暫存器或特定模組暫存器之一既定值,或者於X86 EFLAGS暫存器之旗標中設定一既定旗標。於其它實施例中,如上所述,由微碼所執行之某些功能,亦可考量將由硬體邏輯單元執行。
儘管本發明之各種實施例已說明如上,然而應瞭解的是這些實施例係以範例之方式呈現,而並非為限制。對於電腦相關技術領域中具有通常知識者而言,在沒有脫離本發明之精神與範疇所為之形式或細節的修改,係為顯而易知。舉例而言,除了使用硬體(例如:耦接至一中央處理單元或在其內部、微處理器、微控制器、數位信號處理器、處理器核心、系統單晶片或其他裝置)之外,亦可以軟體配置實現(例如:任何形式配置之電腦可讀取碼、程式碼、指令,像是原始碼、目的碼或機械語言),例如:在一電腦可使用(例如:可讀取)媒體中,係被配置用以儲存軟體。此類軟體可致能上述裝置及方法,諸如功能、製造、模型化、模擬、描述以及/或者測試。舉例來講,可透過使用一般程式語言(像是C、C++)、包含Verilog HDL、VHDL等之硬體描述語言(HDL)、或其他可用之程式來完成。此類軟體係可被配置在任何已知電腦可使用之媒體內,包含半導體、磁碟、或光碟(例如:CR-ROM、DVD-ROM等)。如上所述,本發明實施例可包括提供一微處理器之方法,藉由提供用來描述微處理器設計之軟體,並且將該軟體當成一電腦資料信號,透過包含網際網路(internet)及內部網路(intranet)之通信網路隨後進行傳輸。所應瞭解的是,在此所述之裝置與方法可被包含在一半導體智慧財產權核心,例如:一微處理器核心(像是以HDL實現),以及在積體電路之產品中被轉換成硬體。除此之外,在此所述之裝置與方法可以硬體與軟體之組合實現。因此,本發明不應受限於上述之示範實施例,其應以下列之權利範圍與其等效為準。本發明可執行於一通用電腦所使用之一微處理器裝置內部。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟習此技藝者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100...微處理器
102...指令快取記憶體
104...指令解碼器
106...微碼唯讀記憶體
108...通用暫存器
112...執行單元
114...熔絲模組
116...熔絲熔斷裝置
204...實體熔絲模組
202、PF...實體熔絲
302、VF...虛擬熔絲
402、VB...虛擬位元
502、V-byte...虛擬位元組
504、V-qword...虛擬四字元組
304...布林或運算
404...布林互斥運算
706...控制暫存器
704...及閘
904...資料虛擬熔絲
908...時脈虛擬熔絲
912...時脈-資料對
1202...單元
1204...資料虛擬熔絲
1206...指標虛擬熔絲
1304...根單元
以及
1312、1312a、1312b...擴充單元
第1圖係顯示依據本發明之一微處理器方塊圖。
第2圖係顯示第1圖之熔絲模組方塊圖。
第3圖係顯示於第2圖之實體熔絲模組中,包括複數之實體熔絲(PF)之一虛擬熔絲(VF)示意方塊圖。
第4圖係顯示於第3圖中,包括複數之虛擬熔絲(VF)之一虛擬位元(VB)示意方塊圖。
第5a及5b圖係顯示由FERNS特徵所提供之編程介面資料類型方塊圖。
第6圖係顯示於第1圖之該等熔絲模組中,配置該等實體熔絲之一固定架構實施例所提供一FERNS子系統方塊圖。
第7圖係顯示於第2圖中,實體熔絲模組之介面方塊圖。
第8圖係顯示於特定模組暫存器(MSR)位址空間之FERNS範圍內,微處理器於一位置執行一WRMSR指令之操作流程圖。
第9圖係顯示依據本發明之另一實施例,將虛擬熔絲(VF)配置至一FERNS虛擬位元(VB)之一固定架構方塊圖。
第10a圖係顯示依據第9圖固定配置架構之一第一實施例之操作時序圖。
第10b圖係顯示依據第9圖固定配置架構之一第二實施例之操作時序圖。
第11圖係顯示利用第9及10b圖之實施例,於特定模組暫存器(MSR)位址空間之FERNS範圍內,微處理器於一位置執行一WRMSR指令之操作流程圖。
第12圖係顯示依據本發明實施例,配置該等虛擬熔絲(VF)302之一可變架構方塊圖,用以提供一FERNS子系統。
第13a及13b圖係顯示利用第12圖可變虛擬熔絲(VF)302配置架構之微處理器操作方塊圖。
第14圖係顯於特定模組暫存器(MSR)位址空間之FERNS範圍內,微處理器於一位置執行一RDMSR指令之操作流程圖。
100...微處理器
102...指令快取記憶體
104...指令解碼器
106...微碼唯讀記憶體
108...通用暫存器
112...執行單元
114...熔絲模組
以及
116...熔絲熔斷裝置
Claims (38)
- 一種微處理器,執行用來定址可複寫非依電性狀態之一指令,用以使該微處理器將一新值寫入該可複寫非依電性狀態中,該微處理器包括:複數之熔絲,分別由該微處理器讀取來判斷每一熔絲為已熔斷或未熔斷,用以回應該微處理器所解碼之該指令,其中,每一熔絲被讀取為已熔斷時提供一第一布林值,而被讀取為未熔斷時提供一第二布林值,其中,該等熔絲初始為未熔斷;一布林邏輯單元,耦接於該等熔絲,係被配置用以對從該等熔絲所讀取之數值執行布林運算,以決定該可複寫非依電性狀態之一目前值;以及一熔絲熔斷裝置,耦接於該等熔絲,當該新值不同於該可複寫非依電性狀態之目前值時,係被配置用以從該等熔絲中熔斷至少一個未熔斷熔絲,以將該可複寫非依電性狀態之目前值改變為該指令所指定之新值,其中,回應於該微處理器所執行之一程式且多次執行之該指令,該微處理器係被配置用以多次讀取該等熔絲、執行布林運算、以及熔斷至少一個未熔斷熔絲以將該可複寫非依電性狀態之目前值改變為該新值。
- 如申請專利範圍第1項所述之微處理器,其中,進一步配置該微處理器,用以表示於該程式所包括之該指令中,當熔斷該等熔絲中至少一個未熔斷熔絲時,該等熔絲之未熔斷熔絲數量不足以將該可複寫非依電性狀態之目前值改變為該新值之一條件。
- 如申請專利範圍第2項所述之微處理器,其中,配置該微處理器,用以根據該指令所引起之一例外來表示該條件。
- 如申請專利範圍第2項所述之微處理器,其中,配置該微處理器,用以根據指令所回傳之一既定值表示該條件。
- 如申請專利範圍第1項所述之微處理器,更包括:一指令解碼器,被配置用以解碼該指令;以及微碼單元,可被呼叫以回應該指令解碼器之解碼該指令,係被配置用以:讀取該等熔絲之數值;指示該布林邏輯單元對從該等熔絲所讀取之數值執行布林運算;決定該可複寫非依電性狀態之目前值;以及指示該熔絲熔斷裝置從該等熔絲中熔斷至少一個未熔斷熔絲,以將該可複寫非依電性狀態之目前值改變為該指令所指定之新值。
- 如申請專利範圍第1項所述之微處理器,其中,每一熔絲為一虛擬熔絲,係包括複數之實體熔絲。
- 如申請專利範圍第6項所述之微處理器,其中,該虛擬熔絲之數值,係為該虛擬熔絲所包括之每一實體熔絲之讀取數值之布林或運算。
- 如申請專利範圍第6項所述之微處理器,其中,若該虛擬熔絲所包括之實體熔絲至少其中之一為已熔斷,則該虛擬熔絲為已熔斷。
- 如申請專利範圍第6項所述之微處理器,其中,若該虛擬熔絲所包括之實體熔絲均不為已熔斷,則該虛擬熔絲為未熔斷。
- 如申請專利範圍第1項所述之微處理器,其中,該布林邏輯單元對從該等熔絲所讀取之數值執行布林互斥運算,用以決定該可複寫非依電性狀態之目前值。
- 如申請專利範圍第10項所述之微處理器,其中,每一熔絲為一虛擬熔絲,係包括複數之實體熔絲,其中,該虛擬熔絲之數值,係為該虛擬熔絲所包括之每一實體熔絲之讀取數值之布林或運算。
- 如申請專利範圍第1項所述之微處理器,其中,由該指令所定址之該可複寫非依電性狀態為具有複數位元之一資料類型,其中,該指令所指定之新值包括複數之位元。
- 如申請專利範圍第1項所述之微處理器,其中,該微處理器執行之該指令所指定之新值為一位元,用以使該微處理器將該新值寫入至該可複寫非依電性狀態。
- 如申請專利範圍第1項所述之微處理器,其中,由該微處理器所執行之指令包括一x86 WRMSR指令。
- 如申請專利範圍第1項所述之微處理器,其中,該可複寫非依電性狀態由該微處理器執行之該指令定址,係透過該指令所指定之一x86特定模組暫存器位址,用以使該微處理器將該新值寫入至該可複寫非依電性狀態。
- 如申請專利範圍第1項所述之微處理器,其中,該可複寫非依電性狀態係定址於該微處理器之一x86特定模組暫存器位址空間內。
- 如申請專利範圍第6項所述之微處理器,其中,該熔絲熔斷裝置為一電荷泵。
- 如申請專利範圍第1項所述之微處理器,其中,於熔斷該等熔絲其中之一前,該熔絲熔斷裝置之充電時間為可配置。
- 如申請專利範圍第1項所述之微處理器,其中,該熔絲熔斷裝置用來熔斷該等熔絲其中之一所需之放電時間為可配置。
- 如申請專利範圍第1項所述之微處理器,其中,該微處理器熔斷一熔絲之再試次數為可配置。
- 如申請專利範圍第1項所述之微處理器,其中,該等熔絲包括複數之第一資料熔絲、及對應於該等第一資料熔絲之複數之第二時脈熔絲,其中,配置該微處理器用以依序熔斷該等資料熔絲,以及依序熔斷該等時脈熔絲。
- 如申請專利範圍第21項所述之微處理器,其中,最近熔斷之時脈熔絲所對應資料熔絲之數值為該可複寫非依電性狀態之目前值。
- 如申請專利範圍第21項所述之微處理器,其中,若該新值為第一布林值,則該熔絲熔斷裝置依序熔斷最近熔斷之時脈熔絲所對應資料熔絲,其中,若該新值為第二布林值,則該熔絲熔斷裝置依序熔斷下一個時脈熔絲。
- 如申請專利範圍第1項所述之微處理器,其中,該等熔絲被群組為複數之單元,其中,每一單元包括資料熔絲及指標熔絲,其中,該熔絲熔斷裝置係被配置用以熔斷該指標熔絲,用以產生一數值,係指向該等單元中之一閒置單元,並於該等單元中,產生連結兩個或多個單元之一串列表單,其中,於連結該兩個或多個單元之串列表單中,該布林邏輯單元對從該資料熔絲所讀取之數值執行布林運算,用以決定該可複寫非依電性狀態之目前值。
- 如申請專利範圍第24項所述之微處理器,其中,於連結該兩個或多個單元之串列表單中,該布林邏輯單元對從該資料熔絲所讀取之數值執行布林互斥運算,用以決定該可複寫非依電性狀態之目前值。
- 如申請專利範圍第24項所述之微處理器,其中,於該等單元中,在複數之第一單元之所有資料熔絲均熔斷之後,該熔絲熔斷裝置係被配置用以熔斷該指標熔絲,用以產生該數值,係指向該等單元中之該閒置單元,並於該等單元中,產生連結兩個或多個單元之該串列表單。
- 如申請專利範圍第1項所述之微處理器,其中,回應於一重置,若該微處理器決定將一既定數值寫入至該可複寫非依電性狀態,則該微處理器停止讀取及執行外部程式指令。
- 如申請專利範圍第1項所述之微處理器,其中,回應於該微處理器所解碼之一x86 RDMSR指令,該布林邏輯單元對從該等熔絲所讀取之數值執行布林運算,用以決定該可複寫非依電性狀態之目前值,並將該可複寫非依電性狀態之目前值載入至該微處理器之一x86結構暫存器。
- 一種可複寫非依電性狀態之新值寫入方法,適用於一微處理器,該可複寫非依電性狀態由該微處理器所執行之一指令定址,該方法包括:透過該微處理器讀取複數之熔絲來判斷每一熔絲為已熔斷或未熔斷,用以回應該微處理器所解碼之該指令,其中,每一熔絲被讀取為已熔斷時提供一第一布林值,而被讀取為未熔斷時提供一第二布林值,其中,該等熔絲初始為未熔斷;利用一布林邏輯單元,對從該等熔絲所讀取之數值執行布林運算,以決定該可複寫非依電性狀態之一目前值;當該新值不同於該可複寫非依電性狀態之目前值時,利用一熔絲熔斷裝置,從該等熔絲中熔斷至少一個未熔斷熔絲,用以將該可複寫非依電性狀態之目前值改變為該指令所指定之新值;以及回應於該微處理器所執行之一程式且多次執行之該指令。多次執行上述讀取之步驟、執行布林運算之步驟、以及熔斷至少一個未熔斷熔絲以將該可複寫非依電性狀態之目前值改變為一新值之步驟。
- 如申請專利範圍第29項所述之方法,更包括:用以表示於該程式所包括之該指令中,當熔斷該等熔絲中至少一個未熔斷熔絲時,該等熔絲之未熔斷熔絲數量不足以將該可複寫非依電性狀態之目前值改變為該新值之一條件。
- 如申請專利範圍第29項所述之方法,更包括:透過一指令解碼器解碼該指令;以及回應於該指令解碼器之解碼該指令,呼叫及配置微碼單元用以:讀取該等熔絲之數值;指示該布林邏輯單元對從該等熔絲所讀取之數值執行布林運算;決定該可複寫非依電性狀態之目前值;以及指示該熔絲熔斷裝置從該等熔絲中熔斷至少一個未熔斷熔絲,以將該可複寫非依電性狀態之目前值改變為該指令所指定之新值。
- 如申請專利範圍第29項所述之方法,其中,由該微處理器所執行之指令為一x86 WRMSR指令。
- 如申請專利範圍第29項所述之方法,其中,將該可複寫非依電性狀態定址於該微處理器之一x86特定模組暫存器位址空間內。
- 一種微處理器,具有可複寫非依電性狀態,包括:複數之熔絲,分別由該微處理器讀取來判斷每一熔絲為已熔斷或未熔斷,用以回應偵測到一既定條件,其中,每一熔絲被讀取為已熔斷時提供一第一布林值,而被讀取為未熔斷時提供一第二布林值,其中,該等熔絲初始為未熔斷;一布林邏輯單元,耦接於該等熔絲,係被配置用以對從該等熔絲所讀取之數值執行布林運算,以決定該可複寫非依電性狀態之一目前值;以及一熔絲熔斷裝置,耦接於該等熔絲,當一新值不同於該可複寫非依電性狀態之目前值時,係被配置用以從該等熔絲中熔斷至少一個未熔斷熔絲,以將該可複寫非依電性狀態之目前值改變為該新值,其中,回應於偵測到既定條件,當該新值多次不同於該可複寫非依電性狀態之目前值時,該微處理器係被配置用以多次讀取該等熔絲、執行布林運算、以及熔斷至少一個未熔斷熔絲以將該可複寫非依電性狀態之目前值改變為該新值。
- 如申請專利範圍第34項所述之微處理器,更包括:微碼單元,可被呼叫以回應偵測到該既定條件,係被配置用以:讀取該等熔絲之數值;指示該布林邏輯單元對從該等熔絲所讀取之數值執行布林運算;決定該可複寫非依電性狀態之目前值;以及指示該熔絲熔斷裝置從該等熔絲中熔斷至少一個未熔斷熔絲,以將該可複寫非依電性狀態之目前值改變為該新值。
- 一種可複寫非依電性狀態之新值寫入方法,適用於一微處理器,該可複寫非依電性狀態由該微處理器定址,該方法包括:透過該微處理器讀取複數之熔絲來判斷每一熔絲為已熔斷或未熔斷,用以回應偵測到一既定條件,其中,每一熔絲被讀取為已熔斷時提供一第一布林值,而被讀取為未熔斷時提供一第二布林值,其中,該等熔絲初始為未熔斷;利用一布林邏輯單元,對從該等熔絲所讀取之數值執行布林運算,以決定該可複寫非依電性狀態之一目前值;當該新值不同於該可複寫非依電性狀態之目前值時,利用一熔絲熔斷裝置,從該等熔絲中熔斷至少一個未熔斷熔絲,用以將該可複寫非依電性狀態之目前值改變為該新值;以及回應於偵測到既定條件,多次執行上述讀取之步驟、執行布林運算之步驟、以及熔斷至少一個未熔斷熔絲以將該可複寫非依電性狀態之目前值改變為該新值之步驟。
- 如申請專利範圍第36項所述之方法,更包括:回應於偵測到該既定條件,呼叫及配置微碼單元用以:讀取該等熔絲之數值;指示該布林邏輯單元對從該等熔絲所讀取之數值執行布林運算;決定該可複寫非依電性狀態之目前值;以及指示該熔絲熔斷裝置從該等熔絲中熔斷至少一個未熔斷熔絲,以將該可複寫非依電性狀態之目前值改變為該新值。
- 一種微處理器,執行用來定址可複寫非依電性狀態之一指令,用以使該微處理器將一新值寫入該可複寫非依電性狀態中,該微處理器包括:複數之虛擬熔絲,每一虛擬熔絲包括複數之實體熔絲,其中,每一實體熔絲分別由該微處理器讀取來判斷每一實體熔絲為已熔斷或未熔斷,用以回應該微處理器所解碼之該指令,其中,該微處理器計算該等實體熔絲之布林或運算,當該等實體熔絲至少其中之一被讀取為已熔斷,用以產生該虛擬熔絲之一第一布林值,而當該等實體熔絲被讀取均不為已熔斷時,則產生一第二布林值,其中,該等實體熔絲初始為未熔斷;複數之虛擬位元,每一虛擬位元包括複數之虛擬熔絲,其中,該微處理器計算該等虛擬熔絲之布林互斥運算,用以產生該虛擬位元之數值;以及一虛擬字元,包括該等虛擬位元,其中,該微處理器係被配置用以對從該等實體熔絲所讀取之數值執行布林運算,用以決定該虛擬字元之一目前值,比較該虛擬字元之每一位元及由該指令所寫入新值之每一位元,以及當該新值不同於該虛擬字元之目前值時,從該等實體熔絲中熔斷至少一個未熔斷熔絲,以將該虛擬字元之目前值改變為該指令所指定之新值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US5621308P | 2008-05-27 | 2008-05-27 | |
US12/141,387 US7663957B2 (en) | 2008-05-27 | 2008-06-18 | Microprocessor with program-accessible re-writable non-volatile state embodied in blowable fuses of the microprocessor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200949688A TW200949688A (en) | 2009-12-01 |
TWI402749B true TWI402749B (zh) | 2013-07-21 |
Family
ID=41220604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098117058A TWI402749B (zh) | 2008-05-27 | 2009-05-22 | 微處理器及其可複寫非依電性狀態之新值寫入方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7663957B2 (zh) |
CN (1) | CN101561796B (zh) |
TW (1) | TWI402749B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794249B (zh) * | 2009-03-06 | 2012-02-08 | 威盛电子股份有限公司 | 微处理器及初始化微处理器的方法 |
US8234543B2 (en) * | 2009-03-06 | 2012-07-31 | Via Technologies, Inc. | Detection and correction of fuse re-growth in a microprocessor |
US8276032B2 (en) * | 2009-08-07 | 2012-09-25 | Via Technologies, Inc. | Detection of uncorrectable re-grown fuses in a microprocessor |
US9171165B2 (en) * | 2009-12-23 | 2015-10-27 | Intel Corporation | Methods, systems, and apparatuses to facilitate configuration of a hardware device in a platform |
US8194489B2 (en) * | 2010-01-21 | 2012-06-05 | International Business Machines Corporation | Paired programmable fuses |
US8242800B2 (en) | 2010-06-25 | 2012-08-14 | Via Technologies, Inc. | Apparatus and method for override access to a secured programmable fuse array |
US8341472B2 (en) | 2010-06-25 | 2012-12-25 | Via Technologies, Inc. | Apparatus and method for tamper protection of a microprocessor fuse array |
US8429471B2 (en) | 2010-06-25 | 2013-04-23 | Via Technologies, Inc. | Microprocessor apparatus and method for securing a programmable fuse array |
US8590038B2 (en) * | 2010-08-20 | 2013-11-19 | Via Technologies, Inc. | Revokeable MSR password protection |
CN103946811B (zh) | 2011-09-30 | 2017-08-11 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
EP2761469B1 (en) | 2011-09-30 | 2019-11-13 | Intel Corporation | Non-volatile random access memory (nvram) as a replacement for traditional mass storage |
EP2761476B1 (en) * | 2011-09-30 | 2017-10-25 | Intel Corporation | Apparatus, method and system that stores bios in non-volatile random access memory |
EP2761465B1 (en) | 2011-09-30 | 2022-02-09 | Intel Corporation | Autonomous initialization of non-volatile random access memory in a computer system |
CN103389411B (zh) * | 2013-07-24 | 2016-08-31 | 江苏斯菲尔电气股份有限公司 | 多功能电能表及其电能数据恢复方法 |
JP6219631B2 (ja) * | 2013-07-29 | 2017-10-25 | 学校法人明星学苑 | 論理演算装置 |
US8879345B1 (en) | 2013-08-21 | 2014-11-04 | Via Technologies, Inc. | Microprocessor mechanism for decompression of fuse correction data |
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 |
US8982655B1 (en) | 2013-08-21 | 2015-03-17 | Via Technologies, Inc. | Apparatus and method for compression and decompression of microprocessor configuration data |
TWI552068B (zh) * | 2013-08-21 | 2016-10-01 | 上海兆芯集成電路有限公司 | 組態資料的處理裝置及方法 |
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 |
US9395802B2 (en) | 2014-05-22 | 2016-07-19 | Via Alliance Semiconductor Co., Ltd. | Multi-core data array power gating restoral mechanism |
US9524241B2 (en) | 2014-05-22 | 2016-12-20 | Via Alliance Semiconductor Co., Ltd. | Multi-core microprocessor power gating cache restoral mechanism |
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 |
KR102506838B1 (ko) * | 2016-09-30 | 2023-03-08 | 에스케이하이닉스 주식회사 | 반도체 장치 및 그의 동작 방법 |
JP6869315B2 (ja) * | 2019-02-19 | 2021-05-12 | 華邦電子股▲ふん▼有限公司Winbond Electronics Corp. | 電子ヒューズ回路及びその動作方法 |
CN110309549B (zh) * | 2019-06-05 | 2023-04-07 | 上海华虹宏力半导体制造有限公司 | 通过布尔运算放置Fuse图形的方法 |
CN111192619A (zh) * | 2019-12-25 | 2020-05-22 | 北京时代民芯科技有限公司 | 一种基于栅氧击穿型反熔丝存储阵列的编程系统及方法 |
Citations (2)
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 |
TW200713028A (en) * | 2005-05-23 | 2007-04-01 | Intel Corp | In-system reconfiguring of hardware resources |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790783A (en) | 1996-03-28 | 1998-08-04 | Advanced Micro Devices, Inc. | Method and apparatus for upgrading the software lock of microprocessor |
JP3984209B2 (ja) * | 2003-07-31 | 2007-10-03 | 株式会社東芝 | 半導体記憶装置 |
JP2006012367A (ja) * | 2004-06-29 | 2006-01-12 | Toshiba Corp | 不揮発性半導体記憶装置 |
-
2008
- 2008-06-18 US US12/141,387 patent/US7663957B2/en active Active
-
2009
- 2009-05-22 TW TW098117058A patent/TWI402749B/zh active
- 2009-05-26 CN CN2009102028227A patent/CN101561796B/zh active Active
Patent Citations (2)
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 |
TW200713028A (en) * | 2005-05-23 | 2007-04-01 | Intel Corp | In-system reconfiguring of hardware resources |
Also Published As
Publication number | Publication date |
---|---|
CN101561796A (zh) | 2009-10-21 |
US7663957B2 (en) | 2010-02-16 |
CN101561796B (zh) | 2011-01-05 |
TW200949688A (en) | 2009-12-01 |
US20090296511A1 (en) | 2009-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI402749B (zh) | 微處理器及其可複寫非依電性狀態之新值寫入方法 | |
JP5535547B2 (ja) | セキュアメモリインターフェース | |
JP5984989B2 (ja) | オンチップのnand型フラッシュメモリおよびその不良ブロック管理方法 | |
KR100375217B1 (ko) | 전기적으로 재기입 가능한 불휘발성 메모리를 구비하는마이크로컨트롤러 | |
US6772276B2 (en) | Flash memory command abstraction | |
JP5476391B2 (ja) | データ処理システム | |
JPH0799498B2 (ja) | 誤りのあるマイクロ命令を訂正する装置 | |
TWI397007B (zh) | 系統支援儲存及電腦系統 | |
CN103946814A (zh) | 计算机系统中的非易失性随机存取存储器的自主初始化 | |
KR20020072182A (ko) | 프로그래밍할 수 있는 비휘발성 메모리를 내장한 마이크로컴퓨터 | |
JP2002157235A (ja) | マイクロコントローラ | |
JPH06325185A (ja) | マイクロプロセッサ、メモリ及び内部構成可能な周辺装置を備える集積回路 | |
JP4071942B2 (ja) | データ処理装置及びデータプロセッサ | |
US7680976B2 (en) | Method and apparatus for emulating rewritable memory with non-rewritable memory in an MCU | |
ES2348817T3 (es) | Mecanismo de expansiã“n de parche de microcã“digo. | |
JP2010181990A (ja) | データプロセッサ | |
US20200279611A1 (en) | Systems and methods to wake up memory array | |
WO2007056234A2 (en) | Hybrid memory system for a microcontroller | |
JP2018022277A (ja) | プログラマブルロジックデバイス、情報処理装置、ソフトエラー記録方法、及びソフトエラー記録プログラム | |
US20160328240A1 (en) | Bios system with simulated cmos | |
JP4616960B2 (ja) | 外部rom端子を有する半導体装置 | |
JPH04305735A (ja) | マイクロプログラム制御回路 | |
CN101246746B (zh) | 虚拟电子熔丝装置和方法 | |
JP4083474B2 (ja) | メモリ装置の制御方法およびそのプログラムならびに記録媒体 | |
JP2007157143A (ja) | 処理配列、メモリカード装置、並びに処理配列の動作方法及び製造方法 |