The field of invention relates generally to electronics; and, more specifically, to dynamically activated memory controller data termination.
The one or more processors 101 execute instructions in order to perform whatever software routines the computing system implements. The instructions frequently involve some sort of operation performed upon data. Both data and instructions are stored in system memory 104 and cache 102. Cache 102 is typically designed to have shorter latency times than system memory 104. For example, cache 102 might be integrated onto the same silicon chip(s) as the processor(s) and/or constructed with faster SRAM cells whilst system memory 104 might be constructed with slower DRAM cells.
By tending to store more frequently used instructions and data in the cache 102 as opposed to the system memory 104, the overall performance efficiency of the computing system improves. System memory 104 is deliberately made available to other components within the computing system. For example, the data received from various interfaces to the computing system (e.g., keyboard and mouse, printer port, LAN port, modem port, etc.) or retrieved from an internal storage element of the computing system (e.g., hard disk drive) are often temporarily queued into system memory 104 prior to their being operated upon by the one or more processor(s) 101 in the implementation of a software program.
Similarly, data that a software program determines should be sent from the computing system to an outside entity through one of the computing system interfaces, or stored into an internal storage element, is often temporarily queued in system memory 104 prior to its being transmitted or stored. The ICH 107 is responsible for ensuring that such data is properly passed between the system memory 104 and its appropriate corresponding computing system interface (and internal storage device if the computing system is so designed). The memory controller 103 is responsible for managing the various contending requests for system memory 104 access amongst the processor(s) 101, interfaces and internal storage elements that may proximately arise in time with respect to one another.
Another computing system component that the memory controller 103 may have to deal with (because it requests access to the system memory 104) is the graphics processor 105. The graphics processor 105 can be viewed as a co-processor that “takes on” the responsibility of performing sophisticated instructions associated with the presentation of complex visual images on the computing system's display 106. By removing such responsibility from processor(s) 101, the performance efficiency of the processor(s) is improved. The graphics processor 105 is designed to execute display image specific instructions so that display image specific software routines can be executed.
The address bus 201 is driven by the memory controller and can be viewed as the wiring where the specific memory locations mentioned above are identified for both write cycles and read cycles. The data bus 202 is the wiring that transports the information written to memory 204 during a write cycle and read from memory 204 during a read cycle. Note that the data bus is “bi-directional” in that the information written into memory 204 during a write cycle is driven across the data bus 202 by the memory controller 203 to the memory 204; while, by contrast, the information read from memory 204 during a read cycle is driven across the data bus 202 by the memory 204.
Memory 204 typically has an associated “data width” of M bits which corresponds to the amount of information (in bits) that can be written to or read from a specific location (referred to as an “address”) that is identified by the memory controller 203 on address bus 201. As such, the data bus 202 is likewise implemented as a bus of width M.
A problem with high speed memory controller/memory interfaces is the presence of signaling “reflections”. Signaling reflections are a consequence of a “mismatch” between the characteristic impedance of a wiring trace that carries a high speed signal (such as a wire that carries a bit in the M wide data bus 202 of
However, if there is a mismatch between the characteristic impedance of a wiring trace and its load impedance then reflections are apt to appear on the wiring trace. A reflection is reflected signal energy and can cause signaling integrity problems on a wiring trace. For example, referring to
If an impedance mismatch also exists at the memory controller 203 side of the data bus 202, the reflected pulse will bounce-back again so as to re-travel from the memory controller 203 back to the memory 204. The reflecting process may then repeat such that the reflected pulse bounces back and forth multiple times between the memory controller 203 and the memory 204. Reflected signal energy diminishes with each bounce-back—so eventually the continuously reflected pulse will disappear. However, over the course of its existence, the reflected pulses can interfere with a subsequent pulse that is placed onto the same wiring trace; which, in turn, can corrupt the interpretation of the subsequent pulse by the device that it was sent to (i.e., the memory controller 203 in the case of a read, the memory 204 in the case of a write).
In order to diminish data corruption problems caused by reflections, the wiring traces associated with the data bus 202 may be terminated with termination loads that are designed (ideally) to match the characteristic impedance of the wiring traces (or, are at least posses an impedance that is “close” enough to the wiring traces' characteristic impedance so as to produce negligible reflected signal energy). Because the data bus is bi-directional 202, note that termination impedances may be placed on either or both sides of the data bus.
Specifically, for purposes of diminishing or eradicating reflected signal energy that may arise from a memory write, termination loads may be placed at or near the terminating ends of the wiring traces on the memory 204 side of the data bus 202 for each bit in the data bus. Likewise, for purposes of diminishing or eradicating reflected signal energy that may arise from a memory read, termination loads may be placed at or near the terminating ends of the wiring traces on the memory controller 203 side of the data bus 202 for each bit in the data bus.
To date, however, only static termination loads that continuously impose their effect on the data bus are known. In the case of such static termination loads, assuming that the termination loads are successfully designed so as to eradicate or sufficiently diminish reflected signal energy, the presence of the “unused” terminating loads for a memory read or memory write may adversely affect the performance of the memory controller/memory system. That is, the presence of “memory-side” termination loads during a memory read can diminish the performance of a memory read (noting that the “memory controller side” termination loads should eradicate/diminish reflections during a memory read because the information read from memory 204 travels from memory 204 to memory controller 203); and, the presence of “memory controller-side” termination loads during a memory write can diminish the performance of a memory write (noting that the “memory side” termination loads should eradicate/diminish reflections during a memory write because the information written into memory 204 travels in a direction from memory controller 203 to memory 204).
The diminished performance is a consequence of the higher capacitance and/or higher resistance that is added to the data bus's wiring traces by the unnecessary loading for the particular memory function (i.e., read or write). The presence of higher capacitance and/or higher resistance results in slower signaling in the form of longer rise/fall times which can adversely affect timing margins across the memory controller/memory interface.
The various embodiments of the present invention are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which:
Each of termination loads 3010 through 301M-1 is capable of being set “active” (in which case the terminating termination load is coupled to its corresponding data bus wiring so as to squelch reflection of signals thereon) or “inactive” (in which case the terminating termination load is not coupled to its corresponding data bus wiring so to have no significant influence on the reflected energy of signals thereon). A more detailed embodiment of such a termination load is discussed in more detail further below with respect to
Dynamic termination control logic circuitry 304 is used to control whether the termination loads 3010 through 301M-1 are placed into an “active” or “inactive” state. A high level depiction of the basic operation 311 of the dynamic termination control logic circuitry 304 is shown in
The dynamic termination control logic circuitry 304 has a dynamic termination control output 302 coupled to each of the memory controller's data bus termination loads 3010 through 301M-1. The dynamic termination control output 302 is used to set the termination loads 3010 through 301M-1 in the “active” or “inactive” state depending on whether the memory controller is reading or writing information from/to memory, respectively.
According to the particular set of inputs observed in
The dynamic control logic circuitry also includes additional inputs 307, 308, 309, 310 that can be used to enhance the dynamic termination load function, assist developers and/or permit the logic circuitry to be compatible within various applications. The bypass input 308 allows for ad hoc activation of the termination loads 3010 through 301M-1. That is, if the bypass input 307 is activated, output 402 activates the termination loads 3010 through 301M-1 irrespective of the other inputs. The enable input 307, when activated, allows the dynamic termination control logic circuitry 304 to modulate the state of the dynamic termination control output 302 in response to the set and clear inputs 305, 306 (provided the bypass input 307 is not activated). The tweak/ input 309 corresponds to a second modulation source of output 402 when both the bypass and enable inputs 307, 308 are deactivated. That is, if both the bypass and enable inputs 307, 308 are deactivated: 1) a first logic state (e.g., a logic high) at tweak/ input 309 deactivates the termination loads 3010 through 301M-1 and, a second logic state (e.g., a logic low) at tweak/ input 309 deactivates the termination loads 3010 through 301M-1.
Delay set input 310 sets a temporal delay between the moment that the set input 305 signifies that a memory read is taking place and the moment that the termination loads 3010 through 301M-1 are activated. More discussion concerning this temporal delay is provided further below with respect to
The dynamic termination control logic circuitry embodiment of
Here, the set delay input 410 controls the channel select input of a multiplexer 403 where the different input channels 4121 through 412N of the multiplexer 405 correspond to different delays imposed upon the rising edge received at input 405. A first input channel 4121 corresponds to no imposed delay. A chain of unit delay elements 4011 through 401N is used to establish incremental delays for the remaining multiplexer input channels 4122 through 412N. That is, as observed in
The circuitry downstream from the multiplexer output reacts to a rising edge (with proper setting of inputs 407, 408, 409), irrespective of any delay imposed to it, so as to set output 402 to a logic high; which, in turn, activates the memory controller's termination loads. Here, OR gate 409, AND gate 410 and DQ flip-flop 411 correspond to a resetable latch that: 1) to activate the termination loads, latches onto a logic high at the Q output of DQ flip flop 411 when a rising edge is presented at the multiplexer 403 output and the clear input 406 is a logic low; and, 2) to deactivate the termination loads, transitions from a latched logic high to a latched a logic low at the Q output of flip flop 411 when a rising edge is presented at the clear input 406 and the Q output of flip flop 411 is latched to a logic high. Note that the flip-flop 411 can be viewed as a type of register circuit that is capable of holding a first logical value to reflect a first state (e.g., activation of termination loads) and a second logical value to reflect a second state (e.g., deactivation of termination loads). Other embodiments may similarly use register circuitry to reflect an activation or deactivation state.
The above described modulation of the Q output of flip flop 411 essentially corresponds to the proper modulation of output 402 in response to the set and clear inputs 405, 406. That is, the Q output of flip flop 411 appears at output 402 provided inputs 407, 408 and 409 permit the resetable latch circuitry formed by logic circuitry elements 409, 410, 411 to drive output 402.
Truth table 419 demonstrates the effect inputs 407, 408, 409. Here, according to row 420 of the truth table 419, if bypass input 407 is a logic high the dynamic termination control output 402 is set to a logic high so as to set the termination loads into an active state, irrespective of the state of the other inputs 408, 409. Row 421 of truth table 419 corresponds to the input settings of inputs 407, 408, 409 that are needed to allow the above described resetable latch circuitry to drive output 402. That is, if bypass input 407 is a logic low and enable input 408 is a logic high; then, the Q output of flip flop 411 is presented at output 402 irrespective of the state of tweak/ input 409. According to rows 422 of truth table 419, if both the bypass and enable inputs 407, 408 are a logic low; then, tweak/ input 409 can be used to drive output 402. In the particular embodiment of
That is, temporal region 510 shows the termination loads being in an activated state during the last clock cycle (clock cycle 5) in which substantive read data appears during the first memory read phase; and, temporal region 511 shows the termination loads being deactivated in a clock cycle (clock cycle 6) that immediately follows the last clock cycle (clock cycle 5) in which substantive write data appears on the data bus for the memory write phase.
The deactivation of the termination loads in temporal region 511 is in response to a rising edge that appears in the clear input signal 509 in clock cycle 5. That is, the rising edge of clear signal 509 at clock cycle 5 causes the dynamic termination control logic circuitry (e.g., by way of the resetable latch circuit discussed above with respect to
The activation of the termination loads in temporal region 513 is in response to the rising edge that appears in the set signal 520 signal during clock cycle 9. That is, the rising edge of the set signal 502 at clock cycle 9 causes the dynamic termination control logic circuitry (e.g., by way of the resetable latch circuit discussed above with respect to
Moreover, note that in various applications the read and write strobe signals may also be bidirectional. Here, dynamically activated termination loads may also be designed for bidirectional read/write strobe wiring. For example, the output of a memory controller's dynamic termination control logic circuitry may also be coupled to termination loads that terminate the memory controller side of the read/write strobe wiring. The termination loads would be activated for read phases but not for write phases.
Drivers 603 and 604 are used to activate/deactivate upper and lower halves, respectively, of the binary weighted leg termination load. Gate 606 activates P-Driver 608 to drive a logical high “1” onto the bi-directional wire that pad 602 is coupled to (when it is appropriate for the memory controller to do so (e.g., during the write of a logical “1” but not during a read). Gate 607 activates N-Driver 609 to drive a logical low “0” onto the bi-directional wire that pad 602 is coupled to (when it is appropriate for the memory controller to do so (e.g., during the write of a logical “0” but not during a read).
Note also that embodiments of the present description may be implemented not only within a semiconductor chip but also within machine readable media. For example, the designs discussed above may be stored upon and/or embedded within machine readable media associated with a design tool used for designing semiconductor devices. Examples include a circuit description formatted in the VHSIC Hardware Description Language (VHDL) language, Verilog language or SPICE language. Some circuit description examples include: a behaviorial level description, a register transfer level (RTL) description, a gate level netlist and a transistor level netlist. Machine readable media may also include media having layout information such as a GDS-II file. Furthermore, netlist files or other machine readable media for semiconductor chip design may be used in a simulation environment to perform the methods of the teachings described above.
Thus, it is also to be understood that embodiments of this invention may be used as or to support a software program executed upon some form of processing core (such as the Central Processing Unit (CPU) of a computer) or otherwise implemented or realized upon or within a machine readable medium. A machine readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine readable medium includes read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.); etc.
In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Number | Name | Date | Kind |
---|---|---|---|
4400801 | Kible | Aug 1983 | A |
4584492 | Sharp | Apr 1986 | A |
4975598 | Borkar | Dec 1990 | A |
5528166 | Iikbahar | Jun 1996 | A |
5530383 | May | Jun 1996 | A |
5546016 | Allen | Aug 1996 | A |
5760657 | Johnson | Jun 1998 | A |
5781802 | Cassetti | Jul 1998 | A |
5818794 | Bonella et al. | Oct 1998 | A |
5869983 | Ilkbahar et al. | Feb 1999 | A |
5898321 | Ilkbahar et al. | Apr 1999 | A |
5926049 | Shi | Jul 1999 | A |
6025792 | Smith | Feb 2000 | A |
6031385 | Ilkbahar | Feb 2000 | A |
6072342 | Haider et al. | Jun 2000 | A |
6075379 | Haider et al. | Jun 2000 | A |
6084426 | Allen | Jul 2000 | A |
6127840 | Coteus et al. | Oct 2000 | A |
6144218 | Smith et al. | Nov 2000 | A |
6150862 | Vikinski | Nov 2000 | A |
6166563 | Volk et al. | Dec 2000 | A |
6172546 | Liu et al. | Jan 2001 | B1 |
6175928 | Liu et al. | Jan 2001 | B1 |
6184737 | Taguchi | Feb 2001 | B1 |
6185150 | Toda et al. | Feb 2001 | B1 |
6198307 | Garlepp et al. | Mar 2001 | B1 |
6265893 | Bates | Jul 2001 | B1 |
6288563 | Muljono et al. | Sep 2001 | B1 |
6289447 | Ilkbahar | Sep 2001 | B1 |
6298450 | Liu et al. | Oct 2001 | B1 |
6300798 | Possley | Oct 2001 | B1 |
6323647 | Anderson et al. | Nov 2001 | B1 |
6323674 | Shrivastava et al. | Nov 2001 | B1 |
6347850 | Volk | Feb 2002 | B1 |
6351136 | Jones et al. | Feb 2002 | B1 |
6353549 | Merritt | Mar 2002 | B1 |
6366129 | Douglas, III et al. | Apr 2002 | B1 |
6366867 | Sine et al. | Apr 2002 | B1 |
6378010 | Burks | Apr 2002 | B1 |
6380758 | Hsu et al. | Apr 2002 | B1 |
6396305 | Carlson | May 2002 | B1 |
6445316 | Hsu et al. | Sep 2002 | B1 |
6456016 | Sundahl et al. | Sep 2002 | B1 |
6459737 | Jiang | Oct 2002 | B1 |
6480438 | Park | Nov 2002 | B1 |
6509780 | Lim et al. | Jan 2003 | B1 |
6525683 | Gu | Feb 2003 | B1 |
6538951 | Janzen et al. | Mar 2003 | B1 |
20020083255 | Greeff et al. | Jun 2002 | A1 |
Number | Date | Country | |
---|---|---|---|
20050185480 A1 | Aug 2005 | US |