專利名稱:一種存儲器管理方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于一種存儲器管理方法,特別是關(guān)于一種配置保留區(qū)域的存儲器管理方法。
背景技術(shù):
不論是早期的MS-DOS操作系統(tǒng),還是近年由微軟所開發(fā)的Windows操作系統(tǒng),在進入操作系統(tǒng)前,所有計算機皆需要執(zhí)行開機程序。
簡單來說,在加載操作系統(tǒng)前,計算機的中央處理器(CPU)是從基本輸入輸出系統(tǒng)(BIOS)加載開機程序來執(zhí)行,并且將基本輸入輸出系統(tǒng)中指令的數(shù)據(jù)結(jié)構(gòu)或是其它數(shù)據(jù)存入延伸基本輸入輸出數(shù)據(jù)區(qū)域(Extend Bios DataArea)中。接著,外圍裝置比如說,顯示卡、網(wǎng)絡(luò)卡、或聲卡等被啟動與檢測。在這些外圍裝置的固件中,指令的數(shù)據(jù)結(jié)構(gòu)或是其它數(shù)據(jù)亦可存入延伸基本輸入輸出數(shù)據(jù)區(qū)域中。
一般而言,延伸基本輸入輸出數(shù)據(jù)區(qū)域的范圍是位于系統(tǒng)存儲器的地址A000:0至地址9000:0,其大小為64kb,操作系統(tǒng)并不會對這個保留區(qū)域進行存儲器配置。
當(dāng)這些外圍裝置檢測完畢之后,中央處理器執(zhí)行操作系統(tǒng)的程序代碼并加載操作系統(tǒng)的數(shù)據(jù)于系統(tǒng)存儲器中。在操作系統(tǒng)下,當(dāng)需存取一個外圍裝置時,中央處理器根據(jù)儲存于延伸基本輸入輸出數(shù)據(jù)區(qū)域內(nèi)此外圍裝置的指令數(shù)據(jù)結(jié)構(gòu)來建立操作指令以對此外圍裝置進行存取操作。
然而,若外圍裝置越來越多,則延伸基本輸入輸出數(shù)據(jù)區(qū)域恐將不足以儲存數(shù)據(jù)。若依照前述的配置方法,則部分裝置的數(shù)據(jù)會被存入至系統(tǒng)存儲器中延伸基本輸入輸出數(shù)據(jù)區(qū)域以外的位置,導(dǎo)致這些數(shù)據(jù)可能被操作系統(tǒng)下其它的程序所覆寫而流失,造成這些對應(yīng)的外圍裝置將無法存取,嚴(yán)重時,更會使整個計算機無法正確地運作。
承上所述,如何保留足夠的存儲器空間以儲存外圍固件的數(shù)據(jù),藉以改善已知延伸基本輸入輸出數(shù)據(jù)區(qū)域的空間不足的缺點,為計算機產(chǎn)業(yè)的一大課題。
發(fā)明內(nèi)容
有鑒于上述課題,本發(fā)明的目的為提供一種存儲器管理方法與計算器裝置以保留足夠的存儲器空間以儲存外圍固件的數(shù)據(jù)。
本發(fā)明提供一種存儲器管理方法,包含下列步驟自基本輸入輸出系統(tǒng)加載存儲器配置初始碼于系統(tǒng)存儲器中;執(zhí)行存儲器配置初始碼以從系統(tǒng)存儲器的物理最高地址配置第一擴充區(qū)塊,并儲存第一外圍固件的第一數(shù)據(jù)或基本輸入輸出系統(tǒng)的數(shù)據(jù)于第一擴充區(qū)塊。
另外,本發(fā)明亦提供一種計算器裝置,包含至少一外圍固件、基本輸入輸出系統(tǒng)、系統(tǒng)存儲器、及中央處理單元。其中,基本輸入輸出系統(tǒng)儲存存儲器配置初始碼;中央處理單元自基本輸入輸出系統(tǒng)加載存儲器配置初始碼于系統(tǒng)存儲器中,并執(zhí)行存儲器配置初始碼以從系統(tǒng)存儲器的物理最高地址配置至少一擴充區(qū)塊,且儲存外圍固件的數(shù)據(jù)或基本輸入輸出系統(tǒng)的數(shù)據(jù)于擴充區(qū)塊。
承上所述,因依據(jù)本發(fā)明的存儲器管理方法與計算器裝置中,是自系統(tǒng)存儲器的物理最高地址來配置擴充區(qū)塊,以取代已知的延伸基本輸入輸出數(shù)據(jù)區(qū)域,且可根據(jù)外圍固件的個數(shù)以配置相對應(yīng)數(shù)目的擴充區(qū)塊,各擴充區(qū)塊足以容納用來存取各外圍固件所需的數(shù)據(jù)。如此一來,便可改善已知延伸基本輸入輸出數(shù)據(jù)區(qū)域存儲器空間不足的問題。
圖1為依據(jù)本發(fā)明實施例的一種計算器裝置的示意圖;圖2為應(yīng)用本發(fā)明實施例存儲器管理方法的系統(tǒng)存儲器配置圖;圖3為依據(jù)本發(fā)明實施例存儲器管理方法的流程圖;以及圖4為應(yīng)用本發(fā)明實施例存儲器管理方法的系統(tǒng)存儲器配置圖。
元件標(biāo)號說明1計算器裝置11外圍裝置111第一外圍裝置112第二外圍裝置
11(N+1)第N+1外圍裝置12基本輸入輸出系統(tǒng)13系統(tǒng)存儲器130延伸基本輸入輸出數(shù)據(jù)區(qū)域131第一擴充區(qū)塊131a第一標(biāo)頭區(qū)塊131b第一數(shù)據(jù)區(qū)塊132第二擴充區(qū)塊132a第二標(biāo)頭區(qū)塊132b第二數(shù)據(jù)區(qū)塊133第三擴充區(qū)塊133a第三標(biāo)頭區(qū)塊133b第三數(shù)據(jù)區(qū)塊13N第N擴充區(qū)塊13Na第N標(biāo)頭區(qū)塊13Nb第N數(shù)據(jù)區(qū)塊13(N+1)第N+1擴充區(qū)塊13(N+1)a第N+1標(biāo)頭區(qū)塊13(N+1)b第N+1數(shù)據(jù)區(qū)塊14中央處理器S01~S05存儲器管理方法步驟Addr2第二擴充區(qū)塊的起始地址Addr3第三擴充區(qū)塊的起始地址Addr4第四擴充區(qū)塊的起始地址AddrN+1第N+1擴充區(qū)塊的起始地址具體實施方式
以下將參照相關(guān)圖式,說明依據(jù)本發(fā)明較佳實施例的存儲器管理方法與計算器裝置。
請參考圖1所示,計算器裝置1包含外圍裝置11、基本輸入輸出系統(tǒng)12、系統(tǒng)存儲器13、以及中央處理器14等元件,計算器裝置1為個人計算機、服務(wù)器、準(zhǔn)系統(tǒng)等等。
通常計算機1在加載操作系統(tǒng)前需執(zhí)行開機程序以檢測計算機1的外圍裝置11,之后方進入操作系統(tǒng)?;据斎胼敵鱿到y(tǒng)12儲存存儲器配置初始碼,在開機過程中,中央處理單元14執(zhí)行存儲器配置初始碼以從系統(tǒng)存儲器13的物理最高地址配置至少一擴充區(qū)決,并儲存外圍固件的數(shù)據(jù)于擴充區(qū)塊,外圍固件舉例來說可以是外圍裝置11中固件。
請參考圖2所示,圖2為應(yīng)用本發(fā)明較佳實施例存儲器管理方法的系統(tǒng)存儲器13配置圖。
前述執(zhí)行存儲器配置初始碼后配置的擴充區(qū)塊系標(biāo)記為131,擴充區(qū)塊131可儲存外圍裝置11固件中的數(shù)據(jù),此數(shù)據(jù)是記錄用來存取外圍裝置11的指令格式或數(shù)據(jù)結(jié)構(gòu)。另外,擴充區(qū)塊131包含有標(biāo)頭區(qū)塊131a及數(shù)據(jù)區(qū)塊131b。于本實例中,數(shù)據(jù)區(qū)塊131b儲存此外圍裝置11固件中的數(shù)據(jù),其大小是根據(jù)外圍裝置11所需而定。標(biāo)頭區(qū)塊131a記錄整個擴充區(qū)塊131的總長度。
當(dāng)電子計算裝置1已加載操作系統(tǒng)之后,便可運用擴充區(qū)塊131所儲存的數(shù)據(jù)來建立存取外圍裝置111的指令。
除此之外,擴充區(qū)塊131亦可先用來儲存BIOS的數(shù)據(jù),之后可接在擴充區(qū)塊131旁再配置另一個擴充區(qū)塊來儲存外圍裝置的固件數(shù)據(jù)。如何配置多個擴充區(qū)塊將于以下實施例中說明。
上文針對電子計算裝置1的其中一個外圍裝置來作說明,但是,通常電子計算裝置1包含多個外圍裝置,比如說,顯示卡、聲卡、或網(wǎng)絡(luò)卡,因此,以下將說明,當(dāng)電子計算裝置具有N+1個外圍裝置時存儲器管理方法如何運作。
請同時參考圖3及圖4所示,圖3為依據(jù)本發(fā)明較佳實施例管理方法的流程圖。此存儲器管理方法是用于N+1個外圍裝置的情況,其包含有下列步驟S01~S06,圖1的中央處理器14可執(zhí)行以下步驟以便在存儲器中配置擴充區(qū)塊S01加載存儲器配置初始碼S02配置擴充區(qū)塊S03儲存外圍固件的數(shù)據(jù)S04是否配置下一擴充區(qū)塊,若步驟S04為是,則返回步驟S02以配置下一擴充區(qū)塊。
S05若步驟S04為否,則結(jié)束配置存儲器。
存儲器配置初始碼被加載后是被中央處理器14執(zhí)行,以便從系統(tǒng)存儲器13的物理最高地址(Top_mem)開始配置足夠數(shù)量的擴充區(qū)塊來儲存各外圍裝置固件的數(shù)據(jù)結(jié)構(gòu)或指令格式。
然后,執(zhí)行第一次的步驟S02~S04以便從系統(tǒng)存儲器13的物理最高地址(Top_mem)配置第一擴充區(qū)塊131(步驟S02),并儲存第一個外圍裝置11固件中的數(shù)據(jù)。接著,執(zhí)行完第二次的步驟S02~S04以便從系統(tǒng)存儲器13的物理最高地址減去第一擴充區(qū)塊131長度之處來配置第二擴充區(qū)塊132,第二擴充區(qū)塊132用以儲存第二個外圍裝置112的固件的第二數(shù)據(jù)。若有N+1個外圍裝置,則前述步驟S02~S04將執(zhí)行N+1次,并于第N+1次時來配置第N+1個擴充區(qū)塊,第N+1個擴充區(qū)塊13(N+1)用以儲存第N+1個外圍裝置11的固件的數(shù)據(jù),第N+1個擴充區(qū)塊的起始地址可由式1所計算出,其中Addr1、AddrN以及AddrN+1分別為第1、第N以及第N+1個擴充區(qū)塊的起始地址AddrN+1=Top_mem-∑i=0N(Lenthi+1)(式1),其中Lenthi+1為第i+1個擴充區(qū)塊長度;也就是說,這些擴充區(qū)塊是從物理最高地址依序往低地址相鄰排列,各區(qū)塊的開頭是物理最高地址減去的前全部擴充區(qū)塊的總長度。
舉例來說,在本實施例中,各個擴充區(qū)塊具有標(biāo)頭區(qū)塊及數(shù)據(jù)區(qū)塊。因此在步驟S02中,配置擴充區(qū)塊之前,每一擴充區(qū)塊的標(biāo)頭區(qū)塊被讀取以得知每一擴充區(qū)塊的長度,且每一擴充區(qū)的長度被加總,再以物理最高地址減去所有擴充區(qū)塊的總長度,并由此處的地址為起始再配置另一擴充區(qū)塊。
例如要配置第N+1個擴充區(qū)塊則須先將第1至第N個擴充區(qū)塊的長度加總以得到總長度,再以物理最高地址減去第1至第N個擴充區(qū)塊的總長度以得到第N+1個擴充區(qū)塊的起始地址,并于此起始地址配置第N+1個擴充區(qū)塊。
另外,在步驟S05之后系繼續(xù)開機程序,計算器裝置便可加載操作系統(tǒng)。當(dāng)操作系統(tǒng)詢問系統(tǒng)存儲器的大小時,中央處理器執(zhí)行BIOS的存儲器大小程序來響應(yīng),該程序是將物理最高地址減去所有的擴充區(qū)塊長度來作為響應(yīng),因此,操作系統(tǒng)看到的系統(tǒng)存儲器大小將是排除擴充區(qū)塊的區(qū)域,并不會對擴充區(qū)塊的存儲器部分進行配置。
再者,配置各擴充區(qū)域時,可一并將各擴充區(qū)域與各外圍裝置的對應(yīng)表儲存于原始的延伸基本輸入輸出數(shù)據(jù)區(qū)域130中,若操作系統(tǒng)或其它程序、軟硬件裝置等需欲存取外圍裝置時,操作系統(tǒng)收到中斷指令之后便呼叫服務(wù)例程,此服務(wù)例程可依據(jù)該對應(yīng)表至對應(yīng)的擴充區(qū)塊中讀取外圍裝置的指令格式或數(shù)據(jù)結(jié)構(gòu),并響應(yīng)此外圍裝置的數(shù)據(jù)至操作系統(tǒng)。操作系統(tǒng)根據(jù)外圍裝置的指令格式或數(shù)據(jù)結(jié)構(gòu)建立存取外圍裝置的指令,以便存取此外圍裝置。
此外,在另一實施例中,于第一次執(zhí)行步驟S02來配置擴充區(qū)塊時僅需于在第一擴充區(qū)塊的標(biāo)頭區(qū)塊儲存所有擴充區(qū)塊長度,如此一來,其它擴充區(qū)塊無需具有標(biāo)頭區(qū)塊來儲存每一擴充區(qū)塊的長度。接著,在后續(xù)執(zhí)行步驟S02時讀取第一標(biāo)頭區(qū)塊以得知所有擴充區(qū)塊的總長度,因此便可在物理最高地址減去總長度之處來配置另一新增的擴充區(qū)塊。配置完新增的擴充區(qū)塊后,隨即更新第一標(biāo)頭區(qū)塊所儲存的所有擴充區(qū)塊的總長度。
當(dāng)操作系統(tǒng)詢問系統(tǒng)存儲器的大小時,存儲器大小程序是將物理最高地址減去第一標(biāo)頭區(qū)塊所記錄的長度來作為響應(yīng),因此,操作系統(tǒng)看到的系統(tǒng)存儲器大小將是排除擴充區(qū)塊的區(qū)域,并不會對擴充區(qū)塊的存儲器部分進行配置。
承上所述,因依據(jù)本發(fā)明的存儲器管理方式,是自系統(tǒng)存儲器的物理最高地址配置擴充區(qū)塊,以取代已知的延伸基本輸入輸出數(shù)據(jù)區(qū)域,且可根據(jù)外圍固件的個數(shù)以配置相對應(yīng)數(shù)目的擴充區(qū)塊,各擴充區(qū)塊足以容納用來存取各外圍固件所需的數(shù)據(jù)。如此一來,可改善已知延伸基本輸入輸出數(shù)據(jù)區(qū)域存儲器空間不足的問題。
以上所述僅為舉例性,而非為限制性者。任何未脫離本發(fā)明的精神與范疇,而對其進行的等效修改或變更,均應(yīng)包含于所附的權(quán)利要求范圍中。
權(quán)利要求
1.一種存儲器管理方法,包含自基本輸入輸出系統(tǒng)加載存儲器配置初始碼于系統(tǒng)存儲器中;執(zhí)行該存儲器配置初始碼以從該系統(tǒng)存儲器的物理最高地址配置第一擴充區(qū)塊,并儲存第一外圍固件的第一數(shù)據(jù)或該基本輸入輸出系統(tǒng)的數(shù)據(jù)于該第一擴充區(qū)塊。
2.根據(jù)權(quán)利要求1所述的存儲器管理方法,其中該加載步驟是儲存該初始碼于該系統(tǒng)存儲器的延伸基本輸入輸出數(shù)據(jù)區(qū)域。
3.根據(jù)權(quán)利要求1所述的存儲器管理方法,其中該第一擴充區(qū)塊包含第一標(biāo)頭區(qū)塊及第一數(shù)據(jù)區(qū)塊,其中該第一標(biāo)頭區(qū)塊記錄該第一數(shù)據(jù)區(qū)塊的長度,該第一數(shù)據(jù)區(qū)塊記錄該第一外圍固件的該第一數(shù)據(jù)或該基本輸入輸出系統(tǒng)的數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的存儲器管理方法,還包括再次執(zhí)行該存儲器配置初始碼,將該物理最高地址減去該第一擴充區(qū)塊的長度來產(chǎn)生配置地址,并于該配置地址配置第二擴充區(qū)塊,且儲存第二外圍固件的第二數(shù)據(jù)或該基本輸入輸出系統(tǒng)的數(shù)據(jù)于該第二擴充區(qū)塊。
5.根據(jù)權(quán)利要求4所述的存儲器管理方法,其中該第二擴充區(qū)塊包含第二標(biāo)頭區(qū)塊及第二數(shù)據(jù)區(qū)塊,其中該第二標(biāo)頭區(qū)塊記錄該第二數(shù)據(jù)區(qū)塊的長度,該第二數(shù)據(jù)區(qū)塊記錄該第二外圍固件的該第二數(shù)據(jù)或該基本輸入輸出系統(tǒng)的數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的存儲器管理方法,其中該第一擴充區(qū)塊至第N擴充區(qū)塊是已配置于該系統(tǒng)存儲器中,該方法還包括再次執(zhí)行該存儲器配置初始碼,將該物理最高地址減去該第一擴充區(qū)塊至第N擴充區(qū)塊的總長度來產(chǎn)生配置地址,并于該配置地址配置第N+1擴充區(qū)塊,且儲存第N+1外圍固件的第N+1數(shù)據(jù)或該基本輸入輸出系統(tǒng)的數(shù)據(jù)于該第N+1擴充區(qū)塊。
7.根據(jù)權(quán)利要求6所述的存儲器管理方法,其中該第N+1擴充區(qū)塊包含第N+1標(biāo)頭區(qū)塊及第N+1數(shù)據(jù)區(qū)塊,其中該第N+1標(biāo)頭區(qū)塊記錄該第N+1數(shù)據(jù)區(qū)塊的長度,該第N+1數(shù)據(jù)區(qū)塊記錄該第N+1外圍固件的該第N+1數(shù)據(jù)或該基本輸入輸出系統(tǒng)的數(shù)據(jù)。
8.根據(jù)權(quán)利要求3所述的存儲器管理方法,還包括再次執(zhí)行該存儲器配置初始碼,將該物理最高地址減去該第一擴充區(qū)塊的長度來產(chǎn)生配置地址,于該配置地址配置第二擴充區(qū)塊,并將該第一擴充區(qū)塊與該第二擴充區(qū)塊的總長度記錄于該第一擴充區(qū)塊的該第一標(biāo)頭區(qū)塊,且儲存第二外圍固件的第二數(shù)據(jù)或該基本輸入輸出系統(tǒng)的數(shù)據(jù)于該第二擴充區(qū)塊。
9.根據(jù)權(quán)利要求3所述的存儲器管理方法,還包括再次執(zhí)行該存儲器配置初始碼,將該物理最高地址減去該第一擴充區(qū)塊至第N擴充區(qū)塊的總長度來產(chǎn)生配置地址,于該配置地址配置第N+1擴充區(qū)塊,并將該第一擴充區(qū)塊至該第N+1擴充區(qū)塊的總長度記錄于于該第一擴充區(qū)決的該第一標(biāo)頭區(qū)塊,且儲存第N+1外圍固件的第N+1數(shù)據(jù)或該基本輸入輸出系統(tǒng)的數(shù)據(jù)于該第N+1擴充區(qū)塊。
10.根據(jù)權(quán)利要求1所述的存儲器管理方法,當(dāng)系統(tǒng)服務(wù)被呼叫之后,該方法還包括讀取該第一擴充區(qū)塊內(nèi)該第一外圍固件的該第一數(shù)據(jù);以及根據(jù)該第一數(shù)據(jù)建立操作指令以對該第一外圍固件執(zhí)行該操作指令。
全文摘要
一種存儲器管理方法,包含下列步驟自基本輸入輸出系統(tǒng)加載存儲器配置初始碼于系統(tǒng)存儲器中;執(zhí)行存儲器配置初始碼以從系統(tǒng)存儲器的物理最高地址配置第一擴充區(qū)塊,并儲存第一外圍固件的第一數(shù)據(jù)或基本輸入輸出系統(tǒng)的數(shù)據(jù)于第一擴充區(qū)塊。另外,本發(fā)明亦揭露一種計算器裝置。
文檔編號G06F9/445GK101021798SQ20071009183
公開日2007年8月22日 申請日期2007年3月23日 優(yōu)先權(quán)日2007年3月23日
發(fā)明者陳仁杰 申請人:威盛電子股份有限公司