CN111352865B - 存储控制器的写缓存 - Google Patents
存储控制器的写缓存 Download PDFInfo
- Publication number
- CN111352865B CN111352865B CN201811581282.3A CN201811581282A CN111352865B CN 111352865 B CN111352865 B CN 111352865B CN 201811581282 A CN201811581282 A CN 201811581282A CN 111352865 B CN111352865 B CN 111352865B
- Authority
- CN
- China
- Prior art keywords
- cache
- unit
- entry
- logical address
- write
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了存储控制器的写缓存。所公开的命令处理方法包括如下步骤:获取写命令;响应于写命令命中缓存队列的条目,将写命令要写入的数据写入与条目对应的缓存单元。
Description
技术领域
本申请涉及存储技术,特别地,涉及存储控制器中的写缓存硬件。
背景技术
图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE (Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同固态存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。固态存储设备102包括接口103、控制部件104、一个或多个NVM 芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、 MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive Random AccessMemory,阻变存储器)、XPoint存储器等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问 DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105 的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。这些情况下,存储设备所接收的读/写命令指示逻辑地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL 表是固态存储设备中的重要元数据。通常FTL表的条目记录了固态存储设备中以数据页为单位的地址映射关系。
一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储FTL表,主机的CPU执行软件提供FTL。还有一些被设置在主机与存储设备之间的存储管理装置提供FTL。这些情况下,存储设备所接收的读/写命令指示物理地址。
主机提供给存储设备的命令可能访问FTL表的一个或多个条目所对应的逻辑地址空间。以及控制部件可能将从接口103接收的命令改变形态(例如,根据FTL条目所对应的逻辑地址空间大小切分命令),并处理改变形态的命令。
为了清楚的目的,在本文中,以存储设备接收的读/写命令访问单一FTL 条目为例来描述。
存储设备的控制部件104提供由运行在控制部件104的处理器中的软件所管理的写缓存。对于写命令,待写入的数据被临时存储在写缓存,以降低写命令的处理延迟。若写命令命中了写缓存,将写命令对应的数据存储在被命中的写缓存。对于读命令,若读命令命中了写缓存则,则用写缓存中的数据来响应读命令。写缓存还用于处理“小写”。访问单一FTL条目对应的地址空间的部分(而非全部)的写命令,称为小写命令。小写命令对应的数据被存储在写缓存,还从存储设备的NVM芯片读取小写命令访问的FTL条目的地址空间中未必小写命令访问的部分,将读出的部分也存储在写缓存,将这种操作称为对FTL条目对应的地址空间的合并。
发明内容
软件实现的写缓存给控制部件的处理器带来很大的负载,在性能上也有待提高。
根据本申请的实施例,提供了硬件实现的写缓存,以分担处理器的负载,并提高性能。
根据本申请的第一方面,提供了根据本申请第一方面的第一命令的处理方法,其中,包括如下步骤:获取写命令;响应于写命令命中缓存队列的条目,将写命令要写入的数据写入与条目对应的缓存单元。
根据本申请第一方面的第一命令的处理方法,提供了本申请第一方面的第二命令的处理方法,其中,比较写命令访问的逻辑地址与缓存队列的一个或多个条目的逻辑地址,判断写命令是否命中缓存队列的条目。
根据本申请第一方面的第一至第二任一项的命令的处理方法,提供了本申请第一方面的第三命令的处理方法,其中,缓存队列的条目记录了写命令的逻辑地址、标记与缓存单元索引。
根据本申请第一方面的第三命令的处理方法,提供了本申请第一方面的第四命令的处理方法,其中,缓存单元索引指示了缓存单元的逻辑地址或编号。
根据本申请第一方面的第三或四命令的处理方法,提供了本申请第一方面的第五命令的处理方法,其中,缓存队列的每个条目具有指定的缓存单元,根据条目在缓存队列中的编号得到缓存单元的索引。
根据本申请第一方面的第三至五任一项的命令的处理方法,提供了本申请第一方面的第六命令的处理方法,其中,标记指示写命令访问的逻辑地址是否覆盖了缓存队列条目对应的逻辑地址空间。
根据本申请第一方面的第五命令的处理方法,提供了本申请第一方面的第七命令的处理方法,其中,根据逻辑地址查询缓存队列中的条目,条目指示写命令命中了待合并的缓存单元,对缓存单元进行合并。
根据本申请第一方面的第七命令的处理方法,提供了本申请第一方面的第八命令的处理方法,其中,响应于对缓存单元进行合并,将条目的标记状态设置为不需要合并,合并计数器的数值减1。
根据本申请第一方面的第一至八任一项的命令的处理方法,提供了本申请第一方面的第九命令的处理方法,其中,响应于收到写命令,判断写命令是否向缓存队列的条目对应的完整逻辑地址空间写入数据。
根据本申请第一方面的第七命令的处理方法,提供了本申请第一方面的第十命令的处理方法,其中,若写命令未向缓存队列的条目对应的完整逻辑地址空间写入数据,则将条目的标记设置为指示待合并,合并计数器的数值增加1。
根据本申请第一方面的第十命令的处理方法,提供了本申请第一方面的第十一命令的处理方法,其中,若写命令指示向缓存队列的第一条目对应的完整逻辑地址空间的部分写入数据,将写命令要写入的数据写入分配的第一缓存单元,并从非易失性存储器中读出第一条目对应的逻辑地址空间剩余的数据。
根据本申请第一方面的第十一命令的处理方法,提供了本申请第一方面的第十二命令的处理方法,其中,响应于读出了第一条目对应的逻辑地址空间的剩余数据,将第一条目的标记设置为不需要合并,合并计数器的数值递减1。
根据本申请第一方面的第十一命令的处理方法,提供了本申请第一方面的第十三命令的处理方法,其中,若写命令指示向缓存队列的第一条目对应的完整逻辑地址空间的部分写入数据,将写命令对应的数据写入第一缓存单元,若第一缓存单元依然未记录第一条目对应的完整逻辑地址空间的数据,第一条目的标记状态不改变,合并计数器不更新。
根据本申请第一方面的第一至十三任一项命令的处理方法,提供了本申请第一方面的第十四个命令的处理方法,其中,若写命令没有命中缓存队列的条目,向缓存队列添加条目。
根据本申请第一方面的第一至十四任一项命令的处理方法,提供了本申请第一方面的第十五个命令的处理方法,其中,若缓存队列的被填充条目数量大于阈值,将缓存队列的一个或多个条目对应的缓存单元中存储的数据写入非易失性存储器。
根据本申请第一方面的第十五命令的处理方法,提供了本申请第一方面的第十六命令的处理方法,其中,还包括检查缓存队列是否有待合并的缓存单元。
根据本申请第一方面的第十六命令的处理方法,提供了本申请第一方面的第十七命令的处理方法,其中,根据合并计数器的数值来判断缓存队列是否有待合并的缓存单元。
根据本申请第一方面的第十七命令的处理方法,提供了本申请第一方面的第十八命令的处理方法,其中,若检查缓存队列有待合并的缓存单元,则对缓存单元进行合并后再将缓存单元中存储的数据写入非易失性存储器。
根据本申请第一方面的第一至十八任一项的命令的处理方法,提供了本申请第一方面的第十九命令的处理方法,其中,包括如下步骤:获取读命令;响应于读命令命中缓存队列的条目,访问条目对应的缓存单元,获取读命令访问的数据。
根据本申请第二方面,提供了根据本申请第二方面的第一控制部件,其中,包括处理器、缓存写单元与缓存查询单元;处理器向缓存写单元提供写命令;缓存写单元从写命令获取逻辑地址,并将逻辑地址提供给缓存查询单元;缓存查询单元查询缓存写单元提供的逻辑地址是否命中了缓存队列的条目;响应于缓存查询单元指示逻辑地址命中了缓存队列的第一条目,缓存写单元将写命令要写入的数据写入第一条目对应的缓存单元。
根据本申请第二方面的第一控制部件,提供了本申请第二方面的第二控制部件,其中,缓存查询单元与缓存队列的各条目耦合,将写命令的逻辑地址与缓存队列的各条目的逻辑地址比较,判断写命令是否命中了缓存队列的条目之一。
根据本申请第二方面的第一或二控制部件,提供了本申请第二方面的第三控制部件,其中,还包括缓存管理单元,响应于缓存查询单元指示逻辑地址未命中缓存队列的任何条目,缓存写单元通过缓存管理单元将写命令的逻辑地址与标记添加到缓存队列队尾的条目中。
根据本申请第二方面的第一控制部件,提供了本申请第二方面的第四控制部件,其中,响应于缓存查询单元指示逻辑地址命中了缓存队列的第一条目,缓存写单元通过缓存管理单元将写命令要写入的数据写入第一条目对应的缓存单元。
根据本申请第二方面的第三至四任一项的控制部件,提供了本申请第二方面的第五控制部件,其中,缓存管理单元通过被写入的条目在缓存队列中的编号生成缓存单元索引、或缓存管理单元为被写入的条目分配可用的缓存单元,并在条目中记录所分配的缓存单元的索引。
根据本申请第二方面的第三至五任一项的控制部件,提供了本申请第二方面的第六控制部件,其中,缓存写单元根据写命令访问的逻辑地址是否覆盖了缓存队列的条目对应的逻辑地址空间来生成标记。
根据本申请第二方面的第三至六任一项的控制部件,提供了本申请第二方面的第七控制部件,其中,缓存管理单元还包括合并计数器,合并计数器的数值指示了缓存队列中存储的未容纳逻辑地址空间的完整数据的条目的数量。
根据本申请第二方面的第三至七任一项的控制部件,提供了本申请第二方面的第八控制部件,其中,若缓存写单元判断写命令未向缓存队列的条目对应的完整逻辑地址空间写入数据,缓存写单元向处理器提供信号。
根据本申请第二方面的第三至七任一项的控制部件,提供了本申请第二方面的第九控制部件,其中,若缓存写单元判断写命令未向缓存队列的第一条目对应的完整逻辑地址空间写入数据,缓存写单元向处理器提供信号。
根据本申请第二方面的第九控制部件,提供了本申请第二方面的第十控制部件,其中,响应于收到缓存写单元向处理器提供信号,处理器从非易失性存储器中读出第一条目对应的逻辑地址空间未被写入的部分的数据。
根据本申请第二方面的第十控制部件,提供了本申请第二方面的第十一控制部件,其中,响应于第一条目对应的逻辑地址空间被补充完整,缓存写单元第二条目的标志设置为不需要合并,以及缓存写单元指示缓存管理单元将合并计数器的值递减。
根据本申请第二方面的第十控制部件,提供了本申请第二方面的第十二控制部件,其中,响应于缓存写单元将写命令要写入的数据写入第一缓存单元,若缓存写单元判断第二写命令未向缓存队列的第一条目对应的完整逻辑地址空间写入数据,缓存写单元不向处理器提供信号,使第一条目的标记状态不改变,以及不更新合并计数器。
根据本申请第二方面的第十一或十二控制部件,提供了本申请第二方面的第十三控制部件,其中,响应于缓存查询单元指示第二写命令的逻辑地址命中了缓存队列的第一条目,缓存写单元将第二写命令要写入的数据写入第一条目对应的缓存单元;响应于缓存写单元将第二写命令要写入的数据写入第一缓存单元,若第一缓存单元依然未记录第一条目对应的完整逻辑地址空间的数据,第一条目的标记状态不改变,合并计数器不更新。
根据本申请第二方面的第一至十三控制部件,提供了本申请第二方面的第十四控制部件,其中,响应于缓存查询单元查询到写命令的逻辑地址没有命中缓存队列的条目,缓存查询单元指示缓存写单元向缓存队列添加条目。
根据本申请第二方面的第一至十四控制部件,提供了本申请第二方面的第十五控制部件,其中,若有待合并的缓存单元,则处理器对待合并的缓存单元进行合并,再将缓存单元中存储的数据写入非易失性存储器。
根据本申请第二方面的第一至十五控制部件,提供了本申请第二方面的第十六控制部件,其中,还包括缓存读单元,缓存读单元与处理器、缓存查询单元与缓存管理单元耦合,接收处理器发送的读命令及其逻辑地址,并将逻辑地址提供给缓存查询单元。
根据本申请第二方面的第十六控制部件,提供了本申请第二方面的第十七控制部件,其中,缓存查询单元查询缓存读单元提供的逻辑地址是否命中了缓存队列的条目。
根据本申请第二方面的第十七控制部件,提供了本申请第二方面的第十八控制部件,其中,若缓存查询单元指示逻辑地址命中了缓存队列的第一条目,缓存读单元访问第一条目对应的缓存单元。
根据本申请第二方面的第一至十八控制部件,提供了本申请第二方面的第十九控制部件,其中,响应于缓存队列被填充的条目数量大于第一阈值或未被填充的条目数量小于第二阈值,缓存管理单元向处理器提供第二信号;处理器响应于收到第二信号,对缓存的队列实施刷写操作。
根据本申请第二方面的第十九控制部件,提供了本申请第二方面的第二十控制部件,其中,刷写操作期间,处理器将缓存队列的每个被填充的条目对应的缓存单元的数据写入非易失存储器,以及释放对应的队列条目。
根据本申请第二方面的第十八至十九任一项的控制部件,提供了本申请第二方面的第二十一控制部件,其中,若被刷写的一个或多个条目对应的完整逻辑地址空间未被写入完整数据,则处理器对其完整逻辑地址空间未被写入完整数据的一个或多个条目对应的缓存单元进行合并,再将这些条目对应的缓存单元中存储的数据写入非易失性存储器。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为现有技术中的存储设备的框图;
图2展示了根据本申请实施例的缓存系统的框图;
图3展示了根据本申请实施例的缓存系统实施的方法的流程图;
图4A与4B展示了根据本申请实施例的使用缓存系统的示意图;
图5A与图5B展示了根据本申请又一实施例的使用缓存系统的示意图;
图6A与图6B展示了根据本申请再一实施例的使用缓存系统的示意图;
图7A-图7C展示了根据本申请另一实施例的使用缓存系统的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2展示了根据本申请实施例的缓存系统的框图。
缓存系统包括缓存写单元220、缓存查询单元230与缓存管理单元240。
缓存管理单元240管理例如硬件缓存队列。缓存队列的每个条目记录例如逻辑地址(LBA)、标记与缓存单元索引。
逻辑地址是写命令所指示的逻辑地址。可选地,以逻辑地址的部分比特或逻辑地址的哈希值替代逻辑地址。依然可选地,在写命令指示物理地址或其他地址的情况下,缓存队列的条目记录写命令指示的物理地址、其他地址或地址经转换后的值。
缓存队列的条目记录的标记指示例如该条目对应的缓存单元是否容纳了该条目对应的逻辑地址空间的完整数据。每个条目的逻辑地址空间大小同 FTL表的一个条目对应。可选地,标记还指示该条目对应的缓存单元容纳的数据来自该条目对应的逻辑地址空间的哪个或哪些部分。
缓存队列的条目记录的缓存单元索引用于索引缓存单元。缓存单元是例如控制部件外部或内存的存储器提供的存储空间。缓存单元索引指示例如缓存单元的存储器地址或编号。作为举例,缓存队列的条目被绑定到缓存单元,例如,缓存队列的每个条目具有指定的缓存单元,从而可以省略缓存队列条目记录的缓存单元索引,而依据条目在缓存队列中的编号得到条目对应的缓存单元的索引。
缓存管理单元还包括合并计数器245,其值指示了缓存队列中的其对应的存储单元存储了数据但未容纳逻辑地址空间的完整数据的条目的数量。
处理器210耦合到缓存写单元220,以向缓存写单元220提供写命令。可选地,由不同于处理器的硬件电路处理写命令,并耦合到缓存写单元220,以向缓存单元220提供写命令。可选地,处理器210还耦合到缓存读单元270,以向缓存读单元270提供读命令。
缓存写单元220根据接收的写命令,获取写命令访问的逻辑地址(LBA)、生成同写命令对应的标记,并通过缓存管理单元240添加到缓存队列的条目。可以理解地,这里以写命令访问的逻辑地址(LBA)空间范围不超过FTL表的单一条目的逻辑地址(LBA)空间为例。若写命令访问了较大的逻辑地址 (LBA)空间,处理器210将写命令拆分为多个子写命令,每个子写命令访问的逻辑地址(LBA)空间范围不超过FTL表的单一条目的逻辑地址(LBA) 空间。
缓存管理单元240以队列方式操作缓存队列,例如,将缓存写单元220 提供的逻辑地址(LBA)与标记添加到缓存队列的队尾的条目。可选地,根据被写入的条目在缓存队列中的编号生成缓存单元索引,或者为被写入的条目分配可用的缓存单元,并在条目中记录所分配的缓存单元的索引。
缓存写单元220根据写命令访问的逻辑地址(LBA)是否覆盖了缓存队列条目对应的完整逻辑地址(LBA)空间来生成标记,标记指示写命令访问的逻辑地址(LBA)是否覆盖了缓存队列条目对应的逻辑地址(LBA)空间。
进一步地,缓存管理单元240还根据缓存写单元220提供的标记来确定是否递增合并计数器245。若标记指示例如该条目对应的缓存单元是否容纳了该条目对应的逻辑地址空间的完整数据。
缓存写单元220还将写命令的逻辑地址(LBA)提供给缓存查询单元230,以查询逻辑地址(LBA)是否命中缓存队列的条目。缓存查询单元230同缓存队列的每个条目相耦合,以将接收的逻辑地址(LBA)同缓存队列的各个条目的逻辑地址(LBA)比较,以识别接收的逻辑地址(LBA)是否命中了缓存队列的条目。可选地,若缓存队列的条目记录逻辑地址的部分比特或逻辑地址经转换后的值,缓存查询单元230对接收的逻辑地址截取对应的部分比特或做同样的转换,再同缓存队列的各条目进行比较。
若接收的逻辑地址(LBA)命中了缓存队列的条目之一,缓存查询单元 230向缓存写单元220指示被命中的条目。缓存写单元220将写命令对应的数据写入被命中的条目的索引字段所对应的缓存单元。可选地,缓存写单元 220通过缓存管理单元240将写命令对应的数据写入被命中的条目的索引字段所对应的缓存单元,以及还可选地更新缓存队列被命中的条目。
进一步地,若被命中的缓存队列的条目的标记字段指示该条目对应的缓存单元未容纳该条目对应的逻辑地址空间的完整数据,向处理器210提供信号。处理器210获取该条目的逻辑地址对应的数据并写入该条目对应的缓存单元,以使得该条目的缓存单元容纳了该条目对应的逻辑地址空间的完整数据。将这种操作称为对缓存单元的合并(Merge)。响应于对缓存单元的合并完成,更新缓存单元对应的条目的标记,以指示该条目对应的缓存单元容纳了该条目对应的逻辑地址空间的完整数据。
若接收的逻辑地址(LBA)未命中了缓存队列的任何条目,缓存查询单元230向缓存写单元220指示没有被命中的条目。缓存写单元220根据写命令生成要填充到缓存队列的条目的内容(逻辑地址、标记与可选的缓存单元的索引),并通过缓存单元230将生成的内容写入缓存队列队尾的条目,以及将写命令对应的数据写入队尾的该条目对应的缓存单元。进一步地,若缓存队列的队尾的条目的标记字段指示该条目对应的缓存单元未容纳该条目对应的逻辑地址空间的完整数据,向处理器210提供信号。处理器210对缓存队列的队尾的该条目实施合并。
可选地,缓存系统还包括缓存读单元270。缓存读单元270同处理器210、缓存查询单元与缓存管理单元240耦合。缓存读单元270接收处理器210提供的读命令。缓存读单元270向缓存查询单元230提供读命令的逻辑地址,以识别读命令的逻辑地址是否命中缓存队列的条目。若缓存查询单元230向缓存读单元270指示读命令的逻辑地址命中了缓存队列的条目,缓存读单元访问被命中的缓存条目所指示的缓存单元,以获取读命令所访问的数据。若缓存查询单元230向缓存读单元270指示读命令的逻辑地址未命中缓存队列的任何条目,缓存读单元270向处理器210指示未命中,并由处理器210继续处理该读命令。
缓存队列具有有限数量的条目。在一个例子中,若缓存队列被填满,对缓存队列实施刷写(Flush),以将缓存队列的一个、多个或所有条目对应的缓存单元所容纳的数据写入存储设备的NVM芯片。进一步地,为进行刷写,若一个或多个缓存队列的条目的标记字段指示该条目对应的缓存单元未容纳该条目对应的逻辑地址空间的完整数据,向处理器210提供信号,以由处理器210对缓存单元实施合并操作。在合并操作完成后,再对缓存单元实施刷写。被刷写的缓存单元所对应的缓存队列的条目被释放,并可被写入新的逻辑地址(标记)、标记和/或索引。
进一步地,为对缓存队列实施刷写,依据合并计数器245获得待合并的缓存单元的数量。每完成一个缓存单元的合并,合并计数器245递减。在合并计数器245递减到0后,缓存队列中已没有待合并的缓存单元,继而将缓存队列的各条目对应的缓存单元的数据写入NVM芯片。
可选地,对缓存队列的刷写由处理器210控制。在对缓存队列实施刷写期间,缓存写单元220和/或缓存查询单元暂停处理写命令,而缓存读单元 270暂停处理读命令。
图3展示了根据本申请实施例的缓存系统实施的方法的流程图。
缓存系统获取写命令(310),以及获取写命令访问的逻辑地址,并判断写命令访问的逻辑地址是否命中了缓存队列的条目(320)。例如通过比较写命令访问的逻辑地址与缓存队列的各个条目的逻辑地址来判断是否命中。
若写命令访问的逻辑地址命中了缓存队列的条目,将写命令待写入存储设备的数据写入所命中的缓存队列的条目对应的缓存单元,更新被命中的缓存单元(330)。可选地还更新被命中的条目的标记字段。
若写命令访问的逻辑地址未命中缓存队列的条目,根据写命令向缓存队列添加条目(340)。所添加的条目中记录了例如写命令的逻辑地址、指示该条目对应的缓存单元是否容纳了该条目对应的逻辑地址空间的完整数据的标记和/或指示缓存单元的索引。
可选地,响应于向缓存队列的条目对应的缓存单元写入数据,若条目的标记指示对应的缓存单元未容纳该条目对应的逻辑地址空间的完整数据,即递增合并计数器245(也参看图2)的值,并实施对缓存单元的合并。依然可选地,推迟对缓存单元的合并,而在刷写缓存队列时实施对缓存单元的合并。
判断缓存队列是否已满(350),若缓存队列已满(没有空闲的条目),还刷写缓存队列。为刷写缓存队列,还检查缓存队列是否有待合并的缓存单元(360)。例如,合并计数器245(也参看图2)的值指示了待合并的缓存单元的数量。对待合并的缓存单元实施合并操作(370)。例如,向耦合到缓存系统的处理器提供信号,由处理器获取指示了待合并的缓存单元的缓存队列条目记录的逻辑地址,根据逻辑地址从存储设备的NVM芯片读出数据再写入待合并的缓存单元。
以及对缓存队列的各条目对应的缓存单元实施刷写,将缓存单元存储的数据写入NVM芯片(380)。
图4A与4B展示了根据本申请实施例的使用缓存系统的示意图。
参看图4A,缓存队列包括12个条目,其中11个条目已被填充,每个条目各自具有编号,并记录了逻辑地址(LBA)。根据条目的编号,得以索引条目对应的缓存单元。缓存管理单元的合并计数器的值为0,指示缓存队列中没有任何条目的缓存单元需要合并。可以理解地,条目的编号可以是暗含的,而无须使用存储单元来存储条目的编号。
作为举例,缓存写单元收到了访问逻辑地址(LBA=11)的写命令。该写命令的逻辑地址未命中缓存队列的任何条目,根据写命令填充缓存队列的空闲条目。
参看图4B,展示了被填充后的缓存队列。所填充的条目为编号为11的条目,其中记录了写命令访问的逻辑地址(LBA=11)。以及缓存队列的合并计数器依然为0。可以理解地,编号11的条目是缓存队列当前的队尾。缓存管理单元记录缓存队列的队头与队尾的位置。
进一步地,由于缓存队列已被填满(没有空闲条目),对缓存队列实施刷写操作,将缓存队列的各条目对应的缓存单元中存储的数据写入存储设备的NVM芯片。
图5A-5B展示了根据本申请又一实施例的使用缓存系统的示意图。
参看图5A,缓存队列包括9个条目,其中7个条目已被填充,每个条目记录了逻辑地址(LBA)、标记与索引。条目的索引指示了该条目对应的缓存单元。缓存管理单元的合并计数器的值为2,指示缓存队列中有2个条目的缓存单元需要合并。“标记(P)”指示了对应待合并的缓存单元的条目 (520、540),其逻辑地址分别为LBA=2以及LBA=4。
缓存写单元收到写命令,指示向逻辑地址(LBA=4)写入数据,并且该写命令并未向记录了逻辑地址(LBA=4)的缓存条目所对应的完整逻辑地址空间写入数据。
缓存查询单元根据逻辑地址(LBA=4)查询缓存队列,发现其命中了条目540。从而缓存写单元通过缓存管理单元将写命令对应的数据写入条目540 的索引所指示的缓存单元。
缓存管理单元根据条目540对应的缓存单元中已经存在的数据与根据写命令写入该缓存单元的数据,识别出该缓存单元依然未记录其对应条目的完整逻辑地址空间的数据,从而设置条目540的标记为“标记(P)”。
缓存系统指示处理器对条目540对应的缓存单元实施合并,从NVM芯片读出条目540的缓存单元中所缺少的对应LBA=4的地址空间的数据。参看图5B,经过合并,条目540的标记被从“标记(P)”修改为“标记”,以指示其不再需要合并。以及相应地,合并计数器递减为1。
在根据本申请的又一例子中,响应于识别写命令命中了缓存队列的条目 540,进一步识别该写命令、该条目的缓存单元各自对应的逻辑地址LBA=4 的地址空间的数据部分,而仅从NVM芯片读出既未被该写命对应也未被该条目的缓存单元对应的逻辑地址LBA=4的地址空间的数据部分。例如, LBA=4的地址空间被分为4部分,该条目对应的缓存单元中已经记录了第1 部分,该写命令要向第2部分写入数据,则从NVM芯片读出第3与第4部分的数据并填充到该缓存单元,以及将写命令对应的数据写入该缓存单元。由于此时该缓存单元已经记录了逻辑地址(LBA=4)的地址空间的完整数据,因而将条目540的“标记(P)”修改为“标记”,以及使合并计数器递减为1。
在根据本申请的再一个例子中,写命令命中了缓存队列的条目540,逻辑地址LBA=4的地址空间被分为4部分,该条目对应的缓存单元中已经记录了第1部分。写命令要向逻辑地址LBA=4的地址空间的第2部分写入数据。缓存系统将写命令对应的数据写入缓存单元。并识别出该缓存单元依然未记录逻辑地址(LBA=4)的地址空间的完整数据,因而条目540的标记依然为“标记(P)”,以及合并计数器不更新。若将写命令对应的数据写入缓存单元后,该缓存单元记录了逻辑地址(LBA=4)的地址空间的完整数据,则将条目540的标记修改为“标记”,以及合并计数器递减。
图6A与图6B展示了根据本申请再一实施例的使用缓存系统的示意图。
参看图6A,缓存队列包括9个条目,其中7个条目已被填充,每个条目记录了逻辑地址(LBA)、标记与索引。缓存管理单元的合并计数器的值为 2。“标记(P)”指示了对应待合并的缓存单元的条目。
缓存写单元收到写命令,指示向逻辑地址(LBA=100)写入数据,并且该写命令向逻辑地址(LBA=100)的完整逻辑地址空间写入数据。
缓存查询单元根据逻辑地址(LBA=100)查询缓存队列,发现其未命中任何条目。作为响应,缓存写单元向缓存队列添加新条目。
参看图6B,展示了被填充后的缓存队列。所填充的条目为逻辑地址 (LBA=100)的条目。以及缓存队列的合并计数器依然为2。
图7A-图7C展示了根据本申请另一实施例的使用缓存系统的示意图。
参看图7A,缓存队列包括12个条目,其中11个条目已被填充,每个条目记录了逻辑地址(LBA)、标记与索引。缓存管理单元的合并计数器的值为3。
缓存写单元收到写命令,指示向逻辑地址(LBA=120)写入数据,并且该写命令向逻辑地址(LBA=120)的完整逻辑地址空间写入数据。
缓存查询单元根据逻辑地址(LBA=120)查询缓存队列,发现其未命中任何条目。作为响应,缓存写单元向缓存队列添加新条目。
参看图7B,展示了被填充后的缓存队列。所填充的条目为逻辑地址 (LBA=120)的条目。以及缓存队列的合并计数器依然为3。
由于缓存队列已被填满(没有空闲条目),对缓存队列实施刷写操作。在实施刷写操作之前,由于合并计数器的值大于0,对缓存队列中的其缓存单元未容纳所对应的逻辑地址空间的完整数据的条目实施合并。
参看图7B,对逻辑地址(LBA=2)、逻辑地址(LBA=4)与逻辑地址(LBA=8) 的条目实施合并。根据这些条目各自的逻辑地址,从NVM芯片读出数据,将读出数据同条目对应的缓存单元中的数据合并。
响应于合并完成,更新条目的标记以及使合并计数器递减。参看图7C,合并计数器为0,指示对所有三个条目的合并均已完成。
由于缓存队列已被填满(没有空闲条目),对缓存队列实施刷写操作,将缓存队列的各条目对应的缓存单元中存储的数据写入存储设备的NVM芯片。
虽然当前申请参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种命令的处理方法,应用于控制部件,所述控制部件包括处理器、缓存写单元和缓存查询单元,其特征在于,包括如下步骤:
缓存写单元获取处理器所提供的写命令;
所述缓存写单元响应于缓存查询单元查询写命令命中缓存队列的条目,将写命令要写入的数据写入与所述条目对应的缓存单元;
若被命中的缓存队列的条目的标记字段指示该条目对应的缓存单元未容纳该条目对应的逻辑地址空间的完整数据,向处理器提供信号,处理器获取该条目的逻辑地址对应的数据并写入该条目对应的缓存单元,使得该条目的缓存单元容纳了该条目对应的逻辑地址空间的完整数据,处理器完成对缓存单元的合并。
2.一种控制部件,其特征在于,包括处理器、缓存写单元与缓存查询单元;
处理器向缓存写单元提供写命令;
缓存写单元从写命令获取逻辑地址,并将逻辑地址提供给缓存查询单元;
缓存查询单元查询缓存写单元提供的逻辑地址是否命中了缓存队列的条目;
响应于缓存查询单元指示逻辑地址命中了缓存队列的第一条目,缓存写单元将写命令要写入的数据写入所述第一条目对应的缓存单元;
若被命中的缓存队列的条目的标记字段指示该条目对应的缓存单元未容纳该条目对应的逻辑地址空间的完整数据,向处理器提供信号,处理器获取该条目的逻辑地址对应的数据并写入该条目对应的缓存单元,使得该条目的缓存单元容纳了该条目对应的逻辑地址空间的完整数据,处理器完成对缓存单元的合并。
3.如权利要求2的控制部件,其特征在于,缓存查询单元与缓存队列的各条目耦合,将写命令的逻辑地址与缓存队列的各条目的逻辑地址比较,判断写命令是否命中了缓存队列的条目之一。
4.如权利要求2-3任一项的控制部件,其特征在于,还包括缓存管理单元,
响应于缓存查询单元指示逻辑地址未命中缓存队列的任何条目,缓存写单元通过缓存管理单元将写命令的逻辑地址与标记添加到缓存队列队尾的条目中。
5.如权利要求4的控制部件,其特征在于,缓存管理单元还包括合并计数器,合并计数器的数值指示了缓存队列中存储的未容纳逻辑地址空间的完整数据的条目的数量。
6.如权利要求4的控制部件,其特征在于,若缓存写单元判断写命令未向缓存队列的条目对应的完整逻辑地址空间写入数据,缓存写单元向处理器提供信号。
7.如权利要求2或3的控制部件,其特征在于,若缓存写单元判断写命令未向缓存队列的第一条目对应的完整逻辑地址空间写入数据,缓存写单元向处理器提供信号。
8.如权利要求7的控制部件,其特征在于,响应于收到缓存写单元向处理器提供信号,处理器从非易失性存储器中读出所述第一条目对应的逻辑地址空间未被写入的部分的数据。
9.如权利要求8的控制部件,其特征在于,响应于第一条目对应的逻辑地址空间被补充完整,缓存写单元第二条目的标志设置为不需要合并,以及缓存写单元指示缓存管理单元将合并计数器的值递减。
10.如权利要求2或3的控制部件,其特征在于,响应于缓存队列被填充的条目数量大于第一阈值或未被填充的条目数量小于第二阈值,缓存管理单元向处理器提供第二信号;所述处理器响应于收到第二信号,对缓存的队列实施刷写操作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811581282.3A CN111352865B (zh) | 2018-12-24 | 2018-12-24 | 存储控制器的写缓存 |
CN202210465713.XA CN114840452A (zh) | 2018-12-24 | 2018-12-24 | 一种控制部件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811581282.3A CN111352865B (zh) | 2018-12-24 | 2018-12-24 | 存储控制器的写缓存 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210465713.XA Division CN114840452A (zh) | 2018-12-24 | 2018-12-24 | 一种控制部件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352865A CN111352865A (zh) | 2020-06-30 |
CN111352865B true CN111352865B (zh) | 2022-05-24 |
Family
ID=71193746
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811581282.3A Active CN111352865B (zh) | 2018-12-24 | 2018-12-24 | 存储控制器的写缓存 |
CN202210465713.XA Pending CN114840452A (zh) | 2018-12-24 | 2018-12-24 | 一种控制部件 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210465713.XA Pending CN114840452A (zh) | 2018-12-24 | 2018-12-24 | 一种控制部件 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN111352865B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114153384A (zh) * | 2021-11-09 | 2022-03-08 | 尧云科技(西安)有限公司 | 一种混合缓存的存储方法及装置 |
CN117389915B (zh) * | 2023-12-12 | 2024-04-16 | 北京象帝先计算技术有限公司 | 缓存系统、读命令调度方法、片上系统及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102087586A (zh) * | 2009-12-02 | 2011-06-08 | 成都市华为赛门铁克科技有限公司 | 数据处理方法及装置 |
CN103136067A (zh) * | 2011-11-30 | 2013-06-05 | 索尼公司 | 存储控制器、存储设备、信息处理系统以及存储控制方法 |
CN107797760A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 基于缓存优化写命令处理的方法、装置与驱动器 |
CN108228483A (zh) * | 2016-12-15 | 2018-06-29 | 北京忆恒创源科技有限公司 | 处理原子写命令的方法和设备 |
CN108228470A (zh) * | 2016-12-21 | 2018-06-29 | 北京忆恒创源科技有限公司 | 一种处理向nvm写入数据的写命令的方法和设备 |
CN108664212A (zh) * | 2017-03-31 | 2018-10-16 | 北京忆恒创源科技有限公司 | 固态存储设备的分布式缓存 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239638B2 (en) * | 2007-06-05 | 2012-08-07 | Apple Inc. | Store handling in a processor |
US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
US9703718B2 (en) * | 2014-06-27 | 2017-07-11 | International Business Machines Corporation | Managing read tags in a transactional memory |
CN104572860B (zh) * | 2014-12-17 | 2018-01-26 | 北京皮尔布莱尼软件有限公司 | 一种数据处理方法和系统 |
US10019363B2 (en) * | 2015-04-03 | 2018-07-10 | Hewlett Packard Enterprise Development Lp | Persistent memory versioning and merging |
CN105528180B (zh) * | 2015-12-03 | 2018-12-07 | 浙江宇视科技有限公司 | 一种数据存储方法、装置及设备 |
US11175853B2 (en) * | 2017-05-09 | 2021-11-16 | Samsung Electronics Co., Ltd. | Systems and methods for write and flush support in hybrid memory |
-
2018
- 2018-12-24 CN CN201811581282.3A patent/CN111352865B/zh active Active
- 2018-12-24 CN CN202210465713.XA patent/CN114840452A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102087586A (zh) * | 2009-12-02 | 2011-06-08 | 成都市华为赛门铁克科技有限公司 | 数据处理方法及装置 |
CN103136067A (zh) * | 2011-11-30 | 2013-06-05 | 索尼公司 | 存储控制器、存储设备、信息处理系统以及存储控制方法 |
CN107797760A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 基于缓存优化写命令处理的方法、装置与驱动器 |
CN108228483A (zh) * | 2016-12-15 | 2018-06-29 | 北京忆恒创源科技有限公司 | 处理原子写命令的方法和设备 |
CN108228470A (zh) * | 2016-12-21 | 2018-06-29 | 北京忆恒创源科技有限公司 | 一种处理向nvm写入数据的写命令的方法和设备 |
CN108664212A (zh) * | 2017-03-31 | 2018-10-16 | 北京忆恒创源科技有限公司 | 固态存储设备的分布式缓存 |
Also Published As
Publication number | Publication date |
---|---|
CN111352865A (zh) | 2020-06-30 |
CN114840452A (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107797759B (zh) | 访问缓存信息的方法、装置与驱动器 | |
JP5907739B2 (ja) | 不揮発性記憶装置 | |
CN107797760B (zh) | 一种访问缓存信息的方法、装置与固态驱动器 | |
CN111061655B (zh) | 存储设备的地址转换方法与设备 | |
US20110231598A1 (en) | Memory system and controller | |
US9396141B2 (en) | Memory system and information processing device by which data is written and read in response to commands from a host | |
CN109164976B (zh) | 利用写缓存优化存储设备性能 | |
US20170270045A1 (en) | Hybrid memory device and operating method thereof | |
EP3553665A1 (en) | Non-volatile memory access method, device, and system | |
US11449270B2 (en) | Address translation method and system for KV storage device | |
CN111352865B (zh) | 存储控制器的写缓存 | |
CN110515861B (zh) | 处理刷写命令的存储设备及其方法 | |
CN110968527B (zh) | Ftl提供的缓存 | |
CN111026678B (zh) | 基于固态硬盘的缓存设计方法、装置及计算机设备 | |
CN115048034A (zh) | 用于sgl的存储空间映射方法及其装置 | |
US9632950B2 (en) | Storage control device controlling access to a storage device and access controlling method of a storage device | |
CN111290975A (zh) | 使用统一缓存处理读命令与预读命令的方法及其存储设备 | |
CN110096452B (zh) | 非易失随机访问存储器及其提供方法 | |
CN111290974A (zh) | 用于存储设备的缓存淘汰方法与存储设备 | |
CN110532199B (zh) | 预读方法及其存储控制器 | |
CN109960667B (zh) | 大容量固态存储设备的地址转换方法与装置 | |
CN109840219B (zh) | 大容量固态存储设备的地址转换系统与方法 | |
CN113254363A (zh) | 具有部分逻辑到物理地址转换表的非易失性存储控制器 | |
CN112947845A (zh) | 热数据识别方法及其存储设备 | |
CN110968520A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |