專利名稱:用于修改版本標(biāo)識(shí)寄存器的內(nèi)容的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)領(lǐng)域。更具體地說(shuō),本發(fā)明涉及版本(revision)標(biāo)識(shí)寄存器領(lǐng)域。
背景技術(shù):
在一般的計(jì)算機(jī)系統(tǒng)中,許多計(jì)算機(jī)系統(tǒng)設(shè)備包括版本標(biāo)識(shí)寄存器,其包含用于表示相關(guān)聯(lián)的硬件的當(dāng)前版本的值。一般地,每次對(duì)設(shè)備進(jìn)行版本改動(dòng)(經(jīng)常稱之為“版本步進(jìn)”(stepping))時(shí),都會(huì)改變存儲(chǔ)在版本標(biāo)識(shí)寄存器中的值以反映新的版本步進(jìn)?,F(xiàn)有技術(shù)的計(jì)算機(jī)系統(tǒng)設(shè)備將版本標(biāo)識(shí)寄存器實(shí)現(xiàn)為只讀寄存器。也就是說(shuō),版本標(biāo)識(shí)寄存器的內(nèi)容不可修改。
當(dāng)在計(jì)算機(jī)系統(tǒng)引導(dǎo)過(guò)程中加載操作系統(tǒng)時(shí),操作系統(tǒng)一般會(huì)檢查各個(gè)版本標(biāo)識(shí)寄存器,以確定各設(shè)備的當(dāng)前的步進(jìn)版本。操作系統(tǒng)使用版本標(biāo)識(shí)信息來(lái)決定加載哪些設(shè)備驅(qū)動(dòng)程序。當(dāng)操作系統(tǒng)識(shí)別到新的設(shè)備步進(jìn)版本時(shí),操作系統(tǒng)為該設(shè)備加載更新的設(shè)備驅(qū)動(dòng)程序。
計(jì)算機(jī)系統(tǒng)一般包括常稱之為“芯片組”的高度集成的系統(tǒng)邏輯設(shè)備。這些系統(tǒng)邏輯設(shè)備可包括各種功能單元,許多這些功能單元可包括版本標(biāo)識(shí)寄存器。一般地,當(dāng)高度集成的系統(tǒng)邏輯設(shè)備進(jìn)行新的版本步進(jìn)時(shí),多數(shù)功能單元在功能上不會(huì)有改變來(lái)產(chǎn)生改變?cè)O(shè)備驅(qū)動(dòng)程序的需求。然而,對(duì)于每個(gè)新的步進(jìn)版本,與該集成式功能單元相關(guān)聯(lián)的每個(gè)版本標(biāo)識(shí)寄存器都包含反映該新的步進(jìn)版本的值。在引導(dǎo)過(guò)程中,如果操作系統(tǒng)檢測(cè)到新的設(shè)備步進(jìn)版本,那么,即使從以前的步進(jìn)版本到當(dāng)前的步進(jìn)版本沒(méi)有功能上的變化,操作系統(tǒng)也會(huì)為各個(gè)功能單元加載更新的設(shè)備驅(qū)動(dòng)程序。
當(dāng)檢測(cè)到新的步進(jìn)版本時(shí)無(wú)論是否必要都加載更新的驅(qū)動(dòng)程序,這給計(jì)算機(jī)系統(tǒng)制造商制造了難題。計(jì)算機(jī)系統(tǒng)制造商經(jīng)常在一個(gè)系統(tǒng)上構(gòu)建操作系統(tǒng)的預(yù)加載(pre-load),然后將其轉(zhuǎn)移到下述相同的系統(tǒng),所述相同的系統(tǒng)可能具有帶有不同的硅步進(jìn)版本的系統(tǒng)邏輯設(shè)備。打開電源時(shí),即使沒(méi)有必要,操作系統(tǒng)也會(huì)加載新的設(shè)備驅(qū)動(dòng)程序,因而增加了制造時(shí)間。
上述版本標(biāo)識(shí)寄存器經(jīng)常是根據(jù)外圍組件互連(PCI)總線標(biāo)準(zhǔn)(1998年12月18日發(fā)布的外圍組件互連局部總線規(guī)范2.2版)來(lái)實(shí)現(xiàn)的。
從下面給出的對(duì)本發(fā)明的詳細(xì)描述以及本發(fā)明的實(shí)施例的附圖可更完整地理解本發(fā)明,然而所述描述及附圖不應(yīng)被理解為將本發(fā)明限制為所描述的具體實(shí)施例,而只是用于說(shuō)明和理解。
圖1是包含可修改的版本標(biāo)識(shí)寄存器的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的框圖。
圖2是用于修改存儲(chǔ)在版本標(biāo)識(shí)寄存器中的值的方法的一個(gè)實(shí)施例的流程圖。
圖3是用于修改存儲(chǔ)在版本標(biāo)識(shí)寄存器中的值的方法的另一實(shí)施例的流程圖。
具體實(shí)施例方式
用于修改版本標(biāo)識(shí)寄存器的內(nèi)容的方法的實(shí)施例包括既可讀又可寫的版本標(biāo)識(shí)寄存器(該版本標(biāo)識(shí)寄存器的內(nèi)容是可修改的)。還包括版本標(biāo)識(shí)修改位。只有當(dāng)版本標(biāo)識(shí)修改位被設(shè)置成表示可接受對(duì)版本標(biāo)識(shí)寄存器的寫時(shí),才可修改版本標(biāo)識(shí)寄存器的內(nèi)容。這一實(shí)施例在下述場(chǎng)合下是有用的更新了硬件,但不需要為高度集成的系統(tǒng)邏輯設(shè)備中的一個(gè)或多個(gè)特定功能單元更新操作系統(tǒng)設(shè)備驅(qū)動(dòng)程序。在這種情形下,前操作系統(tǒng)引導(dǎo)軟件(例如在加載操作系統(tǒng)之前執(zhí)行的基本輸入/輸出系統(tǒng)(BIOS))可以在操作系統(tǒng)加載之前決定將較老的版本標(biāo)識(shí)值置入版本標(biāo)識(shí)寄存器中,其中所述前操作系統(tǒng)引導(dǎo)軟件是為特定的計(jì)算機(jī)系統(tǒng)配置而開發(fā)的。操作系統(tǒng)認(rèn)為硬件沒(méi)有改變。這防止了對(duì)設(shè)備驅(qū)動(dòng)程序不必要的枚舉、搜索和重加載,因而節(jié)省了制造時(shí)間。
圖1是包括可修改的版本標(biāo)識(shí)寄存器的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的框圖。圖1的計(jì)算機(jī)系統(tǒng)包括處理器110。處理器110耦合到系統(tǒng)邏輯設(shè)備120。系統(tǒng)邏輯設(shè)備120可包含用于和系統(tǒng)存儲(chǔ)器130通信的存儲(chǔ)器控制器。系統(tǒng)邏輯設(shè)備120還可包含其他功能單元,所述功能單元包括圖形控制器。
系統(tǒng)邏輯設(shè)備120還耦合到輸入/輸出中心(hub)140。輸入/輸出中心140可包含多個(gè)功能單元,包括但不局限于提供與通用串行總線(USB)165、PCI總線155以及磁盤驅(qū)動(dòng)器接口175之間的通信的功能單元。磁盤驅(qū)動(dòng)器接口175可與其上存儲(chǔ)有操作系統(tǒng)的存儲(chǔ)設(shè)備(未示出)通信。操作系統(tǒng)的全部或一部分可在計(jì)算機(jī)系統(tǒng)引導(dǎo)過(guò)程期間加載到系統(tǒng)存儲(chǔ)器130中。
輸入/輸出中心140還耦合到非易失性存儲(chǔ)器180。非易失性存儲(chǔ)器180可存儲(chǔ)器基本輸入/輸出系統(tǒng)(BIOS)或其他前操作系統(tǒng)軟件。如在此所使用的,術(shù)語(yǔ)“前操作系統(tǒng)軟件”意在包括系統(tǒng)引導(dǎo)過(guò)程期間在操作系統(tǒng)加載之前執(zhí)行的任何軟件代理。
圖1的計(jì)算機(jī)系統(tǒng)包括多個(gè)版本標(biāo)識(shí)寄存器。系統(tǒng)邏輯設(shè)備120包括版本標(biāo)識(shí)寄存器122和版本標(biāo)識(shí)修改位124。當(dāng)版本標(biāo)識(shí)修改位124被設(shè)置成值“1”時(shí),版本標(biāo)識(shí)寄存器122將接受寫。當(dāng)版本標(biāo)識(shí)修改位124反映值“0”時(shí),版本標(biāo)識(shí)寄存器122是只讀的(將不會(huì)接受寫)。
輸入/輸出中心140包括版本標(biāo)識(shí)寄存器141、143和145。輸入/輸出中心140還包括版本標(biāo)識(shí)修改位142、144和146。版本標(biāo)識(shí)寄存器141和版本標(biāo)識(shí)修改位142與提供和USB 165之間的通信的功能單元相關(guān)聯(lián)。版本標(biāo)識(shí)寄存器143和版本標(biāo)識(shí)修改位144與提供和PCI總線155之間的通信的功能單元相關(guān)聯(lián)。版本標(biāo)識(shí)寄存器145和版本標(biāo)識(shí)修改位146與提供和磁盤驅(qū)動(dòng)器接口175之間的通信的功能單元相關(guān)聯(lián)。存在許多其他可能的實(shí)施例,其中版本標(biāo)識(shí)寄存器和版本標(biāo)識(shí)修改位與大量功能單元或設(shè)備中的任意之一相關(guān)聯(lián)。
與版本標(biāo)識(shí)寄存器122和版本標(biāo)識(shí)修改位124相似,當(dāng)相關(guān)聯(lián)的版本標(biāo)識(shí)修改位142、144和146包含值“0”時(shí),版本標(biāo)識(shí)寄存器141、143和145不可修改。當(dāng)版本標(biāo)識(shí)修改位142、144和146被設(shè)置為值“1”時(shí),相關(guān)聯(lián)的版本標(biāo)識(shí)寄存器141、143和145可修改。即,版本標(biāo)識(shí)寄存器141、143和145將接受寫。
存儲(chǔ)在非易失性存儲(chǔ)器180中的前操作系統(tǒng)軟件可包括對(duì)存儲(chǔ)在各版本標(biāo)識(shí)寄存器中的當(dāng)前值進(jìn)行檢查的代碼。這一代碼可確定是否用反映以前的設(shè)備版本步進(jìn)的值來(lái)替換當(dāng)前的版本標(biāo)識(shí)寄存器值。
對(duì)于這一示例性實(shí)施例,版本標(biāo)識(shí)寄存器122、141、143和145以及版本標(biāo)識(shí)修改位124、142、144和146可被包含為與各個(gè)關(guān)聯(lián)設(shè)備或功能單元相關(guān)聯(lián)的PCI配置空間的一部分。
盡管在此描述的示例性實(shí)施例討論了用于確定是否可修改相關(guān)聯(lián)的版本標(biāo)識(shí)寄存器的一個(gè)版本標(biāo)識(shí)修改位,但是其他實(shí)施例可以使用多于一個(gè)的位。
而且,盡管在此描述的示例性實(shí)施例包含這樣的版本標(biāo)識(shí)修改位,其中的值“1”表示關(guān)聯(lián)版本標(biāo)識(shí)寄存器可修改,而值“0”表示版本標(biāo)識(shí)寄存器的只讀狀態(tài),但是也可以有其他實(shí)施例,其中的值“0”表示關(guān)聯(lián)版本標(biāo)識(shí)寄存器可修改,而值“1”表示版本標(biāo)識(shí)寄存器的只讀狀態(tài)。
圖2是用于修改存儲(chǔ)在版本標(biāo)識(shí)寄存器中的值的方法的一個(gè)實(shí)施例的流程圖。在方框210,從版本標(biāo)識(shí)寄存器中讀取當(dāng)前的版本標(biāo)識(shí)寄存器值。在方框220,進(jìn)行檢查以確定當(dāng)前的版本標(biāo)識(shí)值是否表示了第一設(shè)備版本步進(jìn)。所述第一設(shè)備版本步進(jìn)可能是最近一次作出了重大功能改變的版本步進(jìn)。術(shù)語(yǔ)“第一設(shè)備版本步進(jìn)”并非一定意味著設(shè)備或功能單元的初始版本。
如果當(dāng)前的版本標(biāo)識(shí)值表示了第一設(shè)備版本步進(jìn),則不采取任何進(jìn)一步的動(dòng)作。然而,如果當(dāng)前的版本標(biāo)識(shí)值不表示第一設(shè)備版本步進(jìn),則在方框230,用表示第一設(shè)備版本步進(jìn)的值替換當(dāng)前的版本標(biāo)識(shí)值。
圖3是用于修改存儲(chǔ)在版本標(biāo)識(shí)寄存器中的值的方法的另一個(gè)實(shí)施例的流程圖。在方框310,執(zhí)行前操作系統(tǒng)軟件代理。在方框320,讀取存儲(chǔ)在版本標(biāo)識(shí)寄存器中的值。在方框330,確定是否要修改存儲(chǔ)在版本標(biāo)識(shí)寄存器中的值。如果確定不修改存儲(chǔ)在版本標(biāo)識(shí)寄存器中的值,則在350加載操作系統(tǒng)。如果確定修改存儲(chǔ)在版本標(biāo)識(shí)寄存器中的值,則在340修改該值,然后在方框350加載操作系統(tǒng)。方框320、330和340處表示的操作是在前操作系統(tǒng)軟件代理的控制下執(zhí)行的。
在前面的說(shuō)明書中已參考其具體的示例性實(shí)施例來(lái)描述了本發(fā)明。然而,很明顯可以對(duì)其作出各種修改和改變,而不會(huì)偏離本發(fā)明如在所附的權(quán)利要求中闡述的更寬的精神和范圍。因此,說(shuō)明書和附圖應(yīng)被看作為說(shuō)明性的而非限制性的。
說(shuō)明書中對(duì)“實(shí)施例”“一個(gè)實(shí)施例”“一些實(shí)施例”或“其他實(shí)施例”的引用意味著結(jié)合所述實(shí)施例而描述的具體特征、結(jié)構(gòu)或特性至少包含在本發(fā)明的一些實(shí)施例中,而不一定包含在所有的實(shí)施例中?!皩?shí)施例”“一個(gè)實(shí)施例”或“一些實(shí)施例”在不同地方的出現(xiàn)不一定都指的是相同的實(shí)施例。
權(quán)利要求
1.一種裝置,包括使得可修改版本標(biāo)識(shí)寄存器內(nèi)容的版本標(biāo)識(shí)寄存器。
2.如權(quán)利要求1所述的裝置,還包括版本標(biāo)識(shí)修改寄存器,其中,當(dāng)所述版本標(biāo)識(shí)修改寄存器的內(nèi)容指示允許修改所述版本標(biāo)識(shí)寄存器內(nèi)容時(shí),所述版本標(biāo)識(shí)寄存器使得可修改所述版本標(biāo)識(shí)寄存器內(nèi)容。
3.如權(quán)利要求2所述的裝置,其中所述版本標(biāo)識(shí)修改寄存器包括單個(gè)的位,所述位的狀態(tài)表示當(dāng)前是否可修改所述版本標(biāo)識(shí)寄存器的內(nèi)容。
4.如權(quán)利要求3所述的裝置,其中所述版本標(biāo)識(shí)修改寄存器的值“1”表示所述版本標(biāo)識(shí)寄存器將接受寫到所述版本標(biāo)識(shí)寄存器的任意值。
5.如權(quán)利要求4所述的裝置,其中所述版本標(biāo)識(shí)修改寄存器的值“0”表示所述版本標(biāo)識(shí)寄存器將忽略對(duì)所述版本標(biāo)識(shí)寄存器的任何寫。
6.一種方法,包括確定存儲(chǔ)在版本標(biāo)識(shí)寄存器中的當(dāng)前版本標(biāo)識(shí)值是否表示第一設(shè)備版本步進(jìn);以及如果所述當(dāng)前版本標(biāo)識(shí)值不表示所述第一設(shè)備版本步進(jìn),則用表示所述第一設(shè)備版本步進(jìn)的版本標(biāo)識(shí)值來(lái)替換所述當(dāng)前版本標(biāo)識(shí)值。
7.如權(quán)利要求6所述的方法,還包括確保版本標(biāo)識(shí)修改寄存器包含表示所述版本標(biāo)識(shí)寄存器將接受寫的值。
8.如權(quán)利要求7所述的方法,還包括在所述版本標(biāo)識(shí)修改寄存器中置入表示所述版本標(biāo)識(shí)寄存器將不接受寫的值,其中,所述在所述版本標(biāo)識(shí)修改寄存器中置入值發(fā)生在用表示所述第一設(shè)備版本步進(jìn)的版本標(biāo)識(shí)值替換所述當(dāng)前版本標(biāo)識(shí)值之后。
9.一種方法,包括執(zhí)行前操作系統(tǒng)軟件代理,所述前操作系統(tǒng)軟件代理用于確定是否要修改存儲(chǔ)在版本標(biāo)識(shí)寄存器中的值;修改存儲(chǔ)在所述版本標(biāo)識(shí)寄存器中的值;以及加載操作系統(tǒng)。
10.如權(quán)利要求9所述的方法,其中,確定是否要修改存儲(chǔ)在所述版本標(biāo)識(shí)寄存器中的值包括確定存儲(chǔ)在所述版本標(biāo)識(shí)寄存器中的值是否表示第一設(shè)備版本步進(jìn)。
11.如權(quán)利要求10所述的方法,其中修改存儲(chǔ)在所述版本標(biāo)識(shí)寄存器中的值包括如果存儲(chǔ)在所述版本標(biāo)識(shí)寄存器中的值不表示所述第一設(shè)備版本步進(jìn),則用表示所述第一設(shè)備版本步進(jìn)的值來(lái)替換存儲(chǔ)在所述版本標(biāo)識(shí)寄存器中的值。
12.一種其上存儲(chǔ)有指令的機(jī)器可讀介質(zhì),所述指令當(dāng)被計(jì)算機(jī)系統(tǒng)執(zhí)行時(shí)使得所述計(jì)算機(jī)系統(tǒng)執(zhí)行包括下述步驟的方法確定存儲(chǔ)在版本標(biāo)識(shí)寄存器中的當(dāng)前版本標(biāo)識(shí)值是否表示第一設(shè)備版本步進(jìn);以及如果所述當(dāng)前版本標(biāo)識(shí)值不表示所述第一設(shè)備版本步進(jìn),則用表示所述第一設(shè)備版本步進(jìn)的版本標(biāo)識(shí)值來(lái)替換所述當(dāng)前版本標(biāo)識(shí)值。
13.如權(quán)利要求12所述的機(jī)器可讀介質(zhì),其上存儲(chǔ)有被執(zhí)行時(shí)執(zhí)行下述步驟的附加指令確保版本標(biāo)識(shí)修改寄存器包含表示所述版本標(biāo)識(shí)寄存器將接受寫的值。
14.如權(quán)利要求13所述的機(jī)器可讀介質(zhì),其上存儲(chǔ)有被執(zhí)行時(shí)執(zhí)行下述步驟的附加指令在所述版本標(biāo)識(shí)修改寄存器中置入表示所述版本標(biāo)識(shí)寄存器將不接受寫的值,其中,所述在所述版本標(biāo)識(shí)修改寄存器中置入值發(fā)生在用表示所述第一設(shè)備版本步進(jìn)的版本標(biāo)識(shí)值替換所述當(dāng)前版本標(biāo)識(shí)值之后。
15.一種其上存儲(chǔ)有指令的機(jī)器可讀介質(zhì),所述指令當(dāng)被計(jì)算機(jī)系統(tǒng)執(zhí)行時(shí)使得所述計(jì)算機(jī)系統(tǒng)執(zhí)行包括下述步驟的方法執(zhí)行前操作系統(tǒng)軟件代理,所述前操作系統(tǒng)軟件代理用于確定是否要修改存儲(chǔ)在版本標(biāo)識(shí)寄存器中的值;修改存儲(chǔ)在所述版本標(biāo)識(shí)寄存器中的值;以及加載操作系統(tǒng)。
16.如權(quán)利要求15所述的機(jī)器可讀介質(zhì),其中,確定是否要修改存儲(chǔ)在所述版本標(biāo)識(shí)寄存器中的值包括確定存儲(chǔ)在所述版本標(biāo)識(shí)寄存器中的值是否表示第一設(shè)備版本步進(jìn)。
17.如權(quán)利要求16所述的機(jī)器可讀介質(zhì),其中修改存儲(chǔ)在所述版本標(biāo)識(shí)寄存器中的值包括如果存儲(chǔ)在所述版本標(biāo)識(shí)寄存器中的值不表示所述第一設(shè)備版本步進(jìn),則用表示所述第一設(shè)備版本步進(jìn)的值來(lái)替換存儲(chǔ)在所述版本標(biāo)識(shí)寄存器中的值。
18.一種系統(tǒng),包括處理器;以及耦合到所述處理器的系統(tǒng)邏輯設(shè)備,所述系統(tǒng)邏輯設(shè)備包括使得可修改版本標(biāo)識(shí)寄存器內(nèi)容的版本標(biāo)識(shí)寄存器。
19.如權(quán)利要求18所述的系統(tǒng),其中所述系統(tǒng)邏輯設(shè)備還包括版本標(biāo)識(shí)修改寄存器,其中,當(dāng)所述版本標(biāo)識(shí)修改寄存器的內(nèi)容指示允許修改所述版本標(biāo)識(shí)寄存器內(nèi)容時(shí),所述版本標(biāo)識(shí)寄存器使得可修改所述版本標(biāo)識(shí)寄存器內(nèi)容。
20.如權(quán)利要求19所述的系統(tǒng),其中所述版本標(biāo)識(shí)修改寄存器包括單個(gè)的位,所述位的狀態(tài)表示當(dāng)前是否可修改所述版本標(biāo)識(shí)寄存器的內(nèi)容。
21.如權(quán)利要求20所述的系統(tǒng),其中所述版本標(biāo)識(shí)修改寄存器的值“1”表示所述版本標(biāo)識(shí)寄存器將接受寫到所述版本標(biāo)識(shí)寄存器的任意值。
22.如權(quán)利要求21所述的系統(tǒng),其中所述版本標(biāo)識(shí)修改寄存器的值“0”表示所述版本標(biāo)識(shí)寄存器將忽略對(duì)所述版本標(biāo)識(shí)寄存器的任何寫。
全文摘要
修改版本標(biāo)識(shí)寄存器的內(nèi)容的實(shí)施例包括既可讀又可寫的版本標(biāo)識(shí)寄存器(該版本標(biāo)識(shí)寄存器的內(nèi)容是可修改的)。還包括版本標(biāo)識(shí)修改位。只有當(dāng)版本標(biāo)識(shí)修改位被設(shè)置成表示將可接受對(duì)版本標(biāo)識(shí)寄存器的寫時(shí),才可修改版本標(biāo)識(shí)寄存器的內(nèi)容。
文檔編號(hào)G06F9/445GK1610894SQ02826466
公開日2005年4月27日 申請(qǐng)日期2002年12月6日 優(yōu)先權(quán)日2001年12月31日
發(fā)明者拉杰韋·納拉瓦蒂, 法拉·西迪基 申請(qǐng)人:英特爾公司