TWI769040B - 記憶體控制器以及伺服器 - Google Patents
記憶體控制器以及伺服器 Download PDFInfo
- Publication number
- TWI769040B TWI769040B TW110128870A TW110128870A TWI769040B TW I769040 B TWI769040 B TW I769040B TW 110128870 A TW110128870 A TW 110128870A TW 110128870 A TW110128870 A TW 110128870A TW I769040 B TWI769040 B TW I769040B
- Authority
- TW
- Taiwan
- Prior art keywords
- commands
- flash memory
- command
- flash
- arbiter
- Prior art date
Links
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
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Read Only Memory (AREA)
- Bus Control (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Hardware Redundancy (AREA)
Abstract
本發明揭露一種記憶體控制器,該記憶體控制器係用來存取複數個通道,其中每一個通道包含複數個快閃記憶體晶片,以及該記憶體控制器包含一快閃轉換層以及複數個控制模組。快閃轉換層係用來產生具有複數個通道之其一之相對應實體位址的命令,複數個控制模組分別連接於複數個通道,以及每一個控制模組獨立地運作以自快閃轉換層接收具有相對應之實體位址的相對應之命令,以存取在相對應之通道中的快閃記憶體晶片。
Description
本發明係關於記憶體控制,且尤指用於全快閃陣列(all flash array, AFA)伺服器的控制方法與控制電路。
快閃記憶體已被廣泛應用於各種資料儲存裝置諸如固態硬碟(solid state drive, SSD),並且名為全快閃陣列伺服器的一伺服器可能僅包含固態硬碟,而不是傳統硬碟(spinning-disk drive)。在全快閃陣列伺服器中,每一個固態硬碟包含多個快閃記憶體晶片,並且每一個快閃記憶體晶片在讀取/寫入操作的期間需要一固定的繁忙時間(busy time),也就是說,快閃記憶體晶片不可在該繁忙時間的期間進行另一讀取或寫入操作,因此,如果全快閃陣列伺服器需要在一短時間於固態硬碟上進行大量的讀取/寫入操作的話,由於上述繁忙時間的影響,該讀取/寫入操作會被延誤。此外,伴隨著快速外部組件互連(Peripheral Component Interconnect Express, PCIe)版本的更新,來自主機裝置之傳輸速率的需求也越來越高,以及來自主機裝置的讀取/寫入命令的數量也可能顯著增加,因此,如何有效地存取固態硬碟是一個重要的議題。
因此,本發明的目的之一在於揭露一種在全快閃陣列伺服器中的記憶體控制器的新架構,以解決上述問題。
根據本發明之一實施例,揭露了一種用來存取複數個通道的記憶體控制器,其中每一個通道包含有複數個快閃記憶體晶片,並且記憶體控制器包含有一快閃轉換層以及複數個控制模組。快閃轉換層係用來產生具有該複數個通道的至少一通道的相對應的實體位址之命令,複數個控制模組係分別連接至該複數個通道,並且該複數個控制模組的每一個控制模組獨立地運作以自該快閃轉換層接收具有一相對應的實體位址之一相對應的命令,以存取在一相對應的通道中的快閃記憶體晶片,此外,每一個控制模組包含有複數個命令佇列以及一仲裁器以及直接記憶體存取引擎,該複數個命令佇列分別對應於該複數個快閃記憶體晶片,並且每一個命令佇列僅儲存具有一相對應的快閃記憶體晶片之實體位址的命令,該仲裁器以及直接記憶體存取引擎係耦接於該複數個命令佇列,用來掃描該複數個快閃記憶體晶片以判斷該複數個快閃記憶體晶片的狀態,以決定是否執行儲存於該複數個命令佇列中的命令。
根據本發明之另一實施例,揭露了一種包含有一網路模組、一處理器、複數個通道以及一記憶體控制器的伺服器。該網路模組係用來透過網路連接客戶端裝置,該處理器係用來控制該伺服器的操作,每一個通道包含有複數個快閃記憶體晶片,該記憶體控制器係耦接於該處理器以及該複數個通道之間,並且該記憶體控制器包含有一快閃轉換層以及複數個控制模組,該快閃轉換層係用來產生具有該複數個通道的至少一通道的相對應的實體位址之命令,該複數個控制模組係分別連接至該複數個通道,並且每一個控制模組獨立地運作以自該快閃轉換層接收具有一相對應的實體位址之一相對應的命令,以存取在一相對應的通道中的快閃記憶體晶片,此外,每一個控制模組包含有複數個命令佇列以及一仲裁器以及直接記憶體存取引擎,該複數個命令佇列分別對應於該複數個快閃記憶體晶片,並且每一個命令佇列僅儲存具有一相對應的快閃記憶體晶片之實體位址的命令,該仲裁器以及直接記憶體存取引擎係耦接於該複數個命令佇列,並且用來掃描該複數個快閃記憶體晶片以判斷該複數個快閃記憶體晶片的狀態,以決定是否執行儲存於該複數個命令佇列中的命令。
以下實施方式和發明申請專利範圍中使用某些術語來指代特定系統組件,如本領域技術人員可以理解的,製造商可以用不同的名稱來指代一組件,本文件無意區分名稱不同但功能相同的組件,在以下實施方式以及發明申請專利範圍中,術語“包含有”以開放式方式使用,因此應解釋為“包含但不限於…”,術語“耦接”旨在表示間接或直接的電連接,因此,如果一第一裝置耦接於一第二裝置,則該連接可以是通過一直接電連接,或通過經由其他裝置和連接的一間接電連接。
第1圖為根據本發明一實施例之伺服器100的示意圖,其中伺服器100係為一全快閃陣列伺服器。如第1圖所示,伺服器100包含有網路模組112、處理器114、動態隨機存取記憶體(dynamic random access memory, DRAM)116(為簡便起見,標記為“DRAM”)、記憶體控制器120以及複數個通道130_1~130_N,其中‘N’可以為任一大於或等於二的正整數。記憶體控制器120包含有介面電路121、快閃轉換層(flash translation layer, FTL)122以及複數個控制模組126_1~126_N,其中快閃轉換層122包含有主要中央處理單元(central processing unit, CPU)123(為簡便起見,標記為“主要CPU”)以及靜態隨機存取記憶體(static random access memory, SRAM)125(為簡便起見,標記為“SRAM”)。複數個通道130_1~130_N係分別連結於複數個控制模組126_1~126_N,並且每一個通道包含有複數個快閃記憶體晶片,舉例來說,通道130_1包含有複數個快閃記憶體晶片131_1~131_A,通道130_2包含有複數個快閃記憶體晶片132_1~132_B,通道130_N包含有複數個快閃記憶體晶片138_1~138_C,此外,複數個通道130_1~130_N的每一個通道可被視為一可插拔固態硬碟。
第2圖繪示根據本發明一實施例之快閃記憶體晶片200的示意圖,其中快閃記憶體晶片200可用來實作每一個快閃記憶體晶片131_1~131_A、132_1~132_B以及138_1~138_C。如第2圖所示,快閃記憶體晶片200包含有複數個區塊(block) B_1~B_K,其中一區塊係為快閃記憶體晶片200的最小抹除(erase)單元,並且複數個區塊B_1~B_K的每一個區塊可具有一單階細胞(single-level cell, SLC)陣列、一多階細胞(multiple-level cell, MLC)陣列、一三階細胞(triple-level cell, TLC)陣列或一四階細胞(quad-level cell, QLC)陣列,每一個區塊包含有複數個頁面(page)諸如P1~P256,其中一個頁面係為快閃記憶體晶片200的最小寫入單元。此外,在快閃記憶體晶片200中的複數個區塊B_1~B_K可被區分成為平行操作的多個平面(plane)。
伺服器100係用來通過網際網路或乙太網路來連結至少一個客戶端裝置,網路模組112係作為一介面以自客戶端裝置接收資料並且將資料傳送至客戶端裝置,處理器114係用來控制伺服器100的操作,舉例來說,當處理器114自客戶端裝置接收一讀取命令時,處理器114參考該讀取命令中的一邏輯位址以傳送一要求至記憶體控制器120,以要求讀取對應於該讀取命令之該邏輯位址的資料,並且處理器114傳送自複數個通道130_1~130_N之至少一個通道所讀取的資料至客戶端裝置。此外,當處理器114自客戶端裝置接收一寫入命令以及相對應的資料時,該資料可被暫存於動態隨機存取記憶體116,並且處理器114可在該資料上進行壓縮以及/或重複資料刪除(de-duplication)操作,處理器114再將該資料通過記憶體控制器120儲存至複數個通道130_1~130_N的至少一個通道。
記憶體控制器120可藉由一單一晶片來實作,並且該單一晶片係用來進行伺服器100的處理器114以及複數個通道130_1~130_N之間的操作,針對記憶體控制器120中的元件,介面電路121係連結至處理器114,以及介面電路121可符合非揮發性記憶體儲存裝置(Non-Volatile Memory Express, NVMe)標準以及快速外部組件互連標準。快閃轉換層122係用來執行操作諸如基礎映射方案、垃圾收集(garbage collection)、耗損平均 (wear-leveling)機制、區塊管理、以及有關複數個通道130_1~130_N之管理的任一其它操作,具體來說,邏輯位址至實體位址映射表(之後簡稱為L2P表)及/或實體位址至邏輯位址映射表(之後簡稱為P2L表)係被儲存於靜態隨機存取記憶體125或動態隨機存取記憶體116,並且主要中央處理單元123可參考L2P或P2L表來在讀取命令中的邏輯位址上進行映射方案,以取得複數個通道130_1~130_N的實體位址,以自複數個通道130_1~130_N取得資料,靜態隨機存取記憶體125或動態隨機存取記憶體116另可為垃圾回收、耗損平均機制及/或區塊管理來儲存健康相關(health-related)資訊,其中健康相關資訊可包含紀錄每一個區塊之讀取次數的讀取計數表、記錄每一個區塊的抹除次數的抹除計數表、紀錄在每一個區塊中有效頁面之數量的有效頁面表、以及記錄每一個區塊之寫入時間的資料保持(data retention)表。
如本發明之背景說明中所描述,伴隨著快速外部組件互連版本的更新,來自主機裝置之傳輸速率的需求也越來越高,以及來自主機裝置的讀取/寫入命令的數量也可能顯著增加,因此,記憶體控制器120分別設計對應於複數個通道130_1~130_N的複數個控制模組126_1~126_N,並且此內部平行性(internal parallelism)使記憶體控制器120能夠平行處理多個傳入的讀取/寫入命令以及達到更高的頻寬。具體來說,主要中央處理單元123可具有一仲裁器(arbiter)其係用來傳送讀取/寫入命令以及複數個通道130_1~130_N的相關實體位址至複數個控制模組126_1~126_N,並且複數個控制模組126_1~126_N的每一個控制模組獨立地運作以及傳送回應至主要中央處理單元123,舉例來說,當主要中央處理單元123分別傳送一第一讀取命令以及一第二讀取命令至控制模組126_1以及控制模組126_2時,控制模組126_1參考該第一讀取命令的實體位址以至通道130_1取得資料並且將資料傳送至主要中央處理單元123,以及控制模組126_2參考該第二讀取命令的實體位址以至通道130_2取得資料並且將資料傳送至主要中央處理單元123。要注意的是,複數個控制模組126_1~126_N接收到的實體位址可指示通道的一晶片編號(chip number)、一區塊編號(block number)以及一頁面編號(page number),也就是說,複數個控制模組126_1~126_N不需要進行任何位址映射機制。
第3圖繪示根據本發明一實施例之控制模組300的示意圖,其中控制模組300可用來實作第1圖所示的複數個控制模組126_1~126_N的每一個控制模組,如第3圖所示,控制模組300包含有命令處理器310、中央處理單元320(為簡便起見,標記為“CPU”)、緩衝器330、編解碼器(包含有一編碼器以及一解碼器)340以及介面電路350。命令處理器310係用來自快閃轉換層122接收命令以及通知中央處理單元320以進行相對應的操作,具體來說,如果命令處理器310自快閃轉換層122接收到具有相對應的實體位址的一讀取命令,中央處理單元320可控制介面電路350以要求儲存於複數個通道130_1~130_N之至少一個通道之實體位址的資料;以及在介面電路350自複數個通道130_1~130_N的至少一個通道取得原始資料(raw data)之後,編解碼器340對該原始資料進行解碼以產生解碼資料(decoded data),並且中央處理單元320通過命令處理器310將該解碼資料傳送至快閃轉換層122。如果命令處理器310自快閃轉換層122接收到具有相對應的實體位址以及相對應的資料的一寫入命令,編解碼器340對該資料進行編碼以產生編碼資料(encoded data),中央處理單元320可控制介面電路350以將該編碼資料寫入至該複數個通道130_1~130_N的至少一個通道的實體位址;以及在該編碼資料成功地被寫入至該複數個通道130_1~130_N的至少一個通道之後,中央處理單元320或命令處理器310通知快閃轉換層122該寫入命令已經完成。如果命令處理器310自快閃轉換層122接收到具有相對應的實體位址(例如晶片編號以及區塊編號)的一抹除命令,中央處理單元320可控制介面電路350以通知複數個通道130_1~130_N的至少一個通道來抹除具有該實體位址的區塊;以及在該區塊成功地被抹除之後,中央處理單元320或命令處理器310通知快閃轉換層122該抹除命令已經完成。
在一實施例中,快閃轉換層122的主要中央處理單元123係用來進行事件驅動(event-driven)操作,以及在控制模組300中的中央處理單元320係用來進行時序驅動(timing-driven)操作。詳細地來說,因為快閃轉換層122具有關於區塊之健康的許多表,諸如讀取計數表、抹除計數表、有效頁面表以及資料保持表,主要中央處理單元123可參考這些表以判斷可能有著品質問題的特定區塊,舉例來說,主要中央處理單元123可判斷讀取次數高於一門檻值(threshold value)的區塊可能有讀取干擾(read disturbance)問題,主要中央處理單元123可判斷有效頁面個數低於一門檻值的區塊需要被進行垃圾回收操作,主要中央處理單元123可判斷寫入時間早於一特定時間的區塊可能有資料保持問題;然後主要中央處理單元123可對這些區塊進行垃圾回收操作或耗損平均操作以改善資料品質。此外,主要中央處理單元123可藉由將讀取命令(垃圾回收讀取命令)以及寫入命令(垃圾回收寫入命令)傳送至複數個控制模組126_1~126_N的至少一個控制模組來執行垃圾回收操作或耗損平均操作,並且複數個控制模組126_1~126_N執行該些讀取/寫入命令。
控制模組300可週期性地掃描在相對應的通道中的區塊,以判斷任一個區塊是否有品質問題,其中該週期可以是幾分鐘或任一其它適當時間。詳細地來說,控制模組300可讀取一區塊中的某些頁面以判斷該區塊是否有著不良品質,其中編解碼器340可對自頁面讀取的資料進行解碼,以取得解碼資訊諸如一錯誤位元數或解碼時間,並且中央處理單元320藉由該錯誤位元數係高於一門檻或該解碼時間係長於預定時間來判斷該區塊有著不良品質。此外,在控制模組300藉由週期性地掃描區塊來決定健康資訊之後,中央處理單元320可主動地處理有著較差品質的這些區塊,或者中央處理單元320可將該健康資訊傳送至快閃轉換層122。具體來說,如果控制模組300判斷相對應的通道的三個區塊有較差品質,中央處理單元320可主動地分別將這三個區塊的資料移動至空白區塊,而不通知快閃轉換層122;以及在成功地移動該資料之後,中央處理單元320在舊區塊(例如上述有著較糟品質的三個區塊)以及新區塊(例如上述用來儲存來自舊區塊的資料的空白區塊)中創建資料的位址映射表,並且該位址映射表係被傳送至快閃轉換層122以更新儲存於靜態隨機存取記憶體125或動態隨機存取記憶體116的P2L表或L2P表;以及僅當主要中央處理單元123成功地藉由控制模組300所產生的位址映射表來更新P2L表或L2P表時,該些舊區塊才允許被抹除。在另一範例中,如果控制模組300判斷相對應的通道的三個區塊有較糟品質,中央處理單元320可直接地將健康資訊傳送至快閃轉換層122,為主要中央處理單元123以創建紀錄有著較差品質之區塊的一表;以及主要中央處理單元123可以優先處理在該些區塊上的垃圾回收操作。
鑑於以上所述,藉由設計在記憶體控制器120中的複數個控制模組126_1~126_N以分別處理複數個通道130_1~130_N的存取,記憶體控制器120可以有效地處理大量的讀取/寫入命令,此外,藉由配置主要中央處理單元123以執行事件驅動操作,以及配置複數個控制模組126_1~126_N以執行時序驅動操作,主要中央處理單元123可以在執行上變得更有效率並且在設計上變得更簡單。
另外,複數個控制模組126_1~126_N的每一個控制模組可能在一短時間內自主機(例如伺服器100的處理器114)接收許多命令,從而導致內部緩衝器擁塞,因此,本發明另揭露了第4圖所示的另一實施例以克服命令擁塞問題。第4圖繪示根據本發明一實施例之位在複數個控制模組126_1~126_N之一控制模組中的佇列(queue)以及緩衝器之配置(configuration)的示意圖,其中有著第3圖所示結構的控制模組126_1係作為一範例。如第4圖所示,控制模組126_1包含有第一緩衝器410、第二緩衝器420、包含有複數個命令佇列431_1~431_A的緩衝器430、以及仲裁器以及直接記憶體存取(direct memory access, DMA)引擎440,其中仲裁器以及直接記憶體存取引擎440係耦接於複數個快閃記憶體晶片131_1~131_A。在此實施例中,第一緩衝器410以及第二緩衝器420可位於第3圖所示的命令處理器310或緩衝器330內,複數個命令佇列431_1~431_A以及仲裁器以及直接記憶體存取引擎440可位於介面電路350內。
第一緩衝器410以及第二緩衝器420係用來接收自快閃轉換層122的命令以及自生命令(self-generated command)(例如中央處理單元320所產生的讀取/寫入命令,以進行時序驅動操作),在一實施例中,第一緩衝器410係用來儲存寫入命令,以及第二緩衝器420係用來儲存讀取命令。在另一實施例中,第一緩衝器410係用來儲存有著高優先度(priority)的命令,以及第二緩衝器420係用來儲存有著較低優先度的命令,其中有著較高優先度的命令可包含來自主機的讀取命令(例如自處理器114的讀取命令),以及有著較低優先度的命令可包含來自主機的寫入命令、快閃轉換層122所產生的寫入命令(例如有關垃圾回收操作的寫入命令)、快閃轉換層122所產生的讀取命令(例如有關垃圾回收操作的讀取命令)及/或自生命令(例如中央處理器320所產生的讀取/寫入命令,以進行時序驅動操作)。
複數個命令佇列431_1~431_A分別對應於通道130_1的複數個平面,在此實施例中,假設複數個快閃記憶體晶片131_1~131_A的每一個快閃記憶體晶片僅具有一平面,因此複數個命令佇列431_1~431_A分別對應於複數個快閃記憶體晶片131_1~131_A,也就是說,命令佇列430_1僅儲存具有快閃記憶體晶片131_1之實體位址的命令,命令佇列430_2僅儲存具有快閃記憶體晶片131_2之實體位址的命令,…,以及命令佇列430_A僅儲存具有快閃記憶體晶片131_A之實體位址的命令。因此,命令處理器310或中央處理單元320參考在第一緩衝器410以及第二緩衝器420中的命令之實體位址,以將該命令傳送至相對應的命令佇列,舉例來說,如果第一緩衝器410有著具有快閃記憶體晶片131_2之實體位址的一寫入命令,則命令處理器310或中央處理單元320會將該寫入命令移動至命令佇列431_2;以及如果第一緩衝器420有著具有快閃記憶體晶片131_A之實體位址的一讀取命令,則命令處理器310或中央處理單元320會將該讀取命令移動至命令佇列431_A。
在一實施例中,命令處理器310或中央處理單元320可根據第一緩衝器410以及第二緩衝器420的配置來決定命令儲存至命令佇列的順序,舉例來說,如果第一緩衝器410係用來儲存有著較高優先度的命令,以及第二緩衝器420係用來儲存有著較低優先度的命令,則即使第二緩衝器410有著更多命令或第二緩衝器420中的命令停留時間比第一緩衝器410中的命令停留時間長,命令處理器310或中央處理單元320可優先將第一緩衝器410中的命令移動至複數個命令佇列431_1~431_A。
仲裁器以及直接記憶體存取引擎440係用來不停掃描複數個快閃記憶體晶片131_1~131_A,以判斷複數個快閃記憶體晶片131_1~131_A的狀態,以及一旦仲裁器以及直接記憶體存取引擎440判斷一快閃記憶體晶片不忙碌且能夠被存取,則仲裁器以及直接記憶體存取引擎440立即執行在相對應之命令佇列中的命令,具體來說,每當快閃記憶體晶片接收一命令時,快閃記憶體晶片需要一段繁忙時間(busy time)以執行該命令,其中該繁忙時間可為針對讀取命令之一固定時間(諸如60微秒或80微秒),或該繁忙時間可為針對寫入命令之另一固定時間。因此,仲裁器以及直接記憶體存取引擎440週期性地掃描複數個快閃記憶體晶片131_1~131_A(例如循環掃描(round-robin scan)),以判斷哪一個快閃記憶體能夠被存取,其中仲裁器以及直接記憶體存取引擎440可偵測每一個快閃記憶體晶片的一引腳(pin),以及該引腳具有能夠指示該快閃記憶體晶片是否忙碌的一訊號。舉例來說,如果仲裁器以及直接記憶體存取引擎440偵測快閃記憶體晶片131_1為忙碌,則仲裁器以及直接記憶體存取引擎440立即偵測下一個快閃記憶體晶片131_2;以及如果仲裁器以及直接記憶體存取引擎440偵測快閃記憶體晶片131_2為不忙碌,則仲裁器以及直接記憶體存取引擎440執行在命令佇列431_2中的命令以存取快閃記憶體晶片131_2,其中如果寫入命令被執行,則仲裁器以及直接記憶體存取引擎440可直接將資料寫入至快閃記憶體晶片131_2,以及如果讀取命令被執行,則仲裁器以及直接記憶體存取引擎440可直接自快閃記憶體晶片131_2讀取資料;再者,如果仲裁器以及直接記憶體存取引擎440偵測下一個快閃記憶體晶片為忙碌,則不考慮快閃記憶體晶片131_2的處理。
鑑於以上所述,由於在控制模組123_1/300中的複數個命令佇列431_1~431_A的每一個命令佇列對應於一專用(dedicated)快閃記憶體晶片或在一快閃記憶體晶片中的一專用平面,即使控制模組126_1/300在一短時間內接收許多命令,仲裁器以及直接記憶體存取引擎440可利用此內部平行性以有效地存取複數個快閃記憶體晶片131_1~131_A。
在仲裁器以及直接記憶體存取引擎440的掃描操作中,仲裁器以及直接記憶體存取引擎440會不斷地依序偵測複數個快閃記憶體晶片131_1~131_A,也就是說,每一個快閃記憶體晶片在一掃描週期中僅會被偵測一次。在另一實施例中,仲裁器以及直接記憶體存取引擎440可在掃描週期中為一特定快閃記憶體晶片進行更多次偵測操作,舉例來說,如果命令佇列431_2有著具有極高優先度的讀取命令,仲裁器以及直接記憶體存取引擎440會增加快閃記憶體晶片131_2的偵測率(亦即快閃記憶體晶片131_2的偵測率高於其它快閃記憶體晶片的偵測率),或者仲裁器以及直接記憶體存取引擎440可僅偵測快閃記憶體晶片131_2,直到具有極高優先度的讀取命令被執行。
總結來說,在本發明的記憶體控制器中,藉由設計分別對應於複數個通道的複數個控制模組,以及藉由設計分別對應於通道之複數個平面/晶片的複數個命令佇列,記憶體控制器可有效地在一短時間內處理許多命令,以克服在先前技術中的命令擁塞問題。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:伺服器
112:網路模組
114:處理器
116:靜態隨機存取記憶體
120:記憶體控制器
121,350:介面電路
122:快閃轉換層
123:主要中央處理單元
125:靜態隨機存取記憶體
126_1~126_N,300:控制模組
130_1~130_N:通道
131_1~131_A,132_1~132_B,138_1~138_C,200:快閃記憶體晶片
B_1~B_K:區塊
P1~P256:頁面
310:命令處理器
320:中央處理單元
330,430:緩衝器
340:編解碼器
410:第一緩衝器
420:第二緩衝器
431_1~431_A:命令佇列
440:仲裁器以及直接記憶體存取引擎
第1圖為根據本發明一實施例之伺服器的示意圖。
第2圖繪示根據本發明一實施例之快閃記憶體晶片的示意圖。
第3圖繪示根據本發明一實施例之控制模組的示意圖。
第4圖繪示根據本發明一實施例之位在複數個控制模組之一控制模組中的佇列以及緩衝器之配置的示意圖。
100:伺服器
112:網路模組
114:處理器
116:靜態隨機存取記憶體
120:記憶體控制器
121:介面電路
122:快閃轉換層
123:主要中央處理單元
125:靜態隨機存取記憶體
126_1~126_N:控制模組
130_1~130_N:通道
131_1~131_A,132_1~132_B,138_1~138_C,200:快閃記憶體晶片
Claims (14)
- 一種記憶體控制器,用來存取複數個通道,其中該複數個通道的每一通道包含有複數個快閃記憶體晶片,以及該記憶體控制器包含有: 一快閃轉換層,用來產生具有該複數個通道的至少一通道的相對應的實體位址之命令;以及 複數個控制模組,耦接於該快閃轉換層,其中該複數個控制模組係分別連結至該複數個通道,以及該複數個控制模組的每一控制模組獨立地運作以自該快閃轉換層接收具有一相對應的實體位址之一相對應的命令,以存取在一相對應的通道中的快閃記憶體晶片; 其中該複數個控制模組的每一控制模組包含有: 複數個命令佇列,其中該複數個命令佇列分別對應於該複數個快閃記憶體晶片,以及該複數個命令佇列的每一命令佇列僅儲存具有一相對應的快閃記憶體晶片之實體位址的命令;以及 一仲裁器以及直接記憶體存取引擎,耦接於該複數個命令佇列,用來掃描該複數個快閃記憶體晶片以判斷該複數個快閃記憶體晶片的狀態,以決定是否執行儲存於該複數個命令佇列中的命令。
- 如申請專利範圍第1項所述之記憶體控制器,其中該仲裁器以及直接記憶體存取引擎藉由依序地偵測該複數個快閃記憶體晶片來掃描該複數個快閃記憶體晶片;以及如果該仲裁器以及直接記憶體存取引擎偵測到一特定快閃記憶體晶片不忙碌,該仲裁器以及直接記憶體存取引擎執行對應於該特定快閃記憶體晶片之一特定命令佇列中的命令,並且該仲裁器以及直接記憶體存取引擎立即地偵測下一個快閃記憶體晶片而不考慮該特定快閃記憶體晶片的處理。
- 如申請專利範圍第1項所述之記憶體控制器,其中該仲裁器以及直接記憶體存取引擎藉由偵測該複數個快閃記憶體晶片來掃描該複數個快閃記憶體晶片,以及該複數個快閃記憶體晶片的每一快閃記憶體晶片的一偵測率係根據儲存在一相對應的命令緩衝器中的命令之一優先度來決定。
- 如申請專利範圍第1項所述之記憶體控制器,其中該複數個控制模組的每一控制模組另包含有: 一第一緩衝器,用來儲存複數個第一命令; 一第二緩衝器,用來儲存複數個第二命令;以及 一中央處理器,耦接於該第一緩衝器以及該第二緩衝器,並且用來根據該些第一命令的實體位址以及該些第二命令的實體位址來將該些第一命令以及該些第二命令移動至該複數個命令佇列。
- 如申請專利範圍第4項所述之記憶體控制器,其中該些第一命令係為寫入命令,以及該些第二命令係為讀取命令。
- 如申請專利範圍第4項所述之記憶體控制器,其中該些第一命令具有比該些第二命令更高的優先度。
- 如申請專利範圍第6項所述之記憶體控制器,其中該些第一命令包含有來自位於該記憶體控制器之外部的一主機的讀取命令,以及該些第二命令包含有寫入命令或自生命令。
- 一種伺服器,包含有: 一網路模組,用來透過網路連接客戶端裝置; 一處理器,用來控制該伺服器的操作; 複數個通道,其中該複數個通道的每一通道包含有複數個快閃記憶體晶片;以及 一記憶體控制器,耦接於該處理器以及該複數個通道之間,其中該記憶體控制器包含有: 一快閃轉換層,用來產生具有該複數個通道的至少一通道的相對應的實體位址之命令;以及 複數個控制模組,耦接於該快閃轉換層,其中該複數個控制模組係分別連接至該複數個通道,並且該複數個控制模組的每一控制模組獨立地運作以自該快閃轉換層接收具有一相對應的實體位址之一相對應的命令,以存取在一相對應的通道中的快閃記憶體晶片; 其中該複數個控制模組的每一控制模組包含有: 複數個命令佇列,其中該複數個命令佇列分別對應於該複數個快閃記憶體晶片,以及該複數個命令佇列的每一命令佇列僅儲存具有一相對應的快閃記憶體晶片之實體位址的命令;以及 一仲裁器以及直接記憶體存取引擎,耦接於該複數個命令佇列,用來掃描該複數個快閃記憶體晶片以判斷該複數個快閃記憶體晶片的狀態,以決定是否執行儲存於該複數個命令佇列中的命令。
- 如申請專利範圍第8項所述之伺服器,其中該仲裁器以及直接記憶體存取引擎藉由依序地偵測該複數個快閃記憶體晶片來掃描該複數個快閃記憶體晶片;以及如果該仲裁器以及直接記憶體存取引擎偵測到一特定快閃記憶體晶片不忙碌,該仲裁器以及直接記憶體存取引擎執行對應於該特定快閃記憶體晶片之一特定命令佇列中的命令,並且該仲裁器以及直接記憶體存取引擎立即地偵測下一個快閃記憶體晶片而不考慮該特定快閃記憶體晶片的處理。
- 如申請專利範圍第8項所述之伺服器,其中該仲裁器以及直接記憶體存取引擎藉由偵測該複數個快閃記憶體晶片來掃描該複數個快閃記憶體晶片,以及該複數個快閃記憶體晶片的每一快閃記憶體晶片的一偵測率係根據儲存在一相對應的命令緩衝器中的命令之一優先度來決定。
- 如申請專利範圍第8項所述之伺服器,其中該複數個控制模組的每一控制模組另包含有: 一第一緩衝器,用來儲存複數個第一命令; 一第二緩衝器,用來儲存複數個第二命令;以及 一中央處理器,耦接於該第一緩衝器以及該第二緩衝器,並且用來根據該些第一命令的實體位址以及該些第二命令的實體位址來將該些第一命令以及該些第二命令移動至該複數個命令佇列。
- 如申請專利範圍第11項所述之伺服器,其中該些第一命令係為寫入命令,以及該些第二命令係為讀取命令。
- 如申請專利範圍第11項所述之伺服器,其中該些第一命令具有比該些第二命令更高的優先度。
- 如申請專利範圍第13項所述之伺服器,其中該些第一命令包含有來自位於該記憶體控制器之外部的一主機的讀取命令,以及該些第二命令包含有寫入命令或自生命令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/168,153 US11567699B2 (en) | 2021-02-04 | 2021-02-04 | Memory controller having a plurality of control modules and associated server |
US17/168,153 | 2021-02-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI769040B true TWI769040B (zh) | 2022-06-21 |
TW202232332A TW202232332A (zh) | 2022-08-16 |
Family
ID=82611429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110128870A TWI769040B (zh) | 2021-02-04 | 2021-08-05 | 記憶體控制器以及伺服器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11567699B2 (zh) |
CN (1) | CN114860621A (zh) |
TW (1) | TWI769040B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398745A (zh) * | 2007-09-29 | 2009-04-01 | 群联电子股份有限公司 | 并行数据存取架构的固态盘存储系统与固态盘控制器 |
TW201101327A (en) * | 2009-06-25 | 2011-01-01 | Mediatek Inc | Flash memory device, memory device and a method for controlling a flash memory device |
TWI376603B (en) * | 2007-09-21 | 2012-11-11 | Phison Electronics Corp | Solid state disk storage system with a parallel accessing architecture and a solid state disk controller |
US20160077911A1 (en) * | 2014-09-15 | 2016-03-17 | Sandisk Technologies Inc. | Methods, systems, and computer readable media for address and data integrity checking in flash memory operations |
US20170228167A1 (en) * | 2016-02-10 | 2017-08-10 | Sandisk Technologies Inc. | Memory System and Method for Simplifying Scheduling on a Flash Interface Module and Reducing Latencies in a Multi-Die Environment |
US10445229B1 (en) * | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9471484B2 (en) * | 2012-09-19 | 2016-10-18 | Novachips Canada Inc. | Flash memory controller having dual mode pin-out |
US20210182190A1 (en) * | 2016-07-22 | 2021-06-17 | Pure Storage, Inc. | Intelligent die aware storage device scheduler |
US10540116B2 (en) * | 2017-02-16 | 2020-01-21 | Toshiba Memory Corporation | Method of scheduling requests to banks in a flash controller |
US11029859B2 (en) * | 2017-08-23 | 2021-06-08 | Toshiba Memory Corporation | Credit based command scheduling |
JP7013294B2 (ja) * | 2018-03-19 | 2022-01-31 | キオクシア株式会社 | メモリシステム |
-
2021
- 2021-02-04 US US17/168,153 patent/US11567699B2/en active Active
- 2021-08-05 TW TW110128870A patent/TWI769040B/zh active
- 2021-08-13 CN CN202110929405.3A patent/CN114860621A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI376603B (en) * | 2007-09-21 | 2012-11-11 | Phison Electronics Corp | Solid state disk storage system with a parallel accessing architecture and a solid state disk controller |
CN101398745A (zh) * | 2007-09-29 | 2009-04-01 | 群联电子股份有限公司 | 并行数据存取架构的固态盘存储系统与固态盘控制器 |
TW201101327A (en) * | 2009-06-25 | 2011-01-01 | Mediatek Inc | Flash memory device, memory device and a method for controlling a flash memory device |
US10445229B1 (en) * | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US20160077911A1 (en) * | 2014-09-15 | 2016-03-17 | Sandisk Technologies Inc. | Methods, systems, and computer readable media for address and data integrity checking in flash memory operations |
US20170228167A1 (en) * | 2016-02-10 | 2017-08-10 | Sandisk Technologies Inc. | Memory System and Method for Simplifying Scheduling on a Flash Interface Module and Reducing Latencies in a Multi-Die Environment |
Also Published As
Publication number | Publication date |
---|---|
US20220244888A1 (en) | 2022-08-04 |
CN114860621A (zh) | 2022-08-05 |
US11567699B2 (en) | 2023-01-31 |
TW202232332A (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11487434B2 (en) | Data storage device and method for adaptive command completion posting | |
US10466903B2 (en) | System and method for dynamic and adaptive interrupt coalescing | |
US10725835B2 (en) | System and method for speculative execution of commands using a controller memory buffer | |
JP6163532B2 (ja) | メモリシステムコントローラを含む装置 | |
US9514838B2 (en) | Apparatus including memory system controllers and related methods for memory management using block tables | |
US10250281B2 (en) | ECC decoder having adjustable parameters | |
KR101663437B1 (ko) | 메모리 블록들의 호스트-지원형 압축 | |
US10942676B2 (en) | Data storage device for determining a write mode, operation method thereof and storage system having the same | |
US10719262B2 (en) | Data storage apparatus, operating method thereof, and storage system having the same | |
TW202036567A (zh) | 記憶體系統 | |
CN114518843A (zh) | 存储控制器和包括存储控制器的存储设备 | |
TWI798701B (zh) | 記憶體控制器以及伺服器 | |
TWI769040B (zh) | 記憶體控制器以及伺服器 | |
TWI782659B (zh) | 記憶體控制器以及伺服器 | |
CN108536475B (zh) | 完整编程命令处理方法与装置 | |
TW202213331A (zh) | 用以管理快閃記憶體模組的方法、快閃記憶體控制器與電子裝置 | |
CN110096452B (zh) | 非易失随机访问存储器及其提供方法 | |
TW202405668A (zh) | 記憶體控制器和儲存裝置 | |
JP2023161884A (ja) | メモリシステム |