US12461859B2 - Interrupting memory access during background operations on a memory device - Google Patents
Interrupting memory access during background operations on a memory deviceInfo
- Publication number
- US12461859B2 US12461859B2 US18/347,359 US202318347359A US12461859B2 US 12461859 B2 US12461859 B2 US 12461859B2 US 202318347359 A US202318347359 A US 202318347359A US 12461859 B2 US12461859 B2 US 12461859B2
- Authority
- US
- United States
- Prior art keywords
- host
- background operation
- memory
- memory device
- command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
Definitions
- aspects of the present disclosure relate generally to memory access to a memory device through a memory bus and, in particular to interrupting memory access during background operations on the memory device.
- a memory may have many individual cells managed by a memory controller. Each cell is able to simultaneously store 1, 2, 3, 5, or another number of bits, depending on the physical structure of the cell.
- a memory controller manages read operations of data from the cells and write operations of external data into the cells. The memory controller also manages the use of the cells and may control logical address maps. Logical address maps are used to map logical data addresses to physical data addresses of particular cells.
- Flash memory background operations include wear leveling, block erase operations, bad block management, wipe operations, garbage collection, etc. Many of the background operations prevent the affected memory cells from being accessed during the operation. Since flash memory must be erased as a block of memory cells before any data may be written to any cell in the block, erasing, also referred to as flashing, wiping, or purging, prevents access to an entire block of memory cells. Other types of memory require other background operations to be performed.
- the host provides access to the memory to application layers executed by processors or controllers.
- the host connects to other parts of the computing system to allow operations to be performed on the data.
- the memory controller communicates with a host or other component through a memory bus.
- the memory bus allows data to be sent to and from the memory through the memory controller.
- the background operations may be driven by the memory controller, by the host, or by higher layer components of the computing system.
- a host for a memory device includes background operation circuitry configured to permit a background operation by a memory device.
- the host is coupled to the memory device through a bus.
- the host receives an operation completed notification from the memory device to indicate that the memory device has completed performing the background operation.
- Memory access command circuitry is configured to receive a memory access command.
- the memory access command concerns reading or writing data to the memory device coupled to the host.
- the memory access command circuitry initiates a wait at the host for the memory access command, and sends the memory access command to the memory device in response to receiving the operation completed notification.
- a method includes permitting, at a host, a background operation by a memory device, the host being coupled to the memory device through a bus for memory access.
- a memory access command is received at the host.
- the memory access command concerns reading or writing data to the memory device coupled to the host.
- a wait is initiated at the host for the memory access command.
- An operation completed notification is received from the memory device to indicate that the memory device has completed performing the background operation and the memory access command is sent to the memory device in response to receiving the operation completed notification.
- a non-transitory computer-readable medium has instructions stored therein for causing a processor of an interconnect link to perform the operations of the method above.
- a method in another example, includes performing a background operation on memory cells of a memory device, sending an operation completed notification to a host coupled to the memory device in response to completing the background operation, receiving a write command from the host in response to the operation completed notification, and writing data of the write command to the memory cells of the memory device.
- the one or more implementations include the features hereinafter fully described and particularly pointed out in the claims.
- the following description and the annexed drawings set forth in detail certain illustrative aspects of the one or more implementations. These aspects are indicative, however, of but a few of the various ways in which the principles of various implementations may be employed and the described implementations are intended to include all such aspects and their equivalents.
- FIG. 1 is a diagram of an example computing system that includes a system-on-a chip (SOC) coupled to memory devices through UFS buses suitable for aspects of the present disclosure.
- SOC system-on-a chip
- FIG. 2 is a diagram of signals and operations performed by a host and a memory device suitable for aspects of the present disclosure.
- FIG. 3 is a graphical representation of status and communication of a host and a memory device during normal memory access commands according to aspects of the present disclosure.
- FIG. 4 is a status and communication of a host and a memory device during normal background operations according to aspects of the present disclosure.
- FIG. 5 is a graphical representation of status and communication of a host and memory device during a background operation when a wait queue is available according to aspects of the present disclosure.
- FIG. 6 is a graphical representation of status and communication of a host and memory device after the completion of the background operation according to aspects of the present disclosure.
- FIG. 7 is a block diagram of a host controller according to aspects of the present disclosure.
- FIG. 8 is a flow diagram of aspects of interrupting memory access during background operations according to aspects of the present disclosure.
- a host When a host receives a memory access command from an application layer, e.g., to read or write data to a memory device, the host sends commands and data through the memory bus to the memory device. If the memory device is performing a background operation, e.g., a memory management operation, then the commands cannot be executed. Depending on the nature of the memory bus, the memory device may reply with a failure message or make no reply at all since the memory device is performing the background operation. If the host does not know whether the memory device is performing the background operation, then the host may repeat sending the commands and data. This requires activity by the host and the bus which consumes resources that may be better used for other activity. The host may instead abandon the command and rely on the application layer to repeat the command. This also consumes resources without any benefit.
- a background operation e.g., a memory management operation
- the memory device sends an operation completed notification to the host after it has completed a background operation. Before receiving the operation completed notification, the host initiates a wait for any new memory access commands. After receiving the operation completed notification from the memory device, the host then empties its wait queue as commands to the memory device and sends any new memory access commands to its command queue. By waiting for the operation completed notification, the host does not risk that memory access commands will be ignored or discarded.
- FIG. 1 is a diagram of an example computing system 100 that includes a system-on-a chip (SOC) coupled to memory devices through UFS buses.
- the host SOC 102 includes one or more host processors 104 for performing the primary operations of the die and parameter and configuration registers 106 .
- the host SOC 102 may be configured for use as any desired computing device from an embedded processor to a portable communications device to a desktop workstation to a server.
- an element, or any portion of an element, or any combination of elements may be implemented with the host SOC 102 .
- the processor include a central processor, a graphics processor, a special purpose processor, a memory controller, and an input/output controller.
- Examples of a UFS host controller 146 include microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to control the memory bus connection to the first and second memory devices.
- the host SOC 102 may be configured to perform any one or more of the functions described herein.
- the host SOC 102 contains other components (not shown) configured to perform other functions of the module as is suitable for the type of die.
- the host SOC 102 may be implemented with a bus architecture that may include any number of interconnecting buses and bridges depending on the specific application of the host SOC 102 .
- a bus architecture may be used to communicatively couple together various circuits including processors, controllers, timing sources, peripherals, data buffers, modules, power management circuits, and other processing cores, which are not described any further.
- a bus interface 108 provides an interface between an external bus 110 and other optional external interfaces e.g., a control interface 112 and a data interface 114 , etc.
- the processors 104 may communicate operations, administration, or management control with the control interface.
- the control interface 112 may be used to provide a communication interface or means of communicating with various other apparatuses and devices (for example, other devices housed within the same package or system) over an internal bus or external transmission medium, such as command and control interfaces for power regulation, power-on test, and other purposes.
- the data interface 114 may be used to provide data connections to other types of components within the package or system.
- the control interface 112 and the data interface 114 may be connected to a higher layer and to lower-level peripherals, sensors, and other components. There may be multiple different control interfaces and data interfaces coupled to the same bus 110 or an additional bus.
- the host processors 104 are coupled to a volatile memory controller 142 to interface with a volatile memory 151 such as a random-access memory (RAM) through a RAM bus 144 .
- the host processors 104 are coupled to a UFS host controller 146 to interface with a first UFS memory device 152 through a first bus 148 and to a second UFS memory device 156 through a second bus 150 .
- the UFS host controller receives commands from the host processors 104 , buffers the commands in a command queue 132 of the UFS host controller 146 and then, when ready, sends the command to the first UFS memory device 152 or the second UFS memory device 156 , as appropriate for the command, through the respective bus 148 , 150 .
- a variety of different commands may be received from the host processors 104 .
- Common memory access commands are to write to one or more registers and to read from one or more registers.
- An erase command may be treated in a flash memory as an un-map command in which the corresponding physical addresses are indicated in a memory map as not being mapped. During a background operation, the corresponding memory cells will be purged or flashed for re-use.
- Replies from the respective memory device are returned on the respective bus and sent to the host processors 104 or other component as appropriate for the command. While only one command queue 132 is shown, there may be multiple queues for each memory device.
- a wait queue 134 of the UFS host controller is used for commands that are in a wait at the UFS host controller 146 .
- the first UFS memory device 152 includes a memory controller 153 and memory cells 154 for storing data.
- the memory controller 153 maps logical memory addresses to physical memory addresses in the memory cells 154 and performs background operations to maintain and optimize the operation of the memory cells 154 .
- the memory controller 153 also serves as an interface through the UFS bus 148 to the UFS host controller 146 .
- the memory controller 153 may include an interface layer (not shown) as an interface to the UFS bus 148 .
- the interface layer may include a logic layer and a physical layer to the UFS bus.
- the interface layer may be integrated into the memory controller 153 as shown or configured as a separate component.
- the UFS host controller 146 may also include an interface layer (not shown) with a logic layer and a physical layer to the UFS bus.
- the second memory device 156 also includes a memory controller 157 and memory cells 158 .
- the UFS bus 148 , 150 has multiple upstream and downstream lanes that operate on differential signaling. There are also reset and clock lanes to support the differential lanes.
- the transport protocol supports packets and frames with commands based on Small Computer System Interface (SCSI).
- SCSI Small Computer System Interface
- UFS is provided only as an example, and the aspects presented herein may be applied to variations on UFS and other memory systems.
- the host controller 146 may have additional buffers, controllers, and other components, including read buffers, write buffers, status registers, physical interface state machines and other components, not shown herein.
- the memory device 152 , 156 may also have buffers, controllers, status and control registers, and other components not shown herein.
- the memory controller 153 or 157 may be configured to operate a variety of different background operations independently of the host (shown as the host controller above).
- the memory device 152 or 156 using its memory controller 153 or 157 , may be configured to signal to the host 102 a need to execute a particular background operation. After the background operation, an operation completed notification may be in the form of an interrupt on the memory bus 148 or 150 .
- the interrupt may use a wExceptionEventStatus attribute on a Universal Flash Storage memory bus.
- the signal to the host 102 allows the host 102 to find a suitable time for the background operation. As an example, the host 102 may check that the command queue 132 is empty or continue to process commands to the memory device 152 or 156 until the command queue 132 is empty.
- the host 102 responds to the request by setting a background operation enable flag. This is sent to the memory device 152 or 156 which then starts the background process.
- a background operation needed request from the memory controller may take different forms that indicate the performance or the operation as being impacted or critical.
- a first level is 2 h: Operations outstanding (performance being impacted), and a second level is 3 h: Operations outstanding (critical).
- 3 h indicates that the background operation is completed successfully and 05 h indicates that the background operation has failed.
- the purge operation has a unique purge operation needed request from the memory device and purge enable flag set by the host.
- the purge operation is an operation that is performed on physical blocks of memory cells that are not being used to store logical block data. These are blocks of memory cells that were used to store data that has been moved or erased through the logical address map. The purge operation removes all the data from the entire physical block.
- Dynamic device capacity is an operation that allows the capacity of the memory device to be reset in particular after a purge or other re-mapping.
- the memory device When the memory device is performing a background operation, especially a critical background operation, e.g., purge and dynamic device capacity, it cannot also perform some host commands, especially with respect to the blocks of memory cells that are affected by the background operation.
- a critical background operation e.g., purge and dynamic device capacity
- the memory device on receiving this command discards the host command.
- the memory device may also respond back to the host through the bus with a general failure. The host can avoid this result by first polling the memory device through the bus to determine if the memory device is running a background operation. The host can then issue the command again later after the background operation is ended. The host must continue to poll until the background operation is ended. However, with an operation completed notification, the host does not need to poll again, if at all.
- the host While the host sets the background operation enable flag, the host does not start the background operation or run the background operation.
- the memory device runs the background operation independent of the host.
- the host receives commands from application layers, such as from the host processors independent of how the memory device is running any background operation. The host may therefore issue commands to the memory device independent of any background operation status.
- UFS UFS command set
- device manager the application layer of UFS includes a UFS command set (UCS), a device manager and a task manager.
- the UCS will handle the normal commands like read, write, etc.
- UFS may support multiple command sets.
- UFS is designed to be protocol agnostic.
- the command set is based on a simplified SCSI command set.
- the UCS also has a UFS native command set that may be used to extend some UFS functionalities.
- the task manager run by the UFS host controller handles commands meant for command queue control.
- the device manager run by the memory controller provides device level control like query request and lower-level link-layer control.
- FIG. 2 is a diagram of signals and operations performed by a host and a memory device.
- the host 202 is coupled to the memory device 204 by a bus 200 represented by the signals between the host 202 and the memory device 204 .
- the host 202 and the memory device 204 have performed startup, configuration, handshake, and other operations, not described herein, and configured for memory access using the bus 200 .
- the memory device after some time of operation, determines that a background operation, e.g., a purge, a dynamic device capacity, a memory un-mapping, or another background operation is needed to maintain the memory cells. Accordingly, it sends a background operation needed request 212 to the host 202 .
- this request may be in the form of a Response UFS Protocol Information Unit (UPIU) that includes an indication of importance such as 2 h or 3 h.
- UPIU Response UFS Protocol Information Unit
- the host receives the request and processes the request to determine whether the request should be allowed. There are different considerations, depending on the nature of the memory device and any bus protocols. In some examples, the host checks its command queue 232 .
- UPIU Response UFS Protocol Information Unit
- the host waits until these commands have been processed by the memory device. After the command queue is empty or the important commands have been processed, and after any other selected considerations, the host sets a background operation enable flag 234 .
- the host may also send a notification 214 to the memory device. For UFS this may be in the form of a Request UPIU.
- the memory device 204 detects the background operation enable flag and, after suitable preparation, the memory device 204 starts the background operation 236 .
- the memory device continues with the background operation until the background operation is completed 246 , after which it sends an operation completed notification 216 to the host 202 .
- this notification may be in the form of a Response UPIU that includes a flag and a report that the operation was good or failed.
- the operation completed notification 216 from the memory device 204 allows the host to clear the background operation enable flag 248 .
- the operation completed notification 216 may be sent because the operation is finished, the operation has reached an intermediate, stable state, the operation has failed and been aborted or for other reasons.
- the host 202 sends a Request UPIU as a clear operation enable flag notification 218 to the memory device.
- the host may also resume normal operation and send memory access commands 220 , e.g., Command UPIU, to the memory device 204 .
- the memory access commands may be read, write, erase, or any other suitable type of operation to access the memory to add or read values.
- the memory device may respond with a ready to transfer (RTT) message 222 , e.g., an RTT UPIU, from the memory device 204 to the host 202 .
- RTT ready to transfer
- the host may then transfer the data 224 either to the memory device 204 to be written to the memory cells, e.g., Data In UPIU, or from the memory device 204 to be sent to the host processors or another component of the host, e.g., Data Out UPIU.
- the memory device 204 may send a response 226 to the host 202 indicating the end of the memory access command. This process may then be followed by further memory access commands.
- the particular order and structure of a memory access may be modified to suit different implementations and protocols.
- the background operation enable flag 234 is set, new commands may be received by the host from higher layers of the system, such as application layers and the host processors.
- a memory access command is received at 238 but the host knows that the background operation is likely started. As a result, the host will initiate a wait 240 .
- the host may add the command to a wait queue 242 .
- the host may also notify the source of a memory access command that the memory access command will be delayed, e.g., by sending a delay notice 244 .
- the source of the command may then abort the command or retry the command at a different time, or find another resource to service the memory access command.
- the application layer will send the memory access command to the host a second time after a delay. When the delay is longer than the time to complete the background operation, then the memory access command will be acted upon after it is sent the second time.
- the host initiates a wait 240 .
- the host does not issue the command but saves the command in a wait queue at the host.
- the host may continue storing commands in the wait queue until the memory device completes its ongoing operation as indicated by the operation completed notification 216 .
- the operation completed notification 216 may take many different forms.
- the memory device generates an interrupt using the UFS wExceptionEventStatus attribute and sends the interrupt to the host once the background operation is completed. After receiving this alert, the host can issue commands from the wait queue to the memory device and the wExceptionEventStatus attribute may be modified, for example at the [7] bit to form the operation completed notification 216 . Any other message or attribute may be used.
- FIG. 3 is a graphical representation of status and communication of a host 302 and a memory device 304 during normal memory access commands.
- a host 302 is coupled to a memory device 304 with a downstream lane 306 and an upstream lane 308 .
- the host receives new memory access commands 324 and stores these commands into a command queue 310 .
- the command queue may be in various levels of capacity, depending on how quickly the commands are received and how quickly they are run by the memory device.
- the host 302 has an empty wait queue 312 that has no commands or data.
- the host sends data and commands as data in 314 on the downstream lane 306 and receives data and responses as data out 316 on the upstream lane 308 .
- the results from the data out 316 are reported back as data results to higher layers, e.g., host processors.
- FIG. 4 is a graphical representation of status and communication of a host 402 and a memory device 404 during normal background operation.
- a background operation 428 is in progress at the memory device 404 , then any new commands 424 , data in 414 , or other requests will be replied with a data discard 416 .
- the host 402 has an empty command queue 410 before the background operation 428 is started and during the background operation. If any new commands 424 come into the empty command queue 410 and are sent to the memory device 404 , then the memory device 404 will discard the data with data discard 416 because the memory device is busy with the internal process of the background operation 428 .
- the data discard 416 may be in the form of a Response UPIU to the host.
- the empty wait queue 412 is not used for this configuration.
- FIG. 5 is a graphical representation of status and communication of a host 502 and memory device 504 during a background operation when a wait queue 512 is available.
- new commands 524 are moved to the wait queue 512 .
- the formerly empty wait queue may become an occupied wait queue with incoming new commands 524 .
- the host 502 may save all the incoming new commands 524 in the wait queue 512 until the background operation 528 is completed.
- the higher layer may also receive a delay notice 526 for any new commands 524 .
- the higher layer may be allowed to choose to wait for the background operation 528 to be completed or to send the new commands 524 to the wait queue 512 to be handled as soon as the background operation 528 is completed.
- the memory device 504 continues to complete the background operation 528 without receiving any new data in. Using the wait queue 512 , the host 502 is able to receive new commands 524 but not send them to the memory device 504 . This avoids the data discard 416 of FIG. 4 .
- FIG. 6 is a graphical representation of status and communication of a host 602 and memory device 604 after the completion of the background operation 528 of FIG. 5 .
- the memory device 504 sends an operation completed notification 606 to the host 602 .
- This may be in the form of an interrupt or response.
- the host 602 still has an empty command queue 610 until new commands are received from higher layers.
- the wait queue 612 may be completely or partially filled and so the host takes commands from the wait queue and sends them to the memory device 604 as data in 614 . These will be received and processed by the memory device 604 to generate new data out.
- the host 602 takes the data out and forwards it to the higher layers.
- the host 602 When the host 602 empties the wait queue 612 , the host 602 returns to normal operation as shown with respect to FIG. 3 . Any new commands are placed in the command queue 310 and sent as data in 314 . The wait queue is then an empty wait queue 312 .
- FIG. 7 is a block diagram of an example of a hardware implementation for a host controller 700 e.g., a central processor, a special purpose processor, an input/output controller, or any other suitable components with a memory bus connection having a memory access and background operations.
- the host controller has a host controller processor 704 for performing the primary operations of the host controller, a computer-readable medium 705 to provide instructions for the host controller processor 704 , and a memory 703 to contain a command queue 734 and a wait queue 736 for memory access commands and other data and instructions.
- the host controller has an interface to support a memory bus 710 to a memory device.
- the interface has a PHY receive block 716 and a PHY transmit block 718 coupled to the memory bus and PHY logic 712 .
- the host controller processor 704 performs the operations described above to service the memory bus 710 between host processing components 732 and a memory device (not shown).
- Examples of the host controller 700 include microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to control the memory bus 710 as described throughout this disclosure.
- DSPs digital signal processors
- FPGAs field programmable gate arrays
- PLDs programmable logic devices
- state machines gated logic, discrete hardware circuits, and other suitable hardware configured to control the memory bus 710 as described throughout this disclosure.
- the host controller 700 may be configured to perform any one or more of the functions described herein.
- the host controller contains other components (not shown) configured to perform other functions of the host controller as is suitable for the type of memory bus.
- the host controller 700 may be implemented with a bus architecture, represented generally by the bus 702 .
- the bus 702 may include any number of interconnecting buses and bridges depending on the specific application of the host controller 700 and the overall design constraints.
- the bus 702 communicatively couples together various circuits including memory 703 , the host controller processor 704 , and the computer-readable media (represented generally by the computer-readable medium 705 ) having instructions stored thereon.
- the bus 702 may also link various other circuits such as timing sources, peripherals, data buffers, modules, power management circuits, and other processing cores, which are not described any further.
- a bus interface 708 provides an interface between the bus 702 and host processing components 732 , e.g., other external components of a Host SOC, host processing components, application layers, and higher layers.
- the host controller processor 704 may communicate operations, administration, or management control with the host processing components 732 through the bus 702 .
- the host processing components 732 may send memory access commands to the host controller processor 704 and receive results from the host controller processor.
- the PHY transmit block 716 and the PHY receive block 718 are coupled to the memory bus 710 that corresponds to the upstream lane and the downstream lane described above that couple host processing components 732 to the memory device (not shown) through pins on respective connectors for the memory bus 710 .
- the module also includes PHY logic 712 which may include the link logic to control the data applied to each line and the state under the control of the host controller processor 704 .
- the PHY logic 712 may also include clock generators coupled to clock sources to generate clock signals and other reference signals for the upstream and downstream lanes.
- the host controller processor 704 is responsible for managing the PHY logic 712 and for interface processing, including the execution of software stored on the computer-readable medium 705 .
- the software when executed by the host controller processor 704 , causes the host controller 700 to perform the various functions described below for any particular apparatus.
- the computer-readable medium 705 and the memory 703 may also be used for storing data that is manipulated by the host controller processor 704 when executing software.
- the host controller processor 704 may perform operations by means of a processor core executing software stored in the computer-readable medium 705 .
- Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software dies, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise.
- the software may reside on a computer-readable medium 705 .
- the host controller processor 704 controls the operations performed by the PHY logic 712 , the command queue 734 , the wait queue 736 , and other components of the host controller 700 .
- the computer-readable medium 705 may be a non-transitory computer-readable medium.
- a non-transitory computer-readable medium includes, by way of example, a magnetic storage device, a flash memory device, a random access memory (RAM), a read only memory (ROM), a programmable ROM (PROM), an erasable PROM (EPROM), an electrically erasable PROM (EEPROM), a register, and any other suitable medium for storing software and/or instructions that may be accessed and read by a controller.
- the computer-readable medium 705 may reside in the host controller processor 704 or another part of the host controller 700 .
- the computer-readable medium 705 may be embodied in a firmware for the operation of a state machine or parameters of an ASIC.
- the host controller 700 may be configured to perform any one or more of the operations described herein.
- the host controller processor 704 as utilized in the host controller 700 , may include circuitry configured for various functions.
- the host controller processor 704 is coupled to the computer-readable medium 705 through the bus 702 .
- the computer-readable medium 705 includes parameter and configuration registers that may include parameters for response, requests, flags, and operations.
- the host controller processor 704 may include background operation circuitry 741 to permit a background operation by the memory device and to receive an operation completed notification from the memory device.
- the background operation circuitry 741 may also be configured to send requests and receive responses with a memory device to receive a background request needed request, including a purge operation needed request with different levels of urgency and set and clear background operation enable flags.
- the background operation circuitry 741 may include one or more hardware components that provide the physical structure that performs various processes related to permitting a background operation and receiving an operation completed notification with the memory device to support background operations.
- the background operation circuitry 741 may include functionality for a means for permitting a background operation and a means for receiving a background operation completed notification from the memory device.
- the background operation circuitry 741 may further be configured to execute background operation instructions 751 included on the computer-readable medium 705 to implement the background operation support described herein.
- the host controller processor 704 may include memory access command circuitry 742 configured to receive a memory access command, to initiate a wait at the host for the memory access command, and to send the memory access command to the memory device in response to receiving the operation completed notification.
- the memory access command circuitry 742 may include functionality for a means to receive a memory access command, to initiate a wait at the host for the memory access command, and to send the memory access command to the memory device in response to receiving the operation completed notification.
- a memory access command may be received from a higher layer, e.g., host processing components 732 .
- the memory access command circuitry 742 may further be configured to execute memory access command instructions 752 included on the computer-readable medium 705 to implement one or more functions described herein.
- the module 714 host controller processor 704 may include queue management circuitry 743 configured to buffer commands in the command queue and the wait queue and to determine the status of the command queue as discussed herein.
- the queue management circuitry 743 may include functionality for buffering commands in the command queue and the wait queue and determining the status of the command queue.
- the queue management circuitry 743 may include functionality for a means for buffering commands in the command queue and the wait queue and determining the status of the command queue.
- the queue management circuitry 743 may further be configured to execute queue management instructions 753 included on the computer-readable medium 705 to implement one or more functions described herein.
- the host controller processor 704 may include data communication circuitry 744 configured to communicate commands and data with the memory device through the memory bus 710 , as discussed herein.
- the data communication circuitry 744 may include functionality for a means for communicating data with the memory device.
- the data communication circuitry 744 may further set parameters for communicating through the memory bus.
- the data communication circuitry 744 may further be configured to execute data communication instructions 754 included on the computer-readable medium 705 to implement one or more functions described herein.
- the circuit architecture described herein may be implemented on one or more ICs, chips, chiplets, modules, interposers, packages, system printed circuit boards (PCBs), etc.
- the circuit architecture described herein may also be fabricated with various process technologies such as complementary metal oxide semiconductor (CMOS), NMOS, PMOS, bipolar junction transistor (BJT), bipolar-CMOS (BiCMOS), silicon germanium (SiGe), gallium arsenide (GaAs), heterojunction bipolar transistors (HBTs), high electron mobility transistors (HEMTs), silicon-on-insulator (SOI), etc.
- CMOS complementary metal oxide semiconductor
- NMOS NMOS
- PMOS bipolar junction transistor
- BiCMOS bipolar-CMOS
- SiGe silicon germanium
- GaAs gallium arsenide
- HBTs heterojunction bipolar transistors
- HEMTs high electron mobility transistors
- SOI silicon-on-insulator
- FIG. 8 is a process flow diagram illustrating an example of a method for interrupting memory access during background operations on a memory device.
- the method may be performed in the host controller processor 704 of FIG. 7 or other circuitry, and software as described in the context of FIG. 7 .
- the method 800 begins at block 802 with permitting, at a host, a background operation by a memory device, e.g., a memory management operation, the host being coupled to the memory device through a bus for memory access.
- the background operation is a purge operation to remove data from physical blocks of memory cells.
- the host first receives a purge operation needed request from the memory device, and sets a purge enable flag in response to receiving the purge operation needed request.
- the host determines a status of a command queue before permitting the background operation, e.g., setting a purge enable flag.
- the method 800 continues in block 804 with receiving a memory access command at the host.
- the memory access command concerns reading or writing data to the memory device coupled to the host.
- initiating a wait at the host for the memory access command is performed.
- the wait includes buffering the memory access command in a wait queue in response to the purge enable flag.
- the operation completed notification comprises an interrupt, e.g., a bit of a Universal Flash Storage wExceptionEventStatus attribute.
- the memory access command includes writing data from the wait queue to the memory device.
- a or b may include a only, b only, or a combination of a and b.
- a phrase referring to “at least one of” or “one or more of” a list of items refers to any combination of those items, including single members.
- “at least one of: a, b, or c” is intended to cover the examples of: a only, b only, c only, a combination of a and b, a combination of a and c, a combination of b and c, and a combination of a and b and c.
- DSP Digital Signal Processor
- ASIC Application Specific Integrated Circuit
- FPGA Field Programmable Gate Array
- a general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine.
- a processor may also be implemented as a combination of computing devices, for example, a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
- the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitter over as one or more instructions or code stored on a computer-readable medium.
- Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another.
- a storage media may be any available media that can be accessed by a computer.
- such computer-readable media can comprise RAM, ROM EEPROM, CD-ROM or other optical disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Combinations of the above should also be included within the scope of computer-readable media.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- Read Only Memory (AREA)
Abstract
Description
-
- Example 1: A host for a memory device comprising: background operation circuitry configured to permit a background operation by a memory device, the host being coupled to the memory device through a bus for memory access, and to receive an operation completed notification from the memory device to indicate that the memory device has completed performing the background operation; memory access command circuitry configured to receive a memory access command, the memory access command concerning reading or writing data to the memory device coupled to the host, to initiate a wait at the host for the memory access command, and to send the memory access command to the memory device in response to receiving the operation completed notification.
- Example 2: The host of example 1, further comprising a wait queue and wherein the initiating the wait comprises buffering the memory access command in the wait queue and wherein the sending the memory access command comprises writing the data from the wait queue to the memory device.
- Example 3: The host of example 1 or 2, wherein the background operation is a purge operation to remove data from physical blocks of memory cells.
- Example 4: The host of example 3, further comprising: setting a purge enable flag before the receiving the memory access command; and clearing the purge enable flag in response to receiving the operation completed notification.
- Example 5: The host of any one or more of examples 1 to 4, further comprising a wait queue and wherein the initiating the wait comprises buffering the memory access command in the wait queue and wherein the sending the memory access command comprises writing the data from the wait queue to the memory device.
- Example 6: The host of any one or more of examples 1 to 5, further comprising a command queue and queue management circuitry, wherein the queue management circuitry is configured to determine a status of the command queue and wherein the background operation circuitry is configured to permit a background operation in response to the command queue status.
- Example 7: A method comprising: permitting, at a host, a background operation by a memory device, the host being coupled to the memory device through a bus for memory access; receiving a memory access command at the host, the memory access command concerning reading or writing data to the memory device coupled to the host; initiating a wait at the host for the memory access command; receiving an operation completed notification from the memory device to indicate that the memory device has completed performing the background operation; and sending the memory access command to the memory device in response to receiving the operation completed notification.
- Example 8: The method of example 7, further comprising determining that the memory device is performing the background operation before the initiating the wait.
- Example 9: The method of example 8, wherein the receiving the memory access command comprises receiving the memory access command from an application layer, the method further comprising sending a delay notice to the application layer in response to the determining that the memory device is performing the background operation.
- Example 10: The method of any one or more of examples 7 to 9, wherein initiating the wait comprises buffering the memory access command in a wait queue of the host and wherein sending the memory access command comprises writing the data from the wait queue to the memory device.
- Example 11: The method of any one or more of examples 7 to 10, wherein the background operation is a purge operation to remove data from physical blocks of memory cells.
- Example 12: The method of example 11, further comprising: setting a purge enable flag before the receiving the memory access command; and clearing the purge enable flag in response to receiving the operation completed notification.
- Example 13: The method of example 12, wherein the background operation is a purge operation, the method further comprising: receiving a purge operation needed request from the memory device; setting a purge enable flag in response to receiving the purge operation needed request, and wherein buffering the memory access command is performed in response to the purge enable flag.
- Example 14: The method of example 13, further comprising determining a status of a command queue before setting the purge enable flag.
- Example 15: The method of any one or more of examples 7 to 14, further comprising buffering further received memory access commands in a wait queue before receiving the operation completed notification.
- Example 16: The method of any one or more of examples 7 to 15, wherein the receiving the memory access command comprises receiving the memory access command from an application layer, the method further comprising sending a delay notice to the application layer in response to the initiating the wait.
- Example 17: The method of example 16, further comprising receiving the memory access command from the application layer a second time after a delay.
- Example 18: The method of any one or more of examples 7 to 17, wherein the operation completed notification comprises an interrupt.
- Example 19: The method of any one or more of examples 7 to 18, wherein the operation completed notification comprises a bit of a Universal Flash Storage wExceptionEventStatus attribute.
- Example 20: The method of any one or more of examples 7 to 19, further comprising: receiving a background operation needed request from the memory device to perform the background operation; and setting a background operation enable flag in response to the request, wherein the determining that the memory device is performing the background operation is in response to setting the background operation enable flag.
- Example 21: The method of any one or more of examples 7 to 20, wherein the background operation is a memory management operation.
- Example 22: A method comprising: performing a background operation on memory cells of a memory device; sending an operation completed notification to a host coupled to the memory device in response to completing the background operation; receiving a write command from the host in response to the operation completed notification; and writing data of the write command to the memory cells of the memory device.
- Example 23: The method of example 22, further comprising: receiving a background operation enable flag from the host before performing the background operation; and receiving a clearing of the background operation enable flag after sending the operation completed notification.
- Example 24: The method of example 22 or 23, wherein the performing the background operation comprises performing a purge operation to remove data from physical blocks of memory cells.
- Example 25: The method of any one or more of examples 22 to 24, wherein the background operation is a purge operation, the method further comprising: sending a purge operation needed request to the host; and receiving a purge enable flag in response to sending the purge operation needed request and before the performing the background operation.
- Example 26: The method of any one or more of examples 22 to 25, wherein the operation completed notification comprises an interrupt.
- Example 27: The method of any one or more of examples 22 to 26, wherein the operation completed notification comprises a bit of a Universal Flash Storage wExceptionEventStatus attribute.
Claims (27)
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18/347,359 US12461859B2 (en) | 2023-07-05 | 2023-07-05 | Interrupting memory access during background operations on a memory device |
| PCT/US2024/027747 WO2025010097A1 (en) | 2023-07-05 | 2024-05-03 | Interrupting memory access during background operations on a memory device |
| CN202480041555.2A CN121359115A (en) | 2023-07-05 | 2024-05-03 | Interrupting memory access during background operations on a memory device |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18/347,359 US12461859B2 (en) | 2023-07-05 | 2023-07-05 | Interrupting memory access during background operations on a memory device |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20250013572A1 US20250013572A1 (en) | 2025-01-09 |
| US12461859B2 true US12461859B2 (en) | 2025-11-04 |
Family
ID=91670554
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US18/347,359 Active 2043-08-06 US12461859B2 (en) | 2023-07-05 | 2023-07-05 | Interrupting memory access during background operations on a memory device |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US12461859B2 (en) |
| CN (1) | CN121359115A (en) |
| WO (1) | WO2025010097A1 (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2025059902A1 (en) * | 2023-09-20 | 2025-03-27 | Yangtze Memory Technologies Co., Ltd. | Response control in memory systems |
Citations (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120005404A1 (en) * | 2010-06-30 | 2012-01-05 | Sandisk Il Ltd. | Status indication when a maintenance operation is to be performed at a memory device |
| US20150261452A1 (en) * | 2014-03-12 | 2015-09-17 | Samsung Electronics Co., Ltd. | Memory device and controlling method of the same |
| US20150378622A1 (en) * | 2014-06-30 | 2015-12-31 | Hewlett-Packard Development Company, L.P. | Management of data operations |
| US20170068456A1 (en) * | 2015-09-04 | 2017-03-09 | Kabushiki Kaisha Toshiba | Control unit and control method for controlling semiconductor storage devices |
| US9690518B2 (en) * | 2014-08-29 | 2017-06-27 | Sandisk Technologies Llc | Dynamic host command rejection |
| US20180314448A1 (en) * | 2017-03-21 | 2018-11-01 | Western Digital Technologies, Inc. | Storage System and Method for Efficient Pipeline Gap Utilization for Background Operations |
| US20190013081A1 (en) * | 2017-07-07 | 2019-01-10 | Greg A. Blodgett | Managed nand performance throttling |
| US20210200700A1 (en) * | 2019-12-31 | 2021-07-01 | Kulachet Tanpairoj | Performance of storage system background operations |
| US20220179587A1 (en) | 2019-06-11 | 2022-06-09 | Western Digital Technologies, Inc. | Execution Condition Embedded In A Command Or A Request To Storage Device |
| US20220253242A1 (en) * | 2021-02-05 | 2022-08-11 | Micron Technology, Inc. | Event management for memory devices |
-
2023
- 2023-07-05 US US18/347,359 patent/US12461859B2/en active Active
-
2024
- 2024-05-03 CN CN202480041555.2A patent/CN121359115A/en active Pending
- 2024-05-03 WO PCT/US2024/027747 patent/WO2025010097A1/en not_active Ceased
Patent Citations (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120005404A1 (en) * | 2010-06-30 | 2012-01-05 | Sandisk Il Ltd. | Status indication when a maintenance operation is to be performed at a memory device |
| US20150261452A1 (en) * | 2014-03-12 | 2015-09-17 | Samsung Electronics Co., Ltd. | Memory device and controlling method of the same |
| US20150378622A1 (en) * | 2014-06-30 | 2015-12-31 | Hewlett-Packard Development Company, L.P. | Management of data operations |
| US9690518B2 (en) * | 2014-08-29 | 2017-06-27 | Sandisk Technologies Llc | Dynamic host command rejection |
| US20170068456A1 (en) * | 2015-09-04 | 2017-03-09 | Kabushiki Kaisha Toshiba | Control unit and control method for controlling semiconductor storage devices |
| US20180314448A1 (en) * | 2017-03-21 | 2018-11-01 | Western Digital Technologies, Inc. | Storage System and Method for Efficient Pipeline Gap Utilization for Background Operations |
| US20190013081A1 (en) * | 2017-07-07 | 2019-01-10 | Greg A. Blodgett | Managed nand performance throttling |
| US20220179587A1 (en) | 2019-06-11 | 2022-06-09 | Western Digital Technologies, Inc. | Execution Condition Embedded In A Command Or A Request To Storage Device |
| US20210200700A1 (en) * | 2019-12-31 | 2021-07-01 | Kulachet Tanpairoj | Performance of storage system background operations |
| US20220253242A1 (en) * | 2021-02-05 | 2022-08-11 | Micron Technology, Inc. | Event management for memory devices |
Non-Patent Citations (1)
| Title |
|---|
| International Search Report and Written Opinion—PCT/US2024/027747—ISA/EPO—Sep. 20, 2024. |
Also Published As
| Publication number | Publication date |
|---|---|
| CN121359115A (en) | 2026-01-16 |
| WO2025010097A1 (en) | 2025-01-09 |
| US20250013572A1 (en) | 2025-01-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN112596960B (en) | Distributed storage service switching method and device | |
| KR960012686B1 (en) | Station for communication system and communication method | |
| EP3147793B1 (en) | Interrupt processing method and interrupt controller | |
| US10585734B2 (en) | Fast invalidation in peripheral component interconnect (PCI) express (PCIe) address translation services (ATS) | |
| US9684613B2 (en) | Methods and systems for reducing spurious interrupts in a data storage system | |
| CN109491958B (en) | Error Handling System and Error Handling Methods | |
| CN113778328B (en) | Directing control data between semiconductor packages | |
| US10795785B2 (en) | Failover method, apparatus and system | |
| US12373382B2 (en) | I3C pending read with retransmission | |
| TWI700590B (en) | Interface adapter circuit | |
| CN101673255A (en) | Universal serial bus host controller and universal serial bus host control method | |
| US12461859B2 (en) | Interrupting memory access during background operations on a memory device | |
| CN109983749B (en) | Computing device and method for increasing data transfer speed | |
| WO2023207571A1 (en) | Data transmission method and device | |
| CN115878521A (en) | Command processing system, electronic device and electronic equipment | |
| TW200537298A (en) | A two channel bus structure to support address information, data, and transfer qualifiers | |
| US20020120800A1 (en) | Launch raw packet on remote interrupt | |
| US12175134B2 (en) | Abort handling by host controller for storage device | |
| WO2025200177A1 (en) | Method for implementing timer processing in rdma, system, chip, and storage medium | |
| US12481453B2 (en) | Unmapping a write buffer portion for access during a write to a memory device | |
| US20040103229A1 (en) | Bus management techniques | |
| TW202242645A (en) | Host system and a method thereof | |
| CN113609041A (en) | Data transmission method and system | |
| US20050256991A1 (en) | Method and apparatus for configuration space extension bus | |
| CN111796915A (en) | Interrupt-optimized data storage device and system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| AS | Assignment |
Owner name: QUALCOMM INCORPORATED, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:JABREVA, SONALI;ANUMALA, SRIDHAR;AKAVARAM, SANTHOSH REDDY;AND OTHERS;SIGNING DATES FROM 20230718 TO 20230825;REEL/FRAME:064723/0811 |
|
| 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: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION COUNTED, NOT YET 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: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ALLOWED -- NOTICE OF ALLOWANCE NOT YET MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |