1. Technical Field
The present invention relates to memory controllers in general. More particularly, the present invention relates to extreme data rate (XDR) memory controllers. Still more particularly, the present invention relates to an XDR memory controller capable of handling precharge-to-precharge restrictions.
2. Description of Related Art
A memory controller is typically utilized to regulate access requests on memory devices from various requesting devices. After receiving an access request along with address and control information from a requesting device, the memory controller decodes the address information into bank, row and column addresses. The memory controller then sends address and control signals to the appropriate memory devices for performing the requested memory operation, such as a read or write operation. For a read operation, the memory controller sends the read command and then returns the read data retrieved from the memory devices to the requesting device. For a write operation, the memory controller sends the write data to the memory devices along with the write command.
When performing read and write operations, a memory controller is responsible for generating an appropriate sequence of control signals for accessing the desired addresses within the memory devices. The sequence of control signals for an operation typically involves activating (or opening) a row of a bank within the memory devices, then writing to or reading from the selected columns in the activated row, and finally precharging (or closing) the activated row. The precharge associated with a write operation is called a write precharge and the precharge associated with a read operation is called a read precharge.
In order to maximize bandwidth, a memory controller typically issues read operations and write operations in streams. According to the extreme data rate (XDR) dynamic random access memory (DRAM) specification promulgated by Rambus Incorporated of Los Altos, Calif., a new read or write operation can be started every fourth command cycle (i.e., row-to-row time=4). In addition, the precharge-to-precharge time between different bank sets, tPP-D, is the minimum time interval between a precharge command issued to the odd bank set and a precharge command issued to the even bank set (or vice versa), and the precharge-to-precharge time, tPP, is the minimum precharge-to-precharge time between same bank sets. During the transition from a write operation stream to a read operation stream, if the operations are going to different bank sets (known as Early Read After Write), a read precharge command has the possibility of conflicting with a write precharge command. The read precharge command will tend to collide with the write precharge command when a write operation stream is crossing to a read operation stream, which violates tPP-D, min of 1. The present disclosure provides an XDR memory controller that is capable of preventing the above-mentioned collision when issuing consecutive precharge commands.
In accordance with a preferred embodiment of the present invention, upon commencement of a write operation, the location of the corresponding write precharge command is tracked from a timing standpoint. A determination is then made as to whether or not a subsequent read precharge command will collide with any pending write precharge command. In a determination that a subsequent read precharge command will collide with any pending write precharge command, the issuance of this read precharge command is delayed in order to avoid any collision; also, a specific time interval between this read precharge command and subsequent read precharge commands is maintained.
All features and advantages of the present invention will become apparent in the following detailed written description.
The invention itself, as well as a preferred mode of use, further objects, and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
Referring now to the drawings and in particular to
Similarly, while information handing system 9 has been depicted as including only processor 11 and memory subsystem 10, in alternative embodiments of the present invention information handling system 9 may further comprise an input/output (I/O) interface (not shown) coupled to one or more of processor 11 and memory subsystem 10 in order to communicatively couple one or more I/O devices (not shown) to information handling system 9. Exemplary I/O devices may include traditional I/O devices such as keyboards, displays, printers, cursor control devices (e.g., trackballs, mice, tablets, etc.), speakers, and microphones; storage devices such as fixed or “hard” magnetic media storage devices, optical storage devices (e.g., CD or DVD ROMs), solid state storage devices (e.g., USB, Secure Digital SD™, CompactFlash™, MMC, or the like), removable magnetic medium storage devices such as floppy disks and tape, or other storage devices or mediums; and wired or wireless communication devices or media (e.g., communication networks accessed via modem or direct network interface).
As shown, an XDR memory subsystem 10 includes an XDR memory controller 12 and an XDR input/output cell 15 along with two DRAM devices 14a-14b. Input/output cell 15 provides the physical layer interface between memory controller 12 and an XDR channel, and can be viewed as a serializer/deserializer for the purpose of the present invention. Details on input/output cell 15 can be found in XIO specifications promulgated by Rambus Incorporated of Los Altos, Calif., the pertinent of which is incorporated by reference herein. XDR memory subsystem 10 is shown to be connected to a processor 11 by a bus, such as in a data processing or “information handling” system, as is well-known to those skilled in the art. DRAM devices 14a-14b are preferably XDR DRAM devices. Details on XDR DRAM devices 14a-14b can be found in XDR DRAM specifications promulgated by Rambus7, the pertinent of which is incorporated by reference herein.
With reference now to
Delay time tRAS Add with a value of one will be added to a subsequent read precharge command if the issuance of the read command would otherwise cause it to collide with a write precharge command. Delay time tRAS Add value becomes a two if the issuance of a second read operation after an Early Read transition would otherwise cause an associated second read precharge command to collide with a write precharge command. Similarly, delay time tRAS Add value becomes a three if the issuance of a third read operation after an Early Read transition would otherwise cause an associated third read precharge command to collide with a write precharge command.
The maximum value of delay time tRAS Add is preferably three because values of four or greater will start interacting with future write precharge commands. If a fourth read operation attempts to start when the tRAS Add delay time value is already at three, then the new read operation is stalled one command cycle so that the fourth read operation will be issued with a tRAS Add delay time value of no more than three. After the last write precharge command in write precharge scoreboard 21 has been analyzed, the value of delay time tRAS Add is maintained if the next read command is to the same bank set such that the precharge-to-precharge time for same bank sets (i.e., tPP) is met. Otherwise, the value of delay time tRAS Add is reduced by one after each passing command cycle until the value of delay time tRAS Add returns to zero.
The contents of the tracking mechanism (write precharge scoreboard) are shown in
Upon commencement of a read operation, the tRAS Add delay time value is sent to a bank sequencer (not shown) and to a delay time sustaining module 22. For the present embodiment, delay time sustaining module 22 first subtracts 1 and then adds 4 to the value of delay time tRAS Add, and the sum is stored as the tPPcnt value. Each cycle, the value of tPPcnt is decremented by 1, reloaded from write precharge scoreboard 21 if there is a potential collision with a write precharge command, or loaded with the current value +4 if there is a read operation to the same bank set that is starting. The addition of a +4 maintains the tPP spacing to the same bank set. A bank set selection module 23 is utilized to “remember” which bank set is the opposite bank set for the current read precharge command.
Referring now to
XDR DRAM command packets shown in
The natural time and the actual time for a precharge command to be executed are indicated right below each corresponding command packet (outside the six-sided polygon). The natural time for a read precharge command is included inside a rectangular box, which denotes the time at which a read precharge command would have been executed naturally without the present invention. The actual time is located to the right of a rectangular box, which denotes the time at which a read precharge command will be executed according to the present invention. For example, the precharge command [P, r1] for r1 will be executed at time T27 (instead of naturally executing at time T26). For a write operation, the precharge command is not adjusted, so its location is noted without any boxes or arrows. For example, the precharge command [P, w0] for w0 will execute at time T26.
At time T20, the first read operation is started after a write stream. By this time, the memory controller has determined that the tRAS of the first read operation will need to be extended by one. At time T25, the read precharge command [P, r1] for read operation r1 started at T20 that would have naturally been executed at time T26 is moved forward by one cycle to time T27 in order to meet the tPP-D=1 requirement. At time T29, the read precharge command [P, r5] for read operation r5 started at time T24 that would have naturally been executed at time T30 is moved forward by two cycles to time T32 in order to meet both the tPP-D=1 and tPP=4 timing requirements.
At time T35, the read precharge command [P, r7] for read operation r7 started at time T28 that would have naturally been executed at time T34 is moved forward by three cycles to T37 in order to meet the tPP-D=1 and tPP=4 timing requirements. Since tPP, min=4, once an adjustment to a precharge command is made, subsequent precharge commands to the same set of banks must take that adjustment into account.
At time T40, the read precharge command [P, r3] for read operation r3 started at time T34 that would have naturally been executed at time T40 is moved by two cycles to T42 in order to meet the tPP-D=1 and tPP=4 timing requirements. The above-mentioned precharge commands need to be moved because the write precharge commands [P, w0], [P, w2], [P, w4] and [P, w6] execute at the same time as the read precharge commands for the corresponding read commands otherwise would.
With reference now to
A write operation marks the location in which the write precharge command will execute minus the time from which a read precharge would have executed, had it been issued at this time. For the present embodiment, the marking is performed by injecting a “1” at bit 19 of write precharge scoreboard 21. The injection of a “1I” at bit 19 of write precharge scoreboard 21 occurs each time when a write operation is started, such as T1, T6, T11 and T16 in
As mentioned earlier, the three most significant bits (i.e., bits 0-2) of write precharge scoreboard 21, together with the tPPcnt value determine the value of tRAS Add. When a read operation starts:
a. if bits 0 to 2 of the scoreboard are all zeros, then tRAS Add=tPPcnt
b. if bit 0 of the scoreboard is a “1” and tPPcnt=0, then tRAS Add=1
c. if bit 1 of the scoreboard is a “1” and tPPcnt=1, then tRAS Add=2
d. if bit 2 of the scoreboard is a “1” and tPPcnt=2, then tRAS Add=3
e. if tPPcnt is 3 or more, wait for tPPcnt to be 2 or less before starting the operation and re-evaluate if case (a), (b), (c), (d) or (f) applies
f. if none of the above, then tRAS Add=tPPcnt
For example, at T20, bit 0 of write precharge scoreboard 21 has a “1” and a read operation has been started, thus, the tRAS Add value becomes 1. In each cycle from T21-T24, the tPPcnt value decreases by one per cycle, i.e., from 4 at T21 to 1 at T24.
At T24, bit 1 of write precharge scoreboard 21 has a “1” and a read operation has been started, thus, the tRAS Add value becomes 2. In each cycle from T25-T28, the tPPcnt value decreases by one per cycle, i.e., from 5 at T25 to 2 at T28.
At T28, bit 2 of write precharge scoreboard 21 has a “1” and a read operation has been started, thus, the tRAS Add value becomes 3. In each cycle from T29-T33, the tPPcnt value decreases by one per cycle, i.e., from 6 at T29 to 2 at T33.
Once the value of tRAS Add has been calculated (either a 0, 1, 2 or 3), the operation and its associated tRAS Add are handed off to a bank sequencer (not shown). The bank sequencer uses the value to set counters for issuing the precharge command at the appropriate time, and for signaling other units that a bank in a bank set will be available 0, 1, 2 or 3 cycles later than normal.
As has been described, the present invention provides an XDR memory controller capable of handling precharge-to-precharge restrictions when issuing precharge commands. By knowing ahead of time that tPP and tPP-D timing requirements will not be violated, the bank sequencer within the memory controller simply sets counters instead of looking across all bank sequencers that are running and dynamically altering the issuance of precharge commands. Also, by realizing how much the effective tRAS will be increased (i.e., tRAS Add), the command issuing logic knows exactly when to signal to other units that a specific bank is available. Knowing which banks are available and when is important for optimizing performance and for correct functionality.
While the invention has been particularly shown and described with reference to a preferred embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention.