類型的代碼,如果代碼是 "物理地址依賴代碼"的話。物理地址依賴代碼指使用物理存儲(chǔ)器地址而不是可再定位存儲(chǔ) 器地址來引用對(duì)象、調(diào)用函數(shù)或引用數(shù)據(jù)的代碼。
[0023] 圖1是示例系統(tǒng)100的框圖,所述示例系統(tǒng)100包括一個(gè)或多個(gè)處理器102和非 易失性存儲(chǔ)器104。處理器可以包括微處理器、微控制器、處理器模塊或子系統(tǒng)、可編程集成 電路、可編程門陣列,或者另一控制或計(jì)算設(shè)備。非易失性存儲(chǔ)器104可以包括一個(gè)或多個(gè) 存儲(chǔ)器設(shè)備,諸如(一個(gè)或多個(gè))閃存設(shè)備、(一個(gè)或多個(gè))基于盤的存儲(chǔ)設(shè)備等??梢岳?即使從系統(tǒng)100移除電力也能夠維持存儲(chǔ)在(一個(gè)或多個(gè))存儲(chǔ)設(shè)備中的數(shù)據(jù)的任何存儲(chǔ)設(shè) 備(或多個(gè)存儲(chǔ)設(shè)備)來實(shí)現(xiàn)非易失性存儲(chǔ)器104。
[0024] 非易失性存儲(chǔ)器104存儲(chǔ)包括引導(dǎo)塊108的系統(tǒng)固件。另外,另一引導(dǎo)塊118還 可以被存儲(chǔ)在非易失性存儲(chǔ)器104中。引導(dǎo)塊(也被稱作引導(dǎo)塊映像)108和118被存儲(chǔ)在 非易失性存儲(chǔ)器104的不同存儲(chǔ)器區(qū)域中。不同的存儲(chǔ)器區(qū)域可以在分離的存儲(chǔ)器設(shè)備中 或在相同存儲(chǔ)器設(shè)備的不同分區(qū)中。系統(tǒng)固件可以進(jìn)一步包括存儲(chǔ)在非易失性存儲(chǔ)器104 中的(未不出的)其他部分。
[0025] 多個(gè)引導(dǎo)塊108和118的存在提供更可靠和穩(wěn)健的系統(tǒng)。引導(dǎo)塊108可以是主要 弓丨導(dǎo)塊,而引導(dǎo)塊118可以是次要引導(dǎo)塊。如果主要引導(dǎo)塊108被損害,則可以代替地使用 次要引導(dǎo)塊118以允許系統(tǒng)100繼續(xù)操作。
[0026] 可以更新存儲(chǔ)在非易失性存儲(chǔ)器104中的系統(tǒng)固件,所述非易失性存儲(chǔ)器104包 括引導(dǎo)塊108和118。圖1圖示了其中用于更新引導(dǎo)塊的引導(dǎo)塊更新信息110由更新控制 邏輯116接收的示例。應(yīng)注意引導(dǎo)塊更新信息110可以是用于更新系統(tǒng)固件的其他部分的 較大更新信息的部分。引導(dǎo)塊更新信息110包括更新的引導(dǎo)塊112和差別數(shù)據(jù)114。
[0027]引導(dǎo)塊更新信息110中的更新的引導(dǎo)塊112可以是次要引導(dǎo)塊118的更新版本。 在引導(dǎo)塊更新信息110的接收時(shí),更新的引導(dǎo)塊112連同差別數(shù)據(jù)114可以被存儲(chǔ)在非易 失性存儲(chǔ)器104中來替代次要引導(dǎo)塊118。以該方式,利用接收的引導(dǎo)塊更新信息110中的 更新的引導(dǎo)塊112來有效地更新次要引導(dǎo)塊118。為了節(jié)省非易失性存儲(chǔ)器104的空間,主 要引導(dǎo)塊108的更新版本沒有被包括在引導(dǎo)塊信息110中。相反地,如上文記載的那樣,通 過使用差別數(shù)據(jù)114轉(zhuǎn)換(一個(gè)或多個(gè))物理地址來根據(jù)更新的引導(dǎo)塊112產(chǎn)生主要引導(dǎo)塊 108的更新版本。
[0028] 非易失性存儲(chǔ)器104中的空間節(jié)省在以下情況中可以是有益的:其中主要引導(dǎo)塊 108 (以及可能地系統(tǒng)固件的其他部分)被存儲(chǔ)在諸如通過系統(tǒng)100的芯片組鎖定的非易失 性存儲(chǔ)器104的(一個(gè)或多個(gè))存儲(chǔ)器區(qū)域中。芯片組指執(zhí)行計(jì)算系統(tǒng)100的指定功能的系 統(tǒng)100的電路,所述指定功能諸如視頻功能、總線接口功能、存儲(chǔ)器控制器功能等。例如,芯 片組可以包括I/O控制器,諸如來自Intel公司的平臺(tái)控制器集線器(PCH)。PCH可以包括 各種功能,包括到圖形子系統(tǒng)的顯示接口、到各種I/O設(shè)備可以連接到的系統(tǒng)總線的系統(tǒng) 總線接口等。在其他示例中,可以使用其他類型的I/O控制器。
[0029] 如果主要引導(dǎo)塊108被存儲(chǔ)在鎖定的存儲(chǔ)器區(qū)域中,則在系統(tǒng)100的運(yùn)行時(shí)間期 間該存儲(chǔ)器區(qū)域不可用來被寫入(用于更新)。因此,在運(yùn)行時(shí)間期間不可以更新主要引導(dǎo) 塊108。鎖定的存儲(chǔ)器區(qū)域因此減少在運(yùn)行時(shí)間期間用于寫的非易失性存儲(chǔ)器104中的可 用空間的量。
[0030] 在其中非易失性存儲(chǔ)器104的可用空間的量受限的實(shí)現(xiàn)中,可能不存在充足的空 間將兩個(gè)更新的引導(dǎo)塊映像(一個(gè)更新主要引導(dǎo)塊108并且另一個(gè)更新次要引導(dǎo)塊118)寫 到非易失性存儲(chǔ)器104的未鎖定的區(qū)域中。
[0031] 根據(jù)某些實(shí)現(xiàn),代替將兩個(gè)更新的引導(dǎo)塊映像寫到非易失性存儲(chǔ)器,更新控制邏 輯116可以將單個(gè)的更新的引導(dǎo)塊映像(更新的引導(dǎo)塊112)連同差別數(shù)據(jù)114寫到非易失 性存儲(chǔ)器104的未鎖定存儲(chǔ)器區(qū)域,所述差別數(shù)據(jù)114具有比更新的引導(dǎo)塊映像小的大小。
[0032] -旦使用引導(dǎo)塊更新信息110中的更新的引導(dǎo)塊112來替代次要引導(dǎo)塊118,更新 控制邏輯116中的差別過濾器117就可以使用差別數(shù)據(jù)114來創(chuàng)建主要引導(dǎo)塊108的更新 版本,其中主要引導(dǎo)塊的更新版本被用來替代主要引導(dǎo)塊108以完成引導(dǎo)塊更新。
[0033] 更新控制邏輯116和差別過濾器117可以被實(shí)現(xiàn)為在(一個(gè)或多個(gè))處理器102上 可執(zhí)行的機(jī)器可讀指令。在某些示例中,更新控制邏輯116和差別過濾器117可以是系統(tǒng) 固件的部分。盡管在圖1中差別過濾器117被描繪為是更新控制邏輯116的部分,但應(yīng)注 意在其他示例中差別過濾器117可以與更新控制邏輯116分離。
[0034] 在引導(dǎo)過程期間,可以執(zhí)行包括引導(dǎo)塊、更新控制邏輯116和差別過濾器117的系 統(tǒng)固件。
[0035] 更新控制邏輯116首先將更新的引導(dǎo)塊112和差別數(shù)據(jù)114寫到非易失性存儲(chǔ)器 104來替代次要引導(dǎo)塊118。接著,通過將差別數(shù)據(jù)應(yīng)用于更新的引導(dǎo)塊112,差別過濾器 117能夠根據(jù)更新的引導(dǎo)塊112產(chǎn)生主要引導(dǎo)塊108的更新版本。生成主要引導(dǎo)塊108的 更新版本涉及將更新的引導(dǎo)塊112的(一個(gè)或多個(gè))相應(yīng)區(qū)域中的一個(gè)或多個(gè)物理地址轉(zhuǎn)換 成被包括在主要引導(dǎo)塊108的更新版本中的(一個(gè)或多個(gè))不同的相應(yīng)物理地址。
[0036] 例如,假設(shè)存在被稱作引導(dǎo)塊A和引導(dǎo)塊B的兩個(gè)引導(dǎo)塊映像,并且每個(gè)包含被 稱作BootStart的模塊。調(diào)用BootStart模塊以啟動(dòng)相應(yīng)的引導(dǎo)塊映像。針對(duì)引導(dǎo)塊 A中的BootStart模塊調(diào)用的物理地址可以是第一物理地址(經(jīng)勿OxFFFFFABG),并 且針對(duì)引導(dǎo)塊B中的BootStart模塊調(diào)用的物理地址可以是第二不同的物理地址(#/勿 OxFFFABCDE)。通過根據(jù)相應(yīng)的不同物理地址執(zhí)行相應(yīng)的BootStart模塊可以啟動(dòng)引 導(dǎo)塊A和引導(dǎo)塊B。盡管這慮及執(zhí)行的冗余(其中如果檢測到引導(dǎo)塊A被損害則可以執(zhí)行引 導(dǎo)塊B),但是由于針對(duì)BootStart模塊的不同的物理地址的使用,不可以從引導(dǎo)塊B恢復(fù)引 導(dǎo)塊A,即使引導(dǎo)塊A和引導(dǎo)塊B中的邏輯可以是相同的。當(dāng)引導(dǎo)塊B的BootStart模塊從 引導(dǎo)塊A的位置啟動(dòng)時(shí),將引導(dǎo)塊B簡單地復(fù)制到引導(dǎo)塊A的存儲(chǔ)器區(qū)域?qū)?dǎo)致錯(cuò)誤。
[0037] 并且,構(gòu)建環(huán)境頻繁地構(gòu)造針對(duì)由引導(dǎo)塊訪問的數(shù)據(jù)的尋址方案,所述數(shù)據(jù)在引 導(dǎo)塊中內(nèi)部相干。然而,當(dāng)這些尋址方案表示物理地址而不是可再定位地址時(shí),引導(dǎo)塊映像 的一個(gè)區(qū)域內(nèi)的任何地址可以與位于另一引導(dǎo)塊映像的相應(yīng)區(qū)域中的相應(yīng)的內(nèi)部相干的 地址不同。
[0038] 在替代的實(shí)現(xiàn)中,代替使用更新控制邏輯116和差別過濾器117更新引導(dǎo)塊映像, 可以更新其他類型的物理地址依賴代碼映像。這些物理地址依賴代碼映像可以被存儲(chǔ)在非 易失性存儲(chǔ)器104中。
[0039] 圖2是根據(jù)某些實(shí)現(xiàn)的過程200的流程圖,所述過程200例如可以由圖1的差別過 濾器117執(zhí)行。過程200接收(在202處)第一物理地址依賴代碼(房更新的引導(dǎo)塊112), 其中第一物理地址依賴代碼包含包括第一物理地址的區(qū)域。
[0040]