1. Field
The present embodiments relate to systems and techniques for communicating between a memory controller device and one or more integrated circuit memory devices.
2. Related Art
As processor clock speeds increase, memory systems are coming under increasing pressure to provide data at correspondingly higher transfer rates. In certain applications, these higher data transfer rates have not been matched by an associated increase in the granularity (size) of each data transfer. Consequently, the higher data transfer rates have led to an increase in “command bandwidth” (the rate at which commands are issued in the memory system). Because of pinout and other constraints for memory controllers, it is desirable to provide this increased command bandwidth without significantly increasing the number of “request pins” which are used to communicate the memory commands.
The disclosed embodiments, inter alia, make use of an efficient technique for communicating memory commands from a memory controller to a memory device. In the disclosed embodiments, memory system command bandwidth may be increased by employing a communication protocol that merges independent memory command functionality, each associated with different threads, as a single command (or “request”). By employing this technique, a single memory command effectuates multiple independent memory request functions to occur, where, the multiple memory functions are associated with separate independent memory access requests. For example, referring to
In
The disclosed embodiments can increase command bandwidth by merging memory commands associated with different threads into the same memory request. In a dynamic random access based memory system, a memory access is initiated when a memory controller sends a request containing an “activate command” to a memory device. The activate command causes the memory device to open a specific row in a specific bank in the memory device. Next, the memory controller sends one or more requests containing column-access commands to the memory device. These column-access commands perform read and/or write operations to the open row. Finally, the memory controller sends a request, which includes a precharge command, to the memory device. This precharge command closes the open row by returning the associated memory bank's sense amplifiers to an idle state.
Similarly, a single request 218 can include two independent column-access commands 220 and 222, possibly associated with different threads. These two column-access commands 220 and 222 can be readily merged if they share the same bank address. For example, the first column access command 220 can include both a bank address (3 bits) and a column address (6 bits), and the second column-access command 222 can include only a column address (6 bits).
The flow chart in
By enabling a precharge command to be specified independently of the associated column-access commands, the associated precharging operation is specified to take place at some time in the future by a future request. This allows the system to hold a row open for a variable amount of time, which enables the system to precharge the row at the latest possible moment, when the system actually needs to access another row in the same bank. This makes it possible to perform a large number of column-access commands to the same row before an associated precharging operation takes place. This protocol may eliminate the need to specify additional precharging operations independently (and possibly additional activate operations), which saves power and conserves command bandwidth. The memory protocol described herein may also flexibly be mixed with independent precharge and/or column access commands or requests to allow the flexibility of incorporation into legacy systems or with different types of memory controllers which require single thread commands/requests.
The flow chart in
Each bank quad communicates data through its own set of data lines. More specifically, bank quad A 536 communicates data through eight differential pairs which comprise data lines DQA[7:0] 110 and DQAN[7:0] 510; bank quad B 538 communicates data through data lines DQB[7:0] 112 and DQBN[7:0] 512; bank quad C 540 communicates data through data lines DQC[7:0] 114 and DQCN[7:0] 514; and bank quad D 542 communicates data through data lines DQD[7:0] 116 and DQDN[7:0] 516. Hence, the system includes four independent sets of data lines which are associated with the four bank quads of the memory device. As illustrated in
These four memory bank quads receive commands through two sets of request lines, namely a first set of request lines RQA[1:0] 106 and RQAN[1:0] 506, which feed through demultiplexer 534, and a second set of request lines RQB[1:0] 108 and RQBN[1:0] 508, which feed through demultiplexer 536. The first set of request lines, RQA[1:0] 106 and RQAN[1:0] 506, provides memory commands for both bank quad A 536 and bank quad C 540, and the second set of request lines, RQB[1:0] 108 and RQBN[1:0] 518, provides memory commands for both bank quad B 538 and bank quad D 542. In an embodiment, this sharing of request lines is facilitated by the above-described merging of two commands into each request. Also, these commands feed into precharging circuitry 550 which precharges bank quad A 536 and bank quad C 540, and precharging circuitry 552 which precharges bank quad B 538 and bank quad D 542. In some embodiments, this precharging circuitry 550 and 552 examines a delay field in a precharge command to determine whether to delay the associated precharging operation. (Note that this precharge command can be stored in a command register.) Write commands include write-mask bits (in a write-mask-field) which feed into write mask registers 544 and 546. These write-mask bits identify data bytes that are not to be written during the associated write operations
Referring to
Moreover, the described techniques are not limited to the specific implementation of a memory device illustrated in
For example, in an embodiment, a double data rate SDRAM device includes a command interface that decodes commands which are received via a number of signal lines, including a row address strobe line (RAS), a column access strobe line (CAS) a write enable signal line (WE) and other signals. These (command) signal lines are sampled synchronously with respect to a rising edge of a clock signal (CK). Commands of the type described above may be received and decoded by the DDR SDRAM to effectuate the merged memory access functions described herein.
For example, consider the read transaction comprising the memory commands in boxes highlighted with a thicker line size in
Finally, a precharge command PRAr5 is sent to memory device 104 to close the open row by returning the associated memory bank's sense amplifiers to an idle state. As illustrated in
Moreover, this precharge command PRAr5 can be sent in the same packet as an independent activate command associated with another memory operation. For example, referring to
Also, the above-described read transaction takes place concurrently with a second read transaction comprising the memory commands in the dashed boxes in
Finally, at some time after the write commands complete, a precharge command, PRAr5 is sent to memory device 104 to close the open row. This precharge command PRAr5 can be sent in the same packet as an independent activate command associated with another memory operation. For example, referring to
Also, the above-described write transaction takes place concurrently with a second write transaction comprising the memory commands in the dashed boxes in
The above-described embodiments may generally be used in a memory system, such as the memory system illustrated in
In some embodiments, the memory controller 102 is a local memory controller (such as a DRAM memory controller) and/or is a system memory controller (which may be implemented in a microprocessor).
Memory controller 102 may include an input/output (I/O) interface 818-1 and control logic 820-1. As discussed previously with reference to
In some embodiments, one or more of memory devices 104 include control logic 820 and at least one of interfaces 818. However, in some embodiments some of the memory devices 104 may not have control logic 820. Moreover, memory controller 102 and/or one or more of memory devices 104 may include more than one of the interfaces 818, and these interfaces may share one or more control logic 820 circuits. Note that in some embodiments two or more of the memory devices 104, such as memory devices 104-1 and 104-2, may include multiple memory bank groups.
Memory controller 102 and memory devices 104 are coupled together by one or more links 814 in a channel 822. While memory system 800 illustrates three links 814, other embodiments may have fewer or more links 814. These links may include: wired, wireless and/or optical communication. Moreover, links 814 may be used for bi-directional and/or uni-directional communications between the memory controller 102 and one or more of the memory devices 104. For example, bi-directional communication between the memory controller 102 and a given memory device may be simultaneous (full-duplex communication). Alternatively, the memory controller 102 may transmit information (such as a data packet which includes a command) to the given memory device, and the given memory device may subsequently provide requested data to the memory controller 102, e.g., a communication direction on one or more of the links 814 may alternate (half-duplex communication). Note that one or more of the links 814 and corresponding transmit circuits and/or receive circuits may be dynamically configured, for example, by one of the control logic 820 circuits, for bi-directional and/or uni-directional communication.
Signals corresponding to data and/or commands (such as request-for-data commands) may be communicated on one or more of the links 814 asynchronously, or alternatively by using a timing reference to either or both edges in one or more timing signals. These timing signals may be generated based on one or more clock signals, which may be: generated on-chip (for example, using a phase-locked loop and one or more reference signals provided by a frequency reference), generated off-chip, and/or recovered from the communicated signals.
In some embodiments, commands are communicated from the memory controller 102 to one or more of the memory devices 104 using a separate command link, e.g., using a subset of the links 814 which communicate commands. This separate command link may be wireless, optical and/or wired. However, in some embodiments commands are communicated using the same portion of the channel 822 (i.e., the same links 814) as data. Moreover, communication of commands: may have a lower data rate than the data rates associated with communication of data between the memory controller 102 and one or more of the memory devices 104; may use different carrier frequencies than are used to communicate data; and/or may use a different modulation technique than is used to communicate data.
The foregoing descriptions of embodiments have been presented for purposes of illustration and description only. They are not intended to be exhaustive or to limit the present description to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the present description. The scope of the present description is defined by the appended claims.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2010/026757 | 3/10/2010 | WO | 00 | 6/23/2011 |
Number | Date | Country | |
---|---|---|---|
61164656 | Mar 2009 | US |