本發(fā)明有關于一種快閃存儲器存儲器裝置,特別是一種內部數(shù)據(jù)搬移方法以及使用該方法的裝置。
背景技術:
快閃存儲器裝置通常分為NOR快閃裝置與NAND快閃裝置。NOR快閃裝置為隨機存取裝置,而可于地址腳位上提供任何的地址,用以存取NOR快閃裝置的主裝置(host),并及時地由NOR快閃裝置的數(shù)據(jù)腳位上獲得儲存于該地址上的數(shù)據(jù)。相反地,NAND快閃裝置并非隨機存取,而是序列存取。NAND快閃裝置無法像NOR快閃裝置一樣,可以存取任何隨機地址,主裝置反而需要寫入序列的位元組(bytes)的值到NAND快閃裝置中,用以定義請求命令(command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的地址。地址可指向一個頁面(在快閃存儲器中的一個寫入作業(yè)的最小數(shù)據(jù)塊)或一個區(qū)塊(在快閃存儲器中的一個抹除作業(yè)的最小數(shù)據(jù)塊)。實際上,NAND快閃裝置通常從存儲器單元(memory cells)上讀取或寫入完整的數(shù)頁數(shù)據(jù)。當一整頁的數(shù)據(jù)從陣列讀取到裝置中的緩存器(buffer)后,藉由使用提取信號(strobe signal)順序地敲出(clock out)內容,讓主單元可逐位元組或字元組(words)存取數(shù)據(jù)。
如果區(qū)塊中的部分頁面的數(shù)據(jù)已經(jīng)無效(又稱為過期頁面),讀取區(qū)塊中具有效數(shù)據(jù)的頁面并重新寫入其他之前被抹除的空區(qū)塊。接著,這些被釋放的頁面加上過期數(shù)據(jù),可被寫入新的數(shù)據(jù)。如上所述的程序稱為垃圾搜集(garbage collection)。垃圾搜集的程序牽涉到從快閃存儲器讀取數(shù)據(jù)以及重新寫入數(shù)據(jù)至快閃存儲器。這代表當快閃控制器首些需要讀出整個區(qū)塊,接著將區(qū)塊中擁有有效數(shù)據(jù)的部分頁面寫入。這會大量消耗于快閃控制器以及儲存單元之間的存取介面頻寬,降低整個系統(tǒng)的效能。傳統(tǒng)上,快閃控制器發(fā)送復制回讀命令(copy back read command)驅使儲存單元中的邏輯電路取得有效頁面的數(shù)據(jù)并移動至其中的數(shù)據(jù)緩存器(data buffer),并且發(fā)送復制回寫命令(copy back write command)驅使其中的邏輯電路從數(shù)據(jù)暫存器 取得有效數(shù)據(jù)并寫入另一空區(qū)塊,而不需要經(jīng)由存取介面從儲存單元搬出/入有效數(shù)據(jù)。然而,如果頁面中同時存在有效及無效數(shù)據(jù)??扉W控制器依然需要透過存取介面將整個頁面讀出儲存單元,從讀取頁面中搜集有效數(shù)據(jù),接著,透過存取介面將有效數(shù)據(jù)逐頁寫入儲存單元中的另一空區(qū)塊。因此,本發(fā)明提出一種內部數(shù)據(jù)搬移方法以及使用該方法的裝置,用以克服上述的缺陷。
技術實現(xiàn)要素:
本發(fā)明的實施例提出一種內部數(shù)據(jù)搬移方法,由處理單元執(zhí)行,包含下列步驟。透過一存取介面發(fā)送多個部分復制回讀命令給儲存子單元,每一個部分復制回讀命令指示儲存子單元中的邏輯電路將儲存子單元中的頁面的部分數(shù)據(jù)儲存至儲存子單元中的數(shù)據(jù)緩存器的指定位置。接著,透過存取介面發(fā)送復制回寫命令給儲存子單元,用以將儲存子單元中的數(shù)據(jù)緩存器的數(shù)據(jù)寫入儲存子單元中的新頁面。
本發(fā)明的實施例提出一種內部數(shù)據(jù)搬移裝置,由處理單元執(zhí)行,包含耦接于儲存子單元的存取介面以及處理單元。處理單元透過存取介面發(fā)送部分復制回讀命令給儲存子單元,用以指示儲存子單元中的邏輯電路將儲存子單元中的頁面的部分數(shù)據(jù)儲存至儲存子單元中的數(shù)據(jù)緩存器的指定位置。
附圖說明
圖1是依據(jù)本發(fā)明實施例的快閃存儲器的系統(tǒng)架構示意圖。
圖2是依據(jù)本發(fā)明實施例的存取介面與儲存單元的方塊圖。
圖3是依據(jù)本發(fā)明實施例的一個存取子介面與多個儲存子單元的連接示意圖。
圖4是依據(jù)本發(fā)明實施例的儲存子單元的方塊示意圖。
圖5是依據(jù)本發(fā)明實施例的復制回讀命令以及復制回寫命令的示意圖。
圖6至9是依據(jù)本發(fā)明實施例的部分復制回讀命令(00-xx-35h)的示意圖。
圖10-13是依據(jù)本發(fā)明實施例的部分復制回讀命令(00-35-xx-yyh)的示意圖。
圖14是依據(jù)本發(fā)明實施例的垃圾搜集示意圖。
符號說明
10 系統(tǒng); 110 處理單元;
150 存取介面; 160 主裝置;
170 存取介面; 170_0~170_j 存取子介面;
180 儲存單元; 180_0_0~180_j_i 儲存子單元;
320_0_0~320_0_i 芯片致能控制信號;
410 數(shù)據(jù)緩存器; 420 邏輯電路;
430_0~430_3 數(shù)據(jù)區(qū)塊;
510 復制回讀命令; 520 復制回寫命令;
tR 讀取數(shù)據(jù)時間; tPROG 寫入數(shù)據(jù)時間;
610 來源地址; 630 部分復制回寫指令碼;
650 起始行; 670 結束行;
690 目的地址; 710 長度;
810 來源地址; 830 部分復制回寫指令碼;
850 結束行; 870 目的地址;
910 長度; 1010 部分復制回寫指令碼;
1030 起始行; 1050 結束行;
1070 目的地址;
1090 部分復制回寫命令的確認;
1110 長度; 1210 來源地址;
1230 部分復制回寫指令碼;
1250 結束行; 1270 目的地址;
1290 部分復制回寫命令的確認;
1310 長度; P1~P4 頁面;
1410、1430、1450、1470 區(qū)段數(shù)據(jù)。
具體實施方式
以下說明為完成發(fā)明的較佳實現(xiàn)方式,其目的在于描述本發(fā)明的基本精神,但并不用以限定本發(fā)明。實際的發(fā)明內容必須參考之后的權利要求范圍。
必須了解的是,使用于本說明書中的“包含”、“包括”等詞,用以表示存在特定的技術特征、數(shù)值、方法步驟、作業(yè)處理、元件以及/或組件,但并不排除可加上更多的技術特征、數(shù)值、方法步驟、作業(yè)處理、元件、組件,或以上的任意組合。
在申請文本中使用如”第一”、"第二"、"第三"等詞用來修飾權利要求中的元件,并非用來表示之間具有優(yōu)先權順序,先行關系,或者是一個元件先于另一個元件,或者是執(zhí)行方法步驟時的時間先后順序,僅用來區(qū)別具有相同名字的元件。
圖1是依據(jù)本發(fā)明實施例的快閃存儲器的系統(tǒng)架構示意圖??扉W存儲器的系統(tǒng)架構10中包含處理單元110,用以寫入數(shù)據(jù)到儲存單元180中的指定地址,以及從儲存單元180中的指定地址讀取數(shù)據(jù)。詳細來說,處理單元110透過存取介面170寫入數(shù)據(jù)到儲存單元180中的指定地址,以及從儲存單元180中的指定地址讀取數(shù)據(jù)。系統(tǒng)架構10使用數(shù)個電子信號來協(xié)調處理單元110與儲存單元180間的數(shù)據(jù)與命令傳遞,包含數(shù)據(jù)線(data line)、時脈信號(clock signal)與控制信號(control signal)。數(shù)據(jù)線可用以傳遞命令、地址、讀出及寫入的數(shù)據(jù);控制信號線可用以傳遞芯片致能(chip enable,CE)、地址提取致能(address latch enable,ALE)、命令提取致能(command latch enable,CLE)、寫入致能(write enable,WE)等控制信號。存取介面170可采用雙倍數(shù)據(jù)率(double data rate,DDR)通訊協(xié)定與儲存單元180溝通,例如,開放NAND快閃(open NAND flash interface,ONFI)、雙倍數(shù)據(jù)率開關(DDR toggle)或其他介面。處理單元110另可使用存取介面150透過指定通訊協(xié)定與主裝置160進行溝通,例如,通用串行總線(universal serial bus,USB)、先進技術附著(advanced technology attachment,ATA)、串行先進技術附著(serial advanced technology attachment,SATA)、快速周邊元件互聯(lián)(peripheral component interconnect express,PCI-E)或其他介面。
儲存單元180可包含多個儲存子單元,每一個儲存子單元實施于一個晶粒(die)上,各自使用關聯(lián)的存取子介面與處理單元110進行溝通。圖2是依據(jù)本發(fā)明實施例的存取介面與儲存單元的方塊圖。快閃存儲器10可包含j+1個存取子介面170_0至170_j,存取子介面又可稱為通道(channel),每一個存取子介面連接i+1個儲存子單元。換句話說,i+1個儲存子單元共享一個存取子介面。例如,當快閃存儲器10包含4個通道(j=3)且每一個通道連接4個儲存單元(i=3)時,快閃存儲器10一共擁有16個儲存單元180_0_0至180_j_i。處理單元110可驅動存取子介面170_0至170_j中之一,從指定的儲存子單元讀取數(shù)據(jù)。每個儲存子單元擁有獨立的芯片致能(CE)控制信號。換句話說,當欲對指定的儲存子單元進行數(shù)據(jù)讀取時,需要驅動關聯(lián)的存取子介面致能此儲存子單元的芯片致能控制信號。圖3是依據(jù)本發(fā)明實施例的一個存取子介面與個儲存子單元的連接示意圖。處理單元110可透過存取子介 面170_0使用獨立的芯片致能控制信號320_0_0至320_0_i來從連接的儲存子單元180_0_0至180_0_i中選擇出其中一者,接著,透過共享的數(shù)據(jù)線310_0從選擇出的儲存子單元的指定位置讀取數(shù)據(jù)。
圖4是依據(jù)本發(fā)明實施例的儲存子單元的方塊示意圖。以儲存子單元180_0_0為例,包含四個區(qū)塊430_0至430_3,每個區(qū)塊可儲存多個頁面的數(shù)據(jù),并且每個頁面可儲存多個區(qū)段(section)的數(shù)據(jù)。一個區(qū)段的長度為主裝置160管理數(shù)據(jù)的最小單元,例如2K、4K、8K位元組。圖5是依據(jù)本發(fā)明實施例的復制回讀命令以及復制回寫命令的示意圖。為進行逐頁搬移的垃圾搜集程序,一個復制回讀命令(00h-35h)510搭配使用一個復制回寫命令(85h-10h)530。首先,將”00h”透過數(shù)據(jù)線310_0寫入邏輯電路420中的命令暫存器(command register),接著,使用五個時脈周期寫入來源地址。于輸入來源地址后,將”35h”寫入其中的命令暫存器,致使邏輯電路420將一個區(qū)塊中的特定頁面?zhèn)魉椭翑?shù)據(jù)緩存器410。于已發(fā)送復制回讀命令(00h-35h)510后并信號R/B#提升至高電位,復制回寫命令(85h-10h)530可以寫入至其中的命令暫存器。復制回寫命令(85h-10h)530用以從數(shù)據(jù)緩存器410傳送至邏輯電路420的數(shù)據(jù)暫存器以及開始寫入新目的頁面?!?5h”、目的地址(五個時脈周期)及”10h”透過數(shù)據(jù)線410_0依序地寫入儲存子單元180_0_0。寫入”10h”后,當邏輯電路420寫入新頁面時,信號R/B#降低至低電位。
經(jīng)過多次的存取后,一個頁面可能包含有效及無效的數(shù)據(jù)。為解決如上所述的缺陷,本發(fā)明實施例提出一種部分復制回讀命令(partial copy back read command),用以驅使儲存單元180_0_0中的邏輯電路420取得特定頁面的特定區(qū)段的數(shù)據(jù)并移動至其中的數(shù)據(jù)暫存器410中的指定位置。以下舉出數(shù)個部分復制回讀命令的范例。圖6至9是依據(jù)本發(fā)明實施例的部分復制回讀命令(00-xx-35h)的示意圖。參考圖6,處理單元110將”00h”透過存取子介面170_0使用數(shù)據(jù)線310_0寫入邏輯電路420中的命令暫存器,接著,使用五個時脈周期寫入來源地址610?!?0h”為讀取指令碼。來源地址610包含區(qū)塊編號(二時脈周期)及頁面標號(二時脈周期)。于輸入來源地址610后,將”xxh”630寫入其中的命令暫存器,其中”xx”可為任意的二個十六進位數(shù)字,為部分復制回讀指令碼。于輸入”xxh”后,處理單元110將”00h”透過存取子介面170_0使用數(shù)據(jù)線310_0依序寫入起始行(二時脈周期)650、結束行(二時脈周期)670以及目的地址(二時脈周期)690。起始行650及結束行670可分別包含行編號(column numbers),用以指出來源頁面中欲讀取的行區(qū)間。目的 地址690包含一個行編號,用以指出欲儲存至數(shù)據(jù)緩存器410的起始行。最后,將”35h”寫入其中的命令暫存器,致使邏輯電路420將一個區(qū)塊中特定頁面的行區(qū)間數(shù)據(jù)傳送至數(shù)據(jù)緩存器410中的特定位置?!?5h”代表復制回讀命令的確認(confirm)。部分復制回讀命令相同于如圖5復制回讀命令,始于”00h”且結束于”35h”,使得部分復制回讀命令具有向后相容能力(backward compatibility)。圖7所示的部分復制回讀命令是由圖6變化而來。于寫入”xxh”后,處理單元110可透過存取子介面170_0使用數(shù)據(jù)線310_0依序寫入起始行(二時脈周期)650以及長度(二時脈周期)710,用以指出來源頁面中欲讀取的行區(qū)間。
參考圖8,處理單元110將”00h”透過存取子介面170_0使用數(shù)據(jù)線310_0寫入邏輯電路420中的命令暫存器,接著,使用六個時脈周期寫入來源地址810。來源地址810包含區(qū)塊編號(二時脈周期)、頁面標號(二時脈周期)以及起始行編號(二時脈周期)。于輸入來源地址810后,將”xxh”830寫入其中的命令暫存器,其中”xx”可為任意的兩個十六進位數(shù)字,用以指示此為部分復制回讀指令碼。于輸入”xxh”830后,處理單元110將”00h”透過存取子介面170_0使用數(shù)據(jù)線310_0依序寫入結束行(二時脈周期)850以及目的地址(二時脈周期)870。結束行850可包含行編號,搭配來源地址810中的起始行編號,用以指出來源頁面中欲讀取的行區(qū)間。目的地址870包含一個行編號,用以指出欲儲存至數(shù)據(jù)緩存器410的起始行。最后,將”35h”寫入其中的命令暫存器,致使邏輯電路420將一個區(qū)塊中的特定頁面的行區(qū)間數(shù)據(jù)傳送至數(shù)據(jù)緩存器410中的特定位置。圖9所示的部分復制回讀命令是由圖8變化而來。于寫入”xxh”830后,處理單元110可透過存取子介面170_0使用數(shù)據(jù)線310_0寫入長度(二時脈周期)910,搭配來源地址810中的起始行編號,用以指出來源頁面中欲讀取的行區(qū)間。
圖10至13是依據(jù)本發(fā)明實施例的部分復制回讀命令(00-35-xx-yyh)的示意圖。參考圖10的范例,部分復制回讀命令包含如5圖所示的復制回讀命令以及一個自訂的命令。于自訂的命令中,處理單元110將”xxh”1010透過存取子介面170_0使用數(shù)據(jù)線310_0寫入邏輯電路420中的命令暫存器,其中”xx”可為任意的二個十六進位數(shù)字,用以指示此為部分復制回讀指令碼。接著,依序寫入起始行(二時脈周期)1030、結束行(二時脈周期)1050以及目的地址(二時脈周期)1070。起始行1030及結束行1050可分別包含行編號,用以指出來源頁面中欲讀取的行區(qū)間。目的地址1070包含一個行編號,用以指出欲儲存至數(shù)據(jù)緩存器410的起始行。最后, 將”yyh”1090寫入其中的命令暫存器,致使邏輯電路420將一個區(qū)塊中特定頁面的行區(qū)間數(shù)據(jù)傳送至數(shù)據(jù)緩存器410中的特定位置,其中”yy”可為任意的二個十六進位數(shù)字?!眣yh”1090代表部分復制回讀命令的確認。圖11所示的部分復制回讀命令是由圖10變化而來。于寫入”xxh”1010后,處理單元110可透過存取子介面170_0使用數(shù)據(jù)線310_0依序寫入起始行(二時脈周期)1030以及長度(二時脈周期)1110,用以指出來源頁面中欲讀取的行區(qū)間。
參考圖12的范例,部分復制回讀命令包含如5圖所示的復制回讀命令,但是來源地址1210包含區(qū)塊編號(二時脈周期)及頁面標號(二時脈周期)以及起始行編號(二時脈周期)。于自訂的命令中,處理單元110將”xxh”1230透過存取子介面170_0使用數(shù)據(jù)線310_0寫入邏輯電路420中的命令暫存器,其中”xx”可為任意的二個十六進位數(shù)字,用以指示此為部分復制回讀指令碼。接著,依序寫入結束行(二時脈周期)1250以及目的地址(二時脈周期)1270。結束行1250可包含行編號,搭配來源地址1210中的起始行編號,用以指出來源頁面中欲讀取的行區(qū)間。目的地址1270包含一個行編號,用以指出欲儲存至數(shù)據(jù)緩存器410的起始行。最后,將”yyh”1290寫入其中的命令暫存器,致使邏輯電路420將一個區(qū)塊中的特定頁面的行區(qū)間數(shù)據(jù)傳送至數(shù)據(jù)緩存器410中的特定位置,其中”yy”可為任意的二個十六進位數(shù)字?!眣yh”1290代表部分復制回讀命令的確認。圖13所示的部分復制回讀命令是由圖12變化而來。于寫入”xxh”1230后,處理單元110可透過存取子介面170_0使用數(shù)據(jù)線310_0寫入長度(二時脈周期)1310,搭配來源地址1210中的起始行編號,用以指出來源頁面中欲讀取的行區(qū)間。
圖14是依據(jù)本發(fā)明實施例的垃圾搜集示意圖。假設一個頁面可儲存四個區(qū)段的數(shù)據(jù):經(jīng)過多次存取后,區(qū)塊430_0中的頁面P1的第0個區(qū)段為有效數(shù)據(jù),其余為無效數(shù)據(jù)。區(qū)塊430_1中的頁面P2的第1個區(qū)段為有效數(shù)據(jù),其余為無效數(shù)據(jù)。區(qū)塊430_2中的頁面P3的第2個及第3個區(qū)段為有效數(shù)據(jù),其余為無效數(shù)據(jù)。為了將頁面P1至P3中的有效數(shù)據(jù)搜集成一個頁面以儲存至區(qū)塊430_3中的新頁面P4,可使用如圖6至13所述的部分復制回讀命令以及如5圖所示的復制回寫命令來完成。詳細來說,處理單元110可透過存取子介面170_0使用數(shù)據(jù)線310_0傳送部分復制回讀命令,用以指示邏輯電路420將區(qū)塊430_0中的頁面P1的第0個區(qū)段的數(shù)據(jù)儲存至數(shù)據(jù)緩存器410的第0個區(qū)段。接著,使用二個部分復制回讀命令,用以分別指示邏輯電路420將區(qū)塊430_1中的頁面P2的第1個區(qū)段的數(shù)據(jù) 儲存至數(shù)據(jù)緩存器410的第1個區(qū)段,以及將區(qū)塊430_2中的頁面P3的第3至4個區(qū)段的數(shù)據(jù)儲存至數(shù)據(jù)緩存器410的第3至4個區(qū)段。最后,處理單元110可透過存取子介面170_0使用數(shù)據(jù)線310_0傳送復制回寫命令,用以指示邏輯電路420將數(shù)據(jù)緩存器410的數(shù)據(jù)寫入?yún)^(qū)塊430_3中的頁面P4。
雖然圖1至4中包含了以上描述的元件,但不排除在不違反發(fā)明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。雖然本發(fā)明使用以上實施例進行說明,但需要注意的是,這些描述并非用以限縮本發(fā)明。相反地,此發(fā)明涵蓋了熟悉本技術領域者顯而易見的修改與相似設置。所以,申請權利要求范圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。