TWI493455B - 命令佇列管理方法、記憶體控制器及記憶體儲存裝置 - Google Patents

命令佇列管理方法、記憶體控制器及記憶體儲存裝置 Download PDF

Info

Publication number
TWI493455B
TWI493455B TW102123698A TW102123698A TWI493455B TW I493455 B TWI493455 B TW I493455B TW 102123698 A TW102123698 A TW 102123698A TW 102123698 A TW102123698 A TW 102123698A TW I493455 B TWI493455 B TW I493455B
Authority
TW
Taiwan
Prior art keywords
command
indicator
bit
updated
memory
Prior art date
Application number
TW102123698A
Other languages
English (en)
Other versions
TW201502976A (zh
Inventor
Yi Hsiang Huang
Chao Ming Chan
Original Assignee
Phison Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Phison Electronics Corp filed Critical Phison Electronics Corp
Priority to TW102123698A priority Critical patent/TWI493455B/zh
Priority to US14/017,284 priority patent/US9146691B2/en
Publication of TW201502976A publication Critical patent/TW201502976A/zh
Application granted granted Critical
Publication of TWI493455B publication Critical patent/TWI493455B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

命令佇列管理方法、記憶體控制器及記憶體儲存裝置
本發明是有關於一種命令佇列管理方法以及使用此方法的記憶體控制器與記憶體儲存裝置。
以往通用序列匯流排大量儲存裝置(USB mass storage device)與電腦主機之間主要是透過僅限批量傳輸(bulk only transport,BOT)協定來傳輸資料及/或命令。根據BOT協定的規範,USB大量儲存裝置一次只能傳輸一個命令至電腦主機或自電腦主機接收一個命令,並且當此命令被執行完畢後才能接續傳輸或接收下一個命令。
由於BOT協定在實務上欠缺彈性,且人們對於USB大量儲存裝置的資料處理效率與檔案傳輸效能的要求也逐漸提高,因此可一次傳輸多個命令的USB Attached SCSI協定已被提出,希望可透過USB Attached SCSI協定來改善以往BOT協定存在的資料傳輸效率低落等問題。
然而,雖然USB Attached SCSI協定已被提出,卻始終沒 有可將USB Attached SCSI協定所帶來的優勢有效地與現有的儲存媒體之系統架構進行整合的機制。
有鑑於此,本發明提供一種命令佇列管理方法、記憶體控制器及記憶體儲存裝置,其可有效的管理從主機系統接收的多個命令。
本發明提供一種命令佇列管理方法,用於管理從一主機系統接收的多個命令,此命令佇列管理方法包括:配置一命令佇列暫存器、一第一指示器及一第二指示器,其中此命令佇列暫存器包括多個命令暫存區塊並且每一所述命令暫存區塊配置有一命令指標;並且配置一命令指標暫存器,其中此命令指標暫存器具有一起始指標、一結尾指標與一命令未處理指標。此命令佇列管理方法包括:從此主機系統接收至少一第一命令;根據此第一指示器中的多個第一指示位元將所述第一命令儲存於此命令佇列暫存器,並根據此命令佇列暫存器的一目前儲存狀態更新所述第一指示位元以產生多個已更新第一指示位元;並且根據此第一指示器中的所述已更新第一指示位元和此第二指示器中的多個第二指示位元來產生多個已更新第二指示位元。此命令佇列管理方法也包括:根據所述已更新第二指示位元獲得所述第一命令的數目和所述命令指標之中對應在此命令佇列暫存器中儲存所述第一命令的命令暫存區塊的至少一第一命令指標;將所述第一命令指標加 入至此命令指標暫存器,並且根據所述第一命令的數目更新此結尾指標;執行記錄在此命令指標暫存器中的所述未執行命令指標在此命令佇列暫存器中對應的命令暫存區塊所儲存的命令。
在本發明之一實施例中,所述根據第一指示器中的所述已更新第一指示位元和第二指示器中的所述第二指示位元來產生所述已更新第二指示位元的步驟包括:配置一接收命令開關指示器與一接收命令狀態指示器;停止接收所述第一命令,並將接收命令開關指示器的一開關指示位元切換至一不可接收命令狀態;判斷接收命令狀態指示器的一狀態指示位元是否為一正在接收命令狀態;並且若接收命令狀態指示器的狀態指示位元不為正在接收命令狀態,根據第一指示器中的所述已更新第一指示位元和第二指示器中的所述第二指示位元來產生所述已更新第二指示位元。
在本發明之一實施例中,所述根據第一指示器中的所述已更新第一指示位元和第二指示器中的所述第二指示位元來產生所述已更新第二指示位元的步驟包括:對第一指示器中的所述已更新第一指示位元與第二指示器中的所述第二指示位元執行一異或操作;並且根據異或操作的一操作結果產生所述已更新第二指示位元,並將所述已更新第二指示位元寫入第二指示器。
在本發明之一實施例中,所述根據異或操作的操作結果產生所述已更新第二指示位元,並將所述已更新第二指示位元寫入第二指示器的步驟更包括:以第一指示器中的所述已更新第一 指示位元取代第二指示器中的所述已更新第二指示位元為多個已取代第二指示位元。
在本發明之一實施例中,所述命令佇列的管理方法更包括:當所述未執行命令指標中的至少一第一未執行命令指標在命令佇列暫存器中對應的命令被執行完畢且可被抹除時,根據所述第一未執行命令指標更新起始指標、第一指示器中的所述已更新第一指示位元及第二指示器中的所述已取代第二指示位元。
在本發明之一實施例中,所述根據所述已更新第二指示位元獲得所述第一命令的數目和所述命令指標之中對應在命令佇列暫存器中儲存所述第一命令的命令暫存區塊的所述第一命令指標的步驟包括:配置一新命令數記錄器與一新命令指標記錄器;統計所述已更新第二指示位元中的至少一第一位元狀態的數目以獲得所述第一命令的數目,並將所述第一命令的數目記錄於新命令數記錄器;並且根據所述已更新第二指示位元中的所述第一位元狀態獲得所述命令指標之中對應在命令佇列暫存器中儲存所述第一命令的命令暫存區塊的所述第一命令指標,並將所述第一命令指標記錄於新命令指標記錄器。
在本發明之一實施例中,所述執行記錄在命令指標暫存器中的所述未執行命令指標在命令佇列暫存器中對應的命令暫存區塊所儲存的命令的步驟包括:根據命令未處理指標與結尾指標,重新排列記錄在命令指標暫存器中的未執行命令指標的執行順序;根據此執行順序執行記錄在命令指標暫存器中的未執行命 令指標在命令佇列暫存器中對應的命令暫存區塊所儲存的命令。
在本發明之一實施例中,所述根據命令未處理指標與結尾指標,重新排列記錄在命令指標暫存器中的所述未執行命令指標的執行順序的步驟包括:根據命令未處理指標與結尾指標,取得記錄在命令指標暫存器中的所述未執行命令指標。其中所述未執行命令指標包括所述第一命令指標與對應儲存於命令佇列暫存器的至少一第二命令的至少一第二命令指標。
本發明提供一種記憶體控制器,此記憶體控制器包括主機介面與記憶體管理電路。主機介面用以耦接至一主機系統。記憶體管理電路耦接至主機介面。記憶體管理電路用以配置一命令佇列暫存器、一第一指示器及一第二指示器,所述命令佇列暫存器包括多個命令暫存區塊並且每一所述命令暫存區塊配置有一命令指標。記憶體管理電路更用以配置一命令指標暫存器,所述命令指標暫存器具有一起始指標、一結尾指標與一命令未處理指標。記憶體管理電路更用以從主機系統接收至少一第一命令,根據第一指示器中的多個第一指示位元將所述第一命令儲存於命令佇列暫存器,並且根據命令佇列暫存器的一目前儲存狀態更新所述第一指示位元以產生多個已更新第一指示位元。記憶體管理電路更用以根據第一指示器中的所述已更新第一指示位元和第二指示器中的多個第二指示位元來產生多個已更新第二指示位元,並且根據所述已更新第二指示位元獲得所述第一命令的數目和所述命令指標之中對應在命令佇列暫存器中儲存所述第一命令的命令 暫存區塊的至少一第一命令指標。記憶體管理電路更用以將所述第一命令指標加入至命令指標暫存器,並且根據所述第一命令的數目更新結尾指標。記憶體管理電路更用以執行記錄在命令指標暫存器中的所述未執行命令指標在命令佇列暫存器中對應的命令暫存區塊所儲存的命令。
在本發明之一實施例中,所述記憶體管理電路更用以配置一接收命令開關指示器與一接收命令狀態指示器。所述記憶體管理電路更用以停止接收所述第一命令,並將接收命令開關指示器的一開關指示位元切換至一不可接收命令狀態。所述記憶體管理電路更用以判斷接收命令狀態指示器的一狀態指示位元是否為一正在接收命令狀態,並且若接收命令狀態指示器的狀態指示位元不為正在接收命令狀態,根據第一指示器中的所述已更新第一指示位元和第二指示器中的所述第二指示位元來產生所述已更新第二指示位元。
在本發明之一實施例中,所述記憶體管理電路更用以對第一指示器中的所述已更新第一指示位元與第二指示器中的所述第二指示位元執行一異或操作。所述記憶體管理電路更用以根據異或操作的一操作結果產生所述已更新第二指示位元,並將所述已更新第二指示位元寫入第二指示器。
在本發明之一實施例中,所述記憶體管理電路更用以以第一指示器中的所述已更新第一指示位元取代第二指示器中的所述已更新第二指示位元為多個已取代第二指示位元。
在本發明之一實施例中,當所述未執行命令指標中的至少一第一未執行命令指標在命令佇列暫存器中對應的命令被執行完畢且可被抹除時,所述記憶體管理電路更用以根據所述第一未執行命令指標更新起始指標、第一指示器中的所述已更新第一指示位元與第二指示器中的所述已取代第二指示位元。
在本發明之一實施例中,所述記憶體管理電路更用以配置一新命令數記錄器與一新命令指標記錄器。所述記憶體管理電路更用以統計所述已更新第二指示位元中的至少一第一位元狀態的數目以獲得所述第一命令的數目,並將所述第一命令的數目記錄於新命令數記錄器。所述記憶體管理電路更用以根據所述已更新第二指示位元中的所述第一位元狀態自獲得所述命令指標之中對應在命令佇列暫存器中儲存所述第一命令的命令暫存區塊的所述第一命令指標,並將所述第一命令指標記錄於新命令指標記錄器。
在本發明之一實施例中,所述記憶體管理電路更用以根據命令未處理指標與結尾指標,重新排列記錄在命令指標暫存器中的未執行命令指標的執行順序。所述記憶體管理電路更用以根據此執行順序執行記錄在命令指標暫存器中的未執行命令指標在命令佇列暫存器中對應的命令暫存區塊所儲存的命令。
在本發明之一實施例中,所述記憶體管理電路更用以根據命令未處理指標與結尾指標,取得記錄在命令指標暫存器中的所述未執行命令指標。所述未執行命令指標包括所述第一命令指 標與對應儲存於命令佇列暫存器的至少一第二命令的至少一第二命令指標。
本發明提供一種記憶體儲存裝置,此記憶體儲存裝置包括連接器與記憶體控制器。連接器用以耦接至一主機系統。記憶體控制器耦接至連接器。記憶體控制器用以配置一命令佇列暫存器、一第一指示器及一第二指示器,所述命令佇列暫存器包括多個命令暫存區塊並且每一所述命令暫存區塊配置有一命令指標。記憶體控制器更用以配置一命令指標暫存器,所述命令指標暫存器具有一起始指標、一結尾指標與一命令未處理指標。記憶體控制器更用以從主機系統接收至少一第一命令,根據第一指示器中的多個第一指示位元將所述第一命令儲存於命令佇列暫存器,並且根據命令佇列暫存器的一目前儲存狀態更新所述第一指示位元以產生多個已更新第一指示位元。記憶體控制器更用以根據第一指示器中的所述已更新第一指示位元和第二指示器中的多個第二指示位元來產生多個已更新第二指示位元,並且根據所述已更新第二指示位元獲得所述第一命令的數目和所述命令指標之中對應在命令佇列暫存器中儲存所述第一命令的命令暫存區塊的至少一第一命令指標。記憶體控制器更用以將所述第一命令指標加入至命令指標暫存器,並且根據所述第一命令的數目更新結尾指標。記憶體控制器更用以執行記錄在命令指標暫存器中的所述未執行命令指標在命令佇列暫存器中對應的命令暫存區塊所儲存的命令。
在本發明之一實施例中,所述記憶體控制器更用以配置一接收命令開關指示器與一接收命令狀態指示器。所述記憶體控制器更用以停止接收所述第一命令,並將接收命令開關指示器的一開關指示位元切換至一不可接收命令狀態。所述記憶體控制器更用以判斷接收命令狀態指示器的一狀態指示位元是否為一正在接收命令狀態,並且若接收命令狀態指示器的狀態指示位元不為正在接收命令狀態,根據第一指示器中的所述已更新第一指示位元和第二指示器中的所述第二指示位元來產生所述已更新第二指示位元。
在本發明之一實施例中,所述記憶體控制器更用以對第一指示器中的所述已更新第一指示位元與第二指示器中的所述第二指示位元執行一異或操作。所述記憶體控制器更用以根據異或操作的一操作結果產生所述已更新第二指示位元,並將所述已更新第二指示位元寫入第二指示器。
在本發明之一實施例中,所述記憶體控制器更用以以第一指示器中的所述已更新第一指示位元取代第二指示器中的所述已更新第二指示位元為多個已取代第二指示位元。
在本發明之一實施例中,當所述未執行命令指標中的至少一第一未執行命令指標在命令佇列暫存器中對應的命令被執行完畢且可被抹除時,所述記憶體控制器更用以根據所述第一未執行命令指標更新起始指標、第一指示器中的所述已更新第一指示位元與第二指示器中的所述已取代第二指示位元。
在本發明之一實施例中,所述記憶體控制器更用以配置一新命令數記錄器與一新命令指標記錄器。所述記憶體控制器更用以統計所述已更新第二指示位元中的至少一第一位元狀態的數目以獲得所述第一命令的數目,並將所述第一命令的數目記錄於新命令數記錄器。所述記憶體控制器更用以根據所述已更新第二指示位元中的所述第一位元狀態自獲得所述命令指標之中對應在命令佇列暫存器中儲存所述第一命令的命令暫存區塊的所述第一命令指標,並將所述第一命令指標記錄於新命令指標記錄器。
在本發明之一實施例中,所述記憶體控制器更用以根據命令未處理指標與結尾指標,重新排列記錄在命令指標暫存器中的未執行命令指標的執行順序。所述記憶體控制器更用以根據此執行順序執行記錄在命令指標暫存器中的未執行命令指標在命令佇列暫存器中對應的命令暫存區塊所儲存的命令。
在本發明之一實施例中,所述記憶體控制器更用以根據命令未處理指標與結尾指標,取得記錄在命令指標暫存器中的所述未執行命令指標。其中所述未執行命令指標包括所述第一命令指標與對應儲存於命令佇列暫存器的至少一第二命令的至少一第二命令指標。
基於上述,本發明範例實施例的命令佇列管理方法、記憶體控制器及記憶體儲存裝置,可對從主機系統接收的多個命令進行最佳化管理。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉 實施例,並配合所附圖式作詳細說明如下。
1000‧‧‧主機系統
1100‧‧‧電腦
1102‧‧‧微處理器
1104‧‧‧隨機存取記憶體
1106‧‧‧輸入/輸出裝置
1108‧‧‧系統匯流排
1110‧‧‧資料傳輸介面
1202‧‧‧滑鼠
1204‧‧‧鍵盤
1206‧‧‧顯示器
1208‧‧‧印表機
1212‧‧‧隨身碟
1214‧‧‧記憶卡
1216‧‧‧固態硬碟
1310‧‧‧數位相機
1312‧‧‧SD卡
1314‧‧‧MMC卡
1316‧‧‧記憶棒
1318‧‧‧CF卡
1320‧‧‧嵌入式儲存裝置
100‧‧‧記憶體儲存裝置
102‧‧‧連接器
104‧‧‧記憶體控制器
106‧‧‧可複寫式非揮發性記憶體晶片
202‧‧‧記憶體管理電路
204‧‧‧主機介面
206‧‧‧記憶體介面
252‧‧‧緩衝記憶體模組
254‧‧‧電源管理電路
256‧‧‧錯誤檢查與校正電路
402‧‧‧命令佇列暫存器
404‧‧‧第一指示器
406‧‧‧第二指示器
408‧‧‧命令指標暫存器
410‧‧‧新命令數紀錄器
412‧‧‧新命令指標紀錄器
414‧‧‧接收命令開關指示器
416‧‧‧接收命令狀態指示器
501(0)~501(n)‧‧‧命令暫存區塊
502(0)~502(m)‧‧‧命令指標暫存區塊
A(0)~A(n)‧‧‧第一指示位元
B(0)~B(n)‧‧‧第二指示位元
C(0)~C(2)‧‧‧第三指示位元
Ptr_C(0)~Ptr_C(n)‧‧‧命令指標
Ptr_I‧‧‧起始指標
Ptr_U‧‧‧命令未處理指標
Ptr_T‧‧‧結尾指標
S1502、S1504、S1506、S1508、S1510、S1512、S1514、S1516‧‧‧本發明一範例實施例的命令佇列管理方法各步驟
S1602、S1604、S1606、S1608、S1610、S1612、S1614、S1616、S1618、S1620、S1622、S1624、S1626、S1628‧‧‧本發明另一範例實施例的命令佇列管理方法各步驟
圖1A是根據一範例實施例所繪示的主機系統與記憶體儲存裝置。
圖1B是根據一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
圖1C是根據一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖2是繪示圖1A所示的記憶體儲存裝置的概要方塊圖。
圖3是根據一範例實施例所繪示之記憶體控制器的概要方塊圖。
圖4是根據一範例實施例所繪示之緩衝記憶體模組的概要方塊圖。
圖5是根據一範例實施例所繪示之命令佇列暫存器、第一指示器、第二指示器及命令指標暫存器的示意圖。
圖6是根據一範例實施例所繪示之初始化命令佇列暫存器、第一指示器、第二指示器及命令指標暫存器的示意圖。
圖7是根據一範例實施例所繪示之儲存第一命令並更新第一指示位元的示意圖。
圖8是根據一範例實施例所繪示之執行異或操作的示意圖。
圖9是根據一範例實施例所繪示之新命令數紀錄器與新命令指標紀錄器的示意圖。
圖10是根據一範例實施例所繪示之加入命令指標至命令指標暫存器並更新結尾指標的示意圖。
圖11是根據一範例實施例所繪示之更新起始指標、第一指示位元及第二指示位元的示意圖。
圖12是根據一範例實施例所繪示之儲存第二命令並更新第一指示位元的示意圖。
圖13是根據一範例實施例所繪示之執行另一次異或操作的示意圖。
圖14是根據一範例實施例所繪示之加入另外的命令指標至命令指標暫存器並更新結尾指標的示意圖。
圖15是根據一範例實施例所繪示之命令佇列管理方法的流程圖。
圖16是根據另一範例實施例所繪示之命令佇列管理方法的流程圖。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1A是根據一範例實施例所繪示的主機系統與記憶體儲存裝置。
請參照圖1A,主機系統1000一般包括電腦1100與輸入/輸出(input/output,I/O)裝置1106。電腦1100包括微處理器1102、隨機存取記憶體(random access memory,RAM)1104、系統匯流排1108與資料傳輸介面1110。輸入/輸出裝置1106包括如圖1B的滑鼠1202、鍵盤1204、顯示器1206與印表機1208。必須瞭解的是,圖1B所示的裝置非限制輸入/輸出裝置1106,輸入/輸出裝置1106可更包括其他裝置。
在本發明實施例中,記憶體儲存裝置100是透過資料傳輸介面1110與主機系統1000的其他元件耦接。藉由微處理器1102、隨機存取記憶體1104與輸入/輸出裝置1106的運作可將資料寫入至記憶體儲存裝置100或從記憶體儲存裝置100中讀取資料。例如,記憶體儲存裝置100可以是如圖1B所示的隨身碟1212、記憶卡1214或固態硬碟(Solid State Drive,SSD)1216等的可複寫式非揮發性記憶體儲存裝置。
一般而言,主機系統1000為可實質地與記憶體儲存裝置100配合以儲存資料的任意系統。雖然在本範例實施例中,主機系統1000是以電腦系統來作說明,然而,在本發明另一範例實施例中主機系統1000可以是數位相機、攝影機、通信裝置、音訊播放器或視訊播放器等系統。例如,在主機系統為數位相機(攝影機)1310時,可複寫式非揮發性記憶體儲存裝置則為其所使用的 SD卡1312、MMC卡1314、記憶棒(memory stick)1316、CF卡1318或嵌入式儲存裝置1320(如圖1C所示)。嵌入式儲存裝置1320包括嵌入式多媒體卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒體卡是直接耦接於主機系統的基板上。
圖2是繪示圖1A所示的記憶體儲存裝置的概要方塊圖。
請參照圖2,記憶體儲存裝置100包括連接器102、記憶體控制器104與可複寫式非揮發性記憶體晶片106。
在本範例實施例中,連接器102是相容於序列先進附件(Serial Advanced Technology Attachment,SATA)標準。然而,必須瞭解的是,本發明不限於此,連接器102亦可以是符合並列先進附件(Parallel Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)1394標準、高速周邊零件連接介面(Peripheral Component Interconnect Express,PCI Express)標準、通用序列匯流排(Universal Serial Bus,USB)標準、安全數位(Secure Digital,SD)介面標準、超高速一代(Ultra High Speed-I,UHS-I)介面標準、超高速二代(Ultra High Speed-II,UHS-II)介面標準、記憶棒(Memory Stick,MS)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、崁入式多媒體儲存卡(Embedded Multimedia Card,eMMC)介面標準、通用快閃記憶體(Universal Flash Storage,UFS)介面標準、小型快閃(Compact Flash,CF)介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。
記憶體控制器104用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制命令,並且根據主機系統1000的命令在可複寫式非揮發性記憶體晶片106中進行資料的寫入、讀取與抹除等運作。
可複寫式非揮發性記憶體晶片106是耦接至記憶體控制器104,並且用以儲存主機系統1000所寫入之資料。可複寫式非揮發性記憶體晶片106具有多個實體抹除單元。每一實體抹除單元分別具有複數個實體程式化單元,並且屬於同一個實體抹除單元之實體程式化單元可被獨立地寫入且被同時地抹除。例如,每一實體抹除單元是由128個實體程式化單元所組成。然而,必須瞭解的是,本發明不限於此,每一實體抹除單元是可由64個實體程式化單元、256個實體程式化單元或其他任意個實體程式化單元所組成。
更詳細來說,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。實體程式化單元為程式化的最小單元。即,實體程式化單元為寫入資料的最小單元。每一實體程式化單元通常包括資料位元區與冗餘位元區。資料位元區包含多個實體存取位址用以儲存使用者的資料,而冗餘位元區用以儲存系統的資料(例如,控制資訊與錯誤更正碼)。在本範例實施例中,每一個實體程式化單元的資料位元區中會包含4個實體存取位址,且一個實體存取位址的大小為512位元組(byte,B)。然而,在其他範例實施例中,資料位元區中也可 包含8個、16個或數目更多或更少的實體存取位址,本發明並不限制實體存取位址的大小以及個數。例如,實體抹除單元為實體區塊,並且實體程式化單元為實體頁面或實體扇。
在本範例實施例中,可複寫式非揮發性記憶體晶片106為多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組,即一個記憶胞中可儲存至少2個位元資料。然而,本發明不限於此,可複寫式非揮發性記憶體晶片106亦可是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組、複數階記憶胞(Trinary Level Cell,TLC)NAND型快閃記憶體模組、其他快閃記憶體模組或其他具有相同特性的記憶體模組。
圖3是根據一範例實施例所繪示之記憶體控制器的概要方塊圖。
請參照圖3,記憶體控制器104包括記憶體管理電路202、主機介面204與記憶體介面206。
記憶體管理電路202用以控制記憶體控制器104的整體運作。具體來說,記憶體管理電路202具有多個控制命令,並且在記憶體儲存裝置100運作時,此些控制命令會被執行以進行資料的寫入、讀取與抹除等運作。以下說明記憶體管理電路202的操作時,等同於說明記憶體控制器104的操作,以下並不再贅述。
在本範例實施例中,記憶體管理電路202的控制命令是以韌體型式來實作。例如,記憶體管理電路202具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制命令是被燒錄至 此唯讀記憶體中。當記憶體儲存裝置100運作時,此些控制命令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在本發明另一範例實施例中,記憶體管理電路202的控制命令亦可以程式碼型式儲存於可複寫式非揮發性記憶體晶片106的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路202具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當記憶體控制器104被致能時,微處理器單元會先執行此開機碼來將儲存於可複寫式非揮發性記憶體晶片106中之控制命令載入至記憶體管理電路202的隨機存取記憶體中。之後,微處理器單元會運轉此些控制命令以進行資料的寫入、讀取與抹除等運作。
此外,在本發明另一範例實施例中,記憶體管理電路202的控制命令亦可以一硬體型式來實作。例如,記憶體管理電路202包括微控制器、記憶體管理單元、記憶體寫入單元、記憶體讀取單元、記憶體抹除單元與資料處理單元。記憶體管理單元、記憶體寫入單元、記憶體讀取單元、記憶體抹除單元與資料處理單元是耦接至微控制器。其中,記憶體管理單元用以管理可複寫式非揮發性記憶體晶片106的實體抹除單元;記憶體寫入單元用以對可複寫式非揮發性記憶體晶片106下達寫入命令以將資料寫入至可複寫式非揮發性記憶體晶片106中;記憶體讀取單元用以對可複寫式非揮發性記憶體晶片106下達讀取命令以從可複寫式非揮 發性記憶體晶片106中讀取資料;記憶體抹除單元用以對可複寫式非揮發性記憶體晶片106下達抹除命令以將資料從可複寫式非揮發性記憶體晶片106中抹除;而資料處理單元用以處理欲寫入至可複寫式非揮發性記憶體晶片106的資料以及從可複寫式非揮發性記憶體晶片106中讀取的資料。
主機介面204是耦接至記憶體管理電路202並且用以接收與識別主機系統1000所傳送的命令與資料。也就是說,主機系統1000所傳送的命令與資料會透過主機介面204來傳送至記憶體管理電路202。在本範例實施例中,主機介面204是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面204亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SD標準、UHS-I標準、UHS-II標準、MS標準、MMC標準、eMMC標準、UFS標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面206是耦接至記憶體管理電路202並且用以存取可複寫式非揮發性記憶體晶片106。也就是說,欲寫入至可複寫式非揮發性記憶體晶片106的資料會經由記憶體介面206轉換為可複寫式非揮發性記憶體晶片106所能接受的格式。
在本發明一範例實施例中,記憶體控制器104還包括緩衝記憶體模組252、電源管理電路254與錯誤檢查與校正電路256。
緩衝記憶體模組252是耦接至記憶體管理電路202並且用以暫存來自於主機系統1000的資料與命令或來自於可複寫式非 揮發性記憶體晶片106的資料。
電源管理電路254是耦接至記憶體管理電路202並且用以控制記憶體儲存裝置100的電源。
錯誤檢查與校正電路256是耦接至記憶體管理電路202並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路202從主機系統1000中接收到寫入命令時,錯誤檢查與校正電路256會為對應此寫入命令的資料產生對應的錯誤檢查與校正碼(Error Checking and Correcting Code,ECC Code),並且記憶體管理電路202會將對應此寫入命令的資料與對應的錯誤檢查與校正碼寫入至可複寫式非揮發性記憶體晶片106中。之後,當記憶體管理電路202從可複寫式非揮發性記憶體晶片106中讀取資料時會同時讀取此資料對應的錯誤檢查與校正碼,並且錯誤檢查與校正電路256會依據此錯誤檢查與校正碼對所讀取的資料執行錯誤檢查與校正程序。
圖4是根據一範例實施例所繪示之緩衝記憶體模組的概要方塊圖。請參照圖4,記憶體控制器104(或記憶體管理電路202)可在緩衝記憶體模組252中配置命令佇列暫存器402、第一指示器404、第二指示器406及命令指標暫存器408。
命令佇列暫存器402用以儲存記憶體控制器104(或記憶體管理電路202)自主機系統1000接收的命令。詳細而言,命令佇列暫存器402包括多個命令暫存區塊,並且每一個命令暫存區塊用以儲存一個命令。此外,每一個命令暫存區塊配置有一個命令 指標。也就是說,每一個命令指標實際上是指向一個命令暫存區塊(或命令暫存區塊的暫存位址)。
第一指示器404用以儲存多個第一指示位元。詳細而言,當記憶體控制器104(或記憶體管理電路202)接收到來自主機系統1000的一個或多個命令時,記憶體控制器104(或記憶體管理電路202)可查詢第一指示器404中的第一指示位元,以根據查詢結果將此一個或多個命令儲存在命令佇列暫存器402的一個或多個命令暫存區塊。在本範例實施例中,第一指示器404可用以指示命令佇列暫存器402之儲存狀態。其中,值得說明的是,在本文中,”根據”是意指”至少利用”,例如”記憶體控制器104根據對第一指示器404中的第一指示位元之查詢結果,將此一個或多個命令儲存在命令佇列暫存器402的一個或多個命令暫存區塊”是代表記憶體控制器104可單獨利用此查詢結果來決定下一步驟的執行與否,或此查詢結果只是供記憶體控制器104參考之因素之一。
第二指示器406用以儲存多個第二指示位元。詳細而言,記憶體控制器104(或記憶體管理電路202)可根據第二指示器406中的第二指示位元獲得每一次自主機系統1000接收的命令或命令佇列中的命令的數目。特別是,在本範例實施例中,第一指示位元及第二指示位元的數目會與命令佇列暫存器402的命令暫存區塊的數目相等。在本範例實施例中,第二指示器406可用以指示最新從主機系統1000接收的命令數目及此等最新從主機系統1000接收的命令其相對應的命令指標。
然而,必須了解的是,本發明不限於此,在本發明另一範例實施例中,第一指示位元及第二指示位元的數目也可以分別小於命令佇列暫存器402的命令暫存區塊的數目。
命令指標暫存器408用以儲存命令指標。詳細而言,儲存於命令指標暫存器408中且對應的命令尚未被執行的命令指標會被依照其對應的命令的接收時間及/或儲存命令的記憶體位址是否連續等有利於排序的資訊進行排序。然後,記憶體控制器104(或記憶體管理電路202)可根據排序結果來依序讀取儲存於命令指標暫存器408中且對應的命令尚未被執行的命令指標,並根據所讀取的命令指標找到對應在命令佇列暫存器402中的命令暫存區塊。接著,記憶體控制器104(或記憶體管理電路202)可執行所找到的命令暫存區塊中儲存的命令。
圖5是根據一範例實施例所繪示之命令佇列暫存器、第一指示器、第二指示器及命令指標暫存器的示意圖。
請參照圖5,命令佇列暫存器402包括命令暫存區塊501(0)~501(n)與命令指標Ptr_C(0)~Ptr_C(n)。每一個命令暫存區塊501(0)~501(n)用以儲存一個命令,並且命令指標Ptr_C(0)~Ptr_C(n)分別指向命令暫存區塊501(0)~501(n)(或命令暫存區塊501(0)~501(n)的暫存位址)。也就是說,假設命令佇列暫存器402包括n+1個命令暫存區塊501(0)~501(n),則命令佇列暫存器402最多可同時暫存n+1個命令。
第一指示器404儲存第一指示位元A(0)~A(n),並且第二 指示器406儲存第二指示位元B(0)~B(n)。
命令指標暫存器408包括命令指標暫存區塊502(0)~502(m)。每一個命令指標暫存區塊502(0)~502(m)用以儲存一個命令指標。此外,命令指標暫存器408還具有起始指標Ptr_I、結尾指標Ptr_T與命令未處理指標Ptr_U。
為了說明方便,以下將以n=7作為範例對本範例實施例進行詳細說明。但是,在本發明另一實施例中,n還可以是任意小於或大於7的正整數,本發明並不對n的值進行限定。此外,以下將假設第一位元狀態為「1」且第二位元狀態為「0」,但是,在本發明另一實施例中,第一位元狀態也可以是「0」且第二位元狀態也可以是「1」,本發明不對其限制。
圖6是根據一範例實施例所繪示之初始化命令佇列暫存器、第一指示器、第二指示器及命令指標暫存器的示意圖。
請參照圖6,命令佇列暫存器402中的命令暫存區塊501(n)~501(7)儲存的初始值以「Null」表示,並且命令指標Ptr_C(0)~Ptr_C(7)分別指向命令暫存區塊501(n)~501(7)。第一指示器404所儲存的第一指示位元A(0)~A(7)與第二指示器406所儲存的第二指示位元B(0)~B(7)的初始值皆為「0」(即,第二位元狀態)。此外,命令指標暫存器408中的命令指標暫存區塊502(0)~502(m)儲存的初始值也同樣以「Null」表示,且起始指標Ptr_I、結尾指標Ptr_T及命令未處理指標Ptr_U一開始都指向命令指標暫存區塊502(0)。然而,在本發明另一範例實施例中,若不 執行初始化,則命令暫存區塊501(n)~501(7)與命令指標暫存區塊502(0)~502(m)中的值也可以是任意值,本發明不對其限制。
詳細而言,當記憶體控制器104(或記憶體管理電路202)在一次的命令佇列接收程序中從主機系統1000接收一個或多個命令(以下統稱為第一命令)時,記憶體控制器104(或記憶體管理電路202)可根據第一指示器404中的第一指示位元A(0)~A(7)將此第一命令儲存於命令佇列暫存器402,並根據命令佇列暫存器402的目前儲存狀態或命令暫存區塊501(0)~501(7)的使用狀態來更新第一指示位元A(0)~A(7)。
需說明的是,在此,一次的命令佇列接收程序實質上是以記憶體控制器104(或記憶體管理電路202)執行一次的命令佇列的批量接收與批量儲存作為單位,但本發明不在此限。
圖7是根據一範例實施例所繪示之儲存第一命令並更新第一指示位元的示意圖。
請參照圖7,假設記憶體控制器104(或記憶體管理電路202)在一次的命令佇列接收程序中從主機系統1000接收命令1、命令2及命令3。在儲存命令1、命令2及命令3之前,記憶體控制器104(或記憶體管理電路202)會先查詢第一指示器404,並從第一指示位元A(0)開始依序識別第一指示位元A(0)~A(7)是否為第一位元狀態。若當前識別的第一指示位元不為第一位元狀態,記憶體控制器104(或記憶體管理電路202)會將已接收但尚未儲存的第一命令的其中之一儲存於當前識別的第一指示位元在命令佇 列暫存器402中對應的命令暫存區塊。此外,若當前識別的第一指示位元為第一位元狀態,則記憶體控制器104(或記憶體管理電路202)會接續識別下一個第一指示位元,直到識別到第一指示位元A(7)為止。
以第一位元狀態為「1」且第二位元狀態為「0」作為範例,由於第一指示位元A(0)、第一指示位元A(1)及第一指示位元A(2)皆被記錄為第二位元狀態,因此記憶體控制器104(或記憶體管理電路202)會將命令1儲存於第一指示位元A(0)對應的命令暫存區塊501(0),將命令2儲存於第一指示位元A(1)對應的命令暫存區塊501(1),並且將命令3儲存於第一指示位元A(2)對應的命令暫存區塊501(2)。
然後,在將命令1、命令2及命令3分別寫入命令暫存區塊501(0)、命令暫存區塊501(1)及命令暫存區塊501(2)之後,記憶體控制器104(或記憶體管理電路202)會將第一指示位元A(0)、第一指示位元A(1)及第一指示位元A(2)皆更新為第一位元狀態(即,「1」),以表示命令暫存區塊501(0)、命令暫存區塊501(1)及命令暫存區塊501(2)都已經儲存了目前不能被抹除或覆蓋的第一命令(即,尚未完成執行的命令)。
然後,記憶體控制器104(或記憶體管理電路202)會根據更新後的第一指示位元A(0)~A(7)和第二指示器406中的第二指示位元B(0)~B(7)來更新第二指示位元B(0)~B(7)。
詳細而言,記憶體控制器104(或記憶體管理電路202)可 對第一指示位元A(0)~A(7)與第二指示位元B(0)~B(7)執行異或(Exclusive OR,XOR)操作,並根據XOR操作的操作結果產生更新後的第二指示位元B(0)~B(7)。然後,記憶體控制器104(或記憶體管理電路202)可將更新後的第二指示位元B(0)~B(7)重新寫入至第二指示器406。
圖8是根據一範例實施例所繪示之執行異或操作的示意圖。
請參照圖8,記憶體控制器104(或記憶體管理電路202)對第一指示器404中的第一指示位元(即,「11100000」)與第二指示器406中的第二指示位元(即,「00000000」)執行XOR操作,以產生更新後的第二指示位元(即,「11100000」),並將更新後的第二指示位元(即,「11100000」)寫入至第二指示器406。
接著,記憶體控制器104(或記憶體管理電路202)可根據更新後的第二指示位元B(0)~B(7)獲得第一命令的數目和命令指標Ptr_C(0)~Ptr_C(7)之中對應在命令佇列暫存器402中儲存第一命令的命令暫存區塊501(0)、命令暫存區塊501(1)及命令暫存區塊501(2)的命令指標Ptr_C(0)、命令指標Ptr_C(1)及命令指標Ptr_C(2)(以下統稱為第一命令指標)。
請再次參照圖4,在本範例實施例中,記憶體控制器104(或記憶體管理電路202)還可在緩衝記憶體模組252中配置新命令數紀錄器410與新命令指標紀錄器412。
新命令數紀錄器410可儲存多個第三指示位元,並且第 三指示位元用以記錄第一命令的數目。
新命令指標紀錄器412可包括多個命令指標暫存區塊,並且這些命令指標暫存區塊用以儲存第一命令指標。
詳細而言,記憶體控制器104(或記憶體管理電路202)可以統計第二指示器406中更新後的第二指示位元B(0)~B(7)之中被記錄為第一位元狀態(即,「1」)之指示位元的數目以獲得第一命令的數目,並利用第三指示位元將第一命令的數目記錄於新命令數記錄器410。此外,記憶體控制器104(或記憶體管理電路202)也可將第一命令指標記錄於新命令指標記錄器412。
圖9是根據一範例實施例所繪示之新命令數紀錄器與新命令指標紀錄器的示意圖。
請同時參照圖8與圖9,由於第二指示器406中第二指示位元B(0)、第二指示位元B(1)及第二指示位元B(2)是「1」,因此記憶體控制器104(或記憶體管理電路202)會獲得第一命令的數目為「3」,並將新命令數記錄器410中的第三指示位元C(0)、C(1)及C(2)分別設為「0」、「1」及「1」,以表示第一命令的數目為「3」。此外,記憶體控制器104(或記憶體管理電路202)也會將命令指標Ptr_C(0)~Ptr_C(2)記錄於新命令指標記錄器412。
然後,在獲得第一命令的數目以及第一命令指標之後,記憶體控制器104(或記憶體管理電路202)會以第一指示器404中的第一指示位元A(0)~A(7)取代第二指示器406中的第二指示位元B(0)~B(7)。
另一方面,在獲得第一命令的數目以及第一命令指標之後,記憶體控制器104(或記憶體管理電路202)會將第一命令指標加入至命令指標暫存器408,並且根據第一命令的數目更新命令指標暫存器408中的結尾指標Ptr_T。然後,記憶體控制器104(或記憶體管理電路202)可自命令指標暫存器408中依序讀取對應於儲存在命令佇列暫存器402中但尚未被執行之命令的命令指標(以下統稱為未執行命令指標),以執行未執行命令指標在命令佇列暫存器402中對應的命令暫存區塊所儲存的命令。
此外,在本發明之另一範例實施例中,記憶體控制器104(或記憶體管理電路202)還會根據命令指標暫存器408中的命令未處理指標Ptr_U與結尾指標Ptr_T,重新排列未執行命令指標的執行順序。例如,根據未執行命令指標的接收時間及/或儲存命令的記憶體位址是否連續等有利於排序的資訊來排列未執行命令指標的執行順序。在完成排序之後,記憶體控制器104(或記憶體管理電路202)可根據此執行順序從命令指標暫存器408中依序讀取未執行命令指標,以執行未執行命令指標在命令佇列暫存器402中對應的命令暫存區塊所儲存的命令。
詳細而言,記憶體控制器104(或記憶體管理電路202)會根據命令未處理指標Ptr_U與結尾指標Ptr_T來取得未執行命令指標。特別是,根據不同的命令儲存與執行狀態,未執行的命令指標可以僅包括第一命令指標。或者,未執行的命令指標也可同時包括第一命令指標與對應儲存於命令佇列暫存器402的其餘尚未 執行之命令的命令指標。
圖10是根據一範例實施例所繪示之加入命令指標至命令指標暫存器並更新結尾指標的示意圖。
請參照圖10,在獲得第一命令的數目(即,「3」)以及命令指標Ptr_C(0)~Ptr_C(2)之後,記憶體控制器104(或記憶體管理電路202)可將命令指標Ptr_C(0)~Ptr_C(2)加入至命令指標暫存器408,並將結尾指標Ptr_T從指向命令指標暫存區塊502(0)切換至指向命令指標暫存區塊502(2)。例如,將結尾指標Ptr_T的值加3。
同時,由於命令未處理指標Ptr_U是指向命令指標暫存區塊502(0),並且結尾指標Ptr_T是指向命令指標暫存區塊502(2),因此,記憶體控制器104(或記憶體管理電路202)會將紀錄在命令指標暫存區塊502(0)~502(2)中的命令指標Ptr_C(0)~Ptr_C(2)視為尚未被讀取的命令指標。然後,記憶體控制器104(或記憶體管理電路202)會對命令指標Ptr_C(0)~Ptr_C(2)進行排序。例如,根據命令1、命令2及命令3的接收時間及/或儲存命令的記憶體位址是否連續等有利於排序的資訊對命令指標Ptr_C(0)~Ptr_C(2)進行排序。在本範例實施例中,假設排序結果為執行優先權由高至低依序為命令3、命令1及命令2,則對應於命令3的命令指標Ptr_C(2)會被儲存到命令指標暫存區塊502(0),對應於命令1的命令指標Ptr_C(0)會被儲存到命令指標暫存區塊502(1),並且對應於命令2的命令指標Ptr_C(1)會被儲存到命令指標暫存區塊502(2)。
然後,記憶體控制器104(或記憶體管理電路202)可先自命令指標暫存區塊502(0)讀取命令指標Ptr_C(2),以讀取並執行儲存於命令暫存區塊501(2)的命令3。然後,記憶體控制器104(或記憶體管理電路202)可自命令指標暫存區塊502(1)讀取命令指標Ptr_C(0),以讀取並執行儲存於命令暫存區塊501(0)的命令1。接著,記憶體控制器104(或記憶體管理電路202)可自命令指標暫存區塊502(2)讀取命令指標Ptr_C(1),以讀取並執行儲存於命令暫存區塊501(1)的命令2。
此外,每當記憶體控制器104(或記憶體管理電路202)欲執行下一個命令時,記憶體控制器104(或記憶體管理電路202)就會更新命令未處理指標Ptr_U,例如,把命令未處理指標Ptr_U的值加「1」。
舉例來說,假設命令未處理指標Ptr_U一開始是指向命令指標暫存區塊502(0)。若記憶體控制器104(或記憶體管理電路202)欲執行下一個命令,則記憶體控制器104(或記憶體管理電路202)會將命令未處理指標Ptr_U從指向命令指標暫存區塊502(0)切換至指向命令指標暫存區塊502(1),以讀取命令指標Ptr_C(0)。接著,若記憶體控制器104(或記憶體管理電路202)欲再執行下一個命令,則記憶體控制器104(或記憶體管理電路202)會接續將命令未處理指標Ptr_U從指向命令指標暫存區塊502(1)切換至指向命令指標暫存區塊502(2),以讀取命令指標Ptr_C(1)。
另一方面,當命令指標暫存器408中特定的命令指標在 命令佇列暫存器402中對應的命令被執行完畢且可被抹除或可被新的命令覆蓋時,記憶體控制器104(或記憶體管理電路202)可根據此特定的命令指標來更新命令指標暫存器408中的起始指標Ptr_I、第一指示器404中的第一指示位元A(0)~A(7)及第二指示器406中的第二指示位元B(0)~B(7)。
舉例來說,圖11是根據一範例實施例所繪示之更新起始指標、第一指示位元及第二指示位元的示意圖。
請參照圖11,假設命令3與命令1已被依序或同時執行完畢,且命令3與命令1也處於可自命令佇列暫存器402中抹除或可被新的命令覆蓋的狀態,則記憶體控制器104(或記憶體管理電路202)可將起始指標Ptr_I切換至指向命令指標暫存區塊502(1),並將第一指示器404中的第一指示位元A(0)與第一指示位元A(2)以及第二指示器406中的第二指示位元B(0)與第二指示位元B(2)都更新為第二位元狀態(即,「0」),以表示可將新的命令儲存於命令暫存區塊501(0)與命令暫存區塊501(2)。
以上是以經過初始化後的命令佇列暫存器402、第一指示器404、第二指示器406及命令指標暫存器408作為範例進行說明。然而,不管命令佇列暫存器402、第一指示器404、第二指示器406及命令指標暫存器408是否經過初始化,基本的實施方式還是相同的。因此,以下將接續上述範例,對非處於初始化狀態的命令佇列暫存器402、第一指示器404、第二指示器406及命令指標暫存器408進行說明。
接續上述範例,若記憶體控制器104(或記憶體管理電路202)在另一次的命令佇列接收程序中從主機系統1000接收另外的一個或多個命令(以下統稱為第二命令),則記憶體控制器104(或記憶體管理電路202)同樣可根據第一指示器404中的第一指示位元A(0)~A(7)將此第一命令儲存於命令佇列暫存器402,並根據命令佇列暫存器402的目前儲存狀態或命令暫存區塊501(0)~501(7)的使用狀態來更新第一指示位元A(0)~A(7)。
圖12是根據一範例實施例所繪示之儲存第二命令並更新第一指示位元的示意圖,並且圖13是根據一範例實施例所繪示之執行另一次異或操作的示意圖。
請參照圖12,假設記憶體控制器104(或記憶體管理電路202)在另一次的命令佇列接收程序中自主機系統1000接收命令4、命令5與命令6。由於第一指示器404中的第一指示位元A(0)、第一指示位元A(2)及第一指示位元A(3)皆為第二位元狀態(即,「0」),因此記憶體控制器104(或記憶體管理電路202)可將命令4寫入第一指示位元A(0)對應的命令暫存區塊501(0),將命令5寫入第一指示位元A(2)對應的命令暫存區塊501(2),並且將命令6寫入第一指示位元A(3)對應的命令暫存區塊501(3)。此外,記憶體控制器104(或記憶體管理電路202)還可根據命令佇列暫存器402的目前儲存狀態或命令暫存區塊501(0)~501(7)的使用狀態來更新第一指示位元A(0)~A(7)。也就是說,記憶體控制器104(或記憶體管理電路202)可將第一指示位元A(0)、第一指示位元A(2)及 第一指示位元A(3)由第二位元狀態(即,「0」)更新為第一位元狀態(即,「1」)。
然後,請參照圖13,記憶體控制器104(或記憶體管理電路202)會對第一指示器404中的第一指示位元(即,「11110000」)與第二指示器406中的第二指示位元(即,「01000000」)執行XOR操作,並產生更新後的第二指示位元(即,「10110000」)。根據更新後的第二指示位元(即,「10110000」),記憶體控制器104(或記憶體管理電路202)可得知第二命令的數目為「3」,並獲得命令指標Ptr_C(0)~Ptr_C(7)之中對應在命令佇列暫存器402中儲存第二命令的命令暫存區塊501(0)、命令暫存區塊501(2)及命令暫存區塊501(3)的命令指標Ptr_C(0)、Ptr_C(2)及Ptr_C(3)(以下統稱為第二命令指標)。
圖14是根據一範例實施例所繪示之加入另外的命令指標至命令指標暫存器並更新結尾指標的示意圖。
請參照圖14,在獲得第二命令的數目(即,「3」)並將命令指標Ptr_C(0)、命令指標Ptr_C(2)及命令指標Ptr_C(3)記錄在新命令指標紀錄器412之後,記憶體控制器104(或記憶體管理電路202)可接續在命令指標暫存區塊502(2)之後將命令指標Ptr_C(0)、命令指標Ptr_C(2)及命令指標Ptr_C(3)加入至命令指標暫存器408,並根據第二命令的數目(即,「3」)將結尾指標Ptr_T從指向命令指標暫存區塊502(2)切換至指向命令指標暫存區塊502(5)。例如,將結尾指標Ptr_T的值加3。
同時,由於命令未處理指標Ptr_U是指向命令指標暫存區塊502(2),並且結尾指標Ptr_T是指向命令指標暫存區塊502(5),因此,記憶體控制器104(或記憶體管理電路202)會將紀錄在命令指標暫存區塊502(2)~502(5)的命令指標Ptr_C(0)~Ptr_C(3)皆視為尚未被讀取的命令指標。然後,記憶體控制器104(或記憶體管理電路202)會對命令指標Ptr_C(0)~Ptr_C(3)進行排序。例如,根據命令2、命令4~命令6的接收時間及/或儲存命令的記憶體位址是否連續等有利於排序的資訊對命令指標Ptr_C(0)~Ptr_C(3)進行排序。在本範例實施例中,假設排序結果為執行優先權由高至低依序為命令2、命令4、命令6及命令5,則命令指標Ptr_C(1)會被儲存到命令指標暫存區塊502(2),命令指標Ptr_C(0)會被儲存到命令指標暫存區塊502(3),命令指標Ptr_C(3)會被儲存到命令指標暫存區塊502(4),並且命令指標Ptr_C(2)會被儲存到命令指標暫存區塊502(5)。
然後,記憶體控制器104(或記憶體管理電路202)可依序讀取命令指標暫存區塊502(2)~502(5)中的命令指標Ptr_C(0)~Ptr_C(3),並執行相對應的命令等等,並對應更新命令未處理指標Ptr_U、起始指標Ptr_I及結尾指標Ptr_T,在此不重複贅述。
值得一提的是,在本範例實施例中,命令指標暫存器408為一環形命令指標暫存器。也就是說,若命令未處理指標Ptr_U、起始指標Ptr_I及/或結尾指標Ptr_T已指向命令指標暫存區塊 502(m)而欲繼續往下切換時,在超過命令指標暫存區塊502(m)之後,命令未處理指標Ptr_U、起始指標Ptr_I及/或結尾指標Ptr_T會切換回命令指標暫存區塊502(0),並可接續切換至指向命令指標暫存區塊502(1)及/或命令指標暫存區塊502(2)等。此外,在加入命令指標至命令指標暫存器408時,若已到達命令指標暫存區塊502(m)且欲繼續加入命令指標時,基於環形命令指標暫存器的特性,同樣也是將多餘的命令指標從命令指標暫存區塊502(0)開始依序寫入。
然而,本發明不以上述實施方式為限。請再次參照圖4,在本發明一範例實施例中,記憶體控制器104(或記憶體管理電路202)還可以在緩衝記憶體模組252中配置接收命令開關指示器414與接收命令狀態指示器416。
接收命令開關指示器414用以儲存一開關指示位元。若記憶體控制器104(或記憶體管理電路202)欲停止自主機系統1000接收命令,則記憶體控制器104(或記憶體管理電路202)會將接收命令開關指示器414的開關指示位元切換至不可接收命令狀態。例如,將開關指示位元設為「0」。反之,若記憶體控制器104(或記憶體管理電路202)欲自主機系統1000接收命令,則記憶體控制器104(或記憶體管理電路202)會將接收命令開關指示器414的開關指示位元切換至可接收命令狀態。例如,將開關指示位元設為「1」。然而,實際的設定方式可視實務上的需求加以調整,本發明不對其限制。
接收命令狀態指示器416用以儲存一狀態指示位元。詳細而言,狀態指示位元是用以反映記憶體控制器104(或記憶體管理電路202)當前是否正在接收命令。當狀態指示位元為正在接收命令狀態時,表示記憶體控制器104(或記憶體管理電路202)正在自主機系統1000接收命令。反之,若狀態指示位元不為正在接收命令狀態,則表示記憶體控制器104(或記憶體管理電路202)目前沒有自主機系統1000接收命令。
在本範例實施例中,記憶體控制器104(或記憶體管理電路202)可判斷接收命令狀態指示器416的狀態指示位元是否為正在接收命令狀態。若接收命令狀態指示器416的狀態指示位元不為正在接收命令狀態,記憶體控制器104(或記憶體管理電路202)才會對第一指示位元及/或第二指示位元進行更新,例如根據第一指示器404中的第一指示位元和第二指示器中的第二指示位元來更新第二指示位元。反之,若接收命令狀態指示器416的狀態指示位元為正在接收命令狀態,則記憶體控制器104(或記憶體管理電路202)不更新第一指示位元及/或第二指示位元。藉此,可避免在更新第一指示位元及/或第二指示位元時,有新的命令進來,導致命令的接收和命令佇列的管理出現衝突。
需特別說明的是,雖然上述範例實施例是將命令佇列暫存器402、第一指示器404、第二指示器406、命令指標暫存器408、新命令數紀錄器410、新命令指標紀錄器412、接收命令開關指示器414及接收命令狀態指示器416配置於緩衝記憶體模組252內, 但是,在本發明另一範例實施例中,命令佇列暫存器402、第一指示器404、第二指示器406、命令指標暫存器408、新命令數紀錄器410、新命令指標紀錄器412、接收命令開關指示器414及接收命令狀態指示器416也可以是配置在複寫式非揮發性記憶體晶片106中,並且可由記憶體控制器104(或記憶體管理電路202)對其進行存取。又例如,在另一範例實施例中,命令佇列暫存器402、第一指示器404、第二指示器406、命令指標暫存器408、新命令數紀錄器410、新命令指標紀錄器412、接收命令開關指示器414及接收命令狀態指示器416亦可以以硬體實作並配置在記憶體儲存裝置100中的暫存器。
圖15是根據一範例實施例所繪示之命令佇列管理方法的流程圖。
請參照圖15,在步驟S1502中,記憶體控制器104(或記憶體管理電路202)會配置命令佇列暫存器402、第一指示器404及第二指示器406。
在步驟S1504中,記憶體控制器104(或記憶體管理電路202)會配置命令指標暫存器408。
特別是,本發明並不限制步驟S1502與步驟S1504的執行先後順序。例如,在本發明另一範例實施例中,步驟S1504也可以先被執行,而在步驟S1504之後接續執行步驟S1502。
在步驟S1506中,記憶體控制器104(或記憶體管理電路202)從主機系統1000接收至少一第一命令。
在步驟S1508中,記憶體控制器104(或記憶體管理電路202)會根據第一指示器404中的多個第一指示位元將第一命令儲存於命令佇列暫存器402,並根據命令佇列暫存器402的目前儲存狀態或命令暫存區塊的使用狀態更新第一指示位元,以產生多個更新後的第一指示位元。
接著,在步驟S1510中,記憶體控制器104(或記憶體管理電路202)會根據第一指示器404中的更新後的第一指示位元和第二指示器406中的多個第二指示位元來產生多個更新後的第二指示位元。
然後,在步驟S1512中,記憶體控制器104(或記憶體管理電路202)會根據更新後的第二指示位元獲得第一命令的數目和命令指標之中對應在命令佇列暫存器402中儲存第一命令的命令暫存區塊的第一命令指標。
接著,在步驟S1514中,記憶體控制器104(或記憶體管理電路202)會將第一命令指標加入至命令指標暫存器408,並且根據第一命令的數目更新命令指標暫存器408中的結尾指標。
然後,在步驟S1516中,記憶體控制器104(或記憶體管理電路202)可執行記錄在命令指標暫存器408中的未執行命令指標在命令佇列暫存器402中對應的命令暫存區塊所儲存的命令。
圖16是根據另一範例實施例所繪示之命令佇列管理方法的流程圖。
請參照圖16,在步驟S1602中,記憶體控制器104(或記 憶體管理電路202)啟動接收命令。例如,記憶體控制器104(或記憶體管理電路202)可將接收命令開關指示器414的開關指示位元切換至可接收命令狀態,以允許接收來自主機系統1000的第一命令。
在步驟S1604中,記憶體控制器104(或記憶體管理電路202)判斷是否有新命令進來。詳細而言,在步驟S1602中,若記憶體控制器104(或記憶體管理電路202)有接收到第一命令,就表示有新命令進來,在步驟S1604之後步驟S1608會被接續執行。反之,在步驟S1602中,若沒有新命令進來,則在步驟S1606中,記憶體控制器104(或記憶體管理電路202)會判斷是否有未完成的命令。例如,記憶體控制器104(或記憶體管理電路202)可直接判斷命令指標暫存器408中是否存在尚未被執行或尚未被執行完畢的命令。若命令指標暫存器408中存在尚未被執行或尚未被執行完畢的命令,則記憶體控制器104(或記憶體管理電路202)判定有未完成的命令。或者,記憶體控制器104(或記憶體管理電路202)也可以判斷命令指標暫存器408中的命令未處理指標是否與結尾指標指向相同的命令指標暫存區塊。若命令指標暫存器408中的命令未處理指標與結尾指標指向同一個命令指標暫存區塊,記憶體控制器104(或記憶體管理電路202)判定沒有未完成的命令,因此步驟S1604會被重複執行。反之,若命令指標暫存器408中的命令未處理指標與結尾指標不是指向相同的命令指標暫存區塊,則記憶體控制器104(或記憶體管理電路202)會判定有未完成的命 令,並接續執行步驟S1608。
在步驟S1608中,記憶體控制器104(或記憶體管理電路202)暫停接收命令。例如,記憶體控制器104(或記憶體管理電路202)可將接收命令開關指示器414的開關指示位元切換至不可接收命令狀態,以停止接收來自主機系統1000的命令。接著,記憶體控制器104(或記憶體管理電路202)可判斷接收命令狀態指示器416的狀態指示位元是否為正在接收命令狀態。若接收命令狀態指示器416的狀態指示位元不為正在接收命令狀態,表示目前沒有命令正在被接收,則步驟S1610會被接續執行。反之,若接收命令狀態指示器416的狀態指示位元為正在接收命令狀態,則記憶體控制器104(或記憶體管理電路202)會等到接收命令狀態指示器416的狀態指示位元切換至不為正在接收命令狀態時,才會接續執行步驟S1610。
在步驟S1610中,記憶體控制器104(或記憶體管理電路202)判斷是否有新命令進來,並且步驟1610類似於步驟S1604,在此不重複贅述。若沒有新命令進來,在步驟S1610之後步驟S1620被接續執行。反之,若有新命令(例如,第一命令)進來,則在步驟S1612中,記憶體控制器104(或記憶體管理電路202)會根據第一指示器404中的已更新第一指示位元和第二指示器406中的多個第二指示位元來更新第二指示位元,並將更新後的第二指示位元儲存於第二指示器406。
然後,在步驟S1614中,記憶體控制器104(或記憶體管 理電路202)會根據更新後的第二指示位元獲得第一命令的數目和命令指標之中對應在命令佇列暫存器402中儲存第一命令的命令暫存區塊的第一命令指標。
接著,在步驟S1616中,記憶體控制器104(或記憶體管理電路202)會將第一命令指標加入至命令指標暫存器408,並且根據第一命令的數目更新命令指標暫存器408中的結尾指標。
接著,在步驟S1618中,記憶體控制器104(或記憶體管理電路202)會根據命令指標暫存器408中的命令未處理指標與結尾指標,重新排列記錄在命令指標暫存器408中的多個未執行命令指標的執行順序。
然後,在步驟S1620中,記憶體控制器104(或記憶體管理電路202)判斷是否有完成的命令。詳細而言,記憶體控制器104(或記憶體管理電路202)會判斷命令佇列暫存器402中是否有命令被執行完畢且可被抹除或可被新的命令覆蓋。若命令佇列暫存器402中有命令被執行完畢且可被抹除或可被新的命令覆蓋,則在步驟S1620之後步驟S1622被接續執行。反之,若命令佇列暫存器402中沒有命令被執行完畢且可被抹除或可被新的命令覆蓋,則在步驟S1620之後步驟S1624被接續執行。
在步驟S1622中,記憶體控制器104(或記憶體管理電路202)可根據命令指標暫存器408中對應至命令佇列暫存器402中被執行完畢且可被抹除或可被新的命令覆蓋之命令的命令指標來更新命令指標暫存器408中的起始指標、第一指示器404中的第 一指示位元及第二指示器406中的第二指示位元。
在更新完起始指標、第一指示器404中的第一指示位元及第二指示器406中的第二指示位元之後,在步驟S1624中,記憶體控制器104(或記憶體管理電路202)會啟動接收命令,並且步驟S4624類似於步驟S1602,在此不重複贅述。
然後,在步驟S1626中,記憶體控制器104(或記憶體管理電路202)會判斷是否有待執行的命令。詳細而言,記憶體控制器104(或記憶體管理電路202)可直接判斷命令指標暫存器408中是否存在尚未被讀取的命令指標(即,未執行命令指標)。若命令指標暫存器408中存在尚未被讀取的命令指標,則記憶體控制器104(或記憶體管理電路202)判定有待執行的命令。或者,記憶體控制器104(或記憶體管理電路202)也可以判斷命令指標暫存器408中的命令未處理指標是否與結尾指標指向相同的命令指標暫存區塊。若命令指標暫存器408中的命令未處理指標與結尾指標指向相同的命令指標暫存區塊,表示沒有待執行的命令,因此記憶體控制器104(或記憶體管理電路202)重複執行步驟S1604。反之,若命令指標暫存器408中的命令未處理指標與結尾指標不是指向相同的命令指標暫存區塊,則表示有待執行的命令,因此記憶體控制器104(或記憶體管理電路202)接續執行步驟S1628。
在步驟S1628中,記憶體控制器104(或記憶體管理電路202)會根據此執行順序,執行記錄在命令指標暫存器408中的未執行命令指標在命令佇列暫存器402中對應的命令暫存區塊所儲 存的命令。此外,每當記憶體控制器104(或記憶體管理電路202)欲執行下一個命令時,記憶體控制器104(或記憶體管理電路202)就會更新命令未處理指標,例如,把命令未處理指標的值加「1」。
然而,圖15與圖16中各步驟已詳細說明如上,在此便不在贅述。值得注意的是,圖15與圖16中各步驟可以實作為多個程式碼或是電路,本發明並不在此限。此外,圖15與圖16的方法可以搭配以上實施例使用,也可以單獨使用,本發明並不在此限。
綜上所述,本發明實施例提出的命令佇列管理方法、記憶體控制器及記憶體儲存裝置,可儲存接收到的命令佇列與用於讀取命令佇列中的各命令的命令指標,並對尚未被執行的命令所對應的命令指標進行排序。藉此,本發明實施例提出的命令佇列管理方法、記憶體控制器及記憶體儲存裝置,可優先讀取執行優先權最高的命令對應的命令指標,並執行優先權最高的命令。然後,再根據排序結果依序讀取其餘的命令指標,並且執行其餘的命令。
此外,本發明實施例提出的命令佇列管理方法、記憶體控制器及記憶體儲存裝置,可利用起始指標、待處理指標及結尾指標在環形命令指標暫存器中進行切換,從而提升對於命令指標的管理效率。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的 精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S1502、S1504、S1506、S1508、S1510、S1512、S1514、S1516‧‧‧命令佇列管理方法各步驟

Claims (24)

  1. 一種命令佇列管理方法,用於管理從一主機系統接收的多個命令,該命令佇列管理方法包括:配置一命令佇列暫存器、一第一指示器及一第二指示器,其中該命令佇列暫存器包括多個命令暫存區塊並且每一該些命令暫存區塊配置有一命令指標,其中該命令指標用以指向一命令儲存位址;配置一命令指標暫存器,其中該命令指標暫存器具有一起始指標、一結尾指標與一命令未處理指標;從該主機系統接收至少一第一命令;根據該第一指示器中的多個第一指示位元將該至少一第一命令儲存於該命令佇列暫存器,並根據該命令佇列暫存器的一目前儲存狀態更新該些第一指示位元以產生多個已更新第一指示位元;根據該第一指示器中的該些已更新第一指示位元和該第二指示器中的多個第二指示位元來產生多個已更新第二指示位元;根據該些已更新第二指示位元獲得該至少一第一命令的數目和該些命令指標之中對應在該命令佇列暫存器中儲存該至少一第一命令的命令暫存區塊的至少一第一命令指標;將該至少一第一命令指標加入至該命令指標暫存器,並且根據該至少一第一命令的數目更新該結尾指標;執行記錄在該命令指標暫存器中的多個未執行命令指標在該 命令佇列暫存器中對應的命令暫存區塊所儲存的命令。
  2. 如申請專利範圍第1項所述的命令佇列管理方法,其中根據該第一指示器中的該些已更新第一指示位元和該第二指示器中的該些第二指示位元來產生該些已更新第二指示位元的步驟包括:配置一接收命令開關指示器與一接收命令狀態指示器;停止接收該至少一第一命令,並將該接收命令開關指示器的一開關指示位元切換至一不可接收命令狀態;判斷該接收命令狀態指示器的一狀態指示位元是否為一正在接收命令狀態;以及若該接收命令狀態指示器的該狀態指示位元不為該正在接收命令狀態,根據該第一指示器中的該些已更新第一指示位元和該第二指示器中的該些第二指示位元來產生該些已更新第二指示位元。
  3. 如申請專利範圍第1項所述的命令佇列管理方法,其中根據該第一指示器中的該些已更新第一指示位元和該第二指示器中的該些第二指示位元來產生該些已更新第二指示位元的步驟包括:對該第一指示器中的該些已更新第一指示位元與該第二指示器中的該些第二指示位元執行一異或(XOR)操作;以及根據該異或操作的一操作結果產生該些已更新第二指示位元,並將該些已更新第二指示位元寫入該第二指示器。
  4. 如申請專利範圍第3項所述的命令佇列管理方法,其中根據該異或操作的該操作結果產生該些已更新第二指示位元,並將該些已更新第二指示位元寫入該第二指示器的步驟更包括:以該第一指示器中的該些已更新第一指示位元取代該第二指示器中的該些已更新第二指示位元為多個已取代第二指示位元。
  5. 如申請專利範圍第4項所述的命令佇列管理方法,更包括:當該些未執行命令指標中的至少一第一未執行命令指標在該命令佇列暫存器中對應的命令被執行完畢且可被抹除時,根據該至少一第一未執行命令指標更新該起始指標、該第一指示器中的該些已更新第一指示位元及該第二指示器中的該些已取代第二指示位元。
  6. 如申請專利範圍第1項所述的命令佇列管理方法,其中根據該些已更新第二指示位元獲得該至少一第一命令的數目和該些命令指標之中對應在該命令佇列暫存器中儲存該至少一第一命令的命令暫存區塊的該至少一第一命令指標的步驟包括:配置一新命令數記錄器與一新命令指標記錄器;統計該些已更新第二指示位元中的至少一第一位元狀態的數目以獲得該至少一第一命令的數目,並將該至少一第一命令的數目記錄於該新命令數記錄器;以及根據該些已更新第二指示位元中的該至少一第一位元狀態獲得該些命令指標之中對應在該命令佇列暫存器中儲存該至少一第一命令的命令暫存區塊的該至少一第一命令指標,並將該至少一 第一命令指標記錄於該新命令指標記錄器。
  7. 如申請專利範圍第1項所述的命令佇列管理方法,其中執行記錄在該命令指標暫存器中的該些未執行命令指標在該命令佇列暫存器中對應的命令暫存區塊所儲存的命令的步驟,更包括:根據該命令未處理指標與該結尾指標,重新排列記錄在該命令指標暫存器中的該些未執行命令指標的一執行順序;以及根據該執行順序執行記錄在該命令指標暫存器中的該些未執行命令指標在該命令佇列暫存器中對應的命令暫存區塊所儲存的命令。
  8. 如申請專利範圍第7項所述的命令佇列管理方法,其中根據該命令未處理指標與該結尾指標,重新排列記錄在該命令指標暫存器中的該些未執行命令指標的該執行順序的步驟包括:根據該命令未處理指標與該結尾指標,取得記錄在該命令指標暫存器中的該些未執行命令指標,其中該些未執行命令指標包括該至少一第一命令指標與對應儲存於該命令佇列暫存器的至少一第二命令的至少一第二命令指標。
  9. 一種記憶體控制器,包括:一主機介面,用以耦接至一主機系統;一記憶體管理電路,耦接至該主機介面,其中該記憶體管理電路用以配置一命令佇列暫存器、一第一指示器及一第二指示器,其中該命令佇列暫存器包括多個命令暫 存區塊並且每一該些命令暫存區塊配置有一命令指標,其中該命令指標用以指向一命令儲存位址,其中該記憶體管理電路更用以配置一命令指標暫存器,其中該命令指標暫存器具有一起始指標、一結尾指標與一命令未處理指標,其中該記憶體管理電路更用以從該主機系統接收至少一第一命令,其中該記憶體管理電路更用以根據該第一指示器中的多個第一指示位元將該至少一第一命令儲存於該命令佇列暫存器,並根據該命令佇列暫存器的一目前儲存狀態更新該些第一指示位元以產生多個已更新第一指示位元,其中該記憶體管理電路更用以根據該第一指示器中的該些已更新第一指示位元和該第二指示器中的多個第二指示位元來產生多個已更新第二指示位元,其中該記憶體管理電路更用以根據該些已更新第二指示位元獲得該至少一第一命令的數目和該些命令指標之中對應在該命令佇列暫存器中儲存該至少一第一命令的命令暫存區塊的至少一第一命令指標,其中該記憶體管理電路更用以將該至少一第一命令指標加入至該命令指標暫存器,並且根據該至少一第一命令的數目更新該結尾指標,其中該記憶體管理電路更用以執行記錄在該命令指標暫存器 中的多個未執行命令指標在該命令佇列暫存器中對應的命令暫存區塊所儲存的命令。
  10. 如申請專利範圍第9項所述的記憶體控制器,其中該記憶體管理電路更用以配置一接收命令開關指示器與一接收命令狀態指示器,其中該記憶體管理電路更用以停止接收該至少一第一命令,並將該接收命令開關指示器的一開關指示位元切換至一不可接收命令狀態,其中該記憶體管理電路更用以判斷該接收命令狀態指示器的一狀態指示位元是否為一正在接收命令狀態,若該接收命令狀態指示器的該狀態指示位元不為該正在接收命令狀態,該記憶體管理電路根據該第一指示器中的該些已更新第一指示位元和該第二指示器中的該些第二指示位元來產生該些已更新第二指示位元。
  11. 如申請專利範圍第9項所述的記憶體控制器,其中該記憶體管理電路更用以對該第一指示器中的該些已更新第一指示位元與該第二指示器中的該些第二指示位元執行一異或(XOR)操作,其中該記憶體管理電路更用以根據該異或操作的一操作結果產生該些已更新第二指示位元,並將該些已更新第二指示位元寫入該第二指示器。
  12. 如申請專利範圍第11項所述的記憶體控制器,其中該記憶體管理電路更用以以該第一指示器中的該些已更新第一指示位 元取代該第二指示器中的該些已更新第二指示位元為多個已取代第二指示位元。
  13. 如申請專利範圍第12項所述的記憶體控制器,其中當該些未執行命令指標中的至少一第一未執行命令指標在該命令佇列暫存器中對應的命令被執行完畢且可被抹除時,該記憶體管理電路更用以根據該至少一第一未執行命令指標更新該起始指標、該第一指示器中的該些已更新第一指示位元與該第二指示器中的該些已取代第二指示位元。
  14. 如申請專利範圍第9項所述的記憶體控制器,其中該記憶體管理電路更用以配置一新命令數記錄器與一新命令指標記錄器,其中該記憶體管理電路更用以統計該些已更新第二指示位元中的至少一第一位元狀態的數目以獲得該至少一第一命令的數目,並將該至少一第一命令的數目記錄於該新命令數記錄器,其中該記憶體管理電路更用以根據該些已更新第二指示位元中的該至少一第一位元狀態自獲得該些命令指標之中對應在該命令佇列暫存器中儲存該至少一第一命令的命令暫存區塊的該至少一第一命令指標,並將該至少一第一命令指標記錄於該新命令指標記錄器。
  15. 如申請專利範圍第9項所述的記憶體控制器,其中該記憶體管理電路更用以根據該命令未處理指標與該結尾指標,重新排列記錄在該命令指標暫存器中的該些未執行命令指標的一執行 順序,其中該記憶體管理電路更用以根據該執行順序執行記錄在該命令指標暫存器中的該些未執行命令指標在該命令佇列暫存器中對應的命令暫存區塊所儲存的命令。
  16. 如申請專利範圍第15項所述的記憶體控制器,其中該記憶體管理電路更用以根據該命令未處理指標與該結尾指標,取得記錄在該命令指標暫存器中的該些未執行命令指標,其中該些未執行命令指標包括該至少一第一命令指標與對應儲存於該命令佇列暫存器的至少一第二命令的至少一第二命令指標。
  17. 一種記憶體儲存裝置,包括:一連接器,用以耦接至一主機系統;一可複寫式非揮發性記憶體模組,用以儲存資料;一記憶體控制器,耦接至該連接器與該可複寫式非揮發性記憶體模組,其中該記憶體控制器用以配置一命令佇列暫存器、一第一指示器及一第二指示器,其中該命令佇列暫存器包括多個命令暫存區塊並且每一該些命令暫存區塊配置有一命令指標,其中該命令指標用以指向一命令儲存位址,其中該記憶體控制器更用以配置一命令指標暫存器,其中該命令指標暫存器具有一起始指標、一結尾指標與一命令未處理指標, 其中該記憶體控制器更用以從該主機系統接收至少一第一命令,其中該記憶體控制器更用以根據該第一指示器中的多個第一指示位元將該至少一第一命令儲存於該命令佇列暫存器,並根據該命令佇列暫存器的一目前儲存狀態更新該些第一指示位元以產生多個已更新第一指示位元,其中該記憶體控制器更用以根據該第一指示器中的該些已更新第一指示位元和該第二指示器中的多個第二指示位元來產生多個已更新第二指示位元,其中該記憶體控制器更用以根據該些已更新第二指示位元獲得該至少一第一命令的數目和該些命令指標之中對應在該命令佇列暫存器中儲存該至少一第一命令的命令暫存區塊的至少一第一命令指標,其中該記憶體控制器更用以將該至少一第一命令指標加入至該命令指標暫存器,並且根據該至少一第一命令的數目更新該結尾指標,其中該記憶體控制器更用以執行記錄在該命令指標暫存器中的多個未執行命令指標在該命令佇列暫存器中對應的命令暫存區塊所儲存的命令。
  18. 如申請專利範圍第17項所述的記憶體儲存裝置,其中該記憶體控制器更用以配置一接收命令開關指示器與一接收命令狀態指示器, 其中該記憶體控制器更用以停止接收該至少一第一命令,並將該接收命令開關指示器的一開關指示位元切換至一不可接收命令狀態,其中該記憶體控制器更用以判斷該接收命令狀態指示器的一狀態指示位元是否為一正在接收命令狀態,若該接收命令狀態指示器的該狀態指示位元不為該正在接收命令狀態,該記憶體控制器根據該第一指示器中的該些已更新第一指示位元和該第二指示器中的該些第二指示位元來產生該些已更新第二指示位元。
  19. 如申請專利範圍第17項所述的記憶體儲存裝置,其中該記憶體控制器更用以對該第一指示器中的該些已更新第一指示位元與該第二指示器中的該些第二指示位元執行一異或(XOR)操作,其中該記憶體控制器更用以根據該異或操作的一操作結果產生該些已更新第二指示位元,並將該些已更新第二指示位元寫入該第二指示器。
  20. 如申請專利範圍第19項所述的記憶體儲存裝置,其中該記憶體控制器更用以以該第一指示器中的該些已更新第一指示位元取代該第二指示器中的該些已更新第二指示位元為多個已取代第二指示位元。
  21. 如申請專利範圍第20項所述的記憶體儲存裝置,其中當該些未執行命令指標中的至少一第一未執行命令指標在該命令佇列暫存器中對應的命令被執行完畢且可被抹除時,該記憶體控制 器更用以根據該至少一第一未執行命令指標更新該起始指標、該第一指示器中的該些已更新第一指示位元與該第二指示器中的該些已取代第二指示位元。
  22. 如申請專利範圍第17項所述的記憶體儲存裝置,其中該記憶體控制器更用以配置一新命令數記錄器與一新命令指標記錄器,其中該記憶體控制器更用以統計該些已更新第二指示位元中的至少一第一位元狀態的數目以獲得該至少一第一命令的數目,並將該至少一第一命令的數目記錄於該新命令數記錄器,其中該記憶體控制器更用以根據該些已更新第二指示位元中的該至少一第一位元狀態自獲得該些命令指標之中對應在該命令佇列暫存器中儲存該至少一第一命令的命令暫存區塊的該至少一第一命令指標,並將該至少一第一命令指標記錄於該新命令指標記錄器。
  23. 如申請專利範圍第17項所述的記憶體儲存裝置,其中該記憶體控制器更用以根據該命令未處理指標與該結尾指標,重新排列記錄在該命令指標暫存器中的該些未執行命令指標的一執行順序,其中該記憶體控制器更用以根據該執行順序執行記錄在該命令指標暫存器中的該些未執行命令指標在該命令佇列暫存器中對應的命令暫存區塊所儲存的命令。
  24. 如申請專利範圍第23項所述的記憶體儲存裝置,其中該 記憶體控制器更用以根據該命令未處理指標與該結尾指標,取得記錄在該命令指標暫存器中的該些未執行命令指標,其中該些未執行命令指標包括該至少一第一命令指標與對應儲存於該命令佇列暫存器的至少一第二命令的至少一第二命令指標。
TW102123698A 2013-07-02 2013-07-02 命令佇列管理方法、記憶體控制器及記憶體儲存裝置 TWI493455B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW102123698A TWI493455B (zh) 2013-07-02 2013-07-02 命令佇列管理方法、記憶體控制器及記憶體儲存裝置
US14/017,284 US9146691B2 (en) 2013-07-02 2013-09-03 Method for managing commands in command queue, memory control circuit unit and memory storage apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW102123698A TWI493455B (zh) 2013-07-02 2013-07-02 命令佇列管理方法、記憶體控制器及記憶體儲存裝置

Publications (2)

Publication Number Publication Date
TW201502976A TW201502976A (zh) 2015-01-16
TWI493455B true TWI493455B (zh) 2015-07-21

Family

ID=52133599

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102123698A TWI493455B (zh) 2013-07-02 2013-07-02 命令佇列管理方法、記憶體控制器及記憶體儲存裝置

Country Status (2)

Country Link
US (1) US9146691B2 (zh)
TW (1) TWI493455B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI703446B (zh) * 2019-01-29 2020-09-01 瑞昱半導體股份有限公司 介面轉接電路

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150150641A1 (en) * 2011-10-28 2015-06-04 Navigate Surgical Technologies, Inc. System and method for determining the three-dimensional location and orientation of identification markers
TWI553477B (zh) * 2015-06-12 2016-10-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
KR102367982B1 (ko) 2015-06-22 2022-02-25 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US10534540B2 (en) 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
KR102648180B1 (ko) * 2016-07-19 2024-03-18 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
US10585624B2 (en) 2016-12-01 2020-03-10 Micron Technology, Inc. Memory protocol
TWI601060B (zh) * 2017-01-17 2017-10-01 群聯電子股份有限公司 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元
JP2018120448A (ja) * 2017-01-26 2018-08-02 ソニーセミコンダクタソリューションズ株式会社 演算処理装置および情報処理システム
TWI629590B (zh) * 2017-04-14 2018-07-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
KR102446733B1 (ko) * 2017-11-30 2022-09-23 삼성전자주식회사 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치
US11868657B2 (en) * 2021-02-08 2024-01-09 Samsung Electronics Co., Ltd. Memory controller, method of operating the memory controller, and electronic device including the memory controller
US11630601B2 (en) * 2021-03-02 2023-04-18 Silicon Motion, Inc. Memory and apparatus for performing access control with aid of multi-phase memory-mapped queue

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI270785B (en) * 2001-11-21 2007-01-11 Phison Electronics Corp Universal serial bus flash memory integrated circuit
US20100262721A1 (en) * 2009-04-09 2010-10-14 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
TW201216057A (en) * 2010-10-13 2012-04-16 Phison Electronics Corp Block management method, memory controller and memory storage apparatus
US20130054875A1 (en) * 2011-08-30 2013-02-28 Diarmuid P. Ross High Priority Command Queue for Peripheral Component

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7206919B2 (en) * 2001-12-14 2007-04-17 Stmicroelectronics Pvt. Ltd. Rapid partial configuration of reconfigurable devices
ITMI20031893A1 (it) * 2003-10-03 2005-04-04 St Microelectronics Srl Dispositivo integrato di memoria con comandi di lettura e scrittura multipli.
GB2481955B (en) * 2009-05-04 2014-10-08 Hewlett Packard Development Co Storage device erase command having a control field controllable by a requestor device
WO2012046278A1 (en) * 2010-10-07 2012-04-12 Hitachi, Ltd. Storage control apparatus and storage control apparatus control method
JP2013030001A (ja) * 2011-07-28 2013-02-07 Elpida Memory Inc 情報処理システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI270785B (en) * 2001-11-21 2007-01-11 Phison Electronics Corp Universal serial bus flash memory integrated circuit
US20100262721A1 (en) * 2009-04-09 2010-10-14 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
TW201216057A (en) * 2010-10-13 2012-04-16 Phison Electronics Corp Block management method, memory controller and memory storage apparatus
US20130054875A1 (en) * 2011-08-30 2013-02-28 Diarmuid P. Ross High Priority Command Queue for Peripheral Component

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI703446B (zh) * 2019-01-29 2020-09-01 瑞昱半導體股份有限公司 介面轉接電路

Also Published As

Publication number Publication date
US9146691B2 (en) 2015-09-29
US20150012687A1 (en) 2015-01-08
TW201502976A (zh) 2015-01-16

Similar Documents

Publication Publication Date Title
TWI493455B (zh) 命令佇列管理方法、記憶體控制器及記憶體儲存裝置
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
US9176865B2 (en) Data writing method, memory controller, and memory storage device
US9304900B2 (en) Data reading method, memory controller, and memory storage device
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
TWI556249B (zh) 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元
TW201303587A (zh) 用於在快閃記憶體介質控制器中處理儲存在快閃記憶體記憶體的頁中的中繼資料的方法、裝置及快閃記憶體記憶體系統
TWI420308B (zh) 區塊管理方法、記憶體控制器與記憶體儲存裝置
CN104281413A (zh) 命令队列管理方法、存储器控制器及存储器储存装置
TWI648634B (zh) 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
CN105653199A (zh) 数据读取方法、存储器存储装置及存储器控制电路单元
TW201407349A (zh) 資料管理方法、記憶體控制器與記憶體儲存裝置
KR20210039171A (ko) 메모리 시스템을 포함하는 데이터 처리 시스템에서 동작 정보를 송수신하는 방법 및 장치
KR20220103378A (ko) 메모리 시스템에 저장된 데이터를 처리하는 장치 및 방법
TWI629590B (zh) 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US8719669B2 (en) Error correction decoder and error correction method thereof
CN115756298A (zh) 用于控制数据处理系统中的共享存储器的设备和方法
CN113140253B (zh) 存储器管理方法、存储器存储装置及存储器控制电路单元
TW201911055A (zh) 資料儲存方法、記憶體控制電路單元及記憶體儲存裝置
TWI533309B (zh) 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元
TW202028974A (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
CN114153372A (zh) 在存储器系统中控制和存储映射数据的设备和方法
TWI573033B (zh) 資料搜尋方法、記憶體儲存裝置及記憶體控制電路單元
TWI798034B (zh) 記憶體控制器與資料處理方法
TWI839144B (zh) 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元