CN117616404A - 主存储器缓冲区高速缓存管理 - Google Patents

主存储器缓冲区高速缓存管理 Download PDF

Info

Publication number
CN117616404A
CN117616404A CN202280049105.9A CN202280049105A CN117616404A CN 117616404 A CN117616404 A CN 117616404A CN 202280049105 A CN202280049105 A CN 202280049105A CN 117616404 A CN117616404 A CN 117616404A
Authority
CN
China
Prior art keywords
hmb
data
controller
storage device
link
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
Application number
CN202280049105.9A
Other languages
English (en)
Inventor
J·G·哈恩
S·贝尼斯蒂
A·纳翁
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 Technology Co
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN117616404A publication Critical patent/CN117616404A/zh
Pending legal-status Critical Current

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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0626Reducing size or complexity of storage systems
    • 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/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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本公开整体涉及主存储器缓冲区(HMB)高速缓存管理。HMB是瞬时存储器,并且可能不总是可用的。例如,当数据存储设备与主机设备之间的链路不处于活动状态时,数据存储设备不能访问HMB。将HMB日志放置在安置在数据存储设备中的HMB控制器中提供对原本在HMB中不可访问的数据的访问。HMB日志包括自最后一次复制到存储器设备中的HMB高速缓存以来已发生的任何差量,或者自链路处于非活动状态以来已发生的任何差量。HMB高速缓存镜像HMB。在这样做时,不仅当链路处于活动状态时,而且当链路不处于活动状态时,HMB的数据对数据存储设备可用。

Description

