US20200272331A1 - Optimization of memory systems based on performance goals - Google Patents
Optimization of memory systems based on performance goals Download PDFInfo
- Publication number
- US20200272331A1 US20200272331A1 US15/931,478 US202015931478A US2020272331A1 US 20200272331 A1 US20200272331 A1 US 20200272331A1 US 202015931478 A US202015931478 A US 202015931478A US 2020272331 A1 US2020272331 A1 US 2020272331A1
- Authority
- US
- United States
- Prior art keywords
- memory system
- memory
- resources
- settings
- allocations
- 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.)
- Abandoned
Links
- 238000005457 optimization Methods 0.000 title claims description 19
- 238000012545 processing Methods 0.000 claims abstract description 23
- 238000003860 storage Methods 0.000 claims description 89
- 238000000034 method Methods 0.000 claims description 39
- 238000004891 communication Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 10
- 238000013468 resource allocation Methods 0.000 claims description 6
- 239000007787 solid Substances 0.000 claims description 4
- 230000004044 response Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3433—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3442—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- 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/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
- 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/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Definitions
- At least some embodiments disclosed herein relate to memory systems in general, and more particularly, but not limited to optimization of memory systems based on performance goals.
- a memory system can be a storage system, such as a solid-state drive (SSD), and can include one or more memory components that store data.
- a memory system can include memory devices such as non-volatile memory devices and volatile memory devices.
- a host system can utilize a memory system to store data at the memory devices of the memory system and to retrieve data stored at the memory system.
- the memory system can have various resources, such as one or more processors, communication channels, and different types of memory components. Using the resources the processors can execute firmware to perform operations related to data storage requests and/or tasks.
- FIG. 1 shows a computing system having a memory system having a performance manager in accordance with some embodiments of the present disclosure.
- FIG. 2 shows a storage system configured to balance performance needs based on performance profiles and/or operation statistics.
- FIG. 3 illustrates an example of determine a current setting profile for optimization of a customized performance goal.
- FIG. 4 shows a method to optimize a memory system based on performance goals.
- a memory system is a storage system, such as a solid-state drive (SSD).
- the memory system is a hybrid memory/storage system.
- a host system can utilize a memory system that includes one or more memory devices.
- the memory devices can include non-volatile memory devices, such as, for example, memory units formed based on negative-and (NAND) logic gates, memory units formed based on negative-or (NOR) logic gates, etc.
- the host system can provide write requests to store data at the memory devices of the memory system and can provide read requests to retrieve data stored at the memory system.
- a memory system can include a controller that manages the memory devices to perform operations such as reading data, writing data, or erasing data and other such operations.
- a storage system is used as one example of the memory system in the present disclosure.
- Operations in a memory system can be optimized for various profiles of operations and/or performance goals, such as read intensity operations, write intensity operations, durability, etc.
- the resources in the memory system can be allocated and/or utilized differently to optimize the performances of the memory system used under different patterns of operations and/or with different performance priorities.
- a configuration profile can be used to specify the settings for the allocation or utilization of resources within the memory system to improve the overall performance of the memory system in a pattern of usage that involves intensive read operations.
- a configuration profile can be used to specify the settings for the allocation or utilization of resources within the memory system to improve the overall performance of the memory system in a pattern of usage that involves intensive write operations.
- a configuration profile can be used to specify the settings for the allocation or utilization of resources within the memory system to improve the overall performance of the memory system in durability.
- a user of the memory system may select a profile from the plurality of available profiles based on the preferences of the user in performance optimization, such as a preference for improved performance in read intensity operations, a preference for improved performance in write intensity operations, or a preference for improved performance in durability.
- the settings of the selected profile can be used to customize the operations of the memory system.
- the memory system tracks the statistics of the input/output requests (e.g., read and write commands from its host system) to determine the usage patterns and workloads in a past period of time that may be indicative the usage patterns and workloads of the memory system in a following period of time.
- the memory system can select and/or generate a configuration profile based on the predicted usage patterns and workloads in the following period of time and/or an indication of the performance priority of the user to re-balance the resource usages within the memory system for performance optimization tailored to the user preference and/or the predicted usage patterns and workloads.
- FIG. 1 shows a computing system having a memory system ( 108 ) having a performance manager ( 114 ) in accordance with some embodiments of the present disclosure.
- the performance manager ( 114 ) can adjust the way resources of the memory system ( 108 ) are used in performing the commands/requests from a host system ( 101 ) to optimize certain aspects of performance goals, in accordance with a user preference and/or patterns of the commands/requests from the host system ( 101 ).
- the memory system ( 108 ) can include media, such as memory devices ( 109 A to 109 N).
- the memory devices ( 109 A to 109 N) can be volatile memory devices, non-volatile memory (NVM) devices, or a combination of such.
- the memory system ( 108 ) is a storage system.
- An example of a storage system is a solid state drive (SSD).
- the memory system ( 108 ) is a hybrid memory/storage system.
- the computing system can include a host system ( 101 ) that uses the memory system ( 108 ).
- the host system ( 101 ) can write data to the memory system ( 108 ) and read data from the memory system ( 108 ).
- the host system ( 101 ) can be a computing device such as a desktop computer, laptop computer, network server, mobile device, or such computing device that includes a memory and a processing device.
- the host system ( 101 ) can include or be coupled to the memory system ( 108 ) so that the host system ( 101 ) can read data from or write data to the memory system ( 108 ).
- the host system ( 101 ) can be coupled to the memory system ( 108 ) via a physical host interface.
- “coupled to” generally refers to a connection between components, which can be an indirect communicative connection or direct communicative connection (e.g., without intervening components), whether wired or wireless, including connections such as, electrical, optical, magnetic, etc.
- Examples of a physical host interface include, but are not limited to, a serial advanced technology attachment (SATA) interface, a peripheral component interconnect express (PCIe) interface, universal serial bus (USB) interface, Fibre Channel, Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), etc.
- the physical host interface can be used to transmit data between the host system ( 101 ) and the memory system ( 108 ).
- the host system ( 101 ) can further utilize an NVM Express (NVMe) interface to access the memory devices ( 109 A to 109 N) when the memory system ( 108 ) is coupled with the host system ( 101 ) by the PCIe interface.
- the physical host interface can provide an interface for passing control, address, data, and other signals between the memory system ( 108 ) and the host system ( 101 ).
- the memory devices ( 109 A to 109 N) can include any combination of the different types of non-volatile memory devices and/or volatile memory devices.
- An example of non-volatile memory devices includes a negative-and (NAND) type flash memory.
- Each of the memory devices ( 109 A to 109 N) can include one or more arrays of memory cells such as single level cells (SLCs), multi-level cells (MLCs), triple level cells (TLCs), quad-level cells (QLCs), etc.
- a particular memory device can include both an SLC portion and a MLC (or TLC or QLC) portion of memory cells.
- Each of the memory cells can store one or more bits of data used by the host system ( 101 ).
- the memory devices ( 109 A to 109 N) can be based on any other type of memory such as a volatile memory.
- the memory devices ( 109 A to 109 N) can be, but are not limited to, random access memory (RAM), read-only memory (ROM), dynamic random access memory (DRAM), static random access memory (SRAM), synchronous dynamic random access memory (SDRAM), phase change memory (PCM), magneto random access memory (MRAM), negative-or (NOR) flash memory, electrically erasable programmable read-only memory (EEPROM), and a cross-point array of non-volatile memory cells.
- RAM random access memory
- ROM read-only memory
- DRAM dynamic random access memory
- SRAM static random access memory
- SDRAM synchronous dynamic random access memory
- PCM phase change memory
- MRAM magneto random access memory
- NOR negative-or
- flash memory electrically erasable programmable read-only memory
- EEPROM electrically erasable programmable read-only memory
- a cross-point array of non-volatile memory can perform bit storage based on a change of bulk resistance, in conjunction with a stackable cross-gridded data access array. Additionally, in contrast to many Flash-based memory, cross point non-volatile memory can perform a write in-place operation, where a non-volatile memory cell can be programmed without the non-volatile memory cell being previously erased. Furthermore, the memory cells of the memory devices ( 109 A to 109 N) can be grouped as memory pages or data blocks that can refer to a unit of the memory device used to store data.
- the controller ( 107 ) can communicate with the memory devices ( 109 A to 109 N) to perform operations such as reading data, writing data, or erasing data at the memory devices ( 109 A to 109 N) and other such operations.
- the controller ( 107 ) can include hardware such as one or more integrated circuits and/or discrete components, a buffer memory, or a combination thereof.
- the controller ( 107 ) can be a microcontroller, special purpose logic circuitry (e.g., a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), etc.), or another suitable processor.
- the controller ( 107 ) can include one or more processors (processing devices) ( 120 ) configured to execute instructions stored in local memory ( 119 ).
- the local memory ( 119 ) of the controller ( 107 ) includes an embedded memory configured to store instructions for performing various processes, operations, logic flows, and routines that control operation of the memory system ( 108 ), including handling communications between the memory system ( 108 ) and the host system ( 101 ), and the functions of the performance manager ( 114 ), which is described in greater detail below.
- the local memory ( 119 ) can include memory for the implementation of the performance manager ( 114 ) and/or memory registers storing, e.g., memory pointers, fetched data, etc.
- the local memory ( 119 ) can include read-only memory (ROM) for storing micro-code.
- a memory system ( 108 ) in FIG. 1 has been illustrated as including the controller ( 107 ), in another embodiment of the present disclosure, a memory system ( 108 ) may not include a controller ( 107 ), and may instead rely upon external control (e.g., provided by an external host, or by a processor or controller separate from the memory system).
- external control e.g., provided by an external host, or by a processor or controller separate from the memory system.
- the controller ( 107 ) can receive commands or operations from the host system ( 101 ) and can convert the commands or operations into instructions or appropriate commands to achieve the desired access to the memory devices ( 109 A to 109 N).
- the controller ( 107 ) can be responsible for other operations such as wear leveling operations, garbage collection operations, error detection and error-correcting code (ECC) operations, encryption operations, caching operations, and address translations between a logical block address and a physical block address that are associated with the memory devices ( 109 A to 109 N).
- the controller ( 107 ) can further include host interface circuitry to communicate with the host system ( 101 ) via the physical host interface.
- the host interface circuitry can convert the commands received from the host system into command instructions to access the memory devices ( 109 A to 109 N) as well as convert responses associated with the memory devices ( 109 A to 109 N) into information for the host system ( 101 ).
- the memory system ( 108 ) can also include additional circuitry or components that are not illustrated.
- the memory system ( 108 ) can include a cache or buffer (e.g., DRAM) and address circuitry (e.g., a row decoder and a column decoder) that can receive an address from the controller ( 107 ) and decode the address to access the memory devices ( 109 A to 109 N).
- a cache or buffer e.g., DRAM
- address circuitry e.g., a row decoder and a column decoder
- the host system ( 101 ) has one or more connectors to provide the memory system ( 108 ) with power and/or communicate with the memory system ( 108 ) via a communication channel and a predetermined protocol; and the memory system ( 108 ) has one or more connectors to receive the power, data and commands from the host system ( 101 ).
- the connection between connector on the host system ( 101 ) and connector on memory system ( 108 ) may utilize a PCIe bus or a SATA bus.
- FIG. 2 shows a storage system ( 103 ) configured to balance performance needs based on performance profiles and/or operation statistics.
- the storage system ( 103 ) of FIG. 2 can be used as an example of the memory system ( 108 ) in the computing system of FIG. 1 .
- the storage system ( 103 ) of FIG. 2 has various hardware resources that can be used to process the requests/commands from the host system ( 101 ).
- the hardware resources of the storage system ( 103 ) include processors ( 121 , . . . , 123 ) of a controller ( 107 ) of the storage system ( 103 ).
- the processors ( 121 , . . . , 123 ) can be allocated to perform different tasks in the processing of a request or command from the host system ( 101 ).
- Different ways to allocate the processors ( 121 , . . . , 123 ) to different tasks can have different impacts in the performance levels of the storage system ( 103 ) in completing different types of requests or commands (e.g., improving a performance level in completing certain types of requests or commands while reducing a performance level in completing other types of requests or commands).
- the hardware resources of the storage system ( 103 ) include volatile memory ( 106 ). Different portions of the volatile memory ( 106 ) of different sizes can be allocated to different tasks in the processing of request or command from the host system ( 101 ). Different ways to partition the volatile memory ( 106 ) for allocation to different tasks can have different impacts in the performance levels of the storage system ( 103 ) in completing different types of requests or commands (e.g., improving a performance level in completing certain types of requests or commands while reducing a performance level in completing other types of requests or commands).
- FIG. 103 Further examples of hardware resources of the storage system ( 103 ) that can be allocated in different ways to impart different impacts on different performance goals of the storage system ( 103 ) include inter-process communication channels, registers, data and/or control signal buses, etc.
- non-volatile storage media ( 109 ) has a limited budget for rewriting data into a same memory unit in the non-volatile storage media ( 109 ). After the write budget is consumed, writing new data in the memory unit may not allow reliable retrieval of the data from the memory unit.
- the controller ( 107 ) of the storage system is programmed via the firmware ( 104 ) to perform operations to reduce writes in the non-volatile storage media ( 109 ) and/or to spread the writes in different memory units.
- Allocating different amount of resources (e.g., buffer memory and/or time slots) for such operations can have different impacts on the amount of reduction of writes achieved through the controller ( 107 ) performing such operations and thus result in different performance levels in the durability of the storage system ( 103 ).
- the storage system ( 103 ) stores a set of performance profiles ( 102 ).
- Each of the performance profile ( 102 ) specifies a set of parameters that identify the allocations of resources of the storage system ( 103 ) in performing various tasks/operations within the storage system ( 103 ).
- the controller ( 107 ) executing the firmware ( 104 ) the set of parameters in a corresponding performance profile ( 102 ) optimizes a particular performance goal, such as the input/output performance for a typical read intensive usage, the input/output performance for a typical write intensive usage, the durability of the storage system, etc.
- the performance manager ( 114 ) allows the selection of one of the performance goals (e.g., read intensity mode, write intensity mode, durability mode) as a preference and uses one of the predefined performance profiles ( 102 ) corresponding to the selected performance goal to configure the resource usage in the operations of the controller ( 107 ) running the firmware ( 104 ).
- one of the performance goals e.g., read intensity mode, write intensity mode, durability mode
- the host system ( 101 ) may present a user interface that allows a user of the host system ( 101 ) to select a performance optimization goal for the storage system ( 103 ). For example, a user may select to optimize the storage system ( 103 ) for read intensity usages, for write intensity usages, for durability, etc.
- the user selection is communicated from the host system ( 101 ) to the storage system ( 103 ) through a host interface ( 105 ), which causes the storage system ( 103 ) to use one of the performance profiles ( 102 ) corresponding to the user selection to configure the controller ( 107 ) running the firmware ( 104 ).
- the storage system ( 103 ) stores the user selection (e.g., in a predetermined location in the non-volatile storage media ( 109 )) such that when the storage system ( 103 ) is restarted/rebooted, one of the performance profiles ( 102 ) corresponding to the user selection is used to configure the controller ( 107 ) running the firmware ( 104 ) in balancing the resource usages to optimize the performance in the user selected performance goal.
- the user selection e.g., in a predetermined location in the non-volatile storage media ( 109 )
- the storage system ( 103 ) stores a performance profile ( 102 ) corresponds to the user selected performance goal and may not store other performance files of non-selected performance goals.
- the stored performance profile ( 102 ) may be received from the host system ( 101 ) in response to the user selection of a performance goal.
- the performance profile ( 102 ) can be received as a firmware update and/or via an administrative command for the customization of the storage system ( 103 ).
- the user may specify different weights for the different performance goals. For example, the user may specify a first weight for read intensity usages, a second weight for write intensity usages, a third weight for durability, etc.
- the host system ( 101 ) and/or the performance manager ( 114 ) combines the different performance profiles for the respective performance goals according to the user specified weights to generate a customized performance profile ( 102 ) based on predetermined rules.
- the user may specify a customized performance goal in the form of a combination of a set of predefined performance goals, instead of being restricted to selecting one from a predetermined set of performance goals.
- the set of weights can be stored in the non-volatile storage media ( 109 ) to generate a customized performance profile ( 102 ) for application during the start or boot of the storage system ( 103 ).
- the host system ( 101 ) (or a remote server) generates the customized performance profile ( 102 ) according to the set of weights and downloads the customized performance profile ( 102 ) into the storage system ( 103 ).
- the performance manager ( 114 ) tracks the operations performed by the storage system ( 103 ) in response to the requests/commands from the host system ( 101 ) to generate the operation statistics ( 112 ).
- the operation statistics ( 112 ) can identify the read intensity of past operations during a period of time, the write intensity of past operations during a period of time, the usage rate of the storage system ( 103 ), etc.
- the operation statistics ( 112 ) can be used to customize the weights for the combination of the performance profiles ( 102 ) in generating a customized performance profile ( 102 ) for the storage system ( 103 ) during a period of time that has similar usage patterns.
- a weight for the read intensity mode can be proportional to the measurement of the read intensity of past operations during the period of time;
- a weight for the write intensity mode can be proportional to the measurement of the write intensity of past operations during the period of time;
- a weight for the durability mode can be proportional to the measurement of the usage rate of past operations during the period of time.
- the weights for the different modes computed from the operation statistics ( 112 ) are combined with the weights for the respective modes specified by the user of the system.
- the weights for the different modes computed from the operation statistics ( 112 ) can be multiplied by respective weights specified by the user for the respective modes to compute the weights used for combining the performance profiles ( 102 ) of the respective modes.
- the host system ( 101 ) can use message queues to submit requests/commands, including the user preferences, weights, and/or the performance profiles ( 102 ), to the storage system ( 103 ).
- a submission queue (e.g., 111 , . . . , or 113 ) can be used by the host system ( 101 ) to submit requests to the storage system ( 103 ); and a completion queue (e.g., 115 , . . . , or 117 ) can be used by the host system ( 101 ) to receive responses from the storage system ( 103 ).
- NVMe Non-Volatile Memory Host Controller Interface Specification 1.2
- NVMe Non-Volatile Memory Host Controller Interface Specification 1.2
- a submission queue e.g., 111 , . . . , or 113
- a completion queue e.g., 115 , . . . , or 117 .
- the NVMe further specifies different types of message queues for the processing of different types of commands.
- I/O commands are limited to be submitted via I/O submission queues
- admin commands are limited to be submitted via admin submission queues.
- I/O commands include commands to read data from the storage system ( 103 ), commands to write data into the storage system ( 103 ), commands to compare data in the storage system ( 103 ), etc.
- admin commands include commands to manage namespaces, commands to attach namespaces, commands to create I/O submission or completion queues, commands to delete I/O submission or completion queues, commands for firmware management, etc.
- the NVMe allows multiple I/O submission queues to share an I/O completion queue by explicitly identifying the I/O completion queue in the request for the creation of each of the I/O submission queues.
- the NVMe requires that the storage system ( 103 ) fetch the commands/requests from a submission queue ( 111 , . . . , or 113 ) according to the order in which the commands are placed in the submission queue ( 111 , . . . , or 113 ). However, the NVMe allows the controller ( 107 ) to execute the fetched commands in any order.
- FIG. 3 illustrates an example of determine a current setting profile for optimization of a customized performance goal.
- the technique of FIG. 3 can be implemented via the performance manager ( 114 ) of FIG. 1 and/or FIG. 2 .
- a set of setting profiles ( 131 , 133 , . . . , 137 ) are pre-designed for performance optimization for a plurality of predefined usage models.
- the setting profile ( 131 ) specifies settings of resource allocations/usages in the storage system ( 103 ) to optimize performance for read intensity usages.
- the setting profile ( 133 ) specifies settings of resource allocations/usages in the storage system ( 103 ) to optimize performance for write intensity usages.
- the setting profile ( 137 ) specifies settings of resource allocations/usages in the storage system ( 103 ) to optimize durability of the non-volatile storage media ( 109 ) of the storage system ( 103 ).
- the setting profiles ( 131 , 133 , . . . , 137 ) of FIG. 3 can be used as the performance profiles ( 102 ) in the storage system ( 103 ) of FIG. 2 .
- a current setting profile ( 139 ) is identified ( 130 ) from the setting profiles ( 131 , 133 , . . . , 137 ).
- the user preference ( 116 ) may select one of the setting profiles ( 131 , 133 , . . . , 137 ) as the current setting profile ( 139 ).
- the user preference ( 116 ) may specify a weight for each of the setting profiles ( 131 , 133 , . . . , 137 ); and the set of weights of the user preference ( 116 ) is applied to the set of setting profiles ( 131 , 133 , . . . , 137 ) to generate ( 130 ) the current setting profile ( 139 ).
- the operation statistics ( 112 ) can be used to derive a set of weights for the set of setting profiles ( 131 , 133 , . . . , 137 ); and the set of weights generated from the operation statistics ( 112 ) is applied to the set of setting profiles ( 131 , 133 , . . . , 137 ) to generate ( 130 ) the current setting profile ( 139 ).
- the set of weights of the user preference ( 116 ) and the set of weights derived from the operation statistics ( 112 ) can be both applied to the set of setting profiles ( 131 , 133 , . . . , 137 ) to generate ( 130 ) the current setting profile ( 139 ) that is customized for the following period of time.
- FIG. 4 shows a method to optimize a memory system based on performance goals.
- the method of FIG. 4 can be used in the memory system ( 108 ) of FIG. 1 in general and in the storage system ( 103 ) of FIG. 2 as an example, to implement the technique of FIG. 3 .
- the method of FIG. 4 includes: identifying ( 161 ) a plurality of performance modes of a memory system; generating ( 163 ) a plurality of profiles ( 102 , or 131 , 133 , . . . , 137 ) that identify settings of resource usages in the memory system ( 108 or 103 ) optimized for the plurality of performance modes respectively; receiving ( 165 ) an indication of a user preference ( 116 ) regarding the performance modes; operating ( 167 ) the memory system ( 108 or 103 ) using resource usage settings identified in a profile ( 139 ) identified based on the profiles ( 102 , or 131 , 133 , . . .
- a memory system e.g., 108 or 103
- can have a set of media e.g., 109 A to 109 N, or 109
- a controller 107
- firmware 104
- the memory system (e.g., 108 or 103 ) has a performance manager ( 114 ) that identifies settings ( 139 ) for allocations of the resources in the processing of the requests based at least in part on a user identified preference ( 116 ).
- the performance manager ( 114 ) can be implemented via the controller ( 107 ) executing a portion of the firmware ( 104 ) and/or a special purpose circuit.
- the set of media (e.g., 109 A to 109 N, or 109 ) can include a flash memory; and the memory system (e.g., 108 or 103 ) can be a solid state drive (SSD).
- SSD solid state drive
- the user identified preference ( 116 ) can select a performance goal from a plurality of predefined performance goals that have a plurality of setting profiles ( 131 , 133 , . . . , 137 ); and the settings ( 139 ) for the allocations of the resources are specified in a profile ( 139 ) selected from the plurality of setting profiles ( 131 , 133 , . . . , 137 ) according to the performance goal selected by the user identified preference ( 116 ).
- the user identified preference ( 116 ) can specify a plurality of weights for a plurality of predefined performance goals that have a plurality of setting profiles ( 131 , 133 , . . . , 137 ); and the settings ( 139 ) for the allocations of the resources are computed by applying the plurality of weights on the plurality of setting profiles ( 131 , 133 , . . . , 137 ) respectively.
- at least two of the plurality of setting profiles ( 131 , 133 , . . . , 137 ) have non-zero weights.
- the memory system (e.g., 108 or 103 ) stores a plurality of setting profiles ( 102 , or 131 to 137 ) for a plurality of predefined performance goals respectively; and the settings ( 139 ) for the allocations of the resources are based on the plurality of setting profiles ( 102 , or 131 to 137 ).
- Examples of the plurality of predefined performance goals include at least one of: optimization for read intensive usage of the memory system (e.g., 108 or 103 ) (e.g., 108 or 103 ); optimization for write intensities usage of the memory system (e.g., 108 or 103 ); and optimization for durability of the memory system (e.g., 108 or 103 ).
- Examples of the set of resources include at least one of: volatile memory, registers, communication buses, inter-process communication channels, and processors ( 120 , or 121 to 123 ) or running processes in the controller ( 107 ).
- the controller ( 107 ) of the memory system can include a plurality processors ( 120 , or 121 to 123 ) that run a plurality of processes; each of the processes performs one of a plurality of tasks in the memory system (e.g., 108 or 103 ); and the settings ( 139 ) balance resource allocations among the tasks for a performance goal individualized based on the user preference ( 116 ) and/or the actual or predicted usages of the memory system (e.g., 108 or 103 ) in serving the requests/commands from the host system ( 101 ).
- the performance manager ( 114 ) can determine operation statistics ( 112 ) of the memory system (e.g., 108 or 103 ) and identify ( 130 ) the settings ( 139 ) for allocations of the resources based on the user preference ( 116 ) and the operation statistics ( 112 ).
- the operation statistics ( 112 ) can be used to compute weights for the plurality of predefined performance goals; and the weights can be modified via the user preference ( 116 ) before being applied on the setting profiles ( 131 to 137 ) of the predefined performance goals to generate a customized/individualized setting profile ( 139 ).
- the performance manager ( 114 ) computes a plurality of first weights for the plurality of predefined performance goals respectively based on the operation statistics ( 112 ); the user identified preference ( 116 ) specifies a plurality of second weights for the plurality of predefined performance goals respectively; and the plurality of first weights and the plurality of second weights are applied on the plurality of setting profiles to determine the settings ( 139 ) for the allocations of the resources.
- the computation of the customized and/or individualized setting profile ( 139 ) is performed on the host system ( 101 ).
- the setting profile ( 139 ) is downloaded to the memory system (e.g., 108 or 103 ) during a firmware update or customization operation.
- the host system ( 101 ) can track the operation statistics ( 112 ) and/or obtain the user preference ( 116 ) independent from and/or without involving the memory system (e.g., 108 or 103 ).
- the storage system ( 103 ) of FIG. 2 can be attached to the host system ( 101 ) in FIG. 1 as an implementation of the memory system ( 108 ).
- a communication channel between the host system ( 101 ) and the memory system ( 108 ) in general and the storage system ( 103 ) in particular allows the host system ( 101 ) to send data requests and/or other commands that trigger certain operations of the controller ( 107 ) on the media (e.g., 109 A to 109 N, 109 ), such as data write operations, data read operations, data erasure operations.
- a host interface ( 105 ) implements the communication protocols of the communication channel.
- the communication channel between the host system ( 101 ) and the memory system ( 108 ) or the storage system ( 103 ) includes a bus for computer peripheral devices, such as a PCIe bus, a SATA bus, a USB bus.
- the communication channel between the host system ( 101 ) and the storage system ( 103 ) includes a computer network, such as a local area network, a wireless local area network, a wireless personal area network, a cellular communications network, a broadband high-speed always-connected wireless communication connection (e.g., a current or future generation of mobile network link); and the host system ( 101 ) and the storage system ( 103 ) can be configured to communicate with each other using data storage management and usage commands similar to those in NVMe protocol.
- a computer network such as a local area network, a wireless local area network, a wireless personal area network, a cellular communications network, a broadband high-speed always-connected wireless communication connection (e.g., a current or future generation of mobile network link).
- the controller ( 107 ) of the storage system ( 103 ) can run firmware ( 104 ) to perform operations responsive to the communications from the host system ( 101 ).
- Firmware in general is a type of computer program that provides control, monitoring and data manipulation of engineered computing devices.
- the storage system ( 103 ) can have non-volatile storage media ( 109 ).
- non-volatile storage media ( 109 ) include memory cells formed in an integrated circuit and magnetic material coated on rigid disks.
- Non-volatile storage media ( 109 ) can maintain the data/information stored therein without consuming power.
- Memory cells can be implemented using various memory/storage technologies, such as NAND logic gate, NOR logic gate, phase-change memory (PCM), magnetic memory (MRAM), resistive random-access memory, cross point storage and memory devices (e.g., 3D XPoint memory).
- a cross point memory device uses transistor-less memory elements, each of which has a memory cell and a selector that are stacked together as a column.
- Memory element columns are connected via two perpendicular lays of wires, where one lay is above the memory element columns and the other lay below the memory element columns.
- Each memory element can be individually selected at a cross point of one wire on each of the two layers.
- Cross point memory devices are fast and non-volatile and can be used as a unified memory pool for processing and storage.
- the controller ( 107 ) has in-processor cache memory with data access performance that is better than the volatile DRAM ( 106 ) and/or the non-volatile storage media ( 109 ). Thus, it is preferred to cache parts of instructions and data used in the current computing task in the in-processor cache memory of the controller ( 107 ) during the computing operations of the controller ( 107 ). In some instances, the controller ( 107 ) has multiple processors ( 121 , . . . , 123 ), each having its own in-processor cache memory.
- the controller ( 107 ) performs data intensive, in-memory processing using data and/or instructions organized in the storage system ( 103 ). For example, in response to a request from a host system ( 101 ), the controller ( 107 ) performs a real time analysis of a set of data stored in the storage system ( 103 ) and communicates a reduced data set to the host system ( 101 ) as a response.
- the storage system ( 103 ) is connected to real time sensors to store sensor inputs; and the processors ( 120 , 121 , . . .
- controller ( 107 ) are configured to perform machine learning and/or pattern recognition based on the sensor inputs to support an artificial intelligence (AI) system that is implemented at least in part via the storage system ( 103 ) and/or the host system ( 101 ).
- AI artificial intelligence
- the processors ( 120 , 121 , . . . , 123 ) of the controller ( 107 ) are integrated with memory (e.g., 119 , 109 A, . . . , 109 N, 106 , 109 ) in computer chip fabrication to enable processing in memory and thus overcome the von Neumann bottleneck that limits computing performance as a result of a limit in throughput caused by latency in data moves between a processor and memory configured separately according to the von Neumann architecture.
- the integration of processing and memory increases processing speed and memory transfer rate and decreases latency and power usage.
- the storage system ( 103 ) can be used in various computing systems, such as a cloud computing system, an edge computing system, a fog computing system, and/or a standalone computer.
- a cloud computing system remote computer servers are connected in a network to store, manage, and process data.
- An edge computing system optimizes cloud computing by performing data processing at the edge of the computer network that is close to the data source and thus reduces data communications with a centralize server and/or data storage.
- a fog computing system uses one or more end-user devices or near-user edge devices to store data and thus reduces or eliminates the need to store the data in a centralized data warehouse.
- Some embodiments involving the operation of the controller ( 107 ) can be implemented using computer instructions executed by the controller ( 107 ), such as the firmware ( 104 ) of the controller ( 107 ). In some instances, hardware circuits can be used to implement at least some of the functions.
- the firmware ( 104 ) can be initially stored in the non-volatile storage media ( 109 ), or another non-volatile device, and loaded into the volatile DRAM ( 106 ) and/or the in-processor cache memory for execution by the controller ( 107 ).
- a non-transitory computer storage medium can be used to store instructions of the firmware ( 104 ) of the memory system ( 108 ) in general and the storage system ( 103 ) in particular.
- the instructions When the instructions are executed by the controller ( 107 ) of the memory system ( 108 ) or the storage system ( 103 ), the instructions cause the controller ( 107 ) to perform a method discussed above.
- various functions and operations may be described as being performed by or caused by computer instructions to simplify description. However, those skilled in the art will recognize what is meant by such expressions is that the functions result from execution of the computer instructions by one or more controllers or processors, such as a microprocessor.
- the functions and operations can be implemented using special purpose circuitry, with or without software instructions, such as using Application-Specific Integrated Circuit (ASIC) or Field-Programmable Gate Array (FPGA).
- ASIC Application-Specific Integrated Circuit
- FPGA Field-Programmable Gate Array
- Embodiments can be implemented using hardwired circuitry without software instructions, or in combination with software instructions. Thus, the techniques are limited neither to any specific combination of hardware circuitry and software, nor to any particular source for the instructions executed by the data processing system.
- At least some aspects disclosed can be embodied, at least in part, in software. That is, the techniques may be carried out in a computer system or other data processing system in response to its processor, such as a microprocessor or micro-controller, executing sequences of instructions contained in a memory, such as ROM, volatile RAM, non-volatile memory, cache or a remote storage device.
- processor such as a microprocessor or micro-controller
- a memory such as ROM, volatile RAM, non-volatile memory, cache or a remote storage device.
- Routines executed to implement the embodiments may be implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions referred to as “computer programs.”
- the computer programs typically comprise one or more instructions set at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processors in a computer, cause the computer to perform operations necessary to execute elements involving the various aspects.
- a tangible, non-transitory computer storage medium can be used to store software and data which, when executed by a data processing system, causes the system to perform various methods.
- the executable software and data may be stored in various places including for example ROM, volatile RAM, non-volatile memory and/or cache. Portions of this software and/or data may be stored in any one of these storage devices.
- the data and instructions can be obtained from centralized servers or peer-to-peer networks. Different portions of the data and instructions can be obtained from different centralized servers and/or peer-to-peer networks at different times and in different communication sessions or in a same communication session.
- the data and instructions can be obtained in their entirety prior to the execution of the applications. Alternatively, portions of the data and instructions can be obtained dynamically, just in time, when needed for execution. Thus, it is not required that the data and instructions be on a machine-readable medium in their entirety at a particular instance of time.
- Examples of computer-readable storage media include, but are not limited to, recordable and non-recordable type media such as volatile and non-volatile memory devices, read only memory (ROM), random access memory (RAM), flash memory devices, floppy and other removable disks, magnetic disk storage media, and optical storage media (e.g., Compact Disk Read-Only Memory (CD ROM), Digital Versatile Disks (DVDs), etc.), among others.
- the instructions may be embodied in a transitory medium, such as electrical, optical, acoustical or other forms of propagated signals, such as carrier waves, infrared signals, digital signals, etc.
- a transitory medium is typically used to transmit instructions, but not viewed as capable of storing the instructions.
- hardwired circuitry may be used in combination with software instructions to implement the techniques.
- the techniques are neither limited to any specific combination of hardware circuitry and software, nor to any particular source for the instructions executed by the data processing system.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
- The present application is a continuation application of U.S. patent application Ser. No. 15/943,296, filed Apr. 2, 2018 and entitled “Optimization of Memory Systems based on Performance Goals”, the entire disclosure of which application is hereby incorporated herein by reference.
- At least some embodiments disclosed herein relate to memory systems in general, and more particularly, but not limited to optimization of memory systems based on performance goals.
- A memory system can be a storage system, such as a solid-state drive (SSD), and can include one or more memory components that store data. For example, a memory system can include memory devices such as non-volatile memory devices and volatile memory devices. In general, a host system can utilize a memory system to store data at the memory devices of the memory system and to retrieve data stored at the memory system.
- The memory system can have various resources, such as one or more processors, communication channels, and different types of memory components. Using the resources the processors can execute firmware to perform operations related to data storage requests and/or tasks.
- The embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.
-
FIG. 1 shows a computing system having a memory system having a performance manager in accordance with some embodiments of the present disclosure. -
FIG. 2 shows a storage system configured to balance performance needs based on performance profiles and/or operation statistics. -
FIG. 3 illustrates an example of determine a current setting profile for optimization of a customized performance goal. -
FIG. 4 shows a method to optimize a memory system based on performance goals. - At least some aspects of the present disclosure are directed to the optimization of a memory system based on different performance goals of interest to different users and/or in response to different patterns of usage of the memory system. An example of a memory system is a storage system, such as a solid-state drive (SSD). In some embodiments, the memory system is a hybrid memory/storage system. In general, a host system can utilize a memory system that includes one or more memory devices. The memory devices can include non-volatile memory devices, such as, for example, memory units formed based on negative-and (NAND) logic gates, memory units formed based on negative-or (NOR) logic gates, etc. The host system can provide write requests to store data at the memory devices of the memory system and can provide read requests to retrieve data stored at the memory system. A memory system can include a controller that manages the memory devices to perform operations such as reading data, writing data, or erasing data and other such operations. A storage system is used as one example of the memory system in the present disclosure.
- Operations in a memory system can be optimized for various profiles of operations and/or performance goals, such as read intensity operations, write intensity operations, durability, etc. The resources in the memory system can be allocated and/or utilized differently to optimize the performances of the memory system used under different patterns of operations and/or with different performance priorities.
- For example, a configuration profile can be used to specify the settings for the allocation or utilization of resources within the memory system to improve the overall performance of the memory system in a pattern of usage that involves intensive read operations.
- For example, a configuration profile can be used to specify the settings for the allocation or utilization of resources within the memory system to improve the overall performance of the memory system in a pattern of usage that involves intensive write operations.
- For example, a configuration profile can be used to specify the settings for the allocation or utilization of resources within the memory system to improve the overall performance of the memory system in durability.
- A user of the memory system may select a profile from the plurality of available profiles based on the preferences of the user in performance optimization, such as a preference for improved performance in read intensity operations, a preference for improved performance in write intensity operations, or a preference for improved performance in durability. The settings of the selected profile can be used to customize the operations of the memory system.
- In some instances, the memory system tracks the statistics of the input/output requests (e.g., read and write commands from its host system) to determine the usage patterns and workloads in a past period of time that may be indicative the usage patterns and workloads of the memory system in a following period of time. The memory system can select and/or generate a configuration profile based on the predicted usage patterns and workloads in the following period of time and/or an indication of the performance priority of the user to re-balance the resource usages within the memory system for performance optimization tailored to the user preference and/or the predicted usage patterns and workloads.
-
FIG. 1 shows a computing system having a memory system (108) having a performance manager (114) in accordance with some embodiments of the present disclosure. - For example, the performance manager (114) can adjust the way resources of the memory system (108) are used in performing the commands/requests from a host system (101) to optimize certain aspects of performance goals, in accordance with a user preference and/or patterns of the commands/requests from the host system (101).
- In general, the memory system (108) can include media, such as memory devices (109A to 109N). The memory devices (109A to 109N) can be volatile memory devices, non-volatile memory (NVM) devices, or a combination of such. In some embodiments, the memory system (108) is a storage system. An example of a storage system is a solid state drive (SSD). In some embodiments, the memory system (108) is a hybrid memory/storage system. In general, the computing system can include a host system (101) that uses the memory system (108). In some implementations, the host system (101) can write data to the memory system (108) and read data from the memory system (108).
- The host system (101) can be a computing device such as a desktop computer, laptop computer, network server, mobile device, or such computing device that includes a memory and a processing device. The host system (101) can include or be coupled to the memory system (108) so that the host system (101) can read data from or write data to the memory system (108). The host system (101) can be coupled to the memory system (108) via a physical host interface. As used herein, “coupled to” generally refers to a connection between components, which can be an indirect communicative connection or direct communicative connection (e.g., without intervening components), whether wired or wireless, including connections such as, electrical, optical, magnetic, etc. Examples of a physical host interface include, but are not limited to, a serial advanced technology attachment (SATA) interface, a peripheral component interconnect express (PCIe) interface, universal serial bus (USB) interface, Fibre Channel, Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), etc. The physical host interface can be used to transmit data between the host system (101) and the memory system (108). The host system (101) can further utilize an NVM Express (NVMe) interface to access the memory devices (109A to 109N) when the memory system (108) is coupled with the host system (101) by the PCIe interface. The physical host interface can provide an interface for passing control, address, data, and other signals between the memory system (108) and the host system (101).
- The memory devices (109A to 109N) can include any combination of the different types of non-volatile memory devices and/or volatile memory devices. An example of non-volatile memory devices includes a negative-and (NAND) type flash memory. Each of the memory devices (109A to 109N) can include one or more arrays of memory cells such as single level cells (SLCs), multi-level cells (MLCs), triple level cells (TLCs), quad-level cells (QLCs), etc. In some implementations, a particular memory device can include both an SLC portion and a MLC (or TLC or QLC) portion of memory cells. Each of the memory cells can store one or more bits of data used by the host system (101). Although non-volatile memory devices such as NAND type flash memory are described, the memory devices (109A to 109N) can be based on any other type of memory such as a volatile memory. In some implementations, the memory devices (109A to 109N) can be, but are not limited to, random access memory (RAM), read-only memory (ROM), dynamic random access memory (DRAM), static random access memory (SRAM), synchronous dynamic random access memory (SDRAM), phase change memory (PCM), magneto random access memory (MRAM), negative-or (NOR) flash memory, electrically erasable programmable read-only memory (EEPROM), and a cross-point array of non-volatile memory cells. A cross-point array of non-volatile memory can perform bit storage based on a change of bulk resistance, in conjunction with a stackable cross-gridded data access array. Additionally, in contrast to many Flash-based memory, cross point non-volatile memory can perform a write in-place operation, where a non-volatile memory cell can be programmed without the non-volatile memory cell being previously erased. Furthermore, the memory cells of the memory devices (109A to 109N) can be grouped as memory pages or data blocks that can refer to a unit of the memory device used to store data.
- The controller (107) can communicate with the memory devices (109A to 109N) to perform operations such as reading data, writing data, or erasing data at the memory devices (109A to 109N) and other such operations. The controller (107) can include hardware such as one or more integrated circuits and/or discrete components, a buffer memory, or a combination thereof. The controller (107) can be a microcontroller, special purpose logic circuitry (e.g., a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), etc.), or another suitable processor. The controller (107) can include one or more processors (processing devices) (120) configured to execute instructions stored in local memory (119).
- In the illustrated example, the local memory (119) of the controller (107) includes an embedded memory configured to store instructions for performing various processes, operations, logic flows, and routines that control operation of the memory system (108), including handling communications between the memory system (108) and the host system (101), and the functions of the performance manager (114), which is described in greater detail below. In some embodiments, the local memory (119) can include memory for the implementation of the performance manager (114) and/or memory registers storing, e.g., memory pointers, fetched data, etc. The local memory (119) can include read-only memory (ROM) for storing micro-code.
- While the example memory system (108) in
FIG. 1 has been illustrated as including the controller (107), in another embodiment of the present disclosure, a memory system (108) may not include a controller (107), and may instead rely upon external control (e.g., provided by an external host, or by a processor or controller separate from the memory system). - In general, the controller (107) can receive commands or operations from the host system (101) and can convert the commands or operations into instructions or appropriate commands to achieve the desired access to the memory devices (109A to 109N). The controller (107) can be responsible for other operations such as wear leveling operations, garbage collection operations, error detection and error-correcting code (ECC) operations, encryption operations, caching operations, and address translations between a logical block address and a physical block address that are associated with the memory devices (109A to 109N). The controller (107) can further include host interface circuitry to communicate with the host system (101) via the physical host interface. The host interface circuitry can convert the commands received from the host system into command instructions to access the memory devices (109A to 109N) as well as convert responses associated with the memory devices (109A to 109N) into information for the host system (101).
- The memory system (108) can also include additional circuitry or components that are not illustrated. In some implementations, the memory system (108) can include a cache or buffer (e.g., DRAM) and address circuitry (e.g., a row decoder and a column decoder) that can receive an address from the controller (107) and decode the address to access the memory devices (109A to 109N).
- In one example, the host system (101) has one or more connectors to provide the memory system (108) with power and/or communicate with the memory system (108) via a communication channel and a predetermined protocol; and the memory system (108) has one or more connectors to receive the power, data and commands from the host system (101). For example, the connection between connector on the host system (101) and connector on memory system (108) may utilize a PCIe bus or a SATA bus.
-
FIG. 2 shows a storage system (103) configured to balance performance needs based on performance profiles and/or operation statistics. For example, the storage system (103) ofFIG. 2 can be used as an example of the memory system (108) in the computing system ofFIG. 1 . - The storage system (103) of
FIG. 2 has various hardware resources that can be used to process the requests/commands from the host system (101). - For example, the hardware resources of the storage system (103) include processors (121, . . . , 123) of a controller (107) of the storage system (103). The processors (121, . . . , 123) can be allocated to perform different tasks in the processing of a request or command from the host system (101). Different ways to allocate the processors (121, . . . , 123) to different tasks can have different impacts in the performance levels of the storage system (103) in completing different types of requests or commands (e.g., improving a performance level in completing certain types of requests or commands while reducing a performance level in completing other types of requests or commands).
- For example, the hardware resources of the storage system (103) include volatile memory (106). Different portions of the volatile memory (106) of different sizes can be allocated to different tasks in the processing of request or command from the host system (101). Different ways to partition the volatile memory (106) for allocation to different tasks can have different impacts in the performance levels of the storage system (103) in completing different types of requests or commands (e.g., improving a performance level in completing certain types of requests or commands while reducing a performance level in completing other types of requests or commands).
- Further examples of hardware resources of the storage system (103) that can be allocated in different ways to impart different impacts on different performance goals of the storage system (103) include inter-process communication channels, registers, data and/or control signal buses, etc.
- In some instances, non-volatile storage media (109) has a limited budget for rewriting data into a same memory unit in the non-volatile storage media (109). After the write budget is consumed, writing new data in the memory unit may not allow reliable retrieval of the data from the memory unit. The controller (107) of the storage system is programmed via the firmware (104) to perform operations to reduce writes in the non-volatile storage media (109) and/or to spread the writes in different memory units. Allocating different amount of resources (e.g., buffer memory and/or time slots) for such operations can have different impacts on the amount of reduction of writes achieved through the controller (107) performing such operations and thus result in different performance levels in the durability of the storage system (103).
- The storage system (103) stores a set of performance profiles (102). Each of the performance profile (102) specifies a set of parameters that identify the allocations of resources of the storage system (103) in performing various tasks/operations within the storage system (103). When used by the controller (107) executing the firmware (104), the set of parameters in a corresponding performance profile (102) optimizes a particular performance goal, such as the input/output performance for a typical read intensive usage, the input/output performance for a typical write intensive usage, the durability of the storage system, etc.
- The performance manager (114) allows the selection of one of the performance goals (e.g., read intensity mode, write intensity mode, durability mode) as a preference and uses one of the predefined performance profiles (102) corresponding to the selected performance goal to configure the resource usage in the operations of the controller (107) running the firmware (104).
- For example, the host system (101) may present a user interface that allows a user of the host system (101) to select a performance optimization goal for the storage system (103). For example, a user may select to optimize the storage system (103) for read intensity usages, for write intensity usages, for durability, etc. The user selection is communicated from the host system (101) to the storage system (103) through a host interface (105), which causes the storage system (103) to use one of the performance profiles (102) corresponding to the user selection to configure the controller (107) running the firmware (104).
- Optionally, the storage system (103) stores the user selection (e.g., in a predetermined location in the non-volatile storage media (109)) such that when the storage system (103) is restarted/rebooted, one of the performance profiles (102) corresponding to the user selection is used to configure the controller (107) running the firmware (104) in balancing the resource usages to optimize the performance in the user selected performance goal.
- Optionally, the storage system (103) stores a performance profile (102) corresponds to the user selected performance goal and may not store other performance files of non-selected performance goals. The stored performance profile (102) may be received from the host system (101) in response to the user selection of a performance goal. The performance profile (102) can be received as a firmware update and/or via an administrative command for the customization of the storage system (103).
- In some instances, the user may specify different weights for the different performance goals. For example, the user may specify a first weight for read intensity usages, a second weight for write intensity usages, a third weight for durability, etc. The host system (101) and/or the performance manager (114) combines the different performance profiles for the respective performance goals according to the user specified weights to generate a customized performance profile (102) based on predetermined rules. Thus, the user may specify a customized performance goal in the form of a combination of a set of predefined performance goals, instead of being restricted to selecting one from a predetermined set of performance goals.
- The set of weights can be stored in the non-volatile storage media (109) to generate a customized performance profile (102) for application during the start or boot of the storage system (103). Alternatively, the host system (101) (or a remote server) generates the customized performance profile (102) according to the set of weights and downloads the customized performance profile (102) into the storage system (103).
- In some instances, the performance manager (114) tracks the operations performed by the storage system (103) in response to the requests/commands from the host system (101) to generate the operation statistics (112). For example, the operation statistics (112) can identify the read intensity of past operations during a period of time, the write intensity of past operations during a period of time, the usage rate of the storage system (103), etc. The operation statistics (112) can be used to customize the weights for the combination of the performance profiles (102) in generating a customized performance profile (102) for the storage system (103) during a period of time that has similar usage patterns.
- For example, a weight for the read intensity mode can be proportional to the measurement of the read intensity of past operations during the period of time; a weight for the write intensity mode can be proportional to the measurement of the write intensity of past operations during the period of time; and a weight for the durability mode can be proportional to the measurement of the usage rate of past operations during the period of time.
- In some instances, the weights for the different modes computed from the operation statistics (112) are combined with the weights for the respective modes specified by the user of the system. For examples, the weights for the different modes computed from the operation statistics (112) can be multiplied by respective weights specified by the user for the respective modes to compute the weights used for combining the performance profiles (102) of the respective modes.
- In general, the host system (101) can use message queues to submit requests/commands, including the user preferences, weights, and/or the performance profiles (102), to the storage system (103).
- For example, a submission queue (e.g., 111, . . . , or 113) can be used by the host system (101) to submit requests to the storage system (103); and a completion queue (e.g., 115, . . . , or 117) can be used by the host system (101) to receive responses from the storage system (103).
- For example, a version of NVMe (e.g., Non-Volatile Memory Host Controller Interface Specification 1.2) specifies the use of a circular buffer with a fixed slot size for a submission queue (e.g., 111, . . . , or 113) or a completion queue (e.g., 115, . . . , or 117).
- The NVMe further specifies different types of message queues for the processing of different types of commands. For example, input/output (I/O) commands are limited to be submitted via I/O submission queues; and admin commands are limited to be submitted via admin submission queues. Examples of I/O commands include commands to read data from the storage system (103), commands to write data into the storage system (103), commands to compare data in the storage system (103), etc. Examples of admin commands include commands to manage namespaces, commands to attach namespaces, commands to create I/O submission or completion queues, commands to delete I/O submission or completion queues, commands for firmware management, etc. The NVMe allows multiple I/O submission queues to share an I/O completion queue by explicitly identifying the I/O completion queue in the request for the creation of each of the I/O submission queues.
- The NVMe requires that the storage system (103) fetch the commands/requests from a submission queue (111, . . . , or 113) according to the order in which the commands are placed in the submission queue (111, . . . , or 113). However, the NVMe allows the controller (107) to execute the fetched commands in any order.
-
FIG. 3 illustrates an example of determine a current setting profile for optimization of a customized performance goal. For example, the technique ofFIG. 3 can be implemented via the performance manager (114) ofFIG. 1 and/orFIG. 2 . - In
FIG. 3 , a set of setting profiles (131, 133, . . . , 137) are pre-designed for performance optimization for a plurality of predefined usage models. - For example, the setting profile (131) specifies settings of resource allocations/usages in the storage system (103) to optimize performance for read intensity usages.
- For example, the setting profile (133) specifies settings of resource allocations/usages in the storage system (103) to optimize performance for write intensity usages.
- For example, the setting profile (137) specifies settings of resource allocations/usages in the storage system (103) to optimize durability of the non-volatile storage media (109) of the storage system (103).
- For example, the setting profiles (131, 133, . . . , 137) of
FIG. 3 can be used as the performance profiles (102) in the storage system (103) ofFIG. 2 . - Based on a user preference (116) and/or operation statistics (112), a current setting profile (139) is identified (130) from the setting profiles (131, 133, . . . , 137).
- For example, when the operation statistics (112) is not available, the user preference (116) may select one of the setting profiles (131, 133, . . . , 137) as the current setting profile (139).
- For example, when the operation statistics (112) is not available, the user preference (116) may specify a weight for each of the setting profiles (131, 133, . . . , 137); and the set of weights of the user preference (116) is applied to the set of setting profiles (131, 133, . . . , 137) to generate (130) the current setting profile (139).
- For example, when the user preference (116) is not available, the operation statistics (112) can be used to derive a set of weights for the set of setting profiles (131, 133, . . . , 137); and the set of weights generated from the operation statistics (112) is applied to the set of setting profiles (131, 133, . . . , 137) to generate (130) the current setting profile (139).
- For example, when the user preference (116) specifies a set of weights for the set of setting profiles (131, 133, . . . , 137) respectively and a set of weights is generated from the operation statistics (112) for a period of time that is indicative of the operation characteristics of a following period of time, the set of weights of the user preference (116) and the set of weights derived from the operation statistics (112) can be both applied to the set of setting profiles (131, 133, . . . , 137) to generate (130) the current setting profile (139) that is customized for the following period of time.
-
FIG. 4 shows a method to optimize a memory system based on performance goals. For example, the method ofFIG. 4 can be used in the memory system (108) ofFIG. 1 in general and in the storage system (103) ofFIG. 2 as an example, to implement the technique ofFIG. 3 . - The method of
FIG. 4 includes: identifying (161) a plurality of performance modes of a memory system; generating (163) a plurality of profiles (102, or 131, 133, . . . , 137) that identify settings of resource usages in the memory system (108 or 103) optimized for the plurality of performance modes respectively; receiving (165) an indication of a user preference (116) regarding the performance modes; operating (167) the memory system (108 or 103) using resource usage settings identified in a profile (139) identified based on the profiles (102, or 131, 133, . . . , 137) and the user preference (116); tracking (169) operation statistics (112) of memory system (108 or 103); and adjusting (171) resource usage settings of the memory system based at least in part on the operation statistics (112). - For example, a memory system (e.g., 108 or 103) can have a set of media (e.g., 109A to 109N, or 109), a set of resources; and a controller (107) configured via firmware (104) to use the set of resources in processing requests from a host system (101) to store data in the media (e.g., 109A to 109N, or 109) or retrieve data from the media (e.g., 109A to 109N, or 109). The memory system (e.g., 108 or 103) has a performance manager (114) that identifies settings (139) for allocations of the resources in the processing of the requests based at least in part on a user identified preference (116). The performance manager (114) can be implemented via the controller (107) executing a portion of the firmware (104) and/or a special purpose circuit.
- For example, the set of media (e.g., 109A to 109N, or 109) can include a flash memory; and the memory system (e.g., 108 or 103) can be a solid state drive (SSD).
- For example, the user identified preference (116) can select a performance goal from a plurality of predefined performance goals that have a plurality of setting profiles (131, 133, . . . , 137); and the settings (139) for the allocations of the resources are specified in a profile (139) selected from the plurality of setting profiles (131, 133, . . . , 137) according to the performance goal selected by the user identified preference (116).
- For example, the user identified preference (116) can specify a plurality of weights for a plurality of predefined performance goals that have a plurality of setting profiles (131, 133, . . . , 137); and the settings (139) for the allocations of the resources are computed by applying the plurality of weights on the plurality of setting profiles (131, 133, . . . , 137) respectively. In some instances, at least two of the plurality of setting profiles (131, 133, . . . , 137) have non-zero weights.
- For example, the memory system (e.g., 108 or 103) stores a plurality of setting profiles (102, or 131 to 137) for a plurality of predefined performance goals respectively; and the settings (139) for the allocations of the resources are based on the plurality of setting profiles (102, or 131 to 137).
- Examples of the plurality of predefined performance goals include at least one of: optimization for read intensive usage of the memory system (e.g., 108 or 103) (e.g., 108 or 103); optimization for write intensities usage of the memory system (e.g., 108 or 103); and optimization for durability of the memory system (e.g., 108 or 103).
- Examples of the set of resources include at least one of: volatile memory, registers, communication buses, inter-process communication channels, and processors (120, or 121 to 123) or running processes in the controller (107).
- For example, the controller (107) of the memory system (e.g., 108 or 103) can include a plurality processors (120, or 121 to 123) that run a plurality of processes; each of the processes performs one of a plurality of tasks in the memory system (e.g., 108 or 103); and the settings (139) balance resource allocations among the tasks for a performance goal individualized based on the user preference (116) and/or the actual or predicted usages of the memory system (e.g., 108 or 103) in serving the requests/commands from the host system (101).
- For example, the performance manager (114) can determine operation statistics (112) of the memory system (e.g., 108 or 103) and identify (130) the settings (139) for allocations of the resources based on the user preference (116) and the operation statistics (112).
- For example, the operation statistics (112) can be used to compute weights for the plurality of predefined performance goals; and the weights can be modified via the user preference (116) before being applied on the setting profiles (131 to 137) of the predefined performance goals to generate a customized/individualized setting profile (139).
- For example, the performance manager (114) computes a plurality of first weights for the plurality of predefined performance goals respectively based on the operation statistics (112); the user identified preference (116) specifies a plurality of second weights for the plurality of predefined performance goals respectively; and the plurality of first weights and the plurality of second weights are applied on the plurality of setting profiles to determine the settings (139) for the allocations of the resources.
- In some instances, the computation of the customized and/or individualized setting profile (139) is performed on the host system (101). The setting profile (139) is downloaded to the memory system (e.g., 108 or 103) during a firmware update or customization operation.
- In some instances, the host system (101) can track the operation statistics (112) and/or obtain the user preference (116) independent from and/or without involving the memory system (e.g., 108 or 103).
- The storage system (103) of
FIG. 2 can be attached to the host system (101) inFIG. 1 as an implementation of the memory system (108). A communication channel between the host system (101) and the memory system (108) in general and the storage system (103) in particular allows the host system (101) to send data requests and/or other commands that trigger certain operations of the controller (107) on the media (e.g., 109A to 109N, 109), such as data write operations, data read operations, data erasure operations. A host interface (105) implements the communication protocols of the communication channel. - In some implementations, the communication channel between the host system (101) and the memory system (108) or the storage system (103) includes a bus for computer peripheral devices, such as a PCIe bus, a SATA bus, a USB bus.
- In some implementations, the communication channel between the host system (101) and the storage system (103) includes a computer network, such as a local area network, a wireless local area network, a wireless personal area network, a cellular communications network, a broadband high-speed always-connected wireless communication connection (e.g., a current or future generation of mobile network link); and the host system (101) and the storage system (103) can be configured to communicate with each other using data storage management and usage commands similar to those in NVMe protocol.
- The controller (107) of the storage system (103) can run firmware (104) to perform operations responsive to the communications from the host system (101). Firmware in general is a type of computer program that provides control, monitoring and data manipulation of engineered computing devices.
- The storage system (103) can have non-volatile storage media (109). Examples of non-volatile storage media (109) include memory cells formed in an integrated circuit and magnetic material coated on rigid disks. Non-volatile storage media (109) can maintain the data/information stored therein without consuming power. Memory cells can be implemented using various memory/storage technologies, such as NAND logic gate, NOR logic gate, phase-change memory (PCM), magnetic memory (MRAM), resistive random-access memory, cross point storage and memory devices (e.g., 3D XPoint memory). A cross point memory device uses transistor-less memory elements, each of which has a memory cell and a selector that are stacked together as a column. Memory element columns are connected via two perpendicular lays of wires, where one lay is above the memory element columns and the other lay below the memory element columns. Each memory element can be individually selected at a cross point of one wire on each of the two layers. Cross point memory devices are fast and non-volatile and can be used as a unified memory pool for processing and storage.
- In some instances, the controller (107) has in-processor cache memory with data access performance that is better than the volatile DRAM (106) and/or the non-volatile storage media (109). Thus, it is preferred to cache parts of instructions and data used in the current computing task in the in-processor cache memory of the controller (107) during the computing operations of the controller (107). In some instances, the controller (107) has multiple processors (121, . . . , 123), each having its own in-processor cache memory.
- Optionally, the controller (107) performs data intensive, in-memory processing using data and/or instructions organized in the storage system (103). For example, in response to a request from a host system (101), the controller (107) performs a real time analysis of a set of data stored in the storage system (103) and communicates a reduced data set to the host system (101) as a response. For example, in some applications, the storage system (103) is connected to real time sensors to store sensor inputs; and the processors (120, 121, . . . , 123) of the controller (107) are configured to perform machine learning and/or pattern recognition based on the sensor inputs to support an artificial intelligence (AI) system that is implemented at least in part via the storage system (103) and/or the host system (101).
- In some implementations, the processors (120, 121, . . . , 123) of the controller (107) are integrated with memory (e.g., 119, 109A, . . . , 109N, 106, 109) in computer chip fabrication to enable processing in memory and thus overcome the von Neumann bottleneck that limits computing performance as a result of a limit in throughput caused by latency in data moves between a processor and memory configured separately according to the von Neumann architecture. The integration of processing and memory increases processing speed and memory transfer rate and decreases latency and power usage.
- The storage system (103) can be used in various computing systems, such as a cloud computing system, an edge computing system, a fog computing system, and/or a standalone computer. In a cloud computing system, remote computer servers are connected in a network to store, manage, and process data. An edge computing system optimizes cloud computing by performing data processing at the edge of the computer network that is close to the data source and thus reduces data communications with a centralize server and/or data storage. A fog computing system uses one or more end-user devices or near-user edge devices to store data and thus reduces or eliminates the need to store the data in a centralized data warehouse.
- Some embodiments involving the operation of the controller (107) can be implemented using computer instructions executed by the controller (107), such as the firmware (104) of the controller (107). In some instances, hardware circuits can be used to implement at least some of the functions. The firmware (104) can be initially stored in the non-volatile storage media (109), or another non-volatile device, and loaded into the volatile DRAM (106) and/or the in-processor cache memory for execution by the controller (107).
- A non-transitory computer storage medium can be used to store instructions of the firmware (104) of the memory system (108) in general and the storage system (103) in particular. When the instructions are executed by the controller (107) of the memory system (108) or the storage system (103), the instructions cause the controller (107) to perform a method discussed above.
- In this description, various functions and operations may be described as being performed by or caused by computer instructions to simplify description. However, those skilled in the art will recognize what is meant by such expressions is that the functions result from execution of the computer instructions by one or more controllers or processors, such as a microprocessor. Alternatively, or in combination, the functions and operations can be implemented using special purpose circuitry, with or without software instructions, such as using Application-Specific Integrated Circuit (ASIC) or Field-Programmable Gate Array (FPGA). Embodiments can be implemented using hardwired circuitry without software instructions, or in combination with software instructions. Thus, the techniques are limited neither to any specific combination of hardware circuitry and software, nor to any particular source for the instructions executed by the data processing system.
- While some embodiments can be implemented in fully functioning computers and computer systems, various embodiments are capable of being distributed as a computing product in a variety of forms and are capable of being applied regardless of the particular type of machine or computer-readable media used to actually effect the distribution.
- At least some aspects disclosed can be embodied, at least in part, in software. That is, the techniques may be carried out in a computer system or other data processing system in response to its processor, such as a microprocessor or micro-controller, executing sequences of instructions contained in a memory, such as ROM, volatile RAM, non-volatile memory, cache or a remote storage device.
- Routines executed to implement the embodiments may be implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions referred to as “computer programs.” The computer programs typically comprise one or more instructions set at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processors in a computer, cause the computer to perform operations necessary to execute elements involving the various aspects.
- A tangible, non-transitory computer storage medium can be used to store software and data which, when executed by a data processing system, causes the system to perform various methods. The executable software and data may be stored in various places including for example ROM, volatile RAM, non-volatile memory and/or cache. Portions of this software and/or data may be stored in any one of these storage devices. Further, the data and instructions can be obtained from centralized servers or peer-to-peer networks. Different portions of the data and instructions can be obtained from different centralized servers and/or peer-to-peer networks at different times and in different communication sessions or in a same communication session. The data and instructions can be obtained in their entirety prior to the execution of the applications. Alternatively, portions of the data and instructions can be obtained dynamically, just in time, when needed for execution. Thus, it is not required that the data and instructions be on a machine-readable medium in their entirety at a particular instance of time.
- Examples of computer-readable storage media include, but are not limited to, recordable and non-recordable type media such as volatile and non-volatile memory devices, read only memory (ROM), random access memory (RAM), flash memory devices, floppy and other removable disks, magnetic disk storage media, and optical storage media (e.g., Compact Disk Read-Only Memory (CD ROM), Digital Versatile Disks (DVDs), etc.), among others. The instructions may be embodied in a transitory medium, such as electrical, optical, acoustical or other forms of propagated signals, such as carrier waves, infrared signals, digital signals, etc. A transitory medium is typically used to transmit instructions, but not viewed as capable of storing the instructions.
- In various embodiments, hardwired circuitry may be used in combination with software instructions to implement the techniques. Thus, the techniques are neither limited to any specific combination of hardware circuitry and software, nor to any particular source for the instructions executed by the data processing system.
- Although some of the drawings illustrate a number of operations in a particular order, operations that are not order dependent may be reordered and other operations may be combined or broken out. While some reordering or other groupings are specifically mentioned, others will be apparent to those of ordinary skill in the art and so do not present an exhaustive list of alternatives. Moreover, it should be recognized that the stages could be implemented in hardware, firmware, software or any combination thereof.
- The above description and drawings are illustrative and are not to be construed as limiting. Numerous specific details are described to provide a thorough understanding. However, in certain instances, well known or conventional details are not described in order to avoid obscuring the description. References to one or an embodiment in the present disclosure are not necessarily references to the same embodiment; and, such references mean at least one.
- In the foregoing specification, the disclosure has been described with reference to specific exemplary embodiments thereof. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/931,478 US20200272331A1 (en) | 2018-04-02 | 2020-05-13 | Optimization of memory systems based on performance goals |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/943,296 US10678439B2 (en) | 2018-04-02 | 2018-04-02 | Optimization of memory systems based on performance goals |
US15/931,478 US20200272331A1 (en) | 2018-04-02 | 2020-05-13 | Optimization of memory systems based on performance goals |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/943,296 Continuation US10678439B2 (en) | 2018-04-02 | 2018-04-02 | Optimization of memory systems based on performance goals |
Publications (1)
Publication Number | Publication Date |
---|---|
US20200272331A1 true US20200272331A1 (en) | 2020-08-27 |
Family
ID=68056204
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/943,296 Active US10678439B2 (en) | 2018-04-02 | 2018-04-02 | Optimization of memory systems based on performance goals |
US15/931,478 Abandoned US20200272331A1 (en) | 2018-04-02 | 2020-05-13 | Optimization of memory systems based on performance goals |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/943,296 Active US10678439B2 (en) | 2018-04-02 | 2018-04-02 | Optimization of memory systems based on performance goals |
Country Status (3)
Country | Link |
---|---|
US (2) | US10678439B2 (en) |
CN (1) | CN111936961B (en) |
WO (1) | WO2019194936A1 (en) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427340B (en) * | 2018-04-28 | 2023-08-04 | 伊姆西Ip控股有限责任公司 | Method, apparatus and computer storage medium for file storage |
US10901658B2 (en) * | 2018-12-28 | 2021-01-26 | Micron Technology, Inc. | Host adaptive memory device optimization |
US11494098B2 (en) * | 2020-06-30 | 2022-11-08 | Western Digital Technologies, Inc. | Variable performance storage devices |
JP7191906B2 (en) * | 2020-09-09 | 2022-12-19 | 株式会社日立製作所 | RESOURCE ALLOCATION CONTROL DEVICE, COMPUTER SYSTEM, AND RESOURCE ALLOCATION CONTROL METHOD |
US11334260B2 (en) | 2020-10-14 | 2022-05-17 | Micron Technology, Inc. | Adaptive memory system |
US11777822B2 (en) * | 2021-12-06 | 2023-10-03 | Microsoft Technology Licensing, Llc | Performance profile for network stack components |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130042003A1 (en) * | 2011-08-08 | 2013-02-14 | International Business Machines Corporation | Smart cloud workload balancer |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060161753A1 (en) * | 2005-01-18 | 2006-07-20 | Aschoff John G | Method, apparatus and program storage device for providing automatic performance optimization of virtualized storage allocation within a virtualized storage subsystem |
US8572330B2 (en) * | 2005-12-19 | 2013-10-29 | Commvault Systems, Inc. | Systems and methods for granular resource management in a storage network |
US20110010518A1 (en) * | 2005-12-19 | 2011-01-13 | Srinivas Kavuri | Systems and Methods for Migrating Components in a Hierarchical Storage Network |
WO2010041481A1 (en) * | 2008-10-10 | 2010-04-15 | Hitachi, Ltd. | Storage system and method for controlling the same |
US8479080B1 (en) | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
US8661184B2 (en) | 2010-01-27 | 2014-02-25 | Fusion-Io, Inc. | Managing non-volatile media |
US9189385B2 (en) | 2010-03-22 | 2015-11-17 | Seagate Technology Llc | Scalable data structures for control and management of non-volatile storage |
US20130185482A1 (en) * | 2012-01-18 | 2013-07-18 | Samsung Electronics Co., Ltd. | Memory system using a storage having firmware with a plurality of features |
US9239786B2 (en) | 2012-01-18 | 2016-01-19 | Samsung Electronics Co., Ltd. | Reconfigurable storage device |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
US10346095B2 (en) * | 2012-08-31 | 2019-07-09 | Sandisk Technologies, Llc | Systems, methods, and interfaces for adaptive cache persistence |
US9411718B2 (en) * | 2012-12-21 | 2016-08-09 | Seagate Technology Llc | Method to apply fine grain wear leveling and garbage collection |
DE102013114069A1 (en) * | 2013-01-03 | 2014-07-03 | Samsung Electronics Co., Ltd. | Memory system for changing operating characteristics of storage device i.e. solid state drive, has storage including adaptation controller to receive command from configuration controller and to determine whether to enable feature |
US9658785B2 (en) * | 2015-03-25 | 2017-05-23 | Amazon Technologies, Inc. | Dynamic configuration of data volumes |
US9798474B2 (en) * | 2015-09-25 | 2017-10-24 | International Business Machines Corporation | Software-defined storage system monitoring tool |
US9760479B2 (en) * | 2015-12-02 | 2017-09-12 | Pure Storage, Inc. | Writing data in a storage system that includes a first type of storage device and a second type of storage device |
CN105867851A (en) * | 2016-03-30 | 2016-08-17 | 联想(北京)有限公司 | Storage device adjusting method and device |
US10263838B2 (en) * | 2016-08-23 | 2019-04-16 | International Business Machines Corporation | Assigning resources to a workload that utilizes embedded computing entities |
US10133658B1 (en) * | 2017-05-02 | 2018-11-20 | Google Llc | Garbage collection for data storage |
KR102645142B1 (en) * | 2018-10-25 | 2024-03-07 | 삼성전자주식회사 | Storage devices, methods and non-volatile memory devices for performing garbage collection using estimated valid pages |
-
2018
- 2018-04-02 US US15/943,296 patent/US10678439B2/en active Active
-
2019
- 2019-03-11 WO PCT/US2019/021683 patent/WO2019194936A1/en active Application Filing
- 2019-03-11 CN CN201980023483.8A patent/CN111936961B/en active Active
-
2020
- 2020-05-13 US US15/931,478 patent/US20200272331A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130042003A1 (en) * | 2011-08-08 | 2013-02-14 | International Business Machines Corporation | Smart cloud workload balancer |
Also Published As
Publication number | Publication date |
---|---|
CN111936961A (en) | 2020-11-13 |
WO2019194936A1 (en) | 2019-10-10 |
CN111936961B (en) | 2024-06-21 |
US10678439B2 (en) | 2020-06-09 |
US20190303002A1 (en) | 2019-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200272331A1 (en) | Optimization of memory systems based on performance goals | |
US11663153B2 (en) | Access optimization in aggregated and virtualized solid state drives | |
US20220206874A1 (en) | Determination of workload distribution across processors in a memory system | |
US11966329B2 (en) | Address map caching for a memory system | |
US20230393753A1 (en) | Wear leveling in solid state drives | |
US12073115B2 (en) | Resource allocation in memory systems based on operation modes | |
US20220269551A1 (en) | Grouping requests to reduce inter-process communication in memory systems | |
CN114730285A (en) | Memory controller for solid state storage devices | |
US20240028261A1 (en) | Stack management in memory systems | |
US11263156B2 (en) | Memory component with a virtualized bus and internal logic to perform a machine learning operation | |
US11681909B2 (en) | Memory component with a bus to transmit data for a machine learning operation and another bus to transmit host data | |
US11769076B2 (en) | Memory sub-system with a virtualized bus and internal logic to perform a machine learning operation | |
US11694076B2 (en) | Memory sub-system with internal logic to perform a machine learning operation | |
US20210110249A1 (en) | Memory component with internal logic to perform a machine learning operation | |
US11676010B2 (en) | Memory sub-system with a bus to transmit data for a machine learning operation and another bus to transmit host data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICRON TECHNOLOGY, INC., IDAHO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FROLIKOV, ALEX;REEL/FRAME:052655/0602 Effective date: 20180430 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |