一種面向異構內存系統建立檢查點的裝置的制造方法
【專利摘要】一種面向異構內存系統建立檢查點的裝置,屬于計算機系統結構的系統容錯技術,解決現有面向異構內存的基于存儲的檢查點技術開銷過大、存在大量無用寫的問題。本發明包括異構內存管理模塊、地址映射模塊、派生頁管理模塊、檢查點調度模塊,異構內存管理模塊管理異構內存中數據在DRAM和NVM間的移動;地址映射模塊提供一種細粒度、低開銷的地址映射策略,當寫請求試圖修改檢查點數據時,地址映射模塊將寫請求映射到其它硬件地址,以保持檢查點數據的一致性;派生頁管理模塊對派生頁進行管理;檢查點調度模塊控制何時觸發檢查點。本發明對上層應用透明,有效減少了內存占用和冗余寫,在維護檢查點一致性時減少了無用寫,進一步降低了系統運行時間。
【專利說明】
一種面向異構內存系統建立檢查點的裝置
技術領域
[0001] 本發明屬于計算機系統結構的系統容錯技術,具體涉及一種面向異構內存系統建 立檢查點的裝置。
【背景技術】
[0002] 檢查點技術是一種常用于系統容錯領域的技術,其將系統內存中工作數據和中央 處理器(CPU)狀態等信息作為檢查點保存到非易失存儲介質中,當系統遇到故障時,通過檢 查點中的信息可以將系統恢復到建立檢查點時刻的狀態。
[0003] 傳統的基于存儲器的檢查點技術將檢查點存儲在硬盤或固態硬盤中,受限于硬盤 和固態硬盤的讀寫性能,基于存儲器的檢查點技術難以高頻率進行,這限制了系統的容錯 能力。內存檢查點技術可以解決這種問題,內存檢查點技術將檢查點存儲于內存中的檢查 點存儲區域,利用內存的高訪問性能實現了高頻進行的檢查點。
[0004] 非易失性存儲器(NVM)是一種新型存儲介質,其相較于目前常用的靜態隨機存儲 器(SRAM)和動態隨機存儲器(DRAM)具有斷電后數據不丟失、大容量的特征;但是,其相較于 DRAM、NVM通常有著相近的讀延遲,慢一個數量級的寫延遲,以及低幾個數量級的寫入壽命, 在性能上有一定的劣勢。
[0005] 由于NVM的這種缺陷,在計算機系統中,其還不能替代DRAM作為內存使用。為了結 合DRAM和NVM兩者的優勢,目前許多研究者提出了使用異構內存系統。異構內存系統指將 DRAM和NVM都連接到內存總線上,使用這兩者共同構造內存系統。異構內存系統有兩種常見 結構:DRAM和NVM共享內存地址空間的并列結構,DRAM作為NVM緩存的層次結構。異構內存系 統很好地結合了DRAM和NVM兩者的優勢,具有大容量、高性能、高可靠性的特征,已經成為了 未來內存系統的發展趨勢。
[0006] 但是,將傳統的內存檢查點技術簡單迀移到異構內存系統中會遇到如何維護檢查 點一致性的問題。內存檢查點技術將工作數據和檢查點都存儲于內存中。創建檢查點時,將 工作數據標記為檢查點即可,其并不觸發數據的復制。檢查點完成后,應用程序恢復運行。 如果應用程序此時試圖修改工作數據,將破壞上一次得到的檢查點。
[0007] 傳統的內存檢查點技術常使用日志和寫時復制技術來維護檢查點的一致性。日志 技術要求在寫入數據前把數據復制到日志區域,然后再把新數據寫入,即寫入數據時會觸 發兩倍的寫入。寫時復制技術受限于地址映射技術,只能在頁粒度上執行寫時復制。即使頁 中只有少量數據修改,也需要復制整個頁。因此,日志技術和寫時復制技術都會觸發較大的 無用寫。異構內存系統中,NVM常常具有較差的寫性能。因此日志技術和寫時復制技術產生 的無用寫在異構內存系統中產生了較大性能影響。
[0008] 目前結合NVM和檢查點技術的工作都是基于存儲器的檢查點技術,將這類技術迀 移入異構內存系統中將會導致工作數據和檢查點都存放于NVM中。檢查點是某一個時刻工 作數據的副本,因此工作數據和檢查點存在大量的共同數據,所以基于存儲器的檢查點技 術存在大量冗余數據,進一步導致了可用內存減少和冗余寫。因此目前還缺乏一種面向異 構內存系統的內存檢查點技術。
[0009] 為了便于理解本發明,對有關名詞加以說明:
[0010] 物理頁:頁表機制負責從虛擬頁地址到物理頁地址的轉換,本文所指物理頁和頁 表機制中的物理頁同義,每頁物理頁包含多個緩存塊,每個緩存塊包含多個字節。
[0011] 物理地址:物理頁中按字節編址,每個字節具有一個物理地址,如果該物理頁緩存 在DRAM中,物理地址則指向DRAM中對應緩存頁中的字節。當物理頁與NVM頁建立映射關系 后,一個物理地址可能指向物理頁所映射到的基礎頁、派生頁中的字節。
[0012] 緩存塊地址、頁地址:緩存塊地址是緩存塊中第一個字節的地址,頁地址是頁中第 一個緩存塊中第一個字節的地址。
[0013] 硬件頁:硬件頁指DRAM或NVM上的頁,相應的硬件地址為硬件頁中每個字節的地 址,可分為DRAM地址和NVM地址。
[0014] 基礎頁和派生頁:將NVM存儲空間分成基礎頁存儲區和派生頁存儲區,基礎頁存儲 區用于順序存儲基礎頁,派生頁存儲區用于順序存儲派生頁。
[0015] 將一頁物理頁映射到兩個NVM硬件頁,其中第一個NVM頁被稱為基礎頁;第二個NVM 頁被稱為派生頁,基礎頁和派生頁分別包含多個緩存塊。
[0016] 各連續頁的各物理地址或硬件地址順序編址。
[0017] 頁內偏移地址:指物理地址或硬件地址減去它們所屬頁地址以后得到的地址。
[0018] 本發明為每頁物理頁建立了物理頁臟標記和檢查點位置標記兩組標記,兩組標記 各自均包括C位,各位序號與物理頁中緩存塊序號對應,C為每頁物理頁中緩存塊的個數;
[0019] 物理頁臟標記中,某位為0或1,表示自上一次建立檢查點以來物理頁相應緩存塊 未被修改或被修改過;
[0020] 檢查點位置標記中,某位為0或1,表示上一次建立的檢查點中,該物理頁相應緩存 塊對應的檢查點數據存于基礎頁或是派生頁中。
[0021] 本發明有關符號說明如下:
[0022] [xj:對符號內的數值x向下取整。
[0023] x mod y:取數值x除以數值y的余數。
【發明內容】
[0024]本發明提供一種面向異構內存系統建立檢查點的裝置,解決現有面向異構內存的 基于存儲的檢查點技術開銷過大、存在大量無用寫的問題。
[0025]本發明所提供的一種面向異構內存系統建立檢查點的裝置,包括異構內存管理模 塊、地址映射模塊、派生頁管理模塊、檢查點調度模塊,其特征在于:
[0026] (1)所述異構內存管理模塊接受用戶的內存訪問請求,判斷內存訪問請求是否命 中DRAM緩存,是則將內存訪問請求轉發給DRAM,否則進行緩存替換,向地址映射模塊發出地 址映射請求,根據地址映射模塊返回的NVM地址訪問NVM,將DRAM中淘汰頁寫回NVM,要訪問 的頁讀入DRAM;
[0027] (2)所述地址映射模塊接受異構內存管理模塊發出的地址映射請求,根據物理頁 上是否存在物理頁臟標記和檢查點位置標記,判斷相關物理頁是否與基礎頁、派生頁建立 映射關系,是則將一頁物理頁地址映射為基礎頁和派生頁兩頁NVM頁地址,限定物理頁的第 N個緩存塊地址只能映射為這兩頁NVM頁的第N個緩存塊地址,分別用于存儲物理頁第N個緩 存塊的工作數據和最新的檢查點;并向異構內存模塊返回映射得到的NVM緩存塊地址,根據 情況更新物理頁臟標記;
[0028]否則向派生頁管理模塊發出派生頁分配請求,根據派生頁管理模塊返回的頁地址 構造一頁物理頁映射到兩頁NVM頁的映射關系,并為該物理頁增加物理頁臟標記和檢查點 位置標記;
[0029] (3)所述派生頁管理模塊接受地址映射模塊發出的派生頁分配請求,判斷派生頁 存儲區中是否存在未被分配的派生頁,是則向地址映射模塊返回該未被分配的派生頁,否 則繼續判斷是否存在可被釋放的派生頁,是則釋放該派生頁,并將該頁返回給地址映射模 塊,否則向檢查點調度模塊發出建立檢查點的請求,并不斷查詢是否已經建立檢查點,是則 重新尋找可釋放的派生頁,并將釋放的派生頁返回給地址映射模塊;
[0030] (4)檢查點調度模塊自身定時啟動建立檢查點或者從派生頁管理模塊收到建立檢 查點請求啟動建立檢查點,建立檢查點時,將檢查點所包含的數據寫入NVM,對相關物理頁 的檢查點位置標記和物理頁臟標記進行更新。
[0031] 所述的面向異構內存系統建立檢查點的裝置,其特征在于:
[0032] 所述異構內存管理模塊執行下述操作:
[0033] (1)等待用戶的內存訪問請求,收到內存訪問請求后進行步驟(2);
[0034] (2)檢測在DRAM中是否緩存有內存訪問請求中的物理地址Ar要訪問的頁,是則將 DRAM中相應頁地址賦予DRAM地址Ad,進行步驟(3),否則轉步驟(4);
[0035] (3)向DRAM轉發內存訪問請求:將Ad+Ar mod Sp的值賦予Ad,然后,將內存訪問請 求中的物理地址Ar改為Ad,向DRAM發出該內存訪問請求,轉步驟(1);
[0036] (4)選擇淘汰頁:搜索DRAM中上一次訪問時間距當前時間最久的DRAM頁,將其DRAM 頁地址賦予DRAM地址Ad;
[0037] (5)把淘汰頁寫回NVM:遍歷DRAM地址Ad所對應的DRAM頁中每個緩存塊,判斷該緩 存塊自從該DRAM頁緩存到DRAM中以來,到當前時間為止,是否未被修改過,是則繼續掃描下 一緩存塊,直至掃描完畢;進行步驟(6);否則向地址映射模塊發送地址映射請求,該地址映 射請求為寫請求,包括各緩存塊所對應的物理地址A;等待地址映射模塊返回NVM地址A ',將 各DRAM緩存塊復制到NVM地址A '所指向的NVM緩存塊,繼續掃描下一緩存塊,直至掃描完畢, 進行步驟(6);
[0038] (6)把要訪問的頁讀入DRAM:遍歷內存訪問請求中的物理地址Ar所對應的物理頁 中的每個緩存塊,向地址映射模塊發送地址映射請求,該地址映射請求為讀請求,包括各緩 存塊所對應的物理地址A;等待地址映射模塊返回NVM地址A',將A '所指向的各NVM緩存塊復 制到DRAM頁的對應DRAM緩存塊中,轉步驟(3);所述對應DRAM緩存塊指在DRAM頁中和NVM緩 存塊具有相同頁內偏移地址的緩存塊。
[0039]所述的面向異構內存系統建立檢查點的裝置,其特征在于:
[0040] 所述地址映射模塊執行下述操作:
[0041] (1)等待異構內存管理模塊發來地址映射請求,收到地址映射請求后進行步驟 (2);
[0042] ( 2 )根據地址映射請求中的物理地址A,計算其對應的物理頁地址Ap : Ap =〖A / Spj X Sp,式中,Sp為頁大小,單位為字節;
[0043] (3)檢測Ap所對應的物理頁是否存在物理頁臟標記和檢查點位置標記,是進行步 驟(4),否則轉步驟(8);
[0044] (4)對Ap所對應的物理頁的物理頁臟標記和檢查點位置標記按位進行異或運算, 得到異或運算結果P;
[0045] (5)計算緩存塊在頁內的編號N:N = [A. mod S:p / Scj;式中,Sc為緩存塊大小, 單位為字節;
[0046] (6)判斷P的第N位是否為0,是則進行步驟(7),否則轉步驟(10);
[0047] (7)將A的值賦予NVM地址A',向異構內存管理模塊返回A',轉步驟(11);
[0048] (8)判斷當前地址映射請求是否為寫請求,是則轉步驟(9),否則進行步驟(7);
[0049] (9)向派生頁管理模塊發出派生頁分配請求,等待派生頁管理模塊返回頁地址A1, 構造Ap所對應的物理頁和兩頁NVM頁間的映射關系:將Ap賦予基礎頁地址Ab,將A1賦予派生 頁地址As;然后為Ap所對應的物理頁建立物理頁臟標記和檢查點位置標記兩組標記,將兩 組標記中的各位全部置0,轉步驟(4);
[0050] (10)返回派生頁第N個緩存塊的NVM地址A ' : A ' = As+N X Sc,向異構內存管理模塊 返回A',進行步驟(11);
[0051] (11)判斷當前地址映射請求是否為寫請求,是則置物理頁臟標記第N位為1,轉步 驟(1);否則轉步驟(1)。
[0052] 所述的面向異構內存系統建立檢查點的裝置,其特征在于:
[0053]所述派生頁管理模塊執行下述操作:
[0054] (1)在NVM存儲空間中建立派生頁存儲區,將指針L指向派生頁存儲區的第一頁;
[0055] (2)等待地址映射模塊的派生頁分配請求,收到派生頁分配請求后進行步驟(3);
[0056] (3)判斷指針L的指向是否在派生頁存儲區邊界內,是則進行步驟(4),否則轉步驟 (5);
[0057] (4)向地址映射模塊返回指針L指向的派生頁所對應的頁地址,再將指針L后移,指 向下一頁,轉步驟(2);
[0058] (5)建立物理頁集合S,掃描派生頁存儲區,判斷自建立檢查點時間T至當前時間 內,各派生頁對應的物理頁是否未發生過寫入,是則將該物理頁加入物理頁集合S,繼續掃 描下一派生頁,直至掃描完畢,進行步驟(6);否則繼續掃描下一派生頁,直至掃描完畢,進 行步驟(6);
[0059] (6)判斷物理頁集合S是否為空,是則轉步驟(13),否則進行步驟(7);
[0060] (7)建立DRAM頁集合Sd,掃描物理頁集合S,判斷各物理頁是否緩存到DRAM中,是則 將該物理頁對應的DRAM頁加入到Sd中,繼續掃描下一物理頁,直至掃描完畢,進行步驟(8); 否則繼續掃描下一物理頁,直至掃描完畢,進行步驟(8);
[0061] (8)判斷DRAM頁集合Sd是否為空,是則將物理頁集合S中的第一個物理頁所對應的 派生頁地址賦予待釋放派生頁地址A1,轉步驟(10),否則進行步驟(9);
[0062] (9)掃描DRAM頁集合Sd,判斷自建立檢查點時間T和該頁緩存至IjDRAM中時間這兩者 中較晚時間以來,到當前時間為止,是否存在某DRAM頁沒有發生過寫入,是則停止掃描,并 將該DRAM頁對應物理頁所屬派生頁地址賦予待釋放派生頁地址A1,轉步驟(10),否則轉步 驟(13);
[0063] (10)對A1通過映射關系對應的物理頁地址Ap的物理頁臟標記和檢查點位置標記 進行異或運算,得到異或運算結果P;
[0064] (11)根據P將待釋放派生頁中的有效數據寫回基礎頁:順序遍歷P的每一位,判斷 該位是否為1,是則將派生頁中該位序號的緩存塊復制到基礎頁中相應序號的緩存塊,進行 步驟(12);否則不進行處理,進行步驟(12);
[0065] (12)向地址映射模塊返回A1,轉步驟(2);
[0066] (13)向檢查點調度模塊發出建立檢查點請求,進行步驟(14);
[0067] (14)向檢查點調度模塊查詢是否已經建立檢查點,是則轉步驟(5),否則繼續步驟 (14)〇
[0068] 所述的面向異構內存系統建立檢查點的裝置,其特征在于:
[0069] 所述檢查點調度模塊執行下述操作:
[0070] (1)系統啟動時,將啟動時間賦予建立檢查點時間T,并根據用戶指令確定建立檢 查點間隔時間I;
[0071] (2)判斷是否滿足條件(2.1)或者(2.2),是則進行步驟(3),否則繼續步驟(2);
[0072] ^??當前時間一了彡工;
[0073] (2.2)收到派生頁管理模塊的建立檢查點請求;
[0074] (3)中斷系統運行,將當前時間值賦予T,進行步驟(4);
[0075] (4)將DRAM所有頁寫回NVM;將CPU上下文信息、訪存隊列、元數據均寫入NVM,進行 步驟(5);
[0076] (5)遍歷所有具有物理頁臟標記和檢查點位置標記的物理頁,分別對各物理頁的 物理頁臟標記和檢查點位置標記按位進行異或運算,將異或運算結果P按位賦予其檢查點 位置標記,將物理頁臟標記各位置0,遍歷完畢,進行步驟(6);
[0077] (6)標記已經建立檢查點,恢復系統運行,轉步驟(2)。
[0078] 本發明借助于DRAM作為NVM緩存的層次型異構內存系統。異構內存管理模塊將所 有命中DRAM緩存的數據轉發到DRAM進行處理,這部分請求沒有額外開銷,DRAM缺失的數據 則執行緩存替換過程,替換過程中執行NVM地址映射,涉及到對NVM進行讀寫的部分都首先 將物理地址發送給地址映射模塊,獲取NVM地址后再對NVM進行訪問。
[0079] 地址映射模塊提供一種用戶維護檢查點一致性的細粒度、低開銷的地址映射策 略,其將一頁物理頁映射到兩頁NVM硬件頁(稱為基礎頁和派生頁),限定物理頁的第N個緩 存塊只能映射到這兩頁NVM硬件頁的第N個緩存塊中,這兩頁NVM硬件頁的第N個緩存塊分別 存儲物理頁第N個緩存塊的工作數據和最新的檢查點,這種限制使得物理頁每個緩存塊只 需要檢查點位置標記的一比特元數據來標記檢查點數據存儲于基礎頁還是派生頁,因此減 少了地址映射模塊需要的元數據數量,提高了可行性。
[0080] 派生頁管理模塊用于對派生頁的管理,向外部暴露派生頁申請接口;
[0081 ]檢查點調度模塊控制何時觸發檢查點,建立檢查點時,將所有具有工作數據角色 的緩存塊標記為檢查點,其它緩存塊標記位未使用,這個過程不需要講工作數據復制為檢 查點,因此具有很好的性能。
[0082]本發明不需要上層應用的改動,因此對上層應用透明;與現有的面向異構內存的 基于存儲的檢查點技術相比較,本發明有效減少了內存占用和冗余寫;在維護檢查點一致 性時減少了無用寫,進一步降低了系統運行時間。
【附圖說明】
[0083]圖1為本發明的模塊結構框圖;
[0084]圖2為異構內存管理模塊工作流程框圖;
[0085]圖3為地址映射模塊工作流程框圖;
[0086]圖4為派生頁管理模塊工作流程框圖;
[0087] 圖5為檢查點調用模塊工作流程框圖。
【具體實施方式】
[0088] 以下結合附圖及實施例,對本發明進一步詳細說明。
[0089]如圖1所示,本發明包括異構內存管理模塊、地址映射模塊、派生頁管理模塊、檢查 點調度模塊。
[0090] 如圖2所示,所述異構內存管理模塊執行下述操作:
[0091] (1)等待用戶的內存訪問請求,收到內存訪問請求后進行步驟(2);
[0092] (2)檢測在DRAM中是否緩存有內存訪問請求中的物理地址Ar要訪問的頁,是則將 DRAM中相應頁地址賦予DRAM地址Ad,進行步驟(3),否則轉步驟(4);
[0093] (3)向DRAM轉發內存訪問請求:將Ad+Ar mod Sp的值賦予Ad,然后,將內存訪問請 求中的物理地址Ar改為Ad,向DRAM發出該內存訪問請求,轉步驟(1);
[0094] (4)選擇淘汰頁:搜索DRAM中上一次訪問時間距當前時間最久的DRAM頁,將其DRAM 頁地址賦予DRAM地址Ad;
[0095] (5)把淘汰頁寫回NVM:遍歷DRAM地址Ad所對應的DRAM頁中每個緩存塊,判斷該緩 存塊自從該DRAM頁緩存到DRAM中以來,到當前時間為止,是否未被修改過,是則繼續掃描下 一緩存塊,直至掃描完畢;進行步驟(6);否則向地址映射模塊發送地址映射請求,該地址映 射請求為寫請求,包括各緩存塊所對應的物理地址A;等待地址映射模塊返回NVM地址A ',將 各DRAM緩存塊復制到NVM地址A '所指向的NVM緩存塊,繼續掃描下一緩存塊,直至掃描完畢, 進行步驟(6);
[0096] (6)把要訪問的頁讀入DRAM:遍歷內存訪問請求中的物理地址Ar所對應的物理頁 中的每個緩存塊,向地址映射模塊發送地址映射請求,該地址映射請求為讀請求,包括各緩 存塊所對應的物理地址A;等待地址映射模塊返回NVM地址A',將A '所指向的各NVM緩存塊復 制到DRAM頁的對應DRAM緩存塊中,轉步驟(3);所述對應DRAM緩存塊指在DRAM頁中和NVM緩 存塊具有相同頁內偏移地址的緩存塊。
[0097]如圖3所示,所述地址映射模塊執行下述操作:
[0098] (1)等待異構內存管理模塊發來地址映射請求,收到地址映射請求后進行步驟 (2);
[0099] ⑵根據池址映射請求中的物理地址A,計算其對應的物理頁地址Ap:Ap = [A / SpJ X Sp, 式中,Sp為頁大小,單位為字節;
[0100] (3)檢測Ap所對應的物理頁是否存在物理頁臟標記和檢查點位置標記,是進行步 驟(4),否則轉步驟(8);
[0101] (4)對Ap所對應的物理頁的物理頁臟標記和檢查點位置標記按位進行異或運算, 得到異或運算結果P;
[0102] (5)計算緩存塊在頁內的編號N:N = [A mod Sp / Srj;式中,Sc為緩存塊大小, 單位為字節;
[0103] (6)判斷P的第N位是否為0,是則進行步驟(7),否則轉步驟(10);
[0104] (7)將A的值賦予NVM地址A',向異構內存管理模塊返回A',轉步驟(11);
[0105] (8)判斷當前地址映射請求是否為寫請求,是則轉步驟(9),否則進行步驟(7);
[0106] (9)向派生頁管理模塊發出派生頁分配請求,等待派生頁管理模塊返回頁地址A1, 構造Ap所對應的物理頁和兩頁NVM頁間的映射關系:將Ap賦予基礎頁地址Ab,將A1賦予派生 頁地址As;
[0107]然后為Ap所對應的物理頁建立物理頁臟標記和檢查點位置標記兩組標記,將兩組 標記中的各位全部置0,轉步驟(4);
[0108] (10)返回派生頁第N個緩存塊的NVM地址A ' : A ' = As+N X Sc,向異構內存管理模塊 返回A',進行步驟(11);
[0109] (11)判斷當前地址映射請求是否為寫請求,是則置物理頁臟標記第N位為1,轉步 驟(1);否則轉步驟(1)。
[0110] 如圖4所示,所述派生頁管理模塊執行下述操作:
[0111] (1)在NVM存儲空間中建立派生頁存儲區,將指針L指向派生頁存儲區的第一頁;
[0112] (2)等待地址映射模塊的派生頁分配請求,收到派生頁分配請求后進行步驟(3);
[0113] (3)判斷指針L的指向是否在派生頁存儲區邊界內,是則進行步驟(4),否則轉步驟 (5);
[0114] (4)向地址映射模塊返回指針L指向的派生頁所對應的頁地址,再將指針L后移,指 向下一頁,轉步驟(2);
[0115] (5)建立物理頁集合S,掃描派生頁存儲區,判斷自建立檢查點時間T至當前時間 內,各派生頁對應的物理頁是否未發生過寫入,是則將該物理頁加入物理頁集合S,繼續掃 描下一派生頁,直至掃描完畢,進行步驟(6);否則繼續掃描下一派生頁,直至掃描完畢,進 行步驟(6);
[0116] (6)判斷物理頁集合S是否為空,是則轉步驟(13),否則進行步驟(7);
[0117] (7)建立DRAM頁集合Sd,掃描物理頁集合S,判斷各物理頁是否緩存到DRAM中,是則 將該物理頁對應的DRAM頁加入到Sd中,繼續掃描下一物理頁,直至掃描完畢,進行步驟(8); 否則繼續掃描下一物理頁,直至掃描完畢,進行步驟(8);
[0118] (8)判斷DRAM頁集合Sd是否為空,是則將物理頁集合S中的第一個物理頁所對應的 派生頁地址賦予待釋放派生頁地址A1,轉步驟(10),否則進行步驟(9);
[0119] (9)掃描DRAM頁集合Sd,判斷自建立檢查點時間T和該頁緩存至IjDRAM中時間這兩者 中較晚時間以來,到當前時間為止,是否存在某DRAM頁沒有發生過寫入,是則停止掃描,并 將該DRAM頁對應物理頁所屬派生頁地址賦予待釋放派生頁地址A1,轉步驟(10),否則轉步 驟(13);
[0120] (10)對A1通過映射關系對應的物理頁地址Ap的物理頁臟標記和檢查點位置標記 進行異或運算,得到異或運算結果p;
[0121] (11)根據P將待釋放派生頁中的有效數據寫回基礎頁:順序遍歷P的每一位,判斷 該位是否為1,是則將派生頁中該位序號的緩存塊復制到基礎頁中相應序號的緩存塊,進行 步驟(12);否則不進行處理,進行步驟(12);
[0122] (12)向地址映射模塊返回A1,轉步驟(2);
[0123] (13)向檢查點調度模塊發出建立檢查點請求,進行步驟(14);
[0124] (14)向檢查點調度模塊查詢是否已經建立檢查點,是則轉步驟(5),否則繼續步驟 (14) 〇
[0125] 如圖5所示,所述檢查點調度模塊執行下述操作:
[0126] (1)系統啟動時,將啟動時間賦予建立檢查點時間T,并根據用戶指令確定建立檢 查點間隔時間I;
[0127] (2)判斷是否滿足條件(2.1)或者(2.2),是則進行步驟(3),否則繼續步驟(2);
[0128] ^??當前時間一了彡工;
[0129] (2.2)收到派生頁管理模塊的建立檢查點請求;
[0130] (3)中斷系統運行,將當前時間值賦予T,進行步驟(4);
[0131] (4)將DRAM所有頁寫回NVM;將CPU上下文信息、訪存隊列、元數據均寫入NVM,進行 步驟(5);
[0132] (5)遍歷所有具有物理頁臟標記和檢查點位置標記的物理頁,分別對各物理頁的 物理頁臟標記和檢查點位置標記按位進行異或運算,將異或運算結果P按位賦予其檢查點 位置標記,將物理頁臟標記各位置0,遍歷完畢,進行步驟(6);
[0133] (6)標記已經建立檢查點,恢復系統運行,轉步驟(2)。
【主權項】
1. 一種面向異構內存系統建立檢查點的裝置,包括異構內存管理模塊、地址映射模塊、 派生頁管理模塊、檢查點調度模塊,其特征在于: (1) 所述異構內存管理模塊接受用戶的內存訪問請求,判斷內存訪問請求是否命中 DRAM緩存,是則將內存訪問請求轉發給DRAM,否則進行緩存替換,向地址映射模塊發出地址 映射請求,根據地址映射模塊返回的NVM地址訪問NVM,將DRAM中淘汰頁寫回NVM,要訪問的 頁讀入DRAM; (2) 所述地址映射模塊接受異構內存管理模塊發出的地址映射請求,根據物理頁上是 否存在物理頁臟標記和檢查點位置標記,判斷相關物理頁是否與基礎頁、派生頁建立映射 關系,是則將一頁物理頁地址映射為基礎頁和派生頁兩頁NVM頁地址,限定物理頁的第N個 緩存塊地址只能映射為這兩頁NVM頁的第N個緩存塊地址,分別用于存儲物理頁第N個緩存 塊的工作數據和最新的檢查點;并向異構內存模塊返回映射得到的NVM緩存塊地址,根據情 況更新物理頁臟標記; 否則向派生頁管理模塊發出派生頁分配請求,根據派生頁管理模塊返回的頁地址構造 一頁物理頁映射到兩頁NVM頁的映射關系,并為該物理頁增加物理頁臟標記和檢查點位置 標記; (3) 所述派生頁管理模塊接受地址映射模塊發出的派生頁分配請求,判斷派生頁存儲 區中是否存在未被分配的派生頁,是則向地址映射模塊返回該未被分配的派生頁,否則繼 續判斷是否存在可被釋放的派生頁,是則釋放該派生頁,并將該頁返回給地址映射模塊,否 則向檢查點調度模塊發出建立檢查點的請求,并不斷查詢是否已經建立檢查點,是則重新 尋找可釋放的派生頁,并將釋放的派生頁返回給地址映射模塊; (4) 檢查點調度模塊自身定時啟動建立檢查點或者從派生頁管理模塊收到建立檢查點 請求啟動建立檢查點,建立檢查點時,將檢查點所包含的數據寫入NVM,對相關物理頁的檢 查點位置標記和物理頁臟標記進行更新。2. 如權利要求1所述的面向異構內存系統建立檢查點的裝置,其特征在于: 所述異構內存管理模塊執行下述操作: (1) 等待用戶的內存訪問請求,收到內存訪問請求后進行步驟(2); (2) 檢測在DRAM中是否緩存有內存訪問請求中的物理地址Ar要訪問的頁,是則將DRAM 中相應頁地址賦予DRAM地址Ad,進行步驟(3),否則轉步驟(4); (3) 向DRAM轉發內存訪問請求:將Ad+Ar mod Sp的值賦予Ad,然后,將內存訪問請求中 的物理地址Ar改為Ad,向DRAM發出該內存訪問請求,轉步驟(1); (4) 選擇淘汰頁:搜索DRAM中上一次訪問時間距當前時間最久的DRAM頁,將其DRAM頁地 址賦予DRAM地址Ad; (5) 把淘汰頁寫回NVM:遍歷DRAM地址Ad所對應的DRAM頁中每個緩存塊,判斷該緩存塊 自從該DRAM頁緩存到DRAM中以來,到當前時間為止,是否未被修改過,是則繼續掃描下一緩 存塊,直至掃描完畢;進行步驟(6);否則向地址映射模塊發送地址映射請求,該地址映射請 求為寫請求,包括各緩存塊所對應的物理地址A;等待地址映射模塊返回NVM地址A',將各 DRAM緩存塊復制到NVM地址A '所指向的NVM緩存塊,繼續掃描下一緩存塊,直至掃描完畢,進 行步驟(6); (6) 把要訪問的頁讀入DRAM:遍歷內存訪問請求中的物理地址Ar所對應的物理頁中的 每個緩存塊,向地址映射模塊發送地址映射請求,該地址映射請求為讀請求,包括各緩存塊 所對應的物理地址A;等待地址映射模塊返回NVM地址A',將A'所指向的各NVM緩存塊復制到 DRAM頁的對應DRAM緩存塊中,轉步驟(3);所述對應DRAM緩存塊指在DRAM頁中和NVM緩存塊 具有相同頁內偏移地址的緩存塊。3. 如權利要求1所述的面向異構內存系統建立檢查點的裝置,其特征在于: 所述地址映射模塊執行下述操作: (I) 等待異構內存管理模塊發來地址映射請求,收到地址映射請求后進行步驟(2); ⑵根據地址映射請求中的物理地址A,計算其對應的物理頁地址Ap: Ap =〖A / Sp j X Sp, 式中,Sp為頁大小,單位為字節; (3) 檢測Ap所對應的物理頁是否存在物理頁臟標記和檢查點位置標記,是進行步驟 (4),否則轉步驟(8); (4) 對Ap所對應的物理頁的物理頁臟標記和檢查點位置標記按位進行異或運算,得到 異或運算結果P; (5) 計算緩存塊在頁內的編號N: N = [A mod Sp / Sc|;式中,Sc為緩存塊大小,單位 為字節; (6) 判斷P的第N位是否為0,是則進行步驟(7),否則轉步驟(10); (7) 將A的值賦予NVM地址A',向異構內存管理模塊返回A',轉步驟(11); (8) 判斷當前地址映射請求是否為寫請求,是則轉步驟(9),否則進行步驟(7); (9) 向派生頁管理模塊發出派生頁分配請求,等待派生頁管理模塊返回頁地址Al,構造 Ap所對應的物理頁和兩頁NVM頁間的映射關系:將Ap賦予基礎頁地址Ab,將Al賦予派生頁地 址As; 然后為Ap所對應的物理頁建立物理頁臟標記和檢查點位置標記兩組標記,將兩組標記 中的各位全部置0,轉步驟(4); (10) 返回派生頁第N個緩存塊的NVM地址A' : A' =As+N X Sc,向異構內存管理模塊返回 A',進行步驟(11); (II) 判斷當前地址映射請求是否為寫請求,是則置物理頁臟標記第N位為1,轉步驟 (1);否則轉步驟(1)。4. 如權利要求1所述的面向異構內存系統建立檢查點的裝置,其特征在于: 所述派生頁管理模塊執行下述操作: (1) 在NVM存儲空間中建立派生頁存儲區,將指針L指向派生頁存儲區的第一頁; (2) 等待地址映射模塊的派生頁分配請求,收到派生頁分配請求后進行步驟(3); (3) 判斷指針L的指向是否在派生頁存儲區邊界內,是則進行步驟(4),否則轉步驟(5); (4) 向地址映射模塊返回指針L指向的派生頁所對應的頁地址,再將指針L后移,指向下 一頁,轉步驟(2); (5) 建立物理頁集合S,掃描派生頁存儲區,判斷自建立檢查點時間T至當前時間內,各 派生頁對應的物理頁是否未發生過寫入,是則將該物理頁加入物理頁集合S,繼續掃描下一 派生頁,直至掃描完畢,進行步驟(6);否則繼續掃描下一派生頁,直至掃描完畢,進行步驟 (6); (6) 判斷物理頁集合S是否為空,是則轉步驟(13),否則進行步驟(7); (7) 建立DRAM頁集合ScU掃描物理頁集合S,判斷各物理頁是否緩存至IjDRAM中,是則將該 物理頁對應的DRAM頁加入到Sd中,繼續掃描下一物理頁,直至掃描完畢,進行步驟(8);否則 繼續掃描下一物理頁,直至掃描完畢,進行步驟(8); (8) 判斷DRAM頁集合Sd是否為空,是則將物理頁集合S中的第一個物理頁所對應的派生 頁地址賦予待釋放派生頁地址Al,轉步驟(10),否則進行步驟(9); (9) 掃描DRAM頁集合Sd,判斷自建立檢查點時間T和該頁緩存到DRAM中時間這兩者中較 晚時間以來,到當前時間為止,是否存在某DRAM頁沒有發生過寫入,是則停止掃描,并將該 DRAM頁對應物理頁所屬派生頁地址賦予待釋放派生頁地址Al,轉步驟(10),否則轉步驟 (13) ; (10) 對Al通過映射關系對應的物理頁地址Ap的物理頁臟標記和檢查點位置標記進行 異或運算,得到異或運算結果P; (11) 根據P將待釋放派生頁中的有效數據寫回基礎頁:順序遍歷P的每一位,判斷該位 是否為1,是則將派生頁中該位序號的緩存塊復制到基礎頁中相應序號的緩存塊,進行步驟 (12);否則不進行處理,進行步驟(12); (12) 向地址映射模塊返回Al,轉步驟(2); (13) 向檢查點調度模塊發出建立檢查點請求,進行步驟(14); (14) 向檢查點調度模塊查詢是否已經建立檢查點,是則轉步驟(5),否則繼續步驟 (14) 〇5.如權利要求1所述的面向異構內存系統建立檢查點的裝置,其特征在于: 所述檢查點調度模塊執行下述操作: (1) 系統啟動時,將啟動時間賦予建立檢查點時間T,并根據用戶指令確定建立檢查點 間隔時間I; (2) 判斷是否滿足條件(2.1)或者(2.2),是則進行步驟(3),否則繼續步驟(2); (2.1) 當前時間一 T5I; (2.2) 收到派生頁管理模塊的建立檢查點請求; (3) 中斷系統運行,將當前時間值賦予T,進行步驟(4); (4) 將DRAM所有頁寫回NVM;將CPU上下文信息、訪存隊列、元數據均寫入NVM,進行步驟 (5); (5) 遍歷所有具有物理頁臟標記和檢查點位置標記的物理頁,分別對各物理頁的物理 頁臟標記和檢查點位置標記按位進行異或運算,將異或運算結果P按位賦予其檢查點位置 標記,將物理頁臟標記各位置0,遍歷完畢,進行步驟(6); (6) 標記已經建立檢查點,恢復系統運行,轉步驟(2)。
【文檔編號】G06F12/06GK105893274SQ201610307028
【公開日】2016年8月24日
【申請日】2016年5月11日
【發明人】吳松, 高翔, 金海
【申請人】華中科技大學