一種計算系統及操作系統調度內存和啟動系統的方法
【技術領域】
[0001]本發明涉及一種計算系統,更具體的說是一種提供更好的性能、更好地保護NAND閃存的計算系統及快速啟動操作系統的方法。
【背景技術】
[0002]典型的馮諾依曼體系計算機包括輸入設備、輸出設備、運算器、控制器及存儲器。完美的存儲器應該容量足夠大、速度足夠快、并且可以永久存儲,但現實中是不存在這種存儲器的,現在的存儲技術方案都是在存儲容量、速度、是否可以永久存儲這三個方面進行折中后的一種解決方案。
[0003]現在計算機、智能手機、平板電腦中,用戶數據、文件被存在硬盤,或者NAND閃存芯片中以及由NAND閃存組成的固態硬盤里。NAND和固態硬盤取代傳統的機械硬盤又是一個產業發展的大趨勢。
[0004]NAND閃存的一個問題是NAND具有有限的壽命。里面的每一個page經過一定次數的擦寫以后,就會永久失效不能繼續使用。目前的產業發展趨勢是NAND的容量和數據密度增長非常快,但卻是以降低壽命為代價。可擦寫次數從最初的10萬次降低到目前的3000
次左右。
[0005]由于NAND閃存、硬盤、固態硬盤是整塊讀寫的設備,程序不能直接在其中運行。程序必須在能夠隨機讀寫的RAM中運行。目前最流行的RAM技術是DRAM。
[0006]而如何基于上述不同的存儲設備進行動態調度是現代操作系統一個重要課題,一種策略是交換(swapping),另一種是虛擬存儲器(virtual memory),大部分虛擬存儲器都在使用分頁(paging)技術。
[0007]具體來說,把RAM分成一個個的單元來管理,叫做Page(頁)。一個應用軟件可以分批加載到RAM中運行,運行中也可以向系統申請新的RAM空間,但每次使用的內存必須是整數個頁。
[0008]每一個任務(無論系統任務還是用戶任務)都使用邏輯地址,仿佛有一個獨自的內存空間。操作系統內核(Kernel)負責把一個個的內存頁分配給每個任務,制定邏輯/物理地址翻譯表。CPU運行時會自動根據這個翻譯表在正確的物理地址讀寫。這就是虛擬內存技術,它使得每一個任務的編程者都不需要考慮自己的任務要和別的任務共享一塊物理RAM0
[0009]當物理RAM空間已經耗盡,內核會把一部分不經常用到或很久沒有使用的內存頁轉存到硬盤里,并做好標記。為一些任務的新的內存需求騰出空間,也就是換出(SwapOut) ο
[0010]當被換出的內存頁所在的任務被運行,需要讀寫被換出的頁時,CPU會自動地給軟件一個信號。軟件檢查之前的標記,確認不是程序的錯誤,把這個頁再加載到內存中來,如果必要的話,把別的頁換出。這叫按需調頁(Demand Paging).
[0011]附圖2就是典型的交換及虛擬存儲的示例圖。
[0012]與此對應的開機程序大致為如下步驟:
[0013]1、引導加載階段:
[0014]a)開機后硬件啟動引導加載器(Boot Loader)
[0015]b)引導加載器初始化硬件
[0016]c)引導加載器把內核加載到RAM中,并把系統控制權交給內核
[0017]2、內核階段:
[0018]a)內核自我初始化
[0019]b)進一步初始化硬件
[0020]c)依次加載啟動所有的系統任務
[0021]3、用戶階段:所有系統任務完成啟動,進入待機狀態,等待用戶輸入以啟動用戶任務
[0022]基于上述計算系統的一個問題,就是DRAM的運行功耗太高。而實際上,DRAM的運行功耗大部分是消耗在和CPU之間的信息傳輸上的。在主板上,CPU和DRAM之間的導線上具有一定的電容,在超高的運行頻率下,一個微小的電容也會造成可觀的功耗。特別是高頻傳輸條件下要求做阻抗匹配,一旦打開阻抗匹配,傳輸功耗還會增加10倍。如果把RAM和CPU做在一個芯片上就沒有這個問題,但DRAM和邏輯芯片的工藝不兼容,不能做在一個芯片上。
[0023]另一個問題,就是SSD取代固態硬盤后,SWAP使用得少了。因為不像硬盤,SSD內部的NAND閃存具有有限的擦寫次數。SWAP造成頻繁的NAND擦寫,會影響產品的壽命。
[0024]而且,隨著軟件越來越大,對于計算機,開機速度慢非常地影響用戶體驗。一些其他的嵌入式計算設備,如汽車電子設備,開機速度有嚴格地強制要求;使用能支持眾多應用的開放操作系統成為兩難。
【發明內容】
[0025]隨著存儲技術的發展,出現了一種新的存儲設備即磁阻內存(MRAM),磁阻內存是一種新的內存和存儲技術,可以像RAM —樣快速隨機讀寫,還可以像NAND閃存一樣在斷電后永久保留數據。不像NAND,MRAM可以無限多次地擦寫,預計未來相當長一段時間內,MRAM的容量比NAND低,成本比NAND高。
[0026]本發明中,我們提出一種新的架構,使用嵌入式MRAM支持計算,使用DRAM取代閃存或硬盤來做SWAP空間,補充MRAM空間的不足。
[0027]具體而言:設置一種計算系統,包括CPU,隨機訪問存儲器,存儲裝置,所述CPU通過系統總線及隨機訪問存儲器接口與隨機訪問存儲器傳輸指令與數據,所述CPU通過專用輸入輸出接口與存儲裝置傳輸指令與數據,所述計算系統還包括一非易失隨機存儲器,所述非易失隨機存儲器可與CPU交換指令與數據并且能夠在斷電的情況下保持內容,所述非易失隨機存儲器與CPU集成設置。
[0028]所述非易失隨機存儲器為磁性隨機存儲器。
[0029]基于上述計算系統,設計一種操作系統調度內存的方法,設置一種計算系統,包括CPU,隨機訪問存儲器,存儲裝置,所述CPU通過系統總線及隨機訪問存儲器接口與隨機訪問存儲器傳輸指令與數據,所述CPU通過專用輸入輸出接口與存儲裝置傳輸指令與數據,所述存儲管理系統還包括一非易失隨機存儲器,所述可與CPU及隨機訪問存儲器交換指令與數據,
[0030]系統內核儲存在非易失隨機存儲器,系統將直接從非易失隨機存儲器中啟動,操作系統和所有應用在非易失隨機存儲器中運行。
[0031]如果操作系統中的進程不斷申請新的內存頁導致非易失隨機存儲器空間不夠,使用開放操作系統中普遍采用的換出/按需分頁機制,但把暫時不需要的內存頁換出道到外圍的隨機訪問存儲器中,而不是放到存儲裝置里。
[0032]—種啟動系統的方法,設置一種計算系統,包括CPU,隨機訪問存儲器,存儲裝置,所述CPU通過系統總線及隨機訪問存儲器接口與隨機訪問存儲器傳輸指令與數據,所述CPU通過專用輸入輸出接口與存儲裝置傳輸指令與數據,所述存儲管理系統還包括一非易失隨機存儲器,所述可與CPU及隨機訪問存儲器交換指令與數據,包括如下步驟:
[0033]步驟一:存儲中設一個空間,該空間可以把整個隨機訪問存儲器的內容儲存到其中;
[0034]步驟二:每次機器關機前,調換所有內存頁的位置,按過去一段時間內使用的頻率或上一次使用的時間排序,將隨機訪問存儲器的內容換出到存儲裝置中;
[0035]步驟三:機器開機通電后CPU調用非易失隨機存儲器中的系統啟動程序,系統啟動程序初始化硬件,并啟動一個內存頁恢復任務,在后臺運行;
[0036]步驟四:待啟動系統進入正常運行狀態等待用戶輸入。
[0037]步驟三中的內存頁恢復任務按上述排序恢復原來隨機訪問存儲器的內容,直到所有的內容被恢復,但如果收到特殊分頁信號,將優先恢復所需的內存頁;
[0038]步驟四之后如果用戶的輸入導致不在非易失隨機存儲器中并且尚未被恢復到隨機訪問存儲器中的內存頁被調用,系統會正常地產生按需分頁信號。
[0039]所述非易失隨機存儲器為磁性隨機存儲器。
【附圖說明】
[0040]圖1是一種傳統計算機存儲設備及CPU的結構;
[0041]圖2是現有技術下交換及虛擬存儲的示例圖;
[0042]圖3是本專利系統結構及啟動系統方法的交換及分頁策略示意圖。
【具體實施方式】
[0043]下面結合說明書附圖來說明【具體實施方式】。
[0044]設置一種計算系統,包括CPU,隨機訪問存儲器,存儲裝置,所述CPU通過總線及隨機訪問存儲器接口與隨機訪問存儲器傳輸指令與數據,所述CPU通過總線及輸入輸出接口與存