欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種用于SSD的RAID編解碼系統(tǒng)及方法與流程

文檔序號(hào):12462664閱讀:715來源:國(guó)知局
一種用于SSD的RAID編解碼系統(tǒng)及方法與流程

本發(fā)明特別涉及一種用于SSD的RAID編解碼系統(tǒng)及方法。



背景技術(shù):

SSD(Solid State Drive, 固態(tài)硬盤)是一種以固態(tài)電子存儲(chǔ)器件作為存儲(chǔ)介質(zhì),通過內(nèi)嵌主控芯片實(shí)現(xiàn)數(shù)據(jù)訪問和存儲(chǔ)介質(zhì)管理的存儲(chǔ)設(shè)備。SSD具有響應(yīng)速度快、功耗低、噪音小等特點(diǎn),被廣泛應(yīng)用于國(guó)防、金融、消費(fèi)電子等領(lǐng)域,具有替代傳統(tǒng)機(jī)械硬盤的局勢(shì)。

NAND Flash作為當(dāng)前主流SSD產(chǎn)品采用的存儲(chǔ)介質(zhì),由于受到器件漂移效應(yīng)、用戶讀寫操作和惡劣工作環(huán)境等因素影響出現(xiàn)比特反轉(zhuǎn)現(xiàn)象,導(dǎo)致用戶數(shù)據(jù)丟失,影響SSD產(chǎn)品數(shù)據(jù)可靠性。

為了解決SSD中NAND Flash中產(chǎn)生的數(shù)據(jù)丟失問題,現(xiàn)有技術(shù)中引入了用于SSD的RAID(Redundant Arrays of Independent Disks, 獨(dú)立磁盤冗余陣列)編解碼系統(tǒng),包括RAID編解碼模塊,其一方面可以將片外緩存中的待編碼數(shù)據(jù)進(jìn)行編碼計(jì)算,再將編碼計(jì)算結(jié)果送至片內(nèi)緩存存儲(chǔ)。更重要的一點(diǎn)是,當(dāng)出現(xiàn)系統(tǒng)異?;虼疟P暴露等原因引起的錯(cuò)誤數(shù)據(jù)時(shí),可以通過RAID編解碼模塊對(duì)錯(cuò)誤數(shù)據(jù)進(jìn)行解碼,將錯(cuò)誤數(shù)據(jù)恢復(fù)成正確數(shù)據(jù)送至片內(nèi)緩存或片外緩存。

現(xiàn)有SSD中的RAID編解碼系統(tǒng)具有以下缺點(diǎn):編碼過程不能被中斷,因而當(dāng)在RAID編碼過程中出現(xiàn)更高優(yōu)先級(jí)別的編碼需求或在用戶取數(shù)據(jù)出現(xiàn)錯(cuò)誤需要立刻恢復(fù)時(shí),需要等待當(dāng)前編碼過程執(zhí)行完成,因而重要數(shù)據(jù)無法優(yōu)先編碼、錯(cuò)誤數(shù)據(jù)無法有效及時(shí)恢復(fù),極大程度影響系統(tǒng)效率。



技術(shù)實(shí)現(xiàn)要素:

現(xiàn)有用于SSD的RAID編解碼系統(tǒng)無法優(yōu)先編碼重要數(shù)據(jù)、無法有效及時(shí)恢復(fù)錯(cuò)誤數(shù)據(jù),系統(tǒng)效率較低。本發(fā)明的目的在于,針對(duì)上述現(xiàn)有技術(shù)的不足,提供一種改進(jìn)了的用于SSD的RAID編解碼系統(tǒng)及方法,能夠在SSD中實(shí)現(xiàn)RAID編碼的中斷和恢復(fù),能夠在任意RAID編碼過程中暫停并且釋放硬件資源處理更高優(yōu)先級(jí)別的編碼需求,在任意RAID解碼請(qǐng)求時(shí)中斷編碼操作,優(yōu)先解碼重要數(shù)據(jù),有效及時(shí)恢復(fù)錯(cuò)誤數(shù)據(jù),提高數(shù)據(jù)可靠性和系統(tǒng)響應(yīng)速度。

為解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案是:

一種用于SSD的RAID編解碼系統(tǒng),包括RAID編解碼模塊,其結(jié)構(gòu)特點(diǎn)是還包括第一DMA(Direct Memory Access,直接內(nèi)存存?。┠K和第二DMA模塊,RAID編解碼模塊通過第一DMA模塊與片外緩存相連,RAID編解碼模塊通過第二DMA模塊與片內(nèi)緩存或片外緩存相連;其中,第一DMA模塊用于向RAID編解碼模塊發(fā)送命令,所述命令包括中斷命令和恢復(fù)命令;在RAID編解碼模塊響應(yīng)中斷命令時(shí)將RAID編解碼模塊中正在處理的編碼命令的中間編碼結(jié)果搬移至片外緩存,在RAID編解碼模塊響應(yīng)恢復(fù)命令時(shí)將片外緩存中的中間編碼結(jié)果搬移至RAID編解碼模塊;第二DMA模塊用于向RAID編解碼模塊發(fā)送命令,包括編碼命令和編碼輸出命令;并在RAID編解碼模塊響應(yīng)編碼命令時(shí)將待編碼數(shù)據(jù)從片外緩存搬移到RAID編解碼模塊中,在RAID編解碼模塊響應(yīng)編碼輸出命令時(shí)將編碼結(jié)果從RAID編解碼模塊搬移到片內(nèi)緩存或片外緩存。

借由上述結(jié)構(gòu),當(dāng)在RAID編碼過程中出現(xiàn)更高優(yōu)先級(jí)別的編碼需求時(shí),可以中斷當(dāng)前編碼過程,將高優(yōu)先級(jí)別的編碼需求優(yōu)先編碼,最后再繼續(xù)編碼執(zhí)行中斷了的編碼過程,優(yōu)先編碼重要數(shù)據(jù),數(shù)據(jù)可靠性高,耗時(shí)短,效率高。

進(jìn)一步地,還包括第三DMA模塊,RAID編解碼模塊通過第三DMA模塊分別與片外緩存和片內(nèi)緩存相連;其中,第三DMA模塊用于向RAID編解碼模塊發(fā)送解碼命令,并將SSD中的待解碼數(shù)據(jù)送至RAID編解碼模塊,將RAID編解碼模塊中的解碼結(jié)果搬移至片外緩存或片內(nèi)緩存。

借由上述結(jié)構(gòu),當(dāng)在RAID編碼過程中出現(xiàn)數(shù)據(jù)錯(cuò)誤需要立刻恢復(fù)時(shí),可以中斷當(dāng)前編碼過程,立即執(zhí)行解碼操作,最后再繼續(xù)編碼執(zhí)行中斷了的編碼過程,有效及時(shí)恢復(fù)地錯(cuò)誤數(shù)據(jù),數(shù)據(jù)可靠性高,耗時(shí)短,效率高。

進(jìn)一步地,還包括仲裁單元,所述RAID編解碼模塊通過仲裁單元分別與第一DMA模塊和第二DMA模塊相連;其中,第二DMA模塊還用于向RAID編解碼模塊發(fā)送命令,所述命令包括中斷命令或恢復(fù)命令;在RAID編解碼模塊響應(yīng)中斷命令時(shí)將RAID編解碼模塊中的中間編碼結(jié)果搬移至片外緩存,在RAID編解碼模塊響應(yīng)恢復(fù)命令時(shí)將片外緩存中的中間編碼結(jié)果搬移至RAID編解碼模塊;仲裁單元用于選擇由第一DMA模塊或第二DMA模塊向RAID編解碼模塊發(fā)送命令;當(dāng)仲裁單元選擇由第一DMA模塊向RAID編解碼模塊發(fā)送命令時(shí),由第一DMA模塊將RAID編解碼模塊中的中間編碼結(jié)果搬移至片外緩存,或者由第一DMA模塊將片外緩存中的中間編碼結(jié)果搬移至RAID編解碼模塊;當(dāng)仲裁單元選擇由第二DMA模塊向RAID編解碼模塊發(fā)送命令時(shí),由第二DMA模塊將RAID編解碼模塊中的中間編碼結(jié)果搬移至片外緩存,或者由第二DMA模塊將片外緩存中的中間編碼結(jié)果搬移至RAID編解碼模塊。

仲裁單元可以選擇由第一DMA模塊或第二DMA模塊發(fā)送命令或搬移數(shù)據(jù),第二DMA模塊同樣可以發(fā)起中斷和恢復(fù)命令,數(shù)據(jù)搬移方向與第一DMA模塊相同,增加了系統(tǒng)的靈活性。

進(jìn)一步地,所述第二DMA模塊還用于將數(shù)據(jù)從片外緩存搬移到片內(nèi)緩存中。

第二DMA模塊能夠根據(jù)需要實(shí)現(xiàn)RAID旁路功能,即用戶數(shù)據(jù)不需要進(jìn)行RAID編碼時(shí),可以旁路RAID編解碼模塊,直接將數(shù)據(jù)從片外緩存搬移到片內(nèi)緩存中。

基于同一個(gè)發(fā)明構(gòu)思,本發(fā)明還提供了一種用于SSD的RAID編解碼方法,采用所述的RAID編解碼系統(tǒng),包括以下方法:若第二DMA模塊中待編碼數(shù)據(jù)的優(yōu)先級(jí)別高于RAID編解碼模塊中正在編碼的數(shù)據(jù),通過第一DMA模塊向RAID編解碼模塊發(fā)送中斷命令,RAID編解碼模塊響應(yīng)中斷命令后,由第一DMA模塊將RAID編解碼模塊中的中間編碼結(jié)果搬移至片外緩存;在RAID編解碼模塊將第二DMA模塊中高優(yōu)先級(jí)別的待編碼數(shù)據(jù)編碼完成后,首先通過第二DMA模塊將RAID編解碼模塊中的編碼結(jié)果搬移至片內(nèi)緩存或片外緩存,再通過第一DMA模塊向RAID編解碼模塊發(fā)送恢復(fù)命令,RAID編解碼模塊響應(yīng)恢復(fù)命令后,由第一DMA模塊將片外緩存中的中間編碼結(jié)果搬移至RAID編解碼模塊;最后RAID編解碼模塊繼續(xù)編碼中間編碼結(jié)果。

進(jìn)一步地,還包括以下方法:當(dāng)?shù)谌鼶MA模塊向RAID編解碼模塊發(fā)送解碼命令時(shí),若此時(shí)RAID編解碼模塊正在執(zhí)行編碼操作,則通過第一DMA模塊向RAID編解碼模塊發(fā)送中斷命令,RAID編解碼模塊響應(yīng)中斷命令后,由第一DMA模塊將RAID編解碼模塊中的中間編碼結(jié)果搬移至片外緩存,最后RAID編解碼模塊對(duì)第三DMA模塊中的待解碼數(shù)據(jù)進(jìn)行解碼操作;在RAID編解碼模塊將第三DMA模塊中的待解碼數(shù)據(jù)解碼完成后,首先通過第三DMA模塊將RAID編解碼模塊中的編碼結(jié)果搬移至片外緩存或片內(nèi)緩存;再通過第一DMA模塊向RAID編解碼模塊發(fā)送恢復(fù)命令,RAID編解碼模塊響應(yīng)恢復(fù)命令后,由第一DMA模塊將片外緩存中的中間編碼結(jié)果搬移至RAID編解碼模塊;最后RAID編解碼模塊繼續(xù)編碼中間編碼結(jié)果。

進(jìn)一步地,還包括利用仲裁單元選擇由第一DMA模塊或第二DMA模塊向RAID編解碼模塊發(fā)送命令;當(dāng)仲裁單元選擇由第一DMA模塊向RAID編解碼模塊發(fā)送命令時(shí),由第一DMA模塊將RAID編解碼模塊中的中間編碼結(jié)果搬移至片外緩存,或者由第一DMA模塊將片外緩存中的中間編碼結(jié)果搬移至RAID編解碼模塊;當(dāng)仲裁單元選擇由第二DMA模塊向RAID編解碼模塊發(fā)送命令時(shí),由第二DMA模塊將RAID編解碼模塊中的中間編碼結(jié)果搬移至片外緩存,或者由第二DMA模塊將片外緩存中的中間編碼結(jié)果搬移至RAID編解碼模塊。

與現(xiàn)有技術(shù)相比,本發(fā)明能夠在SSD中實(shí)現(xiàn)RAID編碼的中斷和恢復(fù),能夠在任意RAID編碼過程中暫停并且釋放硬件資源處理更高優(yōu)先級(jí)別的編碼需求,在任意RAID解碼請(qǐng)求時(shí)中斷編碼操作,優(yōu)先恢復(fù)錯(cuò)誤數(shù)據(jù),數(shù)據(jù)可靠性高,耗時(shí)短,效率高。

