The present invention relates generally to memory systems, and more specifically to on-die-terminations in memory systems.
Modern computer systems use memory controllers to communicate with memory devices. Typically, one memory controller is coupled to multiple memory devices, or “chips,” and the memory controller manages data transfers to and from the memory devices on behalf of other devices in the computer system. Data transfer rates between memory controllers and memory devices continue to increase.
In the following detailed description, reference is made to the accompanying drawings that show, by way of illustration, specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. It is to be understood that the various embodiments of the invention, although different, are not necessarily mutually exclusive. For example, a particular feature, structure, or characteristic described herein in connection with one embodiment may be implemented within other embodiments without departing from the spirit and scope of the invention. In addition, it is to be understood that the location or arrangement of individual elements within each disclosed embodiment may be modified without departing from the spirit and scope of the invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims, appropriately interpreted, along with the full range of equivalents to which the claims are entitled. In the drawings, like numerals refer to the same or similar functionality throughout the several views.
Data port 120 is shown including driver 124, receiver 126, and controllable-on-die termination 122, and data port 130 is shown including driver 134, receiver 136, and controllable-on-die termination 132. Like data port 110, the circuitry of data ports 120 and 130 may be replicated “n” times to support an “n” bit wide communications path.
Each of data ports 110, 120, and 130 provide a bidirectional data communications capability to memory devices external to memory controller 100. For example, in some embodiments, each of signal interconnects 118, 128, and 138 are coupled to a separate memory device. Further, in some embodiments, command/address port 140 provides commands and addresses to the memory devices in parallel.
In some embodiments, memory controller 100 may be used in a memory system that operates as a dual data rate (DDR) system. For example, data read cycles may occur in bursts in response to read commands and addresses provided by command/address port 140, and data write cycles may also occur in bursts when write commands are provided by command/address port 140.
Each of data ports 110, 120, and 130 include a controllable on-die termination network to conditionally terminate the signal lines connected to signal interconnects 118, 128, and 138. In some embodiments, the controllable on-die terminations may be turned on and off. For example, when controllable on-die terminations are turned on, a termination is provided on the signal lines, and when turned off, no termination is present.
Controllable on-die terminations may provide a termination to terminate signals during a read cycle when data is provided by memory devices to one of data ports 110, 120, or 130. Controllable on-die terminations are turned off when data is driven from memory controller 100 to memory devices (not shown) coupled to signal interconnects 118, 128, and 138.
The combination of signal interconnects 118, 128, and 138 forms a segmented data bus where each segment includes a separate controllable on-die termination network within the memory controller. Each of the data bus segments in
Memory controller 100 is shown in
In some embodiments, memory controller 100 may include many more functional blocks and circuits than are shown in
Each of the memory devices shown in
Each of the memory devices shown in
In operation, memory controller 210 may issue a read command on bus 242, and that command is received by each of the memory devices staggered in time, in part because of a propagation delay (and associated signal transit time) along the length of bus 242. In response to the read command, each memory device provides eight bits of data to its corresponding data port within memory controller 210. Each data port may receive data from the corresponding memory device at a different time, in part because of the propagation delay of commands and addresses on bus 242, and also in part because the routing of data signal traces between the various memory devices and memory controller 210 may be different.
Each of the data ports within memory controller 210 includes the ability to separately control an on-die termination corresponding to the eight bits of data received from the corresponding memory device. Those data ports that receive data early may turn off the on-die termination early, and perform other operations earlier than they would otherwise be capable. For example, a data port may receive data earlier than others and turn off an associated on-die termination. The memory controller may issue a write command, and that data port may then drive write data on its bus segment while other data ports are still completing the previous read cycle.
Those data ports receiving data later in a read cycle may leave the controllable on-die terminations turned on until the data is received, and then the controllable on-die terminations may be turned off. By turning off controllable on-die terminations as soon as data is received, a memory controller may be capable of performing subsequent operations on some data ports while other data ports are still receiving data from the read cycle.
The preceding paragraphs describe the operation of memory controller 210 in the context of a read command followed by a write command, but this is not a limitation of the present invention. In general, any type of command may follow any other type of command while separately controlling on-die terminations. For example, a read command may be followed by another read command, and a write command may be followed by a read command or another write command.
In some embodiments, the interface between the memory controller and the memory devices is a synchronous interface that includes one or more clock signals (not shown). For example, a command bus driven by the memory controller may include a clock signal that is received at the various memory devices staggered in time.
At 312, the memory controller issues a read command, and that read command is received staggered in time at memory devices in part because of the signal transmit time of the daisy chained command bus. Memory devices respond to the read command by transferring data shown in
As shown in
Because the memory controller is able to turn off on-die terminations separately for the various segments of the data bus, those segments that complete the read cycle first may also begin a write cycle first. For example, a write command shown at 314 may be issued earlier than it would otherwise be able, thereby allowing a write to occur at the first memory device as soon as possible after the read has been completed. In some embodiments, the write data shown as DS0-DS1 may be driven on the data lines to the first memory device (shown at 330) before the read of the second device has been completed (shown at 350).
The diagrams in
Method 400 is shown beginning at block 410 in which a read command is issued on a command bus that is daisy chained to a plurality of memory devices. For example, a command bus such as command bus 242 (
At 430, on-die terminations associated with the plurality of memory devices are turned off staggered in time. The on-die terminations may be turned off as the read cycles are completed for the various memory devices. For example, as shown in
At 440, a write command is issued on the command bus. The write command may be issued prior to the last data arriving at the controller or prior to the on-die termination being turned off. For example, in synchronous devices, a write command may be issued multiple clock cycles prior to the time at which data is sourced to the memory device. At 450, write data is sent to the plurality of memory devices staggered in time. In some embodiments, the write data is staggered in such a way that the memory devices will receive the data at the appropriate time when the propagation delays are taken into effect. For example, the propagation delay of the command bus and the propagation delay of the various data bus segments may be taken into account when determining when to source write data on the various bus segments.
In some embodiments, electronic system 500 may represent a system that includes the circuits shown in
Antenna 510 may be a directional antenna or an omni-directional antenna. As used herein, the term omni-directional antenna refers to any antenna having a substantially uniform pattern in at least one plane. For example, in some embodiments, antenna 510 may be an omni-directional antenna such as a dipole antenna, or a quarter wave antenna. Also for example, in some embodiments, antenna 510 may be a directional antenna such as a parabolic dish antenna or a Yagi antenna. In still further embodiments, antenna 510 includes multiple physical antennas. For example, in some embodiments, multiple antennas are utilized to multiple-input-multiple-output (MIMO) processing or spatial-division multiple access (SDMA) processing.
In operation, system 500 sends and receives signals using antenna 510, and the signals are processed by the various elements shown in
RF circuit 520 may also provide a physical layer (PHY) implementation suitable for use in a wireless network. For example, RF circuit 520 may implement a physical layer that complies with an IEEE 802.11 standard or other standard. Examples include, but are not limited to, direct sequence spread spectrum (DSSS), frequency hopping spread spectrum (FHSS), and orthogonal frequency division multiplexing (OFDM).
Processor 560 may perform method embodiments of the present invention, or may program memory controller 540 to perform method embodiments of the present invention, such as method 400 (
Memory controller 540 is a memory controller with separately controllable on-die terminations. For example, memory controller 540 may be memory controller 100 (
Memory 570 represents a plurality of memory devices that are coupled to memory controller 540. In some embodiments, memory 570 includes multiple memory devices that are coupled to a command/address bus as shown in
Although the present invention has been described in conjunction with certain embodiments, it is to be understood that modifications and variations may be resorted to without departing from the spirit and scope of the invention as those skilled in the art readily understand. Such modifications and variations are considered to be within the scope of the invention and the appended claims.