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