附圖說明

圖1為本發(fā)明RAID編解碼系統(tǒng)的結(jié)構(gòu)示意圖。

圖2為圖1中RAID編解碼模塊的狀態(tài)機(jī)描述圖。

圖3為本發(fā)明RAID編解碼方法流程圖。

其中,1為RAID編解碼模塊,2為第一DMA模塊,3為第二DMA模塊,4為片外緩存,5為片內(nèi)緩存,6為第三DMA模塊,7為仲裁單元,M為第二DMA模塊暫??刂莆?。

具體實(shí)施方式

如圖1所示,本發(fā)明RAID編解碼系統(tǒng)的一實(shí)施例包括RAID編解碼模塊1、第一DMA模塊2和第二DMA模塊3,RAID編解碼模塊1通過第一DMA模塊2與片外緩存4相連,RAID編解碼模塊1通過第二DMA模塊3與片外緩存4相連,RAID編解碼模塊1通過第二DMA模塊3與片內(nèi)緩存5相連;其中,第一DMA模塊2用于向RAID編解碼模塊1發(fā)送命令,所述命令包括中斷命令或恢復(fù)命令;在RAID編解碼模塊1響應(yīng)中斷命令時(shí)將RAID編解碼模塊1中的中間編碼結(jié)果搬移至片外緩存4,在RAID編解碼模塊1響應(yīng)恢復(fù)命令時(shí)將片外緩存4中的中間編碼結(jié)果搬移至RAID編解碼模塊1;第二DMA模塊3用于向RAID編解碼模塊1發(fā)送編碼命令,并將待編碼數(shù)據(jù)從片外緩存4搬移至RAID編解碼模塊1,以及將RAID編解碼模塊1中的編碼結(jié)果搬移至片內(nèi)緩存5或片外緩存4。所述第二DMA模塊3還用于將數(shù)據(jù)從片外緩存4搬移到片內(nèi)緩存5中。

RAID編解碼系統(tǒng)還包括第三DMA模塊6,RAID編解碼模塊1通過第三DMA模塊6分別與片外緩存4和片內(nèi)緩存5相連;其中,第三DMA模塊6用于向RAID編解碼模塊1發(fā)送解碼命令,并將SSD中的待解碼數(shù)據(jù)送至RAID編解碼模塊1,將RAID編解碼模塊1中的解碼結(jié)果搬移至片外緩存4或片內(nèi)緩存5。

RAID編解碼系統(tǒng)還包括仲裁單元7,所述RAID編解碼模塊1通過仲裁單元7分別與第一DMA模塊2和第二DMA模塊3相連;其中,第二DMA模塊3還用于向RAID編解碼模塊1發(fā)送命令,所述命令包括中斷命令或恢復(fù)命令;在RAID編解碼模塊1響應(yīng)中斷命令時(shí)將RAID編解碼模塊1中的中間編碼結(jié)果搬移至片外緩存4,在RAID編解碼模塊1響應(yīng)恢復(fù)命令時(shí)將片外緩存4中的中間編碼結(jié)果搬移至RAID編解碼模塊1;仲裁單元7用于選擇由第一DMA模塊2或第二DMA模塊3向RAID編解碼模塊1發(fā)送命令;當(dāng)仲裁單元7選擇由第一DMA模塊2向RAID編解碼模塊1發(fā)送命令時(shí),由第一DMA模塊2將RAID編解碼模塊1中的中間編碼結(jié)果搬移至片外緩存4,或者由第一DMA模塊2將片外緩存4中的中間編碼結(jié)果搬移至RAID編解碼模塊1;當(dāng)仲裁單元7選擇由第二DMA模塊3向RAID編解碼模塊1發(fā)送命令時(shí),由第二DMA模塊3將RAID編解碼模塊1中的中間編碼結(jié)果搬移至片外緩存4,或者由第二DMA模塊3 將片外緩存4中的中間編碼結(jié)果搬移至RAID編解碼模塊1。具體地,本發(fā)明RAID編解碼系統(tǒng)以RAID編解碼模塊1(RAID Codec)為核心,輔以三個(gè)DMA模塊(第一DMA模塊2、第二DMA模塊3和第三DMA模塊6)和一塊片外緩存4(DRAM或Flash等各種易失/非易失存儲(chǔ)器件)一塊片內(nèi)緩存5(SRAM)配合實(shí)現(xiàn)RAID編碼(Encode)、解碼(Decode)、中斷(Terminate)和恢復(fù)(Resume)等操作。

第一DMA模塊2用于將因高優(yōu)先級(jí)編碼或解碼需求而中斷的當(dāng)前RAID編碼命令中間編碼結(jié)果從RAID編解碼模塊1搬移到片外緩存4,以及在恢復(fù)操作時(shí)將中間編碼結(jié)結(jié)果從片外緩存4搬移到RAID編解碼模塊1中。

第二DMA模塊3完成三個(gè)任務(wù),一個(gè)是將待編碼數(shù)據(jù)從片外緩存4搬移到RAID編解碼模塊1中執(zhí)行編碼計(jì)算,以及將計(jì)算結(jié)果從RAID編解碼模塊1搬移到片內(nèi)緩存5中;另一個(gè)與第一DMA模塊2類似,在執(zhí)行中斷操作時(shí)將中間編碼結(jié)果從RAID編解碼模塊1搬移到片外緩存4,以及在執(zhí)行恢復(fù)操作時(shí)將中間編碼結(jié)果從片外緩存4搬移到RAID編解碼模塊1中;第三個(gè)是RAID旁路,即將數(shù)據(jù)不經(jīng)過RAID編解碼而直接從片外緩存4搬移到片內(nèi)緩存5中。

第三DMA模塊6用于將待解碼數(shù)據(jù)(錯(cuò)誤數(shù)據(jù))搬移到RAID編解碼模塊1中進(jìn)行解碼恢復(fù),并將解碼恢復(fù)結(jié)果搬移到片內(nèi)緩存5或片外緩存4中。

RAID編解碼模塊1支持五種命令類型:“編碼命令”、“解碼命令”、“中斷命令”、“恢復(fù)命令”和“編碼輸出命令”。相應(yīng)的RAID編解碼模塊1狀態(tài)機(jī)包含“初始狀態(tài)”、“編碼狀態(tài)”、“解碼狀態(tài)”、“中斷狀態(tài)”、“恢復(fù)狀態(tài)”和“編碼完成狀態(tài)”,狀態(tài)跳轉(zhuǎn)關(guān)系如圖2所示:

下面對(duì)RAID編解碼模塊1狀態(tài)和跳轉(zhuǎn)條件進(jìn)行描述:

初始狀態(tài):

系統(tǒng)上電復(fù)位后RAID編解碼模塊1處于初始狀態(tài),內(nèi)部中間變量清零。當(dāng)發(fā)起編碼/解碼命令時(shí)進(jìn)入編碼/解碼狀態(tài),此時(shí)需要設(shè)置RAID編解碼模塊1為編碼/解碼模式,設(shè)置“組/頁”大小和糾錯(cuò)能力。另外,執(zhí)行恢復(fù)命令之前也需要使RAID編解碼模塊1進(jìn)入初始狀態(tài),清空存放中間變量的內(nèi)部寄存器,并設(shè)置“組/頁”大小、中斷時(shí)刻下一個(gè)頁編號(hào)。

編碼狀態(tài):

編碼狀態(tài)時(shí),如果當(dāng)前編碼命令完整執(zhí)行,RAID編解碼模塊1進(jìn)入編碼完成狀態(tài);如果當(dāng)前編碼命令被中斷,通過發(fā)送中斷命令使RAID編解碼模塊1進(jìn)入中斷狀態(tài)。

解碼狀態(tài):

解碼狀態(tài)時(shí),由于解碼命令有完整性約束,因此無法中斷。完成解碼命令后RAID編解碼模塊1輸出解碼結(jié)果,清空中間變量,并進(jìn)入初始狀態(tài)。

中斷狀態(tài):

中斷狀態(tài)時(shí),如果需要執(zhí)行后續(xù)高優(yōu)先級(jí)的編碼命令或解碼命令或恢復(fù)前一個(gè)編碼命令時(shí),RAID編解碼模塊1都需要先進(jìn)入初始狀態(tài),清空中間變量。

恢復(fù)狀態(tài):

恢復(fù)狀態(tài)時(shí),如果出現(xiàn)新的更高優(yōu)先級(jí)的編碼需求或解碼需求,發(fā)送中斷命令并進(jìn)入中斷狀態(tài),否則返回編碼狀態(tài),繼續(xù)執(zhí)行此前被中斷的編碼命令。

編碼完成狀態(tài):

當(dāng)完成編碼命令后,RAID編解碼模塊1進(jìn)入編碼完成狀態(tài)。此時(shí)輸出編碼結(jié)果,清空中間變量。完成上述行為后RAID編解碼模塊1進(jìn)入初始狀態(tài),準(zhǔn)備接收新的RAID命令。

本發(fā)明還提供了一種用于SSD的RAID編解碼方法,采用所述的RAID編解碼系統(tǒng),包括以下方法:若第二DMA模塊3中待編碼數(shù)據(jù)的優(yōu)先級(jí)別高于RAID編解碼模塊1中正在編碼的數(shù)據(jù),通過第一DMA模塊2向RAID編解碼模塊1發(fā)送中斷命令,RAID編解碼模塊1響應(yīng)中斷命令后,由第一DMA模塊2將RAID編解碼模塊1中的中間編碼結(jié)果搬移至片外緩存4;在RAID編解碼模塊1將第二DMA模塊3中高優(yōu)先級(jí)別的待編碼數(shù)據(jù)編碼完成后,首先通過第二DMA模塊3將RAID編解碼模塊1中的編碼結(jié)果搬移至片內(nèi)緩存5或片外緩存4,再通過第一DMA模塊2向RAID編解碼模塊1發(fā)送恢復(fù)命令,RAID編解碼模塊1響應(yīng)恢復(fù)命令后,由第一DMA模塊2將片外緩存4中的中間編碼結(jié)果搬移至RAID編解碼模塊1,繼續(xù)進(jìn)行剩下的編碼工作;當(dāng)RAID編解碼模塊1完成被中斷命令剩余的編碼工作后,通過第二DMA模塊3將編碼結(jié)果搬移到片外緩存4或片內(nèi)緩存5中。

RAID編解碼方法還包括:當(dāng)?shù)谌鼶MA模塊6向RAID編解碼模塊1發(fā)送解碼命令時(shí),若此時(shí)RAID編解碼模塊1正在執(zhí)行編碼操作,則通過第一DMA模塊2向RAID編解碼模塊1發(fā)送中斷命令,RAID編解碼模塊1響應(yīng)中斷命令后,由第一DMA模塊2將RAID編解碼模塊1中的中間編碼結(jié)果搬移至片外緩存4,最后RAID編解碼模塊1對(duì)第三DMA模塊6中的待解碼數(shù)據(jù)進(jìn)行解碼操作;在RAID編解碼模塊1將第三DMA模塊6中的待解碼數(shù)據(jù)解碼完成后,首先通過第三DMA模塊6將RAID編解碼模塊1中的編碼結(jié)果搬移至片外緩存4或片內(nèi)緩存5;再通過第一DMA模塊2向RAID編解碼模塊1發(fā)送恢復(fù)命令,RAID編解碼模塊1響應(yīng)恢復(fù)命令后,由第一DMA模塊2將片外緩存4中的中間編碼結(jié)果搬移至RAID編解碼模塊1;最后RAID編解碼模塊1繼續(xù)編碼中間編碼結(jié)果,并通過第二DMA模塊3將編碼結(jié)果搬移到片外緩存4或片內(nèi)緩存5中。

RAID編解碼方法還包括利用仲裁單元7選擇由第一DMA模塊2或第二DMA模塊3向RAID編解碼模塊1發(fā)送命令;當(dāng)仲裁單元7選擇由第一DMA模塊2向RAID編解碼模塊1發(fā)送命令時(shí),由第一DMA模塊2將RAID編解碼模塊1中的中間編碼結(jié)果搬移至片外緩存4,或者由第一DMA模塊2將片外緩存4中的中間編碼結(jié)果搬移至RAID編解碼模塊1;當(dāng)仲裁單元7選擇由第二DMA模塊3向RAID編解碼模塊1發(fā)送命令時(shí),由第二DMA模塊3將RAID編解碼模塊1中的中間編碼結(jié)果搬移至片外緩存4,或者由第二DMA模塊3將片外緩存4中的中間編碼結(jié)果搬移至RAID編解碼模塊1。

RAID編解碼模塊1在執(zhí)行編碼命令過程中,會(huì)告知第一DMA模塊2和第二DMA模塊3每一個(gè)允許打斷當(dāng)前正在執(zhí)行編碼命令的時(shí)間點(diǎn)。軟件能夠控制第一DMA模塊2和第二DMA模塊3選擇在哪個(gè)時(shí)間點(diǎn)打斷當(dāng)前正在執(zhí)行的編碼命令。

如圖3所示,假設(shè)當(dāng)前RAID編解碼模塊1處于待機(jī)狀態(tài),結(jié)合圖1闡述中斷和恢復(fù)流程:

1.當(dāng)?shù)诙﨑MA模塊3發(fā)起編碼命令,由于RAID編解碼模塊1此時(shí)并無命令執(zhí)行,所以計(jì)算編碼結(jié)果。由于沒有編碼命令被中斷,所以當(dāng)后面沒有新的編碼命令到來時(shí),RAID編解碼模塊1輸出編碼結(jié)果并重新處于待機(jī)狀態(tài)。此過程中第二DMA模塊3從片外緩存4搬移數(shù)據(jù)進(jìn)入RAID編解碼模塊1進(jìn)行編碼計(jì)算,并將計(jì)算結(jié)果搬移到片外緩存4或片內(nèi)緩存5中,供后續(xù)模塊使用。

2.如果RAID編解碼模塊1正在執(zhí)行編碼命令,第二DMA模塊3又有新的更高優(yōu)先級(jí)的編碼需求或第三DMA模塊6有解碼需求,仲裁單元7通過第二DMA模塊暫??刂莆籑選擇由第一DMA模塊2或第二DMA模塊3發(fā)起中斷命令。如果配置第一DMA模塊2發(fā)起中斷請(qǐng)求,仲裁單元7首選控制暫停第二DMA模塊3的運(yùn)行,并由第一DMA模塊2將已經(jīng)完成計(jì)算的中間編碼結(jié)果從RAID編解碼模塊1搬移到片外緩存4;如果配置第二DMA模塊3發(fā)起中斷請(qǐng)求,第二DMA模塊3會(huì)中斷未完成的命令發(fā)送,并將已經(jīng)完成計(jì)算的中間編碼結(jié)果從RAID編解碼模塊1搬移到片外緩存4。

3.如果發(fā)起中斷命令的原因是執(zhí)行更高優(yōu)先級(jí)的編碼命令,RAID編解碼模塊1會(huì)完整的執(zhí)行該命令。此時(shí)第二DMA模塊3從片外緩存4搬移新的待編碼數(shù)據(jù)進(jìn)入RAID編解碼模塊1進(jìn)行編碼計(jì)算,并將計(jì)算結(jié)果搬移到片外緩存4或片內(nèi)緩存5供后續(xù)模塊使用。

如果發(fā)起中斷命令的原因是執(zhí)行解碼命令,RAID編解碼模塊1會(huì)完整的執(zhí)行該命令。此時(shí)第三DMA模塊6將待解碼數(shù)據(jù)搬移到RAID編解碼模塊1進(jìn)行數(shù)據(jù)解碼恢復(fù),并將恢復(fù)后數(shù)據(jù)送入片內(nèi)緩存5或片外緩存4中。

4.當(dāng)執(zhí)行完更高優(yōu)先級(jí)的編碼命令或解碼命令后,查詢是否有命令被中斷。如果有命令被中斷,仲裁單元7通過第二DMA模塊暫??刂莆籑選擇由第一DMA模塊2或第二DMA模塊3進(jìn)行現(xiàn)場(chǎng)恢復(fù),并繼續(xù)搬移片外緩存4中的中間編碼數(shù)據(jù)進(jìn)入RAID編解碼模塊1,進(jìn)行編碼計(jì)算并輸出計(jì)算結(jié)果。否則,進(jìn)入待機(jī)狀態(tài)等待新的RAID命令請(qǐng)求。

如果仲裁單元7控制第一DMA模塊2執(zhí)行現(xiàn)場(chǎng)恢復(fù),第一DMA模塊2會(huì)向RAID編解碼模塊1發(fā)起恢復(fù)命令,并從片外緩存4將中間編碼結(jié)果搬移到RAID編解碼模塊1中。然后由仲裁單元7激活第二DMA模塊3,并控制第二DMA模塊3將剩余未編碼數(shù)據(jù)從片外緩存4搬移到RAID編解碼模塊1中進(jìn)行編碼計(jì)算,并輸出完整編碼結(jié)果到片外緩存4或片內(nèi)緩存5。

如果仲裁單元7控制第二DMA模塊3執(zhí)行現(xiàn)場(chǎng)恢復(fù),第二DMA模塊3會(huì)向RAID編解碼模塊1發(fā)起恢復(fù)命令,并從片外緩存4將中間編碼結(jié)果搬移到RAID編解碼模塊1中。然后由軟件控制第二DMA模塊3將剩余未編碼數(shù)據(jù)從片外緩存4搬移到RAID編解碼模塊1中進(jìn)行編碼計(jì)算,并輸出完整的編碼結(jié)果到片外緩存4或片內(nèi)緩存5。

綜上可見,本發(fā)明的特點(diǎn)在于:

(1)允許軟件控制不同的DMA模塊發(fā)起中斷和恢復(fù),硬件自動(dòng)執(zhí)行數(shù)據(jù)搬移,提高性能和系統(tǒng)靈活性。

(2)SSD中RAID命令的中斷和恢復(fù)觸發(fā)因素不局限于異常狀況,如果RAID編碼過程中需要相同的硬件資源處理更高優(yōu)先級(jí)事物,允許隨時(shí)中斷當(dāng)前RAID編碼操作。

(3)支持使用SSD主控芯片內(nèi)部存儲(chǔ)單元(SRAM)和片外存儲(chǔ)器件(例如DRAM/FLASH等易失和非易失性存儲(chǔ)器件)存儲(chǔ)RAID中斷涉及的中間數(shù)據(jù)(包括已經(jīng)參與編碼的原始數(shù)據(jù)和該部分?jǐn)?shù)據(jù)計(jì)算出來的中間結(jié)果,以及這部分?jǐn)?shù)據(jù)在條帶中的索引信息等);具體緩存方式軟件可控制。

(4)數(shù)據(jù)恢復(fù)過程中,不需要重新從頭開始輸入數(shù)據(jù)計(jì)算校驗(yàn)碼,只需要將中間結(jié)果通過硬件手段快速搬移到RAID編解碼模塊1中,節(jié)省重新計(jì)算的時(shí)間開銷,提高總線效率。

(5)支持軟硬件協(xié)同處理RAID編碼中斷的多重嵌套,例如當(dāng)前RAID編碼數(shù)據(jù)尚未準(zhǔn)備好,可以中斷當(dāng)前編碼命令,并執(zhí)行新的編碼命令,提高總線利用率。

(6)中斷和恢復(fù)過程中完成中間數(shù)據(jù)緩存后,軟件控制或硬件自動(dòng)完成RAID編解碼模塊1中中間數(shù)據(jù)的清除。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
陆丰市| 襄樊市| 兰西县| 静安区| 石嘴山市| 伊川县| 贵定县| 清徐县| 长泰县| 嘉善县| 温泉县| 潢川县| 吉木乃县| 阳朔县| 南投市| 象州县| 柘城县| 老河口市| 漠河县| 兴义市| 永安市| 华池县| 芷江| 威远县| 江口县| 营山县| 客服| 简阳市| 黄冈市| 左权县| 本溪| 永年县| 柳江县| 夹江县| 赣州市| 枝江市| 孝义市| 舒城县| 汽车| 来凤县| 米脂县|