CN114168495A - 存储设备的增强的预读能力 - Google Patents
存储设备的增强的预读能力 Download PDFInfo
- Publication number
- CN114168495A CN114168495A CN202110645270.8A CN202110645270A CN114168495A CN 114168495 A CN114168495 A CN 114168495A CN 202110645270 A CN202110645270 A CN 202110645270A CN 114168495 A CN114168495 A CN 114168495A
- Authority
- CN
- China
- Prior art keywords
- read
- read request
- data storage
- request
- next data
- 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.)
- Pending
Links
Images
Classifications
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/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/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- 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/6022—Using a prefetch buffer or dedicated prefetch cache
-
- 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/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本发明题为“存储设备的增强的预读能力”。在数据存储的背景下,一种在读取请求之前预先获取数据的方法涉及接收读取请求和下一个读取请求,以及用对应于该下一个读取请求的下一个数据存储地址更新对应于该读取请求的元数据。响应于稍后再次接收到该读取请求,可从读取请求元数据读取该下一个数据存储地址,并且可在处理下一个读取请求之前从该下一个数据存储地址预先获取下一个数据。此外,在另一个传入的下一个读取请求前,可以在读取队列空闲时间期间预先获取该下一个数据并且将其存储在高速缓存缓冲器中,响应于此,该下一个数据可以从该缓冲器而不是从非易失性存储器的读取被返回给主机。
Description
相关申请的交叉引用
本申请是2018年6月19日提交的美国专利申请号16/012,311的部分继续申请并且要求其优先权权益,该美国专利申请的全部内容以引用方式并入本文以用于所有目的,如同在本文中完整阐述一样。
技术领域
本公开的各方面涉及存储设备领域,并且更具体地,涉及提高读取操作速度的增强的预读能力。
背景技术
随着中央处理单元、图形处理器和其他处理元件的速度提升,存储设备已经成为影响计算系统的总体性能的瓶颈。固态驱动器(SSD)相对于硬盘驱动器(HDD)运行的速度在一定程度上缓解了该问题。无论如何,给定的SSD仍然可以拖慢主机速度,并且不同SSD的性能彼此间可大不相同。
可基于多种因素来评估存储设备的相对性能,诸如给定设备的容量及其读取和写入速度。虽然大多数的写入速度随时间推移得到了提升,但是读取时间一直是限制存储设备性能的关键因素。顺序读取技术在一定程度上提升了速度,如提高了切换速率,但以增大的功率消耗为代价。
随机读取对加快速度的目标提出了特定的挑战。与允许从介质上的相邻位置读取大的连续数据块的顺序读取相比,随机读取寻求散布在介质上的各种非相邻位置上的数据。因此,随机读取在读取进程中引入了延迟,这影响存储设备和与其相关联的主机的总体性能。
发明内容
本文公开了一种预读技术以提高存储设备读取数据的速度。可将用于给定写入操作的数据写入存储装置,使得下一次写入的位置与数据一起存储。稍后,当从存储装置读取数据时,可以从与数据一起写入的下一次写入的位置预先获取其他数据。如果下一个位置是后续读取操作的目标,则可以立即将其他数据返回给主机,因为已经从存储所述数据的位置读取了所述数据。因此,该进程加快了后续读取操作。
在数据存储的背景下,一种在读取请求之前预先获取数据的方法涉及接收读取请求和下一个读取请求,以及用对应于该下一个读取请求的下一个数据存储地址更新对应于该读取请求的元数据。响应于稍后再次接收到该读取请求,可从读取请求元数据读取该下一个数据存储地址,并且可在处理下一个读取请求之前从该下一个数据存储地址预先获取下一个数据。此外,在另一个传入的下一个读取请求前,可以在读取队列空闲时间期间预先获取该下一个数据并且将其存储在高速缓存缓冲器中,响应于此,该下一个数据可以从该缓冲器而不是从非易失性存储器的读取被返回给主机。
附图说明
参考以下附图可以更好地理解本公开的许多方面。附图中的部件未必按比例绘制,而是将重点放在清楚地示出本公开的原理。此外,在附图中,贯穿几个视图,相似的附图标号指代对应的部分。尽管结合这些附图描述了若干实施方案,但本公开并不限于本文所公开的实施方案。相反,其旨在涵盖所有另选方案、修改和等同物。
图1示出了具体实施中的计算系统。
图2示出了具体实施中的写入进程。
图3示出了具体实施中的读取进程。
图4示出了具体实施中的可操作场景。
图5示出了具体实施中的计算系统。
图6示出了具体实施中的写入进程。
图7示出了具体实施中的读取进程。
图8示出了具体实施中的可操作架构。
图9A至图9B示出了具体实施中的可操作架构。
图10示出了具体实施中的功率控制进程。
图11示出了具体实施中的简化的计算系统架构。
图12示出了具体实施中的减少读取时间的方法。
图13示出了具体实施中的预先获取数据的方法。
图14示出了具体实施中的将数据预先获取到读取队列的方法。
具体实施方式
本文公开了具有增强的预读能力的改进的存储设备。在各种具体实施中,通过预测在给定的读取操作之后接下来将读取哪个地址来减少读取时间(并且提升速度)。可以在针对地址的后续读取请求之前预先获取该地址处的数据。
预测地址可以从关于写入命令出现在队列中时的写入命令所保存的信息导出。此类地址跟踪在读取每个地址期间可用作对下一个读取命令的预测器。在一个示例中,从先前读取操作的有效载荷获得预测地址。即,在写入操作的前期,下一次写入的地址可与给定写入的有效载荷中的数据一起被写入存储装置。稍后,当该有效载荷是读取请求的主题时,可解析其有效载荷以获得下一个写入地址的地址。然后该下一个写入地址可被用作下一个/预测的读取地址。
这样,预测地址处的数据可以在可能指向相同地址的任何后续读取之前被预先获取。可以在相关读取前对数据进行缓冲。如果下一个读取请求指向预测地址,则可以立即返回缓冲数据,而不必等待读取操作。如果下一次读取不指向预测地址,则可以丢弃数据。
获得下一个写入命令的地址是可能的,因为由于在介质上对数据进行编程所花费的时间量,在执行给定写入时队列中具有其他写入命令的概率很高。相反,由于读取与写入的相对速度,在队列中具有其他读取请求的概率很低。因此,预测该下一次读取是有用的,因为在读取期间读取队列可能为空。
在一些具体实施中,由于增强的预读,功率消耗可能增大,因为并非所有预测都将是成功的。减少冗余开销和额外功率消耗的对策是跟踪所提出的上述预测的成功率。当成功率高于某个阈值时,可以有条件地启用预测读取,并且当成功率低于阈值时,可以禁用预测读取。
在各种具体实施中,存储设备可以是例如固态驱动器(SSD)、硬盘驱动器(HDD)、混合SSD-HDD或任何其他类型的存储设备。该设备包括控制器,该控制器监督如何将数据写入介质以及如何从介质读取数据,所述介质为诸如基于NAND的闪存存储器、动态随机存取存储器(DRAM)、磁数据存储装置、光学数据存储装置和/或任何其他类型的存储技术。
控制器可以硬件、固件、软件或它们的组合来实施,并且将设备的存储器部件桥接到主机。在硬件具体实施中,控制器包括耦接到存储介质的控制电路。控制电路包括从主机接收写入请求的接收电路。每个写入请求包括作为写入请求主题的数据,以及数据的目标地址。目标地址可以是逻辑块地址(LBA)、物理块地址(PBA)或描述存储数据的位置的其他此类标识符。
控制电路还包括位置电路,该位置电路标识在较早的写入请求之后的下一个写入请求的下一个写入地址。控制电路中的写入电路将用于写入请求的数据和下一个写入地址的指示写入用于写入请求的目标地址。换句话讲,将作为写入请求主题的数据与下一个写入请求的地址一起写入存储装置。如本文所用,“指示”是指标识或可用于确定随后将存储在介质上的该组数据的位置的任何数据值、位、值、信号、标记、条件、偏移量、代码或数字。
在简短的示例中,正在写入的4个字节的16kb的页面可用于下一次写入的地址(0.025%开销)。下一次写入的地址可被写入给定页面的标头部分中,但也可能将该地址存储在页面的用户数据部分中。地址的示例包括PBA、LBA或这两者,以及表示下一次写入的位置的任何其他信息。在一些具体实施中,下一个写入地址是存储下一个数据的位置的绝对地址,包括管芯、页面和块信息。在其他具体实施中,下一个写入地址的指示可以是与可用于解析下一个地址的当前LBA或PBA的偏移量。在其他示例中,下一个地址可以地址的简写版本写入。下一次写入的地址可以编码形式、未编码形式或以任何其他方式存储。
在写入请求之后,主机可以传送目标地址与初始写入请求中的地址相同的读取请求。控制电路中的读取电路从目标地址读取数据和下一个写入地址。此外,读取电路在由下一个写入地址指示的位置处预读,以在下一个读取请求之前获得下一个数据。如上所述,用作预读地址的下一个写入地址可由LBA、PBA、偏移量、标记等指示。例如,就LBA而言,控制电路将LBA转换为PBA以便获取下一个数据。在另一个示例中,如果下一个写入地址被存储为PBA,则不需要转换。就偏移量、信号、标记等而言,控制电路可从当前PBA计算预读PBA以及与偏移量、信号、标记等相关联的值。一旦主机传送下一个读取请求,下一个数据就准备好被立即返回给主机。在一些情况下,初始读取请求和下一个读取请求两者被认为是随机读取请求,因此读取操作被认为是随机读取。在一些具体实施中,控制电路还包括缓冲器电路以存储下一个写入地址的指示并且存储下一个数据。被缓冲的下一个写入地址的指示可被存储为可以同与后续读取请求相关的目标地址进行比较的值。例如,缓冲值可以是LBA,可以在后续读取请求中将其与LBA进行比较。在某些实施方案中,如果后续读取请求利用PBA,则缓冲值可以是PBA而不是LBA。在一些情况下,与多个预读操作相关联的地址和数据可被同时存储在缓冲器中。缓冲器的大小可被设定成使得其可容纳一个或多个页面的数据。在一种情形下,缓冲器可以是96kB或更小的RAM,或者是约四个页面的数据的大小。然而,应当理解,RAM大小可以增加,页面大小也可以增加。
然后,控制电路的比较器部分可确定在下一个读取请求中指定的下一个目标地址与下一个写入地址匹配。这可以通过将缓冲器中下一个写入地址的值与下一个读取请求中的地址的值进行比较来实现。例如,可以将下一个读取请求中的LBA与缓冲器中的LBA进行比较。在另一个示例中,可以将下一个读取请求中的PBA与缓冲器中的PBA进行比较。在一些另选的实施方案中,存储在缓冲器中的值可与存储在介质上或者在预读操作期间计算的下一个写入地址的实际值相差偏移量。在这种情况下,控制电路将先计算实际值,再将其与下一个读取请求中的值进行比较。在值彼此匹配的情况下,控制电路的比较器或其他元件可以响应于下一个读取请求而将下一个数据返回给主机。如果下一个读取请求中给出的下一个目标地址与下一个写入地址不匹配,则比较器可以丢弃下一个数据。
在一些具体实施中,控制器可以包括写入队列和读取队列。该读取队列从主机接收读取请求,而写入队列接收写入请求。读取请求可指示在非易失性存储介质中的哪个位置读取数据,从而允许控制器从由给定读取请求指示的位置获取数据。
在此操作之后,控制器解析来自从该位置读取的有效载荷的下一个读取请求的预测地址。然后,控制器可以在实际接收下一个读取请求之前从下一个读取请求的预测位置预先获取附加数据。如果下一个读取请求的实际位置不同于预测位置,则控制器可以简单地丢弃下一个数据并且继续从实际位置读取。
相对于写入队列,队列中的每个写入请求指示针对给定的写入请求在哪个位置写入数据。控制器的预测器部分基于由较早的写入请求之后的下一个写入请求指示的位置来标识针对下一个读取请求的预测位置。控制器的写入部分可向针对较早的写入请求指示的位置写入用于较早的写入请求的数据和预测位置的指示。控制器的缓冲器部分可以存储针对下一个读取请求的预测位置的指示以及下一个数据。
如上所述,比较器部分可确定下一个读取请求所指示的位置与下一个读取请求的预测位置匹配。比较器或控制器的其他部分可将下一个数据返回给主机。如果下一个读取请求所指示的位置与下一个读取请求的预测位置不匹配,则可以丢弃下一个数据。
此类增强的预读技术提供了各种技术优点,这可从上文和下文对图1至图10的讨论显而易见。例如,在读取请求之前预先获取数据提高读取速度。就随机读取而言,这可能是特别有利的,随机读取需要更长的时间来完成,因为在随机读取的情况下数据散布在介质上。在另一个示例中,控制器不需要知道主机上的请求应用程序。相反,控制器可在不知道请求应用程序的情况下采用增强的预先操作。
现在转到附图,图1示出了增强的预读技术的具体实施中的计算系统100。计算系统100包括主机101和存储设备110。主机101表示可向存储设备110写入数据并且从该存储设备读取数据的任何主机子系统。存储设备110表示能够在内部或外部连接至主机101以用于读取和写入数据的任何设备。存储设备110的示例包括但不限于固态驱动器(SSD)、拇指驱动器、硬盘驱动器(HDD)、混合SSD/HDD驱动器,以及它们的任何变型或组合。计算系统100的示例包括但不限于个人计算机、膝上型计算机、服务器计算机、平板电脑、移动电话、网络驱动器、消费电子设备(例如,相机、电视机和媒体播放器)、游戏设备、耐用品设备以及利用一个或多个存储设备的任何其他系统、变型或它们的组合。
主机101通过连接件103与存储设备110通信。连接件103表示耦接主机101和存储设备110的一个或多个物理互连件,并且存储通信可通过该一个或多个物理互连件在两者之间流动。当主机101与存储设备110通信时可利用一个或多个接口协议,诸如(但不限于)串行ATA(SATA)、光纤信道、火线、串行附接小型计算机系统接口(SAS)、高级技术附接/集成驱动电子器件(ATA/IDE)、通用串行总线(USB)和外围部件快速互连(PCIe)。
存储设备110包括控制器111和存储介质115。控制器111表示通过将数据写入存储介质115并且从存储介质115读取数据来起到监督作用的一个或多个处理元件。控制器111能够执行写入进程200和读取进程300,分别在图2和图3中更详细地描述,所述写入进程和读取进程可以在硬件中实施,也可以在固件、软件或可由控制器111执行的其他形式的程序指令中实施。存储介质115是可在上面写入和读取数据的任何非易失性介质。示例包括但不限于NAND闪存介质、DRAM介质、相变介质、磁介质和光学介质。连接件113表示耦接控制器111和存储介质115的一个或多个物理互连件。
在操作中,主机101将读取和写入请求传送到控制器111以在存储介质115上执行,其中写入请求121和读取请求125是代表性的。控制器111在处理写入请求121时执行写入进程200,并且在处理读取请求125时执行读取进程300。以下是写入进程200和读取进程300的详细讨论,并且实质上分别参考图2和图3中的步骤。
参见图2,控制器111从主机101接收给定的写入请求(步骤201)。写入请求包括待写入的数据和指示在存储介质115上的哪个位置写入数据的位置。该位置可由物理块地址(PBA)、逻辑块地址(LBA)或任何其他合适的指示给出。在一些情况下,位置可以不在写入请求本身中给出,而是可由主机101单独提供或者在由控制器111接收到写入请求时确定。
接下来,控制器111标识由主机101提交的下一个写入请求的下一个位置(步骤203)。这可通过例如读取与写入队列中的下一个写入请求相关联的地址来实现。控制器111然后生成待写入到为初始写入请求指定的位置的有效载荷(步骤205)。该有效载荷可至少包括用于第一写入请求的数据和用于下一个写入请求的下一个位置。下一个位置可以是PBA,但另选地可以是LBA。
虽然在该示例中在有效载荷中仅包括单个下一个位置,但应当理解,多个位置可被存储在单个有效载荷中。例如,下一个地址和其之后的下一个地址均可被存储在给定的有效载荷中。此外,虽然如本文所用,术语“下一个”是指队列中的紧接的下一个地址,但变型也是可能的。例如,可以跳过紧接的下一个地址,相反地,使用紧接的下一个地址之后的下一个地址并且将其包括在有效载荷中。
在生成有效载荷之后,控制器111将有效载荷写入针对写入请求指定的初始位置(步骤207)。这样,将用于写入请求的数据与用于队列中的下一个写入请求的位置的标识一起存储。写入进程200可继续以获得后续写入请求,写入下一个写入请求的地址,以使每个先前的请求伴有针对该请求的数据。后续位置信息可用作读取进程300的预测位置,下面将对此进行讨论。
参见图3中的读取进程300,控制器111从主机101接收给定的读取请求(步骤301)。该读取请求包括控制器111要读取数据的地址。该位置可被指定为PBA或LBA,在这种情况下,控制器111将LBA转换成PBA。
控制器111在由读取请求给出的地址处从存储介质115获取有效载荷(步骤303),并且将有效载荷解析成其数据和在写入进程200的背景下与数据一起存储的下一个位置(步骤305)。数据可被返回给主机101(步骤306),而下一个位置用于预先获取下一个数据(步骤307)。
应当理解,预先获取步骤不需要总是发生。相反,如果有效载荷包含空值或以其他方式不包括下一个位置,则控制器111可避免尝试预先获取数据。在另一个任选的示例中,如果读取请求不是随机读取请求,则控制器111可以避免进行解析和预先获取步骤。即,在前进至步骤305和步骤307之前,控制器111可首先确定读取请求是否为随机读取请求。控制器111自身可以确定读取请求为随机读取,或者可通过主机101获知这一事实。
可以缓冲下一个位置的地址和预先获取的数据,使得在接收到后续读取请求时它们可用。在一些具体实施中,有效载荷可包括多于一个的接下来的地址,在这种情况下,控制器可从多个位置预先获取并且缓冲数据。然后还将缓冲多个“接下来的地址”。
控制器111可以将后续读取请求中的地址与缓冲器中的下一个地址进行比较,以确定它们是否相同(或者如果存在于缓冲器中的话,与多个接下来的地址进行比较)。如果相同,则控制器111可响应于后续读取请求将预先获取的数据返回给主机101,而不是必须将其获取。
重新参考图1所示的示例性场景,主机101将写入请求121提交到存储设备110。写入请求121包括具有数据d1和地址L1的第一请求;第二请求包括数据d2和位置L2;并且第n个请求包括数据dn和位置Ln。
将写入进程200应用于第一写入请求,控制器111生成待写入存储介质115的有效载荷123。控制器111从第一请求中的数据和第二请求中的地址生成有效载荷d1_L2。有效载荷被写入存储介质115。同样,控制器111生成用于第二请求的有效载荷d2_L3。针对第n个请求生成的有效载荷包括来自第n个请求的数据和队列中的下一个写入请求的位置,或dn_Ln+。
主机101还提交读取请求,其中读取请求125是代表性的。读取请求125将位置L1标识为可表示例如随机读取请求,但其他类型的读取也是可能的。
应用读取进程300,控制器111响应于来自主机101的读取请求而获取(和预先获取)有效载荷127。例如,控制器111从位置L1获取有效载荷,该位置是上面所讨论的第一写入请求的有效载荷,或d1_L2。
控制器111解析有效载荷以获得下一个位置,L2。有效载荷的数据部分(d1)可被返回给主机101。在指向L2的另一个读取请求前,控制器111还预先获取位置L2处的有效载荷。该有效载荷也被解析成其数据部分(d2)和位置部分(L3)。
假设接收到指向L2的另一个读取请求,则控制器111可以立即返回具有数据d2的响应,而不必获取数据。然而,如果没有接收到指向L2的读取请求,则可以在一段时间之后丢弃或重写数据d2。控制器可任选地在位置L3处预先获取有效载荷,然后在位置Ln+处再次预先获取有效载荷,依此类推,直到达到限制的约束。
图4示出了展示本文所公开的增强的预读技术的各种定时方面的具体实施中的操作场景400。操作场景400涉及主机401、写入队列403、读取队列404、控制器405和介质407。虽然单独示出,但写入队列404和读取队列404可相对于控制器405在外部或内部实施。应当理解,可涉及其他元件、连接等,但为了清楚起见未示出。
在操作中,主机401向写入队列403传送由w1(d1,L1)和w2(d2,L2)表示的两个写入请求。虽然示出为主机401和队列之间的直接通信,但应当理解,在请求到达写入队列403之前将其路由通过其他物理或逻辑元件,包括控制器405。
控制器405按照在队列中写入请求被接收的一般顺序来实施写入请求。因此,控制器405首先实施w1,然后实施w2。相对于第一写入请求,控制器405查看队列以标识下一个写入请求(即,w2)的地址。在L2已知的情况下,控制器405针对w1生成有效载荷,其包括d1和L2。然后,控制器405在由第一写入请求L1指定的位置处将d1和L2写入介质407。
根据队列的一般顺序,控制器405接下来处理第二写入请求。出于示例性目的,假设第三写入请求在写入队列403中在w2之后并且被寻址到L3。因此,控制器405针对包括d2和L3的w2生成有效载荷。然后将有效载荷写入介质407中的L2。
稍后,在写入已完成之后,主机401可提交读取请求以获得先前针对w1写入的数据。读取队列404填充有读取请求,该读取请求指示待获得数据的地址。控制器405获取存储在所指示的地址处的有效载荷,该有效载荷包括数据(d1)和下一个位置(L2)。
控制器405将有效载荷解析成其数据和位置组成部分,并且将数据部分返回给主机401。利用位置部分,控制器405预先获取位置L2处的有效载荷。该有效载荷包括数据(d2)和另一个“下一个”位置(L3)。控制器405将数据与数据被检索的位置(L2)而不是与数据一起存储的位置一起缓冲。控制器405可任选地执行存储在L3处的有效载荷的另一次预先获取。
主机401传送后续读取请求。作为响应,控制器405将后续读取请求中的位置与存储在缓冲器中的位置进行比较。在该示例中,两个地址均反映L2。这样,控制器405可以用缓冲数据d2应答读取请求,而不必从介质407获取数据。
图5示出了在多线程环境的背景下应用的增强的预读技术的另一个具体实施中的计算系统500。计算系统500包括主机501和存储设备510。主机501表示可向存储设备510写入数据并且从该存储设备读取数据的任何多线程子系统。存储设备510表示能够在内部或外部连接至主机501以用于读取和写入数据的任何设备。
线程502和线程504各自表示在多线程环境中可用的各种线程。每个线程在运行时可被动态地分配给在主机501中运行的不同的应用程序、实用程序或部件。线程向存储设备510提交由(与线程502相关联的)请求522和(与线程504相关联的)请求524表示的读取请求。
主机501通过连接件503与存储设备510通信。连接件503表示通信地耦接主机501和存储设备510的一个或多个物理互连件。当主机501与存储设备510通信时可利用一个或多个接口协议,诸如(但不限于)串行ATA(SATA)、光纤信道、火线、串行附接小型计算机系统接口(SAS)、高级技术附接/集成驱动电子器件(ATA/IDE)、通用串行总线(USB)和外围部件快速互连(PCIe)。
存储设备510包括控制器511和介质515。控制器511表示控制相对于介质515的读写进程的一个或多个处理元件。控制器511能够执行写入进程600和读取进程700,分别在图6和图7中更详细地描述。介质515是可在上面写入和读取数据的任何非易失性介质。示例包括但不限于NAND闪存介质、DRAM介质、相变介质、磁介质和光学介质。连接件513表示耦接控制器511和介质515的一个或多个互连件。
在操作中,主机501将读取和写入请求传送到控制器511。控制器511在处理写入请求时执行写入进程600,并且在处理读取请求时执行读取进程700。以下是写入进程600和读取进程600的详细讨论,并且实质上分别参考图6和图7中的步骤。
参见图6,控制器511从主机501接收多个写入请求2(步骤501)。每个写入请求包括待写入的数据和指示在介质515上在何处写入数据的位置。该位置可由物理块地址(PBA)、逻辑块地址(LBA)或任何其他合适的地址给出。在一些情况下,位置可以不在写入请求本身中给出,而是可由主机501单独提供或者在由控制器511接收到写入请求时确定。
对于任何给定的写入请求,控制器511在其之后标识与下一个请求相关联的线程(步骤603)。可在下一个写入请求中标识线程,或者可以某种其他方式确定线程。控制器511将与即时请求相关联的线程与同下一个请求相关联的线程进行比较以确定它们是否相同(步骤605)。
如果线程相同,则控制器511生成由用于即时请求和下一写入请求的下一个地址的数据构成的有效载荷(步骤607)。然后将有效载荷写入所指示的地址(步骤609)。然而,如果线程不相同,则控制器511简单地将数据写入所指示的地址(步骤606),从而通过避免生成有效载荷的步骤来节省资源。
参见图7,控制器511接收标识目标地址的读取请求(步骤701)。作为响应,控制器511检查预读标记以确定是否已经针对先前的读取请求缓冲了任何信息(步骤703)。如果已启用标记,则控制器511相对于存储在缓冲器中的地址评估请求中的目标地址(步骤705)。如果它们相同,则控制器可以从缓冲器读取在处理先前读取请求的背景下预先获取的数据(步骤706)。
如果地址不相同,则控制器511继续在读取请求中的指定地址处获取有效载荷(步骤707)。控制器511将有效载荷解析成其组成部分,所述组成部分至少包括数据和与主题数据之后要写入的下一个数据有关的地址(步骤709)。
利用现有数据,控制器511可将数据读出到主机501(步骤710)。控制器511还检查下一个地址是否为空或指示下一个地址未被写入存储装置的某个其他值(步骤711)。例如,当在给定写入请求之后的下一个写入请求并非源自相同的线程时,可能是这种情况(参见上文相对于图6的步骤605)。
如果下一个地址值为空,则控制器511将标记设置为禁用(步骤712),使得在接收到后续读取请求时,可跳过比较地址的步骤。如果下一个地址不为空,则控制器511将标记值设置(或保持)为启用,使得可以比较后续读取请求中的目标地址(步骤713)。
在设置标记之后,控制器511预先获取存储在从主题有效载荷解析的下一个地址的位置处的有效载荷(步骤715)。控制器511将来自预先获取的有效载荷的下一个数据与对应于下一个数据的地址一起存储在缓冲器中(步骤717)。当读取进程700返回步骤705时,可以将该下一个地址与包括在后续读取请求中的后续目标地址进行比较。
图8示出了增强的预读技术的写入侧的具体实施中的操作架构800和相关联的示例性场景。相对于图8、图9A和图9B示出了所述增强的预读技术的读取侧的具体实施中的操作架构900,以及相关联的示例性场景。应当理解,这两个架构可在合适的存储设备(诸如SSD、混合HDD/SSD等)的背景下组合(没有任何冗余元件)。
参见图8,操作架构800包括写入队列810、介质810以及由定位模块801、接收模块803和写入模块805表示的各种操作模块。定位模块801、接收模块803和写入模块可在硬件、固件或其他软件以及它们的任何变型或组合中实施。写入队列810可在介质830外部实施,但也可以在内部实施。在任一种情况下,写入队列810可被定位模块801、接收模块803和写入模块805中的一者或多者访问。应当理解,操作架构800可包括为了清楚起见而省略的其他元件,诸如系统总线、接口和互连件等。
在操作中,写入请求从主机(未示出)被接收到写入队列810中并且占用队列中的顺序或位置。写入请求由位置811中的请求w1;位置813中的请求w2;位置815中的请求w3,以及位置817中的请求n表示。因此,将写入请求以如下顺序进行处理:w1、w2、w3、wn等。
在从写入队列810中调度写入请求以执行时,接收模块803接收写入请求。例如,接收模块803接收请求w1并且将其传递到写入模块805。请求w1包括数据(d1)和在哪个位置写入数据的位置标识符(L1)。
定位模块801查看写入队列810以标识在主题写入请求(在这种情况下为w2)之后队列中的下一个写入请求的位置。w2的位置为L2,并且因此位置模块801将L2传递到写入模块805。写入模块805接收来自接收模块803的信息和来自定位模块的信息两者,并且生成待写入到L1的有效载荷。在该示例中,有效载荷831是d1和L2的组合。
相对于队列中的其他写入请求执行类似的操作。有效载荷833与w2相关联地生成,并且包括数据d2和位置L3。有效载荷835与w3相关联地生成,并且包括数据d3和位置L4。最后,有效载荷837与wn相关联地生成,并且包括数据dn和位置Ln+。这样,可在读取进程期间检查有效载荷并且在适当的情况下预先获取有效载荷,从而加快读取进程。
参见图9A,操作架构900包括读取队列950、介质910以及由比较模块941、读取模块943和缓冲器947表示的各种操作模块。读取模块943可包括解析模块945,但其可相对于读取模块943在外部实施。比较模块941、读取模块943、缓冲器947和解析模块945可在硬件、固件或其他软件以及它们的任何变型或组合中实施。读取队列910可在介质930外部实施,但也可以在内部实施。在任一种情况下,读取队列910可被比较模块941、读取模块943和缓冲器947中的一者或多者访问。应当理解,操作架构900可包括为了清楚起见而省略的其他元件,诸如系统总线、接口和互连等。
在操作中,读取请求从主机被接收到读取队列950中。读取请求由图9A中的r1以及图9B中的r2和r3表示。请求在队列中具有顺序或位置,分别由位置951、位置953和位置955表示。为了方便说明,假设读取请求是随机读取请求,而不是顺序读取请求,但是顺序读取请求可以散布在随机读取请求之间。
从队列中取出读取请求并且将其传送到比较模块941。比较模块941将给定读取请求中的地址与缓冲在缓冲器947中的地址(如果有的话)进行比较,以确定是否需要获取主题数据或者是否已经预先获取了主题数据。在该示例中,读取请求r1与位置L1相关。将L1与缓冲器947中的Lx进行比较。由于它们不匹配,比较模块941将地址传递到读取模块943。
读取模块943负责从位置L1获取有效载荷931。解析模块945将有效载荷解析成其组成部分d1和L2。读取模块943能够向主机返回d1并且从L2预先获取有效载荷933。有效载荷933包括数据d2和位置L3。数据d2被传送到缓冲器947以与位置L2相关联地存储。
图9B示出了在图9A中开始的示例性场景的延续。在图9B中,比较模块941接收读取请求r2并且将其从队列中取出。在此,比较模块941确定r2中的目标地址与缓冲器947中存储的地址相同。因此,比较模块941指示读取模块943从缓冲器942向主机读出数据d2。在该步骤中可省略读取模块943。
由于位置L2处的有效载荷引用了下一个地址L3,因此读取模块可任选地在L3处预先获取有效载荷935。这样,解析模块将解析有效载荷935以获得数据d3。数据d3和位置L3将被存储在缓冲器947中以与一个或多个后续读取请求进行比较。
图10示出了具体实施中的功率控制进程1000,由此基于各种操作条件动态地启用和禁用本文所公开的增强的预读技术。固态驱动器或其他合适的存储设备中的控制器可采用功率控制进程1000,该功率控制进程可在硬件、固件或其他软件中实施。
在操作中,给定的控制器跟踪在增强的读取进程的背景下进行的预读尝试的命中率(步骤1001)。命中率可与后续读取请求实际请求预先获取的数据的比率有关。例如,指向第一位置的初始读取请求可以产生标识第二位置的有效载荷。然后,第二位置处的数据将在可以(或可以不)以第二位置为目标的任何后续读取请求之前被预先获取。如果下一个读取请求指向第二位置,则预先获取将被认为是命中,而如果下一个读取请求指向不同的位置,则预先获取将被认为是未命中。
控制器可以通过对预先获取数据成为后续读取请求主题的次数进行计数来跟踪预先获取操作的成功率。控制器还可以分析命中率是否低于给定阈值(步骤1003)。
如果命中率保持等于或高于阈值,则控制器可继续在预读过程被启用的情况下操作。如果命中率降至阈值以下,则控制器禁用预读进程(步骤1005)。
为了重新启用预读进程,控制器周期性地评估一个或多个其他条件(步骤1006)。例如,预读可被禁用一段时间,在该时间段之后预读被自动重新启用。在另一个示例中,预读可保持禁用,直到满足电池电平或其他功率条件。在那之前,控制器在预读进程被禁用的情况下操作。
禁用预读进程可在面临大量未命中的预读尝试的情况下节省功率、减少处理周期或者其他资源。在条件改变时重新启用该进程允许设备重新获得增强的预读的优点。
例示性操作背景的物理描述:数据存储系统
针对大容量数字数据存储系统存在商业需求,其中可以将能够连接至主机1150以用于读取和写入数据的多个数据存储设备(DSD)(诸如固态驱动器(SSD)和/或硬盘驱动器(HDD)和/或混合SSD-HDD驱动器或任何其他类型的存储设备或它们的变型或组合)容纳在共同的共壳体中。数据存储系统通常包括容纳多个搁架的大型壳体,DSD的行安装在该搁架上。
回想一下,随机读取性能是数据存储设备的性能限制因素,并且可在读取进程中引入延迟,从而影响设备的总体性能。因此,预测接下来将读取哪个地址的任何方式都可以节省时间,这可使总体设备延迟减少。因此,预测接下来将从控制器请求哪些数据并且发起“预读”(或“预先获取”)的方式可以提升随机读取性能并且减少设备延迟。
图11为根据一个实施方案的示出简化的计算系统架构的框图。示例性计算系统架构包括数据存储系统1100,该数据存储系统包括多个数据存储设备(DSD)1104a(DSD1)、1104b(DSD2)和1104n(DSDn)(统称为1104a至1104n),其中n表示可因具体实施而异的任意数量的DSD。每个DSD 1104a至1104n根据对应的通信或接口协议1115经由相应的通信接口1114与系统控制器1102进行通信并且处于该系统控制器的某种级别的监督控制之下。每个DSD 1104a至1104n包括由相应的DSD存储器控制器1108控制的对应的非易失性存储器(NVM)1106,该DSD存储器控制器监督如何将数据写入到对应的NVM 1106(例如,接SSD而言通常是NAND闪存存储器的形式,并且就HDD而言是旋转磁盘介质的形式)以及如何从该对应的NVM读取数据。
数据存储系统1100的系统控制器1102至少包括存储器1110、处理器1112和读取队列1113。读取队列1113接收来自主机1150的读取请求以及/或者由其填充,其中读取请求可指示NVM 1106中的获得或读取请求数据的位置(例如,通过逻辑块地址,或“LBA”或物理块地址或“PBA”),从而允许对应的DSD控制器1108从由给定的读取请求指示的适当NVM 1106存储器位置获取数据。虽然在内部单独地示出,但是读取队列1113可以相对于系统控制器1102在外部或内部实施,或者可以在存储器1110内实施。应当理解,系统控制器1102可涉及其他元件、连接件等,但为了清楚起见,未在此示出。
在本文中被描述为由系统控制器1102或DSD存储器控制器1108执行或可执行的处理、功能、过程、动作、方法步骤等可包括通过执行存储在一个或多个存储器单元中的一个或多个指令序列来执行,并且当该一个或多个指令序列由一个或多个处理器执行时产生此类性能。系统控制器1102和DSD控制器1108可以软件、硬件和固件的任何形式和/或组合来实施。例如,系统控制器1102可包括专用集成电路(ASIC),该专用集成电路包括用于存储此类指令(诸如作为非限制性示例的固件)的至少一个存储器单元(例如,存储器1110)和用于执行此类指令的至少一个处理器(例如,处理器1112),从而实现如本文的其他部分所述的预读能力。
数据存储系统1100可与主机1150通信地耦接,该主机可具体体现在可执行代码在上面执行的硬件机器中(对于非限制性示例,计算机或硬件服务器,等等),或具体体现为可由一个或多个处理器(对于非限制性示例,软件服务器诸如存储服务器、文件服务器、数据库服务器、应用程序服务器、媒体服务器等)执行的软件指令。主机1150通常表示数据存储系统1100的客户端,并且具有向数据存储系统1100提出读取和写入请求(输入/输出或“IO”)的能力。需注意,系统控制器1102也可被称为“主机”,因为该术语通常参考对数据存储设备或设备阵列进行IO调用的任何设备诸如DSD 1104a至1104n来使用。当与数据存储系统1100通信时,主机1150可利用一个或多个接口协议,诸如(但不限于)串行ATA(SATA)、光纤信道、火线、串行附接小型计算机系统接口(SAS)、高级技术附接/集成驱动电子器件(ATA/IDE)、通用串行总线(USB)、外围部件快速互连(PCIe),等等。
基于先前的读取操作使用元数据提示的读取预测
根据分析,随机读取日志显示出大量的重复模式。根据一个实施方案,“预读”的一种方法涉及在当前读取地址的元数据处保存下一个读取命令地址。根据一个实施方案,该元数据更新可经由常规的“读取-修改-写入”操作来执行,该操作提供了读取存储器位置并且同时将新值写入其中,作为原子操作。这种预读方法通常可涉及针对到达的每一个读取命令,利用对当前读取命令的位置(和大小)的指示(例如,“提示”)来更新先前读取命令的元数据。然后可以在将来使用该信息,即,当接收到相同的读取命令时,用于执行未来的随机读取命令的预先获取。因此,可显著改善服务质量(QoS)参数。即,在命令执行延迟(例如,从命令到达到完成发布)的背景下,如果预读预测的命中率高,则由于提前从介质读取而减少命令执行的延迟。因此,诸如处于命令执行延迟形式的QoS是低队列深度场景中特别值得注意的参数,例如,其中主机一次仅向设备发送几个(例如,最多8个)未处理命令。
图12为根据一个实施方案的示出减少读取时间的方法的框图。例如,此类进程可在多应用程序和/或多主机存储器系统环境中实施。该方法或操作可以被实施为包括两个进程:(i)找到或标识随机读取操作的基础模式,区分进程,以及(ii)预测和更新数据/元数据。
图12描绘了读取队列1113,其中多个主机读取请求或命令被放置或临时存储,等待处理。例如,在读取队列1113中描绘了一系列接收到的读取请求“读取n”、“读取n+1”至“读取n+x”,其中n表示下一个(即,在队列的顶部的)用于处理的读取请求,并且x表示在任何给定时间保持在读取队列1113中的任意数量的读取请求。根据一个实施方案,迭代地处理当前读取请求“读取n”(标记为进程1202)涉及在框1203处,基于标识发起请求“读取n”的应用程序(例如,在图11的主机1150上执行)的应用程序标识符(“ID”),对来自从读取队列1113中处理的读取请求的集合的读取模式进行排序。例如,控制器1102(图11)可以保持活动的当前应用程序ID的表,并且响应于与给定的应用程序ID相关联的传入读取请求,控制器1102监视读取队列1113以获得与该应用程序ID相关联的下一个读取请求“读取n+1”。因此,在框1204处,针对每个应用程序ID,确定或标识对应的读取模式。
根据在框1204处标识的读取模式,不包括根据一个实施方案的任何写入请求、命令或模式(例如,由于在系统性能能力/度量的背景下读取请求和写入请求通常被单独考虑),在框1205处预测下一个读取请求(预测“读取n+1”)。据此,在框1206处,基于框1205的下一个读取请求预测,将对应于“读取n”读取请求的元数据1207的更新(包括对应于“读取n+1”的下一个存储地址)推送到或存储在NVM 1106中。即,利用从下一个读取请求(即,“读取n+1”请求)获得的下一个数据存储地址来更新NVM 1106中对应于“读取n”请求的元数据1207。如所讨论的并且根据一个实施方案,在框1206处利用“读取-修改-写入”操作将“读取n”元数据更新推送到NVM 1106,诸如响应于处理来自读取队列1113的“读取n+1”请求而不是响应于主机写入命令。因此,在添加“额外的”写入操作时,相对于未来的读取性能显现出随之而来的有益效果。此外,根据一个实施方案,在对应于“读取n”请求的元数据1207中更新的下一个数据存储地址是逻辑地址(例如,LBA),而不是物理地址(例如,PBA),从而避免了与在垃圾收集期间必须更新NVM 1106中的元数据1207相关联的性能影响。
因此,基于前文所述,每当控制器1102(图11)处理另一个“读取n”读取请求时,可从与“读取n”相关联的元数据1207获得下一个读取请求“读取n+1”的存储位置(例如,存储地址)的“提示”或预测,并且可在处理下一个读取请求之前从NVM 1106(图11)预先获取“读取n+1”数据。因此,如果基于读取模式的预测是准确的,则对应于下一个读取请求的预期为“读取n+1”的数据已经可供控制器1102使用,而不必在此时执行响应式读取命令。根据一个实施方案,鉴于读取请求基于其相应的应用程序ID进行排序(在框1203处),NVM 1106中对应于“读取n”的元数据1207被更新为仅响应于对应于相同应用程序ID的“读取n”和“读取n+1”两者而包括下一个存储地址“读取n+1”。
根据一个实施方案,响应于对应于读取队列1113的空闲1208处理时间的出现,获取来自NVM 1106的下一个存储位置的“下一个数据”1209,从先前的“读取n+1”将所述下一个数据标识为很可能是正确数据。根据相关实施方案,在框1210处,将预测的下一个读取请求“读取n+1”的下一个数据1209(诸如在空闲1208时间期间预先获取的数据)放置或存储在高速缓存缓冲器1211中(例如,可在存储器1110内实施)。因此,对应于下一个读取请求“读取n+1”的数据已经在高速缓存缓冲器1211中可用,而无需响应于再次接收到下一个读取请求“读取n+1”而执行读取命令,并且因此可以被直接从高速缓存缓冲器1211返回给主机1150(图11)。
就实施架构而言,为了为多个应用程序ID保持前述程序,优选的是保持若干“跟踪器”进程或处理线程,使得每个相应的跟踪器可处理其自身的应用程序ID和对应的传入读取请求以及对应的“预读”请求和/或元数据更新。
预先获取数据的方法
图13为根据一个实施方案的示出预先获取数据的方法的流程图。图13的进程或过程可被实施为作为存储在一个或多个存储器单元中的一个或多个指令序列来执行,并且当该一个或多个指令序列由一个或多个处理器执行时致使进程被执行。例如,存储在一个或多个存储器单元(例如,图11的存储器1110或固件固有的只读存储器(ROM))中的指令序列当由一个或多个处理器(例如,图11的系统控制器1102的处理器1112)执行时,可以执行和/或引起图13所示进程的执行。
在框1302处,从主机接收读取请求,其中读取请求包括对应的数据存储地址,并且将读取请求置于读取队列中。例如,从主机1150(图11)将读取请求“读取n”(图12)接收到读取队列1113(图11至图12)中。
在框1304处,从主机接收下一个读取请求,其中该下一个读取请求包括对应的下一个数据存储地址,并且该下一个读取请求被放置在读取队列中。例如,将读取请求“读取n+1”(图12)从主机1150接收到读取队列1113中。
在框1306处,用来自下一个读取请求的下一个数据存储地址更新非易失性存储器中对应于读取请求的元数据。例如,在NVM 1106中用来自下一个读取请求“读取n+1”的下一个数据存储地址更新对应于读取请求“读取n”的元数据1207。
在框1308处,响应于再次从主机接收到读取请求,从非易失性存储器读取来自对应于读取请求的元数据的下一个数据存储地址。例如,响应于再次从主机1150接收到读取请求“读取n”,从NVM 1106读取对应于读取请求“读取n”的来自元数据1207(图12)的下一个数据存储地址。
在框1310处,在处理来自读取队列的下一个读取请求之前,从下一个数据存储地址获取下一个数据。例如,在处理来自读取队列的下一个读取请求之前,获取在框1308处从NVM 1106读取的来自下一个数据存储地址的下一个数据,即,预期下一个读取请求将确实如所预测的是读取请求“读取n+1”。
图14为根据一个实施方案的示出将数据预先获取到读取队列的方法的流程图。与图13一样,图14的进程或过程可被实施为作为存储在一个或多个存储器单元中的一个或多个指令序列来执行,并且当该一个或多个指令序列由一个或多个处理器执行时致使进程被执行。例如,存储在一个或多个存储器单元(例如,图11的存储器1110或固件固有的只读存储器(ROM))中的指令序列当由一个或多个处理器(例如,图11的系统控制器1102的处理器1112)执行时,可以执行和/或引起执行图14所示进程,该进程可被理解为是图13的进程的任选的继续和/或增强进程。
在框1402处,响应于出现与读取队列相关联或与之对应的空闲处理时间,从下一个数据存储地址获取下一个数据。例如,在读取队列1113中的下一个读取请求是如所预测的读取请求“读取n+1”前,在空闲时间期间从NVM 1106获取从NVM 1106读取的来自下一个数据存储地址的下一个数据。
在框1404处,将来自下一个数据存储地址的下一个数据置于高速缓存缓冲器中。例如,基于来自与读取请求“读取n”相关联的元数据1207的(最初来自读取请求“读取n+1”的)下一个数据存储地址,在框1402处获取的下一个数据被存储到高速缓存缓冲器1211中。
在框1406处,响应于再次从主机接收到下一个读取请求,下一个数据从高速缓存缓冲器1211被返回给主机。例如,响应于再次从主机1150接收到下一个读取请求“读取n+1”,从高速缓存缓冲器1211读取下一个数据并且将其返回给主机1150。
此类增强的预读技术提供了各种技术优点,如从前面的描述和例示中可显而易见的。例如,例如在预测的下一个读取请求之前的预先获取数据提高了读取速度。就随机读取而言,这可能是特别有利的,随机读取需要更长的时间来完成,因为在随机读取的情况下数据散布在介质上。
如本领域的技术人员将理解的,本发明的各方面可以具体体现为系统、方法或计算机程序产品。因此,本发明的各方面可采取完全为硬件的实施方案、完全为软件的实施方案(包括固件、常驻软件、微代码等)或结合软件和硬件方面的实施方案的形式,这些方面在本文中可全部统称为“电路”、“模块”或“系统”。此外,本发明的各方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,具有在其上体现的计算机可读程序代码。
所包括的描述和附图描绘了教导本领域技术人员如何制作和使用最佳模式的具体实施方案。出于教导发明性原理的目的,已经简化或省略了一些常规的方面。本领域技术人员将理解来自落入本公开范围内的这些实施方案的变型。本领域技术人员还将理解,上述特征可以各种方式组合以形成多个实施方案。因此,本发明不受上述具体实施方案的限制,而是仅受权利要求及其等同物的限制。
Claims (20)
1.一种电子设备,包括:
非易失性存储介质;
读取队列;和
控制电路,所述控制电路耦接到所述非易失性存储介质并且被配置为:
从主机接收读取请求,所述读取请求包括对应的数据存储地址,并且将所述读取请求放置在所述读取队列中;
从所述主机接收下一个读取请求,所述下一个读取请求包括对应的下一个数据存储地址,并且将所述下一个读取请求放置在所述读取队列中;以及
用来自所述下一个读取请求的所述下一个数据存储地址更新所述非易失性存储介质中对应于所述读取请求的元数据。
2.根据权利要求1所述的装置,其中所述控制电路被进一步配置为:
响应于再次从所述主机接收到所述读取请求,
从所述非易失性存储介质读取来自对应于所述读取请求的所述元数据的所述下一个数据存储地址;以及
在处理下一个读取请求之前,从所述下一个数据存储地址获取下一个数据。
3.根据权利要求1所述的装置,其中所述控制电路被进一步配置为:
响应于出现对应于所述读取队列的空闲处理时间,从所述下一个数据存储地址获取所述下一个数据。
4.根据权利要求1所述的装置,其中所述更新所述非易失性存储介质中对应于所述读取请求的元数据基于并且响应于所述下一个读取请求,而不包括写入请求。
5.根据权利要求1所述的装置,其中在对应于所述读取请求的所述元数据中更新的所述下一个数据存储地址是对应于所述下一个读取请求的逻辑块地址(LBA)。
6.根据权利要求1所述的装置,其中所述控制电路被进一步配置为:
将来自所述下一个数据存储地址的所述下一个数据放置在高速缓存缓冲器中。
7.根据权利要求6所述的装置,其中所述控制电路被进一步配置为:
响应于再次从所述主机接收到所述下一个读取请求,将来自所述高速缓存缓冲器的所述下一个数据返回给所述主机。
8.根据权利要求1所述的装置,其中所述控制电路被进一步配置为:
其中所述更新所述元数据包括利用读取-修改-写入命令将所述下一个数据存储地址写入所述非易失性存储介质。
9.根据权利要求1所述的装置,其中所述控制电路被进一步配置为:
基于与所述读取请求中的每一个读取请求相对应的应用程序标识符,对来自一个或多个主机的读取请求进行排序;并且
其中仅响应于所述读取请求和对应于相同的应用程序标识符的所述下一个读取请求两者,用所述下一个数据存储地址更新所述非易失性存储介质中对应于所述读取请求的所述元数据。
10.根据权利要求9所述的装置,其中所述控制电路被进一步配置为:
执行对应于每个不同应用程序标识符的相应的跟踪器进程,以更新与对应于每个相应的应用程序标识符的读取请求相对应的所述元数据。
11.根据权利要求1所述的装置,其中所述装置为数据存储设备。
12.一种方法,包括:
从主机接收读取请求,所述读取请求包括对应的数据存储地址,并且将所述读取请求放置在读取队列中;
从所述主机接收下一个读取请求,所述下一个读取请求包括对应的下一个数据存储地址,并且将所述下一个读取请求放置在所述读取队列中;以及
用对应于来自所述下一个读取请求的所述下一个数据存储地址的逻辑地址来更新非易失性存储装置中对应于所述读取请求的元数据。
13.根据权利要求12所述的方法,还包括:
响应于再次从所述主机接收到所述读取请求:
从所述非易失性存储装置读取来自对应于所述读取请求的所述元数据的所述下一个数据存储地址;以及
在处理下一个读取请求之前,从所述下一个数据存储地址获取下一个数据。
14.根据权利要求12所述的方法,还包括:
响应于出现对应于所述读取队列的空闲处理时间,从所述下一个数据存储地址获取所述下一个数据。
15.根据权利要求12所述的方法,还包括:
将来自所述下一个数据存储地址的所述下一个数据放置在高速缓存缓冲器中。
16.根据权利要求15所述的方法,还包括:
响应于再次从所述主机接收到所述下一个读取请求,将来自所述高速缓存缓冲器的所述下一个数据返回给所述主机。
17.根据权利要求12所述的方法,其中所述更新所述元数据包括利用读取-修改-写入命令将对应于所述下一个数据存储地址的所述逻辑地址写入所述非易失性存储装置。
18.根据权利要求12所述的方法,还包括:
基于与所述读取请求中的每一个读取请求相对应的应用程序标识符,对来自一个或多个主机的读取请求进行排序;并且
其中仅响应于所述读取请求和对应于相同的应用程序标识符的所述下一个读取请求两者来执行对与所述读取请求相对应的所述元数据的所述更新。
19.根据权利要求18所述的方法,还包括:
执行对应于每个不同应用程序标识符的相应的跟踪器进程,以更新与对应于每个相应的应用程序标识符的读取请求相对应的所述元数据。
20.一种计算系统,包括:
用于从主机接收读取请求以及用于将所述读取请求放置在读取队列中的装置,所述读取请求包括对应的数据存储地址;
用于从所述主机接收下一个读取请求以及用于将所述下一个读取请求放置在所述读取队列中的装置,所述下一个读取请求包括对应的下一个数据存储地址;
用于用来自所述下一个读取请求的所述下一个数据存储地址更新非易失性存储器中对应于所述读取请求的元数据的装置;
用于响应于再次从所述主机接收到所述读取请求而执行以下操作的装置:
从所述非易失性存储器读取来自对应于所述读取请求的所述元数据的所述下一个数据存储地址;以及
在处理下一个读取请求之前,从所述下一个数据存储地址获取下一个数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/017,626 | 2020-09-10 | ||
US17/017,626 US11449428B2 (en) | 2018-06-19 | 2020-09-10 | Enhanced read-ahead capability for storage devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114168495A true CN114168495A (zh) | 2022-03-11 |
Family
ID=80476325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110645270.8A Pending CN114168495A (zh) | 2020-09-10 | 2021-06-09 | 存储设备的增强的预读能力 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP7170093B2 (zh) |
KR (1) | KR20220033976A (zh) |
CN (1) | CN114168495A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI804308B (zh) * | 2022-05-05 | 2023-06-01 | 大陸商合肥兆芯電子有限公司 | 基於寫入行為預測的寫入控制方法、記憶體儲存裝置及記憶體控制電路單元 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009301595A (ja) * | 2008-06-10 | 2009-12-24 | Hitachi Ltd | ディスク装置及びその記録方法 |
JP5296041B2 (ja) * | 2010-12-15 | 2013-09-25 | 株式会社東芝 | メモリシステムおよびメモリシステムの制御方法 |
WO2012140813A1 (ja) * | 2011-04-14 | 2012-10-18 | パナソニック株式会社 | データ転送装置 |
KR20140028618A (ko) * | 2012-08-29 | 2014-03-10 | 삼성전자주식회사 | 쓰기 페일을 줄이는 메모리 장치, 이를 포함하는 메모리 시스템 및 그 쓰기 방법 |
WO2014183287A1 (en) * | 2013-05-16 | 2014-11-20 | Advanced Micro Devices, Inc. | Memory system with region-specific memory access scheduling |
CN104679480A (zh) * | 2013-11-27 | 2015-06-03 | 上海芯豪微电子有限公司 | 一种指令集转换系统和方法 |
WO2017017842A1 (ja) * | 2015-07-30 | 2017-02-02 | 株式会社日立製作所 | メモリの制御装置、記憶装置、および、メモリの書込み方法 |
US9904635B2 (en) * | 2015-08-27 | 2018-02-27 | Samsung Electronics Co., Ltd. | High performance transaction-based memory systems |
JP2019537097A (ja) * | 2016-09-29 | 2019-12-19 | ベリタス テクノロジーズ エルエルシー | Iノードのアクセスパターンの追跡及びiノードの先取り |
JP6677627B2 (ja) * | 2016-12-20 | 2020-04-08 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置およびメモリアクセス方法 |
JP2018120346A (ja) * | 2017-01-24 | 2018-08-02 | 日本電気株式会社 | 情報処理システムおよび情報処理システムの制御方法 |
JP2019204150A (ja) * | 2018-05-21 | 2019-11-28 | 日本電信電話株式会社 | 通信用入出力装置 |
-
2021
- 2021-06-09 CN CN202110645270.8A patent/CN114168495A/zh active Pending
- 2021-06-22 JP JP2021103245A patent/JP7170093B2/ja active Active
- 2021-06-24 KR KR1020210082734A patent/KR20220033976A/ko not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI804308B (zh) * | 2022-05-05 | 2023-06-01 | 大陸商合肥兆芯電子有限公司 | 基於寫入行為預測的寫入控制方法、記憶體儲存裝置及記憶體控制電路單元 |
Also Published As
Publication number | Publication date |
---|---|
JP7170093B2 (ja) | 2022-11-11 |
KR20220033976A (ko) | 2022-03-17 |
JP2022046413A (ja) | 2022-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102518095B1 (ko) | 스토리지 장치 및 시스템 | |
US11188256B2 (en) | Enhanced read-ahead capability for storage devices | |
KR102074329B1 (ko) | 데이터 저장 장치 및 그것의 데이터 처리 방법 | |
JP6514569B2 (ja) | データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応 | |
US9280474B2 (en) | Adaptive data prefetching | |
US8443144B2 (en) | Storage device reducing a memory management load and computing system using the storage device | |
US8775739B2 (en) | Memory system including first and second caches and controlling readout of data therefrom | |
US11379381B2 (en) | Main memory device having heterogeneous memories, computer system including the same, and data management method thereof | |
US20090265506A1 (en) | Storage device | |
JP2013530448A (ja) | キャッシュストレージアダプタアーキテクチャ | |
US8762628B2 (en) | Information processing apparatus and cache method | |
US20150143045A1 (en) | Cache control apparatus and method | |
CN106951374B (zh) | 用于检查块页地址的方法及其装置 | |
TWI710905B (zh) | 資料儲存裝置及邏輯至物理位址映射表之載入方法 | |
CN113614702B (zh) | 基于检测到的读取命令活跃流的自适应预读高速缓存管理器 | |
JP7170093B2 (ja) | 記憶デバイスのための改良された先読み能力 | |
US8661169B2 (en) | Copying data to a cache using direct memory access | |
KR20100005539A (ko) | 캐시 메모리 시스템 및 캐시의 프리페칭 방법 | |
US11449428B2 (en) | Enhanced read-ahead capability for storage devices | |
US10346070B2 (en) | Storage control apparatus and storage control method | |
US11645209B2 (en) | Method of cache prefetching that increases the hit rate of a next faster cache | |
US9367467B2 (en) | System and method for managing cache replacements | |
CN117032594B (zh) | 一种读命令调度方法、处理方法、装置及存储设备 | |
US20230384960A1 (en) | Storage system and operation method therefor | |
CN110580227A (zh) | 自适应nvm命令生成方法与装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |