專利名稱:用于識別硬件兼容性與啟用穩(wěn)定軟件鏡像的方法和裝置的制作方法
技術領域:
在此公開了一種方法和裝置,用于識別硬件和軟件版本之間的兼容性,并用于簡化不同版本(revision)的硬件和軟件的不同組合的使用。
背景技術:
為了提高復雜電子設備包括計算機的易用性,近年來越來越多地使用軟件可讀寄存器來提供用于標識特定硬件組件的信息。這一信息的標識一般包括硬件版本信息,例如制造版本和設計級別,它們通常利用具有某種形式的二進制值來標識,包括用作為標識代碼的數(shù)字。
同樣為了提高易用性,近年來的操作系統(tǒng)以及其他控制這種復雜電子設備的操作的軟件越來越多地使用讀取寄存器,這些寄存器提供硬件版本信息(例如二進制值)以確保已經安裝了支持當前硬件版本所需的軟件版本。這一操作經常如下來完成,即檢查存在必需的硬件驅動器版本,其中操作系統(tǒng)需要這些驅動器版本以與特定的硬件設備通信并適當?shù)乩迷撚布O備的功能。如果這些操作系統(tǒng)發(fā)現(xiàn)需要軟件(例如設備驅動器)的某種版本,但這種版本又不存在以供使用,那么,這些操作系統(tǒng)就經常被設計為向用戶顯示一條消息,要求獲得必需的軟件。
這些用來提高易用性的措施已經獲得了一些有益效果。沒有這些措施的話,用戶(或向用戶提供支持的技術人員)就必需親自采取一些步驟來確保已經提供了支持任何給定電子設備中的特定硬件組件所需的軟件。這經常需要用戶或技術人員對硬件組件和對應軟件了解到相當詳細的水平。但是,這些用于提高易用性的措施已經使得用戶不需要具有如此詳細的知識,在許多情形下,使得許多用戶不需要嚴重地依賴于其他人提供的支持。
然而,這些用于提高易用性的措施對這種硬件組件和軟件的也附加了以前不存在的復雜性。隨著時間的過去,由于硬件的老化或被使用,各種硬件組件會磨損或需要替換。通??赡苄枰獙⑴f的硬件組件替換為在設計和功能上的許多方面基本相似的新組件,以使得用新硬件組件替換舊硬件組件時不需要用戶或技術人員提供以前不存在的任何軟件。然而,隨著時間的過去,制造商通常不會繼續(xù)制造完全相同的硬件組件而不做任何改變。硬件制造商會隨著時間過去而對硬件設計做出改進或改變,即使這種改變可能僅僅是為了降低制造成本、降低功耗、減小物理尺寸,或不需要安裝新軟件以使用新硬件等多種其他可能的改變之一。不幸的是,由于制造商做出了這種改進,經常需要改變包含在軟件所讀取的寄存器中的一個或多個值,以反映所述硬件代表了一種新的硬件版本,從而反映出已經做出了所述的改進。
盡管需要使軟件可讀寄存器反映出特定硬件組件代表了比被替換的硬件組件來得要新的硬件版本,但是這經常會導致軟件讀取這些寄存器,發(fā)現(xiàn)版本改變的指示,然后要求用戶或技術人員安裝較新的軟件版本以支持新的硬件版本,而不管是否真的需要新軟件以使新硬件組件正確地工作。也就是說,在用戶安裝了新硬件組件以替換較舊的、已被發(fā)現(xiàn)出現(xiàn)故障的硬件組件之后,用戶就會碰到操作系統(tǒng)提供的一條消息,表明必須安裝新軟件,盡管新硬件組件在功能上與它所替換的硬件組件相同。
這已經證明對用戶來說很不方便,而對于公司或其他大型機構來說,盡管它們有專門的人員來支持機構內的許多用戶,由于有許多用戶都碰到了提供不必要的軟件的請求,要滿足如此多用戶的需求,考慮到時間或其他需要花費的資源,代價也非常可觀。
對于本領域技術人員來說,閱讀了下面的詳細描述后,下面將要求保護的本發(fā)明的目的、特征和優(yōu)點將會清楚,其中圖1a和1b是一個提供硬件版本信息的實施方案的寄存器地址映射和示意圖。
圖2的方框圖示出了與計算機系統(tǒng)交互的硬件組件的實施方案。
圖3a和3b的方框圖示出了計算機系統(tǒng)的實施方案。
圖4的流程圖示出了用于選擇標識硬件版本的值的方法。
具體實施例方式
盡管在下面的描述中給出了大量的具體細節(jié)以透徹地理解本發(fā)明,但是對于本領域技術人員來說很清楚這些具體細節(jié)對于實施下面要求保護的本發(fā)明來說并不是必需的。
在此公開了一種方法和裝置,用于識別硬件和軟件版本之間的兼容性,并用于簡化不同版本的硬件和軟件的不同組合的使用。具體地說,一個實施方案涉及從多個寄存器中選擇一個值,該值將用于標識硬件組件的版本,以提高利用特定軟件時該硬件組件的易用性。然而,盡管多個實施方案是參考存儲在寄存器中并從寄存器讀取的值來描述的,但是下面要求保護的本發(fā)明還包括其他方法,所述方法用于存儲并讀取值或其他形式的標識,所述值或標識用于指定硬件組件的版本。
圖1a和1b分別示出了用寄存器提供硬件版本信息的實施方案的地址映射和示意圖。地址映射100a示出了少量寄存器的地址位置,這些寄存器將被軟件用來標識一個硬件組件,邏輯100b是該硬件組件的一部分。具體地說,本領域技術人員將會認識到,地址映射100a示出了一種硬件組件的地址位置的組織方式,其遵從公知公用的外圍部件互連或“PCI”總線的規(guī)范。地址00h處的供應商ID寄存器130將由軟件讀取,以提供一個16位二進制值,標識硬件組件的制造商。地址02h處的設備ID寄存器132用于提供一個16位二進制值,標識出該硬件組件是什么。版本ID寄存器126提供一個8位二進制值,標識該硬件組件的版本級別。當然,這些具體位尺寸只是提供來作為示例以便于討論,而不是限制性的。
邏輯100b用來選擇版本ID的值,所述版本ID的值將由軟件從版本ID寄存器126讀取,以標識邏輯100b作為其一部分的硬件組件的版本級別。標識邏輯100b作為其一部分的硬件組件的實際版本級別的值由步進版本(stepping revision)ID寄存器122保持。標識出硬件組件具有足夠的兼容性以運行類似軟件的硬件版本級別的值由兼容版本(compatible revision)ID寄存器124保持。步進版本ID寄存器122和兼容版本ID寄存器124都耦合到多路復用器120的輸入端,多路復用器120的輸出端耦合到版本ID寄存器126。一次寫寄存器110和安全密鑰值寄存器112耦合到比較器114的輸入端,比較器114的輸出端耦合到多路復用器120的選擇輸入端。
在本實施方案中,可以任意多種的可能方式將一個值寫入一次寫寄存器110中,比較器114然后將該值與安全密鑰值寄存器112所保持的安全密鑰進行比較。如果兩個值匹配,則比較器114的輸出發(fā)生改變,以向多路復用器120發(fā)出信號,以從提供由步進版本ID寄存器保持的值改變?yōu)樘峁┯杉嫒莅姹綢D寄存器提供的值,其中步進版本ID寄存器提供的值是以后軟件能夠從版本ID寄存器126讀取的值(在本實施方案中是默認的)。如一次寫寄存器110的名稱所暗示的那樣,一次寫寄存器110被設計為在邏輯100b作為其一部分的硬件組件的正常操作期間只被寫入一次。這一限制是安全規(guī)范的一部分,其只提供一次改變軟件以后能夠從版本ID寄存器126讀取的值的機會。如果寫入到一次寫寄存器110的值與安全密鑰值寄存器112保持的值不匹配,則喪失了改變軟件以后能夠從版本ID寄存器126讀取的值的機會。
根據(jù)邏輯100b作為其一部分的硬件組件的設計,只要重置該硬件組件以初始化該硬件組件以作正常使用時,都可重置多路復用器120,以將保持在步進版本ID寄存器122中的值提供給讀取版本ID寄存器126的軟件。也可以如下進行,即重置硬件組件以作正常使用時將會更新一次寫寄存器110提供的那一次機會,其中可借這次機會來改變軟件將能從版本ID寄存器126讀取的值。而且,雖然可有任何多種的方式來向一次寫寄存器110寫一個值,但在本實施方案的一個變體中,該值向一次寫寄存器110的寫入發(fā)生在軟件實際向版本ID寄存器126寫一個值時。
本領域技術人員將會容易地理解到,可使用很多種可能的方式來實現(xiàn)安全密鑰值寄存器112、步進版本ID寄存器122和兼容版本ID寄存器124,以及向這些寄存器提供各自保持的值。這些方式包括但不局限于硬布線、使用只讀存儲器件、在邏輯100b作為其一部分的硬件組件的正常使用前的某個時刻由其他軟件進行預編程、或通過安裝在電路板上的電阻器來選擇性地將集成電路的引腳設置為高或低電壓,等等。具體地說,兼容版本ID寄存器124可被實現(xiàn)為可由軟件進行寫的寄存器,或非易失性可重編程存儲器件,其可由用戶(或技術人員)通過軟件工具進行重編程。
而且,本領域技術人員將會理解到,對于選擇將提供給讀取版本ID寄存器126的軟件的值來說,可以有許多種可能的方式用來限制這種選擇所需的訪問權限,使用安全密鑰值以及伴隨的安全密鑰值寄存器112只是其中之一。具體地說,可以有一個軟件,允許其進行所述選擇并進行這種選擇,而另一個軟件只可讀取已作出的選擇。允許一個軟件具有做出選擇所需的訪問權限,而另一個軟件則不具有這一訪問權限,這樣的方式可以是一種硬件設計,其防止所述另一個軟件具有訪問權限、OS分配的許可(由此所述的一個軟件則運行在比所述另一個軟件較高的特權級別上),或者具有其他方式。也可以如下進行,即所述一個軟件運行在與所述另一個軟件不同的處理器上。具體地說,所述一個軟件可以運行在一個獨立的微控制器上,該微控制器用于配置計算機系統(tǒng)的硬件組件,這一配置可以是使所述硬件組件就緒于被其他軟件所正常使用的操作的一部分。
另外,本領域技術人員將可理解到,對處理器可從版本ID寄存器126讀取的值選擇的鎖存可以任何多種的方式執(zhí)行。具體地說,上述討論集中在使用一次性寄存器來同時鎖存一個值并提供該值用于和安全密鑰值寄存器112保持的安全密鑰進行比較。對寫入到一次寫寄存器110的值的這一鎖存意味著一次寫寄存器110提供給比較器114的值在被鎖存后就保持恒定,使得將比較器114到多路復用器120的輸出保持恒定,從而有效地“鎖存”了從版本ID寄存器126讀取的值選擇。然而,也可以將比較器114的輸出在到達多路復用器120之前傳遞通過鎖存器(未示出),以使得可鎖存比較器114的輸出本身。這可能是對鎖存寫入其中的多位值的一次寫寄存器110的一種所希望的替換方案,以降低總體電路復雜程度。
雖然圖1a和1b所示的實施方案具體來說遵從于PCI總線需求,但對本領域技術人員來說很清楚要求保護的本發(fā)明并不局限于此,可以有一些實施方案用于其他總線標準或完全不同的形式的硬件。
圖2示出了一個實施方案的方框圖,其示出了計算機系統(tǒng)和其一個硬件組件之間的交互。硬件組件200是計算機系統(tǒng)250的組件,并且可由計算機系統(tǒng)250的用戶或支持這一用戶的技術人員通過總線連接器288之一連接到計算機系統(tǒng)250的其余部分。硬件組件200包括版本ID寄存器226,其可具有由步進版本ID寄存器222或兼容版本ID寄存器224提供的值。硬件組件200還可包括存儲了初始化軟件228的固態(tài)設備。
在硬件組件200之外,計算機系統(tǒng)250還包括處理器259,其根據(jù)計算機系統(tǒng)250的設計目標或預期目標,可耦合到存儲器控制器260、I/O控制器270、總線控制器280和圖形控制器290中的一個或多個。存儲器控制器260還耦合到存儲器268,I/O控制器270還耦合到包括鍵盤278和/或鼠標279在內的一個或多個I/O設備,總線控制器280還耦合到總線連接器288,而圖形控制器290還連接到顯示器298。而且,計算機系統(tǒng)250還可包括初始化軟件258。
初始化軟件228和/或258可存儲在某種形式的固態(tài)設備中,例如ROM(只讀存儲器)設備、EPROM(可擦除可編程只讀存儲器)設備或其他可重寫存儲器設備例如閃存設備或需要電池備份的非易失性存儲器設備例如RAM(隨機訪問存儲器)設備。或者,初始化軟件228和/或258可以存儲在多種可用的盤、磁帶或其他形式的機器可訪問介質中的任意之一中。
在給定的時刻,例如當給計算機系統(tǒng)250加電時,當重置計算機系統(tǒng)250時,和/或當改變計算機系統(tǒng)250的硬件組件的配置時(可能是由于添加或卸載一個硬件組件例如硬件組件200),執(zhí)行初始化軟件258以檢查計算機系統(tǒng)250就緒于正常使用和/或使計算機系統(tǒng)250準備進行正常使用。初始化軟件258可使得處理器259查詢一個或多個硬件組件的存在或狀態(tài),和/或使得處理器259執(zhí)行一種或多種測試。
在所述實施方案的一種變體中,軟件258使得處理器259(或計算機系統(tǒng)250內的可能的某個其他處理器)檢測硬件組件200的存在,并且可能已經被編寫為與硬件組件200交互。如果真的將初始化軟件編寫為專門與硬件組件200交互,則可將初始化軟件258編寫為在步進版本ID寄存器222或兼容版本ID寄存器224之間進行選擇,以提供后面將可從版本ID寄存器226讀取的值。初始化軟件258然后使得處理器259(或另一個處理器)訪問控制在硬件組件200內進行這一值選擇的邏輯,這時可使用與對圖1b的邏輯100b詳細描述的那樣類似的方法,或使用多種其他可能方法中的任何一種。
在所述實施方案的一種變體中,包含在硬件組件200中的初始化軟件228被編寫為與硬件組件200交互,并可能已經被編寫為在步進版本ID寄存器222和兼容版本ID寄存器224之間進行選擇,以提供后面將可從版本ID寄存器226讀取的值。如果是的話,則初始化軟件228使得處理器259(或另一個處理器)訪問控制硬件組件200內進行這一值選擇的邏輯,這時可使用與對圖1b的邏輯100b詳細描述的那樣類似的方法,或使用多種其他可能方法中的任何一種。
無論是初始化軟件228還是258進行后面將從版本ID寄存器226讀取的值的選擇,實際的值選擇都可能依賴于多種可能因素中的任意一種。在一個實施方案中,對于創(chuàng)建初始化軟件228或初始化軟件258的人來說,可能已知涉及特定操作系統(tǒng)或其他軟件的問題會相當頻繁地發(fā)生在下述時候,即當從來自步進版本ID寄存器222或兼容版本ID寄存器224的值當中選擇一個或另一個值時。因此,創(chuàng)建初始化軟件228或初始化軟件258的人可能如下安排初始化軟件228或258,以使得或者以某種方式限制值的選擇,或者完全防止選擇已知會引發(fā)所述問題的值。這可以如下實現(xiàn),即或者將優(yōu)選的選擇“硬編碼”到初始化軟件228或258中,或者至少將優(yōu)選的選擇設置為默認的。
在另一個實施方案中,初始化軟件228或初始化軟件258可能向計算機系統(tǒng)250的用戶(或支持這一用戶的技術人員)提供了某種方式,用于根據(jù)計算機系統(tǒng)250通常會使用哪種操作系統(tǒng)或其他軟件來選擇一個值。在這一實施方案中,初始化軟件228或258可使得處理器259(或某個其他處理器)提供某種形式可通過圖形控制器290或顯示器298觀看到的屏幕菜單,用戶或技術人員可通過這一菜單來進行所述選擇。如果有多種可能的操作系統(tǒng)或其他軟件,用戶或技術人員可能選擇來將之安裝在計算機250上,則這種方法可能是所期望的。一些操作系統(tǒng)和其他軟件可能變得不穩(wěn)定或出現(xiàn)故障,或者在選擇特定的一個可用值時不希望地請求獲得新驅動器軟件版本,但是,可能可通過選擇另一個值來防止這些問題。情況也可能是這樣的,即用戶或技術人員可能已經用硬件組件200替換了較舊的硬件組件,硬件組件200被設計成可以與較舊的硬件組件相同的方式來使用,并且即使不替換與較舊的硬件組件一起使用的軟件的情況下也可使用硬件組件200,只要選擇這樣的一個值,其使得硬件組件200或者將與較舊的硬件組件提供的值相同的值提供給所述軟件,或者至少提供這樣的一個值,其可以避免向用戶或技術人員請求獲得不同版本的軟件或避免其他不希望的結果。
在另一個實施方案中,當用戶或技術人員的選擇被允許時,用戶可能已經用硬件組件200替換了較舊的硬件組件,并且硬件組件200提供了與被替換的較舊的硬件組件不同或更廣泛的能力。但是,用戶或技術人員可能不希望使用這些不同或更廣泛的能力,并且可能僅僅希望以與較舊的硬件組件相同的方式來使用硬件組件200,因此,可能希望選擇這樣的一個值,其使得硬件組件200或者將與較舊的硬件組件提供的值相同的值提供給所述軟件,或者至少提供這樣的一個值,其可以避免向用戶或技術人員請求獲得不同版本的軟件或避免其他不希望的結果。
例如當硬件組件200是正在被安裝以取代較舊的100Mbit/sec網卡的1Gbit/sec網卡時,或者當硬件組件200是正在被安裝以取代只有立體聲的聲卡的環(huán)繞聲聲卡時,可能期望向用戶或技術人員提供值選擇,其在被操作系統(tǒng)或其他軟件查詢時將由版本ID寄存器226提供。情況可能是這樣,即被替換的較舊的網卡或聲卡的制造商只是不再制造較舊的板卡類型,并且這些板卡的較新的變體是目前可獲得的唯一類型,但是,計算機系統(tǒng)250的用戶(或該用戶的技術人員)可能僅僅是想安裝較新的硬件組件200以取代較舊的變體,并且僅僅是讓計算機繼續(xù)完全像以前那樣運行。因此,如果為版本ID寄存器226選擇一個匹配的值,或者在某個方面與由較舊的變體所提供的值等效的值,則可避免向操作系統(tǒng)或其他軟件給出這樣的提示,其表示現(xiàn)在出現(xiàn)了具有可能較新的能力的較新的硬件。
可能希望向用戶或技術人員提供值選擇的另一個特定的場合出現(xiàn)在下述情況下,即硬件組件200的制造商實際上在多個地點制造相同類型的軟件,但是由于不同地點的制造工藝或其他與功能無關的較為次要的細節(jié)中的差別,步進版本ID寄存器222提供的值不同??赡芷谕稍诙鄠€值中進行選擇,以使得硬件組件200的所有變體都能夠提供相同的值,而無論它們是在何處制造的。
而且,在這些實施方案的任意之一中,或者在其他實施方案中,可能有多于兩個的值可以選擇。具體地說,可能有多于一個的兼容版本ID寄存器224,其中每個兼容版本ID寄存器224可提供不同的值來用于不同的操作系統(tǒng)或軟件。
圖3a示出了計算機系統(tǒng)的實施方案的方框圖。以基本與圖2的計算機系統(tǒng)250對應的方式,計算機系統(tǒng)350包括處理器359,其根據(jù)計算機系統(tǒng)350的設計或預期目的,可耦合到存儲器控制器360、I/O控制器370、總線控制器380和圖形控制器390中的一個或多個。存儲器控制器360還耦合到存儲器368,I/O控制器370還耦合到包括鍵盤378和/或鼠標379在內的一個或多個I/O設備,總線控制器380還耦合到總線連接器388,而圖形控制器390還連接到顯示器398。但是,與計算機系統(tǒng)250不同的是,計算機系統(tǒng)350的處理器359和存儲器控制器中的之一或二者可具有帶可選擇值的版本ID寄存器。具體地說,如圖3所示,處理器359可具有版本ID寄存器356以及步進版本ID寄存器352和兼容ID寄存器354,并且類似地,存儲器控制器360可具有版本ID寄存器366以及步進版本ID寄存器362和兼容ID寄存器364。計算機系統(tǒng)350還可包括初始化軟件358。
與圖2的計算機系統(tǒng)250的情形相同,在計算機系統(tǒng)350中,初始化軟件358可存儲在固態(tài)設備中,例如ROM(只讀存儲器)設備、EPROM(可擦除可編程只讀存儲器)設備或其他可重寫存儲器設備例如閃存設備或需要電池備份的非易失性存儲器設備例如RAM(隨機訪問存儲器)設備。或者,初始化軟件358可以存儲在多種可用的盤、磁帶或其他基于存儲介質的設備的任意之一中。
在給定的時刻,例如當給計算機系統(tǒng)350加電時,當重置計算機系統(tǒng)350時,和/或當改變計算機系統(tǒng)350的硬件組件的配置時(可能是由于添加或卸載一個硬件組件),執(zhí)行初始化軟件358以檢查計算機系統(tǒng)350就緒于正常使用和/或使計算機系統(tǒng)350準備進行正常使用。初始化軟件358可使得處理器359查詢一個或多個硬件組件的存在或狀態(tài),和/或使得處理器359執(zhí)行一種或多種測試。
初始化軟件358可使得處理器359(或計算機系統(tǒng)350內的可能的某個其他處理器)檢測特定版本的處理器359和/或存儲器控制器360的存在。初始化軟件358可能已被編寫為在處理器359的步進版本ID寄存器352或兼容版本ID寄存器354之間進行選擇,以提供后面將可從版本ID寄存器356讀取的值,或者在存儲器控制器360的步進版本ID寄存器362或兼容版本ID寄存器364之間進行選擇,以提供以后將可從版本ID寄存器366讀取的值。初始化軟件358然后使得處理器359(或另一個處理器)訪問控制在這些值間進行選擇的邏輯,并適當?shù)刈鞒鲞x擇。
與圖2的計算機系統(tǒng)250的情形相同,隨后將可從版本ID寄存器356和/或366讀取的值的實際選擇可能依賴于多種可能因素中的任意一種。這些因素可能是與初始化軟件358的創(chuàng)建者對選擇或不選擇特定值時可能出現(xiàn)的問題或故障有關的知識,或者可能是由用戶或支持用戶的技術人員作出的選擇。如前對圖2的初始化軟件228或258的討論那樣,初始化軟件358可使用戶或技術人員在多種值中進行選擇,并且這一值選擇可借助于通過圖形控制器390和/或顯示器398而顯示的菜單來提供,或通過多種其他可能的方式中的任意之一來提供。
如果組件中發(fā)生故障,或者甚至只是希望用比以前安裝的處理器要快的處理器359來升級計算機系統(tǒng)350,都會產生這樣一種情形,其中引入了一個新的硬件組件,其具有的步進版本ID寄存器帶有不同于被替換的較舊的硬件組件的值,但是,可能希望操作系統(tǒng)或其他特定軟件不知道硬件組件中發(fā)生的所述改變。情況可能如下,即安裝了一個較快的處理器359,其還提供了指令集的附加部分或其他功能,但是出于各種原因,用戶或技術人員不想使用這些附加部分或其他功能,因此,用戶或技術人員可決定選擇這樣一個隨后可從版本ID寄存器356讀取的值,其類似于較舊的處理器所提供的值。組件中發(fā)生故障可能需要安裝新的存儲器控制器360來替換較舊的那一個,但是由于存儲器控制器360的制造商可能已經縮小了管芯尺寸或作出了某種其他的改變,這一改變以某種方式影響了存儲器控制器360與它所替換的那一個相比較而言的工作方式,因此,存儲器控制器360可能會在版本ID寄存器366中向操作系統(tǒng)或其他軟件提供這樣一個版本ID值,其使得操作系統(tǒng)或其他軟件變得不穩(wěn)定或不能工作,或者請求獲得軟件更新或另一個版本的軟件,除非選擇一個不同的值。
提供從版本ID 356或366之一或二者可讀取的值中進行選擇的一種特定場合是當計算機系統(tǒng)350是在公司等場合中使用的大量計算機中的一個時。預期在這一地點中使用的計算機(包括計算機系統(tǒng)350)都從同一來源購買,具有相同的配置,但是,至少在步進版本ID寄存器所提供的值在任何情況下都要使用的情況下,隨著時間的過去,由于這些計算機中使用一個或多個組件的制造商作出的較小的改進,這些計算機的一個或多個組件的版本ID值可能不完全相同。這樣的話,如果想在整個地點中都使用由每個軟件的特定版本構成的一組公共軟件,則會發(fā)生困難??赡苄枰軌蛟谶@些計算機中的至少一些當中,選擇來自一個或多個組件的兼容版本ID寄存器的值,以可使用這一組公共軟件。
圖3b示出了具有計算機系統(tǒng)形式的另一個實施方案的方框圖。具體地說,圖3b的計算機系統(tǒng)350與圖3a的計算機系統(tǒng)350基本相同,除了添加了第二處理器即處理器357之外。處理器357用于輔助于對計算機系統(tǒng)350的功能的配置和/或監(jiān)控。處理器357可實現(xiàn)為微控制器,其在單個集成電路中包含一定量的存儲器,其中包含其自身的初始化代碼。處理器357可具有一個或多個通信端口,其用于將計算機系統(tǒng)350的工作狀態(tài)中繼轉發(fā)到計算機系統(tǒng)350外部的設備,所述設備可能包括集中式的監(jiān)控計算機系統(tǒng)。
在這一實施方案中,可通過處理器357自身的初始化代碼來使得處理器357檢測特定版本的處理器359和/或存儲器控制器360的存在。處理器357然后可在處理器359的步進版本ID寄存器352或兼容版本ID寄存器354之間進行選擇,以提供隨后可從版本ID寄存器356讀取的值,和/或在存儲器控制器360的步進版本ID寄存器362或兼容版本ID寄存器364之間進行選擇,以提供隨后將可從版本ID寄存器366讀取的值。處理器357然后使得所選擇的值可由處理器359隨后執(zhí)行的軟件通過版本ID寄存器356和/或366來讀取。
在這樣的實施方案中,另一個處理器例如處理器357可訪問為版本ID寄存器356和/或366選擇值而所需的邏輯,所述邏輯可被設計或以其他方式配置成不可被處理器359訪問。而且,處理器357可直接、或通過處理器359所使用的邏輯間接訪問圖形控制器390,以向計算機系統(tǒng)350的用戶或支持這一用戶的技術人員提供一個機會,用于借助于屏幕菜單或其他方式來選擇通過版本ID寄存器356和/或366可讀的值。
雖然處理器359和存儲器控制器360在圖3a和3b中被示出為具有版本ID寄存器、步進版本ID寄存器和兼容版本ID寄存器,但是本領域內的技術人員將會容易地認識到這些可選擇的方案是被提供來用于討論的。具體地說,本領域內的技術人員將會容易地認識到,在存在于處理器359和/或存儲器控制器360中的這些特征之外(或取代于這些特征),還可向計算機系統(tǒng)350的其他組件提供附加特征。
圖4示出了一個初始化軟件所采取的初始化方式的實施方案的流程圖。在410,給計算機系統(tǒng)加電或重置該計算機系統(tǒng),且在412,一個初始化軟件開始由處理器執(zhí)行。在420,初始化軟件使得處理器定位版本ID寄存器,而在422,使得處理器加載一個指示(或者自身硬編碼在初始化軟件內,或從其他源加載),該指示表明了與是否應使用保持在步進版本ID寄存器中的值有關的選擇。如果在430要使用步進版本ID寄存器中的值,并且如果在440不需要任何動作來使得步進版本ID寄存器中的值可用,則初始化軟件不使得處理器采取任何與版本ID的值有關的進一步動作。但是,如果在440需要動作來使得步進版本ID寄存器中的值可用,則初始化軟件在442采取附加的動作。如果在430不應使用保持在步進版本ID寄存器中的值,則應使用來自兼容版本ID寄存器中的值,并且在450采取使得兼容版本ID寄存器中的值可用的動作。
在一個實施方案中,情況可能是這樣,即在442或450,必須將一個安全密鑰值寫到寄存器中以使得能選擇預期的值,可通過與參考圖1描述的方式類似的方式來進行這一操作?;蛘?,可使用其他安全性方式,以確保只有初始化軟件才能夠實現(xiàn)這樣的值的選擇,所述的值將可從版本ID寄存器讀取。
已結合優(yōu)選實施方案描述了本發(fā)明。很清楚,對于本領域內的技術人員來說,考慮到前面的描述,很明顯存在大量可替換方案、修改、變體和使用方式。本領域內的技術人員將會理解到,將要求保護的發(fā)明可被實施來支持對包括但不局限于計算機系統(tǒng)的數(shù)字電子系統(tǒng)的各種組件的版本的識別,雖然對實施方案的描述涉及寄存器的使用,并將步進版本ID值用作為默認值,但是本領域內的技術人員將會認識到可使用其他形式的硬件來保存、存儲和/或提供值或其他形式的版本級別標識,并且可將版本ID值的其他變體來作為將要使用的默認值,除非用戶、支持用戶的技術人員或某種形式的軟件采取了某種相反的動作。另外,雖然對實施方案的描述集中于對用于描述硬件組件的版本級別的值的選擇上,但是對這些實施方案而討論的方法還可應用于硬件組件的標識的其他方面,包括但不局限于設備ID值和/或設備ID寄存器。
權利要求
1.一種裝置,包括可由處理器讀取的版本ID寄存器;步進版本ID寄存器,用于維護表明第一硬件組件的實際步進版本級別的值;至少一個兼容版本ID寄存器,用于維護表明第二硬件組件的步進版本級別的值,所述第二硬件組件可與所述第一硬件組件用于同一個軟件;以及選擇邏輯,用于使得能從所述步進版本ID寄存器或所述至少一個兼容版本ID寄存器中之一中選擇一個值,所選擇的值可由所述處理器讀取。
2.如權利要求1所述的裝置,還包括存儲設備,用于存儲包括初始化軟件的指令,其中所述選擇邏輯響應于執(zhí)行所述指令的所述處理器。
3.如權利要求1所述的裝置,其中所述選擇邏輯包括集成電路內的多路復用器,并且所述步進版本ID寄存器包括所述集成電路內的至少一個硬布線連接,所述硬布線連接將所述多路復用器的至少一個輸入端連接到至少一個電壓電平,以提供表明所述第一硬件組件的實際步進版本級別的所述值。
4.如權利要求3所述的裝置,其中所述至少一個兼容版本ID寄存器中的一個包括包容所述集成電路的封裝的至少一個引腳,所述引腳被連接到至少一個電壓電平以提供所述第二硬件組件的步進版本級別。
5.如權利要求1所述的裝置,其中所述版本ID寄存器可由所述處理器讀取的地址與所述版本ID寄存器被指定來用于PCI總線的地址位置相一致。
6.如權利要求1所述的裝置,其中所述步進版本ID寄存器中維護的實際步進版本級別表明所述第一硬件組件提供了由所述第二硬件組件所提供的之外的至少一種附加功能,并且所述至少一種附加功能對于將與所述第二硬件組件一起使用的一個軟件用于所述第一硬件組件來說不是必需的。
7.如權利要求1所述的裝置,其中所述選擇邏輯包括用于維護安全密鑰值的安全密鑰值寄存器,并包括一次寫寄存器,其中必須使得所述處理器通過初始化軟件向所述一次寫寄存器中寫入一個與所述安全密鑰值相匹配的值,以使得能由所述第一處理器控制所述選擇邏輯。
8.一種計算機系統(tǒng),包括處理器;耦合到該處理器的存儲器;耦合到該處理器的圖形控制器;存儲包含初始化軟件的指令的存儲設備;可由該處理器讀取的版本ID寄存器;步進版本ID寄存器,用于維護表明第一硬件組件的實際步進版本級別的值;至少一個兼容版本ID寄存器,用于維護表明第二硬件組件的步進版本級別的值,所述第二硬件組件可與所述第一硬件組件用于同一個軟件;以及選擇邏輯,用于使得能從所述步進版本ID寄存器或所述至少一個兼容版本ID寄存器中之一中選擇一個值,所選擇的值可由所述處理器讀取。
9.如權利要求8所述的計算機系統(tǒng),其中所述選擇邏輯響應于執(zhí)行所述初始化軟件的指令的所述處理器。
10.如權利要求8所述的計算機系統(tǒng),其中所述選擇邏輯包括集成電路內的多路復用器,并且所述步進版本ID寄存器包括所述集成電路內的至少一個硬布線連接,所述硬布線連接將所述多路復用器的至少一個輸入端連接到至少一個電壓電平,以提供表明所述第一硬件組件的實際步進版本級別的所述值。
11.如權利要求10所述的計算機系統(tǒng),其中所述至少一個兼容版本ID寄存器中的一個包括包容所述集成電路的封裝的至少一個引腳,所述引腳被連接到至少一個電壓電平以提供所述第二硬件組件的步進版本級別。
12.如權利要求8所述的計算機系統(tǒng),其中所述版本ID寄存器可由所述處理器讀取的地址與所述版本ID寄存器被指定來用于PCI總線的地址位置相一致。
13.如權利要求8所述的計算機系統(tǒng),其中所述步進版本ID寄存器中維護的實際步進版本級別表明所述第一硬件組件提供了由所述第二硬件組件所提供的之外的至少一種附加功能,并且所述至少一種附加功能對于將與所述第二硬件組件一起使用的一個軟件用于所述第一硬件組件來說不是必需的。
14.如權利要求8所述的計算機系統(tǒng),其中所述選擇邏輯包括用于維護安全密鑰值的安全密鑰值寄存器, 并包括一次寫寄存器,其中必須使得所述處理器通過初始化軟件向所述一次寫寄存器中寫入一個與所述安全密鑰值相匹配的值,以使得能由所述處理器控制所述選擇邏輯。
15.如權利要求8所述的計算機系統(tǒng),其中所述第一硬件組件結合在所述處理器內。
16.一種計算機系統(tǒng),包括第一處理器;第二處理器;耦合到所述第一和第二處理器的圖形控制器;存儲包含初始化軟件的指令的存儲設備;可由所述第一處理器讀取的版本ID寄存器;步進版本ID寄存器,用于維護表明第一硬件組件的實際步進版本級別的值;至少一個兼容版本ID寄存器,用于維護表明第二硬件組件的步進版本級別的值,所述第二硬件組件可與所述第一硬件組件用于同一個軟件;以及可由所述第二處理器訪問的選擇邏輯,用于使得能從所述步進版本ID寄存器或所述至少一個兼容版本ID寄存器中之一中選擇一個值,并使得該值可由所述第一處理器從所述版本ID寄存器讀取。
17.如權利要求16所述的計算機系統(tǒng),其中所述選擇邏輯由執(zhí)行所述初始化軟件的指令的所述第二處理器控制。
18.如權利要求16所述的計算機系統(tǒng),其中所述版本ID寄存器可由所述處理器讀取的地址與所述版本ID寄存器被指定來用于PCI總線的地址位置相一致。
19.如權利要求16所述的計算機系統(tǒng),其中所述第一硬件組件結合在所述第一處理器內。
20.一種方法,包括使用安全密鑰來獲得對選擇邏輯的訪問權限;使用所述選擇邏輯來從步進版本ID寄存器或至少一個兼容版本ID寄存器中之一中選擇一個值,所述步進版本ID寄存器用于維護表明第一硬件組件的實際步進版本級別的值,所述至少一個兼容版本ID寄存器用于維護表明第二硬件組件的步進版本級別的值,所述第二硬件組件可與所述第一硬件組件用于同一個軟件;以及使得所選擇的值在處理器通過版本ID寄存器讀取所選擇的值時可被該處理器讀取。
21.如權利要求20所述的方法,其中使用安全密鑰和使用所述選擇邏輯是由執(zhí)行存儲在機器可訪問介質上的初始化軟件的指令的所述處理器來實施的。
22.如權利要求20所述的方法,還包括拒絕一處理器訪問所述選擇邏輯,該處理器可執(zhí)行一個軟件的指令使用選擇邏輯去選擇值。
23.一種包含指令的機器可訪問介質,所述指令被機器的處理器執(zhí)行時使得該機器使用安全密鑰來獲得對選擇邏輯的訪問權限;使用所述選擇邏輯來從步進版本ID寄存器或至少一個兼容版本ID寄存器中之一中選擇一個值,所述步進版本ID寄存器用于維護表明第一硬件組件的實際步進版本級別的值,所述至少一個兼容版本ID寄存器用于維護表明第二硬件組件的步進版本級別的值,所述第二硬件組件可與所述第一硬件組件用于同一個軟件;以及使得所選擇的值在處理器后來通過版本ID寄存器讀取所選擇的值時可被該處理器讀取。
24.如權利要求23所述的機器可訪問介質,其中在所述選擇邏輯已被用于選擇值之后,拒絕所述處理器進一步訪問所述選擇邏輯。
全文摘要
一種用于選擇實際步進版本ID值或兼容版本ID值的方法,其中所述的值可以通過版本ID寄存器由處理器讀取。
文檔編號G06F13/14GK1678995SQ03819925
公開日2005年10月5日 申請日期2003年6月20日 優(yōu)先權日2002年6月28日
發(fā)明者杰弗里·拉伯, 艾伯托·馬丁內斯, 塞拉芬·加西亞, 杰基·溫賽爾 申請人:英特爾公司