TWI820603B - 藉助於多階段記憶體映射隊列以進行存取控制的方法、系統單晶片積體電路、記憶體裝置以及用於記憶體裝置的控制器 - Google Patents
藉助於多階段記憶體映射隊列以進行存取控制的方法、系統單晶片積體電路、記憶體裝置以及用於記憶體裝置的控制器 Download PDFInfo
- Publication number
- TWI820603B TWI820603B TW111105744A TW111105744A TWI820603B TW I820603 B TWI820603 B TW I820603B TW 111105744 A TW111105744 A TW 111105744A TW 111105744 A TW111105744 A TW 111105744A TW I820603 B TWI820603 B TW I820603B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- queue
- controller
- host
- secondary processing
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 230000015654 memory Effects 0.000 claims abstract description 291
- 238000012545 processing Methods 0.000 claims abstract description 186
- 230000004044 response Effects 0.000 claims abstract description 13
- 239000000872 buffer Substances 0.000 claims description 58
- 238000013507 mapping Methods 0.000 claims description 30
- 230000008569 process Effects 0.000 claims description 7
- 230000003993 interaction Effects 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 description 12
- 230000006837 decompression Effects 0.000 description 12
- 230000006835 compression Effects 0.000 description 11
- 238000007906 compression Methods 0.000 description 11
- 230000001427 coherent effect Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000011144 upstream manufacturing Methods 0.000 description 5
- 102220531551 39S ribosomal protein L4, mitochondrial_S12A_mutation Human genes 0.000 description 4
- 102220527419 Calcium-activated potassium channel subunit beta-4_S17A_mutation Human genes 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 102220024392 rs267607495 Human genes 0.000 description 3
- 102200145335 rs28929485 Human genes 0.000 description 3
- 102220527420 Calcium-activated potassium channel subunit beta-4_S17E_mutation Human genes 0.000 description 2
- 102220611470 DNA ligase 3_S17D_mutation Human genes 0.000 description 2
- 102220614306 F-box only protein 4_S12E_mutation Human genes 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 102200084388 rs121918345 Human genes 0.000 description 2
- 102220053993 rs28929485 Human genes 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Communication Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明提供藉助於一多階段記憶體映射隊列以對一記憶體裝置進行存取控制的方法及相關設備。該方法包含:從一主機裝置接收一第一主機指令;以及因應第一主機指令,利用控制器內的處理電路透過控制器的控制邏輯電路向非揮發性記憶體發送一第一操作指令,並觸發控制器內的一第一組次級處理電路透過多階段記憶體映射隊列來操作和互動,以供為主機裝置存取第一資料,其中處理電路以及第一組次級處理電路共享多階段記憶體映射隊列,且使用多階段記憶體映射隊列作為分別與多個階段相關聯的多個鏈接訊息隊列,以供為鏈接處理架構進行訊息排隊。
Description
本發明係相關於記憶體控制,尤指一種藉助於多階段(multi-phase)記憶體映射(memory-mapped)隊列以進行存取控制的方法以及相關設備諸如一記憶體裝置、其一記憶體控制器以及一系統單晶片(system-on-chip,SoC)積體電路(integrated circuit,IC)等。
記憶體技術的發展使得各種可攜式和非可攜式記憶體裝置,諸如分別符合SD/MMC、CF、MS以及XD規格的記憶卡以及別符合UFS與EMMC規格的嵌入式儲存裝置等的廣泛應用成為可能。改善這些記憶體裝置的存取控制一直是本領域需要解決的問題。
NAND快閃記憶體可包括單階細胞(single-level cell,簡稱SLC)以及多階細胞(multiple-level cell,簡稱MLC)快閃記憶體。在SLC快閃記憶體中,用作為一記憶體細胞(memory cell)的每個電晶體可以具有分別與邏輯值0和1對應的兩個電荷值中的任一電荷值。相較之下,在MLC快閃記憶體中,用作為一記憶
體細胞的每個電晶體的儲存能力可以被充分地利用。MLC快閃記憶體中的電晶體可以由比SLC快閃記憶體中的電晶體更高的電壓來驅動,並且不同的電壓準位可以被利用來記錄至少兩位元的資訊(例如00、01、11或10)。理論上,MLC快閃記憶體的記錄密度可以達到SLC快閃記憶體的記錄密度的至少兩倍,因此NAND快閃記憶體製造商是偏好MLC快閃記憶體的。
MLC快閃記憶體的低成本以及大容量意味著它比SLC快閃記憶體更可能被應用在記憶體裝置中。然而,MLC快閃記憶體確實存在著不穩定的問題。為了確保對記憶體裝置中的快閃記憶體的存取控制可以滿足所要求的規格,快閃記憶體的控制器可以配備有某些管理機制以妥善地管理資料存取。
然而,即使具備上述管理機制的記憶體裝置也可能具有某些缺陷。舉例來說,硬體架構內多個功能方塊,諸如硬體引擎,可以實現以供進行預定的處理操作。由於可藉由增加硬體引擎的數量以獲得更可靠的結果,因此訊息隊列的數量可能會對應地增加。如此一來,硬體架構可能變得非常複雜,而導致相關成本增加。因此,需要一種新穎的方法和相關的架構,以在沒有副作用或較不可能帶來副作用之狀況下避免上述問題發生。
本發明之一目的在於提供一種藉助於多階段記憶體映射隊列以進行存取控制的方法以及相關設備諸如一記憶體裝置、其一記憶體控制器、一SoC IC等,以解決上述的問題。
本發明的至少一實施例揭示了一種藉助於一多階段(multi-phase)記憶體映射(memory-mapped)隊列以對一記憶體裝置進行存取控制的方法,該方法是可應用於(applicable to)該記憶體裝置的一控制器,該記憶體裝置包含該控制器
和一非揮發性(non-volatile,NV)記憶體,該非揮發性記憶體包含至少一非揮發性記憶體元件,該方法包含:從一主機裝置接收一第一主機指令,其中該第一主機指令指出在一第一邏輯位址存取第一資料;以及因應該第一主機指令,利用該控制器內的一處理電路透過該控制器的一控制邏輯電路向該非揮發性記憶體發送一第一操作指令,並觸發該控制器內的一第一組次級(secondary)處理電路透過該多階段記憶體映射隊列來操作和互動,以供為該主機裝置存取該第一資料,其中該第一操作指令攜帶有與該第一邏輯位址相關聯的一第一物理位址,以供指出該非揮發性記憶體中的一儲存位置,且該處理電路以及該第一組次級處理電路共享該多階段記憶體映射隊列,並且使用該多階段記憶體映射隊列作為分別與多個階段相關聯的多個鏈接(chained)訊息隊列,以供為包含該處理電路以及該第一組次級處理電路的一鏈接處理架構進行訊息排隊(message queuing)。
除了上述方法,本發明還提供一種記憶體裝置,且該記憶體裝置包含一非揮發性(non-volatile,NV)記憶體以及一控制器。該非揮發性(non-volatile,NV)記憶體用以儲存資訊,其中該非揮發性記憶體包含至少一非揮發性記憶體元件。該控制器耦接至該非揮發性記憶體,用以控制該記憶體裝置的操作,其中該控制器包含一處理電路、複數個次級(secondary)處理電路以及一多階段記憶體映射隊列。該處理電路用以依據來自一主機裝置的複數個主機指令來控制該控制器,以容許該主機裝置透過該控制器存取該非揮發性記憶體。該複數個次級(secondary)處理電路,用以操作以作為複數個硬體引擎。該多階段記憶體映射隊列,耦接至該處理電路以及該複數個次級處理電路,用以為該處理電路以及該複數個次級處理電路進行訊息排隊(message queuing)。例如:該控制器從該主機裝置接收一第一主機指令,其中該第一主機指令指出在一第一邏輯位址存取第一資料,且該第一主機指令是該複數個主機指令的其中之一;以及因應該第一
主機指令,該控制器利用該處理電路透過該控制器的一控制邏輯電路向該非揮發性記憶體發送一第一操作指令,並觸發該複數個次級處理電路中的一第一組次級處理電路透過該多階段記憶體映射隊列來操作和互動,以供為該主機裝置存取該第一資料,其中該第一操作指令攜帶有與該第一邏輯位址相關聯的一第一物理位址,以供指出該非揮發性記憶體中的一儲存位置,且該處理電路以及該第一組次級處理電路共享該多階段記憶體映射隊列,並且使用該多階段記憶體映射隊列作為分別與多個階段相關聯的多個鏈接(chained)訊息隊列,以供為包含該處理電路以及該第一組次級處理電路的一鏈接處理架構進行訊息排隊。
除了上述方法,本發明還提供一種用於一記憶體裝置的控制器,該記憶體裝置包含該控制器以及一非揮發性記憶體,該非揮發性記憶體包含至少一非揮發性記憶體元件,該控制器包含一處理電路、複數個次級處理電路以及一多階段記憶體映射隊列。該處理電路用以依據來自一主機裝置的複數個主機指令來控制該控制器,以容許該主機裝置透過該控制器存取該非揮發性記憶體。該複數個次級處理電路,用以操作以作為複數個硬體引擎。該多階段記憶體映射隊列,耦接至該處理電路以及該複數個次級處理電路,用以為該處理電路以及該複數個次級處理電路進行訊息排隊。例如:該控制器從該主機裝置接收一第一主機指令,其中該第一主機指令指出在一第一邏輯位址存取第一資料,且該第一主機指令是該複數個主機指令的其中之一;以及因應該第一主機指令,該控制器利用該處理電路透過該控制器的一控制邏輯電路向該非揮發性記憶體發送一第一操作指令,並觸發該複數個次級處理電路中的一第一組次級處理電路透過該多階段記憶體映射隊列來操作和互動,以供為該主機裝置存取該第一資料,其中該第一操作指令攜帶有與該第一邏輯位址相關聯的一第一物理位址,以供指出該非揮發性記憶體中的一儲存位置,且該處理電路以及該第
一組次級處理電路共享該多階段記憶體映射隊列,並且使用該多階段記憶體映射隊列作為分別與多個階段相關聯的多個鏈接(chained)訊息隊列,以供為包含該處理電路以及該第一組次級處理電路的一鏈接處理架構進行訊息排隊。
本發明的方法和相關設備能確保該記憶體裝置能在各種情況下正確地操作,其中上述設備的例子包含:控制器以及記憶體裝置等,另外,本發明提供的方法及相關設備可以在沒有副作用或較不可能帶來副作用之狀況下解決相關技術問題,因此可以降低相關成本。另外,本發明提供的方法及相關設備藉助於多階段記憶體映射隊列,可以確保記憶體裝置對主機裝置的實時響應(real-time response),進而提高整體性能。
10:電子系統
50:主機裝置
52:處理器
54:電源供應電路
100:記憶體裝置
110:記憶體控制器
112:微處理器
112M:唯讀記憶體(ROM)
112C:程式代碼
114:控制邏輯電路
115:引擎電路
116:隨機存取記憶體(RAM)
116T:暫時表
118:傳輸介面電路
120:非揮發性(NV)記憶體
122-1,122-2~122-N:非揮發性(NV)記憶體元件
122T:非暫時表
MMRBUF,MMRBUF(0),MMRBUF(1),
MMRBUF(2),MMRBUF(3):記憶體映射環形緩衝器
IQH0,IQH1,IQH2,IQH3:傳入隊列頭部
OQT0,OQT1,OQT2,OQT3:傳出隊列尾部
S10,S11,S12,S12A,S12B,S12C,
S12D,S12E,S12F,S16,S17,S17A,
S17B,S17C,S17D,S17E,S17F:步驟
第1圖是依據本發明一實施例的一電子裝置的示意圖。
第2圖於其下半部依據本發明一實施例繪示用於進行一記憶體裝置諸如第1圖的記憶體裝置的存取控制的一多階段(multi-phase)隊列控制方案,其中為了更好的理解,第2圖於其上半部繪示一單階段隊列控制方案。
第3圖依據本發明一實施例繪示該方法的一傳出隊列尾部(outgoing queue tail,OQT)遠端更新控制方案。
第4圖依據本發明一實施例繪示該方法的一階段檢查控制方案。
第5圖依據本發明一實施例繪示該方法的一混合控制方案。
第6圖依據本發明一實施例繪示如第2圖所示的該多階段隊列控制方案的一系列操作前的一初始狀態。
第7圖依據本發明一實施例繪示如第2圖所示的該多階段隊列控制方案的上
述一系列操作中的一或多個第一操作後的一第一中間狀態。
第8圖依據本發明一實施例繪示如第2圖所示的該多階段隊列控制方案的上述一系列操作中的一或多個第二操作後的一第二中間狀態。
第9圖依據本發明一實施例繪示如第2圖所示的該多階段隊列控制方案的上述一系列操作中的一或多個第三操作後的一第三中間狀態。
第10圖依據本發明一實施例繪示如第2圖所示的該多階段隊列控制方案的上述一系列操作中的一或多個第四操作後的一第四中間狀態。
第11圖依據本發明一實施例繪示如第2圖所示的該多階段隊列控制方案的上述一系列操作中的一或多個第五操作後的一第五中間狀態。
第12圖依據本發明一實施例繪示該方法的一隊列拆分與合併控制方案。
第13圖依據本發明一實施例繪示如第12圖所示的該隊列拆分與合併控制方案的某些實施細節。
第14圖依據本發明一實施例繪示該方法的一多記憶體域(multi-memory-domain)屬性控制方案。
第15圖依據本發明另一實施例繪示該方法的一隊列拆分與合併控制方案。
第16A圖依據本發明一實施例繪示該方法的一流程圖的一第一部分。
第16B圖繪示該方法的該流程圖的一第二部分。
本發明的實施例提供了一種藉助於一多階段(multi-phase)記憶體映射(memory-mapped)隊列諸如一多階段記憶體映射訊息隊列以對一記憶體裝置進行存取控制的方法以及相關設備。該設備可以代表其內實現有該多階段記憶體映射隊列(諸如一或多個處理器/處理器核心與多個硬體引擎之間的訊息傳遞機制)的任一特定應用積體電路(application-specific integrated circuit,ASIC)產
品,但本發明不以此為限。該設備可以包含具備積體電路(integrated circuit,IC)的電子裝置的至少一部分(例如一部分或全部),在該積體電路中可實現該多階段記憶體映射隊列。舉例來說,該設備可以包含該電子設備的一部分諸如該記憶體裝置、其控制器等。又例如,該設備可以包含整個電子設備。又例如,該裝置可以包含一系統單晶片(system-on-chip,SoC)積體電路諸如包括該控制器的系統單晶片積體電路。另外,本發明的某些控制方案提供以下特徵:(1)該多階段記憶體映射隊列可以包含在一單記憶體映射環形緩衝器內實現的多個鏈接訊息隊列,其中該多個鏈接訊息隊列中的每一鏈接訊息隊列與分別對應於該多個鏈接訊息隊列的多個階段中的一階段相關聯,且該多階段記憶體映射隊列對每一處理器或引擎用於排隊(en-queuing)操作或離隊(de-queuing)操作是透明的(transparent);(2)該多階段記憶體映射隊列的架構可予以變化,舉例來說,本發明的方法和設備可以藉由在任一給定階段拆分以及合併訊息流(message flow)來改變該多階段記憶體映射隊列的一或多個訊息流;(3)該多階段記憶體映射隊列可以藉由彈性的多記憶體域(multi-memory domain)存取屬性配置來設置或建立,舉例來說,針對需要實現記憶體映射隊列的各種資料結構,本發明方法和設備可以動態地配置與記憶體域相關聯的記憶體存取屬性,諸如門鈴、隊列條目(entry)、隊列主體(body)和資料緩衝器,其中記憶體域存取屬性可以在每隊列基礎(per queue base)或每訊息基礎(per message base)上進行配置;以及(4)針對記憶體映射隊列分佈,本發明的方法和設備可以將引擎中的任一傳入隊列(incoming queue)或傳出隊列(outgoing queue)配置為鏈接或非鏈接隊列,其中一請求訊息隊列可以產生多個鏈接訊息和多個完成(completion)訊息到多個鏈接傳出隊列和多個完成傳出隊列;
其中上列特徵中的一或多個可以被組合,但本發明不以此為限。藉由使用該多階段記憶體映射隊列,本發明的方法和相關設備可以在沒有副作用或較不可能帶來副作用之狀況下解決相關技術問題。
第1圖是依據本發明一實施例的一電子系統10的示意圖,其中電子系統10包含一主機裝置50和一記憶體裝置100。主機裝置50可以包含至少一處理器(例如,一或多個處理器),其可被統稱為處理器52,並且主機裝置50可以進一步包含耦接到處理器52的一電源供應電路54。處理器52是被配置以控制主機裝置50的操作,電源供應電路54是被配置以向處理器52和記憶體裝置100提供電源,並且向記憶體裝置100輸出一或多個驅動電壓。記憶體裝置100可以被配置以提供儲存空間給主機裝置50,並且從主機裝置50取得一或多個驅動電壓以作為記憶體裝置100的電源。主機裝置50的例子可以包含(但不限於):一多功能行動電話、一可穿戴裝置、一平板電腦以及個人電腦諸如桌上型電腦和筆記型電腦。記憶體裝置100的例子可以包含(但不限於):一可攜式記憶體裝置(例如符合SD/MMC、CF、MS或XD規範的記憶卡)、一固態硬碟(solid state drives,SSD)以及各種不同的嵌入式儲存裝置諸如符合通用快閃記憶體儲存(Universal Flash Storage,簡稱UFS)標準或嵌入式MMC(eMMC)標準的嵌入式儲存裝置。依據本實施例,記憶體裝置100可以包含一控制器諸如一記憶體控制器110和一非揮發性(non-volatile,簡稱NV)記憶體120,其中,該控制器是被配置以控制記憶體裝置100的操作並存取NV記憶體120,且NV記憶體120是被配置以儲存資訊。NV記憶體120可以包含至少一NV記憶體元件(例如一或多個NV記憶體元件),諸如多個NV記憶體元件122-1、122-2...以及122-N,其中「N」可以代表大於1的一正整數。舉例來說,NV記憶體120可以是快閃記憶體,且多個NV記憶體元件122-1、122-2,...以及122-N可以是多個快閃記憶體晶片(chip)或多個快閃記憶體裸晶(die),但是本發明不以此為限。另外,第1圖所示架構中的電子裝置10、記憶體
裝置100及該控制器諸如記憶體控制器110可分別作為如前面所述之具備IC的該電子裝置、該記憶體裝置及其控制器的例子。
如第1圖所示,記憶體控制器110可以包含一處理電路諸如一微處理器112、一儲存單元諸如一唯讀記憶體(read-only memory,簡稱ROM)112M、一控制邏輯電路114、一引擎電路115(例如一數位信號處理(digital signal processing,DSP)引擎)、一隨機存取記憶體(random access memory,簡稱RAM)116以及一傳輸介面電路118,其中上列元件可以藉由一匯流排(bus)相互耦接。引擎電路115可以包含多個次級處理電路,並且該多個次級處理電路可以是硬體功能塊(functional block),其可稱為硬體引擎。這些硬體引擎諸如引擎#1、#2等可以包含一直接記憶體存取(direct memory access,DMA)引擎、一壓縮引擎、一解壓縮引擎、一編碼引擎(例如一編碼器)、一解碼引擎(例如一解碼器)、一隨機化引擎(例如一隨機化器)以及一去隨機化引擎(例如一去隨機化器),但本發明不以此為限。例如該編碼引擎(例如該編碼器)以及該解碼引擎(例如該解碼器)可以整合到同一模組(諸如一編碼與解碼引擎)中,該隨機化引擎(例如該隨機化器)以及該去隨機化引擎(例如該去隨機化器)可以整合到同一模組(諸如一隨機化與去隨機化引擎)中,及/或該壓縮引擎以及該解壓縮引擎可以整合到同一模組(諸如一壓縮與解壓縮引擎)中。根據某些實施例,引擎電路115的一或多個子電路可以整合到控制邏輯電路114中。
在引擎電路115中,包含有該編碼引擎(例如該編碼器)和該解碼引擎(例如該解碼器)的一資料保護電路可以被配置以保護資料及/或進行錯誤更正(error correction),尤其,可以被配置為分別進行編碼和解碼操作,並且該隨機化引擎(例如該隨機化器)和該去隨機化引擎(例如該去隨機化器)可以被配置以分別進行隨機化和去隨機化操作。另外,該壓縮引擎和該解壓縮引擎可以被配置為分別進行壓縮和解壓縮操作。此外,該DMA引擎可以被配置為進行DMA操作。
例如,在如主機裝置50所請求來進行寫入資料的期間,該DMA引擎可以藉由傳輸介面電路118對主機裝置50中的某一記憶體的一第一主機側記憶體區域進行DMA操作,以藉由傳輸介面電路118接收來自該第一主機側記憶體區域的資料。又例如,在如主機裝置50所請求來進行讀取資料的期間,該DMA引擎可藉由傳輸介面電路118對主機裝置50中的該記憶體的一第二主機側記憶體區域(其可以與第一主機側記憶體區域相同或不同)進行DMA操作,以藉由傳輸介面電路118將資料傳送(例如回傳(return))到該第二主機側記憶體區域。
RAM 116由一靜態隨機存取記憶體(static random access memory,SRAM)實現,但本發明不以此為限。RAM 116可以被配置為向記憶體控制器110提供內部儲存空間。例如,RAM 116可以作為一緩衝記憶體以緩衝資料。尤其RAM 116可以包含用作多階段記憶體映射隊列MPMMQ的一記憶體區域(例如一預定記憶體區域),其可以作為上述多階段記憶體映射隊列的例子,但本發明不以此為限。例如,多階段記憶體映射隊列MPMMQ可以在記憶體控制器110內的另一記憶體中實現。另外,本實施例的ROM 112M用以儲存程式代碼112C,而微處理器112用以執行程序代碼112C以控制對NV記憶體120的存取。請注意,在某些例子中,程序代碼112C可以儲存在RAM 116或任何形式的記憶體中。另外,傳輸介面電路118可符合一特定通信標準(諸如串列高級技術附件(Serial Advanced Technology Attachment,SATA)標準、通用串列匯流排(Universal Serial Bus,USB)標準、快捷外設組件互聯(Peripheral Component Interconnect Express,PCIe)標準、嵌入式多媒體卡(Embedded Multimedia Card,eMMC)標準、或通用快閃儲存(Universal Flash Storage,UFS)標準),並且可以依據該特定通信標準進行通信。
在本實施例中,主機裝置50可以藉由向記憶體控制器110發送主機指令和對應的邏輯位址來存取記憶體裝置100。記憶體控制器110接收主機指令及
邏輯位址,並將主機指令轉換為記憶體操作指令(可簡稱為操作指令),並以操作指令控制NV記憶體以對NV記憶體120中具有物理位址的記憶體單元(例如資料頁)進行讀取、寫入/編程(programing)等,其中物理位址可與邏輯位址相關聯。當記憶體控制器110對多個NV記憶體元件122-1、122-2、...和122-N中的任一NV記憶體元件122-n(符號「n」可以代表在區間[1,N]中的任一整數)進行一抹除(erase)操作時,NV記憶體裝置122-n的多個區塊中的至少一區塊將被抹除,其中該多個區塊中的每一區塊可以包含多個頁(例如資料頁),以及存取操作(例如讀取或寫入)可以在一頁或多頁上進行。
關於記憶體裝置100的內部控制的一些實施細節可進一步描述如下。根據某些實施例,該處理電路諸如微處理器112可根據來自主機裝置50的多個主機指令來控制記憶體控制器110,以容許主機裝置50藉由記憶體控制器110來存取NV記憶體120。記憶體控制器110可以為主機裝置50將資料儲存到NV記憶體120中,因應於來自主機裝置50的一主機指令(例如該多個主機指令的其中之一)讀取儲存的資料,並且將從NV記憶體120讀取的資料提供給主機裝置50。在NV記憶體120諸如快閃記憶體中,上述至少一個NV記憶體元件(例如多個NV記憶體元件122-1、122-2、...和122-N)可以包括複數個區塊,諸如NV記憶體元件122-1中的第一組物理區塊、NV記憶體元件122-2中的第二組物理區塊、…以及NV記憶體元件122-N中的第N組物理區塊。記憶體控制器110可以被設計為適當地管理該複數個區塊諸如這些組物理區塊(亦即,該第一組至該第N組物理區塊;可稱為N個物理區塊組)。
記憶體控制器110可以在至少一表諸如RAM 116中的至少一暫時表(例如一或多個暫時表)以及NV記憶體120中的至少一非暫時表(例如一或多個非暫時表)記錄、維護及/或更新針對區塊管理的區塊管理資訊,其中上述至少一暫時表可以統稱為暫時表116T,而上述至少一非暫時表可以統稱為非暫時表
122T。暫時表116T可以包含非暫時表122T的至少一部分(例如一部分或全部)的暫時版本。舉例來說,非暫時表122T可以包含至少一邏輯到物理(logical-to-physical,簡稱L2P)位址映射表(例如一個或多個L2P位址映射表),以供記錄多個邏輯位址(例如指出多個邏輯區塊的邏輯區塊位址(logical block addresses,LBAs)以及指出在該多個邏輯區塊的任一個邏輯區塊中的多個邏輯頁的邏輯頁位址(logical page addresses,LPAs))以及多個物理位址(例如指出多個物理區塊的物理區塊位址(physical block addresses,PBAs)以及指出在該多個物理區塊的任一個物理區塊中的多個物理頁的物理頁位址(physical page addresses,PPAs))之間的映射關係,並且暫時表116T可以包含上述至少一L2P位址映射表的至少一子表(sub-table)(例如一或多個子表)的一暫時版本,其中記憶體控制器110(例如微處理器112)可在主機裝置50的主機端儲存空間(例如邏輯位址)與記憶體裝置100內的NV記憶體120的裝置端儲存空間(例如物理位址)之間進行雙向位址轉換,以便為主機裝置50存取資料。為了更好的理解,非暫時表122T可被繪示於NV記憶體元件122-1中,但本發明不以此為限。例如,非暫時表122T可以儲存在多個NV記憶體元件122-1、122-2、...和122-N中的一或多個NV記憶體元件中。另外,當需要時,記憶體控制器110可將暫時表116T備份至NV記憶體120(例如,多個NV記憶體元件122-1、122-2、...和122-N中的一或多個NV記憶體元件)中的非暫時表122T,並且記憶體控制器110可以將非暫時表122T的至少一部分(例如部分或全部)加載到RAM 116中以成為暫時表116T以供快速參考。
第2圖於其下半部依據本發明一實施例繪示用於進行一記憶體裝置諸如第1圖的記憶體裝置的存取控制的一多階段(multi-phase)隊列控制方案,其中為了更好的理解,第2圖於其上半部繪示一單階段隊列控制方案。該方法可以應用於第1圖所示的架構,例如,電子設備10、記憶體設備100、記憶體控制器110和微處理器112以及引擎電路115和多階段記憶體映射隊列MPMMQ。記憶體控制
器110內的多階段記憶體映射隊列MPMMQ可以通過一記憶體映射環形緩衝器MMRBUF來實現,其中記憶體映射環形緩衝器MMRBUF可以位於RAM 116內,但是本發明不限於此。
如第2圖上半部分所示,一訊息鏈可以用一處理器、多個引擎以及多個記憶體映射環形緩衝器來實現,並且對於該多個記憶體映射環形緩衝器的記憶體映射環形緩衝器計數(count)等於四的情況,多個記憶體映射環形緩衝器可以包含四個記憶體映射環形緩衝器MMRBUF(0)、MMRBUF(1)、MMRBUF(2)以及MMRBUF(3),其中記憶體映射環形緩衝器MMRBUF(0)、MMRBUF(1)、MMRBUF(2)以及MMRBUF(3)的每一個都可以視為一單階段記憶體映射環形緩衝器。當引擎計數增加時,記憶體映射環形緩衝器計數可以對應地增加。因此,在引擎計數大於一百的情況下,記憶體映射環形緩衝器計數也大於一百,這可能會導致相關成本增加。
如第2圖下半部分所示,本發明的方法和設備可以利用一單一記憶體映射環形緩衝器諸如記憶體映射環形緩衝器MMRBUF來代替該多個記憶體映射環形緩衝器諸如記憶體映射環形緩衝器MMRBUF(0)、MMRBUF(1)等,其中記憶體映射環形緩衝器MMRBUF可以被視為一多階段記憶體映射環形緩衝器。記憶體映射環形緩衝器MMRBUF可以包含分別對應多個階段{Phase(x)}的多個子隊列{SQ(x)},諸如分別對應階段Phase(0)、Phase(1)、Phase(2)以及Phase(3)的子隊列SQ(0)、SQ(1)、SQ(2)以及SQ(3)(分別標示為「Phase(0)的子隊列SQ(0)」、「Phase(1)的子隊列SQ(1)」、「Phase(2)的子隊列SQ(2)」以及「Phase(3)的子隊列SQ(3)」以求簡明)。請注意,符號「x」可以表示落在區間[0,(X-1)]內的任何非負整數,符號「X」可以表示該多個子隊列{SQ(x)}的子隊列計數。當引擎計數增加時,子隊列計數X可以對應地增加,但記憶體映射環形緩衝器計數可以非常小,更具體地來說,可以等於1。因此,在引擎計數大於一百的情況下,記憶體
映射環形緩衝器計數非常有限,且因此可以節省相關成本。
雖然記憶體映射環形緩衝器MMRBUF(0)、MMRBUF(1)、MMRBUF(2)以及MMRBUF(3)中的局部緩衝器可以分別用與子隊列SQ(0)、SQ(1)、SQ(2)以及SQ(3)相同或相似的陰影型樣(shading pattern)來說明,以供指出從處理器和引擎輸出的訊息的儲存位置,記憶體映射環形緩衝器MMRBUF(0)、MMRBUF(1)、MMRBUF(2)以及MMRBUF(3)中的局部緩衝器不等同於子隊列SQ(0)、SQ(1)、SQ(2)以及SQ(3)。請注意,在第2圖上半部分所示的單階段隊列控制方案中,記憶體映射環形緩衝器MMRBUF(0)、MMRBUF(1)、MMRBUF(2)以及MMRBUF(3)的每一記憶體映射環形緩衝器的整體總是存在的。另外,記憶體映射環形緩衝器MMRBUF(0)、MMRBUF(1)、MMRBUF(2)以及MMRBUF(3)會獨立地運行。例如,記憶體映射環形緩衝器MMRBUF(0)、MMRBUF(1)、MMRBUF(2)以及MMRBUF(3)中的一個的操作不會影響記憶體映射環形緩衝器MMRBUF(0)、MMRBUF(1)、MMRBUF(2)以及MMRBUF(3)中的另一個的操作。
該多階段隊列控制方案中的處理器和引擎#1、#2等可以分別代表在第1圖所示的架構中的該處理電路諸如微處理器112和次級處理電路諸如硬體引擎(或引擎#1、#2等),但本發明不以此為限。依據某些實施例,該多階段隊列控制方案中的處理器和引擎#1、#2等可以被取代為一或多個處理器/處理器核心及/或硬體引擎的各種組合中的任一組合,諸如一處理器核心和多個硬體引擎的組合、多個處理器核心和多個硬體引擎的組合、多個處理器核心的組合、多個硬體引擎的組合等。
針對多階段記憶體映射隊列MPMMQ(例如記憶體映射環形緩衝器MMRBUF)的設計規則的某些實現細節可以描述如下。根據某些實施例,對於該多階段隊列控制方案中的處理器或引擎#1、#2等中的任一引擎,相關聯的傳出
隊列(例如該多個子隊列{SQ(x)}中的一個)永遠不會外溢(overflow)。這是有保證的,因為當有至少一條目提前從傳入隊列離隊(例如從傳入隊列輸出)時,條目才會被排隊至傳出隊列(例如,輸入到傳出隊列)中。也就是說,該處理器或該任一引擎都可以按照以下規則運行:(1)該處理器或該任一引擎的一傳出隊列尾部(outgoing queue tail,OQT)絕不能越過該處理器或該任一引擎的傳入隊列頭部(incoming queue head,IQH);以及(2)傳入隊列頭部IQH(x)絕不能越過一上游處理器或引擎的傳出隊列尾部OQT(x-1)。針對以上兩條規則中的前者:如果x>0,則引擎#x的傳出隊列尾部OQT(x)永遠不會超過引擎#x的傳入隊列頭部IQH(x);否則,當x=0時,該處理器的傳出隊列尾部OQT(0)永遠不會超過該處理器的傳入隊列頭部IQH(0)。尤其,該處理器或該任一引擎可以直接比較本地傳出隊列尾部和傳入隊列頭部,諸如傳出隊列尾部OQT(x)以及傳入隊列頭部IQH(x)。另外,針對以上兩條規則中的後者:如果x>1,則引擎#x的傳入隊列頭部IQH(x)永遠不會超過上游引擎#(x-1)的傳出隊列尾部OQT(x-1);如果x=1,則引擎#1的傳入隊列頭部IQH(1)永遠不會越過上游處理器的傳出隊列尾部OQT(0);否則,當x=0時,該處理器的傳入隊列頭部IQH(0)永遠不會越過上游引擎#(X-1)的傳出隊列尾部OQT(x-1)。尤其,該處理器或該任一引擎可以依據分別在第3至5圖中示出的實施例中的任一個來操作。在後續的實施例中,傳入隊列頭部IQH(x)諸如傳入隊列頭部(簡稱IQH)IQH(0)、IQH(1)等以及傳出隊列尾部OQT(x)諸如傳出隊列尾部(簡稱OQT)OQT(0)、OQT(1)等可以分別寫成IQH IQHx諸如IQH IQH0、IQH1等以及OQT OQTx諸如OQT OQT0、OQT1等,以求簡明。
第3圖依據本發明一實施例繪示該方法的一傳出隊列尾遠端更新控制方案。該處理器或該任一引擎可以遠端地將OQT寫入鏈中的下游引擎,而鏈
接架構中的下游引擎可以將遠端更新的OQT(例如該處理器或該任一引擎寫入的OQT)作為傳入隊列尾部與下游引擎的本地IQH進行比較。舉例來說:(1)該處理器可以遠端地將OQT OQT0寫入鏈中的下游引擎#1,而鏈接架構中的下游引擎#1可以將遠端更新的OQT OQT0作為傳入隊列尾部與下游引擎#1的本地IQH IQH1進行比較;(2)引擎#1可以遠端地將OQT OQT1寫入鏈中下游引擎#2,而鏈接架構中的下游引擎#2可以將遠端更新的OQT OQT1作為傳入隊列尾部與下游引擎#2的本地IQH IQH2進行比較;(3)引擎#2可以遠端地將OQT OQT2寫入鏈中下游引擎#3,而鏈接架構中的下游引擎#3可以將遠端更新的OQT OQT2作為傳入隊列尾部與下游引擎#3的本地IQH IQH3進行比較;以及(4)引擎#3可以遠端地將OQT OQT3寫入鏈中下游處理器,而鏈接架構中的下游處理器可以將遠端更新的OQT OQT3作為傳入隊列尾部與下游處理器的本地IQH IQH0進行比較;但本發明不以此為限。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
第4圖依據本發明一實施例繪示該方法的一階段檢查控制方案。對於發送到鏈中傳出隊列的每條傳出訊息,都有一階段欄位,並且唯一的階段欄位值與每一處理器或引擎相關聯。尤其,該處理器或該任一引擎可以從鏈中的上游引擎讀取傳入隊列條目,直到階段欄位值改變,其中該讀取可以是被徵求的(solicited)(例如藉由中斷(interrupt))或非被徵求的(unsolicited)。如第4圖所示,被發送到傳出隊列諸如子隊列SQ(0)的每條傳出訊息的階段欄位值可以等於「01」(標示為「Phase=‘01’」以求簡明),被發送到傳出隊列諸如子隊列SQ(1)的每條傳出訊息的階段欄位值可以等於「10」(標示為「Phase=‘10’」以求簡明),
被發送到傳出隊列諸如子隊列SQ(2)的每條傳出訊息的階段欄位值可以等於「11」(標示為「Phase=‘11’」以求簡明),並且被發送到傳出隊列諸如子隊列SQ(3)的每條傳出訊息的階段欄位值可以等於「00」(標示為「Phase=‘00’」以求簡明),但本發明不以此為限。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
第5圖依據本發明一實施例繪示該方法的一混合控制方案。該處理器或該任一引擎可以根據第3圖所示的OQT遠端更新控制方案和第4圖所示的階段檢查控制方案中的一或多個控制方案進行操作。例如,該處理器和引擎#1、#2和#3的某些操作可以符合第3圖所示的OQT遠端更新控制方案,並且胎處理器和引擎#1、#2和#3中的所有引擎可以依據第4圖所示的階段檢查控制方案進行操作,但本發明不以此為限。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
第6圖依據本發明一實施例繪示如第2圖所示的該多階段隊列控制方案的一系列操作前的一初始狀態。如第6圖所示,所有IQH和所有OQT都被設置為記憶體映射環形緩衝器MMRBUF中的相同位址指標(pointer)(例如一起始位址)。此初始狀態是任一隊列或任一引擎中沒有任何尚未處置的(outstanding)訊息(例如請求或完成)的邏輯狀態,且該處理器保留所有條目。在這種狀態下,除了處理器的OQT(例如OQT OQT0),沒有任何可以移動的頭部或尾部指標。
第7圖依據本發明一實施例繪示如第2圖所示的該多階段隊列控制方案的上述一系列操作中的一或多個第一操作後的一第一中間狀態。在該一或多個第一操作中,該處理器將四個條目排隊(en-queue)至傳到引擎#1的傳出隊列諸如子隊列SQ(0)。
第8圖依據本發明一實施例繪示如第2圖所示的該多階段隊列控制方案的上述一系列操作中的一或多個第二操作後的一第二中間狀態。在該一或多個第二操作中,引擎#1從傳入隊列諸如子隊列SQ(0)中離隊(de-queue)三個條目以
取得這三個條目,並將兩個條目排隊至傳到引擎#2的傳出隊列中諸如子隊列SQ(1)。
第9圖依據本發明一實施例繪示如第2圖所示的該多階段隊列控制方案的上述一系列操作中的一或多個第三操作後的一第三中間狀態。在該一或多個第三操作中,該處理器將十二個條目的排隊至傳到引擎#1的傳出隊列諸如子隊列SQ(0),引擎#1從傳入隊列諸如子隊列SQ(0)中離隊(de-queue)十個條目以取得這十個條目,並將八個條目排隊至傳到引擎#2的輸出隊列諸如子隊列SQ(1),並且引擎#2從傳入隊列諸如子隊列SQ(1)中離隊(de-queue)八個條目以取得這八個條目,並將五個條目排隊至傳到引擎#3的輸出隊列諸如子隊列SQ(2)。
第10圖依據本發明一實施例繪示如第2圖所示的該多階段隊列控制方案的上述一系列操作中的一或多個第四操作後的一第四中間狀態。在該一或多個第四操作中,引擎#3從傳入隊列諸如子隊列SQ(2)中離隊四個條目以取得這四個條目,並將三個條目排隊至傳到該處理器的傳出隊列諸如子隊列SQ(3)。
第11圖依據本發明一實施例繪示如第2圖所示的該多階段隊列控制方案的上述一系列操作中的一或多個第五操作後的一第五中間狀態。在該一或多個第五操作中,該處理器從傳入隊列諸如子隊列SQ(3)中離隊兩個條目以取得這兩個條目。例如,該處理器或該任一引擎可以進行上述一系列操作中的額外操作。
第12圖依據本發明一實施例繪示該方法的一隊列拆分與合併控制方案。為了更好的理解,子隊列和相關局部訊息流的某些變化可以如第12圖中所示用一邏輯視圖來解釋。舉例來說,子隊列SQ(0)可視為一請求隊列Q10,而子隊列SQ(3)可視為一完成隊列Q17。由於引擎#2被拆分為Y個引擎(例如符號「Y」可以代表大於一的正整數)諸如三個引擎#2.0、#2.1以及#2.2,引擎#1以及#2之間的局部訊息流在邏輯上可以拆分為三個局部訊息流,因此子隊列SQ(1)可以在邏
輯上拆分為對應的子隊列諸如鏈接請求隊列Q11~Q13,其中鏈接請求隊列Q11~Q13的一些隊列條目可以分別被標示為「0」、「1」以及「2」以供指出它們在從引擎#1到三個引擎#2.0、#2.1以及#2.2的三個局部訊息流上。相似地,由於引擎#2被拆分為Y個引擎諸如三個引擎#2.0、#2.1以及#2.2,引擎#2和#3之間的局部訊息流在邏輯上可以拆分為三個局部訊息流,因此子隊列SQ(2)可以在邏輯上拆分為對應的子隊列諸如鏈接請求隊列Q14~Q16,其中鏈接請求隊列Q14~Q16的一些隊列條目可以分別被標示為「0」、「1」以及「2」以供指出它們在從三個引擎#2.0、#2.1以及#2.2到引擎#3的三個局部訊息流上。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
第13圖依據本發明一實施例繪示如第12圖所示的該隊列拆分與合併控制方案的某些實施細節。和隊列拆分與合併無關的子隊列SQ(0)以及SQ(3)可以分別視為請求隊列Q10和完成隊列Q17。針對要實現隊列拆分與合併,子隊列SQ(1)可以被視為鏈接請求隊列Q11~Q13的組合,而子隊列SQ(2)可以被視為鏈接請求隊列Q14~Q16的組合。鏈接請求隊列Q11~Q13的各自的隊列條目,諸如具有與子隊列SQ(1)對應的陰影型樣的隊列條目中的分別標示為「0」、「1」以及「2」的隊列條目,可以按照一預定的順序(例如從引擎#1到三個引擎#2.0、#2.1以及#2.2的三個局部訊息流的順序)輪流排列。此外,鏈接請求隊列Q14~Q16的各自的隊列條目,諸如具有與子隊列SQ(2)對應的陰影型樣的隊列條目中的分別標示為「0」、「1」以及「2」的隊列條目,可以按照一預定的順序(例如從三個引擎#2.0、#2.1以及#2.2到引擎#3的三個局部訊息流的順序)輪流排列。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
依據某些實施例,在拆分為1:Y的情況下(例如,引擎#2被拆分為Y個引擎),拆分階段之前和合併階段之後的隊列條目可以被間隔(Y-1)。因此,這些階段的隊列尾部和隊列頭部是呈現著Y的增加量的。另外,對於拆分隊列,隊
列尾部和隊列頭部也應該是呈現著Y的增加量的,但對於和同一個子隊列SQ(x)相對應的拆分隊列中的任何兩個拆分隊列,該任何兩個拆分隊列的各自的偏移量彼此不同。以第13圖所示的架構為例,具有和子隊列SQ(0)相對應的陰影型樣的隊列條目和具有和子隊列SQ(3)對應的陰影型樣的隊列條目可以被間隔(3-1)=2(例如,這些隊列條目中的兩個連續隊列條目之間有兩個空隊列元素),並且OQT OQT(0)、OQT(1.0)、OQT(1.1)、OQT(1.2)、OQT(2.0)、OQT(2.1)、OQT(2.2)以及OQT(3)(分別標示為「OQT0」、「OQT1.0」、「OQT1.1」、「OQT1.2」、「OQT2.0」、「OQT2.1」、「OQT2.2」以及「OQT3」)中的任一OQT或IQH IQH(0)、IQH(1)、IQH(2.0)、IQH(2.1)、IQH(2.2)、IQH(3.0)、IQH(3.1)以及IQH(3.2)(分別標示為「IQH0」、「IQH1」、「IQH2.0」、「IQH2.1」、「IQH2.2」、「IQH3.0」、「IQH3.1」以及「IQH3.2」)中的任一IQH可以用三的增加量來增加。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
在該隊列拆分與合併控制方案中,引擎#2可以作為在所有處理/次級處理電路中的被拆分的一處理/次級處理電路的例子,但本發明不以此為限。根據某些實施例,被拆分的該處理/次級處理電路及/或被拆分的處理/次級處理電路的數量可予以變化。舉例來說,被拆分的該處理/次級處理電路可以是該處理器或引擎#1、#2等中的另一引擎。再舉例來說,可能有不止一個處理/次級處理電路被拆分。
第14圖依據本發明一實施例繪示該方法的一多記憶體域(multi-memory-domain)屬性控制方案。一組記憶體域可以用平面位址來映射,以及針對一處理/次級處理電路(諸如一處理器/處理器核心、一硬體(HW)引擎等)如何存取用於一組記憶體域中的任何兩個記憶體域的屬性的方式可能彼此不同。舉例來說,該組記憶體域可以包含:(1)一門鈴暫存器域(doorbell register domain,標示為「暫存器域」以求簡明),
其中處理/次級處理電路(例如處理器核心或硬體引擎)可以存取該門鈴暫存器域中的門鈴暫存器(標示為「門鈴」以求簡明)以供用於鏈接訊息;(2)一訊息標頭域(message header domain)(也可以稱為隊列條目域,因為訊息標頭形成隊列條目),其中處理/次級處理電路(例如處理器核心或硬體引擎)可以存取該訊息標頭域中的隊列條目諸如訊息標頭(例如一請求訊息標頭以及一完成訊息標頭),並且用於這些隊列條目的這個記憶體域是藉由每隊列暫存器(per queue register)在每隊列基礎(標示為「每隊列」以求簡明)上配置,舉例來說,該訊息標頭域的記憶體可以是一同調域一級高速緩存(coherent domain level-one cache,L1$)、一同調域二級高速緩存(coherent domain level-two cache,L2$)等中的任一個或者非同調(non-coherent)資料/訊息記憶體中的任一個;(3)一訊息主體域(message body domain),其中處理/次級處理電路(例如處理器核心或硬體引擎)可以存取訊息主體域中的訊息主體(例如一請求訊息主體以及一完成訊息主體),並且用於一訊息的該訊息主體域應藉由訊息標頭來設置或配置在每訊息基礎(標示為「每訊息」以求簡明)上,舉例來說,該訊息主體域的記憶體可以是一同調域一級高速緩存(L1$)、一同調域二級高速緩存(L2$)等中的任一個或者非同調資料/訊息記憶體中的任一個;以及(4)一訊息資料緩衝域,其中處理/次級處理電路(例如處理器核心或硬體引擎)可以存取該訊息資料緩衝域中的訊息資料緩衝器(例如多個來源資料緩衝器以及多個目的地(destination)資料緩衝器),以及該訊息資料緩衝域應設置或配置在一訊息標頭或一訊息主體中的每分散收集列表(scatter gather list,簡稱SGL)元素基礎(per SGL element base)(標示為「每SGL元素」以求簡明)上;但本發明不以此為限。舉例來說,該請求訊息標頭可以包含指向相關完成隊列的一完成隊列號(標示為「完成Q#」以求簡明)、指向該請求訊息主體的一請求訊息主體位址、指向該完成訊息主體的一完成訊息主體位址、指向來源該多個資
料緩衝器的一SGL位址、以及指向該多個目的地資料緩衝器的一SGL位址;並且該請求訊息主體可以包含指向該多個來源資料緩衝器的該SGL位址和指向該多個目的地資料緩衝器的該SGL位址。
第15圖依據本發明另一實施例繪示該方法的一隊列拆分與合併控制方案。與第13圖所示的架構相比,某些局部訊息流可以被進一步拆分為更多的局部訊息流,且相關聯的子隊列也可以被對應地拆分。例如,子隊列SQ(0)可以被視為請求隊列Q10、Q20以及Q30的組合,子隊列SQ(1)可以被視為鏈接請求隊列Q11~Q13、Q21以及Q31的組合,且子隊列SQ(2)可以被視為鏈接請求隊列Q14~Q16以及完成隊列Q22和Q32的組合,其中與隊列拆分和合併無關的子隊列SQ(3)可以被視為完成隊列Q17。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
第16A圖以及第16B圖依據本發明一實施例分別繪示該方法的一流程圖的一第一部分以及一第二部分,其中節點A以及B可以指出第16A圖和第16B圖的各個局部工作流程之間的連接。該方法可應用於第1圖所示的架構(例如電子裝置10、記憶體裝置100、記憶體控制器110及微處理器112),且可由記憶體裝置100的記憶體控制器110(例如微處理器112)來執行。在如主機裝置50所請求的一第一類存取操作(例如資料讀取和資料寫入中的一個)的期間,該處理電路諸如微處理器112和一第一組次級處理電路諸如引擎#1、#2等中的對應於第一類存取操作的一組引擎可共享多階段記憶體映射隊列MPMMQ(例如記憶體映射環形緩衝器MMRBUF),並使用多階段記憶體映射隊列MPMMQ分別作為與多個階段相關聯的多個鏈接訊息隊列(例如分別對應於該多個階段{Phase(x)}的該多個子隊列{SQ(x)},配置用於第一類存取操作),以供為包含該處理電路和該第一組次級處理電路的一鏈接處理架構進行訊息排隊。另外,在如主機裝置50所請求的一第二類存取操作(例如資料讀取和資料寫入其的另一個)的期間,該處理電路諸如微
處理器112和一第二組次級處理電路諸如引擎#1、#2等中的對應於第二類存取操作的一組引擎可以共享多階段記憶體映射隊列MPMMQ(例如記憶體映射環形緩衝器MMRBUF),並且使用多階段記憶體映射隊列MPMMQ分別作為與多個其它階段相關聯的多個其它鏈接訊息隊列(例如分別對應於該多個階段{Phase(x)}的該多個子隊列{SQ(x)},配置用於第二類存取操作),以供為包含該處理電路和該第二組次級處理電路的另一鏈接處理架構進行訊息排隊。
在步驟S10中,記憶體控制器110(例如微處理器112)可判斷是否接收到一主機指令(例如該多個主機指令中的一個)。若是,則進入步驟S11;若否,則進入步驟S10。
在步驟S11中,記憶體控制器110(例如微處理器112)可判斷該主機指令(亦即,如步驟S10中檢測到的剛剛接收到的主機指令)是否為一主機讀取指令。若是,則進入步驟S12;若否,則進入步驟S16。該主機讀取指令可以指出在一第一邏輯位址讀取資料。
在步驟S12中,因應該主機讀取指令(亦即,如步驟S10和S11中檢測到的剛剛接收到的主機讀取指令),記憶體控制器110(例如微處理器112)可以藉由控制邏輯電路114發送一第一操作指令(例如上述操作指令中的一個)諸如一讀取指令至NV記憶體120,並觸發一第一組引擎藉由多階段記憶體映射隊列MPMMQ(例如記憶體映射環形緩衝器MMRBUF)來操作和互動,以供為主機裝置50讀取資料(例如,如主機裝置50所請求的待讀取資料),其中,該第一操作指令諸如該讀取指令可以載有(carry)與該第一邏輯位址相關聯的一第一物理位址,用以指出NV記憶體120內的某一儲存位置,且該第一物理位址可由記憶體控制器110(例如微處理器112)依據上述至少一L2P位址映射表來決定。
例如,該第一組引擎可以包含該去隨機化引擎(例如該去隨機化器)、該解碼引擎(例如該解碼器)、該解壓縮引擎和該DMA引擎,並且該處理電路諸
如微處理器112以及某些次級處理電路諸如這些引擎可以形成類似於第2圖下半部分所示的多階段隊列控制方案的一鏈接處理架構,其中該多階段隊列控制方案中的該處理器和引擎#1、#2等可以分別代表微處理器112以及分別按照以上所列順序排列的這些引擎,但本發明不以此為限。根據某些實施例,該第一組引擎和相關聯的鏈接處理架構可予以變化。
在步驟S12A中,記憶體控制器110(例如微處理器112)可以利用控制邏輯電路114來對NV記憶體120進行讀取,尤其,在NV記憶體120的一個位置(例如從該第一物理位址開始的一物理位址範圍內的某一物理位址)讀取以從NV記憶體120獲得讀取資料。
在步驟S12B中,記憶體控制器110(例如微處理器112)可利用該去隨機化引擎(例如該去隨機化器)對該讀取資料進行去隨機化諸如去隨機化操作以產生去隨機化資料。
在步驟S12C中,記憶體控制器110(例如微處理器112)可利用該解碼引擎(例如該解碼器)對該去隨機化的資料進行解碼諸如解碼操作,以產生解碼資料(例如錯誤修正後的資料諸如依據同位(parity)資料修正後的資料)。
在步驟S12D中,記憶體控制器110(例如微處理器112)可利用該解壓縮引擎對該解碼資料進行解壓縮諸如解壓縮操作,以產生解壓縮資料作為用來以被發送(例如回傳)到主機裝置50的資料的局部資料。
在步驟S12E中,記憶體控制器110(例如微處理器112)可以利用該DMA引擎藉由傳輸介面電路118對主機裝置50中的該記憶體的該第二主機側記憶體區域進行DMA操作,以藉由傳輸介面電路118將該資料(例如,如主機裝置50所請求的待讀取資料)的該局部資料發送(例如回傳)至該第二主機側記憶體區域。
在步驟S12F中,記憶體控制器110(例如微處理器112)可以檢查是否完
成了對該資料(例如,如主機裝置50所請求的待讀取資料)的整體的資料讀取。若是,則進入步驟S10;若否,則進入步驟S12A。
對於藉由包含步驟S12的子步驟(例如步驟S12A~S12F)的循環(loop)來進行的資料讀取,包含用於資料讀取的該多個鏈接訊息隊列(例如配置用於資料讀取的該多個子隊列{SQ(x)})的多階段記憶體映射隊列MPMMQ是在該單一記憶體映射環形緩衝器諸如記憶體映射環形緩衝器MMRBUF內實現,並且該多個鏈接訊息隊列中的每個鏈接訊息隊列都與該多個階段(例如,該多個階段{Phase(x)},配置用於資料讀取)中的一個階段相關聯,其中該多階段記憶體映射隊列對於該處理電路(例如微處理器112)以及對應於資料讀取的這一組次級處理電路(例如該第一組引擎諸如該去隨機化引擎、該解碼引擎、該解壓縮引擎和該DMA引擎)中的每一個在用於排隊(en-queuing)操作或離隊(de-queuing)操作是透明的(transparent)。在該處理電路和與資料讀取對應的這一組次級處理電路中的至少一個電路(例如一或多個電路)的控制下,分別對應於該多個階段{Phase(x)}的該多個子隊列{SQ(x)}可被配置成具有動態地調整的隊列長度,諸如子隊列SQ(0)、SQ(1)等的各自的隊列長度,以供被用來作為用於資料讀取的該多個鏈接訊息隊列。
在步驟S16中,記憶體控制器110(例如微處理器112)可以判斷該主機指令(亦即,如步驟S10中檢測到的剛剛接收到的主機指令)是否為一主機寫入指令。若是,則進入步驟S17;若否,則進入步驟S18。該主機寫入指令可以指出在一第二邏輯位址寫入資料。
在步驟S17中,因應該主機寫入指令(亦即,如步驟S10和S16中檢測到的剛剛接收到的主機寫入指令),記憶體控制器110(例如微處理器112)可以藉由控制邏輯電路114發送一第二操作指令(例如上述操作指令中的另一操作指令)諸如一寫入指令至NV記憶體120,並且觸發第二組引擎藉由多階段記憶體映射
隊列MPMMQ(例如記憶體映射環形緩衝器MMRBUF)來操作和互動,以供為主機裝置50寫入資料(例如,如主機裝置50所請求的待寫入資料),其中該第二操作指令諸如該寫入指令可以載有與該第二邏輯位址相關聯的一第二物理位址,用於指出NV記憶體120內的某個儲存位置,並且該第二物理位址可由記憶體控制器110(例如微處理器112)決定。
舉例來說,該第二組引擎可以包括該DMA引擎、該壓縮引擎、該編碼引擎(例如該編碼器)和該隨機化引擎(例如該隨機化器),以及該處理電路諸如微處理器112以及某些次級處理電路諸如這些引擎可以形成類似於第2圖下半部分所示的多階段隊列控制方案的一鏈接處理架構,其中該多階段隊列控制方案中的該處理器和引擎#1、#2等可以分別代表微處理器112和分別按照以上所列順序排列的這些引擎,但本發明不以此為限。根據某些實施例,該第二組引擎和相關聯的鏈接處理架構可予以變化。
在步驟S17A中,記憶體控制器110(例如微處理器112)可以利用該DMA引擎藉由傳輸介面電路118對主機裝置50中的該記憶體的該第一主機側記憶體區域進行DMA操作,以藉由傳輸介面電路118從該第一主機側記憶體區域接收資料(例如,如主機裝置50所請求的待寫入資料)的局部資料以作為接收的資料。
在步驟S17B中,記憶體控制器110(例如微處理器112)可利用該壓縮引擎對該接收的資料進行壓縮諸如壓縮操作以產生壓縮資料。
在步驟S17C中,記憶體控制器110(例如微處理器112)可利用該編碼引擎(例如該編碼器)對該壓縮資料進行編碼諸如編碼操作,以產生編碼資料(例如該接收的資料及其同位資料的組合)。
在步驟S17D中,記憶體控制器110(例如微處理器112)可利用該隨機化引擎(例如該隨機化器)對該編碼資料進行隨機化諸如隨機化操作以產生隨機
化資料。
在步驟S17E中,記憶體控制器110(例如微處理器112)可利用控制邏輯電路114來進行編程,尤其,將該隨機化資料編程至NV記憶體120中。
在步驟S17F中,記憶體控制器110(例如微處理器112)可以檢查是否完成了對該資料(例如,如主機裝置50所請求的待寫入資料)的整體的資料寫入。若是,則進入步驟S10;若否,則進入步驟S17A。
對於藉由包含步驟S17的子步驟(例如步驟S17A~S17F)的循環來進行的資料寫入,包含用於資料寫入的該多個鏈接訊息隊列(例如配置用於資料寫入的該多個子隊列{SQ(x)})的多階段記憶體映射隊列MPMMQ是在該單一記憶體映射環形緩衝器諸如記憶體映射環形緩衝器MMRBUF內實現,並且該多個鏈接訊息隊列中的每個鏈接訊息隊列都與該多個階段(例如該多個階段{Phase(x)},配置用於資料寫入)中的一個階段相關聯,其中該多階段記憶體映射隊列對於該處理電路(例如微處理器112)以及對應於資料寫入的這一組次級處理電路(例如該第二組引擎諸如該DMA引擎、該壓縮引擎、該編碼引擎以及該隨機化引擎)中的每一個在用於排隊操作或離隊操作是透明的(transparent)。在該處理電路和與資料寫入對應的這一組次級處理電路中的至少一個電路(例如一或多個電路)的控制下,分別對應於該多個階段{Phase(x)}的該多個子隊列{SQ(x)}可被配置成具有動態地調整的隊列長度,諸如子隊列SQ(0)、SQ(1)等的各自的隊列長度,以供被用來作為用於資料寫入的該多個鏈接訊息隊列。
在步驟S18中,記憶體控制器110(例如微處理器112)可以進行其它處理。舉例來說,當該主機指令(例如,如步驟S10中檢測到的剛剛接收到的主機指令)是不同於該主機讀取指令與該主機寫入指令中的任一者的另一指令時,記憶體控制器110(例如微處理器112)可以進行相關的操作。
為了更好的理解,該方法可以用第16A圖以及第16B圖所示的工作流
程來說明,但本發明不以此為限。根據某些實施例,一或多個步驟可以在第16A圖以及第16B圖所示的工作流程中增加、刪除或修改。
根據某些實施例,假設X=5,該多個子隊列{SQ(x)}和相關的局部訊息流之間的某些關係可以描述如下:(1)該處理電路(例如微處理器112)以及對應於資料讀取的這一組次級處理電路(例如該第一組引擎)中的一第一次級處理電路(例如該去隨機化引擎)之間的一初始局部訊息流可以通過對應於階段Phase(0)的子隊列SQ(0);(2)該第一次級處理電路(例如該去隨機化引擎)以及對應於資料讀取的這一組次級處理電路(例如該第一組引擎)中的一第二次級處理電路(例如該解碼引擎)之間的一第一局部訊息流可以通過對應於階段Phase(1)的子隊列SQ(1);(3)該第二次級處理電路(例如該解碼引擎)以及對應於資料讀取的這一組次級處理電路(例如該第一組引擎)中的一第三次級處理電路(例如該解壓縮引擎)之間的一第二局部訊息流可以通過對應於階段Phase(2)的子隊列SQ(2);(4)該第三次級處理電路(例如該解壓縮引擎)以及對應於資料讀取的這一組次級處理電路(例如該第一組引擎)中的一第四次級處理電路(例如該DMA引擎)之間的一第三局部訊息流可以通過對應於階段Phase(3)的子隊列SQ(3);以及(5)該第四次級處理電路(例如該DMA引擎)以及該處理電路(例如微處理器112)之間的一第四局部訊息流可以通過對應於階段Phase(4)的子隊列SQ(4);但本發明不以此為限,為了簡明起見,於這些實施例中類似的內容在此不重複贅述。
根據某些實施例,假設X=5,該多個子隊列{SQ(x)}和相關的局部訊息流之間的某些關係可以描述如下:(1)該處理電路(例如微處理器112)以及對應於資料寫入的這一組次級處理電路
(例如該第二組引擎)中的一第一次級處理電路(例如該DMA引擎)之間的一初始局部訊息流可以通過對應於階段Phase(0)的子隊列SQ(0);(2)該第一次級處理電路(例如該DMA引擎)以及對應於資料寫入的這一組次級處理電路(例如該第二組引擎)中的一第二次級處理電路(例如該壓縮引擎)之間的一第一局部訊息流可以通過對應於階段Phase(1)的子隊列SQ(1);(3)該第二次級處理電路(例如該壓縮引擎)以及對應於資料寫入的這一組次級處理電路(例如該第二組引擎)中的一第三次級處理電路(例如該編碼引擎)之間的一第二局部訊息流可以通過對應於階段Phase(2)的子隊列SQ(2);(4)該第三次級處理電路(例如該編碼引擎)以及對應於資料寫入的這一組次級處理電路(例如該第二組引擎)中的一第四次級處理電路(例如該隨機化引擎)之間的一第三局部訊息流可以通過對應於階段Phase(3)的子隊列SQ(3);以及(5)該第四次級處理電路(例如該隨機化引擎)以及該處理電路(例如微處理器112)之間的一第四局部訊息流可以通過對應於階段Phase(4)的子隊列SQ(4);但本發明不以此為限,為了簡明起見,於這些實施例中類似的內容在此不重複贅述。
本發明的眾多優點中的一個是,本發明的方法和設備可以降低對記憶體大小的需求,例如,僅從一個相同大小的隊列共享多個鏈接隊列,因此當將一個X階段隊列與X個單階段隊列進行比較時,記憶體需求可以變為1/X。這一點很重要,因為在大部分應用中,隊列條目位於同調記憶體域(coherent memory domain)中,每個條目都是一個快速緩存線(cache line)。另外,本發明的方法和設備可以合併多個多階段記憶體映射隊列,尤其,在訊息的某階段用同步點來加上拆分與合併,這可以增加多個引擎的平行操作,進而減少整個訊息流的延遲(latency)。由於在一個複雜的SoC設計中典型地會存在多個記憶體域,並且由
於不同的記憶體域可具有不同的記憶體屬性,因此在管理方面會非常複雜。本發明的方法和設備可以提供一種妥善地設計的高性能架構。為了實現記憶體映射隊列,四種資料結構可以是所需的,以供用於門鈴暫存器、隊列條目、訊息主體和資料緩衝器。隨著各種應用、SoC裝置運行狀態、服務品質(quality of service,QoS)與性能要求,每一資料結構可能需要被動態地映射到某個記憶體域。本發明的方法和設備可以利用通用分佈式記憶體隊列系統來動態地配置與每個域相關聯的記憶體存取屬性,以達到QoS與性能的目標。此外,對於一複雜的SoC裝置,可能需要靈活地甚至動態地配置訊息流,尤其,取決於特定應用、QoS與性能要求以及裝置狀態。本發明的方法和設備可以為一引擎鏈接到多個引擎之間提供靈活度並在訊息流的不同級/階段發送完成訊息。如此一來,可以提高整體的性能。以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
10:電子系統
50:主機裝置
52:處理器
54:電源供應電路
100:記憶體裝置
110:記憶體控制器
112:微處理器
112M:唯讀記憶體(ROM)
112C:程式代碼
114:控制邏輯電路
115:引擎電路
116:隨機存取記憶體(RAM)
116T:暫時表
118:傳輸介面電路
120:非揮發性(NV)記憶體
122-1,122-2~122-N:非揮發性(NV)記憶體元件
122T:非暫時表
Claims (13)
- 一種藉助於一多階段(multi-phase)記憶體映射(memory-mapped)隊列以對一記憶體裝置進行存取控制的方法,該方法是可應用於(applicable to)該記憶體裝置的一控制器,該記憶體裝置包含該控制器和一非揮發性(non-volatile,NV)記憶體,該非揮發性記憶體包含至少一非揮發性記憶體元件,該方法包含:從一主機裝置接收一第一主機指令,其中該第一主機指令指出在一第一邏輯位址存取第一資料;以及因應該第一主機指令,利用該控制器內的一處理電路透過該控制器的一控制邏輯電路向該非揮發性記憶體發送一第一操作指令,並觸發該控制器內的一第一組次級(secondary)處理電路透過該多階段記憶體映射隊列來操作和互動,以供為該主機裝置存取該第一資料,其中該第一操作指令攜帶有與該第一邏輯位址相關聯的一第一物理位址,以供指出該非揮發性記憶體中的一儲存位置,且該處理電路以及該第一組次級處理電路共享該多階段記憶體映射隊列,並且使用該多階段記憶體映射隊列作為分別與多個階段相關聯的多個鏈接(chained)訊息隊列,以供為包含該處理電路以及該第一組次級處理電路的一鏈接處理架構進行一訊息排隊(message queuing)。
- 如申請專利範圍第1項所述之方法,其中包含該多個鏈接訊息隊列的該多階段記憶體映射隊列實現於一單一記憶體映射環形緩衝器內。
- 如申請專利範圍第1項所述之方法,其中該多個鏈接訊息隊列中的每一鏈接訊息隊列是與該多個階段中的一階段相關聯。
- 如申請專利範圍第1項所述之方法,其中對於該處理電路與該第一組次級處理電路中的每一個,該多階段記憶體映射隊列用於排隊(en-queuing)操作或離隊(de-queuing)操作是透明的(transparent)。
- 如申請專利範圍第1項所述之方法,其中在該處理電路和該第一組次級處理電路中的至少一電路的控制下,分別對應於該多個階段的多個子隊列(sub-queue)被配置以具有動態地調整的隊列長度,以供被用來作為該多個鏈接訊息隊列。
- 如申請專利範圍第5項所述之方法,其中:該第一組次級處理電路中的一第一次級處理電路和一第二次級處理電路之間的一第一局部訊息流(partial message flow)通過該多個子隊列中的對應於一第一階段的一第一子隊列;以及該第一組次級處理電路中的該第二次級處理電路和一第三次級處理電路之間的一第二局部訊息流通過該多個子隊列中的對應於一第二階段的一第二子隊列。
- 如申請專利範圍第6項所述之方法,其中:該處理電路與該第一次級處理電路之間的一局部訊息流通過該多個子隊列中的對應於另一階段的另一子隊列。
- 如申請專利範圍第1項所述之方法,其中該第一組次級處理電路包含一直接記憶體存取(direct memory access,DMA)引擎、一解碼引擎以及 一去隨機化引擎。
- 如申請專利範圍第1項所述之方法,其中該第一組次級處理電路包含一直接記憶體存取(direct memory access,DMA)引擎、一編碼引擎以及一隨機化引擎。
- 如申請專利範圍第1項所述之方法,更包含:從該主機裝置接收一第二主機指令,其中該第二主機指令指出在一第二邏輯位址存取第二資料;以及因應該第二主機指令,利用該控制器內的該處理電路向該非揮發性記憶體發送一第二操作指令,並觸發該控制器內的一第二組次級處理電路透過該多階段記憶體映射隊列來操作和互動,以供為該主機裝置存取該第二資料,其中該第二操作指令攜帶有與該第二邏輯位址相關聯的一第二物理位址,以供指出該非揮發性記憶體中的另一儲存位置,且該處理電路以及該第二組次級處理電路共享該多階段記憶體映射隊列,並且使用該多階段記憶體映射隊列作為分別與多個其它階段相關聯的多個其它鏈接訊息隊列,以供為包含該處理電路以及該第二組次級處理電路的另一鏈接處理架構進行另一訊息排隊。
- 一種依據如申請專利範圍第1項所述之方法來操作之系統單晶片(system-on-chip,SoC)積體電路(integrated circuit,IC),其中該系統單晶片積體電路包含該控制器。
- 一種記憶體裝置,包含: 一非揮發性(non-volatile,NV)記憶體,用以儲存資訊,其中該非揮發性記憶體包含至少一非揮發性記憶體元件;以及一控制器,耦接至該非揮發性記憶體,用以控制該記憶體裝置的操作,其中該控制器包含:一處理電路,用以依據來自一主機裝置的複數個主機指令來控制該控制器,以容許該主機裝置透過該控制器存取該非揮發性記憶體;複數個次級(secondary)處理電路,用以操作以作為複數個硬體引擎;以及一多階段記憶體映射隊列,耦接至該處理電路以及該複數個次級處理電路,用以為該處理電路以及該複數個次級處理電路進行一訊息排隊(message queuing);其中:該控制器從該主機裝置接收一第一主機指令,其中該第一主機指令指出在一第一邏輯位址存取第一資料,且該第一主機指令是該複數個主機指令的其中之一;以及因應該第一主機指令,該控制器利用該處理電路透過該控制器的一控制邏輯電路向該非揮發性記憶體發送一第一操作指令,並觸發該複數個次級處理電路中的一第一組次級處理電路透過該多階段記憶體映射隊列來操作和互動,以供為該主機裝置存取該第一資料,其中該第一操作指令攜帶有與該第一邏輯位址相關聯的一第一物理位址,以供指出該非揮發性記憶體中的一儲存位置,且該處理電路以及該第一組次級處理電路共享該多階段記憶體映射隊列,並且使用該多階段記 憶體映射隊列作為分別與多個階段相關聯的多個鏈接(chained)訊息隊列,以供為包含該處理電路以及該第一組次級處理電路的一鏈接處理架構進行該訊息排隊。
- 一種用於一記憶體裝置的控制器,該記憶體裝置包含該控制器以及一非揮發性(non-volatile,NV)記憶體,該非揮發性記憶體包含至少一非揮發性記憶體元件,該控制器包含:一處理電路,用以依據來自一主機裝置的複數個主機指令來控制該控制器,以容許該主機裝置透過該控制器存取該非揮發性記憶體;複數個次級(secondary)處理電路,用以操作以作為複數個硬體引擎;以及一多階段記憶體映射隊列,耦接至該處理電路以及該複數個次級處理電路,用以為該處理電路以及該複數個次級處理電路進行一訊息排隊(message queuing);其中:該控制器從該主機裝置接收一第一主機指令,其中該第一主機指令指出在一第一邏輯位址存取第一資料,且該第一主機指令是該複數個主機指令的其中之一;以及因應該第一主機指令,該控制器利用該處理電路透過該控制器的一控制邏輯電路向該非揮發性記憶體發送一第一操作指令,並觸發該複數個次級處理電路中的一第一組次級處理電路透過該多階段記憶體映射隊列來操作和互動,以供為該主機裝置存取該第一資料,其中該第一操作指令攜帶有與該第一邏輯位址相關聯的一第一物理位址,以供指出該非揮發性 記憶體中的一儲存位置,且該處理電路以及該第一組次級處理電路共享該多階段記憶體映射隊列,並且使用該多階段記憶體映射隊列作為分別與多個階段相關聯的多個鏈接(chained)訊息隊列,以供為包含該處理電路以及該第一組次級處理電路的一鏈接處理架構進行該訊息排隊。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163155307P | 2021-03-02 | 2021-03-02 | |
US63/155,307 | 2021-03-02 | ||
US202163159950P | 2021-03-11 | 2021-03-11 | |
US63/159,950 | 2021-03-11 | ||
US17/515,570 | 2021-11-01 | ||
US17/515,570 US11630601B2 (en) | 2021-03-02 | 2021-11-01 | Memory and apparatus for performing access control with aid of multi-phase memory-mapped queue |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202236101A TW202236101A (zh) | 2022-09-16 |
TWI820603B true TWI820603B (zh) | 2023-11-01 |
Family
ID=83023496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111105744A TWI820603B (zh) | 2021-03-02 | 2022-02-17 | 藉助於多階段記憶體映射隊列以進行存取控制的方法、系統單晶片積體電路、記憶體裝置以及用於記憶體裝置的控制器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11630601B2 (zh) |
CN (1) | CN114995745A (zh) |
TW (1) | TWI820603B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11050427B1 (en) | 2020-09-23 | 2021-06-29 | Silicon Motion, Inc. | Fractional frequency divider and flash memory controller |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100262979A1 (en) * | 2009-04-08 | 2010-10-14 | Google Inc. | Circular command queues for communication between a host and a data storage device |
US20140195480A1 (en) * | 2010-12-13 | 2014-07-10 | Fusion-Io, Inc. | Persistent memory management |
US20150012687A1 (en) * | 2013-07-02 | 2015-01-08 | Phison Electronics Corp. | Method for managing commands in command queue, memory control circuit unit and memory storage apparatus |
TW202031021A (zh) * | 2018-11-26 | 2020-08-16 | 美商阿爾克斯股份有限公司 | 具有分解式網路元件的邏輯路由器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8271700B1 (en) * | 2007-11-23 | 2012-09-18 | Pmc-Sierra Us, Inc. | Logical address direct memory access with multiple concurrent physical ports and internal switching |
CN111133416A (zh) * | 2017-09-26 | 2020-05-08 | 英特尔公司 | 处理来自虚拟机命令的方法和装置 |
US10198299B1 (en) * | 2017-10-30 | 2019-02-05 | Vmware, Inc. | Enabling live migration of virtual machines with passthrough PCI devices |
US11392320B2 (en) * | 2018-07-03 | 2022-07-19 | Western Digital Technologies, Inc. | Quality of service based arbitrations optimized for enterprise solid state drives |
US11016829B2 (en) * | 2019-07-26 | 2021-05-25 | Toshiba Memory Corporation | Two-layered deterministic interprocess communication scheduler for input output determinism in solid state drives |
JP7408357B2 (ja) * | 2019-11-15 | 2024-01-05 | キオクシア株式会社 | メモリシステム及びその制御方法 |
-
2021
- 2021-11-01 US US17/515,570 patent/US11630601B2/en active Active
-
2022
- 2022-02-17 TW TW111105744A patent/TWI820603B/zh active
- 2022-03-02 CN CN202210204015.4A patent/CN114995745A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100262979A1 (en) * | 2009-04-08 | 2010-10-14 | Google Inc. | Circular command queues for communication between a host and a data storage device |
US20140195480A1 (en) * | 2010-12-13 | 2014-07-10 | Fusion-Io, Inc. | Persistent memory management |
US20150012687A1 (en) * | 2013-07-02 | 2015-01-08 | Phison Electronics Corp. | Method for managing commands in command queue, memory control circuit unit and memory storage apparatus |
TW202031021A (zh) * | 2018-11-26 | 2020-08-16 | 美商阿爾克斯股份有限公司 | 具有分解式網路元件的邏輯路由器 |
Also Published As
Publication number | Publication date |
---|---|
US11630601B2 (en) | 2023-04-18 |
TW202236101A (zh) | 2022-09-16 |
CN114995745A (zh) | 2022-09-02 |
US20220283732A1 (en) | 2022-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755527B2 (en) | Techniques for command validation for access to a storage device by a remote client | |
US20210294739A1 (en) | Controller and memory system | |
US10372338B2 (en) | Memory controller and data processing circuit with improved system efficiency | |
TWI820603B (zh) | 藉助於多階段記憶體映射隊列以進行存取控制的方法、系統單晶片積體電路、記憶體裝置以及用於記憶體裝置的控制器 | |
KR20220050407A (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
US10296256B2 (en) | Two stage command buffers to overlap IOMMU map and second tier memory reads | |
EP4018326A1 (en) | Three tiered hierarchical memory systems | |
TWI820951B (zh) | 藉助於預定命令來進行記憶體裝置的資料存取控制的方法及設備 | |
US11650843B2 (en) | Hierarchical memory systems | |
US20210208890A1 (en) | Extended memory operations | |
US9864548B2 (en) | Memory module, electronic device and method | |
US11099762B2 (en) | Multi host controller and semiconductor device including the same | |
TW201723848A (zh) | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI814655B (zh) | 記憶裝置、快閃記憶體控制器及其控制方法 | |
TWI820952B (zh) | 藉助於預定命令來進行記憶體裝置的資料存取控制的方法及設備 | |
US11609852B2 (en) | Hierarchical memory apparatus | |
US20220019542A1 (en) | Hierarchical memory systems | |
TWI720565B (zh) | 記憶體控制器與資料儲存裝置 | |
US20210056038A1 (en) | Hierarchical memory systems | |
EP4018325A1 (en) | Hierarchical memory apparatus |