本發(fā)明關(guān)連于一種快閃存儲器裝置,特別是一種數(shù)據(jù)寫入工作調(diào)度方法以及使用該方法的裝置。
背景技術(shù):
快閃存儲器裝置通常分為nor快閃裝置與nand快閃裝置。nor快閃裝置為隨機(jī)存取裝置,而可于地址腳位上提供任何的地址,用以存取nor快閃裝置的主裝置(host),并及時地由nor快閃裝置的數(shù)據(jù)腳位上獲得儲存于該地址上的數(shù)據(jù)。相反地,nand快閃裝置并非隨機(jī)存取,而是序列存取。nand快閃裝置無法像nor快閃裝置一樣,可以存取任何隨機(jī)地址,主裝置反而需要寫入序列的字節(jié)(bytes)的值到nand快閃裝置中,用以定義請求命令(command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的地址。地址可指向一個頁面(在快閃存儲器中的一個寫入作業(yè)的最小數(shù)據(jù)塊)或一個區(qū)塊(在快閃存儲器中的一個抹除作業(yè)的最小數(shù)據(jù)塊)。實際上,nand快閃裝置通常從存儲器單元(memorycells)上讀取或?qū)懭胪暾臄?shù)頁數(shù)據(jù)。然而,于寫入數(shù)據(jù)的期間,處理單元常常需要等待其他元件的執(zhí)行結(jié)果,耗費(fèi)大量的時間。因此,需要一種數(shù)據(jù)寫入工作調(diào)度方法以及使用該方法的裝置,用以減少處理單元的等待時間。
技術(shù)實現(xiàn)要素:
本發(fā)明的實施例提出一種數(shù)據(jù)寫入工作調(diào)度方法,由處理單元執(zhí)行,包含下列步驟。于處理單元驅(qū)動引擎執(zhí)行第i個批次的工作后并等待執(zhí)行結(jié)果的期間,執(zhí)行第i+1個批次的至少一個工作。
本發(fā)明的實施例提出一種數(shù)據(jù)寫入工作調(diào)度裝置,至少包含引擎以及處理單元。處理單元耦接于引擎,于驅(qū)動引擎執(zhí)行第i個批次的工作后并等待執(zhí)行結(jié)果的期間,執(zhí)行第i+1個批次的至少一個工作。
附圖說明
為讓本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,以下結(jié)合附圖對本發(fā)明的具體實施方式作詳細(xì)說明,其中:
圖1是依據(jù)本發(fā)明實施例的快閃存儲器的系統(tǒng)架構(gòu)示意圖。
圖2是依據(jù)本發(fā)明實施例的快閃存儲器中的儲存單元示意圖。
圖3是依據(jù)本發(fā)明實施例的存取接口與儲存單元的方塊圖。
圖4是依據(jù)本發(fā)明實施例的一個快閃儲存子引擎與多個儲存子單元的連接示意圖。
圖5是依據(jù)本發(fā)明實施例的數(shù)據(jù)寫入方法流程圖。
圖6是依據(jù)本發(fā)明實施例的寫入工作調(diào)度示意圖。
圖7是依據(jù)本發(fā)明實施例的寫入工作調(diào)度示意圖。
圖中元件標(biāo)號說明如下:
10系統(tǒng);110處理單元;
120內(nèi)部處理引擎;130動態(tài)隨機(jī)存取存儲器;
150主裝置引擎;160主裝置;
170快閃儲存引擎;
170_0~170_j快閃儲存子引擎;
180儲存單元;
180_0_0~180_j_i儲存子單元;
210存儲器單元陣列;220行解碼單元;
230列編碼單元;240地址單元;
250數(shù)據(jù)緩存器;410_0數(shù)據(jù)線;
420_0_0~420_0_i芯片致能控制信號;
ce0~ce4儲存子單元;
s511~s555方法步驟;
mwi-1、rwi-1、hnt1i-1、vi-1、fi-1、gi-1第i-1個批次工作;
pi、ni、bi、rti、hnt0i、mti、mwi、rwi、hnt1i、vi、fi、gi第i個批次工作;
pi+1、ni+1、bi+1、rti+1、hnt0i+1、mti+1第i+1個批次工作。
具體實施方式
以下說明為完成發(fā)明的較佳實現(xiàn)方式,其目的在于描述本發(fā)明的基本精神,但并不用以限定本發(fā)明。實際的發(fā)明內(nèi)容必須參考之后的權(quán)利要求范圍。
必須了解的是,使用于本說明書中的“包含”、“包括”等詞,是用以表示存在特定的技術(shù)特征、數(shù)值、方法步驟、作業(yè)處理、元件以及/或組件,但并不排除可加上更多的技術(shù)特征、數(shù)值、方法步驟、作業(yè)處理、元件、組件,或以上的任意組合。
于權(quán)利要求中使用如“第一”、“第二”、“第三”等詞是用來修飾權(quán)利要求中的元件,并非用來表示之間具有優(yōu)先權(quán)順序,先行關(guān)系,或者是一個元件先于另一個元件,或者是執(zhí)行方法步驟時的時間先后順序,僅用來區(qū)別具有相同名字的元件。
圖1是依據(jù)本發(fā)明實施例的快閃存儲器的系統(tǒng)架構(gòu)示意圖??扉W存儲器的系統(tǒng)架構(gòu)10中包含處理單元110,用以寫入數(shù)據(jù)到儲存單元180中的指定地址,以及從儲存單元180中的指定地址讀取數(shù)據(jù)。詳細(xì)來說,處理單元110通過快閃儲存引擎(flashstorageengine)170寫入數(shù)據(jù)到儲存單元180中的指定地址,以及從儲存單元180中的指定地址讀取數(shù)據(jù)。系統(tǒng)架構(gòu)10使用數(shù)個電子信號來協(xié)調(diào)處理單元110與儲存單元180間的數(shù)據(jù)與命令傳遞,包含數(shù)據(jù)線(dataline)、時脈信號(clocksignal)與控制信號(controlsignal)。數(shù)據(jù)線可用以傳遞命令、地址、讀出及寫入的數(shù)據(jù);控制信號線可用以傳遞芯片致能(chipenable,ce)、地址提取致能(addresslatchenable,ale)、命令提取致能(commandlatchenable,cle)、寫入致能(writeenable,we)等控制信號。快閃儲存引擎170可采用雙倍數(shù)據(jù)率(doubledatarate,ddr)通訊協(xié)定與儲存單元180溝通,例如,開放nand快閃(opennandflashinterface,onfi)、雙倍數(shù)據(jù)率開關(guān)(ddrtoggle)或其他接口。處理單元110可借由快閃儲存引擎170向儲存單元180詢問是否存在可用的實體區(qū)塊,寫入數(shù)據(jù)至特定地址以及啟動廢料搜集作業(yè)(gc,garbagecollection)。處理單元110另可使用主裝置引擎(hostengine)150通過指定通訊協(xié)定與主裝置160進(jìn)行溝通,例如,通用串行總線(universalserialbus,usb)、先進(jìn)技術(shù)附著(advancedtechnologyattachment,ata)、串行先進(jìn)技術(shù)附著(serialadvancedtechnologyattachment,sata)、快速周邊元件互聯(lián)(peripheralcomponentinterconnectexpress,pci-e)或其他接口。處理單元110可通過主裝置引擎150向主裝置160詢問是否存在寫入命令待處理,以及接收主裝置160發(fā)送的數(shù)據(jù)。
圖2是依據(jù)本發(fā)明實施例的快閃存儲器中的儲存單元示意圖。儲存單元180可包含由mxn個存儲器單元(memorycells)組成的陣列(array)210,而每一個存儲器單元儲存至少一個位元(bit)的信息??扉W存儲器可以是nand型快閃存儲器,或其他種類的快閃存儲器。為了正確存取信息,行解碼單元220用以選擇存儲器單元陣列210中指定的行,而列編碼單元230用以選擇指定行中一定數(shù)量的字節(jié)的數(shù)據(jù)作為輸出。地址單元240提供行信息給行解碼器220,其中定義了選擇存儲器單元陣列210中的那些行。相似地,列解碼器230則根據(jù)地址單元240提供的列信息,選擇存儲器單元陣列210的指定行中一定數(shù)量的列進(jìn)行讀取或?qū)懭氩僮?。行可稱為為字元線(wordline),列可稱為位元線(bitline)。數(shù)據(jù)緩存器(databuffer)250可儲存從存儲器單元陣列210讀取出的數(shù)據(jù),或欲寫入存儲器單元陣列210中的數(shù)據(jù)。存儲器單元可為單層式單元(single-levelcells,slcs)、多層式單元(multi-levelcells,mlcs)或三層式單元(triple-levelcells,tlcs)。
儲存單元180可包含多個儲存子單元,每一個儲存子單元實施于一個管芯(die)上,各自使用關(guān)聯(lián)的快閃儲存子引擎與處理單元110進(jìn)行溝通。圖3是依據(jù)本發(fā)明實施例的存取接口與儲存單元的方塊圖。快閃存儲器10可包含j+1個快閃儲存子引擎170_0至170_j,快閃儲存子引擎又可稱為通道(channel),每一個快閃儲存子引擎連接i+1個儲存子單元。換句話說,i+1個儲存子單元共享一個快閃儲存子引擎。例如,當(dāng)快閃存儲器10包含4個通道(j=3)且每一個通道連接4個儲存單元(i=3)時,快閃存儲器10一共擁有16個儲存單元180_0_0至180_j_i。處理單元110可驅(qū)動快閃儲存子引擎170_0至170_j中的一者,從指定的儲存子單元讀取數(shù)據(jù)。每個儲存子單元擁有獨(dú)立的芯片致能(ce,chipenable)控制信號。換句話說,當(dāng)欲對指定的儲存子單元進(jìn)行數(shù)據(jù)讀取或?qū)懭霑r,需要驅(qū)動關(guān)聯(lián)的快閃儲存子引擎致能此儲存子單元的芯片致能控制信號。圖4是依據(jù)本發(fā)明實施例的一個快閃儲存子引擎與多個儲存子單元的連接示意圖。處理單元110可通過快閃儲存子引擎170_0使用獨(dú)立的芯片致能控制信號420_0_0至420_0_i來從連接的儲存子單元180_0_0至180_0_i中選擇出其中一者,接著,通過共享的數(shù)據(jù)線410_0傳送命令或數(shù)據(jù)給選擇出的儲存子單元,或者從選擇出的儲存子單元接收指定位置上的數(shù)據(jù)。
主裝置160可通過主裝置引擎150提供邏輯區(qū)塊地址(lba,logicalblockaddress)給處理單元110,用以指示寫入特定區(qū)域的數(shù)據(jù)。內(nèi)部處理引擎(internalprocessengine)120為最佳化數(shù)據(jù)寫入的效率,可將一段具有連續(xù)邏輯區(qū)塊地址的數(shù)據(jù)分散地擺放在不同儲存子單元中的不同區(qū)域。因此,需要一個對照表(又稱為h2f表),用以指出每個邏輯區(qū)塊地址的數(shù)據(jù)實際上存放在哪個儲存子單元中的哪個位置。隨機(jī)存取存儲器(ram,randomaccessmemory)130可配置空間儲存此對照表。處理單元110可通過內(nèi)部處理引擎120向隨機(jī)存取存儲器130詢問是否存在足夠的空間來緩存欲寫入的數(shù)據(jù),讀取及更新對照表的信息,以及計算欲儲存至處存單元180的實體地址(例如,區(qū)塊編號、頁面編號等)。處理單元110、內(nèi)部處理引擎120、隨機(jī)存取存儲器130、主裝置引擎150及快閃儲存引擎170可統(tǒng)稱為快閃控制器100。
假設(shè)k個儲存子單元共享一個通道,一個儲存子單元的最小寫入單位為l個頁面。為了讓寫入作業(yè)有效率,于每一個批次,快閃控制器100可收集k*l個頁面的數(shù)據(jù)并寫入儲存單元180。于一些實施方式中,處理單元110可執(zhí)行一連串工作來協(xié)調(diào)內(nèi)部處理引擎120、主裝置引擎150及快閃儲存引擎170,用以寫入k*l個頁面的數(shù)據(jù)。圖5是依據(jù)本發(fā)明實施例的數(shù)據(jù)寫入方法流程圖。為第i個批次的數(shù)據(jù),處理單元110詢問快閃儲存引擎170是否儲存單元180存在可寫入數(shù)據(jù)的可用實體空間,以”pi”表示(步驟s511),詢問主裝置引擎150是否存在待處理的寫入命令,以”ni”表示(步驟s513),以及詢問內(nèi)部處理引擎120是否存在足夠空間來暫存待寫入數(shù)據(jù),以”bi”表示(步驟s515)。接著,處理單元驅(qū)動主裝置引擎150開始從主裝置160接收待寫入的數(shù)據(jù),以”rti”表示(步驟s531),并且在一段時間后,例如100微秒(μs),通過主裝置引擎150得到接收結(jié)果,亦即是完成第i個批次的待寫入數(shù)據(jù)的接收工作,以”rwi”表示(步驟s538)。于rti及rwi之間,處理單元110執(zhí)行第一數(shù)據(jù)組合作業(yè),用以結(jié)合i-1批次已寫入的數(shù)據(jù)(長度不足k*l個頁面)以及目前已經(jīng)接收到的待寫入數(shù)據(jù),以”hnt0i”表示(步驟s533),驅(qū)動內(nèi)部處理引擎120用以開始計算待寫入數(shù)據(jù)暫存于隨機(jī)存取存儲器130的進(jìn)度,以”mti”表示(步驟s535),并且在一段時間后,例如50微秒(μs),通過內(nèi)部處理引擎120得到暫存進(jìn)度的結(jié)果,以”mwi”表示(步驟s537)。于此須注意的是,如果i-1批次已經(jīng)從主裝置160取得完整的k*l個頁面數(shù)據(jù),第一數(shù)據(jù)組合作業(yè)可略過。于rwi之后,處理單元110執(zhí)行第二數(shù)據(jù)組合作業(yè),用以結(jié)合i-1批次已寫入的數(shù)據(jù)(長度不足k*l個頁面)以及目前已經(jīng)接收到的待寫入數(shù)據(jù),以”hnt1i”表示(步驟s539)。于此須注意的是,如果i-1批次以及第一數(shù)據(jù)組合作業(yè)已經(jīng)從主裝置160取得完整的k*l個頁面數(shù)據(jù),第二數(shù)據(jù)組合作業(yè)可略過。接著,處理單元110通過內(nèi)部處理引擎120計算待寫入數(shù)據(jù)的實體地址,以”vi”表示(步驟s551),驅(qū)動快閃儲存引擎170寫入數(shù)據(jù),以”fi”表示(步驟s553),以及,如果需要的話,執(zhí)行廢料搜集作業(yè)(garbagecollection),以”gi”表示(步驟s555)。然而,于以上所示流程中,處理單元110在一些步驟間必須等待,造成運(yùn)算資源閑置。例如,于步驟s531及s538間等待主裝置引擎150接收完待寫入數(shù)據(jù)?;蛘撸诓襟Es535及s537間,等待內(nèi)部處理引擎120的確認(rèn)結(jié)果。
為了避免運(yùn)算資源閑置,處理單元110可于第i個批次的數(shù)據(jù)寫入作業(yè)中插入下一個(i+1)批次的部分工作,減少處理單元110的閑置時間。詳細(xì)來說,處理單元110可于驅(qū)動一個引擎(例如,主裝置引擎150、快閃儲存引擎170、內(nèi)部處理引擎120等)執(zhí)行第i個批次的工作后并等待得到執(zhí)行結(jié)果的期間,插入下一個(i+1)批次的部分工作。圖6是依據(jù)本發(fā)明實施例的寫入工作調(diào)度示意圖。雖然圖6上所示每個工作的長度相同,但并不代表處理單元110執(zhí)行這些工作時使用相同的時間,本發(fā)明并不因此局限。處理單元110可于第i個批次的mti及mwi工作間,亦即是于得到內(nèi)部處理引擎120的結(jié)果前,執(zhí)行第i+1個批次的pi+1、ni+1及bi+1工作。此外,處理單元110亦可于第i個批次的rwi及hnt1i工作間執(zhí)行第i+1個批次的rti+1工作,以及于第i個批次的hnt1i及vi工作間執(zhí)行第i+1個批次的hnt0i+1及mti+1工作。
為了避免運(yùn)算資源閑置,處理單元110可于第i個批次的數(shù)據(jù)寫入作業(yè)中插入上一個(i-1)及下一個(i+1)批次的部分工作,減少處理單元110的閑置時間。詳細(xì)來說,處理單元110可于驅(qū)動一個引擎(例如,主裝置引擎150、快閃儲存引擎170、內(nèi)部處理引擎120等)執(zhí)行第i個批次的工作后并等待得到執(zhí)行結(jié)果的期間,插入上一個(i-1)及下一個(i+1)批次的部分工作。圖7是依據(jù)本發(fā)明實施例的寫入工作調(diào)度示意圖。雖然圖7上所示每個工作的長度相同,但并不代表處理單元110執(zhí)行這些工作時使用相同的時間,本發(fā)明并不因此局限。處理單元110可于第i個批次的mti及mwi工作間,亦即是于得到內(nèi)部處理引擎120的結(jié)果前,執(zhí)行第i-1個批次的vi-1、fi-1及gi-1工作以及第i+1個批次的pi+1、ni+1及bi+1工作。處理單元110亦可于第i個批次的bi及rti工作間執(zhí)行第i-1個批次的mwi-1及rwi-1工作,以及于第i個批次的rti及hnt0i工作間執(zhí)行第i-1個批次的hnt1i-1工作。此外,處理單元110亦可于第i個批次的rwi及hnt1i工作間執(zhí)行第i+1個批次的rti+1工作,以及于第i個批次的hnt1i及vi工作間執(zhí)行第i+1個批次的hnt0i+1及mti+1工作。
雖然圖1中包含了以上描述的元件,但不排除在不違反發(fā)明的精神下,使用更多其他的附加元件,已達(dá)成更佳的技術(shù)效果。此外,雖然圖5的流程以及圖6至7的工作調(diào)度采用指定的順序來執(zhí)行,但是在不違反發(fā)明精神的情況下,熟習(xí)此技藝人士可以在達(dá)到相同效果的前提下,修改這些步驟間的順序,所以,本發(fā)明并不局限于僅使用如上所述的順序。此外,熟習(xí)此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執(zhí)行更多步驟,本發(fā)明亦不因此而局限。
雖然本發(fā)明已以較佳實施例揭示如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的修改和完善,因此本發(fā)明的保護(hù)范圍當(dāng)以權(quán)利要求書所界定的為準(zhǔn)。