TW202143052A - 用於固態硬碟的緩衝區最佳化 - Google Patents
用於固態硬碟的緩衝區最佳化 Download PDFInfo
- Publication number
- TW202143052A TW202143052A TW110110854A TW110110854A TW202143052A TW 202143052 A TW202143052 A TW 202143052A TW 110110854 A TW110110854 A TW 110110854A TW 110110854 A TW110110854 A TW 110110854A TW 202143052 A TW202143052 A TW 202143052A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- buffer
- controller
- integrated circuit
- data unit
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in 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/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/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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0614—Improving the reliability of 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/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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System (AREA)
Abstract
一種具有積體電路的固態硬碟,所述固態硬碟包含:控制器,其組態以對於在積體電路之主機介面與積體電路之非揮發性半導體儲存裝置介面之間傳輸的資料,判定積體電路之內部緩衝區用以明顯地累積所傳輸之資料的可用性,以及(i)如果內部緩衝區可用,則在內部緩衝區中累積來自目標非揮發性半導體儲存裝置或主機的資料,或(ii)如果內部緩衝區不可用,則將來自目標非揮發性半導體儲存裝置或主機的資料單元累積在與控制器通訊地耦接的外部緩衝區中,其中外部緩衝區在積體電路的外部。然後控制器將累積的資料提供給相應的介面,以提供來自主機的讀取和寫入請求。
Description
本發明係有關於在處理來自主機的讀取和寫入請求時能夠減少DRAM頻寬使用、減少功率耗損及減少延遲的固態硬碟和方法。
與習知磁盤硬碟相比,固態硬碟(SSD)通常具有更快的效能、更緊湊、並且對振動或物理衝擊的敏感性更低。鑑於這些優勢,儘管SSD的每十億位元組儲存容量成本明顯高於磁碟機(magnetic disk drives),但是SSD正被越來越多的計算設備和其他消費型產品用來替代或補充磁碟機。
SSD利用包含非揮發性半導體儲存裝置(諸如,NAND裝置)的實體儲存單原來儲存資料。SSD中使用晶片上系統(SoC)控制器來管理主機與SSD之記憶體單元之間的資料傳輸。向SSD之實體記憶體單元寫入資料和從其中讀取資料通常涉及在各種記憶體單元之間混洗資料。在處理來自主機之讀取請求或寫入請求時,SSD通常使用緩衝區來處理SoC的資料傳輸。特別是環形緩衝區經常被使用,因為它們在SoC控制器和韌體功能中皆易於實施和管理。環形緩衝區經常佔用大量的記憶體,因此它們儲存在位於控制器外部的動態隨機存取記憶體(DRAM)中。
外部DRAM中的環形緩衝區需要佔用大量記憶體匯流排頻寬來應對高資料傳輸率。額外地,將大量的資料(通常涉及來自主機的讀取和寫入請求)傳輸至外部DRAM會增加SSD的功率耗損。因此,長期以來需要最佳化主機與SSD之間的資料傳輸來降低功率耗損並減少延遲。
根據本揭露的一實施例,提供了一種包含複數個非揮發性半導體儲存裝置的固態硬碟(SSD)。所述SSD亦包含積體電路,所述積體電路包含組態以將積體電路通訊地耦接至主機的主機介面、控制器、及組態以將積體電路通訊地耦接至複數個非揮發性半導體儲存裝置的裝置介面。額外地,所述SSD包含形成積體電路之一部分的內部緩衝區、及通訊地耦接控制器的外部緩衝區,外部緩衝區在積體電路的外部。主機介面經組態以從主機接收對資料的讀取請求,其中受讀取請求影響的資料被分割為複數個資料單元。裝置介面經組態以判定複數個非揮發性半導體儲存裝置中的一或多個目標非揮發性半導體儲存裝置,其中受讀取請求影響的資料被儲存。控制器經組態以針對複數個資料單元的每一資料單元判定用以暫時地累積資料單元之內部緩衝區的可用性,其中(i)如果內部緩衝區可用,則將來自一或多個目標非揮發性半導體儲存裝置的資料單元累積到內部緩衝區,以及(ii)如果內部緩衝區不可用,則將來自一或多個目標非揮發性半導體儲存裝置的資料單元累積到外部緩衝區。主機介面更組態以將對應於受讀取請求影響的讀取請求的資料之累積的資料傳輸至主機。
在一些實施方式中,控制器更組態以從內部緩衝區和外部緩衝區移除已經傳輸至主機的資料單元。在某些實施方式中,每一內部緩衝區和外部緩衝區包含複數個寫入緩衝區及複數個讀取緩衝區。在進一步實施方式中,每一讀取和寫入緩衝區包含環形緩衝區。在一些實施方式中,讀取緩衝區比寫入緩衝區多。在某些實施方式中,SSD進一步包含耦接至記憶體控制器的可編程韌體組態電路,其經組態以在內部緩衝區中設置數個讀取緩衝區及數個寫入緩衝區。
在進一步實施方式中,內部緩衝區駐留在與控制器相關聯的區域記憶體中。在一些實施方式中,區域記憶體包含靜態隨機存取記憶體(SRAM)。在某些實施方式中,外部緩衝區駐留在積體電路外部的記憶體中。在進一步實施方式中,外部記憶體包含動態隨機存取記憶體(DRAM)。在一些實施方式中,每一非揮發性半導體儲存裝置包含NAND晶片。在某些實施方式中,控制器包含晶片上系統(SoC)實施方式。
根據本揭露的另一實施例,提供了一種包含複數個非揮發性半導體儲存裝置的SSD。所述SSD亦包含積體電路,所述積體電路包含組態以將積體電路通訊地耦接至主機的主機介面、控制器、及組態以將積體電路通訊地耦接至複數個非揮發性半導體儲存裝置的裝置介面。額外地,所述SSD包含形成積體電路之一部分的內部緩衝區、及通訊地耦接控制器的外部緩衝區,外部緩衝區在積體電路的外部。主機介面經組態以從主機及其中資料將被寫入之複數個非揮發性半導體儲存裝置的目標非揮發性半導體儲存裝置接收包含資料的寫入請求,其中受寫入請求影響的資料被分割為複數個資料單元。控制器經組態以針對複數個資料單元的每一資料單元判定用以暫時地累積資料單元之內部緩衝區的可用性,其中(i)如果內部緩衝區可用,則將來自主機的資料單元累積到內部緩衝區,以及(ii)如果內部緩衝區不可用,則將來主機的資料單元累積到外部緩衝區。裝置介面經組態以判定目標非揮發性半導體儲存裝置何時準備好被寫入,並在準備好時將相應於受寫入請求影響之資料的累積的資料傳輸至目標非揮發性半導體儲存裝置。
在某些實施方式中,控制器經組態以從內部緩衝區中移除已經傳輸至目標非揮發性半導體儲存裝置的資料單元。在一些實施方式中,控制器經組態以將累積在內部緩衝區中之資料單元的備份副本儲存在外部緩衝區中。進一步實施方式,一旦累積的資料單元被編程至目標非揮發性半導體儲存裝置中,則移除外部緩衝區中之資料單元的備份副本。在某些實施方式中,控制器經組態以在內部緩衝區和外部緩衝區暫時地累積所有的資料單元之後發送訊息至主機,以指示寫入請求的完成。
在一些實施方式中,裝置介面經組態以當目標儲存裝置準備就緒時將累積的資料單元傳輸至目標非揮發性半導體儲存裝置。在進一步實施方式中,裝置介面經組態以編程每一非揮發性半導體儲存裝置,以便在傳輸累積的資料單元之前準備好它們接收資料單元。在某些實施方式中,控制器經組態以在至少一個非揮發性半導體儲存裝置中發生斷電或程式錯誤的情況下,將外部緩衝區中的資料單元而不是內部緩衝區中累積的資料傳輸至目標非揮發性半導體儲存裝置。
在一些實施方式中,每一內部緩衝區和外部緩衝區包含複數個寫入緩衝區及複數個讀取緩衝區。在某些實施方式中,每一讀取和寫入緩衝區包含環形緩衝區。在進一步實施方式中,讀取緩衝區比寫入緩衝區多。在一些實施方式中,SSD進一步包含耦接至記憶體控制器的可編程韌體組態電路,其經組態以在內部緩衝區中設置數個讀取緩衝區及數個寫入緩衝區。
在進一步實施方式中,內部緩衝區駐留在與控制器相關聯的區域記憶體中。在進一步實施方式中,區域記憶體包含靜態隨機存取記憶體(SRAM)。在一些實施方式中,外部緩衝區駐留在積體電路外部的記憶體中。在某些實施方式中,外部記憶體包含動態隨機存取記憶體(DRAM)。在進一步實施方式中,每一非揮發性半導體儲存裝置包含NAND晶片。在一些實施方式中,控制器包含晶片上系統(SoC)實施方式。
根據本揭露的另一實施例,提供了一種由積體電路之控制器執行的方法。所述方法包含從連接至主機之主機介面接收資料的讀取請求,其中受讀取請求影響的資料被分割成複數個資料單元。所述方法亦包含從連接到包含在SSD中的複數個非揮發性半導體儲存裝置的裝置介面接收複數個非揮發性半導體儲存裝置中的一或多個目標非揮發性半導體儲存裝置,其中受讀取請求影響的資料被儲存。所述方法進一步包含為複數個資料單元之每一資料針判定控制器之內部緩衝區用以暫時地累積資料單元的可用性,其中內部緩衝區和控制器形成積體電路的一部分,並且其中(i)如果內部緩衝區可用,則將來自一或多個目標非揮發性半導體儲存裝置的資料單元累積到內部緩衝區,以及(ii)如果內部緩衝區不可用,則將來自一或多個目標非揮發性半導體儲存裝置的資料單元累積到與控制器耦接的外部緩衝區,其中外部緩衝區在積體電路的外部。所述方法亦包含將相應於受讀取請求影響之累積的資料傳輸至主機介面用以傳送至主機。
在一些實施方式中,所述方法進一步包含藉由該控制器從該內部緩衝區和該外部緩衝區移除該等累積的資料單元。在某些實施方式中,所述方法亦包含由耦接至控制器之韌體組態電路編程在內部緩衝區中的數個讀取緩衝區及數個寫入緩衝區,其中較佳地,讀取緩衝區的數量超過寫入緩衝區的數量。
根據本揭露的另一實施例,提供了一種由積體電路之控制器執行的方法。所述方法包含從連接至主機的主機介面接收寫入請求,所述寫入請求包含來自主機及在其中資料將被寫入之SSD中包含的複數個非揮發性半導體儲存裝置的目標非揮發性半導體儲存裝置的資料,其中受寫入請求影響的資料被分割為複數個資料單元。所述方法進一步包含為每一資料針判定控制器之內部緩衝區用以暫時地累積資料單元的可用性,其中內部緩衝區和控制器形成積體電路的一部分,並且其中(i)如果內部緩衝區可用,則將來自主機的資料單元累積到內部緩衝區,以及(ii)如果內部緩衝區不可用,則將來自主機的資料單元累積到與控制器耦接的外部緩衝區,其中外部緩衝區在積體電路的外部。所述方法亦包含將累積在內部緩衝區中之資料單元的備份副本儲存在外部緩衝區中。
在一些實施方式中,所述方法進一步包含藉由該控制器從該內部緩衝區和該外部緩衝區移除該等累積的資料單元。在某些實施方式中,所述方法亦包含一旦資料單元被編程至目標非揮發性半導體儲存裝置中,則藉由控制器移除在外部緩衝區中之資料單元的備份副本。在進一步實施方式中,所述方法包含在內部緩衝區和外部緩衝區暫時地累積所有的資料單元之後由控制器發送訊息至主機,以指示寫入請求的完成。
在某些實施方式中,所述方法進一步包含在至少一個非揮發性半導體儲存裝置中發生斷電或程式錯誤的情況下,由控制器將外部緩衝區中的資料單元而不是內部緩衝區中累積的資料傳輸至目標非揮發性半導體儲存裝置。在進一步實施方式中,所述方法進一步包含由耦接至控制器之韌體組態電路編程在內部緩衝區中的數個讀取緩衝區及數個寫入緩衝區,其中較佳地,讀取緩衝區的數量超過寫入緩衝區的數量。
根據本揭露之另一實施例,提供一種非暫態電腦可讀取媒體,其儲存當由處理器執行時導致SSD之積體電路之控制器執行方法的指令。所述方法包含從連接至主機之主機介面接收資料的讀取請求,其中受讀取請求影響的資料被分割成複數個資料單元。所述方法亦包含從連接到複數個非揮發性半導體儲存裝置的裝置介面接收複數個非揮發性半導體儲存裝置中的一或多個目標非揮發性半導體儲存裝置,其中受讀取請求影響的資料被儲存。所述方法亦包含為複數個資料單元之每一資料針判定控制器之內部緩衝區用以暫時地累積資料單元的可用性,其中內部緩衝區和控制器形成積體電路的一部分,並且其中(i)如果內部緩衝區可用,則將來自一或多個目標非揮發性半導體儲存裝置的資料單元累積到內部緩衝區,以及(ii)如果內部緩衝區不可用,則將來自一或多個目標非揮發性半導體儲存裝置的資料單元累積到與控制器耦接的外部緩衝區,其中外部緩衝區在積體電路的外部。所述方法進一步包含將相應於受讀取請求影響之累積的資料傳輸至主機介面用以傳送至主機。
根據本揭露之另一實施例,提供一種非暫態電腦可讀取媒體,其儲存當由處理器執行時導致SSD之積體電路之控制器執行方法的指令。所述方法包含從連接至主機的主機介面接收寫入請求,所述寫入請求包含來自主機及在其中資料將被寫入之SSD中包含的複數個非揮發性半導體儲存裝置的目標非揮發性半導體儲存裝置的資料,其中受寫入請求影響的資料被分割為複數個資料單元。所述方法亦包含為每一資料針判定SoC控制器之內部緩衝區用以暫時地累積資料單元的可用性,其中內部緩衝區和控制器形成積體電路的一部分,並且其中(i)如果內部緩衝區可用,則將來自主機的資料單元累積到內部緩衝區,以及(ii)如果內部緩衝區不可用,則將來自主機的資料單元累積到與控制器耦接的外部緩衝區,其中外部緩衝區在積體電路的外部。所述方法進一步包含將累積在內部緩衝區中之資料單元的備份副本儲存在外部緩衝區中。
為了提供對文中所述之裝置的整體理解,將敘述某些說明性實施例。儘管文中所述的實施例和特徵被具體敘述為結合具有控制器的固態硬碟(SSD)使用,但是應理解到,下文概述的所有組件和其他特徵可以以任何合適的方式相互組合,並且可以適配和應用到需要透明緩衝區最佳化之其他類型的SSD架構。
圖1係包含與儲存裝置120通訊之至少一主機110的計算系統100的方塊圖。主機110係包含處理器、記憶體、及本領域已知之其他組件的計算系統,並且為了簡潔未在圖1中示出。儲存裝置120提供主機110使用的非揮發性儲存功能。儲存裝置120係SSD,SSD係非揮發性儲存裝置,其可包括包含控制器的積體電路。這種積體電路也可稱為晶片上系統(SoC)130。SoC在SSD中具有優勢,因為它們提供單一積體電路,其中包含SSD運行所需的電子系統的所有必需電路和組件。因此,SoC消除對於由複數個匯流排和緩衝區連接的模塊化架構的需要。SoC 130通訊地耦接至作為儲存媒體之基於非揮發性半導體的儲存元件140(諸如,基於NAND快閃記憶體裝置)。儲存媒體可包含複數個NAND晶片,諸如例如32、64、128、256個單獨NAND晶片,並且每一NAND晶片可以在晶片內的單獨晶粒(未圖示)上運行的單獨命令。作為實例,包含各具有d晶粒的N個NAND晶片的儲存元件140可以在任何時間運行至多(N×d)NAND命令。
SSD 120亦包括SoC 130外部的記憶體,諸如動態隨機存取記憶體(“DRAM”)150。SoC 130包含主機介面132,其能夠與主機110進行通訊以接收讀取和寫入請求。
SoC 130亦包括用於與儲存元件140(透過複數個通道,諸如如圖1所示之1至n的NAND通道)通訊的NAND介面134、以及用於與SoC外部之記憶體150通訊的DRAM介面136。例如,SoC 130上的介面132可包含串列進階技術附接(SATA)連接器或與PCIeTM
(「快速週邊組件介面」)匯流排一起操作的NVMeTM
連接器(NVMeTM
係「NVM express」的首字母縮寫,其中「NVM」代表「非揮發性記憶體」)。例如,介面134可包含開放NAND快閃介面(Open NAND Flash Interface; ONFI)或製造商的專有介面。介面136可包含(例如)根據但不限制於以下的介面:諸如DDR3、DDR4、或DDR5的雙倍資料速率(DDR)記憶體匯流排標準;諸如LPDDR3、LPDDR4、或LPDDR5的低功率雙倍資料速率(LPDDR)記憶體匯流排標準;混和記憶體立方體(Hybrid Memory Cube; HMC)記憶體匯流排標準。
DRAM 150包含用於在主機110與儲存元件140之間的讀取和寫入操作期間緩衝資料的幾個緩衝區。亦在圖1中示出記憶體控制器160,其使SoC 130能夠執行有助於處理來自主機110的讀取和寫入請求的各種功能。SoC亦包括可編程的韌體組態電路165。這允許根據需要調整記憶體控制器160的操作。例如,組態電路165可被編程為分配某個最小數量的DRAM緩衝區作為讀取緩衝區,而剩餘的緩衝區作為寫入緩衝區,從而可根據例如從主機110發送至SSD 120的I/O工作量來調整讀取和寫入緩衝區的大小。SoC 130亦包括區域記憶體170,諸如靜態隨機存取記憶體(SRAM),其係與SoC 130相同的積體電路的一部分。與DRAM 150一樣,SRAM 170亦包含幾個緩衝區,其可在操作期間由記憶體控制器160利用。根據本揭露的多個實施例,SRAM 170中的緩衝區可用作讀取緩衝區和寫入緩衝區。組態電路165亦可用於分配某些最小數量的SRAM緩衝區作為讀取緩衝區,而剩餘的緩衝區作為寫入緩衝區。對SRAM的讀取和寫入存取可能比對外部DRAM的存取完成更快,並且用於完成SRAM的讀取和寫入傳輸的功率(能量)可能低於外部DRAM。此外,DRAM消耗功率以保持儲存在記憶體中的資料刷新,其中SRAM僅消耗較低的靜態功率,因此更節能。因此,與外部DRAM中儲存和存取資料相比,儲存資料和執行對SRAM的存取可以提供高速和低較低功率的優勢。然而,由於SoC晶粒的空間/面積限制以及晶片上SRAM的成本高於同等數量的外部DRAM,因此SRAM的大小受到限制。
為了便於回應於寫入命令從主機110傳輸資料至NAND裝置140、或回應於讀取命令從NAND裝置140傳輸資料至主機110,SSD執行一些緩衝SoC控制器160維護的區域記憶體170。一般而言,資料將在到達其目的地之前緩衝在寫入緩衝區及/或讀取緩衝區中。對於大量資料,這些緩衝區將位於SoC 130外部的DRAM晶片150中,如圖1所示。
作為一實例,對於從主機110接收的每一讀取請求,讀取命令將經由主機介面132發送至SoC 130,在那裡其將由控制器160轉換成NAND命令(即,用於NAND裝置140的命令)。這些命令可能需要控制器160同時存取幾個NAND裝置140。控制器160然後將經由NAND介面134從包含所請求資料的NAND裝置讀取資料,在必要時執行錯誤校正,並將校正後的資料傳輸到讀取緩衝區。一般而言,讀取緩衝區位於外部DRAM 150中。對不同NAND裝置/晶粒的讀取命令可能在不同時間完成,因此隨著每個命令的完成,資料會在讀取緩衝區中累積。當讀取緩衝區中的資料準備好時,DRAM 150的讀取緩衝區中的資料將傳輸至主機110。在一些實施方式中,當至少從資料緩衝區開始的最小數量的連續資料單元完成時,從讀取緩衝區傳輸資料可以在整個資料緩衝區完全準備好之前開始,期望到該數量的連續單元的資料傳輸完成時資料緩衝區將完成或接近完成。例如,最小數量可以由資料緩衝區中總資料單元的50%、60%、或75%組成。
類似地,對於從主機110接收的每一寫入請求,寫入命令將經由主機介面132發送至SoC 130,其將由控制器轉換成NAND命令。寫入請求亦可包含資料要寫入的目標NAND裝置140。在接收到寫入請求時,控制器160將所有資料暫時地儲存在外部DRAM 150的寫入緩衝區中,之後確認訊息被發送到主機110。控制器160然後判定目標NAND裝置140是否可用於儲存資料。當目標NAND裝置140準備就緒時,外部DRAM 150的寫入緩衝區中的資料將被寫入目標NAND裝置140。
此外,SoC 130維護快閃變換表,其轉換主機110用來儲存資料的位址。快閃變換表將在讀取或寫入請求中由主機110指明的位址轉譯為實際實體NAND位址。NAND位址係目標NAND裝置140的位址。此外,包含讀取和寫入緩衝區之DRAM 150的大小通常由快閃變換表界定。然而,隨著NAND裝置140提供的記憶體的大小增加,快閃變換表本身的大小變大,並且可能在十億位元組的資料量級。這可能太大而無法儲存在SoC 130中,因此在某些情況下,快閃變換表及讀取和寫入緩衝區儲存在DRAM 150中。然而,在具有寬讀取和寫入緩衝區的DRAM中儲存大量快閃變換表會增加DRAM的成本。此大量緩衝區的功率耗損亦會增加,這會消耗SSD 120的功率預算。
為了提高大資料傳輸的效能,DRAM 150維護環形緩衝區,一部分的緩衝區用作讀取緩衝區,其餘緩衝區用作寫入緩衝區,如圖1中所描繪。環形緩衝區簡化了讀取和寫入資料緩衝區的定址方案。與從零到最大值的習知位址不同,隨著更多資料被傳輸而必須環繞,由環形緩衝區維護的位址由頭指標和尾指標引用,根據讀取或寫入請求中的資料大小簡單地調整。
隨著資料傳輸率的增加(如目前SATA和NVMe裝置的情況),通過DRAM介面136從外部DRAM 150讀取和寫入大量資料導致高功率耗損和資料傳輸延遲增加。目前的資料傳輸率高達每秒7 GB,並且可能是雙向的。這意味著讀取緩衝區和寫入緩衝區中的每一者都需要以超過主機110兩倍的速率運行的DRAM 150。這是因為例如在讀取操作期間當資料從NAND裝置140傳輸至DRAM 150時,以每秒7 GB的速率傳輸資料,然後資料以每秒7GB的速率從DRAM 150發送到主機110。每次存取DRAM 150以傳輸資料時,DRAM 150及DRAM介面136的匯流排驅動器都消耗功率。SSD 120通常受到它可以汲取的功率量的限制。此外,SSD可以在任一時間接收來自主機110的並行讀取/寫入請求。因此,往來於DRAM 150的資料傳輸將對由SSD 120消耗功率產生顯著影響。具有有限功率預算的SSD 120具有增加之涉及DRAM 150的資料傳輸可能限制或節流資料傳輸率以保持在功率預算內,並且由於SSD 120功率受限,在這種資料傳輸期間DRAM 150的功率消耗增加,因此將遭受較低的效能。
此外,在讀取請求的情況下,例如,從目標NAND裝置140讀取的資料可能包含比控制器160能夠容易解碼更多個錯誤。在這樣的情況下,來自NAND裝置140的額外資料對於錯誤校正可能是必要的,例如藉由執行重新讀取或RAID重建。此種錯誤校正可能導致讀取請求比包含較少錯誤的資料花費更長的時間。這導致從NAND裝置140檢索的資料的不同延遲。此外,一些NAND裝置140可能正在處理在當前請求之前接收到的其他請求。如此一來,控制器160在處理當前請求之前可能必須等待目標NAND裝置處的較早請求完成,這也導致來自目標NAND裝置的不同檢索時間,從而增加資料延遲。
為了應對從NAND裝置140讀取的資料的不同延遲,DRAM 150中的讀取和寫入緩衝區係用於累積所請求的資料。一旦從目標NAND裝置檢索到所有請求的資料並在DRAM 150的讀取緩衝區中累積,累積的資料就被推送到主機110。由於進行中的請求數量,DRAM 150中的讀取緩衝區和寫入緩衝區可能必須很大,例如50 MB,以便累積與請求相關的所有資料。這會增加SSD的功率耗損。
根據本揭露的一實施例,提供了一種藉由增強DRAM 150中的環形緩衝區的功能來服務來自主機110的讀取請求和寫入請求的方法。這是藉由在第一實例下使用SoC 130的內部SRAM 170作為讀取和寫入緩衝區來完成的,而不是僅僅依賴於外部DRAM 150的緩衝區。在資料傳輸期間,SRAM 170與DRAM 150相比使用顯著更少的功率。藉由使用SRAM 170的內部緩衝區而不必單獨依賴外部DRAM 150,SSD 120消耗的功率顯著降低。此外,當正在執行多個操作時,SRAM 170和NAND裝置140之間的快速的資料傳輸減少了讀取和寫入請求的等待時間。
如前所述,由於實施方式的簡單化,SRAM 170中的讀取和寫入緩衝區也可組態為環形緩衝區。這裡來自主機110的請求由控制器160處理,控制器160判定要傳輸的資料是否可以累積在SRAM 170緩衝區中,或者資料的一部分是否需要額外地累積在DRAM 150中。請求被明顯地處理,也就是說,控制傳輸的主機介面132或NAND介面134內的控制邏輯及/或處理器不知道資料是儲存在SRAM 170還是在DRAM 150中。一旦成功累積資料,控制器160在讀取請求的情況下將資料推送到主機110,或者在寫入請求的情況下將資料推送到NAND裝置140。
以此方式,記憶體控制器160有效地將資料轉移到局部SRAM 170及任何後續存取中。當主機110或目標NAND裝置140準備就緒時,控制器160明顯地取出局部SRAM 170中累積的資料。這裡,控制器160管理在SRAM 170內主機110和目標NAND裝置140之間的資料移動,以便滿足讀取或寫入請求。因此,控制器160係系統中意識到資料已經在SRAM 170內局部地累積的唯一部分。SoC 130內和SSD 120內的所有其他系統假定資料在傳輸至主機110(在讀取請求的情況下)或目標NAND裝置(在寫入請求的情況下)之前已經完全地儲存在外部DRAM 150中。
當傳輸資料時,記憶體控制器160將資料分成為界定的單元。一般而言,每一界定的單元將為(例如)4096位元組(約4 KB),然而本發明的範圍包括任何其他大小的資料單元。這意味著局部SRAM 170將資料儲存在4KB的單個塊中,即,SRAM 170具有每個4KB的資料槽來用於累積資料。控制器160維持SRAM 170中可用資料槽的相符數量,SRAM 170被稱為SRAM槽機(slot machine; SSM)。藉由與SSM檢查,控制器160快速地決定局部SRAM讀取/寫入緩衝區是否能夠累積特定資料塊的資料單元。如果SRAM 170沒有任何可用槽(即,SRAM沒有可用空間),則控制器160將資料單元重新導向至DRAM 150中的讀取/寫入緩衝區。
局部SRAM 170中緩衝區用於儲存與讀取或寫入請求相關的資料單元的可用性取決於SRAM 170的組態。SRAM 170的這種組態依賴於編程至耦接到控制器160的韌體組態電路165中的操作參數。例如,操作參數可藉由軟體編寫碼儲存在韌體組態電路165中。例示性操作參數可包括將被分配為讀取緩衝區以處理讀取請求的緩衝區的數量以及將被分配為寫入緩衝區以處理寫入請求的緩衝區的數量。
一般而言,讀取請求比寫入請求更重要。這是因為讀取請求所需的資料需要盡快提供給主機110,因為沒有這樣的資料,主機110無法繼續其操作。因此,主機110之執行的執行緒等待讀取請求中的資料,直到SSD 120使其可用為止,並且在獲得資料之前不能繼續。因此,SSD 120將讀取請求優先於寫入請求,並且它藉由經由韌體組態電路165對SRAM 170編程使得讀取請求可以比寫入請求消耗更多的SRAM 170的內部緩衝區來實現。在一些實例中,寫入請求能夠填滿SRAM 170的內部緩衝區,但控制器160必須在SRAM 170緩衝區中留下一定量的空間,該空間僅專用於讀取命令。
在操作期間,SSD 120將並行處理多個命令,例如其提交佇列中的讀取請求和寫入請求的混合。NAND裝置140完成讀取請求所需的時間(數十微秒的數量級)與NAND裝置140完成寫入請求所需的時間(毫秒數量級)之間存在顯著差異,讀取請求被更快地完成。這是因為當接收到讀取請求時,控制器160將藉由從NAND裝置140提取所請求之資料來立即開始處理讀取請求。當控制器160提取讀取請求的資料,控制器就開始處理提交佇列中的下一個請求,其可能是另一個讀取請求或寫入請求,無論是否返回第一讀取請求之所請求的資料。
相反的,寫入操作涉及多個步驟,包括緩衝以及當資料單元到達SRAM 170的內部緩衝區就返回到主機110的確認。因此,因為資料已經累積在SSD 120內,所以沒有迫切需要將所有資料單元從SRAM 170立即獲取到目標NAND裝置140;資料單元從SRAM 170的寫入緩衝區到目標NAND裝置140的傳輸可以在確認被發送到主機110之後的任何時間發生。然而對於讀取請求,由於主機110在沒有所請求的資料的情況下無法繼續,因此迫切需要在並行提取操作中從相應的NAND裝置140提取所請求之資料單元,並將資料累積在SRAM 170的讀取緩衝區中。只有當所有的資料單元都被提取後,所請求之資料才可以被組裝到SRAM 170的讀取緩衝區中並返回給主機110,以便主機110可以使用讀取資料進行其他任務。
圖2繪示根據本揭露的一實施例之用於處理來自主機110之讀取請求的方法200的例示性流程圖。方法開始於步驟210,其中讀取請求係經由SoC 130之主機介面132從主機110而接收。在步驟220,讀取請求係由在SoC 130上運行的快閃轉變層韌體處裡,其中韌體從儲存所請求之資料的NAND裝置140中定位特定頁面及NAND晶片。在SoC 130上運行的韌體然後發送命令至NAND裝置140,以檢索所請求之資料並經由記憶體控制器160將其發送至DRAM 150。如前所述,讀取資料的這種檢索速度很快,通常跨越數十微秒。控制器160亦根據內部SRAM 170的SSM判定資料的大小及其佔用資料單元的數量。
在步驟230,控制器160判定SRAM 170中內部讀取緩衝區是否可用於所請求之資料的資料單元。如果在SRAM 170之讀取緩衝區中有可用槽來保存資料單元(即圖2中步驟230處的「Y」),則在步驟240中資料單元從相關的NAND裝置140明顯地傳送到SRAM 170的讀取緩衝區。沒有資料傳輸到DRAM 150。如果SRAM 170的讀取緩衝區中沒有可用槽來儲存資料單元(即,在圖2中的步驟230處為「N」),則資料單元被傳輸到DRAM 150的讀取緩衝區,如步驟250所指示。在步驟260中,控制器然後判定是否有更多的資料單元要從NAND裝置140傳輸所請求的資料。如果有更多的資料單元要從 NAND裝置140傳輸(即,在步驟260處為「Y」),則所述方法返回到如上所述的步驟230。
如果沒有更多的資料單元要從NAND裝置140傳送出並且所有請求的資料單元已經累積在SRAM 170和外部DRAM 150 (如果適用)的內部讀取緩衝區中,即步驟260處的「N」,在步驟270中,資料被組裝並推送到主機110,其中SoC 130的韌體在DRAM 150中的讀取緩衝區和主機110之間建立資料傳輸。然後可以清除在SRAM 170和外部DRAM 150中的讀取資料單元。應注意到根據本揭露的實施例,SRAM 170的讀取緩衝區很少用完用於讀取資料的槽,因此DRAM 150不太可能用於讀取操作。藉由以此方式依賴內部SRAM 170,SSD 120將不需要具有高頻寬及功率耗損的DRAM 150。
作為根據本揭露之方法200的讀取請求的實例,假設主機110需要來自NAND裝置140的資料單元A-E。每個資料單元A-E適合SSM中的一個槽。SoC 130韌體設置資料單元A-E經由控制器160從NAND裝置140至DRAM 150的資料傳輸。一旦從相關NAND裝置140檢索每一資料單元並傳輸至控制器160,控制器160判定SRAM 170的讀取緩衝區是否具有用於需要儲存的相應資料單元的可用槽。因此,當檢索資料單元A,控制器160接收儲存資料單元A的請求,並判定SRAM 170的讀取緩衝區是否具有用於資料單元A的可用槽。如果是,則資料單元A從NAND裝置140明顯地傳輸至SRAM 170的讀取緩衝區。然後控制器接收儲存剩餘資料單元的請求。在此實例中,資料單元B-E仍需要被檢索。當從NAND裝置140檢索剩餘資料單元B-E中的每一個時,控制器160然後對它們重複步驟230。如果控制器160判定SRAM 170的讀取緩衝區沒有任何用於特定資料單元的可用槽,例如資料單元C,則控制器將來自相關NAND裝置140的資料單元C儲存到外部DRAM 150的讀取緩衝區。
在此實例中,資料單元D-E保留,並且因此當從NAND裝置140檢索資料單元D-E中的每一資料單元時,控制器重複步驟230。因此,當接收到資料單元D進行儲存時,控制器再次判定SRAM 170的讀取緩衝區是否有可用於資料單元D的槽。如果是,則資料單元D從NAND裝置140明顯地傳輸至SRAM 170的讀取緩衝區。注意,內部SRAM 170的讀取緩衝區可由於在DRAM 150的讀取緩衝區中的資料單元C的儲存和從NAND裝置140的資料單元D的檢索之間的時間中的其他並行請求的完成而被釋放。然後控制器對資料單元E重複步驟230。根據本揭露的多個實施例,SRAM更適合用於讀取資料單元的累積,因為它比DRAM消耗更少的功率。因此,在此實例中,資料單元A、B、D和E明顯地累積在SRAM 170的讀取緩衝區中,而資料單元C累積在DRAM 150的讀取緩衝區中。在所有資料單元A-E已累積後,SoC 130的韌體設置從DRAM 150到主機110的資料傳輸。控制器160明顯地從SRAM 170讀取資料單元A、B、D和E以及從DRAM 150讀取資料單元C,此後在SRAM 170和DRAM 150中讀取的資料單元A-E被清除。
圖3繪示根據本揭露的一實施例之用於處理來自主機110之寫入請求的方法300的例示性流程圖。方法開始於步驟310,其中寫入請求係經由SoC 130之主機介面132從主機110而接收。寫入請求包含資料及要寫入資料之目標NAND裝置140。寫入請求係由SoC 130之韌體處理,韌體在主機110和DRAM 150之間建立資料傳輸。控制器160接收資料的儲存命令並根據內部SRAM 170的SSM判定資料的大小及其佔用資料單元的數量。
在步驟320,控制器160判定SRAM 170中內部寫入緩衝區是否可用於寫入資料的資料單元。如果在SRAM 170之寫入緩衝區中有可用槽來暫時地儲存資料單元(即圖3中步驟320處的「Y」),則在步驟330中資料單元從主機110明顯地傳輸到SRAM 170之寫入緩衝區。在一些實施方式中,在步驟330中,資料單元亦傳輸至DRAM 150之寫入緩衝區,這允許在資料單元於步驟380中被傳輸至NAND裝置之後立即釋放SRAM 170中的資料單元占用的空間,其更快地為從主機110傳輸的後續資料單元提供空間。這允許DRAM 150中的資料單元在對NAND裝置之編程操作失敗的罕見事件中用作備份,這可能在資料單元被傳輸到NAND裝置之後幾毫秒發生。以此方式,仍被用於儲存資料單元的DRAM 150很少或更少被要求讀取資了單元(如果SRAM 170中的局部寫入緩衝區中沒有空間用於從主機傳輸或如果對NAND裝置的編程操作失敗,則必須從DRAM 150讀取或重新讀取資料單元)從而有效地將記憶體匯流排頻寬減少近50%。如果SRAM 170的寫入緩衝區中沒有可用槽來儲存資料單元(即,在圖3中的步驟320處為「N」),則資料單元被傳輸到DRAM 150的寫入緩衝區,如步驟340所指示。在步驟350中,控制器然後判定是否有更多的資料單元要從主機110傳輸寫入資料。如果有更多的資料單元要從主機110傳輸進來 (即,在步驟350處為「Y」),則所述方法返回到如上所述的步驟320。
如果沒有更多的資料單元要從主機110傳送出並且所有寫入資料單元已經累積在SRAM 170和外部DRAM 150 (如果適用)的內部讀取緩衝區中,即步驟350處的「N」,在步驟360中向主機110發送確認訊息以指示SSD 120已經接收到寫入請求及相關資料。需要說明的是,此時寫入資料尚未寫入NAND裝置140。相反,資料單元僅從主機110明顯地傳輸到SRAM 170的內部寫入緩衝區和外部DRAM 150(如果適用)。NAND介面134然後在DRAM 150之間為資料單元建立資料傳輸(經由記憶體控制器160,對於每一資料單元,如果資料單元是由控制器160而不是DRAM 15儲存在SRAM 170中,則該記憶體控制器從SRAM 170檢索資料單元),並在步驟370判定目標NAND裝置140是否準備好接收累積的寫入資料。NAND裝置140可能不會同時全部準備好接收累積的寫入資料,因為它們可能涉及其他尚未完成的讀取/寫入請求。因此,步驟370中的判定是即時完成的,並且一旦目標NAND裝置140之一準備好(即,在步驟370為「Y」,來自累積的寫入資料的一或多個資料單元取決於每個NAND裝置快閃頁面被推送到目標NAND裝置140。在一些實例中,對於96 KB的NAND裝置快閃頁面大小,寫入資料一般而言以96 KB DMA傳輸(作為4KB資料單元的分散收集列表)發送至NAND裝置。隨著每個4KB的資料單元被傳輸至NAND裝置,SRAM 170中資料單元占用的相應資料槽可以被釋放(換句話說,不需要等到整個96KB的NAND裝置快閃頁面 在SRAM 170中的各個4 KB資料單元槽可以被釋放之前傳輸)。這會重複進行,直到所有累積的資料單元都被推送到相應的目標NAND裝置140。如果沒有任何NAND裝置準備好(即,在步驟370 處為「N」),則NAND介面134 等待直到目標NAND裝置140變得可用。一旦資料單元被傳送到NAND裝置,SRAM 170中的寫入資料單元就可以被釋放。一旦已經傳輸的資料單元被成功地編程到NAND裝置中,這可能發生在幾毫秒之後,DRAM 150中的資料單元就可以被清除。
在SSD 120斷電的情況下,SRAM 170中的資料單元可能在資料單元被成功編程到NAND記憶體裝置之前已經被釋放。為了防止在斷電事件期間寫入資料永久丟失,SRAM 170的內部寫入緩衝區中累積的資料單元可以同時累積在DRAM 150的寫入緩衝區中,使得資料單元被複製或備份在DRAM 150中。以此方式,在斷電事件之後並且當SSD 120在來自諸如電池或超級電容器之輔助電源的備用電源下操作時,已在DRAM 150中備份的寫入資料單元被推送至目標NAND裝置140中從而成功地將從主機110接收的資料寫入NAND裝置140。如前所述,在DRAM 150中復製或備份的資料單元,亦可在傳輸的資料單元未能正確編程並且SRAM 170中的資料單元已經被釋放的情況下第二次傳輸至NAND裝置140中。
作為根據本揭露之方法300的寫入請求的實例,假設主機110請求資料單元A-E被寫入至目標NAND裝置140。每個資料單元A-E適合SSM中的一個槽。一旦主機110將資料單元A-E呈現給SSD 120,控制器判定內部SRAM 170的寫入緩衝區是否可用於資料單元A-E中的至少一個。如果SSM指示有兩個槽可用,則寫入資料單元A-B被明顯地推送到SRAM 170的寫入緩衝區中。應注意到資料單元A-E可以按任何順序傳輸,不必像這裡舉例說明的那樣按字母順序。控制器然後判定是否有更多的資料單元要寫入。在此實例中,資料單元C-E仍需要被寫入。當從主機110接收到剩餘資料單元C-E中的每一個時,控制器160然後對它們重複步驟320。在所有資料單元A-E已經累積在SRAM 170中之後,確認訊息被發送到主機110以指示寫入請求及相關聯的資料已被SSD 120接收。控制器亦可將資料單元A-E的備份儲存在DRAM 150中以防止斷電並且一旦資料單元已經被傳輸到但尚未被編程到NAND裝置140中,就能夠釋放SRAM 170的寫入緩衝區中的空間。NAND介面134然後快速地判定目標NAND裝置140是否準備好。當每個目標NAND裝置140準備好時,資料單元A-E從內部SRAM 170的寫入緩衝區傳輸到各自的NAND裝置140。當每一資料單元傳輸至NAND裝置140時,SRAM 170之寫入緩衝區中的寫入資料單元被釋放。在每一資料單元成功寫入NAND裝置140後,DRAM 150的寫入緩衝區中的相應寫入資料單元被釋放。
如果控制器160判定SRAM 170的讀取緩衝區沒有任何用於特定資料單元的可用槽,例如資料單元C,則控制器將來自主機110的資料單元C傳輸至DRAM 150的寫入緩衝區。控制器然後判定是否有更多的資料單元要從主機110接收。如果資料單元D-E保留,則當從主機110接收到資料單元D-E中的每一資料單元時,控制器為它們重複步驟320。因此,當接收到資料單元D時,控制器160再次判定SRAM 170的寫入緩衝區是否有可用於寫入資料單元D的槽。如果是,則資料單元D從主機110明顯地傳輸至SRAM 170的寫入緩衝區。注意,內部SRAM 170的寫入緩衝區可能具有由於在DRAM 150的寫入緩衝區中儲存資料單元C和從主機110接收資料單元D之間的時間完成了其他並行請求的完成而被釋放的資料單元槽。如前所述,當資料單元被傳輸到局部記憶體SRAM 170的寫入緩衝區時,同時將資料單元傳輸至DRAM 150的寫入緩衝區,使得SRAM 170中寫入緩衝區中的資料單元在資料單元傳輸到NAND裝置140後立即被釋放,而無需等待資料單元對NAND裝置140的編程操作成功完成,這確保寫入緩衝區中資料單元被佔用最少的時間,增加了從主機110傳入的資料單元可以找到空間來儲存在SRAM 170之寫入緩衝區中的可能性。然後控制器160對寫入資料單元E重複步驟320。根據本揭露的多個實施例,SRAM 170更適合用於讀取資料單元的累積,因為與DRAM 150相比,它能夠實現更快的讀取和寫入存取時間並且消耗更少的功率。因此,在此實例中,資料單元A、B、D和E明顯地累積在SRAM 170的寫入緩衝區中,而資料單元C累積在DRAM 150的寫入緩衝區中。
在所有資料單元A-E已經累積之後,確認訊息被發送到主機110以指示寫入請求及相關聯的資料已被SSD 120接收。控制器亦可將在SRAM 170中累積的資料單元A、B、D和E的備份儲存在DRAM 150中以防止斷電並且一旦資料單元已經被傳輸到但尚未被編程到NAND裝置140中,就能夠釋放SRAM 170的寫入緩衝區中的空間。控制器160然後快速地判定目標NAND裝置140是否準備好。當每個目標NAND裝置140準備好時,寫入資料單元A、B、D和E從內部SRAM 170的寫入緩衝區傳輸、及寫入資料單元C從DRAM 150的寫入緩衝區傳輸到各自的NAND裝置140。在每一資料單元已經被傳輸至NAND裝置140之後,SRAM 170中的相應寫入資料單元被釋放。在每一資料單元成功寫入NAND裝置140後,DRAM 150的寫入緩衝區中的相應寫入資料單元被釋放。
對於所屬技術領域中具有通常知識者,本發明之各種態樣的其它物件、優點、和實施例將是顯而易見的,並且在說明書和附圖的範圍內。例如,但不限於,可以依據本發明重新配置結構或功能元件。類似地,根據本發明的原理可以應用於其它實例,即使在這裡沒有詳細描述,其他實例也將落入本發明的範圍內。
100:計算系統
110:主機
120:儲存裝置
130:晶片上系統
132:主機介面
134:NAND介面
136:DRAM介面
140:儲存元件
150:記憶體
160:記憶體控制器
165:韌體組態電路
170:局部記憶體
200,300:方法
210,220,230,240,250,260,270,310,320,330,340,350,360,370,380:步驟
結合附圖考慮以下詳細描述,上述和其他目的和優點將變得顯而易見,其中相同的元件編號指的是相同的部分,其中:
[圖1]顯示根據本揭露之一或多個實施例組態之固態硬碟(SSD)的示意圖;
[圖2]係根據本揭露之一或多個實施例之用於處理來自主機的讀取請求之方法步驟的流程圖;以及
[圖3]係根據本揭露之一或多個實施例之用於處理來自主機的寫入請求的方法步驟之方法步驟的流程圖。
100:計算系統
110:主機
120:儲存裝置
130:晶片上系統
132:主機介面
134:NAND介面
136:DRAM介面
140:儲存元件
150:記憶體
160:記憶體控制器
165:韌體組態電路
170:局部記憶體
Claims (24)
- 一種積體電路系統,其包含: 積體電路; 記憶體控制器; 內部緩衝區,其在該積體電路內部並且通訊地耦接至該記憶體控制器;以及 外部緩衝區,其在該積體電路外部並且通訊地耦接至該記憶體控制器, 其中該記憶體控制器經組態以: 接收請求以將資料寫入至可用緩衝區,該資料被分割成複數個資料單元, 為該複數個資料單元中的每一資料單元判定用以暫時地儲存該資料單元之該內部緩衝區的可用性, 如果該內部緩衝區可用,則將該資料單元寫入至該內部緩衝區而不是寫入至該外部緩衝區,以及 如果該內部緩衝區不可用,則將該資料單元寫入至該外部緩衝區而不是將該資料單元寫入至該內部緩衝區。
- 如請求項1的積體電路系統,其中該記憶體控制器更進一步組態以在該資料單元係儲存至非揮發性半導體儲存裝置之後,從該內部緩衝區或該外部緩衝區移除該資料單元。
- 如請求項1的積體電路系統,其中該記憶體控制器經組態以在該外部緩衝區中儲存該內部緩衝區中累積的資料單元之備份副本。
- 如請求項3的積體電路系統,其中該記憶體控制器經組態以在該等資料單元係儲存至非揮發性半導體儲存裝置之後,移除在該外部緩衝區中的該等資料單元之該備份副本。
- 如請求項1的積體電路系統,其中該記憶體控制器經組態以在受該寫入請求影響的所有資料單元寫入至該內部緩衝區或該外部緩衝區之後,將訊息發送至主機以指示該寫入請求的完成。
- 如請求項5的積體電路系統,其中該記憶體控制器經組態以在將受該寫入請求影響的該等資料單元儲存至非揮發性半導體儲存裝置中之前,將該訊息發送至主機。
- 如請求項1的積體電路系統,其中該記憶體控制器經組態以當非揮發性半導體儲存裝置變成可用於儲存資料單元時,將儲存在該內部緩衝區或外部緩衝區中的該等資料單元快速地傳輸至該非揮發性半導體儲存裝置。
- 如請求項3的積體電路系統,其中該記憶體控制器經組態以在發生斷電或程式錯誤的情況下,將該外部緩衝區中的該等資料單元而不是該內部緩衝區中儲存的該等資料單元傳輸至該非揮發性半導體儲存裝置。
- 如請求項1的積體電路系統,其中該記憶體控制器進一步組態以接收讀取資料的請求,該讀取資料相應於該資料單元,並且進一步組態以: 如果該資料單元係寫入該內部緩衝區,則從該內部緩衝區讀取該資料單元,以及 如果該資料單元已寫入該外部緩衝區,則從該外部緩衝區讀取該資料單元。
- 如請求項9的積體電路系統,其中該記憶體控制器經組態以: 如果該資料單元已寫入該內部緩衝區,則在讀取後將該資料單元從該內部緩衝區移除,以及 如果該資料單元已寫入該外部緩衝區,則在讀取後將該資料單元從該外部緩衝區移除。
- 如請求項9的積體電路系統,其中該記憶體控制器經組態以對於讀取相應於該資料單元的資料,判定用以暫時地儲存該資料單元之該內部緩衝區的可用性,其中 如果該內部緩衝區可用,則將該資料單元寫入至該內部緩衝區,以及 如果該內部緩衝區不可用,則將該資料單元寫入至該外部緩衝區。
- 如請求項1的積體電路系統,其中該內部緩衝區和該外部緩衝區中的每一者包含複數個寫入緩衝區及複數個讀取緩衝區。
- 如請求項12的積體電路系統,其中該複數個讀取緩衝區和該複數個寫入緩衝區中的每一者包含環形緩衝區。
- 如請求項12的積體電路系統,進一步包含耦接至該記憶體控制器的可編程韌體組態電路,其經組態以在該內部緩衝區中設置數個讀取緩衝區及數個寫入緩衝區。
- 如請求項1的積體電路系統,其中該積體電路係固態硬碟(SSD)的一部分。
- 一種由積體電路之控制器執行的方法,該方法包含: 從連接至主機的主機介面接收寫入請求,該寫入請求包含來自該主機及在其中資料將被寫入之固態硬碟(SSD)中包含的複數個非揮發性半導體儲存裝置的目標非揮發性半導體儲存裝置的資料,其中受寫入請求影響的資料被分割為複數個資料單元; 為每一資料單元判定用以暫時地累積該資料單元的該控制器之內部緩衝區的可用性,其中該內部緩衝區和該控制器形成該積體電路的一部分,以及其中 如果該內部緩衝區可用,則將來自該主機的該資料單元累積至該內部緩衝區,以及 如果該內部緩衝區不可用,則將來自該主機的該資料單元累積至通訊地耦接至該控制器的外部緩衝區,其中該外部緩衝區係在該積體電路外部;以及 將累積在該內部緩衝區中之該等資料單元的備份副本儲存在該外部緩衝區中。
- 如請求項16的方法,更包含: 藉由該控制器從該內部緩衝區和該外部緩衝區移除該等累積的資料單元。
- 如請求項16的方法,更包含: 一旦該等資料單元被編程至該等目標非揮發性半導體儲存裝置,則藉由該控制器移除在該外部緩衝區中的該等資料單元之該備份副本。
- 如請求項16的方法,更包含: 在該內部緩衝區和該外部緩衝區暫時地累積該等資料單元之後由該控制器發送訊息至該主機,以指示該寫入請求的完成。
- 如請求項16的方法,更包含: 在至少一該非揮發性半導體儲存裝置中發生斷電或程式錯誤的情況下,由該控制器將該外部緩衝區中的該等資料單元而不是該內部緩衝區中累積的資料傳輸至該目標非揮發性半導體儲存裝置。
- 如請求項16的方法,更包含: 由耦接至該控制器的韌體組態電路編程在該內部緩衝區中的數個讀取緩衝區和數個寫入緩衝區, 其中較佳地該讀取緩衝區的數量超過該寫入緩衝區的數量。
- 一種由積體電路之控制器執行的方法,該方法包含: 從連接至主機之主機介面接收資料的讀取請求,其中受該讀取請求影響的該資料被分割成複數個資料單元; 從連接到包含在固態硬碟(SSD)中的複數個非揮發性半導體儲存裝置的裝置介面接收該複數個非揮發性半導體儲存裝置之一或多個目標非揮發性半導體儲存裝置,其中受該讀取請求影響的該資料被儲存; 為該複數個資料單元的每一資料單元判定用以暫時地累積該資料單元的該控制器之內部緩衝區的可用性,其中該內部緩衝區和該控制器形成該積體電路的一部分,以及其中 如果該內部緩衝區可用,則將來自該一或多個目標非揮發性半導體儲存裝置的該資料單元累積至該內部緩衝區,以及 如果該內部緩衝區不可用,則將來自該一或多個目標非揮發性半導體儲存裝置的該資料單元累積至通訊地耦接至該控制器的外部緩衝區,其中該外部緩衝區係在該積體電路外部;以及 將相應於受該讀取請求影響的該資料之該累積的資料傳輸至該主機介面以傳送至該主機。
- 如請求項22的方法,更包含: 藉由該控制器從該內部緩衝區和該外部緩衝區移除該等累積的資料單元。
- 如請求項22的方法,更包含: 由耦接至該控制器的韌體組態電路編程在該內部緩衝區中的數個讀取緩衝區和數個寫入緩衝區, 其中較佳地該讀取緩衝區的數量超過該寫入緩衝區的數量。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/836,112 US11726704B2 (en) | 2020-03-31 | 2020-03-31 | Buffer optimization for solid-state drives |
US16/836,112 | 2020-03-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202143052A true TW202143052A (zh) | 2021-11-16 |
Family
ID=77856064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110110854A TW202143052A (zh) | 2020-03-31 | 2021-03-25 | 用於固態硬碟的緩衝區最佳化 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11726704B2 (zh) |
CN (1) | CN113467712A (zh) |
TW (1) | TW202143052A (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11789634B2 (en) | 2020-07-28 | 2023-10-17 | Samsung Electronics Co., Ltd. | Systems and methods for processing copy commands |
US11733918B2 (en) * | 2020-07-28 | 2023-08-22 | Samsung Electronics Co., Ltd. | Systems and methods for processing commands for storage devices |
KR102343600B1 (ko) * | 2020-12-23 | 2021-12-27 | 주식회사 파두 | 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스 |
KR102343599B1 (ko) * | 2020-12-23 | 2021-12-27 | 주식회사 파두 | 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스 |
US20230066344A1 (en) * | 2021-08-27 | 2023-03-02 | Micron Technology, Inc. | Efficient buffer management for media management commands in memory devices |
US11604732B1 (en) * | 2021-09-02 | 2023-03-14 | Micron Technology, Inc. | Memory performance during program suspend protocol |
US11934662B2 (en) * | 2021-11-01 | 2024-03-19 | Innogrit Technologies Co., Ltd. | Solid state storage system with data loss prevention and user alert |
JP2023136083A (ja) * | 2022-03-16 | 2023-09-29 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US20240061797A1 (en) * | 2022-08-16 | 2024-02-22 | Infineon Technologies Ag | Methods and systems for accelerating pixel processing |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4245021B2 (ja) * | 2006-09-06 | 2009-03-25 | 日本電気株式会社 | ストレージ装置、ストレージシステム、ストレージ装置の制御方法 |
US9607664B2 (en) * | 2007-09-27 | 2017-03-28 | Sandisk Technologies Llc | Leveraging portable system power to enhance memory management and enable application level features |
US20090157946A1 (en) * | 2007-12-12 | 2009-06-18 | Siamak Arya | Memory having improved read capability |
US9128699B2 (en) | 2008-12-22 | 2015-09-08 | Intel Corporation | Method and system for queuing transfers of multiple non-contiguous address ranges with a single command |
US20140250272A1 (en) | 2013-03-04 | 2014-09-04 | Kabushiki Kaisha Toshiba | System and method for fetching data during reads in a data storage device |
US9720860B2 (en) * | 2014-06-06 | 2017-08-01 | Toshiba Corporation | System and method for efficient processing of queued read commands in a memory system |
US10969999B2 (en) * | 2016-09-26 | 2021-04-06 | Intel Corporation | Surface property tracking mechanism |
KR102653661B1 (ko) * | 2018-12-11 | 2024-04-03 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US10951549B2 (en) * | 2019-03-07 | 2021-03-16 | Mellanox Technologies Tlv Ltd. | Reusing switch ports for external buffer network |
-
2020
- 2020-03-31 US US16/836,112 patent/US11726704B2/en active Active
-
2021
- 2021-03-25 TW TW110110854A patent/TW202143052A/zh unknown
- 2021-03-30 CN CN202110338835.8A patent/CN113467712A/zh active Pending
-
2023
- 2023-06-28 US US18/215,726 patent/US20230333774A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11726704B2 (en) | 2023-08-15 |
CN113467712A (zh) | 2021-10-01 |
US20210303199A1 (en) | 2021-09-30 |
US20230333774A1 (en) | 2023-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW202143052A (zh) | 用於固態硬碟的緩衝區最佳化 | |
US9417961B2 (en) | Resource allocation and deallocation for power management in devices | |
US9460763B2 (en) | Holding by a memory controller multiple central processing unit memory access requests, and performing the multiple central processing unit memory request in one transfer cycle | |
US9927999B1 (en) | Trim management in solid state drives | |
US8060669B2 (en) | Memory controller with automatic command processing unit and memory system including the same | |
US20190042460A1 (en) | Method and apparatus to accelerate shutdown and startup of a solid-state drive | |
US10990463B2 (en) | Semiconductor memory module and memory system including the same | |
US20160011966A1 (en) | Solid state memory command queue in hybrid device | |
CN114385235A (zh) | 使用主机内存缓冲的命令排出 | |
CN116888572A (zh) | 增强的d3-cold和更快的恢复 | |
US12019910B2 (en) | SSD managed host write atomicity with arbitrary transfer length | |
EP3772682A1 (en) | Method and apparatus to improve write bandwidth of a block-based multi-level cell non-volatile memory | |
US20220374150A1 (en) | Adjustable timer component for semiconductor devices | |
US11614896B2 (en) | UFS out of order hint generation | |
TW202307851A (zh) | 明確緩衝器控制 | |
WO2021257117A1 (en) | Fast recovery for persistent memory region (pmr) of a data storage device | |
US20220197548A1 (en) | Memory controller and storage device including the same | |
US20220197549A1 (en) | Memory controller and storage device including the same | |
US20230297277A1 (en) | Combining Operations During Reset | |
US11966582B2 (en) | Data storage device that detects and releases bottlenecks | |
US20240086108A1 (en) | Parallel fragmented sgl fetching for hiding host turnaround time | |
CN111367830B (zh) | 主机参与的重建ftl表的方法及其存储设备 | |
US20240111426A1 (en) | Data Storage Device That Detects and Releases Bottlenecks In Hardware | |
US20240111427A1 (en) | Data Storage Device That Detects And Releases Input Queue Bottlenecks | |
WO2024063820A1 (en) | Dynamic td-ppm state and die mapping in multi-nand channels |