專利名稱:程序、控制方法以及控制裝置的制作方法
技術領域:
本發明涉及程序、控制方法以及控制裝置,特別涉及適合于控制軟件的啟動的程序、控制方法以及控制裝置。
背景技術:
在個人計算機中,使OS (Operating System)啟動,直到使希望的軟件工作為止需要花費數分鐘的啟動時間。作為使其高速啟動的方法,存在稱為休眠(hibernation)的方法(例如參照專利文獻1)。在專利文獻1 中,記載了把啟動后的CPU(central processing unit)、I/O (input/ output)寄存器、RAM (Random Access Memory)映像存儲在硬盤驅動器(HDD)或閃速存儲器中。并且,記載了在下次啟動時,恢復所存儲的RAM映像,之后,再設定CPU、I/0寄存器。在專利文獻1中提出了通過如此啟動使OS啟動高速化。基于該提案的被稱為休眠的方法已經在個人計算機中應用。此外,在嵌入式計算機,例如在電視接收器、硬盤錄像機這樣的電子設備中嵌入的計算機中也應用了休眠的方法。現有技術文獻專利文獻專利文獻1 日本特開2005-149225號公報專利文獻2 日本特開2007-3;34383號公報
發明內容
發明要解決的課題當將采用休眠使OS啟動的情況與通常那樣啟動OS的情況相比時,采用休眠使OS 啟動能夠更加高速地啟動。但是,隨著RAM的容量的增加,應該保存的RAM映像的大小也增力口,在啟動時,該RAM映像的展開時間也增加。結果,伴隨RAM的大容量化,高速啟動變得困難。此外,個人計算機CPU的性能也比較高,所以即使RAM映像的大小增加,也能確保處理該RAM映像的性能。但是,在嵌入式計算機的情況下,很多時候使用CPU的性能比較低的計算機。因此,在為嵌入式計算機時,如果RAM映像增加,則即使使用休眠的方法,啟動時的速度也會降低。即,在為嵌入式計算機時,由于RAM映像的增加導致的速度降低更加顯著地體現。此外,雖然提出了通過壓縮RAM映像來減小RAM映像的大小,但是在啟動時需要展開的處理。考慮到該展開處理給CPU帶來的負荷、展開處理所需要的時間,不是在啟動高速化這一方面有效的方法。考慮到該情況,在專利文獻2中提出了在休眠的全部映像的傳輸完成之前開始執行OS的方法。但是,在該方法中需要裝配特別的硬件,并預先確定先行傳輸的頁,因此存在由于該特別的硬件導致成本相應升高的問題。本發明是鑒于這樣的狀況而提出的,其能夠縮短啟動時間。用于解決課題的手段作為本發明的一個方面的程序,用于具有管理存儲器的功能的控制裝置中,包含以下步驟針對預定的軟件的運行所需要的頁改寫頁表項,以便在全部頁中產生頁面錯誤, 在所述軟件啟動時,通過所述頁表項產生頁面錯誤,依次讀出產生了該頁面錯誤的頁。可以在所述預定的軟件啟動后改寫所述頁表項,將其啟動時的數據、程序代碼、 表、頁面錯誤處理程序、中斷向量、以及寄存器存儲在所述存儲器中。可以使所述存儲器中的存儲作為改寫對象的所述頁表項的存儲器是RAM,存儲要依次讀出的所述頁的存儲器是非易失性存儲器。可以使嵌入式的計算機讀入該程序。作為本發明的一個方面的控制方法,是具有管理存儲器的功能的控制裝置的控制方法,包含以下的步驟針對預定的軟件的運行所需要的頁改寫頁表項,以便在全部頁中產生頁面錯誤,在所述軟件啟動時,通過所述頁表項產生頁面錯誤,依次讀出產生了該頁面錯誤的頁。作為本發明的一個方面的控制裝置,是具有管理存儲器的功能的控制裝置,具有 針對預定的軟件的運行所需要的頁改寫頁表項,以便在全部頁中產生頁面錯誤的改寫單元;在所述軟件啟動時,通過所述頁表項產生頁面錯誤,依次讀出產生了該頁面錯誤的頁的讀出單元。本發明的一個方面的程序、控制方法以及控制裝置,針對預定的軟件的運行所需要的頁改寫頁表項,以便在全部頁中產生頁面錯誤,在軟件啟動時,通過頁表項產生頁面錯誤,依次讀出產生了該頁面錯誤的頁。發明效果根據本發明的一個方面,能夠縮短OS的啟動時間。
圖1表示應用本發明的信息處理裝置的一個實施方式的結構。圖2表示MMU的模型。圖3用于說明描述符。圖4用于說明物理頁的讀入。圖5用于說明物理頁的讀入。圖6用于說明物理存儲器映射。圖7是用于說明啟動處理的流程圖。圖8是用于說明啟動處理的流程圖。圖9是用于說明啟動處理的流程圖。圖10是用于說明啟動處理的流程圖。圖11是用于說明啟動處理的流程圖。
具體實施方式
以下,參照
本發明的實施方式。首先,說明本發明的概要。本發明是用于使在裝配了存儲器管理單元(Memory Management Unit( T M ^ ^ MMU))白勺 CPU (central processing unit) ± is ^fT W OS (Operating System)或應用程序等軟件高速啟動的方法。作為高速啟動對象的軟件,一度通過通常的方法啟動,該狀態下的RAM(Rand0m Access Memory)映像被保存在非易失性存儲器等中。在將RAM映像保存在非易失性存儲器等中時改寫MMU的表,變更為在全部的頁中產生頁面錯誤。在成為對象的軟件中準備了頁面錯誤處理程序,在發生了頁面錯誤時,從非易失性存儲器僅加載產生了該頁面錯誤的頁。在啟動任意的軟件,執行程序代碼,或者為了讀出該軟件的運行所需要的數據而訪問了 RAM時,每次產生頁面錯誤,把需要的頁從非易失性存儲器逐次加載到RAM中。由此, 與現有的休眠啟動不同,不需要預先把全部RAM映像從非易失性存儲器加載到主RAM中,能夠僅加載運行需要的最小限度的RAM映像。因此,能夠高速地啟動并運行希望的軟件。本申請人確認,通過使用本發明能夠把以往需要數十秒 數分鐘的OS或軟件(以下簡稱為軟件)的啟動時間縮短到數秒程度。以下具體地說明。(信息處理裝置的結構)圖1表示采用本發明的信息處理裝置的一個實施方式的結構。采用本發明的信息處理裝置當然可以用于個人計算機(PC),還可以用于具有嵌入式計算機的裝置。作為包含嵌入式計算機的裝置,具有電視接收器、硬盤錄像機這樣的電子設備。在此,以針對硬盤錄像機應用本發明時為例進行說明。圖1表示作為應用本發明的信息處理裝置的硬盤錄像機的結構。圖示的硬盤錄像機 100 具備CPU101、RAM102、ROM (Read Only Memory) 103、非易失性存儲器 104、 MPEG (Moving Picture Experts Group)編碼 / 解碼部 105、調諧器 106、UDD 接口 107、 HDD 108,1/0部109、啟動模式切換部110。CPU101控制硬盤錄像機100的各部。該CPU101裝配了存儲器管理單元(Memory Management Unit (以下記載為MMU)),具有將RAM102劃分能夠以小單位(頁)管理的機制。 在此,設MMU131包含在CPU101中來繼續說明,但還可以為MMU131不被包含在CPU101中, 而在外部具備的結構。此外,對于MMU131的形式沒有特別的限制,但是成為能夠以頁單位設定許可/禁止訪問的屬性,在訪問了禁止訪問的頁時,能夠產生頁面錯誤的例外的結構。 另外,假設CPU101的MMU131將4千字節(以下記載為4KB)作為一頁管理來繼續說明。RAM102 能夠由 SRAM (Static Random Access Memory)或 DRAM (Dynamic Random Access Memory)等構成。RAM102具有CPUlOl使用的主存儲裝置的功能,如果具有這樣的功能,則能夠作為RAM102來使用。R0M103是FLASH ROM(快閃只讀存儲器)或Mask ROM(屏蔽式堆讀內存)等只讀存儲器。R0M103存儲OS或應用程序軟件,只要能夠進行這樣的存儲,在本發明中可以使用任何種類的ROM。非易失性存儲器104是即使切斷硬盤錄像機100的電源,仍保存所存儲的內容的存儲器。例如能夠由FLASH ROM或帶有備份功能的SRAM、DRAM等構成。非易失性存儲器104在后述的軟件啟動后,存儲在RAM102中存儲的軟件的存儲器映像。因此,優選使非易失性存儲器104的容量為RAM102的容量以上的容量。但是,在想要通過數據壓縮等縮小數據時,非易失性存儲器104的容量可以在RAM102的容量以下。此夕卜,非易失性存儲器104還可以兼用作HDD108(還可以將HDD108作為非易失性存儲器108 使用)。MPEG編碼/解碼部105進行動畫的壓縮/展開。經由調諧器106提供動畫。調諧器106根據用戶的指示,從多個節目(動畫)中選擇一個動畫,提供給MPEG編碼/解碼部 105。MPEG編碼/解碼部105根據需要,經由HDD接口 107向HDD108提供來自調諧器106 的數據,或者經由HDD接口 107接收來自HDD108的數據。此外,此時根據需要來執行編碼或解碼的處理。I/O部109是為了 CPUlOl讀取啟動模式切換部110的狀態而設置的。以下說明的軟件具有用于取得高速啟動映像的通常啟動模式、作為取得高速啟動映像后的啟動模式的高速啟動模式。在這些啟動模式的切換中使用I/O部109和啟動模式切換部110。為了通常啟動模式和高速啟動模式的切換,能夠通過開關構成啟動模式切換部110。此外,為了通常啟動模式和高速啟動模式的切換,也可以根據來自引導加載程序(Boot-loader)等的命令來切換啟動模式切換部110。此外,一旦生成高速啟動的映像,則可以不需要通常啟動模式,所以可以僅安裝高速啟動模式,不需要通常啟動模式與高速啟動模式的切換。在采用這樣的結構時,也可以省略I/O部109和啟動模式切換部110。(MMU)圖2表示CPUlOl裝備的MMU131的模型。圖2所示的MMU131是32位(bit)級別以上的CPUlOl裝備的模型。MMU131的結構、物理地址、虛擬地址、在各表的索引中使用的位數、表的段數等依賴于CPUlOl的制造商,但是尤其是不依賴于制造商的架構。在此,為了說明的方便,以32位等的具體的數字為例進行說明,但該數值不是表示本發明的應用范圍的限定。MMU131在指示最終的物理頁的表內項的屬性中實現許可訪問或相當于許可訪問的功能,至少具有在不許可訪問的情況下進行了訪問時,能夠產生頁面錯誤或相當于頁面錯誤的例外處理的功能。MMU寄存器200是安裝在MMU131中的寄存器。在該寄存器中代入1級描述符表 201的起始地址。1級描述符表201是設置在存儲器上的1級存儲器表。在物理地址空間為32位時,為了指示一個地址使用32位即4字節,所以1級描述符表201的大小通過12 位空間=4KB空間X 4字節成為16KB的大小。虛擬地址202表示作為1級存儲器表的索引而使用的虛擬地址的31位至20位。 VA表示Virtual Address (虛擬地址)。當向預定的虛擬地址訪問時,從1級描述符表201 的起始地址開始,把虛擬地址的31位至20位作為索引,訪問1級描述符203。在物理地址空間為32位的CPUlOl時,為了表示一個地址使用32位即4字節,所以1級描述符的地址成為以下那樣的式子。1級描述符203的地址=1級描述符表201的起始地址+虛擬地址 202 (VA[31:20])X41級描述符203是由指示2級描述符表204的起始地址的指針和屬性構成的描述符。從2級描述符表204的起始地址開始,把虛擬地址的19位至12位作為索引,訪問2級
6描述符206。在物理地址空間為32位的CPUlOl時,為了表示一個地址使用32位即4字節,所以2級描述符的地址成為以下那樣的式子。2級描述符206的地址=2級描述符表204的起始地址+虛擬地址 205(VA[19:12]) X42級描述符206是由表示4KB的物理頁207的指針、和屬性構成的描述符。物理頁207是最終從虛擬地址變換為物理地址后的1頁的物理存儲器。通過虛擬地址 208 (VA [11:0])指定物理頁207的4KB內的地址。圖3是1級描述符203、2級描述符206的一例。圖3中的描述符只不過是一個例子,不表示本發明依賴于在這樣的一例中表示的特定的CPUlOl或架構。基地址301是指示下一個表或物理頁的起始地址的指針。屬性302至304分別是表示可/不可執行、特權模式/用戶模式這樣的屬性的屬性位。訪問許可位305是表示是否許可針對該描述符表示的物理頁的訪問的位。當訪問在該訪問許可位305中設定為禁止訪問的物理頁時,一般執行被稱為頁面錯誤的例外處理,即中斷處理,這種機構是必要的。因此,雖然不依賴于CPUlOl的架構,但需要在CPUlOl中配備頁面錯誤、或相當于頁面錯誤的功能。(物理頁)圖4模擬地表示了在RAM102(圖1)上排列了物理頁207的狀態。在RAM102中, 從物理頁207-0開始按順序直到物理頁2-7-n排列了 1頁的物理頁207。在裝備了 MMU131 的CPUlOl上運行軟件時,像這樣以4KB至64KB為單位,作為1頁來管理1頁的物理頁207 的情況較多。圖5說明在軟件為預定的運行狀態時的物理頁的使用狀況。在圖5中,記載了數字的頁是已被使用的頁,沒有記載數字的頁表示沒有被使用的頁。軟件使用的程序代碼或數據如圖4所示,即使使用整個區域,在按照某個單位時間觀察軟件的狀態時,很多時候如圖5那樣被使用。即,具有使用的頁和未使用的頁,并非使用全部的頁。在該軟件為預定的運行狀態時,使用物理頁207-0、物理頁207-2、物理頁207_4、 物理頁207-5、物理頁207-9、物理頁207-16以及物理頁207-18。S卩,如圖4所示,在RAM102 中,從物理頁207-0開始按順序直到物理頁207-n為止排列了 1頁的物理頁207,但是,當預定的軟件為預定的運行狀態時,并非使用全部的頁,而如圖5所示僅使用多個頁。在通過現有的休眠啟動進行啟動時,在軟件運行之前,如圖4所示,在從物理頁 207-0開始到物理頁207-n依次進行讀出后恢復運行開始,成為預定的運行狀態。但是實際上,該軟件為了成為預定的運行狀態,如圖5所示,僅讀出預定的多個物理頁207即可。因此,在本發明中,通過如后述那樣控制讀出,如圖5所示,僅讀出需要的物理頁207。在通過現有的休眠啟動進行啟動時,如圖4所示從物理頁207-0開始依次進行讀出,換句話說,也讀出不需要的物理頁207,所以讀出需要花費時間,結果,有時預定的軟件 (也包含OS等)的啟動變得緩慢。但是,根據本發明,如圖5所示,因為僅讀出需要的物理頁207,所以能夠縮短讀出花費的時間,能夠使預定軟件(也包含OS等)的啟動加快。圖6表示軟件的物理存儲器映射。以下說明的處理依賴于CPUlOl或0S,如果安裝了這些功能,則對結構或存儲器配置沒有限制,并非表示僅在以下的說明中采用本發明。
非易失性存儲器104是即使切換電源也保存存儲內容的存儲器。在圖6所示的例子中,作為非易失性存儲器104對FLASH ROM進行了映像。非易失性存儲器104被映射到主存儲器上,但是即使切斷電源也保存內容,并且具備RAM102以上的容量。但是,可以應用本發明的非易失性存儲器104未必需要經由I/O的訪問等映射到存儲器映射上,對架構沒有限制。數據401是程序代碼402使用的能夠讀寫的數據區域。把數據401作為物理頁 207分割為某個特定的大小來進行存儲。數據401需要能夠讀寫,所以優選放置于RAM102上。程序代碼402表示要啟動/執行的希望的程序。在一般的個人計算機中安裝了 Windows (注冊商標)或Linux這樣的0S,在為在該OS上運行的軟件時,所謂程序包含該OS 以及軟件。把程序代碼402作為物理頁207,分割為某個特定的大小來存儲。將該程序代碼 402 放置在 RAM102 或 R0M103 上。MMU表403表示圖2所示的1級描述符表201以及2級描述符表204。頁面錯誤處理程序404,是用于當MMU131的2級描述符206為禁止訪問屬性,并且發生了頁面錯誤時,經由中斷向量進行例外處理的程序。在此,與程序代碼402區分地記述了頁面錯誤處理程序404,但有時也包含在程序代碼402中。中斷向量405是一般的CPU具有的中斷向量。在發生了頁面錯誤時,程序代碼跳轉到該中斷向量內的頁面錯誤,結果,調用頁面錯誤處理程序404。與數據401、程序代碼402、MMU表403以及中斷向量405的邏輯地址對應的物理地址可以映射到任意地址。映像保存程序406是用于在啟動希望的程序后,在希望的狀態下把存儲器映像保存在非易失性存儲器104中的程序。映像保存程序406的邏輯地址和物理地址需要映射到同一地址。映像恢復程序407是用于根據需要以物理頁為單位從非易失性存儲器104讀入并恢復通過映像保存程序406的處理而保存的物理存儲器映像,并且,從非易失性存儲器104 向對應的物理頁讀入并恢復數據401或程序代碼402的程序。需要把映像恢復程序407的邏輯地址和物理地址映射到同一地址。引導加載程序408是在接通電源或復位后最初啟動的引導加載程序。引導加載程序408主要進行啟動所需要的最低限度的I/O的初始化。軟件具有這樣的結構。(軟件的動作)然后,說明應用了本發明的軟件的動作。首先說明概要,然后詳細地說明。根據本發明,可以利用軟件的局部性(locality)來高速啟動軟件。在軟件中還包含OS等。例如假設在具備容量為4GB的RAM的硬件上使預定的軟件運行。假設該預定的軟件的程序以及數據的容量的合計值為4GB。一般,軟件具有各種模式和功能,僅由預定的單一功能使用全部4GB容量的可能性極低。例如,軟件在啟動后在特定的狀態下等待來自用戶的按鍵輸入。一般在硬件復位后啟動引導加載程序,該軟件啟動,然后成為等待來自用戶的按鍵輸入的狀態。在采用作為已知技術的休眠使該軟件高速啟動時,作為生成存儲器映像的準備,在等待來自用戶的按鍵輸入的狀態下保存CPU或各I/O的寄存器,把程序代碼和數據的合計4GB存儲在任何的非易失性存儲器中。在啟動時,相反地,并不進行通常的啟動過程,而是展開4GB的存儲器, 恢復CPU和I/O寄存器,返回到按鍵輸入的處理。在上述軟件中,考慮“等待來自用戶的輸入”這樣的狀態。在該狀態下重復進行按鍵輸入處理,與這樣的按鍵輸入所涉及的處理有關的程序代碼或數據比較小。本發明使用這樣的原理實現高速啟動。動作大致分為以下種類。(A)在通常啟動模式下啟動OS或希望的軟件,使該軟件處于希望的狀態。(B)啟動映像保存程序,通過該啟動后的映像保存程序,在為了禁止對MMU131的全部頁表進行訪問而把預定的信息改寫為表示禁止訪問的信息后,把上述(A)的存儲器映像保存在寄存器中然后結束。(C)在下一次以后,通過設為高速啟動模式,在(A)希望的狀態下啟動。在實現這樣的高速啟動時,作為基本的準備,如通常那樣啟動軟件,使該軟件成為希望的狀態,然后保存存儲器映像或寄存器。在高速啟動時,與休眠啟動不同,不是將全部的存儲器映像在主存儲器中展開,而是根據需要,把實際上所使用的存儲器、即僅一部分程序代碼或數據逐漸展開。作為逐漸將程序代碼或存儲器在主存儲器中展開的方法,作為本實施方式舉出使用CPU具有的存儲器管理單元(MMU131)的例子來進行說明。有時OS也使用MMU131,但是在OS使用前,應用了本發明的軟件復原,OS不關心應用了本發明的軟件操作了 MMU131。具體地說,在保存存儲器映像之前,改寫MMU131的表的內容,將全部的頁設定為禁止訪問。此外,應用了本發明的軟件還具有賦予已將上述頁設為禁止訪問的標記(mark) 的功能。假設希望的軟件在OS上運行,該OS使用MMU131的情況也相同。在高速啟動時,僅 MMU131的表以及CPU的寄存器先行被恢復。然后,返回生成存儲器映像后的地址。MMU131 的表被設定為全部禁止訪問,所以在跳轉到返回地址時產生頁面錯誤。數據訪問時也相同。 處理頁面錯誤的頁面錯誤處理程序104根據發生了頁面錯誤的地址計算頁,并且,應用了本發明的軟件檢查已標注的標記,從非易失性存儲器104向主存儲器(例如RAM1(^)讀入該頁,把MMU131的表寫回改寫前的原始狀態。通過重復這樣的處理,即使是大容量的存儲器映像,為了恢復到希望的狀態僅讀入最低限度的存儲器映像即可,能夠高速啟動。(動作的細節)如上所述,根據本發明,與通常的啟動相比能夠將希望的軟件高速地啟動到某狀態。當大致劃分進行該高速啟動的過程時,為了方便記載,分為(A)、(B)、(C)三類。在參照流程說明之前對(A)、(B)、(C)做進一步說明。(A)、(B)的一系列的流程是如果執行一次, 則不必每次進行的處理。通常,通過從(C)開始執行,能夠進行高速啟動。(A)通常啟動(A-I)把啟動模式切換部110設定為通常啟動模式,通過通常的方法啟動OS或希望的程序。(A-2)在啟動希望的程序后,操作軟件來使軟件成為希望的狀態。在高速啟動時, 在該狀態下啟動。(B)狀態的保存
(B-I)根據某個按鍵或命令等啟動映像保存程序406。對與該啟動有關的啟動方法沒有特別的限制。(B-2)映像保存程序406在下次以后想要高速啟動的狀態下,保存存儲器映像和寄存器。具體地說,映像保存程序406把MMU131的表全部設定為禁止訪問狀態,把該時刻的數據401、程序代碼402、MMU表403、頁面錯誤處理程序404、中斷向量405以及寄存器類保存在非易失性存儲器104中。(C)高速啟動(C-I)將啟動模式切換部110設定為高速啟動模式。引導加載程序408判斷啟動模式,在為高速啟動模式時,調用映像恢復程序407。映像恢復程序407使映像保存程序406 所保存的MMU表403、頁面錯誤處理程序404、中斷向量405恢復。(C-2)返回即跳轉到在B-I的處理中啟動了映像保存程序406后的地址。因為 MMU131全部被設定為禁止訪問狀態,所以在每次訪問程序代碼402或數據401時,在對應的地址產生頁面錯誤,調用頁面錯誤處理程序404。(C-3)頁面錯誤處理程序404從非易失性存儲器104中讀出一頁的對應的物理頁 207,使 MMU131 復原。(C-4)頁面錯誤逐個發生,在成為A-2的狀態之前持續發生必要的頁面錯誤。(C-5)讀入物理頁207直到成為A-2狀態為止。在該處理中讀入的物理頁207還依賴于執行的軟件或其狀態,但是極其少,與通過現有的休眠技術進行的那樣讀入全部的物理頁207相比,能夠顯著縮短啟動時間。參照圖7至圖11的流程圖,進一步說明上述㈧、⑶、(C)的各動作。圖7的流程圖相當于上述(A)、⑶的處理。S卩,主要是與從接通電源到保存映像的處理有關的流程圖。在步驟SlOl中,接通硬盤錄像機100(圖1)的電源,或者發生復位來啟動系統。在步驟S102中,啟動引導加載程序408(圖6)。在該步驟S102啟動的引導加載程序408為了運行OS或希望的軟件,假設進行最低限度的硬件的初始化,或者根據需要把 R0M103或HDD108中存儲的軟件傳輸到RAM102的處理,只要是能夠執行這樣的處理的引導加載程序即可。引導加載程序408依賴于系統,但并非是必須的。因此,根據系統有時省略該步驟S102。在步驟S103中,檢查啟動模式切換部110的狀態,切換通常啟動模式或高速啟動模式的遷移(判斷通常啟動開關是否為開(ON))。在啟動模式切換部110為通常啟動模式時,處理前進到步驟S104,在為高速啟動模式時前進到步驟S161 (圖9)。在步驟S103中,當判斷為通常啟動開關為開(ON)時,因為在通常啟動模式下啟動,所以把通常啟動標志設為開(ON)。在把通常啟動標志設為開(ON)時,處理進入到步驟 S105,如果是裝配了 OS的系統,則啟動OS。在為一般的系統時,在啟動OS時對MMU131進行初始化,生成圖2的MMU131的表。在本發明中,OS的裝配不是必須的,但假設在沒有裝配 OS時需要進行MMU131的初始化。此外,即使在裝配了 OS時,在OS的種類等方面不存在限制。在步驟S106中,啟動想要高速啟動的希望的軟件。在步驟S107中,啟動的軟件運行。該處理相當于上述的A-2的處理。使軟件遷移到與通過高速啟動啟動后的狀態相同的狀態。例如,假設在希望的軟件中存在多個模式,若要以其中的某個特定的模式高速啟動, 則操作軟件遷移到該模式。例如,在為硬盤錄像機100時,具有預約的模式、再生的模式、設定的模式等,但在用戶頻繁地使用再生的模式時,遷移到再生模式。在步驟S108中,判斷是否開始了映像保存程序406(圖6)的處理。該處理相當于上述的B-I的處理。通過命令或按鍵操作、開關等,開始映像保存程序406的處理。對該映像保存程序406的執行單元沒有限制。在步驟S108中判斷為沒有開始映像保存程序406 (圖 6)的處理時,處理返回到步驟S107,重復這以后的處理。即,此時繼續軟件的運行。另一方面,在步驟S107中判斷為已經開始了映像保存程序406 (圖6)的處理時, 換句話說,在判斷為軟件的運行結束時,處理前進到步驟S109。以下的步驟S109至S116的處理相當于上述B-2的處理。此外,步驟S109至步驟S116的處理是映像保存程序406執行的處理。在步驟S109中,保存圖1所示的I/O部109的寄存器。基本上取得設定的值并保存。關于1/0,如果不是能讀取全部寄存器的形式的1/0,需要單獨地應對。I/O的種類或形式是任意的,特別是在應用本發明方面沒有限制。在步驟SllO中,保存CPUlOl的寄存器。基板上保存CPUlOl的全部寄存器。CPUlOl 和寄存器的種類是任意的,特別在應用本發明的方面沒有限制。在步驟Slll中進行地址空間的切換。CPUlOl通常在虛擬地址模式下工作。該模式從虛擬地址模式遷移到物理地址模式。因為從虛擬地址模式向物理地址模式的遷移方法依賴于MMU131的架構,所以在應用本發明的遷移方法中沒有限制。此外,在從虛擬地址模式遷移到物理地址模式時,因為地址空間變化,所以在步驟Slll的處理中,邏輯地址和物理地址需要映射到同一地址空間。在步驟S112 中,執行緩存清空(cache flush)。CPUlOl 裝配 TLB (Translation Look-aside Buffer)、一次高速緩沖存儲器、二次高速緩沖存儲器,在它們有效時,需要清空TLB以及高速緩沖存儲器。這是因為,在下面的步驟S113中需要改寫放置在RAM102上的MMU表403的內容,需要在全部的RAM102中反映在高速緩沖存儲器中存儲的數據。該步驟S112中的緩存清空的處理,根據需要來進行,根據情況也可以省略。在步驟S113中,把MMU131的MMU表403改寫為禁止訪問全部的物理頁207的信息。將在后面參照圖8的流程圖說明該步驟S113中的MMU表改寫處理。在步驟Sl 13中,當改寫了 MMU131的MMU表403時,處理前進到步驟Sl 14。在步驟 S114中執行緩存清空。CPUlOl裝配TLB、一次高速緩沖存儲器、二次高速緩沖存儲器,在它們有效時需要清空TLB以及高速緩沖存儲器。這是為了可靠地向RAM102反映在前級的步驟S113的處理中改寫的MMU131的MMU表403的內容。該步驟S114的緩存清空的處理,根據需要而執行,根據情況也可以省略。在步驟S115中,對于非易失性存儲器104,將RAM102的全部容量的內容全部保存。 非易失性存儲器104的相對于RAM102的地址的相對的地址位置需要一致。例如,假定把 RAM102的物理地址從0x10000000映射到Oxlfffffff。此時,例如需要針對非易失性存儲器104,根據從0x40000000到0x4fffffff的地址,讀入數據。在該例子時,非易失性存儲器104的相當于RAM102的地址的偏移為0x30000000, 所以即使是針對RAM102的地址,僅通過相加0x30000000的偏移,就能夠變換為非易失性存儲器104內的地址。未必需要把非易失性存儲器104映射到存儲器映射上。只要能夠以相加了上述偏移后的地址為關鍵字(key)進行讀入即可。此外,針對非易失性存儲器104的保存方法依賴于架構,但在應用本發明方面該保存方法沒有限制。在步驟S116中,結束映像保存程序406的處理。通過結束映像保存程序406的處理,成為能夠切斷電源或進行復位(RESET)的狀態。在圖7所示的流程圖中,還沒有對在步驟S103中判斷為通常啟動開關不是開(ON) 時的處理、和步驟S113中的MMU表改寫處理進行詳細說明,但是首先在此參照圖8的流程圖詳細說明步驟S113中的MMU表改寫處理。基于圖8所示的流程圖的處理,是MMU131的MMU表403成為圖2所示的結構,改寫該MMU表403的處理。在步驟S131中,當開始MMU131的MMU表403的改寫時,首先,把1級描述符表201 的初始地址代入到變量1級描述符指針中。在步驟S132中,從變量1級描述符指針指示的地址取得1級描述符203。在步驟S133中,判斷在步驟S132的處理中取得的1級描述符203中是否存在向2 級描述符表204的指針。在步驟S133中判斷為在1級描述符203內存在向2級描述符表 204的指針時,處理前進到步驟S136,在判斷為在1級描述符203內不存在向2級描述符表 204的指針時,處理前進到步驟S134。在步驟S134中,將變量1級描述符指針移動到下一個1級描述符指針的地址。然后,處理前進到步驟S135,判斷1級描述符指針是否到達最后。直到在步驟S135中判斷出1級描述符指針到達最后為止,重復進行使處理返回到步驟S134,將變量1級描述符指針移動到下一個1級描述符指針的地址的處理。然后,當在步驟S135中判斷出1級描述符指針到達最后時,處理前進到步驟S114(圖7)。S卩,判斷出 MMU表的改寫已結束,處理返回到圖7所示的流程圖的處理。另一方面,當在步驟S133中判斷為在1級描述符203內存在向2級描述符表204 的指針時,處理前進到步驟S136。在步驟S136中,把2級描述符表204的初始地址代入到變量2級描述符指針中。在步驟S137中,從變量2級描述符指針指示的地址得到2級描述符206。在步驟 S138中判斷在通過步驟S137的處理取得的2級描述符206內是否存在物理頁207。當在步驟S138中判斷為在取得的2級描述符206內存在物理頁207時,處理前進到步驟S139, 在判斷在取得的2級描述符206內不存在物理頁207時,處理前進到步驟S143。在步驟S139中,判斷在步驟S137的處理中取得的2級描述符206內的物理頁207 是否在步驟S115(圖7)中成為保存對象的RAM102內的地址的范圍內。當在S139中判斷出2級描述符206內的物理頁207在成為保存對象的RAM102內的地址范圍內時,處理前進到步驟S140,當判斷為不在成為保存對象的RAM102內的地址的范圍內時,處理前進到步驟 S143。在步驟S140中,檢查在步驟S137中取得的2級描述符206的訪問許可位(圖3 的訪問許可位305),判斷是否許可訪問該物理頁207。當在步驟S140中判斷為許可向物理頁207訪問時,處理前進到步驟S141,在判斷為不許可向物理頁207訪問時,處理前進到步驟 S143。
12
在步驟S141中,把在步驟S137的處理中取得的2級描述符206的訪問許可位 305改寫為表示禁止訪問的位。然后,在步驟S142中,對改寫后的2級描述符206執行標記(marking)。為了保存(標記)用于識別通過應用了本發明的軟件還是通過其他軟件例如通過本來的OS的動作改寫了在步驟S137的處理中取得的2級描述符206的訪問許可位 305的信息而進行該處理。步驟S142中的標記的方法依賴于架構,在應用本發明的方面沒有限制。例如,如果在2級描述符206中存在不使用的空位,則可以將該空位作為嵌入標記的信息的位來使用。此外,可以具有其他的表來管理被標記的地方和沒有被標記的地方。無論是哪種情況, 假設是裝配了 OS等的系統,并且OS使用了這些位的情況下,通過采取共存的機制,能夠實施本發明。在步驟S143中,把變量2級描述符指針移動到下一個2級描述符206的指針的地址。當在步驟S138中判斷為在2級描述符206內不存在物理頁207時,在步驟S139中判斷為2級描述符206沒有指示RAM102時,或者在步驟S140中判斷為沒有許可向物理頁207 的訪問時,來到該步驟S143的處理。在步驟S144中,判斷2級描述符指針是否到達了最后。直到在步驟S144中判斷為2級描述符指針到達最后為止,處理返回到步驟S137,重復進行這以后的處理。另一方面,當在步驟S144中判斷為2級描述符指針到達最后時,處理前進到步驟S134。已經說明了步驟S134以后的處理,所以省略其說明。如此,改寫MMU131 的 MMU 表 403。然后,說明高速啟動時的處理。當在步驟S103中判斷通常啟動開關沒有成為看開 (ON)時,即在判斷為將開關切換到高速啟動時執行高速啟動。圖9的流程圖是在步驟S103 中判斷為通常啟動開關沒有成為開(ON)時處理前進的流程圖,是用于說明高速啟動時的處理的流程圖。在步驟S161中,為了通過高速啟動模式進行啟動,把通常啟動標志設定為關 (OFF)(高速啟動標志為開(ON))。在步驟S162中,根據需要把中斷向量405、頁面錯誤處理程序404、MMU表403讀入到與保存映像時相同的RAM102的地址中。在步驟S163中,讀入MMU131的MMU表。將在后面參照圖10的流程圖說明在該步驟S163中執行的MMU表讀入處理。當MMU表的讀入結束時,處理前進到步驟S164。在步驟S164中,把CPUlOl的地址空間從物理地址模式遷移到虛擬地址模式。在從物理地址模式向虛擬地址模式遷移時,因為地址空間變化,所以在步驟S164的處理中把邏輯地址和物理地址映射到同一地址空間。在步驟S165中,從非易失性存儲器104讀出在步驟SllO (圖7)中保存的CPUlOl 的寄存器的值,對于CPUlOl進行恢復。CPUlOl或寄存器的種類為任意的,在應用本發明方面沒有限制。在步驟S166中,從非易失性存儲器104讀出在步驟S109(圖7)中保存的I/O的寄存器的值,對于I/O部109進行恢復。I/O的種類或形式為任意的,在應用本發明方面沒有限制。當如上所述恢復了寄存器等時,處理前進到步驟S107(圖7)。在步驟S107中,軟件運行。此時,不執行步驟S104至S106的處理,在步驟S107中軟件開始運行。由此,至少能夠將直到軟件能夠開始運行所花費的時間縮短執行步驟S104至S106的處理所需要的時間。特別是能夠消除步驟S105中的OS的啟動或MMU的初始化所需要的時間以及步驟S106 中軟件的啟動所需要的時間,由此能夠期待大幅度縮短時間。返回圖9的流程圖的說明,參照圖10的流程圖詳細說明在步驟S163中執行的MMU 表讀入處理。在步驟S181中,當開始讀出MMU表403時,首先讀出1級描述符表201。該1級描述符表201在步驟S115(圖7)的處理中,在非易失性存儲器104中保存了 RAM102的內容, 但從在該非易失性存儲器104中保存的內容中僅讀出1級描述符表201。在步驟S182中,把1級描述符表201的初始地址代入到變量1級描述符指針中。 在步驟S183中,從變量1級描述符指針指示的地址取得1級描述符203。在步驟S184中, 判斷在通過步驟S183的處理取得的1級描述符203內是否存在向2級描述符表204的指針。當在步驟S184中判斷為在取得的1級描述符203內存在向2級描述符表204的指針時,處理前進到步驟S187,在判斷為在取得的1級描述符203內不存在向2級描述符表 204的指針時,處理前進到步驟S185。在步驟185中,使變量1級描述符指針移動到下一個1級描述符指針的地址。然后,在步驟S186中,判斷1級描述符指針是否到達最后。當在步驟S186中判斷出1級描述符指針到達最后時,處理前進到步驟S164(圖9)。S卩,此時,MMU表403的讀入已完成,所以處理向下一個處理前進。另一方面,當在步驟S186中判斷為1級描述符203沒有達到最后時,處理返回到步驟S183,重復其以后的處理。重復步驟S183至S186,當在步驟S184中判斷為在取得的 1級描述符203內存在向2級描述符表204的指針時,處理前進到步驟S187。在步驟S187中判斷在步驟S183中取得的1級描述符203內的向2級描述符表204 的指針是否指示RAM102。當在步驟S187中判斷為向2級描述符表204的指針指示RAM102 時,處理前進到步驟S188,在判斷為向2級描述符表204的指針沒有指示RAM102時,處理前進到步驟S185,重復以后的處理。在步驟S188中讀出2級描述符表。該2級描述符表204在步驟Sl 15 (圖7)的處理中,作為RAM102的內容保存在非易失性存儲器104中,從在該非易失性存儲器104中保存的內容中僅讀出2級描述符表204。之后,處理前進到步驟S185,重復以后的處理。如此,進行MMU表的讀出。然后,參照圖11的流程圖,對發生了頁面錯誤時執行的處理進行說明。在步驟 S201中,當發生了頁面錯誤時跳轉到中斷向量405。即,執行從中斷向量405向進行實際的頁面錯誤處理的中斷處理器的跳轉。一般的CPUlOl在發生了頁面錯誤時,作為中斷處理跳轉到特定的中斷向量,作為其中斷處理程序來處理。圖11所示的發生頁面錯誤時的處理的流程圖假設處理頁面錯誤的中斷的中斷處理程序,但它們依賴于CPUlOl的架構。關于本發明的應用,并沒有根據 CPUlOl的制造商或型號施加了限制。在步驟S202中判斷通常啟動標志是否為開(ON)。例如,在步驟S104(圖7)的處理中,把通常啟動標志設定為開(ON)。當在步驟S202中判斷為通常啟動標志為開(ON)時,換句話說,在判斷為通常啟動時,處理前進到步驟S207。另一方面,當在步驟S202中判斷為通常啟動標志不是開(ON)時,換句話說,在判斷為高速啟動時,處理前進到步驟S203。在步驟S203中判斷成為對象的物理頁207,即與發生了頁面錯誤的地址對應的物理頁207是否為被標記的物理頁207。標記是在步驟S142(圖8)的處理中執行的標記。即, 被標記的物理頁207是通過應用了本發明的軟件被改寫為禁止訪問的物理頁207。一般在物理頁207和地址中滿足以下的計算式,但是因為它們依賴于CPUlOl的架構,所以該計算式不限定本發明的應用范圍。物理頁=地址/頁大小(例如在上述例子中為4KB)如該計算式所示,物理頁是地址除以頁大小得到的計算值。當在步驟S203中判斷為與發生了頁面錯誤的地址對應的物理頁207是被標記的物理頁207時,處理前進到步驟S204,在判斷為是沒有被標記的物理頁207時,處理前進到步驟S207。在步驟S204中,從通過步驟S115(圖7)的處理在非易失性存儲器104中保存的映像僅讀出4KB的成為對象的物理頁207,即與發生了頁面錯誤的地址對應的物理頁207。在步驟S205中,把成為對象的物理頁207,即與發生了頁面錯誤的地址對應的物理頁207的2級描述符206的訪問許可位305改寫為許可訪問。在步驟S206中解除在步驟S142(圖8)的處理中標記的識別信息。如此,通過執行發生了頁面錯誤時的處理,能夠實現高速啟動。另一方面,在發生了頁面錯誤,但是在步驟S202中判斷為通常啟動標志為開(ON) 時,或者在步驟S203中判斷為沒有標記對象頁時,處理前進到步驟S207。在步驟S207中執行標準的頁面錯誤的處理。即,在通常啟動時,或者在應用本發明的軟件以外的軟件(OS 等)將訪問設定為不許可時,執行通常啟動或不許可訪問時的處理。當在應用了本發明的系統中裝配了 OS等時,通常安裝了標準的頁面錯誤處理程序。與此相對,當在系統中安裝了上述那樣的頁面錯誤功能時,有時也需要重新執行OS本來進行的頁面錯誤處理。該步驟S207的處理依賴于OS等系統,但不是必須的處理,所以作為本實施方式可以省略。如此,通過執行發生了頁面錯誤時的處理,能夠實現高速啟動。(效果)如上所述,在裝配了存儲器管理單元(MMU)或與MMU相當的存儲器管理功能的計算機系統上,對于MMU的表改寫頁表項,以便針對軟件的運行所需要的RAM的最小單位、即所謂的頁,在全部的頁中發生頁面錯誤,在啟動時,針對對于要訪問的RAM產生的頁面錯誤,通過不僅把本來的OS等具有的已知技術、即頁入/頁出(pagein/pageout)的功能,還把發生的頁面錯誤的功能用于所保存的存儲器映像的以頁為單位的讀取,由此,具有以下的效果。首先,能夠實現必要的最小限度的存儲器映像的讀入容量。由此,例如能夠縮短個人計算機的啟動時間。具體地說,與目前需要數十秒至數分鐘的啟動時間相比,能夠在數秒以內啟動。此外,能夠縮短數字家電的啟動時間。在電視接收器或硬盤錄像機等數字家電 (電子設備)中,具有裝配了 OS(預定的軟件)的機種。雖然在裝配了預定軟件的設備時啟動時間有時變長,但是通過應用本發明,能夠縮短這些數字家電的啟動時間。此外,能夠延長電池的壽命。作為現有的用于實現高速啟動的方法,具有使CPU 或存儲器轉移到省電模式的方法。在該方法中,雖然稱為省電模式,但需要電力,對于通過電池工作的設備來說無法忽視其功耗。通過應用本發明,能夠在非易失性存儲器中保存啟動映像,不需要使用在向RAM提供電源的情況下停止的所謂的掛起(對應于現有的省電模式)。由此,結果可以顯著延長電池壽命。并且,能夠實現家電產品的節能化。電視接收器或硬盤錄像機等一般啟動慢,因此還存在具有成為“高速啟動模式”的模式。但是,該“高速啟動模式”為了高速啟動家電產品,通常通過接通電源來實現高速啟動。因此,與接通電源時同等地消耗電力。但是,通過應用本發明可以縮短啟動時間,可以通過與“高速啟動模式”時使用的啟動時間等同的、或者更短的啟動時間進行啟動,不需要設置“高速啟動模式”。因此,能夠取消在“高速啟動模式”時必須始終接通電源的狀態,因此能夠實現節能化。上述計算機執行的程序,可以是按照在本說明書中說明的順序按時間序列地進行處理的程序,還可以是并行地或者在進行了調用時等必要的時刻進行處理的程序。此外,還可以通過專用的硬件構成。此外,在本說明書中,系統表示由多個裝置構成的裝置全體。本發明的實施方式不限于上述的實施方式,在不超出本發明主旨的范圍內可以進行各種變更。符號說明100 硬盤錄像機;101CPU ; 102RAM ; 103R0M ;104 非易失性存儲器;105MPEG 編碼 / 解碼部;106調諧器;107HDD接口 ; 108HDD ;1091/0部;110啟動模式切換部
權利要求
1.一種計算機可讀取的程序,用于具有管理存儲器的功能的控制裝置中,所述程序的特征在于,包含以下步驟針對預定的軟件的運行所需要的頁改寫頁表項,以便在全部頁中發生頁面錯誤, 在所述軟件啟動時,通過所述頁表項發生頁面錯誤,依次讀出發生了該頁面錯誤的頁。
2.根據權利要求1所述的程序,其特征在于,在啟動所述預定的軟件后改寫所述頁表項,把該啟動時的數據、程序代碼、表、頁面錯誤處理程序、中斷向量以及寄存器存儲在所述存儲器中。
3.根據權利要求1所述的程序,其特征在于,所述存儲器中的存儲成為改寫對象的所述頁表項的存儲器是RAM,存儲要依次讀出的所述頁的存儲器是非易失性存儲器。
4.根據權利要求1所述的程序,其特征在于, 由嵌入式計算機讀入該程序。
5.一種具有管理存儲器的功能的控制裝置的控制方法,其特征在于, 包含以下步驟針對預定的軟件的運行所需要的頁改寫頁表項,以便在全部頁中發生頁面錯誤, 在所述軟件啟動時,通過所述頁表項發生頁面錯誤,依次讀出發生了該頁面錯誤的頁。
6.一種具有管理存儲器的功能的控制裝置,其特征在于,具備改寫單元,其針對預定的軟件的運行所需要的頁改寫頁表項,以便在全部頁中發生頁面錯誤;以及讀出單元,其在所述軟件啟動時,通過所述頁表項發生頁面錯誤,依次讀出發生了該頁面錯誤的頁。
全文摘要
本發明涉及能夠縮短啟動時間的程序、控制方法以及控制裝置。在裝配了存儲器管理單元(MMU)的計算機系統中,針對MMU的表改寫頁表項,以便針對軟件的運行所需要的頁,在全部的頁中發生頁面錯誤。啟動時,對于針對要訪問的RAM產生的頁面錯誤,執行已保存的存儲器映像的頁面單位的讀入。通過進行這樣的讀入,不進行不需要的頁的讀入,能夠縮短相應量的啟動時間。本發明可以用于個人計算機或具備嵌入式計算機的電子設備。
文檔編號G06F9/54GK102460384SQ20108002465
公開日2012年5月16日 申請日期2010年3月5日 優先權日2009年6月2日
發明者橋本健一 申請人:株式會社普存微軟