CN109891396A - 读取操作重定向 - Google Patents
读取操作重定向 Download PDFInfo
- Publication number
- CN109891396A CN109891396A CN201780060912.XA CN201780060912A CN109891396A CN 109891396 A CN109891396 A CN 109891396A CN 201780060912 A CN201780060912 A CN 201780060912A CN 109891396 A CN109891396 A CN 109891396A
- Authority
- CN
- China
- Prior art keywords
- read operation
- host
- ssd
- memory
- storage device
- 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
- 238000013500 data storage Methods 0.000 claims abstract description 66
- 230000004044 response Effects 0.000 claims abstract description 20
- 238000000034 method Methods 0.000 claims description 18
- 238000012544 monitoring process Methods 0.000 claims description 15
- 239000007787 solid Substances 0.000 claims description 10
- 230000003139 buffering effect Effects 0.000 claims description 4
- 230000008859 change Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 239000002800 charge carrier Substances 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 239000011469 building brick Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000003760 hair shine Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000005389 magnetism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000011343 solid material Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0857—Overlapped cache accessing, e.g. pipeline by multiple requestors
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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/608—Details relating to cache mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
示例实现方式涉及读取操作重定向。例如,根据本公开的系统可以包括可由主机访问的数据存储设备。该系统可以包括主机的操作系统的输入/输出过滤器。输入/输出过滤器可以监控从主机到数据存储设备的读取操作和写入操作。输入/输出过滤器可以响应于对数据存储设备的部分的所监控的读取操作超过阈值,将该部分拷贝到主机内的随机存取存储器(RAM)缓冲器。输入/输出过滤器可以将被寻址到数据存储设备的部分的连续读取操作重定向到RAM缓冲器中的该部分的拷贝。
Description
背景技术
数据存储设备可以包括固态驱动器(SSD)。SSD可以包括:固态存储设备,其利用集成电路组装件作为存储器来持久地存储数据。主机设备可以包括由操作系统支持的计算设备。可以从主机传送对SSD的命令。例如,从主机到SSD的命令可以请求对SSD中的地址的读取操作和/或写入操作。对SSD的闪速存储器单元的读取和/或写入可能影响单元上和/或相邻单元上的所存储的电荷。
附图说明
图1图示了根据本公开的用于读取操作重定向的系统的示例的图解。
图2是根据本公开的用于读取操作重定向的系统的示例的框图。
图3图示了根据本公开的用于读取操作重定向的示例方法。
具体实施方式
数据存储设备可以包括用于数字地存储可以由计算设备读取的数据的组件。数据存储设备可以包括:固态存储装置,其用于在不涉及机械部件的情况下利用电子电路来非易失性地存储和/或取回数字信息。固态驱动器(也被称为SSD)可以包括:数据存储设备,其利用集成电路组装件作为存储器来持久地存储数据(例如,在断电时保留数据)。SSD可以包括存储数据的存储器元件。例如,SSD可以包括非易失性与非(NAND)存储器配置。也就是说,SSD可以包括利用NAND单元作为存储介质的非易失性存储器部分。NAND单元可以利用NAND逻辑门来存储信息比特。
NAND存储器管芯的物理层级可以被分解成平面、块和页。NAND管芯可以包含多个平面,每个平面可以被划分成块,并且每个块可以包含N个页。例如,NAND管芯可以具有2个平面、约4K个块以及每块256个页。页可以是可被编程(例如,写入)的最小单元,并且块可以是可被擦除的最小单元。
SSD可以包括控制器。控制器可以包含将NAND存储器组件与诸如主机计算设备、应用、数据库等之类的主机桥接的电子器件。控制器可以在一端上接受主机命令,并且在另一端上将该命令传送到NAND存储器。
主机命令可以被定向到SSD存储器的部分。主机命令可以包括从主机对SSD发出的输入/输出(I/O)请求。例如,主机命令可以包括:执行读取操作的请求,其可以包括向主机读出来自SSD存储器的特定部分的数据。示例还可以包括:执行程序或写入操作的请求,其可以包括将数据写入SSD的特定部分。进一步的示例可以包括:执行擦除操作以擦除SSD的特定部分的请求。
然而,可以在对SSD存储器的特定部分进行寻址中利用抽象(abstraction)方案。例如,可以在对SSD存储器进行寻址中利用逻辑块寻址抽象方案。利用逻辑块寻址抽象方案可以包括:利用逻辑块地址(LBA),通过使NAND阵列中固有的更复杂的存储器管理操作对于消费较低级别系统的服务的更高级别(例如,主机设备)不可见,来简化较低级别系统(例如,SSD存储器)的复杂管理。例如,NAND阵列管理可以包括:出于各种原因而对管芯内的数据块的物理位置的频繁改变。管芯内的数据块的物理位置可以被称为物理块地址(PBA)。
逻辑块寻址抽象方案可以避免在每一次物理块地址改变时向主机通知块的新物理块地址。例如,主机可以在不知道其PBA的情况下向特定块的LBA发出命令。SSD可以将LBA映射到其对应的PBA并且保持该映射更新。SSD控制器可以利用该映射来准确地协调命令的执行。例如,SSD控制器可以利用转换表来标识与在主机的I/O请求中标识的LBA相对应的SSD的物理部分(例如,PBA)。
SSD存储器在它们耗尽(wear out)并且变得不可用之前可能具有有限数量的编程擦除(P/E)周期。附加地,用于读取NAND存储器的方法可能使相同存储块中的相邻单元随时间而改变。例如,在对单元的重复读取操作之后,相邻单元中可能发生电谐振错误。如果错误变得太多以致无法利用错误校正码(ECC)来校正,则相邻单元的内容中的这种干扰可能产生可导致数据丢失的错误。当错误计数超过阈值时,控制器可以对受困扰的块进行干预并且将该受困扰的块拷贝到新的块,以便避免由ECC无法校正的错误。每次读取来自块的单元时,控制器可以检查整个块的内容以确定错误计数。
出乎意料地,对块的重复读取操作也可能引起与重复读取的块相邻的块的单元中的改变。如本文使用的,相邻单元可以包括:物理上靠近正被读取和/或写入的单元的单元、物理上邻接正被读取和/或写入的单元的单元、足够接近地物理邻近于正被读取和/或写入的单元的单元,对该正被读取的单元的重复读取操作可能导致相邻单元中的电谐振错误。类似地,这些改变可能导致相邻的块内的错误,使得相邻的块由于错误变得太多以致无法利用ECC来校正而受到数据丢失的影响。如上所描述,每次从块进行读取时,控制器可以检查整个块的内容以确定与该块相关联的错误计数。然而,每次从块进行读取时,控制器可能并不检查所有相邻的块的内容。替代地,控制器将偶尔对整个介质执行读取扫描,以检查与所有块相关联的错误计数。与上述单个块的检查相比,该扫描可以花费几分钟来执行并且被相对不频繁地执行。因此,与频繁读取的块相邻的块中的错误可能未被检测到并且未被校正,从而导致数据丢失。这种发生的事件可能会加剧,这是由于来自块的相同频繁读取可能消耗控制器的资源,并且进一步延迟了整个介质的读取扫描,这可能会以其它方式发现相邻单元中的上升的错误计数。
相比之下,本公开中包括的示例利用错误计数不可知(count-agnostic)系统,以在不直接调整或控制主机应用的行为的情况下标识并减轻引起上述意外问题的出现的状况。本公开中包括的示例可以利用操作系统的I/O过滤器系统来监控从主机到数据存储设备的读取操作和写入操作。这些示例可以包括:将连续读取操作重定向到主机内的RAM缓冲器中的数据存储设备的频繁读取的部分的拷贝,以便避免加剧相邻单元中的错误的发生,并且允许控制器时间进行诸如读取扫描之类的操作。
图1图示了根据本公开的用于读取操作重定向的系统100的示图。系统100可以包括主机102。主机102可以包括计算设备,诸如膝上型计算机、台式机、平板和/或处理资源,以执行存储在计算机可读介质上的指令。主机102可以包括操作系统,其充当用户、硬件与指令之间的接口。操作系统可以包括:可由主机处理器执行以管理硬件资源、指令资源和/或为服务于主机102的计算应用提供公共服务的指令。主机102可以包括应用和/或可以有权访问远离主机的应用。应用可以包括:指令集合,该指令在由处理资源执行时执行特定任务。
主机102可以包括驱动器。驱动器可以包括:可由处理资源执行以操作和/或控制与主机102通信的特定类型的设备的一组指令。驱动器可以充当在主机102、主机应用和/或主机操作系统与硬件设备之间转换输入和/或输出的抽象层。驱动器可以在与操作系统内核相同的权限级别上操作。驱动器可以是主机102的操作系统的部分。
系统100可以包括数据存储设备108。数据存储设备108可以与主机102通信。数据存储设备108可以物理地连接到主机102。数据存储设备108可以是主机102设备外部的外围设备。可替换地,数据存储设备108可以与主机102容纳在相同设备中。例如,数据存储设备108可以与主机102容纳在相同壳体中,该壳体诸如计算设备外壳。
数据存储设备108可以是固态设备。固态设备可以包括:电子设备,其中电流流过固体半导体晶体并且其中利用电子或其他电荷载流子来存储数据,该电子或其他电荷载流子被完全限制在固体材料内。数据存储设备108可以包括:用于数字地存储可以由计算设备读取的数据的存储器组件。数据存储设备108可以包括:用于在不涉及机械部件的情况下利用电子电路来非易失性地存储和/或取回数字信息的固态存储装置。数据存储设备108可以包括固态驱动器(SSD)。如本文中使用的,SSD可以包括:数据存储设备,其利用集成电路组装件作为存储器组件来持久地存储数据。如本文中使用的,SSD可以包括与SSD共享共同特性的数据存储设备。SSD可以包括作为存储介质的非易失性NAND单元。数据存储设备108可以包括利用NAND闪速存储器以用于进行非易失性数据存储的设备。
数据存储设备108可以包括控制器。控制器可以包括可将存储器组件与主机102桥接的电路。例如,控制器可以接受来自主机102的命令,并且将该命令传送到存储器组件和/或执行该命令。主机102和数据存储设备108的控制器可以利用逻辑块寻址抽象方案。例如,主机102可以利用与块相关联的LBA来传送对数据存储设备108的部分进行寻址的I/O请求。主机102可以不知道块的实际PBA。数据存储设备108的控制器可以知道与LBA相关联的块的PBA。也就是说,数据存储设备108的控制器可能已经创建和/或有权访问LBA到PBA关联的映射和/或转换表。数据存储设备108的控制器可以利用该映射和/或转换表将来自LBA的I/O请求定向到对应的PBA。
数据存储设备108可以利用ECC存储器来检测和校正数据存储设备108的存储器组件中的错误。当与所存储的信息的部分(例如,诸如块之类的数据单元)相关联的错误的量超过阈值时,数据存储设备108可以将该部分拷贝到存储器存储设备上的新物理位置。如果与该部分相关联的错误的量达到第二阈值,则数据可能变得损坏和/或由ECC无法校正。
每次对正被读取的存储器组件的部分的读取发生时,数据存储设备108可以检查与该部分相关联的错误的量。有时和/或当数据存储设备108的资源允许时,数据存储设备108可以对存储器组件的多个部分和/或整个数据存储设备108进行读取扫描。在每次读取数据存储设备108的存储器组件的部分时,可以不执行读取扫描。
主机102可以包括I/O过滤器104。I/O过滤器104可以是操作系统内的驱动器和/或彼此通信的一组驱动器。I/O过滤器104可以监控从主机102发送到数据存储设备108的命令。该命令可以由主机102上的操作系统和/或应用来生成。该命令可以包括对数据存储设备108的控制器的I/O请求。例如,I/O过滤器104可以监控从主机102到数据存储设备108的控制器的读取操作请求和/或写入操作请求。
监控从主机102到数据存储设备108的读取操作和写入操作可以包括拦截请求并且将它们定向到它们的目的地。例如,I/O过滤器104可以拦截来自主机102上的应用的读取操作和/或写入操作,并且将其定向到数据存储设备108上的底层控制器。
监控读取操作和/或监控写入操作可以包括标识在操作中正被读取或写入的数据存储设备108的部分。例如,I/O请求可以被寻址到数据存储设备108的特定部分。可以在I/O请求中指定正被读取或写入的数据存储设备108的特定部分。I/O过滤器104可以分析I/O请求以确定针对操作所指定的数据存储设备的特定部分。
I/O请求可以在文件系统级别上指定数据存储设备108存储器组件的部分。数据的逻辑分组可以构成文件,并且可以包括要被读取或写入的物理块。可以通过文件名来标识数据的逻辑分组和/或数据的逻辑分组的存储位置。作为抽象方案的部分,主机102可以在对I/O请求进行寻址中利用文件名,其中主机102不知道数据存储设备108的存储器组件上的数据的逻辑分组的底层物理位置。I/O过滤器104可以根据其正在监控的I/O请求的内容,来标识每个I/O请求中在文件系统级别上指定的数据存储设备的特定部分。
I/O请求可以在块访问级别上指定数据存储设备108存储器组件的部分。数据存储设备108的存储器组件的层级可以被分解成平面、块和页。数据存储设备108的存储器组件的管芯可以包含多个平面,每个平面可以被划分成块,并且每个块可以包含N个页。主机102可以通过利用与特定部分相关联的LBA,在块访问级别上来寻址对数据存储设备108的存储器组件的部分(诸如块)的I/O请求。主机102可以不知道特定部分的PBA,并且可以依赖于数据存储设备108的逻辑块寻址抽象方案,以寻址对数据存储设备108的存储器组件的正确物理部分的I/O请求。I/O过滤器104可以根据其正在监控的I/O请求的内容,来标识每个I/O请求中在块访问级别上指定的数据存储设备的特定部分。
监控从主机102到数据存储设备108的读取操作和/或写入操作可以包括:确定被寻址到数据存储设备108的存储器组件的特定部分的读取操作和/或写入操作的量。确定被寻址到存储器组件的特定部分的读取操作和/或写入操作的量可以包括:基于与操作相关联的地址来对读取操作和/或写入操作进行计数和核对。由于主机102可能对正被读取和/或写入的存储器组件的部分的PBA不可知,因此与操作相关联的地址可以包括I/O请求被寻址到的文件系统地址和/或LBA。对读取操作和/或写入操作进行计数可以包括:对一段时间内的请求进行计数。例如,对一段时间内的请求进行计数可以包括:确定对相同地址的读取操作和/或写入操作的频率。确定被寻址到存储器组件的特定部分的读取操作和/或写入操作的量还可以包括:基于正被读取或写入的数据存储设备108的存储器组件的部分的大小来对读取操作和/或写入操作进行计数和核对。按大小进行核对可以便于确定存储器组件的多于一个部分是否正在针对给定操作而被读取和/或写入,和/或是否多于一个存储器部分可能受操作影响。
I/O过滤器104可以监控在一段时间内的被定向到数据存储设备108的存储器组件的特定部分相对于针对该特定部分的读取操作的阈值的读取操作的量。读取操作的阈值可以是在一段时间内在存储器组件的特定部分上执行的读取操作的阈值量。该阈值可以基于存储器组件的制造商规范。该阈值可以是存储器组件的用户可配置选项。该阈值可以包括:对存储器的特定部分的读取操作的频率,该频率一旦被超过就触发响应以减轻由对存储器的特定部分的频繁读取而在相邻存储器部分中引起电谐振错误的可能性。
I/O过滤器104可以在检测到从主机102到数字存储设备的存储器组件的特定部分的读取操作的频率已经超过上述读取操作的阈值时触发减轻响应。例如,I/O过滤器104可以基于所监控的读取操作来确定对存储器组件的特定部分的读取操作的频率是否已经超过阈值。响应于确定对存储器组件的部分的所监控的读取操作已经超过阈值,I/O过滤器104可以在主机102内创建随机存取存储器(RAM)缓冲器106。在主机102内创建RAM缓冲器106可以包括:将数据存储设备108的存储器组件的部分拷贝到主机内的RAM。通过提供不同的位置(例如,RAM缓冲器106),RAM缓冲器106的创建可以减轻与存储器组件的特定部分相邻的存储器组件的部分中由对该特定部分的频繁读取操作而引起的错误的生成,从该不同的位置读取来自存储器组件的该特定部分的数据。
在RAM缓冲器106的创建之后,I/O过滤器104可以拦截被寻址到存储器组件的特定部分的连续I/O请求(例如,接着RAM缓冲器106的创建之后的I/O请求),该特定部分被拷贝到了RAM缓冲器106。I/O过滤器104可以将被寻址到存储器组件的特定部分(例如,被寻址到与该特定部分相关联的文件名和/或LBA)的连续I/O请求(诸如,读取操作和/或写入操作)重定向到RAM缓冲器106中的所拷贝的部分。重定向可以具有下述效果:减小对特定物理位置的读取操作的频率、减少对特定物理位置的读取操作的总量、和/或向数据存储设备108提供时间和资源以便完成存储器组件的完整读取扫描并通过在相邻存储器部分中产生的ECC来校正任何错误。
图2是根据本公开的用于读取操作重定向的示例系统220的框图。系统220可以与图1中图示的系统100相同或不同。系统220可以包括:至少一个计算设备,其能够与至少一个远程系统通信。在图2的示例中,系统220包括处理器222和计算机可读介质224。尽管以下描述涉及单个处理器和单个计算机可读介质,但是该描述还可以适用于具有多个处理器和计算机可读介质的系统。在这样的示例中,指令可以跨多个计算机可读介质分布(例如,存储),并且指令可以跨多个处理器分布(例如,由其执行)。
处理器222可以是中央处理单元(CPU)、微处理器和/或适合于取回和执行存储在计算机可读介质224中的指令的其它硬件设备。在图2中示出的特定示例中,处理器222可以接收、确定和发送指令226、228和230以用于读取操作重定向。作为可替换方案或者除了取回和执行指令之外,处理器222还可以包括:电子电路,其包括多个电子组件以用于执行计算机可读介质224中的指令的功能。关于本文中描述和示出的可执行指令表示(例如,框),应当理解的是,被包括在特定框内的可执行指令和/或电子电路中的部分或全部可以被包括在图中示出的不同框中或者被包括在未示出的不同框中。
计算机可读介质224可以是存储可执行指令的任何电子、磁性、光学或其它物理存储设备。因此,计算机可读介质224可以是例如随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动器、光盘等等。计算机可读介质224可以被设置在系统220内,如图2中所示。在该情形中,可执行指令可以“安装”在系统220上。附加地和/或可替换地,计算机可读介质224可以是例如便携式、外部或远程存储介质,这允许系统220从便携式/外部/远程存储介质下载指令。在该情形中,可执行指令可以是“安装包”的部分。如本文中描述的,可以利用可执行指令对计算机可读介质224进行编码,以用于利用目的地标记进行扫描。
参考图2,指令226在由处理器(例如,处理器222)执行时可以使系统220利用主机操作系统内的I/O过滤器来监控输入/输出请求。例如,主机内的I/O过滤器可以用来监控从主机操作系统发送到SSD的读取操作和/或写入操作。SSD可以是NAND型闪速存储器设备。
监控读取操作和/或写入操作可以包括:在主机操作系统的应用层处拦截读取操作和/或写入操作。I/O过滤器可以分析所拦截的读取操作和/或写入操作,并且确定在主机和/或主机操作系统上运行的应用正在将所拦截的操作定向到的存储器的块。例如,I/O过滤器可以标识与操作相关联的文件名和/或LBA。由于文件名和/或LBA可以是与抽象方案相关联的逻辑地址,因此I/O过滤器和/或主机可能不知道SSD存储器管芯上的所寻址的数据的实际物理位置或PBA。
指令228在由处理器(例如,处理器222)执行时可以使系统220监控被寻址到SSD存储器管芯的块的读取操作的量和/或频率。指令228在由处理器(例如,处理器222)执行时可以使系统220将SSD存储器的一个或多个特定块拷贝到主机内的RAM缓冲器。响应于被寻址到一个或多个特定块的读取操作超过阈值的确定,可以将该一个或多个特定块拷贝到RAM缓冲器。
例如,响应于对一个或多个特定块的读取操作的量和/或频率已经超过了针对该特定块的读取操作的阈值量和/或频率的确定,可以将该一个或多个特定块拷贝到RAM缓冲器,超过该阈值量和/或频率,连续读取可能导致相邻的块中的错误增加。同样,由于主机、主机操作系统、应用和/或I/O过滤器利用寻址抽象方案;因此他们可能全部都不知道管芯上的对应数据的物理位置或PBA。由此,响应于对块的读取操作超过阈值并且独立于对SSD上的存储器的状况(诸如SSD上的任何错误)的任何了解,可以将SSD的存储器的块拷贝到主机处的RAM缓冲器。这与诸如由SSD利用的对块进行扫描、标识块中的错误的那些的系统形成对照,并且响应于确定SSD存储器的块或物理位置具有某个数量的错误,SSD将把数据移动到SSD存储器上的不同块。
指令230在由处理器(例如,222)执行时可以使系统220将被寻址到特定块(例如,被寻址到与来自该特定块的数据相对应的文件名和/或LBA)的连续读取操作(例如,在将该特定块拷贝到主机的RAM缓冲器中之后发出的读取操作)重定向到RAM缓冲器中的所拷贝的块。
图3图示了根据本公开的用于读取操作重定向的示例方法340。在342处,方法340可以包括监控从主机到固态驱动器(SSD)的I/O请求。可以利用主机的操作系统内的输入/输出过滤器来监控I/O请求。
在344处,方法340可以包括对与SSD的存储器的每个部分相关联的读取操作进行检测和/或计数。例如,可以检测在第一时间段内的对SSD的存储器的特定部分的读取操作的量。此外,在344处,方法340可以包括基于监控来检测在第一时间段内的对SSD的存储器的特定部分的I/O请求中的第一读取操作量已经超过阈值。该阈值可以是一时间段内的读取操作的量,该阈值一旦被超过就可能导致与正被读取的特定部分相邻的SSD的存储器的部分中的错误和/或数据丢失。
在346处,方法340可以包括:响应于检测到上文提到的阈值已经被超过,将SSD的存储器的特定部分拷贝到不同的存储器位置。例如,不同的存储器位置可以包括响应于确定上文提到的阈值已经被超过而在主机内创建的RAM缓冲器。
在348处,方法340可以包括对连续操作进行重定向。连续读取操作可以包括被寻址到SSD的存储器的特定部分的读取操作。例如,读取操作可以被寻址到与保存在SSD的存储器的特定部分处的数据相对应的文件名和/或LBA抽象。被寻址到SSD的存储器的特定部分的连续读取操作可以被重定向到RAM缓冲器中的该特定部分的拷贝。
可以从RAM缓冲器中移除SSD的存储器的特定部分的拷贝。例如,响应于基于输入/输出请求的监控而检测到在已经将SSD的存储器的特定部分拷贝到RAM缓冲器之后的被寻址到SSD的存储器的特定部分的写入操作,可以从RAM缓冲器中移除该特定部分的拷贝。然后,可以将被寻址到该特定部分的连续操作传递到SSD控制器,以用于与管芯上的SSD存储器的新写入的特定部分进行通信。如果对与该新写入的特定部分相关联的逻辑地址的读取操作再次超过阈值,则可以随后将SSD存储器的该新写入的特定部分写入RAM缓冲器。
在另一示例中,响应于基于输入/输出请求的监控而检测到在将SSD的存储器的特定部分拷贝到RAM缓冲器之后,被寻址到SSD的存储器的特定位置的输入/输出请求中在第二时间段内的第二读取操作量,可以从RAM缓冲器中移除该特定部分的拷贝。例如,如果主机应用正重复发送针对数据的特定部分的I/O请求,但是之后完成了其涉及该特定部分的过程,则因此减少或消除其请求对该特定部分的读取操作的频率。如果减小的频率落在上文提到的阈值和/或第二阈值以下,则可以使由频繁读取该特定部分而将错误引入SSD存储器的相邻部分的风险消失。由此,可以从RAM缓冲器释放该特定部分的拷贝,并且可以将连续操作传递到SSD控制器,以用于再一次与管芯上的SSD存储器的特定部分进行通信。如果对与SSD存储器的该特定部分相关联的逻辑地址的读取操作再次超过阈值,则可以随后将该特定部分重新写入RAM缓冲器。
在另一示例中,响应于检测到生成第一读取操作量的应用已经退出,可以从RAM缓冲器中移除SSD的存储器的特定部分的拷贝。例如,I/O过滤器、操作系统和/或主机可以监控主机上的应用活动。如果主机应用重复发送针对数据的特定部分的I/O请求,但是该应用退出,则针对该特定部分的读取操作请求可以停止。由此,可以从RAM缓冲器释放该特定部分的拷贝,并且可以将连续操作传递到SSD控制器,以用于再一次与管芯上的SSD存储器的该特定部分进行通信。如果对与SSD存储器的特定部分相关联的逻辑地址的读取操作再次超过阈值,则可以随后将该特定部分重新写入RAM缓冲器。
在本公开的前述详细描述中,对形成其部分的附图进行参考,并且在附图中以图示的方式示出了可以如何实践本公开的示例。充分详细地描述这些示例以使得本领域普通技术人员能够实践本公开的示例,并且要理解的是,可以利用其它示例,并且可以做出过程、电和/或结构的改变而不脱离本公开的范围。
本文的各图遵循编号惯例,其中第一个数字对应于绘图编号,并且其余的数字标识绘图中的元件或组件。可以添加、交换和/或消除在本文中的各种图中示出的元件,以便提供本公开的多个附加示例。此外,附图中提供的元件的比例和相对尺度意图图示本公开的示例,并且不应该以限制性意义来考虑。如本文中使用的,标志符“N”(特别是关于绘图中的附图标记)指示如此标示的多个特定特征可以被包括在本公开的示例的情况下。标志符可以表示相同或不同数量的特定特征。此外,如本文中使用的,“多个”元件和/或特征可以指代一个或多个这样的元件和/或特征。
如本文中使用的,“逻辑”是执行本文中描述的特定动作和/或功能等的可替换的或附加的处理资源,其包括硬件(例如,各种形式的晶体管逻辑器件、专用集成电路(ASIC)等),而不是被存储在存储器中并且可由处理器执行的计算机可执行指令(例如,软件、固件等)。
Claims (15)
1.一种系统,其包括:
可由主机访问的数据存储设备;
主机的操作系统的输入/输出过滤器系统,以便:
监控从主机到数据存储设备的读取操作和写入操作;
响应于对数据存储设备的部分的所监控的读取操作超过阈值,将所述部分拷贝到主机内的随机存取存储器(RAM)缓冲器;以及
将被寻址到数据存储设备的所述部分的连续读取操作重定向到所述RAM缓冲器中的所述部分的拷贝。
2.如权利要求1所述的系统,其中所述输入/输出过滤器系统包括操作系统内的一组驱动器。
3.如权利要求1所述的系统,其中要监控读取操作和写入操作包括:拦截从主机上的应用到数据存储设备的底层控制器的请求。
4.如权利要求1所述的系统,其中要监控读取操作包括:在文件系统级别上标识在每个监控读取操作中正被读取的数据存储设备的部分。
5.如权利要求1所述的系统,其中要监控读取操作包括:在块访问级别上标识在每个监控读取操作中正被读取的数据存储设备的部分。
6.如权利要求1所述的系统,其中要监控读取操作和写入操作包括:基于正被读取的数据存储设备的部分的地址和正被读取的所述部分的大小,来对读取操作进行计数和核对。
7.如权利要求1所述的系统,其中所述阈值是针对位置的用户可配置读取频率阈值。
8.一种非暂时性计算机可读介质,其包含指令,所述指令可由处理器执行以使所述处理器来:
利用主机操作系统内的输入/输出过滤器来监控从主机操作系统到固态驱动器(SSD)的读取操作和写入操作;
响应于被寻址到SSD的存储器的块的读取操作超过阈值,将所述块拷贝到主机内的随机存取存储器(RAM)缓冲器;以及
将被寻址到所述块的连续读取操作重定向到所述RAM缓冲器中的所拷贝的块。
9.如权利要求8所述的非暂时性计算机可读介质,其中所述SSD是与非(NAND)型闪速存储器设备。
10.如权利要求8所述的非暂时性计算机可读介质,其中响应于对SSD的存储器的块的读取操作超过所述阈值、独立于SSD上的错误,将所述块拷贝到主机处的所述RAM缓冲器。
11.如权利要求8所述的非暂时性计算机可读介质,其中监控读取操作和写入操作包括:在主机操作系统的应用层处拦截读取操作和写入操作,以及确定应用或主机操作系统正在将读取操作定向到的存储器的块。
12.一种方法,其包括:
利用操作系统内的输入/输出过滤器来监控从主机到固态驱动器(SSD)的输入/输出请求;
基于所述监控,检测在第一时间段内的对SSD的存储器的特定部分的输入/输出请求中的第一读取操作量已经超过阈值;
响应于检测到所述阈值已经被超过,将SSD的存储器的所述特定部分拷贝到主机内的随机存取存储器(RAM)缓冲器;以及
将被寻址到SSD的存储器的所述特定部分的连续读取操作重定向到所述RAM缓冲器中的所述特定部分的拷贝。
13.如权利要求12所述的方法,进一步包括:
响应于基于所述监控而检测到在将SSD的存储器的所述特定部分拷贝到所述RAM缓冲器之后的对SSD的存储器的所述特定部分的写入操作,从所述RAM缓冲器中移除所述特定部分的拷贝。
14.如权利要求12所述的方法,进一步包括:
响应于基于所述监控而检测到在将SSD的存储器的所述特定部分拷贝到所述RAM缓冲器之后,对SSD的存储器的特定位置的输入/输出请求中在第二时间段内的第二读取操作量,从所述RAM缓冲器中移除所述特定部分的拷贝。
15.如权利要求12所述的方法,进一步包括:
响应于检测到生成所述第一读取操作量的应用已经退出,从所述RAM缓冲器中移除SSD的存储器的所述特定部分的拷贝。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2017/015383 WO2018140036A1 (en) | 2017-01-27 | 2017-01-27 | Read operation redirect |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109891396A true CN109891396A (zh) | 2019-06-14 |
Family
ID=62978705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780060912.XA Pending CN109891396A (zh) | 2017-01-27 | 2017-01-27 | 读取操作重定向 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10664402B2 (zh) |
EP (1) | EP3504627B1 (zh) |
CN (1) | CN109891396A (zh) |
WO (1) | WO2018140036A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11269708B2 (en) * | 2019-12-30 | 2022-03-08 | Micron Technology, Inc. | Real-time trigger to dump an error log |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090216936A1 (en) * | 2008-02-21 | 2009-08-27 | Phison Electronics Corp. | Data reading method for flash memory and controller and storage system using the same |
CN101546298A (zh) * | 2008-03-28 | 2009-09-30 | 群联电子股份有限公司 | 用于闪存的数据读取方法、其控制器与储存系统 |
US20110099418A1 (en) * | 2009-10-28 | 2011-04-28 | Jian Chen | Non-Volatile Memory And Method With Post-Write Read And Adaptive Re-Write To Manage Errors |
US20110179219A1 (en) * | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
US20120059994A1 (en) * | 2010-09-08 | 2012-03-08 | International Business Machines Corporation | Using a migration cache to cache tracks during migration |
CN104584135A (zh) * | 2012-06-21 | 2015-04-29 | 桑迪士克科技股份有限公司 | 采用目标读擦洗算法的闪存 |
US20150339188A1 (en) * | 2014-05-20 | 2015-11-26 | Transcend Information, Inc. | Method for read disturbance management in non-volatile memory devices |
CN105843550A (zh) * | 2015-01-30 | 2016-08-10 | 桑迪士克科技股份有限公司 | 用于减少读取干扰错误的存储器系统和方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8027194B2 (en) * | 1988-06-13 | 2011-09-27 | Samsung Electronics Co., Ltd. | Memory system and method of accessing a semiconductor memory device |
US7457880B1 (en) * | 2003-09-26 | 2008-11-25 | Ximeta Technology, Inc. | System using a single host to receive and redirect all file access commands for shared data storage device from other hosts on a network |
WO2005082037A2 (en) * | 2004-02-24 | 2005-09-09 | Paul Kaler | Intelligent solid state disk with hot-swappable components |
US20080082736A1 (en) * | 2004-03-11 | 2008-04-03 | Chow David Q | Managing bad blocks in various flash memory cells for electronic data flash card |
US8074011B2 (en) | 2006-12-06 | 2011-12-06 | Fusion-Io, Inc. | Apparatus, system, and method for storage space recovery after reaching a read count limit |
JP2008287404A (ja) | 2007-05-16 | 2008-11-27 | Hitachi Ltd | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 |
CN201119524Y (zh) | 2007-12-07 | 2008-09-24 | 建福实业有限公司 | 卷发器 |
US7937521B2 (en) | 2008-01-29 | 2011-05-03 | Cadence Design Systems, Inc. | Read disturbance management in a non-volatile memory system |
US8719652B2 (en) | 2009-05-12 | 2014-05-06 | Stec, Inc. | Flash storage device with read disturb mitigation |
US7818525B1 (en) | 2009-08-12 | 2010-10-19 | Texas Memory Systems, Inc. | Efficient reduction of read disturb errors in NAND FLASH memory |
US8688894B2 (en) | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US8930778B2 (en) | 2012-11-15 | 2015-01-06 | Seagate Technology Llc | Read disturb effect determination |
CN104934066B (zh) | 2014-03-19 | 2018-03-27 | 安华高科技通用Ip(新加坡)公司 | Nand闪存中的读取干扰处理 |
US20160026399A1 (en) | 2014-07-23 | 2016-01-28 | Lsi Corporation | Block i/o interface for a host bus adapter that utilizes nvdram |
US20160291887A1 (en) * | 2015-03-30 | 2016-10-06 | Kabushiki Kaisha Toshiba | Solid-state drive with non-volatile random access memory |
-
2017
- 2017-01-27 CN CN201780060912.XA patent/CN109891396A/zh active Pending
- 2017-01-27 WO PCT/US2017/015383 patent/WO2018140036A1/en unknown
- 2017-01-27 EP EP17893614.2A patent/EP3504627B1/en active Active
- 2017-01-27 US US16/082,397 patent/US10664402B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110179219A1 (en) * | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
US20090216936A1 (en) * | 2008-02-21 | 2009-08-27 | Phison Electronics Corp. | Data reading method for flash memory and controller and storage system using the same |
CN101546298A (zh) * | 2008-03-28 | 2009-09-30 | 群联电子股份有限公司 | 用于闪存的数据读取方法、其控制器与储存系统 |
US20110099418A1 (en) * | 2009-10-28 | 2011-04-28 | Jian Chen | Non-Volatile Memory And Method With Post-Write Read And Adaptive Re-Write To Manage Errors |
US20120059994A1 (en) * | 2010-09-08 | 2012-03-08 | International Business Machines Corporation | Using a migration cache to cache tracks during migration |
CN104584135A (zh) * | 2012-06-21 | 2015-04-29 | 桑迪士克科技股份有限公司 | 采用目标读擦洗算法的闪存 |
US20150339188A1 (en) * | 2014-05-20 | 2015-11-26 | Transcend Information, Inc. | Method for read disturbance management in non-volatile memory devices |
CN105843550A (zh) * | 2015-01-30 | 2016-08-10 | 桑迪士克科技股份有限公司 | 用于减少读取干扰错误的存储器系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3504627A1 (en) | 2019-07-03 |
EP3504627B1 (en) | 2021-06-30 |
US10664402B2 (en) | 2020-05-26 |
EP3504627A4 (en) | 2020-04-08 |
US20190108127A1 (en) | 2019-04-11 |
WO2018140036A1 (en) | 2018-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10387239B2 (en) | Detecting memory failures in the runtime environment | |
US20210182166A1 (en) | Zoned namespace management of non-volatile storage devices | |
KR102480544B1 (ko) | 손상된 저장 디바이스 펌웨어의 검출 | |
KR100873943B1 (ko) | 비휘발성 컴퓨터 메모리를 독출하기 위한 시스템 및 방법 | |
US10552063B2 (en) | Background mitigation reads in a non-volatile memory system | |
US10956317B2 (en) | Garbage collection in non-volatile memory that fully programs dependent layers in a target block | |
CN110658990A (zh) | 具有改善的准备时间的数据存储系统 | |
US11210031B1 (en) | Thermal region tags and thermal region outlier detection | |
WO2012164618A1 (en) | Storage system and storage control method | |
TWI661427B (zh) | 記憶體管理方法以及儲存控制器 | |
US9858289B2 (en) | Storage controller and method for managing a solid-state memory | |
KR20060120263A (ko) | 시스템, 컴퓨터 시스템, 호스트 제어 인터페이스에서의기능들을 포함하는 방법, 에러 보고 방법 및 물품 | |
CN108829342B (zh) | 一种日志存储方法、系统及存储装置 | |
US11231854B2 (en) | Methods and apparatus for estimating the wear of a non-volatile memory | |
US20220043713A1 (en) | Meta Data Protection against Unexpected Power Loss in a Memory System | |
TWI616807B (zh) | 資料寫入方法以及儲存控制器 | |
US10656847B2 (en) | Mitigating asymmetric transient errors in non-volatile memory by proactive data relocation | |
US11507290B2 (en) | Method and apparatus for storage device management | |
CN109891396A (zh) | 读取操作重定向 | |
US9594525B2 (en) | Data storage device and operating method thereof | |
US10915441B2 (en) | Storage system having non-volatile memory device | |
US11360714B2 (en) | Method and controller for processing, based on global write stamp, cold and disturbed data block | |
US20190188102A1 (en) | Method and system for data recovery in a cloud based computing environment utilizing object storage | |
CN117075824B (zh) | 存储设备的控制方法、装置以及存储设备和硬盘阵列卡 | |
CN117519574A (zh) | 存储器管理方法、存储器控制器及存储器存储装置 |
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 | ||
AD01 | Patent right deemed abandoned | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20240112 |