主存储器缓冲区高速缓存管理
相关申请的交叉引用
本申请出于所有目的要求于2021年11月15日提交的名称为“HOST MEMORY BUFFERCACHE MANAGEMENT(主存储器缓冲区高速缓存管理)”的美国非临时申请17/454,880号的全部内容的权益并且据此以引用方式并入。
背景技术
技术领域
本公开的实施方案总体涉及主存储器缓冲区(HMB)高速缓存管理。
相关技术描述
SSD通过PCIe接口连接到主机设备。PCIe接口用于通过满足给定性能需求来满足所需协议。客户端存储设备通常使用主存储器缓冲区(HMB)以便高速缓存元数据,诸如逻辑到物理(L2P)表、奇偶校验缓冲区和其他内部信息。元数据被打包进入内部SRAM中以及打包出内部SRAM,以便在控制器成本和性能之间提供平衡。HMB由主机设备提供,并且从主机动态随机存取存储器(DRAM)分配。数据存储设备使用在初始设置之后使用一组非易失性存储器快速(NVMe)命令的外围部件互连快速(PCIe)事务直接访问HMB。
为了实现最佳性能,数据存储设备可能需要在空闲时间期间执行维护。理想地,维护可以利用HMB以便提供用于表和操作数据的缓冲区空间。然而,主机功率管理指南通常限制链路功率并阻止HMB在主机设备空闲时的使用,因为维持链路、PCIe根复合体和DRAM激活所需的主机功率可以显著高于存储设备功率。
因此,存储设备可能需要维持多个流——一个流用于具有HMB访问的活动功率和第二流用于其中HMB受限或不使用的相同操作。这种多个流增加设备复杂性并提供固件(FW)问题的潜在表面。
因此,本领域需要改进的HMB高速缓存管理。
发明内容
本公开整体涉及主存储器缓冲区(HMB)高速缓存管理。HMB是瞬时存储器,并且可能不总是可用的。例如,当数据存储设备与主机设备之间的链路不处于活动状态时,数据存储设备不能访问HMB。将HMB日志放置在安置在数据存储设备中的HMB控制器中提供对原本在HMB中不可访问的数据的访问。HMB日志包括自最后一次复制到存储器设备中的HMB高速缓存以来已发生的任何差量,或者自链路处于非活动状态以来已发生的任何差量。HMB高速缓存镜像HMB。在这样做时,不仅当链路处于活动状态时,而且当链路不处于活动状态时,HMB的数据对数据存储设备可用。
在一个实施方案中,一种数据存储设备包括:存储器设备;和控制器,所述控制器耦接到所述存储器设备,其中所述控制器被配置为:确定链路是否在主存储器缓冲区(HMB)与所述控制器之间处于活动状态;将数据写入高速缓存中,其中写入所述高速缓存中的所述数据是打算写入所述HMB中的数据,其中所述数据是差量数据;以及更新HMB日志以指示差量数据的存在。
在另一个实施方案中,一种数据存储设备包括:存储器设备;和控制器,所述控制器耦接到所述存储器设备,其中所述控制器被配置为:接收将数据写入到主存储器缓冲区(HMB)的请求;将所述写入的指示记录到HMB日志;将所述数据写入高速缓存中,其中所述数据是差量数据;接收读取来自HMB的数据的读取请求;从除HMB之外的位置检索所请求数据的一部分;检索所述差量数据;并且返回所述差量数据和所请求数据的部分以履行所述读取请求。
在另一个实施方案中,一种数据存储设备包括:存储器装置;和控制器,所述控制器耦接到所述存储器装置,其中所述控制器被配置为:接收对从主存储器缓冲区(HMB)读取数据和将数据写入到HMB的请求;通过从除所述HMB之外的位置检索所请求数据来处理所述读取请求;并且通过将数据写入除所述HMB之外的位置来处理所述写入请求,其中在将所述数据写入除所述HMB之外的所述位置之后将所述数据写入HMB。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是示出根据某些实施方案的存储系统的示意性框图,其中数据存储设备可用作主机设备的存储设备。
图2是根据某些实施方案的链路功率管理流程图的图示。
图3是根据一个实施方案的具有高速缓存管理的HMB控制器的示意图。
图4A至图4C是示出根据一个实施方案的HMB的高速缓存管理引擎的逻辑的流程图。
图5是示出根据一个实施方案的HMB高速缓存管理的流程图。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想,在一个实施方案中公开的元件可有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
本公开整体涉及主存储器缓冲区(HMB)高速缓存管理。HMB是瞬时存储器,并且可能不总是可用的。例如,当数据存储设备与主机设备之间的链路不处于活动状态时,数据存储设备不能访问HMB。将HMB日志放置在安置在数据存储设备中的HMB控制器中提供对原本在HMB中不可访问的数据的访问。HMB日志包括自最后一次复制到存储器设备中的HMB高速缓存以来已发生的任何差量,或者自链路处于非活动状态以来已发生的任何差量。HMB高速缓存镜像HMB。在这样做时,不仅当链路处于活动状态时,而且当链路不处于活动状态时,HMB的数据对数据存储设备可用。
图1是根据某些实施方案的存储系统100的示意性框图,其中主机设备104与数据存储设备106通信。例如,主机设备104可以利用包括在数据存储设备106中的非易失性存储器(NVM)110来存储和检索数据。主机设备104包括主机DRAM 138。在一些示例中,存储系统100可以包括可作为存储阵列工作的多个存储设备,诸如数据存储设备106。例如,存储系统100可以包括多个数据存储设备106,该多个数据存储设备被配置为共同用作主机设备104的大容量存储设备的廉价/独立磁盘(RAID)冗余阵列。
主机设备104可以向一个或多个存储设备(诸如数据存储设备106)存储数据和/或从该一个或多个存储设备检索数据。如图1所示,主机设备104可以经由接口114与数据存储设备106通信。主机设备104可以包括多种设备中的任何一种,包括计算机服务器、网络附接存储(NAS)单元、台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、电话手机诸如所谓的“智能”电话、所谓的“智能”平板电脑、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备,或能够从数据存储设备发送或接收数据的其他设备。
数据存储设备106包括控制器108、NVM 110、电源111、易失性存储器112、接口114和写入缓冲区116。在一些示例中,为了清楚起见,数据存储设备106可以包括图1中未示出的附加部件。例如,数据存储设备106可以包括印刷电路板(PCB),数据存储设备106的部件机械地附接到该印刷板,并且该印刷板包括电互连数据存储设备106的部件等的导电迹线。在一些示例中,数据存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因子。一些示例性标准形状因子包括但不限于3.5”数据存储设备(例如,HDD或SSD)、2.5”数据存储设备、1.8”数据存储设备、外围部件互连(PCI)、PCI扩展(PCI-X)、PCI快速(PCIe)(例如,PCIe x1、x4、x8、x16、PCIe Mini卡、MiniPCI等)。在一些示例中,数据存储设备106可以直接耦接(例如,直接焊接或插入到连接器中)到主机设备104的母板。
接口114可以包括用于与主机设备104交换数据的数据总线和用于与主机设备104交换命令的控制总线中的一者或两者。接口114可以根据任何合适的协议工作。例如,接口114可以根据以下协议中的一个或多个操作:PCIe、非易失性存储器快速(NVMe)、OpenCAPI、GenZ、高速缓存共同接口加速器(CCIX)、开放通道SSD(OCSSD)等。接口114(例如,数据总线、控制总线或两者)电连接到控制器108,从而提供主机设备104与控制器108之间的电连接,允许在主机设备104与控制器108之间交换数据。在一些示例中,接口114的电连接还可以允许数据存储设备106从主机设备104接收电力。例如,如图1所示,电源111可以经由接口114从主机设备104接收电力。
NVM 110可包括多个存储器设备或存储器单元。NVM 110可以被配置为存储和/或检索数据。例如,NVM 110的存储器单元可接收数据和来自控制器108的指示存储器单元存储该数据的消息。类似地,存储器单元可从控制器108接收指示存储器单元检索数据的消息。在一些示例中,存储器单元中的每个存储器单元可以被称为裸片。在一些示例中,NVM110可包括多个裸片(例如,多个存储器单元)。在一些示例中,每个存储器单元可以被配置为存储相对大量的数据(例如,128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TB等)。
在一些示例中,每个存储器单元可以包括任何类型的非易失性存储器设备,诸如闪存存储器设备、相变存储器(PCM)设备、电阻随机存取存储器(ReRAM)设备、磁阻随机存取存储器(MRAM)设备、铁电随机存取存储器(F-RAM)、全息存储器设备、以及任何其他类型的非易失性存储器设备。
NVM 110可包括多个闪存存储器设备或存储器单元。NVM闪存存储器设备可包括基于NAND或NOR的闪存存储器设备,并且可基于包含在用于每个闪存存储器单元的晶体管的浮栅中的电荷来存储数据。在NVM闪存存储器设备中,闪存存储器设备可被划分成多个裸片,其中多个裸片中的每个裸片包括多个物理或逻辑块,这些物理或逻辑块可被进一步划分成多个页面。特定存储器设备内的多个块中的每个块可以包括多个NVM单元。NVM单元的行可以使用字线来电连接以限定多个页面中的页面。多个页面中的每个页面中的相应单元可以电连接到相应位线。此外,NVM闪存存储器设备可以是2D或3D设备,并且可以是单级单元(SLC)、多级单元(MLC)、三级单元(TLC)或四级单元(QLC)。控制器108可在页面层级向NVM闪存存储器设备写入数据以及从其读取数据,以及在块层级从NVM闪存存储器设备擦除数据。
电源111可以向数据存储设备106的一个或多个部件提供电力。当以标准模式操作时,电源111可以使用由外部设备诸如主机设备104提供的电力向一个或多个部件供电。例如,电源111可以使用经由接口114从主机设备104接收的电力向一个或多个部件供电。在一些示例中,电源111可以包括一个或多个电力存储部件,其被配置为当以关闭模式操作时向一个或多个部件供电,诸如在停止从外部设备接收电力的情况下。以这种方式,电源111可以用作机载备用电源。一个或多个电力存储部件的一些示例包括但不限于电容器、超级电容器、电池等。在一些示例中,可由一个或多个电力存储部件存储的电量可以是该等一个或多个电力存储部件的成本和/或尺寸(例如,面积/体积)的函数。换言之,随着由一个或多个电力存储部件存储的电量增加,一个或多个电力存储部件的成本和/或尺寸也增加。
易失性存储器112可由控制器108用来存储信息。易失性存储器112可包括一个或多个易失性存储器设备。在一些示例中,控制器108可使用易失性存储器112作为高速缓存。例如,控制器108可将高速缓存的信息存储在易失性存储器112中,直到高速缓存的信息被写入到NVM 110。如图1所示,易失性存储器112可以消耗从电源111接收的电力。易失性存储器112的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM)和同步动态RAM(SDRAM(例如,DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4、LPDDR4等))。
控制器108可以管理数据存储设备106的一个或多个操作。例如,控制器108可以管理从NVM 110读取数据和/或将数据写入该NVM。在一些实施方案中,当数据存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该NVM110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将该至少一个操作特性存储到该NVM 110。在一些实施方案中,当数据存储设备106从主机设备104接收到写入命令时,控制器108在将数据发送至NVM 110之前将与写入命令相关联的数据暂时存储在内部存储器或写入缓冲区116中。
图2是根据某些实施方案的链路状态流程图200的图示。存储系统100的各方面可在本文的描述中用于示例性目的。数据存储设备106包括若干链路状态。例如,数据存储设备106可以具有以下5个链路状态:L0、L0s、L1、L2和L3,其中L1包括L1.1子状态和L1.2子状态。链路状态中的每个链路状态与数据存储设备106的不同操作相关联。链路状态L0、L0s和L1被认为是操作链路状态并且利用第一功率范围,而链路状态L2和L3被认为是非操作链路状态,利用第二功率范围,其中第一功率范围大于第二功率范围。
操作链路状态是指主机设备104与数据存储设备106的NVM 110通信的能力。非操作链路状态是指由于主机设备104与控制器108之间的链路的关闭或断开而使主机设备104不能与数据存储设备106的NVM 110通信。列出的非操作链路状态不旨在是限制性的,并且可以包括其它链路状态,诸如L1.1和L1.2链路状态。此外,设想比链路状态流程图200中所示的链路状态数量更多或更少的链路状态可以是可用的,并且更多或更少的低功率链路状态可以适用于本文描述的实施方案。
链路状态被顺序地编号,其中较高的数字表示较低的功率需求(由于更多的离线电路)和对应较高的退出延迟。此外,每个链路状态具有相关联的功率需求和退出延迟。L0和L0s可能需要4.5W且具有最低退出延迟。L1可能比L0需要更少的功率,诸如3W,并且可以具有等于或高于L0的退出延迟的退出延迟。L2可能比L1需要更少的功率并且可以具有等于或高于L1的退出延迟的退出延迟。L3可能比L2需要更少的功率并且可以具有等于或高于L2的退出延迟的退出延迟。链路状态及退出延迟的值并非旨在进行限制,而是提供可能的实施方案的示例。
L0被称为完全操作状态,其中启用I/O命令并且设备可以生成中断。L0是链路状态,其中链路是正常操作的。中断是由于系统定时器或用户命令导致的固件执行的自动传输。链路状态L0s和L1也是操作状态;然而,L0s和L1可以具有比L0更低的功能性。例如,L0s具有与L0的功率需求类似的功率需求,但仅允许在一个方向上的串行链路。在L0s链路状态中,数据可以在一个方向上传递,但在另一个方向上不传递。因此,当第一设备通过链路耦接到第二设备时,第一设备可以与第二设备空闲第二设备的发射器独立地且单独地空闲第一设备的发射器,并且/或者反之亦然。
然而,L1允许双向串行链路并且允许更大的功率需求减少,但具有比L0和L0s更高的退出延迟。在L1链路状态中,没有传输数据,因此可以关闭PCIe收发器逻辑的关键部分。链路状态L2和L3是非操作链路状态,具有比操作链路状态的功率需求更少的功率需求。L2链路状态与L3链路状态之间的差异是辅助功率尚未从L2链路状态移除。此外,使NVM 110的未使用的存储器设备处于非操作链路状态L2和L3下以将空闲功率消耗限制为最小值。
为了发生I/O命令,在主机设备104与控制器108之间的链路(例如数据总线)被唤醒并置于L0链路状态。控制器108将主机设备104与控制器108之间的链路的链路状态从操作链路状态(诸如L0、L0s或L1)改变为不同的操作链路状态(诸如L0、L0s或L1),或者改变到非操作链路状态,诸如L2或L3,这取决于情况而定。然而,为了将链路放置成处于L2或L3中,链路将需要处于链路状态L2/L3准备就绪,这是针对功率和参考时钟的损失准备该部件的伪状态。当需要完全操作状态时,控制器108分配适当量的功率以将所有链路状态L0s、L1、L2、L3返回到链路状态L0。例如,为了从L2或L3返回到L0,链路在转变到L0之前转变为瞬态伪状态LDn。LDn状态可以是由上游部件(例如,主机设备104)的基本复位状态、热复位状态或链路禁用传输状态。
在一些实施方案中,链路状态L1包括另外的子状态L1.1和L1.2,其中链路状态L1可以被称为L1.0。L1子状态(L1SS)、L1.1和L1.2可能需要比L2和L3更多的功率以用于操作。然而,L1SS使用比L1.0状态更少的功率。在L1SS处,链路保持操作并且需要更少的功率来返回到更多操作状态,诸如L1.0或L0。此外,L1SS需要比L2和/或L3链路状态更少的时间来返回到完全活动链路状态L0。
如下文将讨论的,当主机设备与数据存储设备之间的链路不处于活动状态(即,当功率状态为L1或更低状态)时,HMB控制器处的透明高速缓存和管理引擎将允许访问HMB的数据。HMB控制器将HMB镜像到存储器设备。当PCIe链路受到限制时,引擎将捕获HMB写入交易并且在链路处于活动状态之后重放写入交易。读取交易将被重定向到存储器设备中的对应存储位置。合适的存储位置包括例如SLC缓冲区、任何非易失性存储介质或电力故障保护介质。
图3是根据一个实施方案的具有高速缓存管理的HMB控制器的示意图300。如图3所示,主存储器302包括由数据存储设备经由PCIe接口/前端控制器306访问的HMB 304。控制器306包括HMB控制器308。HMB日志310安置在HMB控制器308中。控制器306通过闪存管理和应用处理器312和存储器设备接口/后端314发送安置在存储器设备316中的HMB高速缓存318的任何数据。具有HMB日志310的HMB控制器308利用客户端环境中HMB使用的几个关键特征:HMB占有面积相对较小(例如,64MB或更小);虽然可以在存储器设备中保存L2P更新之前对HMB作出L2P更新,但是大多数元数据最终都会在存储器设备中;并且对HMB的性能敏感的访问始终是当链路完全处于活动状态时——对HMB的空闲访问不是性能敏感的。
管理引擎322位于HMB控制器308内并且维持本地SRAM高速缓存320,该本地SRAM高速缓存对HMB 304的最活跃部分进行镜像。HMB访问的HMB日志310也维持在SRAM高速缓存320中,而在最近访问之后的访问可能溢出到存储器设备或其它非易失性介质内的专用日志空间。当PCIe链路减小到L1或更低(L1.2或L2/L3准备就绪)时,所有未发送的HMB访问被重定向到引擎并且从SRAM高速缓存320或存储器设备316HMB高速缓存318履行。然而,从设备固件角度来看,管理引擎322是透明的并且HMB请求继续被创建并回答。应当理解,虽然已经讨论和举例说明SRAM高速缓存320,但是本地存储不限于SRAM高速缓存320。相反,本地存储可以是任何易失性或非易失性快速存储介质。
因此,维持HMB始终可用的外观,因为HMB控制器308确保驻留在或预期驻留在HMB304中的数据始终可以通过HMB控制器308访问,即使当链路不处于活动状态时。HMB 304中的每个条目被遮蔽在存储器设备316中,或更具体地,HMB高速缓存318中,以及在HMB日志310内跟踪任何差量并且差量被维持在SRAM高速缓存320内。应当理解,虽然已经讨论和举例说明SRAM高速缓存320,但是本地存储不限于SRAM高速缓存320。相反,本地存储可以是任何易失性或非易失性快速存储介质。因此,当链路处于活动状态时,任何读取操作可以通过HMB 304,或者当链路不处于活动状态时,读取操作通过具有来自HMB控制器308的差量的存储器设备316。
HMB控制器308可以是固件或硬件,并且控制HMB 304和纠错。HMB日志310遮蔽HMB304中的任何内容,并将遮蔽信息发送到HMB高速缓存318。如果主机设备与数据存储设备之间的链路处于活动状态,则所有HMB读取/写入转到HMB 304并且记录在具有任何差量的HMB日志310中,其中任何尚未镜像到HMB高速缓存318的差量存在于SRAM高速缓存320中。最终,数据将在HMB高速缓存318中镜像。如果主机设备与数据存储设备之间的链路不处于活动状态,则所有HMB读取/写入通过任何差量转到HMB高速缓存318,该差量记录在HMB日志310中并从SRAM高速缓存320检索。
图4A至图4C是示出根据一个实施方案的HMB的高速缓存管理引擎的逻辑的流程图400、430、450。如图4A所示,在402处发生HMB初始化,并且在404处将L2P表从存储器设备(例如,NAND)复制到HMB。表的源位置保留在HMB控制器内,以用作当HMB离线时的基线。也可以使用其它源,或者可以为目的指定专用SLC缓冲区。在406处保留存储器设备源位置以用于未来更新回放,和在408处初始化基于SRAM的结构以跟踪修改。应当理解,虽然已经讨论和举例说明了专用SRAM缓冲区,但是本地存储不限于专用SRAM缓冲区。相反,本地存储可以是任何易失性或非易失性快速存储介质。
将修改的差量列表维持在SRAM中,并且也维持在存储器设备(例如,NAND)中。差量列表最初是空的,因为HMB和存储器设备同步。当存储固件将增量更新写入到HMB时,更新自动记录到SRAM差量列表中。然后,一旦SRAM列表达到最大大小,就可以将差量合并回到该差量的原始源或溢出到基于存储器设备(例如,NAND)的位置中。周期性地,原始位置与HMB重新同步,并且将差量列表重置。在达到阈值之后或在执行维护操作之前,休止通常会发生。
如图4B所示,当存储固件在432处将HMB读取命令发出到HMB控制器时,在434处HMB控制器将检查PCIe链路是否处于活动状态。如果链路处于活动状态,则在436处命令将被传递到HMB,并且将从HMB获取读取有效载荷。然而,如果链路处于低功率状态,则将通过使用存储器设备中的原始源(或保持源内容的任何其它缓冲区)和自最后一次合并以来应用的任何差量的组合来解决读取命令。更具体地,在438处检查SRAM结构的存储器设备版本或读取有效载荷,并且如果需要,在440处应用在增量写入期间记载的任何差量。应当理解,虽然已经讨论和举例说明了SRAM结构,但是本地存储不限于SRAM结构。相反,本地存储可以是任何易失性或非易失性快速存储介质。一旦恢复链路,将所有分级的差量重放回到HMB,使得新读取可以直接从HMB进行,而不是通过在每个读取中应用新更新。
如图4C所示,在452处当存储固件将HMB增量写入命令发出到HMB控制器时,在454处HMB控制器将在SRAM差量列表中记录写入命令并执行两个检查。一个检查是在458处查看链路是否处于活动状态。如果在458处链路处于活动状态,则在464处数据被写入到HMB。如果链路不处于活动状态,则在462处写入发生到SRAM高速缓存,并且该写入最终发生到存储器设备中的HMB高速缓存。另外的检查是在456处确定差量列表是否已满。如果差量列表未满,则在462处写入发生到SRAM高速缓存,并且该写入最终发生到存储器设备中的HMB高速缓存。如果在456处差量列表已满,则在460处将差量合并到存储器设备目标。
如果存储器设备HMB高速缓存尚未更新,则差量将是必要的,并且必须保持,即使该差量已被合并。另外,可以在用差量更新存储器设备中的HMB高速缓存之前更新HMB。此外,如果在链路不处于活动状态时发生到HMB的写入,则在链路恢复时必要的到HMB的唯一更新将是差量,该差量保持在SRAM中。一旦链路处于活动状态,将存储在SRAM中的差量发送到HMB。如果存在太多的差量,那么差量被发送到存储器设备,并且具体地,发送到HMB高速缓存,其随后可以在链路恢复时用HMB重新同步。用于写入的增量高速缓存缓冲区对固件逻辑是透明的。
图5是示出根据一个实施方案的HMB高速缓存管理的流程图500。最初,在502处确定需要将数据写入到HMB。基于该确定,作出另一确定。具体地,在504处确定安置在位于数据存储设备中的HMB控制器中的HMB日志是否已满。如果HMB日志已满,则在508处需要合并HMB日志的数据并将其发送到存储器设备。然而,如果HMB日志未满,则在506处更新HMB日志以指示发生差量写入。差量写入是对HMB的写入,该写入更改或导致差量,该差量是HMB中已有数据的差量。差量可以是对HMB的新数据或更新已经存在于HMB中的数据。在任何情况下,在510处更新HMB日志,并且将实际差量数据写入SRAM中。
在此时间点,差量数据和差量数据的日志存在于数据存储设备中,并且更具体地,存在于数据存储设备的HMB控制器中。需要将差量数据写入到HMB,因此在512处,HMB控制器确定HMB与数据存储设备之间的链路是否处于活动状态。如果链路不处于状态活动,则HMB控制器等待直到链路最终处于活动状态。同时,当链路不处于活动状态时,将根据在502处开始的过程处理对HMB的任何新的增量写入请求。
如果在512处链路处于活动状态,则在514处将差量数据写入到HMB。如果在516处已经满足阈值,则在518处将数据镜像到存储器设备,具体地镜像到HMB高速缓存,在520处将HMB日志清空,并且在522处从SRAM中删除差量数据,因为HMB高速缓存和HMB在该时间点处是相同的。阈值可以是例如时间阈值或写入差量写入数。如果尚未满足阈值,则存储器设备未被更新,并且因此HMB和HMB高速缓存将是不同的,其中差异是差量数据在HMB日志中被注释并且包含在SRAM中。
当HMB和HMB控制器之间的链路处于活动状态时,正常处理HMB读取请求。当链路处于活动状态时,数据简单地从HMB读取。然而,设想HMB尚未用差量数据更新。因此,在执行HMB读取之前,将任何差量数据写入到HMB。
当链路不处于活动状态时,数据反而从HMB高速缓存获取,并且差量数据从SRAM高速缓存获取。在这样做时,即使HMB不可访问,也履行HMB读取请求。为尚未写入到HMB的增量写入的差量数据实际上可以被读取。在不存在存储在HMB之外的增量写入或差量数据的情况下,HMB读取请求可以不执行或可以返回无效数据,因为从HMB高速缓存检索的数据将是不完整的(即,差量数据将丢失)。在差量数据被存储的情况下,可以执行HMB请求并提供有效数据。
通过用HMB日志遮蔽HMB,当数据存储设备与主机设备之间的链路不处于活动状态时,可以轻松检索HMB数据。此外,自HMB最后一次复制到存储器设备中的HMB高速缓存以来已发生的任何差量均在HMB日志中找到。另外,在链路不处于活动状态时发生的任何差量可以在链路激活时复制到HMB。此外,硬件中HMB高速缓存管理的更好控制允许与NVMe协议完全对准,并且减少潜在主机功率而不会使利用HMB的固件逻辑复杂化。控制器中特征的具体实施可以消除固件不与链路功率管理完全同步情况下的潜在拐角状况。当应用侵袭性主机侧电源管理策略时,本文描述的实施方案提高了HMB管理并简化了HMB交互。
在一个实施方案中,一种数据存储设备包括:存储器设备;和控制器,所述控制器耦接到所述存储器设备,其中所述控制器被配置为:确定链路是否在主存储器缓冲区(HMB)与所述控制器之间处于活动状态;将数据写入高速缓存中,其中写入所述高速缓存中的所述数据是打算写入所述HMB中的数据,其中所述数据是差量数据;以及更新HMB日志以指示差量数据的存在。所述控制器被进一步配置为一旦所述链路处于活动状态,用所述差量数据更新HMB,并且其中所述控制器被进一步配置为通过将数据写入到安置在所述存储器设备中的HMB高速缓存来镜像所述HMB中的数据。所述确定确定所述链路不处于活动状态,其中在更新所述HMB日志时,所述HMB中的数据与存储在HMB高速缓存中的数据不同。HMB中的所述数据与存储在HMB高速缓存中的数据和所述差量数据的组合相同。
在另一个实施方案中,一种数据存储设备包括:存储器设备;和控制器,所述控制器耦接到所述存储器设备,其中所述控制器被配置为:接收将数据写入到主存储器缓冲区(HMB)的请求;将所述写入的指示记录到HMB日志;将所述数据写入高速缓存中,其中所述数据是差量数据;接收读取来自HMB的数据的读取请求;从除HMB之外的位置检索所请求数据的一部分;检索所述差量数据;并且返回所述差量数据和所请求数据的部分以履行所述读取请求。所述控制器被进一步配置为确定所述控制器与所述HMB之间的链路不处于活动状态。当检索所请求数据的部分和所述差量数据时,所述链路不处于活动状态。所述高速缓存安置在所述控制器中。从HMB高速缓存中检索所请求数据的部分。所述HMB高速缓存安置在所述存储器设备中。所述控制器被进一步配置为在确定所述HMB与所述控制器之间的链路处于活动状态时将所述差量数据写入到HMB。所述控制器被配置为在接收到所述读取请求之前将所述差量数据写入到HMB。所述控制器被配置为确定所述HMB日志是否已满。所述控制器被配置为将来自所述HMB日志的数据合并,并将所合并的数据刷新到所述存储器设备。
在另一个实施方案中,一种数据存储设备包括:存储器装置;和控制器,所述控制器耦接到所述存储器装置,其中所述控制器被配置为:接收对从主存储器缓冲区(HMB)读取数据和将数据写入到HMB的请求;通过从除所述HMB之外的位置检索所请求数据来处理所述读取请求;并且通过将数据写入除所述HMB之外的位置来处理所述写入请求,其中在将所述数据写入除所述HMB之外的所述位置之后将所述数据写入HMB。与所述读取请求相关联的所述数据安置在HMB、所述存储器装置和SRAM高速缓存中。所述控制器还包括管理引擎,其中所述管理引擎包括HMB日志和SRAM高速缓存。除所述HMB之外的所述位置包括安置在控制器中的高速缓存。所述控制器被进一步配置为记录对除所述HMB之外的所述位置的数据写入。所述控制器被进一步配置为在确定所述HMB与所述控制器之间的链路处于活动状态时,从除所述HMB之外的所述位置将数据复制到所述HMB。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。

Claims (20)

1.一种数据存储设备,包括:
存储器设备;和
控制器,所述控制器耦接到所述存储器设备,其中所述控制器被配置为:
确定链路是否在主存储器缓冲区(HMB)与所述控制器之间处于活动状态;
将数据写入高速缓存中,其中写入所述高速缓存中的所述数据是打算写入所述HMB中的数据,其中所述数据是差量数据;以及
更新HMB日志以指示差量数据的存在。
2.根据权利要求1所述的数据存储设备,其中所述控制器被进一步配置为一旦所述链路处于活动状态,用所述差量数据更新HMB,并且其中所述控制器被进一步配置为通过将数据写入到安置在所述存储器设备中的HMB高速缓存来镜像所述HMB中的数据。
3.根据权利要求1所述的数据存储设备,其中所述确定确定所述链路不处于活动状态,其中在更新所述HMB日志时,所述HMB中的数据与存储在HMB高速缓存中的数据不同。
4.根据权利要求3所述的数据存储设备,其中HMB中的所述数据与所述差量数据和存储在HMB高速缓存中的数据的组合相同。
5.一种数据存储设备,包括:
存储器设备;和
控制器,所述控制器耦接到所述存储器设备,其中所述控制器被配置为:
接收将数据写入到主存储器缓冲区(HMB)的请求;
将所述写入的指示记录到HMB日志;
将所述数据写入高速缓存中,其中所述数据是差量数据;
接收读取来自HMB的数据的读取请求;
从除HMB之外的位置检索所请求数据的一部分;
检索所述差量数据;以及
返回所述差量数据和所请求数据的所述部分以履行所述读取请求。
6.根据权利要求5所述的数据存储设备,其中所述控制器被进一步配置为确定所述控制器与所述HMB之间的链路不处于活动状态。
7.根据权利要求6所述的数据存储设备,其中当检索所请求数据的所述部分和所述差量数据时,所述链路不处于活动状态。
8.根据权利要求5所述的数据存储设备,其中所述高速缓存被安置在所述控制器中。
9.根据权利要求5所述的数据存储设备,其中从HMB高速缓存中检索所请求数据的所述部分。
10.根据权利要求9所述的数据存储设备,其中所述HMB高速缓存安置在所述存储器设备中。
11.根据权利要求5所述的数据存储设备,其中所述控制器被进一步配置为在确定所述HMB与所述控制器之间的链路处于活动状态时,将所述差量数据写入到HMB。
12.根据权利要求5所述的数据存储设备,其中所述控制器被配置为在接收到所述读取请求之前将所述差量数据写入到HMB。
13.根据权利要求5所述的数据存储设备,其中所述控制器被配置为确定所述HMB日志是否已满。
14.根据权利要求5所述的数据存储设备,其中所述控制器被配置为将来自所述HMB日志的数据合并,并将所合并的数据刷新到所述存储器设备。
15.一种数据存储设备,包括:
存储器装置;以及
控制器,所述控制器耦接到所述存储器装置,其中,所述控制器被配置为:
接收从主存储器缓冲区(HMB)读取数据和将数据写入到所述HMB的请求;
通过从除所述HMB之外的位置检索所请求数据来处理所述读取请求;以及
通过将数据写入除所述HMB之外的位置来处理所述写入请求,其中在将所述数据写入除所述HMB之外的所述位置之后将所述数据写入HMB。
16.根据权利要求15所述的数据存储设备,其中与所述读取请求相关联的所述数据安置在HMB、所述存储器装置和SRAM高速缓存中。
17.根据权利要求15所述的数据存储设备,其中所述控制器还包括管理引擎,其中所述管理引擎包括HMB日志和SRAM高速缓存。
18.根据权利要求15所述的数据存储设备,其中除所述HMB之外的所述位置包括安置在所述控制器中的高速缓存。
19.根据权利要求15所述的数据存储设备,其中所述控制器被进一步配置为记录对除所述HMB之外的所述位置的数据写入。
20.根据权利要求15所述的数据存储设备,其中所述控制器被进一步配置为在确定所述HMB与所述控制器之间的链路处于活动状态时,从除所述HMB之外的所述位置将数据复制到所述HMB。
CN202280049105.9A 2021-11-15 2022-05-16 主存储器缓冲区高速缓存管理 Pending CN117616404A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/454,880 2021-11-15
US17/454,880 US11853603B2 (en) 2021-11-15 2021-11-15 Host memory buffer cache management
PCT/US2022/029365 WO2023086127A1 (en) 2021-11-15 2022-05-16 Host memory buffer cache management

