一種軟件定義的固態(tài)盤(pán)融合存儲(chǔ)方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種軟件定義的固態(tài)盤(pán)融合存儲(chǔ)方法,在主機(jī)端增加主機(jī)端融合存儲(chǔ)層HFSL(Host?Fusion?Storage?Layer),直接獲取固態(tài)盤(pán)的物理塊特性以及使用過(guò)程中的統(tǒng)計(jì)信息,結(jié)合上層數(shù)據(jù)訪(fǎng)問(wèn)特點(diǎn)進(jìn)行固態(tài)盤(pán)的復(fù)雜IO調(diào)度及管理,以及分配粒度可變的地址映射方法實(shí)現(xiàn)固態(tài)盤(pán)持久化的高性能。本發(fā)明在主機(jī)端實(shí)現(xiàn)對(duì)NAND?FLASH的性能優(yōu)化以及PCM與NAND?FLASH融合的存儲(chǔ)管理,利用PCM優(yōu)秀的性能彌補(bǔ)NAND?FLASH的性能缺點(diǎn),可提高固態(tài)盤(pán)讀寫(xiě)性能以及使用壽命。
【專(zhuān)利說(shuō)明】一種軟件定義的固態(tài)盤(pán)融合存儲(chǔ)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)領(lǐng)域,具體涉及一種軟件定義的固態(tài)盤(pán)融合存儲(chǔ)方法。
【背景技術(shù)】
[0002]近些年來(lái),基于NAND FLASH的固態(tài)盤(pán)飛速發(fā)展,已經(jīng)逐漸取代傳統(tǒng)的機(jī)械硬盤(pán)。NAND FLASH芯片制程工藝不斷提高,從2008年的25nm制程到現(xiàn)在的IOnm制程,性能不斷提高。然而NAND FLASH的磨損次數(shù)有限,小寫(xiě)性能差,不支持原地修改等缺陷仍然限制了它的性能。
[0003]現(xiàn)有的基于NAND FLASH的固態(tài)盤(pán),基本上都是利用固態(tài)盤(pán)中的固件程序屏蔽NANDFLASH的缺點(diǎn),提供類(lèi)似磁盤(pán)的塊設(shè)備接口供主機(jī)端使用。主機(jī)端完全把固態(tài)盤(pán)看成一個(gè)黑盒子,不管其物理特性而直接使用。雖然這是最簡(jiǎn)單,也是最快的取代傳統(tǒng)機(jī)械硬盤(pán)的方法,但是這存在嚴(yán)重的缺點(diǎn)。例如,在主機(jī)端針對(duì)機(jī)械磁盤(pán)設(shè)計(jì)的IO調(diào)度算法將不適用于固態(tài)盤(pán),針對(duì)機(jī)械磁盤(pán)設(shè)計(jì)的文件系統(tǒng)也將不適用于固態(tài)盤(pán);由于NAND FLASH的讀寫(xiě)操作單位是Page (最小2KB)單位,傳統(tǒng)以磁盤(pán)扇區(qū)大小(512B)為單位的請(qǐng)求發(fā)送到固態(tài)盤(pán)中,導(dǎo)致在固態(tài)盤(pán)中需要額外的處理請(qǐng)求的合并與分發(fā),降低了存儲(chǔ)速度;主機(jī)端無(wú)法獲取固態(tài)盤(pán)的物理特性、磨損狀況、使用信息,無(wú)法在文件的管理、地址空間的分配上進(jìn)行性能優(yōu)化。除此之外,由于固態(tài)盤(pán)的控制器需對(duì)NAND FLASH進(jìn)行缺點(diǎn)屏蔽和性能優(yōu)化,占用了大量的嵌入式系統(tǒng)有限的資源,這是非常不劃算的,且因不知主機(jī)端數(shù)據(jù)的特點(diǎn)使得性能提升受限。因此需要重新考慮基于NAND FLASH的固態(tài)盤(pán)的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì),向主機(jī)暴露更多的物理特性及使用信息,使主機(jī)不能再完全把固態(tài)盤(pán)看成黑盒子,而看成一個(gè)灰盒子。
[0004]Fusion-1o公司提出了一種VSL (Visual Storage Layer)層,同樣把固態(tài)盤(pán)看成灰盒子,把FTL (Flash Translation Layer閃存轉(zhuǎn)換層)放在主機(jī)端驅(qū)動(dòng)程序下實(shí)現(xiàn),獲取了很大的性能提高。但VSL是驅(qū)動(dòng)程序與FTL的結(jié)合,實(shí)際上到達(dá)驅(qū)動(dòng)程序?qū)拥腎O請(qǐng)求已經(jīng)不具備那么多的數(shù)據(jù)屬性,在驅(qū)動(dòng)程序中不能有效的針對(duì)固態(tài)盤(pán)的物理特性做優(yōu)化,并且文件系統(tǒng)層仍然是無(wú)法獲得固態(tài)盤(pán)的物理特性及磨損狀況等統(tǒng)計(jì)信息,限制了固態(tài)盤(pán)的性能提升。
[0005]目前除了上述的高性能的NANDFLASH存儲(chǔ)芯片,新型的非易失存儲(chǔ)芯片的發(fā)展也非常快,特別是PCM (Phase Change Memory,相變存儲(chǔ)器),現(xiàn)在美光公司已經(jīng)生產(chǎn)有IGB大小的PCM存儲(chǔ)芯片。PCM相對(duì)于NAND FLASH有很多優(yōu)勢(shì),最特突出的就是PCM支持以字節(jié)為單位的讀寫(xiě)操作,讀寫(xiě)速度相對(duì)NAND FLASH要快,同時(shí)PCM寫(xiě)之前不需要擦除,并且具有更多的可磨損次數(shù)。目前PCM還處于研究階段,關(guān)于PCM的研究基本都是用仿真的方法把PCM作為內(nèi)存的替代或者與內(nèi)存混合使用。特別是固態(tài)盤(pán)中,很多研究把PCM作為NANDFLASH的緩存使用,但是這并不能充分發(fā)揮PCM的性能優(yōu)勢(shì)來(lái)彌補(bǔ)NAND FLASH的性能缺點(diǎn)。
【發(fā)明內(nèi)容】
[0006]鑒于此,本發(fā)明的目的是在主機(jī)端實(shí)現(xiàn)對(duì)NAND FLASH的性能優(yōu)化以及PCM與NANDFLASH融合的存儲(chǔ)管理,來(lái)提高固態(tài)盤(pán)的整體性能;同時(shí),利用PCM優(yōu)秀的性能彌補(bǔ)NANDFLASH的性能缺點(diǎn),提高固態(tài)盤(pán)讀寫(xiě)性能以及使用壽命。
[0007]本發(fā)明提出一種軟件定義的固態(tài)盤(pán)融合存儲(chǔ)方法,其中,在基于NAND FLASH的固態(tài)盤(pán)中融合相變存儲(chǔ)器(PCM),所述方法包括以下步驟:
[0008](I)開(kāi)機(jī)時(shí)從固態(tài)盤(pán)PCM固定區(qū)域讀取PCM地址映射表和FLASH地址映射表到主機(jī)內(nèi)存中,同時(shí)在主機(jī)內(nèi)存中開(kāi)辟一段固態(tài)盤(pán)的緩存區(qū),當(dāng)主機(jī)有訪(fǎng)問(wèn)固態(tài)盤(pán)的請(qǐng)求Q(lsn, size, op, data)時(shí),首先獲取 Q.1sn 和 Q.size,根據(jù) Q.1sn 以及 Q.size 判斷請(qǐng)求 Q訪(fǎng)問(wèn)的數(shù)據(jù)是否在緩存區(qū)中,其中,Isn是邏輯地址,size是請(qǐng)求大小,op是讀寫(xiě)標(biāo)志,data是數(shù)據(jù)在主機(jī)內(nèi)存中的地址,即主機(jī)端的數(shù)據(jù)目的地址或源地址,
[0009]如果命中,對(duì)于讀請(qǐng)求,把數(shù)據(jù)從緩存區(qū)中拷貝到data地址,對(duì)于寫(xiě)請(qǐng)求,把data地址數(shù)據(jù)拷貝到緩存區(qū)中,轉(zhuǎn)入步驟(8);如果沒(méi)命中,對(duì)于讀請(qǐng)求,轉(zhuǎn)入步驟(2),對(duì)于寫(xiě)請(qǐng)求,如果緩存區(qū)沒(méi)有滿(mǎn),直接把data地址處的數(shù)據(jù)拷貝到緩存區(qū)中,轉(zhuǎn)入步驟(8),否則進(jìn)行緩存區(qū)替換更新操作,轉(zhuǎn)入步驟(3);
[0010](2)獲取讀請(qǐng)求的Q.1sn和Q.size,查找PCM與FLASH地址映射表進(jìn)行地址轉(zhuǎn)換,轉(zhuǎn)入步驟(6),其中,對(duì)于訪(fǎng)問(wèn)PCM的讀請(qǐng)求,產(chǎn)生以PCM最優(yōu)寫(xiě)粒度大小(如512B)為單位的讀操作請(qǐng)求序列;對(duì)于訪(fǎng)問(wèn)FLASH的讀請(qǐng)求,產(chǎn)生以FLASH物理頁(yè)大小的讀操作請(qǐng)求序列;
[0011](3)設(shè)從緩存區(qū)中替換出來(lái)的請(qǐng)求為q,判斷q.size的大小,如果q.size〈NANDPAGE SIZE,轉(zhuǎn)入步驟(4),否則轉(zhuǎn)入步驟(5);
[0012](4)根據(jù)請(qǐng)求q.1 sn的訪(fǎng)問(wèn)次數(shù)和訪(fǎng)問(wèn)時(shí)間,判斷q.1 Sn訪(fǎng)問(wèn)數(shù)據(jù)的冷熱性:如果是熱數(shù)據(jù),給q.1sn分配PCM磨損次數(shù)較少的物理地址;否則給q.1sn分配PCM磨損次數(shù)較多的物理地址;產(chǎn)生以PCM最優(yōu)寫(xiě)粒度大小(如512B)為單位的寫(xiě)請(qǐng)求序列,并轉(zhuǎn)入步驟
(6);
[0013](5)根據(jù)請(qǐng)求q.1 sn的訪(fǎng)問(wèn)次數(shù)和訪(fǎng)問(wèn)時(shí)間,判斷q.1 sn訪(fǎng)問(wèn)數(shù)據(jù)的冷熱性:如果是熱數(shù)據(jù),給q.1sn分配FLASH磨損次數(shù)較少的物理地址;否則給q.1sn分配FLASH磨損次數(shù)較多的物理地址;產(chǎn)生以FLASH頁(yè)大小單位的寫(xiě)請(qǐng)求序列,并轉(zhuǎn)入步驟(6);
[0014](6)獲取(2)、(4)、(5)中產(chǎn)生的請(qǐng)求序列,根據(jù)請(qǐng)求中的物理地址將所述請(qǐng)求序列分別添加到固態(tài)盤(pán)對(duì)應(yīng)通道上的循環(huán)請(qǐng)求隊(duì)列尾,當(dāng)定時(shí)器到來(lái)時(shí),把當(dāng)前通道上的請(qǐng)求發(fā)送給固態(tài)盤(pán)處理;
[0015](7)檢測(cè)是否有完成中斷,如果檢測(cè)到中斷,表示請(qǐng)求已經(jīng)處理完成,轉(zhuǎn)入步驟(8);
[0016](8)返回完成給請(qǐng)求Q。
[0017]本發(fā)明還提出一種主機(jī)融合存儲(chǔ)層(HFSL)系統(tǒng),用于對(duì)文件系統(tǒng)訪(fǎng)問(wèn)固態(tài)盤(pán)的請(qǐng)求進(jìn)行管理,所述固態(tài)盤(pán)基于NAND FLASH并融合了相變存儲(chǔ)器(PCM),所述系統(tǒng)包括:
[0018]地址映射管理模塊,在主機(jī)內(nèi)存中維持PCM地址映射表和NAND FLASH地址映射表,采用分配粒度可變的地址映射方法把PCM與NAND FLASH的地址分配給所述請(qǐng)求中的寫(xiě)請(qǐng)求;
[0019]IO調(diào)度管理模塊,用于把所述請(qǐng)求分發(fā)到固態(tài)盤(pán)的各個(gè)物理通道,所述物理通道包括PCM和NAND FLASH的多個(gè)通道,其中,為固態(tài)盤(pán)的每個(gè)物理通道維持一個(gè)循環(huán)請(qǐng)求隊(duì)列;
[0020]緩存區(qū)管理模塊,對(duì)主機(jī)內(nèi)存中開(kāi)辟的固態(tài)盤(pán)的緩存區(qū)進(jìn)行管理,當(dāng)文件系統(tǒng)訪(fǎng)問(wèn)固態(tài)盤(pán)的請(qǐng)求到來(lái)時(shí),判斷該請(qǐng)求的數(shù)據(jù)是否命中,如果命中就把緩存區(qū)中的數(shù)據(jù)返回給文件系統(tǒng);否則,就把請(qǐng)求交給地址映射管理模塊處理,地址映射管理模塊對(duì)請(qǐng)求進(jìn)行地址轉(zhuǎn)換獲取實(shí)際的物理地址,然后IO調(diào)度管理模塊把請(qǐng)求掛到對(duì)應(yīng)通道的循環(huán)請(qǐng)求隊(duì)列尾部。
[0021]相對(duì)于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:
[0022](I)固態(tài)盤(pán)對(duì)于主機(jī)不再是透明的,主機(jī)能獲取固態(tài)盤(pán)的物理特性及數(shù)據(jù)分布信息,針對(duì)其做性能優(yōu)化;
[0023](2)采用PCM與NAND FLASH的融合存儲(chǔ)方法,PCM作為NAND FLASH同級(jí)存儲(chǔ)器,在PCM中存放小寫(xiě)數(shù)據(jù),以及地址映射表等元數(shù)據(jù)信息,或需快速訪(fǎng)問(wèn)、頻繁訪(fǎng)問(wèn)的熱數(shù)據(jù)等,提高了固態(tài)盤(pán)的小寫(xiě)性能,同時(shí)也提高固態(tài)盤(pán)的啟動(dòng)速度。同時(shí)PCM作為固態(tài)盤(pán)中NANDFLASH的上級(jí)緩存,提升固態(tài)盤(pán)性能。相對(duì)于傳統(tǒng)以DRAM作為緩存的固態(tài)盤(pán),PCM與NANDFLASH的融合存儲(chǔ)還能保證數(shù)據(jù)的一致性,提高固態(tài)盤(pán)的可靠性;
[0024](3)在主機(jī)端驅(qū)動(dòng)與文件系統(tǒng)之間實(shí)現(xiàn)了一層融合存儲(chǔ)中間層一HFSL,HFSL能獲取PCM與NAND FLASH的物理特性及數(shù)據(jù)分布信息,并且針對(duì)PCM與NAND FLASH融合存儲(chǔ)的物理特性,在HFSL中實(shí)現(xiàn)了地址映射、IO調(diào)度策略、垃圾回收,磨損均衡等高效存儲(chǔ)管理,提高了固態(tài)盤(pán)的整體性能;
[0025](4) PCM與NAND FLASH融合存儲(chǔ)的固態(tài)盤(pán)中,只需要完成簡(jiǎn)單的讀、寫(xiě)、擦除等簡(jiǎn)單操作而不需要在固件中實(shí)現(xiàn)復(fù)雜的IO調(diào)度等管理策略算法,這樣能簡(jiǎn)化固態(tài)盤(pán)自身的控制管理,便于固態(tài)盤(pán)硬件體系結(jié)構(gòu)快速創(chuàng)新,使其能集中資源專(zhuān)注控制并行處理PCM與NAND FLASH的基本操作,提高了固態(tài)盤(pán)的讀寫(xiě)速度。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0026]圖1為本發(fā)明實(shí)施例的系統(tǒng)結(jié)構(gòu)示意圖;
[0027]圖2為本發(fā)明實(shí)施例的方法流程示意圖。
【具體實(shí)施方式】
[0028]下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例進(jìn)一步詳細(xì)說(shuō)明。
[0029]總體而言,本發(fā)明主要基于兩點(diǎn):一是在主機(jī)端實(shí)現(xiàn)融合存儲(chǔ)層一HFSL (HostFusion Storage Layer),實(shí)現(xiàn)對(duì)固態(tài)盤(pán)靈活的IO調(diào)度及管理策略以及性能優(yōu)化,簡(jiǎn)化固態(tài)盤(pán)體系結(jié)構(gòu);二是在基于NAND FLASH的固態(tài)盤(pán)中融合PCM存儲(chǔ),其中,PCM既可以作為NANDFLASH的同級(jí)存儲(chǔ)器用于存放固態(tài)盤(pán)的元數(shù)據(jù)信息,也可以用于存放小寫(xiě)數(shù)據(jù)、或訪(fǎng)問(wèn)頻繁的熱數(shù)據(jù)等,同時(shí)PCM還可以作為NAND FLASH的上級(jí)緩存使用,提升固態(tài)盤(pán)性能。
[0030]進(jìn)一步地,本發(fā)明基于以下原理:在主機(jī)驅(qū)動(dòng)程序與文件系統(tǒng)之間實(shí)現(xiàn)HFSL中間層,主機(jī)訪(fǎng)問(wèn)固態(tài)盤(pán)的請(qǐng)求需要經(jīng)過(guò)HFSL的處理,轉(zhuǎn)換成讀、寫(xiě)、擦除等簡(jiǎn)單操作發(fā)送給固態(tài)盤(pán);在固態(tài)盤(pán)內(nèi)部只處理讀、寫(xiě)、擦除等簡(jiǎn)單請(qǐng)求,不需要進(jìn)行過(guò)多的地址轉(zhuǎn)換、垃圾回收、磨損均衡、IO請(qǐng)求的重新分發(fā)與組合等復(fù)雜的調(diào)度及管理算法。針對(duì)PCM與NANDFLASH融合存儲(chǔ)的物理特性,在HFSL中設(shè)計(jì)了融合管理的地址映射以及IO調(diào)度算法。除此之外,HFSL還具有類(lèi)似傳統(tǒng)固態(tài)盤(pán)中基本的緩存管理、垃圾回收、磨損均衡等復(fù)雜的IO調(diào)度功倉(cāng)泛。
[0031]圖1為本發(fā)明實(shí)施例的系統(tǒng)結(jié)構(gòu)示意圖。其中,主機(jī)融合存儲(chǔ)層(HFSL)包括三個(gè)模塊:地址映射管理模塊、IO調(diào)度管理模塊和緩存區(qū)管理模塊。
[0032]地址映射管理模塊的功能主要是合理地把PCM與NAND FLASH的地址分配給寫(xiě)請(qǐng)求。其中,由于讀請(qǐng)求已經(jīng)有固態(tài)盤(pán)的物理地址,所以無(wú)需分配,而寫(xiě)請(qǐng)求只知道固態(tài)盤(pán)的邏輯地址,具體的物理地址需要由地址映射模塊分配。PCM地址映射表和NAND FLASH地址映射表存放在固態(tài)盤(pán)的PCM中的固定區(qū)域,地址映射管理模塊在主機(jī)內(nèi)存中維持上述地址映射表。開(kāi)機(jī)時(shí)從PCM固定區(qū)域讀取地址映射表到主機(jī)內(nèi)存中,關(guān)機(jī)時(shí)把內(nèi)存中地址映射表中修改了的地址映射條目寫(xiě)回到固態(tài)盤(pán)PCM固定區(qū)域中。除一部分地址物理空間用于存放上述地址映射表以及訪(fǎng)問(wèn)的元數(shù)據(jù)信息(它們?cè)谥鳈C(jī)端融合存儲(chǔ)層中對(duì)主機(jī)透明)以外,PCM的其余物理地址與NAND FLASH地址統(tǒng)一編址。在特定實(shí)施例中,采用分配粒度可變的地址映射方法進(jìn)行地址分配:NAND FLASH地址段采用粗粒度的地址映射,以NAND FLASH的物理頁(yè)大小為地址映射單位;PCM地址段采用以PCM最優(yōu)寫(xiě)粒度大小為單位的細(xì)粒度的地址映射,即以小于頁(yè)的單位(如512B)為地址映射單位。
[0033]在進(jìn)行地址映射時(shí)主要考慮三個(gè)方面的因素:
[0034](I)當(dāng)接收到文件系統(tǒng)訪(fǎng)問(wèn)固態(tài)盤(pán)的請(qǐng)求時(shí),判斷請(qǐng)求訪(fǎng)問(wèn)數(shù)據(jù)的大小是否小于閾值,如果小于閾值則該請(qǐng)求為小寫(xiě)請(qǐng)求,否則該請(qǐng)求為大寫(xiě)請(qǐng)求,對(duì)于小寫(xiě)請(qǐng)求,分配PCM的物理地址,對(duì)于大寫(xiě)請(qǐng)求分配N(xiāo)AND FLASH的物理地址;
[0035](2)統(tǒng)計(jì)PCM與NADN FLASH的磨損次數(shù),在進(jìn)行地址分配時(shí),判斷數(shù)據(jù)的冷熱性,如果是冷數(shù)據(jù)就分配到磨損次數(shù)較多的物理塊地址,否則就分配到磨損次數(shù)較少的物理塊地址;
[0036](3)在進(jìn)行地址分配時(shí),以條帶的方式分配,把連續(xù)的邏輯地址分配到固態(tài)盤(pán)的不同物理通道上。
[0037]此外,還可以在地址映射管理模塊中融入磨損均衡以及垃圾回收操作。
[0038]IO調(diào)度管理模塊的主要功能是把請(qǐng)求分發(fā)到固態(tài)盤(pán)的各個(gè)物理通道。物理通道包括多個(gè)PCM通道和多個(gè)NAND FLASH通道。IO調(diào)度管理模塊為固態(tài)盤(pán)的每個(gè)物理通道維持一個(gè)循環(huán)請(qǐng)求隊(duì)列。請(qǐng)求經(jīng)過(guò)地址映射之后,對(duì)于PCM的請(qǐng)求都是以PCM最優(yōu)寫(xiě)粒度大小(如512B)為單位的請(qǐng)求序列,對(duì)于NAND FLASH的請(qǐng)求都是以NAND FLASH的物理頁(yè)大小為單位的請(qǐng)求序列。對(duì)于IO調(diào)度管理模塊,根據(jù)物理地址計(jì)算出通道號(hào),并把請(qǐng)求添加到對(duì)應(yīng)的PCM和NAND FLASH通道循環(huán)隊(duì)列尾部。IO調(diào)度管理模塊中設(shè)置定時(shí)器,當(dāng)定時(shí)器到來(lái)時(shí)把循環(huán)請(qǐng)求隊(duì)列上的請(qǐng)求發(fā)送給固態(tài)盤(pán)。當(dāng)檢測(cè)到固態(tài)盤(pán)有完成中斷時(shí),就會(huì)查詢(xún)循環(huán)請(qǐng)求隊(duì)列上請(qǐng)求的完成狀態(tài),如果完成了,就從循環(huán)請(qǐng)求隊(duì)列上刪除該請(qǐng)求。
[0039]緩存區(qū)管理模塊用于對(duì)主機(jī)內(nèi)存中開(kāi)辟的固態(tài)盤(pán)緩存區(qū)進(jìn)行管理。因?yàn)镻CM與NAND FLASH的讀速度比較快,在特定實(shí)施例中,可以設(shè)計(jì)只寫(xiě)緩存區(qū),即只緩存那些經(jīng)常被寫(xiě)的數(shù)據(jù)。當(dāng)文件系統(tǒng)訪(fǎng)問(wèn)固態(tài)盤(pán)的請(qǐng)求到來(lái)時(shí),可以根據(jù)邏輯地址查找平衡二叉樹(shù)或其它方法判斷該請(qǐng)求的數(shù)據(jù)是否命中,如果命中就把緩存中的數(shù)據(jù)返回給文件系統(tǒng)。如果在緩存區(qū)中沒(méi)有找到數(shù)據(jù),就把請(qǐng)求交給地址映射模塊處理,地址映射模塊對(duì)請(qǐng)求進(jìn)行地址轉(zhuǎn)換獲取實(shí)際的物理地址,然后IO調(diào)度管理模塊把請(qǐng)求掛到對(duì)應(yīng)通道的循環(huán)隊(duì)列尾部。其中,可以采用平衡二叉樹(shù)來(lái)管理緩存數(shù)據(jù)。另外,在特定實(shí)施例中,與傳統(tǒng)固態(tài)盤(pán)內(nèi)部緩存區(qū)不同,HFSL緩沖區(qū)采用512B粒度大小管理,而不是傳統(tǒng)的以NAND FLASH的物理頁(yè)大小來(lái)管理。同時(shí),因?yàn)橹鳈C(jī)內(nèi)存資源豐富,可以把緩存區(qū)容量盡量設(shè)置大些,以能夠緩存更多的寫(xiě)數(shù)據(jù)。
[0040]圖2為本發(fā)明實(shí)施例的方法流程圖。開(kāi)機(jī)時(shí)主機(jī)融合存儲(chǔ)層(HFSL)從固態(tài)盤(pán)PCM固定區(qū)域讀取PCM地址映射表和FLASH地址映射表到主機(jī)內(nèi)存中,同時(shí)在主機(jī)內(nèi)存中開(kāi)辟一段固態(tài)盤(pán)的緩存區(qū)。
[0041]假設(shè)主機(jī)訪(fǎng)問(wèn)固態(tài)盤(pán)的請(qǐng)求Q(lsn, size, op, data), Isn是邏輯地址,size是請(qǐng)求大小,op是讀寫(xiě)標(biāo)志,例如為0表示寫(xiě),為I表示讀,data是數(shù)據(jù)在主機(jī)內(nèi)存中的地址即主機(jī)端的數(shù)據(jù)目的地址或源地址。針對(duì)請(qǐng)求Q,具體處理過(guò)程如下所示:
[0042](I)當(dāng)接收到主機(jī)訪(fǎng)問(wèn)固態(tài)盤(pán)的請(qǐng)求Q時(shí),首先獲取Q.1sn和Q.size,根據(jù)Q.1sn以及Q.size判斷請(qǐng)求Q訪(fǎng)問(wèn)的數(shù)據(jù)是否在緩存區(qū)中。如果命中,對(duì)于讀請(qǐng)求,把數(shù)據(jù)從緩存區(qū)中拷貝到data地址,對(duì)于寫(xiě)請(qǐng)求,把data地址數(shù)據(jù)拷貝到緩存區(qū)中,轉(zhuǎn)入步驟(8)。如果沒(méi)命中,對(duì)于讀請(qǐng)求,轉(zhuǎn)入步驟(2),對(duì)于寫(xiě)請(qǐng)求,如果緩存區(qū)沒(méi)有滿(mǎn),直接把data地址處的數(shù)據(jù)拷貝到緩存中,轉(zhuǎn)入步驟(8),否則進(jìn)行緩存區(qū)替換更新操作,轉(zhuǎn)入步驟(3)。其中,可以利用查找平衡二叉樹(shù)或其它方法判斷該請(qǐng)求的數(shù)據(jù)是否命中。
[0043](2)獲取讀請(qǐng)求的Q.1sn和Q.size,查找PCM與FLASH地址映射表進(jìn)行地址轉(zhuǎn)換。對(duì)于訪(fǎng)問(wèn)PCM的讀請(qǐng)求產(chǎn)生以PCM最優(yōu)寫(xiě)粒度大小(如512B)為單位的讀操作請(qǐng)求序列;對(duì)于訪(fǎng)問(wèn)FLASH的讀請(qǐng)求產(chǎn)生以FLASH物理頁(yè)大小的讀操作請(qǐng)求序列,轉(zhuǎn)入步驟(6)。
[0044](3)設(shè)從緩存區(qū)中替換出來(lái)的請(qǐng)求為q,判斷q.size的大小,如果q.size〈NANDPAGE SIZE,轉(zhuǎn)入步驟(4),否則轉(zhuǎn)入步驟(5)。
[0045](4)根據(jù)請(qǐng)求q.1sn的訪(fǎng)問(wèn)次數(shù)frequency和訪(fǎng)問(wèn)時(shí)間recency,判斷q.1sn訪(fǎng)問(wèn)數(shù)據(jù)的冷熱性。如果是熱數(shù)據(jù),給q.1sn分配PCM磨損次數(shù)較少的物理地址;否則給q.1sn分配PCM磨損次數(shù)較多的物理地址。產(chǎn)生以PCM最優(yōu)寫(xiě)粒度大小(如512B)為單位的寫(xiě)請(qǐng)求序列,轉(zhuǎn)入步驟(6)。其中,如果PCM沒(méi)有足夠的物理空間,則把PCM中的數(shù)據(jù)復(fù)制到NANDFLASH中,并且修改對(duì)應(yīng)的地址映射條目。
[0046](5)根據(jù)請(qǐng)求q.1sn的訪(fǎng)問(wèn)次數(shù)frequency和訪(fǎng)問(wèn)時(shí)間recency,判斷q.1sn訪(fǎng)問(wèn)數(shù)據(jù)的冷熱性。如果是熱數(shù)據(jù),給q.1sn分配FLASH磨損次數(shù)較少的物理地址;否則給q.1sn分配FLASH磨損次數(shù)較多的物理地址。產(chǎn)生以FLASH頁(yè)大小單位的寫(xiě)請(qǐng)求序列,轉(zhuǎn)入步驟(6)。
[0047](6)獲取(2)、(4)、(5)中產(chǎn)生的請(qǐng)求序列,根據(jù)請(qǐng)求中的物理地址分別添加到固態(tài)盤(pán)對(duì)應(yīng)通道上的循環(huán)請(qǐng)求隊(duì)列尾。當(dāng)定時(shí)器到來(lái)時(shí),把當(dāng)前通道上的請(qǐng)求發(fā)送給固態(tài)盤(pán)處理。
[0048](7)檢測(cè)是否有完成中斷,如果檢測(cè)到中斷,表示請(qǐng)求已經(jīng)處理完成,轉(zhuǎn)入步驟
(8)。
[0049]( 8 )返回完成給請(qǐng)求Q。
[0050]最后,關(guān)機(jī)時(shí)把緩存區(qū)中的數(shù)據(jù)以及內(nèi)存中PCM地址映射表和FLASH地址映射表中修改了的地址映射條目寫(xiě)回到固態(tài)盤(pán)的相應(yīng)區(qū)域中。[0051]由此可見(jiàn),本發(fā)明提出的方法中,PCM與NAND FLASH融合存儲(chǔ),PCM不僅可以用于NAND FLASH同級(jí)存儲(chǔ)器,存放訪(fǎng)問(wèn)固態(tài)盤(pán)的小寫(xiě)數(shù)據(jù)以及固態(tài)盤(pán)的元數(shù)據(jù)信息,或訪(fǎng)問(wèn)頻繁的熱數(shù)據(jù)等,亦可以作為固態(tài)盤(pán)中NAND FLASH的上級(jí)緩存使用,從而提升固態(tài)盤(pán)整體性能。同時(shí),在主機(jī)端融合存儲(chǔ)層HFSL針對(duì)PCM與NAND FLASH的物理特性,結(jié)合數(shù)據(jù)請(qǐng)求特點(diǎn)進(jìn)行數(shù)據(jù)布局與性能優(yōu)化,簡(jiǎn)化固態(tài)盤(pán)自身的控制管理,便于固態(tài)盤(pán)硬件體系結(jié)構(gòu)快速創(chuàng)新,實(shí)現(xiàn)PCM與NAND FLASH融合的靈活、高效、可靠存儲(chǔ)。
[0052]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種軟件定義的固態(tài)盤(pán)融合存儲(chǔ)方法,其中,在基于NAND FLASH的固態(tài)盤(pán)中融合相變存儲(chǔ)器(PCM),所述方法包括以下步驟: (1)開(kāi)機(jī)時(shí)從固態(tài)盤(pán)PCM固定區(qū)域讀取PCM地址映射表和FLASH地址映射表到主機(jī)內(nèi)存中,同時(shí)在主機(jī)內(nèi)存中開(kāi)辟一段固態(tài)盤(pán)的緩存區(qū),當(dāng)主機(jī)有訪(fǎng)問(wèn)固態(tài)盤(pán)的請(qǐng)求Q(lsn, size, op, data)時(shí),首先獲取 Q.1sn 和 Q.size,根據(jù) Q.1sn 以及 Q.size 判斷請(qǐng)求 Q訪(fǎng)問(wèn)的數(shù)據(jù)是否在緩存區(qū)中,其中,Isn是邏輯地址,size是請(qǐng)求大小,op是讀寫(xiě)標(biāo)志,data是數(shù)據(jù)在主機(jī)內(nèi)存中的地址,即主機(jī)端的數(shù)據(jù)目的地址或源地址, 如果命中,對(duì)于讀請(qǐng)求,把數(shù)據(jù)從緩存區(qū)中拷貝到data地址,對(duì)于寫(xiě)請(qǐng)求,把data地址數(shù)據(jù)拷貝到緩存區(qū)中,轉(zhuǎn)入步驟(8);如果沒(méi)命中,對(duì)于讀請(qǐng)求,轉(zhuǎn)入步驟(2),對(duì)于寫(xiě)請(qǐng)求,如果緩存區(qū)沒(méi)有滿(mǎn),直接把data地址處的數(shù)據(jù)拷貝到緩存區(qū)中,轉(zhuǎn)入步驟(8),否則進(jìn)行緩存區(qū)替換更新操作,轉(zhuǎn)入步驟(3); (2)獲取讀請(qǐng)求的Q.1sn和Q.size,查找PCM與FLASH地址映射表進(jìn)行地址轉(zhuǎn)換,轉(zhuǎn)入步驟(6),其中,對(duì)于訪(fǎng)問(wèn)PCM的讀請(qǐng)求,產(chǎn)生以PCM最優(yōu)寫(xiě)粒度大小(如512B)為單位的讀操作請(qǐng)求序列;對(duì)于訪(fǎng)問(wèn)FLASH的讀請(qǐng)求,產(chǎn)生以FLASH物理頁(yè)大小的讀操作請(qǐng)求序列; (3)設(shè)從緩存區(qū)中替換出來(lái)的請(qǐng)求為q,判斷q.size的大小,如果q.size<NAND PAGESIZE,轉(zhuǎn)入步驟(4),否則轉(zhuǎn)入步驟(5); (4)根據(jù)請(qǐng)求q.1sn的訪(fǎng)問(wèn)次數(shù)和訪(fǎng)問(wèn)時(shí)間,判斷q.1sn訪(fǎng)問(wèn)數(shù)據(jù)的冷熱性:如果是熱數(shù)據(jù),給q.1sn分配PCM磨損次數(shù)較少的物理地址;否則給q.1sn分配PCM磨損次數(shù)較多的物理地址;產(chǎn)生以PCM最優(yōu)寫(xiě) 粒度大小(如512B)為單位的寫(xiě)請(qǐng)求序列,并轉(zhuǎn)入步驟(6); (5)根據(jù)請(qǐng)求q.1sn的訪(fǎng)問(wèn)次數(shù)和訪(fǎng)問(wèn)時(shí)間,判斷q.1sn訪(fǎng)問(wèn)數(shù)據(jù)的冷熱性:如果是熱數(shù)據(jù),給q.1sn分配FLASH磨損次數(shù)較少的物理地址;否則給q.1sn分配FLASH磨損次數(shù)較多的物理地址;產(chǎn)生以FLASH頁(yè)大小單位的寫(xiě)請(qǐng)求序列,并轉(zhuǎn)入步驟(6); (6)獲取(2)、(4)、(5)中產(chǎn)生的請(qǐng)求序列,根據(jù)請(qǐng)求中的物理地址將所述請(qǐng)求序列分別添加到固態(tài)盤(pán)對(duì)應(yīng)通道上的循環(huán)請(qǐng)求隊(duì)列尾,當(dāng)定時(shí)器到來(lái)時(shí),把當(dāng)前通道上的請(qǐng)求發(fā)送給固態(tài)盤(pán)處理; (7)檢測(cè)是否有完成中斷,如果檢測(cè)到中斷,表示請(qǐng)求已經(jīng)處理完成,轉(zhuǎn)入步驟(8); (8)返回完成給請(qǐng)求Q。
2.根據(jù)權(quán)利要求1所述的方法,步驟(4)中,如果PCM沒(méi)有足夠的物理空間,則把PCM中的數(shù)據(jù)復(fù)制到NAND FLASH中,并且修改對(duì)應(yīng)的地址映射條目。
3.根據(jù)權(quán)利要求1至2所述的方法,在步驟(8)之后還包括:關(guān)機(jī)時(shí)把緩存區(qū)中的數(shù)據(jù)以及內(nèi)存中PCM地址映射表和FLASH地址映射表中修改了的地址映射條目寫(xiě)回到固態(tài)盤(pán)的相應(yīng)區(qū)域中。
4.一種主機(jī)融合存儲(chǔ)層(HFSL)系統(tǒng),用于對(duì)文件系統(tǒng)訪(fǎng)問(wèn)固態(tài)盤(pán)的請(qǐng)求進(jìn)行管理,所述固態(tài)盤(pán)基于NAND FLASH并融合了相變存儲(chǔ)器(PCM),所述系統(tǒng)包括: 地址映射管理模塊,在主機(jī)內(nèi)存中維持PCM地址映射表和NAND FLASH地址映射表,采用分配粒度可變的地址映射方法把PCM與NAND FLASH的地址分配給所述請(qǐng)求中的寫(xiě)請(qǐng)求; IO調(diào)度管理模塊,用于把所述請(qǐng)求分發(fā)到固態(tài)盤(pán)的各個(gè)物理通道,所述物理通道包括PCM和NAND FLASH的多個(gè)通道,其中,為固態(tài)盤(pán)的每個(gè)物理通道維持一個(gè)循環(huán)請(qǐng)求隊(duì)列; 緩存區(qū)管理模塊,對(duì)主機(jī)內(nèi)存中開(kāi)辟的固態(tài)盤(pán)的緩存區(qū)進(jìn)行管理,當(dāng)文件系統(tǒng)訪(fǎng)問(wèn)固態(tài)盤(pán)的請(qǐng)求到來(lái)時(shí),判斷該請(qǐng)求的數(shù)據(jù)是否命中,如果命中就把緩存區(qū)中的數(shù)據(jù)返回給文件系統(tǒng);否則,就把請(qǐng)求交給地址映射管理模塊處理,地址映射管理模塊對(duì)請(qǐng)求進(jìn)行地址轉(zhuǎn)換獲取實(shí)際的物理地址,然后IO調(diào)度管理模塊把請(qǐng)求掛到對(duì)應(yīng)通道的循環(huán)請(qǐng)求隊(duì)列尾部。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其中,所述地址映射管理模塊在開(kāi)機(jī)時(shí)從固態(tài)盤(pán)PCM固定區(qū)域讀取PCM地址映射表和NAND FLASH地址映射表到主機(jī)內(nèi)存中,關(guān)機(jī)時(shí)把內(nèi)存中地址映射表中修改了的地址映射條目寫(xiě)回到固態(tài)盤(pán)PCM的相應(yīng)區(qū)域中。
6.根據(jù)權(quán)利要求4所述的系統(tǒng),其中,當(dāng)接收到文件系統(tǒng)訪(fǎng)問(wèn)固態(tài)盤(pán)的請(qǐng)求時(shí),所述地址映射管理模塊判斷請(qǐng)求訪(fǎng)問(wèn)數(shù)據(jù)的大小是否小于閾值,如果小于閾值則該請(qǐng)求為小寫(xiě)請(qǐng)求,否則該請(qǐng)求為大寫(xiě)請(qǐng)求,對(duì)于小寫(xiě)請(qǐng)求分配PCM的物理地址,對(duì)于大寫(xiě)請(qǐng)求分配N(xiāo)ANDFLASH的物理地址。
7.根據(jù)權(quán)利要求4所述的系統(tǒng),其中,所述地址映射管理模塊統(tǒng)計(jì)PCM與NADNFLASH的磨損次數(shù),在進(jìn)行地址分配時(shí),判斷數(shù)據(jù)的冷熱性,如果是冷數(shù)據(jù)就分配到磨損次數(shù)較多的物理塊地址,否則就分配到磨損次數(shù)較少的物理塊地址。
8.根據(jù)權(quán)利要求4所述的系統(tǒng),其中,所述地址映射管理模塊進(jìn)行地址分配時(shí),以條帶的方式分配,把連續(xù)的邏輯地址分配到固態(tài)盤(pán)的不同物理通道上。
9.根據(jù)權(quán)利要求4所述的系統(tǒng),其中,對(duì)于IO調(diào)度管理模塊,根據(jù)物理地址計(jì)算出通道號(hào),并把請(qǐng)求添加到對(duì)應(yīng)的PCM和NAND FLASH通道循環(huán)隊(duì)列尾部。
10.根據(jù)權(quán)利要求4所述的系統(tǒng),其中,所述IO調(diào)度管理模塊中設(shè)置定時(shí)器,當(dāng)定時(shí)器到來(lái)時(shí)把循環(huán)請(qǐng)求隊(duì)列上的請(qǐng)求發(fā)送給固態(tài)盤(pán);當(dāng)檢測(cè)到固態(tài)盤(pán)有完成中斷時(shí),查詢(xún)循環(huán)請(qǐng)求隊(duì)列上請(qǐng)求的完成狀態(tài),`如果完成了,就從循環(huán)請(qǐng)求隊(duì)列上刪除該請(qǐng)求。
【文檔編號(hào)】G06F3/06GK103777905SQ201410051045
【公開(kāi)日】2014年5月7日 申請(qǐng)日期:2014年2月14日 優(yōu)先權(quán)日:2014年2月14日
【發(fā)明者】劉景寧, 馮丹, 童薇, 張雙武, 雷宗浩, 余晨曄, 羅銳, 張建權(quán) 申請(qǐng)人:華中科技大學(xué)