CN107025069A - 非易失性存储器的数据路径控制 - Google Patents

非易失性存储器的数据路径控制 Download PDF

Info

Publication number
CN107025069A
CN107025069A CN201710022600.1A CN201710022600A CN107025069A CN 107025069 A CN107025069 A CN 107025069A CN 201710022600 A CN201710022600 A CN 201710022600A CN 107025069 A CN107025069 A CN 107025069A
Authority
CN
China
Prior art keywords
data
internal
signal
buffer
storage operation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710022600.1A
Other languages
English (en)
Other versions
CN107025069B (zh
Inventor
欧阳婧雯
呂子宜
H.张
陈映彰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of CN107025069A publication Critical patent/CN107025069A/zh
Application granted granted Critical
Publication of CN107025069B publication Critical patent/CN107025069B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Abstract

公开了用于控制非易失性存储器的数据路径的设备、系统和方法。设备包括一个或多个存储器裸芯。存储器裸芯包括存储器核心。存储器核心包括非易失性存储器单元的阵列和内部数据管线。存储器裸芯包括存储与存储器核心的存储操作相关联的数据的缓冲器。存储器裸芯包括与存储器核心通信以启动存储操作的内部控制器。内部控制器可以响应于确定内部数据管线和浅黄色两者都满而延迟启动存储操作。

Description

非易失性存储器的数据路径控制
相关申请的交叉引用
本申请要求Jingwen Ouyang等的于2016年1月13日提交的标题为“DATA-PATHCONTROL WITH INTERNAL CLOCK AND ASYNCHRONOUS FIFO”的美国临时专利申请号62/278,227的权益,将其通过引用包括于此。
技术领域
本公开在各种实施例中涉及非易失性存储器,以及更加具体地涉及控制非易失性存储器的数据路径。
背景技术
非易失性存储器元件服务或者执行存储操作所用的时间量可能包括实际上感应或者改变非易失性存储单元的物理特性以读取或者写入数据花费的时间、在数据总线上传送数据花费的时间、和用于在非易失性存储器元件内内部地移动地址信息和/或数据、以用于填充存储操作的缓冲器(例如,通过预先取出读取数据)的在数据路径中的附加等待时间、等等。随着非易失性介质和数据总线的速度增加,实际上读取或者写入和传送花费更少的时间,且数据路径等待时间变为更重要的。另外,因为以更小的单元(例如,以更像快速字节可寻址易失性存储器和更不像缓慢的、扇区可寻址硬盘驱动器的方式)提供对数据的访问,因此数据路径等待时间的重要性进一步增加。例如,提供对大的数据块的访问的操作可能合理的等待时间段可能对于以小脉冲串(burst)提供对几字节数据的访问的操作而言太长了。
发明内容
呈现用于控制非易失性存储器的数据路径的设备。在一个实施例中,设备包括一个或多个存储器裸芯。在某个实施例中,存储器裸芯包括存储器核心。在另外的实施例中,存储器核心包括非易失性存储器单元的阵列和内部数据管线。在一个实施例中,存储器裸芯包括存储与存储器核心的存储操作相关联的数据的缓冲器。在某个实施例中,存储器裸芯包括与存储器核心通信以启动存储操作的内部控制器。在另外的实施例中,内部控制器响应于确定内部数据管线和缓冲器两者都满而延迟启动存储操作。
在另一实施例中,设备包括用于缓冲与存储器核心的存储操作相关联的数据的装置。在某个实施例中,存储器核心包括非易失性存储器单元的阵列和内部数据管线。在另外的实施例中,设备包括用于分派用于执行存储操作的地址的装置。在一个实施例中,设备包括用于响应于确定已经分派的地址的数目和已经完成的存储操作的数目之间的差值满足阈值而停止存储操作的地址的分派的装置。在另外的实施例中,阈值可以基于内部数据管线中的总级数且在用于缓冲数据的装置中。
呈现用于控制非易失性存储器的数据路径的方法。在一个实施例中,方法包括以队列存储数据。在某个实施例中,数据与存储器核心的存储操作相关联。在另外的实施例中,存储器核心包括非易失性存储单元的阵列和内部数据管线。在某些实施例中,方法包括确定队列和内部数据管线综合地是否包括空的级。在另外的实施例中,方法包括响应于确定队列和内部数据管线综合地(combined)包括空的级而开始存储操作。
附图说明
以下参考附图中图示的特定实施例包括更具体的描述。理解这些附图仅示出本公开的某些实施例且因此不考虑为限制本公开的范围,本公开通过使用附图以附加的专门性和细节描述和解释,在附图中:
图1是图示包括数据路径控制组件的系统的一个实施例的示意性框图;
图2是图示与装置控制器通信的非易失性存储器的一个实施例的示意性框图;
图3是图示同步器的一个实施例的电路图;
图4A是图示在一个实施例中的同步器的操作的时间线;
图4B是图示在另一实施例中的同步器的操作的时间线;
图5是图示用于控制非易失性存储器的数据路径的方法的一个实施例的示意性流程图;以及
图6是图示用于控制非易失性存储器的数据路径的方法的另一实施例的示意性流程图。
具体实施方式
本公开的方面具体表现为设备、系统、方法或者计算机程序产品。因此,本公开的方面可以以完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者组合软件和硬件方面的实施例的形式,其可以在这里全部总地称为“电路”、“模块”、“设备”或者“系统”。此外,本公开的方面可以以计算机程序产品的形式,该计算机程序产品具体表现为存储计算机可读和/或可执行程序代码的一个或多个非瞬时计算机可读存储介质。
本说明书中描述的许多功能单元已经标记为模块,以更具体地强调它们的实现独立性。例如,模块可以实现为包括定制VLSI电路或者门阵列的硬件电路,例如逻辑芯片的成品半导体、晶体管或者其他分立组件。模块也可以以可编程硬件器件、例如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等来实现。
模块也可以至少部分地以用于由各种类型的处理器执行的软件实现。可执行代码的标识模块例如可以包括计算机指令的一个或多个物理或者逻辑块,该计算机指令例如可以组织为对象、过程或功能。然而,标识模块的可执行不需要物理地位于一起,而是可以包括在不同位置存储的无联系的指令,其当逻辑地联接在一起时包括模块并实现模块的所述用途。
实际上,可执行代码的模块可以包括单个指令或者许多指令,且甚至可以在几个不同代码段上、不同程序当中、跨越几个存储器装置等分布。在模块或者模块的一部分以软件实现时,软件部分可以存储在一个或多个计算机可读和/或可执行存储介质上。可以使用一个或多个计算机可读存储介质的任何组合。计算机可读存储介质例如可以包括,但不限于电子、磁、光、电磁、红外、电阻性(例如,电阻性随机存取存储器(ReRAM)、存储器电阻器(Memristor)存储器、可编程金属化单元存储器、相变存储器(PCM、PCME、PRAM、PCRAM、双向统一存储器、硫族化物RAM或者C-RAM),等等),或者半导体系统、设备或装置,或者前述的任何适当的组合,但是将不包括传送信号。在本文档的上下文中,计算机可读和/或可执行存储介质可以是任何有形的和/或非瞬时介质,其可以包括或者存储用于由指令执行系统、设备、处理器或装置使用或者与指令执行系统、设备、处理器或装置结合地使用的程序。
用于进行本公开的方面的操作的计算机程序代码可以以一个或多个编程语言的任何组合所写,包括面向对象编程语言,例如Python、Java、Smalltalk、C++、C#、目标C等,传统的过程编程语言,例如“C”编程语言、脚本编程语言和/或其他类似的编程语言。程序代码可以部分地或者全部地在一个或多个用户的计算机和/或远程计算机上或者经数据网络等在服务器上执行。
如在此使用的,组件包括有形的、物理的非瞬时装置。例如,组件可以实现为包括定制VLSI电路、门阵列或者其他集成电路的硬件逻辑电路;例如逻辑芯片、晶体管或者其他分立器件的成品半导体;以及/或其他机械或者电气装置。组件也可以以可编程硬件器件实现,例如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等。组件可以包括一个或多个硅集成电路装置(例如,芯片、裸芯、裸芯平面、封装)或者其他分立的电气装置,通过印刷电路板(PCB)的电线等与一个或多个其他组件电气地通信。在某些实施例中,在这里描述的每一模块可以替代地由组件具体表现或者实现为组件。
遍及本说明书参考“一个实施例”、“实施例”或者类似的语言指的是关于实施例描述的特定特征、结构或者特性包括在本公开的至少一个实施例中。因此,遍及本说明书的字句“在一个实施例中”、“在实施例中”和类似的语言的出现可以,但是不必全都参考同一实施例,而是指“一个或多个而不是全部实施例”,除非明确地指定例外。术语“包括”、“包含”、“具有”和其变形指的是“包括但不限于”,除非明确地指定例外。项目的列举列表不暗示任何或者所有项目是互相排斥和/或互相包含的,除非明确地指定例外。术语“一”、“一个”和“该”也指“一个或多个”,除非明确地指定例外。
以下参考根据本公开的实施例的方法、设备、系统和计算机程序产品的示意性流程图和/或示意性框图描述本公开的方面。将理解示意性流程图和/或示意性框图的每个块以及示意性流程图和/或示意性框图中的块的组合可以由计算机程序指令实现。计算机程序指令可以提供给计算机或者其他可编程数据处理设备的处理器以产生机器,以使得经由处理器或者其他可编程数据处理设备执行的指令创建用于实现在示意性流程图和/或示意性框图的一个或多个块中指定的功能和/或动作的装置。
应注意在某些替代实现中,在块中标注的功能可以不以图中标注的次序发生。例如,取决于涉及的功能,连续示出的两个块可以事实上实质上同时地执行,或者多个块有时可能以相反次序执行。可以设想在功能、逻辑或者效果上等效于图示的图的一个或多个块或者其部分的其他步骤和方法。虽然在流程图和/或框图中可以采用各种箭头类型和线条类型,理解它们不限制相应的实施例的范围。例如,箭头可以指示在示出的实施例的列举的步骤之间的未指定持续时间的等待或者监控时段。
在下面的详细说明中,参考形成详细说明的部分的附图。前述概述仅是说明性的且不意在以任何方式限制。除上面描述的说明性的方面、实施例和特征之外,通过参考附图及其后的详细说明,另外的方面、实施例和特征将变得明显。每个图中元件的描述可以参考先前图的元件。相同的数字可以参考图中的相同元件,包括相同元件的替代实施例。
图1是包括用于非易失性存储装置120的数据路径控制组件150的系统100的一个实施例的框图。数据路径控制组件150可以是非易失性存储器介质控制器126、非易失性存储器元件123、装置驱动器等的一部分和/或与其通信。数据路径控制组件150可以在计算装置110的非易失性存储器系统102上操作,该计算装置110可以包括处理器111、易失性存储器112和通信接口113。处理器111可以包括一个或多个中央处理单元、一个或多个通用处理器、一个或多个专用处理器、一个或多个虚拟处理器(例如,计算装置110可以是主机内操作的虚拟机)、一个或多个处理器核心等。通信接口113可以包括一个或多个网络接口,其配置为将计算装置110和/或非易失性存储器控制器126通信地耦合通信网络115,例如因特网协议(IP)网络、存储区网络(SAN)、无线网络、有线网络等。
非易失性存储装置120在各种实施例中可以被设置在相对于计算装置110的一个或多个不同位置。在一个实施例中,非易失性存储装置120包括一个或多个非易失性存储器元件123,例如被设置在一个或多个印刷电路板、存储外壳和/或其他机械和/或电气支撑结构上的半导体芯片或者封装或者其他集成电路器件。例如,非易失性存储装置120可以包括一个或多个直插式存储器模块(DIMM)卡、一个或多个扩展卡和/或子系卡、固态驱动器(SSD)或者其他硬盘驱动装置,和/或可以具有另一存储器和/或存储形式因数(factor)。非易失性存储装置120可以与计算装置110的母板集成和/或安装在计算装置110的母板上,安装在计算装置110的端口和/或槽中,安装在不同计算装置110和/或网络115上的专用存储仪器上,经外部总线(例如,外部硬盘驱动器)与计算装置110通信,等等。
在一个实施例中,非易失性存储装置120可以被设置在处理器111的存储器总线上(例如,在与易失性存储器112相同的存储器总线上,在与易失性存储器112不同的存储器总线上,代替易失性存储器112,等等)。在另外的实施例中,非易失性存储装置120可以被设置在计算装置110的外围总线上,例如外围组件互连直达(PCI直达(Express)或者PCIe)总线、串行先进技术(SATA)总线、并行先进技术附加(PATA)总线、小型计算机系统接口(SCSI)总线、火线总线、光纤信道连接、通用串行总线(USB)、PCIe先进交换(PCIe-AS)总线,等等。在另一实施例中,非易失性存储装置120可以被设置在数据网络115上,例如以太网、无限带网络、经网络115的SCSI RDMA、存储区网络(SAN)、局域网(LAN)、例如因特网的广域网(WAN)、另一有线和/或无线网络115等。
计算装置110可以另外包括非瞬时的计算机可读存储介质114。计算机可读存储介质114可以包括配置为使得计算装置110(例如,处理器111)执行在这里公开的一个或多个方法的步骤的可执行指令。替代地或者另外地,数据路径控制组件150的一个或多个部分可以具体表现为在非瞬时存储介质114上存储的一个或多个计算机可读指令。
在一个实施例中,一个或多个非易失性存储器元件123可以配置为发送和接收用于非易失性存储装置120的数据操作的数据。例如,非易失性存储器元件123可以包括用于传递用于存储操作的命令和地址信息的第一端口、总线或者路径152、和用于传送用于存储操作的数据的第二端口、总线或者路径154。非易失性存储器元件123可以支持多个访问模式,例如可以提供全速和/或对非易失性存储器介质122的一个或多个唯一特征的访问的第一模式(例如,脉冲模式),可以提供不同访问协议的支持(例如,旧的访问协议,模拟不同类型的存储器介质122,例如NAND闪存等)的第二模式(例如,传统模式或者兼容模式)。例如,在一个实施例中,非易失性存储器介质122可以包括电阻性存储介质,例如ReRAM、Memristor存储器、可编程金属化单元存储器、相变存储器(PCM、PCME、PRAM、PCRAM、双向统一存储器、硫族化物RAM或者C-RAM)等,且非易失性存储器元件123可以提供两个访问模式,一个模式包括模拟NAND闪存访问协议(例如,NAND闪存翻转模式)等的传统或者兼容模式,以用于配置为使用传统访问协议的客户端116。
在第一模式(例如,脉冲模式、本地模式等)中,第一端口152可以接收用于在非易失性存储装置120和/或元件123上的数据操作的命令和/或地址信息,同时第二端口154发送数据操作的数据(例如,对于写入请求从客户端116接收数据,对于读取请求发送数据到客户端116,等等)。在第二模式(例如,传统模式、兼容模式等)中,第一端口152可以接收用于数据操作的命令和地址信息并发送用于操作的数据(例如,以使得第二端口154不用于第二模式中)。
在示出的实施例中,非易失性存储器系统102包括数据路径控制组件150。在一个实施例中,数据路径控制组件150包括存储与存储器核心的存储操作相关联的数据的缓冲器,其中存储器核心包括非易失性存储器单元的阵列和内部数据管线。在另外的实施例中,数据路径控制组件150包括与存储器核心通信以启动存储操作的内部控制器。内部控制器可以响应于确定内部数据管线和缓冲器两者都满而延迟启动存储操作。总的来说,在各种实施例中,如果缓冲器对于存储操作的数据过满则延迟存储操作的启动可以防止与缓冲器溢出相关联的问题,例如数据损坏。在另外的实施例中,如果缓冲器和内部管线两者都满则延迟启动存储操作允许内部管线用作缓冲器的扩展。使用内部管线作为缓冲器的扩展可以通过向缓冲器数据提供附加空间而使得溢出更不可能,同时避免将与向缓冲器添加级相关联的等待时间和裸芯上面积增大。
在一个实施例中,数据路径控制组件150可以包括一个或多个非易失性存储装置120的逻辑硬件,例如非易失性存储器介质控制器126、非易失性存储器元件123、装置控制器、现场可编程门阵列(FPGA)或者其他可编程逻辑、用于FPGA或者其他可编程逻辑的固件、用于在微控制器上执行的微代码、专用集成电路(ASIC),等等。在另一实施例中,数据路径控制组件150可以包括在计算机可读存储介质114上存储以用于在处理器111上执行的可执行软件代码,例如装置驱动器等。在另外的实施例中,数据路径控制组件150可以包括可执行软件代码和逻辑硬件两者的组合。
在一个实施例中,非易失性存储器元件123配置为经由总线125等从装置驱动器或者其他可执行应用接收存储请求。非易失性存储器元件123可以另外配置为经由总线125向/从装置驱动器和/或存储客户端116传送数据。因此,在一些实施例中,非易失性存储器元件123可以包括和/或与一个或多个直接存储器访问(DMA)模块、远程DMA模块、总线控制器、桥接器、缓冲器等通信以促进存储请求和关联数据的传送。在另一实施例中,非易失性存储器元件123可以从存储客户端116接收作为API呼叫的存储请求,作为IO-CTL命令,等等。
根据各种实施例,非易失性存储器控制器126可以管理一个或多个非易失性存储装置120和/或非易失性存储器元件123。一个或多个非易失性存储装置120可以包括记录、存储器和/或存储装置,例如布置和/或分区为多个可寻址介质存储位置的一个或多个固态存储装置和/或一个或多个半导体存储装置。如在此使用的,介质存储位置指的是存储器的任何物理单元(例如,非易失性存储装置120上的任意量的物理存储介质)。存储器单元可以包括,但不限于:页、存储器划分、块、扇区、物理存储位置的汇集或者集合(例如,逻辑页、逻辑块),等等。
在某些实施例中,装置驱动器和/或非易失性存储器介质控制器126可以向存储客户端116呈现逻辑地址空间134。如在此使用的,逻辑地址空间134指的是存储器资源的逻辑表示。逻辑地址空间134可以包括多个逻辑地址(例如,逻辑地址的范围)。如在此使用的,逻辑地址指的是用于参考存储器资源(例如,数据)的任何标识符,包括但不限于:逻辑块地址(LBA)、圆柱/报头/扇区(CHS)地址、文件名、对象标识符、i节点(inode)、全世界唯一标识符(UUID)、全球唯一标识符(GUID)、散列码、签名、索引项、范围、程度,等等。
非易失性存储装置120的装置驱动器可以保存元数据135,例如逻辑到物理地址映射结构,以将逻辑地址空间134的逻辑地址映射到一个或多个非易失性存储装置120上的介质存储位置。装置驱动器可以配置为向一个或多个存储客户端116提供存储服务。存储客户端116可以包括在计算装置110上操作的本地存储客户端116和/或可经由网络115和/或网络接口113访问的存储客户端116。存储客户端116可以包括,但不限于:操作系统、文件系统、数据库应用、服务器应用、内核级处理、用户级处理、应用等。
装置驱动器可以通信地耦合到一个或多个非易失性存储装置120。一个或多个非易失性存储装置120可以包括不同类型的非易失性存储器装置,包括但不限于:固态存储装置、半导体存储装置、SAN存储资源,等等。一个或多个非易失性存储装置120可以包括一个或多个各个非易失性存储器介质控制器126和非易失性存储器介质122。装置驱动器可以提供经由传统的块I/O接口131对一个或多个非易失性存储装置120的访问。另外,装置驱动器可以通过SCM接口132提供对增强功能性的访问。元数据135可以用于管理和/或跟踪通过块I/O接口131、SCM接口132、高速缓冲接口133或者其他有关接口中的任意一个执行的数据操作。
高速缓冲接口133可以暴露可经由非易失性存储装置120的装置驱动器访问的高速缓冲特定特征。此外,在一些实施例中,呈现给存储客户端116的SCM接口132提供对由一个或多个非易失性存储装置120和/或一个或多个非易失性存储器介质控制器126实现的数据变换的访问。
装置驱动器可以通过一个或多个接口向存储客户端116呈现逻辑地址空间134。如上所述,逻辑地址空间134可以包括多个逻辑地址,每个逻辑地址对应于一个或多个非易失性存储装置120上的各个介质位置。装置驱动器可以保存元数据135,该元数据135包括逻辑地址和介质位置之间的任意到任意映射,等等。
装置驱动器可以进一步包括和/或与非易失性存储器装置接口139通信,该非易失性存储器装置接口139配置为经总线125向一个或多个非易失性存储器装置120传送数据、命令和/或查询,总线125可以包括,但不限于:处理器111的存储器总线、外围组件互连直达(PCI直达或者PCIe)总线、串行先进技术附加(ATA)总线、并行ATA总线、小型计算机系统接口(SCSI)、火线、光纤信道、通用串行总线(USB)、PCIe先进交换(PCIe-AS)总线、网络115、无限带(Infiniband)、SCSI RDMA,等等。非易失性存储器装置接口139可以使用一个或多个输入输出控制(IO-CTL)命令、一个或多个IO-CTL命令扩展、远程直接存储器访问等与一个或多个非易失性存储器装置120通信。
通信接口113可以包括一个或多个网络接口,该一个或多个网络接口配置为将计算装置110和/或非易失性存储器控制器126通信地耦合到网络115和/或一个或多个远程、网络可访问的存储客户端116。存储客户端116可以包括在计算装置110上操作的本地存储客户端116和/或可经由网络115和/或网络接口113访问的存储客户端116。非易失性存储器控制器126是一个或多个非易失性存储器装置120的一部分和/或与一个或多个非易失性存储器装置120通信。虽然图1示出单个非易失性存储器装置120,本公开不限于此,且可以适于包括许多非易失性存储器装置120。
非易失性存储器装置120可以包括非易失性存储器介质122的一个或多个元件123,其可以包括但不限于:ReRAM、Memristor存储器、可编程金属化单元存储器、相变存储器(PCM、PCME、PRAM、PCRAM、双向统一存储器、硫族化物RAM或者C-RAM)、NAND闪存存储器、NOR闪存存储器、纳米随机存取存储器(纳米RAM或者NRAM)、纳米晶基于线路的存储器、基于硅氧化物的子10纳米工艺存储器、石墨烯存储器、硅氧化物-氮氧化物-硅(SONOS)、可编程金属化单元(PMC)、导电桥接RAM(CBRAM)、磁阻RAM(MRAM)、磁存储介质(例如,硬盘、磁带)、光存储介质,等等。在某些实施例中,非易失性存储器介质122的一个或多个元件123包括存储类存储器(SCM)。
虽然例如NAND闪存之类的传统技术可以是块和/或页可寻址的,在一个实施例中,存储类存储器是字节可寻址的。在另外的实施例中,存储类存储器可以比NAND闪存更快速和/或具有更长的寿命(例如,耐久性);可以比DRAM具有更低成本,使用更小的功率和/或具有更高的存储密度;或者当与其他技术相比时提供一个或多个其他益处或者改进。例如,存储类存储器可以包括下列的一个或多个非易失性存储器元件123:ReRAM、Memristor存储器、可编程金属化单元存储器、相变存储器、纳米RAM、纳米晶基于线路的存储器、基于硅氧化物的子10纳米工艺存储器、石墨烯存储器、SONOS存储器、PMC存储器、CBRAM、MRAM和/或其变形。
虽然非易失性存储器介质122在这里被称为“存储介质”,在各种实施例中,非易失性存储器介质122可以更一般地包括能够记录数据的一个或多个非易失性记录介质,其可以被称为非易失性存储器介质、非易失性存储介质等。另外,在各种实施例中,非易失性存储器装置120可以包括非易失性记录装置、非易失性存储器装置、非易失性存储装置等。
非易失性存储器介质122可以包括一个或多个非易失性存储器元件123,其可以包括但不限于:芯片、封装、平面、裸芯等。非易失性存储器介质控制器126可以配置为管理非易失性存储器介质122上的数据操作,且可以包括一个或多个处理器、可编程处理器(例如,FPGA)、ASIC、微控制器等。在一些实施例中,非易失性存储器介质控制器126配置为在非易失性存储器介质122上存储数据和/或从非易失性存储器介质122读取数据,以向/从非易失性存储器装置120传送数据,等等。
非易失性存储器介质控制器126可以通过总线127的方式通信地耦合到非易失性存储器介质122。总线127可以包括用于向/从非易失性存储器元件123传递数据的I/O总线。总线127可以另外包括用于向非易失性存储器元件123传递寻址及其他命令和控制信息的控制总线。在一些实施例中,总线127可以并行地将非易失性存储器元件123通信地耦合到非易失性存储器介质控制器126。该并行访问可以允许作为组管理非易失性存储器元件123,形成逻辑存储器元件129。逻辑存储器元件可以分区为各个逻辑存储器单元(例如,逻辑页)和/或逻辑存储器划分(例如,逻辑块)。逻辑存储器单元可以通过逻辑地组合每一非易失性存储器元件的物理存储器单元而形成。
非易失性存储器控制器126可以包括和/或与在计算装置110上执行的装置驱动器通信。装置驱动器可以经由一个或多个接口131、132和/或133向存储客户端116提供存储服务。在一些实施例中,装置驱动器提供块-装置I/O接口131,通过该接口,存储客户端116执行块级I/O操作。替代地,或者另外地,装置驱动器可以提供存储类存储器(SCM)接口132,其可以向存储客户端116提供其他存储服务。在一些实施例中,SCM接口132可以包括对块装置接口131的扩展(例如,存储客户端116可以通过对块装置接口131的扩展或者添加来访问SCM接口132)。替代地,或者另外地,可以提供SCM接口132作为分开的API、服务和/或库。装置驱动器可以另外配置为提供用于使用非易失性存储器系统102高速缓冲数据的高速缓冲接口133。
装置驱动器可以另外包括非易失性存储器装置接口139,该非易失性存储器装置接口139配置为经总线125向非易失性存储器介质控制器126传送数据、命令和/或查询,如上所述。
图2示出与装置控制器126通信的非易失性存储器裸芯202的一个实施例。装置控制器126可以实质上类似于上面关于图1描述的非易失性存储器介质控制器126。在一个实施例中,装置控制器126可以包括用于包括非易失性存储器元件123的存储装置的硬件控制器。在另一实施例中,装置控制器126可以包括用于包括非易失性存储器元件123的存储装置的装置驱动器,且装置驱动器可以包括逻辑硬件和/或在一个或多个计算机可读存储介质上存储的可执行代码。非易失性存储器裸芯202可以实质上类似于上面关于图1描述的非易失性存储器元件123。在各种实施例中,裸芯202可以指包括至少一个核心200的集成电路。在一个实施例中,这种集成电路可以是包括多个裸芯平面和/或层的三维集成电路元件,但是仍然可以被称为裸芯202。虽然在图2中示出单个非易失性存储器裸芯202,但是装置控制器126可以耦合到非易失性存储器装置120的非易失性存储器元件123中的多个非易失性存储器裸芯202或者与其通信。
在示出的实施例中,装置控制器126经由用于命令和地址信息的第一端口、总线或者路径152和用于传送数据的第二端口、总线或者路径154耦合到裸芯202,该第一端口、总线或者路径152和第二端口、总线或者路径154可以实质上类似于上面关于图1描述的端口、总线或者路径152、154。在示出的实施例中,裸芯202包括核心200和内部控制器250。在示出的实施例中,内部控制器250包括数据路径控制组件150、缓冲器252和内部总线驱动器258。在各种实施例中,内部控制器250可以是存储器裸芯202内部的控制器(例如,裸芯上控制器,与在存储器裸芯202外部的装置控制器126不同)。装置控制器126可以选择裸芯202(例如示出的裸芯202或者另一裸芯202)作为存储操作的目标,且可以与所选的裸芯202的内部控制器250通信,以发送命令和地址信息以及传送(例如,发送或者接收)关于所选的裸芯202的存储操作的数据。
在各种实施例中,核心200包括非易失性存储器单元的阵列210(二维或者三维)和内部数据管线212。内部控制器250与核心200通信以使用核心200的单元的阵列210执行存储操作,例如读取、写入、擦除等。在某些实施例中,“单元”可能指的是核心200的存储器或者存储设备的最小或者基本物理单元,且可能被可互换地称为“存储单元”、“存储器单元”等。例如,单元可以是NAND闪存存储器的浮置栅极晶体管,电阻性存储器的memristor等。因此,在另外的实施例中,核心200的单元的阵列210可以是二维网格、三维块、组、或者其他类似的单元集合,其中数据可以物理地存储以用于短期存储器使用、长期存储使用等。在某些实施例中,核心200除阵列210之外可以包括另外的组件或者外围组件,例如字线驱动器、用于位线的传感放大器、存储从阵列210读取或者写入到阵列210数据的锁存器,等等。
在各种实施例中,内部数据管线212可以是核心200内部的数据管线(例如,邻近或者接近于阵列210的行或者列)。内部数据管线212可以包括临时存储写入到阵列210或者从阵列210读取的数据的存储电路、元件或组件。例如,在一个实施例中,数据可以写入到位线上的阵列210或者从该阵列210读取,且位线可以连接到锁存器,该锁存器存储将经由位线写入的位或者接收已经经由位线读取的位。在另外的实施例中,在阵列210的每个单元存储多个位(例如,通过将存储电压、存储阻抗等的范围划分为四个、八个或者另一数目的状态),位线可以耦合到用于读取或者写入数据的多个位到阵列210中的单元的多个锁存器。在提供对阵列210的块或者页级访问的传统模式中(例如,以512B页、4KiB页等),耦合到位线的锁存器可以存储一个或多个页的数据,且可以被称为页寄存器缓冲器。在以4字节、8字节等的脉冲串提供对阵列210的字节可寻址访问的脉冲模式中(例如,在处理器寄存器、存储器总线的宽度等),具有用于少量页的空间的页寄存器缓冲器可以包括用于临时存储或者排列大量存储器脉冲串的空间。内部数据管线212可以包括页寄存器缓冲器的锁存器,更小数目的锁存器(例如,对于不提供页或者块可寻址的传统模式的核心200)、附加的临时存储电路或组件,等等。
在某些实施例中,内部数据管线212(或者缓冲器252)的“级”可以指的是能够缓冲用于一个存储操作的数据的锁存器、寄存器或者其他存储电路或元件的区域、集合或者分组。例如,如果存储操作读取或者写入数据页,级能够存储一个页。因此,在另外的实施例中,内部数据管线212中的级的数目高效地是可以由内部数据管线212缓冲的存储操作的数目。在提供不同大小的存储操作的一些实施例中(例如,在块可寻址传统模式和字节可寻址脉冲模式中),管线212中的级的数目可能基于存储操作的大小而变化。例如,提供页级操作的一个级的数据管线212可以提供用于更小的数据脉冲的多个级。在示出的实施例中,内部数据管线212包括三级。但是,内部数据管线212在另一实施例中可以提供更大或者更小的级数。
在各种实施例中,缓冲器252存储、缓冲或者排列与存储器核心200的存储操作相关联的数据。在某些实施例中,存储操作可以包括读取操作、写入操作、编程操作、擦除操作等。与存储操作相关联的数据可以包括用于写入操作的要写入到核心200的数据,用于读取操作的要从核心200读取的数据,等等。在某些实施例中,缓冲器252可以保持数据的先进先出(FIFO)次序,以使得以请求读取操作的次序存储用于读取操作的数据,以从装置控制器126发送数据的次序存储用于写入操作的数据等,且缓冲器252可以被称为FIFO或者队列。在示出的实施例中,存储器裸芯202包括一个缓冲器252。在另一实施例中,存储器裸芯202可以提供多个缓冲器252,例如用于读取操作的第一缓冲器252和用于写入操作的第二缓冲器252。
在各种实施例中,缓冲器252可以包括数据的存储位置的集合,例如寄存器、锁存器、一系列易失性存储器、环形缓冲器、FIFO电路等。就像核心200的内部数据管线212那样,缓冲器252的“级”可以指能够缓冲一个存储操作的数据的缓冲器252的区域、集合、分组、或者锁存器、寄存器、存储器位置的区域,或者其他存储电路或元件。在在示出的实施例中,缓冲器252包括四级,但是在另一实施例中的缓冲器252可以包括更大或者更小的级数。
在一个实施例中,内部控制器250经由命令/地址端口152和数据端口154通信,以接收命令和地址信息并传送核心200上的存储操作的数据。在各种实施例中,内部控制器250可以指裸芯202上的组件、控制/操作逻辑、组件的集合等,该裸芯202接收命令和/或地址信息,传送数据到或者从装置控制器126传送数据,传递命令、地址和/或数据到一个或多个核心200等。
在示出的实施例中,内部控制器250经由命令/地址端口152接收存储操作的命令和地址信息。在某些实施例中,命令和地址信息可以包括命令,例如读取命令、写入命令、编程命令、擦除命令、状态查询命令和核心200支持的任何其他命令,和对应于命令的地址,例如写入数据的地址,读取数据的地址等。内部控制器250可以从装置控制器126接收命令和地址信息。例如,装置控制器126可以使用命令/地址端口152发送命令和地址信息。
在各种实施例中,内部控制器250可以将来自装置控制器126的命令和地址信息解码或者转换为核心200使用的格式。例如,在一个实施例中,内部控制器250的命令/地址解码器可以提供地址接口以在由主机或者装置控制器126使用的地址和由核心200使用的硬件地址之间转换。在某个实施例中,内部控制器250可以缓冲或者排列命令和地址信息,以将用于存储操作的命令和地址信息匹配缓冲器252中的相关联的数据。在某些实施例中,内部控制器250可以使用数据路径控制组件150以从装置控制器126接收用于存储操作的命令和地址信息,且分派地址到核心200以启动存储操作。
在一个实施例中,内部控制器250使用内部总线驱动器258以传送数据到核心200或者从核心200传送数据(经由缓冲器252),且使用数据端口154传送数据到装置控制器126或者从装置控制器126传送数据。在某些实施例中,内部总线驱动器258可以串行化或者解串行化数据以在不同的内部或者外部数据总线宽度之间转换。在一个实施例中,内部总线驱动器258可以包括或者与缓冲器252协作以控制内部总线上在缓冲器252和核心200之间的数据流。在另外的实施例中,内部总线驱动器258可以与数据路径控制组件150协作以协调存储操作的地址和数据。
数据路径控制组件150可以实质上类似于上面关于图1描述的数据路径控制组件150。在各种实施例中,内部控制器250使用数据路径控制组件150以与存储器核心200通信以启动存储操作。在某些实施例中,数据路径控制组件150发送控制信息到内部总线驱动器258,以控制存储操作的数据流、启动命令或操作、分派地址等。在各种实施例中,启动操作可以指以任何方式开始、起动或者启动操作。例如,在一个实施例中,内部控制器250可以通过分派地址到核心200以用于执行操作来启动操作。
对于启动和执行读取操作的实例,在一个实施例中,数据路径控制组件150可以经由命令/地址端口152接收命令和地址信息。数据路径控制组件150可以通过经由内部地址总线286将用于读取操作的地址发送(或者通过使用内部总线驱动器258发送)到核心200来启动读取操作。核心200可以通过感应或者检测阵列210的单元中存储的数据值来执行读取操作,且可以使用内部数据管线212输出数据。核心200可以经由内部数据总线288发送所读取的数据到缓冲器252。在图2中,为了可视化地址和数据流的方便起见分开地示出内部地址和数据总线286、288。但是,在某些实施例中,内部地址总线286和内部数据总线288可以是能够发送地址和数据的单个内部总线。装置控制器126可以经由数据端口154从缓冲器252检索所读取的数据。在某些实施例中,内部总线驱动器258可以控制经由内部总线在核心200和缓冲器252之间的数据流、和/或在缓冲器252和装置控制器126之间的数据流。在另外的实施例中,装置控制器126可以经由数据端口154提供用于控制数据流的外部时钟信号282(例如,由装置控制器126或者存储器裸芯202外部的另一时钟信号发生器生成的)。
对于启动和执行写入操作的实例,在一个实施例中,数据路径控制组件150可以经由命令/地址端口152接收命令和地址信息。装置控制器126可以经由数据端口154发送要写入到缓冲器252的数据。可以根据由装置控制器126提供的外部时钟信号282控制从装置控制器126到缓冲器252的数据传送。数据路径控制组件150可以与内部总线驱动器258协作以将地址匹配到用于写入操作的数据,且通过分别经由内部地址总线286和内部数据总线288(或者配置为传送地址和数据的单个内部总线)发送地址和数据到核心200来启动操作。核心200可以在核心200的内部数据管线212上从缓冲器252接收数据,且可以通过改变或者更新由阵列210的单元数据值来写入数据到阵列210。
虽然在图2中仅示出一个外部时钟信号282,在某些实施例中,装置控制器126可以提供用于控制存储器裸芯202的多于一个外部时钟或者选通信号282。例如,在一个实施例中,读取使能选通(用于读取)或者数据选通(用于写入)可以控制经由数据端口154传送的数据的速度。例如,如果数据端口154是八位宽,可以在读取使能选通或者数据选通的四个时钟周期中传送数据的64位脉冲(例如,八个传送,使用两倍数据速率信令)。在另外的实施例中,装置控制器126可以在读取使能和数据选通的频率的四分之一提供另外的外部时钟信号,以使得另外的外部时钟信号的一个时钟周期对应于在装置控制器126和缓冲器252之间传送一个存储操作的数据所用的时间。(类似地,如果另一大小或者在不同宽度不同总线上的数据脉冲占用比读取使能或者数据选通的四个时钟周期更多或者更少的时间,则可以通过适当地划分允许读出或者数据选通频率来提供每个数据脉冲循环一次的外部时钟信号)。
某些类型的非易失性存储器裸芯202可以使用用于数据传送的同步缓冲器252,其中核心200和缓冲器252之间的数据传送、和缓冲器252和装置控制器126(因为它在裸芯202的外部在这里也称为“外部”控制器)之间的数据传送由同一时钟信号(例如,外部时钟信号282)控制。例如,缓冲器252可以是具有匹配其输出频率的输入频率的同步FIFO缓冲器。但是,使用同步缓冲器可以以几种方式引入等待时间。例如,可以根据外部时钟信号282控制存储操作的整个内部路径,包括内部控制器250启动存储操作,核心200执行存储操作和用于存储操作的核心200和缓冲器252之间的数据传送,但是存储操作的整个内部路径能够以更快速度或者更高时钟频率运行。缓冲器252的大小或者级数可以增加以补偿内部数据路径的增加的等待时间,但是增加级数可以增加缓冲器252的片上区域。另外,因为用于存储操作的数据以相同速度进入和离开同步缓冲器,在数据传送到缓冲器252之外之前(例如,预先取出读取数据),附加等待时间可以与预填充缓冲器级相关联,如果级数也增加则附加等待时间可能进一步增加。
代替地,在某个实施例中,裸芯202的内部操作,包括内部控制器250启动存储操作、核心200执行存储操作和用于存储操作的在核心200和缓冲器252之间的数据传送可以根据存储器裸芯202的内部时钟信号来控制。可以由内部控制器250或者裸芯202上的其它组件中包括的时钟发生器电路提供内部时钟信号。如果信号、总线、通道、操作或组件与内部时钟信号同步或者根据内部时钟信号控制,则它们可以被称为处于“内部时钟域”,且如果它们与外部时钟信号282同步或者根据外部时钟信号282控制,则它们可以相应地被称为处于“外部时钟域”。
在图2中,黑色(填充的)箭头示出内部时钟域中的信息流,且白色(未填充的)箭头示出外部时钟域中的信息流。因此,在示出的实施例中,根据内部时钟信号(例如,在内部时钟域中的)控制的操作包括内部控制器250启动存储操作(例如,使用数据路径控制组件150以经由内部总线286发送地址),核心200执行存储操作和用于存储操作的在核心200和缓冲器252之间的数据传送(例如,如使用内部总线288由内部总线驱动器258控制的)。相反地,根据外部时钟信号282控制的(例如,在外部时钟域中的)在示出的实施例中的操作包括经由数据端口154在缓冲器252和外部控制器126之间的数据传送,且外部控制器126经由命令/地址端口152发送命令和地址信息。
在某些实施例中,与使用外部时钟信号282控制内部操作相比,使用内部时钟信号控制内部操作可以减小内部数据路径的等待时间。例如,对于读取操作,发送地址到核心200,在核心200内(例如,在内部数据管线212内)移动数据、且传送读取数据到缓冲器252可以向从阵列210实际读取数据所用的时间增加四个时钟周期。裸芯202能够在少至44ns执行那些操作,但是如果操作以(例如)15ns的时钟周期在外部时钟域中发生,四个时钟周期可能代替仅44ns向数据路径增加60ns的等待时间。相对地,如果使用具有12.5ns时段的内部时钟,相同的四个时钟周期可以仅增加50ns的等待时间到数据路径。为了说明性和非限制目的公开内部和外部时钟周期、用于执行操作的时钟周期数目等。在另一实施例中,虽然仍然使用内部时钟信号以减小等待时间,但时钟和裸芯速度可能不同。
在一个实施例中,内部时钟信号独立于外部时钟信号282。如果时钟信号与其他时钟信号分开地生成、独立于其他时钟信号或者不参考其他时钟信号,则时钟信号在这里可以被称为“独立于”另一时钟信号。例如,可以生成独立的内部时钟信号而不参考外部时钟信号282。作为另一实例,内部时钟信号的时钟速度、时段或者频率可以基于裸芯202能够多快地运行内部操作,同时来自外部控制器126的外部时钟信号282可以基于外部控制器126能够多快地发送和接收数据。如果裸芯202与较慢的外部控制器126一起使用,则取决于外部时钟信号282的内部时钟信号(例如,通过乘以外部时钟信号282的频率)将减慢。相反地,在某些实施例中,生成独立于外部时钟信号282的内部时钟信号可以允许以适于裸芯202的速度配置内部时钟信号,而无论外部控制器126或者外部时钟信号282的速度如何。
在一些实施例中,用于在核心200和缓冲器252之间传送存储操作的数据的时间(例如,经由内部数据总线288)可以对应于裸芯202的内部时钟的一个时钟周期。类似地,在另外的实施例中,用于在缓冲器252和装置控制器126之间传送一个存储操作的数据的时间可以对应于外部时钟信号282的一个时钟周期(虽然,如上所述,外部控制器126可以以其他速度提供附加的外部时钟信号282)。在某些实施例中,内部时钟信号的时钟周期(例如,在核心200和缓冲器252之间传送存储操作的数据的时间)可以比用于在缓冲器252和外部控制器126传送存储操作的数据的时间更快(例如,可以以更少时间发生)。如果生成内部时钟信号而无论外部时钟信号282如何,则比外部时钟信号282更快的内部时钟信号仍然可以被称为独立于外部时钟信号282。
在一些实施例中,提供比缓冲器252和外部控制器126之间更快的核心200和缓冲器252之间的连接可以减小裸芯202的数据路径等待时间。例如,对于一系列读取操作,核心200可以比外部控制器126取出缓冲器252的数据更快地将数据置于缓冲器252中,且核心200可以以连续读取操作的数据填充缓冲器252、同时避免长的、高的等待时间预取时段。
在某些实施例中,缓冲器252可以是或者包括基于内部时钟信号和外部时钟信号282更新的异步先入先出(FIFO)缓冲器。如上所述,同步或者异步FIFO缓冲器252可以以请求存储操作的次序存储和传送用于存储操作的数据。在另外的实施例中,异步FIFO缓冲器252可以在时钟域之间传递数据,以使得数据在一个时钟域中写入到异步FIFO缓冲器252,并在另一时钟域中从异步FIFO缓冲器252读取。例如,在示出的实施例中,对于读取操作,来自核心200的数据可以在内部时钟域中传送到异步FIFO缓冲器252,且数据可以在外部时钟域中从异步FIFO缓冲器252传送到外部控制器126。相反地,对于在示出的实施例中的写入操作,来自外部控制器126的数据可以在外部时钟域中传送到异步FIFO缓冲器252,且随后在内部时钟域中从异步FIFO缓冲器252传送到核心200。在某些实施例中,异步FIFO缓冲器252可以包括配置为排列数据的环形缓冲器、一系列易失性存储器、锁存器的集合等;存储读指针和写指针的值的存储器位置的集合、寄存器等;以及用于控制数据传送、更新指针的控制硬件等。
但是,在一些实施例中,如果比从缓冲器252读取数据更快地将数据写入到缓冲器252,则在两个不同时钟域之间传递数据的缓冲器252可能溢出。在一个实施例中,核心200的内部数据管线212可以当做缓冲器252的扩展,以使得可用于缓冲与存储操作相关联的数据的总级数是缓冲器252中的级数加上内部数据管线212中的级数。但是,如果缓冲器252和内部数据管线212两者都满,则仍然可能发生与缓冲器溢出相关联的问题,例如数据损坏。因此,在某些实施例中,响应于确定内部数据管线212和缓冲器252两者都满,内部控制器250可以使用数据路径控制组件150以延迟启动存储操作。
如在此使用的,如果内部数据管线212或者缓冲器252的级可用于存储用于存储操作的数据,则该级可以被称为“空”,且如果该级包括用于还未完成的存储操作的数据,则该级可以被称为"满"。一旦读取操作的数据已经从缓冲器252传送到装置控制器126,则读取操作可以被称为“完成”。存储读取操作的数据的缓冲级然后是空的,且可以用于缓冲随后的存储操作的数据。相反地,一旦写入操作的数据已经从内部数据管线212记录到阵列210或者非易失性存储器单元,则写入操作可以被称为“完成”。存储写入操作的数据的内部数据管线级然后是空的,且可以用于缓冲随后的写入操作的数据。在一个实施例中,可以擦除空的级(例如,可以存储零、一或者指示该级是空的另一特定数据值)。在另一实施例中,空的级仍然可以存储完成的操作的数据,但是当该级再次在使用中时,内部数据管线212和/或缓冲器252可以安全地重写完成的操作数据。
术语“满”在这里也可以用于参考内部数据管线212和/或缓冲器252它们自己以指示该级是满的。因此,如果在内部数据管线212或者缓冲器252中没有空的级,则内部数据管线212和缓冲器252两者都是满的。
在一些实施例中,缓冲器252的读指针和写指针可以指示缓冲器252是否是满的。例如,写指针可以指向要写入数据的缓冲级,且可以响应于数据写入到写入点当前指向的该级而递增以指向下一级。(缓冲器252可以配置为环形,以使得最后一级之后的“下一”级是第一级)。类似地,读指针可以指向要读取数据的缓冲级,且可以响应于读取数据而递增以指向下一级。因此,写指针回绕缓冲器252且追上读指针可以指示缓冲器252是满的。但是,缓冲器252的读指针和写指针单独地可以不指示缓冲器252和内部数据管线212两者是否都满。因此,在某些实施例中,内部控制器250和/或数据路径控制组件150可以保持跟踪何时启动和完成存储操作,以确定内部数据管线212和缓冲器252两者是否都满。在示出的实施例中,数据路径控制组件150包括计数器254和同步器256,并使用计数器254和同步器256,如以下将要描述的,以确定内部数据管线212和缓冲器252两者是否都满,或者队列或者缓冲器252和内部数据管线212综合地是否包括空的级。但是,在另一实施例中,可以省略计数器254和/或同步器256,且数据路径控制组件150可以以另一方式确定内部数据管线212和缓冲器252两者是否都满。
因此,在某些实施例中,响应于确定内部数据管线212和缓冲器252两者都满,内部控制器250可以使用数据路径控制组件150以延迟启动存储操作。例如,内部数据管线212和队列或者缓冲器252两者可能都填满来自已经开始而没有完成的存储操作的数据,且响应于确定队列或者缓冲器252和内部数据管线212综合地不包括空的级,数据路径控制组件150可以等待开始另外的存储操作。在一个实施例中,数据路径控制组件150可以分派用于执行存储操作的地址,但是可以响应于确定已经分派的地址的数目和已经完成的存储操作的数目之间的差值满足基于内部数据管线212和用于缓冲数据的装置中的总级数的阈值,停止用于存储操作的地址的分派。
在一个实施例中,启动读取操作可以包括将用于读取操作的地址发送到核心200,且数据路径控制组件150可以停止发送或者分派地址以延迟启动读取操作,等待开始另外的读取操作等。停止读取地址的分派可以包括排列地址以在之后发送到核心200,向装置控制器126发信号通知将不启动读取操作(以使得装置控制器126在之后重新请求读取操作),等等。如果队列或者缓冲器252和内部数据管线212两者都填满来自先前读取操作的数据(例如,如果队列或者缓冲器252和内部数据管线212综合地不包括空的级),则延迟读取操作的启动可以提供用于先前读取操作之一的数据从缓冲器252传送到装置控制器126的时间,在缓冲器252中创建空的级。缓冲器252中的空的级然后可以填充来自内部数据管线212的数据,在内部数据管线212中创建空的级,该空的级然后可用于另外的读取操作的数据。
在另外的实施例中,启动写入操作可以包括将用于写入操作的地址与要写入的数据一起从缓冲器252发送到核心200。数据路径控制组件150可以停止发送或者分派地址和数据,以延迟启动写入操作,等待开始另外的写入操作等。停止写入地址和数据的分派可以包括排列将在之后由装置控制器126发送的数据的地址,当在缓冲器252中空的级可用时,发信号通知装置控制器126将不启动写入操作(以使得装置控制器126在之后重新请求写入操作),等等。如果队列或者缓冲器252和内部数据管线212两者都填满来自先前写入操作的数据(例如,如果队列或者缓冲器252和内部数据管线212综合地不包括空的级),则延迟写入操作的启动可以提供用于先前写入操作之一的数据从内部数据管线212写入到存储器单元的阵列210的时间,在内部数据管线212中创建空的级。缓冲器252可以保持满的,直到启动另一写入操作为止(包括发送地址和传送要从缓冲器252写入的数据到内部数据管线212中的空的级)。因此,在某些实施例中,内部控制器250也可以与外部控制器126通信(例如,经由准备好/忙信号)以使得外部控制器126延迟发送要写入的另外的数据直到空的缓冲级可用为止。在另一实施例中,外部控制器126可以配置为等待发送用于后续写入操作的数据的间隙时间,其中选择该间隙时间以允许空的缓冲级变得可用。
在各种实施例中,(如上关于读和写操作所述的),延迟存储操作的启动可以提供完成一个或多个已经启动的存储操作的时间,增加内部数据管线212和/或缓冲器252中的空的级的数目。因此,在另外的实施例中,内部控制器250和/或数据路径控制组件150可以启动先前延迟的存储操作,恢复分派用于存储操作的地址,且/或响应于确定内部数据管线212和/或缓冲器252包括空的级而开始另外的存储操作。
在某个实施例中,内部控制器250和/或数据路径控制组件150可以基于确定已经分派的地址的数目和已经完成的存储操作的数目之间的差值是否满足阈值,而停止或者恢复分派地址。在另外的实施例中,该阈值可以基于内部数据管线212和缓冲器252中的总级数。阈值可以基于比较分派的地址和完成的存储操作之间的差值与阈值、而是“满足的”或者“不满足的”。例如,在一个实施例中,如果该差值超过(或者超过或者等于)该阈值,则可以满足阈值,且如果该差值小于或等于(或者严格地小于)该阈值,则可以不满足阈值。
总的来说,在各种实施例中,已经分派的地址的数目和已经完成的存储操作的数目之间的差值可以对应于内部数据管线212和/或缓冲器252中的满的级的数目。因此,如果过多级是满的,则可能满足阈值,且内部控制器250和/或数据路径控制组件150相应地可以停止分派地址。相反地,如果存在足够的空的级以恢复分派地址,则可能不满足阈值,且内部控制器250和/或数据路径控制组件150可以相应地恢复分派地址。因此,在各种实施例中,该阈值可以基于内部数据管线212和缓冲器252中的总级数。例如,在一个实施例中,如果已经分派的地址的数目和已经完成的存储操作的数目之间的差值等于内部数据管线212和缓冲器252中的总级数(例如,如果内部数据管线212和缓冲器252两者都满),则可能满足阈值。在另一实施例中,内部控制器250可以保留一些数目的级用于内部使用,且如果已经分派的地址的数目和已经完成的存储操作的数目之间的差值等于内部数据管线212和缓冲器252中的总级数减去保留用于内部使用的级数,则可能满足阈值。基于内部数据管线212和缓冲器252中的总级数选择阈值的各种另外的方式鉴于本公开将是清楚的。
在各种实施例中,内部控制器250和/或数据路径控制组件150可以使用计数器254以确定队列或者缓冲器252和内部数据管线212综合地是否包括空的级,或者内部数据管线212和缓冲器252两者是否都满。在各种实施例中,计数器254可以包括配置为存储、递增和递减数字的寄存器、触发器的集合、存储器位置等。相等地,计数器254可以包括配置为存储和递增数字的两个这种位置、和用于计算两个数字之间的差值的逻辑电路,以使得递增数字之一等于递减计数器254。各种类型的计数器254鉴于本公开将是清楚的。
在一个实施例中,计数器254可以跟踪已经由内部控制器250启动的存储操作的数目和已经完成的存储操作的数目之间的差值,以确定内部数据管线212和缓冲器252两者是否都满。计数器254可以确定已经分派的地址的数目和已经完成的存储操作的数目之间的差值,对已经开始的存储操作和已经完成的存储操作计数(和比较两个计数),等等。例如,对于读取操作,计数器254可以响应于用于启动读取操作的信号(例如,用于发送要读取到核心200的数据的地址的内部时钟信号,导致填充空的级)递增,且可以响应于用于完成读取操作的信号(例如,用于将读取数据从缓冲器252传送到装置控制器126的外部时钟信号282,导致创建空的级)递减。因此,计数器254的值可以对应于内部数据管线212和缓冲器252中的满的级的数目。在另外的实施例中,数据路径控制组件150可以基于比较计数器254的值与内部数据管线212和缓冲器252的总级数,来延迟或者恢复启动另外的存储操作。相等地,在另一实施例中,计数器254的初始值可以是总级数,且随着级被填充,计数器254可以递减,并与零比较以确定是否延迟启动另外的存储操作。
在一个实施例中,计数器254可以在存储器裸芯202的内部时钟域中操作。例如,在某个实施例中,当内部时钟信号的边缘出现时可以更新计数器254(例如,递增、递减或者保持不变)。但是,在某个实施例中,完成读取操作可以包括在外部时钟域中(例如,基于外部时钟信号282)、在缓冲器252和装置控制器126之间传送数据。用于在缓冲器252和外部控制器126之间传送存储操作的数据的外部时钟信号282可以被称为数据传送信号282。例如,在外部时钟域中的数据传送信号282可以启动或者控制缓冲器252和外部控制器126之间的数据传送。因为通过数据传送完成读取操作,所以当完成操作时更新计数器254可以取决于外部时钟域中的数据传送信号282。但是,因为外部时钟域中的信号的边缘可以独立于计数器254操作的内部时钟域,所以计数器254可能错过数据传送信号282的脉冲或者周期,且可能不精确地反映满(或者空的级)的数目。
因此,在某个实施例中,同步器256将用于在缓冲器252和外部控制器126之间传送存储操作的数据的来自外部时钟域的数据传送信号282转换为用于更新计数器254的内部时钟域中的计数器更新信号284。例如,在示出的实施例中,同步器256从内部总线驱动器258(其从外部控制器126接收数据传送信号282)接收数据传送信号282,将数据传送信号282转换为内部时钟域中的计数器更新信号284,且发送计数器更新信号284到计数器254。在各种实施例中,将数据传送信号282同步到内部时钟域可以避免计数器254错过在外部时钟域中出现的信号。以下关于图3、图4A和图4B进一步详细地描述同步器256的实施例。
图3是图示同步器300的一个实施例的电路图。同步器300可以实质上类似于上面关于图2描述的同步器256,且可以将来自外部时钟域的数据传送信号282转换为内部时钟域中的计数器更新信号284。在示出的实施例中,同步器300包括输入电路352、同步电路354和输出电路356。图4A和图4B示出时间线400、450,其图示在图3的同步器300的不同点的信号或者电压。信号在高低值(例如,电压)之间交替。在示出的实施例中,信号的“脉冲”指的是信号的值为高的时段,以上升沿或者正沿开始,且以下降沿或者负沿结束。在另一实施例中,使用不同的习惯,信号的“脉冲”可以指信号值为低的时段(以下降沿开始和以上升沿结束)。
在示出的实施例中,来自多次读操作的数据存储在缓冲器252中,且数据传送信号282的五个脉冲从装置控制器126到达,以将来自五个读操作的数据传送到装置控制器126。在示出的实施例中,数据传送信号282的每个脉冲完成读取操作,所以计数器更新信号284应该类似地包括五个脉冲以更新计数器254。在图4A和图4B中,数据传送信号282和计数器更新信号284的脉冲标记为0-4。
总的来说,在各种实施例中,同步器300可以通过在由内部时钟控制的时间捕获外部时钟域信号的值,来将来自外部时钟域的信号同步到内部时钟域。在示出的实施例中,同步器300包括四个D-型触发器310、320、330、340,其每个接收时钟输入("CLK),捕获当时钟输入的上升沿出现时数据输入的值(“D”),且在输出产生捕获的值(“Q”)。因此,D型触发器在由时钟输入接收的时钟信号的每个上升沿高效地检查和输出它的数据输入的值,且每个触发器310、320、330、340的输出在与它的时钟输入相同的时钟域中(除了如果数据输入的边缘和时钟输入的上升沿重叠则输出可能是亚稳的之外)。在另一实施例中,不同类型的触发器或者其他时钟电路可以由同步器300使用以在特定时钟域中输出信号。
在示出的实施例中,提供内部时钟信号322,其比来自外部时钟域的数据传送信号282更快。但是,在图4A和图4B中可以看到,虽然数据传送信号282的时段比内部时钟信号322的时段更长,但数据传送信号282的脉冲比内部时钟信号322的一个时段更短。因此,检查内部时钟信号322的每个上升沿所数据传送信号282的值可能错过完全在内部时钟信号322的上升沿之间出现的数据传送信号282的脉冲。
因此,在一个实施例中,输入电路352响应于数据传送信号282的脉冲而翻转(toggle)外部时钟域中的中间信号314。如在此使用的,“触发”信号可以指改变或者切换信号一次,或者从高值到低值,或者从低值到高值。因此,虽然“脉冲”包括上升沿和下降沿,但信号在每个边缘“翻转”。在某些实施例中,响应于数据传送信号282的脉冲触发中间信号314可以允许即使在捕获中间信号314之前脉冲具有结束,也通过采样、捕获或者检测翻转的中间信号314的值(例如,在内部时钟信号322的上升沿)来检测脉冲。
在示出的实施例中,输入电路352包括接收外部时钟域中的数据传送信号282作为时钟输入的触发器310、和将输入电路触发器310的反相输出耦合到输入电路触发器310的数据输入的“非”门316。因为触发器310的输出反相并被耦合到数据输入,因此每次出现时钟输入的上升沿输出将翻转。因此,通过耦合到时钟输入的数据传送信号282,来自输出的中间信号314将响应于数据传送信号282的脉冲(特别地,当脉冲的上升沿出现时)在外部时钟域中翻转。
在一个实施例中,同步电路354将中间信号314转换到内部时钟域。在示出的实施例中,同步电路354包括从外部时钟域接收中间信号314的第一触发器320、和从第一触发器320接收输出信号324的第二触发器330,并输出已转换中间信号334(例如,转换到内部时钟域的、来自输入电路352的中间信号314)。
在示出的实施例中,内部时钟信号322耦合到同步电路354的第一触发器320的时钟输入。因此,将在内部时钟信号322的下一上升沿上捕获和输出来自输入电路352的中间信号314的翻转。但是,因为来自输入电路352的中间信号314在外部时钟域中,当中间信号314翻转时的边缘可以与内部时钟信号322的上升沿重叠,且同步电路354中的第一触发器320的输出信号324可以是亚稳的(metastable)。链接第二触发器330到第一触发器320提供延迟,在延迟期间第一触发器320的可能的亚稳输出324可以被解决(resolve)为稳定的低值或者高值。在一个实施例中,第二触发器330的时钟输入相对于第一触发器320之后时钟输入反相,以使得代替在全周期延迟之后(例如,在内部时钟信号322的下一上升沿上),在半周期延迟之后(例如,在内部时钟信号322的下降沿上)第二触发器330捕获第一触发器320的输出信号324。在另一实施例中,没有时钟输入相对于其他时钟输入反相,以实现全周期延迟。在任一情况下,因为第一触发器320和第二触发器330两者由内部时钟信号322控制(直接或者以反相形式),它们可以被称为在内部时钟域中操作。
在一个实施例中,输出电路356响应于来自触发的同步电路354的已转换中间信号334,输出内部时钟域中的计数器更新信号284的脉冲。总的来说,在各种实施例中,输入电路352将脉冲转换为翻转,同步电路354将翻转带到内部时钟域中,且输出电路356将翻转转换回到脉冲。
在示出的实施例中,输出电路356包括延迟已转换中间信号334的触发器340、和基于已转换中间信号334和延迟的已转换中间信号344而产生用于计数器更新信号284的脉冲的“异或”门346。在示出的实施例中,输出触发器340的时钟输入耦合到内部时钟信号322,以使得输出触发器340在内部时钟信号322的上升沿上输出信号344,在半周期之后同步电路354的第二触发器330输出已转换中间信号334(因为它的时钟输入反相,在内部时钟信号322的下降沿上)。在另一实施例中,在同步电路354的第二触发器330的时钟输入不反相时,从同步电路354的第一触发器320到第二触发器330到输出触发器340的延迟可以是内部时钟信号322的两个全周期而不是两个半周期。
当已转换中间信号334和延迟的已转换中间信号344相同时,“异或”门346的输出为低。但是,当已转换中间信号334翻转时,“异或”门346的输出达到高,直到半周期之后,延迟的已转换中间信号344也翻转为止。因此,已转换中间信号334的每个翻转开始计数器更新信号284的半周期脉冲。
图4A和图4B示出时间线400、450,其分别图示上面关于图3的同步器300讨论的信号。每个时间线400、450示出(在外部时钟域中的)数据传送信号282、由输入电路352产生的翻转的中间信号314、内部时钟信号322、来自同步电路354中的第一触发器320的输出信号324、来自同步电路354中的第二触发器330的已转换中间信号334、来自输出触发器340的延迟的已转换中间信号344和计数器更新信号284。
时间线400、450两者都示出外部时钟域中的数据传送信号282的五个脉冲,标记为0-4。对于对应于脉冲0的事件标记时间t0、t1、t2和t3。类似地在时间线400、450两者中标记相应的事件,虽然它们可能在不同的时间出现。输入电路352响应于数据传送信号282的脉冲而翻转外部时钟域中的中间信号314。在示出的实施例中,中间信号314在数据传送信号282中的脉冲0-4的每个上升沿上翻转。例如,中间信号314在脉冲0的上升沿(在时间t0)翻转到高值,且在脉冲1的上升沿翻转回到低值。在示出的实施例中,中间信号314仍然在外部时钟域中,因为它不由内部时钟信号322控制。
对应于数据传送信号282的脉冲到翻转的中间信号314的改变由同步电路354的第一触发器320在产生(可能亚稳的)输出信号324的内部时钟信号322的下一上升沿捕获,且到输出信号324的改变由同步电路354的第二触发器330在产生已转换中间信号334的内部时钟信号322的下一下降沿捕获。例如,由脉冲0的上升沿在时间t0产生的中间信号314中的翻转由同步电路354的第一触发器320在时间t1(内部时钟信号322的下一上升沿)捕获,且来自第一触发器320的输出信号324中的相应改变由同步电路354的第二触发器330在时间t2(内部时钟信号322的下一下降沿)捕获。因此,在示出的实施例中,来自同步电路354的第二触发器330的已转换中间信号是类似于来自输入电路352的翻转的中间信号314的翻转的信号,但是在内部时钟域中。
在示出的实施例中,输出触发器340在内部时钟信号322的下一上升沿上捕获已转换中间信号334。例如,响应于数据传送信号282中的脉冲0的上升沿产生的在时间t2的已转换中间信号334中的翻转在内部时钟信号322的半周期之后的时间t3由输出触发器340捕获。因此,在示出的实施例中,延迟的已转换中间信号344是延迟内部时钟信号322的半周期的已转换中间信号334。
最后,“异或”门346组合已转换中间信号334和延迟的已转换中间信号344以产生用于计数器更新信号284的脉冲。当已转换中间信号334和延迟的已转换中间信号344相同时,由“异或”门346输出的计数器更新信号284为低。但是,在已转换中间信号334中的改变由输出触发器340捕获以产生延迟的已转换中间信号344之前的半周期中,由“异或”门346输出的计数器更新信号284为高。因此,已转换中间信号334的每个翻转产生计数器更新信号284中的脉冲。在时间线400、450中可以看到,外部时钟域中的数据传送信号282的脉冲0-4因此转换为内部时钟域中的计数器更新信号284的脉冲0-4。例如,在时间t0开始的数据传送信号282的脉冲0被转换为在时间t2开始并在时间t3结束的计数器更新信号284的脉冲0。
在图4A中示出的时间线400中,在时间t0的数据传送信号282的脉冲0的上升沿略微在内部时钟信号322的上升沿之后出现。中间信号314中的相应的翻转不由同步电路354中的第一触发器320捕获直到内部时钟信号322的下一上升沿为止,该内部时钟信号322的下一上升沿在时间t1,内部时钟信号322的几乎全周期之后。计数器更新信号284的相应的脉冲0在时间t3,内部时钟信号322的另一周期之后结束。因此,在时间线400中,同步器300可以更新具有近似两个内部时钟周期的延迟的计数器254。
在图4B中示出的时间线450中,在时间t0的数据传送信号282的脉冲0的上升沿略微在内部时钟信号322的上升沿之前出现,所以中间信号314中的相应的翻转几乎立即在时间t1由同步电路354中的第一触发器320捕获。(因此,时间t0和t1在时间线450中比在时间线400中接近得多)。计数器更新信号284的相应的脉冲0在时间t3,内部时钟信号322的一个周期之后结束。因此,在时间线450中,同步器300可以更新具有近似一个内部时钟周期的延迟的计数器254。在某些实施例中,可以选择缓冲器252的大小以补偿由同步器300引入的一个到两个内部时钟周期的延迟。
图5是图示用于控制非易失性存储器的数据路径的方法500的一个实施例的示意性流程图。方法500开始,且内部控制器250在队列252中存储502用于存储操作的数据。存储操作用于包括非易失性存储单元的阵列210和内部数据管线212的存储器核心200。数据路径控制组件150确定504队列252和内部数据管线212是否综合地包括空的级。如果队列252和内部数据管线212综合地不包括空的级,则数据路径控制组件150等待508以开始存储操作,且方法500继续,数据路径控制组件150重新确定504队列252或者内部数据管线212是否包括空的级。如果队列252和内部数据管线212综合地包括空的级,则数据路径控制组件150开始506存储操作,且方法500结束。
图6是图示用于控制非易失性存储器的数据路径的方法600的另一实施例的示意性流程图。方法600开始,且内部控制器250在队列252中存储602用于存储操作的数据。存储操作用于包括非易失性存储单元的阵列210和内部数据管线212的存储器核心200。同步器256同步604来自外部时钟域的数据传送信号282,以用于将在队列252和外部控制器126之间的存储操作的数据传送到内部时钟域以用于更新计数器254。计数器254对已经开始的存储操作和已经完成的存储操作计数606。基于开始和完成的存储操作的计数,数据路径控制组件150确定608队列252和内部数据管线212综合地是否包括空的级。如果队列252和内部数据管线212综合地不包括空的级,则方法600继续数据传送信号282的进一步同步604,并对开始和完成的存储操作计数606。如果队列252和内部数据管线212综合地包括空的级,则数据路径控制组件150开始610存储操作。内部控制器250继续存储602数据以用于队列252中的进一步存储操作,且方法600继续。
在各种实施例中,用于缓冲与存储器核心200的存储操作相关联的数据的装置可以包括缓冲器252、锁存器、寄存器、一系列易失性存储器、环形缓冲器、FIFO电路、异步FIFO电路、能够缓冲数据的其他存储电路或者元件、内部控制器250、内部总线驱动器258、其他逻辑硬件和/或计算机可读存储介质上存储的其他可执行代码。其他实施例可以包括用于缓冲与存储操作相关联的数据的类似的或等效的装置。
在各种实施例中,用于分派执行存储操作的地址的装置可以包括内部控制器250、数据路径控制组件150、计数器254、同步器256、内部总线驱动器258、内部总线286、288、其他逻辑硬件,和/或计算机可读存储介质上存储的其他可执行代码。其他实施例可以包括用于分派地址的类似的或等效的装置。
在各种实施例中,用于停止地址的分派的装置可以包括内部控制器250、数据路径控制组件150、计数器254、同步器256、内部总线驱动器258、其他逻辑硬件和/或在计算机可读存储介质上存储的其他可执行代码。其他实施例可以包括用于停止地址的分派的类似的或等效的装置。
在各种实施例中,用于恢复地址的分派的装置可以包括内部控制器250、数据路径控制组件150、计数器254、同步器256、内部总线驱动器258、内部总线286、288其他逻辑硬件和/或在计算机可读存储介质上存储的其他可执行代码。其他实施例可以包括用于恢复地址的分派的类似的或等效的装置。
在各种实施例中,用于确定已经分派的地址的数目与已经完成的存储操作的数目之间的差值的装置可以包括内部控制器250、数据路径控制组件150、计数器254、同步器256、缓冲器252、内部数据管线212、其他逻辑硬件和/或计算机可读存储介质上存储的其他可执行代码。其他实施例可以包括用于确定差值的类似的或等效的装置。
在各种实施例中,用于将来自外部时钟域的数据传送信号282转换为内部时钟域中的计数器更新信号284的装置可以包括内部控制器250、数据路径控制组件150、同步器256、输入电路352、同步电路354、输出电路356、其他逻辑硬件和/或计算机可读存储介质上存储的其他可执行代码。其他实施例可以包括用于将来自外部时钟域的信号转换为内部时钟域中的信号的类似的或等效的装置。
本公开可以具体表现为其他特定形式而不脱离它的精神或者本质特征。描述的实施例在各个方面仅考虑为说明性的而非限制性的。因此,本公开的范围由所附权利要求而不是由前述描述指示。在权利要求的含义和等效范围内的所有改变包含在权利要求的范围内。

Claims (20)

1.一种设备,包括:
一个或多个存储器裸芯,存储器裸芯包括,
存储器核心,包括非易失性存储器单元的阵列和内部数据管线;
缓冲器,存储与存储器核心的存储操作相关联的数据;以及
内部控制器,与存储器核心通信以启动存储操作,其中,所述内部控制器响应于确定内部数据管线和缓冲器两者都满而延迟启动存储操作。
2.如权利要求1所述的设备,其中,所述内部控制器响应于确定内部数据管线和缓冲器中的一个或多个包括空的级而启动存储操作。
3.如权利要求1所述的设备,其中:
根据存储器裸芯的内部时钟信号控制所述内部控制器启动存储操作、所述核心执行存储操作、和用于存储操作的在所述核心和所述缓冲器之间的数据传送;以及
根据外部时钟信号控制在缓冲器和外部控制器之间的数据传送。
4.如权利要求3所述的设备,其中,所述缓冲器包括基于内部时钟信号和外部时钟信号更新的异步先入先出(FIFO)缓冲器。
5.如权利要求3所述的设备,其中,所述内部时钟信号独立于所述外部时钟信号。
6.如权利要求3所述的设备,其中,所述内部时钟信号的时钟周期比用于在缓冲器和外部控制器之间传送存储操作的数据的时间更快。
7.如权利要求1所述的设备,进一步包括计数器,所述计数器跟踪已经由内部控制器启动的存储操作的数目和已经完成的存储操作的数目之间的差值,以确定所述内部数据管线和所述缓冲器两者是否都满。
8.如权利要求7所述的设备,进一步包括同步器,所述同步器将用于在缓冲器和外部控制器之间传送存储操作的数据的、来自外部时钟域的数据传送信号转换为用于更新计数器的、在内部时钟域中的计数器更新信号。
9.如权利要求8所述的设备,其中,所述同步器包括:
输入电路,响应于所述数据传送信号的脉冲而翻转外部时钟域中的中间信号;
同步电路,将所述中间信号转换到内部时钟域;以及
输出电路,响应于已转换中间信号翻转,输出用于内部时钟域中的计数器更新信号的脉冲。
10.如权利要求9所述的设备,其中,所述同步电路包括从外部时钟域接收中间信号的第一触发器,和从第一触发器接收输出信号的第二触发器,所述第一和第二触发器在内部时钟域中操作。
11.如权利要求10所述的设备,其中,所述第二触发器的时钟输入与所述第一触发器的时钟输入相比反相。
12.如权利要求9所述的设备,其中:
所述输入电路包括接收外部时钟域中的数据传送信号作为时钟输入的触发器、和将所述输入电路触发器的反相输出耦合到所述输入电路触发器的数据输入的“非”门;以及
所述输出电路包括延迟已转换中间信号的触发器和基于已转换中间信号和延迟的已转换中间信号产生用于计数器更新信号的脉冲的“异或”门。
13.一种设备,包括:
用于缓冲与存储器核心的存储操作相关联的数据的装置,所述存储器核心包括非易失性存储器单元的阵列和内部数据管线;
用于分派用于执行存储操作的地址的装置;以及
用于响应于确定已经分派的地址的数目与已经完成的存储操作的数目之间的差值满足阈值而停止用于存储操作的地址的分派的装置和用于缓冲数据的装置,其中所述阈值基于内部数据管线中的总级数。
14.如权利要求13所述的设备,进一步包括用于响应于确定不满足阈值而恢复地址的分派的装置。
15.如权利要求13所述的设备,进一步包括用于确定已经分派的地址的数目与已经完成的存储操作的数目之间的差值的装置。
16.如权利要求15所述的设备,进一步包括用于将用于在用于缓冲数据的装置和外部控制器之间传输存储操作的数据的来自外部时钟域的数据传送信号转换为用于更新用于确定差值的装置的内部时钟域中的计数器更新信号的装置。
17.一种方法,包括:
在队列中存储数据,所述数据与存储器核心的存储操作相关联,所述存储器核心包括非易失性存储单元的阵列和内部数据管线;以及
确定所述队列和所述内部数据管线综合地是否包括空的级;以及
响应于确定所述队列和内部数据管线综合地包括空的级而开始存储操作。
18.如权利要求17所述的方法,进一步包括响应于确定所述队列和内部数据管线综合地不包括空的级而等待开始进一步的存储操作。
19.如权利要求17所述的方法,其中,确定所述队列和所述内部数据管线综合地是否包括空的级包括对已经开始的存储操作和已经完成的存储操作计数。
20.如权利要求19所述的方法,其中,对已经完成的存储操作计数包括将用于在所述队列和外部控制器之间传送存储操作的数据的、来自外部时钟域的数据传送信号同步到内部时钟域以用于更新计数器。
CN201710022600.1A 2016-01-13 2017-01-12 非易失性存储器的数据路径控制 Active CN107025069B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662278227P 2016-01-13 2016-01-13
US62/278,227 2016-01-13

Publications (2)

Publication Number Publication Date
CN107025069A true CN107025069A (zh) 2017-08-08
CN107025069B CN107025069B (zh) 2021-09-28

Family

ID=59276274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710022600.1A Active CN107025069B (zh) 2016-01-13 2017-01-12 非易失性存储器的数据路径控制

Country Status (2)

Country Link
US (1) US10254967B2 (zh)
CN (1) CN107025069B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108345430A (zh) * 2017-12-27 2018-07-31 北京兆易创新科技股份有限公司 一种Nand flash元件及其运行控制方法和装置
CN110618833A (zh) * 2018-06-19 2019-12-27 深圳大心电子科技有限公司 指令处理方法及存储控制器
CN110875068A (zh) * 2018-08-31 2020-03-10 美光科技公司 存储器装置的命令在管线中计数器
CN111386753A (zh) * 2017-10-27 2020-07-07 L3技术公司 飞行记录器存储器核心的热隔离

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10528286B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US10528267B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Command queue for storage operations
US10528255B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US10114589B2 (en) 2016-11-16 2018-10-30 Sandisk Technologies Llc Command control for multi-core non-volatile memory
JP7013707B2 (ja) * 2017-08-02 2022-02-01 富士通株式会社 情報処理装置および情報処理方法
KR102514772B1 (ko) * 2017-12-28 2023-03-28 삼성전자주식회사 비동기적 동작 수행이 가능한 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 그리고 이의 동작 수행 방법
US10908838B2 (en) 2018-09-25 2021-02-02 Sandisk Technologies Llc Column replacement with non-dedicated replacement columns
TWI688955B (zh) * 2019-03-20 2020-03-21 點序科技股份有限公司 記憶體裝置以及記憶體的存取方法
US11232047B2 (en) * 2019-05-28 2022-01-25 Rambus Inc. Dedicated cache-related block transfer in a memory system
US10761999B1 (en) 2019-05-30 2020-09-01 Western Digital Technologies, Inc. Storage device with predictor engine of host turnaround time
US11935622B2 (en) 2022-04-20 2024-03-19 Sandisk Technologies Llc Free flow data path architectures

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102971795A (zh) * 2010-05-07 2013-03-13 莫塞德技术公司 使用单个缓冲区同时读取多个存储器装置的方法和设备
CN104049910A (zh) * 2013-03-15 2014-09-17 三星电子株式会社 操作存储器系统的方法、存储器系统、和存储器控制器
US20140351500A1 (en) * 2007-04-17 2014-11-27 Rambus Inc. Hybrid volatile and non-volatile memory device
CN105138287A (zh) * 2012-07-22 2015-12-09 北京忆恒创源科技有限公司 存储设备、中断控制方法以及供电时间测量方法

Family Cites Families (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5022004A (en) 1988-10-28 1991-06-04 Apollo Computer, Inc. Method and apparatus for DRAM memory performance enhancement
US5548795A (en) 1994-03-28 1996-08-20 Quantum Corporation Method for determining command execution dependencies within command queue reordering process
US5664114A (en) 1995-05-16 1997-09-02 Hewlett-Packard Company Asynchronous FIFO queuing system operating with minimal queue status
US5951635A (en) 1996-11-18 1999-09-14 Vlsi Technology, Inc. Asynchronous FIFO controller
KR100257865B1 (ko) 1997-09-04 2000-06-01 윤종용 데이터 입/출력 제어 회로를 구비한 동기형 메모리장치
US6263410B1 (en) 1998-09-15 2001-07-17 Industrial Technology Research Institute Apparatus and method for asynchronous dual port FIFO
US6216178B1 (en) 1998-11-16 2001-04-10 Infineon Technologies Ag Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
US6614798B1 (en) 1999-03-30 2003-09-02 Integrated Device Technology, Inc. Asynchronous FIFO increment and decrement control for interfaces that operate at differing clock frequencies
US6166564A (en) 1999-07-09 2000-12-26 Intel Corporation Control circuit for clock enable staging
EP1073064A1 (en) 1999-07-30 2001-01-31 STMicroelectronics S.r.l. Non-volatile memory with the functional capability of simultaneous modification of the contents and burst mode read or page mode read
US6393534B1 (en) 1999-09-27 2002-05-21 Ati International Srl Scheduler for avoiding bank conflicts in issuing concurrent requests to main memory
US6393512B1 (en) 1999-09-27 2002-05-21 Ati International Srl Circuit and method for detecting bank conflicts in accessing adjacent banks
US8266367B2 (en) * 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
JP2001283594A (ja) 2000-03-29 2001-10-12 Sharp Corp 不揮発性半導体記憶装置
US6504768B1 (en) 2000-08-25 2003-01-07 Micron Technology, Inc. Redundancy selection in memory devices with concurrent read and write
KR100360409B1 (ko) 2000-09-16 2002-11-13 삼성전자 주식회사 명령 및 어드레스 전용 스트로브 신호를 이용하는 반도체메모리장치 및 이의 명령 및 어드레스 입력방법
JP4907011B2 (ja) 2001-04-27 2012-03-28 株式会社半導体エネルギー研究所 不揮発性メモリとその駆動方法、及び半導体装置
US6628563B1 (en) 2001-07-09 2003-09-30 Aplus Flash Technology, Inc. Flash memory array for multiple simultaneous operations
US6851011B2 (en) 2001-08-09 2005-02-01 Stmicroelectronics, Inc. Reordering hardware for mass storage command queue
US6385129B1 (en) 2001-08-30 2002-05-07 Micron Technology, Inc. Delay locked loop monitor test mode
US6839797B2 (en) 2001-12-21 2005-01-04 Agere Systems, Inc. Multi-bank scheduling to improve performance on tree accesses in a DRAM based random access memory subsystem
US6850438B2 (en) 2002-07-05 2005-02-01 Aplus Flash Technology, Inc. Combination nonvolatile memory using unified technology with byte, page and block write and simultaneous read and write operations
JP4225749B2 (ja) 2002-08-07 2009-02-18 株式会社ルネサステクノロジ 半導体記憶装置
JP2004079002A (ja) 2002-08-09 2004-03-11 Renesas Technology Corp 不揮発性記憶装置
JP4222803B2 (ja) 2002-09-11 2009-02-12 Necエレクトロニクス株式会社 データ処理装置およびデータ処理回路
US6940753B2 (en) 2002-09-24 2005-09-06 Sandisk Corporation Highly compact non-volatile memory and method therefor with space-efficient data registers
US6891753B2 (en) 2002-09-24 2005-05-10 Sandisk Corporation Highly compact non-volatile memory and method therefor with internal serial buses
US6983428B2 (en) 2002-09-24 2006-01-03 Sandisk Corporation Highly compact non-volatile memory and method thereof
ITTO20021035A1 (it) 2002-11-29 2004-05-30 St Microelectronics Srl Dispositivo di memoria non volatile a lettura e scrittura simulante.
US7184508B2 (en) 2002-12-23 2007-02-27 Sun Microsystems, Inc. Capturing data and crossing clock domains in the absence of a free-running source clock
US7310396B1 (en) 2003-03-28 2007-12-18 Xilinx, Inc. Asynchronous FIFO buffer for synchronizing data transfers between clock domains
US7237043B2 (en) 2003-11-21 2007-06-26 Lsi Corporation System for improving PCI write performance
JP4284527B2 (ja) 2004-03-26 2009-06-24 日本電気株式会社 メモリインターフェイス制御回路
US7562193B2 (en) 2004-04-19 2009-07-14 Nokia Corporation Memory with single and dual mode access
US7038952B1 (en) 2004-05-04 2006-05-02 Xilinx, Inc. Block RAM with embedded FIFO buffer
US7213095B2 (en) 2004-06-08 2007-05-01 Arm Limited Bus transaction management within data processing systems
US7277982B2 (en) 2004-07-27 2007-10-02 International Business Machines Corporation DRAM access command queuing structure
US20080109627A1 (en) 2004-11-10 2008-05-08 Matsushita Electric Industrial Co., Ltd. Nonvolatile Memory Device And Method For Accessing Nonvolatile Memory Device
US20060140007A1 (en) 2004-12-29 2006-06-29 Raul-Adrian Cernea Non-volatile memory and method with shared processing for an aggregate of read/write circuits
KR100745374B1 (ko) 2006-02-21 2007-08-02 삼성전자주식회사 멀티포트 반도체 메모리 장치 및 그에 따른 신호 입출력방법
US7391664B2 (en) 2006-04-27 2008-06-24 Ovonyx, Inc. Page mode access for non-volatile memory arrays
US7831801B1 (en) 2006-08-30 2010-11-09 Xilinx, Inc. Direct memory access-based multi-processor array
US7684225B2 (en) 2006-10-13 2010-03-23 Ovonyx, Inc. Sequential and video access for non-volatile memory arrays
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US7567471B2 (en) 2006-12-21 2009-07-28 Intel Corporation High speed fanned out system architecture and input/output circuits for non-volatile memory
US8397010B1 (en) 2007-04-16 2013-03-12 Juniper Networks, Inc. Convenient, flexible, and efficient management of memory space and bandwidth
ATE495489T1 (de) 2007-05-16 2011-01-15 Nxp Bv Fifo-puffer
KR101456593B1 (ko) 2007-06-22 2014-11-03 삼성전자주식회사 플래시 메모리 장치를 포함하는 메모리 시스템
CN100530138C (zh) 2007-06-28 2009-08-19 忆正存储技术(深圳)有限公司 基于多通道闪存设备逻辑条带的自适应控制方法
CN100547566C (zh) 2007-06-28 2009-10-07 忆正存储技术(深圳)有限公司 基于多通道闪存设备逻辑条带的控制方法
US7652932B2 (en) 2007-07-19 2010-01-26 Mosaid Technologies Incorporated Memory system having incorrupted strobe signals
US7911824B2 (en) 2007-08-01 2011-03-22 Panasonic Corporation Nonvolatile memory apparatus
WO2009029335A1 (en) 2007-08-28 2009-03-05 Rambus Inc. Detachable interconnect for configurable width memory system
US20090157985A1 (en) 2007-12-18 2009-06-18 Arm Limited Accessing memory arrays
CN101632068B (zh) * 2007-12-28 2015-01-14 株式会社东芝 半导体存储装置
WO2009140112A1 (en) 2008-05-13 2009-11-19 Rambus Inc. Fractional program commands for memory devices
US8914589B2 (en) 2008-09-22 2014-12-16 Infineon Technologies Ag Multi-port DRAM architecture for accessing different memory partitions
US8656093B1 (en) 2008-12-01 2014-02-18 Nvidia Corporation Supporting late DRAM bank hits
EP2377129A4 (en) 2008-12-09 2013-05-22 Rambus Inc NON-VOLATILE MEMORY DEVICE FOR SIMULTANEOUS AND OVERLAP MEMORY OPERATIONS
US20100185703A1 (en) 2009-01-14 2010-07-22 Tatu Ylonen Oy Ltd Lock-free hash table based write barrier buffer for large memory multiprocessor garbage collectors
US8169841B2 (en) 2009-01-23 2012-05-01 Micron Technology, Inc. Strobe apparatus, systems, and methods
US7970977B1 (en) 2009-01-30 2011-06-28 Xilinx, Inc. Deadlock-resistant bus bridge with pipeline-restricted address ranges
US20110041039A1 (en) 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
JP2011054249A (ja) 2009-09-02 2011-03-17 Toshiba Corp 半導体記憶装置
US20110051519A1 (en) 2009-09-03 2011-03-03 Aplus Flash Technology, Inc. Novel NAND-based hybrid NVM design that integrates NAND and NOR in 1-die with serial interface
US8775719B2 (en) 2009-09-21 2014-07-08 Aplus Flash Technology, Inc. NAND-based hybrid NVM design that integrates NAND and NOR in 1-die with parallel interface
US8996785B2 (en) 2009-09-21 2015-03-31 Aplus Flash Technology, Inc. NAND-based hybrid NVM design that integrates NAND and NOR in 1-die with serial interface
US8331123B2 (en) 2009-09-21 2012-12-11 Ocz Technology Group, Inc. High performance solid-state drives and methods therefor
US8984216B2 (en) * 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
JP5259765B2 (ja) 2011-03-29 2013-08-07 株式会社東芝 不揮発性半導体メモリ
US8977810B2 (en) 2011-04-08 2015-03-10 Altera Corporation Systems and methods for using memory commands
KR20130021704A (ko) 2011-08-23 2013-03-06 삼성전자주식회사 멀티포트 메모리 소자, 이를 포함하는 반도체 장치 및 시스템
US9584385B2 (en) 2012-01-19 2017-02-28 Comcast Cable Communications, Llc Adaptive buffer control
US9251055B2 (en) * 2012-02-23 2016-02-02 Kabushiki Kaisha Toshiba Memory system and control method of memory system
JP2013174975A (ja) * 2012-02-23 2013-09-05 Toshiba Corp メモリシステムとそのデータ書き込み方法
US9087568B1 (en) 2012-04-02 2015-07-21 Rambus Inc. Memory with merged control input
CN104272283B (zh) 2012-05-01 2017-08-04 马维尔国际贸易有限公司 用于dqs选通的系统和方法
JP5813589B2 (ja) 2012-07-13 2015-11-17 株式会社東芝 メモリシステムおよびその制御方法
US20140075174A1 (en) 2012-09-10 2014-03-13 Texas Instruments Incorporated Boot State Restore from Nonvolatile Bitcell Array
US9411722B2 (en) 2013-03-04 2016-08-09 Sandisk Technologies Llc Asynchronous FIFO buffer for memory access
US8832324B1 (en) 2013-03-15 2014-09-09 International Business Machines Corporation First-in-first-out queue-based command spreading
US10489158B2 (en) * 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
US20160124639A1 (en) 2014-11-05 2016-05-05 SanDisk Technologies, Inc. Dynamic storage channel
US10175889B2 (en) 2016-03-10 2019-01-08 Toshiba Memory Corporation Memory system capable of accessing memory cell arrays in parallel
JP6122170B1 (ja) 2016-03-16 2017-04-26 株式会社東芝 不揮発性ram及び不揮発性ramを含むシステム
US10120816B2 (en) * 2016-07-20 2018-11-06 Sandisk Technologies Llc Bad column management with data shuffle in pipeline
TWI607448B (zh) * 2016-09-07 2017-12-01 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US9851905B1 (en) 2016-09-29 2017-12-26 Intel Corporation Concurrent memory operations for read operation preemption
US10528255B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US10528286B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US10528267B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Command queue for storage operations
US10114589B2 (en) * 2016-11-16 2018-10-30 Sandisk Technologies Llc Command control for multi-core non-volatile memory
US10275378B2 (en) * 2017-03-07 2019-04-30 Western Digital Technologies, Inc. Data buffer pointer fetching for direct memory access
US10114586B1 (en) * 2017-06-22 2018-10-30 Western Digital Technologies, Inc. System and method for using host command data buffers as extended memory device volatile memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140351500A1 (en) * 2007-04-17 2014-11-27 Rambus Inc. Hybrid volatile and non-volatile memory device
CN102971795A (zh) * 2010-05-07 2013-03-13 莫塞德技术公司 使用单个缓冲区同时读取多个存储器装置的方法和设备
CN105138287A (zh) * 2012-07-22 2015-12-09 北京忆恒创源科技有限公司 存储设备、中断控制方法以及供电时间测量方法
CN104049910A (zh) * 2013-03-15 2014-09-17 三星电子株式会社 操作存储器系统的方法、存储器系统、和存储器控制器

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111386753A (zh) * 2017-10-27 2020-07-07 L3技术公司 飞行记录器存储器核心的热隔离
CN108345430A (zh) * 2017-12-27 2018-07-31 北京兆易创新科技股份有限公司 一种Nand flash元件及其运行控制方法和装置
CN108345430B (zh) * 2017-12-27 2021-08-10 北京兆易创新科技股份有限公司 一种Nand flash元件及其运行控制方法和装置
CN110618833A (zh) * 2018-06-19 2019-12-27 深圳大心电子科技有限公司 指令处理方法及存储控制器
CN110618833B (zh) * 2018-06-19 2022-01-11 深圳大心电子科技有限公司 指令处理方法及存储控制器
CN110875068A (zh) * 2018-08-31 2020-03-10 美光科技公司 存储器装置的命令在管线中计数器
CN110875068B (zh) * 2018-08-31 2022-07-29 美光科技公司 存储器装置的命令在管线中计数器

Also Published As

Publication number Publication date
CN107025069B (zh) 2021-09-28
US20170199668A1 (en) 2017-07-13
US10254967B2 (en) 2019-04-09

Similar Documents

Publication Publication Date Title
CN107025069A (zh) 非易失性存储器的数据路径控制
CN108074593A (zh) 用于非易失性存储器的接口
US10496544B2 (en) Aggregated write back in a direct mapped two level memory
CN108572796B (zh) 具有异构nvm类型的ssd
US10528267B2 (en) Command queue for storage operations
CN104025060B (zh) 支持近存储器和远存储器访问的存储器通道
US10528286B2 (en) Interface for non-volatile memory
CN108733581A (zh) 交叉点存储器阵列寻址
TWI679538B (zh) 資料儲存系統之控制單元以及邏輯至物理映射表更新方法
US9996280B2 (en) Data register copying for non-volatile storage array operations
CN108073357A (zh) 以raid方式存储数据的存储装置
JP7079349B2 (ja) 論理対物理データ構造
WO2017213908A1 (en) Method and apparatus for improving performance of sequential logging in a storage device
CN110018971A (zh) 缓存替换技术
KR102365602B1 (ko) 지능형 임계치 검출을 통한 커맨드 최적화
US10241938B1 (en) Output data path for non-volatile memory
KR20210087864A (ko) 판독-수정-기록 동작들의 감소된 레이턴시를 위한 시스템 및 방법
US11126624B2 (en) Trie search engine
CN109815157B (zh) 编程命令处理方法与装置
US20230153006A1 (en) Data processing method and data processing device
US20220398029A1 (en) Data Storage Device Having Predictive Analytics
CN109783404A (zh) 具有非对称通道的固态存储设备
CN208569620U (zh) 具有nid池的存储设备
CN112947845A (zh) 热数据识别方法及其存储设备
US20230359550A1 (en) File system integration into data mining model

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
GR01 Patent grant
GR01 Patent grant