Publications (1)

Publication Number Publication Date
CN117616404A true CN117616404A (zh) 2024-02-27

Family

ID=86324648

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280049105.9A Pending CN117616404A (zh) 2021-11-15 2022-05-16 主存储器缓冲区高速缓存管理

Country Status (5)

Country Link
US (1) US11853603B2 (zh)
JP (1) JP2024525777A (zh)
CN (1) CN117616404A (zh)
DE (1) DE112022002681T5 (zh)
WO (1) WO2023086127A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230030168A1 (en) * 2021-07-27 2023-02-02 Dell Products L.P. Protection of i/o paths against network partitioning and component failures in nvme-of environments

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8966176B2 (en) 2010-05-27 2015-02-24 Sandisk Il Ltd. Memory management storage to a host device
US10268584B2 (en) 2014-08-20 2019-04-23 Sandisk Technologies Llc Adaptive host memory buffer (HMB) caching using unassisted hinting
US20170242606A1 (en) 2016-02-19 2017-08-24 Sandisk Technologies Llc Methods and systems for transitioning to and from different storage device power states using host memory buffer (hmb)
US10725677B2 (en) * 2016-02-19 2020-07-28 Sandisk Technologies Llc Systems and methods for efficient power state transitions
US10521118B2 (en) 2016-07-13 2019-12-31 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB)
US10579560B2 (en) 2016-08-31 2020-03-03 Futurewei Technologies, Inc. Transaction-based hybrid memory
KR20180043451A (ko) 2016-10-19 2018-04-30 삼성전자주식회사 컴퓨팅 시스템 및 그것의 동작 방법
US10496319B2 (en) 2017-02-28 2019-12-03 Sap Se Lifecycle management for data in non-volatile memory including blocking creation of a database savepoint and associating non-volatile memory block identifiers with database column fragments
US10572185B2 (en) 2018-06-01 2020-02-25 Western Digital Technologies, Inc. Non-volatile storage system with command replay
KR20200113989A (ko) 2019-03-27 2020-10-07 에스케이하이닉스 주식회사 메모리 시스템의 쓰기 동작을 제어하는 방법 및 장치
US11093174B1 (en) 2020-02-19 2021-08-17 Dell Products L.P. Information handling system having improved host memory buffer for input/output requests

