數(shù)據(jù)傳輸方法、存儲器控制器、數(shù)據(jù)傳輸系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種數(shù)據(jù)傳輸方法、存儲器控制器與數(shù)據(jù)傳輸系統(tǒng)。主機系統(tǒng)執(zhí)行多個線程以通過使用者接口裝置接口對存儲器控制器下達指令。此方法包括:由存儲器控制器接收來自主機系統(tǒng)的指令包;由存儲器控制器根據(jù)指令包執(zhí)行對應(yīng)一指令的操作以產(chǎn)生響應(yīng)數(shù)據(jù),其被分割為至少一響應(yīng)數(shù)據(jù)包;由存儲器控制器傳送響應(yīng)包與響應(yīng)數(shù)據(jù)包至主機系統(tǒng);由主機系統(tǒng)根據(jù)響應(yīng)包判斷響應(yīng)數(shù)據(jù)包的其中之一是否遺失;若有響應(yīng)數(shù)據(jù)包遺失,由主機系統(tǒng)傳送重送包至存儲器控制器要求重新傳送遺失的響應(yīng)數(shù)據(jù)包。由此,可以提升傳輸?shù)臄?shù)據(jù)量并確保數(shù)據(jù)的完整性。
【專利說明】數(shù)據(jù)傳輸方法、存儲器控制器、數(shù)據(jù)傳輸系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明是有關(guān)于一種數(shù)據(jù)傳輸方法,且特別是有關(guān)于一種與使用者接口裝置類別有關(guān)的數(shù)據(jù)傳輸方法、存儲器控制器、數(shù)據(jù)傳輸系統(tǒng)。
【背景技術(shù)】
[0002]數(shù)碼相機、移動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對存儲媒體的需求也急速增加。由于可擦寫式非易失性存儲器模塊(例如,閃速存儲器)具有數(shù)據(jù)非易失性、省電、體積小,以及無機械結(jié)構(gòu)等特性,所以非常適合內(nèi)置在上述所舉例的各種便攜式多媒體裝置中。
[0003]一般來說,一個閃速存儲器會由一個存儲器控制器所控制,并且此存儲器控制器會與一個主機系統(tǒng)合并使用。使用者可以通過主機系統(tǒng)上的應(yīng)用程序下達制造商指令(vendor command)給此存儲器控制器。然而,在一些情況下,這些制造商指令的類型為小型電腦系統(tǒng)接口(Small Computer Systemlnterface, SCSI)指令。若使用者或應(yīng)用程序沒有操作系統(tǒng)的管理者(administrator)權(quán)限,則應(yīng)用程序無法下達SCSI指令給存儲器控制器。一個解決的方式是通過使用者接口裝置(Human Interface Device, HID)接口來傳送數(shù)據(jù)或指令。然而,HID接口的傳輸帶寬并不高,在一些情況下并不能滿足應(yīng)用程序的需求。并且,若主機系統(tǒng)上有多個線程要傳送數(shù)據(jù)給存儲器控制器,一份數(shù)據(jù)可能會傳送給錯誤的線程,因此不能保證主機系統(tǒng)與存儲器控制器之間傳輸?shù)臄?shù)據(jù)的完整性。
[0004]因此,如何在HID接口下提升傳輸?shù)臄?shù)據(jù)量,并且確保數(shù)據(jù)的完整性,為此領(lǐng)域技術(shù)人員所關(guān)心的議題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的范例實施例中提出一種數(shù)據(jù)傳輸方法、存儲器控制器、與數(shù)據(jù)傳輸系統(tǒng),其可以提升傳輸?shù)臄?shù)據(jù)量并且確保數(shù)據(jù)的完整性。
[0006]本發(fā)明一范例實施例提出一種數(shù)據(jù)傳輸方法,用于一存儲器控制器。此存儲器控制器用以電性連接至一主機系統(tǒng),并且主機系統(tǒng)用以執(zhí)行多個線程以通過至少一個使用者接口裝置接口對存儲器控制器下達多個指令。上述每一個指令是對應(yīng)于上述線程的其中之一。多個包會被傳送在存儲器控制器與主機系統(tǒng)之間,這些包符合使用者接口裝置類別,并且每一個包至少包括指令序列欄位與數(shù)據(jù)欄位。此數(shù)據(jù)傳輸方法包括:由存儲器控制器從主機系統(tǒng)接收上述包中的指令包,其中指令包的指令序列欄位記錄第一指令,并且指令包的數(shù)據(jù)欄位記錄第一指令的內(nèi)容;由存儲器控制器至少根據(jù)第一指令的內(nèi)容執(zhí)行對應(yīng)第一指令的一操作以產(chǎn)生響應(yīng)數(shù)據(jù),其中響應(yīng)數(shù)據(jù)被分割為響應(yīng)數(shù)據(jù)包;由存儲器控制器傳送一響應(yīng)包至主機系統(tǒng),此響應(yīng)包的指令序列欄位記錄第一指令;由存儲器控制器傳送響應(yīng)數(shù)據(jù)包至主機系統(tǒng),此響應(yīng)數(shù)據(jù)包的指令序列欄位記錄第一指令;由主機系統(tǒng)至少根據(jù)響應(yīng)包判斷上述響應(yīng)數(shù)據(jù)包的其中之一是否遺失;若主機系統(tǒng)判斷響應(yīng)數(shù)據(jù)包中的第一響應(yīng)數(shù)據(jù)包遺失,由主機系統(tǒng)傳送一重送包至存儲器控制器以要求存儲器控制器重新傳送第一響應(yīng)數(shù)據(jù)包,其中重送包的指令序列欄位記錄第一指令;以及,由存儲器控制器重新傳送第一響應(yīng)數(shù)據(jù)包至主機系統(tǒng)以響應(yīng)重送包。
[0007]在一范例實施例中,上述的指令包的數(shù)據(jù)欄位還記錄指令數(shù)據(jù)的長度。
[0008]在一范例實施例中,上述的指令包包括第一指令包與第二指令包。第一指令包的指令序列欄位記錄第一指令,而第二指令包的指令序列欄位記錄第二指令。上述的指令數(shù)據(jù)是對應(yīng)于第二指令,并且此指令數(shù)據(jù)至少被分割為一個傳送數(shù)據(jù)包。上述每一個包還包括傳輸序列欄位。此數(shù)據(jù)傳輸方法還包括:由存儲器控制器接收來自主機系統(tǒng)的傳送數(shù)據(jù)包。其中傳送數(shù)據(jù)包的指令序列欄位記錄第二指令,傳送數(shù)據(jù)包的傳輸序列欄位記錄傳送數(shù)據(jù)包的一編號,并且傳送數(shù)據(jù)包的數(shù)據(jù)欄位記錄至少部分的指令數(shù)據(jù)。此方法還包括:由存儲器控制器根據(jù)第二指令包與指令數(shù)據(jù)執(zhí)行對應(yīng)于第二指令的操作。
[0009]在一范例實施例中,上述的使用者接口裝置接口包括第一使用者接口裝置接口與第二使用者接口裝置接口,并且第一使用者接口裝置接口不同于第二使用者接口裝置接口。主機系統(tǒng)是通過第一使用者接口裝置接口傳送第一指令包,并且主機系統(tǒng)是通過第二使用者接口裝置接口傳送第二指令包。
[0010]在一范例實施例中,上述的響應(yīng)包的數(shù)據(jù)欄位記錄響應(yīng)數(shù)據(jù)的長度。
[0011]在一范例實施例中,第一響應(yīng)數(shù)據(jù)包的傳輸序列欄位記錄第一響應(yīng)數(shù)據(jù)包的一編號,并且第一響應(yīng)數(shù)據(jù)包的數(shù)據(jù)欄位記錄至少部分的響應(yīng)數(shù)據(jù)。
[0012]在一范例實施例中,上述由主機系統(tǒng)根據(jù)響應(yīng)包判斷響應(yīng)數(shù)據(jù)包的其中之一是否遺失的步驟包括:由主機系統(tǒng)根據(jù)響應(yīng)數(shù)據(jù)的長度以及響應(yīng)數(shù)據(jù)包的傳輸序列欄位判斷響應(yīng)數(shù)據(jù)包的其中之一是否遺失。上述由主機系統(tǒng)傳送重送包至存儲器控制器的步驟還包括:由主機系統(tǒng)記錄第一響應(yīng)數(shù)據(jù)包的編號在重送包的傳輸序列欄位中。
[0013]在一范例實施例中,上述的數(shù)據(jù)傳輸方法還包括:由存儲器控制器傳送一狀態(tài)包至主機系統(tǒng),其中狀態(tài)包的數(shù)據(jù)欄位記錄存儲器控制器的狀態(tài)。
[0014]以另外一個角度來說,本發(fā)明一范例實施例提出一種存儲器控制器,用于控制一可擦寫式非易失性存儲器模塊。此存儲器控制器包括主機接口、存儲器接口與存儲器管理電路。主機接口是用以電性連接至上述的主機系統(tǒng)。存儲器接口是用以電性連接至可擦寫式非易失性存儲器模塊。存儲器管理電路是電性連接至主機接口與存儲器接口,用以從主機系統(tǒng)接收至少一個指令包,其中指令包的指令序列欄位記錄第一指令,并且指令包的數(shù)據(jù)欄位記錄第一指令的內(nèi)容。存儲器管理電路用以至少根據(jù)第一指令的內(nèi)容執(zhí)行對應(yīng)第一指令的操作以產(chǎn)生響應(yīng)數(shù)據(jù),而此響應(yīng)數(shù)據(jù)被分割為至少一個響應(yīng)數(shù)據(jù)包。存儲器管理電路用以傳送一響應(yīng)包至主機系統(tǒng),并且此響應(yīng)包的指令序列欄位記錄第一指令。存儲器管理電路用以傳送此響應(yīng)數(shù)據(jù)包至主機系統(tǒng),其中響應(yīng)數(shù)據(jù)包的指令序列欄位記錄第一指令。若主機系統(tǒng)判斷響應(yīng)數(shù)據(jù)包中的一個第一響應(yīng)數(shù)據(jù)包遺失,存儲器管理電路用以從主機系統(tǒng)接收一個重送包。此重送包的指令序列欄位是記錄第一指令。存儲器管理電路用以重新傳送第一響應(yīng)數(shù)據(jù)包至主機系統(tǒng)以響應(yīng)上述的重送包。
[0015]在一范例實施例中,上述的存儲器管理電路還用以接收來自主機系統(tǒng)的傳送數(shù)據(jù)包。此傳送數(shù)據(jù)包的指令序列欄位記錄第二指令,傳送數(shù)據(jù)包的傳輸序列欄位記錄傳送數(shù)據(jù)包的編號,并且傳送數(shù)據(jù)包的數(shù)據(jù)欄位記錄至少部分的指令數(shù)據(jù)。存儲器管理電路還用以根據(jù)第二指令包與指令數(shù)據(jù)執(zhí)行對應(yīng)于第二指令的操作。[0016]在一范例實施例中,上述的存儲器管理電路還用以傳送狀態(tài)包至主機系統(tǒng)。狀態(tài)包的數(shù)據(jù)欄位會記錄存儲器控制器的狀態(tài)。
[0017]以另一個角度來說,本發(fā)明提出一種數(shù)據(jù)傳輸系統(tǒng),包括上述的主機系統(tǒng)與存儲器存儲裝置。主機系統(tǒng)用以執(zhí)行多個線程以通過至少一個使用者接口裝置接口對存儲器存儲裝置下達多個指令。上述的包是傳送在主機系統(tǒng)與存儲器存儲裝置之間。存儲器存儲裝置用以從主機系統(tǒng)接收至少一個指令包。此指令包的指令序列欄位記錄第一指令,并且指令包的數(shù)據(jù)欄位記錄第一指令的內(nèi)容。存儲器存儲裝置用以至少根據(jù)第一指令的內(nèi)容執(zhí)行對應(yīng)第一指令的操作以產(chǎn)生響應(yīng)數(shù)據(jù),并且此響應(yīng)數(shù)據(jù)會被分割為至少一個響應(yīng)數(shù)據(jù)包。存儲器存儲裝置用以傳送一響應(yīng)包至主機系統(tǒng),其中響應(yīng)包的指令序列欄位記錄第一指令。存儲器存儲裝置也用以傳送上述的響應(yīng)數(shù)據(jù)包至主機系統(tǒng),其中響應(yīng)數(shù)據(jù)包的指令序列欄位記錄第一指令。主機系統(tǒng)用以至少根據(jù)響應(yīng)包判斷上述響應(yīng)數(shù)據(jù)包的其中之一是否遺失。若主機系統(tǒng)判斷響應(yīng)數(shù)據(jù)包中的一個第一響應(yīng)數(shù)據(jù)包遺失,主機系統(tǒng)用以傳送一重送包至存儲器存儲裝置以要求存儲器存儲裝置重新傳送第一響應(yīng)數(shù)據(jù)包,其中重送包的指令序列欄位記錄第一指令。存儲器存儲裝置還用以重新傳送第一響應(yīng)數(shù)據(jù)包至主機系統(tǒng)以響應(yīng)重送包。
[0018]在一范例實施例中,上述的存儲器存儲裝置還用以接收來自主機系統(tǒng)的傳送數(shù)據(jù)包。此傳送數(shù)據(jù)包的指令序列欄位記錄第二指令,傳送數(shù)據(jù)包的傳輸序列欄位記錄傳送數(shù)據(jù)包的編號,并且傳送數(shù)據(jù)包的數(shù)據(jù)欄位記錄至少部分的指令數(shù)據(jù)。存儲器存儲裝置還用以根據(jù)上述的第二指令包與指令數(shù)據(jù)執(zhí)行對應(yīng)于第二指令的操作。
[0019]在一范例實施例中,上述主機系統(tǒng)根據(jù)響應(yīng)包判斷響應(yīng)數(shù)據(jù)包的其中之一是否遺失的操作包括:主機系統(tǒng)根據(jù)響應(yīng)數(shù)據(jù)的長度以及響應(yīng)數(shù)據(jù)包的傳輸序列欄位判斷響應(yīng)數(shù)據(jù)包的其中之一是否遺失。上述主機系統(tǒng)傳送重送包至控制器的操作還包括:主機系統(tǒng)記錄第一響應(yīng)數(shù)據(jù)包的編號在重送包的傳輸序列欄位中。
[0020]在一范例實施例中,上述的存儲器存儲裝置還用以傳送狀態(tài)包至主機系統(tǒng),其中狀態(tài)包的數(shù)據(jù)欄位記錄存儲器存儲裝置的狀態(tài)。
[0021]基于上述,在本發(fā)明范例實施例所提出的數(shù)據(jù)傳輸方法、存儲器控制器與數(shù)據(jù)傳輸系統(tǒng)中,由于遺失的響應(yīng)數(shù)據(jù)包會被重新傳送,由此可以保證數(shù)據(jù)的完整性。另一方面,每一個指令可以獨立地被執(zhí)行,因此可以增加傳輸數(shù)據(jù)量與傳輸速度。
[0022]為讓本發(fā)明的上述特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合附圖作詳細說明如下。
【專利附圖】
【附圖說明】
[0023]圖1A是根據(jù)一范例實施例所示出的主機系統(tǒng)與存儲器存儲裝置;
[0024]圖1B是根據(jù)一范例實施例所示出的電腦、輸入/輸出裝置與存儲器存儲裝置的示意圖;
[0025]圖1C是根據(jù)一范例實施例所示出的主機系統(tǒng)與存儲器存儲裝置的示意圖;
[0026]圖2是示出圖1A所示的存儲器存儲裝置的概要方塊圖;
[0027]圖3是根據(jù)一范例實施例所示出的存儲器控制器的概要方塊圖;
[0028]圖4是根據(jù)一范例實施例示出主機系統(tǒng)與存儲器存儲裝置的傳輸層級示意圖;[0029]圖5是根據(jù)一范例實施例示出一個包的示意圖;
[0030]圖6是根據(jù)一范例實施例示出傳送包的流程示意圖;
[0031]圖7是根據(jù)一范例實施例示出包遺失的流程示意圖;
[0032]圖8是根據(jù)一范例實施例示出數(shù)據(jù)傳輸方法的流程圖。
[0033]附圖標(biāo)記說明:
[0034]1000:主機系統(tǒng);
[0035]1100:電腦;
[0036]1102:微處理器;
[0037]1104:隨機存取存儲器;
[0038]1105:應(yīng)用程序;
[0039]1106:輸入/輸出裝置;
[0040]1107:操作系統(tǒng);
[0041 ]1108:系統(tǒng)總線;
[0042]1110:數(shù)據(jù)傳輸接口;
[0043]1202:鼠標(biāo);
[0044]1204:鍵盤;
[0045]1206:顯示器;
[0046]1208:打印機;
[0047]1212:U 盤;
[0048]1214:存儲卡;
[0049]1216:固態(tài)硬盤;
[0050]1310:數(shù)碼相機;
[0051]1312:SD 卡;
[0052]1314:MMC 卡;
[0053]1316:存儲卡;
[0054]1318:CF 卡;
[0055]1320:嵌入式存儲裝置;
[0056]100:存儲器存儲裝置;
[0057]102:連接器;
[0058]104:存儲器控制器;
[0059]106:可擦寫式非易失性存儲器模塊;
[0060]304(0)?304 (R):實體擦除單元;
[0061]202:存儲器管理電路;
[0062]204:主機接口;
[0063]206:存儲器接口;
[0064]252:緩沖存儲器;
[0065]254:電源管理電路;
[0066]256:錯誤檢查與校正電路;
[0067]401、411:實體層;[0068]402、412:傳輸層;
[0069]403,413:應(yīng)用層;
[0070]500、601 ?619、701:包;
[0071]510:包類型欄位;
[0072]520:指令序列欄位;
[0073]530:傳輸序列欄位;
[0074]540:數(shù)據(jù)欄位;
[0075]S802、S804、S806、S808、S810、S812、S814:數(shù)據(jù)傳輸方法的步驟。
【具體實施方式】
[0076]—般而言,存儲器存儲裝置(也稱,存儲器存儲系統(tǒng))包括可擦寫式非易失性存儲器模塊與控制器(也稱,控制電路)。通常存儲器存儲裝置是與主機系統(tǒng)一起使用,以使主機系統(tǒng)可將數(shù)據(jù)寫入至存儲器存儲裝置或從存儲器存儲裝置中讀取數(shù)據(jù)。
[0077]圖1A是根據(jù)一范例實施例所示出的主機系統(tǒng)與存儲器存儲裝置。
[0078]請參照圖1A,主機系統(tǒng)1000 —般包括電腦1100與輸入/輸出(input/output,I/O)裝置1106。電腦1100包括微處理器1102、隨機存取存儲器(random access memory,RAM) 1104、系統(tǒng)總線1108與數(shù)據(jù)傳輸接口 1110。隨機存取存儲器1104中存儲了應(yīng)用程序1105與操作系統(tǒng)1107。圖1B是根據(jù)一范例實施例所示出的電腦、輸入/輸出裝置與存儲器存儲裝置的示意圖,參照圖1B,輸入/輸出裝置1106包括如圖1B的鼠標(biāo)1202、鍵盤1204、顯示器1206與打印機1208。必須了解的是,圖1B所示的裝置非限制輸入/輸出裝置1106,輸入/輸出裝置1106可還包括其他裝置。
[0079]在本發(fā)明實施例中,存儲器存儲裝置100是通過數(shù)據(jù)傳輸接口 1110與主機系統(tǒng)1000的其他元件電性連接。通過微處理器1102、隨機存取存儲器1104與輸入/輸出裝置1106的運作可將數(shù)據(jù)寫入至存儲器存儲裝置100或從存儲器存儲裝置100中讀取數(shù)據(jù)。例如,存儲器存儲裝置100可以是如圖1B所示的U盤1212、存儲卡1214或固態(tài)硬盤(SolidState Drive, SSD) 1216等的可擦寫式非易失性存儲器存儲裝置。
[0080]一般而言,主機系統(tǒng)1000為可實質(zhì)地與存儲器存儲裝置100配合以存儲數(shù)據(jù)的任意系統(tǒng)。雖然在本范例實施例中,主機系統(tǒng)1000是以電腦系統(tǒng)來作說明,然而,在本發(fā)明另一范例實施例中主機系統(tǒng)1000可以是數(shù)碼相機、攝像機、通信裝置、音頻播放器或視頻播放器等系統(tǒng)。例如,圖1C是根據(jù)一范例實施例所示出的主機系統(tǒng)與存儲器存儲裝置的示意圖,參照圖1C,在主機系統(tǒng)為數(shù)碼相機(攝像機)1310時,可擦寫式非易失性存儲器存儲裝置則為其所使用的SD卡1312、MMC卡1314、記憶棒(memory stick) 1316,CF卡1318或嵌入式存儲裝置1320(如圖1C所示)。嵌入式存儲裝置1320包括嵌入式多媒體卡(EmbeddedMMC, eMMC)。值得一提的是,嵌入式多媒體卡是直接電性連接在主機系統(tǒng)的基板上。
[0081]圖2是示出圖1A所示的存儲器存儲裝置的概要方塊圖。
[0082]請同時參照圖1A與圖2,存儲器存儲裝置100包括連接器102、存儲器控制器104與可擦寫式非易失性存儲器模塊106。
[0083]在本范例實施例中,連接器102是兼容于通用串行總線(Universal SerialBus,USB)標(biāo)準(zhǔn)。USB標(biāo)準(zhǔn)定義了使用者接口裝置類別(Human Interface Deviceclass, HIDclass)與大容量存儲裝置類別(Mass Storage Device class),使得主機系統(tǒng)1000可以通過其中一個類別來傳送指令或數(shù)據(jù)給連接器102。若主機系統(tǒng)1000要通過HID類別來傳送指令或數(shù)據(jù),主機系統(tǒng)1000上的應(yīng)用程序1105會呼叫操作系統(tǒng)1107提供的應(yīng)用程序接口(Application Interface, API),并且應(yīng)用程序接口會通過存儲器存儲裝置100的驅(qū)動程序(driver)來傳送指令或數(shù)據(jù)。連接器102可支持一或多個HID接口,應(yīng)用程序1105可通過這些HID接口來傳送指令或數(shù)據(jù)至連接器102。然而,應(yīng)用程序1105也可以通過大容量存儲裝置類別來傳送指令或數(shù)據(jù)給連接器102,本發(fā)明并不在此限。
[0084]然而,必須了解的是,在其他范例實施例中,連接器102也可以是符合其他適合的標(biāo)準(zhǔn)。
[0085]存儲器控制器104用以執(zhí)行以硬件形式或固件形式實作的多個邏輯門或控制指令,并且根據(jù)主機系統(tǒng)1000的指令在可擦寫式非易失性存儲器模塊106中進行數(shù)據(jù)的寫入、讀取與擦除等運作。
[0086]可擦寫式非易失性存儲器模塊106是電性連接至存儲器控制器104,并且用以存儲主機系統(tǒng)1000所寫入的數(shù)據(jù)。可擦寫式非易失性存儲器模塊106具有實體擦除單元304(0) ~ 304 (R) ο例如,實體擦除單元304 (O) ~ 304 (R)可屬于同一個存儲器晶粒(die)或者屬于不同的存儲器晶粒。每一實體擦除單元分別具有復(fù)數(shù)個實體程序化單元,并且屬于同一個實體擦除單元的實體程序化單元可被獨立地寫入且被同時地擦除。例如,每一實體擦除單元是由128個實體程序化單元所組成。然而,必須了解的是,本發(fā)明不限于此,每一實體擦除單元是可由64個實體程序化單元、256個實體程序化單元或其他任意個實體程序化單元所組成。
[0087]更詳細來說,實體擦除單元為擦除的最小單位。也即,每一實體擦除單元含有最小數(shù)目的一并被擦除的單元。實體程序化單元為程序化的最小單元。即,實體程序化單元為寫入數(shù)據(jù)的最小單元。每一實體程序化單元通常包括數(shù)據(jù)位區(qū)與冗余位區(qū)。數(shù)據(jù)位區(qū)包含多個實體存取地址用以存儲使用者的數(shù)據(jù),而冗余位區(qū)用以存儲系統(tǒng)的數(shù)據(jù)(例如,控制信息與錯誤更正碼)。在本范例實施例中,每一個實體程序化單元的數(shù)據(jù)位區(qū)中會包含4個實體存取地址,且一個實體存取地址的大小為512字節(jié)(byte,B)。然而,在其他范例實施例中,數(shù)據(jù)位區(qū)中也可包含8個、16個或數(shù)目更多或更少的實體存取地址,本發(fā)明并不限制實體存取地址的大小以及個數(shù)。例如,實體擦除單元為實體區(qū)塊,并且實體程序化單元為實體頁面或?qū)嶓w扇。
[0088]在本范例實施例中,可擦寫式非易失性存儲器模塊106為多層單元(MultiLevelCell,MLC)NAND型閃速存儲器模塊,即一個單元中可存儲至少2個比特數(shù)據(jù)。然而,本發(fā)明不限于此,可擦寫式非易失性存儲器模塊106也可是單層單元(Single Level Cell, SLC)NAND型閃速存儲器模塊、復(fù)數(shù)層單元(Trinary Level Cell,TLC)NAND型閃速存儲器模塊、其他閃速存儲器模塊或其他具有相同特性的存儲器模塊。
[0089]圖3是根據(jù)一范例實施例所示出的存儲器控制器的概要方塊圖。
[0090]請同時參照圖1A、圖2與圖3,存儲器控制器104包括存儲器管理電路202、主機接口 204與存儲器接口 206。
[0091]存儲器管理電路202用以控制存儲器控制器104的整體運作。具體來說,存儲器管理電路202具有多個控制指令,并且在存儲器存儲裝置100運作時,此些控制指令會被執(zhí)行以進行數(shù)據(jù)的寫入、讀取與擦除等運作。
[0092]在本范例實施例中,存儲器管理電路202的控制指令是以固體形式來實作。例如,存儲器管理電路202具有微處理器單元(未示出)與只讀存儲器(未示出),并且此些控制指令是被燒錄至此只讀存儲器中。當(dāng)存儲器存儲裝置100運作時,此些控制指令會由微處理器單元來執(zhí)行以進行數(shù)據(jù)的寫入、讀取與擦除等運作。
[0093]在本發(fā)明另一范例實施例中,存儲器管理電路202的控制指令也可以程序碼形式存儲在可擦寫式非易失性存儲器模塊106的特定區(qū)域(例如,存儲器模塊中專用于存放系統(tǒng)數(shù)據(jù)的系統(tǒng)區(qū))中。此外,存儲器管理電路202具有微處理器單元(未示出)、只讀存儲器(未示出)及隨機存取存儲器(未示出)。特別是,此只讀存儲器具有驅(qū)動碼,并且當(dāng)存儲器控制器104被使能時,微處理器單元會先執(zhí)行此驅(qū)動碼段來將存儲在可擦寫式非易失性存儲器模塊106中的控制指令載入至存儲器管理電路202的隨機存取存儲器中。之后,微處理器單元會運行此些控制指令以進行數(shù)據(jù)的寫入、讀取與擦除等運作。
[0094]此外,在本發(fā)明另一范例實施例中,存儲器管理電路202的控制指令也可以一硬件形式來實作。例如,存儲器管理電路202包括微控制器、存儲器管理單元、存儲器寫入單元、存儲器讀取單元、存儲器擦除單元與數(shù)據(jù)處理單元。存儲器管理單元、存儲器寫入單元、存儲器讀取單元、存儲器擦除單元與數(shù)據(jù)處理單元是電性連接至微控制器。其中,存儲器管理單元用以管理可擦寫式非易失性存儲器模塊106的實體區(qū)塊;存儲器寫入單元用以對可擦寫式非易失性存儲器模塊106下達寫入指令以將數(shù)據(jù)寫入至可擦寫式非易失性存儲器模塊106中;存儲器讀取單元用以對可擦寫式非易失性存儲器模塊106下達讀取指令以從可擦寫式非易失性存儲器模塊106中讀取數(shù)據(jù);存儲器擦除單元用以對可擦寫式非易失性存儲器模塊106下達擦除指令以將數(shù)據(jù)從可擦寫式非易失性存儲器模塊106中擦除;而數(shù)據(jù)處理單元用以處理欲寫入至可擦寫式非易失性存儲器模塊106的數(shù)據(jù)以及從可擦寫式非易失性存儲器模塊106中讀取的數(shù)據(jù)。
[0095]主機接口 204是電性連接至存儲器管理電路202并且用以接收與識別主機系統(tǒng)1000所傳送的指令與數(shù)據(jù)。也就是說,主機系統(tǒng)1000所傳送的指令與數(shù)據(jù)會通過主機接口 204來傳送至存儲器管理電路202。在本范例實施例中,主機接口 204是兼容于USB標(biāo)準(zhǔn)。然而,必須了解的是本發(fā)明不限于此,主機接口 204也可以是兼容于其他適合的數(shù)據(jù)傳輸標(biāo)準(zhǔn)。
[0096]存儲器接口 206是電性連接至存儲器管理電路202并且用以存取可擦寫式非易失性存儲器模塊106。也就是說,欲寫入至可擦寫式非易失性存儲器模塊106的數(shù)據(jù)會經(jīng)由存儲器接口 206轉(zhuǎn)換為可擦寫式非易失性存儲器模塊106所能接受的格式。
[0097]在本發(fā)明一范例實施例中,存儲器控制器104還包括緩沖存儲器252、電源管理電路254與錯誤檢查與校正電路256。
[0098]緩沖存儲器252是電性連接至存儲器管理電路202并且用以緩存來自于主機系統(tǒng)1000的數(shù)據(jù)與指令或來自于可擦寫式非易失性存儲器模塊106的數(shù)據(jù)。
[0099]電源管理電路254是電性連接至存儲器管理電路202并且用以控制存儲器存儲裝置100的電源。
[0100]錯誤檢查與校正電路256是電性連接至存儲器管理電路202并且用以執(zhí)行錯誤檢查與校正程序以確保數(shù)據(jù)的正確性。具體來說,當(dāng)存儲器管理電路202從主機系統(tǒng)1000中接收到寫入指令時,錯誤檢查與校正電路256會為對應(yīng)此寫入指令的數(shù)據(jù)產(chǎn)生對應(yīng)的錯誤檢查與校正碼(Error Checking andCorrecting Code, ECC Code),并且存儲器管理電路202會將對應(yīng)此寫入指令的數(shù)據(jù)與對應(yīng)的錯誤檢查與校正碼寫入至可擦寫式非易失性存儲器模塊106中。之后,當(dāng)存儲器管理電路202從可擦寫式非易失性存儲器模塊106中讀取數(shù)據(jù)時會同時讀取此數(shù)據(jù)對應(yīng)的錯誤檢查與校正碼,并且錯誤檢查與校正電路256會依據(jù)此錯誤檢查與校正碼對所讀取的數(shù)據(jù)執(zhí)行錯誤檢查與校正程序。
[0101]在此范例實施例中,主機系統(tǒng)1000上的應(yīng)用程序1105可通過HID接口傳送一或多個指令及數(shù)據(jù)給存儲器管理電路202 (或存儲器控制器104)。在HID類別的規(guī)范中,應(yīng)用程序1105可使用控制管線(control pipe)與中斷管線(interrupt pipe)來傳送或接收一個包,并且此包可以包括完整的指令或數(shù)據(jù)或部分的指令或數(shù)據(jù)。若使用控制管線,則一個包的大小最多為64Byte。若使用中斷管線,則一個包的大小最多為64Byte (在USB1.1的標(biāo)準(zhǔn)中)或是1024Byte (在USB2.0和USB3.0的標(biāo)準(zhǔn)中)。在此范例實施例中,不論是傳送包或是接收包,應(yīng)用程序1105與存儲器管理電路202 (或存儲器控制器104)都是使用中斷管線。然而,在其他范例實施例中,應(yīng)用程序1105與存儲器管理電路202 (或存儲器控制器104)也可使用控制管線,本發(fā)明并不在此限。
[0102]另一方面,存儲器管理電路202(或存儲器控制器104)會決定一個輪詢間距(polling interval),其單位是微訊框(micro frame)。輪詢間距是用以表示存儲器存儲裝置100的驅(qū)動程序每隔多少時間會接收一個包。舉例來說,若每一毫秒有8個微訊框會從存儲器存儲裝置100傳送至主機系統(tǒng)1000,則存儲器存儲裝置100的驅(qū)動程序在一秒鐘內(nèi)最多可以接收8000個包。然而,本發(fā)明并不限制輪詢間距的數(shù)值。
[0103]存儲器管理電路202 (或存儲器控制器104)可以調(diào)整輪詢間距與包的大小,由此提升數(shù)據(jù)傳輸?shù)乃俣?。然而,?yīng)用程序1105是通過應(yīng)用程序接口來與驅(qū)動程序(driver)溝通。若主機系統(tǒng)1000的硬件效能不足時,應(yīng)用程序1105無法及時地通過應(yīng)用程序接口取得每一個包,因此會造成包的遺失。另一方面,應(yīng)用程序1105可能會執(zhí)行多個線程(thread),而每一個線程可能會下達不同的指令給存儲器存儲裝置100。在一范例實施例中,應(yīng)用程序1105與存儲器管理電路202 (或存儲器控制器104)會處理遺失的包,并且確保每一個包會被送至對應(yīng)的線程。
[0104]圖4是根據(jù)一范例實施例示出主機系統(tǒng)與存儲器存儲裝置的傳輸層級示意圖。
[0105]請同時參照圖1A與圖4,數(shù)據(jù)傳輸系統(tǒng)400包括主機系統(tǒng)1000與存儲器存儲裝置100。主機系統(tǒng)1000與存儲器存儲裝置100在邏輯上都可被分為實體層、傳輸層以及應(yīng)用層,并且主機系統(tǒng)1000的實體層401、傳輸層402以及應(yīng)用層403是分別對應(yīng)至存儲器存儲裝置100的實體層411、傳輸層412以及應(yīng)用層413。實體層是負責(zé)一個包的傳送與接收。傳輸層負責(zé)將一份數(shù)據(jù)(例如,一個檔案)分割成一或多個包,或者是將多個包組合成一份數(shù)據(jù);若有包遺失而需要被重新傳送,會由傳輸層要求重新傳送數(shù)據(jù)。另一方面,一個應(yīng)用程序會屬于應(yīng)用層。當(dāng)主機系統(tǒng)1000上的應(yīng)用程序1105要傳送指令或數(shù)據(jù)給存儲器存儲裝置100時,應(yīng)用程序1105會將這些指令或數(shù)據(jù)交給傳輸層402。傳輸層402會將這些指令或數(shù)據(jù)分割成一或多個包,并把這些包傳送給實體層401。實體層401會將這些包傳送給存儲器存儲裝置100的實體層411。實體層411會將這些包交給傳輸層412,傳輸層412會將接收到的包組合成指令或數(shù)據(jù)并將指令或數(shù)據(jù)交給應(yīng)用層413。存儲器管理電路202(或存儲器控制器104)會在應(yīng)用層413執(zhí)行這些指令或處理這些數(shù)據(jù)。存儲器管理電路202 (或存儲器控制器104)執(zhí)行完這些指令后會產(chǎn)生一或多個結(jié)果或響應(yīng),并且這些結(jié)果或響應(yīng)會再經(jīng)由傳輸層412、實體層411、實體層401、傳輸層402與應(yīng)用層403而被傳送至應(yīng)用程序1105。
[0106]在此范例實施例中,主機系統(tǒng)1000欲對存儲器存儲裝置100下達多個指令;應(yīng)用程序1105包括了多個線程,并且每一個指令是由這些線程的其中之一所處理并傳送給存儲器存儲裝置100。然而,在主機系統(tǒng)1000與存儲器存儲裝置100之間傳送的每一個符合HID類別的包會包括一個指令序列欄位,并且此指令序列欄位會包括一個指令序列。指令序列是用以指示一個包是對應(yīng)于哪一個指令。由此,每一個包可被傳送至對應(yīng)的線程。
[0107]此外,在主機系統(tǒng)1000與存儲器存儲裝置100之間傳送的每一包還會包括一個包類型欄位、傳輸序列欄位與數(shù)據(jù)欄位。以下將舉一范例實施例說明一個包的結(jié)構(gòu)。
[0108]圖5是根據(jù)一范例實施例示出一個包的示意圖。
[0109]請參照圖5,包500包括包類型欄位510、指令序列欄位520、傳輸序列欄位530與數(shù)據(jù)欄位540。
[0110]指令序列欄位520記錄了包500所對應(yīng)的指令。在此假設(shè)包500是對應(yīng)于第一指令。
[0111]傳輸序列欄位530記錄包500的一個傳輸序列。舉例來說,若主機系統(tǒng)1000要基于第一指令傳送一指令數(shù)據(jù)給存儲器管理電路202 (或存儲器控制器104),此指令數(shù)據(jù)被分割為多個數(shù)據(jù)包,并且包500是屬于這些數(shù)據(jù)包的其中之一,則傳輸序列是用以指示包500在這些數(shù)據(jù)包中的編號。雖然這些數(shù)據(jù)包被傳送的順序可不固定,但存儲器管理電路202(或存儲器控制器104)在接收到這些數(shù)據(jù)包以后,可以根據(jù)這些數(shù)據(jù)包里的傳輸序列將這些數(shù)據(jù)包組合而成為指令數(shù)據(jù)。
[0112]數(shù)據(jù)欄位540中會記錄一數(shù)據(jù)。然而,本發(fā)明并不限制數(shù)據(jù)的內(nèi)容。
[0113]包類型欄位510會記錄包500的包類型,并且此包類型是用以指示包500是屬于數(shù)據(jù)包、指令包、重送包、響應(yīng)包、與狀態(tài)包的其中之一。具體來說,當(dāng)一個包是從主機系統(tǒng)1000被傳送給存儲器存儲裝置100時,此包可屬于數(shù)據(jù)包、指令包與重送包的其中之一。另一方面,當(dāng)一個包是從存儲器存儲裝置100被傳送至主機系統(tǒng)1000時,此包可屬于數(shù)據(jù)包、響應(yīng)包、與狀態(tài)包的其中之一。在此,從主機系統(tǒng)1000傳送給存儲器存儲裝置100的數(shù)據(jù)包也被稱為傳送數(shù)據(jù)包;從存儲器存儲裝置100回傳給主機系統(tǒng)1000的數(shù)據(jù)包也被稱為響應(yīng)數(shù)據(jù)包。以下將配合圖示說明各種包類型的功能。
[0114]圖6是根據(jù)一范例實施例示出傳送包的流程示意圖。
[0115]請參照圖6,在此假設(shè)主機系統(tǒng)1000上執(zhí)行了 3個線程;主機系統(tǒng)1000欲對存儲器存儲裝置100下達4個指令,而這4個指令所對應(yīng)的指令序列為O?3 ;在此稱指令序列O?3所對應(yīng)的指令分別為第一指令、第二指令、第三指令與第四指令;第一指令與第二指令各自都會傳送一指令數(shù)據(jù)給存儲器存儲裝置,而第三指令與第四指令則沒有指令數(shù)據(jù)要傳送。其中第一指令要傳送的指令數(shù)據(jù)會被分為2個傳送數(shù)據(jù)包;第二指令所要傳送的指令數(shù)據(jù)會被分為I個傳送數(shù)據(jù)包。圖6中示出的每一個包601?619都符合HID類別,并且每一個包601?619中的欄位依序為包類型欄位、指令序列欄位、傳輸序列欄位與數(shù)據(jù)欄位。在此,包類型欄位中的包類型用C、D、S與R來表示;C表示指令包;D表示數(shù)據(jù)包;S表示狀態(tài)包;R表示響應(yīng)包。此外,由于主機系統(tǒng)1000上執(zhí)行了三個線程,因此主機系統(tǒng)1000最多可以同時處理三個指令。并且,在指令序列欄位與傳輸序列欄位中的“X”表示其中的數(shù)據(jù)并不會在此范例實施例中被使用到。
[0116]首先,主機系統(tǒng)1000會傳送指令包601?603給存儲器管理電路202 (或存儲器控制器104)。指令包601是對應(yīng)于第一指令,指令包602是對應(yīng)于第二指令,并且指令包603是對應(yīng)于第三指令。在此假設(shè)第一指令是對應(yīng)于一個第一線程;第二指令是對應(yīng)于一個第二線程;第三指令是對應(yīng)于一個第三線程。也就是說,指令包601是由第一線程所傳送,指令包602是由第二線程所傳送,并且指令包603是由第三線程所傳送。若一個包屬于指令包,則此包的數(shù)據(jù)欄位中的數(shù)據(jù)是記錄一個指令的內(nèi)容一個指令數(shù)據(jù)的長度。例如,第一指令是一個寫入指令,指令包601的數(shù)據(jù)欄位中的數(shù)據(jù)會記錄第一線程基于第一指令所要寫入的存儲器地址,并記錄第一線程所要傳輸?shù)闹噶顢?shù)據(jù)是被分割為兩個傳送數(shù)據(jù)包。然而,本發(fā)明并不限制指令的內(nèi)容。另一方面,在此范例實施例中是用傳送數(shù)據(jù)包的個數(shù)來記錄一個指令數(shù)據(jù)的長度,然而,在其他范例實施例中也可以用字節(jié)(Byte)或其他數(shù)值來記錄指令數(shù)據(jù)的長度,本發(fā)明并不在此限。
[0117]存儲器管理電路202 (或存儲器控制器104)會建立狀態(tài)包604,并將狀態(tài)包604傳送給主機系統(tǒng)1000。若一個包屬于狀態(tài)包,則此包的數(shù)據(jù)欄位中的數(shù)據(jù)會記錄存儲器管理電路202 (或存儲器控制器104)的一個狀態(tài)。例如,包604中記錄了存儲器管理電路202 (或存儲器控制器104)目前并不是處于一個忙碌狀態(tài),即存儲器管理電路202(或存儲器控制器104)目前可以接收新的指令。然而,值得注意的是,存儲器管理電路202 (或存儲器控制器104)可以定期或是不定期的回傳一個狀態(tài)包給主機系統(tǒng)1000,本發(fā)明并不限制傳送狀態(tài)包的時間點。
[0118]接下來,主機系統(tǒng)1000會建立傳送數(shù)據(jù)包605?607并且將它們傳送給給存儲器管理電路202 (或存儲器控制器104)。一個數(shù)據(jù)包(即,傳送數(shù)據(jù)包或是響應(yīng)數(shù)據(jù)包)的傳輸序列欄位所記錄的傳輸序列會指示此數(shù)據(jù)包在多個要傳輸?shù)臄?shù)據(jù)包中的一個編號。傳送數(shù)據(jù)包的數(shù)據(jù)欄位中的數(shù)據(jù)會屬于一個指令數(shù)據(jù)。具體來說,第一線程欲傳送的指令數(shù)據(jù)會被分為兩個數(shù)據(jù)包(即,數(shù)據(jù)包605與607,也被稱為傳送數(shù)據(jù)包),數(shù)據(jù)包605的編號為“0”,并且數(shù)據(jù)包607的編號為“I”。另一方面,第二指令所要傳送的指令數(shù)據(jù)會被分割為數(shù)據(jù)包606,并且數(shù)據(jù)包606的編號為“O”。換句話說,數(shù)據(jù)包605與607的數(shù)據(jù)欄位中的數(shù)據(jù)會組合成第一指令所要傳送的指令數(shù)據(jù);而數(shù)據(jù)包606的數(shù)據(jù)欄位中的數(shù)據(jù)即是第二指令所要傳送的指令數(shù)據(jù)。值得注意的是,由于第三線程并沒有指令數(shù)據(jù)要傳送,因此第三線程并不會傳送數(shù)據(jù)包給存儲器管理電路202 (或存儲器控制器104)。
[0119]在接收到指令包601?603以后,存儲器管理電路202 (或存儲器控制器104)至少會根據(jù)指令包601?603中數(shù)據(jù)欄位的數(shù)據(jù)來執(zhí)行對應(yīng)于第一指令、第二指令與第三指令的操作。例如,存儲器管理電路202 (或存儲器控制器104)會根據(jù)指令包603的數(shù)據(jù)欄位里的數(shù)據(jù)執(zhí)行對應(yīng)于第三指令的操作。另一方面,存儲器管理電路202 (或存儲器控制器104)至少會根據(jù)指令包601中數(shù)據(jù)欄位的數(shù)據(jù)以及數(shù)據(jù)包605與607中數(shù)據(jù)欄位的數(shù)據(jù)執(zhí)行對應(yīng)于第一指令的操作。存儲器管理電路202 (或存儲器控制器104)也會至少根據(jù)指令包602中數(shù)據(jù)欄位的數(shù)據(jù)以及數(shù)據(jù)包606中數(shù)據(jù)欄位的數(shù)據(jù)執(zhí)行對應(yīng)于第二指令的操作。值得注意的是,存儲器管理電路202 (或存儲器控制器104)可執(zhí)行寫入操作、讀取操作或是數(shù)據(jù)搬移操作。然而,本發(fā)明并不限制這些操作的內(nèi)容。
[0120]在完成對應(yīng)于一個指令的操作以后,存儲器管理電路202(或存儲器控制器104)會產(chǎn)生一個響應(yīng)包。此外,根據(jù)操作的結(jié)果,存儲器管理電路202 (或存儲器控制器104)也可能會產(chǎn)生一個響應(yīng)數(shù)據(jù)。并且,響應(yīng)包的數(shù)據(jù)欄位中會記錄此響應(yīng)數(shù)據(jù)的長度。舉例來說,響應(yīng)包610是對應(yīng)于第三指令,并且響應(yīng)包610的數(shù)據(jù)欄位記錄了一個響應(yīng)數(shù)據(jù)的長度(假設(shè)為2)。因此,對應(yīng)于第三指令的響應(yīng)數(shù)據(jù)會被分割為兩個數(shù)據(jù)包(即,數(shù)據(jù)包611與613,也被稱為響應(yīng)數(shù)據(jù)包)。數(shù)據(jù)包611中的傳輸序列會指示數(shù)據(jù)包611的編號(即,“O”),而數(shù)據(jù)包613中的傳輸序列會指示數(shù)據(jù)包613的編號(即,“I”)。數(shù)據(jù)包611中數(shù)據(jù)欄位的數(shù)據(jù)是屬于對應(yīng)于第三指令的指令數(shù)據(jù);并且數(shù)據(jù)包613中數(shù)據(jù)欄位的數(shù)據(jù)也是屬于對應(yīng)于第三指令的指令數(shù)據(jù)。也就是說,數(shù)據(jù)包611與613的數(shù)據(jù)欄位中的數(shù)據(jù)可組合成對應(yīng)于第三指令的響應(yīng)數(shù)據(jù)。存儲器管理電路202 (或存儲器控制器104)會建立數(shù)據(jù)包611與613并將數(shù)據(jù)包611與613傳送給主機系統(tǒng)1000。
[0121]另一方面,存儲器管理電路202 (或存儲器控制器104)執(zhí)行完對應(yīng)于第一指令的操作以后并不會產(chǎn)生響應(yīng)數(shù)據(jù),因此存儲器管理電路202 (或存儲器控制器104)會傳送響應(yīng)包612給主機系統(tǒng)1000,但存儲器管理電路202 (或存儲器控制器104)不會傳送一個對應(yīng)于第一指令的數(shù)據(jù)包給主機系統(tǒng)1000。值得注意的是,在此范例實施例中,存儲器管理電路202 (或存儲器控制器104)是先產(chǎn)生對應(yīng)于第三指令的響應(yīng)包,再產(chǎn)生對應(yīng)于第一指令的響應(yīng)包。然而,在其他范例實施例中,存儲器管理電路202 (或存儲器控制器104)是先產(chǎn)生對應(yīng)于第一指令的響應(yīng)包,再產(chǎn)生對應(yīng)于第三指令的響應(yīng)包。本發(fā)明并不限制產(chǎn)生響應(yīng)包的順序。
[0122]在主機系統(tǒng)1000接收到響應(yīng)包610與612,以及數(shù)據(jù)包611與613以后,主機系統(tǒng)1000便會知道第一指令與第三指令已被執(zhí)行完畢。當(dāng)?shù)谝恢噶钜驯粓?zhí)行完畢以后,接下來第一線程便可以再傳送對應(yīng)于第四指令的指令包614。在此范例實施例中,主機系統(tǒng)1000執(zhí)行了三個線程,因此主機系統(tǒng)1000 —次最多可處理三個指令。然而,在其他范例實施例中,主機系統(tǒng)1000上可執(zhí)行數(shù)目更多或更少的線程,由此處理數(shù)目更多或更少的指令,本發(fā)明并不在此限。
[0123]類似地,在執(zhí)行完對應(yīng)于第二指令與第四指令的操作以后,存儲器管理電路202 (或存儲器控制器104)會產(chǎn)生響應(yīng)包616與618,以及數(shù)據(jù)包617與619。在此并不再贅述包的內(nèi)容。
[0124]特別的是,在接收到響應(yīng)包610以后,主機系統(tǒng)1000便可以根據(jù)響應(yīng)包610中數(shù)據(jù)欄位的數(shù)據(jù)以及數(shù)據(jù)包611與613中的傳輸序列判斷數(shù)據(jù)包611與數(shù)據(jù)包613的其中之一是否遺失。若數(shù)據(jù)包611與數(shù)據(jù)包613的其中之一遺失了,主機系統(tǒng)1000便會傳送一個重送包給存儲器管理電路202 (或存儲器控制器104),由此要求存儲器管理電路202 (或存儲器控制器104)重新傳送遺失的數(shù)據(jù)包。相同地,主機系統(tǒng)1000也可以根據(jù)響應(yīng)包616判斷數(shù)據(jù)包617是否遺失;主機系統(tǒng)1000也可以根據(jù)響應(yīng)包618判斷數(shù)據(jù)包619是否遺失。
[0125]圖7是根據(jù)一范例實施例示出包遺失的流程示意圖。
[0126]請參照圖7,圖7中示出的每一個包601?619和包701都符合HID類別,并且每一個包601?619中的欄位依序為包類型欄位、指令序列欄位、傳輸序列欄位與數(shù)據(jù)欄位。在此,包類型欄位中的包類型用C、D、S、R、與A來表示;C表示指令包;D表示數(shù)據(jù)包4表示狀態(tài)包;R表示響應(yīng)包;而A表示重送包。在此假設(shè)數(shù)據(jù)包611 (也被稱為第一響應(yīng)數(shù)據(jù)包)在傳輸?shù)倪^程中遺失了。由于主機系統(tǒng)1000可以根據(jù)響應(yīng)包610得知對應(yīng)于第三指令的響應(yīng)數(shù)據(jù)的長度為2,并且可以得知數(shù)據(jù)包613中的傳輸序列為“I”。因此,主機系統(tǒng)1000會根據(jù)響應(yīng)數(shù)據(jù)的長度(S卩,2)以及數(shù)據(jù)包613的傳輸序列判斷其傳輸序列為“O”的數(shù)據(jù)包611遺失了。在判斷數(shù)據(jù)包611遺失了以后,主機系統(tǒng)1000會傳送一個重送包701給存儲器管理電路202 (或存儲器控制器104)。主機系統(tǒng)1000會設(shè)定重送包701中的指令序列指示重送包701是對應(yīng)于第三指令,并且重送包701中的傳輸序列指示數(shù)據(jù)包611在多個數(shù)據(jù)包中的編號(即,“O”)。在接收到重送包701以后,存儲器管理電路202 (或存儲器控制器104)便會重新傳送數(shù)據(jù)包611給主機系統(tǒng)1000以響應(yīng)重送包701。
[0127]在此范例實施例中,應(yīng)用程序1105與存儲器管理電路202 (或存儲器控制器104)是通過一個使用者接口裝置接口來傳輸與接收包601?619。然而,在其他范例實施例中,應(yīng)用程序1105與存儲器管理電路202(或存儲器控制器104)可以通過多個使用者接口裝置接口來傳送與接收包601?619,由此讓包601?619可以同時地被傳送。舉例來說,第一線程是使用一個第一使用者接口裝置接口來傳送指令包601、數(shù)據(jù)包605與數(shù)據(jù)包607 ;第二線程是使用一個第二使用者接口裝置接口來傳送指令包602與數(shù)據(jù)包606 ;第三線程是使用一個第三使用者接口裝置接口來傳送指令包603與重送包701。并且,第一使用者接口裝置接口、第二使用者接口裝置接口與第三使用者接口裝置接口彼此并不相同。然而,本發(fā)明并不限制使用者接口裝置接口的個數(shù),也不限制每一個使用者接口裝置接口要傳送哪些包。
[0128]圖8是根據(jù)一范例實施例示出數(shù)據(jù)傳輸方法的流程圖。
[0129]請參照圖8,在步驟S802中,由存儲器控制器接收來自主機系統(tǒng)的指令包。此指令包的指令序列欄位記錄第一指令,并且指令包的數(shù)據(jù)欄位記錄第一指令的內(nèi)容。
[0130]在步驟S804中,由存儲器控制器至少根據(jù)第一指令的內(nèi)容執(zhí)行對應(yīng)第一指令的操作以產(chǎn)生響應(yīng)數(shù)據(jù),其中響應(yīng)數(shù)據(jù)會被分割為至少一個響應(yīng)數(shù)據(jù)包。
[0131]在步驟S806中,由存儲器控制器傳送一響應(yīng)包至主機系統(tǒng),并且此響應(yīng)包的指令序列欄位是記錄第一指令。
[0132]在步驟S808中,由存儲器控制器傳送響應(yīng)數(shù)據(jù)包至主機系統(tǒng),并且響應(yīng)數(shù)據(jù)包的指令序列欄位是記錄第一指令。
[0133]在步驟S810中,由主機系統(tǒng)至少根據(jù)響應(yīng)包判斷上述響應(yīng)數(shù)據(jù)包的其中之一是
否遺失。
[0134]若步驟S810的結(jié)果為“是”,在步驟S812中,由主機系統(tǒng)傳送一重送包至存儲器控制器以要求存儲器控制器重新傳送遺失的響應(yīng)數(shù)據(jù)包。在步驟S814中,由存儲器控制器重新傳送遺失的響應(yīng)數(shù)據(jù)包至主機系統(tǒng)以響應(yīng)重送包。
[0135]若步驟S810的結(jié)果為否,存儲器控制器會重新回到步驟S802。
[0136]然而,圖8中各步驟已詳細說明如上,在此便不再贅述。此外,此數(shù)據(jù)傳輸方法可被實作為多個程序指令(program instruction),并且這些程序指令是由步驟S802中所指的存儲器控制器所執(zhí)行。然而,在其他范例實施例中,此存儲器控制器可以被配置在鼠標(biāo)、打印機、或其他使用者接口裝置上?;蛘?,圖8中各步驟也可以被實作為一或多個電路,本發(fā)明并不在此限。[0137]綜上所述,在本發(fā)明范例實施例所提出的數(shù)據(jù)傳輸方法、存儲器控制器、存儲器存儲裝置與數(shù)據(jù)傳輸系統(tǒng)中,由于一個符合HID類別的包中還包括了上述的欄位,因此每一個包可以被傳送到正確的線程。如此一來,每一個線程可以獨立的執(zhí)行一或多個指令。再者,應(yīng)用程序與存儲器管理電路(或存儲器控制器)可以通過多個HID接口來傳送包,由此增加傳輸包的數(shù)量。另一方面,若一個包遺失了,應(yīng)用程序也可以通過重送包來指示存儲器管理電路(或存儲器控制器)重新傳送包,由此確保數(shù)據(jù)的完整性。
[0138]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種數(shù)據(jù)傳輸方法,用于一存儲器控制器,其特征在于,該存儲器控制器用以電性連接至一主機系統(tǒng),該主機系統(tǒng)用以執(zhí)行多個線程以通過至少一使用者接口裝置接口對該存儲器控制器下達多個指令,每一該些指令是對應(yīng)于該些線程的其中之一,多個包傳送在該存儲器控制器與該主機系統(tǒng)之間,該些包符合一使用者接口裝置類別,并且每一該些包至少包括一指令序列欄位與一數(shù)據(jù)欄位,該數(shù)據(jù)傳輸方法包括: 由該存儲器控制器從該主機系統(tǒng)接收該些包中的至少一指令包,其中該至少一指令包的該指令序列欄位記錄該些指令中的一第一指令,并且該至少一指令包的該數(shù)據(jù)欄位記錄該第一指令的內(nèi)容; 由該存儲器控制器至少根據(jù)該第一指令的內(nèi)容執(zhí)行對應(yīng)該第一指令的一操作以產(chǎn)生一響應(yīng)數(shù)據(jù),其中該響應(yīng)數(shù)據(jù)被分割為該些包中的至少一響應(yīng)數(shù)據(jù)包; 由該存儲器控制器傳送該些包中的一響應(yīng)包至該主機系統(tǒng),其中該響應(yīng)包的該指令序列欄位記錄該第一指令; 由該存儲器控制器傳送該至少一響應(yīng)數(shù)據(jù)包至該主機系統(tǒng),其中該至少一響應(yīng)數(shù)據(jù)包的該指令序列欄位記錄該第一指令; 由該主機系統(tǒng)至少根據(jù)該響應(yīng)包判斷該至少一響應(yīng)數(shù)據(jù)包的其中之一是否遺失; 若該主機系統(tǒng)判斷該至少一響應(yīng)數(shù)據(jù)包中的一第一響應(yīng)數(shù)據(jù)包遺失,由該主機系統(tǒng)傳送該些包中的一重送包 至該存儲器控制器以要求該存儲器控制器重新傳送該第一響應(yīng)數(shù)據(jù)包,其中該重送包的該指令序列欄位記錄該第一指令;以及 由該存儲器控制器重新傳送該第一響應(yīng)數(shù)據(jù)包至該主機系統(tǒng)以響應(yīng)該重送包。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于,該至少一指令包的該數(shù)據(jù)欄位還記錄一指令數(shù)據(jù)的一長度。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)傳輸方法,其特征在于,該至少一指令包包括一第一指令包與一第二指令包,該第一指令包的該指令序列欄位記錄該第一指令,該第二指令包的該指令序列欄位記錄該第二指令,該指令數(shù)據(jù)是對應(yīng)于該第二指令,該指令數(shù)據(jù)至少被分割為該些包中的一傳送數(shù)據(jù)包,并且每一該些包還包括一傳輸序列欄位,該數(shù)據(jù)傳輸方法還包括: 由該存儲器控制器接收來自該主機系統(tǒng)的該傳送數(shù)據(jù)包,其中該傳送數(shù)據(jù)包的該指令序列欄位記錄該第二指令,該傳送數(shù)據(jù)包的該傳輸序列欄位記錄該傳送數(shù)據(jù)包的一編號,并且該傳送數(shù)據(jù)包的該數(shù)據(jù)欄位記錄至少部分的該指令數(shù)據(jù);以及 由該存儲器控制器根據(jù)該第二指令包與該指令數(shù)據(jù)執(zhí)行對應(yīng)于該第二指令的一操作。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)傳輸方法,其特征在于,該至少一使用者接口裝置接口包括一第一使用者接口裝置接口與一第二使用者接口裝置接口,該第一使用者接口裝置接口不同于該第二使用者接口裝置接口,該主機系統(tǒng)通過該第一使用者接口裝置接口傳送該第一指令包,該主機系統(tǒng)通過該第二使用者接口裝置接口傳送該第二指令包。
5.根據(jù)權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于,該響應(yīng)包的該數(shù)據(jù)欄位記錄該響應(yīng)數(shù)據(jù)的一長度。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)傳輸方法,其特征在于,每一該些包還包括一傳輸序列欄位,該第一響應(yīng)數(shù)據(jù)包的該傳輸序列欄位記錄該第一響應(yīng)數(shù)據(jù)包的一編號,并且該第一響應(yīng)數(shù)據(jù)包的該數(shù)據(jù)欄位記錄至少部分的該響應(yīng)數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)傳輸方法,其特征在于,由該主機系統(tǒng)根據(jù)該響應(yīng)包判斷該至少一響應(yīng)數(shù)據(jù)包的其中之一是否遺失的步驟包括: 由該主機系統(tǒng)根據(jù)該響應(yīng)數(shù)據(jù)的該長度以及該至少一響應(yīng)數(shù)據(jù)包的該傳輸序列欄位判斷該至少一響應(yīng)數(shù)據(jù)包的其中之一是否遺失, 其中由該主機系統(tǒng)傳送該重送包至該存儲器控制器的步驟還包括: 由該主機系統(tǒng)記錄該第一響應(yīng)數(shù)據(jù)包的該編號在該重送包的該傳輸序列欄位。
8.根據(jù)權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于,還包括: 由該存儲器控制器傳送該些包中的一狀態(tài)包至該主機系統(tǒng),其中該狀態(tài)包的該數(shù)據(jù)欄位記錄該存儲器控制器的一狀態(tài)。
9.一種存儲器控制器,其特征在于,用于控制一可擦寫式非易失性存儲器模塊,該存儲器控制器包括: 一主機接口,用以電性連接至一主機系統(tǒng),其中該主機系統(tǒng)用以執(zhí)行多個線程以通過至少一使用者接口裝置接口對該存儲器控制器下達多個指令,每一該些指令是對應(yīng)于該些線程的其中之一,多個包傳送在該存儲器控制器與該主機系統(tǒng)之間,該些包符合一使用者接口裝置類別,并且每一該些包至少包括一指令序列欄位與一數(shù)據(jù)欄位; 一存儲器接口,用以電性連接至該可擦寫式非易失性存儲器模塊;以及一存儲器管理電路,電性連接至該主機接口與該存儲器接口,用以從該主機系統(tǒng)接收該些包中的至少一指令包,其中該至少一指令包的該指令序列欄位記錄該些指令中的一第一指令,并且該至少一指令包的該數(shù)據(jù)欄位記錄該第一指令的內(nèi)容, 其中,該存儲器管理電路用以至少根據(jù)該第一指令的內(nèi)容執(zhí)行對應(yīng)該第一指令的一操作以產(chǎn)生一響應(yīng)數(shù)據(jù),其中該響應(yīng)數(shù)據(jù)被分割為該些包中的至少一響應(yīng)數(shù)據(jù)包, 該存儲器管理電路用以傳送該些包中的一響應(yīng)包至該主機系統(tǒng),其中該響應(yīng)包的該指令序列欄位記錄該第一指令, 該存儲器管理電路用以傳送該至少一響應(yīng)數(shù)據(jù)包至該主機系統(tǒng),其中該至少一響應(yīng)數(shù)據(jù)包的該指令序列欄位記錄該第一指令, 若該至少一響應(yīng)數(shù)據(jù)包中的一第一響應(yīng)數(shù)據(jù)包遺失,該存儲器管理電路用以從該主機系統(tǒng)接收該些包中的一重送包,其中該重送包的該指令序列欄位記錄該第一指令, 該存儲器管理電路用以重新傳送該第一響應(yīng)數(shù)據(jù)包至該主機系統(tǒng)以響應(yīng)該重送包。
10.根據(jù)權(quán)利要求9所述的存儲器控制器,其特征在于,該至少一指令包的該數(shù)據(jù)欄位還記錄一指令數(shù)據(jù)的一長度。
11.根據(jù)權(quán)利要求10所述的存儲器控制器,其特征在于,該至少一指令包包括一第一指令包與一第二指令包,該第一指令包的該指令序列欄位記錄該第一指令,該第二指令包的該指令序列欄位記錄該第二指令,該指令數(shù)據(jù)是對應(yīng)于該第二指令,該指令數(shù)據(jù)至少被分割為該些包中的一傳送數(shù)據(jù)包,并且每一該些包還包括一傳輸序列欄位, 該存儲器管理電路還用以接收來自該主機系統(tǒng)的該傳送數(shù)據(jù)包,其中該傳送數(shù)據(jù)包的該指令序列欄位記錄該第二指令,該傳送數(shù)據(jù)包的該傳輸序列欄位記錄該傳送數(shù)據(jù)包的一編號,并且該傳送數(shù)據(jù)包的該數(shù)據(jù)欄位記錄至少部分的該指令數(shù)據(jù), 存儲器管理電路還用以根據(jù)該第二指令包與該指令數(shù)據(jù)執(zhí)行對應(yīng)于該第二指令的一操作。
12.根據(jù)權(quán)利要求9所述的存儲器控制器,其特征在于,該響應(yīng)包的該數(shù)據(jù)欄位記錄該響應(yīng)數(shù)據(jù)的一長度。
13.根據(jù)權(quán)利要求12所述的存儲器控制器,其特征在于,每一該些包還包括一傳輸序列欄位,該第一響應(yīng)數(shù)據(jù)包的該傳輸序列欄位記錄該第一響應(yīng)數(shù)據(jù)包的一編號,并且該第一響應(yīng)數(shù)據(jù)包的該數(shù)據(jù)欄位記錄至少部分的該響應(yīng)數(shù)據(jù)。
14.根據(jù)權(quán)利要求9所述的存儲器控制器,其特征在于,該重送包的該傳輸序列欄位記錄該第一響應(yīng)數(shù)據(jù)包的該編號。
15.根據(jù)權(quán)利要求9所述的存儲器控制器,其特征在于,該存儲器管理電路還用以傳送該些包中的一狀態(tài)包至該主機系統(tǒng),其中該狀態(tài)包的該數(shù)據(jù)欄位記錄該存儲器控制器的一狀態(tài)。
16.一種數(shù)據(jù)傳輸系統(tǒng),其特征在于,包括: 一主機系統(tǒng);以及 一存儲器存儲裝置, 其中該主機系統(tǒng)用以執(zhí)行多個線程以通過至少一使用者接口裝置接口對該存儲器存儲裝置下達多個指令,每一該些指令是對應(yīng)于該些線程的其中之一,多個包傳送在該存儲器存儲裝置與該主機系統(tǒng)之間,該些包符合一使用者接口裝置類別,并且每一該些包至少包括一指令序列欄位與一數(shù)據(jù)欄位, 其中,該存儲器存儲裝置用以從該主機系統(tǒng)接收該些包中的至少一指令包,其中該至少一指令包的該指令序列欄位記錄該些指令中的一第一指令,并且該至少一指令包的該數(shù)據(jù)欄位記錄該第一指令的內(nèi)容, 該存儲器存儲裝置用以至少根據(jù)該第一指令的內(nèi)容執(zhí)行對應(yīng)該第一指令的一操作以產(chǎn)生一響應(yīng)數(shù)據(jù),其中該響應(yīng)數(shù)據(jù)被分割為該些包中的至少一響應(yīng)數(shù)據(jù)包, 該存儲器存儲裝置用以傳送該些包中的一響應(yīng)包至該主機系統(tǒng),其中該響應(yīng)包的該指令序列欄位記錄該第一指令, 該存儲器存儲裝置用以傳送該至少一響應(yīng)數(shù)據(jù)包至該主機系統(tǒng),其中該至少一響應(yīng)數(shù)據(jù)包的該指令序列欄位 記錄該第一指令, 該主機系統(tǒng)用以至少根據(jù)該響應(yīng)包判斷該至少一響應(yīng)數(shù)據(jù)包的其中之一是否遺失,若該主機系統(tǒng)判斷該至少一響應(yīng)數(shù)據(jù)包中的一第一響應(yīng)數(shù)據(jù)包遺失,該主機系統(tǒng)用以傳送該些包中的一重送包至存儲器存儲裝置以要求該存儲器存儲裝置重新傳送該第一響應(yīng)數(shù)據(jù)包,其中該重送包的該指令序列欄位記錄該第一指令, 該存儲器存儲裝置用以重新傳送該第一響應(yīng)數(shù)據(jù)包至該主機系統(tǒng)以響應(yīng)該重送包。
17.根據(jù)權(quán)利要求16所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,該至少一指令包的該數(shù)據(jù)欄位還記錄一指令數(shù)據(jù)的一長度。
18.根據(jù)權(quán)利要求17所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,該至少一指令包包括一第一指令包與一第二指令包,該第一指令包的該指令序列欄位記錄該第一指令,該第二指令包的該指令序列欄位記錄該第二指令,該指令數(shù)據(jù)是對應(yīng)于該第二指令,該指令數(shù)據(jù)至少被分割為該些包中的一傳送數(shù)據(jù)包,并且每一該些包還包括一傳輸序列欄位, 其中,該存儲器存儲裝置還用以接收來自該主機系統(tǒng)的該傳送數(shù)據(jù)包,其中該傳送數(shù)據(jù)包的該指令序列欄位記錄該第二指令,該傳送數(shù)據(jù)包的該傳輸序列欄位記錄該傳送數(shù)據(jù)包的一編號,并且該傳送數(shù)據(jù)包的該數(shù)據(jù)欄位記錄至少部分的該指令數(shù)據(jù), 該存儲器存儲裝置還用以根據(jù)該第二指令包與該指令數(shù)據(jù)執(zhí)行對應(yīng)于該第二指令的一操作。
19.根據(jù)權(quán)利要求18所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,該至少一使用者接口裝置接口包括一第一使用者接口裝置接口與一第二使用者接口裝置接口,該第一使用者接口裝置接口不同于該第二使用者接口裝置接口,該主機系統(tǒng)通過該第一使用者接口裝置接口傳送該第一指令包,該主機系統(tǒng)通過該第二使用者接口裝置接口傳送該第二指令包。
20.根據(jù)權(quán)利要求16所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,該響應(yīng)包的該數(shù)據(jù)欄位記錄該響應(yīng)數(shù)據(jù)的一長度。
21.根據(jù)權(quán)利要求20所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,每一該些包還包括一傳輸序列欄位,該第一響應(yīng)數(shù)據(jù)包的該傳輸序列欄位記錄該第一響應(yīng)數(shù)據(jù)包的一編號,并且該第一響應(yīng)數(shù)據(jù)包的該數(shù)據(jù)欄位記錄至少部分的該響應(yīng)數(shù)據(jù)。
22.根據(jù)權(quán)利要求21所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,該主機系統(tǒng)根據(jù)該響應(yīng)包判斷該至少一響應(yīng)數(shù)據(jù)包的其中之一是否遺失的操作包括: 該主機系統(tǒng)根據(jù)該響應(yīng)數(shù)據(jù)的該長度以及該至少一響應(yīng)數(shù)據(jù)包的該傳輸序列欄位判斷該至少一響應(yīng)數(shù)據(jù)包的其中之一是否遺失, 其中該主機系統(tǒng)傳送 該重送包至該控制器的操作還包括: 該主機系統(tǒng)記錄該第一響應(yīng)數(shù)據(jù)包的該編號在該重送包的該傳輸序列欄位。
23.根據(jù)權(quán)利要求16所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,該存儲器存儲裝置還用以傳送該些包中的一狀態(tài)包至該主機系統(tǒng),其中該狀態(tài)包的該數(shù)據(jù)欄位記錄該存儲器存儲裝置的一狀態(tài)。
【文檔編號】G06F13/16GK103914408SQ201310001975
【公開日】2014年7月9日 申請日期:2013年1月4日 優(yōu)先權(quán)日:2013年1月4日
【發(fā)明者】許世賢 申請人:群聯(lián)電子股份有限公司