CN113127385A - 对存储器子系统的性能控制 - Google Patents
对存储器子系统的性能控制 Download PDFInfo
- Publication number
- CN113127385A CN113127385A CN202011589655.9A CN202011589655A CN113127385A CN 113127385 A CN113127385 A CN 113127385A CN 202011589655 A CN202011589655 A CN 202011589655A CN 113127385 A CN113127385 A CN 113127385A
- Authority
- CN
- China
- Prior art keywords
- slots
- memory
- bandwidth
- amount
- buffer
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 236
- 239000000872 buffer Substances 0.000 claims abstract description 84
- 238000012545 processing Methods 0.000 claims description 61
- 238000013519 translation Methods 0.000 claims description 53
- 238000000034 method Methods 0.000 claims description 38
- 238000012546 transfer Methods 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 9
- 238000004891 communication Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 15
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004941 influx Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请涉及对存储器子系统的性能控制。存储器子系统可以监测用于将数据写入到存储器装置的后端。所述存储器子系统可以确定所述后端的所述带宽满足基于所述存储器子系统与主机系统之间的性能的一或多个性能标准。在一些实施例中,所述存储器子系统可以基于确定所述后端的所述带宽满足所述一或多个性能标准来将缓冲器的一定量的槽分配给所述存储器子系统的前端。所述缓冲器的槽可以被配置成从所述前端接收用于由所述后端写入到所述存储器装置的数据。
Description
交叉引用
本专利申请要求Li等人于2019年12月31日提交的题为“对存储器子系统的性能控制(PERFORMANCE CONTROL FOR A MEMORY SUB-SYSTEM)”的美国专利申请第16/731,936号的优先权,所述美国专利申请转让给本申请的受让人并且明确地通过引用整体并入本文。
技术领域
技术领域涉及对存储器子系统的性能控制。
背景技术
存储器子系统可以包含存储数据的一或多个存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。通常,主机系统可以利用存储器子系统来将数据存储在存储器装置处并且从存储器装置中检索数据。
发明内容
描述了一种方法。在一些实例中,所述方法可以包含:监测存储器子系统的用于将数据写入到存储器装置的后端的带宽;确定所述后端的所述带宽满足至少部分地基于所述存储器子系统与主机系统之间的性能的一或多个性能标准;以及至少部分地基于确定所述后端的所述带宽满足所述一或多个性能标准来将缓冲器的一定量的一或多个槽分配给所述存储器子系统的前端,所述缓冲器的槽被配置成从所述前端接收用于由所述后端写入到所述存储器装置的数据。
描述了一种系统。在一些实例中,所述系统可以包含多个存储器组件和处理装置,所述处理装置与所述多个存储器组件操作性地耦接以:监测存储器子系统的用于将数据写入到存储器装置的后端的带宽;确定所述后端的所述带宽满足至少部分地基于所述存储器子系统与主机系统之间的性能的一或多个性能标准;并且至少部分地基于确定所述后端的所述带宽满足所述一或多个性能标准来将缓冲器的一定量的一或多个槽分配给所述存储器子系统的前端,所述缓冲器的槽被配置成从所述前端接收用于由所述后端写入到所述存储器装置的数据。
描述了一种非暂时性计算机可读存储媒体。在一些实例中,所述非暂时性计算机可读存储媒体可以包含指令,所述指令当由处理装置执行时使所述处理装置:监测存储器子系统的用于将数据写入到存储器装置的后端的带宽;确定所述后端的所述带宽满足至少部分地基于所述存储器子系统与主机系统之间的性能的一或多个性能标准;并且至少部分地基于确定所述后端的所述带宽满足所述一或多个性能标准来将缓冲器的一定量的一或多个槽分配给所述存储器子系统的前端,所述缓冲器的槽被配置成从所述前端接收用于由所述后端写入到所述存储器装置的数据。
附图说明
根据下文给出的详细描述和本公开的各个实施例的附图,将更充分地理解本公开。然而,不应将附图用于将本公开限制于具体实施例,而仅是用于解释和理解。
图1展示了根据本公开的一些实施例的包含存储器子系统的计算系统的实例。
图2是根据本公开的一些实施例的用于对存储器子系统的性能控制的示例方法的流程图。
图3是根据本公开的一些实施例的用于对存储器子系统的性能控制的示例系统的框图。
图4是根据本公开的一些实施例的用于对存储器子系统的性能控制的示例存储器子系统的框图。
图5是本公开的实施例可以在其中操作的示例计算机系统的框图。
具体实施方式
本公开的各方面涉及对存储器子系统的性能控制。存储器子系统可以是存储装置、存储器模块或存储装置和存储器模块的混合。以下结合图1描述存储装置和存储器模块的实例。通常,主机系统可以利用包含如存储数据的存储器装置等一或多个组件的存储器子系统。主机系统可以提供要存储在存储器子系统处的数据并且可以请求要从存储器子系统中检索的数据。
存储器装置可以是非易失性存储器装置,其是一或多个管芯的封装。封装中的管芯可以被分配给用于与存储器子系统控制器通信的一或多个通道。非易失性存储器装置的实例是与非(NAND)存储器装置。以下结合图1描述非易失性存储器装置的其它实例。
主机系统可以在存储器子系统上启动数据操作(例如,写入、读取、擦除等)。主机系统可以向存储器子系统发送存取请求(例如,写入命令、读取命令),如将数据存储在存储器子系统处的存储器装置上,以及从存储器子系统上的存储器装置读取数据。命令可以从主机系统传输到存储器子系统上的各种存储器芯片。命令可以与要在一或多个转移单元(TU)上执行的不同的存取操作(例如,读取操作、写入操作等)相关联。TU可以是指一次可以在存储器装置中存取(例如,写入或读取)的数据(例如,4k的数据)的一部分,并且存取操作可以与一或多个TU相关联(即,存取操作可以与4k或更多的数据相关联)。在一些实例中,存取命令可以由存储器子系统的前端核心接收并且可以由后端核心处理(例如,执行)。转译层(例如,转译核心)可以促进前端核心与后端核心之间的通信。
在一些实例中,前端核心可以是指被配置为主机系统与存储器子系统之间的接口的固件(例如,固件的一部分)。例如,前端核心可以被配置成接收、处理和/或解释从主机系统接收并且传输到主机系统的命令和其它通信。另外或可替代地,后端核心可以是指被配置成在存储器子系统与存储器子系统的存储器装置之间介接的固件(例如,固件的一部分)。例如,后端核心可以被配置成接收、处理和/或解释从存储器装置接收并且传输到存储器装置的数据和其它通信。在一些实例中,前端核心和后端核心可以直接通信(例如,直接与另一个核心通信)或者通过转译核心(例如,转译层)通信。
在存储器子系统中,可以在存储器装置的存储器单元上执行如存取操作和媒体管理操作(例如,垃圾收集操作)等操作。这些类型的操作可以由存储器子系统的硬件和/或固件执行。传统存储器子系统的硬件和固件可以具有限制某些操作的操作约束。也就是说,存储器子系统可以具有用于在任何给定的时间段执行操作的有限量的带宽。因此,当常规的存储器子系统试图执行操作时,可用带宽的量会发生波动。在一些情况下,这可以被称为“反弹”。当带宽反弹时,系统的性能可以波动,并且写入到存储器子系统的数据的质量可能会受到影响。
本公开的各方面通过以下解决上述缺陷和其它缺陷:通过监测可用带宽并且分配缓冲器的用于存储与存取操作相关联的数据的槽来控制存储器子系统的性能(例如,带宽)。例如,存储器子系统的前端处理核心可以监测可用于后端处理核心以执行一或多个存取操作的带宽总量。可以通过限制将缓冲器的多少个槽分配给主机系统以存储要写入到存储器单元的写入数据来控制由存储器装置存储的数据的量。当可用带宽的量超过性能阈值时(例如,当可用带宽的量小于所需带宽的量时),可以分配更多的缓冲器槽来存储从主机系统接收到的数据。然后,主机系统可以基于具有更多分配的槽来发送更多要写入的数据。当后端核心可用的带宽的量低于性能阈值时(例如,当必需的带宽量可用时),可以分配更少的缓冲器槽来存储从主机系统接收到的数据。以此方式利用缓冲器可以控制存储器子系统的整体性能并且可以减少可用带宽的波动。
最初在如参考图1所描述的计算系统的上下文中描述本公开的特征。在如参考图2-4所描述的流程图和框图的上下文中描述本公开的特征。通过如参考图5所描述的与对存储器子系统的性能控制相关的计算机系统来进一步展示并且参考所述计算机系统进一步描述了本公开的这些特征和其它特征。
图1展示了根据本公开的一些实施例的包含存储器子系统的计算系统100的实例。存储器子系统110可以包含媒体,如一或多个非易失性存储器装置(例如,一或多个存储器装置130)、一或多个易失性存储器装置(例如,一或多个存储器装置140)或此类的组合。
存储器子系统110可以是存储装置、存储器模块或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、闪存驱动器、通用串行总线(USB)闪存驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用闪存(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM)和各种类型的非易失性DIMM(NVDIMM)。
计算系统100可以是计算装置,如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,包含在交通工具、工业设备或网络化商业装置中的计算机),或者包含存储器和处理装置的此类计算装置。
计算系统100可以包含与一或多个存储器子系统110耦接的主机系统105。在一些实施例中,主机系统105与不同类型的存储器子系统110耦接。图1展示了与一个存储器子系统110耦接的主机系统105的一个实例。如本文所使用的,“耦接到(coupled to)”或“与…耦接(coupled with)”通常指组件之间的连接,所述连接可以是间接的通信连接或直接的通信连接(例如,无中间组件),无论是有线的或无线的,包含如电、光、磁性等连接。
主机系统105可以包含处理器芯片组和由处理器芯片组执行的软件堆栈。处理器芯片组可以包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器)和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统105使用存储器子系统110,例如向存储器子系统110写入数据并且从存储器子系统110中读取数据。
主机系统105可以使用物理主机接口耦接到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、USB接口、光纤通道、双倍数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持DDR的DIMM插座接口)等。物理主机接口可以用于在主机系统105与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统105耦接时,主机系统105可以进一步利用非易失性存储器快速(NVMe)接口对组件(例如,一或多个存储器装置130)进行存取。物理主机接口可以提供用于在存储器子系统110与主机系统105之间传递控制、地址、数据和其它信号的接口。图1展示了存储器子系统110作为实例。通常,主机系统105可以通过相同的通信连接、多个单独的通信连接和/或通信连接的组合来存取多个存储器子系统。
存储器装置130、140可以包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,一或多个存储器装置140)可以是但不限于随机存取存储器(RAM),如动态RAM(DRAM)和同步DRAM(SDRAM)。
非易失性存储器装置(例如,一或多个存储器装置130)的一些实例包含与非(NAND)型闪存和原地写入(write-in-place)存储器,如三维交叉点(“3D交叉点”)存储器装置,所述三维交叉点存储器装置是非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可以与可堆叠交叉网格数据存取阵列结合基于体电阻的改变执行位存储。另外,与许多基于闪速的存储器相比,交叉点非易失性存储器可以执行原地写入操作,其中可以在先前未擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。与非型闪存包含例如二维与非(2D与非)和三维与非(3D与非)。
存储器装置130中的每个存储器装置可以包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单级单元(SLC)每单元可以存储一位。其它类型的存储器单元,如多级单元(MLC)、三级单元(TLC)和四级单元(QLC)每单元可以存储多个位。在一些实施例中,存储器装置130中的每个存储器装置可以包含一或多个存储器单元阵列,如SLC、MLC、TLC、QLC或此类的任何组合。在一些实施例中,特定存储器装置可以包含存储器单元的SLC部分以及MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可以被分组为页面,所述页面可以是指用于存储数据的存储器装置的逻辑单元。在利用一些类型的存储器(例如,与非)的情况下,可以将页面分组以形成块。
尽管描述了非易失性存储器组件,如非易失性存储器单元的3D交叉点阵列和与非型闪存(例如,2D与非、3D与非),但是存储器装置130可以基于任何其它类型的非易失性存储器,如只读存储器(ROM)、相变存储器(PCM)、自选择存储器、其它基于硫族化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、磁RAM(MRAM)、自旋扭矩转移(STT)-MRAM、导电桥接式RAM(CBRAM)、电阻式随机存取存储器RRAM、基于氧化物的RRAM(OxRAM)、或非(NOR)闪存和电可擦可编程ROM(EEPROM)。
存储器子系统控制器115(或为简单起见,控制器115)可以与存储器装置130通信,以在存储器装置130处执行如读取数据、写入数据或擦除数据等操作以及其它此类操作。存储器子系统控制器115可以包含硬件,如一或多个集成电路和/或离散组件、缓冲存储器或此类的组合。硬件可以包含具有专用(即,硬编码)逻辑以执行本文所述的操作的数字电路系统。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP))或其它合适的处理器。
存储器子系统控制器115可以包含被配置成执行存储在本地存储器125中的指令的处理器120(例如,处理装置)。在所展示的实例中,存储器子系统控制器115的本地存储器125包含嵌入式存储器,所述嵌入式存储器被配置成存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流程和例程(包含处理存储器子系统110与主机系统105之间的通信)的指令。
在一些实施例中,本地存储器125可以包含存储存储器指针、所获取数据等的存储器寄存器。本地存储器125还可以包含用于存储微代码的ROM。虽然图1中的示例存储器子系统110被展示为包含存储器子系统控制器115,但是在本公开的另一个实例中,存储器子系统110不包含存储器子系统控制器115,而是可以依赖于(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供的)外部控制。
通常,存储器子系统控制器115可以从主机系统105接收命令或操作并且可以将命令或操作转换为指令或适当的命令以实现对存储器装置130的期望存取。存储器子系统控制器115可以负责其它操作,如损耗均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、命名空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可以进一步包含用于通过物理主机接口与主机系统105通信的主机接口电路系统。主机接口电路系统可以将从主机系统接收到的命令转换为对存储器装置130进行存取的命令指令以及将与存储器装置130相关联的响应转换为主机系统105的信息。
存储器子系统110还可以包含未展示的另外的电路系统或组件。在一些实施例中,存储器子系统110可以包含高速缓存或缓冲器(例如,DRAM)和可以从存储器子系统控制器115接收地址并且解码地址以对存储器装置130进行存取的地址电路系统(例如,行解码器和列解码器)。
在一些实施例中,存储器装置130包含本地媒体控制器135,所述本地媒体控制器与存储器子系统控制器115结合操作以在存储器装置130的一或多个存储器单元上执行操作。外部控制器(例如,存储器子系统控制器115)可以在外部管理存储器装置130(例如,在存储器装置130上执行媒体管理操作)。在一些实施例中,存储器装置130是管理型存储器装置,所述管理型存储器装置是与本地控制器(例如,本地控制器135)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。管理型存储器装置的实例是管理型与非(MNAND)装置。
存储器子系统110包含性能管理器150,所述性能管理器可以处理存储器子系统110与主机系统105之间的通信。一些存储器子系统110可以包含用于执行操作的多于一个处理核心。例如,存储器子系统110可以包含用于监测后端处理核心可用的带宽的前端处理核心。前端处理核心可以基于可用带宽量将从主机系统接收到的数据存储到缓冲器。一旦后端核心具有必需量的可用带宽,就可以执行与存储到缓冲器的数据相关联的存取操作,或者可以将缓冲器的更多槽分配给主机系统。将数据临时存储到缓冲器的分配槽以将数据临时存储到主机系统或前端可以减轻由于可用带宽的波动以其它方式引起的性能问题。
在一些实施例中,存储器子系统控制器115包含性能管理器150的至少一部分。例如,存储器子系统控制器115可以包含被配置成执行存储在本地存储器125中的用于执行本文所描述的操作的指令的处理器120(例如,处理装置)。在一些实施例中,性能管理器150是主机系统105、应用或操作系统的一部分。
为了减轻由于可用带宽的波动而引起的性能问题,性能管理器150可以被配置成基于后端可用的带宽量高于性能阈值来分配缓冲器的槽。例如,如果后端可用的带宽量在存取操作期间波动,则数据可能无法有效地写入到相关联的存储器单元。与存取操作相关联的数据可以在写入之前存储到缓冲器。所述缓冲器的槽的分配可以向主机系统信号传递存储器装置暂时可以处理多少写入操作。当性能管理器150标识后端核心拥有用于执行相关联命令的所需带宽时,可以发出(例如,由后端核心执行的)所述命令。将缓冲器用作存取命令的临时存储可以改进存储器子系统110的整体处理能力。
图2是根据本公开的一些实施例的用于对存储器子系统的性能控制的示例方法200的流程图。方法200可以由处理逻辑执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或此类的组合。在一些实施例中,方法200由图1的性能管理器150执行。尽管以特定序列或顺序示出,但除非另有指定,否则可以修改过程的顺序。所展示的实施例应被理解为只是实例,并且所展示的过程可以以不同的顺序执行,并且一些过程可以并行地执行。另外,在各个实施例中可以省略一或多个过程。并非在每个实例中都需要所有过程。其它方法流程是可能的。
在操作205处,处理逻辑监测存储器子系统的用于将数据写入到存储器装置的后端的带宽。带宽可以基于全局逻辑饱和、全局物理饱和、局部逻辑饱和、局部物理饱和或此类的组合。在一些实例中,性能标准可以包含性能阈值,并且分配量槽可以包含基于后端的带宽超过性能阈值来分配第一量槽。处理逻辑可以确定后端的带宽超过性能阈值。
在操作210处,处理逻辑确定后端的带宽满足基于存储器子系统与主机系统之间的性能的一或多个性能标准。性能标准可以包含性能阈值。
在操作215处,处理逻辑基于确定后端的带宽满足所述一或多个性能标准来将缓冲器的一定量的一或多个槽分配给存储器子系统的前端。缓冲器的槽可以被配置成从前端接收用于由后端写入到存储器装置的数据。在一些实施例中,第一量可以小于当带宽小于性能阈值时所分配的槽的第二量。
在一些实施例中,处理逻辑基于后端的带宽相对于所述一或多个性能标准的关系来确定补偿参数。分配给前端的槽的量可以基于补偿参数。在一些实施例中,处理逻辑基于确定补偿参数来确定缓冲器的要分配给前端的槽的量。分配槽的量可以基于确定量。
在一些实施例中,处理逻辑标识存储器子系统的全局逻辑饱和、全局物理饱和、局部逻辑饱和、局部物理饱和或此类的组合。在一些实施例中,处理逻辑标识存储器子系统的存储器装置的转移单元的有效块的量。带宽可以基于转移单元的有效块的量。
处理逻辑可以接收将数据写入到存储器子系统的存储器装置的命令。命令可以由前端接收并且可以从主机系统中接收。处理逻辑可以标识是否将缓冲器的槽分配给前端以接收用于写入操作的数据。在一些实施例中,分配缓冲器的所述量的槽可以基于标识缓冲器的所述一或多个槽是否被分配。
在一些实施例中,处理逻辑将写入到存储器装置的数据存储在缓冲器的槽中。处理逻辑可以基于标识所述一或多个槽被分配来存储数据。在一些实施例中,转译层被配置成将所述量的一或多个槽分配给前端。缓冲器的槽可以被配置成存储四千字节的数据。
图3是根据本公开的一些实施例的用于对存储器子系统的性能控制的示例系统300的框图。系统300可以包含与存储器子系统310进行通信的主机系统305。主机系统305可以是参考图1所描述的主机系统105的实例。存储器子系统310可以是参考图1所描述的存储器子系统110的实例。存储器子系统310的组件可以接收和传输与存取操作(例如,读取操作和/或写入操作)相关联的通信。
在一些实施例中,在存储器装置320上执行的存取操作可以在一或多个存储器单元(例如,与非存储器单元)上执行。还可以在存储器装置320的存储器单元上执行其它操作,如垃圾收集操作。例如,在垃圾收集程序期间,源块(例如,一组存储器单元的数据集或一组存储器单元)可以包含陈旧数据的页面(例如,先前写入但不再与有效逻辑地址相关联的旧数据、具有有效数据的页面以及不含有数据的页面)。在垃圾收集期间,块的有效数据被擦除并写入(例如,重新写入)到存储器装置320(例如,到存储器装置的不同页面)。如存取操作和垃圾收集操作等操作可以由存储器子系统310的固件执行。例如,后端核心315-c可以与被配置成执行操作的固件相关联。在其它实例中,前端核心315-a和后端核心315-c可以与转译核心315-b介接,所述转译核心可以在由前端核心315-a和后端核心315-c执行的操作之间介接。
在一些实例中,前端核心315-a可以是指被配置为主机系统305与存储器子系统310之间的接口的固件(例如,固件的一部分)。例如,前端核心315-a可以被配置成接收、处理和/或解释从主机系统305接收并且传输到主机系统305的命令和其它通信。另外或可替代地,后端核心315-c可以是指被配置成在存储器子系统310与存储器子系统的存储器装置320之间介接的固件(例如,固件的一部分)。例如,后端核心315-c可以被配置成接收、处理和/或解释从存储器装置320接收并且传输到存储器装置320的数据和其它通信。在一些实例中,前端核心315-a和后端核心315-c可以直接通信(例如,直接与另一个核心通信)或者通过转译核心315-b(例如,转译层)通信。
存储器子系统310的硬件和固件可以具有限制某些操作的操作约束。也就是说,存储器子系统310可以具有用于在任何给定的时间段期间执行操作的有限量的带宽。某些操作可以具有固定定时,这导致由存储器子系统310使用的固定量的带宽。例如,擦除存储器装置320的一或多个存储器单元所需的时间量可以是固定的。因为源块中与操作(例如,存取操作)相关联的有效数据量是可变的,所以可用的存储器子系统310的带宽量可以波动。波动的带宽进而可以限制存储器子系统310针对其它操作(例如,并发操作)具有的带宽量。超出系统带宽可能会导致长时间的延迟或在操作期间引入错误。用于管理带宽和要在存储器单元的阵列上执行的操作流入的技术可能是期望的。本发明的系统可以通过在缓冲器345中分配用于要写入到存储器装置320的数据的槽(例如,位置)来组织带宽波动。缓冲器345可以从前端核心315-a接收数据,并且可以由后端核心315-c写入到存储器装置320。如本文所述,前端核心315-a和后端核心315-c可以通过转译核心315-b通信。
系统300可以包含与存储器子系统310进行通信的主机系统305。存储器子系统310可以包含前端核心315-a、转译核心315-b、后端核心315-c和存储器装置320。存储器子系统310的前端核心315-a、转译核心315-b和后端核心315-c可以是与存储器子系统310的转译管理器相关联的处理核心的实例。在一些实例中,转译核心315-b可以是与前端核心315-a相同的核心,或者在其它实例中可以是单独的核心。在一些实施例中,前端核心315-a可以包含多个核心(例如,四(4)个核心),转译核心315-b可以包含多个核心(例如,四(4)个核)心,并且后端核心315-c可以包含多个核心(例如,四(4)个核心)。存储器子系统310可以包含固件,所述固件包含前端管理器(例如,前端层)、转译管理器和后端管理器,每一个都与相应的处理核心相关联。
主机系统305可以发出将数据写入到存储器子系统310的存储器装置320的存取命令325(例如,读取命令、写入命令或其它类型的命令)。在操作330处,存储器子系统310可以代表主机系统305接收将数据写入到存储器装置320的存取命令325。
在操作335处,转译核心315-b可以监测存储器子系统310的后端核心315-c的带宽。后端核心315-c可以负责在存储器装置320上执行操作(例如,存取操作),并且由于可用带宽的量可能容易受到性能限制。当某些存取操作正在由后端核心315-c执行时,较少的带宽可以用于其它操作。例如,当后端核心315-c正在执行相对大量的操作时和/或当后端核心315-c正在执行相对大量的操作(例如,在相对大量的存储器单元上的操作)时,可用的带宽较少。监测后端核心315-c的带宽可以阻止存储器子系统310由于系统没有足够的带宽以执行后续操作(例如,主机写入操作)而经历不期望的性能。在一些实例中,前端核心315-a可以通过转译核心315-b来监测后端核心315-c的带宽。
为了控制存储器子系统310的性能,缓冲器345可以被配置成从前端核心315-a或从主机系统305或从两者接收用于由后端核心315-c写入到存储器装置320的数据。也就是说,当满足某些性能标准时(例如,当可用带宽高于或低于性能阈值时),可以将要写入到存储器装置320的数据存储到缓冲器345。缓冲器345可以是存储器装置的实例。在一些实施例中,缓冲器345可以由前端核心315-a或主机系统中的一或多个存取。从主机系统305接收或由前端核心315-a执行的指令可以基于对主机系统305或前端核心315-a可用的缓冲器345的槽的量。可以将数据存储到缓冲器345以用于存取操作(例如,主机写入操作)。数据可以被临时存储,使得其可以随后由后端核心315-c写入到存储器装置320。
在一些实例中,数据可以存储在缓冲器345的由前端核心315-a分配的一或多个槽中。也就是说,前端核心315-a(例如,通过转译核心315-b)可以监测对后端核心315-c可用的带宽量并且可以分配缓冲器槽以管理一或多个后端核心315-c的整体使用。在一些实例中,存储到缓冲器345的数据可以与主机写入操作相关联和/或可以与多个存取操作相关联。在一些情况下,减少缓冲器345的槽的量可以是信号传递到前端或主机系统305的存储器子系统310正忙于执行其它操作的方式。以此方式,可以避免与存储器子系统310的后端过载相关联的问题,因为当缓冲器345的槽未被分配时,主机系统305或前端可能无法请求另外的操作。实际上,当存储器子系统310的后端的处理资源变得饱和时,缓冲器345的一或多个槽可以从主机系统305取消分配,以向主机系统305信号传递存储器子系统310不可用于新的命令(例如,新的主机写入命令)。如果主机系统305未标识缓冲器345的任何可用且经过分配的槽,则主机系统305可以避免发送另外的命令(例如,主机写入命令)。
在操作340处,存储器子系统310的转译核心315-b可以标识用于存储数据的缓冲器345的槽。在一些实例中,缓冲器345的每个槽可以被配置成存储四千字节(4KB)的数据。因为存取操作与有限量的数据相关联,所以转译核心315-b可以标识可用于存储数据的缓冲器槽(例如,一定量的缓冲器槽)。例如,存储器子系统310可以接收对512KB的数据的主机写入命令。因此,转译核心315-b可以基于后端核心315-c可用的带宽量来标识128个可用缓冲器槽。在一些实例中,转译核心315-b可以通过前端核心315-a来标识缓冲器345的槽。
在操作350处,可以在存储器装置320上执行存取操作。在一些实施例中,与存取命令相关联的数据可以存储在缓冲器345中,直到后端可用于执行命令或者做出一或多个性能(例如,带宽)确定。例如,当将数据存储到缓冲器345时,一旦足够的带宽为后端核心315-c可用,就可以执行存取操作。
在一些实施例中,利用后端核心315-c来执行存取操作可以允许前端核心315-a继续处理传入的存取命令,同时转译核心315-b监测后端核心315-c可用的带宽,将用于数据等的缓冲器345的槽分配给前端核心315-a或主机系统305或两者。也就是说,缓冲器345可以由后端核心315-c(例如,通过转译核心315-b)存取,并且后端核心可以在存储器装置320上执行操作350(例如,存取操作)。在一些实例中,后端核心315-c可以通过一或多个通信通道与存储器装置320直接通信。类似地,后端核心315-c可以通过一或多个通信通道与缓冲器345通信。使用后端核心315-c执行操作350可以通过限制后端核心315-c在执行存取操作时经历的带宽波动量来改进存储器子系统310的整体性能。
在一些实例中,转译核心315-b可以确定补偿参数。补偿参数可以基于后端核心315-c可用的带宽相对于所述一或多个性能标准的关系。例如,可能期望存储器子系统310经历相对高的性能。也就是说,可能期望存储器子系统310具有相对高的可用于执行存取操作的带宽量(即,比必要的更高的可用带宽量)。在此类实例中,补偿参数可以表示存储器子系统的期望性能。在其它实例中,可用带宽的量可能仅足以使后端核心315-c执行存取操作。
转译核心315-b可以基于补偿参数确定缓冲器345的要分配的槽的量。也就是说,转译核心315-b可以占据缓冲器345的槽中的每个槽并且可以选择性地释放用于存储存取命令的槽。转译核心315-b可以向前端核心315-a释放槽,以存储存取命令或与存取命令相关联的数据。例如,补偿参数可以指示转译核心315-b将更多或更少的槽分配给前端核心315-a或主机系统305或两者。如果缓冲器345的槽对主机系统305不可用,则主机系统305可能不向存储器子系统310发出新的命令。通过限制分配给前端核心315-a的槽的量,转译核心315-b可以控制由存储器子系统310执行的操作的量并且可以管理存储器子系统310的操作带宽,包含后端核心315-c的操作带宽。
在写入到存储器装置320之前存储到缓冲器的数据量可以基于补偿参数以及可用带宽是否超过性能阈值。也就是说,转译核心315-b可以将对后端核心315-c可用的带宽量与性能阈值进行比较。在一些实例中,如果可用带宽量超过性能阈值,则可以为从主机系统305接收到的数据分配缓冲器345的槽。在其它实例中,如果可用带宽量没有超过性能阈值,则转译核心315-b(例如,通过前端核心315-a)可以向主机系统305指示此类情况。在此类情况下,主机系统305可以基于槽是否被分配而暂时推迟向前端核心315-a传输存取命令。在一些实例中,性能阈值可以是动态值。也就是说,后端核心315-c可以具有有限量的可用带宽,并且任何给定的存取操作可能需要执行有限量的带宽。因此,如果执行给定存取操作所需的带宽量超过可用带宽量,则可以通知主机系统305暂时推迟传输存取命令,直到另外的带宽可用。
在一些实例中,前端核心315-a可以标识存储器子系统310的全局逻辑饱和、全局物理饱和、局部逻辑饱和或局部物理饱和。后端核心315-c可用的带宽可以基于全局逻辑饱和、全局物理饱和、局部逻辑饱和或局部物理饱和中的任何一个。
图4是根据本公开的一些实施例的用于对存储器子系统的性能控制的示例存储器子系统400的框图。存储器子系统可以包含固件405。固件405可以包含前端管理器410(有时称为前端层)、转译管理器415(有时称为闪速转译层或FTL)和后端管理器420(有时称为后端层)。如本文所述,核心可以是处理器(例如,处理器120)、处理器的一或多个部分、处理装置(例如,处理装置505)、处理装置的一或多个部分或此类的组合的实例。核心可以是被配置成执行用于执行一或多个操作的一或多个指令的任何电路、处理器、硬件或装置。
前端管理器410可以被配置为主机系统与存储器子系统之间的接口。例如,前端管理器410可以被配置成接收、处理和/或解释从主机系统接收并且传输到主机系统的命令和其它通信。一或多个核心425可以用于执行前端管理器410的功能。例如,第一核心425-a、第二核心425-b和第N核心425-N可以用于实施前端管理器410的功能。在一些实施例中,这些核心425专用于执行前端管理器410的功能。在一些实施例中,一或多个这些核心425可以用于执行前端管理器410、转译管理器415或后端管理器420或此类的组合的功能。N可以表示任何正整数个核心。
后端管理器420可以被配置为存储器子系统与存储器子系统的存储器装置之间的接口。例如,后端管理器420可以被配置成接收、处理和/或解释从存储器装置接收并且传输到存储器装置的数据和其它通信。一或多个核心435可以用于执行后端管理器420的功能。例如,第一核心435-a、第二核心435-b和第N核心435-N可以用于实施后端管理器420的功能。在一些实施例中,这些核心435专用于执行后端管理器420的功能。在一些实施例中,一或多个这些核心435可以用于执行前端管理器410、转译管理器415或后端管理器420或此类的组合的功能。N可以表示任何正整数个核心。
转译管理器415可以被配置为前端管理器410与后端管理器420之间的接口。在一些实施方案中,主机系统所使用的命令和信令方案可以不同于存储器装置所使用的命令和信令方案。为了促进主机系统与代表主机系统存储数据的存储器装置之间的通信,转译管理器415可以将主机系统信息转译或以其它方式转换成存储器装置信息,并且反之亦然。一或多个核心430可以用于执行转译管理器415的功能。例如,第一核心430-a、第二核心430-b和第N核心430-N可以用于实施转译管理器415的功能。在一些实施例中,这些核心430专用于执行前端管理器410的功能。在一些实施例中,一或多个这些核心430可以用于执行转译管理器415、转译管理器415或后端管理器420或此类的组合的功能。N可以表示任何正整数个核心。
参考图3描述的前端核心315-a、转译核心315-b和后端核心315-c可以分别是前端管理器410的核心425、转译管理器415的核心430和后端管理器420的核心435的实例。在此类实例中,前端核心315-a可以接收存取命令,并且转译核心315-b可以监测后端核心315-c可用的带宽量。基于可用的带宽量,转译管理器415可以分配缓冲器的特定槽,以存储与存取操作相关联的数据。通过改变缓冲器的所分配的槽的量,这可能影响队列中有多少存取操作要由存储器装置(包含后端管理器420)执行。当转译核心315-b标识后端核心315-c拥有执行存取操作所需的带宽时,可以执行存取操作。在一些实例中,可以基于前端核心315-a从缓冲器中读取相关联的数据并且向后端核心315-c提供数据来执行存取操作。在一些实例中,可以通过转译管理器415(例如,转译核心315-b)将数据从前端核心315-a传递到后端核心315-c。
在一些情况下,第N核心430-N中的任何核心可以监测后端核心315-c的带宽。在一些情况下,转译管理器415的第一核心430-a可以监测后端核心315-c的带宽并且基于后端核心315-c的带宽分配缓冲器的槽。主机系统可以将要写入到存储器装置中的数据存储在缓冲器中。存储在缓冲器中的存取操作可以由转译管理器415的一或多个核心430、后端管理器420的一或多个核心435、存储器装置或此类的组合执行。例如,一或多个核心430和一或多个核心435可以用于基于核心425指示所需的带宽量可用于执行操作来执行存取操作。在一些实施例中,后端管理器420的一或多个核心435执行相关联的存取操作。
图5展示了本公开的实施例可以在其中操作的示例计算机系统500的框图。计算机系统500可以包含用于使机器执行本文所述的技术中的任何一或多种技术的指令集。在一些实施例中,计算机系统500可以对应于主机系统(例如,参考图1描述的主机系统105),所述主机系统包含存储器子系统(例如,参考图1描述的存储器子系统110)、与所述存储器子系统耦接或利用所述存储器子系统或者可以用于执行控制器的操作(例如,用于执行操作系统以执行对应于参考图1描述的性能管理器150的操作)。在一些实施例中,机器可以与局域网(LAN)、内联网、外联网和/或互联网中的其它机器连接(例如,联网)。机器可以在客户-服务器网络环境中以服务器或客户端机器的身份进行操作,在对等(或分布式)网络环境中作为对等机器进行操作,或在云计算基础设施或环境中作为服务器或客户端机器进行操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥接器或能够(顺序或以其它方式)执行指定由所述机器要采取的动作的指令集的任何机器。进一步地,尽管展示了单个机器,但是术语“机器”还可以包含单独地或联合地执行一个指令集(或多个指令集)以执行本文所讨论的方法中的任何一或多种方法的机器的任何集合。
示例计算机系统500可以包含通过总线545彼此通信的处理装置505、主存储器510(例如,ROM、闪存、DRAM,如SDRAM或兰巴斯DRAM(Rambus DRAM,RDRAM)等)、静态存储器515(例如,闪存、静态RAM(SRAM)等)以及数据存储系统525。
处理装置505表示一或多个通用处理装置,如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器或实施指令集组合的处理器。处理装置505还可以是一或多个专用处理装置,如ASIC、FPGA、DSP、网络处理器等。处理装置505被配置成执行用于执行本文所讨论的操作和步骤的指令535。计算机系统500可以进一步包含通过网络540进行通信的网络接口装置520。
数据存储系统525可以包含其上存储有使本文所描述的方法或功能中的任何一或多种方法或功能的一或多个指令集535或软件具体化的机器可读存储媒体530(也称为计算机可读媒体)。指令535还可以在由计算机系统500执行所述指令期间完全或至少部分地驻留在主存储器510和/或处理装置505内,主存储器510和处理装置505也构成机器可读存储媒体。机器可读存储媒体530、数据存储系统525和/或主存储器510可以对应于存储器子系统。
在一个实例中,指令535包含用于实施对应于性能管理器550(例如,参考图1描述的性能管理器150)的功能的指令。虽然机器可读存储媒体530被示为单个媒体,但是术语“机器可读存储媒体”可以包含存储所述一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还可以包含能够存储或编码由机器执行且使机器执行本公开的方法中的任何一或多种方法的指令集的任何媒体。术语“机器可读存储媒体”可以包含但不限于固态存储器、光学媒体和磁性媒体。
已经以对计算机存储器内的数据位的操作的算法和符号表示的形式呈现了前面详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来向本领域的其它技术人员最有效地传递其工作实质的方式。算法在此处并且通常被认为是产生期望结果的操作的自相一致序列。所述操作是需要对物理量进行物理操纵的操作。通常但不一定,这些量采用能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。已经证明,主要出于通用的原因,有时将这些信号称为比特、值、元素、符号、字符、术语、数字等是便利的。
然而,应当记住,所有这些术语和类似术语应当与合适的物理量相关联,并且仅仅是应用于这些量的方便标记。本公开可以涉及计算机系统或类似的电子计算装置的动作和过程,所述计算机系统或类似的电子计算装置对在计算机系统的寄存器和存储器内表示为物理(电子)量的数据进行操作,并将其转译为在计算机系统的存储器或寄存器或其它此类信息存储系统内以类似方式表示为物理量的其它数据。
本公开还涉及一种用于执行本文的操作的设备。此设备可以被专门构造用于所需目的,或者其可以包含通过计算机中存储的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可以存储在计算机可读存储媒体中,所述计算机可读存储媒体如但不限于任何类型的磁盘,包含各自耦接到计算机系统总线的软盘、光盘、CD-ROM和磁光盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡或者适于存储电子指令的任何类型的媒体。
本文所呈现的算法和显示并非固有地与任何特定计算机或其它设备相关。各种通用系统可以与根据本文的教导的程序一起使用,或者可以证明,构造用于执行所述方法的更具专用性的设备是方便的。用于各种这些系统的结构将如以下的描述中阐述那样显现。另外,本公开的描述不参考任何特定的编程语言。应理解,可以使用各种编程语言来实施如本文描述的本公开的教导。
本公开可以以计算机程序产品或软件的形式提供,所述计算机程序产品或软件可以包含具有存储于其上的指令的机器可读媒体,所述指令可以用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于以机器(例如,计算机)可读形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,如ROM、RAM、磁盘存储媒体、光学存储媒体、闪速存储器组件等。
在前述说明书中,已经参考其具体示例实例对本公开的实例进行描述。将显而易见的是,在不脱离如以下权利要求中阐述的本公开的实例的更广泛的范围的情况下,可以对其进行各种修改。因此,说明书和附图应被视为说明性意义的,而不是限制性的。
Claims (20)
1.一种方法,其包括:
监测存储器子系统的用于将数据写入到存储器装置的后端的带宽;
确定所述后端的所述带宽满足至少部分地基于所述存储器子系统与主机系统之间的性能的一或多个性能标准;以及
至少部分地基于确定所述后端的所述带宽满足所述一或多个性能标准来将缓冲器的一定量的一或多个槽分配给所述存储器子系统的前端,所述缓冲器的槽被配置成从所述前端接收用于由所述后端写入到所述存储器装置的数据。
2.根据权利要求1所述的方法,其进一步包括:
至少部分地基于所述后端的所述带宽相对于所述一或多个性能标准的关系来确定补偿参数,其中分配给所述前端的一或多个槽的所述量至少部分地基于所述补偿参数。
3.根据权利要求2所述的方法,其进一步包括:
至少部分地基于确定所述补偿参数来确定所述缓冲器的要分配给所述前端的一或多个槽的所述量,其中分配所述量的一或多个槽至少部分地基于确定一或多个槽的所述量。
4.根据权利要求1所述的方法,其进一步包括:
确定所述后端的所述带宽超过性能阈值,其中所述一或多个性能标准包括所述性能阈值,并且其中分配所述量的一或多个槽包括至少部分地基于所述后端的所述带宽超过所述性能阈值来分配第一量的一或多个槽,一或多个槽的所述第一量小于当所述带宽小于所述性能阈值时所分配的一或多个槽的第二量。
5.根据权利要求1所述的方法,其进一步包括:
标识所述存储器子系统的全局逻辑饱和、全局物理饱和、局部逻辑饱和、局部物理饱和或此类的组合,其中所述带宽至少部分地基于所述全局逻辑饱和、所述全局物理饱和、所述局部逻辑饱和、所述局部物理饱和或此类的所述组合。
6.根据权利要求1所述的方法,其中监测所述带宽进一步包括:
标识所述存储器子系统的所述存储器装置的转移单元的有效块的量,其中所述带宽至少部分地基于所述转移单元的有效块的所述量。
7.根据权利要求1所述的方法,其进一步包括:
由所述前端并且从所述主机系统接收将数据写入到所述存储器子系统的所述存储器装置的命令;以及
标识是否将所述缓冲器的一或多个槽分配给所述前端以接收用于写入操作的数据,其中分配所述缓冲器的所述量的一或多个槽至少部分地基于标识所述缓冲器的所述一或多个槽是否被分配。
8.根据权利要求7所述的方法,其进一步包括:
至少部分地基于标识所述一或多个槽被分配来将写入到所述存储器装置的所述数据存储于所述缓冲器的所述一或多个槽中。
9.根据权利要求1所述的方法,其中转译层被配置成将所述量的一或多个槽分配给所述前端。
10.根据权利要求1所述的方法,其中所述缓冲器的槽被配置成存储四千字节的数据。
11.一种系统,其包括:
多个存储器组件;以及
处理装置,所述处理装置与所述多个存储器组件操作性地耦接以:
监测存储器子系统的用于将数据写入到存储器装置的后端的带宽;
确定所述后端的所述带宽满足至少部分地基于所述存储器子系统与主机系统之间的性能的一或多个性能标准;并且
至少部分地基于确定所述后端的所述带宽满足所述一或多个性能标准来将缓冲器的一定量的一或多个槽分配给所述存储器子系统的前端,所述缓冲器的槽被配置成从所述前端接收用于由所述后端写入到所述存储器装置的数据。
12.根据权利要求11所述的系统,其进一步包括:
所述处理装置,所述处理装置进一步用于:
至少部分地基于所述后端的所述带宽相对于所述一或多个性能标准的关系来确定补偿参数,其中分配给所述前端的一或多个槽的所述量至少部分地基于所述补偿参数。
13.根据权利要求12所述的系统,其进一步包括:
所述处理装置,所述处理装置进一步用于:
至少部分地基于确定所述补偿参数来确定所述缓冲器的要分配给所述前端的一或多个槽的所述量,其中分配所述量的一或多个槽至少部分地基于确定一或多个槽的所述量。
14.根据权利要求11所述的系统,其进一步包括:
所述处理装置,所述处理装置进一步用于:
确定所述后端的所述带宽超过性能阈值,其中所述一或多个性能标准包括所述性能阈值,并且其中分配所述量的一或多个槽包括至少部分地基于所述后端的所述带宽超过所述性能阈值来分配第一量的一或多个槽,一或多个槽的所述第一量小于当所述带宽小于所述性能阈值时所分配的一或多个槽的第二量。
15.根据权利要求11所述的系统,其进一步包括:
所述处理装置,所述处理装置进一步用于:
标识所述存储器子系统的全局逻辑饱和、全局物理饱和、局部逻辑饱和、局部物理饱和或此类的组合,其中所述带宽至少部分地基于所述全局逻辑饱和、所述全局物理饱和、所述局部逻辑饱和、所述局部物理饱和或此类的所述组合。
16.根据权利要求11所述的系统,其进一步包括:
所述处理装置,所述处理装置进一步用于:
标识所述存储器子系统的所述存储器装置的转移单元的有效块的量,其中所述带宽至少部分地基于所述转移单元的有效块的所述量。
17.根据权利要求11所述的系统,其进一步包括:
所述处理装置,所述处理装置进一步用于:
由所述前端并且从所述主机系统接收将数据写入到所述存储器子系统的所述存储器装置的命令;并且
标识是否将所述缓冲器的一或多个槽分配给所述前端以接收用于写入操作的数据,其中分配所述缓冲器的所述量的一或多个槽至少部分地基于标识所述缓冲器的所述一或多个槽是否被分配。
18.根据权利要求11所述的系统,其中转译层被配置成将所述量的一或多个槽分配给所述前端。
19.根据权利要求11所述的系统,其中所述缓冲器的槽被配置成存储四千字节的数据。
20.一种非暂时性计算机可读存储媒体,其包括指令,所述指令当由处理装置执行时使所述处理装置:
监测存储器子系统的用于将数据写入到存储器装置的后端的带宽;
确定所述后端的所述带宽满足至少部分地基于所述存储器子系统与主机系统之间的性能的一或多个性能标准;并且
至少部分地基于确定所述后端的所述带宽满足所述一或多个性能标准来将缓冲器的一定量的一或多个槽分配给所述存储器子系统的前端,所述缓冲器的槽被配置成从所述前端接收用于由所述后端写入到所述存储器装置的数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/731,936 US11520502B2 (en) | 2019-12-31 | 2019-12-31 | Performance control for a memory sub-system |
US16/731,936 | 2019-12-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113127385A true CN113127385A (zh) | 2021-07-16 |
CN113127385B CN113127385B (zh) | 2024-05-28 |
Family
ID=76547198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011589655.9A Active CN113127385B (zh) | 2019-12-31 | 2020-12-29 | 对存储器子系统的性能控制 |
Country Status (2)
Country | Link |
---|---|
US (3) | US11520502B2 (zh) |
CN (1) | CN113127385B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210116494A1 (en) * | 2013-02-21 | 2021-04-22 | Advantest Corporation | Software directed firmware acceleration |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240053925A1 (en) * | 2022-08-15 | 2024-02-15 | Micron Technology, Inc. | Caching for multiple-level memory device |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010014936A1 (en) * | 2000-02-15 | 2001-08-16 | Akira Jinzaki | Data processing device, system, and method using a table |
US20120066439A1 (en) * | 2010-09-09 | 2012-03-15 | Fusion-Io, Inc. | Apparatus, system, and method for managing lifetime of a storage device |
US20180173673A1 (en) * | 2016-12-15 | 2018-06-21 | Ecole Polytechnique Federale De Lausanne (Epfl) | Atomic Object Reads for In-Memory Rack-Scale Computing |
US20190370168A1 (en) * | 2018-05-31 | 2019-12-05 | Western Digital Technologies, Inc. | Storage System and Method for Soft-Decision-Based Command Execution to Enhance Random Write Performance |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8437369B2 (en) * | 2006-05-19 | 2013-05-07 | Integrated Device Technology, Inc. | Packets transfer device that intelligently accounts for variable egress channel widths when scheduling use of dispatch bus by egressing packet streams |
US8250257B1 (en) * | 2010-12-08 | 2012-08-21 | Emc Corporation | Techniques for balancing system I/O load |
US10592122B2 (en) * | 2015-03-31 | 2020-03-17 | Sandisk Technologies Llc | Inherent adaptive trimming |
US10248327B2 (en) * | 2016-04-01 | 2019-04-02 | SK Hynix Inc. | Throttling for a memory system using a GC/HOST ratio and operating method thereof |
KR20200113480A (ko) * | 2019-03-25 | 2020-10-07 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 동작 방법 |
US11016899B2 (en) * | 2019-05-06 | 2021-05-25 | Qualcomm Incorporated | Selectively honoring speculative memory prefetch requests based on bandwidth state of a memory access path component(s) in a processor-based system |
US11687363B2 (en) * | 2019-07-15 | 2023-06-27 | Micron Technology, Inc. | Internal management traffic regulation for memory sub-systems |
KR102635689B1 (ko) * | 2019-08-30 | 2024-02-14 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 |
-
2019
- 2019-12-31 US US16/731,936 patent/US11520502B2/en active Active
-
2020
- 2020-12-29 CN CN202011589655.9A patent/CN113127385B/zh active Active
-
2022
- 2022-11-09 US US17/984,118 patent/US11899948B2/en active Active
-
2024
- 2024-01-17 US US18/415,459 patent/US20240192866A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010014936A1 (en) * | 2000-02-15 | 2001-08-16 | Akira Jinzaki | Data processing device, system, and method using a table |
US20120066439A1 (en) * | 2010-09-09 | 2012-03-15 | Fusion-Io, Inc. | Apparatus, system, and method for managing lifetime of a storage device |
US20180173673A1 (en) * | 2016-12-15 | 2018-06-21 | Ecole Polytechnique Federale De Lausanne (Epfl) | Atomic Object Reads for In-Memory Rack-Scale Computing |
US20190370168A1 (en) * | 2018-05-31 | 2019-12-05 | Western Digital Technologies, Inc. | Storage System and Method for Soft-Decision-Based Command Execution to Enhance Random Write Performance |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210116494A1 (en) * | 2013-02-21 | 2021-04-22 | Advantest Corporation | Software directed firmware acceleration |
US12055581B2 (en) * | 2013-02-21 | 2024-08-06 | Advantest Corporation | Software directed firmware acceleration |
Also Published As
Publication number | Publication date |
---|---|
US11899948B2 (en) | 2024-02-13 |
US11520502B2 (en) | 2022-12-06 |
US20230071878A1 (en) | 2023-03-09 |
CN113127385B (zh) | 2024-05-28 |
US20240192866A1 (en) | 2024-06-13 |
US20210200453A1 (en) | 2021-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11204721B2 (en) | Input/output size control between a host system and a memory sub-system | |
US11899948B2 (en) | Performance control for a memory sub-system | |
WO2021179164A1 (en) | Maintaining queues for memory sub-systems | |
US20230161509A1 (en) | Dynamic selection of cores for processing responses | |
CN113093990B (zh) | 存储器子系统处的数据块切换 | |
CN113448511A (zh) | 通过链接阵列依序预提取 | |
US11726716B2 (en) | Internal commands for access operations | |
US11816345B2 (en) | Zone block staging component for a memory subsystem with zoned namespace | |
CN117999547A (zh) | 用于存储器子系统中的两遍次编程的虚拟管理单元方案 | |
US20230129363A1 (en) | Memory overlay using a host memory buffer | |
US11275687B2 (en) | Memory cache management based on storage capacity for parallel independent threads | |
US20220404979A1 (en) | Managing queues of a memory sub-system | |
CN113126900A (zh) | 用于存储器子系统的媒体管理的单独核心 | |
US20240345754A1 (en) | Intelligent performance mode selection to manage quality of service | |
US11756626B2 (en) | Memory die resource management | |
CN113094293B (zh) | 存储器系统及相关方法和计算机可读存储介质 | |
US11847349B2 (en) | Dynamic partition command queues for a memory device | |
US20240231695A1 (en) | Managing retention latency for memory devices of vehicle systems | |
US20230058232A1 (en) | Partition command queues for a memory device | |
CN115843379A (zh) | 用来改进顺序存储器命令性能的存储器命令聚合 | |
CN117311602A (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 |