專利名稱:改進(jìn)閃存存取效率的存儲系統(tǒng)與方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)于一種存取閃存的存儲系統(tǒng)及其方法,更具體來說,是關(guān)于 一種改進(jìn)閃存存取效率的存儲系統(tǒng)及其方法。
背景技術(shù):
閃存(FlashMemory)為一非揮發(fā)性(non-volatile)的內(nèi)存,在電源關(guān)閉時仍 可保存先前寫入的資料。與其它存儲媒體(如硬盤、軟盤或磁帶等)比較,閃 存有體積小、重量輕、防震動、存取時無機械動作延遲與低耗電等特性。由 于閃存的這些特性,因此近年來消費性電子產(chǎn)品、嵌入式系統(tǒng)或可攜式計算 機等資料存儲媒體皆大量采用。
閃存主要可分兩種NOR型閃存與NAND型閃存。NOR型閃存的優(yōu) 點為低電壓、存取快且穩(wěn)定性高,因此已被大量應(yīng)用于可攜式電子裝置及電 子通訊裝置,諸如個人計算機(Personal Computer, PC)、行動電話、個人數(shù) 字助理(Personal Digital Assistance, PDA)以及轉(zhuǎn)頻器(Set-top Box, STB)等。 NAND型閃存是專門為資料存儲用途而設(shè)計的閃存,通常應(yīng)用于存儲并保存 大量的資料的存儲媒介,如可攜式記憶卡(SD Memory Card, CompactFlash Card, Memory Stick等等)。當(dāng)閃存在執(zhí)行寫入(Write)、抹除(Erase)及讀取 (Read)運作時,可透過內(nèi)部的電容耦合(Coupling)有效地控制漂浮閘(FloatingGate)上電荷的移動,進(jìn)而使得該漂浮閘可根據(jù)該電荷的移動而決定下層晶體 管的閥值電壓。換言之,當(dāng)負(fù)電子注入該漂浮閘時,該漂浮閘的存儲狀態(tài)便 會從1變成0;而當(dāng)負(fù)電子從該漂浮閘移走后,該漂浮閘的存儲狀態(tài)便會從O 變成1。
請參閱圖1,圖1是應(yīng)用現(xiàn)有技術(shù)的NAND閃存的示意圖。NAND閃存 100內(nèi)部由若干個區(qū)塊(block)12所組成。每一區(qū)塊12包含若干個頁(page)14, 每一頁14則可分為資料存儲區(qū)141以及備用區(qū)(spare area)142,資料存儲區(qū) 141的數(shù)據(jù)容量可為512個字節(jié),用來存儲使用數(shù)據(jù),備用區(qū)142用來存儲 錯誤修正碼(Error Correction Code,ECC)。與NOR型閃存不同,NAND型閃 存的讀取與寫入單位皆為一個頁,資料讀寫的動作必須先向芯片發(fā)出讀取或 寫入指令后才可進(jìn)行。
然而,閃存本身無法原地直接更新資料(update-in-place),也就是說,若 要對已寫過資料位置再次寫入資料時,必須先執(zhí)行抹除的動作。而且NAND 閃存寫入單位為頁,而抹除單位為區(qū)塊。所以當(dāng)向芯片發(fā)出寫入請求時,必 須先抹除一整個區(qū)塊12,才能把資料寫入至該區(qū)塊12的頁14。而且一般來 說一個區(qū)塊12抹除動作需要的時間約為一個頁14寫入動作時間的10 20 倍。如果當(dāng)一個抹除的單位大于寫入的單位,這表示若要執(zhí)行區(qū)塊抹除動作, 必須先將欲抹除區(qū)塊中的有效頁搬移至其它區(qū)塊后才可進(jìn)行。
再者,閃存的抹除次數(shù)(limited erase counts)有限制。這是因為當(dāng)閃存在 執(zhí)行寫入或讀取運作時,由于現(xiàn)實中的電容皆具有漏電的現(xiàn)象,因此當(dāng)閃存 重復(fù)寫入或讀取超過十萬次之后,就會導(dǎo)致該電容所存儲的電位差不足以使 得漂浮閘所存儲的電荷不足,進(jìn)而造成該閃存所存儲的數(shù)據(jù)遺失,嚴(yán)重者更可能會使該閃存開始衰減且無法執(zhí)行讀取的運作。也就是說,若某一區(qū)塊經(jīng) 常被抹除而超過可用次數(shù)的話,會造成此區(qū)塊寫入/抹除動作錯誤。
由于上述閃存的特性,因此一能有效管理閃存的管理系統(tǒng)是非常需要的。
傳統(tǒng)上,目前閃存作為存儲媒體所設(shè)計的檔案系統(tǒng)架構(gòu)有如Microsoft FFS、 JFFS2與YAFFS等檔案系統(tǒng)。這些檔案系統(tǒng)較有效率,但只能使用在管理以 閃存建構(gòu)的存儲媒體上。另一種作法則是采用一 FTL (Flash Translation Layer) 中間層,將閃存仿真為區(qū)塊裝置,如硬盤機一般。因此在FTL的上層就可使 用一般的檔案系統(tǒng),如FAT32或EXT3等等,對下層發(fā)出區(qū)段(sector)讀寫請 求,經(jīng)由FTL來存取閃存內(nèi)容。FTL包含一個邏輯-實體地址對照表,用以 存儲邏輯地址與實體地址的對應(yīng)信息,對應(yīng)信息存儲的格式為邏輯地址(閃 存區(qū)塊地址-頁于區(qū)塊之位置)。請參閱圖2,圖2是存儲邏輯地址與實體地址 的一范例。假設(shè)每一區(qū)塊有n頁的數(shù)據(jù)。當(dāng)上層檔案系統(tǒng)要求讀取邏輯地址 1的資料,通過邏輯-實體地址對照表16得知邏輯地址1對應(yīng)得實體地址為 (區(qū)塊0-頁l),所以系統(tǒng)會取得實體地址(區(qū)塊O-頁l)內(nèi)的資料并傳回。若上 層檔案系統(tǒng)要求更新邏輯地址3的內(nèi)容,由于不允許直接再次寫入,所以系 統(tǒng)先將實體地址(區(qū)塊0-頁O)至(區(qū)塊0-頁2)寫入(區(qū)塊2-頁O)至(區(qū)塊2-頁2), 再將更新資料寫入至(區(qū)塊2-頁3),并將實體地址(區(qū)塊0-頁4)到(區(qū)塊0-頁 n-l)寫入(區(qū)塊2-頁4)到(區(qū)塊2-頁n-l),然后將實體地址(區(qū)塊O)的資料標(biāo)示 為無效,最后將地址對照表16中邏輯地址3的對應(yīng)信息由(B0-P3)改為 (B2-P3),如此下一次要存取邏輯地址3的資料,就會對應(yīng)至實體地址(區(qū)塊 2-頁3)存取資料。如此一來,閃存"寫前抹除"特性造成的問題可因此獲得解 決。使用FTL管理閃存可以將處理的問題集中在閃存的特性上,而不用考慮 處理檔案系統(tǒng)中如檔案、目錄等問題,并且可以視應(yīng)用所需選擇FTL上層的 檔案系統(tǒng),但由于所有動作必須通過FTL層,所以需要較長的處理時間與較 多內(nèi)存耗費。舉例來說,若上層的檔案系統(tǒng)要寫入10個2K字節(jié)的連續(xù)數(shù)據(jù), 假設(shè)這些數(shù)據(jù)全部位于同一個區(qū)塊內(nèi),若這10筆數(shù)據(jù)分開10次寫入,整個 區(qū)塊將會被復(fù)制十次,顯然浪費許多復(fù)制時間。
另外,若要從一主機端讀取閃存內(nèi)一筆2K字節(jié)的數(shù)據(jù),則讀取命令會 由主機傳達(dá)到閃存,接著閃存會將所要讀取的數(shù)據(jù)自各個區(qū)塊中找出,而后 將全部找到的數(shù)據(jù)傳輸回主機端,當(dāng)數(shù)據(jù)傳輸完成后,閃存?zhèn)骰匾粻顟B(tài)訊息 回主機端而完成整個數(shù)據(jù)讀取的流程。在整個讀取過程內(nèi),主機傳達(dá)讀取命 令到閃存、以及從閃存?zhèn)鳡顟B(tài)訊息回主機端的準(zhǔn)備時間都是因FTL層的設(shè)計 而產(chǎn)生的額外時間。雖然數(shù)據(jù)傳輸時間會隨著數(shù)據(jù)量的增加而增加,但是整 個準(zhǔn)備時間總和并不會因數(shù)據(jù)量的增加而增加。如果要讀取連續(xù)20K字節(jié)大 小的數(shù)據(jù),若是分成10個命令讀取閃存而每一個命令只讀取2K字節(jié)的數(shù)據(jù), 則每次讀取一筆數(shù)據(jù)就會對應(yīng)到一個讀取命令,因此造成時間的浪費。若將 20K字節(jié)大小的數(shù)據(jù)一次讀取完畢,則可縮短數(shù)據(jù)讀取時間。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種改進(jìn)閃存存儲裝置存取效率的存儲系統(tǒng)及其 方法,將連續(xù)讀取或?qū)懭氲娜舾晒P數(shù)據(jù)先暫存至一高速緩存暫存區(qū),再一并 傳送出去,以節(jié)省數(shù)據(jù)傳輸?shù)臅r間。
本發(fā)明的目的之一是提供一種改進(jìn)閃存存取效率的存儲系統(tǒng),其包含一閃存、 一高速緩存單元以及一控制單元。該閃存包含若干個區(qū)塊(block),每 一區(qū)塊包含若干個頁(page),用來存儲數(shù)據(jù)。該高速緩存單元包含若干個高 速緩存暫存區(qū),該高速緩存單元用來暫存該閃存的數(shù)據(jù)。該控制單元用來于 接收一第一讀取請求以讀取該閃存的一第一數(shù)據(jù)且該第一數(shù)據(jù)存儲于該等高 速緩存暫存區(qū)之中時,自該等高速緩存暫存區(qū)讀取該第一數(shù)據(jù),以及用來于 接收一第二讀取請求以讀取該閃存所存儲的一第二數(shù)據(jù)且該第二數(shù)據(jù)未存儲 于該等高速緩存暫存區(qū)之中時,將存儲該第二數(shù)據(jù)之區(qū)塊的數(shù)據(jù)暫存至該高 速緩存單元的該等高速緩存暫存區(qū)之中。
根據(jù)本發(fā)明,每一高速緩存暫存區(qū)的數(shù)據(jù)容量的實施例為64K字節(jié)或 128K字節(jié),而最佳實施例為每一高速緩存暫存區(qū)的數(shù)據(jù)容量等于每一區(qū)塊的 數(shù)據(jù)容量。
本發(fā)明的再一目的是提供一種改進(jìn)一閃存存取效率的方法,該閃存包含 若干個區(qū)塊,每一區(qū)塊包含若干個頁,該方法包含提供一高速緩存,其包 含若干個高速緩存暫存區(qū);當(dāng)接收一第一讀取請求以讀取該閃存的一第一數(shù) 據(jù)且該第一數(shù)據(jù)存儲于該等高速緩存暫存區(qū)之中時,自該等高速緩存暫存區(qū) 讀取該第一數(shù)據(jù);以及當(dāng)接收一第二讀取請求以讀取該閃存所存儲的一第二 數(shù)據(jù)且該第二數(shù)據(jù)未存儲于該等高速緩存暫存區(qū)之中時,將存儲該第二數(shù)據(jù) 的區(qū)塊的數(shù)據(jù)暫存至該高速緩存單元的該等高速緩存暫存區(qū)之中。
根據(jù)本發(fā)明,該方法還包含步驟當(dāng)該等高速緩存暫存區(qū)的數(shù)據(jù)全滿時 且接收到一第三讀取請求時,將該等高速緩存暫存區(qū)的最少讀取得高速緩存 暫存區(qū)寫入該閃存。
本發(fā)明的另 一 目的是提供一種改進(jìn)閃存存儲裝置存取效率的存儲系統(tǒng),其包含一閃存、 一高速緩存單元以及一控制單元。該閃存用來存儲數(shù)據(jù),其 包含若干個區(qū)塊,每一區(qū)塊包含若干個頁。該高速緩存單元包含若干個高速 緩存暫存區(qū),該高速緩存單元用來暫存要寫入該閃存的資料。該控制單元用 來于接收一第一寫入請求以將該第一寫入請求的一第一寫入數(shù)據(jù)寫入該閃存 存儲裝置時,將該第一寫入數(shù)據(jù)存儲于該等高速緩存暫存區(qū)的一高速緩存暫 存區(qū),以及用來于該等高速緩存暫存區(qū)的資料全滿時,將該高速緩存暫存區(qū) 的數(shù)據(jù)寫入該閃存存儲裝置。
根據(jù)本發(fā)明的實施例,每一高速緩存暫存區(qū)的數(shù)據(jù)容量是64K字節(jié)或 128K字節(jié),而最佳實施例為每一高速緩存暫存區(qū)的數(shù)據(jù)容量大于或等于每一 區(qū)塊的數(shù)據(jù)容量。
本發(fā)明的又一目的是提供一種改進(jìn)一閃存存取效率的方法,該閃存包含 若干個區(qū)塊,每一區(qū)塊包含若干個頁,該方法包含提供一高速高速緩存,其 包含若干個高速緩存暫存區(qū);當(dāng)接收一第一寫入請求以將該第一寫入請求的 一第一寫入數(shù)據(jù)寫入該閃存時,將該第一寫入數(shù)據(jù)存儲于該等高速緩存暫存 區(qū)的一高速緩存暫存區(qū);以及當(dāng)該等高速緩存暫存區(qū)的數(shù)據(jù)全滿時,將該高 速緩存暫存區(qū)的資料寫入該閃存。
根據(jù)本發(fā)明,該方法還包含步驟當(dāng)該第一寫入數(shù)據(jù)的數(shù)據(jù)量大于每一 高速緩存暫存區(qū)的數(shù)據(jù)容量且全部該第一寫入資料未暫存于該等高速緩存暫 存區(qū)時,將該第一寫入資料寫入該閃存。
根據(jù)本發(fā)明,該方法還包含步驟當(dāng)該高速緩存暫存區(qū)閑置時間超過一 預(yù)定時間時,將該高速緩存暫存區(qū)的資料寫入該閃存
圖1是現(xiàn)有技術(shù)的NAND閃存的示意圖。
圖2是存儲邏輯地址與實體地址的一范例。
圖3是本發(fā)明的存儲系統(tǒng)的功能方塊圖。
圖4是閃存、控制單元以及高速緩存單元的示意圖。
圖5是本發(fā)明由主機讀取閃存數(shù)據(jù)的流程圖。
圖6是本發(fā)明由主機將數(shù)據(jù)寫入閃存數(shù)據(jù)的流程圖。
具體實施例方式
請參閱圖3,圖3是本發(fā)明的存儲系統(tǒng)10的功能方塊圖。存儲系統(tǒng)10 包含一主機20以及一閃存存儲裝置50。主機20可為桌上型計算機、筆記型 計算機、工業(yè)計算機或可錄放DVD播放裝置等等。主機20包含一控制單元 22以及一高速緩存單元24。閃存存儲裝置50包含一閃存52。在本實施例中, 閃存52內(nèi)部的每個區(qū)塊(Block)均由64個頁(Page)所組成,每個頁為2K字節(jié) (bytes)或是512位(bits)大小。高速緩存單元24由主機20內(nèi)的內(nèi)存如動態(tài)隨 機存取內(nèi)存(Dynamic Random Access Memory , DRAM)、靜態(tài)隨機存取內(nèi)存 (Static Random Access Memory, SRAM)所切割出來的內(nèi)存,其包含若干個 高速緩存暫存區(qū)(cacheline)26。在本實施例中,每一高速緩存暫存區(qū)26的數(shù) 據(jù)容量大小可為但不限于128K字節(jié)、64K字節(jié)或是其它數(shù)據(jù)容量大小,數(shù) 據(jù)容量大小可視設(shè)計需求而調(diào)整。每一高速緩存暫存區(qū)的數(shù)據(jù)容量(C)與 一個區(qū)塊的數(shù)據(jù)容量(B)的關(guān)系為C = Bx2n,此處的n為整數(shù)。高速緩 存單元24用來提供該閃存存儲裝置50的讀寫數(shù)據(jù)高速緩存暫存之用,高速緩存單元24由控制單元22控制,經(jīng)由控制單元22將閃存存儲裝置50的讀 寫數(shù)據(jù)暫存,以提供閃存存儲裝置50在下一次數(shù)據(jù)讀寫時的高速緩存數(shù)據(jù)輸 出??刂茊卧?2是一存儲于主機20的內(nèi)存的軟件程序代碼,負(fù)責(zé)對操作系 統(tǒng)以及總線驅(qū)動接口(bus driver)的溝通。
請一并參閱圖4以及圖5,圖4是閃存52、控制單元22以及高速緩存單 元24的示意圖。圖5是本發(fā)明由主機20讀取閃存52數(shù)據(jù)的流程圖。本發(fā)明 的讀取流程包含如下步驟
步驟400:開始。
步驟402:操作系統(tǒng)對控制高速緩存單元24的驅(qū)動程序發(fā)出一讀取請求, 以讀取閃存52的數(shù)據(jù)。
步驟404:判斷該讀取請求所請求的數(shù)據(jù)是否超過高速緩存暫存區(qū)26的 邊界值 若是,執(zhí)行步驟406,若否,執(zhí)行步驟408。
步驟406:將該讀取請求的數(shù)據(jù)分割。若操作系統(tǒng)指定的讀取地址跨越 了高速緩存暫存區(qū)的邊界,則將此讀取請求依高速緩存暫存區(qū)的邊界分為多 個請求。
步驟408:讀取請求的數(shù)據(jù)存儲于高速緩存暫存區(qū)內(nèi)?若是,執(zhí)行步驟 410;若否,執(zhí)行步驟412。
步驟410:若讀取請求的數(shù)據(jù)存儲于高速緩存暫存區(qū)內(nèi),則自高速緩存 暫存區(qū)內(nèi)讀取該讀取請求的數(shù)據(jù)。
步驟412:判斷所有高速緩存暫存區(qū)是否都存儲有數(shù)據(jù) 若是,執(zhí)行步驟
414,若否,執(zhí)行步驟416。
步驟414:當(dāng)所有高速緩存暫存區(qū)都存儲有數(shù)據(jù)時,則讀取請求的數(shù)據(jù)自閃存寫入被讀取次數(shù)最少的高速緩存暫存區(qū)。再將數(shù)據(jù)由高速緩存暫存區(qū) 中復(fù)制到操作系統(tǒng)指定的內(nèi)存地址。
步驟416:當(dāng)仍有部分高速緩存暫存區(qū)沒有存儲數(shù)據(jù)時,將讀取請求的 數(shù)據(jù)自閃存寫入可用的高速緩存暫存區(qū)內(nèi)。再將數(shù)據(jù)由高速緩存暫存區(qū)中復(fù) 制到操作系統(tǒng)指定的內(nèi)存地址。 步驟418:結(jié)束。
在主機20連接閃存存儲裝置50之后,如果主機20欲讀取閃存存儲裝置 50的一第一數(shù)據(jù),該第一數(shù)據(jù)的大小為24K字節(jié),則主機20會傳送一第一 讀取請求給控制單元22。第一讀取請求包含對應(yīng)于該第一數(shù)據(jù)的邏輯區(qū)塊地 址(Logical Block Address, LBA)以及第一數(shù)據(jù)的大小。接下來,控制單元22 會判斷第一數(shù)據(jù)的是否超過高速緩存暫存區(qū)26的邊界值(步驟404)。舉例來 說,如果高速緩存暫存區(qū)26的大小是128K字節(jié),若第一讀取請求所請求的 第一數(shù)據(jù)大小為256字節(jié),則控制單元22會將超過第一讀取請求分割成兩個 分別用來讀取128K字節(jié)的讀取請求(步驟406)。接下來,控制單元22會判 斷第一數(shù)據(jù)是否已存儲于高速緩存單元24的高速緩存暫存區(qū)26內(nèi)(步驟 408)。因為高速緩存單元24尚未暫存任何數(shù)據(jù),所以控制單元22判斷第一 數(shù)據(jù)并未存儲在高速緩存暫存區(qū)內(nèi)26。接著控制單元22判斷所有高速緩存 暫存區(qū)26是否都存儲有數(shù)據(jù),用以確認(rèn)是否仍有未使用的高速緩存暫存區(qū)可 存儲數(shù)據(jù)。此時高速緩存暫存區(qū)都未暫存任何數(shù)據(jù),所以控制單元22會將第 一數(shù)據(jù)暫存于高速緩存暫存區(qū)26(步驟416)。接下來,當(dāng)控制單元22接收一 第二讀取請求用以讀取位于閃存52的第二數(shù)據(jù)時,因為第二資料并未暫存于 高速緩存暫存區(qū),且仍有未使用的高速緩存暫存區(qū)可存儲數(shù)據(jù),所以控制單元22會將第二數(shù)據(jù)暫存于高速緩存暫存區(qū)26。
當(dāng)控制單元22接收到一第三讀取請求用以讀取位于閃存52的第三數(shù)據(jù) 時,因為第三資料已暫存于高速緩存暫存區(qū)26,所以控制單元22會直接從 高速緩存單元讀取第三數(shù)據(jù)(步驟410),而不再需要從閃存里面讀取該第三數(shù) 據(jù)。請注意,當(dāng)控制單元22在接收一第四讀取請求用以讀取閃存52的第四 數(shù)據(jù)時,如果第四數(shù)據(jù)并未暫存于高速緩存暫存區(qū),且所有的高速緩存暫存 區(qū)都已存儲數(shù)據(jù),此時控制單元22會檢査高速緩存暫存區(qū)26被讀取的次數(shù), 并將第四數(shù)據(jù)暫存至被讀取次數(shù)最少的高速緩存暫存區(qū)之中以更新高速緩存 暫存區(qū),再將第四數(shù)據(jù)由高速緩存暫存區(qū)26中復(fù)制到操作系統(tǒng)指定的內(nèi)存地 址。通過上述的讀取機制,如果每次主機需要頻繁讀取閃存,且每一個讀取 請求所對應(yīng)的數(shù)據(jù)比較小時,則主機不需要每次去閃存內(nèi)尋找所需要的資料, 就可以從高速緩存單元中找到所要的數(shù)據(jù),故可大幅改善頻繁讀取小型數(shù)據(jù) 的時間。舉例來說,在先前技術(shù)中,如果要讀取連續(xù)20K字節(jié)大小的數(shù)據(jù), 若是分成10個命令讀取閃存而每一個命令只讀取2K字節(jié)的數(shù)據(jù),則每次讀 取一筆數(shù)據(jù)就會對應(yīng)到一個讀取命令,因此造成時間的浪費。但在本發(fā)明中, 20K字節(jié)大小的數(shù)據(jù)是先存儲在高速緩存單元內(nèi),而后一次讀取完畢,因此 可縮短數(shù)據(jù)讀取時間。
請注意,若操作系統(tǒng)指定讀取的數(shù)據(jù)量為最大數(shù)據(jù)量,為免除在高速緩 存52搬動數(shù)據(jù)所花多余的時間,所以控制單元22會將此一讀取請求直接送 至閃存52,而不通過高速緩存單元24。
請一并參閱圖4以及圖6,圖6是本發(fā)明由主機20將數(shù)據(jù)寫入閃存52 數(shù)據(jù)的流程圖。本發(fā)明的寫入流程包含如下步驟步驟500:開始。
步驟502:主機20對閃存52發(fā)出一寫入請求,用來將數(shù)據(jù)寫入閃存52。 步驟504:判斷寫入請求的數(shù)據(jù)是否大于閃存區(qū)的數(shù)據(jù)容量 若是,執(zhí)行
步驟506,若否,執(zhí)行步驟512。
步驟506:當(dāng)寫入請求的數(shù)據(jù)大于閃存區(qū)的數(shù)據(jù)容量,則判斷寫入請求
的部份資料是否已暫存于高速緩存單元 若是,執(zhí)行步驟510,若否,執(zhí)行步
驟508。
步驟508:當(dāng)寫入請求的部份數(shù)據(jù)已暫存于高速緩存單元時,則判斷閃 存單元內(nèi)未使用的高速緩存暫存區(qū)是否足夠存儲寫入請求的全部數(shù)據(jù) 若是, 執(zhí)行步驟512,若否,執(zhí)行步驟510。
步驟510:當(dāng)寫入請求的所有數(shù)據(jù)都未暫存于高速緩存單元時,直接將 寫入請求的數(shù)據(jù)寫入閃存。
步驟512:當(dāng)寫入請求的數(shù)據(jù)小于閃存區(qū)的數(shù)據(jù)容量,則將寫入請求的 數(shù)據(jù)寫入高速緩存單元的未使用的高速緩存暫存區(qū)。
步驟514:判斷高速緩存單元的高速緩存暫存區(qū)是否都存儲數(shù)據(jù) 若是, 執(zhí)行步驟518,若否,執(zhí)行步驟516。
步驟516:判斷高速緩存單元的閑置時間超過一預(yù)定時間 若是,執(zhí)行步 驟518,若否,執(zhí)行步驟500。
步驟518:當(dāng)高速緩存單元的全部高速緩存暫存區(qū)都存儲有數(shù)據(jù)或是高 速緩存單元的閑置時間超過該預(yù)定時間,則將高速緩存暫存區(qū)的所有數(shù)據(jù)一 并寫入至閃存。
在主機20電連接閃存存儲裝置50之后,如果主機20要將一第一數(shù)據(jù)寫入閃存存儲裝置50,其中該第一數(shù)據(jù)的大小為24K字節(jié),則主機20會傳送 一第一寫入請求給控制單元22(步驟502)。第一寫入請求包含對應(yīng)于該第一 數(shù)據(jù)的邏輯區(qū)塊地址(Logical Block Address, LBA)以及第一數(shù)據(jù)的大小???制單元22會判斷第一數(shù)據(jù)是否大于高速緩存暫存區(qū)26的數(shù)據(jù)容量(步驟 504)。因為高速緩存暫存區(qū)26的數(shù)據(jù)容量(假設(shè)是128K字節(jié))大于第一數(shù)據(jù) 大小(24K字節(jié)),所以控制單元22會將第一數(shù)據(jù)先暫存于高速緩存暫存區(qū) 26a(步驟512)。之后,如果控制單元22接收到一第二寫入請求時,且該第二 寫入請求包含10K字節(jié)大小的第二數(shù)據(jù)。 一旦控制單元22判斷第二數(shù)據(jù)小 于高速緩存暫存區(qū)26的數(shù)據(jù)容量后,會將第二資料先暫存高速緩存暫存區(qū) 26,較佳地,該第二資料會暫存于高速緩存暫存區(qū)26a,此時高速緩存暫存 區(qū)26a暫存有第一數(shù)據(jù)以及第二數(shù)據(jù)。接下來,假設(shè)控制單元22接收到一第 三寫入請求時,且該第三寫入請求包含256K字節(jié)大小的第三數(shù)據(jù)。因為高 速緩存暫存區(qū)26的數(shù)據(jù)容量(128K字節(jié))小于第三數(shù)據(jù)大小(256K字節(jié)),則 控制單元22會判斷第三數(shù)據(jù)是否有部分?jǐn)?shù)據(jù)已經(jīng)暫存于高速緩存暫存區(qū),此 時,第一資料已暫存于高速緩存暫存區(qū)26a,故控制單元22會檢査第一數(shù)據(jù) 與第三數(shù)據(jù)是否有重復(fù)。如果第三數(shù)據(jù)與第一數(shù)據(jù)沒有重復(fù)之處,則第三數(shù) 據(jù)會直接寫入閃存52而不會暫存于高速緩存單元24。反之,如果第三數(shù)據(jù) 與第一數(shù)據(jù)有重復(fù),則控制單元22會判斷高速緩存單元24之中未使用的高 速緩存暫存區(qū)26是否足以存儲全部的第三數(shù)據(jù)。如果未使用的高速緩存暫存 區(qū)足以存入該第三數(shù)據(jù)時,則該第三數(shù)據(jù)會暫存于高速緩存單元24的高速緩 存暫存區(qū)26,反之,則把第三數(shù)據(jù)會直接寫入閃存52而不會暫存于高速緩 存暫存區(qū)26??刂茊卧?2在寫入請求對應(yīng)的數(shù)據(jù)寫入高速緩存單元24后,還會檢查 高速緩存單元24的高速緩存暫存區(qū)26是否都存儲有數(shù)據(jù)(步驟514)。當(dāng)高速 緩存單元24的高速緩存暫存區(qū)26都存儲有數(shù)據(jù)時,控制單元22會一次將整 個高速緩存單元24的數(shù)據(jù)都寫入閃存52?;蛘撸?dāng)控制單元22判斷高速緩 存單元24的閑置時間超過一預(yù)定時間時(步驟516),控制單元22會將高速緩 存單元24的數(shù)據(jù)都寫入閃存52。
簡而言之,通過這樣的寫入機制,控制單元22在接收到一個寫入請求時, 會先判斷寫入請求的數(shù)據(jù)的大小,如果數(shù)據(jù)小于高速緩存暫存區(qū)的大小,則 會把這些小數(shù)據(jù)先暫存于高速緩存單元。直到高速緩存單元內(nèi)都存滿數(shù)據(jù)或 是高速緩存單元閑置時間超過一預(yù)定時間時,才會一次把數(shù)據(jù)寫入閃存內(nèi)。 所以如果在多次接收到寫入小型檔案的寫入請求時,本發(fā)明的存儲系統(tǒng)并不 會像現(xiàn)有技術(shù)必須每次接收到寫入請求時就必須把數(shù)據(jù)寫入閃存內(nèi),而是等 到高速緩存單元存儲的數(shù)據(jù)全滿或是高速緩存單元閑置時間超過一預(yù)定時間 時,才會一次把資料寫入閃存,所以可以大幅減少多次寫入小型檔案的時間。 舉例來說,在現(xiàn)有技術(shù)中,若上層的檔案系統(tǒng)要寫入10個2K字節(jié)的連續(xù)數(shù) 據(jù),假設(shè)這些數(shù)據(jù)全部位于同一個區(qū)塊內(nèi),若這10筆數(shù)據(jù)分開10次寫入, 整個區(qū)塊將會被復(fù)制十次。但在本發(fā)明中,這10筆數(shù)據(jù)合并在一次寫入,整 個區(qū)塊只會被復(fù)制一次,所以可以大幅縮短資料寫入的時間。
相較于先前技術(shù),本發(fā)明的存儲系統(tǒng)提供一高速緩存單元,用來暫存要 寫入閃存存儲裝置的數(shù)據(jù)或是暫存自閃存存儲裝置讀取的數(shù)據(jù)。在讀取過程 中,特別是對頻繁讀取小型檔案的數(shù)據(jù)來說,因為第一次自閃存讀取的數(shù)據(jù) 都會暫存在高速緩存單元里,所以第二次讀取同一筆數(shù)據(jù)時,就不再需要自閃存讀取數(shù)據(jù),因而大幅縮短自閃存存儲裝置讀取數(shù)據(jù)的準(zhǔn)備時間。在寫入 過程中,特別是對于多次將小型檔案的數(shù)據(jù)寫入閃存而言,因為寫入的小型 檔案數(shù)據(jù)會先存入高速緩存單元之高速緩存暫存區(qū),在高速緩存單元存滿數(shù) 據(jù)后才會一次寫入閃存,這么一來,可降低寫入閃存的準(zhǔn)備時間。
綜上所述,雖然本發(fā)明己以較佳實施例揭露如上,但該較佳實施例并非 用以限制本發(fā)明,該領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi), 均可作各種更動與潤飾,因此本發(fā)明的保護(hù)范圍以權(quán)利要求界定的范圍為準(zhǔn)。
權(quán)利要求
1. 一種改進(jìn)閃存存取效率的存儲系統(tǒng),其特征在于該存儲系統(tǒng)包含一閃存,包含若干個區(qū)塊,每一區(qū)塊包含若干個頁,用來存儲數(shù)據(jù);一高速緩存單元,包含若干個高速緩存暫存區(qū),該高速緩存單元用來暫存該閃存的數(shù)據(jù);以及一控制單元,用來于接收一第一讀取請求以讀取該閃存的一第一數(shù)據(jù)且該第一數(shù)據(jù)存儲于該等高速緩存暫存區(qū)之中時,自該等高速緩存暫存區(qū)讀取該第一數(shù)據(jù),以及用來于接收一第二讀取請求以讀取該閃存所存儲的一第二數(shù)據(jù)且該第二數(shù)據(jù)未存儲于該等高速緩存暫存區(qū)之中時,將該第二數(shù)據(jù)暫存至該高速緩存單元的該等高速緩存暫存區(qū)之中。
2. 根據(jù)權(quán)利要求1所述的存儲系統(tǒng),其特征在于該存儲系統(tǒng)還包含一 主機,該高速緩存單元以及該控制單元設(shè)置于該主機內(nèi)。
3. 根據(jù)權(quán)利要求2所述的存儲系統(tǒng),其特征在于該主機還包含一內(nèi)存, 該控制單元是設(shè)置于該內(nèi)存的軟件程序代碼。
4. 根據(jù)權(quán)利要求1所述的存儲系統(tǒng),其特征在于該控制單元用來在該 等高速緩存暫存區(qū)的數(shù)據(jù)全滿時且接收到一第三讀取請求以讀取該閃存所儲 存之一第三數(shù)據(jù)時,將該第三數(shù)據(jù)自該閃存寫入該等高速緩存暫存區(qū)的最少 讀取的高速緩存暫存區(qū)。
5. 根據(jù)權(quán)利要求1所述的存儲系統(tǒng),其特征在于每一高速緩存暫存區(qū) 的數(shù)據(jù)容量是64K字節(jié)或128K字節(jié)。
6. —種改進(jìn)一閃存存取效率的方法,該閃存包含若干個區(qū)塊,每一區(qū)塊 包含若干個頁,其特征在于該方法包含提供一高速緩存單元,其包含若干個高速緩存暫存區(qū); 當(dāng)接收一第一讀取請求以讀取該閃存的一第一數(shù)據(jù)且該第一數(shù)據(jù)存儲于該等高速緩存暫存區(qū)之中時,自該等高速緩存暫存區(qū)讀取該第一數(shù)據(jù);以及 當(dāng)接收一第二讀取請求以讀取該閃存所存儲的一第二數(shù)據(jù)且該第二數(shù)據(jù)未存儲于該等高速緩存暫存區(qū)之中時,將該第二數(shù)據(jù)暫存至該高速緩存單元之該等高速緩存暫存區(qū)之中。
7. 根據(jù)權(quán)利要求6所述的改進(jìn)一閃存存取效率的方法,其特征在于該 方法還包含當(dāng)該等高速緩存暫存區(qū)的數(shù)據(jù)全滿時且接收到一第三讀取請求以讀取該 閃存所存儲之一第三數(shù)據(jù)時,將該第三數(shù)據(jù)自該閃存寫入該等高速緩存暫存 區(qū)之最少讀取之高速緩存暫存區(qū)。
8. 根據(jù)權(quán)利要求6所述的改進(jìn)一閃存存取效率的方法,其特征在于該 方法還包含當(dāng)接收一第四讀取請求以讀取該閃存的一第四數(shù)據(jù)且該第四數(shù)據(jù)的大小 超過該每一高速緩存暫存區(qū)的數(shù)據(jù)容量時,分割該第四讀取請求。
9. 一種改進(jìn)閃存存取效率的存儲系統(tǒng),其特征在于該存儲系統(tǒng)包含 一閃存,包含若干個區(qū)塊,每一區(qū)塊包含若千個頁,用來存儲數(shù)據(jù); 一高速緩存單元,包含若干個高速緩存暫存區(qū),該高速緩存單元用來暫存要寫入該閃存的資料;以及一控制單元,用來在接收一第一寫入請求以將該第一寫入請求的一第一 寫入數(shù)據(jù)寫入該閃存時,將該第一寫入數(shù)據(jù)存儲于該等高速緩存暫存區(qū)的一 高速緩存暫存區(qū),以及用來在該等高速緩存暫存區(qū)的資料全滿時,將該高速緩存暫存區(qū)的資料寫入該閃存。
10. 根據(jù)權(quán)利要求9所述的存儲系統(tǒng),其特征在于該控制單元還用來 在該第一寫入數(shù)據(jù)的數(shù)據(jù)量大于每一高速緩存暫存區(qū)的數(shù)據(jù)容量且部分的該 第一寫入資料未暫存于該等高速緩存暫存區(qū)的一高速緩存暫存區(qū)時,將該第 一寫入資料寫入該閃存。
11. 根據(jù)權(quán)利要求9所述的存儲系統(tǒng),其特征在于該判斷單元還用來 在該高速緩存單元閑置時間超過一預(yù)定時間時,將該高速緩存單元的資料寫 入該閃存。
12. 根據(jù)權(quán)利要求9所述的存儲系統(tǒng),其特征在于該存儲系統(tǒng)還包含 一主機,該高速緩存單元以及該控制單元設(shè)置于該主機內(nèi)。
13. 根據(jù)權(quán)利要求12所述的存儲系統(tǒng),其特征在于該主機還包含一內(nèi) 存,該控制單元是設(shè)置于該內(nèi)存的軟件程序代碼。
14. 根據(jù)權(quán)利要求9所述的存儲系統(tǒng),其特征在于每一高速緩存暫存區(qū)的數(shù)據(jù)容量是64K字節(jié)或128K字節(jié)。
15. —種改進(jìn)一閃存存取效率的方法,該閃存包含若干個區(qū)塊,每一區(qū)塊包含若干個頁,其特征在于該方法包含提供一高速緩存單元,其包含若干個高速緩存暫存區(qū); 當(dāng)接收一第一寫入請求以將該第一寫入請求的一第一寫入數(shù)據(jù)寫入該閃存時,將該第一寫入數(shù)據(jù)存儲于該等高速緩存暫存區(qū)的一高速緩存暫存區(qū);以及當(dāng)該等高速緩存暫存區(qū)的資料全滿時,將該高速緩存暫存區(qū)的資料寫 入該閃存。
16. 根據(jù)權(quán)利要求15所述的改進(jìn)一閃存存取效率的方法,其特征在于 該方法還包含當(dāng)該第一寫入數(shù)據(jù)的數(shù)據(jù)量大于每一高速緩存暫存區(qū)的數(shù)據(jù)容量且全部 的該第一寫入資料未暫存于該等高速緩存暫存區(qū)時,將該第一寫入資料寫入 該閃存。
17. 根據(jù)權(quán)利要求15所述的改進(jìn)一閃存存取效率的方法,其特征在于 該方法還包含.-當(dāng)該高速緩存單元閑置時間超過一預(yù)定時間時,將該高速緩存單元的 資料寫入該閃存。
全文摘要
一種改進(jìn)閃存存取效率的存儲系統(tǒng)以及方法。本發(fā)明提供一高速緩存單元,用來暫存要寫入閃存的數(shù)據(jù)或是暫存自閃存讀取的數(shù)據(jù)。在讀取過程中,第一次自閃存讀取的數(shù)據(jù)會暫存在高速緩存單元里,所以第二次讀取同一筆數(shù)據(jù)時,就不再需要自閃存讀取數(shù)據(jù),因而大幅縮短自閃存讀取數(shù)據(jù)的準(zhǔn)備時間。在寫入過程中,因為寫入的小型檔案數(shù)據(jù)會先存入高速緩存單元的高速緩存暫存區(qū),待高速緩存單元存滿數(shù)據(jù)后才會一次寫入閃存,這樣可降低寫入閃存的準(zhǔn)備時間。
文檔編號G06F12/08GK101458662SQ20071016097
公開日2009年6月17日 申請日期2007年12月14日 優(yōu)先權(quán)日2007年12月14日
發(fā)明者林鳳書, 林金岷 申請人:創(chuàng)惟科技股份有限公司