WO2014193376A1 - Separate memory controllers to access data in memory - Google Patents
Separate memory controllers to access data in memory Download PDFInfo
- Publication number
- WO2014193376A1 WO2014193376A1 PCT/US2013/043237 US2013043237W WO2014193376A1 WO 2014193376 A1 WO2014193376 A1 WO 2014193376A1 US 2013043237 W US2013043237 W US 2013043237W WO 2014193376 A1 WO2014193376 A1 WO 2014193376A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- memory
- memory controller
- access
- host
- access command
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1636—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using refresh
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
- G06F13/4243—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Definitions
- a memory controller is used for managing access of data in a memory.
- the memory controller can be integrated into a processor.
- the memory controller is referred to as a host-side memory controller.
- the host-side memory controller is used to perform various memory access functions, including address mapping, buffering and scheduling of commands, ordering of commands, and controlling of timing of signals to and from the memory.
- the interconnect between the host-side memory controller and the memory is often bus-based, in which a memory bus is connected between the host- side memory controller and the memory.
- the memory controller acts as the master to orchestrate communication between the host-side memory controller and the memory.
- FIGS. 1 -3 are block diagrams of example systems that incorporate various implementations.
- Fig. 4 is a flow diagram of a memory access process according to some implementations.
- Using a host-side memory controller to control various memory operation and device management functions allows the memory to have a relatively simple configuration.
- the memory is configured such that the memory receives memory commands from the host-side memory controller, and responds to such memory commands.
- operation and management of memory has become more complicated. For example, certain management tasks can be performed to achieve enhanced performance or improved power efficiency. Performing such management tasks at the host-side memory controller increases the burden on the memory controller, and can lead to increased communication overhead between the host-side memory controller and the memory.
- DRAM dynamic random access memory
- non-volatile memory such as flash memory
- RL-DRAM reduced latency DRAM
- hybrid memory cube a memory package that has multiple memory and control logic dies arranged in a stack
- high-bandwidth memory such as a wide input/output memory or low-power double data rate or LPDDR memory
- Using a host-side memory controller to control memories according to different technologies can make the host-side memory controller more complicated.
- a memory also has various timing parameters that specify constraints relating to timings of various different signals.
- the host-side memory controller would have to ensure that commands sent to the memory satisfy such timing parameters.
- a first timing parameter can specify that not more than a predefined number of activate commands can be issued to a memory within a specified time interval.
- An example of such a timing parameter is a tFAW parameter for a DDR memory.
- a second timing parameter can specify that a minimum time lapse between activate commands to two rows in different banks of a memory.
- An example of such a timing parameter is a tRRD parameter for a DDR memory.
- timing parameters can specify worst-case timings of signals that have to be satisfied to ensure proper memory operation.
- a worst-case timing of a signal can specify that a rising or trailing edge of the signal has to occur by a predefined maximum or minimum time.
- decoupled memory controllers are provided for accessing data in a memory 102.
- the memory 102 can include one or multiple memory devices.
- the decoupled memory controllers include a host-side memory controller 104 and a device-side memory controller 106.
- the host-side memory controller 104 and the device-side memory controller 106 can be physically separate memory controllers that are included in separate integrated circuit packages (chips).
- the host-side memory controller 104 and the device-side memory controller 106 can be logically separate memory controllers that are included as part of the same physical package.
- the host-side memory controller 104 is part of a processor 108. In other examples, the host-side memory controller 104 can be outside of the processor 108, but connected to the processor 108. In further different implementations, instead of the host-side memory controller 104 being associated with the processor 108, the host-side memory controller 104 can be associated with a different data requester, such as an input/output (I/O) device, or other requester.
- I/O input/output
- the device-side memory controller 106 is coupled to the memory 102 over a memory interconnect 1 12 (e.g. bus, point-to-point link, or any other type of communication link or channel).
- a memory interconnect 1 12 e.g. bus, point-to-point link, or any other type of communication link or channel.
- the device-side memory controller 106 and the memory 102 can be part of a memory module, such as a dual inline memory module (DIMM) or other type of memory module.
- DIMM dual inline memory module
- the host-side memory controller 104 can manage the scheduling of memory requests (from the processor 108 or other data requester) according to priorities and/or quality-of-service (QoS) levels associated with the memory requests. Some memory requests (such as memory requests from certain applications or the operating system) may have a higher priority or may be assigned a greater QoS level than other memory requests.
- QoS quality-of-service
- Memory request scheduling at the host-side memory controller 104 can cause memory requests with higher priorities or greater QoS levels to be scheduled ahead of other memory requests.
- the device-side memory controller 106 can manage the timings of memory commands issued to the memory 102, to ensure that the memory commands (which include signals sent over the memory bus 1 12) satisfy various timing parameters.
- the device-side memory controller 106 also manages the ordering of execution of memory commands, such that the execution or results of the memory commands are in an order expected by the host-side memory controller 104.
- the device-side memory controller 106 can also perform additional tasks, such as wear leveling to evenly distribute writes for certain types of non-volatile memory (e.g. flash memory), security tasks to protect data in the memory 102, garbage collection tasks to reclaim portions of the memory 102 that are no longer used, and/or other tasks.
- An interface 105 is provided between the host-side memory controller 104 and the device-side memory controller 106.
- the interface 105 can be implemented as a bus or any other type of communication medium between the memory controllers 104 and 106.
- the host-side memory controller 104 can issue an access command 1 10 to the device-side memory controller 106 through the interface 105.
- the access command 1 10 is to access data (read data or write data) of the memory 102.
- the access command 1 10 sent from the host-side memory controller 104 to the device-side memory controller 106 is timing non- deterministic with respect to a timing specification of the memory 102.
- the access command 1 10 is issued by the host-side memory controller 104 without being constrained by the timing specification of the memory 102.
- the timing specification of the memory 102 is defined by the various timing parameters associated with the memory 102. [0015] Instead, tinning constraints of the timing specification of the memory 102 are handled by the device-side memory controller 106.
- the timing constraints govern the timing of signals on the memory bus 1 12 between the device-side memory controller 106 and the memory 102.
- the timing constraints can include timing parameters of the memory 102 that have to be satisfied, where the timing parameters can indicate minimum or maximum times associated with various signals.
- timing constraints e.g. as specified by the tFAWand tRRD timing parameters discussed above
- a handshaking protocol can also be provided between the host-side memory controller 104 and the device-side memory controller 106, to allow the device-side memory controller 106 to provide feedback information 1 14, either through the interface 105 or other information channel, to the host-side memory controller 104 in response to the timing non-deterministic access command 1 10 from the host-side memory controller 104.
- An example of the feedback information 1 14 can include a latency currently experienced by the device-side memory controller 106 in accessing the memory 102.
- the information pertaining to the latency experienced by the device- side memory controller 106 can be used by the host-side memory controller 104 in making scheduling decisions at the host-side memory controller 104.
- Fig. 2 is a block diagram of further details of the host-side memory controller 104 and the device-side memory controller 106.
- the host-side memory controller 104 includes a memory request queue 202 to store memory requests issued by the processor 108 or another data requester.
- the host-side memory controller 104 also includes a proactive refresh issuer 204 to issue refresh commands to the device-side memory controller 106.
- the host-side memory controller 104 also includes a scheduler 206, which schedules the transmission of access commands to the device-side memory controller 106 for memory requests in the memory request queue 202.
- the device-side memory controller 106 includes a refresh scheduler 208, a memory access control logic 210, and a feedback information logic 212.
- the refresh scheduler 208 schedules the refresh of portions of the memory 102.
- the memory access control logic 210 controls the access of the memory in response to access commands received from the host-side memory controller 104.
- the feedback information logic 212 sends feedback information to the host-side memory controller 104.
- a DRAM device includes memory cells that store data using storage capacitors. Over time, the storage capacitors can lose charge, which can cause a memory cell to lose its data. To address this issue, a refresh operation can be performed to cause the charge in the storage capacitor to be restored to a level that corresponds to the data represented by the storage capacitor. A memory cell has to be refreshed at least once every minimum specified refresh time interval.
- the proactive refresh issuer 204 of the host-side memory controller 104 can intelligently issue refresh commands to avoid interference with execution of access commands of the memory 102. For example, refresh commands can be scheduled to exploit idle time periods of the memory 102, such as in response to the proactive refresh issuer 204 detecting that the memory request queue 202 is empty.
- the proactive refresh issuer 204 can issue a refresh termination command to the device-side memory controller 106, to allow an access command (or multiple access commands) corresponding to the new memory request to be submitted to the device-side memory controller 106 to access data of the memory 102.
- the refresh scheduler 208 can schedule refresh operations of portions of the memory 102.
- the refresh scheduler 208 can sequentially perform refresh of successive rows of the memory 102, to ensure that each row is refreshed at least once per refresh time interval.
- the refresh scheduler 208 stops refresh operations in response to receiving a refresh termination command from the host-side memory controller 104.
- the refresh scheduler 208 of the device-side memory controller 106 can implement a technique to monitor the access history of portions of the memory 102, such as rows of the memory 102.
- the refresh scheduler 208 can skip the refresh of rows that were recently accessed (accessed within some past specified time period). Skipping the refresh of rows that were recently accessed reduces the number of refresh operations that have to be performed by the refresh scheduler 208.
- access history can be recorded by per-row counters 222 in the memory 102.
- the counters 222 can be implemented in one or multiple rows of the memory 102.
- the memory 102 includes multiple memory banks 220, where each memory bank 220 has corresponding counters 222.
- Each counter 222 counts a refresh time period for a respective row (or other portion of the memory 102).
- the refresh scheduler 208 of the device-side memory controller 106 may modify the refresh frequency of its memory based on the specific process characteristics, voltage, and/or temperature of the attached memory devices, or based on knowledge of locations of high-leakage cells.
- a counter 222 is reset whenever a corresponding memory row is accessed (by an access command such as a read command, write command, activate command, precharge command, etc.) or refreshed (due to a refresh operation scheduled by the refresh scheduler 208).
- an access operation of data of the memory 102 in response to an access command is considered different from a refresh operation performed in response to a refresh command.
- a counter 222 starts counting (incrementing or decrementing). If the counter 222 expires, then that indicates that a refresh operation has to be performed with respect to the row.
- the refresh scheduler 208 can issue a refresh command (referred to as an "auto-refresh command") to the memory 102.
- counters 222 are reset (updated) whenever an access or refresh is performed with respect to corresponding rows of the memory 102.
- An internal cache (not shown) can be provided in the device-side memory controller 106 to buffer the counter updates, which can reduce energy consumption and latency associated with lookups and updates of the counters 222.
- the device-side memory controller 106 can monitor its local address buffer (storing addresses for access commands) and only updates the respective counter 222 after all memory accesses to the same row are scheduled by the memory access control logic 210. This can further reduce counter updating overhead.
- Access commands 1 10 that can be issued by the host-side memory controller 104 to the device-side memory controller 106 include an activate command and precharge command. Also, access commands 1 10 can include read and write commands.
- the activate command is issued to the device-side memory controller 106 to cause the memory access control logic 210 of the device-side memory controller 106 to retrieve data of a row of memory cells in the memory 102 into a buffer (not shown) of the memory 102. Once data is retrieved into the buffer of the memory 102, the data in the buffer can be the target of a read operation or a write operation from the device-side memory controller 106.
- Another access command 1 10 that can be issued is a precharge command. Precharging a row of the memory 102 causes the row to be closed, such that the data in the buffer of the memory 102 is written back to the row of memory cells in the memory 102.
- the host-side memory controller 104 can assume that a majority of activate and precharge commands can be completed within a usual or expected latency (within a specified range of time for the memory 102), while a smaller portion of the activate and precharge commands may be associated with longer latencies (latencies that are longer than the specified range of time).
- the host-side memory controller 104 can make scheduling decisions based on the usual latency, but can adjust the scheduling when the device-side memory controller 106 notifies (using the feedback information 1 14) of any deviation from the usual latency.
- the interface 105 between the host-side memory controller 104 and the device-side memory controller 106 has just one master, which is the host-side memory controller 104.
- the device-side memory controller 106 would not be able to initiate the sending of a notification to the host- side memory controller 104.
- the scheduler 206 of the host- side memory controller 104 can issue a dummy access command to the device-side memory controller 106, where the dummy access command causes the device-side memory controller 106 to respond with information, including the feedback information 1 14.
- the dummy access command can be a dummy read command.
- the host-side memory controller 104 can issue a dummy read command to the device-side memory controller 106.
- the dummy read command can be sent to a reserved address, where the reserved address indicates that the read command is a dummy read command (as opposed to an actual read command to read data stored in the memory 102).
- the feedback information logic 212 of the device-side memory controller 106 can respond with information indicating an estimated latency, which can be the usual (expected) latency or a larger latency.
- the latency information can be included in a data packet sent from the device-side memory controller 106 to the host-side memory controller 104 that is responsive to the dummy read command.
- the latency information provided to the host-side memory controller 106 provides status information relating to timing non- deterministic access commands issued by the host-side memory controller 104.
- the host-side memory controller 104 can use the latency information provided by the device-side memory controller 106 to adjust scheduling by the scheduler 206. If the latency information indicates that latency of the device-side memory controller 106 is greater than the usual latency, then the scheduler 206 at the host-side memory controller 104 can adjust its scheduling, such as by delaying further transmissions of access commands to the device-side memory controller 106.
- the interface 105 can be configured with dedicated handshaking signaling channels to allow the device-side memory controller 106 to send the feedback information 1 14 to the host-side memory controller 104.
- the device-side memory controller 106 is also configured to honor the order of access commands 1 10 received from the host-side memory controller 104, to ensure data correctness and to ensure that a data requester is provided with an expected QoS.
- the memory access control logic 210 of the device-side memory controller 106 can schedule access commands according to the order received from the host-side memory controller 104.
- the memory access control logic 210 can perform optimization by using out-of-order scheduling, in which access commands received from the host-side memory controller 104 can be scheduled by the memory access control logic 210 out of order with respect to the order of access commands 1 10 received from the scheduler 206 of the host-side memory controller 104. If out- of-order scheduling is performed by the memory access control logic 210, then intermediate data received from the memory 102 can be buffered in the device-side memory controller 106. The buffered intermediate data can be used to send responsive data back to the host-side memory controller 104 in an order according to which data was requested by the host-side memory controller 104. Alternatively, data may be returned out of order identified by ordering tags.
- the host-side memory controller 104 can interact with a number of device-side memory controllers 106.
- the multiple device-side memory controllers 106 can support respective memories 102 of different technologies.
- the host-side memory controller 104 can be simplified to avoid having to address constraints and features of different memory technologies.
- the different device-side memory controllers 106 are configured to handle the various constraints and features of the different memory technologies.
- the host-side memory controller 104 can work with either a memory or a device-side memory controller. If the host-side memory controller 104 is to work with a memory, such as memory 102, then the host-side memory controller 104 functions as a legacy memory controller. On the other hand, if the host-side memory controller 104 is coupled to a device-side memory controller 106, then the host-side memory controller 104 operates according to
- the host-side memory controller 104 can be configured at system initialization to work either with a memory or with a device- side memory controller.
- Fig. 4 is a flow diagram of a memory access process according to some implementations.
- the host-side memory controller 104 receives (at 402) a memory request from a data requester (e.g. processor 108 or other requester).
- the host-side memory controller 104 sends (at 404) a timing non-deterministic access command corresponding to the received memory request to the device-side memory controller 106.
- the memory access control logic 210 of the device- side memory controller 106 Upon receiving the timing non-deterministic access command from the host-side memory controller 104, the memory access control logic 210 of the device- side memory controller 106 sends (at 405) corresponding memory command signal(s) to the memory 102.
- the memory command signal(s) satisfy the timing specification (as specified by the timing parameters) of the memory 102.
- the device-side memory controller 106 also determines (at 406) a latency associated with processing the received access command.
- the device-side memory controller 106 can determine whether the latency is a usual latency, or is greater than the usual latency.
- the feedback information logic 212 of the device-side memory controller 106 can send (at 408) latency information back to the host-side memory controller 104.
- the latency information can be sent back to the host-side memory controller 104 in a data packet that is responsive to a dummy read command from the host-side memory controller 104.
- the latency information can be sent back over a handshaking signaling channel between the memory controllers 104 and 106.
- the host-side memory controller 104 can then adjust (at 410) scheduling of access commands based on the feedback information containing the latency information.
- the host-side memory controller can be made less complex, since some memory-specific management tasks are performed at the device-side memory controller.
- Feedback information responsive to timing non-deterministic access commands can be provided from the device-side memory controller to the host-side memory controller, to allow the host-side memory controller to make scheduling adjustments as appropriate.
- cooperation can be performed between the host- side and device-side memory controllers for more efficiently performing memory refresh operations.
- Various tasks of the host-side and device-side memory controllers can be performed using hardware or a combination of hardware and machine-readable instructions.
- Machine-readable instructions can be executed by processing circuitry of the respective memory controller.
- the machine-readable instructions can be stored in one or multiple computer-readable or machine-readable storage media.
- the storage media include different forms of memory including semiconductor memory devices such as
- DRAMs erasable and programmable read-only memories (EPROMs), electrically erasable and programmable read-only memories (EEPROMs) and flash memories; magnetic disks such as fixed, floppy and removable disks; other magnetic media including tape; optical media such as compact disks (CDs) or digital video disks (DVDs); or other types of storage devices.
- EPROMs erasable and programmable read-only memories
- EEPROMs electrically erasable and programmable read-only memories
- flash memories flash memories
- magnetic disks such as fixed, floppy and removable disks
- other magnetic media including tape optical media such as compact disks (CDs) or digital video disks (DVDs); or other types of storage devices.
- CDs compact disks
- DVDs digital video disks
- the instructions discussed above can be provided on one computer-readable or machine-readable storage medium, or alternatively, can be provided on multiple computer-readable or machine-readable storage media distributed in a large system having possibly plural nodes.
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)
- Dram (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
A first memory controller receives an access command from a second memory controller, where the access command is timing non-deterministic with respect to a timing specification of a memory. The first memory controller sends at least one access command signal corresponding to the access command to the memory, wherein the at least one access command signal complies with the timing specification. The first memory controller determines a latency of access of the memory. The first memory controller sends feedback information relating to the latency to the second memory controller.
Description
SEPARATE MEMORY CONTROLLERS TO ACCESS DATA IN MEMORY Background
[0001 ] A memory controller is used for managing access of data in a memory. In some cases, the memory controller can be integrated into a processor. In such examples, the memory controller is referred to as a host-side memory controller. The host-side memory controller is used to perform various memory access functions, including address mapping, buffering and scheduling of commands, ordering of commands, and controlling of timing of signals to and from the memory.
[0002] The interconnect between the host-side memory controller and the memory is often bus-based, in which a memory bus is connected between the host- side memory controller and the memory. The memory controller acts as the master to orchestrate communication between the host-side memory controller and the memory.
Brief Description Of The Drawings
[0003] Some embodiments are described with respect to the following figures:
Figs. 1 -3 are block diagrams of example systems that incorporate various implementations; and
Fig. 4 is a flow diagram of a memory access process according to some implementations.
Detailed Description
[0004] Using a host-side memory controller to control various memory operation and device management functions allows the memory to have a relatively simple configuration. The memory is configured such that the memory receives memory commands from the host-side memory controller, and responds to such memory commands. With the evolution of memory technology, operation and management of memory has become more complicated. For example, certain management tasks can be performed to achieve enhanced performance or improved power efficiency.
Performing such management tasks at the host-side memory controller increases the burden on the memory controller, and can lead to increased communication overhead between the host-side memory controller and the memory.
[0005] Also, memories according to various different types of memory
technologies are available, including a dynamic random access memory (DRAM), a non-volatile memory such as flash memory, a reduced latency DRAM (RL-DRAM), a hybrid memory cube (a memory package that has multiple memory and control logic dies arranged in a stack), a high-bandwidth memory, a mobile memory (such as a wide input/output memory or low-power double data rate or LPDDR memory), and so forth. Using a host-side memory controller to control memories according to different technologies can make the host-side memory controller more complicated.
[0006] A memory also has various timing parameters that specify constraints relating to timings of various different signals. The host-side memory controller would have to ensure that commands sent to the memory satisfy such timing parameters. For example, a first timing parameter can specify that not more than a predefined number of activate commands can be issued to a memory within a specified time interval. An example of such a timing parameter is a tFAW parameter for a DDR memory. A second timing parameter can specify that a minimum time lapse between activate commands to two rows in different banks of a memory. An example of such a timing parameter is a tRRD parameter for a DDR memory. These example timing parameters are used to provide power and thermal constraints for the memory.
[0007] Also, timing parameters can specify worst-case timings of signals that have to be satisfied to ensure proper memory operation. A worst-case timing of a signal can specify that a rising or trailing edge of the signal has to occur by a predefined maximum or minimum time. Although use of worst-case timing
parameters can guarantee correctness and reduce complexity, they can come at the expense of reduced performance.
[0008] Implementing management tasks into a memory controller to address the foregoing issue can lead to increased complexity of the memory controller as well as
to increased communication overhead between the memory controller and the memory.
[0009] As shown in Fig. 1 , according to some implementations, decoupled memory controllers are provided for accessing data in a memory 102. The memory 102 can include one or multiple memory devices. The decoupled memory controllers include a host-side memory controller 104 and a device-side memory controller 106. The host-side memory controller 104 and the device-side memory controller 106 can be physically separate memory controllers that are included in separate integrated circuit packages (chips). Alternatively, the host-side memory controller 104 and the device-side memory controller 106 can be logically separate memory controllers that are included as part of the same physical package.
[0010] In examples according to Fig. 1 , the host-side memory controller 104 is part of a processor 108. In other examples, the host-side memory controller 104 can be outside of the processor 108, but connected to the processor 108. In further different implementations, instead of the host-side memory controller 104 being associated with the processor 108, the host-side memory controller 104 can be associated with a different data requester, such as an input/output (I/O) device, or other requester.
[001 1 ] The device-side memory controller 106 is coupled to the memory 102 over a memory interconnect 1 12 (e.g. bus, point-to-point link, or any other type of communication link or channel). In the ensuing discussion, reference is made to a memory bus 1 12; however, techniques or mechanisms according to some
implementations can also be applied to other types of interconnects. In some examples, the device-side memory controller 106 and the memory 102 can be part of a memory module, such as a dual inline memory module (DIMM) or other type of memory module.
[0012] Different functionalities are provided in the host-side memory controller 104 and the device-side memory controller 106. The host-side memory controller 104 can manage the scheduling of memory requests (from the processor 108 or other data requester) according to priorities and/or quality-of-service (QoS) levels
associated with the memory requests. Some memory requests (such as memory requests from certain applications or the operating system) may have a higher priority or may be assigned a greater QoS level than other memory requests.
Memory request scheduling at the host-side memory controller 104 can cause memory requests with higher priorities or greater QoS levels to be scheduled ahead of other memory requests.
[0013] The device-side memory controller 106 can manage the timings of memory commands issued to the memory 102, to ensure that the memory commands (which include signals sent over the memory bus 1 12) satisfy various timing parameters. The device-side memory controller 106 also manages the ordering of execution of memory commands, such that the execution or results of the memory commands are in an order expected by the host-side memory controller 104. In other examples, the device-side memory controller 106 can also perform additional tasks, such as wear leveling to evenly distribute writes for certain types of non-volatile memory (e.g. flash memory), security tasks to protect data in the memory 102, garbage collection tasks to reclaim portions of the memory 102 that are no longer used, and/or other tasks.
[0014] An interface 105 is provided between the host-side memory controller 104 and the device-side memory controller 106. The interface 105 can be implemented as a bus or any other type of communication medium between the memory controllers 104 and 106. The host-side memory controller 104 can issue an access command 1 10 to the device-side memory controller 106 through the interface 105. The access command 1 10 is to access data (read data or write data) of the memory 102. In some implementations, the access command 1 10 sent from the host-side memory controller 104 to the device-side memory controller 106 is timing non- deterministic with respect to a timing specification of the memory 102. In other words, the access command 1 10 is issued by the host-side memory controller 104 without being constrained by the timing specification of the memory 102. The timing specification of the memory 102 is defined by the various timing parameters associated with the memory 102.
[0015] Instead, tinning constraints of the timing specification of the memory 102 are handled by the device-side memory controller 106. The timing constraints govern the timing of signals on the memory bus 1 12 between the device-side memory controller 106 and the memory 102. As noted above, the timing constraints can include timing parameters of the memory 102 that have to be satisfied, where the timing parameters can indicate minimum or maximum times associated with various signals. Also, timing constraints (e.g. as specified by the tFAWand tRRD timing parameters discussed above) can be associated with power and thermal constraints of the memory 102.
[0016] A handshaking protocol can also be provided between the host-side memory controller 104 and the device-side memory controller 106, to allow the device-side memory controller 106 to provide feedback information 1 14, either through the interface 105 or other information channel, to the host-side memory controller 104 in response to the timing non-deterministic access command 1 10 from the host-side memory controller 104.
[0017] An example of the feedback information 1 14 can include a latency currently experienced by the device-side memory controller 106 in accessing the memory 102. The information pertaining to the latency experienced by the device- side memory controller 106 can be used by the host-side memory controller 104 in making scheduling decisions at the host-side memory controller 104.
[0018] Fig. 2 is a block diagram of further details of the host-side memory controller 104 and the device-side memory controller 106. The host-side memory controller 104 includes a memory request queue 202 to store memory requests issued by the processor 108 or another data requester. The host-side memory controller 104 also includes a proactive refresh issuer 204 to issue refresh commands to the device-side memory controller 106. The host-side memory controller 104 also includes a scheduler 206, which schedules the transmission of access commands to the device-side memory controller 106 for memory requests in the memory request queue 202.
[0019] The device-side memory controller 106 includes a refresh scheduler 208, a memory access control logic 210, and a feedback information logic 212. The refresh scheduler 208 schedules the refresh of portions of the memory 102. The memory access control logic 210 controls the access of the memory in response to access commands received from the host-side memory controller 104. The feedback information logic 212 sends feedback information to the host-side memory controller 104.
[0020] In some examples where the memory 102 includes one or multiple DRAM devices, refresh operations are performed with respect to the memory 102. A DRAM device includes memory cells that store data using storage capacitors. Over time, the storage capacitors can lose charge, which can cause a memory cell to lose its data. To address this issue, a refresh operation can be performed to cause the charge in the storage capacitor to be restored to a level that corresponds to the data represented by the storage capacitor. A memory cell has to be refreshed at least once every minimum specified refresh time interval.
[0021 ] In some implementations, the proactive refresh issuer 204 of the host-side memory controller 104 can intelligently issue refresh commands to avoid interference with execution of access commands of the memory 102. For example, refresh commands can be scheduled to exploit idle time periods of the memory 102, such as in response to the proactive refresh issuer 204 detecting that the memory request queue 202 is empty.
[0022] After the proactive refresh issuer 204 has issued a refresh command to the device-side memory controller 106, when a new memory request arrives in the memory request queue 202 of the host-side memory controller 104, the proactive refresh issuer 204 can issue a refresh termination command to the device-side memory controller 106, to allow an access command (or multiple access commands) corresponding to the new memory request to be submitted to the device-side memory controller 106 to access data of the memory 102.
[0023] In response to a refresh command from the proactive refresh issuer 204, the refresh scheduler 208 can schedule refresh operations of portions of the memory
102. In some examples, the refresh scheduler 208 can sequentially perform refresh of successive rows of the memory 102, to ensure that each row is refreshed at least once per refresh time interval. The refresh scheduler 208 stops refresh operations in response to receiving a refresh termination command from the host-side memory controller 104.
[0024] Additionally, the refresh scheduler 208 of the device-side memory controller 106 can implement a technique to monitor the access history of portions of the memory 102, such as rows of the memory 102. The refresh scheduler 208 can skip the refresh of rows that were recently accessed (accessed within some past specified time period). Skipping the refresh of rows that were recently accessed reduces the number of refresh operations that have to be performed by the refresh scheduler 208.
[0025] To skip the refresh of recently accessed rows, access history can be recorded by per-row counters 222 in the memory 102. The counters 222 can be implemented in one or multiple rows of the memory 102. In the example of Fig. 2, the memory 102 includes multiple memory banks 220, where each memory bank 220 has corresponding counters 222. Each counter 222 counts a refresh time period for a respective row (or other portion of the memory 102).
[0026] In some implementations, the refresh scheduler 208 of the device-side memory controller 106 may modify the refresh frequency of its memory based on the specific process characteristics, voltage, and/or temperature of the attached memory devices, or based on knowledge of locations of high-leakage cells.
[0027] A counter 222 is reset whenever a corresponding memory row is accessed (by an access command such as a read command, write command, activate command, precharge command, etc.) or refreshed (due to a refresh operation scheduled by the refresh scheduler 208). In the present disclosure, an access operation of data of the memory 102 in response to an access command is considered different from a refresh operation performed in response to a refresh command.
[0028] After reset, a counter 222 starts counting (incrementing or decrementing). If the counter 222 expires, then that indicates that a refresh operation has to be performed with respect to the row. In response, the refresh scheduler 208 can issue a refresh command (referred to as an "auto-refresh command") to the memory 102.
[0029] As noted above, counters 222 are reset (updated) whenever an access or refresh is performed with respect to corresponding rows of the memory 102. An internal cache (not shown) can be provided in the device-side memory controller 106 to buffer the counter updates, which can reduce energy consumption and latency associated with lookups and updates of the counters 222.
[0030] Moreover, the device-side memory controller 106 can monitor its local address buffer (storing addresses for access commands) and only updates the respective counter 222 after all memory accesses to the same row are scheduled by the memory access control logic 210. This can further reduce counter updating overhead.
[0031 ] Access commands 1 10 that can be issued by the host-side memory controller 104 to the device-side memory controller 106 include an activate command and precharge command. Also, access commands 1 10 can include read and write commands.
[0032] The activate command is issued to the device-side memory controller 106 to cause the memory access control logic 210 of the device-side memory controller 106 to retrieve data of a row of memory cells in the memory 102 into a buffer (not shown) of the memory 102. Once data is retrieved into the buffer of the memory 102, the data in the buffer can be the target of a read operation or a write operation from the device-side memory controller 106.
[0033] Another access command 1 10 that can be issued is a precharge command. Precharging a row of the memory 102 causes the row to be closed, such that the data in the buffer of the memory 102 is written back to the row of memory cells in the memory 102.
[0034] The host-side memory controller 104 can assume that a majority of activate and precharge commands can be completed within a usual or expected latency (within a specified range of time for the memory 102), while a smaller portion of the activate and precharge commands may be associated with longer latencies (latencies that are longer than the specified range of time). The host-side memory controller 104 can make scheduling decisions based on the usual latency, but can adjust the scheduling when the device-side memory controller 106 notifies (using the feedback information 1 14) of any deviation from the usual latency.
[0035] In some examples, the interface 105 between the host-side memory controller 104 and the device-side memory controller 106 has just one master, which is the host-side memory controller 104. As a result, the device-side memory controller 106 would not be able to initiate the sending of a notification to the host- side memory controller 104. To address this issue, the scheduler 206 of the host- side memory controller 104 can issue a dummy access command to the device-side memory controller 106, where the dummy access command causes the device-side memory controller 106 to respond with information, including the feedback information 1 14. For example, the dummy access command can be a dummy read command.
[0036] In some examples, after a timing non-deterministic activate or precharge command is sent from the host-side memory controller 104 to the device-side memory controller 106, the host-side memory controller 104 can issue a dummy read command to the device-side memory controller 106. In some examples, the dummy read command can be sent to a reserved address, where the reserved address indicates that the read command is a dummy read command (as opposed to an actual read command to read data stored in the memory 102).
[0037] In response to the dummy read command, the feedback information logic 212 of the device-side memory controller 106 can respond with information indicating an estimated latency, which can be the usual (expected) latency or a larger latency. The latency information can be included in a data packet sent from the device-side memory controller 106 to the host-side memory controller 104 that is responsive to
the dummy read command. The latency information provided to the host-side memory controller 106 provides status information relating to timing non- deterministic access commands issued by the host-side memory controller 104.
[0038] The host-side memory controller 104 can use the latency information provided by the device-side memory controller 106 to adjust scheduling by the scheduler 206. If the latency information indicates that latency of the device-side memory controller 106 is greater than the usual latency, then the scheduler 206 at the host-side memory controller 104 can adjust its scheduling, such as by delaying further transmissions of access commands to the device-side memory controller 106.
[0039] In other examples, instead of using a dummy access command, the interface 105 can be configured with dedicated handshaking signaling channels to allow the device-side memory controller 106 to send the feedback information 1 14 to the host-side memory controller 104.
[0040] The device-side memory controller 106 is also configured to honor the order of access commands 1 10 received from the host-side memory controller 104, to ensure data correctness and to ensure that a data requester is provided with an expected QoS. In some examples, the memory access control logic 210 of the device-side memory controller 106 can schedule access commands according to the order received from the host-side memory controller 104.
[0041 ] In alternative implementations, the memory access control logic 210 can perform optimization by using out-of-order scheduling, in which access commands received from the host-side memory controller 104 can be scheduled by the memory access control logic 210 out of order with respect to the order of access commands 1 10 received from the scheduler 206 of the host-side memory controller 104. If out- of-order scheduling is performed by the memory access control logic 210, then intermediate data received from the memory 102 can be buffered in the device-side memory controller 106. The buffered intermediate data can be used to send responsive data back to the host-side memory controller 104 in an order according to which data was requested by the host-side memory controller 104. Alternatively, data may be returned out of order identified by ordering tags.
[0042] In alternative implementations, as depicted in Fig. 3, the host-side memory controller 104 can interact with a number of device-side memory controllers 106. The multiple device-side memory controllers 106 can support respective memories 102 of different technologies. In this way, the host-side memory controller 104 can be simplified to avoid having to address constraints and features of different memory technologies. Instead, the different device-side memory controllers 106 are configured to handle the various constraints and features of the different memory technologies.
[0043] In further implementations, the host-side memory controller 104 can work with either a memory or a device-side memory controller. If the host-side memory controller 104 is to work with a memory, such as memory 102, then the host-side memory controller 104 functions as a legacy memory controller. On the other hand, if the host-side memory controller 104 is coupled to a device-side memory controller 106, then the host-side memory controller 104 operates according to
implementations of the present disclosure. The host-side memory controller 104 can be configured at system initialization to work either with a memory or with a device- side memory controller.
[0044] Fig. 4 is a flow diagram of a memory access process according to some implementations. The host-side memory controller 104 receives (at 402) a memory request from a data requester (e.g. processor 108 or other requester). The host-side memory controller 104 sends (at 404) a timing non-deterministic access command corresponding to the received memory request to the device-side memory controller 106.
[0045] Upon receiving the timing non-deterministic access command from the host-side memory controller 104, the memory access control logic 210 of the device- side memory controller 106 sends (at 405) corresponding memory command signal(s) to the memory 102. The memory command signal(s) satisfy the timing specification (as specified by the timing parameters) of the memory 102.
[0046] The device-side memory controller 106 also determines (at 406) a latency associated with processing the received access command. The device-side memory
controller 106 can determine whether the latency is a usual latency, or is greater than the usual latency. In response to the determined latency, the feedback information logic 212 of the device-side memory controller 106 can send (at 408) latency information back to the host-side memory controller 104. Note that the latency information can be sent back to the host-side memory controller 104 in a data packet that is responsive to a dummy read command from the host-side memory controller 104. Alternatively, the latency information can be sent back over a handshaking signaling channel between the memory controllers 104 and 106.
[0047] The host-side memory controller 104 can then adjust (at 410) scheduling of access commands based on the feedback information containing the latency information.
[0048] By using decoupled memory controllers according to some
implementations, the host-side memory controller can be made less complex, since some memory-specific management tasks are performed at the device-side memory controller. Feedback information responsive to timing non-deterministic access commands can be provided from the device-side memory controller to the host-side memory controller, to allow the host-side memory controller to make scheduling adjustments as appropriate. Also, cooperation can be performed between the host- side and device-side memory controllers for more efficiently performing memory refresh operations.
[0049] Various tasks of the host-side and device-side memory controllers can be performed using hardware or a combination of hardware and machine-readable instructions. Machine-readable instructions can be executed by processing circuitry of the respective memory controller.
[0050] The machine-readable instructions can be stored in one or multiple computer-readable or machine-readable storage media. The storage media include different forms of memory including semiconductor memory devices such as
DRAMs, erasable and programmable read-only memories (EPROMs), electrically erasable and programmable read-only memories (EEPROMs) and flash memories; magnetic disks such as fixed, floppy and removable disks; other magnetic media
including tape; optical media such as compact disks (CDs) or digital video disks (DVDs); or other types of storage devices. Note that the instructions discussed above can be provided on one computer-readable or machine-readable storage medium, or alternatively, can be provided on multiple computer-readable or machine-readable storage media distributed in a large system having possibly plural nodes. Such computer-readable or machine-readable storage medium or media is (are) considered to be part of an article (or article of manufacture). An article or article of manufacture can refer to any manufactured single component or multiple components. The storage medium or media can be located either in the machine running the machine-readable instructions, or located at a remote site from which machine-readable instructions can be downloaded over a network for execution.
[0051 ] In the foregoing description, numerous details are set forth to provide an understanding of the subject disclosed herein. However, implementations may be practiced without some or all of these details. Other implementations may include modifications and variations from the details discussed above. It is intended that the appended claims cover such modifications and variations.
Claims
What is claimed is 1 . A system comprising:
a memory;
a first memory controller coupled to the memory;
a second memory controller separate from the first memory controller, the second memory controller to send an access command to the first memory controller, the access command to read or write data of the memory and being timing non-deterministic with respect to a timing specification of the memory,
wherein the first memory controller is responsive to the access command to issue at least one command signal to the memory, the at least one command signal satisfying the timing specification of the memory, and
wherein the first memory controller is to notify the second memory controller regarding a latency associated with accessing the memory.
2. The system of claim 1 , wherein the access command is an activate command to activate a portion of the memory.
3. The system of claim 1 , wherein the access command is a precharge command to precharge a portion of the memory.
4. The system of claim 1 , wherein the first memory controller is to send information regarding the latency in a data packet responsive to a dummy access command from the second memory controller.
5. The system of claim 1 , wherein the first memory controller is to send information regarding the latency over a handshaking signal channel between the first and second memory controllers.
6. The system of claim 1 , wherein the second memory controller is to adjust scheduling of access commands for accessing data of the memory, the adjusting being responsive to the latency.
7. The system of claim 1 , wherein the first memory controller is to manage ordering of responses to access commands from the second memory controller, the ordering being according to an order of the access commands received from the second memory controller.
8. The system of claim 1 , wherein the first and second memory controllers are to cooperate to perform a refresh of the memory.
9. The system of claim 8, wherein the second memory controller is to issue a refresh command in response to detecting an idle period of the second memory controller, and the first memory controller is to monitor an access history of the memory, and to skip portions of the memory to refresh based on the monitored access history.
10. A method comprising:
receiving, by a device-side memory controller, an access command from a host-side memory controller, wherein the access command is timing non- deterministic with respect to a timing specification of a memory;
sending, by the device-side memory controller, at least one access command signal corresponding to the access command to the memory, wherein the at least one access command signal complies with the timing specification;
determining, by the device-side memory controller, a latency of access of the memory; and
sending, by the device-side memory controller, feedback information relating to the latency to the host-side memory controller.
1 1 . The method of claim 10, wherein the timing specification relates to a worst- case timing parameter of the memory.
12. The method of claim 10, wherein the timing specification relates to a timing parameter associated with a power constraint of the memory.
13. The method of claim 10, further comprising:
receiving, by the host-side memory controller, a memory request from a data requester; and
in response to the memory request, sending, by the host-side memory controller, the access command to the device-side memory controller.
14. The method of claim 13, further comprising:
adjusting, by the host-side memory controller, scheduling of access commands based on the latency indicated by the feedback information.
15. An article comprising at least one machine-readable storage medium storing instructions that upon execution cause a first memory controller to:
receive a memory request from a data requester;
send an access command to a second memory controller, the access command being timing non-deterministic with respect to a timing specification of a memory, and wherein the access command is to cause the second memory controller to issue at least one access command signal to the memory that satisfies the timing specification; and
receive, from the second memory controller, information relating to a latency of accessing the memory.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/785,120 US10691344B2 (en) | 2013-05-30 | 2013-05-30 | Separate memory controllers to access data in memory |
CN201380076243.7A CN105339917A (en) | 2013-05-30 | 2013-05-30 | Separate memory controllers to access data in memory |
PCT/US2013/043237 WO2014193376A1 (en) | 2013-05-30 | 2013-05-30 | Separate memory controllers to access data in memory |
EP13885796.6A EP3005128B1 (en) | 2013-05-30 | 2013-05-30 | Separate memory controllers to access data in memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/043237 WO2014193376A1 (en) | 2013-05-30 | 2013-05-30 | Separate memory controllers to access data in memory |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2014193376A1 true WO2014193376A1 (en) | 2014-12-04 |
Family
ID=51989240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2013/043237 WO2014193376A1 (en) | 2013-05-30 | 2013-05-30 | Separate memory controllers to access data in memory |
Country Status (4)
Country | Link |
---|---|
US (1) | US10691344B2 (en) |
EP (1) | EP3005128B1 (en) |
CN (1) | CN105339917A (en) |
WO (1) | WO2014193376A1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017049714A (en) * | 2015-08-31 | 2017-03-09 | 株式会社メガチップス | Memory controller |
CN107257953A (en) * | 2015-03-27 | 2017-10-17 | 英特尔公司 | The stand-by period for measuring and being operated to the input and output of host report solid-state drive |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5987797B2 (en) * | 2013-08-06 | 2016-09-07 | 富士ゼロックス株式会社 | Information processing apparatus and program |
WO2015176040A1 (en) * | 2014-05-15 | 2015-11-19 | Adesto Technologies Corporation | Memory devices and methods having instruction acknowledgement |
WO2016075721A1 (en) * | 2014-11-11 | 2016-05-19 | ルネサスエレクトロニクス株式会社 | Command execution control system and command execution control method |
US20170060460A1 (en) * | 2015-08-31 | 2017-03-02 | Megachips Corporation | Memory controller |
US20170109101A1 (en) * | 2015-10-16 | 2017-04-20 | Samsung Electronics Co., Ltd. | System and method for initiating storage device tasks based upon information from the memory channel interconnect |
US20170109068A1 (en) * | 2015-10-16 | 2017-04-20 | SK Hynix Inc. | Memory system |
US20170109067A1 (en) * | 2015-10-16 | 2017-04-20 | SK Hynix Inc. | Memory system |
US20170109066A1 (en) * | 2015-10-16 | 2017-04-20 | SK Hynix Inc. | Memory system |
US10120582B1 (en) * | 2016-03-30 | 2018-11-06 | Amazon Technologies, Inc. | Dynamic cache management in storage devices |
US10152237B2 (en) | 2016-05-05 | 2018-12-11 | Micron Technology, Inc. | Non-deterministic memory protocol |
US10534540B2 (en) | 2016-06-06 | 2020-01-14 | Micron Technology, Inc. | Memory protocol |
US10585624B2 (en) | 2016-12-01 | 2020-03-10 | Micron Technology, Inc. | Memory protocol |
US11003602B2 (en) | 2017-01-24 | 2021-05-11 | Micron Technology, Inc. | Memory protocol with command priority |
US10490251B2 (en) | 2017-01-30 | 2019-11-26 | Micron Technology, Inc. | Apparatuses and methods for distributing row hammer refresh events across a memory device |
US10635613B2 (en) | 2017-04-11 | 2020-04-28 | Micron Technology, Inc. | Transaction identification |
US20180373653A1 (en) * | 2017-06-21 | 2018-12-27 | Hewlett Packard Enterprise Development Lp | Commitment of acknowledged data in response to request to commit |
US10437482B2 (en) * | 2017-07-25 | 2019-10-08 | Samsung Electronics Co., Ltd. | Coordinated near-far memory controller for process-in-HBM |
US10908820B2 (en) * | 2017-09-14 | 2021-02-02 | Samsung Electronics Co., Ltd. | Host-based and client-based command scheduling in large bandwidth memory systems |
US11004495B2 (en) | 2017-12-18 | 2021-05-11 | SK Hynix Inc. | Data storage device and operating method thereof |
KR102419036B1 (en) * | 2017-12-18 | 2022-07-11 | 에스케이하이닉스 주식회사 | Data storage device and operating method thereof |
WO2019222960A1 (en) | 2018-05-24 | 2019-11-28 | Micron Technology, Inc. | Apparatuses and methods for pure-time, self adopt sampling for row hammer refresh sampling |
US10573370B2 (en) | 2018-07-02 | 2020-02-25 | Micron Technology, Inc. | Apparatus and methods for triggering row hammer address sampling |
US10685696B2 (en) | 2018-10-31 | 2020-06-16 | Micron Technology, Inc. | Apparatuses and methods for access based refresh timing |
CN113168861B (en) | 2018-12-03 | 2024-05-14 | 美光科技公司 | Semiconductor device performing row hammer refresh operation |
CN117198356A (en) * | 2018-12-21 | 2023-12-08 | 美光科技公司 | Apparatus and method for timing interleaving for targeted refresh operations |
US10957377B2 (en) | 2018-12-26 | 2021-03-23 | Micron Technology, Inc. | Apparatuses and methods for distributed targeted refresh operations |
US11615831B2 (en) | 2019-02-26 | 2023-03-28 | Micron Technology, Inc. | Apparatuses and methods for memory mat refresh sequencing |
US11227649B2 (en) | 2019-04-04 | 2022-01-18 | Micron Technology, Inc. | Apparatuses and methods for staggered timing of targeted refresh operations |
US11069393B2 (en) | 2019-06-04 | 2021-07-20 | Micron Technology, Inc. | Apparatuses and methods for controlling steal rates |
US10978132B2 (en) | 2019-06-05 | 2021-04-13 | Micron Technology, Inc. | Apparatuses and methods for staggered timing of skipped refresh operations |
US11023171B2 (en) * | 2019-07-17 | 2021-06-01 | Micron Technology, Inc. | Performing a refresh operation based on a write to read time difference |
US11302374B2 (en) | 2019-08-23 | 2022-04-12 | Micron Technology, Inc. | Apparatuses and methods for dynamic refresh allocation |
US11302377B2 (en) | 2019-10-16 | 2022-04-12 | Micron Technology, Inc. | Apparatuses and methods for dynamic targeted refresh steals |
US11243804B2 (en) | 2019-11-19 | 2022-02-08 | Micron Technology, Inc. | Time to live for memory access by processors |
US11199995B2 (en) | 2019-11-19 | 2021-12-14 | Micron Technology, Inc. | Time to live for load commands |
CN111294247B (en) * | 2020-05-13 | 2020-09-18 | 广东睿江云计算股份有限公司 | QoS (quality of service) distribution method and system for storage area |
US11309010B2 (en) | 2020-08-14 | 2022-04-19 | Micron Technology, Inc. | Apparatuses, systems, and methods for memory directed access pause |
US11380382B2 (en) | 2020-08-19 | 2022-07-05 | Micron Technology, Inc. | Refresh logic circuit layout having aggressor detector circuit sampling circuit and row hammer refresh control circuit |
US11348631B2 (en) | 2020-08-19 | 2022-05-31 | Micron Technology, Inc. | Apparatuses, systems, and methods for identifying victim rows in a memory device which cannot be simultaneously refreshed |
US11557331B2 (en) | 2020-09-23 | 2023-01-17 | Micron Technology, Inc. | Apparatuses and methods for controlling refresh operations |
US11222686B1 (en) | 2020-11-12 | 2022-01-11 | Micron Technology, Inc. | Apparatuses and methods for controlling refresh timing |
US11264079B1 (en) | 2020-12-18 | 2022-03-01 | Micron Technology, Inc. | Apparatuses and methods for row hammer based cache lockdown |
US11914863B2 (en) * | 2021-07-22 | 2024-02-27 | Rambus Inc. | Data buffer for memory devices with unidirectional ports |
WO2023128479A1 (en) * | 2021-12-30 | 2023-07-06 | 주식회사 엘엑스세미콘 | Memory control system and display device including memory control function |
US20240105251A1 (en) * | 2022-09-27 | 2024-03-28 | Micron Technology, Inc. | Apparatuses and methods to deprioritize traffic to unavilable memory banks |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006134550A2 (en) * | 2005-06-13 | 2006-12-21 | Nxp B.V. | Memory controller |
US20100077140A1 (en) * | 2008-09-23 | 2010-03-25 | Philip Abraham | Scalable schedulers for memory controllers |
JP2010198171A (en) * | 2009-02-24 | 2010-09-09 | Renesas Electronics Corp | Usb host controller and method for controlling the same |
US20130111113A1 (en) * | 2005-09-26 | 2013-05-02 | Eliyahou Harari | NAND Flash Memory Controller Exporting a NAND Interface |
US20130111287A1 (en) * | 2011-11-01 | 2013-05-02 | Phison Electronics Corp. | Memory storage device, memory controller thereof, and data transmission method thereof |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5581727A (en) * | 1993-03-22 | 1996-12-03 | Compaq Computer Corporation | Hierarchical cache system flushing scheme based on monitoring and decoding processor bus cycles for flush/clear sequence control |
US6026464A (en) | 1997-06-24 | 2000-02-15 | Cisco Technology, Inc. | Memory control system and method utilizing distributed memory controllers for multibank memory |
US7007130B1 (en) * | 1998-02-13 | 2006-02-28 | Intel Corporation | Memory system including a memory module having a memory module controller interfacing between a system memory controller and memory devices of the memory module |
US6167484A (en) * | 1998-05-12 | 2000-12-26 | Motorola, Inc. | Method and apparatus for leveraging history bits to optimize memory refresh performance |
US6195303B1 (en) * | 1999-10-25 | 2001-02-27 | Winbond Electronics Corporation | Clock-based transparent refresh mechanisms for DRAMS |
US20020069319A1 (en) * | 2000-12-01 | 2002-06-06 | Ming-Hsien Lee | Method and apparatus of event-driven based refresh for high performance memory controller |
JP2002324397A (en) * | 2001-04-26 | 2002-11-08 | Mitsubishi Electric Corp | Dynamic memory refreshing system |
US6854043B2 (en) * | 2002-07-05 | 2005-02-08 | Hewlett-Packard Development Company, L.P. | System and method for multi-modal memory controller system operation |
JP2004110367A (en) | 2002-09-18 | 2004-04-08 | Hitachi Ltd | Storage system control method, storage control device, and storage system |
US6907494B2 (en) | 2002-10-10 | 2005-06-14 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a memory controller and processor system |
US20050080999A1 (en) | 2003-10-08 | 2005-04-14 | Fredrik Angsmark | Memory interface for systems with multiple processors and one memory system |
US7181584B2 (en) * | 2004-02-05 | 2007-02-20 | Micron Technology, Inc. | Dynamic command and/or address mirroring system and method for memory modules |
JP2005310244A (en) * | 2004-04-20 | 2005-11-04 | Seiko Epson Corp | Semiconductor integrated circuit apparatus, microcomputer, and electronic equipment |
US7966439B1 (en) * | 2004-11-24 | 2011-06-21 | Nvidia Corporation | Apparatus, system, and method for a fast data return memory controller |
US7565479B2 (en) * | 2005-08-04 | 2009-07-21 | Rambus Inc. | Memory with refresh cycle donation to accommodate low-retention-storage rows |
JP5013394B2 (en) * | 2005-09-13 | 2012-08-29 | ルネサスエレクトロニクス株式会社 | Semiconductor integrated circuit device |
US7882324B2 (en) * | 2007-10-30 | 2011-02-01 | Qimonda Ag | Method and apparatus for synchronizing memory enabled systems with master-slave architecture |
US8244937B2 (en) | 2008-09-30 | 2012-08-14 | Micron Technology, Inc. | Solid state storage device controller with parallel operation mode |
JP2011028343A (en) | 2009-07-22 | 2011-02-10 | Fujitsu Ltd | Processor and data transfer method |
US8132048B2 (en) | 2009-08-21 | 2012-03-06 | International Business Machines Corporation | Systems and methods to efficiently schedule commands at a memory controller |
US8560796B2 (en) * | 2010-03-29 | 2013-10-15 | Freescale Semiconductor, Inc. | Scheduling memory access requests using predicted memory timing and state information |
US8667493B2 (en) | 2010-05-07 | 2014-03-04 | Advanced Micro Devices, Inc. | Memory-controller-parallelism-aware scheduling for multiple memory controllers |
US10360143B2 (en) | 2010-07-01 | 2019-07-23 | Qualcomm Incorporated | Parallel use of integrated non-volatile memory and main volatile memory within a mobile device |
WO2012021380A2 (en) * | 2010-08-13 | 2012-02-16 | Rambus Inc. | Fast-wake memory |
US8489807B2 (en) * | 2010-12-03 | 2013-07-16 | International Business Machines Corporation | Techniques for performing refresh operations in high-density memories |
US9552175B2 (en) * | 2011-02-08 | 2017-01-24 | Diablo Technologies Inc. | System and method for providing a command buffer in a memory system |
US9021215B2 (en) * | 2011-03-21 | 2015-04-28 | Apple Inc. | Storage system exporting internal storage rules |
US8880819B2 (en) * | 2011-12-13 | 2014-11-04 | Micron Technology, Inc. | Memory apparatuses, computer systems and methods for ordering memory responses |
WO2013100956A1 (en) * | 2011-12-28 | 2013-07-04 | Intel Corporation | Memory timing optimization using pattern based signaling modulation |
KR101966858B1 (en) * | 2012-04-24 | 2019-04-08 | 삼성전자주식회사 | Method of operating a volatile memory device, volatile memory device and method of controlling memory system |
US9100315B2 (en) * | 2012-09-04 | 2015-08-04 | Granite Mountain Technologies | Source asynchronous signaling |
US9030903B2 (en) * | 2012-09-24 | 2015-05-12 | Intel Corporation | Method, apparatus and system for providing a memory refresh |
CN104488031B (en) | 2012-10-22 | 2018-05-25 | 慧与发展有限责任合伙企业 | The refreshing of storage device is performed in response to data access |
WO2014065774A1 (en) | 2012-10-22 | 2014-05-01 | Hewlett-Packard Development Company, L.P. | Refreshing a group of memory cells in response to presence of potential disturbance |
US9196347B2 (en) * | 2013-03-14 | 2015-11-24 | International Business Machines Corporation | DRAM controller for variable refresh operation timing |
-
2013
- 2013-05-30 CN CN201380076243.7A patent/CN105339917A/en active Pending
- 2013-05-30 US US14/785,120 patent/US10691344B2/en active Active
- 2013-05-30 EP EP13885796.6A patent/EP3005128B1/en active Active
- 2013-05-30 WO PCT/US2013/043237 patent/WO2014193376A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006134550A2 (en) * | 2005-06-13 | 2006-12-21 | Nxp B.V. | Memory controller |
US20130111113A1 (en) * | 2005-09-26 | 2013-05-02 | Eliyahou Harari | NAND Flash Memory Controller Exporting a NAND Interface |
US20100077140A1 (en) * | 2008-09-23 | 2010-03-25 | Philip Abraham | Scalable schedulers for memory controllers |
JP2010198171A (en) * | 2009-02-24 | 2010-09-09 | Renesas Electronics Corp | Usb host controller and method for controlling the same |
US20130111287A1 (en) * | 2011-11-01 | 2013-05-02 | Phison Electronics Corp. | Memory storage device, memory controller thereof, and data transmission method thereof |
Non-Patent Citations (1)
Title |
---|
See also references of EP3005128A4 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107257953A (en) * | 2015-03-27 | 2017-10-17 | 英特尔公司 | The stand-by period for measuring and being operated to the input and output of host report solid-state drive |
CN107257953B (en) * | 2015-03-27 | 2021-06-11 | 英特尔公司 | Method, apparatus, system, and medium for measuring latency of storage device |
JP2017049714A (en) * | 2015-08-31 | 2017-03-09 | 株式会社メガチップス | Memory controller |
Also Published As
Publication number | Publication date |
---|---|
US10691344B2 (en) | 2020-06-23 |
EP3005128B1 (en) | 2018-07-04 |
EP3005128A1 (en) | 2016-04-13 |
CN105339917A (en) | 2016-02-17 |
US20160070483A1 (en) | 2016-03-10 |
EP3005128A4 (en) | 2017-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10691344B2 (en) | Separate memory controllers to access data in memory | |
US11221798B2 (en) | Write/read turn techniques based on latency tolerance | |
KR102380670B1 (en) | Fine-grained bandwidth provisioning in a memory controller | |
EP3506107B1 (en) | Storing and retrieving training data for models in a data center | |
US8996824B2 (en) | Memory reorder queue biasing preceding high latency operations | |
US20170083474A1 (en) | Distributed memory controller | |
CN109155143A (en) | Fine granulation refreshes | |
CN105320608B (en) | Memory controller and method for controlling a memory device to process access requests | |
EP2686774B1 (en) | Memory interface | |
KR102258360B1 (en) | Memory refresh technology and computer system | |
CN103915110A (en) | Refresh method for volatile memory and related volatile memory controller | |
WO2018188083A1 (en) | Memory refresh technology and computer system | |
CN101609438A (en) | Accumulator system, its access control method and computer program | |
JP7357169B2 (en) | DRAM refresh management | |
CN110059033A (en) | Shared memory controller in data center | |
CN101702326A (en) | Memory controller | |
WO2022155970A1 (en) | Memory control method and memory control apparatus | |
US10446215B1 (en) | System and method for adaptively optimized refresh of memory | |
CN103810123B (en) | Memory control device and method | |
US20120297131A1 (en) | Scheduling-Policy-Aware DRAM Page Management Mechanism | |
CN106601286A (en) | DDRx SDRAM memory refreshing method and memory controller | |
WO2022012143A1 (en) | Memory management technology and computer system | |
CN112130753A (en) | Flash memory polling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 201380076243.7 Country of ref document: CN |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 13885796 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 14785120 Country of ref document: US |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2013885796 Country of ref document: EP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |