硬件資源的周期性訪問的制作方法
【專利摘要】一種示例包括:通過計(jì)算機(jī)的固件中的指令對(duì)計(jì)算機(jī)的硬件資源進(jìn)行周期性的訪問,該指令由解釋器在沒有驅(qū)動(dòng)程序的操作系統(tǒng)環(huán)境下執(zhí)行。響應(yīng)于由計(jì)時(shí)器生成的周期性中斷,發(fā)生訪問。
【專利說明】硬件資源的周期性訪問
【背景技術(shù)】
[0001]計(jì)算機(jī)系統(tǒng)通常執(zhí)行操作系統(tǒng)。操作系統(tǒng)(“0S”)是一組計(jì)算機(jī)指令,該組計(jì)算機(jī)指令允許調(diào)用和運(yùn)行應(yīng)用程序、為這些程序提供服務(wù)以及管理計(jì)算機(jī)硬件資源及這些程序?qū)τ布Y源的訪問。
[0002]這些硬件資源中的一些可以內(nèi)置在計(jì)算機(jī)本身中(例如,在計(jì)算機(jī)的芯片組中或主板上)。這些資源中的一些由安裝在(或適于安裝在)操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)程序控制。這些驅(qū)動(dòng)允許操作系統(tǒng)和應(yīng)用程序訪問這些硬件資源,而不用詳細(xì)知道這些硬件資源是如何在計(jì)算機(jī)硬件體系結(jié)構(gòu)中實(shí)現(xiàn)的,計(jì)算機(jī)硬件體系結(jié)構(gòu)可能根據(jù)計(jì)算機(jī)型號(hào)不同而變化,甚至同一計(jì)算機(jī)供應(yīng)商的計(jì)算機(jī)型號(hào)不同而變化。
[0003]操作系統(tǒng)在便攜式計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)以及工作站計(jì)算機(jī)中,以及還在超級(jí)計(jì)算機(jī)、網(wǎng)頁服務(wù)器中以及在包括嵌入式處理器的大多數(shù)電子設(shè)備(包括移動(dòng)電話以及視頻游戲機(jī)等)中使用。如今在使用的有多種操作系統(tǒng),包括來自微軟的幾個(gè)版本的視窗、來自許多不同Linux提供商中每個(gè)Linux提供商的一個(gè)或多個(gè)版本的Linux以及其它操作系統(tǒng)。
[0004]每個(gè)計(jì)算機(jī)還包括固件,固件在該計(jì)算機(jī)通電時(shí)通過將操作系統(tǒng)加載到存儲(chǔ)器中來初始化(或“啟動(dòng)”)該計(jì)算機(jī)。此固件(通常稱作B1S (基本輸入/輸出系統(tǒng)))還將該計(jì)算機(jī)的硬件資源及特定輸入/輸出(“I/O”)功能提供給操作系統(tǒng)。固件通常適應(yīng)于計(jì)算機(jī)的硬件體系結(jié)構(gòu),使得其以工業(yè)標(biāo)準(zhǔn)的方式向操作系統(tǒng)提供其資源和功能。這樣的工業(yè)標(biāo)準(zhǔn)包括過去實(shí)際上B1S標(biāo)準(zhǔn)、像可擴(kuò)展固件接口(EFI)這樣的較新標(biāo)準(zhǔn)或其它標(biāo)準(zhǔn)。因此,盡管各種計(jì)算機(jī)型號(hào)之間的硬件體系結(jié)構(gòu)存在差異,但固件允許特定版本的操作系統(tǒng)的特定代碼發(fā)行版在各種不同型號(hào)的計(jì)算機(jī)上運(yùn)行。
【專利附圖】
【附圖說明】
[0005]圖1是根據(jù)本公開的示例的、具有在固件中駐留的方法代碼指令的計(jì)算機(jī)的示意圖,該方法代碼指令由操作系統(tǒng)環(huán)境下的解釋器執(zhí)行以訪問硬件資源。
[0006]圖2是根據(jù)本公開的示例的、具有在固件中駐留的方法代碼指令的另一計(jì)算機(jī)的示意圖,該方法代碼指令由操作系統(tǒng)環(huán)境下的解釋器執(zhí)行以訪問硬件資源,其中該計(jì)算機(jī)實(shí)現(xiàn)ACPI標(biāo)準(zhǔn)。
[0007]圖3是根據(jù)本公開的示例的、用于周期性地訪問計(jì)算機(jī)的硬件資源的方法的流程圖。
[0008]圖4是根據(jù)本公開的示例的、用于升級(jí)計(jì)算機(jī)以改進(jìn)對(duì)硬件資源的訪問的方法的流程圖。
[0009]圖5是根據(jù)本公開的示例的、可對(duì)圖1或圖2的計(jì)算機(jī)使用的計(jì)算機(jī)硬件體系結(jié)構(gòu)的示意圖。
【具體實(shí)施方式】
[0010]如在【背景技術(shù)】部分中提到的,盡管各種計(jì)算機(jī)型號(hào)之間的硬件體系結(jié)構(gòu)存在差異,但計(jì)算機(jī)中的固件允許特定版本的操作系統(tǒng)的特定代碼發(fā)行版在各種不同型號(hào)的計(jì)算機(jī)上運(yùn)行。固件還允許各種不同類型和版本的操作系統(tǒng)在同樣的計(jì)算機(jī)上運(yùn)行。例如,同樣型號(hào)的計(jì)算機(jī)能夠運(yùn)行微軟視窗XP、微軟視窗7、以及不同供應(yīng)商及組織的各種不同基于Linux的OS發(fā)行版中的任一種,以上全部支持用于訪問計(jì)算機(jī)的硬件資源的B1S標(biāo)準(zhǔn)。
[0011]但是,在許多情況下,是設(shè)備驅(qū)動(dòng)程序而不是B1S功能用于訪問硬件資源。在一些情況下,由于性能要求,可以選擇設(shè)備驅(qū)動(dòng)程序方式。一個(gè)這樣的情況是硬件訪問操作需要相對(duì)長的時(shí)間(例如,超過I至3毫秒)完成的情況。這樣的過久硬件訪問操作的一個(gè)示例是硬件資源的相對(duì)大塊的存儲(chǔ)器地址的讀和/或?qū)憽?br>
[0012]由于設(shè)備驅(qū)動(dòng)程序在OS環(huán)境下運(yùn)行,所以O(shè)S可以中斷該驅(qū)動(dòng)程序,以允許為在正執(zhí)行硬件訪問操作期間發(fā)生的更高優(yōu)先級(jí)事件提供服務(wù)。但是,固件不在OS環(huán)境下運(yùn)行,而是在不同環(huán)境下運(yùn)行。適用于包括例如英特爾、AMD以及英偉達(dá)(NVidia)芯片組在內(nèi)多種硬件的一種這樣的不同環(huán)境是系統(tǒng)管理模式(SMM),系統(tǒng)管理模式利用系統(tǒng)管理中斷(SIM)來暫時(shí)將計(jì)算機(jī)的完全控制轉(zhuǎn)移給固件。換句話說,在正執(zhí)行B1S功能以執(zhí)行硬件訪問操作時(shí),暫停OS。結(jié)果,只有在B1S功能的執(zhí)行已經(jīng)完成之后,才能為在B1S功能執(zhí)行期間發(fā)生的更高優(yōu)先級(jí)事件提供服務(wù)。結(jié)果,由于不能及時(shí)為這些更高優(yōu)先級(jí)事件提供服務(wù),所以計(jì)算機(jī)會(huì)發(fā)生故障。例如,可以能丟失網(wǎng)路業(yè)務(wù)分組,或者視頻或音頻播放器中的幀可能丟失,以及其它故障。因此,OS和B1S之間的執(zhí)行環(huán)境的差異限制了在B1S環(huán)境下執(zhí)行的固件代碼能夠用于訪問硬件資源的情況。為了避免硬件訪問功能或例程中的實(shí)時(shí)延遲影響,在設(shè)備驅(qū)動(dòng)程序中實(shí)現(xiàn)在OS環(huán)境下操作的上述代碼是可取的,這樣允許立即為在設(shè)備驅(qū)動(dòng)程序執(zhí)行期間發(fā)生的任意更高優(yōu)先級(jí)事件提供服務(wù)。例如,在上面討論的讀和/或?qū)懹布Y源的相對(duì)大塊存儲(chǔ)器地址的情況中,可以在讀和/或?qū)懴鄬?duì)大塊存儲(chǔ)器地址期間中途為更高優(yōu)先級(jí)事件提供服務(wù),該讀和/寫從其為更高優(yōu)先級(jí)事件提供服務(wù)而暫停時(shí)所離開的地址重新開始。
[0013]但是,基于驅(qū)動(dòng)程序的方法的缺點(diǎn)是其相對(duì)于基于固件的方法的復(fù)雜性。在最現(xiàn)代的計(jì)算機(jī)中,將固件代碼存儲(chǔ)在閃存設(shè)備上,可以在計(jì)算機(jī)中在原處對(duì)固件代碼進(jìn)行重新編程以增加或修改訪問硬件資源的代碼。且如上所述,一旦固件升級(jí),則被升級(jí)的例程可以由在計(jì)算機(jī)上運(yùn)行的所有不同OS發(fā)行版使用。但是,如果新的或被修改的代碼替代地作為驅(qū)動(dòng)程序來提供,則對(duì)于在計(jì)算機(jī)上運(yùn)行的每個(gè)不同的OS發(fā)行版,將使用和支持不同版本的驅(qū)動(dòng)程序代碼。這不利地增加了計(jì)算機(jī)供應(yīng)商(在提供許多不同驅(qū)動(dòng)程序版本方面)以及終端用戶(在升級(jí)OS以安裝驅(qū)動(dòng)程序方面)的復(fù)雜性。期望一種更簡(jiǎn)單的方法。
[0014]現(xiàn)在參照附圖,說明了根據(jù)本公開構(gòu)造的計(jì)算機(jī)的一種示例,其中該計(jì)算機(jī)中的計(jì)時(shí)器周期性使訪問硬件資源的基于固件的代碼在操作系統(tǒng)環(huán)境下被執(zhí)行,該操作系統(tǒng)缺少用于該硬件資源的驅(qū)動(dòng)程序,因此在不使用驅(qū)動(dòng)程序的情況下訪問硬件資源。
[0015]如本文中和在所附權(quán)利要求中限定的,“在操作系統(tǒng)環(huán)境下執(zhí)行(或運(yùn)行或?qū)嵤?”的代碼應(yīng)被廣泛地理解為表示如下代碼:該代碼的執(zhí)行由操作系統(tǒng)調(diào)度或調(diào)用且在該代碼的執(zhí)行期間操作系統(tǒng)不暫停。
[0016]此外,如本文中和在所附權(quán)利要求中限定的,“驅(qū)動(dòng)程序”應(yīng)被廣泛理解為表示:利用預(yù)限定的訪問接口,代表OS代碼的其它不太有特權(quán)的部分直接地訪問硬件資源的有特權(quán)的操作系統(tǒng)代碼的一部分。在驅(qū)動(dòng)程序?qū)用孢\(yùn)行的操作系統(tǒng)代碼是有特權(quán)的,因此能夠直接訪問硬件資源,而在用戶層面運(yùn)行的操作系統(tǒng)代碼是沒有特權(quán)的,不能直接訪問硬件資源。
[0017]更詳細(xì)地考慮該計(jì)算機(jī)并參考圖1的示意圖,計(jì)算機(jī)100包括硬件110、固件120 (在一些示例中可以是B1S)以及操作系統(tǒng)130。
[0018]硬件110包括至少一個(gè)硬件資源112。如本文中和在所附權(quán)利要求中限定的,“硬件資源”應(yīng)被廣泛理解為表示:可以經(jīng)由一個(gè)或多個(gè)硬件寄存器可編程地訪問的硬件設(shè)備。每個(gè)寄存器可以被實(shí)現(xiàn)為:映射I/o的I/O端口,映射存儲(chǔ)器的I/O端口,或存儲(chǔ)器地址。在一些示例中,硬件設(shè)備可以設(shè)置在計(jì)算機(jī)100的主板上,或設(shè)置在計(jì)算機(jī)100的處理器芯片組內(nèi)。
[0019]硬件110還包括至少一個(gè)計(jì)時(shí)器114。計(jì)時(shí)器114可以是監(jiān)視狗計(jì)時(shí)器。計(jì)時(shí)器114可以是硬件110的分立元件,或可以在計(jì)算機(jī)100的芯片組的組件內(nèi)實(shí)現(xiàn)。計(jì)時(shí)器114可以被配置用于周期性地生成一個(gè)或多個(gè)輸出信號(hào)。在一些示例中,能夠可編程地配置計(jì)時(shí)器114。計(jì)時(shí)器114可以被配置用于以規(guī)則的間隔或以可變的間隔生成輸出信號(hào)。計(jì)時(shí)器114的輸出信號(hào)在計(jì)算機(jī)100中被布置用于生成由操作系統(tǒng)130提供服務(wù)的中斷信號(hào)116。
[0020]操作系統(tǒng)130包括解釋器132。如本文中和在所附權(quán)利要求中限定的,“解釋器”應(yīng)被廣泛理解為表示:執(zhí)行(或?qū)嵤?用特定編程語言編寫的指令的計(jì)算機(jī)程序。解釋器132在操作系統(tǒng)130的環(huán)境下以及在操作系統(tǒng)130的控制下操作。對(duì)操作系統(tǒng)130進(jìn)行配置,使得當(dāng)收到來自計(jì)時(shí)器114的中斷時(shí),操作系統(tǒng)130調(diào)度解釋器132去運(yùn)行。調(diào)度解釋器允許在合適的時(shí)間以及以相對(duì)于由操作系統(tǒng)130管理的其它任務(wù)的合適優(yōu)先級(jí)運(yùn)行解釋器。當(dāng)解釋器132運(yùn)行時(shí),其解釋方法代碼指令122,并且實(shí)施由方法代碼指令122規(guī)定的對(duì)應(yīng)動(dòng)作,以訪問134硬件資源112。方法代碼指令122不被設(shè)置為操作系統(tǒng)130的一部分,而是作為固件120的一部分。但是,計(jì)算機(jī)100的處理器并不像其通常對(duì)固件120的其它功能或例程所做的那樣直接地執(zhí)行方法代碼指令122。相反,處理器執(zhí)行解釋器132,然后解釋器132訪問或獲取124方法代碼指令122。換句話說,包含在方法代碼122中的指令不直接地由處理器執(zhí)行,但這些指令限定由解釋器132進(jìn)行的動(dòng)作和操作,以實(shí)施由方法代碼122規(guī)定的動(dòng)作。結(jié)果,方法代碼指令122不在固件120環(huán)境下執(zhí)行。相反地,由于解釋器132解釋方法代碼指令122并實(shí)施由方法代碼122規(guī)定的指令,所以方法代碼122在操作系統(tǒng)130的環(huán)境下執(zhí)行。此外,由于在執(zhí)行方法代碼指令122時(shí)操作系統(tǒng)130不暫停,所以如果合適的話,操作系統(tǒng)130可以暫時(shí)地暫停解釋器132的執(zhí)行(并因此暫停方法代碼122的執(zhí)行),以便為更高優(yōu)先級(jí)的任務(wù)提供服務(wù)。這有利地允許計(jì)算機(jī)100避免之前已討論的以及由操作系統(tǒng)130暫停引起的那類系統(tǒng)故障。例如,由于為了處理這些更高優(yōu)先級(jí)的活動(dòng)可以暫停解釋器132的執(zhí)行,所以可以沒有丟失地捕獲網(wǎng)絡(luò)業(yè)務(wù)分組且視頻或音頻播放器能夠避免丟中貞。
[0021]計(jì)時(shí)器114被配置用于周期性地生成中斷116給操作系統(tǒng)130,中斷116使操作系統(tǒng)130響應(yīng)于中斷116而調(diào)度解釋器以在操作系統(tǒng)130的環(huán)境下執(zhí)行特定方法代碼指令122。計(jì)時(shí)器114的這種配置可以由方法代碼指令122和/或由固件120中的不同方法代碼指令(未示出)實(shí)施。
[0022]硬件資源112可以是多種不同硬件設(shè)備中的任一種。在一個(gè)示例中,硬件資源112可以是一組件,該組件被周期性地訪問以便維持該組件的正常操作或功能。例如,特定組件的操作可能退化或失敗,除非在其上一次訪問之后的特定時(shí)間內(nèi)訪問該組件。此行為可能是非故意的,并且是由該組件中的缺陷造成的。在此情況中,計(jì)時(shí)器114可以配置用于在超過該特定時(shí)間之前周期性地生成中斷116,且方法代碼122可以指定用于解釋器132正確地訪問該組件以維持該組件的正常功能的指令。在用于這種目的時(shí)以及在其它類型的硬件資源的其它情況下,方法代碼指令122可以不使來自硬件資源112的任何數(shù)據(jù)被返回至操作系統(tǒng)130。
[0023]在另一示例中,硬件資源112可以是周期性地獲得的關(guān)于系統(tǒng)操作(如系統(tǒng)性能或系統(tǒng)健康)的信息或數(shù)據(jù)的源。例如,該信息或數(shù)據(jù)可以表示正由計(jì)算機(jī)100實(shí)施的活動(dòng)的類型和數(shù)量的測(cè)量。作為另一示例,該信息或數(shù)據(jù)可以表示由源112遇到的(例如與網(wǎng)絡(luò)業(yè)務(wù)有關(guān)的)錯(cuò)誤率的測(cè)量。當(dāng)用于這些及類似目的時(shí),方法代碼指令122通常使來自硬件資源112的信息或數(shù)據(jù)被返回至操作系統(tǒng)130,操作系統(tǒng)130隨后能夠?qū)⒃撔畔⒒驍?shù)據(jù)呈現(xiàn)給用戶(例如,呈現(xiàn)在顯示器上),或用該信息或數(shù)據(jù)自動(dòng)地進(jìn)行調(diào)整,該調(diào)整優(yōu)化系統(tǒng)性能或健康。
[0024]現(xiàn)在考慮另一計(jì)算機(jī)并參照?qǐng)D2的示意圖,計(jì)算機(jī)200包括硬件110、固件220 (通常視為B1S)以及操作系統(tǒng)230。
[0025]硬件110包括硬件資源112以及計(jì)時(shí)器114,硬件資源112以及計(jì)時(shí)器114與之前參照?qǐng)D1描述的那些相同或類似。
[0026]操作系統(tǒng)230支持軟件應(yīng)用程序205的執(zhí)行,軟件應(yīng)用程序205利用由操作系統(tǒng)230提供的設(shè)施。操作系統(tǒng)230包括符合高級(jí)配置和電源接口規(guī)范標(biāo)準(zhǔn)的ACPI子系統(tǒng)231。此標(biāo)準(zhǔn)的當(dāng)前版本是2011年12月6日的修訂版5.0。許多計(jì)算機(jī)制造商已將此標(biāo)準(zhǔn)實(shí)現(xiàn)在他們的計(jì)算機(jī)200的固件220中,且許多操作系統(tǒng)供應(yīng)商將此標(biāo)準(zhǔn)實(shí)現(xiàn)在他們的操作系統(tǒng)230中。該標(biāo)準(zhǔn)針對(duì)硬件發(fā)現(xiàn)和系統(tǒng)配置以及電源管理,尤其用于包括在計(jì)算機(jī)的主板上的硬件設(shè)備。與之前依靠固件確定電源管理和配置策略的基于B1S的技術(shù)相反,ACPI使這些受控于操作系統(tǒng)(稱為“操作系統(tǒng)直接配置和電源管理”或“0SPM”)。
[0027]ACPI標(biāo)準(zhǔn)定義了特定系統(tǒng)、設(shè)備以及處理器狀態(tài)。響應(yīng)于發(fā)生向計(jì)算機(jī)傳遞期望電源狀態(tài)的、通常由用戶實(shí)施或發(fā)起的硬件電源管理事件,狀態(tài)轉(zhuǎn)換發(fā)生。例如,抬起便攜式計(jì)算機(jī)的上蓋的動(dòng)作可以表示:用戶想要與該計(jì)算機(jī)交互,因此作為響應(yīng),例如系統(tǒng)可以被供電至工作狀態(tài),在工作狀態(tài)中顯示器照亮、鍵盤和鼠標(biāo)激活、處理器完全處于操作狀態(tài)等等。關(guān)閉上蓋的動(dòng)作可以被配置為表示:用戶已經(jīng)暫時(shí)完成使用該便攜式計(jì)算機(jī),因此例如顯示器可以關(guān)閉、鍵盤和鼠標(biāo)被斷電、處理器進(jìn)入耗電少的睡眠狀態(tài)等等。按壓計(jì)算機(jī)上的電源按鈕的動(dòng)作可以表示:可以從基本上該計(jì)算機(jī)的所有組件中掉電(至少除了從該電源按鈕本身中掉電以外,使得該計(jì)算機(jī)可以在用戶再次按壓該按鈕時(shí)恢復(fù)供電)。因此,響應(yīng)于發(fā)生硬件電源管理事件,執(zhí)行實(shí)現(xiàn)特定電源管理操作的代碼。該代碼的至少一部分設(shè)置在固件中,但是該代碼是在操作系統(tǒng)的控制下并且在操作系統(tǒng)的環(huán)境下執(zhí)行的。
[0028]目前為止,ACPI的使用局限于硬件配置及電源管理應(yīng)用程序,以及局限于基于事件驅(qū)動(dòng)發(fā)生的硬件電源管理事件的處理。例如,ACPI可以用于表示發(fā)生與電源管理相關(guān)的熱事件,如超過溫度閾值或安裝了風(fēng)扇。ACPI可以在操作系統(tǒng)初始化期間用于配置硬件。但是,ACPI之前未用于實(shí)施除硬件配置和電源管理用途之外的基于時(shí)間驅(qū)動(dòng)的或周期性的操作。在一個(gè)示例中,ACPI之前未用于周期性地(通過使用計(jì)時(shí)器)訪問硬件設(shè)備或資源。
[0029]現(xiàn)在返回至計(jì)算機(jī)200,ACPI子系統(tǒng)231提供核心軟件,該核心軟件被配置用于與固件220的兼容ACPI的部分進(jìn)行通信及互操作。在一些示例中,ACPI子系統(tǒng)231可以被實(shí)現(xiàn)為ACPI組件體系結(jié)構(gòu)(ACP1-CA)軟件。ACPI子系統(tǒng)231包括ACPI機(jī)器語言(AML)解釋器232,ACPI機(jī)器語言(AML)解釋器232以與已針對(duì)解釋器132 (圖1)描述的類似的方式操作。包括AML解釋器232的ACPI子系統(tǒng)231在操作系統(tǒng)230環(huán)境下且在操作系統(tǒng)230的控制下操作。
[0030]固件220 包括兼容 ACPI 的部分,如 ACPI 表 221 及 ACPI B10S228。ACPI B10S228執(zhí)行對(duì)硬件110 (特別是主板硬件)的基礎(chǔ)底層控制操作。ACPI B10S228具有協(xié)助啟動(dòng)計(jì)算機(jī)200以及還協(xié)助使計(jì)算機(jī)200進(jìn)入睡眠模式或從睡眠模式喚醒計(jì)算機(jī)200的代碼。該代碼在固件220的環(huán)境下執(zhí)行,或者在初始化操作系統(tǒng)230以前或在操作系統(tǒng)230暫停時(shí)執(zhí)行此代碼。
[0031]ACPI表221限定并描述硬件110的可以通過ACPI管理的各元件,如硬件資源112及計(jì)時(shí)器114。ACPI表221包括硬件限定數(shù)據(jù)226以及至少一個(gè)關(guān)聯(lián)的ACPI機(jī)器語言(AML)控制方法222,硬件限定數(shù)據(jù)226描述至少一個(gè)硬件元件,至少一個(gè)關(guān)聯(lián)的ACPI機(jī)器語言(AML)控制方法222可用于訪問對(duì)應(yīng)的硬件元件。AML控制方法222具有獨(dú)立于機(jī)器的字節(jié)碼指令,該獨(dú)立于機(jī)器的字節(jié)碼指令可由AML解釋器132執(zhí)行以訪問硬件元件(如硬件資源112)及實(shí)施硬件管理操作??梢栽谟?jì)算機(jī)220啟動(dòng)過程期間或在稍晚的時(shí)間訪問 ACPI 表 221。
[0032]硬件限定數(shù)據(jù)226提供硬件110的各元件的抽象層面。其告訴ACPI子系統(tǒng)231與可以如何訪問特定計(jì)算機(jī)220的各硬件資源相關(guān)的信息。以這樣的方式,包括AML解釋器232的ACPI子系統(tǒng)231可以訪問這些硬件資源,而不用知道ACPI子系統(tǒng)被在其上的計(jì)算機(jī)220的具體體系結(jié)構(gòu)細(xì)節(jié),計(jì)算機(jī)220的具體體系結(jié)構(gòu)細(xì)節(jié)可能對(duì)每個(gè)計(jì)算機(jī)模型都不同。
[0033]計(jì)時(shí)器114被配置為周期性地生成系統(tǒng)控制(SCI)中斷216給操作系統(tǒng)230。由計(jì)時(shí)器114生成的特定SCI中斷216與具有用于訪問硬件資源112的指令的對(duì)應(yīng)AML方法222關(guān)聯(lián)。當(dāng)收到來自計(jì)時(shí)器114的SCI中斷216時(shí),操作系統(tǒng)230調(diào)度運(yùn)行AML解釋器232來為該中斷提供服務(wù)。當(dāng)解釋器232運(yùn)行時(shí),其解釋與SCI中斷216和硬件資源112關(guān)聯(lián)的AML方法222的字節(jié)碼指令,并且實(shí)施由AML方法代碼指令222限定的包括訪問234硬件資源112的操作。由于AML方法222的字節(jié)碼指令不是由計(jì)算機(jī)200的處理器直接地執(zhí)行的,而替代地是由AML解釋器232執(zhí)行的,所以AML方法222不是在固件220的環(huán)境下執(zhí)行的,而是在操作系統(tǒng)230的環(huán)境下執(zhí)行的。在AML方法222花費(fèi)相對(duì)長時(shí)間去執(zhí)行的情況下,操作系統(tǒng)230可以暫時(shí)暫停AML解釋器232的執(zhí)行(并且因此暫停AML方法222的執(zhí)行)來為更高優(yōu)先級(jí)的任務(wù)提供服務(wù)并避免之前已討論的那類系統(tǒng)故障。
[0034]計(jì)時(shí)器114被配置為周期性地生成SCI中斷216給操作系統(tǒng)230。計(jì)時(shí)器114可以由ACPI子系統(tǒng)231利用訪問硬件資源112的相同AML方法222、通過不同的AML方法(未示出)的指令或通過ACPI B10S228的功能的指令進(jìn)行配置236。
[0035]應(yīng)注意,盡管計(jì)算機(jī)200中未使用,但是操作系統(tǒng)230還支持使用一個(gè)或多個(gè)不兼容ACPI的設(shè)備驅(qū)動(dòng)程序238 (以虛線示出)。一些設(shè)備驅(qū)動(dòng)程序238可以是直接訪問硬件110的元件的非ACPI驅(qū)動(dòng)程序。其它硬件驅(qū)動(dòng)程序238可以是經(jīng)由ACPI子系統(tǒng)231訪問硬件I1的元件的知曉ACPI的驅(qū)動(dòng)程序。應(yīng)理解,如果驅(qū)動(dòng)程序238將被用于訪問硬件資源112,則對(duì)每個(gè)不同的操作系統(tǒng)230版本以及對(duì)每個(gè)不同的計(jì)算機(jī)型號(hào)將使用不同版本的驅(qū)動(dòng)程序238,這導(dǎo)致計(jì)算機(jī)供應(yīng)商和用戶的支持復(fù)雜性。因此,省略使用驅(qū)動(dòng)程序238來訪問硬件資源112并經(jīng)由AML方法222訪問硬件資源112,是有益的。此優(yōu)勢(shì)出現(xiàn)是因?yàn)橹С諥CPI標(biāo)準(zhǔn)(例如,實(shí)現(xiàn)ACPI子系統(tǒng)231的ACPI標(biāo)準(zhǔn))的任何操作系統(tǒng)230可以經(jīng)由在計(jì)算機(jī)200的固件220中提供的AML方法222來訪問硬件資源112。結(jié)果,避免使用驅(qū)動(dòng)程序。
[0036]省略驅(qū)動(dòng)程序并作為替代通過AML方法222訪問硬件資源的另一好處是:最小化了除ACPI231子系統(tǒng)以外的操作系統(tǒng)230的模塊參與硬件資源訪問。除了接收SCI中斷216以及作為響應(yīng)調(diào)度AML解釋器232去運(yùn)行以外,操作系統(tǒng)230不參與硬件資源訪問。
[0037]當(dāng)完成響應(yīng)于SCI中斷216而執(zhí)行AML方法指令222時(shí),終止AML解釋器232的執(zhí)行。
[0038]現(xiàn)在考慮用于從操作系統(tǒng)周期性地訪問計(jì)算機(jī)的硬件資源的方法并參照?qǐng)D3,方法300始于在310處周期性地生成中斷??商娲兀瑘D3可以被視為在計(jì)算機(jī)100 (圖1)或200(圖2)中實(shí)施的過程。在一些示例中,由硬件計(jì)時(shí)器生成該中斷。在一些示例中,計(jì)時(shí)器在計(jì)算機(jī)內(nèi)部。在一些示例中,在320處,將該中斷與特定方法代碼指令關(guān)聯(lián)。在330處,響應(yīng)于該中斷,調(diào)度在操作系統(tǒng)環(huán)境中運(yùn)行的解釋器去執(zhí)行。在340處,由解釋器執(zhí)行與該中斷關(guān)聯(lián)且設(shè)置在計(jì)算機(jī)的固件中的方法代碼指令,以訪問計(jì)算機(jī)的硬件資源。在一些示例中,操作系統(tǒng)缺少用于硬件資源的設(shè)備驅(qū)動(dòng)程序。在一些示例中,執(zhí)行340包括:在350處,從硬件資源獲得與系統(tǒng)操作相關(guān)的數(shù)據(jù)(可以包括系統(tǒng)健康或系統(tǒng)性能數(shù)據(jù)),并且使該數(shù)據(jù)可由操作系統(tǒng)利用。在360處,在解釋器已執(zhí)行方法代碼指令后,終止解釋器的執(zhí)行。
[0039]在一些示例中,操作系統(tǒng)實(shí)現(xiàn)ACPI標(biāo)準(zhǔn),且根據(jù)ACPI標(biāo)準(zhǔn),該方法代碼是ACPI機(jī)器語言(AML)指令,該解釋器是AML解釋器且該中斷是系統(tǒng)控制中斷(SCI)。
[0040]現(xiàn)在考慮用于升級(jí)計(jì)算機(jī)以改進(jìn)對(duì)硬件資源的訪問的方法并參照?qǐng)D4,方法400可以對(duì)計(jì)算機(jī)100 (圖1)或計(jì)算機(jī)200 (圖2)使用。方法400始于在410處獲得包括方法代碼指令的升級(jí)的計(jì)算機(jī)固件。在一些示例中,計(jì)算機(jī)將固件存儲(chǔ)在閃存中,閃存的內(nèi)容可以在原位可編程地升級(jí),而不用物理地替換閃存設(shè)備本身。在這樣的示例中,被升級(jí)的固件可以以計(jì)算機(jī)數(shù)據(jù)文件和可編程地用該數(shù)據(jù)文件的內(nèi)容修改或替換閃存的內(nèi)容的程序(或者該計(jì)算機(jī)數(shù)據(jù)文件可以與該程序一起使用)的形式提供。在420處,將被升級(jí)的固件安裝在計(jì)算機(jī)中,而不修改該計(jì)算機(jī)的操作系統(tǒng)的任何部分。例如,執(zhí)行該程序以升級(jí)固件。在一些示例中,在430處,安裝包括:將被升級(jí)的固件的特定方法代碼與由硬件計(jì)時(shí)器生成的特定中斷關(guān)聯(lián)。
[0041]現(xiàn)在考慮可與方法300、400 —起使用的計(jì)算機(jī)的硬件體系結(jié)構(gòu)500并參照?qǐng)D5,該體系結(jié)構(gòu)可以用于計(jì)算機(jī)100 (圖1)或200 (圖2)。體系結(jié)構(gòu)500的組件通過一個(gè)或多個(gè)總線510互連。體系結(jié)構(gòu)500包括計(jì)時(shí)器114及硬件資源112。該體系結(jié)構(gòu)還包括至少一個(gè)處理器520及主存儲(chǔ)器530。主存儲(chǔ)器530通常是讀寫存儲(chǔ)器,如RAM。包括解釋器534的操作系統(tǒng)532可加載到主存儲(chǔ)器530中。通常,操作系統(tǒng)532在計(jì)算機(jī)啟動(dòng)時(shí)被加載到主存儲(chǔ)器530中,但是在計(jì)算機(jī)被嵌入專用電子設(shè)備中的一些應(yīng)用中,操作系統(tǒng)的部分或全部可以永久地加載到主存儲(chǔ)器530中。操作系統(tǒng)532可以是操作系統(tǒng)130 (圖1)或230 (圖2),并且解釋器534可以是解釋器132 (圖1)或232 (圖2)。
[0042]體系結(jié)構(gòu)500還包括B1S存儲(chǔ)器540。B1S存儲(chǔ)器540是在掉電后保留其內(nèi)容的非瞬態(tài)非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。B1S存儲(chǔ)器540通常是閃存,其能夠在駐留在計(jì)算機(jī)中時(shí)可編程地升級(jí)。B1S存儲(chǔ)器540存儲(chǔ)B1S固件,如固件120 (圖1)或220 (圖2),該B1S固件包括至少一個(gè)方法542的指令,至少一個(gè)方法542可以是方法122 (圖1)或AML方法222(圖2)。在操作時(shí),方法542可以被復(fù)制到主存儲(chǔ)器530的一部分中。然后,可以將此部分標(biāo)記為ACPI存儲(chǔ)器,這使其不可用于其它目的。
[0043]根據(jù)前面的描述,應(yīng)理解,由本公開提供的計(jì)算機(jī)、方法及介質(zhì)代表本領(lǐng)域的顯著進(jìn)步。盡管已描述和說明了幾個(gè)具體示例,但是本公開不局限于所描述和說明的多個(gè)部分的具體方法、形式或設(shè)置。例如,本公開的示例不局限于單個(gè)處理器計(jì)算機(jī)系統(tǒng),還適用于多處理器系統(tǒng)。此描述應(yīng)理解為包括本文描述的元件的所有新穎和非顯而易見的組合,并且在本申請(qǐng)或后續(xù)申請(qǐng)中可以對(duì)這些元件的任意新穎和非顯而易見的組合提出權(quán)利要求。前述示例是說明性的,且沒有一個(gè)特征或元件是對(duì)可在本申請(qǐng)或后續(xù)申請(qǐng)中要求保護(hù)的所有可能組合而言必不可少的。除非另外規(guī)定,否則方法權(quán)利要求的步驟不需要以規(guī)定的順序?qū)嵤?。類似地,圖中的框或標(biāo)號(hào)(如(I)、(2)等)不被解釋為這些步驟必須以特定順序進(jìn)行??梢栽黾痈郊涌?步驟,移除一些框/步驟,或改變框/步驟的順序,且仍在所公開的示例的范圍內(nèi)。此外,不同的圖中公開的方法或步驟可以增加到其它圖的方法或步驟中,或與其它圖的方法或步驟交換。此外,具體數(shù)值的數(shù)據(jù)值(如具體的量、數(shù)、類等)或其它具體信息應(yīng)被解釋為對(duì)討論示例是說明性的。這樣的具體信息不提供用于限制示例。本公開不局限于上述實(shí)現(xiàn)方式,而是由所附權(quán)利要求按照其等同物的所有范圍進(jìn)行限定。在權(quán)利要求列舉“一”或“第一”元件或其等效用語時(shí),這樣的權(quán)利要求應(yīng)被理解為包括一個(gè)或多個(gè)這樣的元件的包含,不要求也不排除兩個(gè)或更多個(gè)這樣的元件。
【權(quán)利要求】
1.一種用于周期性地訪問計(jì)算機(jī)的硬件資源的方法,包括: 經(jīng)由位于所述計(jì)算機(jī)內(nèi)部的計(jì)時(shí)器周期性地生成中斷; 響應(yīng)于所述中斷,調(diào)度在操作系統(tǒng)的環(huán)境下運(yùn)行的解釋器去執(zhí)行;以及 利用所述解釋器執(zhí)行與所述中斷關(guān)聯(lián)且設(shè)置在所述計(jì)算機(jī)的固件中的指令,以訪問所述計(jì)算機(jī)的硬件資源,其中所述操作系統(tǒng)缺少關(guān)于所述硬件資源的設(shè)備驅(qū)動(dòng)程序。
2.根據(jù)權(quán)利要求1所述的方法, 其中所述操作系統(tǒng)實(shí)現(xiàn)高級(jí)配置和電源接口(ACPI)標(biāo)準(zhǔn);并且 其中根據(jù)所述ACPI標(biāo)準(zhǔn),所述指令是ACPI機(jī)器語言(AML)指令,所述解釋器是AML解釋器,并且所述中斷是系統(tǒng)控制中斷(SCI)。
3.根據(jù)權(quán)利要求1所述的方法,其中除非周期性地訪問所述硬件資源,否則所述硬件資源的操作退化,并且其中周期性的訪問維持所述硬件資源的正常功能。
4.根據(jù)權(quán)利要求1所述的方法,其中所述指令不實(shí)施硬件配置和電源管理功能。
5.根據(jù)權(quán)利要求1所述的方法,其中所述執(zhí)行進(jìn)一步包括: 從所述硬件資源獲得關(guān)于系統(tǒng)操作的數(shù)據(jù);以及 使所述操作系統(tǒng)能訪問所述數(shù)據(jù)。
6.—種計(jì)算機(jī),包括: 機(jī)器可讀介質(zhì),包括固件指令,所述固件指令可由所述計(jì)算機(jī)的操作系統(tǒng)的解釋器執(zhí)行以訪問所述計(jì)算機(jī)的硬件資源,而不使用關(guān)于所述硬件資源的設(shè)備驅(qū)動(dòng)程序;以及 計(jì)時(shí)器,周期性地生成中斷,所述中斷使所述操作系統(tǒng)調(diào)度所述解釋器來在所述操作系統(tǒng)的環(huán)境下執(zhí)行所述指令,以訪問所述硬件資源。
7.根據(jù)權(quán)利要求6所述的計(jì)算機(jī),其中所述操作系統(tǒng)實(shí)現(xiàn)高級(jí)配置和電源接口(ACPI)標(biāo)準(zhǔn);并且 其中根據(jù)所述ACPI標(biāo)準(zhǔn),所述指令是ACPI機(jī)器語言(AML)指令,所述解釋器是AML解釋器,并且所述中斷是系統(tǒng)控制中斷(SCI)。
8.根據(jù)權(quán)利要求6所述的計(jì)算機(jī),其中所述指令不實(shí)施硬件配置和電源管理功能。
9.根據(jù)權(quán)利要求6所述的計(jì)算機(jī),其中除非周期性地訪問所述硬件資源,否則所述硬件資源的操作退化,并且其中周期性的訪問維持所述硬件資源的正常功能。
10.一種升級(jí)根據(jù)權(quán)利要求6所述的計(jì)算機(jī)以改進(jìn)對(duì)硬件資源的訪問的方法,包括: 獲得升級(jí)的計(jì)算機(jī)固件,所述升級(jí)的計(jì)算機(jī)固件包括所述指令;以及 將升級(jí)的固件安裝在所述計(jì)算機(jī)中,而不修改所述操作系統(tǒng)的任何部分。
11.一種非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),具有存儲(chǔ)在所述非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的可執(zhí)行程序,其中所述程序指導(dǎo)處理器: 配置計(jì)時(shí)器,所述計(jì)時(shí)器用于周期性地生成中斷給操作系統(tǒng),所述中斷使所述操作系統(tǒng)響應(yīng)于所述中斷而調(diào)度解釋器去在所述操作系統(tǒng)的環(huán)境下執(zhí)行駐留在固件中的指令;以及 在所述解釋器執(zhí)行所述指令時(shí),訪問所述計(jì)算機(jī)的硬件資源,其中所述操作系統(tǒng)缺少關(guān)于所述硬件資源的設(shè)備驅(qū)動(dòng)程序。
12.根據(jù)權(quán)利要求11所述的介質(zhì), 其中所述操作系統(tǒng)實(shí)現(xiàn)高級(jí)配置和電源接口(ACPI)標(biāo)準(zhǔn);并且 其中根據(jù)所述ACPI標(biāo)準(zhǔn),所述解釋器解釋ACPI機(jī)器語言(AML),所述中斷是系統(tǒng)控制中斷(SCI),并且所述指令包括AML指令。
13.根據(jù)權(quán)利要求11所述的介質(zhì),其中除非周期性地訪問所述硬件資源,否則所述硬件資源的操作退化,并且其中所述程序進(jìn)一步指導(dǎo)所述處理器: 訪問所述硬件資源,以維持所述硬件資源的正常功能。
14.根據(jù)權(quán)利要求11所述的介質(zhì),其中所述程序進(jìn)一步指導(dǎo)所述處理器: 訪問所述硬件資源,以獲得關(guān)于系統(tǒng)健康和性能的數(shù)據(jù),以及 向所述操作系統(tǒng)傳遞所述數(shù)據(jù)。
15.根據(jù)權(quán)利要求11所述的介質(zhì),其中所述程序進(jìn)一步指導(dǎo)所述處理器: 訪問所述硬件資源,而不向所述操作系統(tǒng)傳遞與硬件資源訪問相關(guān)的任何數(shù)據(jù)。
【文檔編號(hào)】G06F9/44GK104285211SQ201280073194
【公開日】2015年1月14日 申請(qǐng)日期:2012年7月26日 優(yōu)先權(quán)日:2012年7月26日
【發(fā)明者】基蒙·貝爾林, 史蒂文·G·烏爾曼 申請(qǐng)人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)