一種共享存儲系統(tǒng)及其使用方法
【專利摘要】本發(fā)明提供了一種共享存儲系統(tǒng)及其使用方法,包括:第一SATA協(xié)議解析模塊接收CPU發(fā)送的SATA指令進(jìn)行解析;鏈路仲裁模塊將SATA指令逐一發(fā)送至地址映射模塊;地址映射模塊,確定該SATA指令中指示存儲的地址空間為NandFlash,將SATA指令發(fā)送至PCIe硬核;確定該SATA指令中指示存儲的地址空間為硬盤后,將SATA指令發(fā)送至第二SATA協(xié)議解析模塊。PCIe硬核對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至NandFlash控制器;第二SATA協(xié)議解析模塊對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至硬盤。本發(fā)明實(shí)現(xiàn)了存儲體的合理異構(gòu),存儲資源的合理分配。
【專利說明】
一種共享存儲系統(tǒng)及其使用方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別涉及一種共享存儲系統(tǒng)及其使用方法。
【背景技術(shù)】
[0002]現(xiàn)有技術(shù)中不存在多CPU共享存儲的技術(shù)。大部分高性能計(jì)算領(lǐng)域仍然采用一個(gè)CPU對一塊硬盤的設(shè)計(jì)方式,或者采用內(nèi)存條代替硬盤與CPU相連的設(shè)計(jì)方式。
[0003]現(xiàn)有技術(shù)的不足在于:
[0004]服務(wù)器存在較多CPU時(shí),采用一個(gè)CPU對一塊硬盤的設(shè)計(jì)方式,一個(gè)CPU帶一塊硬盤,則需要較多的硬盤,而一臺高性能服務(wù)器帶幾百個(gè)硬盤,會使服務(wù)器體積龐大,存儲資源過剩,是不合理的。而采用內(nèi)存條代替硬盤與CPU相連的設(shè)計(jì)方式,不僅耗資巨大,而且資源不能靈活合理分配。
[0005]并且采用普通機(jī)械硬盤搭建多CPU共享存儲系統(tǒng),由于機(jī)械硬盤尋道時(shí)間長,速率低,無法滿足眾多CPU對數(shù)據(jù)讀取速率的要求。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提出了一種共享存儲系統(tǒng)及其使用方法,用以共享存儲,實(shí)現(xiàn)存儲資源的動(dòng)態(tài)合理分配,提高了存儲資源利用率。
[0007]本發(fā)明實(shí)施例中提供了一種共享存儲系統(tǒng),包括:至少一個(gè)第一 SATA指令解析模塊、鏈路仲裁模塊、地址映射模塊、第二 SATA協(xié)議解析模塊、以及PCIe硬核;其中:
[0008]第一 SATA協(xié)議解析模塊,用于分別與相對應(yīng)的CPU相連,接收CPU發(fā)送的SATA指令,對SATA指令進(jìn)行解析,并將該指令發(fā)送至鏈路仲裁模塊;
[0009]鏈路仲裁模塊,用于將第一 SATA協(xié)議解析模塊發(fā)來的SATA指令逐一發(fā)送至地址映射模塊;
[0010]地址映射模塊,用于接收鏈路仲裁模塊發(fā)來的SATA指令,在確定該SATA指令中指示存儲的地址空間為NandFlash后,將SATA指令發(fā)送至PCIe硬核;在確定該SATA指令中指示存儲的地址空間為硬盤后,將SATA指令發(fā)送至第二 SATA協(xié)議解析模塊;其中,所指示存儲的地址空間是分配給發(fā)出SATA指令的CPU的地址空間;
[0011]PCIe硬核,用于與NandFlash相連,對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至 NandFlash ;
[0012]第二 SATA協(xié)議解析模塊,用于與硬盤相連,對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至硬盤。
[0013]本發(fā)明實(shí)施例中提供了一種共享存儲系統(tǒng)的使用方法,包括以下步驟:
[0014]第一 SATA協(xié)議解析模塊分別與相對應(yīng)的CPU相連,接收CPU發(fā)送的SATA指令,對SATA指令進(jìn)行解析,并將該指令發(fā)送至鏈路仲裁模塊;
[0015]鏈路仲裁模塊將第一 SATA協(xié)議解析模塊發(fā)來的SATA指令逐一發(fā)送至地址映射模塊;
[0016]地址映射模塊接收鏈路仲裁模塊發(fā)來的SATA指令,在確定該SATA指令中指示存儲的地址空間為NandFlash后,將SATA指令發(fā)送至PCIe硬核;在確定該SATA指令中指示存儲的地址空間為硬盤后,將SATA指令發(fā)送至第二 SATA協(xié)議解析模塊;其中,所指示存儲的地址空間是分配給發(fā)出SATA指令的CPU的地址空間;
[0017]PCIe硬核與NandFlash相連,對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至 NandFlash ;
[0018]第二 SATA協(xié)議解析模塊與硬盤相連,對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至硬盤或內(nèi)存條。
[0019]本發(fā)明的有益效果為:
[0020]現(xiàn)有共享存儲指采用一個(gè)CPU帶一塊硬盤的設(shè)計(jì)方式,導(dǎo)致服務(wù)器帶較多個(gè)硬盤,會使服務(wù)器體積龐大,存儲資源過剩。即使采用內(nèi)存條代替硬盤與CPU相連的設(shè)計(jì)方式,也存在耗資巨大,且資源不能靈活合理分配的問題。并且,采用普通機(jī)械硬盤搭建多CPU共享存儲系統(tǒng),由于機(jī)械硬盤尋道時(shí)間長,速率低,無法滿足眾多CPU對數(shù)據(jù)讀取速率的要求。
[0021]本發(fā)明提供的技術(shù)方案中,第一 SATA協(xié)議解析模塊接收CPU發(fā)送的SATA指令,對SATA指令進(jìn)行解析,并將該指令發(fā)送至鏈路仲裁模塊;鏈路仲裁模塊將SATA指令逐一發(fā)送至地址映射模塊;地址映射模塊,在確定該SATA指令中指示存儲的地址空間為NandFlash后,將SATA指令發(fā)送至PCIe硬核;在確定該SATA指令中指示存儲的地址空間為硬盤后,將SATA指令發(fā)送至第二 SATA協(xié)議解析模塊;該指示存儲的地址空間是分配給發(fā)出SATA指令的CPU的地址空間。PCIe硬核對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至NandFlash控制器;第二 SATA協(xié)議解析模塊對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至硬盤。
[0022]采用本發(fā)明實(shí)施例中提供的技術(shù)方案,在存儲時(shí),將NandFlash與硬盤結(jié)合使用,可根據(jù)不同CPU需求存儲在不同的存儲介質(zhì)中,實(shí)現(xiàn)存儲體的合理異構(gòu),實(shí)現(xiàn)了存儲資源的合理分配,提高了存儲資源利用率。
【專利附圖】
【附圖說明】
[0023]下面將參照附圖描述本發(fā)明的具體實(shí)施例,其中:
[0024]圖1為本發(fā)明實(shí)施例中提供的共享存儲系統(tǒng)的結(jié)構(gòu)示意圖。
[0025]圖2為本發(fā)明實(shí)施例中提供的共享存儲系統(tǒng)的第一實(shí)施例的結(jié)構(gòu)示意圖。
[0026]圖3為本發(fā)明實(shí)施例中提供的共享存儲系統(tǒng)使用方法的流程示意圖。
【具體實(shí)施方式】
[0027]為了使本發(fā)明的技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖對本發(fā)明的示例性實(shí)施例進(jìn)行進(jìn)一步詳細(xì)的說明,顯然,所描述的實(shí)施例僅是本發(fā)明的一部分實(shí)施例,而不是所有實(shí)施例的窮舉。
[0028]發(fā)明人在發(fā)明過程中注意到:
[0029]現(xiàn)在市場不存在多CPU共享存儲的技術(shù),大部分高性能計(jì)算領(lǐng)域仍然采用一個(gè)CPU對一塊硬盤的設(shè)計(jì)方式,以此來平衡CPU的高帶寬和硬盤的低存取速率之間的差距。相應(yīng)的技術(shù)如:RAID控制器,PCIe switch擴(kuò)展硬盤接口。如果一個(gè)服務(wù)器有幾百個(gè)CPU,按照現(xiàn)有技術(shù),一個(gè)CPU帶一塊硬盤,則需要幾百個(gè)硬盤,一臺高性能服務(wù)器帶幾百個(gè)硬盤,會使服務(wù)器體積龐大,存儲資源過剩,是不合理的。而為了使整機(jī)運(yùn)算速度快,體積小,采用內(nèi)存條代替硬盤與CPU相連的設(shè)計(jì)方式,不僅耗資巨大,而且資源不能靈活合理分配。
[0030]并且采用普通機(jī)械硬盤搭建多CPU共享存儲系統(tǒng),由于機(jī)械硬盤尋道時(shí)間長,速率低,無法滿足眾多CPU對數(shù)據(jù)讀取速率的要求。
[0031]針對上述不足,本發(fā)明實(shí)施例中提供了一種共享存儲系統(tǒng)及其使用方法,下面進(jìn)行說明。
[0032]圖1為本發(fā)明實(shí)施例中提供的共享存儲系統(tǒng)的結(jié)構(gòu)示意圖。如圖1所示,可以包括至少一個(gè)第一 SATA指令解析模塊(如圖1所示,標(biāo)記為1011、1012至101N)、鏈路仲裁模塊(如圖1所示,標(biāo)記為102)、地址映射模塊(如圖1所示,標(biāo)記為103)、第二 SATA協(xié)議解析模塊(如圖1所示,標(biāo)記為104)、以及PCIe硬核(如圖1所示,標(biāo)記為105);其中:
[0033]第一 SATA協(xié)議解析模塊,用于分別與相對應(yīng)的CPU相連,接收CPU發(fā)送的SATA指令,對SATA指令進(jìn)行解析,并將該指令發(fā)送至鏈路仲裁模塊;
[0034]鏈路仲裁模塊,用于將第一 SATA協(xié)議解析模塊發(fā)來的SATA指令逐一發(fā)送至地址映射模塊;
[0035]地址映射模塊,用于接收鏈路仲裁模塊發(fā)來的SATA指令,在確定該SATA指令中指示存儲的地址空間為NandFlash后,將SATA指令發(fā)送至PCIe硬核;在確定該SATA指令中指示存儲的地址空間為硬盤后,將SATA指令發(fā)送至第二 SATA協(xié)議解析模塊;其中,所指示存儲的地址空間是分配給發(fā)出SATA指令的CPU的地址空間;
[0036]PCIe硬核,用于與NandFlash相連,對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至 NandFlash ;
[0037]第二 SATA協(xié)議解析模塊,用于與硬盤相連,對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至硬盤。
[0038]具體實(shí)施中,可以采用更高速的存儲介質(zhì)替代機(jī)械硬盤。NandFlash可以滿足高速和容量可線性擴(kuò)展的要求。
[0039]NandFlash作為存儲地址空間,讀取速度比普通機(jī)械硬盤有很大提高,可以很好的解塊共享存儲系統(tǒng)硬盤1瓶頸問題??梢詾楸景l(fā)明實(shí)施例提供首選存儲地址空間。目前市場上已經(jīng)有為NandFlash設(shè)計(jì)的文件系統(tǒng)YAFFS。也有廠家專門生產(chǎn)NandFlash控制器。利用現(xiàn)有的NandFlash控制器可以簡單快捷的實(shí)現(xiàn)對高性能云服務(wù)器共享存儲系統(tǒng)性能的優(yōu)化和提升。
[0040]由于NandFlash 的特殊性,不需要支持 SATA 的 NCQ (Native Command Queuing,原生命令隊(duì)列)操作,所以需要操作系統(tǒng)禁止NCQ模式。在SATA協(xié)議解析模塊中也不需要實(shí)現(xiàn)與NCQ有關(guān)的功能,大大降低了 SATA協(xié)議以及模塊的設(shè)計(jì)難度。除此之外,操作系統(tǒng)需要依據(jù)NandFlash容量和各個(gè)CPU的需求,為每個(gè)CPU動(dòng)態(tài)的分配存儲空間。
[0041 ] 具體實(shí)施中,本發(fā)明實(shí)施例中地址映射模塊,可以管理一張地址映射表,該地址映射表不但可以實(shí)現(xiàn)多CPU共享一塊NandFlash,還支持多CPU共享多塊NandFlash控制器。同時(shí),該地址映射模塊還可以根據(jù)不同CPU的需求選擇不同的存儲介質(zhì)。對于經(jīng)常執(zhí)行讀操作的CPU,選用Flash類型的存儲體,對于經(jīng)常執(zhí)行寫操作的CPU,選用硬盤或內(nèi)存條存儲,實(shí)現(xiàn)存儲體的合理異構(gòu)。
[0042]具體實(shí)施中,鏈路仲裁模塊可以選擇嚴(yán)格優(yōu)先序的、輪轉(zhuǎn)的或加權(quán)輪轉(zhuǎn)的仲裁方案對SATA指令進(jìn)行選取,實(shí)現(xiàn)對不同優(yōu)先級CPU的仲裁。鏈路仲裁模塊還可以對SATA指令序別排隊(duì)緩存,根據(jù)SATA指令到達(dá)時(shí)間先后和各個(gè)CPU優(yōu)先級的不同,依次輪詢或加權(quán)輪詢每一個(gè)存儲有SATA指令的隊(duì)列,取出指令并發(fā)送給地址映射模塊做處理。即可在高性能計(jì)算多CPU共享存儲的背景下,通過鏈路仲裁模塊,實(shí)現(xiàn)對不同優(yōu)先級CPU的存取操作的控制。使優(yōu)先級較高的CPU可以更快速的進(jìn)行數(shù)據(jù)的存取操作。
[0043]實(shí)施中,第一 SATA協(xié)議解析模塊還可以用于接收到CPU發(fā)送的SATA指令時(shí),對SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,將其發(fā)送至鏈路仲裁模塊。
[0044]具體實(shí)施中,CPU和存儲介質(zhì)之間是串行進(jìn)行數(shù)據(jù)交互的。串行的數(shù)據(jù)一來頻率太高無法處理,再有就是都經(jīng)過了編碼和加擾操作,所以從CPU接收到的SATA指令可能無法直接進(jìn)行處理,因此,需對接收到的SATA指令進(jìn)行串并轉(zhuǎn)換,將串行數(shù)據(jù)變?yōu)椴⑿袛?shù)據(jù),并進(jìn)行8b/10b編碼轉(zhuǎn)換以及解擾操作,這樣才能得到可處理的SATA指令,然后將其發(fā)送至鏈路仲裁模塊。
[0045]實(shí)施中,第一 SATA協(xié)議解析模塊還可以用于對CPU發(fā)送的SATA指令進(jìn)行標(biāo)識;地址映射模塊還可以用于根據(jù)所述標(biāo)識確定發(fā)出SATA指令的CPU的地址空間。
[0046]具體實(shí)施中,第一 SATA協(xié)議解析模塊可以對接收到的SATA指令通過打包的方式來進(jìn)行標(biāo)識,也可以用標(biāo)記CPU的ID號的方式來進(jìn)行標(biāo)識,其目的是為了標(biāo)記是由哪個(gè)CPU發(fā)送的指令。標(biāo)識過的SATA指令傳送到地址映射模塊后,地址映射模塊就可以知道是哪個(gè)CPU的SATA指令,及對應(yīng)哪個(gè)地址空間。
[0047]第一 SATA協(xié)議解析模塊可以通過SATA接口與CPU互聯(lián),SATA接口符合SATA3.0規(guī)范,可以實(shí)現(xiàn)與各種支持SATA3.0規(guī)范的處理器互聯(lián),本發(fā)明實(shí)施例可以使用Intel XeonE3處理器。
[0048]實(shí)施中,地址映射模塊還可以用于通過修改SATA指令的地址域,將其映射到分配給該CPU的地址空間的方式來在SATA指令中指示存儲的地址空間。
[0049]實(shí)施中,第二 SATA協(xié)議解析模塊還可以用于在接收到地址映射模塊發(fā)來的SATA指令時(shí),將SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,發(fā)送至硬盤。
[0050]具體實(shí)施中,按照協(xié)議規(guī)范,CPU和存儲介質(zhì)之間是串行進(jìn)行數(shù)據(jù)交互的。因此,需將SATA指令進(jìn)行串并轉(zhuǎn)換,將并行數(shù)據(jù)變?yōu)榇袛?shù)據(jù),并進(jìn)行8b/10b編碼轉(zhuǎn)換以及加擾操作,返回給硬盤。
[0051]實(shí)施中,PCIe硬核還可以用于在接收到地址映射模塊發(fā)來的SATA指令時(shí),將SATA指令通過PCIe硬核封裝后,發(fā)送至NandFlash。
[0052]具體實(shí)施中,在發(fā)送至NandFlash之前,可以先發(fā)送至NandFlash控制器。NandFlash控制器可以選用憶恒創(chuàng)源PBlaze3PCIe加速卡,與本發(fā)明實(shí)施例中的共享存儲系統(tǒng)通過PCIe接口連接,另一端依據(jù)NandFlash標(biāo)準(zhǔn)接口連接Nandflash,其中包含高效的ECC算法。NandFlash控制器依據(jù)PICe硬核輸入的控制信息要求,基于NandFlash數(shù)據(jù)存取規(guī)范,實(shí)現(xiàn)Flash的擦除和讀寫操作。將相應(yīng)數(shù)據(jù)和狀態(tài)信息通過寄存器返回給PCIe硬核。其中,響應(yīng)結(jié)果可以包括:數(shù)據(jù)和狀態(tài)信息。
[0053]具體實(shí)施中,NandFlash控制器連接NandFlash存儲陣列,可通過位擴(kuò)展的方式增加存儲容量,這種做法需要修改NandFlash控制器的地址位寬。也可將一個(gè)NandFlash控制器與NandFlash存儲陣列看成一組NandFlash對,復(fù)制多個(gè)NandFlash對,通過地址映射模塊將多個(gè)CPU與多個(gè)NandFlash對進(jìn)行映射。還可以利用PBlaze3加速卡,通過匹配不同類型琴鍵組成38種容量。這三種手段都可以靈活的增加系統(tǒng)的存儲容量,實(shí)現(xiàn)存儲資源的優(yōu)化配置。
[0054]實(shí)施中,PCIe硬核還可以用于在接收到NandFlash發(fā)來的響應(yīng)結(jié)果后,將響應(yīng)結(jié)果進(jìn)行解析,發(fā)送至地址映射模塊。
[0055]實(shí)施中,第二 SATA協(xié)議解析模塊還可以用于接收到硬盤發(fā)來的響應(yīng)結(jié)果后,將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,發(fā)送至地址映射模塊。
[0056]具體實(shí)施中,如上所述,按照協(xié)議規(guī)范,CPU和存儲介質(zhì)之間是串行進(jìn)行數(shù)據(jù)交互的。因此,需將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,將并行數(shù)據(jù)變?yōu)榇袛?shù)據(jù),并進(jìn)行8b/10b編碼轉(zhuǎn)換以及加擾操作,返回給地址映射模塊。
[0057]實(shí)施中,地址映射模塊還可以用于通過修改響應(yīng)結(jié)果的地址域,將其反映射到分配給該CPU的地址空間的方式來在響應(yīng)結(jié)果中指示響應(yīng)的地址空間。
[0058]具體實(shí)施中,地址映射模塊可通過地址反映射,找出其對應(yīng)的CUP,并可通過打包的方式來進(jìn)行標(biāo)識,也可以用標(biāo)記CPU的ID號的方式來進(jìn)行標(biāo)識后,發(fā)送給鏈路仲裁模塊。
[0059]實(shí)施中,第二 SATA協(xié)議解析模塊還可以用于對硬盤發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識;地址映射模塊還可以用于根據(jù)所述標(biāo)識確定接收響應(yīng)結(jié)果的CPU。
[0060]實(shí)施中,PCIe硬核還可以用于對NandFlash發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識;地址映射模塊還可以用于根據(jù)所述標(biāo)識確定接收響應(yīng)結(jié)果的CPU。
[0061]具體實(shí)施中,地址映射模塊將接收到的SATA指令中的地址域進(jìn)行地址映射后發(fā)送給PCIe硬核或第二 SATA協(xié)議解析模塊,PCIe硬核或第二 SATA協(xié)議解析模塊本身會將響應(yīng)結(jié)果傳回給地址映射模塊,然后地址映射模塊在對這個(gè)響應(yīng)結(jié)果中的地址域修改后進(jìn)行地址反映射,再傳給鏈路仲裁模塊。其中,地址映射與地址反映射是一個(gè)互為相反的過程,可以都在地址映射模塊上完成。
[0062]實(shí)施中,第一 SATA協(xié)議解析模塊還可以用于在接收到鏈路仲裁模塊的發(fā)來的響應(yīng)結(jié)果后,將該響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作,將其發(fā)送至CPU。
[0063]實(shí)施中,第一 SATA協(xié)議解析模塊、仲裁模塊、地址映射模塊、第二 SATA協(xié)議解析模塊以及PCIe硬核在FPGA(Field-Programmable Gate Array,現(xiàn)場可編程門陣列)上實(shí)現(xiàn)。
[0064]為了描述的方便,以上所述數(shù)據(jù)存儲系統(tǒng)的各部分以功能分為各種部件或單元分別描述。當(dāng)然,在實(shí)施本發(fā)明時(shí)可以把各部件或單元的功能在同一個(gè)或多個(gè)軟件或硬件中實(shí)現(xiàn)。
[0065]下面結(jié)合一個(gè)具體的實(shí)施示例來進(jìn)行說明。
[0066]如圖2所示,當(dāng)?shù)谝?SATA協(xié)議解析模塊接收到其互聯(lián)的CPU發(fā)來的SATA指令時(shí),首先將SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作,得到可處理的SATA指令;然后通過打包的方式對SATA指令進(jìn)行標(biāo)識,來標(biāo)記是由哪個(gè)CPU發(fā)送的SATA指令;其次當(dāng)?shù)刂酚成淠K不空閑時(shí),暫存SATA指令;當(dāng)?shù)刂酚成淠K空閑時(shí),將該SATA指令發(fā)送至鏈路仲裁模塊;接著,仲裁模塊根據(jù)優(yōu)先序的、輪轉(zhuǎn)的或加權(quán)輪轉(zhuǎn)的仲裁方案對SATA指令解析模塊發(fā)來的SATA指令進(jìn)行仲裁,按照該仲裁結(jié)果逐一發(fā)送至地址映射模塊;然后地址映射模塊根據(jù)標(biāo)識確定發(fā)出SATA指令的CPU的地址空間,通過修改SATA指令的地址域,將其映射到分配給該CPU的地址空間的方式來在SATA指令中指示存儲的地址空間;該指示存儲的地址可以為NandFlash、硬盤;如該指示存儲的地址可以為NandFlash,將SATA指令發(fā)送至PCIe硬核;如該指示存儲的地址可以為硬盤或內(nèi)存條,將SATA指令發(fā)送至第二 SATA協(xié)議解析模塊。
[0067]PCIe硬核將SATA指令進(jìn)行PCIe硬核封裝后可以發(fā)送至NandFlash控制器。NandFlash控制器接收到SATA指令后,解析出CPU對應(yīng)的地址空間,發(fā)送至NandFlash進(jìn)行存儲,并返回一個(gè)響應(yīng)結(jié)果至地址映射模塊。
[0068]第二 SATA協(xié)議解析模塊將SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后發(fā)送至硬盤。硬盤接收到SATA指令后,返回一個(gè)響應(yīng)結(jié)果至地址映射模塊。
[0069]地址映射模塊接收PCIe硬核或第二 SATA協(xié)議解析模塊發(fā)送的響應(yīng)結(jié)果,通過對這個(gè)響應(yīng)結(jié)果中的地址域修改后進(jìn)行地址反映射,其中,地址映射與地址反映射是一個(gè)互為相反的過程;確定響應(yīng)結(jié)果中指示的CPU,并對該CPU的ID進(jìn)行標(biāo)識,發(fā)送至鏈路仲裁模塊。
[0070]仲裁模塊根據(jù)響應(yīng)結(jié)果中指示的CPU的ID,將響應(yīng)結(jié)果發(fā)送至與相應(yīng)CPU互聯(lián)的第一 SATA協(xié)議解析模塊;
[0071]第一 SATA協(xié)議解析模塊將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,將其發(fā)送至對應(yīng)的CPU。至此完成一次完整的交互。
[0072]基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種共享存儲系統(tǒng)的使用方法,由于該使用方法的原理與一種共享存儲系統(tǒng)相似,因此該方法的實(shí)施可以參見數(shù)據(jù)存儲系統(tǒng)的實(shí)施,重復(fù)之處不再贅述。
[0073]圖3為本發(fā)明實(shí)施例中共享存儲系統(tǒng)的使用流程示意圖,如圖所示,可以包括如下步驟:
[0074]步驟301、第一 SATA協(xié)議解析模塊分別與相對應(yīng)的CPU相連,接收CPU發(fā)送的SATA指令,對SATA指令進(jìn)行解析,并將該指令發(fā)送至鏈路仲裁模塊;
[0075]步驟302、鏈路仲裁模塊將第一 SATA協(xié)議解析模塊發(fā)來的SATA指令逐一發(fā)送至地址映射模塊;
[0076]步驟303、判斷地址映射模塊接收的SATA指令指示存儲的地址空間;
[0077]步驟304、若指示存儲的地址空間為NandFlash,則將SATA指令發(fā)送至PCIe硬核;
[0078]步驟305、PCIe硬核與NandFlash相連,對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至NandFlash ;
[0079]步驟306、若指示存儲的地址空間為硬盤,則將SATA指令發(fā)送至第二 SATA協(xié)議解析模塊;
[0080]步驟307、第二 SATA協(xié)議解析模塊與硬盤相連,對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至硬盤。
[0081 ] 實(shí)施中,第一 SATA協(xié)議解析模塊接收到CPU發(fā)送的SATA指令時(shí),還可以包括:對SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,將其發(fā)送至鏈路仲裁模塊。
[0082]實(shí)施中,第一 SATA協(xié)議解析模塊對CPU發(fā)送的SATA指令進(jìn)行標(biāo)識;地址映射模塊根據(jù)所述標(biāo)識確定發(fā)出SATA指令的CPU的地址空間。
[0083]實(shí)施中,地址映射模塊通過修改SATA指令的地址域,將其映射到分配給該CPU的地址空間的方式來在SATA指令中指示存儲的地址空間。
[0084]實(shí)施中,第二 SATA協(xié)議解析模塊在接收到地址映射模塊發(fā)來的SATA指令時(shí),還可以包括:將SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,發(fā)送至硬盤。
[0085]實(shí)施中,PCIe硬核在接收到地址映射模塊發(fā)來的SATA指令時(shí),還可以包括:將SATA指令通過PCIe硬核封裝后,發(fā)送至NandFlash。
[0086]實(shí)施中,PCIe硬核在接收到NandFlash發(fā)來的響應(yīng)結(jié)果后,還可以包括:將響應(yīng)結(jié)果進(jìn)行解析,發(fā)送至地址映射模塊。
[0087]實(shí)施中,第二 SATA協(xié)議解析模塊接收到硬盤發(fā)來的響應(yīng)結(jié)果后,還可以包括:將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,發(fā)送至地址映射模塊。
[0088]實(shí)施中,地址映射模塊通過修改響應(yīng)結(jié)果的地址域,將其反映射到分配給該CPU的地址空間的方式來在響應(yīng)結(jié)果中指示響應(yīng)的地址空間。
[0089]實(shí)施中,第二 SATA協(xié)議解析模塊對硬盤發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識;地址映射模塊根據(jù)所述標(biāo)識確定接收響應(yīng)結(jié)果的CPU。
[0090]實(shí)施中,PCIe硬核對NandFlash發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識;地址映射模塊根據(jù)所述標(biāo)識確定接收響應(yīng)結(jié)果的CPU。
[0091]實(shí)施中,第一 SATA協(xié)議解析模塊在接收到鏈路仲裁模塊的發(fā)來的響應(yīng)結(jié)果后,還可以包括:將該響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作,將其發(fā)送至CPU。
[0092]實(shí)施中,第一 SATA協(xié)議解析模塊、仲裁模塊、地址映射模塊、第二 SATA協(xié)議解析模塊以及PCIe硬核在FPGA上實(shí)現(xiàn)。
[0093]具體實(shí)施中,SATA指令和響應(yīng)結(jié)果都可以是以幀的形式存在。
[0094]實(shí)施中,在物理層對SATA指令或響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換。
[0095]實(shí)施中,在鏈路層對SATA指令或響應(yīng)結(jié)果進(jìn)行加解擾操作。
[0096]實(shí)施中,在鏈路層對SATA指令進(jìn)行CRC校驗(yàn)。
[0097]實(shí)施中,在鏈路層對SATA指令的發(fā)送及接收進(jìn)行流控。
[0098]實(shí)施中,在傳輸層上,接收到從鏈路層發(fā)來的幀;檢查幀頭以及長度,若丟棄錯(cuò)誤的中貞時(shí),告知鏈路層。
[0099]實(shí)施中,在傳輸層上,接收到從網(wǎng)絡(luò)層發(fā)來的幀;檢查幀頭以及長度,若丟棄錯(cuò)誤的幀時(shí),告知網(wǎng)絡(luò)層。
[0100]實(shí)施中,在傳輸層上,接收到從網(wǎng)絡(luò)層發(fā)來的SATA指令;將SATA指令按照指令中指示存儲的地址空間,映射到分配給該CPU的地址空間。
[0101]實(shí)施中,在傳輸層上,接收到從鏈路層發(fā)來的響應(yīng)結(jié)果;將響應(yīng)結(jié)果按照地址空間的標(biāo)識,映射到發(fā)出響應(yīng)結(jié)果的NandFlash或硬盤對應(yīng)的CPU的地址空間。
[0102]實(shí)施中,在網(wǎng)絡(luò)層上,對傳輸層接收到的SATA指令進(jìn)行標(biāo)識;發(fā)送至鏈路仲裁模塊。
[0103]實(shí)施中,在網(wǎng)絡(luò)層上,接收到從鏈路仲裁模塊發(fā)來的響應(yīng)結(jié)果;發(fā)送至傳輸層。
[0104]本發(fā)明實(shí)施例中提供的系統(tǒng)和方法,采用NANDFlash代替機(jī)械硬盤,可以大大縮短數(shù)據(jù)讀取速率,提高存儲系統(tǒng)性能。利用FPGA實(shí)現(xiàn)多CPU共享NandFlash,填補(bǔ)了高性能計(jì)算領(lǐng)域多CPU共享硬盤的空白。兩者的結(jié)合使用,平衡了 CPU和硬盤的帶寬差距,彌補(bǔ)了硬盤的1存取瓶頸。實(shí)現(xiàn)了存儲資源的動(dòng)態(tài)合理分配,提高了存儲資源利用率。
[0105] 以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其進(jìn)行限制。因此,在不背離本發(fā)明的精神及其實(shí)質(zhì)的情況下,本領(lǐng)域技術(shù)人員可作出各種改變、替換和變型。很顯然,但這些改變、替換和變型都應(yīng)涵蓋于本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種共享存儲系統(tǒng),其特征在于,包括:至少一個(gè)第一 SATA指令解析模塊、鏈路仲裁模塊、地址映射模塊、第二 SATA協(xié)議解析模塊、以及PCIe硬核;其中: 第一 SATA協(xié)議解析模塊,用于分別與相對應(yīng)的CPU相連,接收CPU發(fā)送的SATA指令,對SATA指令進(jìn)行解析,并將該指令發(fā)送至鏈路仲裁模塊; 鏈路仲裁模塊,用于將第一 SATA協(xié)議解析模塊發(fā)來的SATA指令逐一發(fā)送至地址映射模塊; 地址映射模塊,用于接收鏈路仲裁模塊發(fā)來的SATA指令,在確定該SATA指令中指示存儲的地址空間為NandFlash后,將SATA指令發(fā)送至PCIe硬核;在確定該SATA指令中指示存儲的地址空間為硬盤后,將SATA指令發(fā)送至第二 SATA協(xié)議解析模塊;其中,所指示存儲的地址空間是分配給發(fā)出SATA指令的CPU的地址空間; PCIe硬核,用于與NandFlash相連,對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至 NandFlash ; 第二 SATA協(xié)議解析模塊,用于與硬盤相連,對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至硬盤。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第一SATA協(xié)議解析模塊進(jìn)一步用于接收到CPU發(fā)送的SATA指令時(shí),對SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,將其發(fā)送至鏈路仲裁模塊。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第一SATA協(xié)議解析模塊進(jìn)一步用于對CPU發(fā)送的SATA指令進(jìn)行標(biāo)識; 所述地址映射模塊進(jìn)一步用于根據(jù)所述標(biāo)識確定發(fā)出SATA指令的CPU的地址空間。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述地址映射模塊進(jìn)一步用于通過修改SATA指令的地址域,將其映射到分配給該CPU的地址空間的方式來在SATA指令中指示存儲的地址空間。
5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第二SATA協(xié)議解析模塊進(jìn)一步用于在接收到地址映射模塊發(fā)來的SATA指令時(shí),將SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,發(fā)送至硬盤。
6.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述PCIe硬核進(jìn)一步用于在接收到地址映射模塊發(fā)來的SATA指令時(shí),將SATA指令通過PCIe硬核封裝后,發(fā)送至NandFlash。
7.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述PCIe硬核進(jìn)一步用于在接收到NandFlash發(fā)來的響應(yīng)結(jié)果后,將響應(yīng)結(jié)果進(jìn)行解析,發(fā)送至地址映射模塊。
8.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第二SATA協(xié)議解析模塊進(jìn)一步用于接收到硬盤發(fā)來的響應(yīng)結(jié)果后,將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,發(fā)送至地址映射模塊。
9.如權(quán)利要求7至8任一所述的系統(tǒng),其特征在于,所述地址映射模塊進(jìn)一步用于通過修改響應(yīng)結(jié)果的地址域,將其反映射到分配給該CPU的地址空間的方式來在響應(yīng)結(jié)果中指示響應(yīng)的地址空間。
10.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述第二SATA協(xié)議解析模塊進(jìn)一步用于對硬盤發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識; 所述地址映射模塊進(jìn)一步用于根據(jù)所述標(biāo)識確定接收響應(yīng)結(jié)果的CPU。
11.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述PCIe硬核進(jìn)一步用于對NandFlash發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識; 所述地址映射模塊進(jìn)一步用于根據(jù)所述標(biāo)識確定接收響應(yīng)結(jié)果的CPU。
12.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述第一SATA協(xié)議解析模塊進(jìn)一步用于在接收到鏈路仲裁模塊的發(fā)來的響應(yīng)結(jié)果后,將該響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作,將其發(fā)送至CPU。
13.如權(quán)利要求1至12任一所述的系統(tǒng),其特征在于,第一SATA協(xié)議解析模塊、仲裁模塊、地址映射模塊、第二 SATA協(xié)議解析模塊以及PCIe硬核在FPGA上實(shí)現(xiàn)。
14.一種如權(quán)利要求1至11任一所述的共享存儲系統(tǒng)的使用方法,其特征在于,包括以下步驟: 第一 SATA協(xié)議解析模塊分別與相對應(yīng)的CPU相連,接收CPU發(fā)送的SATA指令,對SATA指令進(jìn)行解析,并將該指令發(fā)送至鏈路仲裁模塊; 鏈路仲裁模塊將第一 SATA協(xié)議解析模塊發(fā)來的SATA指令逐一發(fā)送至地址映射模塊; 地址映射模塊接收鏈路仲裁模塊發(fā)來的SATA指令,在確定該SATA指令中指示存儲的地址空間為NandFlash后,將SATA指令發(fā)送至PCIe硬核;在確定該SATA指令中指示存儲的地址空間為硬盤后,將SATA指令發(fā)送至第二 SATA協(xié)議解析模塊;其中,所指示存儲的地址空間是分配給發(fā)出SATA指令的CPU的地址空間; PCIe硬核與NandFlash相連,對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至NandFlash ; 第二 SATA協(xié)議解析模塊與硬盤相連,對地址映射模塊發(fā)來的SATA指令進(jìn)行封裝,并發(fā)送至硬盤。
15.如權(quán)利要求14所述的使用方法,其特征在于,所述第一SATA協(xié)議解析模塊接收到CPU發(fā)送的SATA指令時(shí),進(jìn)一步包括:對SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,將其發(fā)送至鏈路仲裁模塊。
16.如權(quán)利要求14所述的使用方法,其特征在于,進(jìn)一步包括:所述第一SATA協(xié)議解析模塊對CPU發(fā)送的SATA指令進(jìn)行標(biāo)識; 所述地址映射模塊根據(jù)所述標(biāo)識確定發(fā)出SATA指令的CPU的地址空間。
17.如權(quán)利要求14所述的使用方法,其特征在于,進(jìn)一步包括:所述地址映射模塊通過修改SATA指令的地址域,將其映射到分配給該CPU的地址空間的方式來在SATA指令中指示存儲的地址空間。
18.如權(quán)利要求14所述的使用方法,其特征在于,所述第二SATA協(xié)議解析模塊在接收到地址映射模塊發(fā)來的SATA指令時(shí),進(jìn)一步包括:將SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,發(fā)送至硬盤。
19.如權(quán)利要求14所述的使用方法,其特征在于,所述PCIe硬核在接收到地址映射模塊發(fā)來的SATA指令時(shí),進(jìn)一步包括:將SATA指令通過PCIe硬核封裝后,發(fā)送至NandFlash。
20.如權(quán)利要求14所述的使用方法,其特征在于,所述PCIe硬核在接收到NandFlash發(fā)來的響應(yīng)結(jié)果后,進(jìn)一步包括:將響應(yīng)結(jié)果進(jìn)行解析,發(fā)送至地址映射模塊。
21.如權(quán)利要求14所述的使用方法,其特征在于,所述第二SATA協(xié)議解析模塊接收到硬盤發(fā)來的響應(yīng)結(jié)果后,進(jìn)一步包括:將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,發(fā)送至地址映射模塊。
22.如權(quán)利要求20至21任一所述的使用方法,其特征在于,進(jìn)一步包括:所述地址映射模塊通過修改響應(yīng)結(jié)果的地址域,將其反映射到分配給該CPU的地址空間的方式來在響應(yīng)結(jié)果中指示響應(yīng)的地址空間。
23.如權(quán)利要求20所述的使用方法,其特征在于,進(jìn)一步包括:所述第二SATA協(xié)議解析模塊對硬盤發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識; 所述地址映射模塊根據(jù)所述標(biāo)識確定接收響應(yīng)結(jié)果的CPU。
24.如權(quán)利要求21所述的使用方法,其特征在于,進(jìn)一步包括:所述PCIe硬核對NandFlash發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識; 所述地址映射模塊根據(jù)所述標(biāo)識確定接收響應(yīng)結(jié)果的CPU。
25.如權(quán)利要求14所述的使用方法,其特征在于,所述第一SATA協(xié)議解析模塊在接收到鏈路仲裁模塊的發(fā)來的響應(yīng)結(jié)果后,進(jìn)一步包括:將該響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作,將其發(fā)送至CPU。
26.如權(quán)利要求14至25任一所述的使用方法,其特征在于,第一SATA協(xié)議解析模塊、仲裁模塊、地址映射模塊、第二 SATA協(xié)議解析模塊以及PCIe硬核在FPGA上實(shí)現(xiàn)。
27.如權(quán)利要求14所述的使用方法,其特征在于,在物理層對SATA指令或響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換。
28.如權(quán)利要求14所述的使用方法,其特征在于,在鏈路層對SATA指令或響應(yīng)結(jié)果進(jìn)行加解擾操作。
29.如權(quán)利要求28所述的使用方法,其特征在于,在鏈路層對SATA指令進(jìn)行CRC校驗(yàn)。
30.如權(quán)利要求29所述的使用方法,其特征在于,在鏈路層對SATA指令的發(fā)送及接收進(jìn)行流控。
31.如權(quán)利要求14所述的使用方法,其特征在于, 在傳輸層上,接收到從鏈路層發(fā)來的幀; 檢查幀頭以及長度,若丟棄錯(cuò)誤的幀時(shí),告知鏈路層。
32.如權(quán)利要求31所述的使用方法,其特征在于, 在傳輸層上,接收到從網(wǎng)絡(luò)層發(fā)來的幀; 檢查幀頭以及長度,若丟棄錯(cuò)誤的幀時(shí),告知網(wǎng)絡(luò)層。
33.如權(quán)利要求31所述的使用方法,其特征在于, 在傳輸層上,接收到從網(wǎng)絡(luò)層發(fā)來的SATA指令; 將SATA指令按照指令中指示存儲的地址空間,映射到分配給該CPU的地址空間。
34.如權(quán)利要求33所述的使用方法,其特征在于, 在傳輸層上,接收到從鏈路層發(fā)來的響應(yīng)結(jié)果; 將響應(yīng)結(jié)果按照地址空間的標(biāo)識,映射到發(fā)出響應(yīng)結(jié)果的NandFlash、硬盤或內(nèi)存條對應(yīng)的CPU的地址空間。
35.如權(quán)利要求14所述的使用方法,其特征在于, 在網(wǎng)絡(luò)層上,對傳輸層接收到的SATA指令進(jìn)行標(biāo)識; 發(fā)送至鏈路仲裁模塊。
36.如權(quán)利要求35所述的使用方法,其特征在于,在網(wǎng)絡(luò)層上,接收到從鏈路仲裁模塊發(fā)來的響應(yīng)結(jié)果;發(fā)送至傳輸層。
【文檔編號】G06F12/02GK104133777SQ201410356575
【公開日】2014年11月5日 申請日期:2014年7月24日 優(yōu)先權(quán)日:2014年7月24日
【發(fā)明者】周雪, 楊曉君, 倪亞路 申請人:曙光信息產(chǎn)業(yè)(北京)有限公司