1.一種基于RapidIO總線的RAID存儲系統(tǒng),其特征在于,其包括Rapid IO CPU節(jié)點模塊、RapidIO存儲模塊、RapidIO交換網(wǎng)模塊,其中:
RapidIO CPU節(jié)點模塊,執(zhí)行RapidIO驅(qū)動、RapidIO存儲驅(qū)動、MEM系統(tǒng);
RapidIO交換網(wǎng)模塊,主要為由RapidIO交換芯片組成的交換網(wǎng);
RapidIO存儲模塊,由一塊FPGA芯片和n塊SATA硬盤組成的RAID陣列組成,由FPGA芯片連接RAID陣列,n位自然數(shù)。
2.根據(jù)權(quán)利要求1所述的基于RapidIO總線的RAID存儲系統(tǒng),其特征在于,所述FPGA芯片包括以下模塊:
RapidIO IP模塊,該模塊提供RapidIO總線支持;
RapidIO Target模塊,該模塊將RapidIO的Target請求變?yōu)長ocalBus總線,并返回Target響應(yīng);
RapidIO Initiator模塊,該模塊產(chǎn)生對遠端處理器節(jié)點內(nèi)存空間數(shù)據(jù)的讀寫訪問;
RapidIO CMD FIFO模塊,該模塊將Local Bus收到的讀寫硬盤的命令結(jié)構(gòu)體進行隊列存儲;
DMA_Ctrl模塊,該模塊從RapidIO CMD FIFO模塊中獲取命令結(jié)構(gòu)體,并完成硬盤數(shù)據(jù)的搬移工作,完成產(chǎn)生Doorbell中斷發(fā)往遠端處理器;
RAID CMD AsyFIFO模塊,該模塊緩存DMA的讀寫SATA命令,并作跨時鐘域處理;
RAID READ DATA AsyFIFO模塊,該模塊緩存DMA從RAID硬盤讀取的數(shù)據(jù),并作跨時鐘域處理;
RAID WRITE DATA AsyFIFO模塊,該模塊緩存DMA從遠端處理器節(jié)點讀取的數(shù)據(jù),并作跨時鐘域處理;
SDtoRD模塊,該模塊將三路三十二位的SATA硬盤返回的數(shù)據(jù),經(jīng)過校驗檢測,生成六十四位數(shù)據(jù)寫入RAID READ DATA AsyFIFO模塊;
RDtoSD模塊,該模塊將六十四位數(shù)據(jù)根據(jù)扇區(qū)地址,生成CRC校驗扇區(qū)數(shù)據(jù);
SATA模塊,該模塊完成SATA協(xié)議的控制,內(nèi)部FIFO用來緩沖SATA硬盤數(shù)據(jù)。
3.一種基于RapidIO總線的RAID存儲方法,其特征在于,其包括以下步驟:
步驟一,構(gòu)建命令結(jié)構(gòu)體;
步驟二,進行RAID存儲。
4.如權(quán)利要求3所述的基于RapidIO總線的RAID存儲方法,其特征在于,所述步驟一包括:低位地址、高位地址、扇區(qū)低位地址、扇區(qū)高位地址、扇區(qū)數(shù)量、讀寫模式、服務(wù)識別號,其中:
低位地址和高位地址組成Rapid IO地址,該地址指明RapidIO處理器存放或需要存放數(shù)據(jù)的基地址;
扇區(qū)低位地址和扇區(qū)高位地址組成RAID的扇區(qū)地址,該地址指明需要讀寫磁盤陣列扇區(qū)的基地址;
扇區(qū)數(shù)量表明本次傳輸需要讀寫磁盤陣列扇區(qū)的數(shù)量;
讀寫模式定義了本次操作是讀磁盤陣列還是寫磁盤陣列,讀寫完成后是否需要發(fā)送Doorbell給處理器;
服務(wù)識別號表明是服務(wù)哪個處理器的。
5.如權(quán)利要求3所述的基于RapidIO總線的RAID存儲方法,其特征在于,所述步驟二包括以下流程:RAID讀取數(shù)據(jù)流程、RAID寫取數(shù)據(jù)流程。
6.如權(quán)利要求5所述的基于RapidIO總線的RAID存儲方法,其特征在于,所述RAID讀取數(shù)據(jù)流程包括以下步驟:
步驟十一,處理器獲取一個命令結(jié)構(gòu)體,并根據(jù)需要讀取的扇區(qū)地址、扇區(qū)大小、自己的ID、需要完成終端、初始化該結(jié)構(gòu)體中sectorLowAddr、sectorHighAddr、sectorNumber、servID、和rwMode;
步驟十二,獲取需要存放數(shù)據(jù)的地址,并根據(jù)該地址值對結(jié)構(gòu)體rioLowAddr和rioHighAddr賦值;
步驟十三,使用Nwrite或Nwrite_R事務(wù)將結(jié)構(gòu)體中的數(shù)據(jù)寫入存儲結(jié)點命令FIFO地址中,大小為32B;
步驟十四,DMA_Ctrl模塊收到結(jié)構(gòu)體,根據(jù)塊地址及塊大小向磁盤陣列發(fā)起讀請求;
步驟十五,磁盤陣列返回數(shù)據(jù)經(jīng)SDTORD模塊校驗檢測,返回給DMA_Ctrl模塊;
步驟十六,DMA_Ctrl模塊發(fā)起Nwrite寫事務(wù),將數(shù)據(jù)寫入遠端處理器的內(nèi)存中;
步驟十七,DMA_Ctrl模塊數(shù)據(jù)傳輸完成后,向遠端處理器發(fā)起Doorbell中斷請求;
步驟十八,處理器獲取到中斷后,即認為內(nèi)存中數(shù)據(jù)即為存儲中數(shù)據(jù),激活掛起任務(wù),執(zhí)行相應(yīng)應(yīng)用。
7.如權(quán)利要求5所述的基于RapidIO總線的RAID存儲方法,其特征在于,所述RAID寫取數(shù)據(jù)流程包括以下步驟:
步驟二十一,處理器獲取一個命令結(jié)構(gòu)體,并根據(jù)需要寫入的數(shù)據(jù)內(nèi)存基地址、需要讀取的扇區(qū)地址、扇區(qū)大小、自己的ID、需要完成終端、初始化該結(jié)構(gòu)體中rioLowAddr、rioHighAddr、sectorLowAddr、sectorHighAddr、sectorNumber、servID、和rwMode;
步驟二十二,使用Nwrite或Nwrite_R事務(wù)將結(jié)構(gòu)體中的數(shù)據(jù)寫入存儲結(jié)點命令FIFO地址中,大小為32B;
步驟二十三,DMA_Ctrl模塊收到結(jié)構(gòu)體,根據(jù)RapidIO地址及塊大小向處理器發(fā)起Nread讀請求;
步驟二十四,處理器節(jié)點返回相應(yīng)內(nèi)存數(shù)據(jù);
步驟二十五,DMA_Ctrl模塊收到部分數(shù)據(jù)后,向磁盤陣列發(fā)起寫請求;
步驟二十六,SDtoRD模塊產(chǎn)生CRC校驗盤數(shù)據(jù),經(jīng)SATA寫入相應(yīng)硬盤;
步驟二十七,DMA_Ctrl模塊數(shù)據(jù)傳輸完成后,向遠端處理器發(fā)起Doorbell中斷請求;
步驟二十八,處理器獲取到中斷后,即可認為內(nèi)存中數(shù)據(jù)被處理,激活掛起任務(wù),釋放相應(yīng)內(nèi)存。