CN105900069A - 对被存储在闪存存储器中的数据的推测性预取 - Google Patents
对被存储在闪存存储器中的数据的推测性预取 Download PDFInfo
- Publication number
- CN105900069A CN105900069A CN201480072501.9A CN201480072501A CN105900069A CN 105900069 A CN105900069 A CN 105900069A CN 201480072501 A CN201480072501 A CN 201480072501A CN 105900069 A CN105900069 A CN 105900069A
- Authority
- CN
- China
- Prior art keywords
- data
- page
- memory page
- read
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- 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)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于数据存储的方法,该方法包括保持用于在存储设备中读出的推测性读出模式的定义,其中该存储设备被请求以读取具有数据单元尺寸的数据单元,并且作为响应,该存储设备检索包含数据单元并且具有大于数据单元尺寸的存储页面尺寸的存储页面,并保留该存储页面以为后续请求作准备。协调对推测性读出模式的激活。使用推测性读出模式来执行读出命令。
Description
技术领域
本发明整体涉及数据存储,并且更具体地涉及用于对被存储在非易失性存储器中的数据进行预取的方法和系统。
背景技术
一些计算系统采用虚拟存储器(VM)技术,该虚拟存储器技术使用快速但小的易失性存储器以及大的但较慢的非易失性存储器。例如在一些移动计算设备和通信设备中,设备操作系统(OS)包括与固态驱动器(SSD)共同操作设备随机存取存储器(RAM)的VM模块。
在本领域中已知使用VM的多种方法。例如,美国专利8,429,377描述了一种对存储器进行存取的系统和方法,该美国专利的公开内容以引用方式并入本文。该系统包括以虚拟地址发布对存储页面的请求的处理器设备、和用于存储一个或多个页表项的查找缓冲器,其中页表项中的每个页表项至少包括虚拟页号和物理页号。该系统还包括逻辑电路,该逻辑电路接收来自处理器的虚拟地址,并将该虚拟地址匹配到页表项中的一个页表项中的虚拟页号,以选择同一页表项中的物理页号。该页表项包括被设置为从页面中排除一个存储器范围的一个或多个位。
在“Key-Study to Execute Code Using Demand Paging and NAND Flashat Smart Card Scale,”(智能卡研究和高级应用,第9届IFIP WG 8.8/11.2国际会议论文集第102-117页,CARDIS 2010,2010年4月德国帕绍)中,Geoffroy等人讨论了在小至智能卡或传感器的系统中嵌入多个应用程序所涉及的限制,该文献以引用方式并入本文。这些系统的物理限制(诸如非常小的主存储器)以及其制造成本使其实现起来非常困难。在这个研究中提出的一个解决方案是从较廉价的、较密集、但较慢的辅助存储器(诸如NAND闪存)执行代码。
发明内容
本发明的一个实施方案提供了一种方法,该方法包括保持用于在存储设备中读出的推测性读出模式的定义,其中该存储设备被请求以读取具有数据单元尺寸的数据单元,并且作为响应,该存储设备检索包含数据单元并且具有大于数据单元尺寸的存储页面尺寸的存储页面,并保留该存储页面以为后续请求作准备。协调对推测性读出模式的激活。使用推测性读出模式来执行读出命令。
在一些实施方案中,协调激活包括在存储设备中接收用于读取单个数据单元的命令,并且执行读出命令包括从所保留的存储页面读取单个数据单元。在其他实施方案中,执行读出命令包括在检测到单个数据单元不在所保留的存储页面中时报告错误事件。在另外的实施方案中,执行读出命令进一步包括在所保留的存储页面中的所有数据单元已被请求之后丢弃所保留的存储页面。
在一个实施方案中,执行读出命令包括在存储设备中接收用于读取所保留的存储页面中的给定数据单元的请求,并且从所保留的存储页面返回给定数据单元和所有连续数据单元。在另一个实施方案中,协调激活包括从存储设备报告存储页面尺寸。在另外一个实施方案中,该方法进一步包括在存储设备中接收用于存储尺寸等于存储页面尺寸的数据的写入命令,并且对齐存储设备的页边界来存储数据。
根据本发明,还提供了一种存储设备,该存储设备包括非易失性存储器和处理器。该处理器被配置为保持推测性读出模式的定义,其中该存储设备被请求以读取具有数据单元尺寸的数据单元,并且作为响应,该存储设备从非易失性存储器检索包含数据单元并且具有大于数据单元尺寸的存储页面尺寸的存储页面,并保留存储页面以为后续请求作准备;协调对推测性读出模式的激活;以及使用推测性读出模式来执行读出命令。
结合附图从下文中对本发明的实施方案的详细描述将更完全地理解本发明,在附图中:
附图说明
图1是示意性地示出了根据本发明的实施方案的存储系统的框图;
图2-4是示意性地示出作为推测性预取的一部分的数据高速缓存和读取的示意图;
图5是示意性地示出了根据本发明的实施方案的用于通过对齐页边界存储数据来实现推测性数据预取的方法的流程图;
图6是示意性地示出根据本发明的实施方案的用于减小应用程序的启动持续时间的方法的流程图。
具体实施方式
概述
本文所述的本发明的实施方案提供了用于虚拟存储器(VM)操作的改进的方法和系统。在许多存储系统中,操作系统(OS)在主机的易失性存储器(在本文中被称为“本地存储器”)中针对给定过程而分配的空间不足以包括该过程的完整的代码和数据。这种情形例如可能在本地存储器的总存储空间小于过程所需要的空间时或者在OS同时运行多个过程时发生。
在一些实施方案中,该OS包括针对在本地存储器中运行的过程而管理存储器的虚拟存储器(VM)子系统。在本文所述的实施方案中,该VM管理本地存储器和大的非易失性存储器诸如基于闪存的固态驱动器(SSD)。该VM使得过程能够使用比由OS针对该过程分配的空间大的存储器空间。偶尔,过程可能试图访问当前本地不可用的数据。此类事件被称为页面故障事件。该VM通常通过从SSD预取所涉及的数据来对页面故障作出响应。
该VM在本文中被称为数据区块或数据单元的单元中访问SSD中的数据。在检测到页面故障(或接收到页面故障指示)时,该VM通过请求相应的未命中数据所属的数据区块(也被称为未命中区块)来从SSD预取未命中数据。在一些实施方案中,为了提高对未命中数据的访问速率,该VM可被配置为除了预取未命中区块之外还预取一个或多个连续数据区块。该操作模式被称为推测性预取。然而,基于SSD的存储系统中的推测性预取可能如下文进一步所述那样是有问题的。
通常,该OS进一步包括以逻辑结构(诸如文件和目录)管理对数据(例如用户数据或其他数据)的存储的文件系统(FS)子系统。FS将文件存储在SSD中。计算机程序可执行或以其他方式使用一个或多个文件。例如,应用程序可访问大量小文件,诸如可执行文件和多媒体文件。在执行应用程序时,FS首先将相应的应用文件从SSD上载到本地存储器,并且主机然后从本地存储器执行该应用程序。上载应用程序的文件的过程被称为应用程序启动。由于应用文件应当在执行之前被上载,所以更短的应用程序启动持续时间导致更好的用户体验。
在主机中,该OS的VM子系统和FS子系统通常以连续逻辑地址空间来管理存储器。该SSD通常包括以闪存存储器的物理地址来管理存储的SSD控制器。逻辑地址对应于闪存存储器中的数据区块的相应物理地址。该SSD控制器通常保持逻辑地址与物理地址之间的转换表。
该SSD控制器以被称为存储页面或简称为页面的单元来将数据存储在SSD中。在一些情况下,该VM(或FS)被配置为预取比SSD的页面尺寸更小的数据区块。换句话讲,该SSD中的页面通常包括多个数据区块,VM可一次请求这些数据区块中的一个数据区块。如下文所述,存储页面与数据区块之间的尺寸不匹配可能会消除推测性预取的潜在优点。
在一些实施方案中,该OS以在本文中被称为区块或区段的单元来读取数据。该区块尺寸例如可为512字节或者4千字节(KB)。另一方面,SSD中的数据是以存储页面从闪存存储器写入和检索的,存储页面的尺寸通常大于区块尺寸。示例性页面尺寸包括8KB、16KB、和32KB。
在一个实施方案中,响应于页面故障事件,该VM向SSD请求相应的未命中区块(即产生页面故障的未命中数据所属的区块)。原则上,该VM可通过除了未命中区块之外还请求一个或多个连续区块来执行推测性预取。然而,该预取操作不会提高访问未命中数据的速率,因为对于每个区块请求,SSD检索整个页面,即使在VM请求同一页面中的多个区块时也是如此。此外,页面检索的此类冗余操作导致功率消耗增大,这缩短了系统的电池寿命。
在所公开的技术中,当该VM请求未命中区块时,包含该区块的页面被检索并被缓存在SSD中。当该VM然后请求(例如在执行推测性预取时)已缓存的一个或多个区块时,从已缓存的页面读取这些区块,而无需从SSD生成对相应页面的不必要的重新读取。
在以下描述中,假设基础SSD存储装置包括SSD控制器和易失性高速缓存存储器。为了清楚,除非另行指出,否则将SSD的非易失性存储器称为“闪存存储器”。该闪存存储器可包括任意合适数量的单独闪存设备。
在一个实施方案中,主机VM向SSD发出用于检索未命中区块的请求,并且向SSD控制器另外指示推测性预取操作。该SSD控制器从闪存存储器检索所请求额的区块所属的页面,并将该页面缓存在高速缓存存储器中。该SSD控制器将所请求的区块递送至主机,并保留已缓存的页面,直到VM请求所缓存的页面的所有其他区块。
在一个实施方案中,VM通过指导SSD控制器从所缓存的页面读取作为已被缓存在SSD中的页面的一部分的每个区块而无需从闪存存储器重新读取整个页面来读取此类区块。当该VM请求被缓存区块但所请求的区块不在所缓存的页面中时,SSD控制器向VM返回相应错误指示。该VM然后可在对相应页面进行缓存或不进行缓存的情况下读取该区块。读取已缓存的区块比从闪存存储器读取该区块更快。
在一些实施方案中,VM通过请求未命中区块并且向SSD另外通知推测性预取操作来执行推测性预取。该SSD从闪存存储器检索所请求的区块所属的页面,对该页面进行缓存,并将所请求的区块以及所缓存的页面中的所有连续区块返回给主机。
原则上,推测性预取在单个VM请求使得SSD控制器能够对齐页边界而检索区块时可能更高效。然而,该VM并不明确地知道各个区块在页面中的位置,因此该VM不能明确地对齐页边界来请求区块。
在一个实施方案中,该SSD控制器向VM报告在闪存存储器中使用的页面尺寸。该VM然后以具有所接收的页面尺寸的单元来存储数据,同时还指导SSD控制器对齐页边界来将每个此类单元存储在闪存存储器中。当VM随后读取相应的所存储的数据时,该VM如上所述通过请求页面中的第一区块来执行推测性预取,并且响应于推测性预取请求,该SSD读取并缓存第一区块所属的页面,并将整个页面递送至主机。
在启动应用程序时,可能有利的是执行推测性预取以减小启动持续时间,例如在应用文件被连续存储在闪存存储器中时。然而,在上载应用文件中的每个应用文件时,FS不知道这些文件是共同针对应用程序的,并且没有明确的指示来在上载这些文件时切换到推测性预取模式。在一个实施方案中,该OS向FS指示何时引发应用程序启动。作为响应,该FS然后切换为以推测性预取模式来读取相应的应用文件。
在一些实施方案中,该OS向SSD控制器指示何时开始和终止应用程序启动。作为响应,该SSD监视并记录所启动的应用程序的被上载文件的逻辑地址和相应物理地址。该SSD控制器然后将应用文件连续地重新布置在闪存存储器中的连续物理地址范围中,以使得后续能够使用推测性预取来高效地启动同一应用程序。
在另选的实施方案中,每当OS引发和终止应用程序启动时,OS便向FS(而不是向SSD)进行指示。该FS记录所上载的应用文件的逻辑地址,并使用专用碎片整理命令来将所记录的地址发送给SSD控制器。该SSD控制器然后将应用文件连续地重新布置在闪存存储器中,并相应地更新地址转换表。
本文所公开的技术使得能够在检测到页面故障事件时执行推测性预取来提高访问未命中数据的速率、减小启动应用程序的持续时间,同时抑制来自闪存存储器的不必要的读取操作。本文所公开的技术因此改善了系统的读取延迟、功率消耗、以及电池寿命。
系统描述
图1是根据本发明的实施方案的示意性地示出存储器系统的框图。在本示例中,存储器系统包括将数据存储在固态驱动器(SSD)24中的计算机20。该计算机20可包括例如手机、平板电脑或个人计算机。该计算机包括用作主机的中央处理单元(CPU)26。在以下描述中,术语CPU和主机能互换使用。
在另选的实施方案中,主机可包括任何其他合适的处理器或控制器,并且存储设备可包括任何其他合适的设备。例如,主机可包括企业存储系统的存储控制器,并且存储设备可包括SSD阵列或SSD阵列。将数据存储在非易失性存储设备中的主机的其他示例包括移动电话、数码相机、媒体播放器和可移动存储器卡或设备。
在一个实施方案中,CPU 26运行用于处理计算机20的各种任务的操作系统(OS)27。该OS还包括文件系统(FS)28、和虚拟存储器(VM)子系统29。FS 28处理用户(和其他)数据在逻辑结构(诸如目录和文件)中的组织。VM 29针对FS加载到易失性主机存储器32的过程以及OS从易失性主机存储器32执行的过程而管理存储器。存储器32也被称为本地存储器。存储器32可包括任何合适类型的易失性存储器,诸如例如DDR、DDR2、DDR3、DDR3L、SDRAM、或RDRAM。在一种典型应用中,存储器32具有1GB和32GB之间的尺寸,但也可使用任何其他合适的尺寸。
SSD 24将用于CPU 26的数据存储在非易失性存储器中,在本示例中被存储在一个或多个NAND闪存存储器设备34中。在另选的实施方案中,SSD 24中的非易失性存储器可包括任何其他合适类型的非易失性存储器,诸如例如NOR闪存、电荷撷取闪存(CTF)、相变RAM(PRAM)、磁阻RAM(MRAM)或铁电RAM(FeRAM)。
SSD控制器30执行SSD的各种存储任务和管理任务。SSD控制器也被统称为存储器控制器。SSD控制器30包括用于与CPU 26进行通信的主机接口38;用于与闪存设备34进行通信的存储器接口46;以及执行SSD的各种处理任务的处理器42。
SSD 24还包括易失性存储器,在本示例中为随机存取存储器(RAM)50。在图1的实施方案中,RAM 50被图示为SSD控制器30的一部分,但RAM另选地可与SSD控制器分开。RAM 50可包括例如静态RAM(SRAM)、动态RAM(DRAM)、这两种RAM类型的组合、或任何其他合适类型的易失性存储器。RAM 50可用于在将从闪存设备34读取的数据或其部分递送至CPU 26或主机存储器32之前对该数据进行缓存。如下文所述,在一些实施方案中,RAM 50缓存数据页面,该数据页面中的一个或多个数据区块根据请求被递送至CPU 26。
图1的底部示出了NAND闪存设备34的一个示例性详细框图。在本示例中,设备34包括读/写(R/W)单元70,该读/写单元将用于在存储器设备中进行存储的数据转换成存储值并将它们写入闪存存储器阵列76的存储器单元(例如模拟存储器单元)中。在另选的实施方案中,R/W单元不执行这种转换,而是被提供有电压样本,即用于在单元中进行存储的存储值。R/W单元通常(但并非必须)使用迭代的编程且验证(P&V)过程来对存储器单元编程,如本领域中所公知的那样。当从阵列76中读出数据时,读/写单元70将存储器单元32的存储值转换成具有一位或多位分辨率的数字样本。数据通常以被称为数据页面或简称为页面的群组写入存储器单元中以及从存储器单元中读取。闪存设备诸如设备34通常包括8KB、16KB或32KB页面。在一些实施方案中,R/W单元可通过将一个或多个负的擦除脉冲施加于存储器阵列76中的一组单元(例如包括多个页面的块)来擦除这些单元。
存储器阵列76可包括使用两个编程级来存储1比特/单元的单级单元(SLC)存储器阵列、或者以2N个编程级来存储N比特/单元的多级单元(MLC)存储器阵列。例如,2比特/单元设备使用四个编程级,并且3比特/单元设备使用八个编程级。
一些存储器设备包括通常被称为平面的两个或更多单独的存储器单元阵列。例如在其中每个平面包括16KB页面的双平面设备中,SSD控制器可使用多平面访问方法来在单次读取操作中检索32KB。
SSD控制器30的处理器42通常保持逻辑地址与物理地址转换,并将数据存储在合适的物理存储位置中,该逻辑地址与物理地址转换使由主机指定的逻辑地址与闪存设备34中的相应的物理存储位置(也称为物理地址)相关联。逻辑地址与物理地址转换(也称为虚拟与物理映射–V2P)可被存储在RAM 50中,可被存储在闪存设备34中,或者可被存储在两者中。
逻辑地址和相应的物理地址访问在本文中被称为数据区块的数据单元。在一些实施方案中,数据页面的尺寸大于数据区块的尺寸。例如,该VM可被配置有4KB数据区块,并且闪存存储器可被配置有尺寸为16KB页面。通常,虽然不是必需的,但数据页面包括整数数量的数据区块。
SSD控制器30并且具体地处理器42可在硬件中实现。另选地,SSD控制器可包括运行合适的软件的微处理器,或硬件元件和软件元件的组合。
图1的配置为示例性配置,其纯粹为了概念上的清楚而被示出。也可使用任何其他合适的SSD或其他存储器系统配置。为了清楚起见,已从附图中省略了对于理解本发明的原理非必需的元件,诸如各种接口、寻址电路、计时和排序电路及调试电路。在一些应用程序例如非SSD应用程序中,SSD控制器30的功能由合适的存储器控制器执行。
在图1中示出的示例性系统配置中,存储器设备34和SSD控制器30作为单独的集成电路(IC)来实现。然而,在另选的实施方案中,存储器设备和SSD控制器可被集成在单个多芯片封装(MCP)或片上系统(SoC)中的独立半导体模片上,并且可通过内部总线互连。此外另选地,SSD控制器电路中的部分或全部SSD控制器电路可驻留于在其上设置有一个或多个存储器设备34的同一模片上。另外另选地,SSD控制器30的功能中的一些或全部功能可在软件中实现,并且可由计算机中的CPU 26或其他处理器执行。在一些实施方案中,CPU 26和SSD控制器30可在同一模片上制造,或在同一设备封装中的单独模片上制造。
在一些实施方案中,处理器42和/或CPU 26包括在软件中被编程为执行本文所述的功能的通用处理器。该软件可例如通过网络以电子形式被下载到处理器,或者另选地或除此之外,其可以在非暂态有形介质诸如磁性、光学、或电子存储器上被提供和/或存储。
基于SSD的存储系统中的VM预取
在以下描述中,假定VM 29以固定尺寸的区块或区段从闪存存储器34预取数据。在一些实施方案中,SSD控制器30向OS 27通知主机接口38上数据传输的最小单元尺寸,即区块尺寸,诸如例如512字节或4KB。在以下描述中,采用4KB区块尺寸。但是,另选地也可使用任意其他合适的区块尺寸。
当OS 27从主机存储器32执行的软件过程或应用程序需要访问在存储器32中本地不可用的数据时,发生页面故障事件。当发生页面故障时,该VM向SSD控制器发出一个或多个I/O请求,以从相应的闪存存储器34预取未命中数据。该未命中数据所属的数据区块也被称为未命中区块。虽然该VM可一次仅预取一个区块(即未命中区块),但是在很多情况下,随着软件过程执行的进行,该VM将有很高的可能性必须预取附加连续数据区块。因此预取连续范围的多个区块而不是仅预取未命中区块通常是更高效的。在本发明的上下文中以及在权利要求中,术语“推测性预取”是指预取与未命中区块连续的一个或多个附加区块。在推测性预取中,所预取的区块可包括未命中区块之前的一个或多个区块。
如下文所展示的,将VM 29配置为工作于推测性预取模式中可能产生来自闪存存储器34的冗余读取操作,从而导致延迟和功率消耗增大。例如假设每个闪存存储器34存储16KB页面。当VM 29请求单个4KB数据区块时,该SSD控制器应读取这个区块所属的整个16KB页面,并且只将所请求的区块递送至主机26。如果后续的VM请求访问其他页面,则所读取的其余三个区块(在这个示例中为12KB)不被使用。此外,当VM 29推测性地请求均位于同一页面中的多个4KB区块时,每个单独的VM请求生成对整个16KB页面的单独读取操作,并且对于每个此类读取操作,16KB页面中只有4KB被递送至主机26。如能看到的那样,以上示例表明带宽利用率仅为25%(16KB中的4KB)。
以下描述的本文所公开的技术使得VM能够执行推测性预取,而不浪费带宽和功率消耗。在本文所公开的技术中,通过定义新的VM操作,SSD控制器可读取并缓存数据页面一次,并根据请求来将已缓存的该页面的数据区块递送至主机。
高效推测性预取方法
图2-4是示意性地示出作为推测性预取的一部分的数据高速缓存和读取的示意图。图2-4中的每个附图中所示的示意图均包括三列。最左边和最右边的列分别是指由VM 29和SSD控制器30执行的操作。在每个示意图中,中间列示出包括四个4KB数据区块的被缓存16KB页面。每个示意图还包括多个行,每行示出一个VM操作和相应的SSD控制器操作。每个示意图因此示出了随时间推移而执行的VM操作序列。在图2-4的示意图中,每个4KB区块由其相应的物理地址(诸如ADR1、ADR2等等)来识别。因此,例如ADR3区块是指在闪存存储器中的物理地址为ADR3时的数据区块。在本文所公开的方法中,该SSD控制器将从闪存存储器34检索的页面缓存在RAM 50中。
现在参考图2。在本示例中,采用包括物理地址被表示为ADR1-ADR4的四个顺序4KB区块的16KB页面。在第一操作即READ_VM1(ADR3)中,该VM请求ADR3区块,但还向SSD控制器30指示推测性预取操作。该SSD控制器30通过在闪存存储器中读取所请求的区块被存储在其中的16KB页面来作出响应,并将该页面缓存在RAM 50中。已缓存的页面包括区块ADR1-ADR4。SSD控制器30然后仅将所缓存的页面中的ADR3区块递送至主机26。
该VM然后执行READ_NO_SENSE(ADR1)操作,其中VM请求ADR1区块,从而指示从所缓存页面读取该区块。作为响应,SSD控制器30读取已缓存的ADR1区块并将其递送至主机26,而不是重新读取整个16KB页面。然后,VM 29类似地执行READ_NO_SENSE(ADR2)操作来使SSD控制器30读取已缓存的ADR2区块并递送至主机。
在执行READ_NO_SENSE(ADR5)操作时,VM请求ADR5区块,该ADR5区块不是被缓存区块ADR1-ADR4的一部分。因此,SSD控制器30通过向VM指示READ_NO_SENSE_MISS错误事件来作出响应。该未命中事件向VM指示所请求的区块还未被缓存并且不能使用READ_NO_SENSE操作来读取。
当VM使用READ_NO_SENSE(ADR4)操作来请求ADR4区块时,SSD控制器30读取已缓存的ADR4区块并将其递送至主机。由于通过这个操作,该VM完成请求所有已缓存的区块ADR1-ADR4(并非必须是按顺序请求),所以SSD控制器还释放已缓存的页面,从而使得能够将RAM50中相同的存储器空间用于缓存其他页面。
图3示出另一推测性预取方法。在一个实施方案中,虽然VM请求单个4KB区块,但VM准备从SSD控制器30接受最多至所请求的区块所属的整个16KB页面。在图3的示例中,该VM 29发起VM操作即READ_VM_TO_END(ADR7),以预取ADR7区块。SSD控制器30通过读取并缓存包括四个连续区块ADR6-ADR9的页面来作出响应,并仅将所请求的区块和所有连续区块(读取到页面操作的末尾)即ADR7-ADR9递送至主机。另外,与这些数据区块一起,SSD控制器30还将多个所递送的区块及其各自的逻辑地址递送至VM。在递送数据区块之后,SSD控制器30释放已缓存的页面,以用于缓存其他页面。读取到页面的末尾的特征节省了VM的将以其他方式对每个单独的数据区块单独发起的冗余请求(通常涉及每个区块的存储器感测操作和读取操作),并因此使OS的直接存储器存取(DMA)操作更高效。
图4示出另外一种高效的推测性预取方法。该方法使得能够预取对齐页边界的物理地址而先前被存储的数据区块。在图4的示例中,SSD控制器30首先向VM 29指示页面尺寸,在本示例中是16KB。VM接受所指示的页面尺寸,以在后续VM操作中使用。VM 29然后向SSD控制器30发出WRITE_VM_ALINGED命令,以对齐页边界来写入16KB数据。SSD控制器30接受WRITE_VM_ALINGED命令,并将这16KB数据存储在连续的四个区块中,使得第一区块的物理地址与完整页面的物理地址匹配。在图4的示例中,要写入的四个区块(16KB数据)被存储在地址为ADR6的页面中。由于VM知道对齐页边界而写入的任何数据的逻辑地址,所以VM随后可推测性地将该数据作为完整页面进行读取。
在之后的一个时点,VM执行READ_VM_TO_END(ADR6)操作以请求用于存储ADR6=ADR9区块的页面。SSD控制器30通过缓存整个相应页面来对该命令作出响应、将这四个ADR6-ADR9区块递送至主机、并释放已缓存的页面。
在一些实施方案中,SSD控制器应用也被称为“垃圾收集”(GC)的块压缩过程。在该过程中,SSD控制器将有效数据从部分有效源块复制到一个或多个目标块中。由于GC通常复制整个块或页面,所以如上所述对齐页边界而写入的数据即使在被GC过程复制之后也保持其对齐。
图5是示意性地示出了根据本发明的实施方案的用于通过对齐页边界初始存储数据来实现推测性预取的方法的流程图。该方法由SSD控制器30执行,并且开始于该SSD控制器30在指示步骤100处向VM 29指示闪存存储器34的页面尺寸。在图5的示例中,页面尺寸为16KB。如本文所述,VM 29使用所指示的页面尺寸对齐页边界来写入数据区块,这使得能够高效地推测性预取这个数据。
在接收命令步骤104处,SSD控制器30从VM接受要使用WRITE_VM_ALIGNMENT命令(如上所述)存储的16KB数据。在存储对齐步骤108处,SSD控制器30选择闪存存储器34中的相应页面,并对齐所选择的页面的边界来存储包括该16KB数据的四个4KB区块。VM 29跟踪该16KB数据页面的逻辑地址,该16KB数据页面对齐物理页边界而被存储。在接收推测性读取命令步骤112处,SSD控制器30从VM 29接受推测性读取在步骤108处所存储的整个页面的请求。
在步骤116处,SSD控制器30将所请求的页面的逻辑地址转换为相应的物理地址,读取页面数据,并将页面缓存在RAM 50中。在步骤116处,VM可使用例如READ_VM_TO_END操作(如上文所述),或者使用将整个所缓存页面递送至主机的其他专用VM操作。SSD控制器然后在页面递送步骤120处经由主机接口38将该16KB所缓存页面递送至VM 29。另外在步骤120处,SSD控制器释放RAM 50中的所缓存的页面,以使得能够将相同的存储器空间重新用于缓存其他页面。
快速应用程序启动
应用程序常常访问FS 28在应用程序安装时存储在闪存存储器34中的大量相对较小的文件。该应用文件可包括可执行文件、位图文件、多媒体文件等等。在一些实施方案中,当OS 26启动应用程序时,FS 28将应用程序的文件从闪存存储器34中的相应位置上载到主机存储器32以供执行。FS 28通过向SSD控制器30发送多个相应的读取命令来上载应用文件。启动应用文件所花费的持续时间应当很短,使得用户在能使用该应用程序之前等待最短的延迟。
用于加速应用程序启动持续时间的多种方法在本领域中是已知的。Yongsoo等人在“FAST:quick application launch on solid-state drives,”(第9届文件和存储技术USENIX会议论文集第259-272页,2011年2月15-17日,美国圣何塞),该文件以引用方式并入本文。
在本文所述的一些实施方案中,FS 28使用推测性预取来减小启动应用程序的持续时间。例如,FS 28可使用上文在图2-4中所述的推测性预取方法。
在一个示例性实施方案中,应用文件被连续地存储在闪存存储器中的一个闪存存储器中的连续物理地址范围中。在从OS 27接收到对应用文件的识别时,对于FS 28已可能在推测性预取被禁用的情况下从闪存存储器单独地读取每个应用文件。然而这会导致闪存存储器中的冗余读取操作,并且因此具有长的启动持续时间,尤其是在文件的尺寸大约为区块尺寸(例如4KB)或更小时。
在本文所公开的实施方案中,除了提供对应用文件的识别之外,OS 27向FS 28提示这些文件共同属于应用程序。在接收到该提示时,FS 28自动切换到推测性预取模式,在该推测性预取模式中,FS 28使用推测性预取诸如上文参考图2-4所述的那些,以高效地读取多个4KB区块。
图6是示意性地示出根据本发明的实施方案的用于减小应用程序的启动持续时间的方法的流程图。该方法由SSD控制器30执行,并且开始于SSD控制器在启动开始指示步骤200处从OS 27接受应用程序启动过程已开始的指示。在监视步骤204处,在FS 28读取应用文件期间,SSD控制器30监视并记录所上载文件的读取数据的逻辑地址和相应的物理地址。
在启动终止指示步骤208处,SSD控制器30从OS 27接受FS 28已结束上载应用文件的提示,并且SSD控制器30相应地停止在步骤204处执行的记录。SSD控制器然后在碎片整理步骤212处重新布置应用文件以占据连续的物理地址范围。在步骤212之后,该方法结束。将应用文件碎片整理到连续物理空间使得该应用程序的后续启动更高效(即,使用推测性预取),并且因此由于更短的启动持续时间而改善用户体验。
在另选的实施方案中,OS 27提示FS 28(而不是如图6所示的方法中那样提示SSD控制器30)在引发应用程序启动时开始记录应用文件的逻辑地址,并在应用程序启动终止时停止记录。在此类实施方案中,在启动终止之后,FS 28向SSD控制器30发出专用碎片整理命令。在碎片整理命令中,SSD控制器30从FS 28接受应用文件的逻辑地址。SSD控制器然后通过将应用文件重新布置在连续的物理地址范围中来执行碎片整理。
上述方法是示例性方法,在另选的实施方案中可使用其他方法。例如,虽然在所有上述方法中,数据区块尺寸和页面尺寸分别为4KB和16KB,但也可使用任何其他合适的尺寸。
又如,虽然VM和FS通常使用相同的数据区块尺寸,但在另选的实施方案中,可在VM和FS预取不同尺寸的数据区块(这两个尺寸均小于页面尺寸)来应用上述方法。另选地或除此之外,VM(或FS)可针对不同的过程或应用程序使用不同的区块尺寸。
本文所公开的方法不仅适用于基于SSD的存储系统,而且也适用于对于VM(或FS)每次预取未命中的数据区块,从基础存储器检索尺寸比区块尺寸大的页面的任何存储系统。
虽然本文所述的实施方案主要涉及主机处理器与基于SSD存储系统中的存储器设备进行通信,但是本文所述的方法和系统也可在其他应用中使用,诸如在主机被配置为以比基础存储设备所使用的存储单元更小的区块来存储数据的任何系统中使用。
应当理解,上文所描述的实施方案以举例的方式被引用,并且本发明不限于上文已特别示出或描述的内容。相反地,本发明的范围包括上文所述的各种特征的组合和子组合两者,以及本领域的技术人员在阅读前述描述时将想到的并且在现有技术中未公开的所述各种特征的变型和修改。在本专利申请中以引用方式并入的文献被认为是本申请不可分割的一部分,但如果任何术语在这些并入的文献中被定义成与本说明书中明确地或隐含地作出的定义相冲突,应仅考虑本说明书中的定义。
Claims (17)
1.一种用于数据存储的方法,包括:
保持用于在存储设备中读出的推测性读出模式的定义,其中所述存储设备被请求以读取具有数据单元尺寸的数据单元,并且作为响应,所述存储设备检索包含所述数据单元并且具有大于所述数据单元尺寸的存储页面尺寸的存储页面,并保留所述存储页面以为后续请求作准备;
协调对所述推测性读出模式的激活;以及
使用所述推测性读出模式来执行读出命令。
2.根据权利要求1所述的方法,其中协调所述激活包括在所述存储设备中接收用于读取单个数据单元的命令,并且其中执行所述读出命令包括从所保留的存储页面读取所述单个数据单元。
3.根据权利要求2所述的方法,其中执行所述读出命令包括在检测到所述单个数据单元不在所保留的存储页面中时报告错误事件。
4.根据权利要求2所述的方法,其中执行所述读出命令进一步包括在所保留的存储页面中的所有所述数据单元已被请求之后丢弃所保留的存储页面。
5.根据权利要求1所述的方法,其中执行所述读出命令包括在所述存储设备中接收用于读取所保留的存储页面中的给定数据单元的请求,并且从所保留的存储页面返回所述给定数据单元和所有连续数据单元。
6.根据权利要求1所述的方法,其中协调所述激活包括从所述存储设备报告所述存储页面尺寸。
7.根据权利要求1所述的方法,并且包括在所述存储设备中接收用于存储尺寸等于所述存储页面尺寸的数据的写入命令,并且对齐所述存储设备的页边界来存储所述数据。
8.一种存储设备,包括:
非易失性存储器;和
处理器,所述处理器被配置为:保持推测性读出模式的定义,其中所述存储设备被请求以读取具有数据单元尺寸的数据单元,并且作为响应,所述存储设备从所述非易失性存储器检索包含所述数据单元并且具有大于所述数据单元尺寸的存储页面尺寸的存储页面,并保留所述存储页面以为后续请求作准备;协调对所述推测性读出模式的激活;以及使用所述推测性读出模式来执行读出命令。
9.根据权利要求8所述的存储设备,其中所述处理器被配置为接收用于读取单个数据单元的命令,并且通过从所保留的存储页面读取所述单个数据单元来执行所述读出命令。
10.根据权利要求9所述的存储设备,其中所述处理器被配置为在检测到所述单个数据单元不在所保留的存储页面中时报告错误事件。
11.根据权利要求9所述的存储设备,其中所述处理器被进一步配置为在所保留的存储页面中的所有所述数据单元已被请求之后丢弃所保留的存储页面。
12.根据权利要求8所述的存储设备,其中所述处理器被配置为接收用于读取所保留的存储页面中的给定数据单元的请求,并且从所保留的存储页面返回所述给定数据单元和所有连续数据单元。
13.根据权利要求8所述的存储设备,其中所述处理器被配置为报告所述存储页面尺寸。
14.根据权利要求8所述的存储设备,其中所述处理器被配置为接收用于存储尺寸等于所述存储页面尺寸的数据的写入命令,并且对齐所述存储设备的页边界来存储所述数据。
15.一种装置,包括:
主机,所述主机被配置为运行操作系统;
存储设备;和
处理器,所述处理器被配置为从所述操作系统接收用于指示将要向所述存储设备发出的多个读取命令与对将要由所述操作系统执行的应用程序的启动相关联的提示,并且响应于所述提示来共同地处理所述多个读取命令。
16.根据权利要求15所述的装置,其中所述处理器被配置为使用推测性预取来执行所述多个读取命令。
17.根据权利要求16所述的装置,其中所述处理器被配置为将由所述多个读取命令读取的数据重新布置在所述存储设备中的连续物理地址范围中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/148,910 | 2014-01-07 | ||
US14/148,910 US9582204B2 (en) | 2014-01-07 | 2014-01-07 | Speculative prefetching of data stored in flash memory |
PCT/US2014/073040 WO2015105721A1 (en) | 2014-01-07 | 2014-12-31 | Speculative prefetching of data stored in flash memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105900069A true CN105900069A (zh) | 2016-08-24 |
CN105900069B CN105900069B (zh) | 2019-09-17 |
Family
ID=52395223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480072501.9A Active CN105900069B (zh) | 2014-01-07 | 2014-12-31 | 对被存储在闪存存储器中的数据的推测性预取 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9582204B2 (zh) |
JP (1) | JP6224253B2 (zh) |
KR (1) | KR101790913B1 (zh) |
CN (1) | CN105900069B (zh) |
DE (1) | DE112014006118B4 (zh) |
WO (1) | WO2015105721A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329908A (zh) * | 2017-07-07 | 2017-11-07 | 联想(北京)有限公司 | 一种数据处理方法和电子设备 |
CN107479938A (zh) * | 2017-09-27 | 2017-12-15 | 北京忆芯科技有限公司 | 电子设备及其启动方法 |
CN109582490A (zh) * | 2017-09-28 | 2019-04-05 | 北京忆芯科技有限公司 | 智能重读命令生成 |
CN110097898A (zh) * | 2018-01-29 | 2019-08-06 | 三星电子株式会社 | 页面大小感知调度方法和非暂时性计算机可读记录介质 |
CN110389909A (zh) * | 2018-04-16 | 2019-10-29 | 三星电子株式会社 | 使用深度神经网络优化固态驱动器的性能的系统和方法 |
CN110688325A (zh) * | 2019-09-05 | 2020-01-14 | 苏州浪潮智能科技有限公司 | 一种固态硬盘的垃圾回收方法、装置、设备及存储介质 |
CN113360085A (zh) * | 2020-03-06 | 2021-09-07 | 旺宏电子股份有限公司 | 存储器装置、用于操作其的方法以及自其读取档案的方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9594687B2 (en) * | 2015-04-14 | 2017-03-14 | Google Inc. | Virtualization-aware prefetching |
KR20170001235A (ko) * | 2015-06-26 | 2017-01-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US20170123796A1 (en) * | 2015-10-29 | 2017-05-04 | Intel Corporation | Instruction and logic to prefetch information from a persistent memory |
JP2017122997A (ja) * | 2016-01-06 | 2017-07-13 | 富士通株式会社 | 情報処理装置、演算処理装置の制御方法および演算処理装置の制御プログラム |
US10817224B2 (en) * | 2016-06-23 | 2020-10-27 | Qualcomm Incorporated | Preemptive decompression scheduling for a NAND storage device |
CN109213448B (zh) * | 2018-08-30 | 2022-04-05 | 东信和平科技股份有限公司 | 一种智能卡的擦写数据的方法、装置、设备及存储介质 |
CN109254733B (zh) * | 2018-09-04 | 2021-10-01 | 北京百度网讯科技有限公司 | 用于存储数据的方法、装置和系统 |
KR102518095B1 (ko) | 2018-09-12 | 2023-04-04 | 삼성전자주식회사 | 스토리지 장치 및 시스템 |
US10607712B1 (en) | 2018-09-28 | 2020-03-31 | Toshiba Memory Corporation | Media error reporting improvements for storage drives |
KR20200057473A (ko) * | 2018-11-16 | 2020-05-26 | 삼성전자주식회사 | 스토리지 장치 및 이를 포함하는 스토리지 시스템 |
US11042325B2 (en) | 2019-08-05 | 2021-06-22 | International Business Machines Corporation | Speculative bank activate dynamic random access memory (DRAM) scheduler |
US11314637B2 (en) * | 2020-05-29 | 2022-04-26 | Hewlett Packard Enterprise Development Lp | System and method for efficient cache coherency protocol processing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1659527A (zh) * | 2002-04-29 | 2005-08-24 | 英特尔公司 | 从存储装置中检索信息的方法和系统 |
TW200937422A (en) * | 2008-02-21 | 2009-09-01 | Phison Electronics Corp | Data reading method for flash memory, controller and system therof |
US20120084532A1 (en) * | 2010-09-30 | 2012-04-05 | Nxp B.V. | Memory accelerator buffer replacement method and system |
CN102880558A (zh) * | 2011-06-09 | 2013-01-16 | 苹果公司 | 用于高速缓存块一致性的系统、方法和设备 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0675853A (ja) * | 1992-08-25 | 1994-03-18 | Oki Electric Ind Co Ltd | キャッシュメモリ装置 |
US7031987B2 (en) * | 1997-05-30 | 2006-04-18 | Oracle International Corporation | Integrating tablespaces with different block sizes |
US7143401B2 (en) * | 2000-02-17 | 2006-11-28 | Elbrus International | Single-chip multiprocessor with cycle-precise program scheduling of parallel execution |
KR100814247B1 (ko) * | 2000-06-27 | 2008-03-17 | 엔엑스피 비 브이 | 집적 회로 |
US7421567B2 (en) * | 2004-12-17 | 2008-09-02 | International Business Machines Corporation | Using a modified value GPR to enhance lookahead prefetch |
JP2007188408A (ja) * | 2006-01-16 | 2007-07-26 | Toshiba Corp | ストレージ装置及び方法 |
JP2007293604A (ja) * | 2006-04-25 | 2007-11-08 | Toshiba Corp | 情報処理装置およびプログラムロード方法 |
US20080215849A1 (en) * | 2007-02-27 | 2008-09-04 | Thomas Scott | Hash table operations with improved cache utilization |
US9052910B2 (en) * | 2007-10-25 | 2015-06-09 | International Business Machines Corporation | Efficiency of short loop instruction fetch |
JP5163220B2 (ja) | 2008-03-26 | 2013-03-13 | 富士通株式会社 | キャッシュ制御装置、情報処理装置 |
US8429377B2 (en) * | 2010-01-08 | 2013-04-23 | International Business Machines Corporation | Optimizing TLB entries for mixed page size storage in contiguous memory |
US20110238962A1 (en) * | 2010-03-23 | 2011-09-29 | International Business Machines Corporation | Register Checkpointing for Speculative Modes of Execution in Out-of-Order Processors |
US10031850B2 (en) | 2011-06-07 | 2018-07-24 | Sandisk Technologies Llc | System and method to buffer data |
-
2014
- 2014-01-07 US US14/148,910 patent/US9582204B2/en active Active
- 2014-12-31 JP JP2016541546A patent/JP6224253B2/ja active Active
- 2014-12-31 WO PCT/US2014/073040 patent/WO2015105721A1/en active Application Filing
- 2014-12-31 CN CN201480072501.9A patent/CN105900069B/zh active Active
- 2014-12-31 DE DE112014006118.2T patent/DE112014006118B4/de active Active
- 2014-12-31 KR KR1020167021071A patent/KR101790913B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1659527A (zh) * | 2002-04-29 | 2005-08-24 | 英特尔公司 | 从存储装置中检索信息的方法和系统 |
TW200937422A (en) * | 2008-02-21 | 2009-09-01 | Phison Electronics Corp | Data reading method for flash memory, controller and system therof |
US20120084532A1 (en) * | 2010-09-30 | 2012-04-05 | Nxp B.V. | Memory accelerator buffer replacement method and system |
CN102880558A (zh) * | 2011-06-09 | 2013-01-16 | 苹果公司 | 用于高速缓存块一致性的系统、方法和设备 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329908A (zh) * | 2017-07-07 | 2017-11-07 | 联想(北京)有限公司 | 一种数据处理方法和电子设备 |
CN107479938A (zh) * | 2017-09-27 | 2017-12-15 | 北京忆芯科技有限公司 | 电子设备及其启动方法 |
CN107479938B (zh) * | 2017-09-27 | 2024-03-29 | 北京忆芯科技有限公司 | 电子设备及其启动方法 |
CN109582490A (zh) * | 2017-09-28 | 2019-04-05 | 北京忆芯科技有限公司 | 智能重读命令生成 |
CN109582490B (zh) * | 2017-09-28 | 2023-12-15 | 北京忆芯科技有限公司 | 智能重读命令生成 |
CN110097898A (zh) * | 2018-01-29 | 2019-08-06 | 三星电子株式会社 | 页面大小感知调度方法和非暂时性计算机可读记录介质 |
CN110097898B (zh) * | 2018-01-29 | 2022-10-18 | 三星电子株式会社 | 页面大小感知调度方法和非暂时性计算机可读记录介质 |
CN110389909A (zh) * | 2018-04-16 | 2019-10-29 | 三星电子株式会社 | 使用深度神经网络优化固态驱动器的性能的系统和方法 |
CN110688325A (zh) * | 2019-09-05 | 2020-01-14 | 苏州浪潮智能科技有限公司 | 一种固态硬盘的垃圾回收方法、装置、设备及存储介质 |
CN113360085A (zh) * | 2020-03-06 | 2021-09-07 | 旺宏电子股份有限公司 | 存储器装置、用于操作其的方法以及自其读取档案的方法 |
Also Published As
Publication number | Publication date |
---|---|
DE112014006118T5 (de) | 2016-09-29 |
US9582204B2 (en) | 2017-02-28 |
US20150193155A1 (en) | 2015-07-09 |
WO2015105721A1 (en) | 2015-07-16 |
JP2017503266A (ja) | 2017-01-26 |
KR20160104710A (ko) | 2016-09-05 |
DE112014006118B4 (de) | 2021-09-16 |
JP6224253B2 (ja) | 2017-11-01 |
CN105900069B (zh) | 2019-09-17 |
KR101790913B1 (ko) | 2017-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105900069B (zh) | 对被存储在闪存存储器中的数据的推测性预取 | |
CN108572796B (zh) | 具有异构nvm类型的ssd | |
EP3511814B1 (en) | Storage device storing data in order based on barrier command | |
CN113906383B (zh) | 主机系统和存储器子系统之间的定时数据传送 | |
US10642513B2 (en) | Partially de-centralized latch management architectures for storage devices | |
US11669272B2 (en) | Predictive data transfer based on availability of media units in memory sub-systems | |
US10613985B2 (en) | Buffer management in a data storage device wherein a bit indicating whether data is in cache is reset after updating forward table with physical address of non-volatile memory and jettisoning the data from the cache | |
KR102663304B1 (ko) | 구역 네임스페이스 디바이스들에서의 판독 처리 | |
CN110032333A (zh) | 存储器系统及其操作方法 | |
KR20160147509A (ko) | 저장 장치의 온도별 데이터 관리 방법 | |
KR102646724B1 (ko) | 배리어 커맨드에 기초하여 데이터를 순서대로 저장하는 스토리지 장치 | |
CN103530237A (zh) | 一种固态盘阵列的垃圾回收方法 | |
WO2018093442A1 (en) | Storage operation queue | |
US9696937B2 (en) | Memory system data management | |
CN112130749A (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
CN113986773A (zh) | 基于固态硬盘的写放大优化方法、装置及计算机设备 | |
CN111610931B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US9665479B2 (en) | Managing response time | |
KR20190066918A (ko) | 반도체 장치 | |
KR101744401B1 (ko) | 컴퓨팅 장치의 시스템 상태 저장, 복원방법 및 이를 위한 컴퓨팅 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |