專利名稱:計(jì)算機(jī)系統(tǒng)、存儲器管理方法及其程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)、存儲器管理方法及其程序,更具體而言,涉 及這樣的計(jì)算機(jī)系統(tǒng)、存儲器管理方法及其程序,其使得能夠?qū)?jīng)壓縮、
加密然后存儲在非易失性存儲介質(zhì)(例如ROM)中的數(shù)據(jù)進(jìn)行管理,以 實(shí)現(xiàn)到主存儲單元(例如RAM)的高效傳送。
背景技術(shù):
用于啟動計(jì)算機(jī)的控制程序被存儲在諸如ROM這樣的容量較大但訪 問速率較低的非易失性存儲介質(zhì)中。相關(guān)技術(shù)的一種作法是在系統(tǒng)重置 (初始化操作)完成之后將控制程序從例如作為非易失性存儲介質(zhì)的 ROM傳送到作為主存儲單元的RAM。因此,在用戶加電之后,他/她必須
等待較長的時間才能使用信息處理器。
如上所述,主存儲映像(main storage image)較大。因此,為了減少 啟動時間,必須節(jié)省諸如ROM這樣的非易失性存儲介質(zhì)的容量,而為了 滿足這一要求,進(jìn)行了這樣的嘗試,即壓縮主存儲映像(OS的控制程 序)并保存獲得的映像。在例如文獻(xiàn)1 (美國專利No. 6,496,882)中公開 的一種壓縮兼容啟動系統(tǒng)中,為了減小諸如ROM這樣的非易失性存儲介 質(zhì)的容量,在啟動之后立即需要的主存儲映像被按邏輯塊壓縮,并且在對 某個邏輯塊迸行第一次訪問時,與該邏輯塊相對應(yīng)的壓縮數(shù)據(jù)被從非易失 性存儲介質(zhì)讀出,被解壓縮并且被展開到RAM上。保存各個壓縮塊 (compressed block)的ROM地址被寫在管理表中,并且當(dāng)從ROM讀取 壓縮塊時,通過使用參考管理表而獲得的地址來執(zhí)行從ROM的讀取。在 這種情況下,計(jì)算機(jī)系統(tǒng)中的存儲器管理設(shè)備將主存儲存儲器的物理地址 作為具有預(yù)定寬度的片段來管理。
另一方面,由應(yīng)用程序指定的地址(被稱為邏輯地址)是通過映射作
為具有預(yù)定寬度的片段的物理地址的塊并對這些塊進(jìn)行變換以使得它們看 起來在邏輯上是連續(xù)的,從而來獲得的,并且其變換表是由操作系統(tǒng)
(OS)管理的。由CPU中的MMU (存儲器管理單元)緩存的變換表中 的條目被稱為TLB (變換后備緩沖器:Translation Look-aside Buffer)。
但是,在上述相關(guān)技術(shù)(文獻(xiàn)1)中,當(dāng)讀取壓縮塊時,雖然非易失 性存儲介質(zhì)中的塊包括數(shù)據(jù)的兩個或更多個邏輯塊,但是在每個異常處理 中它們是被分開讀取的,從而有時會造成這樣一個問題,即諸如ROM這 樣的將被按塊訪問的非易失性存儲介質(zhì)的一個塊被讀取了兩次或更多次。
此外,由于要讀取的經(jīng)轉(zhuǎn)換的數(shù)據(jù)是跨非易失性存儲介質(zhì)上的兩個塊 地被保存的,因此當(dāng)展開邏輯塊的數(shù)據(jù)時,按塊的訪問可能會讀取諸如 ROM這樣的非易失性存儲介質(zhì)的多個塊,從而陷于兩個TLB條目被使用 的情況,導(dǎo)致對高速啟動的妨礙。
因而,本發(fā)明的一個示例性目的是提供一種計(jì)算機(jī)系統(tǒng)、計(jì)算機(jī)系統(tǒng) 的存儲器管理方法及其管理程序,它們使得在諸如ROM這樣的非易失性 存儲介質(zhì)中經(jīng)壓縮和加密的所存儲的程序和數(shù)據(jù)能夠被高效地傳送到/展開 到諸如RAM這樣的主存儲單元上,從而即使在要讀取的物理塊的大小改 變的情況下也能減少計(jì)算機(jī)系統(tǒng)的啟動時間。
發(fā)明內(nèi)容
本發(fā)明采用了一種方法,該方法在將通過壓縮、加密等等而轉(zhuǎn)換的程 序存儲在非易失性存儲單元中時,存儲該程序以便不跨越塊之間的邊界, 并且在首次訪問某個塊時,將該塊中包括的所有數(shù)據(jù)展開到主存儲單元的 相應(yīng)塊上。
根據(jù)本發(fā)明的第一示例性方面, 一種計(jì)算機(jī)系統(tǒng),具有非易失性存儲 單元、主存儲單元以及數(shù)據(jù)處理器,該數(shù)據(jù)處理器包括存儲器管理單元, 用于管理存儲在非易失性存儲單元和主存儲單元中的程序以將存儲在非易 失性存儲單元中的程序傳送到主存儲單元,其中存儲器管理單元包括程 序存儲控制功能,用于將經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序和尚待經(jīng)歷預(yù)定數(shù)據(jù) 轉(zhuǎn)換的程序存儲在非易失性存儲單元中;以及以下功能在執(zhí)行程序存儲
控制功能時對經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序進(jìn)行組合以便不跨越塊之間的邊 界,并且在對某個塊進(jìn)行第一次訪問時,將該塊中包括的所有數(shù)據(jù)展開到 主存儲單元的相應(yīng)塊。
根據(jù)本發(fā)明的第二示例性方面, 一種計(jì)算機(jī)系統(tǒng),具有非易失性存儲 單元、主存儲單元以及數(shù)據(jù)處理器,該數(shù)據(jù)處理器包括存儲器管理單元, 用于管理存儲在非易失性存儲單元和主存儲單元中的程序以將存儲在非易 失性存儲單元中的程序傳送到主存儲單元,其中存儲器管理單元包括程 序存儲控制功能,用于將經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序和尚待經(jīng)歷預(yù)定數(shù)據(jù) 轉(zhuǎn)換的程序存儲在非易失性存儲單元中;程序逆向轉(zhuǎn)換功能,其在整個系 統(tǒng)啟動之后存在OS和應(yīng)用的存儲器訪問時可操作,用于將存儲在非易失 性存儲單元中的程序傳送到主存儲單元,以對該程序進(jìn)行逆向轉(zhuǎn)換;物理 地址改變功能,用于將存儲在非易失性存儲單元中的程序的物理地址改變
為主存儲單元的物理地址;以及容量分配功能,用于分配多個邏輯塊的容
量,該多個邏輯塊用于對包括分配給存儲在非易失性存儲單元中的程序的 預(yù)定容量的一個物理地址的塊中的數(shù)據(jù)進(jìn)行展開。
根據(jù)本發(fā)明的第三示例性方面, 一種計(jì)算機(jī)系統(tǒng),具有非易失性存儲 單元、主存儲單元以及數(shù)據(jù)處理器,該數(shù)據(jù)處理器包括存儲器管理單元, 用于管理存儲在非易失性存儲單元和主存儲單元中的程序以將存儲在非易
失性存儲單元中的程序傳送到主存儲單元,其中存儲器管理單元包括地
址變換單元,其在存在來自程序的存儲器訪問時可操作以將邏輯塊地址變
換成物理塊地址;映射表單元,其保存地址變換單元的信息;保護(hù)信息單 元,其保存邏輯塊地址的原始保護(hù)信息;以及映射表改變單元,其在發(fā)生 異常時更新映射表單元的條目。
根據(jù)本發(fā)明的第四示例性方面, 一種計(jì)算機(jī)系統(tǒng),具有非易失性存儲 單元、主存儲單元以及數(shù)據(jù)處理器,該數(shù)據(jù)處理器包括存儲器管理單元, 用于管理存儲在非易失性存儲單元和主存儲單元中的程序以將存儲在非易
失性存儲單元中的程序傳送到主存儲單元,其中存儲器管理單元包括地
址變換單元,其在存在來自程序的存儲器訪問時可操作以將邏輯塊地址變
換成物理塊地址;映射表單元,其保存地址變換單元的信息;以及映射表 改變單元,其在發(fā)生異常時更新映射表單元的條目,其中映射表單元將每 個邏輯塊的原始保衛(wèi)模式保存在經(jīng)轉(zhuǎn)換的數(shù)據(jù)中。
根據(jù)本發(fā)明的第五示例性方面, 一種被構(gòu)造為將存儲在非易失性存儲 單元中的程序傳送到主存儲單元的計(jì)算機(jī)系統(tǒng)的存儲器管理方法,包括 第一步驟,即將經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序和尚待經(jīng)歷預(yù)定數(shù)據(jù)轉(zhuǎn)換的程 序存儲在非易失性存儲單元中;第二步驟,該步驟在計(jì)算機(jī)系統(tǒng)啟動之后 存在OS和應(yīng)用程序的存儲器訪問時可操作以將存儲在非易失性存儲單元 中的程序中的經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序傳送到主存儲單元以執(zhí)行該預(yù)定 數(shù)據(jù)轉(zhuǎn)換的逆向轉(zhuǎn)換;第三步驟,即將存儲在非易失性存儲單元中的程序 的物理地址改變?yōu)橹鞔鎯卧奈锢淼刂罚灰约暗谒牟襟E,即分配多個邏 輯塊的容量,用于對包括分配給存儲在非易失性存儲單元中的程序的預(yù)定 容量的一個物理地址的塊中的數(shù)據(jù)進(jìn)行展開。
如上所述,根據(jù)本發(fā)明,對物理塊的訪問只發(fā)生一次,這使得高效的 存儲器管理能夠有效地減少計(jì)算機(jī)系統(tǒng)的啟動時間。
圖l是示出本發(fā)明的第一示例性實(shí)施例的框圖2是示出在非易失性存儲單元中被虛擬地彼此分開地保存的經(jīng)轉(zhuǎn)換 的映像(image)數(shù)據(jù)和尚待轉(zhuǎn)換的數(shù)據(jù)的框圖,該圖示出了根據(jù)第一示 例性實(shí)施例緊接啟動之后的映像按邏輯塊的數(shù)據(jù)轉(zhuǎn)換的示例,
圖3是示出經(jīng)轉(zhuǎn)換的映像數(shù)據(jù)的各個物理塊的框圖,該圖示出了根據(jù) 第一示例性實(shí)施例在對多個塊的數(shù)據(jù)進(jìn)行轉(zhuǎn)換之后獲得的數(shù)據(jù)格式;
圖4是用于說明根據(jù)第一示例性實(shí)施例、計(jì)算機(jī)所包括的映射表單元 的條目的配置示例的圖5是用于說明根據(jù)第一示例性實(shí)施例、計(jì)算機(jī)所包括的保護(hù)信息單 元的條目的配置示例的圖6是示出根據(jù)第一示例性實(shí)施例在計(jì)算機(jī)的地址變換單元和映射表 改變單元處的計(jì)算處理的示例的流程圖7是示出根據(jù)第一示例性實(shí)施例的系統(tǒng)的示意性操作的流程圖8是示出第一示例性實(shí)施例的具體示例的框圖9是用于說明圖8中的主存儲單元和非易失性存儲單元的物理塊地 址的分配狀態(tài)示例的圖10是用于說明圖8中的保護(hù)模式的內(nèi)容(保護(hù)信息單元)的示例 的圖11是示出圖1中公開的os具有的映射表單元的初始狀態(tài)和其改變
后的狀態(tài)的圖,其中圖11 (a)是用于說明映射表單元的初始狀態(tài)的圖, 而圖ll (b)是用于說明映射表單元改變后的狀態(tài)的圖12是用于說明圖8所示的非易失性存儲單元的未經(jīng)轉(zhuǎn)換的數(shù)據(jù) (初始操作映像)和經(jīng)轉(zhuǎn)換的數(shù)據(jù)的配置示例的圖13是用于說明根據(jù)本發(fā)明的第二示例性實(shí)施例經(jīng)轉(zhuǎn)換的映像數(shù)據(jù) 的每個物理塊的配置示例的圖14是用于說明根據(jù)第二示例性實(shí)施例的經(jīng)轉(zhuǎn)換數(shù)據(jù)的配置示例的
圖15是用于說明根據(jù)第三示例性實(shí)施例的、非易失性存儲單元的未 經(jīng)轉(zhuǎn)換的數(shù)據(jù)和經(jīng)轉(zhuǎn)換的數(shù)據(jù)的配置示例的圖 ,
圖16是示出根據(jù)第四示例性實(shí)施例的再轉(zhuǎn)換處理的示例的流程圖17是用于說明根據(jù)第四示例性實(shí)施例在再轉(zhuǎn)換處理之前映射表單 元的狀態(tài)和在轉(zhuǎn)換處理之后的狀態(tài)的圖;以及
圖18是用于說明根據(jù)第四示例性實(shí)施例在再轉(zhuǎn)換處理之后經(jīng)轉(zhuǎn)換的 數(shù)據(jù)的配置示例的圖。
具體實(shí)施例方式
下面將參考附圖描述本發(fā)明的示例性實(shí)施例。 (第一示例性實(shí)施例)
如圖1所示,根據(jù)此示例性實(shí)施例的計(jì)算機(jī)系統(tǒng)100具有主存儲設(shè)備 101和數(shù)據(jù)處理器102,并且可在程序控制下工作。計(jì)算機(jī)系統(tǒng)100是這 樣一個系統(tǒng),其用于通過數(shù)據(jù)處理器102將非易失性存儲單元152的經(jīng)壓 縮或加密的數(shù)據(jù)展開(通過解壓縮或解密)到上述主存儲設(shè)備101的主存
儲單元151上。
更具體而言,上述計(jì)算機(jī)系統(tǒng)100包括存儲程序的非易失性存儲單
元152,例如ROM;從非易失性存儲單元152接收程序的主存儲單元 151,例如RAM;以及數(shù)據(jù)處理器102,其包括存儲器管理單元(OS) 102A,該存儲器管理單元102A管理存儲在上述非易失性存儲單元152和 主存儲單元151中的程序。
存儲器管理單元102A包括程序存儲控制功能,該功能將經(jīng)歷預(yù)定的 數(shù)據(jù)轉(zhuǎn)換的程序和尚待經(jīng)歷預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序存儲在非易失性存儲單元 152中。存儲器管理單元102A還包括對經(jīng)歷預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序進(jìn)行組合 以便在執(zhí)行上述程序存儲控制功能時不跨越塊之間的邊界的功能,以及在 對某個塊進(jìn)行第一次訪問時將該塊中包括的所有數(shù)據(jù)展開到主存儲單元 151中的相應(yīng)塊上的功能。
上述存儲器管理單元102A在功能上包括以下功能程序存儲控制功 能,該功能將經(jīng)歷預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序和尚待經(jīng)歷預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序存 儲在非易失性存儲單元152中;程序逆向轉(zhuǎn)換功能,該功能可在整個系統(tǒng) 啟動之后OS或應(yīng)用的存儲器訪問時工作,該功能將存儲在上述非易失性 存儲單元152中的經(jīng)歷了預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序傳送到上述主存儲單元151 并對其進(jìn)行逆向轉(zhuǎn)換;物理地址改變功能,該功能將存儲在非易失性存儲 單元152中的程序的物理地址改變成主存儲單元151的物理地址;以及容 量分配功能,該功能在預(yù)定的定時處將所述程序的多個邏輯地址的容量分 配到被分配給所述程序并被存儲在上述非易失性存儲單元152中的預(yù)定容 量的一個物理地址。
因而,非易失性存儲單元152能夠存儲通過使OS 205和應(yīng)用程序的 初始化處理之后主存儲映像的一部分經(jīng)歷按塊的數(shù)據(jù)轉(zhuǎn)換而獲得的映像數(shù) 據(jù),以使得每個塊的經(jīng)轉(zhuǎn)換數(shù)據(jù)能夠被適當(dāng)?shù)亟M合,以便不超過塊大小。 利用該配置,在整個計(jì)算機(jī)系統(tǒng)啟動時,系統(tǒng)從尚待經(jīng)歷數(shù)據(jù)轉(zhuǎn)換的主存 儲映像部分啟動,以進(jìn)入與緊接OS 205和應(yīng)用程序的啟動之后的狀態(tài)相 同的狀態(tài),從而使得系統(tǒng)返回到緊接啟動之后的環(huán)境。此時,由于系統(tǒng)是 從主存儲映像部分啟動的,因此在系統(tǒng)可操作之前不會發(fā)生操作中斷,從
而高效地減少系統(tǒng)啟動時間。
此外,根據(jù)本發(fā)明,上述存儲器管理單元102A包括地址變換單元 156,其在存在來自程序的存儲器訪問時可操作以將邏輯塊地址變換成物
理塊地址;映射表單元157,用于保存地址變換單元156的信息;保護(hù)信 息單元158,用于保存上述邏輯塊地址的原始保護(hù)信息;以及映射表改變
單元154,用于在發(fā)生異常時改變所述映射表單元157的條目。
然后,利用這樣的結(jié)構(gòu),當(dāng)對通過非易失性存儲單元152中的上述數(shù) 據(jù)轉(zhuǎn)換來轉(zhuǎn)換的數(shù)據(jù)進(jìn)行組合時,進(jìn)行組合以便如上所述不跨越塊之間的 邊界,并且在對某個塊進(jìn)行第一次訪問時,塊中包括的所有數(shù)據(jù)都被展開 到主存儲的相應(yīng)塊上。
更具體而言,根據(jù)此示例性實(shí)施例的計(jì)算機(jī)系統(tǒng)至少包括如上所述的 主存儲單元151、非易失性存儲單元152和數(shù)據(jù)處理器102,此外,存儲 在所述非易失性存儲單元152中的是通過使緊接系統(tǒng)啟動之后的上述主存 儲映像經(jīng)歷按預(yù)定寬度的數(shù)據(jù)轉(zhuǎn)換處理而獲得的數(shù)據(jù)。然后,當(dāng)在系統(tǒng)啟 動之后發(fā)生對尚待獲得的主存儲塊的訪問時,所執(zhí)行的是以下操作將與 上述尚待獲得的主存儲塊相對應(yīng)的非易失性存儲單元152的塊中包括的至 少一個塊的數(shù)據(jù)展開到上述主存儲單元151上的尚待獲得的各個相應(yīng)塊 上,從而使塊從尚待獲得狀態(tài)進(jìn)入已獲得狀態(tài)。
換言之,利用存儲在非易失性存儲單元152中的通過使緊接系統(tǒng)啟動 之后的主存儲映像經(jīng)歷按預(yù)定寬度的數(shù)據(jù)轉(zhuǎn)換處理而獲得的數(shù)據(jù),上述地 址變換單元156包括這樣一個功能,即,當(dāng)在系統(tǒng)啟動之后發(fā)生對尚待獲 得的主存儲塊的訪問時響應(yīng)性地生成異常處理,并且上述映射表改變單元 154包括這樣一個功能,S卩,將與尚待獲得的主存儲塊相對應(yīng)的非易失性 存儲單元152的塊中包括的至少一個塊的數(shù)據(jù)展開到所述主存儲單元151 中的各個相應(yīng)的尚待獲得的塊上,從而將塊從尚待獲得變?yōu)橐勋@得。其內(nèi) 容將在稍后描述映射表改變單元154和地址轉(zhuǎn)換單元156時詳細(xì)描述。
此外,在此示例性實(shí)施例中,對于存儲在上述非易失性存儲單元152 中并且經(jīng)歷預(yù)定的數(shù)據(jù)轉(zhuǎn)換的程序,統(tǒng)一地設(shè)定了保護(hù)模式NULL,而對 在系統(tǒng)啟動之后、OS和應(yīng)用的存儲器訪問時可操作的并且被存儲在非易
失性存儲單元中的經(jīng)歷預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序,分配了主存儲單元上的物理 地址。這些內(nèi)容將在稍后描述映射表157時詳細(xì)描述。
此外,在此示例性實(shí)施例中,在存儲在上述非易失性存儲單元152中 的預(yù)定大小的物理地址中的多個程序中的每一個程序中,輸入了與主存儲 單元151的物理地址相對應(yīng)的邏輯地址、邏輯地址的總數(shù)和程序數(shù)據(jù)大 小。此外,此示例性實(shí)施例被這樣地構(gòu)造,以使得將上述非易失性存儲器 的預(yù)定數(shù)據(jù)容量的多個物理地址作為一個單元,從而容納分配給多個邏輯 地址的程序。其內(nèi)容將在稍后順序描述。
下面將具體描述每個組件。 (主存儲設(shè)備的結(jié)構(gòu))
如上所述,主存儲設(shè)備101包括主存儲單元151和非易失性存儲單元 152。在它們之中,主存儲單元151是存儲用于使得CPU進(jìn)行計(jì)算的程序 的存儲器,對于該存儲器,適合使用DRAM、 DDR-SDRAM等等。主存 儲單元151是形成除非易失性存儲單元152之外的主存儲區(qū)域的一個部 分。主存儲單元151可以是任意種類的可讀/可寫存儲器,并且一般使用的 是諸如MRAM (磁致電阻性RAM) 、 FeRAM (鐵電性RAM)或閃存之 類的非易失性存儲器,而不是諸如DRAM和SRAM之類的易失性存儲 器。
非易失性存儲單元152是用于存儲OS和應(yīng)用的初始化處理之后的主 存儲映像(以下稱為"緊接啟動之后的映像")的一個部分。非易失性存 儲單元152可以是任意種類的非易失性存儲器,對于它來說可以使用的例 如有諸如ROM之類的只讀非易失性存儲器以及諸如MRAM、 FeRAM或 閃存之類的可再寫非易失性存儲器。改變緊接啟動之后的映像(主存儲映 像)的內(nèi)容的可能方法是當(dāng)非易失性存儲單元152可更換時或當(dāng)非易失 性存儲單元152可再寫時,通過使用網(wǎng)絡(luò)來下載映像文件或者從外部存儲 介質(zhì)讀取映像文件。 (主存儲設(shè)備101中的程序數(shù)據(jù)格式)
圖2示出將上述緊接啟動之后的映像242 (主存儲映像在OS和應(yīng) 用的初始化完成之后的主映像)按邏輯塊地?cái)?shù)據(jù)轉(zhuǎn)換到非易失性存儲單元 152 (例如ROM)上的示例。
生成緊接啟動之后的映像(主存儲映像)242的方法是任意的,其例 如可通過從緊接在利用普通的系統(tǒng)啟動方法的啟動之后的主存儲單元151 轉(zhuǎn)儲(dump)主存儲映像來生成。緊接啟動之后的映像242 (主存儲映 像)的一部分在按邏輯塊地轉(zhuǎn)換成數(shù)據(jù)之后,被存儲在非易失性存儲單元 152中。
在諸如ROM這樣的非易失性存儲單元152中,OS的控制程序被虛擬 地保存,其被劃分成兩個區(qū)域,經(jīng)轉(zhuǎn)換的映像數(shù)據(jù)290和未經(jīng)轉(zhuǎn)換的映像 數(shù)據(jù)295。在這兩者之中,經(jīng)轉(zhuǎn)換的映像數(shù)據(jù)290是通過對按邏輯塊分段 的緊接啟動之后的映像242經(jīng)歷特定的數(shù)據(jù)轉(zhuǎn)換處理并將所得到的數(shù)據(jù)放 在一起而獲得的結(jié)果。數(shù)據(jù)轉(zhuǎn)換處理的示例有壓縮和加密。經(jīng)歷轉(zhuǎn)換處理 的數(shù)據(jù)可通過逆向轉(zhuǎn)換而恢復(fù)到原始數(shù)據(jù),該逆向轉(zhuǎn)換將被稱為"展 開"。如下所述,上述經(jīng)轉(zhuǎn)換的映像數(shù)據(jù)290在啟動后被動態(tài)地展開到主 存儲單元151上,并被用于應(yīng)用206的執(zhí)行。經(jīng)轉(zhuǎn)換的映像數(shù)據(jù)290的一 部分被用于操作OS 205。
圖3示出了在主存儲單元151上的多個塊的數(shù)據(jù)經(jīng)轉(zhuǎn)換之后獲得的非 易失性存儲單元(ROM) 152上的數(shù)據(jù)格式示例。在這里,塊總數(shù)370代 表經(jīng)歷了數(shù)據(jù)轉(zhuǎn)換的相關(guān)塊中包括的邏輯塊的數(shù)目。數(shù)據(jù)大小380保存該 相關(guān)邏輯塊的轉(zhuǎn)換之后的數(shù)據(jù)大小。邏輯塊地址385代表要展開的邏輯塊 號碼。經(jīng)轉(zhuǎn)換的數(shù)據(jù)395是經(jīng)歷了數(shù)據(jù)轉(zhuǎn)換的數(shù)據(jù)。從而,多個邏輯塊保 存數(shù)據(jù)大小、邏輯塊地址和經(jīng)轉(zhuǎn)換的數(shù)據(jù)這樣的一系列內(nèi)容,它們被包括 在ROM (非易失性存儲單元)152的一個塊之中。
對于這里將主存儲單元151上的經(jīng)歷了按塊轉(zhuǎn)換處理的映像數(shù)據(jù)放在 一起,相關(guān)技術(shù)采用了按照邏輯塊地址的順序?qū)?shù)據(jù)連續(xù)地放在一起的方 法。另一方面,在此示例性實(shí)施例中,這樣來選擇任意組合以使得不超過 物理塊大小,同時考慮經(jīng)轉(zhuǎn)換的數(shù)據(jù)的大小。此時,可以將就邏輯塊地址 來說不連續(xù)的塊放在非易失性存儲單元152上的一個塊中。
在稍后將描述的圖9所示的物理塊地址23中,例如邏輯塊地址為 "2"和"4"的不連續(xù)的塊被如圖12所示地組合,稍后將對此進(jìn)行描
述。在圖12中,"2/700/2"代表"塊總數(shù)/數(shù)據(jù)大小/邏輯塊地址"(見圖 3), "3300/4"代表"數(shù)據(jù)大小/邏輯塊地址"(見圖3)。
再次參考圖2,上述未經(jīng)轉(zhuǎn)換的映像數(shù)據(jù)295是緊接啟動之后的映像 (主存儲映像)242中尚待經(jīng)歷數(shù)據(jù)轉(zhuǎn)換的一部分,該部分被用于在啟動 時啟動計(jì)算機(jī)系統(tǒng)。未經(jīng)轉(zhuǎn)換的映像數(shù)據(jù)295因此是初始操作映像224。 (數(shù)據(jù)處理器102的結(jié)構(gòu))
如圖1所示,數(shù)據(jù)處理器102包括存儲器管理單元(OS) 102A,用 于管理存儲在上述非易失性存儲單元152和主存儲單元151中的程序。
更具體而言,存儲器管理單元102A包括地址變換單元156,其在 存在來自程序的存儲器訪問時可操作用于將邏輯塊地址變換成物理塊地 址;映射表單元157,用于保存地址變換單元156的信息;保護(hù)信息單元 158,用于保存所述邏輯塊地址的原始保護(hù)信息;以及映射表改變單元 154,用于在發(fā)生異常時更新所述映射表單元157的條目。數(shù)據(jù)處理器102 包括硬件初始化單元153,如圖1所示,其功能是在系統(tǒng)啟動時執(zhí)行計(jì)算 機(jī)系統(tǒng)100的每個部分的硬件的初始化。 (映射表單元157)
再次參考圖i,映射表單元157是一個控制表,其存儲用于將在操作 主存儲設(shè)備101時由在計(jì)算機(jī)系統(tǒng)100上工作的OS或應(yīng)用程序(一般稱 為程序)所指定的存儲器地址(邏輯地址)變換成實(shí)際分配給主存儲設(shè)備 101的存儲器地址(物理地址)的信息,并且存儲保衛(wèi)模式(protect mode)。在這里,邏輯地址由邏輯塊地址和塊內(nèi)地址形成,物理地址由物 理塊地址和塊內(nèi)地址形成。
圖4示出了上述映射表單元157中的條目的配置示例。映射表單元 157由如圖4所示那樣的一組條目形成。于是,如圖4所示, 一個條目中 保存的是邏輯塊地址161、物理塊地址162和保衛(wèi)模式163 (代表保護(hù)模 式(protectionmode),以下也是如此)的組合。
在這里,邏輯塊地址161是這樣一個地址,其用于作為一個整體地標(biāo) 識通過將邏輯地址空間劃分成預(yù)定大小的塊而獲得的個體邏輯塊。物理塊 地址162是這樣一個地址,其用于作為一個整體地標(biāo)識通過將物理地址空 間劃分成與邏輯地址空間相同大小的塊而獲得的個體物理塊。雖然使用體 系結(jié)構(gòu)所固有的被稱為頁的單元使得能夠?qū)K進(jìn)行高效的處理,但是本發(fā) 明并不局限于這樣的單元。
此外,保衛(wèi)模式(保護(hù)模式)163取只讀保衛(wèi)模式、可讀/可寫保衛(wèi)模
式(保護(hù)模式)和NULL (未分配)的保衛(wèi)模式(保護(hù)模式)中的任何 值。保衛(wèi)模式(保護(hù)模式)163與在計(jì)算機(jī)系統(tǒng)100上執(zhí)行的程序的原始 保護(hù)屬性偽不同,并且對于ROM (非易失性存儲單元152)的經(jīng)轉(zhuǎn)換的映 像數(shù)據(jù)的塊,NULL (未分配)的保衛(wèi)模式在系統(tǒng)啟動時被統(tǒng)一地設(shè)定。
更具體而言,NULL的保衛(wèi)模式(保護(hù)模式)163指示對于由條目的 邏輯塊地址161確定的邏輯塊,尚未分配物理存儲器塊。只讀或可讀/可寫 的保衛(wèi)模式163指示對于由條目的邏輯塊地址161所確定的邏輯塊,由條 目的物理塊地址162所確定的物理塊已被分配并且該塊的保衛(wèi)模式是只讀 或者可讀/可寫。
因此,物理塊地址列具有以下兩種表示。首先,它表示其上存在經(jīng)轉(zhuǎn) 換的數(shù)據(jù)的非易失性存儲單元152上的塊地址(當(dāng)保衛(wèi)模式為NULL 時),其次,它表示實(shí)際分配給主存儲設(shè)備101的物理存儲器的塊地址 (當(dāng)保衛(wèi)模式不是NULL時)。在這里,取代保衛(wèi)模式163中的NULL的 指定,可以使用存在比特或其類似物。存在比特是指示屬于相關(guān)條目的物 理塊是否存在的比特。在這種情況下,保護(hù)信息單元158 (圖1)(稍后 將對此進(jìn)行描述)不需要存在,并且保衛(wèi)模式163保存原始塊屬性。異常 事件的發(fā)生/不發(fā)生(稍后將對此進(jìn)行描述)是根據(jù)存在比特的0/1來確定 的。
(保護(hù)信息單元158)
再次參考圖1。在圖1中,上述保護(hù)信息單元158是用于保存將在計(jì) 算機(jī)系統(tǒng)100上執(zhí)行的程序的保護(hù)屬性的控制表。圖5示出了保護(hù)信息單 元158的條目的配置示例。如圖5所示,保存在一個條目中的是一對邏輯 塊地址171和保護(hù)屬性172。在這兩者之中,保護(hù)屬性172具有只讀保護(hù) 屬性和可讀/可寫保護(hù)屬性,并且將設(shè)置哪一種保護(hù)屬性取決于由邏輯塊地 址171指定的塊的原始保護(hù)屬性。
(地址變換單元156)
地址變換單元156具有這樣的功能,即把在存儲器操作時在計(jì)算機(jī)系
統(tǒng)100上工作的程序所指定的邏輯地址變換成物理地址,并且它具有這樣
的功能,即檢測由違反保衛(wèi)模式所導(dǎo)致的異常并激活異常處理。從邏輯地 址到物理地址的變換以及對由保衛(wèi)模式違反引起的異常的檢測主要是參考
映射表單元157來執(zhí)行的。 (映射表改變單元154)
再次參考圖1,映射表改變單元154具有執(zhí)行由地址變換單元156激 活的異常處理的功能。在異常處理中執(zhí)行的是參考保護(hù)信息單元158來 確定原始保護(hù)屬性,從非易失性存儲介質(zhì)讀取,展開并寫入到主存儲單元 151,以及更新映射表單元157。
圖6是示出上述地址變換單元156和映射表改變單元154的處理的一 個示例的流程圖。下面將詳細(xì)描述該處理。
首先,地址變換單元156利用與由程序指定的存儲器訪問相關(guān)的邏輯 地址中的塊地址來搜索映射表單元157,以獲得與圖4所示的邏輯塊地址 161—致的條目(步驟S100)。
接下來,地址變換單元156判斷步驟S100中獲得的條目中的保衛(wèi)模 式163是NULL、只讀還是可讀/可寫(步驟S101)。當(dāng)保衛(wèi)模式是只讀 或可讀/可寫時(歩驟S101中的"否"),檢查作為保衛(wèi)模式的訪問模式 以確認(rèn)它是否是適當(dāng)?shù)脑L問(步驟S102和S103),并且在它是不適當(dāng)?shù)?訪問時執(zhí)行差錯處理1,例如拒絕存儲器訪問。另一方面,當(dāng)它是適當(dāng)?shù)?訪問時,地址變換單元156通過使用在步驟S100中獲得的條目中的物理 塊地址162來將由程序指定的邏輯地址變換成物理地址(步驟S104),并 且訪問由該物理地址指定的主存儲單元151的一部分(步驟S105)。
當(dāng)保衛(wèi)模式163為NULL時(步驟S101中的"是"),地址變換單 元156暫時停止相關(guān)存儲器訪問的處理,并且將異常事件通知給映射表改 變單元154以激活異常處理(步驟S106)。在異常事件中,將在步驟 S100中獲得的條目中的物理塊地址162通知給映射表改變單元154。
在步驟S106之后,映射表改變單元154利用下述邏輯塊的邏輯塊地
址385來搜索保護(hù)信息單元158,以獲得與圖5的邏輯塊地址171相一致 的條目的保護(hù)屬性172 (步驟S107),其中所述邏輯塊是通過讀取由地址 變換單元156所通知的物理塊地址162所指定的非易失性存儲單元152的 塊而獲得的。
接下來,展開經(jīng)轉(zhuǎn)換的數(shù)據(jù)395,并將數(shù)據(jù)拷貝在主存儲單元151的 空閑塊中(步驟S108)。作為這里對形成主存儲單元151的塊中哪個塊空 閑以及哪個塊正被使用進(jìn)行管理的技術(shù),可以使用公知的任意方法,例如 在保存主存儲單元151的各個塊的使用狀態(tài)的表中進(jìn)行管理。
此外,映射表改變單元154搜索映射表單元157以尋找其如圖4所示 的邏輯塊地址161與邏輯塊地址385相一致的條目,將該條目的物理塊地 址162改寫為在步驟S109中對其進(jìn)行拷貝的主存儲單元151的塊的物理 塊地址,并且將保衛(wèi)模式163改寫為塊的原始保護(hù)模式(只讀或者可讀/可 寫)(歩驟S109)。
在從非易失性存儲單元152讀取的相關(guān)塊中,保存了其數(shù)目與塊總數(shù) 370中描述的數(shù)目相同的邏輯塊的經(jīng)轉(zhuǎn)換數(shù)據(jù)。因此,將"搜索保護(hù)信息 單元158 (圖1)、展開數(shù)據(jù)、分配和寫物理存儲器以更新映射表"這樣 的處理重復(fù)與塊總數(shù)370的數(shù)目相同的次數(shù)(歩驟S109)。當(dāng)完成將所 述處理重復(fù)塊總數(shù)370中描述的數(shù)目那么多次時(步驟S110中的 "否"),向地址變換單元156通知異常處理的結(jié)束。在接收到來自映射 表改變單元154的異常處理結(jié)束通知時,地址變換單元156從步驟S100 重新開始暫時停止的存儲器訪問處理。 (計(jì)算機(jī)系統(tǒng)100的示意性操作)
圖7是示出根據(jù)此示例性實(shí)施例的計(jì)算機(jī)系統(tǒng)100的示意性操作的流 程圖。在這里,將參考圖6和圖7描述計(jì)算機(jī)系統(tǒng)100的示意性操作。
在啟動后,根據(jù)此示例性實(shí)施例的計(jì)算機(jī)系統(tǒng)100首先通過上述硬件 初始化單元153來初始化硬件(步驟S201)。在此示例性實(shí)施例的情況 下,映射表單元157和保護(hù)信息單元158被包括在處于初始化后的狀態(tài)的
非易失性存儲介質(zhì)的未經(jīng)轉(zhuǎn)換的部分中。
在經(jīng)初始化的映射表單元157處,在圖4所示的每個條目中,邏輯塊
地址161和物理塊地址162已經(jīng)被設(shè)定,并且對于保衛(wèi)模式163,在屬于 作為未經(jīng)轉(zhuǎn)換的映像數(shù)據(jù)的初始操作映像224的塊的條目中,模式被設(shè)定 為該塊的原始保護(hù)屬性(只讀或者可讀/可寫),而在屬于除初始操作映像 之外的緊接啟動之后的映像242的塊的條目中,它被設(shè)定為NULL。在經(jīng) 初始化的保護(hù)信息單元158處,邏輯塊地址171和保護(hù)屬性172已經(jīng)被設(shè) 定在圖5所示的每個條目中。
接下來,從非易失性存儲介質(zhì)的未經(jīng)轉(zhuǎn)換的部分中的初始操作映像 224啟動計(jì)算機(jī)系統(tǒng)100 (步驟S202)。由于初始操作映像224所處狀態(tài) 與緊接啟動之后OS或應(yīng)用程序的狀態(tài)相同,因此系統(tǒng)將會返回到緊接啟 動之后的環(huán)境。此時,從從初始操作映像224的啟動開始直到系統(tǒng)操作被 允許為止,不存在操作中斷(步驟S203)。
當(dāng)在系統(tǒng)操作階段首次發(fā)生從程序?qū)δ硞€塊的訪問時(步驟S203), 由于該塊被NULL保衛(wèi)模式(保護(hù)模式)所映射,因此地址變換單元156 通知異常事件以暫時停止訪問(圖6中的S106)。接收到異常事件的映射 表改變單元154參考保護(hù)信息單元158,以確定被訪問的邏輯地址的塊的 屬性(圖6的步驟S107),并且當(dāng)它是適當(dāng)?shù)脑L問時,從主存儲單元151 中分配空閑塊,在非易失性存儲單元152中展開相關(guān)塊的內(nèi)容,并且從非 易失性存儲介質(zhì)的經(jīng)轉(zhuǎn)換部分獲得相關(guān)塊的數(shù)據(jù),以將該內(nèi)容寫到主存儲 單元151 (圖6中的步驟S108)。此外,映射表改變單元154設(shè)定映射表 單元157,使得已對其進(jìn)行訪問的邏輯塊地址被原始保護(hù)屬性的保衛(wèi)模式 所映射。
當(dāng)相關(guān)物理塊包括多個邏輯塊的經(jīng)轉(zhuǎn)換的數(shù)據(jù)時,在利用同一過程展 開每個數(shù)據(jù)之后,從圖7的步驟S100重新開始暫時停止的訪問處理。結(jié) 果,針對所分配的主存儲塊,執(zhí)行對相關(guān)塊的暫時停止的訪問和后續(xù)訪 問。此時,減小塊單元引起展開時間的減少,從而使得能夠縮短系統(tǒng)操作
(計(jì)算機(jī)系統(tǒng)100的啟動初始操作映像224)
接下來將更詳細(xì)描述初始操作映像224。在此示例性實(shí)施例中,只使 用初始操作映像224來啟動計(jì)算機(jī)系統(tǒng)100。因此,初始操作映像224應(yīng)
當(dāng)包括啟動計(jì)算機(jī)系統(tǒng)100所需的最低限度的OS程序。相反,在初始操
作映像224中不需要包括用于實(shí)現(xiàn)OS的額外功能的程序或應(yīng)用程序,沒
有這些程序或應(yīng)用程序,系統(tǒng)也可毫無問題地啟動。
從以上描述中可見,當(dāng)在計(jì)算機(jī)系統(tǒng)100上不存在用于實(shí)現(xiàn)圖6的處 理(地址變換單元156和映射表改變單元154處的處理)的程序和數(shù)據(jù) 時,在系統(tǒng)啟動之后沒有處理進(jìn)行工作。因此,包括映射表改變單元 154、用于硬件管理的設(shè)備驅(qū)動器、映射表單元157和保護(hù)信息單元158 在內(nèi)的OS的異常處理操作器的一部分至少應(yīng)當(dāng)被包括在尚待轉(zhuǎn)換的初始 操作映像224中。
因而,此第一示例性實(shí)施例具有以下效果,即對某個物理塊的讀取只 發(fā)生一次,并且在展開時不需要讀取兩個或更多個物理塊。 (計(jì)算機(jī)系統(tǒng)100的具體示例)
圖8示出了根據(jù)此第一示例性實(shí)施例的計(jì)算機(jī)系統(tǒng)100的具體示例 (計(jì)算機(jī)系統(tǒng)200)。
在非易失性存儲單元152中,預(yù)先存儲了經(jīng)轉(zhuǎn)換的映像數(shù)據(jù)290 (見 圖2)和尚待轉(zhuǎn)換為數(shù)據(jù)的初始操作映像224 (見圖2)。初始操作映像 224包括處于初始狀態(tài)的保護(hù)信息單元158和映射表單元157,并且包括 映射表改變單元154,作為圖1所示的OS 205的一個功能。
由主存儲單元151和非易失性存儲單元152形成的主存儲設(shè)備101通 過存儲器總線202連接到CPU 201,并且地址變換單元156被包含在CPU 201中。其他硬件209和存儲設(shè)備203連接到CPU 201,并且在存儲設(shè)備 203中設(shè)置了 BIOS 207。在BIOS 207中包含了 IPL 204。
圖9示出了將物理塊地址分配給主存儲設(shè)備101的示例。雖然在實(shí)踐 中有許多個塊被分配到物理塊地址,但所示出的示例具有極小數(shù)目的塊, 以幫助理解本發(fā)明。物理塊地址0 20被分配給主存儲單元151,而物理 塊地址21 30被分配給非易失性存儲單元152。
圖10示出了 OS 205所具有的保護(hù)信息單元158的內(nèi)容示例。雖然圖 10中的保護(hù)信息單元158被公開為具有少量的塊,但在實(shí)踐中卻存在許多 個塊。在圖10中,邏輯塊地址0 ~ 2的每個塊的保護(hù)屬性是只讀(R),
邏輯塊地址3 ~6的每個塊的保護(hù)屬性是可讀且可寫。圖11 (a)禾n 11 (b)分別示出了在改變映射表之前和之后的映射表單元157的示例。 (映射表單元157的初始狀態(tài))
圖11 (a)示出了 OS 205所具有的處于初始狀態(tài)的映射表單元157的 示例。雖然圖11 (a)所示的映射表單元157被公開為具有少量的塊,但 在實(shí)踐中卻存在大量的塊。如圖11 (a)所示,在映射表單元157的初始 狀態(tài)中,對于邏輯塊地址0 6,非易失性存儲單元152的物理塊地址21 ~ 25 (圖9)與之相關(guān)。在具有物理塊地址21 ~ 25的五個物理塊中(圖 9),具有物理塊地址21 22的兩個物理塊是初始操作映像224。因此, 作為與邏輯塊地址0、 1中的每一個相對應(yīng)的每個物理塊的保護(hù)模式(保 衛(wèi)模式),最初設(shè)定了原始保護(hù)屬性。
另一方面,雖然屬于緊接啟動之后的映像242的(而非屬于初始操作 映像224的)經(jīng)轉(zhuǎn)換映像數(shù)據(jù)的邏輯塊地址2 6的原始保護(hù)屬性分別是 R、 RW、 RW、 RW和RW (見圖10),但是為了在操作啟動之后的第一 次訪問中強(qiáng)制性地導(dǎo)致保護(hù)屬性違反以啟動異常處理,因此對它們最初都 設(shè)定了保護(hù)模式NULL。
為了更具體地描述圖11 (a)所示的初始(改變前)映射表,圖12中 示出了包括在非易失性存儲單元152中的經(jīng)轉(zhuǎn)換的映像數(shù)據(jù)290 (圖8) 和初始操作映像224 (圖8)的內(nèi)容的示例。參考圖12,正如已參考圖11 (a)所描述的,物理塊地址21和22對應(yīng)于初始操作映像224,該部分尚
待經(jīng)歷諸如壓縮和加密之類的數(shù)據(jù)轉(zhuǎn)換。
此外,在圖12所示的示例中,物理塊和邏輯塊的大小都是4096字 節(jié)。此外,物理塊地址23包括兩個邏輯塊地址的經(jīng)轉(zhuǎn)換的數(shù)據(jù)。 一個是 圖11 (a)所示的邏輯塊地址"2"的數(shù)據(jù),它是作為數(shù)據(jù)轉(zhuǎn)換處理的結(jié)果 的700字節(jié)數(shù)據(jù)。另一個是圖11 (a)所示的邏輯塊地址"4"的數(shù)據(jù),它 是作為數(shù)據(jù)轉(zhuǎn)換處理的結(jié)果的3300字節(jié)數(shù)據(jù)。物理塊地址24也包括兩個 邏輯塊地址的經(jīng)轉(zhuǎn)換的數(shù)據(jù)。它們是邏輯塊地址"3"的1000字節(jié)數(shù)據(jù)和 邏輯塊地址"6"的2500字節(jié)數(shù)據(jù)。
在這些物理塊地址23和24之間,存在78字節(jié)的空閑空間,在該空間
中多個塊被組合以便不超過塊大小。這是為了通過將多個塊連續(xù)地放在一 起來避免超過塊大小,并且避免在異常事件處理時兩個物理塊的讀取使用
兩個TLB條目。
邏輯塊5在圖12中未示出,其原因是邏輯塊5被分配給了除物理塊 21 24之外的其他塊。 (計(jì)算機(jī)系統(tǒng)200的詳細(xì)操作(包括映射表的改變))
下面,將參考圖6和圖7以及圖10、圖11 (a)和圖11 (b)來描述 上述計(jì)算機(jī)系統(tǒng)200的詳細(xì)操作。
首先,在圖7的步驟S201,計(jì)算機(jī)系統(tǒng)200執(zhí)行硬件的初始化,例如 在啟動時清除上述主存儲單元151。此時,由于初始操作映像224包括經(jīng) 初始化的映射表單元157的數(shù)據(jù)以及經(jīng)初始化的保護(hù)信息單元158的數(shù) 據(jù),因此映射表單元157的數(shù)據(jù)將被自動設(shè)定在計(jì)算機(jī)系統(tǒng)200上(如圖 11 (a)所示),并且處于如圖10所示那種狀態(tài)的保護(hù)信息單元158的數(shù) 據(jù)將被設(shè)定。此外,由于初始操作映像224包括映射表改變單元154的功 能,因此該功能可被使用。
接下來,在圖7的步驟S202, CPU 201從初始操作映像224啟動系 統(tǒng)。更具體而言,在系統(tǒng)操作啟動時,IPL 204將首先要執(zhí)行的指令的邏 輯塊設(shè)定在CPU 201中的程序計(jì)數(shù)器處,以使得執(zhí)行從該指令開始,從而 啟動系統(tǒng)操作。最后,在圖7的步驟S203,在CPU 201上執(zhí)行的程序訪 問主存儲單元151以使系統(tǒng)工作。
系統(tǒng)如何操作是以如下這種作為示例的訪問為前提的。
(1) 對具有邏輯塊地址"2"的邏輯地址的第一讀取訪問。
(2) 對具有邏輯塊地址"2"的邏輯地址的第二和后續(xù)讀取訪問。
(3) 在對具有邏輯塊地址"2"的邏輯地址的讀取訪問之后,對具有 邏輯塊地址"4"的邏輯地址的寫入訪問。
(4) 對具有邏輯塊地址"1"的邏輯地址的讀取訪問。 下面,將基于圖6來描述計(jì)算機(jī)系統(tǒng)200如何工作。
(1)首先,將描述在發(fā)生對具有邏輯塊地址"2"的邏輯地址的第一 讀取訪問時執(zhí)行的操作(圖IO和圖11 (a))。
在這種情況下,地址變換單元156利用邏輯塊地址"2"來搜索映射
表單元157,以獲得條目"邏輯塊地址2、物理塊地址23、保護(hù)模式(保 衛(wèi)模式)NULL"(圖6中的步驟S100)。
此時,由于保護(hù)模式為NULL (圖6中步驟S101處的"是"),因此 所關(guān)注的存儲器訪問的處理被暫時停止,以向映射表改變單元154通知異 常事件,并且啟動異常處理(圖6中的步驟S106)。映射表改變單元154 利用邏輯塊地址"2"來搜索保護(hù)信息單元158,以獲得圖11 (a)所示的 具有邏輯塊地址2的條目的保護(hù)模式(保衛(wèi)模式)的保護(hù)屬性"R"(圖6 中的步驟S107)。然后,從由與邏輯塊地址"2"相對應(yīng)的物理塊地址 "23"所指定的ROM (非易失性存儲單元152)的相關(guān)塊中讀取700字節(jié) 的數(shù)據(jù)(圖12),以在RAM上展開該數(shù)據(jù)并將4096字節(jié)數(shù)據(jù)寫到主存 儲單元151上的空閑物理塊(假定被分配了 "13")(圖6中的步驟 S108)。
接下來,映射表改變單元154將具有邏輯塊地址"2"的條目中的非 易失性存儲單元152上的物理塊地址"23"改寫為主存儲單元(RAM)上 的物理塊地址"13"(如圖11 (b)所示),并將保護(hù)模式從NULL改寫 為R (圖6中的步驟S109)。
此外,由于相關(guān)物理塊(改變前為"23",改變后也為"23")包括 多個邏輯塊的轉(zhuǎn)換數(shù)據(jù),因此當(dāng)發(fā)生異常事件時,對于改變前物理塊地址 "23"之外的邏輯塊的數(shù)據(jù),也執(zhí)行展開、物理塊分配、數(shù)據(jù)寫入以及映 射表更新。更具體而言,搜索保護(hù)信息單元以尋找邏輯塊"4"(圖6中 的步驟S107),以將3300字節(jié)數(shù)據(jù)展開為4096字節(jié)數(shù)據(jù),并將該數(shù)據(jù)寫 到主存儲單元151的空閑物理塊(假定被分配了 "14")(圖6中的步驟 S108),以使得映射表改變單元154將具有邏輯塊地址"4"的條目中的 ROM上的物理塊地址"23"改寫為RAM上的物理地址"14"(如圖11 (b)所示),從而將保護(hù)模式(保衛(wèi)模式)從NULL改寫為RW (圖6 中的步驟S109)。
在展開物理塊中包括的所有邏輯塊、寫入到主存儲單元151和更新映 射表單元157完成之后,通知地址變換單元156異常處理完成(圖6中的
步驟S110)。
在接收到來自映射表改變單元154的異常處理完成通知后,地址變換 單元156從圖6中的步驟S100重新開始暫時停止的存儲器訪問處理。然 后,當(dāng)利用邏輯塊地址"2"來搜索映射表單元157以發(fā)現(xiàn)映射表單元157 從圖11 (a)所示的狀態(tài)改變?yōu)閳D11 (b)所示的狀態(tài)時,地址變換單元 156這一次獲得了條目"邏輯塊地址2、物理塊地址13和保衛(wèi)模式R" (圖6中的步驟S100)。
然后,由于程序所指定的存儲器訪問具有保衛(wèi)模式R (圖6中步驟 S101處的"否")并且是讀取訪問(圖6中的步驟S102處的"否"), 因此地址變換單元156確定不存在保護(hù)違反,以通過使用在所獲得的條目 中的主存儲單元151上的物理塊地址"13"來將程序所指定的邏輯地址變 換為物理地址(圖6中的步驟S104),通過訪問讀取由該物理地址所指定 的主存儲單元151的相關(guān)部分,并且將所獲得的值返回給程序(步驟 S105)。
因而,當(dāng)在系統(tǒng)操作啟動之后發(fā)生對保護(hù)屬性為NULL的塊的第一次 訪問時,該塊的數(shù)據(jù)被從ROM (非易失性存儲單元152)讀取,被展開并 寫入到RAM (主存儲單元151)以讀取該數(shù)據(jù)。雖然這里的描述是以讀取 為示例進(jìn)行的,但也存在寫入訪問的情況。
(2)接下來,將描述當(dāng)發(fā)生對具有邏輯塊地址"2"的邏輯地址的第 二和后續(xù)讀取訪問時執(zhí)行的操作。
當(dāng)利用邏輯塊地址"2"搜索映射表單元157以發(fā)現(xiàn)映射表單元157 被從圖11 (a)所示的狀態(tài)更新到圖11 (b)所示的狀態(tài)時,地址變換單 元156獲得主存儲單元151中的條目"邏輯塊地址2、物理塊地址13和保 護(hù)模式R"(圖6中的步驟S100)。
然后,由于程序所指定的存儲器訪問具有保護(hù)模式"R"(圖6中歩 驟S101處的"否")并且是讀訪問(圖6中的歩驟S102處的"否"), 因此地址變換單元156通過使用RAM (主存儲單元151)中的所獲得的物 理塊地址"13"來將程序所指定的邏輯地址變換成物理地址(圖6中的歩 驟S104),并且訪問和讀取由該物理地址所指定的主存儲單元151的一部
分,以將所獲得的值返回給程序(圖6中的步驟S105)。
因而,當(dāng)在系統(tǒng)操作啟動之后對屬于緊接啟動之后的映像242的(而 非屬于初始操作映像224的)塊進(jìn)行第二和后續(xù)訪問時,由于不再需要像 第一訪問中那樣的展開和物理塊分配操作,因此存在于主存儲單元151上 的數(shù)據(jù)將被立即更新。
(3) 接下來,將描述當(dāng)發(fā)生對具有邏輯塊地址"4"的邏輯地址的寫 入訪問時執(zhí)行的操作。
地址變換單元156利用由程序指定的邏輯塊地址"4"來搜索映射表 單元157,以獲得RAM (主存儲單元151)中的具有邏輯塊地址"4"、 物理塊地址"14"和保護(hù)模式"RW"的條目,如圖11 (b)所示(圖6中 的歩驟SIOO)。
由于保護(hù)模式已從"NULL"改變?yōu)?RW"(圖6中步驟S102處的 "否"),程序所指定的存儲器訪問是寫入訪問(歩驟S102處的 "是"),并且保護(hù)模式是"RW"(圖6中步驟S103處的"是"),因 此地址變換單元156通過使用所獲得的條目中的物理塊地址"14"將程序 所指定的邏輯地址變換為物理地址(圖6中的步驟S104),并訪問由該物 理地址所指定的主存儲單元151的一部分,以寫入從程序傳送來的數(shù)據(jù) (圖6中的步驟S105)。
因而,由于已經(jīng)在邏輯塊地址"2"的異常處理時,執(zhí)行了邏輯塊地 址"4"的展開處理,因此即使首次發(fā)生對邏輯塊地址"4"的訪問時,在 執(zhí)行存儲器訪問時也不會發(fā)生異常事件。對于已經(jīng)生成異常事件的邏輯塊 中包括的其他邏輯塊的數(shù)據(jù)也是如此,也就是說,針對包括經(jīng)轉(zhuǎn)換的數(shù)據(jù) 的某個物理塊的讀取和展開處理只被執(zhí)行一次。
(4) 最后,將描述在發(fā)生對具有邏輯塊地址"1"的邏輯地址的讀取
訪問時執(zhí)行的操作。
地址變換單元156利用程序所指定的邏輯塊地址"1"來搜索映射表 單元157,以獲得具有邏輯塊地址"1"、物理塊地址"22"和保護(hù)模式 "R"的條目,如圖ll (b)所示(圖6中的步驟S100)。
由于條目的保護(hù)模式為"R"而不是"NULL"(圖6中步驟S101處
的"否"),并且程序所指定的存儲器訪問是讀取訪問(圖6中步驟S102
處的"否"),因此地址變換單元156通過使用所獲得的條目中的物理塊 地址"22"來將程序所指定的邏輯地址變換成物理地址(圖6中的步驟 S104),并且訪問由該物理地址所指定的主存儲單元151的一部分,以向 程序返回所讀取的數(shù)據(jù)(圖6中的步驟S105)。
因而,在程序所指定的對初始操作映像224的塊的讀取訪問中沒有發(fā) 生異常事件。
如上所述,上述第一示例性實(shí)施例實(shí)現(xiàn)了以下效果,即對某個物理塊 的讀取只發(fā)生一次,并且在展開時無需讀取兩個或更多個物理塊。此外, 在第一示例性實(shí)施例中,緊接啟動之后的映像242被轉(zhuǎn)換成數(shù)據(jù)并被保存 在非易失性存儲單元152中,該方法可被用于除減少啟動時間之外的其他 目的。例如,在將經(jīng)壓縮或加密的文件系統(tǒng)保存在非易失性存儲單元152 中的情況下可以使用該方法。
(第二示例性實(shí)施例)
雖然在上述第一示例性實(shí)施例中,在映射表單元157更新時使用了保 護(hù)信息單元158,但當(dāng)如圖13所示經(jīng)轉(zhuǎn)換的數(shù)據(jù)保存每個邏輯塊的原始保 衛(wèi)模式(保護(hù)模式)時,無需參考圖l所示的保護(hù)信息單元158。
在這種情況下,根據(jù)第二示例性實(shí)施例的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)如下。也 就是說,該系統(tǒng)包括非易失性存儲單元152,用于存儲程序;主存儲單 元151,用于從非易失性存儲單元152接收所述程序;以及數(shù)據(jù)處理器 102,該數(shù)據(jù)處理器102包括存儲器管理單元(OS),該存儲器管理單元 管理存儲在非易失性存儲單元152和主存儲單元151中的程序。其中,上 述存儲器管理單元包括地址變換單元,其在存在來自程序的存儲器訪問 時可操作以將邏輯塊地址變換成物理塊地址;映射表單元,用于保存地址 變換單元的信息;以及映射表改變單元,用于在發(fā)生異常時更新所述映射 表單元的條目。然后,上述映射表單元將每個邏輯塊的原始保衛(wèi)模式(保 護(hù)模式)保存在經(jīng)轉(zhuǎn)換的數(shù)據(jù)中。
因而,雖然在上述第一示例性實(shí)施例中,在映射表單元157更新時使
用了保護(hù)信息單元158,但在此第二示例性實(shí)施例中,當(dāng)如圖13所示經(jīng)轉(zhuǎn) 換的數(shù)據(jù)保存每個邏輯塊的原始保衛(wèi)模式(保護(hù)模式)時,無需參考保護(hù)
信息單元158。
更具體而言,在此第二示例性實(shí)施例中,參考圖13所示的保護(hù)模式 (保衛(wèi)模式)390來更新上述映射表單元157的保護(hù)模式(保衛(wèi)模式) 163。因此,在這種情況下,從圖1所示的計(jì)算機(jī)系統(tǒng)100中省略了保護(hù) 信息單元158,并且省略了圖6所示的在異常事件處理時執(zhí)行的步驟 S107。圖13所示的示例中的經(jīng)轉(zhuǎn)換數(shù)據(jù)部分將包括保護(hù)信息屬性(保護(hù) 模式屬性)(圖14),以便能夠提高數(shù)據(jù)處理效率并加速系統(tǒng)。
此外,在第二示例性實(shí)施例中,與上述第一示例性實(shí)施例的情況類 似,對某個物理塊的讀取只發(fā)生一次,并且在展開時無需對兩個或更多個 物理塊進(jìn)行讀取。此時,與上述第一示例性實(shí)施例不同的是,由于映射表 157的保護(hù)模式163是基于在經(jīng)轉(zhuǎn)換的數(shù)據(jù)中保存的保衛(wèi)模式的信息而被 更新的,因此不需要保護(hù)信息單元158。
這里,在上述計(jì)算機(jī)系統(tǒng)中,與主存儲單元151的物理地址相對應(yīng)的 邏輯地址、邏輯地址總數(shù)、程序數(shù)據(jù)大小和保護(hù)模式可被輸入到在非易失 性存儲單元152的預(yù)定大小的物理地址中存儲的多個程序中的每一個程序 之中。
(第三示例性實(shí)施例)
在上述第一示例性實(shí)施例中,由于作為對各個邏輯塊的數(shù)據(jù)轉(zhuǎn)換的結(jié) 果所獲得的大小要小于物理塊的大小(在圖14的情況下是4096字節(jié)), 因此多個邏輯塊可被存儲在一個物理塊中。
第三示例性實(shí)施例應(yīng)對這樣一種情況,即作為數(shù)據(jù)轉(zhuǎn)換結(jié)果而獲得的 大小變得大于作為原始大小的4096字節(jié)。在這種情況下,放在一起的多 個邏輯塊的大小被假定為原始物理塊大小的任意整數(shù)倍,如圖15所示。 在圖15的示例中,該大小為16384字節(jié)(原始大小的4倍)。
因此,當(dāng)發(fā)生對相關(guān)塊的第一次訪問從而引起異常事件時,從映射表 中指示的物理塊地址開始的四個塊的數(shù)據(jù)被讀取,并且被展開到三個邏輯
塊(對經(jīng)歷過轉(zhuǎn)換處理的數(shù)據(jù)進(jìn)行逆向轉(zhuǎn)換使得該數(shù)據(jù)能夠被恢復(fù)到原始 數(shù)據(jù),該逆向轉(zhuǎn)換處理將被稱為"展開")。
此外,當(dāng)對緊接啟動之后的映像242的每個邏輯塊的數(shù)據(jù)進(jìn)行轉(zhuǎn)換并 將其放在一起時,在考慮轉(zhuǎn)換后的數(shù)據(jù)大小的同時選擇適當(dāng)?shù)膲K大小以將 數(shù)據(jù)放在一起。此時,開始生成后續(xù)的塊,以便不會跨越所確定的塊大小
(16338字節(jié))的邊界。在圖15的示例中,存在58字節(jié)的沒有數(shù)據(jù)的空 閑區(qū)域。在這里,用于將邏輯塊放在一起的物理塊大小對于一個系統(tǒng)不一 定是固定的大小。換言之,所組合的塊的大小需要是物理塊大小的任意整 數(shù)倍,并且可以根據(jù)物理塊而改變,例如2倍、3倍、4倍、5倍等等。
即使當(dāng)數(shù)據(jù)大小由于數(shù)據(jù)轉(zhuǎn)換而變得大于原始物理塊大小時,第三示 例性實(shí)施例也能實(shí)現(xiàn)與上述第一示例性實(shí)施例類似的效果,即對某個物理 塊的讀取只發(fā)生一次。
(第四示例性實(shí)施例)
根據(jù)第四示例性實(shí)施例的計(jì)算機(jī)系統(tǒng)的特征在于使存儲在上述非易失 性存儲單元中的經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的所述程序進(jìn)一步經(jīng)歷按固定時間間 隔的內(nèi)容不同的預(yù)定數(shù)據(jù)轉(zhuǎn)換。
更具體而言,在上述第三示例性實(shí)施例中,在展開經(jīng)轉(zhuǎn)換的數(shù)據(jù)之 后,該數(shù)據(jù)被連續(xù)地使用。另一方面,在第四示例性實(shí)施例中,使在主存 儲單元151上展開的數(shù)據(jù)再次經(jīng)歷數(shù)據(jù)轉(zhuǎn)換處理。例如,在主存儲單元 151上的數(shù)據(jù)將要被加密和保存的情況下,以固定的時間間隔對數(shù)據(jù)進(jìn)行 再加密。
圖16示出了第四示例性實(shí)施例中的再轉(zhuǎn)換處理的流程圖。在這種情 況下,作為實(shí)際操作,首先搜索映射表單元,以搜索可被再轉(zhuǎn)換的塊的條 目(步驟S300 )。當(dāng)不存在能夠被再轉(zhuǎn)換的塊時(步驟S301處的 "否"),處理結(jié)束。
另一方面,當(dāng)存在能夠被再轉(zhuǎn)換的塊時(歩驟S301處的"是"), 對該邏輯塊進(jìn)行再轉(zhuǎn)換并將其存儲在緩沖器(未示出)中(步驟S302)。 然后,當(dāng)該塊聯(lián)同己在緩沖器中的經(jīng)轉(zhuǎn)換數(shù)據(jù)超過塊大小時(歩驟S303
處的"是"),放棄相關(guān)塊的經(jīng)再轉(zhuǎn)換的數(shù)據(jù),并找出后續(xù)的條目。另一 方面,當(dāng)所述塊聯(lián)同已在緩沖器中的經(jīng)轉(zhuǎn)換數(shù)據(jù)沒有超過塊大小時(步驟
S303處的"否"),則更新相關(guān)塊的映射表(步驟S304)。
當(dāng)上述緩沖器中的剩余空閑容量減小時(步驟S305處的"是"), 將數(shù)據(jù)寫到主存儲單元151的空閑區(qū)域(步驟S306)。此時,可以將數(shù)據(jù) 覆寫在緩沖器中所存儲的任何塊的物理塊上。雖然在此第四示例性實(shí)施例 中用于確定從上述緩沖器進(jìn)行寫入的算法是以緩沖器的空閑容量減小為前 提的,但也可使用現(xiàn)有的任意算法。
接下來,將針對一個示例來描述第四示例性實(shí)施例中映射表的改變。 圖17 (a)示出了保存在計(jì)算機(jī)200中的初始化時(改變前)的映射表的 狀態(tài)。現(xiàn)在假定具有邏輯塊地址3的數(shù)據(jù)經(jīng)歷再轉(zhuǎn)換處理,以將900字節(jié) 的經(jīng)轉(zhuǎn)換數(shù)據(jù)存儲在緩沖器中,如圖18所示。
接下來,使邏輯塊地址4的數(shù)據(jù)經(jīng)歷再轉(zhuǎn)換處理并將所獲得的數(shù)據(jù)存 儲在緩沖器中。結(jié)果,數(shù)據(jù)變?yōu)?900字節(jié)的經(jīng)轉(zhuǎn)換的數(shù)據(jù),使得如圖18 所示的一系列管理數(shù)據(jù),即塊總數(shù)2、數(shù)據(jù)大小900和邏輯塊地址3以及 數(shù)據(jù)大小300和邏輯塊地址4被寫在主存儲單元151上。
此時,由于數(shù)據(jù)將被寫在邏輯塊地址所使用的主存儲單元151上的物 理塊地址15上,因此將邏輯塊地址3和4的物理塊地址改變?yōu)?5,并將 保護(hù)模式(保衛(wèi)模式)改變?yōu)镹ULL,如圖17 (b)所示。
因而,根據(jù)上述第四示例性實(shí)施例,由于數(shù)據(jù)轉(zhuǎn)換處理被以固定的時 間間隔來執(zhí)行,因此數(shù)據(jù)將不會如其原樣地被連續(xù)地展開在主存儲單元 151上,從而可以增強(qiáng)在數(shù)據(jù)被秘密瀏覽等等之時的安全性。 (此示例性實(shí)施例中的計(jì)算機(jī)系統(tǒng)的存儲器管理方法)
接下來,將參考附圖描述根據(jù)此示例性實(shí)施例的計(jì)算機(jī)系統(tǒng)的存儲器 管理方法。
根據(jù)此示例性實(shí)施例,被構(gòu)造用于將存儲在非易失性存儲單元152中 的程序傳送到主存儲單元151的計(jì)算機(jī)系統(tǒng)的存儲器管理方法包括以下歩 驟第一步驟,即將所述經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序和所述尚待經(jīng)歷預(yù)定 數(shù)據(jù)轉(zhuǎn)換的程序存儲在非易失性存儲單元152中;第二步驟,該歩驟在計(jì)
算機(jī)系統(tǒng)啟動之后存在OS和應(yīng)用的存儲器訪問時可操作,以將存儲在上 述非易失性存儲單元152中的程序中的經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序傳送到 主存儲單元151,并執(zhí)行該預(yù)定數(shù)據(jù)轉(zhuǎn)換的逆向轉(zhuǎn)換;第三步驟,即將存
儲在非易失性存儲單元152中的程序的物理地址改變?yōu)橹鞔鎯卧?51的
物理地址;以及第四步驟,即分配多個邏輯塊的容量,用于對包括分配給
存儲在上述非易失性存儲單元152中的所述程序的預(yù)定容量的一個物理地
址的塊中的數(shù)據(jù)進(jìn)行展開。
如上所述的這種配置使得能夠提供一種計(jì)算機(jī)系統(tǒng)的存儲器管理方 法,其產(chǎn)生與上述第一示例性實(shí)施例等同的效果,并且實(shí)現(xiàn)了這樣的效 果,即與上述計(jì)算機(jī)系統(tǒng)相關(guān)的發(fā)明可通過上述程序而被高效且可靠地執(zhí) 行。
在這里,在此示例性實(shí)施例中,在上述第一步驟和第二步驟之間,可
以提供這樣一個步驟,即對存儲在上述非易失性存儲單元152中的經(jīng)歷過 預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序,統(tǒng)一地設(shè)定保護(hù)模式NULL。
此外,計(jì)算機(jī)系統(tǒng)的存儲器管理方法可包括一個與上述第一步驟并行 的歩驟,即在上述非易失性存儲單元152的預(yù)定大小的物理地址中存儲的 多個程序中的每一個程序之中,輸入與所述主存儲單元151的物理地址相 對應(yīng)的邏輯地址、邏輯地址總數(shù)和程序數(shù)據(jù)大小。
此外,根據(jù)此示例性實(shí)施例,計(jì)算機(jī)系統(tǒng)的存儲器管理方法可包括一 個與上述第一步驟并行的歩驟,即在上述非易失性存儲單元152的預(yù)定大 小的物理地址中存儲的多個程序中的每一個程序之中,輸入與所述主存儲 單元151的物理地址相對應(yīng)的邏輯地址、邏輯地址總數(shù)、程序數(shù)據(jù)大小和 保護(hù)模式(保衛(wèi)模式)。還可以提供一個與上述第一步驟并行的步驟, 即,使得上述非易失性存儲單元152中存儲的程序之中的經(jīng)歷了預(yù)定數(shù)據(jù) 轉(zhuǎn)換的程序經(jīng)歷按固定時間間隔的其他內(nèi)容的預(yù)定轉(zhuǎn)換。
上述計(jì)算機(jī)系統(tǒng)的存儲器管理方法的具體內(nèi)容已在上述第一至第四示 例性實(shí)施例中詳細(xì)描述。 (此示例性實(shí)施例中的計(jì)算機(jī)系統(tǒng)的存儲器管理程序)
接下來,將參考附圖描述根據(jù)此示例性實(shí)施例的計(jì)算機(jī)系統(tǒng)的存儲器
管理程序。
根據(jù)此示例性實(shí)施例的計(jì)算機(jī)系統(tǒng)的存儲器管理程序是用于使得對被 構(gòu)造用于將存儲在非易失性存儲單元152中的程序傳送到主存儲單元151 的計(jì)算機(jī)系統(tǒng)的操作進(jìn)行控制的計(jì)算機(jī)執(zhí)行以下過程的程序?qū)⒔?jīng)歷過預(yù) 定數(shù)據(jù)轉(zhuǎn)換的程序和尚待經(jīng)歷預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序存儲在上述非易失性存 儲單元152中的過程;在計(jì)算機(jī)系統(tǒng)啟動之后存在OS和應(yīng)用的存儲器訪
問時可操作的過程,該過程將存儲在上述非易失性存儲單元152中的程序 中的經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序傳送到主存儲單元151,并執(zhí)行該預(yù)定數(shù) 據(jù)轉(zhuǎn)換的逆向轉(zhuǎn)換;將存儲在所述非易失性存儲單元152中的程序的物理 地址改變?yōu)橹鞔鎯卧?51的物理地址的過程;以及分配多個邏輯地址的
容量,用于對包括分配給存儲在所述非易失性存儲單元152中的程序的預(yù) 定容量的一個物理地址的塊中的數(shù)據(jù)進(jìn)行展開的過程。上述這種配置使得 能夠提供一種計(jì)算機(jī)系統(tǒng)的存儲器管理程序,其能夠產(chǎn)生與上述第一示例 性實(shí)施例等同的效果。
在這里,在此示例性實(shí)施例中,可在上述計(jì)算機(jī)系統(tǒng)的存儲器管理程 序中結(jié)合這樣一個過程來使所述計(jì)算機(jī)能夠執(zhí)行,即在存儲在上述非易失 性存儲單元152中的經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序處,統(tǒng)一地設(shè)定保護(hù)模式 NULL。
此外,在此示例性實(shí)施例中,可在上述計(jì)算機(jī)系統(tǒng)的存儲器管理程序 中結(jié)合這樣一個過程來使所述計(jì)算機(jī)能夠執(zhí)行,即在上述非易失性存儲單 元152的預(yù)定大小的物理地址中存儲的多個程序中的每一個程序之中,輸 入與主存儲單元151的物理地址相對應(yīng)的邏輯地址、邏輯地址總數(shù)和程序 數(shù)據(jù)大小,或者邏輯地址、邏輯地址總數(shù)、程序數(shù)據(jù)大小和保護(hù)模式。
此外,根據(jù)此示例性實(shí)施例,可在上述計(jì)算機(jī)系統(tǒng)的存儲器管理程序 中結(jié)合這樣一個過程來使所述計(jì)算機(jī)能夠執(zhí)行,即,使得上述非易失性存 儲單元152中存儲的程序之中的經(jīng)歷了預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序經(jīng)歷按固定時 間間隔的其他內(nèi)容的預(yù)定轉(zhuǎn)換。
至于上述計(jì)算機(jī)系統(tǒng)的存儲器管理程序的具體內(nèi)容,在上述第一至第 四示例性實(shí)施例中已針對計(jì)算機(jī)的存儲器管理系統(tǒng)的操作和功能來詳細(xì)描 述了等同內(nèi)容。
如上所述,由于本發(fā)明被構(gòu)造為在展開任何塊時將經(jīng)歷過數(shù)據(jù)轉(zhuǎn)換的 塊中包括的所有塊的數(shù)據(jù)一次展開,因此諸如ROM這樣的非易失性存儲 單元的一個塊只可以被讀取一次。這使得能夠可靠且高效地改進(jìn)相關(guān)示例 (背景技術(shù))中涉及的缺點(diǎn)(讀取可能發(fā)生兩次或更多次從而增加啟動時 間)。另外,根據(jù)本發(fā)明,當(dāng)將非易失性存儲介質(zhì)的數(shù)據(jù)展開到主存儲單
元上時,無需讀取非易失性存儲介質(zhì)的多個塊,并且只使用一個TLB條
目。其原因是非易失性存儲介質(zhì)的經(jīng)轉(zhuǎn)換的數(shù)據(jù)都沒有被跨越多個塊地保存。
因此,由于非易失性存儲單元能夠?qū)膐s和應(yīng)用程序初始化處理之
后的主存儲映像的一部分按塊轉(zhuǎn)換來的映像數(shù)據(jù)進(jìn)行存儲,因此本發(fā)明的 示例性實(shí)施例使得每個塊的經(jīng)轉(zhuǎn)換的數(shù)據(jù)能夠被適當(dāng)?shù)胤旁谝黄?,而不?超過塊大小。利用該配置,由于在計(jì)算機(jī)系統(tǒng)啟動時,系統(tǒng)是從尚待經(jīng)歷
數(shù)據(jù)轉(zhuǎn)換的主存儲映像部分啟動的,因此系統(tǒng)被帶到與緊接OS和應(yīng)用程 序啟動之后的狀態(tài)相同的狀態(tài),以返回到緊接啟動之后的環(huán)境。此時,系 統(tǒng)從主存儲映像的一部分啟動以便在系統(tǒng)可操作之前不會導(dǎo)致操作中斷, 從而有效地減少了啟動時間。
由于這樣構(gòu)造以具有上述功能的根據(jù)本發(fā)明示例性實(shí)施例的計(jì)算機(jī)系 統(tǒng)使得每個塊的經(jīng)轉(zhuǎn)換的數(shù)據(jù)被適當(dāng)?shù)胤旁谝黄鸲粫^塊大小,因此 在計(jì)算機(jī)系統(tǒng)啟動時,系統(tǒng)從尚待經(jīng)歷數(shù)據(jù)轉(zhuǎn)換的主存儲映像部分啟動, 以進(jìn)入與緊接OS和應(yīng)用程序啟動之后的狀態(tài)相同的狀態(tài),從而使得系統(tǒng) 返回到緊接啟動之后的環(huán)境。于是,由于系統(tǒng)是從主存儲映像部分啟動 的,因此在系統(tǒng)變得可操作之前不會導(dǎo)致操作中斷,從而有效地減少了啟 動時間。
此外,由于在計(jì)算機(jī)系統(tǒng)啟動之后,在對經(jīng)歷過數(shù)據(jù)轉(zhuǎn)換的塊進(jìn)行第 一次訪問時,該塊中包括的所有計(jì)算出的數(shù)據(jù)都被展開,因此對該塊的訪 問只發(fā)生一次,這樣能夠完全消除相關(guān)示例所具有的缺點(diǎn),即在某些情況 下按塊的訪問可能讀取非易失性存儲單元的多個塊。于是,在這種情況 下,由于所關(guān)注的塊沒有超過塊大小,因此即使從只能按塊大小讀取的非
易失性存儲單元中,在讀取塊時也不需要讀取多于一個塊。
如上所述,由于根據(jù)本發(fā)明的示例性實(shí)施例,在對其數(shù)據(jù)尚待展開的 邏輯塊進(jìn)行第一次訪問時,其中存儲有所關(guān)注的塊的物理塊中包括的所有 邏輯塊都被一次展開(通過對經(jīng)歷過數(shù)據(jù)轉(zhuǎn)換的數(shù)據(jù)進(jìn)行逆向轉(zhuǎn)換來使數(shù) 據(jù)恢復(fù)為原始數(shù)據(jù)),因此對該物理塊的訪問只發(fā)生一次,這使得高效的 存儲器管理能夠有效地減少計(jì)算機(jī)系統(tǒng)的啟動時間。
雖然已經(jīng)參考本發(fā)明的示例性實(shí)施例來具體示出和描述了本發(fā)明,但 是本發(fā)明并不限于這些實(shí)施例。本領(lǐng)域的普通技術(shù)人員將會理解,可在其 中進(jìn)行各種形式和細(xì)節(jié)上的改變,而不會脫離由權(quán)利要求所限定的本發(fā)明 的精神和范圍。
通過參考并入
本發(fā)明基于2005年3月31日遞交的日本專利申請No. 2005-104932并
要求其優(yōu)先權(quán),這里通過引用將其公開內(nèi)容全部并入。
工業(yè)應(yīng)用性
本發(fā)明可用于存儲經(jīng)歷過諸如壓縮或加密之類的轉(zhuǎn)換處理的數(shù)據(jù),并 且在非易失性存儲介質(zhì)上動態(tài)地展開所述數(shù)據(jù)。這使得所需的非易失性存 儲介質(zhì)容量能夠得以減小,并且使得高度機(jī)密的內(nèi)容能夠被存儲在非易失 性存儲介質(zhì)上并且被使用d
權(quán)利要求
1.一種計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)具有非易失性存儲單元、主存儲單元以及數(shù)據(jù)處理器,該數(shù)據(jù)處理器包括存儲器管理單元,該存儲器管理單元用于管理存儲在所述非易失性存儲單元和所述主存儲單元中的程序以將存儲在所述非易失性存儲單元中的程序傳送到所述主存儲單元,其中所述存儲器管理單元包括程序存儲控制裝置,用于將經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序和尚待經(jīng)歷預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序存儲在所述非易失性存儲單元中;以及用于進(jìn)行以下操作的裝置在執(zhí)行所述程序存儲控制功能時對經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序進(jìn)行組合以便不跨越塊之間的邊界,并且在對某個塊進(jìn)行第一訪問時,將該塊中包括的所有數(shù)據(jù)展開到所述主存儲單元的相應(yīng)塊。
2. —種計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)具有非易失性存儲單元、主存儲 單元以及數(shù)據(jù)處理器,該數(shù)據(jù)處理器包括存儲器管理單元,該存儲器管理 單元用于管理存儲在所述非易失性存儲單元和所述主存儲單元中的程序以 將存儲在所述非易失性存儲單元中的程序傳送到所述主存儲單元,其中所 述存儲器管理單元包括程序存儲控制裝置,用于將經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序和尚待經(jīng)歷預(yù) 定數(shù)據(jù)轉(zhuǎn)換的程序存儲在所述非易失性存儲單元中;程序逆向轉(zhuǎn)換裝置,所述程序逆向轉(zhuǎn)換裝置在整個系統(tǒng)啟動之后OS和應(yīng)用的存儲器訪問時可操作,用于將存儲在所述非易失性存儲單元中的程序傳送到所述主存儲單元,以對該程序進(jìn)行逆向轉(zhuǎn)換;物理地址改變裝置,用于將存儲在所述非易失性存儲單元中的程序的物理地址改變?yōu)樗鲋鞔鎯卧奈锢淼刂罚灰约叭萘糠峙溲b置,用于分配多個邏輯塊的容量,所述多個邏輯塊用于對 包括分配給存儲在所述非易失性存儲單元中的所述程序的預(yù)定容量的一個 物理地址的塊中的數(shù)據(jù)進(jìn)行展開。
3. —種計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)具有非易失性存儲單元、主存儲單元以及數(shù)據(jù)處理器,該數(shù)據(jù)處理器包括存儲器管理單元,該存儲器管理 單元用于管理存儲在所述非易失性存儲單元和所述主存儲單元中的程序以 將存儲在所述非易失性存儲單元中的程序傳送到所述主存儲單元,其中所 述存儲器管理單元包括地址變換單元,所述地址變換單元在存在來自程序的存儲器訪問時可 操作以將邏輯塊地址變換成物理塊地址;映射表單元,所述映射表單元保存所述地址變換單元的信息; 保護(hù)信息單元,所述保護(hù)信息單元保存所述邏輯塊地址的原始保護(hù)信 息;以及映射表改變單元,所述映射表改變單元在發(fā)生異常時更新所述映射表 單元的條目。
4. 一種計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)具有非易失性存儲單元、主存儲 單元以及數(shù)據(jù)處理器,該數(shù)據(jù)處理器包括存儲器管理單元,該存儲器管理 單元用于管理存儲在所述非易失性存儲單元和所述主存儲單元中的程序以 將存儲在所述非易失性存儲單元中的程序傳送到所述主存儲單元,其中所 述存儲器管理單元包括地址變換單元,所述地址變換單元在存在來自程序的存儲器訪問時可 操作以將邏輯塊地址變換成物理塊地址;映射表單元,所述映射表單元保存所述地址變換單元的信息;以及映射表改變單元,所述映射表改變單元在發(fā)生異常時更新所述映射表 單元的條目;其中所述映射表單元將每個邏輯塊的原始保衛(wèi)模式保存在所述經(jīng)轉(zhuǎn)換的數(shù) 據(jù)中。
5. 如權(quán)利要求3或權(quán)利要求4所述的計(jì)算機(jī)系統(tǒng),其中 所述非易失性存儲單元對通過使緊接系統(tǒng)啟動之后的所述主存儲的映像經(jīng)歷按預(yù)定寬度的數(shù)據(jù)轉(zhuǎn)換處理而獲得的數(shù)據(jù)進(jìn)行存儲,所述地址變換單元包括以下功能,即在系統(tǒng)啟動之后發(fā)生對尚待獲得的主存儲塊的訪問時,響應(yīng)性地生成異常處理;并且所述映射表改變單元包括以下功能,即,將與所述尚待獲得的主存儲塊相對應(yīng)的所述非易失性存儲單元的塊中包括的至少一個塊的數(shù)據(jù)展開到 所述主存儲單元上的各個相應(yīng)的尚待獲得的塊,以將所述塊從尚待獲得狀 態(tài)改變?yōu)橐勋@得狀態(tài)。
6. 如權(quán)利要求1或權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中 對存儲在所述非易失性存儲單元中并且經(jīng)歷了預(yù)定的數(shù)據(jù)轉(zhuǎn)換的所述程序,統(tǒng)一地設(shè)定保護(hù)模式NULL;.并且基于所述系統(tǒng)啟動之后來自O(shè)S和應(yīng)用的請求,所述主存儲單元上的 物理地址被分配給存儲在所述非易失性存儲單元中并且經(jīng)歷了預(yù)定數(shù)據(jù)轉(zhuǎn) 換的所述程序。
7. 如權(quán)利要求2、權(quán)利要求3、權(quán)利要求4或權(quán)利要求5所述的計(jì)算 機(jī)系統(tǒng),其中,在存儲在所述非易失性存儲單元的預(yù)定大小的物理地址中 的多個程序中的每一個程序中,輸入與所述主存儲單元的物理地址相對應(yīng) 的邏輯地址、邏輯地址的總數(shù)和程序數(shù)據(jù)大小。
8. 如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中,在存儲在所述非易失性存 儲單元的預(yù)定大小的物理地址中的多個程序中的每一個程序中,輸入與所 述主存儲單元的物理地址相對應(yīng)的邏輯地址、邏輯地址的總數(shù)、程序數(shù)據(jù) 大小和保護(hù)模式。
9. 如權(quán)利要求1至權(quán)利要求8中任何一個所述的計(jì)算機(jī)系統(tǒng),其中, 將所述非易失性存儲單元的預(yù)定數(shù)據(jù)容量的多個物理地址作為一個單元, 來容納分配給多個邏輯地址的所述程序。
10. 如權(quán)利要求1至權(quán)利要求9中任何一個所述的計(jì)算機(jī)系統(tǒng),其 中,存儲在所述非易失性存儲單元中的所述經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序還 經(jīng)歷按固定時間間隔的內(nèi)容不同的預(yù)定數(shù)據(jù)轉(zhuǎn)換。
11. 一種被構(gòu)造為將存儲在非易失性存儲單元中的程序傳送到主存儲 單元的計(jì)算機(jī)系統(tǒng)的存儲器管理方法,包括第一步驟,S卩,將所述經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序和所述尚待經(jīng)歷預(yù) 定數(shù)據(jù)轉(zhuǎn)換的程序存儲在所述非易失性存儲單元中;第二步驟,該步驟在所述計(jì)算機(jī)系統(tǒng)啟動之后存在OS和應(yīng)用程序的 存儲器訪問時可操作以將存儲在所述非易失性存儲單元中的所述程序中的經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序傳送到所述主存儲單元,以執(zhí)行所述預(yù)定數(shù)據(jù)轉(zhuǎn)換的逆向轉(zhuǎn)換;第三步驟,即,將存儲在所述非易失性存儲單元中的所述程序的物理 地址改變?yōu)樗鲋鞔鎯卧奈锢淼刂罚灰约暗谒牟襟E,即,分配多個邏輯塊的容量,用于對包括分配給存儲在所 述非易失性存儲單元中的所述程序的預(yù)定容量的一個物理地址的塊中的數(shù) 據(jù)進(jìn)行展開。
12. 如權(quán)利要求11所述的計(jì)算機(jī)系統(tǒng)的存儲器管理方法,其中 在所述第一步驟和第二步驟之間,提供這樣一個步驟,即對存儲在所述非易失性存儲單元中的并且經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的所述程序,統(tǒng)一地設(shè) 定保護(hù)模式NULL。
13. 如權(quán)利要求11或權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng)的存儲器管理方 法,其中提供一個與上述第一步驟并行的步驟,即在所述非易失性存儲單元的 預(yù)定大小的物理地址中存儲的多個程序中的每一個程序中,輸入與所述主 存儲單元的物理地址相對應(yīng)的邏輯地址、邏輯地址總數(shù)和程序數(shù)據(jù)大小。
14. 如權(quán)利要求11或權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng)的存儲器管理方 法,其中提供一個與上述第一步驟并行的步驟,即在所述非易失性存儲單元的 預(yù)定大小的物理地址中存儲的多個程序中的每一個程序中,輸入與所述主 存儲單元的物理地址相對應(yīng)的邏輯地址、邏輯地址總數(shù)、程序數(shù)據(jù)大小和 保護(hù)模式。
15. 如權(quán)利要求11至權(quán)利要求14中任何一個所述的計(jì)算機(jī)系統(tǒng)的存儲器管理方法,其中提供一個與上述第一步驟并行的步驟,即,使得所述非易失性存儲單元中存儲的程序之中的經(jīng)歷了預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序經(jīng)歷按固定時間間隔的 內(nèi)容不同的預(yù)定轉(zhuǎn)換。
16. —種存儲器管理程序,用于使得對被構(gòu)造為將存儲在非易失性存 儲單元中的程序傳送到主存儲單元的計(jì)算機(jī)系統(tǒng)的操作進(jìn)行控制的計(jì)算機(jī) 執(zhí)行以下過程將所述經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序和所述尚待經(jīng)歷預(yù)定數(shù)據(jù)轉(zhuǎn)換的程 序存儲在所述非易失性存儲單元中的過程;在所述系統(tǒng)啟動之后存在OS和應(yīng)用的存儲器訪問時可操作的過程, 該過程將存儲在所述非易失性存儲單元中的所述程序中的經(jīng)歷過預(yù)定數(shù)據(jù) 轉(zhuǎn)換的程序傳送到所述主存儲單元,以執(zhí)行該預(yù)定數(shù)據(jù)轉(zhuǎn)換的逆向轉(zhuǎn)換;將存儲在所述非易失性存儲單元中的所述程序的物理地址改變?yōu)樗?主存儲單元的物理地址的過程;以及分配多個邏輯塊的容量,用于對包括分配給存儲在所述非易失性存儲 單元中的所述程序的預(yù)定容量的一個物理地址的塊中的數(shù)據(jù)進(jìn)行展開的過 程。
17. 如權(quán)利要求16所述的存儲器管理程序,其使得所述計(jì)算機(jī)執(zhí)行以下過程對存儲在所述非易失性存儲單元中的經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的所述程序,統(tǒng)一地設(shè)定保護(hù)模式NULL的過程;以及在所述計(jì)算機(jī)系統(tǒng)啟動之后發(fā)生OS和應(yīng)用的存儲器訪問時可操作的 過程,該過程將所述主存儲單元上的物理地址分配給存儲在所述非易失性 存儲單元中的并且經(jīng)歷過預(yù)定數(shù)據(jù)轉(zhuǎn)換的所述程序。
18. 如權(quán)利要求16或權(quán)利要求17所述的存儲器管理程序,其使得所 述計(jì)算機(jī)還執(zhí)行以下過程,即在所述非易失性存儲單元的預(yù)定大小的物理 地址中存儲的多個程序中的每一個程序中,輸入與所述主存儲單元的物理 地址相對應(yīng)的邏輯地址、邏輯地址總數(shù)和程序數(shù)據(jù)大小。
19. 如權(quán)利要求16或權(quán)利要求17所述的存儲器管理程序,其使得所 述計(jì)算機(jī)執(zhí)行以下過程,即在所述非易失性存儲單元的預(yù)定大小的物理地 址中存儲的多個程序中的每一個程序中,輸入與所述主存儲單元的物理地 址相對應(yīng)的邏輯地址、邏輯地址總數(shù)、程序數(shù)據(jù)大小和保護(hù)模式。
20. 如權(quán)利要求16、權(quán)利要求17、權(quán)利要求18或權(quán)利要求19所述的 存儲器管理程序,其使得所述計(jì)算機(jī)執(zhí)行以下過程,即,使得所述非易失 性存儲單元中存儲的所述程序之中的經(jīng)歷了預(yù)定數(shù)據(jù)轉(zhuǎn)換的程序再經(jīng)歷按 固定時間間隔的內(nèi)容不同的預(yù)定轉(zhuǎn)換。
全文摘要
ROM(非易失性存儲單元(152)預(yù)先存儲經(jīng)轉(zhuǎn)換的映像數(shù)據(jù)(290)和未經(jīng)歷數(shù)據(jù)轉(zhuǎn)換的初始操作映像(224)。當(dāng)數(shù)據(jù)在邏輯塊單元中經(jīng)歷數(shù)據(jù)轉(zhuǎn)換(壓縮、加密等等)之后,一個或多個邏輯塊被聚集到預(yù)定大小的物理塊中并被存儲在非易失性存儲單元(152)中。當(dāng)對沒有展開數(shù)據(jù)的邏輯塊進(jìn)行第一次訪問時,包含該塊的物理塊中包含的所有邏輯塊都被一次性展開(已經(jīng)歷轉(zhuǎn)換的數(shù)據(jù)經(jīng)歷逆向轉(zhuǎn)換以獲得原始數(shù)據(jù))。因而,對物理塊進(jìn)行一次訪問就足夠了。也就是說,可以執(zhí)行有效的存儲器管理和計(jì)算機(jī)系統(tǒng)的高速啟動。
文檔編號G06F12/06GK101180612SQ20068001076
公開日2008年5月14日 申請日期2006年3月30日 優(yōu)先權(quán)日2005年3月31日
發(fā)明者高橋雅彥 申請人:日本電氣株式會社