TW202318205A - 記憶體系統及資料輸入輸出系統 - Google Patents
記憶體系統及資料輸入輸出系統 Download PDFInfo
- Publication number
- TW202318205A TW202318205A TW111133524A TW111133524A TW202318205A TW 202318205 A TW202318205 A TW 202318205A TW 111133524 A TW111133524 A TW 111133524A TW 111133524 A TW111133524 A TW 111133524A TW 202318205 A TW202318205 A TW 202318205A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- memory
- read
- prefetch
- host
- 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
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/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/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公開係關於一種記憶體系統,該記憶體系統包括記憶體裝置和控制器。記憶體裝置包括多個儲存區域,多個儲存區域包括多個非揮發性記憶體單元。多個儲存區域具有不同的資料輸入/輸出速度。控制器經由至少一條資料路徑聯接到記憶體裝置。控制器回應於從外部裝置輸入的讀取請求執行預讀取操作,基於接收到讀取請求與完成預讀取操作之間的時間差,確定關於透過預讀取操作獲得的預讀取資料的資料屬性,並且基於資料屬性將預讀取資料儲存在多個儲存區域中的一個中。
Description
本文描述的本公開的實施例係關於一種資料處理系統,並且具體地,關於一種增強資料處理系統的預讀取(readahead)性能的設備和方法。
資料處理系統包括記憶體系統或資料儲存裝置。資料處理系統可以被開發用於在資料儲存裝置中儲存更多的資料、在資料儲存裝置中更快地儲存資料以及更快地讀取資料儲存裝置中儲存的資料。記憶體系統或資料儲存裝置可以包括用於儲存資料的非揮發性記憶體單元和/或揮發性記憶體單元。
相關申請案的交叉引用:
本專利申請請求於2021年9月15日提交的申請號為10-2021-0123181的韓國專利申請的權益,該韓國專利申請的全部公開內容透過引用併入本文。
本公開的實施例可以提供一種記憶體系統、資料處理系統以及操作過程或方法,其可以透過降低資料處理系統和記憶體系統的操作複雜度和性能劣化,來快速且可靠地將資料處理到記憶體裝置中,從而增強資料處理系統和記憶體裝置的使用效率。
本公開的實施例可以提供一種改善在記憶體系統中執行的預讀取操作的設備和方法,以使得記憶體系統將主機請求的讀取資料從記憶體系統發送到資料處理系統中的主機的提前。記憶體系統可以包括具有不同的資料輸入/輸出速度的多個緩衝器。在將透過預讀取操作準備的預讀取資料儲存在多個緩衝器中的過程中,記憶體系統可以基於將讀取資料發送到主機的第一定時(timing)和準備預讀取資料的第二定時之間的差來確定預讀取資料的資料屬性。基於該資料屬性,記憶體系統可以確定在多個緩衝器之中儲存預讀取資料的位置。透過該過程,可以提高利用記憶體系統的有限資源執行的預讀取操作的效率。
儘管在資料處理系統中主機向記憶體系統請求的資料的類型和大小可以是各種各樣的,但是可以臨時儲存透過預讀取操作獲得的預讀取資料的資料緩衝器的空間是有限的。透過計算回應於讀取請求輸出讀取資料所花費的時間的減少程度作為預讀覆蓋率(coverage rate),可以在資料緩衝器中優先準備覆蓋率低的資料。這樣,可以確定在記憶體裝置中儲存的資料之中,透過預讀取操作在資料緩衝器的有限空間中獲得的資料是哪些,從而可以改善記憶體系統的資料輸入/輸出性能。
在實施例中,記憶體系統可以包括:記憶體裝置,該記憶體裝置包括多個儲存區域,多個儲存區域包括多個非揮發性記憶體單元並且具有不同的資料輸入/輸出速度;以及控制器,經由至少一條資料路徑聯接到記憶體裝置並且被配置為回應於從外部裝置輸入的讀取請求執行預讀取操作,基於接收到讀取請求與完成預讀取操作之間的時間差來確定透過預讀取操作獲得的預讀取資料的資料屬性,並且基於該資料屬性將預讀取資料儲存在多個儲存區域中的一個中。
在記憶體系統中,多個儲存區域之中的第一儲存區域具有比多個儲存區域之中的第二儲存區域更快的資料輸入/輸出速度。
控制器可以被配置為在預讀取資料的大小小於預設值時,將與讀取請求相對應的預讀取資料儲存在第一儲存區域中。
控制器可以被配置為在預讀取資料的大小大於或等於預設值時,將與讀取請求相對應的預讀取資料儲存在第二儲存區域中。
控制器可以被配置為在接收到讀取請求早於完成預讀取操作時,將與讀取請求相對應的預讀取資料儲存在第一儲存區域中。
控制器可以被配置為在接收到讀取請求晚於完成預讀取操作時,將與讀取請求相對應的預讀取資料儲存在第二儲存區域中。
第一儲存區域和第二儲存區域可以分別包括至少一個記憶區塊、至少一個記憶體平面或至少一個記憶體晶粒。
第一儲存區域可以包括儲存單位資料的非揮發性記憶體單元,而第二儲存區域可以包括儲存多位資料的非揮發性記憶體單元。
第二儲存區域可以用於儲存用戶資料,並且第二儲存區域可以用於儲存與用戶資料相關聯的元資料。
控制器可以被配置為識別從外部裝置輸入的讀取請求所請求的讀取資料的模式,基於讀取資料的模式來確定關於與讀取資料相關聯的預讀取資料的資料屬性,並且基於資料屬性將預讀取資料儲存在多個儲存區域中的一個中。
控制器可以被配置為基於接收到第一讀取請求與接收到在第一讀取請求之後連續輸入的第二讀取請求之間的時間差來確定關於與對應於第一讀取請求的第一讀取資料相關聯的預讀取資料的資料屬性。
記憶體系統可以進一步包括被配置為臨時儲存預讀取資料的高速緩存記憶體。控制器可以被配置為基於接收到讀取請求與完成預讀取操作之間的時間差來確定釋放或逐出高速緩存記憶體中儲存的預讀取資料的定時。
控制器可以被配置為給預讀取資料分配多個逐出等級中的一個,在預讀取資料被存取時調整所分配的逐出等級,並且基於經調整的逐出等級來確定釋放或逐出預讀取資料的定時。
控制器可以被配置為在具有多個逐出等級之中的至少一個或多個特定逐出等級的預讀取資料的量大於參考時,改變調整分配給預讀取資料的所分配的逐出等級的程度。
控制器可以被配置為在高速緩存記憶體中儲存的預讀取資料具有相同的逐出等級時,基於最近最少使用(LRU)策略來確定釋放或逐出預讀取資料的定時。
在另一實施例中,記憶體系統可以包括:多個記憶體,具有不同的資料輸入/輸出速度;以及控制器,被配置為將經由預讀取操作從多個記憶體獲得的預讀取資料儲存在緩衝器中,並且基於接收到從外部裝置輸入的讀取請求,輸出緩衝器中儲存的預讀取資料之中的讀取資料。控制器可以進一步被配置為基於接收到讀取請求與完成預讀取操作之間的時間差,確定透過預讀取操作獲得的預讀取資料的優先級,並且基於優先級將預讀取資料儲存在多個記憶體中的一個中。
控制器可以被配置為採用虛擬文件系統,該虛擬文件系統將外部裝置使用的邏輯位址方案和用於識別多個記憶體中包括的多個非揮發性記憶體單元的位置的實體位址方案相關聯並且基於與多個記憶體中儲存的資料的資料屬性或資料模式相對應的相關性形成虛擬資料結構。虛擬資料結構可以包括相關性的多個深度等級之中的被分配給多個記憶體中儲存的資料的深度等級。
控制器可以被配置為在輸入讀取請求時執行預讀取操作,以獲得具有比與讀取請求相對應的資料的深度等級更高的深度等級的資料。
控制器可以被配置為:基於與讀取請求相對應的資料的大小來確定優先級;在預讀取資料的大小較小時,將與讀取請求相對應的預讀取資料儲存在多個記憶體之中的第一記憶體中;並且在預讀取資料的大小較大時,將與讀取請求相對應的預讀取資料儲存在多個記憶體之中的第二記憶體中,第二記憶體具有比第一記憶體的資料輸入/輸出速度更慢的資料輸入/輸出速度。
控制器可以被配置為:在接收到讀取請求早於完成預讀取操作時,將與讀取請求相對應的預讀取資料儲存在多個記憶體之中的第一記憶體中;在接收到讀取請求晚於完成預讀取操作時,將與讀取請求相對應的預讀取資料儲存在多個記憶體之中的第二記憶體中,第二記憶體具有比第一記憶體的資料輸入/輸出速度更慢的資料輸入/輸出速度。
在多個記憶體之中,第一記憶體可以具有比第二記憶體的資料輸入/輸出速度更快的資料輸入/輸出速度。第一記憶體和第二記憶體可以分別包括至少一個記憶區塊、至少一個記憶體平面或至少一個記憶體晶粒。
控制器可以被配置為基於優先級來確定釋放或逐出緩衝器中儲存的預讀取資料的定時。
控制器可以被配置為將多個逐出等級中的一個分配給預讀取資料,在預讀取資料被存取時調整所分配的逐出等級,並且基於經調整的逐出等級來確定釋放或逐出預讀取資料的定時。
控制器可以被配置為在具有多個逐出等級之中的至少一個或多個特定逐出等級的預讀取資料的量大於參考時,改變調整分配給預讀取資料的所分配的逐出等級的程度。
控制器可以被配置為在緩衝器中儲存的預讀取資料具有相同的逐出等級時,基於最近最少使用(LRU)策略來確定釋放預讀取資料的定時。
在另一實施例中,資料輸入/輸出系統可以包括:多個儲存裝置,具有不同的資料輸入/輸出速度;高速緩存記憶體;以及控制裝置,被配置為將經由預讀取操作從多個儲存裝置獲得的預讀取資料儲存在高速緩存記憶體中,基於接收到從應用程式輸入的讀取請求,將高速緩存記憶體中儲存的預讀取資料之中的讀取資料輸出到應用程式;基於接收到讀取請求的第一定時和完成將預讀取資料儲存在高速緩存記憶體中的第二定時,確定關於透過預讀取操作獲得的預讀取資料的預讀取屬性;並且基於預讀取屬性將預讀取資料儲存在多個儲存裝置中的一個中。
控制裝置可以被配置為檢測與讀取請求相對應的讀取資料的模式並且使用該模式來確定預讀取資料的預讀取屬性。
控制裝置可以被配置為在第一定時早於第二定時時,將與讀取請求相對應的預讀取資料儲存在具有最快的資料輸入/輸出速度的儲存裝置中。
控制裝置可以被配置為基於第一定時和第二定時之間的差來確定釋放或逐出高速緩存記憶體中儲存的預讀取資料的定時。
控制裝置可以被配置為將多個逐出等級中的一個分配給預讀取資料,在預讀取資料被存取時調整所分配的逐出等級,並且基於經調整的逐出等級來確定釋放或逐出預讀取資料的定時。
控制裝置可以被配置為在具有多個逐出等級之中的至少一個或多個特定逐出等級的預讀取資料的量大於參考時,改變調整分配給預讀取資料的所分配的逐出等級的程度。
控制器裝置可以被配置為在高速緩存記憶體中儲存的預讀取資料具有相同的逐出等級時,基於最近最少使用(LRU)策略來確定釋放或逐出預讀取資料的定時。
在另一實施例中,一種電路的操作方法可以包括:控制裝置將資料儲存在慢儲存區域中;控制高速緩存器高速緩存來自慢儲存區域的資料;回應於讀取命令,提供來自高速緩存器的資料;並且在所述提供之後,當資料的大小小於閾值時,或者在資料被完全高速緩存在高速緩存器中之前提供讀取命令時,控制裝置將資料從慢儲存區域移動到快儲存區域,該快儲存區域具有比慢儲存區域的輸入/輸出速度更快的輸入/輸出速度。
下面參照圖式描述本公開的各個實施例。然而,可以不同地配置或佈置本公開的元件和特徵以形成其它實施例,其它實施例可以是所公開的實施例中的任意一個的變型。
在本公開中,對“一個實施例”、“示例實施例”、“實施例”、“另一實施例”、“一些實施例”、“各個實施例”、“其它實施例”、“可選實施例”等中包括的各種特徵(例如,元件、結構、模組、組件、步驟、操作、特徵等)的引用旨在表示任何此類特徵可以包括在本公開的一個或多個實施例中,但是可以或不一定組合在相同的實施例中。
在本公開中,術語“包含”、“包含有”、“包括”和“包括有”是開放式的。如所附申請專利範圍中使用的,這些術語明確指出存在所陳述的元件並且不排除存在或添加一種或多種其它元件。申請專利範圍中的術語不排除設備包括額外的組件(例如,介面單元、電路等)。
在本公開中,可以描述或聲稱各種單元、電路或其它組件“被配置為”執行任務。在這樣的語境中,“被配置為”用於透過指示塊/單元/電路/組件包括在操作期間執行一個或多個任務的結構(例如,電路)來暗示結構。同樣地,可以稱塊/單元/電路/組件被配置為執行任務,即使指定的塊/單元/電路/組件當前不操作(例如,沒有被開啟也沒有被啟動)。與“被配置為”一起使用的塊/單元/電路/組件包括硬體,例如,電路、儲存可運行的程式指令以實現操作的記憶體等。此外,“被配置為”可以包括通用結構(例如,通用電路),該通用結構由軟體和/或韌體(例如,FPGA或運行軟體的通用處理器)操縱,以能夠執行待解決的任務的方式操作。“被配置為”還可以包括使製造過程(例如,半導體生產設施)適應適於實現或執行一個或多個任務的生產裝置(例如,積體電路)。
如本公開中使用的,術語“電路”或“邏輯”是指以下全部:(a)純硬體電路實現方式(諸如純模擬和/或數位電路中的實現方式)以及(b)電路和軟體(和/或韌體)的組合,諸如(可適用的):(i)處理器的組合,或(ii)一起工作以使諸如行動電話或服務器的設備執行各種功能的處理器/軟體(包括數位信號處理器)、軟體以及記憶體的部分以及(c)諸如微處理器或微處理器的一部分的電路,該電路需要用於操作的軟體或韌體,即使軟體或韌體實體上不存在。“電路”或“邏輯”的這個定義適用於該術語在本申請中的所有使用,包括在任何申請專利範圍中。作為進一步的示例,在本申請中使用時,術語“電路”或“邏輯”還涵蓋僅處理器(或多個處理器)或處理器的部分以及它的(或它們的)附隨的軟體和/或韌體的實現方式。如果適用於特別聲明的元件,術語“電路”或“邏輯”還涵蓋例如用於儲存裝置的積體電路。
在本文中使用時,術語“第一”、“第二”、“第三”等用作名詞的標簽,它們在名詞之前,並且不表示任何類型的排序(例如,空間的、時間的、邏輯的等)。術語“第一”和“第二”不一定表示第一值必須寫在第二值之前。進一步,儘管在本文中術語可以用於識別各種元件,但是這些元件不受這些術語的限制。這些術語用於將一個元件與具有相同或相似名稱的另一個元件區分開。例如,第一電路可以與第二電路區分開。
進一步,術語“基於”用於描述影響確定的一個或多個因素。該術語不排除可以影響確定的額外的因素。也就是說,確定可以僅基於那些因素或至少部分地基於那些因素。考慮片語“基於B確定A”,儘管在這種情況下,B是影響確定A的因素,但這種片語不排除也基於C來確定A。在其他情況下,可以僅基於B來確定A。
在本文中,一項資料、資料項、資料條目或一條目資料可以是一系列位。例如,資料項可以包括文件的內容、該文件中的一部分、記憶體中的頁面、面向對象的程式中的對象、數位消息、數位掃描圖像、視頻或音頻信號中的一部分、元資料或任何其他可以由一系列位表示的實體。根據實施例,資料項可以包括離散對象。根據另一實施例,資料項可以包括兩個不同組件之間的發送包內的一個單位的資訊。
現在將參照圖式描述本公開的實施例,其中相同的元件符號指代相同的元件。
圖1示出根據本公開的實施例的資料處理系統。
參照圖1,資料處理系統可以包括主機102和記憶體系統110。主機102可以包括計算裝置、移動裝置、網絡裝置等。記憶體系統110可以根據來自主機102的請求在其中儲存資料或將儲存的資料輸出到主機102。在圖1中,計算裝置中包括的中央處理單元(CPU)被示出為主機102的示例,並且計算裝置中包括的儲存裝置(SSD)被示出為記憶體系統110。主機102和記憶體系統110的配置可以根據本公開的實施例變化。
根據實施例,記憶體系統110可以包括具有不同資料輸入/輸出速度的多個非揮發性記憶體區域172、174。第一非揮發性記憶體區域(快I/O區域)172和第二非揮發性記憶體區域(慢I/O區域)174可以包括多個非揮發性記憶體單元。第一非揮發性記憶體區域172和第二非揮發性記憶體區域174可以回應於從主機102輸入的請求來儲存資料或輸出儲存的資料。例如,第一非揮發性記憶體區域172可以具有比第二非揮發性記憶體區域174更快的資料輸入/輸出速度。第一非揮發性記憶體區域172和第二非揮發性記憶體區域174可以包括至少一個記憶區塊、至少一個記憶體平面或至少一個記憶體晶粒。例如,第一非揮發性記憶體區域172可以包括包含儲存一位資料的非揮發性記憶體單元的記憶區塊,而第二非揮發性記憶體區域174可以包括包含儲存三位或四位資料的非揮發性記憶體單元的記憶區塊。
主機102可以將讀取命令RD_CMD發送到記憶體系統110。記憶體系統110可以回應於從主機102發送的讀取命令RD_CMD來輸出讀取資料RD_DATA。在圖1中描述的資料處理系統中,可以基於記憶體系統110執行資料輸入/輸出操作以將讀取資料RD_DATA發送到主機102的發送時間(例如,第一操作裕度S
1、S
2、S
3、S
4)以及主機102處理被發送的讀取資料RD_DATA的處理時間(例如,第二操作裕度C
1、C
2、C
3、C
4)來確定資料輸入/輸出性能。主機102可以處理從記憶體系統110發送的讀取資料RD_DATA。例如,主機102可以執行透過顯示裝置等向用戶顯示讀取資料RD_DATA的操作。根據實施例,與第一操作裕度S
1、S
2、S
3、S
4和第二操作裕度C
1、C
2、C
3、C
4相比,在主機102和記憶體系統110之間發送和接收讀取命令RD_CMD或讀取資料RD_DATA所需的時間可能是最不重要的。在圖1中可以省略用於發送/接收的時間。
參照圖1,回應於從主機102輸入的讀取命令RD_CMD的資料輸入/輸出性能的差異可以基於兩種不同的情況,即記憶體系統110支持預讀取操作(W/Readahead Op.)以及記憶體系統110不支持預讀取操作(W/O Readahead Op.)來描述。
首先,對於從主機102輸入的讀取命令RD_CMD,在不支持預讀取操作(Readahead Op.)的情況(W/O Readahead Op.)下,記憶體系統110可以從儲存裝置查找並且讀取與第一讀取命令RD_CMD相對應的第一讀取資料以將第一讀取資料發送到主機102(在操作裕度S
1期間)。接收第一讀取資料的主機102可以處理與第一讀取命令RD_CMD相對應的第一讀取資料並且將請求第二讀取資料的第二讀取命令RD_CMD發送到記憶體系統110(在操作裕度C
1期間)。回應於請求第二讀取資料的第二讀取命令RD_CMD,記憶體系統110可以從儲存裝置讀取第二讀取資料並且將第二讀取資料發送到主機102(在操作裕度S
2期間)。此後,主機102可以處理第二讀取資料並且將請求第三讀取資料的第三讀取命令RD_CMD發送到記憶體系統110(在操作裕度C
2期間)。
當記憶體系統110中不支持預讀取操作(Readahead Op.)時(W/O Readahead Op.),記憶體系統110會在接收到讀取命令RD_CMD之後查找並且讀取與主機102的讀取命令RD_CMD相對應的資料,以將與讀取命令RD_CMD相對應的讀取資料發送到主機102。也就是說,在輸入讀取命令RD_CMD之後,記憶體系統110應將第一操作裕度S
1、S
2、S
3、S
4用於查找和讀取主機102請求的資料。主機102可以使用第二操作裕度C
1、C
2、C
3、C
4來處理由記憶體系統110發送的讀取資料RD_DATA。如圖1所示,當主機102具有分別在記憶體系統110的第一操作裕度S
1、S
2、S
3、S
4之後的第二操作裕度C
1、C
2、C
3、C
4時,資料處理系統的資料I/O性能可能不好。
然而,在支持預讀取操作(Readahead Op.)的情況下(W/Readahead Op.),記憶體系統110可以查找並且讀取與從主機102輸入的第一讀取命令RD_CMD相對應的第一讀取資料以將第一讀取資料發送到主機102(在記憶體系統110的操作裕度S
1期間)。進一步,即使主機102不向記憶體系統110發送任何其他讀取命令,記憶體系統110也可以準備(即,提前查找和讀取)與第一讀取資料相關聯的其他資料。主機102可以處理與第一讀取命令RD_CMD相對應的第一讀取資料並且將請求第二讀取資料的第二讀取命令RD_CMD發送到記憶體系統110(在主機102的操作裕度C
1期間)。當記憶體系統110已經準備好第二讀取資料時,即當第二讀取資料可以在沒有任何其他讀取命令的情況下在記憶體系統110準備的其他資料中查找到時,記憶體系統110可以在輸入第二讀取命令RD_CMD之後立即將第二讀取資料發送到主機102。也就是說,主機用於處理第一讀取資料的操作裕度C
1可以與記憶體系統用於查找和讀取第二讀取資料的操作裕度S
2重疊。在輸入第二讀取命令RD_CMD之前已經準備好第二讀取資料(即透過預讀取操作)時,在輸入第二讀取命令RD_CMD之後記憶體系統110可以不花費時間來查找和讀取第二讀取資料。
在記憶體系統110支持預讀取操作(Readahead Op.)的情況下(W/Readahead Op.),記憶體系統110可以回應於從主機102輸入的讀取命令RD_CMD將讀取資料發送到主機102,而沒有用於從儲存裝置中查找和讀取讀取資料的延遲。因此,主機102可以處理多個讀取資料,而在主機102的第二操作裕度C
1、C
2、C
3、C
4之間不存在延遲時間或等待時間。因此,可以隱藏記憶體系統110的用於在記憶體系統110中查找和讀取讀取資料的第一操作裕度S
1、S
2、S
3、S
4。當記憶體系統110支持預讀取操作(Readahead Op.)時,可以改善資料處理系統的資料I/O性能。
此外,為了減少或避免由於資料輸入/輸出操作導致的資料處理操作中的延遲,主機102可以向記憶體系統110發送關於可能不需要的資料的讀取命令RD_CMD。在這種情況下,資料處理系統可能產生不必要的資源消耗。另外,為了減少或避免由於資料輸入/輸出操作導致的資料處理操作中的延遲,很難減少用於在記憶體系統110中查找和讀取讀取資料的第一操作裕度S
1、S
2、S
3、S
4,因為記憶體系統100包括的可用資源有限。
根據實施例,為了增強和提高預讀取操作的效率,記憶體系統110可以確定資料之間的相關性並且基於相關性來控制資料。當記憶體系統110已經透過預讀取操作在緩衝器中準備好資料但主機102沒有請求讀取預讀取資料之中的資料時,看起來記憶體系統110只是浪費了用於內部操作的資源。因此,記憶體系統110可以估計至少一個讀取命令RD_CMD的模式或與該至少一個讀取命令RD_CMD相對應的讀取資料的模式。
當記憶體系統110中的資料輸入/輸出速度快的緩衝器的大小足夠時,第一非揮發性記憶體區域172和第二非揮發性記憶體區域174中儲存的大量資料可以提前被讀取並且被儲存在緩衝器中。記憶體系統110可以在緩衝器中儲存的大量資料之中尋找主機102請求的讀取資料,以將讀取資料發送到主機102。然而,記憶體系統110中的資源有限,主機102請求的資料的模式可以是各種各樣的,並且主機102請求的資料的大小也可以是各種各樣的。因此,記憶體系統110提前讀取第一非揮發性記憶體區域172和第二非揮發性記憶體區域174中儲存的大量資料以將讀取資料發送到主機102可能不是用於改善資料I/O性能效率的很好的解決方案。
根據實施例,為了增強或改善預讀取操作的效率和性能,記憶體系統110可以執行預讀取操作以從第一非揮發性記憶體區域172和第二非揮發性記憶體區域174獲取資料,檢查從臨時儲存資料到回應於主機102的讀取請求將儲存的資料輸出到主機102的時間,並且確定透過預讀取操作獲得的資料的資料屬性。在確定預讀取資料的資料屬性之後,記憶體系統110可以確定將預讀取資料儲存在第一非揮發性記憶體區域172或第二非揮發性記憶體區域174中是否發揮作用(effective)。在這裡,第一非揮發性記憶體區域172和第二非揮發性記憶體區域174具有不同的資料輸入/輸出速度。
例如,記憶體系統110可以被配置為基於經由與主機102請求的讀取資料相關聯的預讀取操作將預讀取資料臨時儲存在內部緩衝器中的第一時間點以及接收從主機102輸入的關於內部緩衝器中儲存的預讀取資料的讀取命令RD_CMD的第二時間點,確定預讀取資料的覆蓋率。當主機102請求資料的第二時間點晚於記憶體系統110經由預讀取操作提前獲得資料的第一時間點時,記憶體系統110可以確定不需要將資料儲存在具有較快的資料輸入/輸出速度的第一非揮發性記憶體區域172中。這可以表明,即使資料被儲存在具有較慢的資料輸入/輸出速度的第二非揮發性記憶體區域174中,記憶體系統110也可以確定在主機102請求資料的第二時間點之前可以充分保證用於將資料獲取到內部緩衝器中的操作裕度。
反之,當主機102請求資料的第二時間點與記憶體系統110提前獲取資料的第一時間點接近,或者第二時間點早於第一時間點時,記憶體系統110可以將資料儲存在具有較快的資料輸入/輸出速度的第一非揮發性記憶體區域172中。在這種情況下,記憶體系統110提前將資料讀取到內部緩衝器越快,記憶體系統110可以回應於主機102的請求輸出資料就越快。
根據實施例,記憶體系統110可以根據資料的大小來確定在多個緩衝器中儲存資料的位置。這裡,資料的大小可以與回應於讀取命令RD_CMD而順序地或連續地讀取和輸出的讀取資料RD_DATA的大小或預讀取資料的大小相關聯,該預讀取資料是與讀取資料RD_DATA相關聯的預讀取操作的目標。例如,記憶體系統110可以使用資料的大小作為參考來估計主機102使用讀取命令RD_CMD的模式。如果基於主機102發送的讀取命令中的資料的起始位址估計出隨後將讀取的順序讀取資料的量大於預定閾值,則主機102中處理相應資料的操作裕度也會變大,並且可以估計出透過預讀取操作提前準備資料的效率不是很高。在這種情況下,記憶體系統110可以將資料儲存在具有較慢的資料輸入/輸出速度的第二非揮發性記憶體區域174中。例如,當基於從主機102輸入的讀取命令RD_CMD的模式(例如,順序讀取或隨機讀取)估計出主機102請求的資料的量大於閾值時,記憶體系統110可以確定透過預讀取操作提前準備資料的操作裕度足夠,並且將資料儲存在具有較慢的資料輸入/輸出速度的第二非揮發性儲存區域174中。
相反,當基於從主機102輸入的讀取命令RD_CMD的模式估計出請求的資料的量不大於閾值時,記憶體系統110可以確定提前獲取資料有利於改善資料I/O性能。在這種情況下,記憶體系統110可以將資料儲存在具有較快的資料輸入/輸出速度的第一非揮發性記憶體區域172中。
如上所述,記憶體系統110可以包括具有不同的資料輸入/輸出速度的多個非揮發性記憶體區域172、174。多個非揮發性記憶體區域172、174可以在記憶體系統110中的、用於儲存資料的記憶體裝置150(參見圖2至圖3)中以各種形式實施。記憶體系統110執行預讀取操作(Readahead Op.)以獲得預讀取資料。記憶體系統110可以基於透過預讀取操作獲得預讀取資料並且將其儲存在緩衝器中的第一時間點與記憶體系統110回應於從主機102輸入的讀取請求將預讀取資料輸出到主機102的第二時間點之間的差異,或基於估計將由主機102請求的資料的大小,來確定預讀取資料的資料屬性。進一步,記憶體系統110可以基於預讀取資料的資料屬性來確定在多個非揮發性記憶體區域172、174之中儲存資料的位置。如果確定需要以較快的速率輸出預讀取資料,則記憶體系統110可以將預讀取資料儲存在多個記憶體區域之中以較快的資料輸入/輸出速度操作的第一非揮發性記憶體區域172中。相反,如果確定不需要快速輸入/輸出預讀取資料,則預讀取資料可以儲存在多個記憶體區域之中具有較慢的資料輸入/輸出速度的第二非揮發性記憶體區域174中。
在下文中,將著重描述可以在圖1和圖2至圖4中描述的控制器130和記憶體裝置150之間在技術上進行區分的操作或組件。具體地,將參照圖3至圖4更詳細地描述控制器130中的閃存轉換層(FTL)240。根據實施例,控制器130中的閃存轉換層(FTL)的作用和功能可以變化。
圖2和圖3示出根據本公開的一個或多個實施例的可以由記憶體系統110執行的一些操作。
參照圖2,資料處理系統100可以包括與諸如記憶體系統110的記憶體系統接合或聯接的主機102。例如,主機102和記憶體系統110可以經由資料匯流排、主機電纜等相互聯接以執行資料通信。
記憶體系統110可以包括記憶體裝置150和控制器130。記憶體系統110中的記憶體裝置150和控制器130可以認為是在實體上彼此分離的組件或元件。記憶體裝置150和控制器130可以經由至少一條資料路徑連接。例如,資料路徑可以包括通道和/或通路。
根據實施例,記憶體裝置150和控制器130可以是按功能劃分的組件或元件。進一步,根據實施例,記憶體裝置150和控制器130可以利用單個晶片或多個晶片來實施。控制器130可以回應於從外部裝置輸入的請求來執行資料輸入/輸出操作。例如,當控制器130回應於從外部裝置輸入的讀取請求來執行讀取操作時,記憶體裝置150中包括的多個非揮發性記憶體單元中儲存的資料被傳送到控制器130。
如圖2所示,記憶體裝置150可以包括多個記憶區塊152、154、156。記憶區塊152、154、156可以被理解為透過單次擦除操作將資料一起移除的一組非揮發性記憶體單元。儘管未示出,但是記憶區塊152、154、156可以包括頁面,該頁面是在單次編程操作期間將資料儲存在一起或者在單次讀取操作期間將資料一起輸出的一組非揮發性記憶體單元。例如,一個記憶區塊可以包括多個頁面。
例如,記憶體裝置150可以包括多個記憶體平面或多個記憶體晶粒。根據實施例,記憶體平面可以被認為是包括至少一個記憶區塊的邏輯或實體分區、能夠控制包括多個非揮發性記憶體單元的陣列的驅動電路以及可以臨時儲存輸入到非揮發性記憶體單元或從非揮發性記憶體單元輸出的資料的緩衝器。
另外,根據實施例,記憶體晶粒可以包括至少一個記憶體平面。記憶體晶粒可以被理解為在實體上可區分的基底上實施的一組組件。每個記憶體晶粒可以透過資料路徑連接到控制器130。每個記憶體晶粒可以包括用於與控制器130交換資料項和信號的介面。
根據實施例,記憶體裝置150可以包括至少一個記憶區塊152、154、156,至少一個記憶體平面或至少一個記憶體晶粒。根據記憶體系統110的性能,圖1和圖2所示的記憶體裝置150的內部配置可以不同。本公開的實施例不限於圖2所示的內部配置。
參照圖2,記憶體裝置150可以包括能夠將至少一些電壓供應到記憶區塊152、154、156中的電壓供應電路。電壓供應電路170可以將讀取電壓Vrd、編程電壓Vprog、通過電壓Vpass或擦除電壓Vers供應到記憶區塊中包括的非揮發性記憶體單元中。例如,在讀取記憶區塊152、154、156中包括的非揮發性記憶體單元中儲存的資料的讀取操作期間,電壓供應電路170可以將讀取電壓Vrd供應到所選擇的非揮發性記憶體單元中。在將資料儲存在記憶區塊152、154、156中包括的非揮發性記憶體單元中的編程操作期間,電壓供應電路170可以將編程電壓Vprog供應到所選擇的非揮發性記憶體單元中。而且,在對所選擇的非揮發性記憶體單元執行的讀取操作或編程操作期間,電壓供應電路170可以將通過電壓Vpass供應到未選擇的非揮發性記憶體單元中。在擦除記憶區塊152、154、156中包括的非揮發性記憶體單元中儲存的資料的擦除操作期間,電壓供應電路170可以將擦除電壓Vers供應到記憶區塊中。
記憶體裝置150可以儲存關於基於執行何種操作而向記憶區塊152、154、156供應的各種電壓的資訊。例如,當記憶區塊152、154、156中的非揮發性記憶體單元可以儲存多位資料時,可能需要用於識別或讀取多位資料項的多個位準的讀取電壓Vrd。記憶體裝置150可以包括表,該表包括與對應於多位資料項的多個位準的讀取電壓Vrd相對應的資訊。例如,該表可以包括暫存器中儲存的偏置值,每個偏置值對應於特定位準的讀取電壓Vrd。用於讀取操作的讀取電壓Vrd的偏置值的數量可以限於預設範圍。而且,可以對偏置值進行量化。
主機102可以包括便攜式電子裝置(例如,行動電話、MP3播放器、膝上型電腦等)或者非便攜式電子裝置(例如,桌上型電腦、遊戲機、電視、投影儀等)。
主機102還可以包括可以控制在主機102中執行的功能和操作的至少一個操作系統(OS)。OS可以提供與記憶體系統110可操作地接合的主機102和想要將資料儲存在記憶體系統110中的用戶之間的互操作性。OS可以支持與用戶的請求相對應的功能和操作。作為示例而非限制,根據主機102的移動性,OS可以被分類為通用操作系統和移動操作系統。根據系統要求或用戶環境,通用操作系統可以分為個人操作系統和企業操作系統。與個人操作系統相比,企業操作系統可以專門用於確保和支持高性能計算。
移動操作系統可以用於支持針對移動性的服務或功能(例如,省電功能)。主機102可以包括多個操作系統。主機102可以運行與用戶的請求相對應的、與記憶體系統110聯鎖的多個操作系統。主機102可以將與用戶的請求相對應的多個命令發送到記憶體系統110中,從而在記憶體系統110內執行與多個命令相對應的操作。
記憶體系統110中的控制器130可以回應於從主機102輸入的請求或命令來控制記憶體裝置150。例如,控制器130可以執行讀取操作以向主機102提供從記憶體裝置150讀取的資料並且可以執行寫入操作(或編程操作)以將從主機102輸入的資料儲存在記憶體裝置150中。為了執行資料輸入/輸出(I/O)操作,控制器130可以控制和管理讀取資料、編程資料、擦除資料等的內部操作。
根據實施例,控制器130可以包括主機介面132、處理器134、錯誤校正電路(ECC)138、電源管理單元(PMU)140、記憶體介面142和記憶體144。如圖2所示的控制器130中包括的組件可以根據記憶體系統110的結構、功能、操作性能等變化。
例如,根據主機介面的協議,記憶體系統110可以利用可以與主機102電聯接的各種類型的儲存裝置中的任意一種來實施。適用的儲存裝置的非限制性示例包括固態驅動器(SSD)、多媒體卡(MMC)、嵌入式MMC(eMMC)、縮小尺寸的MMC(RS-MMC)、微型MMC、安全數位(SD)卡、迷你SD、微型SD、通用序列匯流排(USB)儲存裝置、通用閃存(UFS)裝置、緊湊式閃存(CF)卡、智能媒體(SM)卡、記憶棒等。根據記憶體系統110的實施方案,可以向控制器130添加組件或從控制器130刪除組件。
主機102和記憶體系統110均可以包括控制器或用於根據一個或多個預定協議來發送和接收信號、資料等的介面。例如,記憶體系統110中的主機介面132可以包括能夠將信號、資料等發送到主機102或者從主機102接收信號、資料等的設備。
控制器130中包括的主機介面132可以經由匯流排接收從主機102輸入的信號、命令(或請求)和/或資料。例如,主機102和記憶體系統110可以使用用於資料通信的一組預定的規則或規程或者預設介面來在主機102和記憶體系統110之間發送和接收資料。用於資料通信的規則或規程組或者主機102和記憶體系統110支持的用於發送和接收資料的介面的示例包括通用序列匯流排(USB)、多媒體卡(MMC)、並行高級技術附件(PATA)、小型計算機系統介面(SCSI)、增強型小磁碟介面(ESDI)、電子集成驅動器(IDE)、高速外圍組件互連(PCIE)、串列SCSI(SAS)、串行高級技術附件(SATA)、移動工業處理器介面(MIPI)等。根據實施例,主機介面132是用於與主機102交換資料的一種類型的層,並且由被稱為主機介面層(HIL)的韌體實施或驅動。根據實施例,主機介面132可以包括命令隊列。
電子集成驅動器(IDE)或高級技術附件(ATA)可以用作用於發送和接收資料的介面中的一個,並且例如可以使用包括並行連接的40根電線的電纜來支持主機102與記憶體系統110之間的資料發送和資料接收。當多個記憶體系統110連接到單個主機102時,可以透過使用多個記憶體系統110連接到的位置或撥碼開關將多個記憶體系統110劃分為主控(master)和從屬(slave)。設置為主控的記憶體系統110可以用作主記憶體裝置。IDE(ATA)可以例如包括快速ATA、ATAPI和增強型IDE(EIDE)。
串行高級技術附件(SATA)介面是與電子集成驅動器(IDE)裝置使用的並行資料通信介面的各種ATA標準兼容的一種類型的串行資料通信介面。IDE介面中的40根電線可以減少為SATA介面中的6根電線。例如,IDE的40個並行信號可以被轉換為SATA介面的6個串行信號。SATA介面由於其較快的資料發送和接收速率以及其更少的資源消耗而在主機102中被廣泛使用以用於資料的發送和接收。SATA介面可以將多達30個外部裝置連接到主機102中包括的單個收發器。另外,SATA介面可以支持熱插拔,即使正在執行主機102和另一裝置之間的資料通信時,該熱插拔也允許外部裝置附接到主機102或從主機102拆卸。因此,即使主機102通電時,記憶體系統110也可以如通用序列匯流排(USB)支持的裝置一樣作為附加裝置而被連接或斷開。例如,在具有eSATA埠的主機102中,記憶體系統110可以如外部硬碟一樣自由地附接到主機102或從主機102拆卸。
小型計算機系統介面(SCSI)是用於將計算機或服務器與其它外圍裝置連接的一種類型的串行資料通信介面。與諸如IDE和SATA的其它介面相比,SCSI可以提供較快的發送速度。在SCSI中,主機102和至少一個外圍裝置(例如,記憶體系統110)串聯連接,但是可以透過並行資料通信來執行主機102與每個外圍裝置之間的資料發送和接收。在SCSI中,很容易將諸如記憶體系統110的裝置連接到主機102或從主機102斷開。SCSI可以支持將15個其它裝置連接到主機102中包括的單個收發器。
串列SCSI(SAS)可以被理解為SCSI的串行資料通信版本。在SAS中,主機102和多個外圍裝置串聯連接,並且可以以串行資料通信方案來執行主機102與每個外圍裝置之間的資料發送和接收。SAS可以透過串行電纜而不是並行電纜來支持主機102與外圍裝置之間的連接,以使用SAS輕鬆地管理裝備並且增強或改善操作可靠性和通信性能。SAS可以支持將8個外部裝置連接到主機102中包括的單個收發器。
高速非揮發性記憶體(NVMe)是至少基於高速外圍組件互連(PCIe)的一種介面,該高速外圍組件互連(PCIe)被設計為提高配備有非揮發性記憶體系統110的主機102、服務器、計算裝置等的性能和設計靈活性。PCIe可以使用插槽或特定電纜來連接計算裝置(例如,主機102)和外圍裝置(例如,記憶體系統110)。例如,PCIe可以使用多個接腳(例如,18個接腳、32個接腳、49個接腳或82個接腳)和至少一根電線(例如,x1、x4、x8或x16)以實現超過每秒幾百MB(例如,250MB/s、500MB/s、984.6250MB/s或1969MB/s)的高速資料通信。根據實施例,PCIe方案可以實現每秒數十到數百千兆比特的帶寬。NVMe可以支持諸如SSD的非揮發性記憶體系統110的比硬碟更快的操作速度。
根據實施例,主機102和記憶體系統110可以透過通用序列匯流排(USB)來連接。通用序列匯流排(USB)是一種可擴展的、可熱插拔的即插即用的串行介面,該串行介面可以在主機102與諸如以下的外圍裝置之間提供合算(cost-effective)的標準連接:鍵盤、滑鼠、操縱桿、打印機、掃描儀、儲存裝置、調制解調器、攝像機等。諸如記憶體系統110的多個外圍裝置可以聯接到主機102中包括的單個收發器。
參照圖2,錯誤校正電路138可以校正從記憶體裝置150讀取的資料的錯誤位,並且可以包括錯誤校正碼(ECC)編碼器和ECC解碼器。ECC編碼器可以對待編程在記憶體裝置150中的資料執行錯誤校正編碼,以生成添加了奇偶校驗位的經編碼的資料,並且將經編碼的資料儲存在記憶體裝置150中。當控制器130讀取記憶體裝置150中儲存的資料時,ECC解碼器可以檢測並且校正從記憶體裝置150讀取的資料中包括的錯誤位。例如,在對從記憶體裝置150讀取的資料執行錯誤校正解碼之後,錯誤校正電路138確定錯誤校正解碼是成功還是失敗,並且基於錯誤校正解碼的結果來輸出指令信號(例如,校正成功信號或校正失敗信號)。錯誤校正電路138可以使用在ECC編碼過程期間已經為記憶體裝置150中儲存的資料生成的奇偶校驗位來校正讀取的資料的錯誤位。當錯誤位的數量大於或等於可校正的錯誤位的數量時,錯誤校正電路138可以不校正錯誤位,而是可以替代地輸出指示校正錯誤位失敗的校正失敗信號。
根據實施例,錯誤校正電路138可以基於諸如以下的編碼調製來執行錯誤校正操作:低密度奇偶校驗(LDPC)碼、博斯-查德胡裡-霍昆格姆(Bose-Chaudhuri-Hocquenghem,BCH)碼、渦輪碼、裡德-所羅門(Reed-Solomon,RS)碼、卷積碼、遞歸系統碼(RSC)、網格編碼調製(TCM)、分組編碼調製(BCM)等。錯誤校正電路138可以包括用於基於上述代碼中的至少一種來執行錯誤校正操作的所有電路、模組、系統和/或裝置。圖2所示的錯誤校正電路138可以包括圖3所示的控制器130中包括的組件中的至少一些。
例如,ECC解碼器可以對從記憶體裝置150發送的資料執行硬判決解碼或軟判決解碼。硬判決解碼可以被理解為針對錯誤校正廣泛地分類的兩種方法中的一個。硬判決解碼可以包括透過從記憶體裝置150中的非揮發性記憶體單元讀取數位資料“0”或“1”來校正錯誤位的操作。由於硬判決解碼處理二進制邏輯信號,因此電路/演算法設計或配置會比軟判決解碼更簡單,並且處理速度會比軟判決解碼更快。
軟判決解碼可以透過兩個或更多個量化值(例如,多位資料、近似值、模擬值等)來量化記憶體裝置150中的非揮發性記憶體單元的閾值電壓,以基於兩個或更多個量化值來校正錯誤位。控制器130可以從記憶體裝置150中的多個非揮發性記憶體單元接收兩個或更多個字母或量化值,然後基於透過將量化值表徵為諸如條件概率或似然性的資訊的組合而生成的資訊來執行解碼。
根據實施例,ECC解碼器可以使用為軟判決解碼設計的方法之中的低密度奇偶校驗碼和生成器矩陣(LDPC-GM)碼。低密度奇偶校驗(LDPC)碼使用根據可靠性從記憶體裝置150讀取若干資料位的資料值的演算法,而不是如硬判決解碼那樣簡單地使用資料1或0,並且透過消息交換來迭代地重複以提高值的可靠性。然後,將值最終確定為資料1或0。例如,使用LDPC碼的解碼演算法可以被理解為概率解碼。在硬判決解碼中,從非揮發性記憶體單元輸出的值被編碼為0或1。與硬判決解碼相比,軟判決解碼可以基於隨機資訊來確定非揮發性記憶體單元中儲存的值。關於可以被認為是在記憶體裝置150中會出現的錯誤的位翻轉,軟判決解碼可以提高校正錯誤和恢復資料的概率,以及提供經校正的資料的可靠性和穩定性。LDPC-GM碼可以具有內部LDGM碼可以與高速LDPC碼串聯連結的方案。
根據實施例,ECC解碼器可以使用,例如,低密度奇偶校驗卷積碼(LDPC-CC)來進行軟判決解碼。LDPC-CC可以具有使用基於可變塊長度和移位暫存器的線性時間編碼和流水線解碼(pipeline decoding)的方案。
根據實施例,ECC解碼器例如可以使用對數似然比Turbo碼(LLR-TC)來進行軟判決解碼。可以將對數似然比(LLR)計算為採樣值與理想值之間的距離的非線性函數。另外,Turbo碼(TC)可以包括二維或三維的簡單碼(例如,漢明碼)並且在行方向和列方向上重複解碼以提高值的可靠性。
電源管理單元(PMU)140可以控制提供給控制器130的電力。PMU 140可以監控供應給記憶體系統110的電力(例如,供應給控制器130的電壓)並且向控制器130中包括的組件提供電力。PMU 140不僅可以檢測通電或斷電,而且還可以在供應給記憶體系統110的電力不穩定時生成觸發信號以使記憶體系統110能夠緊急備份當前狀態。根據實施例,PMU 140可以包括能夠累積可以在緊急情況下使用的電力的裝置或組件。
記憶體介面142可以用作用於處理在控制器130和記憶體裝置150之間傳送的命令和資料的介面,以允許控制器130回應於從主機102輸入的命令或請求來控制記憶體裝置150。在記憶體裝置150是閃速記憶體的情況下,記憶體介面142可以生成針對記憶體裝置150的控制信號並且可以在處理器134的控制下處理輸入到記憶體裝置150或從記憶體裝置150輸出的資料。
例如,當記憶體裝置150包括NAND閃速記憶體時,記憶體介面142包括NAND閃存控制器(NFC)。記憶體介面142可以提供用於處理控制器130和記憶體裝置150之間的命令和資料的介面。根據實施例,記憶體介面142可以透過稱為閃存介面層(FIL)的韌體來實施或被驅動,該韌體用於與記憶體裝置150交換資料。記憶體介面142可以包括多組隊列,每一組隊列對應於記憶體裝置150中包括的每個記憶體晶粒或者每個記憶體平面。
根據實施例,記憶體介面142可以支持用於與記憶體裝置150進行資料輸入/輸出的開放式NAND閃存介面(ONFi)、切換模式等。例如,ONFi可以使用包括至少一條信號線的資料路徑(例如,通道、通路等),該至少一條信號線能夠支持以8位或16位資料為單位的雙向發送和接收。控制器130與記憶體裝置150之間的資料通信可以透過關於不同步單倍資料速率(SDR)、同步雙倍資料速率(DDR)、切換雙倍資料速率(DDR)等的至少一個介面來實現。
在臨時儲存在記憶體系統110和控制器130中執行的操作的事務資料的同時,記憶體144可以用作記憶體系統110或控制器130的工作記憶體。例如,在讀取資料被輸出到主機102之前,記憶體144可以回應於來自主機102的讀取請求而臨時儲存從記憶體裝置150輸出的讀取資料。另外,控制器130可以在將寫入資料編程到記憶體裝置150中之前,將從主機102輸入的寫入資料臨時儲存在記憶體144中。當控制器130控制記憶體裝置150的諸如資料讀取操作、資料寫入或編程操作、資料擦除操作等的操作時,在記憶體系統110的控制器130和記憶體裝置150之間發送的資料可以暫時儲存在記憶體144中。例如,記憶體144可以包括資料緩衝器。
除了讀取資料或寫入資料之外,記憶體144可以儲存用於在主機102和記憶體裝置150之間輸入或輸出資料的資訊(例如,映射資料、讀取請求、編程請求等)。根據實施例,記憶體144可以包括命令隊列、程式記憶體、資料記憶體、寫入緩衝器/高速緩存、讀取緩衝器/高速緩存、資料緩衝器/高速緩存、映射緩衝器/高速緩存等中的一個或多個。控制器130可以為被設立為執行資料輸入/輸出操作的組件在記憶體144中分配一些儲存空間。例如,在記憶體144中設立的寫入緩衝器可以用於臨時儲存用於編程操作的目標資料。
在實施例中,記憶體144可以利用揮發性記憶體來實施。例如,記憶體144可以利用靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)或兩者來實施。儘管圖2示出,例如,設置在控制器130的內部的記憶體144,但是實施例不限於此。記憶體144可以位於控制器130的內部或外部。例如,記憶體144可以由外部揮發性記憶體來實施,該外部揮發性記憶體具有在記憶體144和控制器130之間傳送資料和/或信號的記憶體介面。
處理器134可以控制記憶體系統110的全部操作。例如,處理器134可以回應於從主機102輸入的寫入請求或讀取請求來控制記憶體裝置150的編程操作或讀取操作。根據實施例,處理器134可以運行韌體以控制記憶體系統110中的編程操作或讀取操作。在本文中,韌體可以被稱為閃存轉換層(FTL)。稍後將參照圖3和圖4詳細描述FTL的示例。根據實施例,處理器134可以利用微處理器、中央處理單元(CPU)等來實施。
根據實施例,記憶體系統110可以利用至少一個多核處理器來實施。多核處理器是一種集成有兩個或多個內核的電路或晶片,兩個或多個內核被認為是不同的處理區域。例如,當多核處理器中的多個內核獨立地驅動或運行多個閃存轉換層(FTL)時,可以提高記憶體系統110的資料輸入/輸出速度(或性能)。根據實施例,可以透過多核處理器中的不同內核來獨立地執行記憶體系統110中的資料輸入/輸出(I/O)操作。
控制器130中的處理器134可以執行與從主機102輸入的請求或命令相對應的操作。進一步,記憶體系統110可以獨立於從主機102輸入的命令或請求執行操作。在一種情況下,控制器130回應於從主機102輸入的請求或命令執行的操作可以被認為是前臺操作,而控制器130獨立於從主機102輸入的請求或命令執行的操作可以被認為是後臺操作。控制器130可以執行用於在記憶體裝置150中讀取、寫入或擦除資料的前臺操作或後臺操作。另外,與作為從主機102發送的設置命令的設置參數命令或設置特徵命令相對應的參數設置操作可以被認為是前臺操作。作為在沒有從主機102發送的命令的情況下執行的後臺操作,控制器130可以執行垃圾收集(GC)、損耗均衡(WL)、用於識別和處理壞塊的壞塊管理等。
根據實施例,基本相似的操作可以被作為前臺操作和後臺操作兩者執行。例如,當記憶體系統110回應於從主機102輸入的請求或命令執行垃圾收集(例如,手動GC)時,垃圾收集可以被認為是前臺操作。當記憶體系統110獨立於主機102執行垃圾收集(例如,自動GC)時,垃圾收集可以被認為是後臺操作。
當記憶體裝置150包括多個晶粒(或多個晶片)且多個晶粒各自包括多個非揮發性記憶體單元時,控制器130可以執行關於從主機102輸入的多個請求或命令的並行處理,以提高記憶體系統110的性能。例如,所發送的請求或命令可以被劃分為包括記憶體裝置150中包括的多個平面、多個晶粒或多個晶片中的至少一些的多個組,並且多組請求或命令在每個平面、每個晶粒或每個晶片中單獨或並行處理。
控制器130中的記憶體介面142可以透過至少一個通道和至少一條通路來連接到記憶體裝置150中的多個晶粒或晶片。當控制器130回應於與包括非揮發性記憶體單元的多個頁面相關聯的請求或命令來透過每個通道或每條通路將資料分配並且儲存在多個晶粒中時,可以在多個晶粒或平面中同時或並行執行與該請求或命令相對應的多個操作。這種處理方法或方案可以被看作是交錯法。由於記憶體系統110的資料輸入/輸出速度透過使用交錯法操作而增大,因此記憶體系統110的資料I/O性能會提高。
作為示例而非限制,控制器130可以識別與記憶體裝置150中包括的多個記憶體晶粒相關聯的多個通道(或通路)的狀態。控制器130可以將每個通道或每條通路的狀態確定為繁忙狀態、就緒狀態、活動狀態、空閒狀態、正常狀態和異常狀態中的一個。確定控制器透過哪個通道或通路傳遞指令(和/或資料)可以與實體塊位址相關聯。控制器130可以參考從記憶體裝置150傳遞的描述符。描述符可以包括描述記憶體裝置150的某些方面的參數的塊或頁面。描述符可以具有預定的格式或結構。例如,描述符可以包括裝置描述符、配置描述符、單元描述符等。控制器130可以參考或使用描述符來確定使用哪個(或些)通道或通路來交換指令或資料。
參照圖2,記憶體系統110中的記憶體裝置150可以包括多個記憶區塊152、154、156。多個記憶區塊152、154、156中的每一個包括多個非揮發性記憶體單元。根據實施例,記憶區塊152、154、156可以是一起被擦除的一組非揮發性記憶體單元。記憶區塊152、154、156可以包括多個頁面,該多個頁面是一起被讀取或編程的一組非揮發性記憶體單元。
在一個實施例中,每個記憶區塊152、154或156可以具有三維堆疊結構以具備高集成度。進一步,記憶體裝置150可以包括多個晶粒,每個晶粒包括多個平面,每個平面包括多個記憶區塊152、154、156。記憶體裝置150的配置可以根據記憶體系統110的性能改變。
圖2示出包括多個記憶區塊152、154和156的記憶體裝置150。根據可以儲存在一個記憶體單元中的位的數量,多個記憶區塊152、154、156可以是單層單元(SLC)記憶區塊、多層單元(MLC)記憶區塊等中的任意一個。SLC記憶區塊包括由記憶體單元實施的多個頁面,每個記憶體單元儲存一位資料。SLC記憶區塊可以具有比MLC記憶區塊更高的資料I/O操作性能和更高的耐用性。MLC記憶區塊包括由記憶體單元實施的多個頁面,每個記憶體單元儲存多位資料(例如,兩位或更多位資料)。與SLC記憶區塊相比,對於相同的空間,MLC記憶區塊可以具有更大的儲存容量。從儲存容量的角度來看,MLC記憶區塊可以被高度集成。
在實施例中,記憶體裝置150可以利用諸如以下的MLC記憶區塊來實施:雙層單元(DLC)記憶區塊、三層單元(TLC)記憶區塊、四層單元(QLC)記憶區塊及其組合。DLC記憶區塊可以包括由記憶體單元實施的多個頁面,每個記憶體單元能夠儲存2位資料。TLC記憶區塊可以包括由記憶體單元實施的多個頁面,每個記憶體單元能夠儲存3位資料。QLC記憶區塊可以包括由記憶體單元實施的多個頁面,每個記憶體單元能夠儲存4位資料。在另一實施例中,記憶體裝置150可以利用包括多個頁面的塊來實施,多個頁面由記憶體單元實施,每個記憶體單元能夠儲存五位或更多位資料。
根據實施例,控制器130可以將記憶體裝置150中包括的MLC記憶區塊用作在一個記憶體單元中儲存一位資料的SLC記憶區塊。多層單元(MLC)記憶區塊的資料輸入/輸出速度可能比SLC記憶區塊的資料輸入/輸出速度慢。也就是說,當將MLC記憶區塊用作SLC記憶區塊時,用於讀取或編程操作的裕度可能會減小。例如,當將MLC記憶區塊用作SLC記憶區塊時,控制器130可以以較快的速度執行資料輸入/輸出操作。因此,控制器130可以將MLC記憶區塊用作SLC緩衝器來臨時儲存資料,因為緩衝器可能需要較高的資料輸入/輸出速度以提高記憶體系統110的性能。
進一步,根據實施例,控制器130可以將資料多次編程到MLC中而不對記憶體裝置150中包括的特定MLC記憶區塊執行擦除操作。通常,非揮發性記憶體單元不支持資料重寫。然而,控制器130可以使用MLC能夠儲存多位資料的特徵將1位資料多次編程到MLC中。對於MLC重寫操作,當將1位資料編程到MLC中時,控制器130可以將編程次數作為單獨的操作資訊進行儲存。根據實施例,可以在將另一個1位資料編程到MLC中之前執行用於均勻地均衡相同的MLC的閾值電壓的操作,每個MLC均具有已儲存的另一位資料。
在實施例中,記憶體裝置150被實現為諸如閃速記憶體的非揮發性記憶體,例如,被實現為NAND閃速記憶體、NOR閃速記憶體等。在另一實施例中,記憶體裝置150可以由以下至少一種來實施:相變隨機存取記憶體(PCRAM)、鐵電隨機存取記憶體(FRAM)、轉移力矩隨機存取記憶體(STT-RAM)和自旋轉移力矩磁性隨機存取記憶體(STT-MRAM)等。
參照圖3,記憶體系統中的控制器130與主機102和記憶體裝置150一起工作。如圖所示,控制器130包括主機介面132、閃存轉換層(FTL)240、記憶體介面142以及先前參照圖2標識的記憶體144。
根據實施例,在閃存轉換層(FTL)240中可以包括圖2所示的錯誤校正電路138。在另一實施例中,錯誤校正電路138可以被實施為單獨的模組、電路、韌體等,其被包括在控制器130中或者與控制器130相關聯。
主機介面132可以處理從主機102發送的命令、資料等。作為示例而非限制,主機介面132可以包括命令隊列56、緩衝器管理器52和事件隊列54。命令隊列56可以順序地儲存從主機102接收的命令、資料等,並且將它們輸出到緩衝器管理器52,例如,按照它們被儲存在命令隊列56中的順序。緩衝器管理器52可以分類、管理或調整從命令隊列56接收的命令、資料等。事件隊列54可以順序地發送用於處理從緩衝器管理器52接收的命令、資料等的事件。例如,主機介面132可以包括直接記憶體存取(DMA)控制電路。
可以從主機102發送相同特性的多個命令或資料,或者不同特性的多個命令和資料在被主機102混合或打亂之後可以被發送到記憶體系統110。例如,可以傳遞用於讀取資料的多個命令即讀取命令,或者可以將用於讀取資料的命令即讀取命令和用於編程/寫入資料的命令即寫入命令交替地發送到記憶體系統110。主機介面132可以將從主機102發送的命令、資料等順序地儲存在命令隊列56中。之後,主機介面132可以根據已經從主機102發送的命令、資料等的特性來估計或預測控制器130將執行什麼類型的內部操作。主機介面132可以基於命令、資料等的特性來確定它們的處理順序和優先級。
根據從主機102發送的命令、資料等的特性,主機介面132中的緩衝器管理器52被配置為確定緩衝器管理器52是否應該將命令、資料等儲存在記憶體144中,或者緩衝器管理器52是否應該將命令、資料等傳遞到閃存轉換層(FTL)240。事件隊列54接收從緩衝器管理器52發送的將由記憶體系統110或控制器130回應於命令、資料等在內部執行和處理的事件並且按照事件輸入到事件隊列54的順序將事件傳遞到閃存轉換層(FTL)240。
根據實施例,圖3所示的閃存轉換層(FTL)240可以實施多線程方案以執行資料輸入/輸出(I/O)操作。多線程FTL可以使用控制器130中包括的多線程透過多核處理器來實施。
根據實施例,閃存轉換層(FTL)240可以包括主機請求管理器(HRM)46、映射管理器(MM)44、狀態管理器42和塊管理器48。主機請求管理器(HRM)46可以管理從事件隊列54發送的事件。映射管理器(MM)44可以處理或控制映射資料。狀態管理器42可以執行垃圾收集(GC)或損耗均衡(WL)。塊管理器48可以對記憶體裝置150中的塊運行命令或指令。
作為示例而非限制,主機請求管理器(HRM)46可以使用映射管理器(MM)44和塊管理器48來處置或者處理根據讀取命令和編程命令的請求以及從主機介面132傳遞的事件。主機請求管理器(HRM)46可以向映射管理器(MM)44發送查詢請求以確定對應於與事件一起輸入的邏輯位址的實體位址。主機請求管理器(HRM)46可以將讀取請求和實體位址發送到記憶體介面142以處理讀取請求,即處理事件。在一個實施例中,主機請求管理器(HRM)46可以將編程請求(或寫入請求)發送到塊管理器48,以將資料編程到記憶體裝置150中沒有儲存資料的特定空頁面,然後可以將與編程請求相對應的映射更新請求發送到映射管理器(MM)44,以更新將邏輯位址和實體位址相互映射的資訊中的與經編程的資料有關的項。
塊管理器48可以將從主機請求管理器(HRM)46、映射管理器(MM)44和/或狀態管理器42傳遞的編程請求轉換為用於記憶體裝置150的閃存編程請求,以管理記憶體裝置150中的閃存塊。為了最大化或者增強記憶體系統110的編程性能或寫入性能,塊管理器48可以收集編程請求並且將針對多個平面和單次編程操作的閃存編程請求發送到記憶體介面142。在實施例中,塊管理器48將若干閃存編程請求發送到記憶體介面142以增強或最大化多通道和多方向的閃存控制器的並行處理。
在一個實施例中,塊管理器48可以根據有效頁面的數量來管理記憶體裝置150中的塊,在需要空閒塊時選擇並且擦除沒有有效頁面的塊,並且在確定將執行垃圾收集時選擇包括最少數量的有效頁面的塊。狀態管理器42可以執行垃圾收集以將所選擇的塊中儲存的有效資料移動到空塊並且擦除所選擇的塊中儲存的資料,以便記憶體裝置150可以具有足夠的空閒塊(即,沒有資料的空塊)。當塊管理器48向狀態管理器42提供關於待擦除的塊的資訊時,狀態管理器42可以檢查待擦除的塊的所有閃存頁面以確定塊的每個頁面是否有效。
例如,為了確定每個頁面的有效性,狀態管理器42可以識別每個頁面的帶外(OOB)區域中記錄的邏輯位址。為了確定每個頁面是否有效,狀態管理器42可以將頁面的實體位址與映射到從查詢請求獲得的邏輯位址的實體位址進行比較。狀態管理器42針對每個有效頁面將編程請求發送到塊管理器48。當完成編程操作時,可以透過映射管理器44來更新映射表。
映射管理器44可以管理映射資料,例如,邏輯-實體映射表。映射管理器44可以處理各種請求,例如,由主機請求管理器(HRM)46或狀態管理器42生成的查詢、更新等。映射管理器44可以將整個映射表儲存在記憶體裝置150(例如,閃存/非揮發性記憶體)中並且根據記憶體144的儲存容量來高速緩存映射條目。在處理查詢或更新請求時發生映射高速緩存未命中時,映射管理器44可以將讀取請求發送到記憶體介面142以加載記憶體裝置150中儲存的相關映射表。當映射管理器44中的髒(dirty)高速緩存塊的數量超過某一閾值時,可以將編程請求發送到塊管理器48,以便形成乾淨的高速緩存塊並且髒映射表可以儲存在記憶體裝置150中。
當執行垃圾收集時,狀態管理器42將有效頁面複製到空閒塊中,並且主機請求管理器(HRM)46可以針對相同邏輯位址的頁面編程最新版本的資料並且當下發出更新請求。當狀態管理器42在未正常完成有效頁面的複製的狀態下請求映射更新時,映射管理器44可不執行映射表更新。這是因為在狀態管理器42請求映射更新並且稍後完成有效頁面複製時,映射請求是利用舊實體資訊發出的。當最新映射表仍指向舊實體位址時或者僅在最新映射表仍指向舊實體位址的情況下,映射管理器44可以執行映射更新操作以確保準確性。
圖4示出根據本公開的實施例的圖1至圖3所示的控制器的內部配置。
參照圖4,控制器130中的閃存轉換層(FTL)240可以被劃分為三層:位址轉換層ATL;虛擬閃存層VFL;以及閃存介面層FIL。
例如,位址轉換層ATL可以將從文件系統發送的邏輯位址LA轉換為邏輯頁面位址。位址轉換層ATL可以執行關於邏輯位址空間的位址轉換過程。也就是說,位址轉換層ATL可以基於將閃速記憶體140的邏輯頁面位址LPA映射到從主機發送的邏輯位址LA的映射資訊來執行位址轉換過程。這種邏輯到邏輯位址映射資訊(以下稱為L2L映射)可以儲存在記憶體裝置150中的儲存元資料的區域中。
虛擬閃存層VFL可以將位址轉換層ATL映射的邏輯頁面位址LPA轉換為虛擬頁面位址VPA。這裡,虛擬頁面位址VPA可以對應於虛擬記憶體裝置的實體位址。也就是說,虛擬頁面位址VPA可以對應於記憶體裝置150中的記憶區塊60。如果在記憶體裝置150中的記憶區塊60之中存在壞塊,則虛擬閃存層VFL可以排除該壞塊。另外,虛擬閃存層VFL可以包括恢復演算法,該恢復演算法用於對掃描區域進行掃描以恢復記憶體裝置150中儲存的邏輯到虛擬位址映射資訊(L2V映射)和用於儲存用戶資料的資料區域中的映射資訊。恢復演算法能夠恢復邏輯到虛擬位址映射資訊(L2V映射)。基於透過恢復演算法而恢復的邏輯到虛擬位址映射資訊(L2V映射),虛擬閃存層VFL可以執行關於虛擬位址空間的位址轉換過程。
閃存介面層FIL可以將虛擬閃存層VFL的虛擬頁面位址轉換為記憶體裝置150的實體頁面位址。閃存介面層FIL執行用於與記憶體裝置150介面連接的低級操作。例如,閃存介面層FIL可以包括用於控制記憶體裝置150的硬體的低級驅動器、用於檢查和校正從記憶體裝置150發送的資料中的錯誤的錯誤校正碼(ECC)以及用於執行諸如壞塊管理(BBM)的操作的模組。
圖5示出根據本公開的實施例的支持預讀取操作的資料處理系統的第一示例。
參照圖5,資料處理系統100可以包括主機102和多個記憶體系統(快SSD、慢SSD)110A、110B。主機102可以透過預讀取操作來獲取多個記憶體系統110A和110B中儲存的資料。多個記憶體系統110A、110B可以具有不同的輸入/輸出性能。
主機102中的應用程式302可以生成用於獲取多個記憶體系統110A、110B中儲存的資料的讀取命令。主機102中的緩衝器高速緩存(頁面高速緩存)304可以臨時儲存應用程式302生成的資料或臨時儲存應用程式302請求的資料。例如,當應用程式302生成讀取命令時,讀取命令被發送到多個記憶體系統110A、110B之中的一個。多個記憶體系統110A、110B之中的一個可以接收相應的讀取命令。當多個記憶體系統110A、110B之中的一個向主機102輸出與讀取命令相對應的資料時,主機102可以將資料儲存在緩衝器高速緩存304中。應用程式302可以使用緩衝器高速緩存304中儲存的相應資料。在此過程中,應用程式302可以等待與讀取命令相對應的資料,而不執行額外的操作。這可能會降低資料處理系統100的資料輸入/輸出性能。
為了提高資料處理系統110的資料輸入/輸出性能,主機102中的預讀取控制電路306可以執行預讀取操作以提前獲取應用程式302未請求但很快會從多個記憶體系統110A、110B請求的資料,並且將獲得的資料儲存在緩衝器高速緩存304中。
主機102中的文件系統308和虛擬文件系統310可以將應用程式302生成的資料與主機102使用的位址系統和多個記憶體系統110A、110B中包括的儲存空間相關聯。這裡,文件是一批或一組諸如程式或資料的資訊。例如,文件是“連續串聯的字節”。因為文件沒有特定的結構並且資訊/資料以字節為單位連續連接,所以文件的起始位置和偏移量可以利用以字節為單位的位址來指定。另一方面,用於儲存資料或資訊的空間可以被描述為磁碟。磁碟可以以固定塊為單位儲存資料,並且所有磁碟的輸入和輸出都可以以扇區為單位進行。通常,塊的大小可以為512位。資料或資訊可以以字節為單位進行配置,但是磁碟可以以塊而不是以字節為單位來儲存資料。因此,文件系統308可以執行磁碟的文件和塊之間的連接和匹配操作。
多個記憶體系統110A、110B中包括的資料儲存空間可以支持以頁面為單位的資料讀取或編程操作,但是資料擦除操作可以以記憶區塊為單位執行。虛擬文件系統310可以建立、管理和控制文件系統308和多個記憶體系統110A、110B之間的連接關係。
主機102中的預讀取控制電路306可以執行用於提前獲得多個記憶體系統110A、110B中儲存的資料的預讀取操作並且將預讀取的資料儲存在緩衝器高速緩存304中。由預讀取控制電路306執行的預讀取操作可以基於預讀取的資料是儲存在多個記憶體系統110A、110B之中具有較快的資料輸入/輸出速度的第一記憶體系統110A中還是具有較慢的資料輸入/輸出速度的第二記憶體系統110B中而以不同速度來執行。因此,當應用程式302處理資料的速度(即,從緩衝器高速緩存304獲取資料的速度)較快時,預讀取控制電路306需要以較快的速度獲取或獲得預讀取的資料。如果資料儲存在第一記憶體系統110A中,則可以較快地執行預讀取操作。另一方面,當應用程式302處理資料的速度不快時,預讀取控制電路306具有足夠操作裕度來進行預讀取操作,從而可以容易地獲取預讀取的資料。這樣的資料可以儲存在第二記憶體系統110B中。
根據實施例,當主機102與具有不同資料輸入/輸出速度的多個記憶體系統110A、110B互通時,主機102中的預讀取控制電路306可以跟蹤預讀取的資料並且確定預讀取的資料的資料屬性。基於資料屬性,文件系統308和虛擬文件系統310可以確定預讀取的資料儲存在第一記憶體系統110A和第二記憶體系統110B中的哪一個中。例如,文件系統308和虛擬文件系統310可以將預讀取的資料從第一記憶體系統110A遷移到第二記憶體系統110B,反之亦然。
圖6示出根據本公開的實施例的資料處理系統中的主機的第一示例。具體地,圖6描述了主機102包括Linux內核結構的示例。
參照圖6,主機102可以包括:應用程式402,被配置為生成針對資料的讀取命令;虛擬文件系統管理器406,被配置為控制虛擬文件系統(VFS);預讀取控制電路408,被配置為執行預讀取操作以獲得與虛擬文件系統(VFS)相結合地儲存在記憶體系統中的資料;頁面高速緩存記憶體410,被配置為臨時儲存預讀取的資料;文件系統412,被配置為檢查應用程式402請求的讀取資料的位置並且生成相關資訊;裝置映射器414,被配置為將文件系統412識別的實體位址映射到更高等級的虛擬塊裝置;輸入/輸出調度器416,被配置為確定或改變資料輸入/輸出操作的序列或順序並且將資源分配給資料輸入/輸出操作;以及塊裝置驅動器418,被配置為執行與記憶體系統的資料通信以用於資料輸入/輸出操作。在本文,虛擬塊裝置可以被認為是與應用程式的介面,該介面對這些應用程式呈現為記憶體裝置,諸如標準塊裝置。虛擬塊裝置與附加元件交互來以塊為單位對文件進行資料去重(deduplication),使得使用虛擬塊裝置存取的一個或多個文件具有一個或多個文件共享的至少一個塊。
主機102中的應用程式402可以生成發送到記憶體系統110的讀取命令RD_CMD。系統調用控制電路404可以生成與讀取命令RD_CMD相對應的調用或事件。調用或事件可以被理解為多個功能或模組在主機102中相互通信的信令機制。
主機102中的虛擬文件系統管理器306提供通用文件模型,以便各種類型的文件系統可以通用。主機102可以根據製造商或操作系統(OS)使用各種文件系統中的至少一種。例如,當主機102包括作為操作系統的微軟的Windows時,可以使用諸如MS-DOS、VFAT或NTFS的微軟文件系統。如果主機102包括Apple的操作系統,則可以使用諸如Apple Macintosh (HFS)的文件系統。儘管主機102使用的文件系統可以是多種多樣的,但是虛擬文件系統管理器306可以提供通用文件模型。因此,當透過虛擬文件系統(VFS)進行轉換時,無論主機102使用什麼文件系統,都可以統一諸如記憶體系統的儲存空間中的資料儲存和輸出。
根據實施例,圖6所示的文件系統412可以對應於參照圖5描述的文件系統308。
裝置映射器414可以形成邏輯卷管理器(LVM)、基於軟體的廉價或獨立磁碟冗陣列(RAID)、磁碟加密等的基礎。進一步,裝置映射器414可以執行附加功能,諸如文件系統快照。在此,RAID可以用於創建多個實體磁碟並且將其用作一個邏輯磁碟以降低成本和提高可靠性,並且包括可以用於保護資料和提高磁碟性能的獨立可用儲存裝置。基於軟體的RAID可以利用主機102中的操作系統、程式等來支持對儲存空間的管理和控制。
支持預讀取操作的主機102可以包括預讀取控制電路408。預讀取控制電路408可以基於虛擬文件系統(VFS)來選擇預讀取資料。預讀取控制電路408可以將預讀取資料儲存在頁面高速緩存記憶體410中。在此,頁面高速緩存記憶體410可以是用於透過減少透過虛擬閃存層(VFL)對諸如記憶體系統的儲存空間的存取來提高資料輸入/輸出(I/O)性能的記憶體區域。預讀取控制電路408可以將一次讀取的文件儲存在頁面高速緩存記憶體410中。當出現透過系統調用控制電路404對相同的資料(例如,讀取命令)的存取時,可以從頁面高速緩存記憶體410讀取和傳遞資料,而不是從記憶體系統的儲存空間讀取相應的資料等。
當主機102的應用程式402生成針對特定文件的偏移量的讀取命令時,預讀取控制電路408可以首先檢查與讀取命令相對應的資料是否儲存在頁面高速緩存記憶體410中。存在兩種情況。當相應的資料被高速緩存在頁面高速緩存記憶體410中時,頁面高速緩存命中。當相應的資料未被高速緩存時,頁面高速緩存出錯。在這兩種情況下,讀取命令的後續處理會不同。
首先,在頁面高速緩存命中的情況下,可以回應於主機102的讀取命令RD_CMD將頁面高速緩存記憶體410中儲存的資料發送到主機102的應用程式402。可以快速終止與讀取命令RD_CMD相對應的讀取操作,或者可以不在記憶體系統110內執行讀取操作。相反,在頁面高速緩存出錯的情況下,預讀取控制電路408可以基於與讀取命令RD_CMD相對應的文件等級資訊生成用於讀取資料的結構(例如,塊輸入輸出結構(bio structure)、請求結構等)。例如,塊輸入輸出(Block I/O)結構是將若干塊組成用於資料處理的區段的結構,該區段可以被認為是資料輸入/輸出(IO)的基本單元。塊輸入輸出結構可以包括關於執行資料I/O的塊裝置驅動器418的資訊和關於儲存與資料I/O相關聯的資料的記憶體區域的資訊。預讀取控制電路408可以透過塊輸入輸出(Block I/O)結構請求針對諸如記憶體系統的儲存空間中儲存的資料的輸入/輸出操作。從諸如記憶體系統的儲存空間傳送的資料可以儲存在頁面高速緩存記憶體410中。當預讀取控制電路408從頁面高速緩存記憶體410輸出與讀取命令RD_CMD相對應的資料時,可以完成讀取操作。
預讀取檢測電路420可以計算接收到主機102的應用程式402發送的讀取命令RD_CMD與完成預讀取操作之間的時間差。借此,預讀取檢測電路420可以基於預讀取命中還是未命中,透過預讀取操作計算或估計資料輸入/輸出操作減少了多長時間。預讀取檢測電路420可以基於接收到讀取命令RD_CMD與完成預讀取操作之間的時間差或預讀取操作減少的時間來確定覆蓋率。例如,時間差越小,覆蓋率越低。時間差越大,覆蓋率越高。
根據實施例,預讀取檢測電路420可以計算與讀取命令RD_CMD相對應的資料的大小。
基於預讀取檢測電路420計算的值,高速緩存記憶體控制器422可以確定預讀取操作的開始時間、透過預讀取操作獲得的資料的大小等。基於預讀取檢測電路420計算的值,可以確定預讀取資料的優先級。當確定資料需要較快地輸出到主機102中的應用程式402時,預讀取控制電路408可以確定預讀取資料儲存在具有較快的資料輸入/輸出速度的儲存裝置或儲存空間中。另一方面,當確定資料不需要較快地輸出到主機102中的應用程式402時,預讀取控制電路408可以確定預讀取資料儲存在具有較慢的資料輸入/輸出速度的儲存裝置或儲存空間中。
根據實施例,預讀取檢測電路420可以計算預讀取資料的覆蓋率,以使得在預讀取資料的覆蓋率較低時預讀取資料可以被儲存在第一高速緩存記憶體中,第一高速緩存記憶體能夠執行較快的操作。相反,當預讀取檢測電路420計算的覆蓋率增加時,預讀取資料可以被儲存在具有較低的資料輸入/輸出性能的第二高速緩存記憶體中。
圖7示出根據本公開的實施例的資料處理系統中的主機的第二示例。具體地,圖7示出主機102包括基於窗口的結構的示例。
參照圖7,主機102中的應用程式502可以生成用於獲取資料的讀取命令。為了主機102中操作系統的安全性和兼容性,可以阻止應用程式502直接調用內核系統資源。代替應用程式502,子系統(或系統DLL)504可以支持為應用程式502調用內核。回應於子系統504生成的內核調用,可以透過系統服務分配器506來確定系統資源的分配。例如,系統服務分配器506可以包括調度器。系統服務分配器506可以分配回應於子系統504的調用將使用的系統資源。例如,系統服務分配器506可以基於系統支持的使用效率、吞吐量、返回時間、等待時間、回應時間等來分配系統資源。
主機102中包括的文件系統512可以對應於圖5中描述的文件系統308和圖6描述的文件系統412。預讀取控制電路508可以對應於參照圖6描述的預讀取控制電路408。預讀取檢測電路520可以對應於參照圖6描述的預讀取檢測電路420。
在運行應用程式502時,主機102中包括的核心內核516可以提供應用程式502所請求的系統資源。核心內核516可以有效地管理包括主機102中的硬體的有限的系統資源,以執行由應用程式502執行的進程。核心內核516可以支持安全性、資源管理等。
主機102中的硬體抽象層(HAL)518用作主機102中包括的實體硬體和在主機102上運行的諸如操作系統(OS)的軟體之間的橋樑。主機102中包括的硬體和諸如與主機102接合的記憶體系統110的外圍裝置可以以各種形式來實施。針對各種類型的硬體設計或實施諸如操作系統(OS)的軟體可能效率不高。因此,硬體抽象層518可以建立抽象結構,以使得軟體可以識別和使用各種類型和結構的硬體,而不管硬體類型和結構之間的實體差異如何。透過使用硬體抽象層518設置的抽象結構,軟體可能不需要基於硬體和外圍裝置的個體特性來有區別地存取硬體和外圍裝置。
主機102中的裝置驅動器514可以對應於參照圖6描述的裝置映射器414、輸入/輸出調度器416和塊裝置驅動器418。預讀取檢測電路520可以確定透過預讀取操作獲得的預讀取資料的資料屬性,並且將預讀取資料的資料屬性發送到高速緩存記憶體控制器522。這裡,預讀取資料的資料屬性可以由覆蓋率或延遲敏感度來確定。高速緩存記憶體控制器522可以回應於預讀取資料的資料屬性在儲存裝置中確定裝置驅動器514可以儲存預讀取資料的位置。這裡,儲存裝置可以包括具有不同資料輸入/輸出性能的多個記憶體區域或多個記憶體系統。
圖8示出根據本公開的實施例的資料處理系統中的主機的第三示例。
參照圖8,主機102可以基於虛擬化技術在單個計算裝置中同時運行多個操作系統。主機102可以包括操作系統(OS)以及客戶操作系統(Guest OS)602,客戶操作系統(Guest OS)602是安裝在用於主機102中包含的不同於操作系統(OS)的另一操作系統的分區磁碟或虛擬機上的軟體。
主機102可以包括管理程序604。管理程序604可以被理解為能夠調度單個計算裝置(實體機)上的多個操作系統(OS)的軟體。管理程序604可以大致分為兩種類型。一種是只透過管理程序604操作而無需計算裝置中安裝的操作系統的本地型,而另一種是利用計算裝置中安裝的操作系統來運行管理程序604的託管型。管理程序604是託管型。託管型管理程序604的示例包括基於仿真的(emulation-based)QEMU和基於仿真的(simulation-based)KVM。仿真意味著將主機102中不存在的硬體和架構作為服務提供給虛擬機。模擬意味著基於主機102中存在的硬體和架構向虛擬機提供服務。
根據實施例,主機102可以包括預讀取控制電路608和頁面高速緩存記憶體610。預讀取控制電路608可以對應於圖5中描述的預讀取控制電路306、圖6中描述的預讀取控制電路408或圖7中描述的預讀取控制電路508。預讀取控制電路608可以包括預讀取檢測電路。頁面高速緩存記憶體610可以對應於參照圖6描述的頁面高速緩存記憶體410或參照圖8描述的頁面高速緩存記憶體610。
主機102可以包括虛擬磁碟鏡像文件管理器612。虛擬磁碟鏡像文件管理器612可以對應於參照圖6描述的文件系統412和參照圖7描述的文件系統512。根據實施例,虛擬磁碟鏡像文件管理器612可以使用擴展文件系統(版本4),其是Linux日誌文件系統的改進版本。
主機102可以包括文件-邏輯位址映射管理器614。當虛擬磁碟鏡像文件管理器612從虛擬磁碟鏡像文件管理器612接收到用於將作為連續級聯的字節的文件映射到邏輯位址(LBA)的請求(文件映射,①)時,文件-邏輯位址映射管理器614可以將文件映射到邏輯位址(LBA)。預讀取控制電路608可以基於文件-邏輯位址映射管理器614分配的邏輯位址(LBA)來收集關於文件的讀取資訊。這裡,讀取資訊可以包括文件或資料的大小、預讀取屬性(預讀取資料的資料屬性)等。例如,資料的大小(I/O大小)可以基於根據文件大小依次映射的邏輯位址的數量來確定。如果在透過預讀取操作獲得相應的資料之後透過計算覆蓋率確定了與覆蓋率相對應的預讀取屬性,則可以將預讀取屬性分配給與預讀取資料相關聯的邏輯位址。預讀取控制電路608可以確定預讀取資料的預讀取屬性並且可以檢查先前確定的預讀取資料的預讀取屬性。
主機102可以包括高速緩存記憶體管理器622。高速緩存記憶體管理器622可以從儲存空間110C、110D檢索與讀取命令相對應的讀取資料,該讀取命令由虛擬磁碟鏡像文件管理器612和文件-邏輯位址映射管理器614處理。文件-邏輯位址映射管理器614可以根據預讀取屬性將用於從儲存空間110C、110D提前獲得資料的請求(升級命令,③)發送到高速緩存記憶體管理器622。高速緩存記憶體管理器622可以回應於從文件-邏輯位址映射管理器614發送的請求從儲存空間110C、110D獲得資料並且將讀取的資料儲存在高速緩存記憶體中。
高速緩存記憶體管理器622可以支持多級高速緩存層次結構。回應於從文件-邏輯位址映射管理器614轉發的請求,高速緩存記憶體管理器622可以支持降級和升級。降級是在多級高速緩存層中執行獨佔高速緩存以減少相同資料在多級的重複複製的操作。升級是在多級高速緩存層中執行獨佔高速緩存以使用自適應概率濾波技術來降低降級的開銷的操作。可以調整或改變高速緩存記憶體管理器622支持的降級和升級以提高預讀取操作的效率。
主機102可以與具有不同資料輸入/輸出速度的多個記憶體系統110C、110D互通。多個記憶體系統110C和110D之中的第三記憶體系統(Optane Cache SSD)110C可以包括Optane記憶體。根據實施例,Optane記憶體可以包括揮發性記憶體和非揮發性記憶體。Optane記憶體的資料輸入/輸出速度可以比高速緩存記憶體的資料輸入/輸出速度更慢,但比第四記憶體系統(QLC SSD)110D的資料輸入/輸出速度更快。高速緩存記憶體管理器622可以將元資料資訊、高速緩存資訊等儲存在具有較快的資料輸入/輸出速度的第三記憶體系統110C中。另一方面,高速緩存記憶體管理器622可以將用戶資料儲存在具有比第三記憶體系統110C的資料輸入/輸出速度更慢的資料輸入/輸出速度的第四記憶體系統110D中。根據實施例,主機102可以根據資料的類型確定是否將相應的資料儲存在多個記憶體系統110C、110D之中具有較快或較慢的資料輸入/輸出速度的位置。
圖9示出支持預讀取操作的資料處理系統的第二示例。在圖5所示的實施例中,資料處理系統100中的主機102可以執行預讀取操作。但是,在圖9描述的實施例中,資料處理系統110的主機102和記憶體系統110都可以單獨執行預讀取操作。
參照圖9,資料處理系統100可以包括主機102和記憶體系統110。主機102可以透過預讀取操作獲得記憶體系統110中儲存的資料。進一步,記憶體系統110還可以回應於來自主機102的請求執行另一預讀取操作。
記憶體系統110可以包括記憶體裝置150和控制器130,記憶體裝置150包括多個非揮發性記憶體單元,控制器130能夠控制在記憶體裝置150中執行的資料輸入/輸出操作並且執行預讀取操作以提前從記憶體裝置150獲得資料。記憶體裝置150可以包括具有不同資料輸入/輸出性能的多個儲存區域342、344。多個儲存區域342、344之中的第一儲存區域342可以包括單層單元塊(SLC),單層單元塊(SLC)能夠在其中包括的單個非揮發性記憶體單元中儲存一位資料。在多個儲存區域342、344之中,第二儲存區域344可以包括多層單元塊(MLC),多層單元塊(MLC)能夠在其中包括的單個非揮發性記憶體單元中儲存多位資料。作為多層單元塊(MLC)的示例,存在四層單元塊(QLC),四層單元塊(QLC)在其中包括的單個非揮發性記憶體單元中儲存4位資料。
主機102中的應用程式302可以生成用於獲取記憶體系統110中儲存的資料的讀取命令。主機102中的緩衝器高速緩存(頁面高速緩存)304可以臨時儲存應用程式302生成的資料或者臨時儲存應用程式302請求的資料。例如,在應用程式302生成讀取命令之後,可以將讀取命令發送到記憶體系統110。當記憶體系統110向主機102發送與讀取命令相對應的資料時,主機102可以將發送的資料儲存在緩衝器高速緩存304中。應用程式302可以使用緩衝器高速緩存304中儲存的資料。在此過程中,如果應用程式302沒有執行另一操作,而是等待與讀取命令相對應的資料,這可能會降低資料處理系統100的資料輸入/輸出性能。
為了提高資料處理系統100的資料輸入/輸出性能,主機102中的預讀取控制電路306可以執行用於提前獲得資料的預讀取操作以將資料儲存在緩衝器高速緩存304中。這裡,應用程式302可能未請求預讀取資料但是估計很快會請求預讀取資料,這可以基於應用程式302生成的與讀取命令相對應的資料來確定。
主機102中的文件系統308和虛擬文件系統310可以將應用程式302生成的資料與主機使用的位址系統以及記憶體系統110中包括的資料儲存空間的位置相關聯。
記憶體系統110可以從主機102接收讀取命令。記憶體系統110中的控制器130可以包括主機介面和閃存轉換層332。主機介面和閃存轉換層332可以分別對應於參照圖2至圖4描述的主機介面132和閃存轉換層240。
控制器130中的預讀取控制電路336可以回應於從主機102發送的讀取命令,提前讀取記憶體裝置150中儲存的資料並且將預讀取資料儲存在緩衝器334中。主機102可以回應於應用程式302生成的讀取命令執行預讀取操作,以便主機102可以將針對待透過預讀取操作獲取的資料的讀取命令發送到記憶體系統110。因為主機102和記憶體系統110可以單獨執行預讀取操作,所以由主機102中包括的預讀取控制電路306獲得的預讀取資料和透過記憶體系統110中包括的預讀取控制電路336獲得的預讀取資料可以相同或不同。然而,如果主機102和記憶體系統100基於相同應用程式302生成的讀取請求或讀取命令執行預讀取操作,則預讀取控制電路306和預讀取控制電路336獲得的預讀取資料更可能是相同的。當記憶體系統110不執行預讀取操作時,主機102的預讀取操作可能由於記憶體系統110的內部操作所需的時間而延遲,直到輸出與從主機發送的讀取命令相對應的資料。基於從主機102發送的讀取命令和與讀取命令相對應的邏輯位址,映射電路338可以將關於屬預讀取操作的資料的資訊從記憶體裝置150發送到預讀取控制電路336。預讀取控制電路336可以基於從映射電路338發送的資訊而執行預讀取操作。
另一方面,預讀取控制電路336可以基於透過預讀取操作提前獲得記憶體裝置150中儲存的預讀取資料並且將其儲存在緩衝器334中的第一時間點以及將預讀取資料發送到主機102的第二時間點來確定預讀取資料的覆蓋率。當沒有從主機102發送資料輸入/輸出命令時(例如,處於空閒狀態),預讀取控制電路336可以根據覆蓋率遷移或改變預讀取資料的儲存位置。例如,需要較快的資料輸入/輸出的資料可以儲存在多個儲存區域342、344之中的第一儲存區域342中。不需要較快的資料輸入/輸出的資料可以儲存在多個儲存區域342、344之中的第二儲存區域344中。
圖10示出根據本公開的實施例的支持預讀取功能的記憶體系統的示例。
參照圖10,記憶體系統可以包括控制器130和記憶體裝置150。控制器130可以包括主機介面132、閃存轉換層240和記憶體介面142。記憶體裝置150可以包括具有不同資料輸入/輸出速度的多個記憶體區域182、184、186。在多個記憶體區域182、184、186之中,第一記憶體區域(快閃存)182可以具有比第二記憶體區域(慢閃存)184和第三記憶體區域(慢閃存)186的資料輸入/輸出速度更快的資料輸入/輸出速度。
控制器130中的主機介面132和記憶體介面142可以分別對應於參照圖2至圖3描述的主機介面132和記憶體介面142。
控制器130內的閃存轉換層240可以包括處理器280、資料緩衝器282、垃圾收集管理器284、高速緩存記憶體管理器286以及緩衝器管理和預讀取控制器288。緩衝器管理和預讀取控制器288可以包括預讀取檢測電路290或與預讀取檢測電路290相關聯。處理器280可以對應於參照圖2描述的處理器134。而且,資料緩衝器282可以是參照圖2描述的記憶體144中設立的區域。
垃圾收集管理器284可以對記憶體裝置150中的多個記憶體區域182、184、186之中包括的記憶區塊執行垃圾收集。當將記憶區塊中儲存的有效資料遷移到新的空閒塊時,垃圾收集管理器284可以反映由緩衝器管理和預讀取控制器288確定的預讀取屬性,並且基於預讀取屬性將有效資料傳送到多個記憶體區域182、184、186中的一個。
緩衝器管理和預讀取控制器288可以逐出資料緩衝器282中儲存的資料或將提前從記憶體裝置150獲得的資料儲存在資料緩衝器282中。緩衝器管理和預讀取控制器288可以提前讀取記憶體裝置150中儲存的資料(而沒有接收到與資料相對應的讀取命令)並且將資料儲存在資料緩衝器282中。緩衝器管理和預讀取控制器288中的預讀取檢測電路290可以識別提前讀取相應資料的第一時間點。當緩衝器管理和預讀取控制器288回應於來自主機102的請求輸出資料緩衝器282中儲存的資料時,可以逐出相應資料。緩衝器管理和預讀取控制器288中的預讀取檢測電路290可以識別將相應資料發送到主機102的第二時間點。
緩衝器管理和預讀取控制器288中包括的預讀取檢測電路290可以基於第一時間點和第二時間點確定覆蓋率。預讀取檢測電路290可以基於覆蓋率確定預讀取資料的預讀取屬性。高速緩存記憶體管理器286可以基於覆蓋率來修改或保持元資料或預讀取資料的預讀取屬性。當高速緩存記憶體管理器286修改了相應資料的元資料時,垃圾收集管理器284可以基於預讀取屬性確定相應資料儲存在哪個記憶體區域中。
圖11示出根據本公開的實施例的適用於虛擬文件系統的資料結構。可以在記憶體系統110使用的虛擬文件系統(VFS)中設置各種類型的資料結構。作為示例,在圖11中,將描述可以在塊裝置中用於資料輸入/輸出的塊輸入輸出結構602。這裡,塊裝置可以被認為是支持在固定大小的塊、扇區或集群中讀取和(可選地)寫入資料的資料儲存裝置。
用於存取記憶體系統110中儲存的資料的最小單位可以被定義為扇區,扇區可以根據記憶體裝置150的配置來確定。通常,扇區的大小可以為512字節。當記憶體裝置150儲存大量資料時,可以增加扇區的大小。在圖6中描述的塊裝置驅動器418支持的塊單元存取中,塊被認為是扇區的倍數。根據記憶體系統110使用的文件系統,塊可以具有不同的大小。例如,塊的大小可以是512B、1KB、2KB或4KB,並且每個塊可以由連續的扇區組成。
通常,可以將塊設置為等於或小於記憶體裝置150中的頁面的大小。如果塊的大小大於頁面606的大小,則控制器130將執行附加操作以控制資料輸入/輸出操作。這是因為記憶體裝置150可以支持基於頁面的輸入/輸出。
在控制器130執行與記憶體裝置150的資料輸入/輸出(I/O)操作時,區段可以指示用於儲存資料的區域。例如,區段可以指示參照圖6描述的頁面高速緩存記憶體410中的部分區域。一個塊可以位於記憶體裝置150中的同一頁面中,但是可以對多個塊執行控制器130和記憶體裝置150之間的資料輸入/輸出操作。因此,區段可以對應於單個頁面或多個頁面中儲存的資料。
參照圖2至圖3,控制器130和記憶體裝置150之間的資料輸入/輸出操作可以包括將記憶體144中儲存的資料傳送到記憶體裝置150的操作(編程),或者將記憶體裝置150中儲存的資料傳送到記憶體144的操作(讀取)。當對多個塊執行資料輸入/輸出操作時,與多個塊相對應的資料可以不儲存在記憶體裝置150中的連續頁面(即,連續位置)中。
參考圖11,控制器130可以生成用於以塊為單位執行資料輸入/輸出操作的塊輸入輸出結構602。例如,在對單個塊進行資料輸入/輸出操作的情況下,塊輸入輸出結構602可以具有一個塊輸入輸出。然而,在對多個塊進行資料輸入/輸出操作的情況下,塊輸入輸出結構602可以具有塊輸入輸出陣列結構bio_vec 604。塊輸入輸出陣列結構bio_vec 604可以對應於記憶體裝置150中的不同頁面606。例如,與塊輸入輸出陣列結構(bio_vec,604)相對應的資料可以儲存在記憶體裝置150中的連續位置中,或者可以儲存在彼此分開的不同位置中。
塊輸入輸出結構602可以使用塊輸入輸出陣列結構bio_vec 604來儲存區段。區段可以以頁面的形式來儲存並且可以包括與其相關的資訊。記憶體系統110可以在單個資料輸入/輸出操作中輸入/輸出與多個區段相對應的資料。因此,塊輸入輸出結構602可以透過塊輸入輸出陣列結構bio_vec 604來支持資料輸入/輸出操作。
圖12示出根據本公開的實施例的預讀取操作的第一示例。
參照圖12,記憶體裝置150中儲存的資料File Blks可以以塊為單位排列。在圖12中,每個塊大小的資料被顯示為單個框(即,塊)。
例如,控制器130會回應於將發送到記憶體裝置150的讀取命令RD_CMD存取記憶體裝置150中儲存的資料(File Blks)之中的第一塊blk0到第四塊blk3。在第一時間點T1讀取第一塊blk0(Read Blk0)之後,控制器130可以從第二塊blk1到第四塊blk3讀取資料,並且將讀取的資料儲存在圖9所示的緩衝器334中包括的頁面緩衝記憶體中。當回應於從外部裝置發送的讀取命令RD_CMD輸出與第二塊Blk1相對應的資料時,可以基於第二塊Blk1(第二塊Blk1被斜線標記)中包括的資訊來觸發預讀取操作RA。第二塊blk1可以包括關於對雙倍大小的資料(即,從第5塊到第12塊的8個塊)的預讀取操作的資訊。控制器130可以在第二時間點T2獲取第二塊blk1中儲存的資訊(Read Blk1)並且基於該資訊將預讀取命令發送到記憶體裝置150。
在回應於預讀取命令從記憶體裝置150獲取第五塊blk4的資料(Read Blk4)之後,可以回應於從外部裝置發送的讀取命令RD_CMD在時間點T5輸出與第五塊blk4相對應的資料。當與第五塊blk4相對應的資料被輸出到主機102時,可以基於在第五塊blk4中包括的觸發資訊來觸發另一個預讀取操作RA。第五塊blk4可以包括關於對雙倍大小的資料(即,從第13塊到第28塊的16個塊)的預讀取操作的觸發資訊。對於預讀取操作,控制器130可以將預讀取命令發送到記憶體裝置150。
根據實施例,當控制器130可以在頁面緩衝記憶體(或頁面高速緩存記憶體)410、610中找到與從外部裝置發送的讀取命令RD_CMD相對應的資料(即,頁面高速緩存命中)時,可以執行另一預讀取操作。此外,在發生頁面高速緩存命中時,透過預讀取操作獲得的預讀取資料的大小可以被加倍。控制器130可以提前從記憶體裝置150讀取資料以將透過預讀取操作獲得的資料輸出到外部裝置。控制器130可以回應於預讀取命令順序地或連續地存取和讀取相關資料,並且將存取的資料儲存在頁面緩衝記憶體410、610中。
圖13示出根據本公開的實施例的預讀取操作的第二示例。
參照圖13,記憶體系統110可以設立和管理兩個窗口(當前窗口、提前窗口)以執行流水線預讀取操作。這兩個窗口可以分為當前窗口和提前窗口。例如,在可以在當前窗口中執行回應於從主機102的應用程式302發送的讀取命令RD_CMD的資料輸入/輸出操作時,記憶體系統110可以在提前窗口中不同步執行預讀取操作。當用於回應於讀取命令RD_CMD的資料輸入/輸出操作的窗口從當前窗口改變為提前窗口時,提前窗口可以被認為是當前窗口。進一步,記憶體系統110可以設置新的提前窗口,然後可以在新的提前窗口中不同步執行另一預讀取操作。
此外,可以根據記憶體系統110設置新的提前窗口的時間來改變預讀取操作的執行。參照圖11,基於相對於與特定塊相對應的資料發生頁面高速緩存命中的時間點,記憶體系統110可以設置新的提前窗口並且確定是否執行新的預讀取操作。
圖14示出根據本公開的實施例的預讀取操作的第三示例。
參照圖14,記憶體系統110可以僅設置和管理一個窗口(預讀取窗口)而不是兩個窗口(當前窗口、提前窗口)以透過流水線執行預讀取操作。而且,記憶體系統110可以設置不同步大小變量(async_size),不同步大小變量用於確定不同步執行的預讀取操作的開始時間或頻率。當頁面緩衝記憶體410、610中尚未消耗(例如,主機102未使用)的預讀取資料的頁面數量低於預設閾值時,記憶體系統110可以執行另一預讀取操作。該方法可以支持記憶體系統110僅在單個預讀取窗口中執行流水線預讀取操作。
具體地,在單個窗口(預讀取窗口)中可以包括用於下一個預讀取操作的觸發器或標誌。參照圖14,觸發器或標誌PG_readahead page可以被添加到透過從開始位置(start)增加提前讀取的資料的大小(例如,頁面數量)並且從增加後的值中減去不同步大小變量(async_size)而獲得的位置(start+size - async_size)。如果記憶體系統110將與被標記的頁面(例如,利用觸發器或標誌標記)相對應的資料輸出到外部裝置,則記憶體系統110可以執行另一預讀取操作。
參照圖12至圖14,記憶體系統110可以設立至少一個用於執行預讀取操作的窗口或在至少一個窗口中有區別地***標記、觸發器或標誌。因此,由記憶體系統110執行的預讀取操作的效率和性能可能存在差異。
圖15示出根據本公開的實施例的為預讀取操作分配的資料指示符。
參照圖15,預讀取控制電路408、508、336可以標記或設置關於預讀取資料的各種狀態。例如,可能不會出現針對在頁面高速緩存記憶體410、610或緩衝器334中準備的預讀取資料的讀取命令。在這種情況下,可以將頁面高速緩存記憶體410、610或緩衝器334中的預讀取資料的資料指示符設置為指示即使已經提前讀取資料但未使用資料的未命中狀態(空)。如果生成了針對預讀取資料的讀取命令,但尚未回應於讀取命令完全輸出資料,則可以將相應資料的資料指示符設置為輸出等待狀態(Not UpToDate)。此後,當回應於針對相應資料的讀取命令完全輸出資料時,可以將相應資料的資料指示符設置為輸出結束狀態(UpToDate)。
根據實施例,預讀取控制電路408、508、336可以改變頁面高速緩存記憶體410、610或緩衝器334中的預讀取資料的資料指示符(狀態轉換)。基於資料指示符的改變,預讀取檢測電路420、520、290可以計算關於預讀取資料的覆蓋率。
圖16示出根據本公開的實施例的基於資料覆蓋率的與預讀取操作相關聯的窗口大小的改變。
參照圖12至圖14和圖16,預讀取操作窗口的初始設置可以增大兩倍(實線)。然而,記憶體系統110可以回應於覆蓋率來確定預讀取資料的優先級,並且根據優先級將預讀取資料儲存在多個高速緩存記憶體中的一個中。預讀取資料的覆蓋率可能不全相同。因此,如果儲存預讀取資料的位置根據預讀取資料的優先級而改變,則頁面高速緩存記憶體410、610中儲存的預讀取資料的大小可以逐漸增大,而不是加倍(虛線)。
因為記憶體系統110的內部配置和資源有限,所以為頁面高速緩存記憶體410、610分配的資源也會是有限的。因此,當為預讀取操作消耗的內部資源的消耗逐漸增加時,記憶體系統110可以容易地將有限的資源用於其他目的或分配有限的資源用於其他目的,從而可以提高或增強記憶體系統110的性能。
在下文中,將參照圖17和圖19描述記憶體系統110的預讀取操作的改進和效果。
圖17示出不支持預讀取操作的記憶體系統。
參照圖17,在記憶體系統不執行預讀取操作的情況下,記憶體系統可以回應於讀取命令來讀取和發送資料。在記憶體系統回應於讀取命令發送讀取資料之後,主機的應用程式可以處理所發送的資料。如圖1中所述,主機應用程式可能因為等待與讀取命令相對應的資料而不會連續不斷地處理資料。主機應用程式的處理時間C
1、C
2、C
3可以延遲操作裕度IO_S
1、IO_S
2、IO_S
3,以用於記憶體系統回應於讀取命令讀取和發送資料。
圖18示出了根據本公開的實施例的以塊為單位執行預讀取操作的記憶體系統。這裡,根據實施例,可以以塊、文件等為單位來確定透過預讀取操作獲得的預讀取資料的大小。
參照圖18,記憶體系統可以執行預讀取操作,但是記憶體系統和資料緩衝器具有較慢的資料輸入/輸出性能。
當主機中的應用程式發送預讀取命令RA或記憶體系統檢測到順序存取應用程式透過讀取命令所請求的資料、文件或塊的模式時,記憶體系統可以執行預讀取操作以提前獲得資料(準備資料)。這樣,就可以隱藏在記憶體系統中輸入/輸出資料所需的時間和操作裕度,從而可以較快地執行應用程式的操作,因為應用程式可以不用等待獲得資料。
在首先請求資料的情況下(①),在頁面高速緩存記憶體410、610中不存在資料,並且記憶體系統應該從非揮發性記憶體裝置(IO_S
1)中讀取資料,將讀取的資料儲存在緩衝器(Buf_S
1)中,並且將緩衝器中儲存的資料輸出到應用程式(S
1)。在執行這些過程時,記憶體系統可以執行關於經估計的資料的預讀取操作RA,該經估計的資料可以包括接下來可能被請求的第二資料。
在應用程式處理首先請求的資料時(C
1),記憶體系統可以從記憶體裝置(IO_S
2)讀取第二資料並且將第二資料儲存在緩衝器(Buf_S
2)中。當應用程式請求第二資料時(②),記憶體系統可以將緩衝器中已經準備好的第二資料輸出到應用程式。另外,記憶體系統可以執行關於再接下來可能被請求的第三資料的另一預讀取操作RA。在應用程式請求第二資料之後,應用程式可以不用等待用於記憶體系統中的I/O操作的操作裕度以得到第二資料,而是可以在沒有明顯延遲的情況下處理第二資料(C
2)。
例如,應用程式處理第二資料的時間(C
2)可以比處理其他資料的時間短。應用程式可以請求第三資料並且在處理第二資料(C
2)之後處理第三資料(③)。
例如,記憶體系統可以在內部為預讀取操作分配相同的資源,以便預讀取操作的操作速度或操作裕度可以相同。當應用程式可以請求第三資料(③)時,關於第三資料的預讀取操作可能沒有完成。也就是說,在記憶體系統中,從非揮發性記憶體裝置(IO_S
3)讀取第三資料並且將第三資料儲存在緩衝器(Buf_S
3)中的操作可能仍在進行中。在記憶體系統提前讀取第三資料、將第三資料儲存在緩衝器(Buf_S
3)並且將第三資料輸出到應用程式之後,應用程式就可以處理第三資料(C
3)。
在此過程中,對於第三資料,可能無法完全隱藏在記憶體系統內部執行的預讀取操作的操作裕度。也就是說,從應用程式請求第三資料的時間點(③)到處理第三資料的時間點(C
3),記憶體系統的預讀取操作的效果下降。在第三資料的情況下,由於預讀取操作,操作裕度會被減小從開始對第三資料進行預讀取操作的時間到請求第三資料的時間的時間段(④)。
參照圖9描述的預讀取檢測電路336可以計算從第一資料到第三資料的覆蓋率。在比較上述過程時,例如,比較從第一資料到第三資料的覆蓋率,第二資料的覆蓋率最大。第三資料的覆蓋率小於第二資料的覆蓋率但大於第一資料的覆蓋率。第一資料的覆蓋率可能是最小的。因此,當第三資料和第一資料位於(或遷移到)較快的資料緩衝器或資料高速緩存中時,可以提高記憶體系統的覆蓋率。為此,記憶體系統110可以將頻繁使用和頻繁存取的塊儲存在至少一個非揮發性高速緩存區域342中。
記憶體系統110可以執行預讀取操作並且計算作為預讀取操作的目標的塊單元資料的覆蓋率。基於覆蓋率,記憶體系統110可以將塊資料從記憶體裝置150複製或移動到至少一個非揮發性高速緩存區域342。至少一個非揮發性高速緩存區域342可以具有比記憶體裝置150中的其他區域344更高的資料輸入/輸出速度。
圖19示出根據本公開的實施例的透過預讀取操作來獲取具有不同優先級的資料的記憶體系統。
參照圖19,如參照圖18所描述的,記憶體系統110可以對第一資料至第三資料執行預讀取操作並且計算關於第一資料至第三資料的覆蓋率。第一資料至第三資料可以被複製或移動到具有較快的資料輸入/輸出速度的記憶體裝置150中,並且記憶體裝置150可以與諸如具有比另一高速緩存區域或其他區域344更快的資料輸入/輸出速度的至少一個非揮發性高速緩存區域342的資料緩衝器相關聯。
當應用程式請求第一資料時,在頁面高速緩存記憶體410、610中不存在第一資料。記憶體系統應該從非揮發性記憶體裝置(IO_S
1)中讀取資料,將讀取的資料儲存在緩衝器(Buf_S
1)中,並且將緩衝器中儲存的資料輸出到應用程式(S
1)。在執行這些過程時,記憶體系統可以執行關於經估計的資料的預讀取操作RA,該經估計的資料可以包括接下來可能被請求的第二資料。
在應用程式處理首先請求的資料時(C
1),記憶體系統可以從記憶體裝置讀取第二資料(IO_S
2)並且將第二資料儲存在緩衝器(Buf_S
2)中。當應用程式請求第二資料時,記憶體系統可以將緩衝器中已經準備好的第二資料輸出到應用程式。另外,記憶體系統可以執行關於再接下來可能被請求的第三資料的另一預讀取操作RA。在應用程式請求第二資料之後,應用程式可以不用等待用於記憶體系統中的I/O操作的操作裕度以得到第二資料,而是可以在沒有明顯延遲的情況下處理第二資料(C
2)。
如在圖18中描述的情況,應用程式處理第二資料的時間(C
2)可以比處理其他資料的時間更短。應用程式可以在處理第二資料(C
2)之後請求第三資料並且處理第三資料(C
3)。
因為記憶體系統110將第一資料至第三資料複製或移動到具有較快的資料輸入/輸出速度的記憶體裝置150中並且透過至少一個非揮發性高速緩存區域342輸出第一資料至第三資料。當應用程式在時間點C
3請求第三資料並且嘗試處理第三資料時,記憶體系統可以透過從非揮發性記憶體裝置(IO_S
3)讀取第三資料來提前準備第三資料並且將第三資料儲存在緩衝器(Buf_S
3)中。因此,當記憶體系統110將提前讀取的第三資料從緩衝器輸出到應用程式時,應用程式可以在沒有明顯延遲或等待的情況下處理第三資料(C
3)。在該方法中,對於第三資料,可以完全隱藏在記憶體系統110內部執行的預讀取操作的操作裕度。也就是說,可以根據預讀取操作的資料目標被儲存在具有較快或較慢的資料輸入/輸出速度的記憶體裝置或資料緩衝器中,來改善資料處理系統的性能。
圖20示出根據本公開的實施例的支持預讀取操作的系統的第一示例。
參照圖20,系統可以包括生成讀取命令或寫入命令的應用程式802,以及回應於寫入命令儲存資料並且回應於讀取命令輸出所儲存的資料的多個記憶體系統110A、110B。多個記憶體系統110A、110B可以具有不同的資料輸入/輸出速度。例如,多個記憶體系統110A、110B之中的第一記憶體系統(高速緩存SSD)110A可以具有比第二記憶體系統(原始SSD)110B更快的資料輸入/輸出速度。
首先,系統可以檢查與應用程式802生成的讀取命令相對應的資料是否包括在緩衝器高速緩存記憶體804中。當在緩衝器高速緩存記憶體804中找不到與讀取命令相對應的資料時,系統可以將讀取命令發送到預讀取控制電路806。預讀取控制電路806不僅可以執行從多個記憶體系統110A、110B中獲取與讀取命令相對應的資料的操作,還可以提前讀取或獲取與該資料相關的其他資料並且將該其他資料儲存在緩衝器高速緩存記憶體804中。
預讀取控制電路806可以將文件資訊發送到文件系統808,從而可以提前獲取與讀取命令相對應的資料和相關資料。文件系統808可以將從預讀取控制電路806傳送的文件資訊轉換為對應於多個記憶體系統110A、110B的裝置資訊。
從文件系統808接收用於讀取操作的裝置資訊的高速緩存管理器810可以包括查找表812和逐出電路814。高速緩存管理器810可以透過參考查找表812來檢查多個記憶體系統110A、110B之中與裝置資訊相對應的資料被儲存的位置。高速緩存管理器810中的逐出電路814可以確定是否保留或釋放或逐出緩衝器高速緩存記憶體804中儲存的資料以獲取用於在緩衝器高速緩存記憶體804中儲存新資料的空白空間。逐出電路814可以根據預設策略基於從文件系統808接收的邏輯位址(LBA)逐出緩衝器高速緩存記憶體804中儲存的一些資料。例如,逐出電路814可以根據諸如最近最少使用(LRU)或最少頻繁使用(LFU)的策略來移除緩衝器高速緩存記憶體804中儲存的資料。
在基於查找表812檢查資料的位置之後,系統可以讀取多個記憶體系統110A、110B中儲存的資料並且將該資料儲存在緩衝器高速緩存記憶體804中。在這種情況下,讀取多個記憶體系統110A、110B中儲存的資料並且將資料儲存在緩衝器高速緩存記憶體804中所需的時間可以根據儲存資料的記憶體系統的資料輸入/輸出速度而變化。參照圖18到圖19,這種差異可能導致回應於應用程式802生成的讀取命令而執行的資料輸入/輸出操作的性能差異。
根據實施例,系統可以回應於具有不同資料輸入/輸出性能的多個記憶體系統110A、110B中儲存的資料的預讀取操作的效果來改變資料的位置。例如,當應用程式802在預讀取控制電路806已經提前將資料讀入緩衝器高速緩存記憶體804之後生成針對資料的讀取命令時,緩衝器高速緩存記憶體804中準備的資料可以被傳遞到應用程式802中。這種情況可以被理解為高速緩存命中。另一方面,儘管資料被預讀取控制電路806提前讀取並且儲存在緩衝器高速緩存記憶體804中,但是應用程式802可能不生成針對相應資料的讀取命令。這種情況可以被理解為高速緩存未命中。
例如,系統可以將與高速緩存命中相對應的第一資料儲存在多個記憶體系統110A、110B之中具有更高的資料輸入/輸出速度的第一記憶體系統110A中。相反,系統可以將與高速緩存未命中相對應的第二資料儲存在多個記憶體系統110A、110B之中具有較慢的資料輸入/輸出速度的第二記憶體系統110B中。系統可以賦予與高速緩存命中相對應的第一資料比與高速緩存未命中相對應的第二資料更高的優先級。進一步,如果確定在第一記憶體系統110A中儲存資料的空間不足,那麼系統可以基於分配給資料的優先級將第一記憶體系統110A中儲存的資料移動到第二記憶體系統110B。根據實施例,資料的優先級可以根據諸如高速緩存命中或高速緩存未命中、最近最少使用(LRU)或最不頻繁使用(LFU)的高速緩存記憶體管理策略來確定。
圖21示出支持預讀取操作的系統的第二示例。
參照圖21,系統可以包括生成讀取命令或寫入命令的應用程式902,以及回應於寫入命令儲存資料並且回應於讀取命令輸出所儲存的資料的多個記憶體系統110A(高速緩存SSD)、110B(原始SSD)。多個記憶體系統110A、110B可以具有不同的資料輸入/輸出速度。該系統還可以包括緩衝器高速緩存記憶體904、預讀取控制電路906、文件系統908和高速緩存管理器910。高速緩存管理器910可以包括查找表912和逐出電路914。圖21所示的系統可以包括與圖20所示的系統基本相同的組件。然而,關於管理緩衝器高速緩存記憶體904的操作,在參照圖20和圖21描述的系統之間存在差異。在下文中,將基於這些差異來描述系統。
參照圖21,逐出電路914可以確定與從文件系統908發送的邏輯位址LBA相對應的資料的優先級。例如,可以基於從文件系統908發送的邏輯位址(LBA)來確定與特定邏輯位址(LBA)相對應的資料是否最近被使用過或者資料被使用的頻率。另一方面,參照圖21,逐出電路914可以基於從緩衝器高速緩存記憶體904發送的關於延遲敏感度的資訊來逐出緩衝器高速緩存記憶體904中儲存的資料。這裡,延遲敏感度可以基於以下兩個時間點從緩衝器高速緩存記憶體804確定:資料透過預讀取操作被儲存在緩衝器高速緩存記憶體904中的第一時間點和應用程式902請求資料的第二時間點。根據實施例,緩衝器高速緩存記憶體904的處理器、控制單元或管理單元可以檢查第一時間點和第二時間點並且將第一時間點和第二時間點儲存在緩衝器高速緩存記憶體904中。
逐出電路914可以基於查找表912檢查資料的位址(在儲存裝置中的位置等),並且基於從緩衝器高速緩存記憶體904的處理器、控制單元或管理單元發送的延遲敏感度來確定優先級。逐出電路914可以基於延遲敏感度或資料的優先級來確定從緩衝器高速緩存記憶體904逐出或釋放相應資料的時間。例如,可以調整從緩衝器高速緩存記憶體904中逐出的順序。
此外,高速緩存管理器910可以基於延遲敏感度來改變資料的位置。例如,基於關於特定資料的第一時間點和第二時間點,如果資料的兩個時間點之間的時間差小於預設參考,則資料可以儲存在具有較快的資料輸入/輸出速度的第一記憶體系統110A中。相反,如果兩個時間點之間的時間差大於預設參考,則資料可以儲存在具有較慢的資料輸入/輸出速度的第二記憶體系統110B中。當第二時間點早於第一時間點時,資料可以儲存在具有較快的資料輸入/輸出速度的第一記憶體系統110A中。
圖22示出根據本公開的實施例的圖21所示的系統中的預讀取操作。
參照圖22,應用程式902可以為三個資料塊F1_B1、F1_B2、F1_B3生成讀取命令。回應於應用程式902的讀取命令,系統可以透過預讀取操作檢查緩衝器高速緩存記憶體904中儲存的資料之中是否存在三個資料塊F1_B1、F1_B2、F1_B3。
例如,雖然第二資料塊F1_B2儲存在緩衝器高速緩存記憶體904中,但是可能沒有儲存第一資料塊F1_B1和第三資料塊F1_B3。第二資料塊F1_B2可以是高速緩存命中的情況,而第一資料塊F1_B1和第三資料塊F1_B3可以是高速緩存未命中的情況。由於第二資料塊F1_B2儲存在緩衝器高速緩存記憶體904中,因此應用程式902可以獲得緩衝器高速緩存記憶體904中儲存的第二資料塊F1_B2。然而,系統需要從多個記憶體系統110A、110B中讀取第一資料塊F1_B1和第三資料塊F1_B3。
系統可以透過參考查找表912來檢查第一資料塊F1_B1和第三資料塊F1_B3儲存的位置。然後,系統可以從多個記憶體系統110A、110B中獲得第一資料塊F1_B1和第三資料塊F1_B3,並且將第一資料塊F1_B1和第三資料塊F1_B3儲存在緩衝器高速緩存記憶體904中。應用902可以從緩衝器高速緩存記憶體904中獲取第一資料塊F1_B1和第三資料塊F1_B3。
在系統透過查找表912從多個記憶體系統110A、110B中獲得第一資料塊F1_B1和第三資料塊F1_B3並且將第一資料塊F1_B1和第三資料塊F1_B3儲存在緩衝器高速緩存記憶體904中之後,逐出電路914可以管理和控制第一資料塊F1_B1和第三資料塊F1_B3在緩衝器高速緩存記憶體904中等待調用的時間。
緩衝器高速緩存記憶體904中儲存的資料可以以預設大小或單位(例如,高速緩存塊(CB))來儲存。而且,每個資料塊可以具有優先級。系統可以基於延遲敏感度為每個資料塊設置優先級。例如,第一資料塊CB1至第100資料塊CB100可以根據優先級而被包括在緩衝器高速緩存記憶體904中。
參照圖22,逐出電路914可以包括與優先級相對應的多個隊列。例如,逐出等級可以分為從L1到L64的64個等級,並且從第一資料塊CB1到第100資料塊CB100的每個資料塊可以具有不同的逐出等級。例如,100個資料塊之中的第二資料塊CB2具有作為64個等級之中的第二高優先級的第63等級,並且100個資料塊之中的第100資料塊CB100具有第二等級L2,第二等級L2是64個等級之中次最低的優先級。根據實施例,具有第一等級(L1)的資料最有可能從緩衝器高速緩存記憶體904中逐出,而具有第64等級(L64)的資料最不可能從緩衝器高速緩存記憶體904中逐出。在這種情況下,具有第2等級的第100資料塊CB100會比具有第63等級的第二資料塊CB2更早地從緩衝器高速緩存記憶體904中逐出。根據另一實施例,具有第一等級(L1)的資料最不可能從緩衝器高速緩存記憶體904中逐出,而具有第64等級(L64)的資料最有可能從緩衝器高速緩存記憶體904中釋放或逐出。在這種情況下,具有第2等級的第100資料塊CB100可以比具有第63等級的第二資料塊CB2更晚地從緩衝器高速緩存記憶體904中逐出。
每個等級中可以存在預設數量的資料,並且可以以最近最少使用(LRU)的方法逐出具有相同等級的資料。例如,如果具有第63等級的資料塊之中的第二資料塊CB2比第三資料塊CB3最近被使用得更多,則第三資料塊CB3會比第二資料塊CB2更早地從緩衝器高速緩存記憶體904中逐出。例如,當具有第四等級的三個資料塊CB95、CB96、CB97之中最近使用的資料塊是第95資料塊CB95而最早使用的資料塊是第97資料塊CB97時,第97資料塊CB97會比第95資料塊CB95更早逐出。
此外,第97資料塊CB97的優先級或逐出等級可以基於延遲敏感度來進行調整或更改。例如,如果第97資料塊CB97的逐出等級從第四等級L4改變為第五等級L5、第六等級L6或更高,則第97資料塊CB97從緩衝器高速緩存記憶體 904中被逐出的時間會推遲。
圖23示出根據本公開的實施例的與延遲敏感度的等級改變相對應的高速緩存記憶體管理方法。
當特定資料塊CBxx儲存在緩衝器高速緩存記憶體904中時,逐出電路914可以基於關於特定資料塊CBxx的延遲敏感度分配第一等級L1到第64等級中的一個。例如,如果特定資料塊CBxx的延遲敏感度與預設標準基本相同,則逐出電路914可以將第32等級L32(例如,中間等級)分配給特定資料塊CBxx。如果特定資料塊CBxx的延遲敏感度小於預設標準,則逐出電路914可以將比第32等級L32(例如,中間值)更低的等級(例如,第30等級)分配給特定資料塊CBxx。當特定資料塊CBxx的延遲敏感度大於預設標準時,逐出電路914可以將比第32等級L32(中間值)更高的等級(例如,第34等級)分配給特定資料塊CBxx。
參照圖23,第一資料塊CB1到第100資料塊CB100可以儲存在緩衝器高速緩存記憶體904中。第53資料塊CB53可以具有第30等級。第53資料塊CB53的逐出等級可以基於延遲敏感度進行更改或調整。例如,第53資料塊CB53的等級可以增加一級以具有第31等級。或者,第53資料塊CB53的等級可以增加2個等級以具有第32等級。或者,第53資料塊CB53的等級可以增加3個等級以具有第33等級。
第53資料塊CB53的等級可以基於延遲敏感度進行調整。當第53資料塊CB53的等級從第30等級增加到第31、第32或第33等級時,第53資料塊CB53可以在緩衝器高速緩存記憶體904中儲存更長的時間。相反,可以降低第53資料塊CB53的等級。當第53資料塊CB53的等級降低時,第53資料塊CB53可以比第53資料塊CB53具有第30等級時更早地從緩衝器高速緩存記憶體904中逐出。
根據實施例,每當應用程式902存取第53資料塊CB53時,系統可以基於延遲敏感度來調整第53資料塊CB53的等級。而且,越頻繁地使用資料塊,逐出電路914就越需要避免將資料塊從緩衝器高速緩存記憶體904中逐出。逐出電路914可以透過增加或降低資料塊的逐出等級來控制從緩衝器高速緩存記憶體904逐出資料塊的定時。
圖24示出根據本公開的實施例的關於高速緩存的資料的老化變化。在圖24所示的實施例中,等級越高,越晚被逐出。
參照圖24,在資料塊被儲存在緩衝器高速緩存記憶體904中之後,應用程式902可以存取儲存的資料塊。根據實施例,在應用程式902頻繁地存取緩衝器高速緩存記憶體904中儲存的資料塊時,該資料塊的逐出等級可以增加。另一方面,可以降低應用程式902未存取的資料塊的逐出等級。透過這些過程,具有最高等級的第64等級的資料塊可以儲存在緩衝器高速緩存記憶體904中並且可以被保持的時間最長。另一方面,與作為最低等級的第一等級相對應的資料塊在緩衝器高速緩存記憶體904中儲存的時間可以最短。
隨著時間的推移,具有第64等級的資料塊的數量會增加。當具有第64等級的資料塊的數量增加時,可能難以區分具有第64等級的資料塊之間的優先級。隨著時間的推移,具有更高等級的資料塊的數量會增加。然後,難以區分具有更高等級的資料塊之間的優先級,並且難以有效地管理緩衝器高速緩存記憶體904。
另一方面,在系統將資料塊儲存在緩衝器高速緩存記憶體904中之後,每當應用程式902存取所儲存的資料塊時,系統可以基於資料塊的延遲敏感度來調整資料塊的優先級。另外,系統可以透過將資料塊的延遲敏感度與參考進行比較來設置資料塊的逐出等級。而且,參照圖23,系統可以調整與延遲敏感度相對應的逐出等級的改變程度。
根據實施例,當屬特定等級或特定等級範圍的資料塊的數量大於屬其他等級的資料塊的數量時,系統可以調整與延遲敏感度相對應的逐出等級的改變程度。借此,可以減少具有更高等級的資料塊在緩衝器高速緩存記憶體904中儲存的時間。也就是說,應用程式902頻繁存取的資料塊可以不具有最高等級。例如,當應用程式902需要特定資料塊時,如果相應資料塊被儲存在緩衝器高速緩存記憶體904中越晚,則相應資料的逐出等級就越高。相反,如果應用程式902存取特定資料塊而該資料塊連續地儲存在緩衝器高速緩存記憶體904中,則相應資料塊的等級會下降。系統可以調整與延遲敏感度相對應的逐出等級。隨著時間的流逝,即使應用程式902對資料的存取增加,具有最高等級即第64等級L64或最低等級即第一等級L1的資料塊的數量也不會顯著增加。
另外,系統可以連續不斷地執行平衡或再平衡操作,以便具有中間等級的資料塊的數量大於具有最高等級即第64等級L64或最低等級即第一等級L1的資料塊的數量。例如,系統可以確定與較高的20個等級相對應的資料塊的數量是否超過總數的50%,以判斷資料塊是否集中在較高的等級。由於系統連續不斷地對緩衝器高速緩存記憶體904中儲存的資料塊的逐出等級執行平衡或再平衡操作,因此即使應用程式902存取所儲存的資料塊的次數隨著時間的推移而增加,也可以有效地控制從緩衝器高速緩存記憶體904逐出資料塊的定時。
如上所述,根據本公開的實施例的記憶體系統可以在執行與從外部裝置輸入的命令相對應的資料I/O操作的同時提高資料I/O性能。
另外,根據本公開的實施例的記憶體系統可以有效地管理在執行資料輸入/輸出操作中使用的資源並且抑制資源的不必要消耗以提高資料輸入/輸出性能。
另外,根據本公開的實施例的記憶體系統可以提高預讀取操作的效率以使得將主機請求的讀取資料從記憶體系統發送到資料處理系統的主機的定時被提前。
儘管已相對於特定實施例示出和描述了本教導,但是鑒於本公開對於本發明所屬技術領域中具有通常知識者而言將顯而易見的是,在不脫離隨附申請專利範圍所限定的本公開的精神和範圍的情況下,可以進行各種改變和修改。此外,可以組合實施例以形成額外的實施例。
42:狀態管理器
44:映射管理器
46:主機請求管理器
48:塊管理器
52:緩衝器管理器
54:事件隊列
56:命令隊列
100:資料處理系統
102:主機
110:資料處理系統
110A:記憶體系統
110B:記憶體系統
110C:儲存空間
110D:儲存空間
130:控制器
132:主機介面
134:處理器
138:錯誤校正電路
140:電源管理單元
142:記憶體介面
144:記憶體
150:記憶體裝置
152,154,156:記憶區塊
170:電壓供應電路
172:第一非揮發性記憶體區域
174:第二非揮發性記憶體區域
182:第一記憶體區域(快閃存)
184:第二記憶體區域(慢閃存)
186:第三記憶體區域(慢閃存)
240:閃存轉換層
280:處理器
282:資料緩衝器
284:垃圾收集管理器
286:高速緩存記憶體管理器
288:預讀取控制器
290:預讀取檢測電路
302:應用程式
304:緩衝器高速緩存(頁面高速緩存)
306:預讀取控制電路
308:文件系統
310:虛擬文件系統
332:閃存轉換層
334:緩衝器
336:預讀取控制電路
338:映射電路
342:儲存區域
344:儲存區域
402:應用程式
404:系統調用控制電路
406:虛擬文件系統管理器
408:預讀取控制電路
410:頁面高速緩存記憶體
412:文件系統
414:裝置映射器
416:輸入/輸出調度器
418:塊裝置驅動器
420:預讀取檢測電路
422:高速緩存記憶體控制器
502:應用程式
504:子系統
506:系統服務分配器
508:預讀取控制電路
512:文件系統
514:裝置驅動器
516:核心內核
518:硬體抽象層
520:預讀取檢測電路
522:高速緩存記憶體控制器
602:客戶操作系統
604:管理程序
606:頁面
608:預讀取控制電路
610:頁面高速緩存記憶體
612:虛擬磁碟鏡像文件管理器
614:文件-邏輯位址映射管理器
622:高速緩存記憶體管理器
802:應用程式
804:緩衝器高速緩存記憶體
806:預讀取控制電路
808:文件系統
810:高速緩存管理器
812:查找表
814:逐出電路
902:應用程式
904:緩衝器高速緩存記憶體
906:預讀取控制電路
908:文件系統
910:高速緩存管理器
912:查找表
914:逐出電路
async_size:不同步大小變量
ATL:位址轉換層
bio_vec:塊輸入輸出陣列結構
Buf_S
1~Buf_S
3:緩衝器
C
1~C
4第二操作裕度
CB1~CB8:第一資料塊~第八資料塊
CB95~CB100:第95資料塊~第100資料塊
CPU:中央處理單元
F1_B1:第一資料塊
F1_B2:第二資料塊
F1_B3:第三資料塊
FIL:閃存介面層
FTL:閃存轉換層
L1~L64:第1等級~第64等級
LBA:邏輯位址
IO_S
1~IO_S
3記憶體裝置
RA:預讀取操作
RD_CMD:讀取命令
RD_DATA:讀取資料
S
1~S
4第一操作裕度
SSD:固態驅動器
VFL:虛擬閃存層
本文中的描述參考了圖式,其中在整個圖式中,相同的元件符號指代相同的部件。
圖1示出根據本公開的實施例的資料處理系統。
圖2示出根據本公開的另一實施例的資料處理系統。
圖3示出根據本公開的另一實施例的記憶體系統。
圖4示出根據本公開的實施例的圖1至圖3所示的控制器中包括的內部配置。
圖5示出根據本公開的實施例的支持預讀取操作的資料處理系統的第一示例。
圖6示出根據本公開的實施例的資料處理系統中的主機的第一示例。
圖7示出根據本公開的實施例的資料處理系統中的主機的第二示例。
圖8示出根據本公開的實施例的資料處理系統中的主機的第三示例。
圖9示出根據本公開的實施例的支持預讀取操作的資料處理系統的第二示例。
圖10示出根據本公開的實施例的支持預讀取功能的記憶體系統的示例。
圖11示出根據本公開的實施例的適用於虛擬文件系統的資料結構。
圖12示出根據本公開的實施例的預讀取操作的第一示例。
圖13示出根據本公開的實施例的預讀取操作的第二示例。
圖14示出根據本公開的實施例的預讀取操作的第三示例。
圖15示出根據本公開的實施例的為預讀取操作分配的資料指示符。
圖16示出根據本公開的實施例的根據資料覆蓋率的、與預讀取操作相關聯的窗口大小的改變。
圖17示出不支持預讀取操作的記憶體系統。
圖18示出根據本公開的實施例的基於記憶區塊執行預讀取操作的記憶體系統。
圖19示出根據本公開的實施例的透過預讀取操作來獲得具有不同優先級的資料的記憶體系統。
圖20示出根據本公開的實施例的支持預讀取操作的系統的第一示例。
圖21示出根據本公開的實施例的支持預讀取操作的系統的第二示例。
圖22示出根據本公開的實施例的圖21所示的系統中的預讀取操作。
圖23示出根據本公開的實施例的與延遲敏感度的等級變化相對應的高速緩存記憶體管理方法。
圖24示出根據本公開的實施例的高速緩存的資料的老化變化。
102:主機
110:資料處理系統
172:第一非揮發性記憶體區域
174:第二非揮發性記憶體區域
C1~C4:第二操作裕度
CPU:中央處理單元
RD_CMD:讀取命令
RD_DATA:讀取資料
S1~S4:第一操作裕度
SSD:固態驅動器
Claims (20)
- 一種記憶體系統,包括: 記憶體裝置,所述記憶體裝置包括多個儲存區域,所述多個儲存區域包括多個非揮發性記憶體單元並且具有不同的資料輸入/輸出速度;以及 控制器,經由至少一條資料路徑聯接到所述記憶體裝置並且: 回應於從外部裝置輸入的讀取請求,執行預讀取操作, 基於接收到所述讀取請求與完成所述預讀取操作之間的時間差,確定關於透過所述預讀取操作獲得的預讀取資料的資料屬性,並且 基於所述資料屬性將所述預讀取資料儲存在所述多個儲存區域中的一個中。
- 如請求項1所述的記憶體系統,其中所述多個儲存區域之中的第一儲存區域具有比所述多個儲存區域之中的第二儲存區域更快的資料輸入/輸出速度。
- 如請求項2所述的記憶體系統,其中所述控制器: 在所述預讀取資料的大小小於預設值時,將與所述讀取請求相對應的所述預讀取資料儲存在所述第一儲存區域中;並且 在所述預讀取資料的大小大於或等於所述預設值時,將與所述讀取請求相對應的所述預讀取資料儲存在所述第二儲存區域中。
- 一種記憶體系統,包括: 多個記憶體,具有不同的資料輸入/輸出速度;以及 控制器: 將經由預讀取操作從所述多個記憶體獲得的預讀取資料儲存在緩衝器中,並且 基於接收到從外部裝置輸入的讀取請求,輸出所述緩衝器中儲存的所述預讀取資料之中的讀取資料, 其中所述控制器進一步: 基於接收到所述讀取請求與完成所述預讀取操作之間的時間差,確定關於透過所述預讀取操作獲得的所述預讀取資料的優先級,並且 基於所述優先級將所述預讀取資料儲存在所述多個記憶體中的一個中。
- 如請求項4所述的記憶體系統, 其中所述控制器採用虛擬文件系統,所述虛擬文件系統將外部裝置使用的邏輯位址方案與用於識別所述多個記憶體中包括的多個非揮發性記憶體單元的位置的實體位址方案相關聯並且基於與所述多個記憶體中儲存的資料的資料屬性或資料模式相對應的相關性形成虛擬資料結構,並且 其中所述虛擬資料結構包括所述相關性的多個深度等級之中的被分配給所述多個記憶體中儲存的所述資料的深度等級。
- 如請求項5所述的記憶體系統,其中所述控制器在輸入所述讀取請求時執行所述預讀取操作,以獲得具有比與所述讀取請求相對應的資料的深度等級更高的深度等級的資料。
- 如請求項4所述的記憶體系統,其中所述控制器: 基於與所述讀取請求相對應的資料的大小,確定所述優先級, 當所述預讀取資料的大小較小時,將與所述讀取請求相對應的所述預讀取資料儲存在所述多個記憶體之中的第一記憶體中,並且 當所述預讀取資料的大小較大時,將與所述讀取請求相對應的所述預讀取資料儲存在所述多個記憶體之中的第二記憶體中,所述第二記憶體具有比所述第一記憶體的資料輸入/輸出速度更慢的資料輸入/輸出速度。
- 如請求項4所述的記憶體系統,其中所述控制器: 當接收到所述讀取請求早於完成所述預讀取操作時,將與所述讀取請求相對應的所述預讀取資料儲存在所述多個記憶體之中的第一記憶體中,並且 當接收到所述讀取請求晚於完成所述預讀取操作時,將與所述讀取請求相對應的所述預讀取資料儲存在所述多個記憶體之中的第二記憶體中,所述第二記憶體具有比所述第一記憶體的資料輸入/輸出速度更慢的資料輸入/輸出速度。
- 如請求項4所述的記憶體系統,其中在所述多個記憶體之中,第一記憶體具有比第二記憶體的資料輸入/輸出速度更快的資料輸入/輸出速度,並且所述第一記憶體和所述第二記憶體分別包括至少一個記憶區塊、至少一個記憶體平面或至少一個記憶體晶粒。
- 如請求項4所述的記憶體系統,其中所述控制器基於所述優先級來確定釋放或逐出所述緩衝器中儲存的所述預讀取資料的定時。
- 如請求項10所述的記憶體系統,其中所述控制器: 將多個逐出等級中的一個分配給所述預讀取資料; 在所述預讀取資料被存取時調整所分配的逐出等級;並且 基於經調整的逐出等級來確定釋放或逐出所述預讀取資料的定時。
- 如請求項11所述的記憶體系統,其中所述控制器在具有所述多個逐出等級之中的至少一個或多個特定逐出等級的所述預讀取資料的量大於參考時,改變調整分配給所述預讀取資料的所分配的逐出等級的程度。
- 如請求項10所述的記憶體系統,其中所述控制器在所述緩衝器中儲存的所述預讀取資料具有相同的逐出等級時,基於最近最少使用策略,即LRU策略來確定釋放所述預讀取資料的定時。
- 一種資料輸入輸出系統,包括: 多個儲存裝置,具有不同的資料輸入和輸出速度; 高速緩存記憶體;以及 控制裝置: 將經由預讀取操作從所述多個儲存裝置獲得的預讀取資料儲存在所述高速緩存記憶體中, 基於接收到從應用程式輸入的讀取請求,將所述高速緩存記憶體中儲存的所述預讀取資料之中的讀取資料輸出到所述應用程式, 基於接收到所述讀取請求的第一定時和完成將所述預讀取資料儲存在所述高速緩存記憶體中的第二定時,確定關於透過所述預讀取操作獲得的所述預讀取資料的預讀取屬性,並且 基於所述預讀取屬性將所述預讀取資料儲存在所述多個儲存裝置中的一個中。
- 如請求項14所述的資料輸入輸出系統,其中所述控制裝置檢測與所述讀取請求相對應的讀取資料的模式,並且使用所述模式來確定關於所述預讀取資料的所述預讀取屬性。
- 如請求項14所述的資料輸入輸出系統,其中所述控制裝置在所述第一定時早於所述第二定時時,將與所述讀取請求相對應的所述預讀取資料儲存在具有最快的資料輸入/輸出速度的儲存裝置中。
- 如請求項14所述的資料輸入輸出系統,其中所述控制裝置基於所述第一定時和所述第二定時之間的差來確定釋放或逐出所述高速緩存記憶體中儲存的所述預讀取資料的定時。
- 如請求項14所述的資料輸入輸出系統,其中所述控制裝置將多個逐出等級中的一個分配給所述預讀取資料,在所述預讀取資料被存取時調整所分配的逐出等級,並且基於經調整的逐出等級來確定釋放或逐出所述預讀取資料的定時。
- 如請求項18所述的資料輸入輸出系統,其中所述控制裝置在具有所述多個逐出等級之中的至少一個或多個特定逐出等級的所述預讀取資料的量大於參考時,改變調整分配給所述預讀取資料的所分配的逐出等級的程度。
- 如請求項14所述的資料輸入輸出系統,其中所述控制裝置在所述高速緩存記憶體中儲存的所述預讀取資料具有相同的逐出等級時,基於最近最少使用策略,即LRU策略來確定釋放或逐出所述預讀取資料的定時。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210123181A KR20230040057A (ko) | 2021-09-15 | 2021-09-15 | 시스템의 읽기 성능을 개선하기 위한 장치 및 방법 |
KR10-2021-0123181 | 2021-09-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202318205A true TW202318205A (zh) | 2023-05-01 |
Family
ID=85479376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111133524A TW202318205A (zh) | 2021-09-15 | 2022-09-05 | 記憶體系統及資料輸入輸出系統 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11893269B2 (zh) |
KR (1) | KR20230040057A (zh) |
CN (1) | CN115809018A (zh) |
TW (1) | TW202318205A (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6931493B2 (en) * | 2003-01-16 | 2005-08-16 | International Business Machines Corporation | Implementation of an LRU and MRU algorithm in a partitioned cache |
JP2006285809A (ja) * | 2005-04-04 | 2006-10-19 | Hitachi Ltd | ストリーミング向け性能保証を行うストレージ装置 |
US10025522B2 (en) | 2016-04-15 | 2018-07-17 | Sandisk Technologies Llc | Memory interface command queue throttling |
US10649776B2 (en) | 2018-06-29 | 2020-05-12 | Western Digital Technologies, Inc. | System and method for prediction of multiple read commands directed to non-sequential data |
US11573900B2 (en) | 2019-09-11 | 2023-02-07 | Intel Corporation | Proactive data prefetch with applied quality of service |
US20200192715A1 (en) | 2020-02-24 | 2020-06-18 | Intel Corporation | Workload scheduler for memory allocation |
-
2021
- 2021-09-15 KR KR1020210123181A patent/KR20230040057A/ko unknown
-
2022
- 2022-03-04 US US17/686,915 patent/US11893269B2/en active Active
- 2022-07-04 CN CN202210780283.0A patent/CN115809018A/zh active Pending
- 2022-09-05 TW TW111133524A patent/TW202318205A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
KR20230040057A (ko) | 2023-03-22 |
US20230081829A1 (en) | 2023-03-16 |
US11893269B2 (en) | 2024-02-06 |
CN115809018A (zh) | 2023-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11221914B2 (en) | Memory system for controlling nonvolatile memory | |
US10592117B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10789162B2 (en) | Memory system and method for controlling nonvolatile memory | |
US8918580B2 (en) | Storage device with buffer memory including non-volatile RAM and volatile RAM | |
CN108572796B (zh) | 具有异构nvm类型的ssd | |
US10209894B2 (en) | Memory system and method for controlling nonvolatile memory | |
US8443144B2 (en) | Storage device reducing a memory management load and computing system using the storage device | |
US9772802B2 (en) | Solid-state device management | |
KR101480659B1 (ko) | 2-레벨 시스템 메인 메모리 | |
TWI515565B (zh) | 直接記憶體存取的方法及其固態磁碟機、電腦程式產品 | |
TWI752619B (zh) | 存取儲存的元資料以識別儲存資料的記憶體裝置 | |
US20140095555A1 (en) | File management device and method for storage system | |
JP2013242908A (ja) | ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法 | |
CN113342705A (zh) | 在存储器***中执行垃圾收集的设备和方法 | |
US11422945B2 (en) | Generating, maintaining, or utilizing a compressed logical-to-physical table based on sequential writes | |
KR20200019421A (ko) | 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치 | |
US10942848B2 (en) | Apparatus and method for checking valid data in memory system | |
KR20220090020A (ko) | 비휘발성 메모리 시스템이 생성한 메타데이터를 전송하는 장치 및 방법 | |
KR20210011176A (ko) | 메모리 시스템의 액세스 동작 방법 및 장치 | |
TW202322129A (zh) | 用於改善存儲裝置的資料輸入/輸出性能的設備和方法 | |
TW202316259A (zh) | 用於控制資料處理系統中的共享記憶體的設備和方法 | |
US12032843B2 (en) | Apparatus and method for increasing operation efficiency in data processing system | |
TW202318205A (zh) | 記憶體系統及資料輸入輸出系統 | |
KR20220086934A (ko) | 비휘발성 메모리 시스템의 저널링 제어 장치 및 방법 | |
KR20220108342A (ko) | 메모리 시스템 내 프리 블록을 확보하는 장치 및 방법 |