專利名稱:保護(hù)存儲(chǔ)器的部分的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本公開一般地涉及計(jì)算機(jī)系統(tǒng)平臺(tái),并且,更具體地,涉及保護(hù)存儲(chǔ)器的部分的方法和裝置。
背景技術(shù):
計(jì)算平臺(tái)典型地包括多個(gè)可以在類型、尺寸、用途等方面變化的存儲(chǔ)器的部分。與第一存儲(chǔ)器相關(guān)聯(lián)存儲(chǔ)的第一組件(例如,用戶應(yīng)用或程序)可能依賴于與第二存儲(chǔ)器相關(guān)聯(lián)存儲(chǔ)的第二組件(例如,操作系統(tǒng))以正確地操作和/或完全操作(例如,當(dāng)?shù)谝唤M件在第二組件不起作用的情況下不能被初始化時(shí))。因此,盡管附加了必要的資源,但是存儲(chǔ)器的特定類型或部分使得用于確保存儲(chǔ)于其中的一個(gè)或多個(gè)組件的正確操作的一個(gè)或多個(gè)保護(hù)機(jī)構(gòu)、程序、例程或設(shè)備稱為合理需求。
圖1是示出包括示例保護(hù)機(jī)構(gòu)的示例計(jì)算平臺(tái)示例組件的框圖。圖2是圖1的生成描述符的示例實(shí)現(xiàn)。圖3是圖1的驗(yàn)證描述符的示例實(shí)現(xiàn)。圖4是圖1的修復(fù)描述符的示例實(shí)現(xiàn)。圖5是代表可使用示例機(jī)器可讀指令實(shí)現(xiàn)的示例過程的流程圖,所述示例機(jī)器可讀指令可被執(zhí)行用來實(shí)現(xiàn)圖1的示例BIOS以執(zhí)行示例通電自檢(POST)。圖6是代表可使用示例機(jī)器可讀指令實(shí)現(xiàn)的示例過程的流程圖,所述示例機(jī)器可讀指令可被執(zhí)行用來實(shí)現(xiàn)圖1的示例保護(hù)機(jī)構(gòu)以保護(hù)圖1的示例SMRAM的區(qū)域。圖7是由圖1的示例保護(hù)機(jī)構(gòu)的第一算法所保護(hù)的圖1的代碼塊的圖。圖8是由圖1的示例保護(hù)機(jī)構(gòu)的第二算法所保護(hù)的圖1的代碼塊的圖。圖9是可以被用來執(zhí)行圖2的機(jī)器可讀指令和/或?qū)崿F(xiàn)圖1的示例計(jì)算平臺(tái)的示例處理器系統(tǒng)的框圖。
具體實(shí)施例方式雖然以下公開了示例方法、裝置、系統(tǒng)、和/或在其他組件之外還包括固件和/或在硬件上執(zhí)行的軟件的制品,但是應(yīng)當(dāng)注意的是,這樣的方法、裝置、系統(tǒng)、和/或制品僅僅是說明性的并且不應(yīng)被當(dāng)作限制。例如,可以設(shè)想任意或所有的固件、硬件、和/或軟件組件可被專有地以硬件、專有地以軟件、專有地以固件實(shí)施,或以硬件、軟件、和/或固件的任意組合實(shí)施。因此,盡管以下描述了示例方法、裝置、系統(tǒng)、和/或制品,但是所提供的例子并不是實(shí)現(xiàn)這些方法、裝置、系統(tǒng)、和/或制品的唯一方式。這里描述的示例方法、裝置、系統(tǒng)、和/或制品為存儲(chǔ)器的部分和存儲(chǔ)于其中的代碼和/或數(shù)據(jù)提供了保護(hù)。為了說明而非限制的目的,這些示例方法、裝置、系統(tǒng)、和/或制品在這里結(jié)合主機(jī)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)被描述。特別地,這里描述的例子涉及存儲(chǔ)于主機(jī)DRAM中的錯(cuò)誤處理系統(tǒng)的保護(hù)。但是,這里描述的例子能與存儲(chǔ)于主機(jī)DRAM中的不同類型的系統(tǒng)、機(jī)構(gòu)、程序、設(shè)備等等相關(guān)聯(lián)地被實(shí)現(xiàn)。例如,附加于或代替提供給這里描述的錯(cuò)誤處理系統(tǒng)的保護(hù),這里描述的示例方法、裝置、系統(tǒng)、和/或制品可與以下相結(jié)合來實(shí)現(xiàn):與存儲(chǔ)在主機(jī)DRAM中的圖形UMA(Unified Memory Architecture,統(tǒng)一存儲(chǔ)器架構(gòu))相關(guān)的可執(zhí)行單元、與存儲(chǔ)在主機(jī)DRAM中的電力管理單元(PMU)(例如,在MID上的8051代碼)相關(guān)的可執(zhí)行單元、和/或存儲(chǔ)在主機(jī)DRAM中的任何其它組件、單元、機(jī)構(gòu)、程序等等。此外,由這里描述的示例方法、裝置、系統(tǒng)、和/或制品提供的存儲(chǔ)器保護(hù)能與不同于主機(jī)DRAM的附加的或可選的存儲(chǔ)器類型或部分相關(guān)聯(lián)地被實(shí)現(xiàn)。傳統(tǒng)計(jì)算平臺(tái)包括糾錯(cuò)碼(ECC)和存儲(chǔ)器保護(hù)單元,用于對(duì)與例如處理器或存儲(chǔ)器的操作相關(guān)聯(lián)的不期望的、意外的和/或無法接受的事件或狀態(tài)進(jìn)行響應(yīng)。在x86平臺(tái)中,例如,基本輸入輸出系統(tǒng)(BIOS)使用系統(tǒng)管理模式(System Management Mode, SMM),其能通過系統(tǒng)管理中斷(System Management Interrupt, SMI)被調(diào)用。與SMM相關(guān)聯(lián)的組件被典型地存儲(chǔ)在主機(jī)DRAM的部分,其有時(shí)被稱為系統(tǒng)管理隨機(jī)存取存儲(chǔ)器(SystemManagement Random Access Memory, SMRAM)。例如,SMRAM 典型地包括 SMM 處理程序,其有配置為在計(jì)算平臺(tái)中糾正一個(gè)或多個(gè)類型錯(cuò)誤的代碼。某些錯(cuò)誤有可能影響或破壞DRAM的部分,并且繼而影響或破壞與BIOS SMM相關(guān)聯(lián)的SMM處理程序和/或其它組件。在這種情形下(例如,當(dāng)錯(cuò)誤已在該SMM處理程序中發(fā)生)在SMM中執(zhí)行的BIOS可能導(dǎo)致處理器的破壞,而這導(dǎo)致徹底關(guān)機(jī)。因此,在先前的系統(tǒng)中,存儲(chǔ)器保護(hù)單元典型地實(shí)現(xiàn)為附加的錯(cuò)誤處理程序以管理這樣的錯(cuò)誤。例如,一些存儲(chǔ)器保護(hù)單元針對(duì)可能破壞SMRAM的錯(cuò)誤使用基于基板管理控制器(Baseboard ManagementController, BMC)的錯(cuò)誤處理程序,從而專用的附加資源用于錯(cuò)誤處理。一般地,這里描述的示例方法、裝置、系統(tǒng)、和/或制品保護(hù)處理器免受發(fā)生在例如SMRAM的SMM區(qū)域中的ECC錯(cuò)誤。即,這里描述的例子使BIOS能夠響應(yīng)于ECC錯(cuò)誤,甚至當(dāng)ECC錯(cuò)誤或另一在前錯(cuò)誤已影響了與SMM相關(guān)的代碼時(shí),使用SMM組件(例如,SMM處理程序)執(zhí)行中斷例程。為了實(shí)現(xiàn)這樣的錯(cuò)誤糾正,這里描述的例子在SMRAM中配置受保護(hù)的地址空間來存儲(chǔ)該SMM處理程序。此外,這里描述的例子提供基于硬件的保護(hù)機(jī)構(gòu)來攔截將觸發(fā)BIOS以SMM模式執(zhí)行的信號(hào)。在允許BOIS以SMM執(zhí)行之前,基于硬件的保護(hù)機(jī)構(gòu)嘗試驗(yàn)證受保護(hù)的地址空間的內(nèi)容為無錯(cuò)誤的。響應(yīng)于確定錯(cuò)誤可能已影響SMM處理程序,基于硬件的保護(hù)機(jī)構(gòu)在受保護(hù)的地址空間中(例如在SMRAM的被保護(hù)地址空間內(nèi))重新生成或修復(fù)一個(gè)或多個(gè)受影響的代碼段。在確保無錯(cuò)誤的SMM空間后,將在下面更為詳細(xì)地描述的該示例保護(hù)機(jī)構(gòu)允許BIOS執(zhí)行SMM處理程序以糾正初始錯(cuò)誤。在這里描述的例子提供的其它益處和優(yōu)點(diǎn)之中,這種場景(例如,ECC錯(cuò)誤影響SMM組件)的該保護(hù)、驗(yàn)證、和/或糾正消除,或至少降低了計(jì)算平臺(tái)通過BIOS和附加的錯(cuò)誤處理程序(例如,基于BMC的錯(cuò)誤處理程序)進(jìn)行錯(cuò)誤處理的“雙倍投入”的需求。此夕卜,這里描述的例子為先前被認(rèn)為是使用SMM組件不可糾正的某些類型的錯(cuò)誤提供了恢復(fù)機(jī)構(gòu)。根據(jù)這里的詳細(xì)描述,這里描述的例子提供的額外益處和優(yōu)點(diǎn)將是顯而易見的。圖1是根據(jù)這里描述的示例方法、裝置、系統(tǒng)、和/或制品說明能夠保護(hù)存儲(chǔ)器的部分的示例計(jì)算平臺(tái)100的框圖。該平臺(tái)100可以是任何類型的計(jì)算平臺(tái)例如,像個(gè)人計(jì)算機(jī)、工作站、服務(wù)器、PDA、售貨亭、智能電話等等。
圖1的示例計(jì)算平臺(tái)100包括存儲(chǔ)器控制器102,其具有能夠以任何適當(dāng)?shù)姆绞綑z測發(fā)生在計(jì)算平臺(tái)100中的一個(gè)或多個(gè)錯(cuò)誤的錯(cuò)誤檢測單元104。例如,該錯(cuò)誤檢測單元104可由處理器(例如,結(jié)合圖9在下面描述的示例處理器912)的110(集成輸入/輸出系統(tǒng))實(shí)現(xiàn)。響應(yīng)于檢測到錯(cuò)誤,該示例錯(cuò)誤檢測單元104生成針對(duì)SMI的請(qǐng)求。該SMI請(qǐng)求可包括與錯(cuò)誤位置相關(guān)的信息,例如在其中錯(cuò)誤被檢測到的存儲(chǔ)器中的地址。此外,該示例錯(cuò)誤檢測單元104和/或存儲(chǔ)器控制器102的另外的組件可用損害指示器(poisonindicator)對(duì)其中發(fā)生錯(cuò)誤的存儲(chǔ)器地址進(jìn)行標(biāo)記。在先前的系統(tǒng)中,SMI請(qǐng)求將很可能導(dǎo)致SMI的立即生成,并且繼而由例如BIOS106執(zhí)行SMM中斷例程。但是,在所示的例子中,由存儲(chǔ)器控制器102生成的SMI請(qǐng)求由根據(jù)這里描述的示例方法、裝置、系統(tǒng)、和/或制品配置的基于硬件的保護(hù)機(jī)構(gòu)108攔截。為了接收SMI請(qǐng)求,該示例保護(hù)機(jī)構(gòu)108包括被配置用來從存儲(chǔ)器控制器102中接收這樣的信號(hào)的通信接口(未示出)。在該所示的例子中,該保護(hù)機(jī)構(gòu)108由直接存儲(chǔ)器存取晶體海灘(Crystal Beach,CB)直接存儲(chǔ)器存取(DMA)引擎實(shí)現(xiàn),但并不限于此。該保護(hù)機(jī)構(gòu)108可以用該示例計(jì)算平臺(tái)100的附加的或可選組件實(shí)現(xiàn)和/或由不同類型的引擎或設(shè)備實(shí)現(xiàn)。如上所述,BIOS 106嘗試處理已影響SMRAM特定部分的ECC錯(cuò)誤是危險(xiǎn)的,這是因?yàn)橐葿IOS 106執(zhí)行的SMM中斷例程可能自身也被破壞。因此,在所述的例子中,由DMA引擎108攔截SMI請(qǐng)求(例如,由存儲(chǔ)器控制器102生成)中止BIOS 106處理相應(yīng)的ECC錯(cuò)誤直到SMM組件(例如,SMM處理程序)的完整性能被驗(yàn)證。如在下面被更詳細(xì)地描述,DMA引擎108進(jìn)行驗(yàn)證,并且在一個(gè)或多個(gè)SMM破壞的情況下,重新生成或修復(fù)要被用于從錯(cuò)誤中恢復(fù)的SMM代碼。當(dāng)與SMM相關(guān)聯(lián)的存儲(chǔ)器的部分(例如,緩存行)每個(gè)被驗(yàn)證和/或糾正時(shí),DMA引擎108生成對(duì)應(yīng)于由DMA引擎108接收的SMI請(qǐng)求的SMI,其可以接著被BIOS 106處理。由于DMA引擎108確保無錯(cuò)誤的SMM代碼,因此BIOS 106能沒有負(fù)面結(jié)果地使用SMM代碼(例如,不會(huì)造成完全關(guān)機(jī))。為了實(shí)現(xiàn)這樣的保護(hù),計(jì)算平臺(tái)100經(jīng)歷與DMA引擎108和SMRAM 110相關(guān)的多個(gè)初始化。也就是,某些硬件機(jī)構(gòu)和軟件單元的初始配置使示例計(jì)算平臺(tái)100能夠如這里描述的保護(hù)存儲(chǔ)器的部分。例如,SMM處理程序112被置于在SMRAM 110的其頂端部分(Topof Segment, TSEG)區(qū)域內(nèi)的受保護(hù)頁114中。在所示例子中,受保護(hù)頁114是4千字節(jié)(kB)大小并且包括了七(7)個(gè)代碼塊116-128。代碼塊116-128的內(nèi)容是被用來糾正存儲(chǔ)器中錯(cuò)誤的可執(zhí)行代碼。代碼塊116-128的內(nèi)容是不變的并且僅僅包括代碼塊(即,無數(shù)據(jù)塊)。SMM處理程序112的最后512字節(jié)(512B)為奇偶?jí)K130保留。BIOS 106使得DMA引擎108在初始化過程中(例如通電自檢(POST))生成奇偶?jí)K130。此外,BIOS 106用受保護(hù)區(qū)域114的位置為DMA引擎108的寄存器134編程,并用編程在其中的受保護(hù)區(qū)域114的位置鎖定該寄存器134。在所示的例子中,代碼塊116-128被配置(例如,由BIOS 106)以不準(zhǔn)許數(shù)據(jù)字段變動(dòng)。結(jié)果是,DMA引擎108在初始化過程中(例如,在POST引導(dǎo)期間)就生成奇偶?jí)K130一次。但是,在某些例子中,代碼塊116-128可被配置(例如,由BIOS 106)以包括可改變的數(shù)據(jù)字段。在這樣的例子中,DMA引擎108在一個(gè)或多個(gè)代碼塊116-128每次改變之后生成奇偶?jí)K130。在一些例子中,存儲(chǔ)器控制器102的錯(cuò)誤檢測單元104(例如,集成輸入/輸出(IIO)系統(tǒng))被初始化以將ECC錯(cuò)誤信號(hào)路由至DMA引擎108。盡管DMA引擎108在上面被描述為攔截ECC錯(cuò)誤信號(hào)(例如,SMI請(qǐng)求),但是示例計(jì)算平臺(tái)100可被配置通過DMA引擎108自動(dòng)路由這樣的信號(hào)。DMA引擎108還被配置包括通道(例如,隱藏通道),用于執(zhí)行被發(fā)送至受保護(hù)區(qū)域114的生成操作碼(例如,生成奇偶?jí)K130)、驗(yàn)證操作碼(例如,檢查在受保護(hù)區(qū)域114的緩存行的完整性)、或修復(fù)操作碼(例如,修復(fù)在受保護(hù)區(qū)域114中的緩存行)。在所示的例子中,該通道被限于用SMRAM 110的TSEG存儲(chǔ)器訪問受保護(hù)區(qū)域114。此外,該通道是僅有的能訪問在示例計(jì)算平臺(tái)100中的受保護(hù)區(qū)域114的通道。BIOS 106在使DMA引擎108能夠操作之前驗(yàn)證這個(gè)存取配置(例如,DMA引擎108的通道是僅有的能訪問受保護(hù)區(qū)域114的通道且受保護(hù)區(qū)域114全部在TSEG之內(nèi))。此外,該通道繞過VT_d引擎(如果存在)以防止轉(zhuǎn)換和/或安全侵害。在所示的例子中,在上面描述的生成、驗(yàn)證、和修復(fù)操作通過多個(gè)描述符136實(shí)現(xiàn)。該示例的多個(gè)描述符136包括生成描述符138用以生成受保護(hù)區(qū)域114的奇偶?jí)K130。在所示的例子中,根據(jù)已被加載的代碼塊116-128的內(nèi)容的以下等式,該生成描述符138使得生成奇偶?jí)K 130:parity_blk = Code_blk0 XOR Code_blkl XOR Code_blk2 XOR Code_blk3 XOR Code_blk4 XOR Code_blk5 XOR Code_blk6。該生成描述符 138 的示例實(shí)現(xiàn)在圖
2中示出。該示例生成描述符138根據(jù)RAID-5算法使用奇偶生成被配置。4kB基址是可編程的。如圖2所示,該生成描述符138的操作碼是0x87。參考回圖1,該示例多個(gè)描述符136還包括驗(yàn)證描述符140用以驗(yàn)證代碼塊116-128的內(nèi)容。該示例驗(yàn)證描述符140檢查SMM處理程序112的緩存行(即,代碼塊116-128)以確定任何緩存行是否標(biāo)有損害指示器。錯(cuò)誤檢測單元104或存儲(chǔ)器控制器102用損害指示器標(biāo)記包括檢測到的錯(cuò)誤的緩存行。這種指示器的存在使得驗(yàn)證描述符140確定相應(yīng)緩存行包括錯(cuò)誤。驗(yàn)證描述符140的示例實(shí)現(xiàn)在圖3中示出。示例驗(yàn)證描述符140類似于上面描述的示例生成描述符138。但是,用于驗(yàn)證描述符140的操作碼是0x88。在驗(yàn)證描述符140的執(zhí)行過程中,如果任何塊被發(fā)現(xiàn)具有如損害比特所指示的錯(cuò)誤被設(shè)置在“無法糾正的ECC錯(cuò)誤”上,則捕獲針對(duì)給定的緩存行的失敗的源地址,且DMA引擎108被停止。該示例多個(gè)描述符136還包括修復(fù)描述符142用以在一個(gè)或多個(gè)代碼塊116-128包含錯(cuò)誤(例如,如上面描述的由驗(yàn)證嘗試所確定)的情況下,修復(fù)SMM處理程序112的內(nèi)容。該修復(fù)描述符142的示例實(shí)現(xiàn)被示于圖4。在所示的例子中,僅僅失敗的緩存行被修復(fù)。圖4的示例修復(fù)描述符142類似于生成描述符138。但是,可操作長度變?yōu)橐粋€(gè)緩存行(64kB)。此外,在修復(fù)描述符142中,在上面描述的驗(yàn)證中檢測的失敗源地址(僅僅比特[11:8]被需要)被用作奇偶?jí)K地址,而奇偶?jí)K地址被用來替換失敗源塊的地址。例如,如由圖2中的代碼塊地址和圖4中的代碼塊地址比較所示,當(dāng)錯(cuò)誤發(fā)生在代碼塊5中時(shí),修復(fù)描述符142的奇偶?jí)K地址被代碼塊5地址(即,OxAOO)取代,且代碼塊5地址被奇偶?jí)K地址(OxEOO)取代。參考回圖1,圖1的示例DMA引擎108還包括SMI生成器144。由于示例DMA引擎108被配置用來從錯(cuò)誤檢測單元104中接收錯(cuò)誤指示(例如,SMI請(qǐng)求),DMA引擎108的示例SMI生成器144能夠生成對(duì)應(yīng)于由DMA引擎108接收的SMI請(qǐng)求的SMI。響應(yīng)于DMA引擎108校驗(yàn)和/或建立SMM處理程序112的完整性,示例SMI生成器144生成并傳送SMI至BIOS 106。BIOS 106然后能在沒有SMM處理程序112包括錯(cuò)誤的風(fēng)險(xiǎn)的情況下使用SMM處理程序112。盡管實(shí)現(xiàn)圖1的計(jì)算平臺(tái)100的示例方式已在圖1中示出,圖1中示出的一個(gè)或多個(gè)元件、過程和/或設(shè)備可被組合、分割、重新安排、省略、消除和/或以任何其它方式實(shí)現(xiàn)。此外,該示例保護(hù)機(jī)構(gòu)108、示例寄存器134、示例生成描述符138、示例驗(yàn)證描述符140、示例修復(fù)描述符142、示例SMI生成器144、示例SMM處理程序112、示例受保護(hù)區(qū)域114、和/或更一般地,圖1的示例計(jì)算平臺(tái)100可由硬件、軟件、固件和/或硬件、軟件和/或固件的任何組合實(shí)現(xiàn)。因此,例如,任何示例保護(hù)機(jī)構(gòu)108、示例寄存器134、示例生成描述符138、示例驗(yàn)證描述符140、示例修復(fù)描述符142、示例SMI生成器144、示例SMM處理程序112、示例受保護(hù)區(qū)域114、和/或更一般地,圖1的示例計(jì)算平臺(tái)100可由一個(gè)或多個(gè)電路、可編程處理器、專用集成電路(ASIC(s))、可編程邏輯器件(PLD(s))和/或現(xiàn)場可編程邏輯器件(FPLD(s))等等實(shí)現(xiàn)。當(dāng)任何所附的裝置權(quán)利要求涵蓋純軟件和/或固件實(shí)現(xiàn)時(shí),示例保護(hù)機(jī)構(gòu)108、示例寄存器134、示例生成描述符138、示例驗(yàn)證描述符140、示例修復(fù)描述符142、示例SMI生成器144、示例SMM處理程序112、示例受保護(hù)區(qū)域114中的至少一個(gè),和/或更一般地,圖1的示例計(jì)算平臺(tái)100特此被清楚地定義為包括存儲(chǔ)了軟件和/或固件的有形介質(zhì),例如存儲(chǔ)器、DVD、⑶等等。此外,示例保護(hù)機(jī)構(gòu)108、示例寄存器134、示例生成描述符138、示例驗(yàn)證描述符140、示例修復(fù)描述符142、示例SMI生成器144、示例SMM處理程序112、示例受保護(hù)區(qū)域114,和/或更一般地,圖1的示例計(jì)算平臺(tái)100可包括附加于或代替圖1所示的那些的一個(gè)或多個(gè)元件、過程和/或設(shè)備,和/或可包括多于一個(gè)的任何或所有的所示元件、過程和設(shè)備。圖5是代表可使用例如可被執(zhí)行用來實(shí)現(xiàn)圖1的示例BIOS 106以執(zhí)行POST的計(jì)算機(jī)可讀指令實(shí)現(xiàn)的示例過程的流程圖。圖6是代表可使用例如可被執(zhí)行用來實(shí)現(xiàn)圖1的示例保護(hù)機(jī)構(gòu)108以保護(hù)SMRAM 110的受保護(hù)區(qū)域114的SMM代碼的計(jì)算機(jī)可讀指令實(shí)現(xiàn)的示例過程的流程圖。圖5和圖6的示例過程可使用處理器、控制器和/或任何其它合適的處理設(shè)備執(zhí)行。例如,圖5和圖6的示例過程可使用存儲(chǔ)于有形計(jì)算機(jī)可讀介質(zhì)(例如閃存、只讀存儲(chǔ)器(ROM)、和/或隨機(jī)存取存儲(chǔ)器(RAM))上的編碼指令(例如,計(jì)算機(jī)可讀指令)實(shí)現(xiàn)。如這里所使用的,術(shù)語有形計(jì)算機(jī)可讀介質(zhì)被清楚地定義以為包括任何類型的計(jì)算機(jī)可讀存儲(chǔ)器并且不包括傳播信號(hào)。附加地或可選地,圖5和圖6的示例過程可使用存儲(chǔ)于非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)(例如閃存、只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、高速緩存或信息在其中存儲(chǔ)任何持續(xù)時(shí)間(例如,延長時(shí)間段、永久地、簡短的實(shí)例、臨時(shí)緩沖、和/或緩存信息)的任何其它存儲(chǔ)介質(zhì))上的編碼指令(例如,計(jì)算機(jī)可讀指令)實(shí)現(xiàn)。如這里使用的,術(shù)語非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)被清楚地定義為包括任何類型的計(jì)算機(jī)可讀介質(zhì)并且不包括傳播信號(hào)??蛇x地,圖5和圖6的一些或所有示例過程可使用專用集成電路(ASIC)、可編程邏輯器件(PLD)、現(xiàn)場可編程邏輯器件(FPLD)、分立的邏輯、硬件、固件等等的任何組合實(shí)現(xiàn)。而且,圖5和圖6的一些或所有示例過程可被手動(dòng)地實(shí)現(xiàn)或作為任何前述技術(shù)的任何組合(例如,固件、軟件、分立的邏輯和/或硬件的任何組合)而實(shí)現(xiàn)。此外,盡管圖5和圖6的示例過程被參照?qǐng)D5和圖6的流程圖描述,但是實(shí)現(xiàn)圖5和圖6過程的其它方法可被使用。例如,塊執(zhí)行的順序可被更改,和/或一些描述的塊可被更改、排除、再分、或組合。此外,圖5和圖6的任何或所有示例過程可被順序和/或并行地由例如單獨(dú)的處理線程、處理器、設(shè)備、分立的邏輯、電路等等執(zhí)行。參照?qǐng)D5,B10S 106以存儲(chǔ)于耦合到計(jì)算平臺(tái)100的處理器(例如,下面結(jié)合圖9討論的示例處理器912)的非易失性存儲(chǔ)器中的機(jī)器可讀指令的形式被實(shí)現(xiàn)作為軟件和/或固件。一般地,在引導(dǎo)操作系統(tǒng)之前,BIOS 106執(zhí)行一個(gè)或多個(gè)硬件和軟件配置以及測試活動(dòng)(例如,存儲(chǔ)器初始化、存儲(chǔ)器分區(qū)等等)。在圖5所示例子中,當(dāng)BIOS 106開始POST(塊500)時(shí),BIOS 106初始化圖1的示例計(jì)算平臺(tái)100的資源(塊502)。除了在塊502由BIOS 106執(zhí)行的傳統(tǒng)操作之外,示例BIOS 106根據(jù)這里描述的例子執(zhí)行初始化。特別地,BIOS 106配置受保護(hù)區(qū)域114以在TSEG中存儲(chǔ)示例SMM處理程序112 (塊504)。如上所述,這個(gè)配置包括BIOS 106用在TSEG中受保護(hù)區(qū)域114的位置對(duì)DMA引擎108的寄存器134進(jìn)行編程并且鎖定該寄存器134。此外,BIOS 106加載SMM處理程序112的代碼到受保護(hù)區(qū)域114,并且一旦SMM處理程序112代碼已被加載,觸發(fā)奇偶?jí)K130的生成(塊506)。BIOS 106確認(rèn)與受保護(hù)區(qū)域114和DMA引擎108相關(guān)聯(lián)的設(shè)置和初始化的準(zhǔn)確性(塊508)并且接著繼續(xù)和/或否則允許該觸發(fā)的POST (塊510)。參照?qǐng)D6,保護(hù)機(jī)構(gòu)108在所示的例子中由DMA引擎實(shí)現(xiàn)。更具體地,所示例子的示例保護(hù)機(jī)構(gòu)108由使用RAID-5算法及其操作碼的晶體海灘DMA引擎實(shí)現(xiàn)。RAID-5算法使用在代碼塊116-128中糾正錯(cuò)誤的基于奇偶的方法的XOR邏輯。一旦保護(hù)機(jī)構(gòu)108已被初始化(例如,由BIOS 106)并且SMM處理程序112代碼已被加載到受保護(hù)區(qū)域114中(塊600),圖6的示例流程圖對(duì)應(yīng)于保護(hù)機(jī)構(gòu)108的行為。在圖6所示的例子中,保護(hù)機(jī)構(gòu)108保持在空閑狀態(tài)直到存儲(chǔ)器控制器102通過錯(cuò)誤檢測單元104 (例如,集成輸入/輸出(IIO))檢測到ECC錯(cuò)誤(塊602)。如上所述,保護(hù)機(jī)構(gòu)108被配置用于接收或攔截來自存儲(chǔ)器控制器102的錯(cuò)誤指示(例如,SMI請(qǐng)求)。響應(yīng)于在塊602接收這樣的指示,保護(hù)機(jī)構(gòu)108開始嘗試驗(yàn)證SMRAM 110的受保護(hù)區(qū)域114的內(nèi)容(塊604)。如這里所描述,保護(hù)機(jī)構(gòu)108驗(yàn)證SMM處理程序112代碼(例如,使用圖1的驗(yàn)證符140)以確保當(dāng)使用SMM模式時(shí),B10S106不執(zhí)行破壞代碼。當(dāng)被檢查的代碼塊的緩存行(例如第五代碼塊126)包括損害指示器(例如,如通過錯(cuò)誤檢測單元104由存儲(chǔ)器控制器102被置于其中)時(shí)(塊606),保護(hù)機(jī)構(gòu)108修復(fù)(例如,使用圖1的修復(fù)描述符142)有錯(cuò)誤的緩存行(塊608)。例如,當(dāng)?shù)谖宕a塊126包括錯(cuò)誤時(shí),下面的等式被用來修復(fù)第五代碼塊126:code_blk5 = code_blk0 XOR code_blklXOR code—blk2 XOR code—blk3 XOR code—blk4 XOR parity—blk XOR code—blk6。一旦有錯(cuò)誤的緩存行被修復(fù),保護(hù)機(jī)構(gòu)108確定受保護(hù)區(qū)域114的整個(gè)SMM代碼是否已被驗(yàn)證(塊610)??蛇x地,參考回圖6的塊606,如果嘗試被驗(yàn)證的緩存行不包括錯(cuò)誤,則保護(hù)機(jī)構(gòu)108確定受保護(hù)區(qū)域114的整個(gè)SMM代碼是否已被驗(yàn)證(塊610)。如果受保護(hù)區(qū)域114的整個(gè)SMM代碼沒有被驗(yàn)證,則保護(hù)機(jī)構(gòu)108嘗試驗(yàn)證受保護(hù)SMM代碼的下一個(gè)緩存行(塊604)。否則,如果受保護(hù)區(qū)域114的整個(gè)SMM代碼已被驗(yàn)證,則保護(hù)機(jī)構(gòu)108的SMI生成器144根據(jù)由保護(hù)機(jī)構(gòu)108從存儲(chǔ)器控制器102攔截或接收的SMI請(qǐng)求來生成SMI (塊612)。保護(hù)機(jī)構(gòu)108接著返回至空閑狀態(tài)(塊614),并且等候來自存儲(chǔ)器控制器102的另一錯(cuò)誤指示(塊602)。圖7是由圖1的示例保護(hù)機(jī)構(gòu)的第一算法保護(hù)的圖1的代碼塊116-128的圖。圖7的列代表代碼塊116-128的緩存行和圖1的奇偶?jí)K130。例如,在圖7中標(biāo)注為“Cl”的第一緩存行代表第一緩存行。圖7示出了實(shí)現(xiàn)RAID-5奇偶算法到晶體海灘(CB)DMA引擎的保護(hù)機(jī)構(gòu)108。如在圖7中所示,多個(gè)比特錯(cuò)誤(圖7中用X表示)可能在單個(gè)代碼或奇偶?jí)K的任何一個(gè)緩存行內(nèi)積累,只要相關(guān)聯(lián)的緩存行不包括無法糾正的ECC錯(cuò)誤。圖8是由圖1的示例保護(hù)機(jī)構(gòu)的第二算法保護(hù)的圖1的代碼塊的圖。特別地,圖8示出了實(shí)現(xiàn)RAID-6奇偶算法至晶體海灘(CB)DMA引擎的保護(hù)機(jī)構(gòu)108。RAID-6配置提供了附加的保護(hù),例如允許在每一列的兩個(gè)緩存行被保護(hù)。為了提供這個(gè)保護(hù),一個(gè)代碼塊(在所示例子中的代碼塊6)被一個(gè)商塊替換。在圖8中的商塊和奇偶?jí)K根據(jù)RAID-6架構(gòu)被使用并且被用于修復(fù)包括錯(cuò)誤的緩存行。圖9是被用來執(zhí)行圖2的機(jī)器可讀指令和/或?qū)崿F(xiàn)示例計(jì)算平臺(tái)100的一個(gè)或多個(gè)示例組件和/或圖1的示例BIOS恢復(fù)模塊102的示例處理器系統(tǒng)的框圖。如圖9中所示,處理器系統(tǒng)910包括耦合至互連總線914的處理器912。處理器912可以是任何適當(dāng)?shù)奶幚砥?、處理器單元或微處理器。雖然在圖9中未被示出,但是系統(tǒng)910可以是多處理器系統(tǒng),并且因此可包括一個(gè)或多個(gè)與處理器912不同、相同或類似的并且被通信地耦合到互連總線914的附加處理器。圖9的處理器912被耦合至芯片組918,其包括存儲(chǔ)器控制器920和輸入/輸出(I/o)控制器922。芯片組918提供I/O和存儲(chǔ)器管理功能以及多個(gè)通用和/或?qū)S眉拇嫫鳌⒍〞r(shí)器等等,它們可由一個(gè)或多個(gè)耦合至芯片組918的處理器訪問或使用。存儲(chǔ)器控制器920執(zhí)行使處理器912 (或多個(gè)處理器,如果有多個(gè)處理器的話)能夠訪問系統(tǒng)存儲(chǔ)器924和大容量存儲(chǔ)存儲(chǔ)器925的功能。系統(tǒng)存儲(chǔ)器924可包括任何期望類型的易失性和/或非易失性存儲(chǔ)器,例如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、閃存、只讀存儲(chǔ)器(ROM)等等。大容量存儲(chǔ)存儲(chǔ)器925可包括任何期望類型的大容量存儲(chǔ)設(shè)備,包括:硬盤驅(qū)動(dòng)器、光學(xué)驅(qū)動(dòng)器、磁帶存儲(chǔ)設(shè)備等等。I/O控制器922執(zhí)行使處理器912能夠經(jīng)由I/O總線932與外圍輸入/輸出(I/O)設(shè)備926和928以及網(wǎng)絡(luò)接口 930通信的功能。I/O設(shè)備926和928可以是任何期望類型的I/O設(shè)備,例如鍵盤、視頻顯示器或監(jiān)視器、鼠標(biāo)等等。網(wǎng)絡(luò)接口 930可以是例如以太網(wǎng)設(shè)備、異步傳輸模式(ATM)設(shè)備、802.11設(shè)備、DSL調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器、蜂窩調(diào)制解調(diào)器等等,其使得處理器系統(tǒng)310能夠與另一處理器系統(tǒng)通信。盡管存儲(chǔ)器控制器320和I/O控制器322在圖3中被描述為在芯片組318內(nèi)分離的塊,但是由這些塊執(zhí)行的功能可以被集成在單個(gè)半導(dǎo)體電路內(nèi)或可以使用兩個(gè)或更多分離的集成電路被實(shí)現(xiàn)。雖然某些方法、裝置、和制品在這里已被描述,但是本專利涵蓋的范圍并不限于此。相反地,本專利涵蓋文字上或在等價(jià)物的教條下落入所附權(quán)利要求的范圍內(nèi)的所有方法、裝置、和制品。
權(quán)利要求
1.一種在計(jì)算平臺(tái)中保護(hù)存儲(chǔ)器的部分的方法,包括: 攔截指示錯(cuò)誤的中斷請(qǐng)求; 確定存儲(chǔ)器的第一部分是否是被破壞的,存儲(chǔ)器的所述第一部分被指定為存儲(chǔ)器的受保護(hù)區(qū)域; 當(dāng)存儲(chǔ)器的所述受保護(hù)區(qū)域是被破壞的時(shí),使用代碼的奇偶?jí)K來修復(fù)存儲(chǔ)器的被破壞的區(qū)域;以及 響應(yīng)于驗(yàn)證存儲(chǔ)器的所述受保護(hù)區(qū)域,而生成中斷以使得能夠使用存儲(chǔ)在存儲(chǔ)器的所述受保護(hù)區(qū)域中的代碼來處理與所述中斷請(qǐng)求相關(guān)聯(lián)的所述錯(cuò)誤。
2.如權(quán)利要求1所述的方法,其中存儲(chǔ)器的所述受保護(hù)區(qū)域包括指定用于處理所述錯(cuò)誤的系統(tǒng)管理模式處理程序。
3.如權(quán)利要求1所述的方法,其中存儲(chǔ)器的所述受保護(hù)區(qū)域僅能由保護(hù)機(jī)構(gòu)訪問以驗(yàn)證存儲(chǔ)器的所述受保護(hù)區(qū)域。
4.如權(quán)利要求1所述的方法,進(jìn)一步包括生成奇偶?jí)K以修復(fù)存儲(chǔ)在存儲(chǔ)器的所述受保護(hù)區(qū)域中的代碼。
5.如權(quán)利要求1所述的方法,進(jìn)一步包括在一個(gè)或多個(gè)寄存器中存儲(chǔ)存儲(chǔ)器的所述受保護(hù)區(qū)域的位置并鎖定所述寄存器。
6.如權(quán)利要求1所述的方法,其中所述攔截防止基本輸入/輸出系統(tǒng)處理所述錯(cuò)誤。
7.如權(quán)利要求6所述的方法,其中所述基本輸入/輸出系統(tǒng)在初始化過程中將系統(tǒng)管理模式處理程序加載到存儲(chǔ)器的所述受保護(hù)區(qū)域中。
8.一種其上存儲(chǔ)有指令的有形機(jī)器可讀介質(zhì),當(dāng)所述指令被執(zhí)行時(shí),使得機(jī)器: 攔截指示錯(cuò)誤的中斷請(qǐng)求; 確定存儲(chǔ)器的第一部分是否是被破壞的,存儲(chǔ)器的所述第一部分被指定為存儲(chǔ)器的受保護(hù)區(qū)域; 當(dāng)存儲(chǔ)器的所述受保護(hù)區(qū)域是被破壞的時(shí),使用代碼的奇偶?jí)K來修復(fù)存儲(chǔ)器的被破壞的區(qū)域;以及 響應(yīng)于驗(yàn)證存儲(chǔ)器的所述受保護(hù)區(qū)域,而生成中斷以使得能夠使用存儲(chǔ)在存儲(chǔ)器的所述受保護(hù)區(qū)域中的代碼來處理與所述中斷請(qǐng)求相關(guān)聯(lián)的所述錯(cuò)誤。
9.如權(quán)利要求8所述的有形機(jī)器可讀介質(zhì),其中存儲(chǔ)器的所述受保護(hù)區(qū)域包括指定用于處理所述錯(cuò)誤的系統(tǒng)管理模式處理程序。
10.如權(quán)利要求8所述的有形機(jī)器可讀介質(zhì),其中存儲(chǔ)器的所述受保護(hù)區(qū)域僅能由保護(hù)機(jī)構(gòu)訪問以驗(yàn)證存儲(chǔ)器的所述受保護(hù)區(qū)域。
11.如權(quán)利要求8所述的其上存儲(chǔ)有指令的有形機(jī)器可讀介質(zhì),當(dāng)所述指令被執(zhí)行時(shí),使得機(jī)器生成要用于修復(fù)存儲(chǔ)在存儲(chǔ)器的所述受保護(hù)區(qū)域中的代碼的奇偶?jí)K。
12.如權(quán)利要求8所述的其上存儲(chǔ)有指令的有形機(jī)器可讀介質(zhì),當(dāng)所述指令被執(zhí)行時(shí),使得機(jī)器在一個(gè)或多個(gè)寄存器中存儲(chǔ)存儲(chǔ)器的所述區(qū)域的位置并鎖定所述寄存器。
13.如權(quán)利要求8所述的有形機(jī)器可讀介質(zhì),其中存儲(chǔ)器的所述部分被指定由基本輸入/輸出系統(tǒng)保護(hù)。
14.如權(quán)利要求13所述的有形機(jī)器可讀介質(zhì),其中所述基本輸入/輸出系統(tǒng)在初始化過程中將系統(tǒng)管理模式處理程序加載到存儲(chǔ)器的所述受保護(hù)區(qū)域中。
15.一種保護(hù)存儲(chǔ)器的部分的裝置,包括: 通信接口,用于接收與錯(cuò)誤相關(guān)的中斷請(qǐng)求,其中所述中斷請(qǐng)求指示所述錯(cuò)誤的位置; 一個(gè)或多個(gè)寄存器,用存儲(chǔ)器的受保護(hù)區(qū)域的位置對(duì)所述一個(gè)或多個(gè)寄存器進(jìn)行編程,其中所述一個(gè)或多個(gè)寄存器被鎖定為包括存儲(chǔ)器的所述受保護(hù)區(qū)域的位置; 修復(fù)描述符,用于當(dāng)所述錯(cuò)誤的位置在存儲(chǔ)器的所述受保護(hù)區(qū)域中時(shí),修復(fù)存儲(chǔ)器的所述受保護(hù)區(qū)域的被破壞的部分; 驗(yàn)證描述符,用于驗(yàn)證存儲(chǔ)器的所述受保護(hù)區(qū)域;以及 中斷生成器,用于響應(yīng)于所述驗(yàn)證描述符驗(yàn)證存儲(chǔ)器的所述受保護(hù)區(qū)域,而生成對(duì)應(yīng)于所述中斷請(qǐng)求的中斷,以使得能夠使用存儲(chǔ)于存儲(chǔ)器的所述受保護(hù)區(qū)域內(nèi)的代碼。
16.如權(quán)利要求15所述的裝置,其中存儲(chǔ)器的所述受保護(hù)區(qū)域位于系統(tǒng)管理隨機(jī)存取存儲(chǔ)器的頂端部分。
17.如權(quán)利要求15所述的裝置,其中所述修復(fù)描述符使用奇偶?jí)K來修復(fù)存儲(chǔ)器的所述受保護(hù)區(qū)域的被破壞的部分。
18.如權(quán)利要求17所述的裝置,進(jìn)一步包括生成描述符,用于基于存儲(chǔ)于存儲(chǔ)器的所述受保護(hù)區(qū)域中的系統(tǒng)管理模式處理程序的代碼來生成所述奇偶?jí)K。
19.如權(quán)利要求15所述的裝置,其中所述中斷生成器將對(duì)應(yīng)于所述中斷請(qǐng)求的中斷傳送到基本輸入/輸出系統(tǒng)。
20.如權(quán)利要求19所 述的裝置,其中所述基本輸入/輸出系統(tǒng)使用在存儲(chǔ)器的所述受保護(hù)區(qū)域中的代碼來處理在計(jì)算系統(tǒng)中的錯(cuò)誤。
全文摘要
這里公開了保護(hù)存儲(chǔ)器的部分的方法和裝置。一種示例方法包括攔截指示錯(cuò)誤的中斷請(qǐng)求;確定存儲(chǔ)器的第一部分是否是被破壞的,存儲(chǔ)器的所述第一部分被指定為存儲(chǔ)器的受保護(hù)區(qū)域;當(dāng)存儲(chǔ)器的所述受保護(hù)區(qū)域是被破壞的時(shí),使用代碼的奇偶?jí)K來修復(fù)存儲(chǔ)器的被破壞的區(qū)域;以及響應(yīng)于驗(yàn)證存儲(chǔ)器的所述受保護(hù)區(qū)域,而生成中斷以使得能夠使用存儲(chǔ)在存儲(chǔ)器的所述受保護(hù)區(qū)域中的代碼來處理與所述中斷請(qǐng)求相關(guān)聯(lián)的所述錯(cuò)誤。
文檔編號(hào)G06F12/00GK103140841SQ201180036850
公開日2013年6月5日 申請(qǐng)日期2011年7月20日 優(yōu)先權(quán)日2010年7月26日
發(fā)明者R·C·斯旺森, E·R·韋哈格, V·J·齊默, M·布魯蘇 申請(qǐng)人:英特爾公司