Also Published As

Publication number Publication date
US11853603B2 (en) 2023-12-26
WO2023086127A1 (en) 2023-05-19
DE112022002681T5 (de) 2024-03-21
JP2024525777A (ja) 2024-07-12
US20230153027A1 (en) 2023-05-18

Similar Documents

Publication Publication Date Title
US11954369B2 (en) Command draining using host memory buffer
US11861217B2 (en) DRAM-less SSD with command draining
KR20220010424A (ko) 메모리 디바이스들의 병렬 부트 실행
CN116888572A (zh) 增强的d3-cold和更快的恢复
CN117616404A (zh) 主存储器缓冲区高速缓存管理
US20230297277A1 (en) Combining Operations During Reset
WO2024063821A1 (en) Dynamic and shared cmb and hmb allocation
WO2024063822A1 (en) Partial speed changes to improve in-order transfer
CN114168067B (zh) 使用虚设虚拟功能的NVMe简单复制命令支持
CN117730305A (zh) 用于低功率模式的nvm中的选择性hmb备份
CN117642716A (zh) 从hmb丢失的恢复
US20210389885A1 (en) Fast Recovery For Persistent Memory Region (PMR) of a Data Storage Device
US12118242B2 (en) DRAM-less SSD with HMB cache management
US11726911B2 (en) NVMe persistent memory region quick copy
US11960397B2 (en) Data mapping comparison for improved synchronization in data storage devices
US11893253B1 (en) Dynamic TD-PPM state and die mapping in multi-NAND channels
US20240078032A1 (en) Metadata Management In Key Value Data Storage Device
US20240329880A1 (en) Flash Interface With Switching Logic
US20240272794A1 (en) Data padding reduction in log copy
US20240094950A1 (en) Block layer persistent memory buffer
WO2024072499A1 (en) Finding and releasing trapped memory in ulayer
WO2023196176A1 (en) Storage optimization of cat table during background operations
JP2024524720A (ja) エンタープライズホストメモリバッファ
CN115840661A (zh) 从hmb丢失恢复的无dram ssd

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240828

Address after: California, USA

Applicant after: SanDisk Technology Co.

Country or region after: U.S.A.

Address before: California, USA

Applicant before: Western Digital Technologies, Inc.

Country or region before: U.S.A.