一種混合存儲系統的制作方法
【專利摘要】一種混合存儲系統,屬于計算機存儲領域,解決現有混合存儲系統需要多個控制器且各控制器所控制的存儲介質單一導致的系統復雜和成本高的問題。本發明由N個存儲器和一個控制器構成,每個存儲器包括控制器通信模塊、存儲介質和存儲器信息模塊;控制器包括主機通信模塊、負載控制模塊、陣列控制模塊、地址映射模塊、存儲器控制模塊和緩存。控制器能夠識別主機到達的讀寫請求并判斷寫請求的冷熱程度與大小,進行負載控制,實現多種存儲器的混合存儲,由于存儲器為存儲介質芯片和簡單的信息存儲芯片,降低混合存儲系統替換成本;利用控制器中的陣列控制模塊進行數據恢復,提高混合存儲系統性能和壽命,降低混合存儲系統組建以及使用的成本。
【專利說明】ー種混合存儲系統
【技術領域】
[0001]本發明屬于計算機存儲領域,具體涉及ー種混合存儲系統。
【背景技術】
[0002]存儲系統是計算機系統的ー個重要組成部分。近幾十年,計算機硬件技術的各個領域都在高速發展,處理器性能和內存容量都提升了近千倍,而存儲器也不斷地提高速度和容量,但是由于傳統機械硬盤的自身局限性,使得硬盤的讀寫速度提升難度越來越大,存儲系統的瓶頸愈顯突出。
[0003]閃存(FLASH Memory)是ー種電可擦除的非易失性半導體存儲器,尤其與非型閃存(NAND FLASH)具有存儲密度大、功耗低以及抗震性能好等優點,所以基于閃存的固態存儲器(Solid State Drive, SSD)應運而生,SSD恰好彌補了機械硬盤的諸多不足,能夠提供高速度、低功耗以及抗震耐摔等優良特性,是解決目前存儲領域發展難題的方案之一。
[0004]然而,目前SSD有三大制約因素:(1)由于閃存介質是通過對浮柵中注入或擦除電荷來存儲信息,這種反復的注入和擦除電荷的操作會使其工作變得不穩定,
[0005]從而使得擦除一定次數后無法繼續用來存儲數據。隨著多層存儲単元(Mult1-Level Cell, MLC)的應用以及制程的降低,雖然閃存成本逐漸下降,但閃存存儲單元容許的擦除次數不斷降低,目前25nmエ藝的MLC閃存的擦除次數只有3000次,這意味著閃存的使用壽命十分有限。(2)由于閃存具有頁讀寫、塊擦除,先擦除后寫的特性,所以閃存的讀寫速度并不一致,讓基于閃存的固態存儲器在一些應用中性能并不理想。(3)目前閃存芯片比機械硬盤的存儲單位價格要高出約ー個數量級,由于閃存的特性,為了在其成本與可靠性上進行平衡并以不損失速度為代價,SSD需要更完善的控制器。控制器成本已經占SSD成本的30%以上。
[0006]隨著時間推移,固態存儲系統并不局限于閃存作為存儲介質,也可采用相變隨機存儲器(PCM)等其他非易失性存儲介質。PCM利用硫族化合物在不同相態下電阻率不同來存儲數據,能夠按位尋址,讀寫速率比閃存快兩個數量級。這類半導體存儲器沒有NANDFLASH的不足,并且讀寫速率更高,然而由于目前エ藝問題,PCM的位存儲成本比閃存更高。
[0007]現場可編程門陣列(FPGA)作為ー種專用集成電路(ASIC)領域的ー種半定制電路,具有設計周期短、開發費用低、風險小等優勢,并且內部有豐富的邏輯資源,可以通過編寫硬件描述語言綜合各種硬件功能器件。特別是基于靜態隨機存儲器(SRAM)編程技術的FPGA,其內部全部或部分邏輯資源可以實現動態的功能變換,所謂可重構技術,能夠很好的節省FPGA內部邏輯資源空間,減少能耗,同時降低產品成本。
[0008]隨著各類半導體存儲器件的發展,存儲架構將會發展為采用各類半導體存儲器構成的固態存儲系統與傳統硬盤混合使用的混合存儲系統。現有混合存儲系統采用SSD與磁盤混合使用,SSD用于作為磁盤的緩存,見“混合存儲系統將推動固態硬盤應用”,《電腦迷》,2010.11 ;惠普公司將全閃存陣列服務器與SAS硬盤服務器在軟件層進行融合,達到高性能、高容量的分層存儲,見《中國金融電腦》,2012.5。它們均需要多個控制器進行處理,且控制器對于寫入數據控制不合理,不能發揮SSD的優勢,在磁盤或者SSD失效時,替換成本高,存儲系統的升級和功耗成本會非常不理想。PCM加入存儲系統以后,異構存儲介質的控制變得非常復雜,而混合存儲系統失效后的替換成本居高不下,因此,市場未沒有出現使用PCM等新型存儲介質的混合存儲產品。市場急需ー種高性能、低成本的混合存儲系統。
[0009]為便于理解本發明,以下對有關概念進行解釋:
[0010]閃存的層次:閃存由六個層次組成:通道(Channel)、閃存芯片(chip)、晶圓(die)、分組(plane)、塊(block)、頁(page);為了提升閃存的速度與容量,通常將多個閃存芯片構成一個通道(Channel),ー個或多個通道構成閃存。
[0011]閃存芯片結構如圖7所不,甸個閃存芯片內部有多個晶圓,甸個晶圓內部有多個分組,每個分組內部有多個塊,每個塊內部有多個頁。
[0012]RAIDO:RAID0又稱為Stripe或Striping,它代表了所有RAID級別中最高的存儲性能。RAID0提高存儲性能的原理是把連續的數據分散到多個磁盤上存取,這樣,系統有數據請求就可以被多個磁盤并行的執行,每個磁盤執行屬于它自己的那部分數據請求。RAID0沒有冗余或錯誤修復能力,成本低,要求至少兩個磁盤,一般只是在那些對數據安全性要求不高的情況下才被使用。
[0013]RAID1:RAID1又稱為鏡像(Mirror或Mirroring),它的宗旨是最大限度的保證用戶數據的可用性和可修復性。RAID1的操作方式是把用戶寫入硬盤的數據百分之百地自動復制到另外ー個硬盤上,成為鏡像數據。由于對存儲的數據進行百分之百的備份,在所有RAID級別中,RAID1提供最高的數據安全保障,但磁盤利用率為50%,故成本最高。Miiror雖不能提高存儲性能,但由于其具有的高數據安全性,使其尤其適用于存放重要數據,如月艮務器和數據庫存儲等領域。
[0014]RAID5:RAID5是ー種存儲性能、數據安全和存儲成本兼顧的存儲解決方案。RAID5至少需要使用3塊硬盤組建,當有數據寫入吋,將數據分成兩個部分,同時將兩部分數據進行異或運算,形成冗余數據作為校驗值,兩份數據和ー份校驗值交錯存放在多塊磁盤中,當其中1塊硬盤出現損壞的時候,從另外2塊硬盤上存儲的數據可以計算出第3塊硬盤的數據內容。
[0015]RAID5可以為系統提供數據安全保障,但保障程度要比RAID1低而磁盤空間利用率要比RAID1高。RAID5具有和RAID0相近似的數據讀取速度,只是多了ー個奇偶校驗信息,寫入數據的速度比對單個磁盤進行寫入操作稍慢。同時由于多個數據對應ー個奇偶校驗信息,RAID5的磁盤空間利用率要比RAID1高,存儲成本相對較低。
【發明內容】
[0016]本發明提供ー種混合存儲系統,其包括多種存儲器和單獨控制器,解決現有混合存儲系統需要多個控制器且各控制器所控制的存儲介質單ー導致的系統復雜和成本高的間題。
[0017]本發明所提供的ー種混合存儲系統,由N個存儲器和ー個控制器構成,N = 1?128,其特征在于:
[0018]A.所述每個存儲器包括控制器通信模塊、存儲介質和存儲器信息模塊,控制器通信模塊分別與存儲介質、存儲器信息模塊電信號連接;[0019]A1.所述控制器通信模塊由高速串行總線和低速串行總線構成;
[0020]高速串行總線將存儲器控制模塊的存儲器通信子模塊發送的數據包解析為控制信號,發送給存儲介質;將存儲介質讀出的數據封裝為數據包,發送至存儲器控制模塊;
[0021]低速串行總線接收存儲器通信子模塊發送的讀信號,從存儲器信息模塊讀出存儲器的基本信息發送至存儲器通信子模塊;接收存儲器通信子模塊發送的寫信號和數據,將數據寫入存儲器通信子模塊;
[0022]A2.所述存儲介質用于存放數據,為閃存、PCM和磁盤中的ー種或多種;
[0023]A3.所述存儲器信息模塊存放存儲器的基本信息,包括存儲器容量、存儲介質類型和存儲器狀態;存儲器容量表示存儲器內存儲介質總容量大小,存儲介質類型表示存儲器內存儲介質類型為閃存、PCM或磁盤,存儲器狀態分為正常或失效,表示存儲器的存儲介質正常或失效;
[0024]B.所述控制器包括主機通信模塊、負載控制模塊、陣列控制模塊、地址映射模塊、存儲器控制模塊和緩存;存儲器控制模塊包含通過內部總線一一對應連接的N個可編程子模塊和N個存儲器通信子模塊,并具有一個存儲器參數表,各存儲器通信子模塊由高速串行總線和低速串行總線構成;
[0025]主機通信模塊、負載控制模塊、陣列控制模塊和地址映射模塊依次兩兩之間通過內部總線連接,地址映射模塊與存儲器控制模塊的N個可編程子模塊通過內部總線連接,所述緩存分別與主機通信模塊、負載控制模塊、陣列控制模塊、地址映射模塊通過內部總線連接;
[0026]每個存儲器通信子模塊的高速串行總線和低速串行總線分別對應連接存儲器的控制器通信模塊的高速串行總線和低速串行總線,每個存儲器通信子模塊的高速串行總線將可編程子模塊的控制信號封裝成數據包,發送給存儲器的控制器通信模塊;將來自控制器通信模塊的數據包按照Aurora通信協議解析成數據,發送至可編程子模塊;
[0027]每個存儲器通信子模塊的低速串行總線為IIC總線,將存儲器控制模塊發送的寫信號和數據發送至存儲器的控制器通信模塊;將存儲器控制模塊發送的讀信號發送至存儲器通信模塊;
[0028]當存儲器的存儲介質類型分別為閃存、PCM和磁盤時,存儲器控制模塊中對應的可編程子模塊分別配置為閃存控制單元、PCM控制單元或磁盤控制単元;
[0029]所述存儲器參數表為NX4的數組,其中N為存儲器的序號,每個存儲器對應4個表項:存儲器通信子模塊狀態、存儲器容量、存儲介質類型和存儲器狀態,存儲器通信子模塊狀態分為連接和未連接,表示存儲器通信子模塊是否與存儲器的控制器通信模塊連接,存儲器容量表示存儲器的存儲介質總容量大小,存儲介質類型表示存儲器的存儲介質類型為PCM、閃存或磁盤,存儲器狀態分為正常或失效,表示存儲器的存儲介質正常或失效;
[0030]所述緩存為SDRAM構成的存儲空間,為待寫入數據、讀取數據的緩沖區;
[0031]B1.所述主機通信模塊執行如下操作:
[0032]B1-1.按照主機通信協議標準,對主機發送的請求數據包解析為寫請求或讀請求;所述請求數據包包括請求地址、請求長度、讀寫標志、內存地址;讀寫標志為0,執行B1-2 ;讀寫標志為1,執行B1-3 ;
[0033]B1-2.將內存地址中請求長度的數據存放在緩存中,作為待寫入數據,然后將請求數據包解析為寫請求,分別將請求數據包中請求地址、請求長度、內存地址作為寫請求的寫數據地址、寫數據長度、內存地址,將數據存放在緩存中的地址作為寫請求的緩存地址,再將寫請求發送至負載控制模塊;
[0034]B1-3.將請求數據包解析為讀請求,分別將請求數據包中請求地址、請求長度、內存地址作為讀請求的讀數據地址、讀數據長度、內存地址;再將讀請求發送至地址映射模塊,等待地址映射模塊發送來的讀請求完成包,將其封裝成請求完成數據包發送給主機;
[0035]B2.所述負載控制模塊執行如下操作:
[0036]B2-1.定義長度為m個單元的數組M,各單元內容初始化為0,m≥1024;
[0037]B2-2.當收到寫請求時,其中的寫數據地址,通過哈希函數集合Η中的k個獨立哈希函數得到k個哈希值,姆個哈希值對應數組Μ的ー個單元地址;將k個哈希值所對應數組Μ的k個單元內容加1,然后判斷所述k個單元內容是否都大于閾值T,是則該寫請求對應的寫入數據為熱數據,否則該寫請求對應的寫入數據為冷數據,T≥IO;
[0038]所述哈希函數集合H = {hi, h2,..., hk}, k < m,哈希值的值域為[0-m-l];
[0039]B2-3.判斷對所述寫請求中寫數據長度是否大于W,是則該寫請求對應的寫入數據為大塊數據,否則該寫請求對應的寫入數據為小塊數據,W = 256KB-4MB ;
[0040]B2-4.經過上述操作,將寫請求對應的寫入數據分為大塊熱數據、小塊熱數據、大塊冷數據或小塊冷數據,并針對不同類型的寫入數據,將對應的寫請求中寫數據地址轉換為存儲器地址,加入到寫請求中,同時寫請求中其它項不變,形成第二層寫請求,再將第二層寫請求發送到陣列控制模塊;
[0041]B3.所述陣列控制模塊執行如下操作:
[0042]B3-1.根據用戶設置的RAIDO、RAID1或RAID5陣列類型,從存儲器控制模塊讀取存儲器參數表,對不同存儲介質的存儲器,將負載控制模塊送來的第二層寫請求中的存儲器地址重映射為寫數據邏輯地址,將寫數據邏輯地址加入第二層寫請求中,形成第三層寫請求,再將第三層寫請求送到地址映射模塊;組建RAIDO、RAID1或RAID5的PCM陣列,組建RAID0、RAID1或RAID5的閃存陣列,組建RAIDO、RAID1或RAID5的磁盤陣列;
[0043]B3-2.某存儲器失效時,待用戶以新的存儲器替換該失效存儲器后,根據存儲器控制模塊發送的數據恢復指令,按照陣列類型,陣列控制模塊對新的存儲器進行有選擇的數據恢復:對于RAID0陣列,數據無法恢復,陣列控制模塊運行結束;對于RAID1陣列,陣列控制模塊將鏡像數據拷貝到新的存儲器中;對于RAID5陣列,陣列控制模塊通過冗余存儲器的數據以及校驗值,進行異或操作,得到恢復數據,存放入新的存儲器中;
[0044]B4.所述地址映射模塊執行如下操作:
[0045]地址映射模塊維護ー個地址映射表,地址映射表包含一一對應的數據邏輯地址和數據物理地址;
[0046]B4-1.收到第三層寫請求時,判斷寫數據邏輯地址是否在閃存的地址空間,是則執行B4-la,否則執行B4-lb ;
[0047]B4-la.將第三層寫請求中的寫數據邏輯地址按照地址映射算法轉換為存儲介質物理地址,然后在地址映射表的表項數據邏輯地址中檢測是否存在第三層寫請求中的寫數據地址,是則將與所述寫數據地址相同的數據邏輯地址對應的數據物理地址更新為所述存儲介質數據物理地址,并將原數據物理地址標記為失效;否則在地址映射表的表項數據邏輯地址和數據物理地址中分別加入所述寫數據地址及其對應的存儲介質物理地址;將所述存儲介質物理地址發送至存儲器控制模塊,執行B4-lc ;
[0048]B4-lb.在地址映射表的表項數據邏輯地址中檢測是否存在第三層寫請求中的寫數據地址,是則將與寫數據地址相同的數據邏輯地址對應的數據物理地址更新為第三層寫請求中的寫數據邏輯地址;否則在地址映射表的表項數據邏輯地址和數據物理地址中分別加入所述寫數據地址及其對應的寫數據邏輯地址;將所述寫數據邏輯地址發送至存儲器控制模塊,執行B4_lc ;
[0049]B4-lc.根據第三層寫請求中的緩存地址,對緩存中的待寫入數據通過校驗算法生成校驗值,將待寫入數據加入校驗值后發送至存儲器控制模塊;
[0050]最后向存儲器控制模塊發送寫數據指令;
[0051]B4-2.收到主機通信模塊發來的讀請求時,在地址映射表的表項數據邏輯地址中檢測是否存在讀請求中的讀數據地址,是則執行B4_2a,否則向主機通信模塊發送讀請求完成包,表明讀請求錯誤;
[0052]B4-2a.將與讀數據地址相同的數據邏輯地址對應的數據物理地址發送至存儲器控制模塊,然后向存儲器控制模塊發送讀數據指令;
[0053]B4-2b.待收到存儲器控制模塊讀出數據后,對讀取數據通過校驗算法生成新校驗值,檢驗新校驗值是否與所述校驗值相同,是則將讀取數據存入緩存中,向主機通信模塊發送讀請求完成包,表明讀請求成功;否則進行B4-2c ;
[0054]B4-2c.根據新校驗值和所述校驗值,判斷讀取數據是否能糾錯,是則進行糾錯,將糾錯后的讀取數據存入緩存中,向主機通信模塊發送讀請求完成包,表明讀請求成功;否則向主機通信模塊發送讀請求完成包,表明讀請求失敗;
[0055]所述讀請求完成包包括讀數據地址、讀數據長度、內存地址、緩存地址和讀取狀態標志,讀數據地址、讀數據長度和內存地址分別為讀請求的讀數據地址、讀數據長度、內存地址,緩存地址為讀取數據存放在緩存的地址,讀取狀態標志分為成功、失敗和錯誤三種,分別表示當前數據校驗成功、當前數據校驗失敗以及讀數據地址錯誤;當前數據校驗失敗定義為存放該待讀取數據的存儲器失效,提示用戶更換存儲器;
[0056]B5.所述存儲器控制模塊執行如下操作:
[0057]B5-1.當混合存儲系統上電時,根據存儲器的存儲介質類型,將存儲器控制模塊中對應的可編程子模塊分別配置為閃存控制單元、PCM控制單元或磁盤控制単元;
[0058]B5-2.判斷來自地址映射模塊的存儲介質物理地址、寫數據邏輯地址或數據物理地址是否存在于閃存的物理地址空間,是則執行B5-2a,否則判斷所述地址是否存在于PCM的物理地址空間,是則執行B5-2b,否則執行B5-2c ;
[0059]B5-2a.對所述存儲介質物理地址、寫數據邏輯地址或數據物理地址進行取模運算,得到閃存控制單元號,然后將所述存儲介質物理地址、寫數據邏輯地址或數據物理地址存放于閃存控制單元號對應的閃存控制単元內的地址寄存器中;收到待寫入數據后,將待寫入數據存放于相應閃存控制単元內的數據寄存器中,執行B5-3 ;
[0060]B5-2b.對所述存儲介質物理地址、寫數據邏輯地址或數據物理地址進行取模運算,得到PCM控制單元號,然后將所述存儲介質物理地址、寫數據邏輯地址或數據物理地址存放于PCM控制單元號對應的PCM控制單元內的地址寄存器中;收到待寫入數據后,將待寫入數據存放于相應PCM控制單元內的數據寄存器中,執行B5-3 ;
[0061]B5-2c.對所述存儲介質物理地址、寫數據邏輯地址或數據物理地址進行取模運算,得到磁盤控制單元號,然后將所述存儲介質物理地址、寫數據邏輯地址或數據物理地址存放于磁盤控制單元號對應的磁盤控制単元內的地址寄存器中;收到待寫入數據后,將待寫入數據存放于相應磁盤控制単元內的數據寄存器中,執行B5-3 ;
[0062]B5-3.當收到地址映射模塊的寫數據指令,執行B5_3a ;當收到地址映射模塊的讀數據指令,執行B5-3b ;
[0063]B5-3a.閃存控制単元、PCM控制單元或磁盤控制単元生成控制信號,將其數據寄存器中的待寫入數據通過存儲器通信子模塊的高速串行總線寫入存儲器的存儲介質相應物理地址中;
[0064]B5-3b.閃存控制單元、PCM控制單元或磁盤控制單元生成控制信號,通過存儲器通信子模塊的高速串行總線從存儲器的存儲介質相應物理地址中讀取數據,放入數據寄存器中,然后發送至地址映射模塊;
[0065]B5-4.當某存儲器失效時,待用戶以新的存儲器替換該失效存儲器后,接到外部發送的中斷信息,根據新的存儲器的存儲介質類型,將存儲器控制模塊中對應的可編程子模塊配置為相應的閃存控制単元、PCM控制單元或磁盤控制単元,然后向陣列控制模塊發送數據恢復指令。
[0066]所述的混合存儲系統,其進ー步特征在干,所述負載控制模塊的操作B2-4包括下述步驟:
[0067]B2-4a.從存儲器控制模塊讀取存儲器參數表,判斷待寫入數據的類型,小塊熱數據,進行B2-4b ;大塊冷數據,進行B2-4c ;小塊冷數據和大塊熱數據,進行B2_4d ;
[0068]B2-4b.判斷是否存在PCM介質的存儲器,是則將寫請求中寫數據地址轉換至PCM介質的物理地址空間,作為存儲器地址,進行B2-4e ;否則判斷是否存在閃存介質的存儲器,是則將寫請求中寫數據地址轉換至閃存介質的物理地址空間,作為存儲器地址,進行B2-4e ;否則將寫請求中寫數據地址轉換至磁盤介質的物理地址空間,作為存儲器地址,進打 B2_4e ;
[0069]B2-4c.判斷是否存在磁盤介質的存儲器,是則將寫請求中寫數據地址換至磁盤介質的物理地址空間,作為存儲器地址,進行B2-4e;否則判斷是否存在閃存介質的存儲器,是則將寫請求中寫數據地址轉換至閃存介質的物理地址空間,作為存儲器地址,進行B2-4e ;否則將寫請求中寫數據地址轉換至PCM介質的物理地址空間,作為存儲器地址,進打 B2_4e ;
[0070]B2-4d.判斷是否存在閃存介質的存儲器,是則將寫請求中寫數據地址轉換至閃存介質的物理地址空間,作為存儲器地址,進行B2-4e ;否則判斷是否存在PCM介質的存儲器,是則將寫請求中寫數據地址轉換至PCM介質的物理地址空間,作為存儲器地址,進行B2-4e ;否則將寫請求中寫數據地址轉換至磁盤介質的物理地址空間,作為存儲器地址,進打 B2_4e ;
[0071]B2-4e.將存儲器地址加入到寫請求中,同時寫請求中其它項不變,形成第二層寫請求,再將第二層寫請求發送到陣列控制模塊。
[0072]所述的混合存儲系統,其進ー步特征在于:[0073](1)所述地址映射模塊的操作B4_la中,在將寫數據邏輯地址按照地址映射算法轉換為存儲介質物理地址時,所述地址映射算法包括下述步驟:
[0074](1-1)計算寫數據邏輯地址對應閃存的通道號A:
[0075]
【權利要求】
1.一種混合存儲系統,由N個存儲器和一個控制器構成,N = I-128,其特征在于: A.所述每個存儲器包括控制器通信模塊、存儲介質和存儲器信息模塊,控制器通信模塊分別與存儲介質、存儲器信息模塊電信號連接; Al.所述控制器通信模塊由高速串行總線和低速串行總線構成; 高速串行總線將存儲器控制模塊的存儲器通信子模塊發送的數據包解析為控制信號,發送給存儲介質;將存儲介質讀出的數據封裝為數據包,發送至存儲器控制模塊; 低速串行總線接收存儲器通信子模塊發送的讀信號,從存儲器信息模塊讀出存儲器的基本信息發送至存儲器通信子模塊;接收存儲器通信子模塊發送的寫信號和數據,將數據寫入存儲器通信子模塊; A2.所述存儲介質用于存放數據,為閃存、PCM和磁盤中的一種或多種; A3.所述存儲器信息模塊存放存儲器的基本信息,包括存儲器容量、存儲介質類型和存儲器狀態;存儲器容量表示存儲器內存儲介質總容量大小,存儲介質類型表示存儲器內存儲介質類型為閃存、PCM或磁盤,存儲器狀態分為正常或失效,表示存儲器的存儲介質正常或失效; B.所述控制器包括主機通信模塊、負載控制模塊、陣列控制模塊、地址映射模塊、存儲器控制模塊和緩存;存儲器控制模塊包含通過內部總線一一對應連接的N個可編程子模塊和N個存儲器通信子模塊,并具有一個存儲器參數表,各存儲器通信子模塊由高速串行總線和低速串行總線構成; 主機通信模塊、負載控制模塊、陣列控制模塊和地址映射模塊依次兩兩之間通過內部總線連接,地址映射模塊與存儲器控制模塊的N個可編程子模塊通過內部總線連接,所述緩存分別與主機通信模塊、負載控制模塊、陣列控制模塊、地址映射模塊通過內部總線連接; 每個存儲器通信子模塊的高速串行總線和低速串行總線分別對應連接存儲器的控制器通信模塊的高速串行總線和低速串行總線,每個存儲器通信子模塊的高速串行總線將可編程子模塊的控制信號封裝成數據包,發送給存儲器的控制器通信模塊;將來自控制器通信模塊的數據包按照Aurora通信協議解析成數據,發送至可編程子模塊; 每個存儲器通信子模塊的低速串行總線為IIC總線,將存儲器控制模塊發送的寫信號和數據發送至存儲器的控制器通信模塊;將存儲器控制模塊發送的讀信號發送至存儲器通信模塊; 當存儲器的存儲介質類型分別為閃存、PCM和磁盤時,對應的可編程子模塊分別配置為閃存控制單元、PCM控制單元或磁盤控制單元; 所述存儲器參數表為NX 4的數組,其中N為存儲器的序號,每個存儲器對應4個表項:存儲器通信子模塊狀態、存儲器容量、存儲介質類型和存儲器狀態,存儲器通信子模塊狀態分為連接和未連接,表示存儲器通信子模塊是否與存儲器的控制器通信模塊連接,存儲器容量表示存儲器的存儲介質總容量大小,存儲介質類型表示存儲器的存儲介質類型為閃存、PCM或磁盤,存儲器狀態分為正常或失效,表示存儲器的存儲介質正常或失效; 所述緩存為SDRAM構成的存儲空間,為待寫入數據、讀取數據的緩沖區; B1.所述主機通信模塊執行如下操作: B1-1.按照主機通信協議標準,對主機發送的請求數據包解析為寫請求或讀請求;所述請求數據包包括請求地址、請求長度、讀寫標志、內存地址;讀寫標志為O,執行B1-2 ;讀寫標志為1,執行B1-3 ; B1-2.將內存地址中請求長度的數據存放在緩存中,作為待寫入數據,然后將請求數據包解析為寫請求,分別將請求數據包中請求地址、請求長度、內存地址作為寫請求的寫數據地址、寫數據長度、內存地址,將數據存放在緩存中的地址作為寫請求的緩存地址,再將寫請求發送至負載控制模塊; B1-3.將請求數據包解析為讀請求,分別將請求數據包中請求地址、請求長度、內存地址作為讀請求的讀數據地址、讀數據長度、內存地址;再將讀請求發送至地址映射模塊,等待地址映射模塊發送來的讀請求完成包,將其封裝成請求完成數據包發送給主機; B2.所述負載控制模塊執行如下操作: B2-1.定義長度為m個單元的數組M,各單元內容初始化為O,m3 1024 ; B2-2.當收到寫請求時,其中的寫數據地址,通過哈希函數集合H中的k個獨立哈希函數得到k個哈希值,每個哈希值對應數組M的一個單元地址;將k個哈希值所對應數組M的k個單元內容加1,然后判斷所述k個單元內容是否都大于閾值T,是則該寫請求對應的寫入數據為熱數據,否則該寫請求對應的寫入數據為冷數據,T-IO; 所述哈希函數集合H = {hj_, h2,..., hk}, k < m,哈希值的值域為[O~m_l]; B2-3.判斷對所述寫請求中寫數據長度是否大于W,是則該寫請求對應的寫入數據為大塊數據,否則該寫請求對應的寫入數據為小塊`數據,W = 256KB~4MB ; B2-4.經過上述操作,將寫請求對應的寫入數據分為大塊熱數據、小塊熱數據、大塊冷數據或小塊冷數據,并針對不同類型的寫入數據,將對應的寫請求中寫數據地址轉換為存儲器地址,加入到寫請求中,同時寫請求中其它項不變,形成第二層寫請求,再將第二層寫請求發送到陣列控制模塊; B3.所述陣列控制模塊執行如下操作: B3-1.根據用戶設置的RAIDO、RAIDl或RAID5陣列類型,從存儲器控制模塊讀取存儲器參數表,對不同存儲介質的存儲器,將負載控制模塊送來的第二層寫請求中的存儲器地址重映射為寫數據邏輯地址,將寫數據邏輯地址加入第二層寫請求中,形成第三層寫請求,再將第三層寫請求送到地址映射模塊,組建RAID0、RAID1或RAID5的PCM陣列,組建RAID0、RAIDl或RAID5的閃存陣列,組建RAIDO、RAIDl或RAID5的磁盤陣列; B3-2.某存儲器失效時,待用戶以新的存儲器替換該失效存儲器后,根據存儲器控制模塊發送的數據恢復指令,按照陣列類型,陣列控制模塊對新的存儲器進行有選擇的數據恢復:對于RAIDO陣列,數據無法恢復,陣列控制模塊運行結束;對于RAIDl陣列,陣列控制模塊將鏡像數據拷貝到新的存儲器中;對于RAID5陣列,陣列控制模塊通過冗余存儲器的數據以及校驗值,進行異或操作,得到恢復數據,存放入新的存儲器中; B4.所述地址映射模塊執行如下操作: 地址映射模塊維護一個地址映射表,地址映射表包含一一對應的數據邏輯地址和數據物理地址; B4-1.收到第三層寫請求時,判斷寫數據邏輯地址是否在閃存的地址空間,是則執行B4-la,否則執行B4-lb ; B4-la.將第三層寫請求中的寫數據邏輯地址按照地址映射算法轉換為存儲介質物理地址,然后在地址映射表的表項數據邏輯地址中檢測是否存在第三層寫請求中的寫數據地址,是則將與所述寫數據地址相同的數據邏輯地址對應的數據物理地址更新為所述存儲介質數據物理地址,并將原數據物理地址標記為失效;否則在地址映射表的表項數據邏輯地址和數據物理地址中分別加入所述寫數據地址及其對應的存儲介質物理地址;將所述存儲介質物理地址發送至存儲器控制模塊,進行B4-lc ; B4-lb.在地址映射表的表項數據邏輯地址中檢測是否存在第三層寫請求中的寫數據地址,是則將與寫數據地址相同的數據邏輯地址對應的數據物理地址更新為第三層寫請求中的寫數據邏輯地址;否則在地址映射表的表項數據邏輯地址和數據物理地址中分別加入所述寫數據地址及其對應的寫數據邏輯地址;將所述寫數據邏輯地址發送至存儲器控制模塊,進行B4-lc ; B4-lc.根據第三層寫請求中的緩存地址,對緩存中的待寫入數據通過校驗算法生成校驗值,將待寫入數據加入校驗值后發送至存儲器控制模塊; 最后向存儲器控制模塊發送寫數據指令; B4-2.收到主機通信模塊發來 的讀請求時,在地址映射表的表項數據邏輯地址中檢測是否存在讀請求中的讀數據地址,是則執行B4-2a,否則向主機通信模塊發送讀請求完成包,表明讀請求錯誤; B4-2a.將與讀數據地址相同的數據邏輯地址對應的數據物理地址發送至存儲器控制模塊,然后向存儲器控制模塊發送讀數據指令; B4-2b.待收到存儲器控制模塊讀出數據后,對讀取數據通過校驗算法生成新校驗值,檢驗新校驗值是否與所述校驗值相同,是則將讀取數據存入緩存中,向主機通信模塊發送讀請求完成包,表明讀請求成功;否則進行B4-2c ; B4-2c.根據新校驗值和所述校驗值,判斷讀取數據是否能糾錯,是則進行糾錯,將糾錯后的讀取數據存入緩存中,向主機通信模塊發送讀請求完成包,表明讀請求成功;否則向主機通信模塊發送讀請求完成包,表明讀請求失敗; 所述讀請求完成包包括讀取數據地址、讀取數據長度、內存地址、緩存地址和讀取狀態標志,讀取數據地址、讀取數據長度和內存地址分別為讀請求的讀取數據地址、讀取數據長度、內存地址,緩存地址為讀取數據存放在緩存的地址,讀取狀態標志分為成功、失敗和錯誤三種,分別表示當前數據校驗成功、當前數據校驗失敗以及讀數據地址錯誤;當前數據校驗失敗定義為存放該待讀取數據的存儲器失效,提示用戶更換存儲器; B5.所述存儲器控制模塊執行如下操作: B5-1.當混合存儲系統上電時,根據存儲器的存儲介質類型,將存儲器控制模塊中對應的可編程子模塊分別配置為PCM控制單元、閃存控制單元或磁盤控制單元; B5-2.判斷來自地址映射模塊的存儲介質物理地址、寫數據邏輯地址或數據物理地址是否存在于閃存的物理地址空間,是則執行B5-2a,否則判斷所述地址是否存在于PCM的物理地址空間,是則執行B5-2b,否則執行B5-2c ; B5-2a.對所述存儲介質物理地址、寫數據邏輯地址或數據物理地址進行取模運算,得到閃存控制單元號,然后將所述存儲介質物理地址、寫數據邏輯地址或數據物理地址存放于閃存控制單元號對應的閃存控制單元內的地址寄存器中;收到待寫入數據后,將待寫入數據存放于相應閃存控制單元內的數據寄存器中,執行B5-3 ;B5-2b.對所述存儲介質物理地址、寫數據邏輯地址或數據物理地址進行取模運算,得到PCM控制單元號,然后將所述存儲介質物理地址、寫數據邏輯地址或數據物理地址存放于PCM控制單元號對應的PCM控制單元內的地址寄存器中;收到待寫入數據后,將待寫入數據存放于相應PCM控制單元內的數據寄存器中,執行B5-3 ; B5-2c.對所述存儲介質物理地址、寫數據邏輯地址或數據物理地址進行取模運算,得到磁盤控制單元號,然后將所述存儲介質物理地址、寫數據邏輯地址或數據物理地址存放于磁盤控制單元號對應的磁盤控制單元內的地址寄存器中;收到待寫入數據后,將待寫入數據存放于相應磁盤控制單元內的數據寄存器中,執行B5-3 ; B5-3.當收到地址映射模塊的寫數據指令,執行B5-3a ;當收到地址映射模塊的讀數據指令,執行B5-3b ; B5-3a.閃存控制單元、PCM控制單元或磁盤控制單元生成控制信號,將其數據寄存器中的待寫入數據通過存儲器通信子模塊的高速串行總線寫入存儲器的存儲介質相應物理地址中; B5-3b.閃存控制單元、PCM控制單元或磁盤控制單元生成控制信號,通過存儲器通信子模塊的高速串行總線從存儲器的存儲介質相應物理地址中讀取數據,放入數據寄存器中,然后發送至地址映射模塊; B5-4.當某存儲器失 效時,待用戶以新的存儲器替換該失效存儲器后,接到外部發送的中斷信息,根據新的存儲器的存儲介質類型,將存儲器控制模塊中對應的可編程子模塊配置為相應的PCM控制單元、閃存控制單元或磁盤控制單元,然后向陣列控制模塊發送數據恢復指令。
2.如權利要求1所述的混合存儲系統,其特征在于,所述負載控制模塊的操作B2-4包括下述步驟: B2-4a.從存儲器控制模塊讀取存儲器參數表,判斷待寫入數據的類型,小塊熱數據,進行B2-4b ;大塊冷數據,進行B2-4c ;小塊冷數據和大塊熱數據,進行B2_4d ; B2-4b.判斷是否存在PCM介質存儲器,是則將寫請求中寫數據地址轉換為PCM存儲器的物理地址,作為存儲器地址,進行B2-4e ;否則判斷是否存在閃存介質存儲器,是則將寫請求中寫數據地址轉換為閃存存儲器的物理地址,作為存儲器地址,進行B2-4e ;否則將寫請求中寫數據地址轉換為磁盤存儲器的物理地址,作為存儲器地址,進行B2-4e ; B2-4c.判斷是否存在磁盤介質存儲器,是則將寫請求中寫數據地址換為磁盤存儲器的物理地址,作為存儲器地址,進行B2-4e ;否則判斷是否存在閃存介質存儲器,是則將寫請求中寫數據地址轉換為閃存存儲器的物理地址,作為存儲器地址,進行B2-4e;否則將寫請求中寫數據地址轉換為PCM存儲器的物理地址,作為存儲器地址,進行B2-4e ; B2-4d.判斷是否存在閃存介質存儲器,是則將寫請求中寫數據地址轉換為閃存存儲器的物理地址,作為存儲器地址,進行B2-4e ;否則判斷是否存在PCM介質存儲器,是則將寫請求中寫數據地址轉換為PCM存儲器的物理地址,作為存儲器地址,進行B2-4e ;否則將寫請求中寫數據地址轉換為磁盤存儲器的物理地址,作為存儲器地址,進行B2-4e ; B2-4e.將存儲器地址加入到寫請求中,同時寫請求中其它項不變,形成第二層寫請求,再將第二層寫請求發送到陣列控制模塊。
3.如權利要求1或2所述的混合存儲系統,其特征在于:(1)所述地址映射模塊的操作B4-la中,在將寫數據邏輯地址按照地址映射算法轉換為存儲介質物理地址時,所述地址映射算法包括下述步驟: (1-1)計算寫數據邏輯地址對應閃存的通道號A1:
4.如權利要求1或2所述的混合存儲系統,其特征在于: 所述存儲器控制模塊的操作B5-1具體過程如下: B5-la.置存儲器通信子模塊計數變量i = 1 ; B5-lb.檢測第i個存儲器通信子模塊是否連接存儲器的的控制器通信模塊,是則將存儲器參數表中序號i對應的存儲器通信子模塊狀態設置為已連接,然后執行B5-lc,否則執打 B5_le ; B5-lc.讀取存儲器信息模塊中的信息,寫入存儲器參數表中序號i對應的存儲介質類型和存儲器容量,將存儲器狀態設置為正常,執行B5-ld ; B5-ld.根據存儲器參數表中序號i中存儲介質類型,將可編程子模塊i配置為閃存控制単元、PCM控制單元或磁盤控制単元,執行B5-le ; B5-le.1 = i+1,判斷是否i ( N,是則執行B5-lb,否則執行結束; 所述存儲器控制模塊的操作B5-4具體過程如下: B5-4a.通過中斷信息獲得新的存儲器對應的存儲器通信子模塊號j,執行B5-4b ;B5-4b.讀取新的存儲器的存儲器信息模塊中的信息,更新存儲器參數表中序號j對應的存儲介質類型和存儲器容量,將存儲器參數表中序號j對應的存儲器狀態設置為失效,執行B5-4c ; B5-4c.根據存儲器參數表中序號j中存儲介質類型,將可編程子模塊j配置為閃存控制単元、PCM控制單元或磁盤控制単元,執行B5-4d ; B5-4d.向陣列控制模塊發送數據恢復指令,然后將存儲器參數表中序號j對應的存儲器狀態設置為正常,執行結束。
5.如權利要求3所述的混合存儲系統,其特征在于: 所述存儲器控制模塊的操作B5-1具體過程如下: B5-la.置存儲器通信子模塊計數變量i = 1 ; B5-lb.檢測第i個存儲器通信子模塊是否連接存儲器的控制器通信模塊,是則將存儲器參數表中序號i對應的存儲器通信子模塊狀態設置為已連接,然后執行B5-lc,否則執行B5-le ; B5-lc.讀取存儲器信息模塊中的信息,寫入存儲器參數表中序號i對應的存儲介質類型和存儲器容量,將存儲器狀態設置為正常,執行B5-ld ; B5-ld.根據存儲器參數表中序號i中存儲介質類型,將可編程子模塊i配置為閃存控制単元、PCM控制單元或磁盤控制単元,執行B5-le ; B5-le.1 = i+1,判斷是否i ( N,是則執行B5-lb,否則執行結束; 所述存儲器控制模塊的操作B5-4具體過程如下: B5-4a.通過中斷信息獲得新的存儲器對應的存儲器通信子模塊號j,執行B5-4b ;B5-4b.讀取新的存儲器的存儲器信息模塊中的信息,更新存儲器參數表中序號j對應的存儲介質類型和存儲器容量 ,將存儲器參數表中序號j對應的存儲器狀態設置為失效,執行B5-4c ; B5-4c.根據存儲器參數表中序號j中存儲介質類型,將可編程子模塊j配置為閃存控制単元、PCM控制單元或磁盤控制単元,執行B5-4d ; B5-4d.向陣列控制模塊發送數據恢復指令,然后將存儲器參數表中序號j對應的存儲器狀態設置為正常,執行結束。
【文檔編號】G06F3/06GK103455283SQ201310362037
【公開日】2013年12月18日 申請日期:2013年8月19日 優先權日:2013年8月19日
【發明者】童薇, 馮丹, 劉景寧, 蘇福欽, 張建權 申請人:華中科技大學