CN110088738A - 存储操作队列 - Google Patents
存储操作队列 Download PDFInfo
- Publication number
- CN110088738A CN110088738A CN201780056817.2A CN201780056817A CN110088738A CN 110088738 A CN110088738 A CN 110088738A CN 201780056817 A CN201780056817 A CN 201780056817A CN 110088738 A CN110088738 A CN 110088738A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- memory
- storage location
- operational order
- 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
- 230000015654 memory Effects 0.000 claims abstract description 379
- 238000003860 storage Methods 0.000 claims abstract description 368
- 230000006870 function Effects 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 8
- 230000006399 behavior Effects 0.000 claims description 4
- 238000000034 method Methods 0.000 abstract description 33
- 238000004590 computer program Methods 0.000 abstract description 7
- 238000007726 management method Methods 0.000 description 89
- 238000005192 partition Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 12
- 238000013507 mapping Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 230000002688 persistence Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000000151 deposition Methods 0.000 description 5
- 230000001052 transient effect Effects 0.000 description 5
- 239000007787 solid Substances 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 238000004064 recycling Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000003321 amplification Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 240000004246 Agave americana Species 0.000 description 1
- 235000008754 Agave americana Nutrition 0.000 description 1
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000005299 abrasion Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000005389 magnetism Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000001465 metallisation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000000377 silicon dioxide Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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/061—Improving I/O performance
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- 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
- 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/7205—Cleaning, compaction, garbage collection, erase control
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)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了用于使存储操作排队的装置、系统、方法和计算机程序产品。集成电路存储器元件(123,300)接收与存储器元件(123,300)的存储位置(302)的存储体(306)相关联的存储操作命令。集成电路存储器元件(123,300)通过确定与所述存储操作命令相关联的数据在页面寄存器(308)中的存储位置(302)来使所述存储操作命令排队等待在存储位置(302)的存储体(306)上执行。页面寄存器(308)中的存储位置(302)包括所述页面寄存器(308)中的可用存储位置的子组。集成电路存储器元件(123,300)将与存储操作命令相关联的数据存储在页面寄存器(308)中的确定的存储位置(302)处。
Description
技术领域
在各种实施方案中,本公开涉及存储设备,并且更具体地涉及使用存储设备的页面寄存器来使存储命令动态地排队。
背景技术
存储器单元的阵列可被细分为各种子阵列,以使得可独立地对每个子阵列进行存储操作。然而,跟踪在特定子阵列上正在进行哪些操作,这种跟踪在中心位置处可能难以管理。
发明内容
提供了用于使存储操作排队的装置。在一个实施方案中,装置包括集成电路(“IC”)存储器元件。在某些实施方案中,IC存储器元件接收与存储器元件的存储位置的存储体相关联的存储操作命令。在另外一个实施方案中,IC存储器元件通过确定与存储操作命令相关联的数据在页面寄存器中的存储位置来使存储操作命令排队等待在存储位置的存储体上执行。页面寄存器中的存储位置可包括页面寄存器中的可用存储位置的子组。在一些实施方案中,IC存储器元件将与存储操作命令相关联的数据存储在页面寄存器中的确定的存储位置处。
在另一个实施方案中,装置包括使用非易失性存储设备的页面寄存器来缓冲与非易失性存储设备的多个子阵列相关联的多个存储操作命令的装置。在另外一个实施方案中,装置包括用于将多个存储操作命令的数据存储在页面寄存器中的装置,由此使得存储操作命令中的每一者的数据小于页面寄存器的页面大小,以使得所述多个存储操作命令中的每一者的数据并发存储在页面寄存器中。在一个实施方案中,装置包括用于同时对存储在页面寄存器中的多个存储操作命令的至少子组的数据进行处理的装置。
提供了用于使存储操作排队的系统。在一个实施方案中,系统包括非易失性存储器介质,其包括页面缓冲器和控制器。在某些实施方案中,控制器被配置为接收针对非易失性存储器介质的多个存储操作命令。多个存储操作命令中的一个存储操作命令可用于非易失性存储器介质的多个子阵列中的一个子阵列。在另一个实施方案中,控制器被配置为确定页面缓冲器中的存储位置以用于并发存储与多个存储操作命令相关联的数据。在各种实施方案中,控制器被配置为使用存储在页面缓冲器中的与至少两个存储操作命令相关联的数据来同时执行多个存储操作命令中的至少两个。
附图说明
下文参考附图中示出的具体实施方案包括了更具体的描述。应当理解,这些附图仅描绘了本公开的某些实施方案,因此不应被认为是对其范围的限制,通过使用附图,以额外的特异性和细节描述和解释了本公开,其中:
图1是示出包括存储管理模块的系统的一个实施方案的示意性框图;
图2是示出存储器元件的一个实施方案的示意性框图;
图3是示出存储器元件的另一个实施方案的示意性框图;
图4是示出存储管理模块的一个实施方案的示意性框图;
图5是示出存储管理模块的另一个实施方案的示意性框图;
图6是示出动态存储操作队列的一个实施方案的示意性框图;
图7是示出用于使存储操作排队的方法的一个实施方案的示意性流程图;
图8是示出用于使存储操作排队的方法的另外一个实施方案的示意性流程图;
图9A是示出用于使存储操作排队的方法的另一个实施方案的示意性流程图;以及
图9B是示出用于使存储操作排队的方法的另外一个实施方案的示意性流程图。
具体实施方式
本公开的各方面可体现为装置、系统、方法或计算机程序产品。因此,本公开的各方面可采取完全为硬件的实施方案、完全为软件的实施方案(包括固件、常驻软件、微代码等)或结合软件和硬件方面的实施方案的形式,这些方面在本文中可全部统称为“电路”、“模块”、“装置”或“系统”。此外,本公开的各方面可采取在存储计算机可读和/或可执行程序代码的一个或多个非暂态计算机可读存储介质中体现的计算机程序产品的形式。
本说明书中所述的许多功能单元已被标记为模块,以便更具体地强调它们的实现独立性。例如,模块可被实现为包括定制VLSI电路或门阵列、现成的半导体诸如逻辑芯片、晶体管或其他分立部件的硬件电路。模块还可在可编程硬件设备诸如现场可编程门阵列、可编程阵列逻辑部件、可编程逻辑设备等中实现。
模块还可至少部分地在用于由各种类型的处理器执行的软件中实现。所识别的可执行代码模块可例如包括计算机指令的一个或多个物理或逻辑块,所述物理或逻辑块可例如被组织为对象、过程或函数。然而,所识别的模块的可执行文件无需物理地定位在一起,但可包括存储在不同位置的不同指令,这些不同的指令在逻辑地接合在一起时包括该模块并实现针对该模块所述的用途。
实际上,可执行代码模块可包括单个指令或许多指令,并且甚至可以在若干不同的代码片段上、在不同程序之间、跨若干存储器设备等分布。当模块或模块的部分在软件中实现时,这些软件部分可存储在一个或多个计算机可读和/或可执行的存储介质上。可利用一个或多个计算机可读存储介质的任何组合。例如,计算机可读存储介质可包括但不限于电子、磁性、光学、电磁、红外或半导体系统、装置或设备或前述的任何合适组合,但不应当包括传播信号。在本文档的语境中,计算机可读和/或可执行存储介质可以是可包含或存储用于供指令执行系统、装置、处理器或设备使用或与其结合的程序的任何有形和/或非暂态介质。
用于执行本公开的各方面的操作的计算机程序代码可以以一种或多种编程语言的任何组合来编写,包括面向对象的编程语言诸如Python、Java、Smalltalk、C++、C#、Objective C等,常规过程式编程语言,诸如“C”编程语言、脚本编程语言和/或其他类似编程语言。程序代码可部分地或完全地在一个或多个用户计算机上执行以及/或者通过数据网络等在远程计算机或服务器上执行。
如本文所用,部件包括有形、物理的非暂态设备。例如,部件可被实现为:硬件逻辑电路,其包括定制VLSI电路、门阵列或其他集成电路;现成的半导体,诸如逻辑芯片、晶体管或其他分立设备;和/或其他机械或电气设备。部件还可在下述可编程硬件设备中实现,诸如现场可编程门阵列、可编程阵列逻辑部件、可编程逻辑设备等。部件可以包括一个或多个硅集成电路设备(例如,芯片、管芯、管芯平面、封装)或其他分立电气设备,其通过印刷电路板(PCB)的电线等与一个或多个其他部件电连通。在某些实施方案中,本文所述的模块中的每一个可另选地体现为或实现为部件。
本说明书通篇所提到的“一个实施方案”、“实施方案”或相似语言是指结合所述实施方案所描述的特定特征、结构或特性被包含在本公开的至少一个实施方案中。因此,本说明书通篇出现的短语“在一个实施方案中”、“在实施方案中”和相似语言可以但不一定全部是指同一个实施方案,而是指“一个或多个但不是所有实施方案”,除非另有明确说明。术语“包括”、“包含”、“具有”及其变体是指“包括但不限于”,除非另有明确说明。列举的项目列表并不意味着任何或所有项目是互斥的和/或相互包容的,除非另有明确说明。术语“一”、“一个”和“该”也指“一个或多个”,除非另有明确说明。
下面参考根据本公开实施方案的方法、装置、系统和计算机程序产品的示意性流程图和/或示意性框图来描述本公开的各方面。应当理解,示意性流程图和/或示意性框图的每个框,以及示意性流程图和/或示意性框图中的框的组合可由计算机程序指令实现。这些计算机程序指令可被提供给计算机的处理器或其他可编程数据处理装置以生产机器,由此使得经由该处理器或其他可编程数据处理装置执行的指令创建用于实现在示意性流程图和/或示意性框图的一个或多个框中指定的功能和/或动作的装置。
还应当指出,在一些另选的具体实施中,框中示出的功能可以不按图中所示的顺序发生。例如,事实上,连续示出的两个框可基本上同时并发执行,或者这些框有时可以采用相反的顺序执行,取决于所涉及的功能。可以设想在功能、逻辑或效果上等同于所示附图的一个或多个框或其部分的其他步骤和方法。尽管在流程图和/或框图中可以采用各种箭头类型和线条类型,但是应当理解它们不限制相应实施方案的范围。例如,箭头可以指示所描绘的实施方案的所列步骤之间的未指定持续时间的等待或监视时段。
在以下详细描述中,参考了构成所述详细描述的一部分的附图。前述发明内容仅是例示性的,并不旨在以任何方式进行限制。除了以上描述的例示性方面、实施方案和特征之外,通过参考附图和以下详细描述,更多方面、实施方案和特征将变得显而易见。每个图中的元件的描述可以参考前面的图的元件。相似的数字可以指代附图中的相似元件,包括相似元件的替代实施方案。
图1是包括存储管理模块150的系统100的一个实施方案的框图。存储管理模块150可为非易失性存储器控制器124、非易失性存储器介质控制器126、设备驱动程序或存储管理层(SML)130等中的一者或多者的一部分和/或与其进行通信。存储管理模块150可以在计算设备110的非易失性存储器系统102上操作,计算设备110可以包括处理器111、易失性存储器112和通信接口113。处理器111可包括一个或多个中央处理单元、一个或多个通用处理器、一个或多个专用处理器、一个或多个虚拟处理器(例如,计算设备110可以是在主机内操作的虚拟机)、一个或多个处理器内核等。通信接口113可包括一个或多个网络接口,其被配置为将计算设备110和/或非易失性存储器控制器124通信地耦接至通信网络115,诸如互联网协议网络、存储区域网络等。
计算设备110还可包括非暂态计算机可读存储介质114。计算机可读存储介质114可包括可执行指令,其被配置为引起计算设备110(例如,处理器111)进行本文所公开方法中的一个或多个的步骤。作为另外一种选择或除此之外,存储管理模块150可体现为存储在非暂态存储介质114上的一个或多个计算机可读指令。
在所描绘的实施方案中,非易失性存储器系统102包括存储管理模块150。在一个实施方案中,存储管理模块150被配置为使用与存储器元件相关联的页面寄存器中的存储位置子组来使易失性和/或非易失性的存储器元件的存储操作排队。例如,当非易失性存储设备在正常“NAND”模式下操作时,可在进行存储操作(诸如读取或写入操作)时将整页数据存储在页面寄存器中。另一方面,如本文所述,当非易失性存储设备在“突发”模式下操作时(该非易失性存储设备可具有小于整页数据的存取单元),可使用页面寄存器的子组来使多个存储操作排队等待执行,以存储与在存储器元件的存储体上进行的存储操作相关联的数据。
在一个实施方案中,存储管理模块150可包括可执行软件代码,诸如设备驱动程序、SML 130等,其存储在计算机可读存储介质114上以用于在处理器111上执行。在另一个实施方案中,存储管理模块150可包括一个或多个非易失性存储器设备120的逻辑硬件,诸如非易失性存储器介质控制器126、非易失性存储器控制器124、设备控制器、现场可编程门阵列(FPGA)或其他可编程逻辑部件、用于FPGA或其他可编程逻辑部件的固件、用于在微控制器上执行的微代码、专用集成电路(ASIC)等。在另外一个实施方案中,存储管理模块150可包括可执行软件代码和逻辑硬件两者的组合。
在一个实施方案中,存储管理模块150被配置为经由总线125等从SML 130接收存储请求。存储管理模块150可被进一步配置为经由总线125将数据传输到SML 130和/或存储客户端116和/或从SML和/或存储客户端传输数据。因此,在一些实施方案中,存储管理模块150可包括一个或多个直接存储器存取(DMA)模块、远程DMA模块、总线控制器、桥接器、缓冲器等和/或与其通信,以有利于传输存储请求和相关联的数据。在另一个实施方案中,存储管理模块150可以接收存储请求作为来自存储客户端116的API调用、作为IO-CTL命令等。下文将参照图4和图5更详细描述存储管理模块150。
根据各种实施方案,包括存储管理模块150的非易失性存储器控制器124可管理一个或多个非易失性存储器设备120。一个或多个非易失性存储器设备120可包括记录设备、存储器和/或存储设备,诸如一个或多个固态存储设备,其被布置和/或划分为多个可寻址的介质存储位置。如本文所用,介质存储位置是指存储器的任何物理单元(例如,非易失性存储器设备120上的任何数量的物理存储介质)。存储器单元可包括但不限于:物理存储位置的页面、存储器分区、擦除块、扇区、块、集合或组(例如下述逻辑页面、逻辑擦除块)等。
非易失性存储器控制器124可包括SML 130,其可向一个或多个存储客户端116呈现逻辑地址空间134。SML的一个示例是加利福尼亚州米尔皮塔斯的闪迪公司(SanDiskCorporation of Milpitas,California)的Virtual Storage作为另外一种选择,每个非易失性存储器设备120可包括非易失性存储器介质控制器126,其可向存储客户端116呈现逻辑地址空间134。如本文所用,逻辑地址空间134是指存储器资源的逻辑表示。逻辑地址空间134可包括多个(例如,范围)的逻辑地址。如本文所用,逻辑地址是指用于引用存储器资源(例如,数据)的任何标识符,包括但不限于:逻辑块地址(LBA)、柱面/磁头/扇区(CHS)地址、文件名、对象标识符、索引节点、通用唯一标识符(UUID)、全局唯一标识符(GUID)、哈希码、签名、索引条目、范围、程度等。
SML 130可保持元数据135,诸如正向索引,以将逻辑地址空间134的逻辑地址映射到非易失性存储器设备120上的介质存储位置。SML 130可提供从逻辑地址到物理存储资源的随机任意对任意映射。如本文所用,“任意对任意”映射可将任何逻辑地址映射到任何物理存储资源。因此,在逻辑地址与特定的介质存储位置和/或介质地址之间可能没有预先定义和/或预先设置的映射。如本文所用,介质地址是指存储器资源的地址,其唯一地将一个存储器资源从另一个存储器资源标识到管理多个存储器资源的控制器。以举例的方式,介质地址包括但不限于下述各项的地址:介质存储位置、物理存储器单元、物理存储器单元的集合(例如,逻辑存储器单元)、存储器单元的一部分(例如,逻辑存储器单元地址和偏移量、范围和/或程度)等。因此,SML 130可将逻辑地址映射到任何大小和/或粒度的物理数据资源,这可以或可以不对应于非易失性存储器设备120的底层数据分区方案。例如,在一些实施方案中,非易失性存储器控制器124被配置为将数据存储在逻辑存储器单元内,逻辑存储器单元通过在逻辑上组合多个物理存储器单元而形成,这可允许非易失性存储器控制器124支持许多不同的虚拟存储器单元大小和/或粒度。
如本文所用,逻辑存储器元件是指一组两个或更多个非易失性存储器元件,其(例如,经由I/O和/或控制总线)被并行管理或能够被并行管理。逻辑存储器元件可包括多个逻辑存储器单元,诸如逻辑页面、逻辑存储器分区(例如,逻辑擦除块)等等。如本文所用,逻辑存储器单元是指将两个或更多个物理存储器单元组合的逻辑构造,每个物理存储器单元位于相应逻辑存储器元件中的相应非易失性存储器元件上(例如,可并行访问每个非易失性存储器元件)。如本文所用,逻辑存储器分区是指两个或更多个物理存储器分区的组,每个物理存储器分区位于相应逻辑存储器元件中的相应非易失性存储器元件上。
SML 130所呈现的逻辑地址空间134可具有逻辑容量,其可对应于逻辑地址空间134中的可用逻辑地址的数量和这些逻辑地址所引用的数据的大小和/或粒度。例如,包括2^32个唯一逻辑地址(每个唯一逻辑地址引用2048字节(2KiB)的数据)的逻辑地址空间134的逻辑容量可为2^43字节。如本文所用,千字节(KiB)是指1024字节。在一些实施方案中,逻辑地址空间134可为精简配置的。如本文所用,“精简配置的”逻辑地址空间134是指逻辑容量超过底层非易失性存储器设备120的物理容量的逻辑地址空间134。例如,SML 130可向存储客户端116呈现64位逻辑地址空间134(例如,64位逻辑地址所引用的逻辑地址空间134),其可超过底层非易失性存储器设备120的物理容量。大逻辑地址空间134可允许存储客户端116分配和/或引用逻辑地址的连续范围,同时降低命名冲突的机会。利用在逻辑地址与物理存储资源之间的任意对任意映射,SML 130可独立于底层物理存储设备120来管理逻辑地址空间134。例如,SML 130可在不改变存储客户端116所使用的逻辑地址的情况下,根据需要无缝地添加和/或移除物理存储资源。
非易失性存储器控制器124可被配置为以语境格式存储数据。如本文所用,语境格式是指自描述数据格式,其中持久性语境元数据与该数据一起存储在物理存储介质122上。持久性语境元数据为与之一起存储的数据提供语境。在某些实施方案中,持久性语境元数据唯一地标识与持久性语境元数据一起存储的数据。例如,持久性语境元数据可唯一地将存储客户端116所拥有的数据的扇区或块从存储客户端116所拥有的数据的其他扇区或块进行标识。在另外一个实施方案中,持久性语境元数据标识对该数据进行的操作。在另外一个实施方案中,持久性语境元数据标识对该数据进行的操作序列。在另外一个实施方案中,持久性语境元数据标识该数据的安全控件、数据类型或其他属性。在某个实施方案中,持久性语境元数据标识多个方面中的至少一个,包括数据类型、唯一数据标识符、对该数据进行的操作和操作序列。
持久性语境元数据可包括但不限于:该数据的逻辑地址、该数据的标识符(例如,文件名、对象id、标签、唯一标识符等)、对其他数据的引用(例如,该数据与其他数据相关联的指示符)、该数据相对于其他数据的相对位置或偏移量(例如,文件偏移量等)、数据大小和/或范围等。语境数据格式可包括分组格式,其具有数据段和一个或多个标头。作为另外一种选择,语境数据格式可以其他方式(例如,利用非易失性存储器介质122上的专用索引、存储器分区索引等)将数据与语境信息相关联。
在一些实施方案中,语境数据格式可允许基于非易失性存储器介质122的内容且独立于其他元数据(诸如上文所讨论的随机任意对任意映射)来确定和/或重建数据语境。由于数据的介质位置独立于数据的逻辑地址,因此仅仅基于该数据的介质位置或介质地址来确定数据的语境可能是低效或不可能的。将数据以语境格式存储在非易失性存储器介质122上可允许在不引用其他元数据的情况下确定数据语境。例如,语境数据格式可允许仅基于非易失性存储器介质122的内容来重建元数据(例如,重建在逻辑地址与介质位置之间的任意对任意映射)。
在一些实施方案中,非易失性存储器控制器124可被配置为将数据存储在一个或多个非对称的一次写入介质122(诸如固态存储介质)上。如本文所用,“一次写入”存储介质是指每次在其上进行新数据写入或编程时都被重新初始化(例如,被擦除)的存储介质。如本文所用,“非对称”存储介质是指不同存储操作具有不同延迟的存储介质122。许多类型的固态存储介质是非对称的;例如,读取操作可比写入/编程操作快得多,并且写入/编程操作可比擦除操作快得多(例如,读取介质的速度可比擦除快数百倍,并且比对介质编程快数十倍)。
存储器介质122可被划分为存储器分区,其可作为一个组(例如,擦除块)来擦除,以便尤其考虑到介质122的非对称特性等。因此,就地修改单个数据段可需要擦除包含该数据的整个擦除块,并且将经修改的数据连同原始未更改的数据一起重写到擦除块。这可导致低效的“写入放大”,其可过度地磨损介质122。因此,在一些实施方案中,非易失性存储器控制器124可被配置为异地写入数据。如本文所用,“异地”写入数据是指将数据写入到不同介质存储位置,而不是“就地”盖写数据(例如,盖写数据的原始物理位置)。异地修改数据可避免写入放大,这是由于不需要擦除和再复制含有待修改的数据的擦除块上的现有有效数据。此外,异地写入数据可从许多存储操作的延迟路径移除擦除(例如,擦除延迟不再是写入操作关键路径的一部分)。
非易失性存储器控制器124可包括一个或多个过程,其在用于为存储操作服务的常规路径(例如,用于进行存储操作和/或为存储请求服务的“路径”)之外操作。如本文所用,“用于为存储请求服务的路径”或“用于为存储操作服务的路径”(也称为“关键路径”)是指为存储操作或请求服务所需的一系列处理操作,诸如读取、写入、修改等。用于为存储请求服务的路径可包括从存储客户端116接收请求、识别该请求的逻辑地址、对非易失性存储器介质122进行一个或多个存储操作并且返回结果,诸如确认或数据。在用于为存储请求服务的路径之外发生的过程可包括但不限于疏导、去重等。这些过程可自主地在后台中实现,以使得它们不干扰或影响其他存储操作和/或请求的性能。因此,这些过程可独立于为存储请求服务来操作。
在一些实施方案中,非易失性存储器控制器124包括疏导器,其被配置为使用垃圾收集或其他存储容量恢复过程来回收存储器分区(例如,逻辑或物理擦除块)以供重新使用。非易失性存储器控制器124所实现的异地写入范例可导致过时或无效数据保留在非易失性存储器介质122上。例如,用数据Y盖写数据X可导致将Y存储在新存储器分区上(例如,而不是就地盖写X),并且更新元数据的任意对任意映射以将Y识别为该数据的有效最新版本。数据X的过时版本可被标记为无效的,但可能不立即移除(例如,擦除),这是由于如上所述,擦除X可涉及擦除整个存储器分区,这是耗时的操作且可导致写入放大。类似地,可能不立即移除不再使用的数据(例如,删除或修整的数据)。非易失性存储器介质122可累积大量无效数据。
疏导过程可在用于为存储操作服务的关键路径之外操作。疏导过程可回收存储器分区,以使得它们可重新用于其他存储操作。如本文所用,回收存储器分区是指擦除存储器分区,以使得可在其上存储/编程新的数据。回收存储器分区可包括将存储器分区上的有效数据重新定位到新的位置。疏导器可基于一个或多个因素来识别待回收的存储器分区,这些因素可包括但不限于:存储器分区中的无效数据的量、存储器分区中的有效数据的量、存储器分区上的磨损(例如,擦除周期的数量)、自存储器分区编程或更新起的时间等。
非易失性存储器控制器124可被进一步配置为以日志格式存储数据。如上所述,日志格式是指数据格式,其定义对非易失性存储器介质122进行的存储操作的有序序列。在一些实施方案中,日志格式包括将数据存储在非易失性存储器介质122的介质地址的预定序列中(例如,在介质122的连续页面和/或擦除块内)。日志格式还可包括将数据(例如,每个分组或数据段)与相应序列指示符相关联。可将这些序列指示符单独地应用于数据(例如,应用于每个数据分组)和/或应用于数据分组(例如,顺序地存储在存储器分区(诸如擦除块)上的分组)。在一些实施方案中,当如上所述回收(例如,擦除)存储器分区时以及/或者当首先使用存储器分区存储数据时,可将序列指示符应用于存储器分区。
在一些实施方案中,日志格式可包括以“只追加”范例存储数据。使用下述日志存储模块137等的非易失性存储器控制器124可在非易失性存储器设备120的介质地址处保持当前追加点。追加点可为当前存储器分区和/或存储器分区内的偏移量。然后可从追加点顺序地追加数据。因此可基于数据的存储器分区的序列指示符结合存储器分区内的数据的序列来确定数据的顺序排序。在到达存储器分区的末端时,非易失性存储器控制器124可识别“下一个”可用存储器分区(例如,被初始化并准备好存储数据的下一个存储器分区)。疏导器可回收包含无效、过期和/或删除的数据的存储器分区,以确保数据可继续追加到介质日志。
本文所述的日志格式可允许基于非易失性存储器介质122的内容且独立于其他元数据来将有效数据与无效数据区分开。如上所述,直到回收了包含无效数据的存储器分区,才可能从非易失性存储器介质122移除该数据。因此,非易失性存储器介质122上可存在具有相同语境的数据的多个“版本”(例如,具有相同逻辑地址的数据的多个版本)。与该数据相关联的序列指示符可用于将数据的无效版本与数据的当前最新版本区分开;日志中最新的数据是当前版本,并且先前版本可被标识为无效的。
存储管理层130可被配置为向一个或多个存储客户端116提供存储服务。存储客户端116可包括在计算设备110上运行的本地存储客户端116和/或可经由网络115和/或网络接口113访问的远程存储客户端116。存储客户端116可包括但不限于:操作系统、文件系统、数据库应用程序、服务器应用程序、内核级进程、用户级进程、应用程序等。
存储管理层130包括一个或多个非易失性存储器设备120和/或通信地耦接到其。一个或多个非易失性存储器设备120可包括不同类型的非易失性存储器设备,包括但不限于:固态存储设备、硬盘驱动器、SAN存储资源等。一个或多个非易失性存储器设备120可包括一个或多个相应非易失性存储器介质控制器126和非易失性存储器介质122。如图1所示,SML130可经由传统块I/O接口131提供对一个或多个非易失性存储器设备120的访问。另外,SML 130可通过SML接口132提供对增强功能(例如,大虚拟地址空间134)的访问。元数据135可用于管理和/或跟踪通过块I/O接口131、SML接口132、高速缓存接口133或其他相关接口中的任何一个进行的存储操作。
高速缓存接口133可暴露可经由存储管理层130访问的高速缓存特定的特征。另外,在一些实施方案中,呈现给存储客户端116的SML接口132提供对数据转换的访问,该数据转换由一个或多个非易失性存储器设备120和/或一个或多个非易失性存储器介质控制器126实现。
SML 130可通过一个或多个接口提供存储服务,这些接口可包括但不限于:块I/O接口、扩展存储管理层接口、高速缓存接口等。SML 130可通过一个或多个接口向存储客户端116呈现逻辑地址空间134。如上所述,逻辑地址空间134可包括多个逻辑地址,每个逻辑地址对应于一个或多个非易失性存储器设备120上的相应介质位置。SML 130可保持元数据135,该元数据包括在逻辑地址与介质位置之间的任意对任意映射,如上所述。
SML 130还可包括日志存储模块137,其被配置为以语境日志格式存储数据。语境日志数据格式可包括将数据与持久性语境元数据(诸如数据的逻辑地址等)相关联。语境日志格式还可包括将数据与非易失性存储器介质122上的相应序列标识符相关联,这些序列标识符定义对一个或多个非易失性存储器设备120进行的存储操作的有序序列,如上所述。
SML 130还可包括非易失性存储器设备接口139,其被配置为通过总线125将数据、命令和/或查询传输到一个或多个非易失性存储器设备120,总线125可包括但不限于:外围部件快速互连(PCI Express或PCIe)总线、串行高级技术附件(ATA)总线、并行ATA总线、小型计算机系统接口(SCSI)、火线、光纤通道、通用串行总线(USB)、PCIe高级交换(PCIe-AS)总线、网络115、Infiniband、SCSI RDMA等。非易失性存储器设备接口139可以使用一个或多个输入输出控制(IO-CTL)命令、一个或多个IO-CTL命令扩展、远程直接存储器存取等来与一个或多个非易失性存储器设备120通信。
通信接口113可包括一个或多个网络接口,其被配置为将计算设备110和/或非易失性存储器控制器124通信地耦接到网络115和/或耦接到一个或多个网络可访问的远程存储客户端116。存储客户端116可包括在计算设备110上运行的本地存储客户端116和/或可经由网络115和/或网络接口113访问的远程存储客户端116。非易失性存储器控制器124包括一个或多个非易失性存储器设备120。虽然图1描绘了单个非易失性存储器设备120,但本公开在这方面不受限制,并且可适于结合任何数量的非易失性存储器设备120。
非易失性存储器设备120可包括非易失性存储器介质122,其可包括但不限于:NAND闪存存储器、NOR闪存存储器、纳米随机存取存储器(纳米RAM或NRAM)、基于纳米晶体线的存储器、基于氧化硅的亚10纳米工艺存储器、石墨烯存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)、电阻式RAM(RRAM)、可编程金属化单元(PMC)、导电桥接RAM(CBRAM)、磁阻RAM(MRAM)、动态RAM(DRAM)、相变RAM(PRAM或PCM)、磁存储介质(例如,硬盘、磁带)、光存储介质等。尽管非易失性存储器介质122在本文中被称为“存储器介质”,但在各种实施方案中,非易失性存储器介质122可更一般地包括能够记录数据的非易失性记录介质,其可被称为非易失性存储器介质、非易失性存储介质等。此外,在各种实施方案中,非易失性存储器设备120可包括非易失性记录设备、非易失性存储器设备、非易失性存储设备等。
非易失性存储器介质122可包括一个或多个非易失性存储器元件123,其可包括但不限于:芯片、封装、平面、管芯等。非易失性存储器介质控制器126可被配置为管理非易失性存储器介质122上的存储操作,并且可包括一个或多个处理器、可编程处理器(例如,现场可编程门阵列)等。在一些实施方案中,非易失性存储器介质控制器126被配置为以上述语境日志格式将数据存储在非易失性存储器介质122上和/或从其读取数据,并且将数据传输到非易失性存储器设备120/从其传输数据等。
非易失性存储器介质控制器126可通过总线127通信地耦接到非易失性存储器介质122。总线127可以包括用于向非易失性存储器元件123传送数据/从该非易失性存储器元件传送数据的I/O总线。总线127可以还包括用于将寻址和其他命令及控制信息传送到非易失性存储器元件123的控制总线。在一些实施方案中,总线127可并行地将非易失性存储器元件123通信地耦接到非易失性存储器介质控制器126。该并行访问可允许非易失性存储器元件123作为组被管理,从而形成逻辑存储器元件129。如上所述,逻辑存储器元件可被划分为相应的逻辑存储器单元(例如逻辑页面)和/或逻辑存储器分区(例如逻辑擦除块)。逻辑存储单元可通过将非易失性存储器元件中的每一个的物理存储单元逻辑地组合来形成。例如,如果非易失性存储器介质122包括二十五(25)个非易失性存储器元件,则每个逻辑存储器单元可包括二十五(25)个页面(例如,非易失性存储器介质122的每个元件的页面)。
非易失性存储器控制器124可包括SML 130和非易失性存储器介质控制器126。SML130可经由一个或多个接口131、132和/或133向存储客户端116提供存储服务。在一些实施方案中,SML 130提供块设备I/O接口131,存储客户端116通过该接口进行块级I/O操作。作为另外一种选择或除此之外,SML 130可提供存储管理层(SML)接口132,该接口可向存储客户端116提供其他存储服务。在一些实施方案中,SML接口132可包括对块设备接口131的扩展(例如,存储客户端116可通过对块设备接口131的扩展来访问SML接口132)。作为另外一种选择或除此之外,SML接口132可作为单独的API、服务和/或库提供。SML 130可被进一步配置为使用非易失性存储器系统102提供用于高速缓存数据的高速缓存接口133。
如上所述,SML 130可(例如,通过接口131、132和/或133)向存储客户端116呈现逻辑地址空间134。SML 130可保持元数据135,该元数据包括在逻辑地址空间134中的逻辑地址与非易失性存储器设备120上的介质位置之间的任意对任意映射。元数据135可包括逻辑到物理映射结构,其具有映射逻辑地址空间134中的逻辑地址和非易失性存储器设备120上的介质位置的条目。在一个实施方案中,元数据135的逻辑到物理映射结构被稀疏填充,其具有非易失性存储器设备120存储数据的逻辑地址的条目,而没有非易失性存储器设备120当前未存储数据的逻辑地址的条目。在某些实施方案中,元数据135跟踪块级的数据,且SML130管理块形式的数据。
非易失性存储器系统102还可包括日志存储模块137,如上所述,该日志存储模块可被配置为以语境日志格式将数据存储在非易失性存储器设备120上。语境日志数据格式可包括将数据与非易失性存储器介质122上的逻辑地址相关联。语境日志格式还可包括将数据与非易失性存储器介质122上的相应序列标识符相关联,这些序列标识符定义在非易失性存储器介质122上进行的存储操作的有序序列,如上所述。非易失性存储器控制器124还可包括非易失性存储器设备接口139,其被配置为通过总线125将数据、命令和/或查询传输到非易失性存储器介质控制器126,如上所述。
图2描绘了可包括一个或多个存储器管芯或芯片212的非易失性存储设备210的实施方案。非易失性存储设备210可与参照图1描述的非易失性存储器设备120基本上类似。在一些实施方案中,存储器管芯212包括存储器单元阵列200(二维或三维)、管芯控制器220和读写电路230A/230B。在一个实施方案中,通过各种外围电路对存储器阵列200的访问在阵列的相对侧上以对称方式实现,以使得每侧的接入线路和电路系统的密度减少一半。在另外一个实施方案中,读写电路230A/230B包括多个感测块250,其允许并行地读取存储器单元的页面或对其编程。
在各种实施方案中,经由行解码器240A/240B通过字线以及经由列解码器242A/242B通过位线可对存储器阵列200进行寻址。在一些实施方案中,控制器244被包括在同一存储器设备210(例如,可移除存储卡或封装)中,作为一个或多个存储器管芯212。命令和数据经由线路232在主机和控制器244之间传输,并且经由线路234在控制器和一个或多个存储器管芯212之间传输。一个具体实施可包括多个芯片212。
在一个实施方案中,管芯控制器220与读写电路230A/230B配合以在存储器阵列200上进行存储器/存储操作。在某些实施方案中,管芯控制器220包括存储管理模块150、状态机222、片上地址解码器224和功率控制电路226。在一个实施方案中,存储管理模块150被配置为:接收针对存储器阵列200的存储位置的存储体的存储操作命令;使用与存储器阵列200相关联的页面寄存器中的可用存储位置子组来使存储操作命令排队等待执行;以及将与存储操作命令相关联的数据存储在页面寄存器中的存储位置处,直到完成、执行、进行存储操作命令等为止。在某些实施方案中,存储管理模块150可包括:设备驱动程序的软件;和/或设备控制器244、管芯控制器220和/或状态机222中的硬件。
在一个实施方案中,状态机222提供存储器或存储操作的芯片级控制。片上地址解码器224提供地址接口,以在由主机或存储器控制器使用的地址到由解码器240A、240B、242A、242B使用的硬件地址之间转换。功率控制电路226控制在存储器操作期间提供给字线和位线的功率和电压。在一个实施方案中,功率控制电路226包括一个或多个电荷泵,其可产生大于供电电压的电压。
图3描绘了存储器元件300(诸如上述非易失性存储设备210)的一个实施方案,其包括存储器单元302的阵列301。在一个实施方案中,阵列301被分成存储器单元302的两个子阵列303。本领域技术人员按照本说明书将认识到,存储器阵列301可被分成任何数量的子阵列303。此外,在所描绘的实施方案中,每行存储器单元302包括存储器单元302的存储体306(例如,一组存储器单元302)和一组存储器单元存储体306(包括存储体组304)。例如,如图3所示,存储器元件300包括存储器单元302的两个子阵列303和十六个存储体306,其可分组为四个不同存储体组304。
在另外一个实施方案中,存储器元件300可具有相关联的页面寄存器/页面缓冲器308。如本文所用,页面寄存器308是用于在向存储器阵列301传输数据(例如,对于写入命令而言)或从该存储器阵列传输数据(例如,对于读取命令而言)时暂时存储数据的存储区域。在某个实施方案中,页面寄存器包括具有多个数据锁存器的多个不同存储位置,所述多个数据锁存器可用于存储存储器阵列301的地址、待存储在存储器阵列301中的这些地址处的数据等。
在一个实施方案中,当存储器元件300在异常模式(诸如非易失性NAND存储设备的NAND模式)下操作时,页面寄存器308的存取单元可为整页数据,例如每页512B、4kB、8kB、16kB等。另一方面,当存储器元件300在“突发”模式下进行时,页面寄存器308的存取单元可更小,例如每页4B、8B、16B等,这可对应于存储体306或存储体组304的存储大小。如本文所用,“突发”模式可为存储器元件300的模式,在该模式下,存储器元件300处理存储器阵列301的存储体306或存储体组304上的高速同步读取操作310和编程/写入操作312。
因此,当在“突发”模式下运行时,页面寄存器308的子组或一部分可与存储器阵列301的存储体306或存储体组304相关联,并且可用于进行存储器单元302的存储体306或存储体组304上的存储操作命令,例如读取命令310或写入命令312。因此,页面寄存器308中未使用的可用存储空间可用于使存储器单元302的存储体306或存储体组304的不同存储操作排队、缓冲等。此外,可使多个不同存储操作在页面寄存器308中排队,并且在存储器元件300的存储器单元302的不同存储体306或存储体组304上同步进行。在一个实施方案中,可由单个状态机222管理存储器阵列301,该状态机管理每个存储体306或存储体组304的存储操作的排队和处理。在某些实施方案中,多个状态机222可独立地管理每个存储体306或存储体组304的存储操作的排队和处理。
图4描绘了存储管理模块150的一个实施方案。存储管理模块150可与上文参照图1描述的存储管理模块150基本上类似。在所描绘的实施方案中,存储管理模块150包括命令模块402、队列模块404和数据模块406,其在下文中更详细地描述。
在一个实施方案中,命令模块402被配置为接收与存储器元件300的存储位置(例如,存储器单元302)的存储体306相关联的一个或多个存储操作命令。如本文所用,存储操作命令可包括旨在触发在下述各项上的动作、活动等的命令:存储器元件300、存储器阵列301、存储体306、存储体组304、存储器单元302等。存储操作命令例如可包括读取命令、写入命令、程序刷新命令、扩展缓冲器刷新命令、更新刷新命令等。如上所述,命令模块402可从存储客户端116接收存储操作命令。
在一个实施方案中,命令模块402接收针对下述各项的存储操作命令:存储器元件300的存储器阵列301的存储器单元302的存储体306、存储器单元302的存储体组304等。在一些实施方案中,命令模块402接收一个或多个地址作为存储操作命令的一部分,这些地址对应于与存储操作相关联的存储器单元的存储体306。
在一个实施方案中,队列模块404被配置为通过确定与存储操作命令相关联的数据在页面寄存器308中的存储位置来使存储操作命令排队等待执行。如本文所用,页面寄存器308中的存储位置可包括一个或多个数据锁存器、数据寄存器等,其可使用地址、标识符等访问。在这种实施方案中,页面寄存器308中的存储位置可为页面寄存器308中的可用存储位置的子组、部分、分部等。例如,页面寄存器308(其可被配置为存储整页4kB的数据)中的存储位置可为与存储器元件300中的存储器单元302的存储体306相关联的数据锁存器的1B或2B组。
队列模块404可跟踪接收存储命令操作的顺序以及页面寄存器内存储这些存储命令操作的地址和/或数据的位置。例如,队列模块404可位于控制器(诸如状态机222)上或者为该控制器的一部分,该控制器确定与存储操作命令相关联的数据在页面寄存器308中的存储位置以及排队等待执行的多个所接收的存储操作命令的执行顺序。在另一个示例中,队列模块404可位于多个状态机222上或者为所述多个状态机的一部分,每个状态机管理与存储器元件300中的存储器单元302的不同存储体306或存储体组304相关联的页面寄存器308中的存储位置。在这种实施方案中,对于每个状态机222而言,队列模块404确定与存储操作命令相关联的数据在页面寄存器308中的存储位置,并且确定排队等待执行的所述多个所接收的存储操作命令的执行顺序。
在一个实施方案中,数据模块406被配置为接收与所接收的存储操作命令相关联的数据,并且将所接收的数据存储在页面寄存器308中的预定存储位置中,直到准备好执行存储操作命令为止。数据模块406例如可接收与写入命令相关联的数据,并且在写入命令排队等待执行时将该数据存储在页面寄存器308中的存储位置(例如,一个或多个数据锁存器)中。当选择写入命令以执行、提交等时,数据模块406可接着从页面寄存器308中的存储位置访问待写入到存储器阵列301的存储体306或存储体组304的数据,并且将该数据写入或编程到存储器阵列301。在另一个示例中,数据模块406可响应于读取请求命令而从存储器元件300的存储体306或存储体组304接收数据,并且可将读取的数据存储在页面寄存器308中的存储位置中,直到从队列选择读取请求命令以提交、完成、执行等为止。
因此,存储管理模块150提供动态排队系统,以使用页面寄存器308的部分来管理针对单独存储体306或存储体组304的多个存储操作。这样,可在存储器阵列301上例如在每个存储体组304内等同步进行多个存储操作。此外,通过使用页面寄存器308使存储操作排队,可避免在存储器阵列301的部分上执行不必要的存储操作,该部分与受存储操作影响的存储器阵列301的部分无关,该存储操作旨在用于单独存储体306或存储体组304而非整个存储器阵列301。
图5描绘了存储管理模块150的一个实施方案。存储管理模块150可与上文参照图1描述的存储管理模块150基本上类似。在所描绘的实施方案中,存储管理模块150包括命令模块402、队列模块404和数据模块406,其可与上文参照图4描述的命令模块402、队列模块404和数据模块406基本上类似。此外,在一个实施方案中,存储管理模块150包括指针管理模块502、重试模块504、复录模块506和高速缓存读取模块508,其在下文中更详细地描述。
在一个实施方案中,指针管理模块502将一个或多个指针、引用等保持到与存储操作命令相关联的数据、地址等在页面寄存器308中的存储位置。如本文所用,指针是对与存储操作相关联的数据或地址在页面寄存器308中的地址、存储器位置等的引用。在一些实施方案中,一个或多个指针包括指向与当前编程/写入操作相关联的数据的存储位置的指针、指向与排队的编程/写入操作相关联的数据的存储位置的指针、指向与读取操作相关联的数据的存储位置的指针等。在一个实施方案中,指针管理模块502可将各种指针导向到已预定义为特定存储操作命令(诸如读取命令和写入命令)的存储位置的、页面寄存器308中的特定锁存器、存储位置、地址、存储器位置等。
例如,指针管理模块502可将读取指针导向到页面寄存器308中的存储位置,该存储位置被指定用于从存储数据的存储器阵列301的存储体306或存储体组304读取的数据。在这种实施方案中,在提交或完成读取请求之前,例如在读取请求数据从页面寄存器308传输到存储客户端116之前,可存在排队等待处理的其他存储命令,但由于指针管理模块502将指针保持到页面寄存器308中的读取请求数据,并且由于页面寄存器308的仅一部分或子组正在用于存储读取请求数据,因此可使读取请求命令排队(例如通过被指向来跟踪)等待执行,并且在前一排队的存储操作命令完成时将其完成或提交。
在另一个示例中,指针管理模块502将当前写入指针保持到页面寄存器308中的存储位置,在此为当前正在处理或排队等待处理的写入或编程命令存储数据。此外,指针管理模块502将一个或多个排队或下一指针保持到页面寄存器308中的存储位置,在此为紧随其后有待处理的排队的写入或编程命令存储数据。例如,如上所述,页面寄存器308的特定锁存器、地址、存储器位置等可被定义为与存储器阵列301的存储体306或存储体组304相关联的读取数据和写入数据的存储位置。在一个特定示例中,如果页面寄存器308的三组锁存器(例如,三列八个、十六个、三十二个等8位锁存器)被指定为与例如对特定存储器存储体306的写入操作相关联的数据的存储位置,则指针管理模块502可将当前指针导向到第一组锁存器的地址,并且将下一/排队指针导向到第二组锁存器的地址。例如如下所述在写入操作未成功且需要重试的情况下,第三组锁存器可用作附加缓冲或溢出。
因此,在一个示例中,如果数据模块406接收写入请求的数据并且将该数据存储在页面寄存器308的第一组锁存器中,则指针管理模块502可将当前指针导向到第一组锁存器的地址以指示当前写入请求(例如,队列中的下一写入请求)的数据。如果在第一写入请求仍在排队时数据模块406接收另一个写入请求的数据,则数据模块406将数据存储在页面寄存器308的第二组锁存器中,并且指针管理模块502可将下一/排队指针导向到第二组锁存器的地址以指示下一写入请求的数据。因此,当使用当前指针指向的数据(例如,第一组锁存器中的数据)来执行写入请求时,指针管理模块502可将当前指针重新导向到第二组锁存器以指示下一写入请求的数据,该下一写入请求此时为当前写入请求。指针管理模块502随后可将下一/排队指针重新导向到第三组锁存器、重新导向到第一组锁存器、重新导向到NULL等,直到另一个写入请求排队为止。
此外,在一个实施方案中,指针管理模块502保持与每个指针相关联的有效性位,该有效性位指示存储在与指针相关联的存储位置处的页面寄存器308中的数据是否有效。例如,在读取请求操作期间,数据模块406可从存储器阵列301的存储体306接收数据,并且将该数据存储在页面寄存器308中的一组锁存器中。指针管理模块502可将读取指针导向到该组锁存器并且设置该组锁存器的有效性位,该有效性位指示存储在该组锁存器中的数据为有效的。一旦数据从页面寄存器读取(例如,传输到存储客户端116),指针管理模块502就可使有效性位无效、重置等以指示存储在该组锁存器中的数据不再有效,例如因为其为了满足读取请求而已进行了传输或处理。
在一个实施方案中,指针管理模块502将指针保持到数据的存储位置,该数据排队等待写入到存储器阵列301,但在编程/写入操作期间未成功写入到存储器元件300。例如,如果尝试对当前指针指向的数据进行写入操作,但出于某种原因(例如,程序错误、不完整程序等)而失败,则指针管理模块502可递增或重新导向当前指针和下一指针以指向与排队的写入操作相关联的数据的不同存储位置,从而使排队的数据准备好写入到存储体306或存储体组304。由于写入操作失败,指针管理模块502可能不重置有效性位,以使得可进行将数据写入到存储器阵列301的附加尝试。在这种实施方案中,指针管理模块502可将“未成功”指针导向到无法写入到存储器阵列301的数据,并且可设置“未成功”位以指示未成功指针正指向无法写入但需要写入到存储器阵列301的数据。
在一个实施方案中,重试模块504可尝试将由未成功指针基于设置的未成功位而指向的数据写入到存储器阵列301、写入到存储器阵列301的存储体306或存储体组304等。重试模块504可尝试将先前失败的数据写入到存储器阵列301,直到写入该数据、直到已满足阈值的写入尝试次数等。如果数据被成功写入到存储器阵列301,则指针管理模块502可重置未成功位并且重新导向未成功指针以指向NULL或另一个无效位置,直到写入请求的数据无法成功写入到存储器阵列301。
在一些实施方案中,如果未成功指针被导向到如有效性指针所指示的无法写入到存储器阵列301的有效数据,则在页面寄存器308中没有与存储器阵列301的存储体306或存储体组304相关联的可用存储位置的情况下,可针对新的写入操作以新数据盖写该数据。例如,如果页面寄存器的三组锁存器与存储体306或存储体组304相关联,并且当前指针指向含有有效数据的第一组锁存器,下一指针指向含有有效数据的第二组锁存器,且未成功指针指向含有已尝试写入到存储器阵列301的有效数据的第三组锁存器,则数据模块406可使用新数据盖写未成功指针指向的第三组锁存器中的数据。在这种实施方案中,数据模块406可向存储客户端发送通知、消息等以指示数据未成功写入到存储器阵列301。此外,在该实施方案中,指针管理模块502可更新未成功指针,以使得其不指向存储体306或存储体组304在页面寄存器308中的一组锁存器,直到再次发生失败的写入。
因此,如果未成功指针被导向到含有有效数据的存储位置,则当前指针和下一指针可在其余存储位置之间交替直到未成功指针指向的存储位置变为可用的。这样,页面寄存器308的子组可用作每个存储体306或存储体组304的存储操作队列,但不一定采用先进先出的方式。换句话讲,指针管理模块502可将指针导向到用于写入操作的数据,同时保持例如使用当前指针和下一指针接收写入操作的顺序;然而,如果未成功指针被导向到先前尝试写入到存储体306或存储体组304的有效数据,则重试模块504可尝试不按接收写入操作的顺序写入未成功指针引用的数据。
在一个实施方案中,复录模块506将写入指针(诸如当前或下一指针)重新导向到页面寄存器(例如,一组锁存器)的存储位置,该存储位置存储与读取请求命令相关联的数据,以使得可响应于接收对该数据的写入请求而将该数据“复录”到存储器阵列301的存储体306或存储体组304。这样,可通过简单地操纵页面寄存器308的读取和写入指针而非进行不必要的读取和写入,可将数据读取到页面寄存器并复录到存储器阵列301。
类似地,在一个实施方案中,高速缓存读取模块508将读取指针重新导向到写入指针(例如,当前或下一指针)指向的数据,以使得可响应于读取请求命令而从页面寄存器读取该数据,而非等待数据写入到存储器阵列301,然后从存储器阵列301回读该数据以满足读取请求命令。这样,可更快且更有效地操纵读取指针,以使得在将数据写入到存储器阵列301之前可从页面寄存器308读取排队等待写入到存储器阵列301的数据。
图6描绘了使用页面寄存器308的部分606来使存储器单元302的存储体306的存储操作命令排队的一个实施方案。在一个实施方案中,命令模块402接收存储操作命令。响应于接收存储操作命令,队列模块404确定与存储操作命令相关联的数据在页面寄存器308的部分606中的存储位置602。如上所述,页面寄存器308内的存储位置602可为页面寄存器308中的所有可用存储位置的子组、分部、部分等。页面寄存器308的子组606可与存储器阵列301内的存储器单元302的特定存储体306相关联。
在一个实施方案中,指针管理模块502保持指向页面寄存器308内的存储位置602的一个或多个指针604,这些存储位置指定用于存储与存储操作命令相关联的数据。例如,如果命令模块402接收读取请求命令,则指针管理模块502可确定哪个指针604是读取指针,例如被导向到存储位置0的指针604,该存储位置可已被指定为用于存储读取数据的存储位置602。数据模块406可从存储器阵列301中的存储体306接收读取请求的数据,并且可将数据存储在读取指针指向的存储位置0中。读取的数据可保留在存储位置0中,直到读取请求操作在存储操作队列中紧随其后有待处理(例如,可存在可在该特定读取请求命令之前处理的先前接收的读取或写入命令)。
在另一个示例中,命令模块402可接收写入命令以将数据写入到存储体306。指针管理模块502可确定指向页面寄存器308的部分606中的存储位置602的当前指针。如果当前指针正指向含有如有效性位所指示的有效数据(例如,排队等待处理的数据)的存储位置602,则指针管理模块502可检查下一/排队指针指向的存储位置。
在另外一个实施方案中,指针管理模块502保持提交位,该提交位在被设置时指示已接收到对当前指针所引用的数据的写入命令。在另外一个实施方案中,指针管理模块502响应于接收写入操作成功完成的指示而重置提交位。如果指针管理模块502确定写入操作失败或者未成功(例如,写入不完整),则指针管理模块502可设置未成功位,确保未成功指针引用由当前指针当前引用的数据,并且将当前指针和下一指针移位到页面寄存器308的部分606中的队列中的下一组数据。这样,通过保持未成功指针,重试模块504可在未来时间使用由未成功指针引用的数据来尝试写入操作,直到写入操作成功,直到完成阈值重试尝试次数等。在一些实施方案中,如果未设置未成功位,则未成功指针可指向与当前指针相同的存储位置、指向NULL位置等。
在一个实施方案中,当数据模块406接收新数据时,指针管理模块502确定该数据是应当存储在当前指针所引用的存储位置602中还是存储在下一指针所引用的存储位置中。为了进行该确定,指针管理模块502可检查与当前指针相关联的提交位和有效性位。如果为当前指针设置的有效性位指示当前指针所引用的数据有效,则数据模块406可将该数据存储在下一指针所引用的存储位置602中。类似地,如果设置的提交位指示正在使用当前指针所引用的数据执行写入操作,则数据模块406可将该数据存储在下一指针所引用的存储位置602中。在各种实施方案中,如果当前指针和下一指针或者一个或多个下一指针中的每一者含有如有效性位所指示的有效数据,并且页面寄存器308的部分606内没有可用存储位置602,则指针管理模块502和/或数据模块406可抛出、发送等错误消息以指示在存储数据并使数据排队等待写入到存储体306时发生错误。
此外,如上所述,图6所示的指针队列可不充当典型的先进先出队列。例如,读取指针可始终指向存储位置0,但当前指针、下一指针和未成功指针可在各种配置中指向存储位置2、4和6。在一个示例中,当前指针可引用存储位置2,并且下一指针可引用存储位置4。如果使用在当前指针所引用的存储位置2处的数据来执行写入操作,则当前指针可重新导向到存储位置4,并且下一指针可重新导向到存储位置6。然而,如果写入操作失败,则未成功指针可引用存储位置2。如果接收到对当前指针所引用的存储位置4中的数据的另一个写入操作,则当前指针可重新导向到存储位置6。如果存储位置2仍由未成功指针引用,则下一指针可重新导向到存储位置4。因此,指针管理模块502可将当前指针/下一指针/不可用指针导向和重新导向到页面寄存器308的部分606内的存储位置,而不按任何特定顺序,例如按对应于存储位置602的可用性的顺序,同时保持接收到写入操作的顺序;然而,如果先前未成功尝试写入操作,则重试模块504可尝试不按与当前指针/下一指针相关联的写入操作的顺序将该数据写入到存储体306。
图7描绘了用于使存储操作命令排队的方法700的一个实施方案。在一个实施方案中,方法700开始,并且命令模块402在702处接收与存储器阵列301的存储位置的存储体304相关联的存储操作命令。在某些实施方案中,队列模块404在704处通过确定与存储操作命令相关联的数据在页面寄存器308中的存储位置来使存储操作命令排队等待在存储体306上执行。页面寄存器308中的存储位置可包括页面寄存器308中的可用存储位置的子组。在另外一个实施方案中,数据模块406在706处将与存储操作命令相关联的数据存储在页面寄存器308中的确定的存储位置处,并且方法700结束。
图8描绘了用于使存储操作命令排队的方法800的一个实施方案。在一个实施方案中,方法800开始,并且命令模块402在802处接收读取操作(例如,读取请求操作)以从存储器阵列301的一个或多个存储体306读取数据。在一些实施方案中,数据模块406在804处从存储器阵列301的一个或多个存储体304读取读取请求的数据。
在一些实施方案中,队列模块406在806处确定页面缓冲器308中的存储位置,数据模块406可在此存储读取操作的数据。在一个实施方案中,指针管理模块502在808处更新读取指针以指向页面缓冲器308中的读取的数据的确定的存储位置。在各种实施方案中,指针管理模块502在810处设置读取的数据的有效性位,该有效性位指示读取的数据是有效数据。
在另外一个实施方案中,数据模块406在812处从页面缓冲器308中读取指针指向的存储位置读取读取的数据,并且将读取的数据转移、传输、复制、发送等到请求该数据的存储客户端116。在一个实施方案中,在812处从页面寄存器308读取读取的数据之后,指针管理模块502在814处重置有效性位,并且方法800结束。
图9A和图9B描绘了用于使存储操作命令排队的方法900的一个实施方案。在一个实施方案中,方法900开始,并且命令模块402在902处接收写入操作命令以将数据写入到存储器阵列301的一个或多个存储体306。在另外一个实施方案中,数据模块406在904处接收写入操作的数据,诸如待写入到存储器阵列301的数据和/或待写入该数据的存储器阵列301内的一个或多个地址。
在一些实施方案中,队列模块404在906处确定页面缓冲器308中的当前存储位置以用于使与写入请求相关联的数据排队。在另外一个实施方案中,指针管理模块502在908处更新当前指针和未成功指针以指向存储该数据的页面缓冲器308中的存储位置。在一个实施方案中,指针管理模块502在910处更新下一指针以指向与所接收的下一存储操作命令相关联的数据在页面缓冲器308中的下一可用存储位置。
在某些实施方案中,指针管理模块502在912处设置该数据的有效性位以指示当前指针指向的数据为有效的,例如该数据尚未处理。在一个实施方案中,数据模块406在914处尝试写入命令以将页面寄存器308中的数据写入到存储器阵列301。在某个实施方案中,指针管理模块502在916处确定写入当前指针指向的数据的尝试是否成功。
在一个实施方案中,如果写入成功,则指针管理模块502在930处通过以下方式更新当前指针和下一指针:将当前指针导向到下一指针当前正指向的页面寄存器308中的存储位置,并且将下一指针导向到下一可用存储位置或排队等待写入到存储器阵列301的下一数据。在一些实施方案中,指针管理模块502在932处为写入到存储器阵列301的页面缓冲器308中的数据重置有效性位,并且方法900结束。
在另一个实施方案中,如果指针管理模块502在916处确定写入当前指针指向的数据的尝试未成功,则指针管理模块502在918处设置未成功位,并且在920处将当前存储位置保存在未成功指针中。在一个实施方案中,如果在922处未接收到重试命令,则指针管理模块502在930处更新当前指针和下一指针,并且方法900继续,就像写入成功了一样。在另一个实施方案中,如果在922处从控制器244接收到重试命令,则重试模块504在924处重试将未成功指针指向的数据写入到存储器阵列301。
如果在926处得出重试模块504已成功在924处重试写入,则指针管理模块502在928处重置未成功位,在930处更新当前指针和下一指针,并且方法900继续。如果在926处得出重试模块504未能成功在924处重试写入,则不重置未成功位,并且方法900继续(例如,指针管理模块502在930处更新当前指针和下一指针,就像写入已成功一样,或在922处从控制器244接收另一个重试命令)。在某些实施方案中,控制器244可与重试模块504协调以继续在924处重试将数据写入到存储器阵列301,直到其成功、直到满足阈值的写入尝试次数等。
在各种实施方案中,使用页面寄存器308来缓冲与非易失性存储设备的存储器阵列301相关联的存储操作命令的装置可包括:命令模块402、队列模块404、指针管理模块502、非易失性存储设备接口139、非易失性存储器介质控制器126、存储客户端116、主机计算设备110、总线127、网络115、控制器(例如,管芯控制器220、状态机222、控制器244、设备驱动程序等)、感测放大器250、电压源、处理器111、其他逻辑硬件和/或存储在计算机可读存储介质上的其他可执行代码。其他实施方案可包括使用页面寄存器308来缓冲与非易失性存储设备的存储器阵列301相关联的存储操作命令的类似或等效装置。
在各种实施方案中,用于将存储操作命令的数据存储在页面寄存器308中的装置可包括:数据模块406、非易失性存储设备接口139、非易失性存储器介质控制器126、存储客户端116、主机计算设备110、总线127、网络115、控制器(例如,管芯控制器220、状态机222、控制器244、设备驱动程序等)、感测放大器250、电压源、处理器111、其他逻辑硬件和/或存储在计算机可读存储介质上的其他可执行代码。其他实施方案可包括用于将存储操作命令的数据存储在页面寄存器308中的类似或等效装置。
在各种实施方案中,用于针对存储操作的至少子组来处理存储在页面寄存器308中的数据的装置可包括:命令模块402、数据模块406、非易失性存储设备接口139、非易失性存储器介质控制器126、存储客户端116、主机计算设备110、总线127、网络115、控制器(例如,管芯控制器220、状态机222、控制器244、设备驱动程序等)、感测放大器250、电压源、处理器111、其他逻辑硬件和/或存储在计算机可读存储介质上的其他可执行代码。其他实施方案可包括用于针对存储操作的至少子组来处理存储在页面寄存器308中的数据的类似或等效装置。
本公开可体现为其他具体形式而不背离其实质或基本特征。所述实施方案将在所有方面被认为仅仅是示例性的而非限制性的。因此,本公开的范围由所附权利要求而不是前述描述所指示。在权利要求等同的含义和范围内的所有变化均包含在其范围内。
Claims (20)
1.一种装置,包括:
集成电路(“IC”)存储器元件,所述集成电路(“IC”)存储器元件被配置为:
接收与所述IC存储器元件的存储位置的存储体相关联的存储操作命令;
通过确定与所述存储操作命令相关联的数据在页面寄存器中的存储位置,使所述存储操作命令排队等待在所述存储位置的存储体上执行,所述页面寄存器中的所述存储位置包括所述页面寄存器中的可用存储位置的子组;以及
将与所述存储操作命令相关联的数据存储在所述页面寄存器中的所述确定的存储位置处。
2.根据权利要求1所述的装置,其中所述IC存储器元件被进一步配置为将一个或多个指针保持到与所述存储操作命令相关联的所述数据在所述页面寄存器中的所述存储位置。
3.根据权利要求2所述的装置,其中所述存储操作命令包括读取命令和编程命令中的一者,所述编程命令包括程序刷新命令、扩展缓冲器刷新命令和更新刷新命令中的一者或多者。
4.根据权利要求3所述的装置,其中所述一个或多个指针包括:
指向当前编程操作的数据的存储位置的指针;
指向排队编程操作的数据的存储位置的指针;和
指向读取操作的数据的存储位置的指针。
5.根据权利要求2所述的装置,其中所述一个或多个指针包括指向数据的存储位置的指针,所述数据的所述存储位置排队等待写入到所述IC存储器元件、但未成功写入到所述IC存储器元件。
6.根据权利要求5所述的装置,其中所述IC存储器元件被进一步配置为重试将所述指针指向的所述数据写入到所述IC存储器元件,直到满足预定的阈值重试次数。
7.根据权利要求5所述的装置,其中所述IC存储器元件被进一步配置为响应于接收重试存储操作命令和更新存储操作命令中的一者而重试将所述指针指向的所述数据写入到所述IC存储器元件。
8.根据权利要求2所述的装置,其中所述IC存储器元件被进一步配置为保持与每个指针相关联的有效性位,所述有效性位指示存储在与所述指针相关联的所述存储位置处的所述页面寄存器中的数据是否有效。
9.根据权利要求1所述的装置,其中所述IC存储器元件包括与所述页面寄存器的存储位置的多个子组相对应的存储位置的多个存储体,所述IC存储器元件使用存储在所述页面寄存器的所述多个子组中的数据来同时执行与存储位置的所述多个存储体相关联的多个存储操作命令。
10.根据权利要求1所述的装置,其中所述IC存储器元件被进一步配置为:
将读取指针导向到用于读取命令的数据的所述页面寄存器的存储位置;
在所述IC存储器元件的第一存储体上执行所述读取命令;
将写入指针重新导向到用于所述读取命令的所述数据的所述页面寄存器的所述存储位置;以及
将所述读取命令的所述数据写入到所述IC存储器元件的第二存储体。
11.一种系统,包括:
非易失性存储器介质,所述非易失性存储器介质包括页面缓冲器;和
控制器,所述控制器被配置为:
接收针对所述非易失性存储器介质的多个存储操作命令,其中所述多个存储操作命令中的一个存储操作命令用于所述非易失性存储器介质的多个子阵列中的一个子阵列;
确定所述页面缓冲器中的存储位置以用于并发存储与所述多个存储操作命令相关联的数据;以及
使用存储在所述页面缓冲器中的与所述至少两个存储操作命令相关联的数据来同时执行所述多个存储操作命令中的至少两个。
12.根据权利要求11所述的系统,其中所述控制器被进一步配置为响应于当前存储操作命令被处理而使存储操作命令排队等待执行,其中所述排队的存储操作命令的数据存储在与其上正在执行所述当前存储操作的所述非易失性存储器介质的子阵列相关联的所述页面缓冲器的存储位置中。
13.根据权利要求11所述的系统,其中针对所述多个存储操作命令中的每个存储操作命令,所述控制器被进一步配置为将一个或多个引用保持到与所述存储操作命令相关联的所述数据在所述页面缓冲器中的存储位置。
14.根据权利要求13所述的系统,其中所述多个存储操作命令包括读取命令和编程命令中的一者或多者,所述编程命令包括程序刷新命令、扩展缓冲器刷新命令和更新刷新命令中的一者或多者。
15.根据权利要求14所述的系统,其中所述一个或多个引用包括:
对当前编程操作的数据的存储位置的引用;
对排队编程操作的数据的存储位置的引用;和
对读取操作的数据的存储位置的引用。
16.根据权利要求13所述的系统,其中所述一个或多个引用包括对数据的存储位置的引用,所述数据的所述存储位置排队等待写入到所述非易失性存储器介质的子阵列、但未成功写入到所述非易失性存储器介质的所述子阵列。
17.根据权利要求16所述的系统,其中所述控制器被进一步配置为重试写入所述未成功引用指向的所述数据,直到满足预定的阈值重试次数。
18.根据权利要求16所述的系统,其中所述控制器被进一步配置为响应于接收重试存储操作命令和更新存储操作命令中的一者而重试写入所述未成功引用指向的所述数据。
19.根据权利要求13所述的系统,其中所述控制器被进一步配置为保持与每个引用相关联的有效性位,所述有效性位指示存储在与引用相关联的所述存储位置处的所述页面缓冲器中的所述数据是否有效。
20.一种装置,包括:
使用非易失性存储设备的页面寄存器来缓冲与所述非易失性存储设备的多个子阵列相关联的多个存储操作命令的装置;
用于将所述多个存储操作命令的数据存储在所述页面寄存器中的装置,其中所述存储操作命令中的每一者的数据小于所述页面寄存器的页面大小,由此使得所述多个存储操作命令中的每一者的数据并发存储在所述页面寄存器中;和
用于同时对存储在所述页面寄存器中的所述多个存储操作命令的至少子组的所述数据进行处理的装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662423129P | 2016-11-16 | 2016-11-16 | |
US62/423,129 | 2016-11-16 | ||
US15/410,746 | 2017-01-19 | ||
US15/410,746 US10552045B2 (en) | 2016-11-16 | 2017-01-19 | Storage operation queue |
PCT/US2017/049742 WO2018093442A1 (en) | 2016-11-16 | 2017-08-31 | Storage operation queue |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110088738A true CN110088738A (zh) | 2019-08-02 |
Family
ID=62107112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780056817.2A Pending CN110088738A (zh) | 2016-11-16 | 2017-08-31 | 存储操作队列 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10552045B2 (zh) |
JP (1) | JP2020502606A (zh) |
CN (1) | CN110088738A (zh) |
DE (1) | DE112017005782T5 (zh) |
WO (1) | WO2018093442A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109579220A (zh) * | 2018-10-15 | 2019-04-05 | 平安科技(深圳)有限公司 | 空调系统故障检测方法、装置、电子设备 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019045910A (ja) * | 2017-08-29 | 2019-03-22 | 東芝メモリ株式会社 | 半導体記憶装置 |
US10908986B2 (en) * | 2018-04-02 | 2021-02-02 | Sandisk Technologies Llc | Multi-level recovery reads for memory |
US10826990B2 (en) * | 2018-07-23 | 2020-11-03 | EMC IP Holding Company LLC | Clustered storage system configured for bandwidth efficient processing of writes at sizes below a native page size |
TWI660346B (zh) * | 2018-09-07 | 2019-05-21 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
KR20220135786A (ko) * | 2021-03-31 | 2022-10-07 | 에스케이하이닉스 주식회사 | 메모리 시스템에 포함된 복수의 메모리 장치에서 수행되는 동작에 대해 스케줄링하는 장치 및 방법 |
US11853174B1 (en) * | 2022-07-12 | 2023-12-26 | Dell Products L.P. | Multiple drive failure data recovery |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6286075B1 (en) * | 1998-11-16 | 2001-09-04 | Infineon Technologies Ag | Method of speeding up access to a memory page using a number of M page tag registers to track a state of physical pages in a memory device having N memory banks where N is greater than M |
US20050253858A1 (en) * | 2004-05-14 | 2005-11-17 | Takahide Ohkami | Memory control system and method in which prefetch buffers are assigned uniquely to multiple burst streams |
US6976122B1 (en) * | 2002-06-21 | 2005-12-13 | Advanced Micro Devices, Inc. | Dynamic idle counter threshold value for use in memory paging policy |
US20090113121A1 (en) * | 2004-02-26 | 2009-04-30 | Super Talent Electronics Inc. | Swappable Sets of Partial-Mapping Tables in a Flash-Memory System With A Command Queue for Combining Flash Writes |
US20130097369A1 (en) * | 2010-12-13 | 2013-04-18 | Fusion-Io, Inc. | Apparatus, system, and method for auto-commit memory management |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2246001B (en) | 1990-04-11 | 1994-06-15 | Digital Equipment Corp | Array architecture for high speed cache memory |
US7120075B1 (en) | 2003-08-18 | 2006-10-10 | Integrated Device Technology, Inc. | Multi-FIFO integrated circuit devices that support multi-queue operating modes with enhanced write path and read path queue switching |
WO2008101316A1 (en) | 2007-02-22 | 2008-08-28 | Mosaid Technologies Incorporated | Apparatus and method for using a page buffer of a memory device as a temporary cache |
WO2008115720A1 (en) | 2007-03-21 | 2008-09-25 | Sandisk Corporation | Methods for storing memory operations in a queue |
US7920423B1 (en) | 2007-07-31 | 2011-04-05 | Synopsys, Inc. | Non volatile memory circuit with tailored reliability |
US20090113116A1 (en) * | 2007-10-30 | 2009-04-30 | Thompson E Earle | Digital content kiosk and methods for use therewith |
US8473669B2 (en) | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
US8942248B1 (en) | 2010-04-19 | 2015-01-27 | Altera Corporation | Shared control logic for multiple queues |
US8462561B2 (en) | 2011-08-03 | 2013-06-11 | Hamilton Sundstrand Corporation | System and method for interfacing burst mode devices and page mode devices |
KR20130114486A (ko) | 2012-04-09 | 2013-10-17 | 삼성전자주식회사 | 씨에이유 별 병렬 큐를 가진 비휘발성 메모리 장치, 이를 포함하는 시스템, 및 비휘발성 메모리 장치의 동작 방법 |
KR102254099B1 (ko) | 2014-05-19 | 2021-05-20 | 삼성전자주식회사 | 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템 |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US20170123991A1 (en) * | 2015-10-28 | 2017-05-04 | Sandisk Technologies Inc. | System and method for utilization of a data buffer in a storage device |
US10467157B2 (en) * | 2015-12-16 | 2019-11-05 | Rambus Inc. | Deterministic operation of storage class memory |
-
2017
- 2017-01-19 US US15/410,746 patent/US10552045B2/en not_active Expired - Fee Related
- 2017-08-31 WO PCT/US2017/049742 patent/WO2018093442A1/en active Application Filing
- 2017-08-31 CN CN201780056817.2A patent/CN110088738A/zh active Pending
- 2017-08-31 JP JP2019513815A patent/JP2020502606A/ja active Pending
- 2017-08-31 DE DE112017005782.5T patent/DE112017005782T5/de not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6286075B1 (en) * | 1998-11-16 | 2001-09-04 | Infineon Technologies Ag | Method of speeding up access to a memory page using a number of M page tag registers to track a state of physical pages in a memory device having N memory banks where N is greater than M |
US6976122B1 (en) * | 2002-06-21 | 2005-12-13 | Advanced Micro Devices, Inc. | Dynamic idle counter threshold value for use in memory paging policy |
US20090113121A1 (en) * | 2004-02-26 | 2009-04-30 | Super Talent Electronics Inc. | Swappable Sets of Partial-Mapping Tables in a Flash-Memory System With A Command Queue for Combining Flash Writes |
US20050253858A1 (en) * | 2004-05-14 | 2005-11-17 | Takahide Ohkami | Memory control system and method in which prefetch buffers are assigned uniquely to multiple burst streams |
US20130097369A1 (en) * | 2010-12-13 | 2013-04-18 | Fusion-Io, Inc. | Apparatus, system, and method for auto-commit memory management |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109579220A (zh) * | 2018-10-15 | 2019-04-05 | 平安科技(深圳)有限公司 | 空调系统故障检测方法、装置、电子设备 |
CN109579220B (zh) * | 2018-10-15 | 2022-04-12 | 平安科技(深圳)有限公司 | 空调系统故障检测方法、装置、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
DE112017005782T5 (de) | 2019-10-24 |
US20180136840A1 (en) | 2018-05-17 |
WO2018093442A9 (en) | 2019-06-20 |
US10552045B2 (en) | 2020-02-04 |
WO2018093442A1 (en) | 2018-05-24 |
JP2020502606A (ja) | 2020-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110088738A (zh) | 存储操作队列 | |
US10649661B2 (en) | Dynamically resizing logical storage blocks | |
US10649657B2 (en) | Log-based storage for different data types in non-volatile memory | |
CN106708425B (zh) | 分布式多模存储管理 | |
US10102144B2 (en) | Systems, methods and interfaces for data virtualization | |
CN104572495B (zh) | 使用细粒度级别的重映射的混合主存储器 | |
JP2021006984A (ja) | 不揮発性メモリデータの書き込み管理 | |
CN107967124A (zh) | 一种分布式持久性内存存储系统及方法 | |
US20150262632A1 (en) | Grouping storage ports based on distance | |
CN108475232A (zh) | 使用xcopy和多逻辑条带的优化的基于主机的垃圾收集策略的高效实现方式 | |
US9870157B2 (en) | Command balancing and interleaving for write and reads between front end and back end of solid state drive | |
US10956071B2 (en) | Container key value store for data storage devices | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
KR102087495B1 (ko) | 저장 파라미터 변경 | |
CN105683953B (zh) | 支持加速数据库操作的数据存储设备 | |
CN114840138A (zh) | 基于存储器装置的区域的文件系统存储分配 | |
US11409467B2 (en) | Memory system and method of controlling nonvolatile memory and for reducing a buffer size | |
US11200178B2 (en) | Apparatus and method for transmitting map data in memory system | |
US20160124639A1 (en) | Dynamic storage channel | |
US10379950B2 (en) | Updating write-in-place storage devices | |
CN114730290A (zh) | 将变化日志表移动至与分区对准 | |
US20240143171A1 (en) | Systems, methods, and devices for using a reclaim unit based on a reference update in a storage device | |
US11698856B2 (en) | Maintaining sequentiality for media management of a memory sub-system | |
US20240103764A1 (en) | Control Table Set Determination In Storage Devices | |
CN103098034B (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190802 |
|
WD01 | Invention patent application deemed withdrawn after publication |