新四季網

微碼修補擴充機制、擴充微碼修補機制容量的裝置及其方法

2023-12-11 18:04:07 2

專利名稱:微碼修補擴充機制、擴充微碼修補機制容量的裝置及其方法
技術領域:
本發明涉及微電子領域,而且特別涉及微處理器中用以執行微碼修補的 裝置及方法。
背景技術:
目前,於每一時鐘周期中,微處理器被設計用以執行許多指令,並於任 一特定時鐘周期中,提供許多可以執行最大指令數量之特徵。
一般而言,一
時鐘周期;波視為分配給微處理器之每一流水線級(pipeline stage)之間隔時 間,用以執行將結果傳送至下一個流水線級所需之處理工作。而現今之處理 器包括許多流水線級, 一部分被平行配置,用以允許同時或並行之處理工作 (task),因此多重指令得以平行執行。為了同步每一級之指令執行,將一核 心時鐘信號提供至每一流水線級。該核心時鐘信號,由一外部時鐘產生電路 所提供,通常為一總線時鐘信號頻率之倍數。
任何本領域普通技術人員應當了解, 一當前流水線微處理器之主要級可 劃分為由存儲器讀取指令(即讀取級邏輯單元);對特定處理器而言,將 指令轉譯至為唯一 (原生)之相關微指令序列(轉譯級邏輯單元);執行該
相關微指令序列(執行級邏輯單元);及將執行結果寫入至指定位置(寫入 級邏輯單元)。
上述讀取及轉譯級,是被描述於當前使用宏(macro)指令之一複雜指 令集(CISC)之上下文中,例如常見之x86指令集架構(ISA)。利用一 單一宏指令以指定一些低級硬體操作,因此,任何本領域普通技術人員應了 解到,從存儲器(例如外部存儲器或高速緩存)讀取一宏指令之前,需先 將該宏指令轉換為對應之微指令序列(亦稱為原生指令),是用以指定一個 或多個低級硬體操作。隨著這轉換,該微指令通常平行地被分派至各種執行 級單元用以執行,從而產生結果或執行所指定之低級操作。
因此,此技術領域將重點投注於開發快速及效能良好之架構,用以將宏 指令轉換至相關微指令序列,及用以將微指令最佳化地分派至執行級資源。有一些不同的方法用以執行轉換操作,但大部分的方法一般通過硬體及一隻
讀存儲器(ROM)之索引存儲器,以直接轉換(意即轉譯)之組合為其特徵。
直接轉譯之資源通常為轉譯器、解碼器、轉譯邏輯單元等,而索引存儲器之
資源通常為微碼只讀存儲器(microcode ROM )或微指令只讀存儲器(micro instruction ROM )。
舉例而言,指定一非常簡單操作之一特定宏指令,也許僅通過一轉譯器 直接進行轉譯,或許將被轉換至一個或多個相關微指令,而指定一非常複雜 操作(例如 一三角函數)之另一特定宏指令,則可被轉譯為一單一微指令, 以指定該微碼只讀存儲器之一地址(即一微碼只讀存儲器之入口點),包括 上百筆連續存放微指令之一序列,且該序列中之每一微指令是指定執行該復 雜操作所需之一低級操作。
任何本領域普通技術人員應當了解,儲存於該微碼只讀存儲器之複雜微 指令序列容易產生錯誤。當設計及製造新微處理器時,需依靠系統設計者提 供檢測及修正這些錯誤的方法,以使整體變動的影響減到最小。於進行大量 生產前所採取之檢測錯誤技術,為使實驗室或偵錯環境更彈性化,或許會犧 牲指令處理量(throughput)及一特定部分之速度。舉例而言,於一新設計 中,在對矽進行變動前,實驗室通常會提供用以仿真及測試微碼變化影響的 裝置。除此之外,根據所提供之修正選擇,製造部分之微碼錯誤修正彈性上 會優先考慮該部分之速度及處理量。另外,若於出貨後檢測出微碼錯誤,亦 可提供將修正分發給消費者之技術,以此方式,消費者便能執行該部分之修 正。jHyf奮正通常淨皮-爾為小l^卜(patch )、 4鼓石馬4'l^卜(microcode patch )、市場工 程修改(field engineering change; field ECs )等其它名稱。
微碼修補之較佳方式,是以一個或多個替代之微碼指令,簡單地取代或 置換一特定之微碼指令。因此,於該微碼只讀存儲器中,當檢測到該特定之 微碼指令被存取時,其對應之置換微碼指令接著進行取代之操作。理論上,
此為一直接之方式。然而,實際上,於操作環境中,由於需不影響部分之處 理量,用於微碼修補的裝置往往非常複雜。
於美國專利第6438664號中,McGrath是針對許多農i碼修補方法之優缺 點進行討論,包括當遇到引起問題之微碼時,以及遇到引起問題之微碼前, 立即從外部存儲器讀取欲置換之微碼。在遇到問題微碼前預先讀取時,則該 置換微碼是儲存於一可變位置中,當需要時用以取代該問題微碼。此外,於一處理器中,McGrath提供一些隨機存取存儲器(RAM),用以執行微碼修 補。於處理器操作期間,該隨機存取存儲器由外部存儲器載入修補,由該微 碼只讀存儲器存取一微碼線,以使得能夠一旦修補時,則從該隨機存取存儲 器讀取及執行該修補,以取代該微碼線。McGrath揭示一些匹配寄存器,用 以儲存微碼只讀存儲器地址,是與隨機存取存儲器之修補相關。當發現一匹 配地址時,則允許該隨機存取存儲器進行取代。進一步,McGrath提到此方 法雖然有效,但當控制權由該微碼只讀存儲器切換至該隨機存取存儲器時, 於流水線中,亦會產生兩周期泡沫(two-cycle bubble)之限制。意即,根據 McGrath所揭露之技術,為犧牲效能及處理量之微碼修補。
因此,需要一種執行一微碼修補的裝置及方法,不造成一微處理器流水 線級之延遲。進一步,更需要一種執行實時替代微碼的裝置,用以將微碼只 讀存儲器中之一微指令以一置換微碼指令取代之,而不影響該微處理器之效 能。
此外,亦需一種執行微碼修補之技術,用以將一單一微碼只讀存儲器指 令,置換為一個以上之替代微碼指令,即為一對多之微碼修補,其中,存取 該微碼修補並不會造成額外之延遲。
進一步,更需要一種彈性裝置,用以存取儲存於外部存儲器之微碼修補, 於設計微處理器時,將存取微碼修補時所造成之影響減至最小,並允許於該 替代碼中,交錯宏及微指令。於處理器調試、及對應複雜操作所需之微碼例 程(routine)之仿真期間,此一裝置之設計特別適用。
同時,亦需一種不需通過微處理器執行指令,便可從一外部來源將微碼 修補載入一微處理器之技術。

發明內容
本發明,於其它應用中,用以解決上述之問題,及解決傳統技術之限制、 缺點和其它相關問題。本發明提供一種擴充一微處理器能力之容量,以執行
微碼修補之優越技術。於一實施例中,提供樣i處理器之一種微碼修補擴充機 制。該微碼修補擴充機制包括 一修補隨機存取存儲器、擴充隨機存取存儲 器、及一控制器。該修補隨機存取存儲器,是配置用以儲存多個第一修補指 令,其中,該微處理器執行所述多個第一修補指令,以替代儲存於一微碼只 讀存儲器之一個或多個微指令。該擴充隨機存取存儲器耦接該修補隨機存取存儲器。該擴充隨機存取存儲器,是配置用以儲存多個第二修補指令,其中, 所述多個第二修補指令之數目較所述多個第一修補指令之數目多,且其中, 該微處理器執行所述多個第二修補指令,以替代儲存於該微碼只讀存儲器之 一個或多個微指令。該控制器耦接該修補隨機存取存儲器及該擴充隨機存取
存儲器。該控制器是配置用以執行一擴充隨機存取存儲器(EXPRAM)微指 令,以指示由該修補隨機存取存儲器載入所述一個或多個第二修補指令,以 及,亦被配置用以將該一個或多個第二修補指令載入至該修補隨機存取存儲 器。其中,上述EXPRAM微指令控制上述一個或多個第二修補指令與一對 應之一個或多個上述第 一修補指令調換。
本發明之一目的,是於一微處理器之一轉譯級內實現一裝置,用以擴充 一微碼修補機制之容量,是對應於儲存在一微碼只讀存儲器之一微指令。該 裝置具有一修補隨機存取存儲器、 一擴充隨機存取存儲器、與一控制器。該 修補隨機存取存儲器儲存一第一修補指令序列,其中,該第一修補指令序列 包括 一擴充隨機存取存儲器(EXPRAM)微指令。該擴充隨機存取存儲器 儲存一第二修補指令序列,其中,是執行該第一與第二修補指令,而非該微 指令,且其中,該第一修補指令序列之一第一修補指令儲存於該隨機存取存 儲器之一位置,其對應於包含該微指令之微碼只讀存儲器之一地址。該控制
EXPRAM微指令,並將該第二修補指令序列載入該修補隨機存取存儲器。 其中,上述EXPRAM指令控制上述第一修補指令序列與上述第二修補指令 序列中之對應修補指令調換。
本發明之另一目的,是實現一種擴充一微處理器之微碼修補機制容量的 方法。該方法包括於微碼地址空間內,提供一修補隨機存取存儲器之一第 一微碼修補,且隨後執行該第一微碼修補,以替代儲存於微碼只讀存儲器之 一第一微指令;響應一擴充隨機存取存儲器(EXPRAM)指令之執行,由一 擴充存儲器,將一第二微碼修補傳送至該修補隨機存取存儲器,其中,該修 補隨機存取存儲器是被配置用以儲存較該修補隨機存取存儲器更多數目之 修補指令;以及,執行該第二微碼修補,以替代儲存於微碼只讀存儲器之一 第二微指令。其中,該傳送包括將該第一微碼修補調換為該第二微碼修補。
進一步,本發明,於其它應用中,用以解決上述之問題,及解決傳統技 術之限制、缺點和其它相關問題。本發明提供一種擴充一微處理器容量,以執行微碼修補之優越技術。本發明一方面是於一微處理器之一轉譯級內實現
一裝置,用以將修補提供至儲存於微碼只讀存儲器之;f敬指令,及提供至該微
處理器之電路。該裝置包括一擴充隨機存取存儲器、 一修補載入器、與一控 制器。該擴充隨機存取存儲器是被配置以儲存該修補,其中,該微處理器執 行一個或多個第一修補,以替代對應之一個或多個微指令,且其中,利用一 個或多個第二修補,以修補對應之一個或多個電路。該修補載入器耦接該擴 充隨機存取存儲器,是被配置由該微處理器外部之一來源取得該修補,並被 配置以將該修補載入該擴充隨機存取存儲器。該控制器耦接一修補隨機存取 存儲器與該擴充隨機存取存儲器,且被配置以執行擴充隨機存取存儲器
(EXPRAM )微指令,以及將該一個或多個第一修補載入該修補隨機存取存 儲器,藉以執行該一個或多個第一修補,以替代對應之一個或多個微指令。 其中,上述EXPRAM指令控制上述一個或多個第一修補與上述修補隨機存 取存儲器所對應之修補調換。
再者,本發明另一方面是實現一種提供修補的方法, 一種用以將修補提 供給一微處理器之微碼及電路。該方法包括由該微處理器外部之一來源提 供多個修補,其中,該微處理器執行一個或多個第一修補,以替代儲存於一 微碼只讀存儲器中所對應之一個或多個微指令,且其中,利用一個或多個第 二修補,以修補該微處理器所對應之一個或多個電路;由該來源取得所述多 個修補,並將所述多個修補載入至一擴充隨機存取存儲器;利用所述一個或 多個第二修補,以修補該對應之一個或多個電路;以及,執行所述一個或多 個第一修補,以替代該對應之一個或多個微指令。


圖1是顯示於一微處理器中執行微碼修補之一傳統裝置框圖; 圖2是顯示根據本發明實施例,於一處理器中, 一轉譯級之細節框圖; 圖3是顯示根據本發明實施例之一實時微碼修補裝置框圖; 圖4是顯示根據本發明實施例之一種執行實時微碼修補方法流程圖; 圖5是顯示根據本發明實施例之一裝置框圖,用以執行一對多之微碼修 補操作;
圖6是顯示根據本發明實施例之一種實現一對多微碼修補方法流程圖; 圖7是顯示根據本發明實施例之一裝置框圖,用以從存儲器執行一微碼修補;圖8是顯示根據本發明實施例之一示範封裝宏指令格式;圖9是顯示根據本發明實施例之一轉譯旁路碼;圖10是顯示根據本發明實施例之一微碼修補擴充機制框圖;圖11是顯示根據本發明實施例之一修補隨機存取存儲器覆蓋技術細節框圖,用於一微處理器中;圖12是顯示於製造期間,實現一微碼修補機制之框圖;圖13是顯示於圖12圖中,該熔絲陣列之熔絲存儲體0內部,熔絲狀態之範例表;以及圖14是顯示依據本發明實施例之一示範修補存儲體記錄之欄位框圖。主要組件符號說明
100 微碼修補裝置; 101 查找表;102 匹配寄存器0、匹配寄存器7;103~比較器;104 地址增加器;105、 305、 505、 705、 1005、 1105 微碼只讀存儲器;106、 1151 修補隨機存取存儲器;107、 214、 307、 313、 507、 513、 707、 713、 1007、 1013 多工器;108、 308、 508、 708、 1008 地址定序器;109、 309、 509、 709、 1009 下一個地址寄存器;110、 310、 510、 710、 1010、 1161 指令寄存器; 200~轉譯級;221 模式檢測器;223 原生指令路由器;211 指令長度解碼器;212~轉譯器;213 控制只讀存儲器;300 實時微碼修補裝置;331、 531、 731、 1031 系統存儲器;332、 334、 532、 534、 732、 734、 1032、 1034 修補數據;333、533、733、1033 基本輸入輸出系統(只讀存儲器);311、511、711、1011 修補載入器;312、512、712、1012 修補陣列;304、504、704、1004 地址增加器;321、521、721、1021、 1056 熔絲陣列;323、523、723、727、 1023、 1027 機器特定寄存器;500 一對多微碼修補裝置;551、 751、 1051 修補隨機存耳又存儲器;700 微碼修補裝置;754、 1054 保存上下文陣列;755、 1045 中斷/執行/交換邏輯單元; 728、 1028 標誌寄存器;1000 微碼修補擴充機制;1055、 1155 擴充隨機存取存儲器;1162 EXPRAM控制器;1201 陣列控制器;1202 存儲體;以及1203~炫絲。
具體實施方式
關於上述所討論的裝置,用以於現今之一處理器內部,執行一微碼修補, 如圖1所示,是用以強調說明所述裝置之限制。隨後之圖2至圖9,是用以 顯示本發明之相關討論。本發明提供一種兼具彈性及效能之技術,於一微處 理器中,用以規劃及實現微碼只讀存儲器之修補。本發明在執行修補之環境 上更具彈性,且與傳統技術相較下,具有能更迅速實現修補的裝置。請參考圖1,是顯示一傳統裝置框圖,用以於一微處理器中執行微碼修 補。該框圖是描述一傳統的微碼修補裝置100,例如,可用於一目前之微處 理器之轉譯級內部。該裝置100包括一微碼只讀存儲器105,耦接一修補隨 機存取存儲器106。為便於討論,配置該隨機存取存儲器106,用以將置換 微指令儲存於一微碼存儲地址空間之上方64個位置中,從地址0x00至 OxC3f。因此,配置該微碼地址空間上方64個位置,作為隨機存取存儲器106,以對應只讀存儲器105。通過一微碼地址總線ADDR存取該微碼地址空間 0x00-0xC3f,而該只讀存儲器105及該隨機存取存儲器106,將已編入索引 之微指令序列輸出至一指令寄存器110。該指令寄存器110,將微指令提供 給微處理器之下一個級(未示出)執行。該地址總線ADDR,由一下一個地址寄存器109接收一微碼地址,其輸 入耦接一多工器107之輸出。該多工器之輸出為四個多工器輸入其中之一。 該多工器輸入為一遞增地址,是由一地址增加器104、 一下一個入口點地址 NEXT ENTRY POINT、 一分支目標地址BRTGT、及一修補地址所產生。該 地址增加器104增加總線ADDR所提供之一前次微碼地址,用以於一下一 個連續微碼地址之位置,使能一微指令之索引,例如可為微指令序列所利 用。於該指令寄存器110中,目前指令之分支目標欄位提供該分支目標地址, 以使能執行微碼只讀存儲器105之分支。該下一個入口點為微碼只讀存儲器 105中之一位置,是包含微指令,對應於一後續之微指令序列。於該隨機存 取存儲器106中,該修補地址為一替代之微指令位置,用以取代儲存於微碼 只讀存儲器105之現有微指令。 一地址定序器108,耦接該指令寄存器110, 產生一選"l奪總線值SEL,以指示該多工器107由四個輸入選4奪其一。該地址 定序器108判斷該指令寄存器110之微指令類型。當該微指令包括一後續微 指令,是儲存於微碼只讀存儲器105或隨機存取存儲器i06時,則配置SF丄 使該多工器107選擇該遞增地址作為輸入。當該微指令為一分支指令時,則 配置SEL,指示該多工器107將該分支目標地址提供至該下一個地址寄存器 109。當該微指令為一微指令序列之最後一個微指令時,則該地址定序器108 指示該多工器107,用以通過SEL將下一個入口點地址提供至下一個地址寄 存器。 一般而言,下一個入口點地址是通過一直接轉譯器(未示出)轉譯一 後續之宏指令而產生。為求簡潔,在此不加贅述與該轉譯器之相互作用。該裝置100亦顯示8個匹配寄存器102,其中,每一個均耦接一比較器 103。此外,經由總線ADDR,該比較器103接收該微碼地址,是由該下一 個地址寄存器109所提供。該比較器103輸出一選擇總線SEL[7:0],用以於 一查找表101中,由8個入口選擇其中之一,且亦耦接該地址定序器108, 指示已檢測到用一微碼地址,用以執行一修補。於該查找表101之8個入口 中,每一個為一微碼修補地址,被提供至總線PATCH ADDR,作為該多工 器107之一輸入。圖1之配置,為目前用以執行微碼修補所使用之代表裝置。於搡作中,通過基本輸入輸出系統(BIOS)之指令,或者,於處理器電力開啟(power-up) 或重置(reset)後,通過作業系統所執行之指令,該只讀存儲器105內部之 一微碼序列是被配置由外部存儲器(未示出)載入該匹配寄存器102、該查 找表IOI、及該修補隨機存取存儲器106。因此,於總線ADDR上,當下一 個微碼地址與該載入之匹配寄存器102之一內容匹配時,則該比較器103設 定SEL[7:0],以於該查找表101中選擇該對應之修補地址,並指示該地址定 序器108,將該下一個地址寄存器109目前之內容(即引起問題之微碼地址) 替換為該查找表101所提供之修補地址。該地址定序器108因而改變SEL 之值,用以選擇該修補地址,作為該下一個地址寄存器109之輸入,因此, 由該下一個地址寄存器109提供該修補地址,並於該修補隨機存取存儲器 106中指示該入口點,作為置換微指令,隨後輸出至該指令寄存器110。圖l之配置,對於通過市場工程修改進行微碼修補而言是有幫助的,且 利用已知之技術,易於通過執行儲存於基本輸入輸出系統或作業系統之指令 來載入。然而,如McGrath所述,且如同本發明人所觀察到的,必須進行一 微指令取代時(意即,當該比較器103指示一匹配時),於存取該對應之微 碼指令前,由該下一個地址寄存器現在所輸出之地址,必須以該查找表IOI 所讀取之一修補地址取代之。McGrath提到這會於流水線中產生兩周期泡沫 之延遲。此外,本發明人已注意到,此一延遲於最高操作條件下是不被允許 的,再者,就效能角度來看,於流水線中產生任一延遲是極為不利的。效能 因此被限制,進而使現今之微碼修補技術受到局限。本發明藉助提供一微碼修補裝置及方法,用以克服上述之限制,當存取 該修補時,並不會於流水線中產生任何額外延遲,使得執行一對一 (one-to-one ) 或一對多(one-to-many)修補時,並不影響處理器之處理量。 本發明亦提供一種彈性化裝置,用以執行修補,於仿真及調試時,適合犧 牲彈性以求完全的效能、具高度彈性但稍微影響效能、或最大彈性之情況。 以下將配合圖2至圖9詳細敘述本發明。請參考圖2,是顯示根據本發明實施例之一徵處理器之一轉譯級200之 細節框圖。該轉譯級200是被配置,以支持一對一微碼修補操作、 一對多微 碼修補操作,且具讀取及執行存於系統存儲器之微指令之彈性。根據本發明 之一實施例, 一對一微碼修補操作為取代一單一微碼只讀存儲器位置所儲存內容之操作。舉例而言,從微碼只讀存儲器地址0x001E所取得之一38位微 碼只讀存儲器輸出,以一38位之置換之加以取代,即浮見為一對一微碼修補, 而不需管該38位輸出是否為 一 明確(explicit)微指令、 一序連(concatenated ) 微指令、或多個微指令之一編碼。同樣地, 一對多微碼修補操作,是將一單 一微碼只讀存儲器位置之內容,以一個以上之置換加以取代。於上述例子中, 將該38位微碼只讀存儲器輸出,例如,以三個38位置換加以取代,即視為 一對多微碼修補。該轉譯級200包括 一宏指令總線201,用以從系統存儲 器(未示出),分配通過讀取級邏輯單元(未示出)所讀取之指令。將該宏指令分配至旁^^邏輯(bypass logic )單元220、一指令長度解碼 器211、 一轉譯器212及一控制只讀存儲器213。如上所述,該控制只讀存 儲器213用以排序一內部微碼只讀存儲器之微指令,並執行實時(real time ) 一對一及一對多微碼修補,以下將配合圖3至圖7,加以詳細敘述。該旁路 邏輯單元220內部,宏指令被提供至一模式檢測器221及一原生指令(native ins加ction)路由器223。該模式檢測器221提供一旁路信號組,包括 一旁 路使能信號224及一禁能信號222。該禁能信號222被傳遞至該長度解碼器 211、該轉譯器212及該控制只讀存儲器213。該旁路使能信號224作為一多 工器(mux) 214之一控制信號。該原生指令路由器223、該轉譯器212及該 控制只讀存儲器213所輸出之微指令,作為該多工器214之輸入。該多工器 214由該旁路使能信號224控制,用以允許將三個微指令輸入之任一個傳送 至一原生指令總線215,或使該原生指令路由器223之輸出無法通過該原生 總線215傳送。為避免爭用之情況,藉助該禁能信號2a及HO信號2^控 制該原生指令路由器223、該轉譯器212及該控制只讀存儲器213,於任一 時間,僅傳送一微指令輸入至該多工器214。本發明之轉譯級200,是被配置用以執行如上所述之功能及操作。根據 本發明之實施例,該轉譯級200包括數字邏輯單元、模擬邏輯單元、電路、 裝置、或機器特定(machine specific )指令、或數字邏輯單元、模擬邏輯單 元、電路、裝置或機器特定指令之一組合、或用以執行前述本發明功能及操 作之等效組件。於該轉譯級200內,執行該功能及操作所使用之組件,可與 其它電路、微碼等共享,用以於該處理器內部,執行其它功能及操作。根據 本應用之範圍,機器特定指令用以表示一個或多個機器特定指令。 一機器特 定指令為一單元執行之層級指令。舉例來說,機器特定指令可通過一精簡指令集(RISC)微處理器直接執行。對一複雜指令集(CISC)微處理器而言, 例如x86兼容微處理器,則將x86指令轉譯至相關之機器特定指令,並通 過一單元或該複雜指令集微處理器內之單元,直接執行該相關之機器特定指令。於一正常操作模式下,通過該讀取級,由外部存儲器讀取一應用程式之 宏指令,並提供至該宏指令總線201。通常,因為宏指令並不依循一固定之 長度標準,因此,該指令長度解碼器211評估該總線201上之比特流,再決 定每一宏指令之位長度。於一實施例中,通過一長度總線LEN,將每一宏指 令之位長度傳送至該轉譯器212。於是,該轉譯器212由該宏指令總線201 取得所指示之位量。當該轉譯器212直接轉譯一已取得之宏指令時,該轉譯 器212執行將該宏指令轉譯至相關原生指令之操作。然後,該轉譯器212將 該原生指令提供至該多工器214。當該控制只讀存儲器213解碼該已取得之 宏指令時,該轉譯器212產生一對應之微碼只讀存儲器入口點地址,並通過 一遠端(handoff)總線HO,將該入口點地址提供給該控制只讀存儲器213, 使該控制只讀存儲器213從該微碼只讀存儲器接收該微指令。之後,該控制 只讀存儲器213由其內部之微碼只讀存儲器中讀取該對應之微指令,並將這 些微指令提供給該多工器214。因此,於正常操作模式下,該轉譯器2U或 該控制只讀存儲器213,通過該多工器214,將取得之微指令傳送至該原生 指令總線215。於一實施例中,該轉譯級邏輯單元200是^L配置用以存取一機器特定寄 存器202,包括一旁路模式使能(BE)位203。對程序設計者而言,該機器 特定寄存器202並未見於架構上,但可藉助一加密接口 ( encrypted interface ) 之特別程序加以寫入。為此,值得一提的是,當該BE位2(B被設定(assert) 時,該微處理器是於一轉譯旁路模式中,而當該BE位2(B被解除(deassert) 時,則該微處理器恢復為正常操作模式。於正常操作期間,於該旁路邏輯單元220中,該模式檢測器2"監視該 BE位203之狀態及總線201上所顯示之指令。當該BE位203被設定時, 則該模式檢測器221設定該旁路使能信號224,接著使能原生指令,使其從 該原生指令路由器223,經由該多工器214,傳遞至該原生指令總線215,其 中,原生指令是由該轉譯器212及該控制只讀存儲器213所提供。於一實施 例中,針對由該宏指令總線201所讀取之一對應宏指令,該禁能信號222禁止該轉譯器212及該控制只讀存儲器213執行指令轉譯功能。因此,當該轉 譯級200操作於正常操作模式時(即該BE位203被解除時),該旁路邏輯單 元220解除該旁路使能信號224,接著禁能該原生指令路由器223,並指示 該多工器214,由該轉譯器212或該控制只讀存儲器213選擇原生指令來執 行。當該轉譯級200於旁路模式時(即該BE位203被設定時),則該旁路邏 輯單元220設定該旁路使能信號224,然後使能該原生指令路由器223及該 模式檢測器221。於旁路模式中,該模式檢測器控制該禁能信號222之狀態,當禁能信號 被解除時,則禁能該原生指令路由器223,且該轉譯器212以及該控制只讀 存儲器213操作於正常模式。由該宏指令總線201讀取宏指令,並通過該控 制只讀存儲器213加以轉譯及取得。然而,於此模式中,通過封裝該模式檢 測器221所檢測到一特定封裝(wrapper)宏指令之原生指令, 一程序設計者 可將原生指令交錯於存於存儲器之一宏指令流程中。於一實施例中,該封裝 宏指令,為一未使用(unused)或一無效(invalid)宏指令,可於其它方面 產生一異常(exception )。因此,通過設定該BE位203,有助於一調試器將 本發明之一處理器設定成一原生旁路模式,但可繼續使用特定指令集架構之 所有宏指令。除此之外,為支持調試或仿真功能,程序設計者可利用該封裝 宏指令來內嵌(embed) —原生指令,接著,使能可編程存取於其它方面無 法利用之原生資源。舉例來說,於本發明之一微處理器內,許多原生資源(例 如暫時儲存寄存器、計數器、狀態指示器等)於宏指令執行期間被利用, 但無法存取。然而,當該微處理器於旁路模式時,藉助使用該封裝指令,用 以存取這些原生資源之原生指令,可被交錯於該宏指令中。於旁路模式中,該模式檢測器221監視由該宏指令總線201所得之指令。 當檢測到一封裝指令時,該模式檢測器設定禁能信號,接著使能該原生指令 路由器223,並禁能該轉譯器212以及控制只讀存儲器213。當被使能時, 該原生指令路由器223從該封裝宏指令內部去除該原生指令,並將該原生指 令傳遞至該多工器214及該原生指令總線215。於一實施例中,所有原生指 令具一固定位長度。於一特定實施例中,原生指令為38位。於一實施例中, 通過該封裝指令所提供之原生指令,與通過該轉譯器212以及控制只讀存儲 器213所提供一樣,是包括一個或多個機器特定指令之編碼,隨後,並由耦 接至該原生指令總線215之一機器特定轉譯器(微轉譯器),轉譯為一個或多個機器特定指令。該微轉譯器(未示出)將該機器特定指令提供給之後的 流水線級執行。於一更傳統的實施例中,通過該封裝指令、該轉譯器212、及控制只讀存儲器213所提供之原生指令,直接被提供至之後的流水線級執行。請參考圖3,是顯示根據本發明實施例之一實時微碼修補裝置300框圖。 該修補裝置300可內嵌於控制只讀存儲器內,其操作在正常或原生旁路模式 下,例如圖2所顯示之控制只讀存儲器213。該實時^f敬碼修補裝置300是 被配置用以執行一對一微碼修補操作,通常與讀取微指令所需時鐘周期相 同。意即,本發明是被配置用以一對一微碼修補,而不會於一處理器流水線 中產生任何額外延遲。該一對一修補裝置300包括一微碼只讀存儲器305。於一實施例中,該 微碼只讀存儲器具有20480 ( 0x5000)個38位之入口 ,並被設置於一 32K 微碼地址空間內。亦可涵蓋其它實施例。通過一微碼地址總線ADDR存取 該微碼地址空間,且該微碼只讀存儲器305依照該微碼地址總線ADDR之 值,將微指令序列提供給一多工器313。該多工器313之輸出是耦接一指令 寄存器310。於該微處理器中,該指令寄存器310將微指令提供給之後的級 (未示出)執行。於一實施例中,該微指令為多個機器特定指令,其為一38 位編碼。於此實施例中,將該指令寄存器310之內容提供給一微轉譯器(未 示出),用以將該編碼解碼為機器特定指令,及用以將該機器特定指令分派 至流水線中之功能單元。該地址總線ADDR,由一下一個地址寄存器309接收一微碼地址,其中, 該下一個地址寄存器309之輸入是耦接一多工器307之輸出。是由該多工器 的三個輸入中,選"t奪其中之一作為該多工器之輸出。該多工器之輸入包括 由一地址增加器304所產生之一遞增地址INC ADDR、 一下一個入口點地址 NEXT ENTRY POINT、及一分支目標地址BR TGT。該地址增加器304增加 總線ADDR所提供之一前次^:碼只讀存儲器地址,用以於一下一個連續微 碼地址之位置,使能一微指令之索引,例如可為微指令序列所使用。該分 支目標地址,由目前該指令寄存器310中, 一微指令之分支目標欄位所提供, 以執行微碼只讀存儲器305之分支。這些分支之類型亦為微碼分支。該下一 個入口點為微碼只讀存儲器305中之一位置,是包含微指令,對應於一後續 之微指令序列,例如與一下一個宏指令相關。於一實施例中,通過一遠端總線,從本發明之一轉譯器,將該下一個入口點提供至該修補裝置,例如 圖2所示之轉譯器212及遠端總線216。 一地址定序器308,是耦接該指令 寄存器310,並於一總線SEL上產生一值,以指示該多工器307由三個輸入 選擇一個。該地址定序器308判斷該指令寄存器310之微指令類型。意即, 當該微指令包括一後續微指令,是儲存於微碼只讀存儲器305時,則設定 SEL,以指示該多工器307選擇該遞增地址作為輸入。當該微指令為一分支 指令時,則配置SEL,以指示該多工器307將該分支目標地址提供至該下一 個地址寄存器309。當該微指令為一微指令序列之最後一個微指令時,則該 地址定序器308指示該多工器307,通過SEL,將下一個入口點地址提供至 下一個地址寄存器。於一實施例中,當下一個入口點被提供至該多工器307, 用來存取一微碼序列剩餘之微指令時,該轉譯器可直接轉譯一個或多個初始 微指令,並供以執行。該微碼修補裝置300亦包括一修補陣列312,是耦接該微碼地址總線 ADDR,並產生一修補指令輸出PATCH INSTRUCTION及一命中信號HIT。 於一實施例中,該修補陣列312為一快速相聯陣列,用以根據總線ADDR 之值,提供32個入口以供查詢。於另一實施例中,該修補陣列312包括 —內容可尋址存儲器(content-addressable memory; CAM ),是包括32個入 口。任何本領域普通技術人員應當了解, 一內容可尋址存儲器是被配置用以 接收一數據之實體輸入(於此實施例中,意即,該下一個地址寄存器309之 內容),並針對整個內容執行一極快速搜尋(意即,32個入口),以判斷是否 有一入口對應於所提供之輸入。若有,則該內容可尋址存儲器輸出一相關之 數據片段。根據本發明,該相關之數據片段為一修補指令,對應於所提供之 地址。將該修補指令輸出至該多工器313,並設定命中信號HIT。命中信號 HIT是耦接該多工器313之一選擇輸入。當命中信號HIT未被設定時,該多 工器313選擇該微碼只讀存儲器作為輸出。當命中信號HIT被設定時,該多 工器313選擇將該修補指令傳遞至該指令寄存器310,而非選擇該微碼只讀 存儲器304所輸出之微指令。因此,該修補陣列312執行微指令之存取,該微指令是對應總線ADDR 所提供之微碼只讀存儲器地址,同時,對該《鼓碼只讀存儲器305進行存取, 並將該微碼修補指令提供至該多工器313,與該微碼只讀存儲器305之輸出 平行。因為平行地存取該修補陣列312與該微碼只讀存儲器305,當執行本發明之一對一微碼修補時,並不會產生任何額外延遲。該修補裝置300包括一修補載入器311,通過一載入總線LOAD耦接該 修補陣列312,並且利用傳統的技術,於操作上耦接系統存儲器332及一基 本輸入輸出系統之只讀存儲器(BIOS ROM ) 333。該修補載入器311耦接一 重置信號RESET、 一熔絲陣列321內部之一修補熔絲F322,且能夠存取一 機器特定寄存器323內部之一修補位P 324。並依指示利用該修補載入器311, 將基本輸入輸出系統333之修補數據334、或位於系統存儲器33之修補數 據332,載入作為該修補陣列312之內容。於一實施例中,於重置或電力開 啟後,執行該基本輸入輸出系統333之指令,以指示該修補載入器311-險查 該熔絲322之狀態。當該熔絲322於一狀態(例如未熔斷或熔斷)時,指 示應載入該修補數據334,接著,配置該修補載入器311,用以從該基本輸 入輸出系統333取得該修補數據334,且該修補載入器311載入該修補陣列 312。於另一實施例中,於電力開啟或重置後,通過該基本輸入輸出系統333 之指令檢測出該熔絲322之狀態,用以指示該修補栽入器311,從系統存儲 器331中,由一指定修補數據位置332取得該修補數據。於一實施例中,在 執行該基本輸入輸出系統333之指令前先執行修補,而於讀取該基本輸入輸 出系統333之指令前,及重置之後,配置該裝置300,評估該熔絲322之狀 態。若該熔絲322指示一修補將被載入,則該修補載入器311從該基本輸入 輸出系統之只讀存儲器333之指定區域讀取修補數據334,並將數據載入該 修補陣列312。當該修補被載入後,從該基本輸入輸出系統333讀取指令, 用以啟動該微處理器。此實施例特別有助於當該基本輸入輸出系統333內部 之指令,需要利用一修補,以適當地啟動該微處理器之情況。當該基本輸入 輸出系統333必須於一特定狀態適當地啟動該微處理器時,此實施例更有助 於修補初始常數及寄存器之值。於另一實施例中,該修補載入器311監視該 機器特定寄存器323之修補位324之狀態。於此實施例中,該機器特定寄存 器302並未見於架構上,但可藉助一特別程序加以寫入。舉例來說,通過利 用特權指令(privileged instructions )之一加密接口 , 一實施例可具有寫入寄 存器321之功能。於此應用中,值得一提的是,當該修補位P324被設定時, 指示該修補載入器311,從系統存儲器331取得該修補數據332,並將修補 地址及修補指令栽入修補陣列312。與現今之微碼修補技術相比較,本發明的裝置300,可於電力開啟/重置期間,或者,於執行指令特權序列後,使能栽入微碼修補。除此之外,本 發明克服傳統方法之限制,提供一種技術,以一對一之基礎,實時地置換載 入之修補。當執行本發明之微碼修補時,並不會於流水線中產生任何額外之 延遲。因此,當於一特定微碼指令之一個或多個位發現錯誤時,圖3的裝置300是極為有用的。進一步,該微碼只讀存儲器305內部之任何位置均可進 行修補。那即是,當內部檢測出一錯誤時,例如 一序列之第10個微指令, 該序列包含40個微指令,是對應於一單一宏指令所指定之一執行,接著, 將一個一對一修補指令載入該修補陣列312,其地址與該微碼只讀存儲器305 中,第10個微指令所儲存之位置相同。請參考圖4,是顯示根據本發明實施例之一種執行實時微碼修補方法流 程圖400。流程起始於步驟401,本發明之一微處理器進行電力開啟或重置。 流程繼續進行步驟402。於決策步驟402中,於該微處理器中,評估並判斷一熔絲陣列321內部 之一修補熔絲322是否為熔斷狀態。如果不是,則進行步驟404。若該熔絲 322為熔斷狀態,則將該修補數據載入一修補陣列312,即進行流程之步驟 403。於步驟403中, 一修補載入器311從基本輸入輸出系統存儲器333之一 指定修補數據位置334取得該修補數據,並將該修補數據載入該修補陣列 312。流程接著進入步驟404。於步驟404中,讀取級邏輯單元開始從基本輸入輸出系統333讀取欲執 行之指令,用以配置及初始化該微處理器及處理系統。當指令執行後,流程 接著進入步驟405。於步驟405中,該微處理器依次讀取及執行該程序流程內部之指令。流 程接著進入決策步驟406。於步驟406中,評估並判斷一機器特定寄存器323內部之一修補欄位324 是否被設定為一狀態,用以指示需將一修補載入該修補陣列312。若該修補 欄位324指示不需載入一修補,流程進入步驟408。若該修補欄位324指示 需載入一修補,流程進入步驟407。於步驟407中,該修補載入器311從系統存儲器331之一修補數據位置 332取得該修補數據,並將該修補數據載入該修補陣列312。流程接著進行 步驟408。於步驟恥8中,該微處理器繼續讀取及執行指令。直接將宏指令轉譯為 微指令,以及/或者從微碼只讀存儲器305取得相關之微指令。於微碼只讀 存儲器305中,將位置之地址提供給該修補陣列312,同時將地址提供至該 微碼只讀存儲器305。接著流程進行決策步驟409。於步驟409中,評估並判斷供給該修補陣列312之一微碼地址是否與一 載入地址相匹配。如果不匹配,流程接著進入步驟411。若於該陣列312中, 一地址確實匹配(命中),則流程進行步驟410。於步驟410中,該修補陣列312輸出對應於該匹配地址之一修補指令, 並設定一命中信號HIT,以指示一多工器313選擇將該修補指令,而非將該 微碼只讀存儲器305所取得之微指令,置入一指令寄存器310。接著,流程 進入步驟411。於步驟4U中,該微處理器繼續讀取及執行指令,而流程進入步驟405。圖3及圖4之討論,是著重於本發明對於一對一取代微碼指令所提供之 改善,而且不影響效能。但本發明亦適用於執行一對多之微碼修補,且提供 傳統技術所沒有的效能效益,如上述圖1所討論之技術。以下將參考圖5及 圖6,針對執行一對多微碼修補的裝置進行討論。請參考圖5,是顯示根據本發明實施例之一裝置500框圖,用以執行一 對多之微碼修補操作。如上所述, 一個一對多之微碼修補操作可視為將一單 一微碼只讀存儲器位置(意即, 一微指令)所儲存內容,以多個微指令取代。 該修補裝置500可實現於控制只讀存儲器邏輯單元內,是操作於正常或原生 旁路模式下,如圖2所示之控制只讀存儲器213。除此之外,本發明之一對 多微碼修補裝置500,是被配置用以執行一對多微碼修補,其中,於一微處 理器流水線中,僅產生一單一周期之延遲。該延遲是起因於,將一微碼分支 操作之執行,作為一對多修補之第一項操作,用以將微碼讀取至微碼地址空 間之一修補隨機存取存儲器(RAM)區域,將進一步詳述如下。因此,相較 於傳統修補裝置,如圖1所示,本發明之一對多修補操作,對處理量 (throughput)提供顯著之改善。該一對多修補裝置500包括一微碼只讀存儲器505。於一實施例中,該 微碼只讀存儲器505具有20480 ( 0x5000 )個38位之入口 ,並設置於一 32K 微碼地址空間內。亦可涵蓋其它實施例。該裝置500亦包括一微碼修補隨機 存取存儲器551,佔用微碼地址空間部分未使用之位置。於一實施例中,該微碼修補隨機存取存儲器551包括256個38位之入口 ,佔用該微碼地址空 間上方256個位置(意即,從位置0x7F00至0x7FFF )。該微碼地址空間, 包括只讀存儲器505及隨機存取存儲器551,均通過一微碼地址總線ADDR 存取,且該微碼只讀存儲器505及微碼隨機存取存儲器551,依照該微碼地 址總線ADDR之值,將微指令序列提供給一多工器513。該多工器513之輸 出是耦接一指令寄存器510。於該4效處理器中,該指令寄存器510將微指令 提供給之後的級(未示出)執行。於一實施例中,該微指令為多個機器特定 指令,其為一38位編碼。於此實施例中,將該指令寄存器510之內容提供 給一微轉譯器(未示出),用以解碼及分派至功能單元。該地址總線ADDR,由一下一個地址寄存器509接收一微碼地址,其中, 該下一個地址寄存器509之輸入是耦接一多工器507之輸出。該多工器之輸 出,是從該多工器的三個輸入中選擇其一。該多工器之輸入包括由一地址 增加器504所產生之一遞增地址INC ADDR、 一下一個入口點地址NEXT ENTRY、及一分支目標地址BR TGT。該地址增加器504增加總線ADDR 所提供之一前次微碼只讀存儲器地址,用以於下一個連續微碼地址之位置, 使能一微指令之索引,例如可為微指令序列所使用。該分支目標地址,由 目前該指令寄存器510中, 一微指令之分支目標欄位所提供,用以執行微碼 只讀存儲器505及/或微碼隨機存取存儲器551之分支。該下一個入口點為 微碼只讀存儲器505或微碼隨機存取存儲器551中之位置,是包含微指令,對應於一後續之微指令序列,例如與一下一個宏指令相關。於一實施例中, 通過一遠端總線,將該下一個入口點NEXT ENTRY POINT從本發明之一轉 譯器提供至該修補裝置500,例如圖2所示之轉譯器212及遠端總線216。 一地址定序器508,是耦接該指令寄存器510,並於一總線SEL上產生一值, 用以指示該多工器507由三個輸入選擇一個。該地址定序器508判斷該指令 寄存器510之微指令類型。意即,當該微指令包括一後續微指令,儲存於微 碼只讀存儲器505或微碼隨機存取存儲器551時,則設定SEL,指示該多工 器507選擇該遞增地址作為輸入。當該微指令為一分支指令時,則配置SEL, 指示該多工器507將該分支目標地址提供至該下一個地址寄存器509。當該 微指令為一微指令序列之最後一個微指令時,則該地址定序器508指示該多 工器507,用以通過SEL將下一個入口點地址提供至下一個地址寄存器。於 一實施例中,當下一個入口點被提供至該多工器507,用來存取一微碼序列剩餘之微指令時,同時,該轉譯器可直接轉譯一個或多個初始微指令,並供 以執行。如上述圖3及圖4所示之一對一修補裝置300,進一步,該微碼修補裝 置500包括一修補陣列512,是耦接該微碼地址總線ADDR,並產生一修補 指令輸出PATCH INSTRUCTION及一命中輸出HIT。於一實施例中,該修 補陣列512為一快速相聯陣列,用以根據總線ADDR之值,提供32個入口 以供查詢。於另一實施例中,該修補陣列512包括一內容可尋址存儲器,是 包括32個入口。該修補陣列512接收該下一個地址寄存器509之內容,並 針對整個內容執行一極快速搜尋(意即,32個入口),以判斷是否有一入口 對應於所提供之輸入。若有,則該修補陣列512輸出一修補指令,對應於所 提供之地址。將該修補指令輸出至該多工器513,並設定命中信號HIT。命 中信號HIT是耦接該多工器513之一選擇輸入。當命中信號HIT未被設定輸出。當命中信號HIT被設定時,該多工器513選擇將該修補指令,而非將 該微碼只讀存儲器550 /該微碼隨機存取存儲器551所輸出之微指令,傳遞 至該指令寄存器510。該修補隨機存取存儲器551,於該微碼地址空間內部,為揮發性及可載 入位置之一集合,用於一對多之微碼修補。於該微碼只讀存儲器505中,當 一特定地址之一單一微指令需要以具有多個微指令之一微碼修補取代時,如 下所述,則所述多個置換微指令是儲存於該隨機存取存儲器551之一置換位 置,其中,所述多個置換微指令之第一微指令,是儲存於該隨機存取存儲器 551之第一位置,且其中, 一微碼分支指令被載入該修補陣列52,作為對 應該特定地址之數據,該微碼分支指令具有一分支目標地址,為該隨機存取 存儲器551之第一位置。因此,當欲進行修補之微指令之特定地址被供應至 總線ADDR時,將同時被供應至該修補陣列512。而當該微碼只讀存儲器 505之內容被存取時,該修補陣列512將該儲存之微碼分支指令提供至該多 工器513,與該微碼只讀存儲器505之輸出平行。因為總線ADDR之內容與 該修補陣列512匹配,命中信號HIT因此被設定,而通過該多工器513,將 經由該修補陣列512所取得之該微碼分支指令,傳遞至該指令寄存器510, 且無產生額外之延遲。該地址定序器508注意到, 一微碼分支指令是於該指 令寄存器510內部,而該分支目標地址,於該修補隨機存取存儲器551之上述第一位置,是輸入至該多工器507。因此,該地址定序器508指示該多工 器507,通過SEL,選擇該分支目標地址,接著經由總線ADDR提供給該微 碼地址空間,以及選擇該修補隨機存取存儲器551之上述第一位置,意即, 包含一對多微碼修補之第一微指令位置。通過該地址增加器504所提供之遞 增地址,從該隨機存取存儲器551存取修補之後續微指令,直到該地址定序 器508讀取及檢測到該修補序列之一最後微指令,指示該多工器507選擇下 —個入口點。另外,載入該隨機存取存儲器551之修補,亦包括一微指令, 使一分支回到該微碼只讀存儲器505之一位置。該修補裝置500包括一修補載入器511,通過一載入總線LOAD耦接該 修補陣列512,並通過一載入隨機存取存儲器總線LOADRM耦接該修補隨 機存取存儲器551,進一步,利用傳統的技術,於操作上耦接系統存儲器532 及基本輸入輸出系統之只讀存儲器533。該修補載入器511耦接一重置信號 RESET、 一熔絲陣列521內部之一修補熔絲F 522,且能夠存取一機器特定 寄存器523內部之一修補位P524。並依指示利用該修補載入器511,將基本 輸入輸出系統533之修補數據534、或位於系統存儲器531之修補數據532, 載入作為該修補陣列512及該修補隨機存取存儲器551之內容。操作上,載入該修補陣列512及該修補隨機存取存儲器551之執行方法, 與圖3的裝置300載入該修補陣列312之方式大致相同,差異處在於,所供 應之修補數據532、 534,包含了載入該陣列512及該修補隨機存取存儲器 551兩者之所需數據,以及,根據該熔絲522之狀態、載入只讀存儲器533 之指令、及機器特定寄存器523內修補位524之狀態,該修補載入器511將 數據載入該陣列512及該修補隨機存取存儲器551,與前述圖3所標示之組 件類似。因此,於電力開啟/重置期間,或者,於通常於架構上並未提供之指令 執行期間,本發明的裝置500能夠載入一對多之微碼修補,以快於傳統技術 之方式,用以存取一對多微碼修補。圖5的裝置500,有助於當發現錯誤時, 需利用多個微指令作為一修補,用以取代已燒錄至微碼只讀存儲器505之一 微指令。除此之外,該一對多的裝置500,使一對多之微碼修補易於實現, 並將修補所影響之效能減至最低。進一步,本發明之一對多修補方法與一對 一修補所需的方法一致,其中, 一對一修補簡單地取代一微碼分支,為隨機 存取存儲器551之一目標地址,是包含一對多之修補。請參考圖6,是顯示根據本發明實施例之一種實現一對多微碼修補方法 流程圖600。流程起始於步驟601,其中,本發明之一微處理器進行電力開啟或重置。接著,流程進行決策步驟602。於決策步驟602中,於該微處理器中,評估並判斷一熔絲陣列521內部 之一修補熔絲522是否為熔斷狀態。如果不是,則流程進行步驟604。若該 熔絲522為熔斷狀態,則將該修補數據載入一修補陣列512及修補隨機存取 存儲器551,接著,進行流程之步驟603。於步驟603中, 一修補載入器511從基本輸入輸出系統存儲器533之一 指定修補數據位置534取得該修補數據,並將該修補數據載入該修補陣列 512及修補隨機存取存儲器551。該修補數據包括一微碼分支指令,被載入 該修補陣列512,其中,該微碼分支指令之目標地址為修補隨機存取存儲器 551之一位置,為該一對多微碼修補之第一微指令。該修補數據亦包括該一 對多微碼修補,由該修補載入器511載入至隨機存取存儲器551之目標位置。 流程繼續進行步驟604。於步驟604中,讀取級邏輯單元開始從基本輸入輸出系統533讀取欲執 行之指令,用以配置及初始化該微處理器及處理系統。當指令執行後,流程接著進入步驟605。於步驟605中,該微處理器依次讀取及執行該程序流程內部之指令。流 程接著進行決策步驟606。於步驟606中,評估並判斷一機器特定寄存器523內部之一修補欄位524 是否被設定為一狀態,用以指示需將一修補載入該修補陣列512及該修補隨 機存取存儲器551。若該修補欄位524指示不需載入一修補,則流程進入步 驟608。若該修補欄位524指示需載入一修補,則流程進入步驟607。於步驟607中,該修補載入器511從系統存儲器531之一修補數據位置 532取得該修補數據,並將該修補數據載入該修補陣列512及修補隨機存取 存儲器551,如上述之步驟604。流程接著進行步驟608。於步驟608中,該微處理器繼續讀取及執行指令。直接將宏指令轉譯為 微指令,以及/或者從微碼只讀存儲器505取得相關之微指令。於微碼只讀 存儲器505中,將位置之地址提供給該修補陣列512,同時將地址提供至該 微碼只讀存儲器505。接著,流程進入決策步驟609。於步驟609中,評估並判斷供給該修補陣列512之一微碼地址是否與一載入地址相匹配。如果不匹配,則流程進行步驟613。若於該陣列512中, 一地址確實匹配(命中),則流程進入步驟610。
於步驟610中,該修補陣列512輸出對應於該匹配地址之一替代指令, 並設定一命中信號HIT,以指示一多工器513選擇將該替代指令,而非將該 微碼只讀存儲器505所取得之微指令,置入一指令寄存器510。接著,流程 進入決策步驟611。
於決策步驟611中,評估並判斷該指令寄存器510之替代指令,是否為 一微碼分支指令,於該修補隨機存取存儲器551中具有一目標地址。若是, 則前進至步驟612。如果不是,則流程進入步驟613。
於步驟612中,將該微碼分支指令之分支目標地址提供至總線ADDR, 以執行該微碼分支,此外,於該修補隨機存取存儲器551中,取得該一對多 修補之第一微指令位置。流程接著進行步驟613。
於步驟613中,該微處理器繼續讀取及執行指令,而流程進入步驟605。
本發明之一對一微碼修補及一對多微碼修補之效能已詳述如上,現在, 請參考圖7至圖9,是顯示利用前述的裝置及方法,允許從系統存儲器執行 微碼修補,進而執行更具彈性之測試、仿真、及調試操作之細節。於此應用 中,所述修補之執行模式,稱之為轉譯旁路模式或原生旁路模式。此一搡作 模式已配合圖2詳述如上,其中,已揭示微指令可與宏指令交錯,作為一程 序流程的一部分,儲存於系統存儲器中。於一實施例中,宏指令為x86宏指 令,通過一 x86兼容微處理器執行。現在,將配合以下之圖示,針對一程序 設計者、 一發明者、或一調試器,詳細說明如何利用本發明進入及離開轉譯 旁路模式,以及,如何將原生指令與宏指令交錯於一程序流程內部,通過插 入微碼指令,對目前之微碼例程進行調試,並且允許存取原生資源,例如 機器特定寄存器、隱藏寄存器等,以及,對應於微碼例程之原生指令,在將 其燒錄至只讀存儲器之前,如何進行測試。除此之外,特定微碼例程可被編 程至系統存儲器,並執行邊界條件測試、作業測試、硬體調試、及其它測試 活動。
請參考圖7,是顯示根據本發明實施例之一裝置700,用以從系統存儲 器執行一微碼修補。該裝置700,與前述第5-6圖所示之一對多修補裝置500 大致相同,額外增加執行存儲器731所儲存之微碼序列所需之組件及物件, 相對於一修補陣列712或修補隨機存取存儲器751所儲存之序列。於圖7中,該裝置700之組件操作,與圖5中,該裝置500之組件操作大致相同,是將 圖中許多數字以"7"取代。
於圖5的裝置500中,除了共同的組件之外,該裝置700包括中斷/執 行/交換邏輯單元755,用以存取一機器特定寄存器727內部之一旁路使能 (BE)位729,及一標誌寄存器728內部之一旁路開啟(BO)位730。該裝 置700亦包括旁路碼(bypass code) 735,是儲存於系統存儲器731中。該 旁路碼7M,可包括多個封裝(wrapper-encapsulated)微指令或宏指令之一 程序流程,具有封裝微指令交錯在其中。該旁路碼735,為該程序流程,由 該微處理器執行,以代替一特定之微指令。
該裝置700亦顯示微指令之一使能旁路序列752,是被載入該修補隨機 存取存儲器751內部。該使能旁路序列752用於轉譯級,用以儲存一先前宏 指令之上下文,並於進入轉譯旁路模式前進行轉譯及執行操作。該上下文是 儲存於一保存上下文陣列754中。於一實施例中,該保存上下文陣列754為 一個或多個機器特定寄存器。示範之上下文信息包括該先前宏指令之地址、 它的下一個指令指標等。需將與該先前宏指令相關之信息充份儲存於該保存 上下文陣列754中,以便於轉譯旁路模式結束時,可以恢復正常宏指令程序 流程之執行。為了恢復正常宏指令程序流程,將微指令之一恢復上下文序列 753載入該修補隨機存取存儲器751。為終止轉譯旁路模式,於該旁路碼735 中,執行一微碼分支指令,具有一分支目標地址,用以指定該恢復上下文微 碼序列753之位置。於一實施例中,該恢復上下文序列753可固定儲存於微 碼只讀存儲器705中,以代替被載入該修補隨機存取存儲器751 。
於操作中,如上所述,將數據載入該修補陣列712或修補隨機存取存儲 器751。於該微指令之微碼只讀存儲器地址,將一微碼分支指令載入該修補 陣列712,該微指令將被取代、仿真、測試等。該修補陣列712之微碼分支 指令,包括一第一微指令之一分支目標地址,是於修補隨機存取存儲器751 之使能旁路序列752中。當欲被置換之微指令地址被提供至總線ADDR時, 該修補陣列712發送並執行該微碼分支指令,以指示流程進入該修補隨機存 取存儲器751之使能旁路序列752。該使能旁路序列752,是包括微指令, 用以指示該中斷/執行/交換邏輯單元755設定該旁路使能(BE)位729, 進而指示轉譯邏輯單元200,如圖2所示,旁路模式已被使能。使能旁路序 列之最後一個微指令包括一分支,對應於儲存在系統存儲器731裡的旁路碼"5。爾後,如圖2所示,該旁路邏輯單元220執行檢測封裝(wrapper)指 令所需之操作、從該封裝指令內部去除該原生指令、以及將原生指令傳遞到 該原生總線215。
當該微處理器於轉譯旁路模式時,通過傳統技術,中斷及其它任務控制 權轉移事件(下文統稱為"中斷")發出信號通知該中斷/執行/交換邏輯 單元755。當處理一中斷時,於該寄存器727中,檢查旁路使能(BE)位729 之狀態,以判斷該微處理器是否操作於原生旁路模式。若是,先儲存該狀態, 再藉助設定該標誌寄存器728之旁路開啟(BO)位730,以處理該中斷。需 注意,該標誌寄存器728為該微處理器內部之一結構化寄存器(architectural register),於任務控制權轉移期間保存其狀態,並於控制權回復時恢復其狀 態。於一x86之實施例中,該標誌寄存器728包括一x86兼容處理器之標誌 寄存器(EFLAGS),而該旁路開啟(BO)位730包括上述標誌寄存器之第 31個位。當設定旁路使能(BE)位729 (使能該旁路模式)時,若發生一中 斷,則於處理該中斷之前,該中斷/執行/交換邏輯單元755設定該標誌 寄存器728之旁路開啟(BO)位730。除此之外,清除旁路使能(BE )位 729,從而禁能原生旁路模式。在從中斷回復之前,若一封裝宏指令是於具 控制權之一中斷服務例程或其它應用程式內部,則該指令轉譯級200將根據 控制指令集架構之結構規格,用以解譯該封裝宏指令,於一實施例中,包括 產生一異常(exc印tion)。如此一來,對於服務所述事件之作業系統模塊, 或具程序控制權之其它應用程式而言,應用程式可利用交錯原生指令,而不
會產生問題。從一中斷事件回復至利用原生旁路模式之一應用程式時,該中 斷/執行/交換邏輯單元755檢查該標誌寄存器728之旁路開啟(BO)位 730的狀態。假使該位730指出原生旁路模式之前被使能過,則設定該旁路 使能(BE)位729為一再使能(re-enable)旁鴻4莫式。接著,將控制權回復 至該應用程式,隨後再度執行宏指令(包括封裝指令)。於原生旁路模式之 應用程式可檢查旁路開啟(BO)位730之狀態,以判斷是否發生一中斷, 也許改變了在中斷發生前所使用之任一原生資源之狀態或內容。於中斷事件 時,因為原生資源並非結構性可存續, 一中斷處置器,或具程序控制權之其 它應用程式,可以改變目前應用程式所使用之一原生資源的狀態,該應用程 序是於旁路模式。於一選擇性實施例中,於原生旁路模式時,該標誌寄存器 728於該微處理器內部包括一原生寄存器,其內容藉助執行一程序流程內部之原生指令而被清除。根據該選擇性實施例,從中斷回復之後,該中斷/執
行/交換邏輯單元755將該標誌寄存器728之值設定為一非零(non-zero) 值,因此,提供一手段,讓該原生旁路應用能夠判斷是否發生一中斷。於另 一實施例中,該標誌寄存器728是包括具有旁路開啟(BO)位730之一 結構化標誌寄存器以及一原生寄存器,如上所述,提供了兩種指示給該原生 旁路應用,以表明發生一中斷。
如上所述,對該恢復上下文序列753執行一微碼分支,以終止轉譯旁路 模式。於一實施例中,該恢復上下文序列753,指示該轉譯級重新載入儲存 於保存上下文陣列754之宏指令上下文,及指示該中斷/執行/交換邏輯 單元755設定該旁路使能(BE)位729,從而〗吏該轉譯邏輯單元200回復至 正常操作模式。該恢復上下文序列753之最後一個微碼指令被執行後,指示 一地址定序器708 —序列之最後一個微指令已被執行,然後,在儲存上下文 之後,進入轉譯旁路模式之前,將對應於一宏指令之下一個入口點提供給該 多工器707。於一選擇性實施例中,亦考慮該使能旁路序列752包括微指令, 以於轉譯旁路模式期間,指示該中斷/執行/交換邏輯單元755完全禁能 中斷。根據此實施例,保存存儲器所需執行之唯一操作,為儲存目前之中斷 遮罩、於轉譯旁路模式期間遮蔽中斷,然後,在回復到正常操作模式之前, 恢復該中斷遮罩。
請參考圖8,是顯示根據本發明實施例之一示範封裝宏指令800。該封 裝宏指令800,是包括 一運算碼(opcode )欄位801及一原生指令欄位802。 於一較佳實施例中,該運算碼欄位801包括一無效或一未使用運算碼值,是 根據所使用之指令集架構。於一選擇性實施例中,可利用一有效(valid)運 算碼,其限制為,於轉譯旁路模式中,避免執行具有該有效運算碼之指令。
該原生指令欄位802包括一個或多個欲執行之微指令。於一實施例中, 是將一個微指令內嵌於該原生指令欄位802內部。於另一實施例中,是將三 個微指令之38位編碼內嵌於該原生指令欄位802內部。於第三實施例中, 是將欲依序執行之多個微指令提供給該原生指令欄位802。
請參考圖9,是顯示根據本發明實施例之一轉譯旁路碼900。該轉譯旁 路碼卯0顯示交錯於該程序流程900之一些封裝宏指令901、 902、 904,亦 包括數個有效宏指令卯3。如上所述,將該旁路碼900載入系統存儲器,於 該旁路碼900中,將第一個指令之地址,作為一最後一個微指令內部之一分支目標地址,該最後一個微指令是於該使能旁路序列752內部(圖7),而該 序列是被載入該修補隨機存取存儲器751。因此,該使能旁路序列752執行 讓該微處理器進入轉譯旁路模式所需之操作,以對該旁^^碼900之第一個指 令卯1執行一分支。當該第一個指令901進入該轉譯級時,旁路邏輯單元檢 測該無效/未使用運算碼、從其內部去除該內嵌之原生指令、以及將該原生 指令提供到該原生總線上用以執行。
當最後一個封裝指令904被提供至該轉譯級時,旁路邏輯單元從其內部 去除該內嵌之原生指令,該原生指令為一微碼分支,對應於儲存在該修補隨 機存取存儲器751內部之恢復上下文序列753之第一位置。因此,對應於該 恢復上下文序列753之程序流程分支,用以恢復正常操作所需之上下文,並 終止轉譯旁路模式。
請參考圖10,是詳述根據本發明實施例之一微碼修補擴充機制1000框 圖。該機制1000大體上與上述圖7至圖9之修補裝置700相似,並增加載 入微碼修補所需之組件與特徵,且於製造期間,該微碼修補被編程及被利用, 用以擴充該修補隨機存取存儲器751之容量,進而實現較多數目之微碼修補。 該裝置1000之組件操作,與圖7的裝置700具有相同編號之組件操作大體 上相似,其中,圖7標號之百位數字以"10"取代之。
除了組件與圖7的裝置700相同外,該機制1000包括一熔絲陣列1056, 通過總線FSPTCH耦接至該修補載入器1011。該機制1000亦包括 一擴充 隨機存取存儲器EXPRAM 1055,通過總線LDEXP耦接至該修補載入器 1011。於製造期間,該熔絲陣列1056可藉助燒斷已選取之熔絲來編程,以 使能微碼及其它種類之修補(意即,常數或機器狀態更新),並藉助本身提 供,而不需要將該修補分配至該區域,如同修補1034, 1032之例子,必須 被載入至基本輸入輸出系統之只讀存儲器1033或系統存儲器1031。於一實 施例中,該熔絲陣列1056包括金屬熔絲(未示出),置於一個或多個金屬 處理層(例如 一集成電路晶片)中,可於製造期間,使用傳統方法加以燒 斷。於其它實施例中,該熔絲陣列1056包括聚合物熔絲(未示出),置於 一個或多個聚合物層中,可利用實際上相似之技術,加以選擇性地燒斷。進 一步,於一實施例中,該熔絲1056可利用金屬及聚合物組合之熔絲加以實 現。
於一實施例中,該EXPRAM 1055包括多個隨機存取存儲器位置,可藉助位於總線LDEXP之該修補載入器1011尋址,以及,可藉助控制電路(未 示出),使能已選擇位置與該修補隨機存取存儲器1051所對應位置之覆蓋 (overlay)或調換(swap)。該EXPRAM 1055之目的,是提供一有效用之 機制,用以儲存大於該修補隨機存取存儲器1051之容量之微碼修補。該 EXPRAM 1055之另一目的,除了微碼只讀存儲器1005以外,於該微處理器 中,是用以提供作為修補機制之數據儲存與編程。舉例而言,於本領域普通 技術人員所了解, 一現今微處理器包括數百個機器特定寄存器及相關之控制 電路,當中,許多必須於重置後加以初始化。於一實施例中,當所述多個寄 存器與電路之初始狀態亦儲存於該EXPRAM 1055中,在該微處理器執行指 令之前,使用該熔絲陣列1056,以使能所述狀態之修補。於此常數更新之實 施例中,如上所述,某些機制之狀態通常會接在重置之後被初始化。
當該機制不正確的被初始化時,於初始化前,通過該EXPRAM 1055所 提供之數據,修補該初始狀態,將進一步詳述如下,用以更新狀態,而不是 提供其它解決方案。上述之常數更新實施例僅用以說明該EXPRAM眾多使 用方式之一,用以執行機器狀態數據之修補。
於一 實施例中,於一晶片之高速緩存內,該EXPRAM 1055包括一排或 多排額外存儲體(bank),且無法由可程序化指令存取(意即,宏指令),但 可以被微碼所存取,也就是,微指令之執行。於一特定實施例中,包括具 有4096可尋址位位置之EXPRAM 1055。
於搡作時,如上所述之該修補陣列712和修補隨機存取存儲器751,可 通過相同之機制載入該EXPRAM 1055,亦即,通過位於系統存儲器1031或 基本輸入輸出系統之只讀存儲器1033之修補數據1032、 1034。而該修補數 據1032、 1034另外包括系統控制數據(如前述之該初始化數值)。於基本輸 入輸出系統1033之指令執行前,必須更新機器狀態的情況下,本發明實現 該常數修補數據之編程,是位於基本輸入輸出系統之只讀存儲器1033之指 定修補數據區1034中,或位於該熔絲陣列1056中。進一步,本發明實現微 碼修補利用該EXPRAM 1056之一指定區域,用以調換以及/或者覆蓋位於 該修補隨機存取存儲器1051之^:碼修補,將更具體說明如下。
於重置信號RESET轉譯之後,但於微指令執行之前,通過該修補載入 器IOII,載入編程於該熔絲陣列1056之數據。也就是,於重置之後,該微 處理器執行微指令,使得編程至該熔絲陣列1056之數據被讀取與被載入。由該熔絲陣列1056所接收之數據,會被編碼,用以指示一目標修補單元(意
即,該修補陣列1012、修補隨機存取存儲器1051、或EXPRAM 1055 )、該 目標單元內之位置、以及其它信息,接下來將更進一步地詳細說明。
接著,於重置之後,由該熔絲陣列1056,將數據載入該目標修補單元, 該機制IOOO組件之操作,大致上與上述圖2至圖9之方式相同,除了額外 之EXPRAM 1055,是用以提供微碼修補之調換與覆蓋,現在將配合圖11更 詳細地說明。
接著參考圖11,是顯示依據本發明實施例之一細節框圖1100,用以說 明於一微處理器中, 一修補隨機存取存儲器之覆蓋技術。該框圖1100,是包 括 一微碼只讀存儲器1105、 一修補隨機存取存儲器1151、以及一擴充隨 機存取存儲器(EXPRAM) 1155,如同前述圖示之i兌明。該框圖1100,亦 包括 一擴充隨機存取存儲器(EXPRAM)控制器1162,經由總線1163耦 接至該修補隨機存取存儲器1151與該EXPRAM 1155兩者,且控制該兩個 修補單元1151、 1155,用以調換以及/或者覆蓋微碼修補。該EXPRAM控 制器1162,是耦接一微指令寄存器1161,且接收欲執行之微指令,該微指 令是由該微處理器之微指令修補電路(未示出)所指示。除此之外,經由如 圖所示之該修補指令總線,將前述之修補微指令提供給該多工器1013。
為說明本發明,該框圖IIOO是顯示三個微碼修補修補A 1164、修補 B1165、以及修補C1166。於修補A1164至修補C 1166中,包括 一個或 多個微指令,如文中所述,已通過上述三個微碼修補載入技術之任何一個載 入,意即,由該熔絲陣列載入、由基本輸入輸出系統之只讀存儲器載入(於 基本輸入輸出系統之宏指令執行初始之前、或執行初始之後)、或由系統存 儲器/高速緩存載入。如圖所示,修補A 1164於該修補隨機存取存儲器1151 與該EXPRAM 1155兩者中。可藉助上述之技術,將該修補A 1164載入至該 修補隨機存取存儲器1151與該EXPRAM 1155中,或者,藉助一個或多個 EXPRAM微指令1167之執行,開始將其載入該EXPRAM 1155,並於該修 補隨機存取存儲器1151中執行覆蓋,其操作將敘述如下。
本發明實現一個或多個EXPRAM微指令1167,是被配置用以指示該 EXPRAM控制器1162搬動該EXPRAM 1155與該修補隨機存取存儲器1151 間之數據。本發明亦實現一個或多個EXPRAM微碼例程,是被配置用以指 示該EXPRAM控制器1162搬動該EXPRAM 1155與該修補隨機存取存儲器1151間之數據,其中,每一微碼例程包括多個微指令。因此,為清楚說明,
下面之討論將使用EXPRAM微指令1167之名稱,其中,值得注意的是,前 述之微碼例程亦包括在內。於一實施例中,是實現一調換EXPRAM微指令, 用以指示該EXPRAM控制器1162,將該修補隨機存取存儲器1151中,一 個或多個指定位置之內容,與該EXPRAM 1155中, 一個或多個規定之位置 調換。於另一實施例中,是實現一覆蓋EXPRAM微指令,用以指示該 EXPRAM控制器1162,將該修補隨機存取存儲器1151中, 一個或多個指定 位置,以該EXPRAM1155之一個或多個規定位置之內容覆蓋。於其它實施 例中,是包括各種修改之實現,以調換與覆蓋微指令。為清楚說明,如框圖 1100所示之實施例,為一單一EXPRAM微指令1167,然而,值得注意的是, 多個EXPRAM微指令1167可用以執行一調換或一覆蓋,而於該EXPRAM 1155與修補隨機存取存儲器1151中,本發明包括指定及規定位置之各種形 式。
於一實施例中,一 EXPRAM微指令1167可存於該微碼只讀存儲器1105 中,並執行一微碼分支指令,用以實現一分支到微碼只讀存儲器1105中, 該EXPRAM微指令1167儲存之位置。亦一同傳遞來源與目的之地址參數, 用以於修補隨機存取存儲器1151與EXPRAM 1155中,指定欲被調換或覆 蓋之區i或。
於另 一 實施例中,是實現一 EXPRAM微指令1167,用以作為 一修補1164 之一部分,如圖所示,於該修補隨機存取存儲器1151中,進而使能之後修 補指令之調換與覆蓋。
依據本發明,於操作時,該EXPRAM控制器1162經由該指令寄存器 1161發送一 EXPRAM微指令1167用以執行,通過總線1163,於該兩修補 單元1151、 1155之間,該EXPRAM控制器1162搬動該EXPRAM 1155之 規定內容與該修補隨機存取存儲器1151之指定內容,以作為其內容之調換 以及/或者覆蓋,因此,能提供更多數目之修補1164-1166。於一實施例中, 該EXPRAM控制器1162,是包括多個微碼例程,配置於該微碼只讀存儲 器以及/或者該修補隨機存取存儲器1151之內。
再者,如前所述,該EXPRAM亦包括 一機器狀態區域1168,由微處 理器之其它控制電路(未示出)所使用,例如用以維持該機器狀態之隱藏 寄存器。該機器狀態區域1168並未包括修補微指令,但是,可藉助前述三個修補載入技術之任一個載入至該位置。
參考圖l2,是顯示一熔絲陣列機制1200之框圖,用以於製造期間實現 一微碼修補。該機制1200,是包括 一陣列控制器1201,經由總線RDBANK, 耦接多個熔絲存儲體1202。每一熔絲存儲體1202,是包括多個熔絲1203。 如圖所示之實施例中,該熔絲陣列1200,是包括32個熔絲存儲體[31:0] 1202,每一個具有64個熔絲F[63:0] 1203。
如上所述,本發明實現金屬或聚合物熔絲1203、或金屬及聚合物熔絲之 組合1203。本發明亦包括電子與雷射熔絲。經由總線RDBANK,該陣列 控制器1201讀取每一熔絲存儲體BANK[31:0]之每一熔絲F[63:0]狀態,由通 過總線FSPTCH耦接該陣列控制器1201之該修補載入器(未示出)所指示。 一熔絲控制總線FSCTRL亦耦接該陣列控制器1201及微處理器之控制電路 (未示出),以將控制信息編碼至一個或多個熔絲存儲體1202之一個或多個 炫絲1203。
操作上,於重置之後,但於執行基本輸入輸出系統之指令前, 一重置微 碼例程之一部分將微指令發送至該修補載入器,使得該熔絲陣列1200之內 容被讀取並被分配至該控制電路(經由總線FSCTRL),或者,經由總線 FSPTCH,被分配至上述三個修補機制之任一個,意即,至該修補陣列、該 修補隨機存取存儲器、或該EXPRAM。
參考圖13,是顯示於圖12中,該熔絲陣列之熔絲存儲體O內部'熔絲 狀態之範例表1300。於一實施例中,該熔絲陣列1200之一個或多個熔絲存 儲體1202,是被配置用以包含一個或多個^L編碼之熔絲1203,用以指出一 對應之熔絲存儲體是否具有編碼之控制信息或修補信息。於一實施例中,是 實現一可重新配置之機制,用以編碼修補信息,如範例表1300所示,其中, 編碼之熔絲30:0用以指出存儲體31:1是否有編程之控制信息或修補信息。 如該範例表所示,若該熔絲狀態為一邏輯狀態"0",則其對應之熔絲存儲體 包含控制信息。若該熔絲狀態為一邏輯狀態"1",則其對應之熔絲存儲體包 含修補信息。上述之邏輯狀態是通過傳統方法決定。
參考圖14,是顯示依據本發明實施例之一示範修補存儲體記錄MOO之 欄位框圖,例如可被編程至熔絲存儲體31:1,用以編碼一微碼修補,包含 一機器狀態,是儲存於該EXPRAM之機器狀態區域,如圖ll所述。如圖所 示,該修補存儲體記錄1400,是對應該熔絲存儲體之64個熔絲之狀態。熔絲37:0用以指明一 38位之修補數據欄位1401,因此,使一 38位之微碼修 補被指定。熔絲52:38用以指明位於微碼地址空間之一 15位地址MICADDR (1402),因此,指定該微碼只讀存儲器或該修補隨機存取存儲器之一位置。 熔絲57:53用以指明該修補陣列之一 5位地址PARRY ADDR ( 1403 )。溶絲 58用以指示該修補存儲體記錄1400之數據是否有效(V, 1404)。熔絲59 用以指示該記錄1400是否可以讀取(R, 1405 )。熔絲61:60是4皮編碼用以 指示一修補目標欄位PTGT ( 1406),意即,該修補陣列("00"、該修補隨 機存取存儲器("01")、或該EXPRAM ("10")。保留數值"11"。最後,熔 絲63:62指示一保留數據欄位RSVD ( 1407 )。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何 本領域普通技術人員,在不脫離本發明之精神和範圍內,當可作些許之更動 與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
權利要求
1. 一種微碼修補擴充機制,是於一微處理器內,包括一修補隨機存取存儲器,被配置用以儲存多個第一修補指令,其中,該微處理器執行上述第一修補指令,以替代儲存於一微碼只讀存儲器之一個或多個微指令;一擴充隨機存取存儲器,耦接上述修補隨機存取存儲器,被配置用以儲存多個第二修補指令,其中,上述第二修補指令之數目較上述第一修補指令之數目多,且其中,該微處理器執行上述第二修補指令,以替代儲存於上述微碼只讀存儲器之一個或多個微指令;以及一控制器,耦接上述修補隨機存取存儲器及上述擴充隨機存取存儲器,被配置用以執行一擴充隨機存取存儲器EXPRAM微指令,以指示由上述修補隨機存取存儲器載入一個或多個第二修補指令,以及,被配置用以將上述一個或多個第二修補指令載入至上述修補隨機存取存儲器;其中,上述EXPRAM微指令控制上述一個或多個第二修補指令與一對應之一個或多個上述第一修補指令調換。
2. 如權利要求1所述之微碼修補擴充機制,更包括 一修補載入器,操作上耦接於系統存儲器與基本輸入輸出系統之只讀存儲器,被配置用以自上述系統存儲器接收上述第一與第二修補指令,並被配 置用以將上述第一修補指令載入至上述修補隨機存取存儲器,以及將上述第 二修補指令載入至上述擴充隨機存取存儲器。
3. 如權利要求2所述之微碼修補擴充機制,其中,於轉譯一微處理器重 置信號後,及執行儲存於上述基本輸入輸出系統之只讀存儲器之指令前,上 述修補載入器載入上述第一及第二修補指令,且其中,上述第一及第二修補 指令是儲存於上述基本輸入輸出系統之只讀存儲器。
4. 如權利要求2所述之微碼修補擴充機制,其中,上述修補載入器是根 據一機器特定寄存器內 一修補位之狀態來執行特權作業系統指令,並根據上 述之執行,載入上述第一及第二修補指令。
5. 如權利要求1所述之微碼修補擴充機制,其中,上述擴充隨機存取存 儲器亦被配置以儲存對應於該微處理器狀態之數據。
6. 如權利要求1所述之微碼修補擴充機制,其中,上述擴充隨機存取存儲器,是包括一4K存儲體之隨機存取存儲器,是位於一機載高速緩存中,
7. —種擴充微碼修補機制容量的裝置,位於一微處理器之轉譯級內,對 應於一微碼只讀存儲器所儲存之一微指令,該裝置包括一修補隨機存取存儲器,是被配置用以儲存一第一修補指令序列,其中, 上述第一修補指令序列包括一 EXPRAM微指令;一擴充隨機存取存儲器,是被配置用以儲存一第二修補指令序列,其中, 是執行上述第一與第二修補指令序列,而非執行上述微指令,且其中,上述 第一修補指令序列之一第一修補指令是儲存於上述隨機存取存儲器之一位 置,對應於包含該微指令之該微碼只讀存儲器內之一地址;以及器,是被配置用以執行上述EXPRAM微指令,以及,是被配置用以將上述 第二修補指令序列載入至上述修補隨機存取存儲器;其中,上述EXPRAM指令控制上述第一修補指令序列與上述第二修補 指令序列中之對應修補指令調換。
8. 如權利要求7所述之擴充微碼修補機制容量的裝置,更包括 一修補載入器,操作上耦接於系統存儲器與基本輸入輸出系統之只讀存儲器,被配置用以自上述系統存儲器接收上述第一與第二修補指令序列,並 被配置用以將上述第一修補指令序列載入至上述修補隨機存取存儲器,以 及,將上述第二修補指令序列載入至上述擴充隨機存取存儲器。
9. 如權利要求8所述之擴充微碼修補機制容量的裝置,其中,於轉譯一 微處理器重置信號後,及執行儲存於上述基本輸入輸出系統之只讀存儲器之 指令it,上述修補載入器載入上述第一及第二修補指令序列,且其中,上述 第 一及第二修補指令序列是儲存於上述基本輸入輸出系統之只讀存儲器。
10. 如權利要求7所述之擴充微碼修補機制容量的裝置,其中,上述擴 充隨機存取存儲器亦被配置,用以儲存對應該微處理器狀態之數據。
11. 如權利要求7所述之擴充微碼修補機制容量的裝置,其中,上述擴 充隨機存取存儲器包括一 4K存儲體之隨機存取存儲器,是位於一機載高速
12. —種擴充微碼修補機制容量的方法,用於一微處理器內,該方法包括於微碼地址空間內,提供一修補隨機存取存儲器之一第一微碼修補,並 且接著執行該第一修補,以替代儲存於微碼只讀存儲器之一第一微指令;響應一EXPRAM指令之執行,由一擴充隨機存取存儲器,將一第二微 碼傳送至該修補隨機存取存儲器,其中,該擴充隨機存取存儲器是被配置, 以儲存比該修補存儲器更多之修補指令;及執行該第二微碼修補,以替代儲存於微碼只讀存儲器之一第二微指令;其中,該傳送包括將該第 一微碼修4卜調換為該第二微碼修補。
13. 如權利要求12所述之擴充微碼修補機制容量的方法,更包括由系統存儲器接收該第一與第二微碼修補,且將該第一微碼修補載入該 修補隨機存取存儲器,以及將該第二微碼修補載入該擴充隨機存取存儲器。
14. 如權利要求12所述之擴充微碼修補機制容量的方法,更包括 於轉譯一微處理器重置信號後,及執行儲存於基本輸入輸出系統之只讀存儲器之指令前,由基本輸入輸出系統之只讀存儲器取得該第一與第二微碼 修補,並將該第一微碼修補載入至該修補隨機存取存儲器,且將該第二微碼 修補載入至該擴充隨機存取存儲器。
15. —種提供修補的裝置,位於一微處理器之轉譯級內,用以將修補提 供給儲存於一微碼只讀存儲器之微指令,及提供給該微處理器內之電路,該 裝置包括一擴充隨機存取存儲器,是被配置用以儲存該修補,其中,該微處理器 執行一個或多個第一修補,以替代對應之一個或多個微指令,以及其中,利 用一個或多個第二修補,以修補對應之一個或多個電路;一修補載入器,耦接上述擴充隨機存取存儲器,是被配置由該微處理器 外部之一來源,取得該修補,以及,是被配置用以將該修補載入至上述擴充 隨機存取存儲器;以及一控制器,耦接一修補隨機存取存儲器與上述擴充隨機存取存儲器,是 被配置用以執行擴充隨機存取存儲器EXPRAM微指令,且被配置用以將上 述一個或多個第一修補載入上述修補隨機存取存儲器,執行上述一個或多個 第一修補,以替代對應之一個或多個微指令;其中,上述EXPRAM指令控制上述一個或多個第一修補與上述修補隨 機存取存儲器所對應之修4卜調換。
16,如權利要求15所述之提供修補的裝置,其中,上述來源包括 一基 本輸入輸出系統之只讀存儲器,且其中,於轉譯一微處理器重置信號後,及 執行儲存於上述基本輸入輸出系統之只讀存儲器之指令前,上述修補載入器 載入上述修補。
17. 如權利要求15所述之提供修補的裝置,其中,上述來源包括 一熔 絲陣列,且其中,於轉譯一微處理器重置信號後,及執行儲存於一基本輸入 輸出系統之只讀存儲器之指令前,上述修補載入器載入上述修補。
18. 如權利要求15所述之提供修補的裝置,其中,上述擴充隨機存取存 儲器包括一4K存儲體之隨機存取存儲器,是位於一機載高速緩存中,且
19. 如權利要求15所述之提供修補的裝置,其中,上述對應之一個或多 個電路包括該微處理器內部之寄存器,且其中,上述一個或多個第二修補, 是包括上述寄存器之初始數據。
20. —種提供修補的方法,用以將修補提供給一微處理器之微碼及電路, 該方法包括由該微處理器外部之一來源提供多個修補,其中,該微處理器執行一個 或多個第一修補,以替代儲存於一微碼只讀存儲器中所對應之一個或多個微 指令,且其中,利用一個或多個第二修補,以修補該^1處理器所對應之一個 或多個電路;由該來源取得所述多個修補,並將所述多個修補載入至一擴充隨機存取 存儲器;利用所述一個或多個第二修補,以修補該對應之一個或多個電路;以及 執行所述一個或多個第一修補,以替代該對應之一個或多個微指令。
21. 如權利要求20所述之提供修補的方法,其中,該對應之一個或多個 電路包括該微處理器內部之寄存器,且其中,所迷一個或多個第二修補包 括該寄存器之初始數據。
22. 如權利要求20所述之提供修補的方法,其中,該來源包括 一基本 輸入輸出系統之只讀存儲器,且其中,於轉譯一微處理器重置信號後,及執 行儲存於上述基本輸入輸出系統之只讀存儲器之指令前,載入所述多個修 補。
23. 如權利要求20所述之提供修補的方法,其中,該來源包括 一熔絲陣列,且其中,於轉譯一微處理器重置信號後,及執行儲存於一基本輸入輸 出系統之只讀存儲器之指令前,載入所述多個修補。
24.如權利要求20所述之提供修補的方法,其中,該修補是被載入至一 擴充隨機存取存儲器,該擴充隨機存取存儲器包括一4K存儲體之隨機存 取存儲器,是位於一機栽高速緩存中,且其中,該4K存儲體僅通過該微處 理器所執行之微碼進行存取。
全文摘要
一種微碼修補擴充機制,包括一修補隨機存取存儲器、一擴充隨機存取存儲器、以及一控制器。該修補隨機存取存儲器儲存多個第一修補指令。該微處理器執行所述多個第一修補指令,以替代儲存於一微碼只讀存儲器之一個或多個微指令。該擴充存儲器儲存多個第二修補指令。所述多個第二修補指令之數目大於所述多個第一修補指令之數目。該微處理器執行所述多個第二修補指令,以替代儲存於該微碼只讀存儲器之一個或多個第二微指令。該控制器執行一擴充隨機存取存儲器微指令,以指示由該修補隨機存取存儲器載入所述一個或多個第二修補指令,以及,將所述一個或多個第二修補指令載入該修補隨機存取存儲器。
文檔編號G06F9/24GK101286117SQ20081010878
公開日2008年10月15日 申請日期2008年6月2日 優先權日2007年7月24日
發明者G·葛蘭·亨利, 泰瑞·派克斯 申請人:威盛電子股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