WO2003036445A1 - Timing calibration apparatus and method for a memory device signaling system - Google Patents

Timing calibration apparatus and method for a memory device signaling system Download PDF

Info

Publication number
WO2003036445A1
WO2003036445A1 PCT/US2002/033707 US0233707W WO03036445A1 WO 2003036445 A1 WO2003036445 A1 WO 2003036445A1 US 0233707 W US0233707 W US 0233707W WO 03036445 A1 WO03036445 A1 WO 03036445A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
data
signal
interface
timing
Prior art date
Application number
PCT/US2002/033707
Other languages
French (fr)
Inventor
Craig E. Hampel
Richard E. Perego
Stephanos S. Sidiropoulos
Ely K. Tsern
Fredrick A. Ware
Original Assignee
Rambus Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=26993682&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=WO2003036445(A1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Rambus Inc. filed Critical Rambus Inc.
Publication of WO2003036445A1 publication Critical patent/WO2003036445A1/en

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4076Timing circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40611External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4072Circuits for initialization, powering up or down, clearing memory or presetting
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4078Safety or protection circuits, e.g. for preventing inadvertent or unauthorised reading or writing; Status cells; Test cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4093Input/output [I/O] data interface arrangements, e.g. data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C21/00Digital stores in which the information circulates continuously
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/106Data output latches
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1066Output synchronization
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1087Data input latches
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • G11C7/222Clock generating, synchronizing or distributing circuits within memory device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0091Transmitter details
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2254Calibration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0016Arrangements for synchronising receiver with transmitter correction of synchronization errors
    • H04L7/002Arrangements for synchronising receiver with transmitter correction of synchronization errors correction by interpolation
    • H04L7/0025Arrangements for synchronising receiver with transmitter correction of synchronization errors correction by interpolation interpolation of clock signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0079Receiver details
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B43/00EEPROM devices comprising charge-trapping gate insulators
    • H10B43/20EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels
    • H10B43/23EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels
    • H10B43/27EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels the channels comprising vertical portions, e.g. U-shaped channels

Definitions

  • This invention generally relates to the field of digital circuits, and more particularly to an apparatus and method for timing calibration and memory device signaling systems.
  • Integrated circuits connect to and communicate with each other, typically using a bus with address, data and control signals.
  • Today's complex digital circuits contain storage devices, finite-state machines, and other such structures that control the movement of information by various clocking methods. Transferred signals must be properly synchronized or linked so that information from a transmit point is properly communicated to and received by a receive point in a circuit.
  • signal refers to a stream of information communicated between two points within a system.
  • this information consists of a series of
  • symbols with each symbol driven for an interval of time.
  • the symbols are generally referred to as “bits” in which values are represented by “zero” and “one” symbols, although other symbol sets are possible.
  • the values commonly used to represent the zero and one symbols are voltage levels, although other variations are possible.
  • a signal will be given more than one name (using an index notation), with each index value representing the signal value present at a particular point on a wire.
  • the two or more signal names on a wire represent the same information, with one signal value being a time-shifted version of the other.
  • the time-shifting is the result of the propagation of voltage and current waveforms on a physical wire. Using two or more signal names for the same signal information allows for easy accounting of the resulting propagation delays.
  • wire refers to the physical interconnection medium which connects two or more points within a system, and which serves as the conduit for the stream of information (the signal) communicated between the points.
  • a wire can be a copper wire, a metal (eg., copper) trace on a printed circuit board, or a fiber optic cable.
  • a "bus” is a wire or a set of wires. These wires are collected together because they may share the same physical topology, or because they have related timing behavior, or for some other reason. The assignment of wires into a bus is often a notational convenience.
  • the terms "line,” “connection” and “interconnect” mean either a bus, wire or set of wires as appropriate to the context in which those terms are used.
  • signal set refers to one or more signals. Whenever a signal or signal set is described herein as being coupled to or attached to a device or component, it is to be understood that the device or component is coupled to a wire, set of wires or bus that carries the signal.
  • the mapping of a signal onto a physical wire involves tradeoffs related to system speed.
  • the use of one physical wire per signal uses fewer wires.
  • the use of two physical wires per signal permits shorter bit intervals.
  • the mapping of signals onto physical wires can also involve optimization related to system resources. Two different signals can share the same wire (i.e., they are multiplexed) to minimize the number of physical wires. Typically, this must be done so that the potential timing conflicts that result are acceptable (in terms of system performance, for instance).
  • bit interval The interval of time during which a bit or symbol is transmitted or received at a particular point on a wire or at a device interface is the "symbol time interval,” “bit time,” “bit time interval,” “bit window,” or “bit eye.” These time interval terms for transmitting and receiving are used interchangeably.
  • bit interval for transmit signals must be greater than or equal to the bit interval for receive signals.
  • a bus 20 interconnects a memory controller 22 and memory components (MEMS) 24.
  • the bus 20 comprises traces on a printed circuit board or wiring board, wires or cables and connectors.
  • Each of these devices 22, 24 has a bus output driver or transmitter circuit 30 that interfaces with the bus 20 to drive data signals onto the bus to send data to other integrated circuits.
  • Each of these devices also has a receiver.
  • the bus output drivers 30 in the memory controller 22 and MEMS 24 are used to transmit data over the bus 20.
  • the bus 20 transmits signals at a rate that is a function of many factors such as the system clock speed, the bus length, the amount of current that the output drivers can drive, the supply voltages, the spacing and width of the wires or traces making up the bus, and the physical layout of the bus itself. Clock, or control, signals serve the purpose of marking the passage of time, thereby controlling the transfer of information from one storage location to another.
  • the memory controller 22 is connected to a central processing unit (CPU) 40 and other system components 50, such as a graphics control unit, over bus 45.
  • CPU central processing unit
  • Propagation delays are affected by variables such as temperature, supply voltage and process parameters (which determine physical characteristics of the devices sending and receiving the signals). For example, at a low operating temperature with a high supply voltage, signals may be transmitted with a relatively short delay. Alternatively, at a low supply voltage and high operating temperature, a significantly longer delay may be experienced by transmitted signals.
  • the present invention provides systems and methods for dynamically synchronizing signal transmitters and receivers, even when the variations in propagation delays caused by temperature, voltage, process and loading variations exceed an average symbol time interval. Normally, a variation in propagation delay of even a half symbol time interval will cause a memory system or data transfer system to fail, because movement of a half symbol time will cause the data sample point to move from the center of the data eye to the edge of the data eye.
  • This invention generally relates to apparatus and methods for timing calibration and device signaling systems in which phase offsets of system device components are not necessarily fixed during normal system operation, but are allowed to vary over a drift range.
  • Systems designed in accordance with the present invention allow for the calibration and adjustment in memory device signaling systems so that the transmission of signal information between a first device (such as for example a memory controller) and a second device (such as for example a memory component) occurs without errors even when the accumulated delays between the first device and second device change by a half symbol time interval or more during operation of the system.
  • This invention can also be utilized for communications between circuit blocks within a single integrated circuit or component.
  • FIG. 1 is a block diagram of a prior art bus connecting a memory controller and a number of memory components.
  • FIG. 2 is a block diagram of a prior art static mesochronous memory system connecting a controller and a memory.
  • FIG. 3 is a timing diagram for the signals of the static mesochronous memory system in FIG. 2.
  • FIG. 4 is second example of a block diagram of a prior art static mesochronous memory system connecting a controller and a memory.
  • FIG. 5 is a timing diagram for the signals of the static mesochronous memory system in FIG. 4.
  • FIG. 6 is a block diagram of a dynamic mesochronous memory system connecting a controller and a memory in accordance with a preferred embodiment of the present invention.
  • FIG. 7 is a block diagram of a dynamic mesochronous memory system in accordance with an alternate preferred embodiment of the present invention.
  • FIGS. 8 A and 8B depict dynamic mesochronous memory systems in which the X and Y buses are parallel to each other.
  • FIG. 9 is block diagram of a dynamic mesochronous memory system in accordance with an alternate preferred embodiment of the present invention.
  • FIG. 10 depicts sample splitting element configurations.
  • FIG. 11 depicts sample internal and external termination component variations.
  • FIG. 12 is logic diagram for a baseline system configuration 1200 for a component shown in the system topology diagrams.
  • FIG. 13 depicts a dynamic mesochronous memory system in accordance with an alternate preferred embodiment of the present invention.
  • FIGs. 14A and 14B depict a sequence of timing signals for a read transfer of the system topology of FIG. 13.
  • FIG. 15 depicts a sequence of timing signals for a write transfer of the system topology of FIG. 13.
  • FIG. 16 is block diagram of a memory system in accordance with a preferred embodiment.
  • FIG. 17 is logic diagram for a memory system of the preferred embodiment.
  • FIG. 18 shows a sequence of timing signals for block Ml of the memory system of FIG. 16.
  • FIG. 19A is a logic diagram of the M2 module in the memory system of FIG. 16 for transmitting read data on a bus.
  • FIG. 19B is a logic diagram of the M3 module in the memory system of FIG. 16 for receiving write data.
  • FIG. 20 is a block diagram for a controller of the topology of FIG. 13 comprising three blocks, C1-C3, and interconnecting buses between the blocks.
  • FIG. 21 is a logic diagram for block CI of FIG. 20.
  • FIG. 22 shows the clock generation sequence for block CI of the controller.
  • FIG. 23 is a block diagram for the controller module responsible for receiving read data and comprising three blocks Rl -R3, and interconnecting buses between the blocks.
  • FIG. 24 is a logic diagram for a block Rl of a controller module for receiving read data from a memory and inserting a programmable delay.
  • FIG. 25 is logic diagram for a block R2 of a controller module for creating a clock for receiving read data.
  • FIG. 26 is logic diagram for a block R3 of a controller module for generating the value of a clock phase for receiving read data.
  • FIG. 27 shows a sequence of receive timing signals illustrating four cases of alignment of a clock signal within a time interval and the generation of bus signals.
  • FIG. 28 shows a sequence of timing signals that illustrate how timing values are related and maintained in RXA and RXB registers.
  • FIG. 29 shows a sequence of receive timing signals that illustrate a calibration sequence for transferring bus signals.
  • FIG. 30 is a block diagram for a controller block TO, part of block C3, and responsible for transmitting write data.
  • FIG. 31 is a logic diagram for block TI, part of block TO, for transmitting write data and inserting a programmable delay.
  • FIG. 32 is a logic diagram for block T2, part of block TO, for creating a clock signal for transmitting write data.
  • FIG. 33 is a logic diagram for block T3, part of block TO, for generating the value of a clock phase for transmitting write data.
  • FIG. 34 shows a sequence of transmit timing signals illustrating four cases of alignment of a clock signal within a time interval and the generation of bus signals.
  • FIG. 35 shows a sequence of timing signals that illustrate how timing values are related and maintained in TXA and TXB registers.
  • FIG. 36 shows a sequence of transmit timing signals that illustrate a calibration sequence for transferring bus signals.
  • FIG. 37 is a block diagram of the logic needed to perform the calibration processes of a preferred embodiment of the present invention.
  • FIG. 38 is a block diagram for a memory system to implement a power reduction mechanism.
  • FIG. 39 shows a sequence of timing signals for a read transaction in the memory system of FIG. 38.
  • FIG. 40 is another embodiment of a logic diagram of a controller module for createing a clock and control signals for receiving read data.
  • FIG. 41 is another embodiment of a logic diagram of a controller module for receiving read data from a memory and inserting a programmable delay.
  • FIG. 42 is another embodiment of a logic diagram of a controller module for creating a clock signal and control signals for transmitting write data.
  • FIG. 43 is another embodiment of a logic diagram of a controller module for transmitting write data and inserting a programmable delay.
  • the term “mesochronous” refers to a relationship between two signals having the same average rate or frequency, but which may have arbitrarily different phases.
  • the term “mesochronous system” refers to a set of clocked components in which the clock signal for each clocked component has the same frequency, but can have a relative phase offset.
  • the term “static mesochronous system” means that the relative phase offsets are fixed and do not vary during normal system operation. The approach of using fixed relative phase offsets that do not vary during normal system operation has been the method practiced in prior art systems.
  • the present invention is directed to "dynamic mesochronous systems" in which the phase offsets of the clocked components are allowed to drift over some range during system operation.
  • normal system operation is used in this document to refer to ordinary memory access operations, such as read, write and refresh operations.
  • Calibration operations which are used to determine timing offsets required for successful command and data transmission between the memory controller and memory components of a memory systems, are generally not considered to be normal memory operations.
  • the calibration hardware in the memory controller is configured to perform calibration operations periodically, and/or during periods of little memory system usage, and such calibration operations are generally separated by periods during which normal memory operations are performed.
  • This document describes apparatus and techniques for managing the timing of signals within a system that can be beneficially applied to systems having a wide variety of signals, signal rates, time intervals, buses, signal-to-wire mappings, and so on. While the disclosed description will often identify a preferred embodiment or implementation to illustrate a concept, it should be understood that the concept is not limited to the embodiment or implementation employed in the discussion.
  • FIG. 2 shows an example of a prior art static mesochronous memory system 200.
  • the memory system comprises a controller 205 communicating to and from memory 210 via unidirectional bus 215 and bi-directional bus 216.
  • Bus 215 carries address and control information from the controller to the memory.
  • Bus 216 carries data information from the controller to the memory during write operations and carries data information from the memory to the controller during read operations.
  • Bus 215 is also referred to here as the RQ bus, and bus 216 is also referred to here as the DQ bus.
  • This description will also refer to separate D and Q signal sets, i.e., signal sets 217, 218 at the controller and signal sets 219, 220 at the memory, even though such signal sets share the same physical wires in this system.
  • Memory component 210 in FIG. 2 is one component of a two dimensional array of memory components, with ranks (rows) indexed by the variable "i" and slices (columns) indexed by the variable "j". Index values for the ranks and slices are zero at the memory controller and assume integer values greater than zero as you move further away from the controller 205. In system 200, there is a single memory component in each rank. Other memory systems may have more than one memory component per rank. In this document, notation "[ij]" is used to label a wire or bus at different physical points along a physical length. For example, the CTC[0,j] and CTC[i,j] signals are associated with two different points along the same physical wire.
  • Each slice of the memory components is attached to the DQ and RQ busses, which carry data signals and request signals, and to bus 230 (for receiving timing information or signals).
  • Bus 230 (which is shown as three sub-buses 230(a), 230(b) and 230(c)), communicating a clock signal (CLK), carries timing information from the controller 205 to the memory component 210 so that information transfers on the other two buses can be coordinated.
  • CLK clock signal
  • the controller uses internal clock signal CLKC for its internal operations, including transmitting and receiving on the RQ and DQ buses.
  • CLKC is routed so that it passes the memory controller and memory components a total of three times.
  • Clock signal 225 is made up of three sub-signals: CTE (clock-to-end), CTC (clock-to-controller), and CFC (clock-from-controller).
  • the controller drives the CTE signal, which travels to the end of the slice of components, and returns as CTC.
  • CTC enters the controller, and leaves the controller (unbuffered) as CFC, and then travels back to the end of the slice. While a single pair of physical wires generally carries the three clock signals (with CTC and CFC being carried by the same physical wire), three different signal lines (i.e., wires) are shown in FIG. 2 for clarity.
  • CLKC is also used as a reference for the phase-loop lock (PLL) or delay-loop lock (DLL) circuit 255 that drives CTE[0,j] signals onto bus 230(a).
  • PLL phase-loop lock
  • DLL delay-loop lock
  • the PLL/DLL circuit 255 internally generates the CTE[0,j] signal and adjusts the phase of the CTE[0,j] signal until the CTC[0,j] and CFC[0,j] signals have the same phase as the CLKC signal.
  • Memory components receive the CTC and CFC signals on buses 235 and 240, respectively. More specifically, each memory component has its own pair of clock input connections for receiving the CTC and CFC signals, respectively.
  • the CTC[i,j] and CFC[i,j] signals that are received by a memory component [i,j] on buses 235, 240, respectively, have phases that are offset from CLKC and from each other due to propagation delays.
  • the propagation delays on the clock bus 230 are essentially identical to propagation delays on the RQ and DQ busses, and thus the CTC[i,j] and CFC[i,j] signals are used by the memory component [i,j] to control the transmission of data signals on the DQ bus 216 and to control the receipt of control and data signals from the RQ and DQ buses, respectively.
  • the CTC and CFC signals on buses 235, 240 pass through PLL/DLL circuits 265, 270, respectively, within the memory component 210.
  • Memory components use PLL or DLL circuits to ensure that the clock domains within the memory are phase-aligned with the external memory clock signals that provide the timing references. By phase aligning the clock signals in this fashion, memory sub-components 245, 250 receive timing information for transmitting and receiving on internal D and Q buses 219, 220.
  • Clock domain crossing logic 275 links the portions of the memory component 210 that operate in two clock domains. One domain is used for transmitting read data. The other domain is used for receiving write data and address/control information. Each memory component needs to pass information between the two clock domains, and this is controlled by the clock domain crossing logic 275.
  • FIG. 3 shows a timing diagram for system 200 (FIG. 2).
  • the CLK signal 225 drives the PLL/DLL 255, which produces CTE[0,j] after a delay of t PL L/DLL,- CTE[0,j] propagates to the end of the wire 230(a) and returns as the CTC signal to memory component [i,j].
  • the CTC[i.j] signal is delayed by tp ROPtoEND relative to the CTE[0,j] signal.
  • Read data Q[i,j] transmitted by the memory component to the controller is synchronized by the memory component [i,j] with the CTC[i,j] clock.
  • the read data Q[i,j] signal set and the CTC[i,j] clock signal requires an additional delay of tp ROP i j to reach the controller to become Q[0,j] and CTC[0,j].
  • the CTC[0,j] signal becomes the CFC[0,j] signal and exits the controller.
  • tp RO P y CFC[0,j] reaches a memory component as CFC[i,j], where it is used to receive the RQ[i,j] address/control information and D[i,j] write data information.
  • the information on these two buses are delayed by pR O Pi j from the RQ[0,j] and D[0,j] buses, respectively.
  • the controller is able to perform all transfer operations within the single clock domain of the CLKC signal.
  • Each memory component operates in two clock domains, as noted above. One domain is earlier in time than CLKC by tp ROPy and is used for transmitting read data. The other domain is later than CLKC by p ROP i j and is used for receiving write data and address/control information.
  • the sampling edge of the clock that is used to receive a set of bits from a bus is shown as being aligned with the start of the valid window of the bits.
  • the receiving clock will have its sampling edge aligned with the center of the valid window of the bits.
  • the clock recovery circuits PLL or DLL present on both the controller and memory component can perform this alignment easily. For simplicity, this detail is not shown in the timing diagram. Although other static alignments of the clock with respect to the data may be used, one key point with respect to static systems is that the alignment does not change during system operation.
  • Phase offsets required for normal operation of system 200 are known or can be generated automatically by the system hardware. This determination of phase offsets can be done because the clock signals travel through a path that is essentially the same as the path of the data and address/control signals for which they provide a timing reference. The determination of phase offsets also requires that PLL or DLL circuits be used to maintain the static phase relationships.
  • timing budget for transmitting and receiving a bit includes, for instance, setup and hold times of receive circuits and the variation of the output valid delay of the transmit circuits.
  • the timing budget does not include a component for the round-trip propagation delay 2*t PR opi j between the memory component and memory controller. The round-trip propagation delay 2*tp OP i j is accounted for in the clock domain crossing logic 275.
  • FIG. 4 shows a second example of a prior art static mesochronous memory system
  • memory components form a two dimensional array, with ranks (rows) indexed by the variable "i" and slices (columns) indexed by the variable "j".
  • the index values are zero at the memory controller, and assume integer values greater than zero as you move further away from the controller. For example, in a system with a 2 x 3 array of memory components (i.e., three memory components in each of two ranks) the value of the "i" variable increases from zero at the controller to "1" for each of the three memory components in the first rank and to "2" for each of the three memory components in the second rank.
  • the value "j" increases from zero at the controller to "1" for each of the two memory components in the first slice, to "2" for each of the two memory components in the second slice, and to "3" for each of the two memory components in the third slice.
  • each rank of memory components is attached to an RQ bus 315 and a DQ bus 320.
  • Other ranks are connected to different RQ buses and other slices are connected to different DQ buses.
  • the RQ bus 315 is unidirectional and carries address and control information from the controller to the rank of memory components.
  • the CLK bus 317 is unidirectional and carries timing information from the controller to the memory components so that information transfers on the other two buses can be coordinated.
  • the CLK bus 317 has the same topology as the RQ bus it accompanies.
  • the slice of memory components is attached to DQ bus 320, which connects the controller and memory and is bi-directional, and carries data information from the controller to a memory component during write operations, and carries data information from a memory component to the memory controller during read operation.
  • the controller uses an internal clock CLKC, carried by internal bus 325, for its internal operations, including transmitting on the RQ bus 315.
  • CLKC signal is also used as a reference for the PLL or DLL circuit 330 that drives CLK[i,0].
  • the PLL/DLL 330 adjusts the phase of the CLK[i,0] signal to have the same phase as CLKC.
  • the CLK[i,j] signal is received offset in phase by a PLL or DLL circuit 335, which produces a buffered internal clock that is of essentially the same phase as received.
  • This internal buffered clock signal is used to control transmission of read data onto the DQ bus 320 and to control the receipt of control and data signals from the RQ and DQ buses, as appropriate, generally to control the timing of operations performed by internal memory sub-components 340, 345 and 350. Because there is a single clock domain inside the memory component 310, there is no need for clock domain crossing logic in the memory component 310 as there was in system 200.
  • the clock domain crossing logic has been shifted to the controller 305 as clock domain crossing logic 375.
  • the shift in logic 375 to the controller is because the write data D[0,j] transmit logic 365 and the read data Q[0j] receive logic 370, must be operated in two clock domains, CLKD[0 j] and CLKQ[0,j], that have different phases than the CLKC domain used by the rest of the controller.
  • phase adjustment logic is needed that delays CLKC by toy and t Q ⁇ to form the CLKD[0,j] and CLKQ[0,j] signals, respectively.
  • the phase adjustment logic for the CLKD[0,j] and CLKQ[0,j] signals are shown as circuit elements 380 and 355, respectively.
  • FIG. 5 shows a timing diagram for system 300 (FIG. 4).
  • the CLK signal drives the
  • the CLK[i,0] signal is delayed by tp R opcij , as it propagates to memory component [i,j] to become signal CLK[i,j].
  • the RQ[i,0] signal transmitted by controller element 360 is delayed by tp R op RQy as it propagates to memory component [i,j] to become the RQ[i,j] signal at internal memory component 350.
  • the CLK and RQ buses are routed together, so that the two propagation delays are essentially the same.
  • phase adjustment logic 380 delays CLK by t DlJ to form the CLKD[0,j] signal.
  • This clock signal is used by the controller's data transmit element 365 to control the phase of the write data D[0,j].
  • the D[0,j] signal set is delayed by tpR O P D y as it propagates to memory component [ij] to become signal set D[ij].
  • phase adjustment logic 355 is also phase adjustment logic 355 in the controller that delays CLK by tQ y to form the CLKQ[0,j] signal.
  • This clock signal is used to receive the read data Q[0 j] at 370.
  • the Q[i j] signal set is delayed by tp ROP Q y as it propagates from memory component [i j] to become signal set Q[0j].
  • the sampling (rising) edge of the clock that is used to receive a set of bits (or more generally, symbols) on a bus is shown aligned with the start of the valid window of the bits. In the real system, the receiving clock will typically have its sampling edge aligned with the center of the valid window of the bits.
  • the clock recovery circuitry (PLL or DLL) that is present on both the memory controller and memory component can perform this alignment easily. Other static phase alignments of the signals on the CLK, RQ, and DQ buses are also possible.
  • Memory components are able to perform all transfer operations within the single clock domain of the internal buffered clock signal. Each memory component will operate in its own unique clock domain. The phase of each clock domain will stay fixed relative to the phase of CLK in the controller; hence the reason for the term "static" mesochronous system.
  • the controller has multiple clock domains.
  • CLK is the principle domain
  • CLKD[0,j] and CLKQ[0,j] are the domains (two for each slice [j]) used for transmitting and receiving, respectively.
  • the phase offsets of CLKD[0j] and CLKQ[0,j] are dependent, for example, upon the lengths of the wires that connect the components, and may have a range that is greater than the cycle time of CLK.
  • the range of phase offsets (to y and t Qy ) for CLKD and CLKQ is many times greater than the cycle time of CLK.
  • the domain crossing logic 375 must accommodate these ranges of phase offsets.
  • phase offsets or adjustment values t DlJ and tQ y are determined at system initialization time. The values are stored and then used during normal system operation. Each rank [i] in the system needs its own set of phase adjustment values toy and tQy that must be loaded prior to transferring data to or from a memory device in the rank.
  • the PLL or DLL circuits of system 300 do not align the phase of two signals exactly, as there is always at least a small error because of circuit jitter, as described earlier. This jitter must be absorbed into the overall timing budget for transferring each bit of information.
  • the timing budget for transmitting and receiving a bit for system 300 does not include a budget allocation for the round-trip propagation delay, 2*tp ROPy , between the memory component and controller. Instead, the round-trip propagation delay, 2*tp R ⁇ p ⁇ , is accounted for by the clock domain crossing logic 375.
  • the round-trip propagation delay increases the latency of read operations, but does not impact the bandwidth of read and write transfers. The transfers occur at a bandwidth that is determined by the circuits of the components, and not by the length of the signal wires that connect the components.
  • FIG. 6 shows an overview of a preferred embodiment of a dynamic mesochronous memory system 400 in accordance with the present invention.
  • This system is topologically similar to system 300 with respect to the interconnection of components by buses and comprises a controller 405 for communicating to and from the memory components 410.
  • a controller 405 for communicating to and from the memory components 410.
  • reference numbers that differ by 100 for systems 300 and 400 represent circuit elements at the same topological locations and having at least some functional aspects in common, even if their internal design and operation differs substantially.
  • memory controller includes any device that performs the functions of a memory controller described herein
  • memory component includes any device that performs the functions of a memory component or device described herein.
  • memory controller includes any device that performs the functions of a memory controller described herein
  • memory component includes any device that performs the functions of a memory component or device described herein.
  • ASIC application specific integrated circuit
  • System 400 differs from system 300 in numerous respects. The following is a partial listing of significant differences between the two systems: (1) the memory component 410 has a clock buffer 443 instead of the PLL/DLL clock recovery circuits 330 and 335 of memory component 310; the clock buffer can have varying delay during system operation; (2) unlike memory component 310 and controller 305, the memory component 410 and controller 405 include calibration logic 485 and 490, respectively, to support a calibration process; (3) controller 405 includes enhanced clock domain crossing logic 475 to improve the efficiency of the calibration process. In addition, certain elements of the memory component 410, such as the RQ and DQ handling logic 450, 445, 440 include new logic or circuitry to support the calibration process. These new aspects of the memory component 410 and controller 405, as well as many others, are discussed below.
  • CLK[i,0] The clock signal used to time the transmission of signals (sometimes called requests) on the RQ[i,0] bus 415 is called CLK[i,0].
  • CLK[i,0] has essentially the same phase as CLKC.
  • the CLK[i,j] signal that is received by memory component [i,j] will have a phase that is offset from CLKC.
  • This CLK[i,j] signal is received by a simple clock buffer 443, which is much less complex and consumes much less power than the PLL or DLL circuits 330 and 335 in system 300.
  • Buffer 443 produces a buffered internal clock CLKB[i j] at 444 that is at a different phase than the CLK[i,j] signal, received by buffer 443.
  • the CLKB[i,j] signal is used to transmit data onto the DQ bus 420, to receive signals (e.g., requests and data) from the RQ and DQ buses 415, 420, respectively, and to perform all other internal operations in the memory 410. Because there is a single clock domain inside the memory, there is no need for clock domain crossing logic in the memory component, such as logic 275 of system 200.
  • system 400 includes calibration logic 485 and 490.
  • Calibration logic 485 is added to the memory 410, and logic 490 is added to the controller 405.
  • the calibration logic circuits 485 and 490 operate in conjunction with one another so that delay variations during system operation are detected and complementary delay elements in logic 480, 455 are adjusted.
  • the write data D[0,j] transmit logic 465 and the read data Q[0j] receive logic 470 must be operated in two clock domains, CLKD[0,j] and CLKQ[0,j], having different phases than the CLK signal domain used by the rest of the controller.
  • phase adjustment logic 480 and 455 that delays CLK by to y and t Qy , respectively, to form the CLKD[0j] and CLKQ[0 j] signals.
  • the values to y and tQ y are functions of the propagation delay parameters t R opcL ⁇ j , t P ROPDy, and tpR O PQy. These propagation delay parameters are relatively insensitive to temperature and supply voltage changes.
  • the values to and tQ U may be left static (unchanged) during system operation.
  • the values to ⁇ and t Qy are also a function of the delay of the clock buffer t ⁇ y (as well as delay of other circuits such as the transmitters and receivers). This clock buffer delay will change during system operation because it is relatively sensitive to temperature and supply voltage changes.
  • the values to y and tQy that are generated during system initialization are dynamic (changing) during system operation, and a calibration process, using the calibration logic 485 and 490, keeps the values to and t QU updated.
  • enhancements are made to the clock domain crossing logic 475 in system 400 (relative to system 300) to improve the efficiency of the calibration process and so that the calibration process can be handled completely by hardware. Because the enhancement (i.e., hardware for implementing the calibration process) is implemented in hardware, primarily in the controller but also in the memory components, the performance of the system 400 is not significantly impacted by the overhead of the calibration process.
  • receiver and transmitter circuits 440, 445, and 450 are able to perform all transfer operations within a single clock domain that is defined by the internal buffered clock signal generated by buffer 443.
  • a clock domain is defined by a set of one or more clock signals that have the same frequency and phase.
  • a clock domain is often named using the name of the clock signal that defines the clock domain (e.g., "the CLK clock domain” is a clock domain defined by the CLK clock signal).
  • Each memory component operates in its own clock domain, which may be unique for each memory component.
  • the phase of the clock domain for each memory component can change relative to the phase of CLK in the controller; hence, the term "dynamic" mesochronous memory system.
  • the controller 405 has multiple clock domains defined by the CLK, CLKD[0,j] and CLKQ[0,j] clock signals.
  • CLK on bus 425 is considered a principle clock domain
  • CLKDfOj] and CLKQ[0j] are derived clock domains in that they are based on CLK by way of phase adjustment logic 480 and 455, respectively.
  • CLKD[0 j] and CLKQ[0j] are used for transmitting and receiving, respectively.
  • phase offsets to and tQ y of CLKD[0j] and CLKQ[0j] are dependent upon the lengths of the wires that connect the components, parasitic capacitance along these wires, and upon the changing delay t ⁇ y of the memory component clock buffer 443. These phase offsets may have a range that is greater than the cycle time of CLK. In some cases the range may be many times greater.
  • the domain crossing logic 475 accommodates these ranges of phase offsets and handles the phase offset range in hardware during calibration process updates.
  • Each rank [i] in the system will have its own set of phase adjustment values to y and tQ y that are loaded prior to transferring data to or from the rank. Each set of values are kept updated by the calibration process involving logic 485, 490.
  • the dynamic mesochronous system 400 has similar timing benefits to that of the static mesochronous system 300. For example, in system 400 the timing budget for transmitting and receiving a bit does not include the propagation delay tp R op y between the memory component and controller. Instead, the round- trip propagation delay 2*tp R o PlJ is accounted for in the clock domain crossing logic 475. This round-trip propagation delay increases the latency of a read operation, but does not impact the bandwidth of read and write transfers. The transfers occur at a bandwidth that is determined by the circuits of the memory controller and memory components, and not by the length of the signal wires that connect the memory controller and memory components.
  • the clock recovery circuit 335 of the memory 310 is replaced by a simple clock buffer 443 in system 400.
  • This change in system 400 results in a number of benefits.
  • circuit area on the memory component is reduced.
  • the design complexity of the memory component is substantially reduced, particularly as the clock recovery circuit 335 often is a complex part of the memory design.
  • the standby power of the clock recovery circuit is eliminated.
  • Standby power refers to the power dissipated when there are no read or write transfers taking place.
  • a PLL or DLL must dissipate some minimum amount of power to keep the output clock in phase with the input clock. In practice, this standby power requirement has made memory components with a DLL or PLL difficult to use in portable applications, where standby power is important.
  • System 400 introduces a memory system topology based on dynamic mesochronous clocking.
  • a number of variations in system topology, element composition, and memory component organization are possible, and some preferred and representative variations will be described. Individual variations may, in general, be combined with any of the others to form composite variations. Any of the alternate systems formed from the composite variations can benefit from the method of dynamic mesochronous clocking.
  • FIG. 7 shows a baseline memory system topology 700. Topology 700 is similar to the topology of system 400, but with some modifications as described below.
  • the memory controller 705 is shown in FIG. 7.
  • a single memory port 710, (labeled Port[l]) is shown, but the controller 705 could have additional memory ports.
  • a controller has other external signals and buses that are not directly related to the memory system(s), which for clarity purposes are not shown in FIG. 7.
  • the port 710 of the controller consists of two types of buses: the X bus and the Y bus.
  • the X and Y buses are composed of wires for carrying different sets of signals and have different routing paths through the memory system.
  • the X bus is depicted as comprising NS X buses shown as 715, 716, 717 and 718.
  • System 700 also depicts the Y bus comprising the NM Y buses, shown as buses 720, 721.
  • the NS X buses usually carries data signals and the NM Y buses usually carries address signals, but other signal information configurations are possible.
  • NM and NS are integers having values greater than zero.
  • Each of the NS X buses connect to the memory components along one "slice"
  • each of the NS X buses connect to one of the NS slices of each of the NM memory modules 740, 750.
  • each Y bus connecting memory components on one "module" (set of ranks).
  • the memory components of the first rank e.g., the leftmost rank shown in FIG. 7
  • the NM memory modules can consist of NR ranks (rows) of memory components.
  • NM and NR are integers having values greater than zero.
  • the memory system may consist of NR ranks of memory components attached to the same printed circuit board (also called a wiring board) that holds the memory controller 705.
  • Each of the NM modules 740, 750 have a dedicated Y bus, i.e., one of the NM Y buses 720, 721, but typically most or all of the signals on a Y bus are duplicates of the signals on other Y buses. Some signals carried on the NM Y buses may be used to perform module or rank selection. These selection signals are generally not duplicated, but are dedicated to a particular module or rank.
  • each of the NR ranks on a module connects to the module's dedicated Y bus.
  • most or all of the signals composing the Y bus are connected to the memory components of each rank.
  • Some signals on the NR ranks are used to perform rank selection.
  • the rank selections signals are generally not duplicated, and connect to only the memory component(s) of one rank.
  • the Y bus signals on a module may pass through splitting elements (labeled "S" in the figures) in order to make duplicate copies of signals.
  • the signals may connect sequentially to the memory components of one or more of the NR ranks (the figure shows sequential connection to two ranks).
  • a module 740, 750 may contain as few as one or two ranks, in which case no splitting element is needed on the module at all. Sample splitting element variations are shown in FIG. 10(a)-(d).
  • the Y bus signals connect to termination elements 760
  • Y bus signals are typically unidirectional, so termination elements are shown only at the memory end of the signals. If any Y bus signals were bi-directional, or if any Y bus signals drove information from memory to controller, then termination elements would be required on the controller end of the Y buses.
  • Sample bus termination element variations 760 are shown in FIG. 1 l(a)-(d).
  • the X bus signals can pass through a splitting element on the same printed circuit board that holds the controller 705.
  • the X bus signals connect sequentially to the memory components of each slice and end at a termination element such as on bus 765. Alternatively, if the system only contains a single memory module, no splitting elements would be needed for the X bus signals.
  • the X bus signals are typically bi-directional, so termination elements are needed at the controller end of each signal (e.g., where a termination element 762 connects to bus 718) as well as at the far end of the memory array. For any unidirectional X bus, termination elements would be required only at the end of the X bus that is opposite from the component that drives the signal.
  • all of the signals on the X bus are transmitted (or received) by all the memory components of each slice.
  • FIG. 8A shows a variation on the Y bus topology in which the controller 805 drives a single Y bus 810 to all the modules.
  • a splitting element 812 is used to tap off a duplicate Y bus signal bus for each memory module, such as modules 820, 830.
  • X bus splitters 816 sequentially connect the slices of each module.
  • the use of external termination elements 818 is desirable when any X bus signals (on X buses Xi to X NS , not separately shown) are bi-directional.
  • Internal i.e., internal to the modules 820, 822) splitter 822 and termination elements 824 are still used for each slice of each of the NM modules having NR ranks of memory components 828.
  • the controller drives fewer buses, but each Y bus signal will pass through a larger number of splitting elements. This increase in the number of splitting elements may impact signal integrity or propagation delay.
  • FIG. 8B shows a second variation on the Y bus topology in which the controller 855 drives the Y buses on the same group of physical wires 856, 858 as the X buses to the modules.
  • the Y buses run parallel to the X buses in this embodiment.
  • module and rank selection may be performed by comparing X or Y bus signals to an internal storage circuit (which may be located in each memory component) that contains the module or rank identification information.
  • external termination elements 860 and external splitter elements 862 may be used, but only internal termination elements 864 are needed for each slice of the NM modules 870 having NR ranks of memory components 875.
  • System 900 in FIG. 9 shows a variation on the X bus topology of system 700 in which each X bus signal (e.g., on X bus 925) passes through one set of pins on each module and exits through a different set of pins.
  • Controller 905 transmits X bus signals to memory modules 910, 920, and NM Y buses 930, 940 connect to each of the NM modules.
  • No external splitting element is needed on the main printed circuit board, and fewer internal termination elements 935 are needed on the modules. While extra pins are needed on each module, there is a reduction in the number of splitting and termination elements.
  • FIGS. 10A - 10D show some of the possible splitting element variations.
  • splitter element variations are shown where a single signal is split into two signals.
  • a splitter 1000 converts a single signal labeled "1" into two signals labeled "2", by the use of a clocked 1010 or unclocked 1020 buffer.
  • the signals are bi-directional, and signals can be split or combined.
  • a single signal can pass through an enabled switch or buffer of the splitter 1030 to form two signals and any port can receive a signal component from any other port.
  • Splitter element 1030 is a bi-directional buffer consisting of either a pass-through, non-restoring active switch 1035 with an enable control, or a pair of restoring buffers 1042, 1044 with a pair of enable controls in element 1040. Note that element 1030 could also be used for unidirectional signals.
  • Splitter element 1050 (FIG. 10C) is a unidirectional resistive device, implemented from either active or passive components. Splitter 1055 permits an attenuated signal to be passed to one of the output ports (labeled "2"), with the resistive value, R DAMP , chosen to limit the impedance mismatching that occurs.
  • Element 1060 (FIG. 10D) is a bi-directional power-splitting device, allowing the impedance to be closely matched for a signal originating on any of the three ports.
  • the resistive devices, Z 0 in element 1065 or Z 0 /3 in element 1070, could be implemented from passive or active devices.
  • FIGS. 10C and 10D are similar to FIG. 10B in that a signal input at any port can yield signals at the remaining two ports.
  • Splitter element 1050 (FIG.
  • splitter element 10C utilizes a wire stub with series damping
  • splitter element 1060 utilizes an impedance- matching splitter.
  • splitter element 1030 FIG. 10B
  • the splitter elements 1050 and 1060 have bi-directional ports so that any port can be an input port and any port can receive a signal component from any other port.
  • FIGS. 11 A to 1 ID show some of the possible termination element variations.
  • Element 1100 (FIG. 11 A) is a passive, external termination element.
  • the element may be implemented, for example, as a single device connected to a single termination voltage, NT ER M, or as two (or more) devices R t and R 2 in element 1108 connected to two (or more) termination voltages, such as V DD and circuit ground.
  • the termination element 1100 resides on a memory module or on a main printed circuit board.
  • Termination element 1120 shown in FIG. 1 IB, is an active, external termination element.
  • Termination element 1160 shown in FIG. 11C, is a passive, internal termination element.
  • Termination element 1160 resides inside a memory component or inside the memory controller, both shown as component 1165.
  • Termination element 1170 shown in FIG. 1 ID, is an active, internal termination element.
  • the FIG. 1 ID variation is similar to termination element 1120 except that element 1170 resides inside a memory component or inside the memory controller, both shown as component 1175.
  • FIG. 12 shows a baseline system configuration 1200 for the memory component "M" that is shown in the system topology diagrams, such as element 730 in system 700.
  • An X bus 1205 and a Y bus 1210 connect to memory component M.
  • the X and Y buses correspond to the X and Y buses shown in topology FIGs. 7, 8A, 8B and 9.
  • the memory component M contains interface logic for receiving and transmitting the signals carried by the X and Y buses.
  • the memory component M also contains a memory core 1215 that consists of 2 ⁇ b independent banks.
  • Nb is the number of bank address bits and is an integer greater than or equal to zero.
  • the banks are capable of performing operations independent of one another, as long as the operations do not have resource conflicts, such as the simultaneous use of shared interface signals.
  • the Y Bus 1210 carries two signal sets: the row signal set 1220-1228 and the column signal set 1230-1238. Each group contains a timing signal (A RCLK 1220 and A CCLK. 1230), an enable signal (A REN 1 22 and AQ EN 1232), an operation code signal set (OP R 1224 and OPc 1234), a bank address signal set (A BR 1226 and A CR 1236), and a row or column address signal set (A R 1228 and Ac 1238).
  • the number of signals carried by the signal sets are represented with a "/P", such as Nopr/P, Nopc/P, Nb/P, Nb/P, Nr/P, and Nc/P, respectively.
  • the factor "P” is a serialization or multiplexing factor, indicating how many bits of a field are received serially on each signal.
  • the demultiplexers 1240 and 1245 convert serial bits into parallel form.
  • the P factors for Nopr, Nope, Nr, Nc, and P may be integer values greater than zero. For example, there might be eight column address bits transmitted as two signals for the column address signal set, meaning that four column address bits are received sequentially on each signal. The P factor for this example would be four.
  • Memory component 1200 i.e., the baseline memory component
  • P is an integer greater than zero.
  • the signal sets could be multiplexed onto the same wires.
  • the operation codes could be used to indicate which signal set is being received.
  • the bank address signal sets could share one set of wires
  • the row and column address signal sets could share a second set of wires
  • the operation code signal sets could share a third set of wires.
  • the six signal sets are received by circuitry in the memory component 1200 that uses the timing signals (A RCLK and A CCLK ) as a timing reference for when a bit is present on a signal.
  • timing signals for example, could be a periodic clock or they could be a non-periodic strobe.
  • An event i.e., a rising or falling edge
  • the six signal sets share a single timing signal.
  • the enable signals 1222 and 1232 indicate when the memory system 1200 needs to receive information on the associated signal sets. For example, an enable signal may be used to pass or block the timing signals entering the memory component, depending on the value of the enable signal, or an enable signal might cause the operation code signal set to be interpreted as no-operation, or the enable signal may be used by logic circuitry to prevent information from being received when the value of the enable signal indicates that such information is not for receipt of the memory component 1200.
  • the enable signals can be used to select a first group of memory components and to deselect a second group, so that an operation will be performed by only the first group. For example, the enable signals can be used for rank selection or deselection.
  • the enable signals can also be used to manage the power dissipation of a memory component in system 1200 by managing power state transitions.
  • the enable signals for the row and column signal groups could be shared. Further, each enable signal shown could be decoded or formed from two or more signals to facilitate the task of component selection and power management.
  • the de-multiplexed row operation code, row bank address, and row address are decoded by decoders 1250, 1252 and 1254, and one of the 2 Nb independent banks is selected for a row operation.
  • a row operation may include sense or precharge operations.
  • sense operation one of the 2 Nr rows contained in a bank selected by outputs of the decoders is coupled to a column sense amplifier for the bank.
  • precharge operation a selected bank and its column sense amplifier are returned to a precharged state, ready for another sense operation.
  • the de-multiplexed column operation code, column bank address, and column address are decoded via decoders 1256, 1258 and 1260, and one of the 2 Nb independent banks is selected for a column operation such as read or write.
  • a column operation may only be performed upon a bank that has been sensed (not precharged).
  • For a read operation one of the 2 Nc columns (with Ndq bits) contained in a column sense amplifier portion of the selected bank is read and transmitted on the Q signal set 1290 / 1268.
  • Ndq bits received on the D signal set (i.e., signals 1270-76) is written into one of the 2 Nc columns contained in the column sense amplifier portion of the selected bank, using the Nm mask bits on sub-bus 1292 to control which bits are written and which are left unchanged.
  • the X bus 1205 carries two sets of signals: the read signal set and the write signal set.
  • the read signals include signals 1262-1268
  • the write signals include signals 1270-1276.
  • Each group contains a timing signal (Q CLK 1264 and D CLK 1274), an enable signal (Q EN 1262 and D EN 1276), a mark or mask signal set (Q M 1266 and D M 1270, respectively), and a data signal set (Q 1268 and D 1272).
  • the number of signals in the signal sets are represented with a "/N", such as Ndq/N, Nm/N, and Ndq/N, respectively.
  • the factor “N” is a serialization or multiplexing factor, indicating how many bits of a field are received or transmitted serially on each signal.
  • the “mux” and “demux” blocks converts the bits from parallel-to-serial and serial-to-parallel form, respectively.
  • the parameters Ndqr, Nm, and N may contain integer values greater than zero.
  • This baseline memory system 1200 assumes that the read and write data signal sets have the same number of signals and use the same multiplexing factors. This might not be true in other memory components, and therefore the number of signals in each signal set may vary.
  • the read and write data signal sets are multiplexed onto the same wires.
  • the mark signal set provides a timing mark through mark logic 1286 to indicate the presence of read data.
  • the mark signal set might have the same timing as the read data signal set, or it might be different.
  • the mask signal set 1292 indicates whether a group of write data signals should be written or not written as determined by mask logic 1288.
  • This baseline memory system assumes that the mark and mask signal sets have the same number of signals and use the same multiplexing factors. This assumption might not hold true in other embodiments. It is also possible that, in other embodiments, the mark and mask data signal sets could be multiplexed onto the same wires. In other embodiments, one or both of the mark and mask signal sets might not be implemented.
  • the data signal sets 1290, 1294 are received by circuitry 1284, 1278 that uses the timing signals (Q CLK and D CLK ) as a timing reference for when a bit is present on a signal.
  • These timing signals could be, for example, a periodic clock, or they could be a non- periodic strobe or any other timing reference.
  • An event e.g., a rising or falling edge of a timing signal
  • each event could signify the presence of two or more sequential bits (with clock recovery circuitry creating two or more timing events from each received event). It is possible that the data signal sets could share a single timing signal. It is also possible that the X and Y buses could share a single timing signal.
  • the enable signals Q EN and D EN 1262 and 1276 indicate when the memory component needs to receive information on the associated signal sets. For example, an enable signal might pass or block the timing signals entering the memory component, or it may be used to prevent information from being transmitted or received.
  • the enable signals can be used for slice selection or for managing power state transitions.
  • FIG. 13 shows the overview topology of an alternate preferred dynamic mesochronous memory system 1300.
  • System 1300 is topologically similar to system 400 with respect to the interconnection of components by buses. For example, memory components would still form a two dimensional array, with ranks (rows) indexed by the variable "i" and slices (columns) indexed by the variable "j", following the same notation as before.
  • each rank of memory components is attached to an RQ bus 1315 and a CLK bus 1320.
  • RQ bus 1315 is unidirectional and carries address and control information from the controller to the memory components.
  • CLK bus 1320 is unidirectional and carries timing information from the controller 1305 to the memory components 1310 so that information transfers on the other two signals sets can be coordinated.
  • DQ bus 1325 is bi-directional, and carries data information from the controller 1305 to a memory component 1310 during write operations, and carries data information from a memory component to the controller during read operation.
  • This description will also refer to the D and Q signal sets separately to include signal sets 1327 and 1329, respectively, even though the same physical wires are shared.
  • the controller uses an internal clock signal CLK1 1330 for its internal operations.
  • CLK1 signal is also used as a reference to drive the CLK[i,0] signal on bus 1320,
  • the frequency of the clock signals such as CLK4 and CLK[i,0] is an integer multiple of the frequency of CLK1 by way of frequency multiplier 1335 (which is a 4X frequency multiplier in a preferred embodiment). This multiplication is done so that the frequency of CLK[i,0] matches the frequency of the clock used to transmit and receive write data D and read data Q.
  • the clock signal CLKl is used to transmit signals on the RQ[i,0] bus 1315.
  • frequency multiplier 1335 is a 4X multiplier
  • the rate at which bits are transferred on the RQ bus is one fourth the rate at which bits are transferred on the D and Q signal sets. This transfer rate differential is consistent with the fact that a relatively small amount of address and control information is needed for transferring a relatively large block of read or write data. Other transfer rate differentials between RQ and DQ are possible.
  • the CLK[i,j] signal 1340 that is received by memory component [i,j] 1310 will have a phase that is offset from CLK[i,0].
  • the CLK[i,j] signal is received by a simple clock buffer 1345.
  • This buffer 1345 produces a buffered internal clock signal CLKB[i,j] on bus 1347 that is at a different phase than the CLK[i,j] signal.
  • This CLKB[ij] signal is used to transmit on signal set 1349 to the DQ bus 1325, to receive from the RQ and DQ buses, and to perform all other internal operations in the memory component.
  • phase adjustment logic 1365 and 1368 that delays CLKl by to y and t Qy , respectively, to form the CLKD[0j] and CLKQ[0,j] signals, respectively. Because of the multipliers 1335, CLKD[0,j] and CLKQ[0,j] are also four times the frequency of CLKl .
  • the values toy and tQy are functions of the propagation delay parameters t R opc K , pROPDy, and tpRO Qy. These propagation delay parameters are relatively insensitive to temperature and supply voltage changes. Values to and tQy are also a function of the delay t By of the memory component's clock buffer 1345 as well as other delays such as those associated with transmit and receive circuits. The clock buffer delay will change during system operation because it is relatively sensitive to temperature and supply voltage changes.
  • the programmable values t DlJ and tQ y that are generated during system initialization are dynamically updated during system operation, and a calibration process (using the calibration logic M CAL and C CAL ) is needed to keep the values updated.
  • System 1300 has a clock buffer 1345 (which can have variable delay during system operation), rather than a PLL/DLL clock recovery circuit on the memory component ;
  • System 1300 has calibration logic 1350 and 1355 to the memory component and controller, respectively, to support a calibration process
  • System 1300 has enhanced clock domain crossing logic 1380 to improve the efficiency of the calibration process
  • Signal transmission on the RQ bus 1315 may be at a lower frequency than the CLK and DQ buses (one fourth the rate of the CLKl signal in this example);
  • System 1300 includes sampling logic 1360 in the memory component for the RQ bus.
  • FIG. 14A shows the timing of a read transfer for system 1300.
  • the controller 1305 uses an internal clock signal CLKl, 1330, for its internal operations. Rising edge 0, 1410, of the CLKl signal 14(a) samples the signal on the internal RQc bus 1385 with a register and causes the register to drive the sampled signal value onto the RQ[i,0] bus 1315 after the delay .
  • R Q This delay is the output valid delay (the clock-to- output delay) of the register and driver that samples RQ and drives it out of the controller.
  • the address and control information associated with the read command is denoted by the label "READ" in the figure.
  • the RQ[i,0] signals on the RQ bus 1315 propagate to memory component [i,j] after a propagation delay tp R ⁇ p,RQy to become the RQ[ij] signals, where they are received by the memory component.
  • the setup time of the signal on bus RQ[i,j] is ts ,RQ , measured to the rising edge 1455 of CLKB[i,j] that causes sampling to be performed by the sampling logic 1360.
  • the CLKl signal is frequency multiplied, here by four, to give the CLK[i,0] signal 14(d), which is delayed by ty,c LK with respect to CLKl . This delay is the output valid delay of the driver that drives CLK[i,0].
  • the CLK[i,0] signal propagates to memory component [i,j] after a propagation delay tp R op,cL K ⁇ j to become signal CLK[i,j] 14(e), where it is received by the memory component 1310 and buffered by buffer 1345 to become the internal clock signal CLKB[i,j] after a delay t ⁇ y.
  • This adjustment is accomplished by selecting one of the four CLKB[i,j] rising edges to receive the RQ[i,j] bus.
  • the sampling edge is denoted by the heavy arrow at 1455-1458 on one of every four of the rising edges of CLKB[ij] 14(f).
  • this sampling edge is also used for internal operations in the memory component.
  • all four CLKB[i,j] rising edges are used to receive data from the D[i j] signal set and to transmit data onto the Q[i,j] signal set.
  • the bit time in this example is equal to the CLKB cycle time (which is also the CLK4 cycle time since these two clock signals are frequency locked).
  • ts AM PL Ey accounts for the delay due to the need to choose one of the four CLKB[i,j] rising edges for sampling.
  • ts AM PL E y is measured or denoted in integral units of tc L K4CYCLE, the cycle time of CLKB[i j]. Because CLKB[i j] is periodic, tsAMP Ey may be positive or negative, and this clock accounts for the time needed to make equation (1) correct:
  • the internal read access tcAC.iNT is started.
  • this internal read access requires a total of 3*tcL iCYCLE (which is equivalent 12*tcLK4 C YCL ⁇ )-
  • An external read access delay tcAC,Ex ⁇ may also be defined. This delay is the time from the CLK[i,j] clock signal rising edge which effectively samples the RQ[i j] bus to the time that the first bit becomes valid on the Q[i,j] signal set:
  • a second external read access delay tcAC, ⁇ x ⁇ 2 may also be defined. The delay is from the time a signal on the RQ[ij] bus is set up to the time the first bit becomes valid on the Q[i j] signal set:
  • tcACEXT2 ts,RQ + tcAC.INT + ty,Q
  • the external read access delay (tcA C , ⁇ x ⁇ ) is a useful delay parameter because it includes all delay terms contributed by the memory component 1310, but none contributed by the external interconnections or by the controller. Equation (2) includes two terms (t ⁇ y and t v , Q ) that will change continuously due to, for example, temperature and supply voltage variations during system operation. In contrast, the internal read access delay term tcAC,iN ⁇ , shown graphically in 14(c), will remain constant during system operation. The term tsAMPLEy will change in increments of tcL 4CYCLE because of sampling logic changes that compensate coarsely for some temperature and supply voltage variations during system operation. Likewise, the second external access delay (tc AC . ⁇ xrc) includes the terms ts, R Q and ty , Q that change during system operation.
  • the external read access delay tc AC .EXT (or tc AC . E rc) of the memory component will change during system operation.
  • This change (plus any changes contributed by the external interconnections or by the controller) can be compensated for using, for example, an adjustable timing value t PHASE R j i the controller.
  • an adjustable timing value t PHASE R j i the controller Due to the ability of the present invention to "calibrate out" large variations in the external access time of a memory component over time, the difference in external access time between two similar memory read operations (one at a first time and another at a later time when the temperature and/or voltage of the memory component has changed), or two similar memory write operations, may exceed a half-symbol time interval.
  • Two memory operations are "similar” for purposes of this discussion if they have the same internal access time, or if they have very similar internal access times (e.g., which differ by less than a multiplicative factor of 1.1). For instance, two read access operations that are both "page hits" will typically be similar memory read operations having the same internal access time, while a read access that is a page hit and another read access that is a page miss will typically have very different internal access times and thus would not be similar memory operations. Two memory requests (whether read requests or write requests) are "similar” for purposes of this discussion if the resulting memory operations have the same or similar internal access times. Also, as noted earlier in this document, the "symbol time interval" is the duration of an average symbol on the DQ bus as measured at the memory interface, and is sometimes called a "bit time interval.”
  • the timing compensation capabilities of the calibration circuitry are sufficiently large that the difference in external read access time between two similar memory read operations, or two similar memory write operations, can exceed a full symbol time interval.
  • the four bits of read data Qc[3:0] in 14(g) from the memory core are sampled, using the sampling edge of CLKB[i,j].
  • the four bits are driven from the memory component serially, after the delay t ⁇ ,Q .
  • This delay is the output valid delay (the clock-to-output delay) of the register and driver that samples Qc[3:0] and drives it out of the memory component onto the Q[i j] signal set 1349.
  • the Q[i,j] signal of 14(h) propagates to the controller after a propagation delay p ROP .
  • Q to become signal Q[0,j], where it is received by the controller.
  • the setup time of signal Q[0,j] is ts ,Q , measured to the rising edge of internal clock signal CLKQ[0j] as shown in 14(i).
  • the four serial bits are converted to parallel form after the delay ts to p ,Q (this delay is equivalent to l*tcL ⁇ c ⁇ cLE or 4*tcL 4CYCL ⁇ )-
  • the internal clock CLKQ[0,j] is delayed from CLKl by ( SETR + tpHASERj).
  • t Q FFSETR is a fixed offset of 4*t C L ⁇ c ⁇ cLE i this example.
  • tp HASERj is an adjustable delay for each slice [j]. The delay is updated and adjusted through a calibration process so that it remains centered on the data window of the bits being received on the Q[0,j] bus. The details of this calibration process will be described in a later section.
  • the value of tp HA S E R j shown at 14(k) is preferably chosen to satisfy equation (3):
  • tp HASERj will be adjusted to compensate for these variations.
  • tp HASERj can be adjusted through a range of IRANGER-
  • the value of t RA N GER has a value of 4*1 ;LKICYCLE in this embodiment.
  • the range of tRANGER is chosen to accommodate p HASERj regardless of whether the terms in Eqn. (3) assume their minimum or maximum values.
  • each slice of memory components can have a different to FF s ⁇ R + p HA S ERj value within a rank of memory components, it becomes necessary for the controller to add some variable delay to ensure that the read data Qc[3:0] becomes available at a fixed time.
  • the fixed time that is chosen in this example is toF F S ETR + tRANGER, and has a value of 8*tc LK ic YCLE - Stated differently, read data from the read command sampled on CLKl edge 0 is available for all slices on CLKl edge 8.
  • the compensating delays are inserted by the controller's domain crossing logic 1380.
  • the delays are ts iPR j + I EVE RJ- ts ⁇ iPRj is the term that inserts a delay that is a fraction of t ⁇ ic YCLE - ⁇ EVELRJ is the term that inserts a delay that is an integer multiple of tc LK i CYCLE of signal 14(a), where the integer multiple is equal to or greater than zero.
  • the propagation delay tp ROP .Qy for data signals and the propagation delay t PR o Pj c LK i j for clock signals remain substantially constant, even with changes in temperature and voltage levels.
  • differences in the external access time of memory components in the same rank are almost completely the result of differences in the internal operating characteristics of the memory components, which in turn are due to manufacturing differences as well as differences in temperature and voltage.
  • the external access time of all the memory components in a single rank would have to be substantially the same, within a tolerance of much less than half a symbol time interval, in order to avoid data transmission errors.
  • the calibration circuitry of the present invention enables the use of memory components in the same rank of a system that have external access times, for similar memory requests for similar memory operations, that differ by more than half of a symbol time interval.
  • the calibration circuitry of the present invention can handle such large differences in external access time because a respective access compensation time is separately determined for each memory component of the system. Further, because the compensation time value that is determined for each memory component has such a large range of possible values, external access time differences (for memory components in the same rank of the system) greater than a full symbol time interval can be easily compensated, and thus "calibrated out" of the system.
  • FIG. 14B another way to distinguish synchronous and static mesochronous systems from dynamic mesochronous systems is to look at the alignment of the data bit window with respect to the clock signal at the pins of the component.
  • the clock signal 14(e) CLK[i,j] received at the memory component may be compared to the read data 14(h) Q[i j] output by the memory component.
  • the range of the relative phase of these signals (the drive offset time) will be essentially fixed.
  • the bit time for Q[i,j] starts at a point -90 degrees in the CLK[i,j] cycle and is equal to a CLK[i,j] cycle time.
  • phase offset delay offset
  • CLK[i j] edge that is associated with that bit time.
  • range of the relative phase of these signals can be expected to vary over a full bit time (plus or minus a one-half of a symbol time interval or plus or minus 180 degrees).
  • the phase difference could be measured at different times during system operation.
  • the relative phase values stay within a narrow range (plus or minus 20 degrees, in this case) around the nominal phase offset of -90 degrees.
  • the relative phase values can vary over the maximum possible range (plus 90 or minus 270 degrees in this example) around the nominal phase offset of -90 degrees. This provides another way, then, to distinguish the types of systems.
  • the system is a synchronous or static mesochronous system. If relative phase of the clock signal and the data signal varies over a range that exceeds plus or minus 90 degrees (plus or minus one-quarter of a symbol time interval), then the system is a dynamic mesochronous system.
  • This means of discriminating static mesochronous and dynamic mesochronous systems can be extended to systems in which there are two or more bit times per clock cycle.
  • the relative phase is measured between a clock event (the rising edge in this example) and the beginning of bit time that straddles or is otherwise associated with the clock event. 360 degrees of phase are equal to the bit time interval (the shorter of the bit time and clock cycle intervals).
  • the relative phase of the rising edge and the start of the associated bit time remain within a range of plus or minus 90 degrees from the nominal phase offset.
  • the relative phase of the clock event and the start of the associated bit time can drift outside this range of plus or minus 90 degrees from the nominal phase offset. Note that since there are a set of two or more bit times associated with each clock event, it is necessary to consistently use the same bit time from each set when evaluating the phase shift during system operation.
  • the relative phase is measured between a clock event (e.g., the rising edge of the clock signal) and the beginning of the bit time that straddles or is otherwise associated with the clock event. 360 degrees of phase are equal to the clock cycle interval (the shorter of the bit time and clock cycle intervals).
  • a clock event e.g., the rising edge of the clock signal
  • 360 degrees of phase are equal to the clock cycle interval (the shorter of the bit time and clock cycle intervals).
  • the relative phase of the clock event and the start of the associated bit time remain within a range of plus or minus 90 degrees from the nominal phase offset.
  • the relative phase of the clock event and the start of the associated bit time can drift outside this range of plus or minus 90 degrees from the nominal phase offset. Note that there are a set of two or more clock cycles associated with each bit time, and therefore it is necessary to consistently use the same clock event from each set when evaluating the phase shift during system operation.
  • FIG. 15 shows the timing of a write transfer for system 1300.
  • the controller 1305 uses an internal clock signal CLKl for its internal operations. Rising edge 0, 1510 of the CLKl signal in 15(a) samples the signal on internal RQc bus with a register and causes the register to drive the sampled signal value onto the RQ[i,0] bus after the delay ty ,R Q. This delay is the output valid delay (the clock-to-output delay) of the register and driver that samples RQc and drives it out of the controller.
  • the address and control information associated with the write command is denoted by the label "WRITE" in the figure.
  • the RQ[i,0] bus propagates to memory component [i,j] after a propagation delay tp RO P.
  • R Q 1530 to become the RQ[i,j] signal of 15(c), which is received by the memory component [ij].
  • the setup time of bus RQ[ij] is ts,RQ 1535, measured to the rising edge 1555 of CLKB[ij], shown in 15(f), that performs the sampling.
  • the CLKl signal is multiplied in frequency, here by four, to give the CLK[i,0] signal of 15(d), which is delayed by t ⁇ ,c LK 1540 relative to the CLKl signal. This delay is the output valid delay of the driver that drives CLK[i,0] out of the controller.
  • the CLK[i,0] signal propagates to memory component [i j] after a propagation delay I PRO ⁇ CLKIJ 1545 to become signal CLK[ij] of 15(e), where it is received by the memory component and buffered to become the internal clock signal CLKB[ij] after a delay t ⁇ y , 1550.
  • An external write access delay tcw D, ⁇ x ⁇ 1 75 may also be defined. This delay 1575 is the time from the CLK[i j] clock signal rising edge which effectively samples the signal on the RQ[ij] bus to the time that the first bit is set up on the D[ij] signal set:
  • a second external write access delay tcw D, ⁇ x ⁇ 2 (not shown) may be defined. This delay is from the time a signal on the RQ[i j] bus is set up to the time the first bit is set up on the D[i j] signal set:
  • Eqn. (5) is useful because it includes all delay terms contributed by the memory component, but none contributed by the external interconnections or by the controller.
  • Eqn. (5) includes two terms (t ⁇ y 1550 and ts , o 1578) that will change continuously due to temperature and supply voltage variations during system operation.
  • the terms tcw D ,iN T and ts to p,D 1 80 will remain constant during system operation.
  • the term tsAMP L ⁇ y 1585 will change in increments of tc L 4CYCL ⁇ because of sampling logic changes that compensate coarsely for some temperature and supply voltage variations during system operation.
  • the second external access delay (tcwD. ⁇ xrc) includes the terms ts,RQ and t Sj o that change during system operation.
  • EXT 1575 of the memory component will change during system operation. This change (plus any changes contributed by the external interconnections or by the controller) will be compensated with an adjustable timing value t P HAs ⁇ j in the controller.
  • the four bits of write data D M [3:0] in 15(g) are held in a register and are available for writing to the memory core after the delay tv.o-
  • This delay 1590 is the output valid delay (the clock-to- output delay) of the holding register.
  • the D[0 j] signals propagate to the memory component after a propagation delay pR OP .
  • the setup time of signal set D[ij] is ts sD 1578, measured to the rising edge of internal clock signal CLKB[ij], here measured to rising edge 1565.
  • This delay 1580 is the serial-to-parallel conversion delay (this is equivalent to l*tcL ⁇ c ⁇ cL ⁇ or 4*tcLK4CYCL ⁇ )-
  • the four bits of write data become valid a time tv ⁇ after the last of these four bits is sampled by the rising edge of internal clock CLKB[i j].
  • This delay 1590 is the output valid delay (the clock-to-output delay) of the register and on the controller.
  • the internal clock CLKD[0 j] of 150) is delayed from CLKl by (t 0 FFs ⁇ + t PH ASET j
  • IOFFSETT 1588 is a fixed offset of l*tcL ⁇ c ⁇ cL ⁇ - pHAs T j is an adjustable delay for each slice [j].
  • This adjustable delay is updated through a calibration process involving calibration logic 1350 and 1355 (FIG. 13) that keeps the write data bits on the bus carrying the D[i j] signal set centered with respect to the CLKB[i j] clock signal that is sampling them in the memory component [i j]. The details of this calibration process will be described later.
  • the value of tpHAs ⁇ T j shown in 15(k), is preferably chosen to make the following equation correct:
  • tv,CLK + tpROP,CLKy + t ⁇ y + tsAMPL ⁇ y + tcWD.INT oFFS ⁇ TT + HAS ⁇ Tj + vD + tpROP,Dy + ts,D+ tstoP.D (6)
  • tp HASETj can be adjusted through a range of tRAN G ⁇ T 1586.
  • tRANG ⁇ T has a value of 4*t C L ⁇ c ⁇ cL ⁇ • This range is chosen to accommodate tpHAs ⁇ , regardless of whether the terms in the above equation assume their minimum or maximum values.
  • Each slice of memory component can have a different toFFs ⁇ + tpHAs ⁇ i j value within a rank of memory components. However, each memory component will be presented with write data at its core at the appropriate time (I CWD . INT after the CLKB[i j] clock edge that samples the RQ[ij] bus).
  • the tp HASE T j delay 1592 is inserted by the controller's domain crossing logic 1380.
  • Other delays inserted include ts ⁇ . ⁇ p ⁇ j + t EVE T j - s ⁇ p ⁇ 1595 is a delay that is a fraction of tcLKiCYCLE • t L ⁇ vELTj 1598 is a delay that is an integer multiple of tcu ⁇ cvcLE of the signal in 15(a).
  • FIG. 16 shows the logic for the memory component 1600 at position [i j] in system
  • the RQ[ij] bus 1604 has N R Q signals, where N is an integer greater than zero, and the other two buses have one signal each.
  • memory component 1600 is configured to connect to the controller with one DQ wire per slice.
  • Other embodiments could connect the memory component to the controller with more than one DQ[i j] signal by a simple extension of the methods described for system 1300.
  • Memory component 1600 has three internal logic blocks forming the memory interface: Ml, M2, and M3. There is a memory core (block M5) that contains storage cells (i.e., the main memory array subcomponent of the memory component). There is also a set of registers and multiplexing logic (block M4) that form the calibration logic (also called M CAL earlier) for the memory component 1600.
  • M5 memory core
  • block M4 set of registers and multiplexing logic
  • Block Ml receives the CLK[ij] and RQ[ij] buses 1602 and 1604, respectively.
  • Block Ml produces a buffered clock CLKB[i j] that is used throughout memory component 1600.
  • Block Ml also produces a Load signal on bus 1608 that indicates which CLKB[i j] signal edges are used for internal operations.
  • a Commands bus 1610 carries command signals that indicate which memory command (READ, WRITE, WRPATO, WRPAT1, RDPATO, RDPAT1, etc.), if any, is being executed.
  • Block M2 transmits read data on the DQ[ij] bus 1612.
  • Block M2 performs a parallel to serial conversion on data bits received via the bus QM[3:0] 1614 from Block M4.
  • Block M2 also uses the buffered clock CLKB[i j] and Load signals.
  • Block M3 receives write data on the DQ[ij] 1612 bus.
  • Block M2 performs a serial to parallel conversion and outputs the resulting bits on bus D M [3:0] 1620.
  • Block M2 also uses the buffered clock CLKBfij] on bus 1606 and Load signals on bus 1608.
  • the calibration logic M4 consists of two registers PATO and PATl 1630 and 1635, respectively, which can be loaded with write data on bus D M [3:0] 1620.
  • the loading of the write data occurs when the WRPATO or WRPAT1 commands are asserted on the Commands bus 1610, causing the C2 or CI load signals on buses 1640 and 1645, respectively, to be asserted.
  • the calibration logic M4 is also able output the contents of the two registers PATO and PATl onto the bus Q M [3:0] 1614 instead of the read data Q MO [3:0] 1650 from the memory core, block M5.
  • the contents of the registers PATO and PATl are output onto the bus Q M [3:0] 1614 when read commands RDPATO and RDPATl, respectively, are received by the memory component via the RQ bus.
  • These read commands cause the C4 select signal 1655 to be asserted and the C3 signal 1660 to be deasserted or asserted, respectively, so as to route the data from the PATO and PATl registers to the Q M [3:0] bus 1614.
  • the two "pattern" registers 1630 and 1635 assume specific values (i.e., are automatically initialized) when the memory component 1600 is first powered up.
  • the pattern registers are initialized to a predefined value (e.g., "0 1 0 0") by circuitry that detects the ramping-up of the supply voltage.
  • the register initialization circuits is responsive to a RESET command on the command bus 1610 or to a sideband signal that causes the memory component 1600 to reset to a known state (this signal is not shown). Initialing the pattern registers 1630, 1635 to a known value is important for correct initial execution of the calibration process. These initial values could be replaced by other values later.
  • FIG. 17 shows the logic for block Ml of the memory component 1600 at position M[ij] in system 1300 for producing buffered clock signal CLKB[i j] on bus 1606, Load signal on bus 1608/1715 and Commands signals on bus 1610. More generally, the logic diagram in FIG. 17 and the timing diagram in FIG. 18 show how the calibration apparatus of block Ml is configured to determine the suitability of a plurality of timing events (i.e., each of the "l"s on the RQ[i j][b] signal after a CALSET command is received on the
  • RQ[ij] signal RQ[ij] signal
  • RQ[ij] signal RQ[ij] signal
  • similar calibration circuitry to that used in Ml could be provided to determine the suitability of a plurality of timing events for use as a driving point for driving symbols onto a signal, and to select, based on the suitability determination, one of the plurality of timing signals for use as the driving point.
  • each memory component operates independently of the calibration apparatus in block Ml of each other memory component in the memory system.
  • each memory component will independently select the best (i.e., most suitable) timing event for sampling the RQ[ij] signal.
  • two memory components in the same rank of a memory array may select different timing events at which to sample the RQ[i j] signal.
  • the same independence of the timing event selection would also apply to systems in which calibration logic is used to select the most suitable timing event (e.g., clock edge) for use as a driving point for driving symbols onto a signal.
  • System 1700 receives the CLK[ij] and RQ[ij] buses 1602 and 1604, respectively.
  • the buffered clock CLKB[i j] signals produced by buffer 1710 are used by the rest of the memory component.
  • the register 1712 produces a Load signal on bus 1715/1608 which indicates which edges of CLKB[i j] are to be used for internal operations.
  • a Commands bus 1610 carries command signals that indicate which memory command (READ, WRITE, etc.) is being executed.
  • the clock signal CLK[i j] is buffered to produce a buffered CLKB[i j] signal that clocks a set of register bits, here six bits, which produce the signal Load on buses 1608 and 1715.
  • the six register bits are called Load, CalState[l :0], CalFrm[l :0] and CalEn.
  • the CalState[l :0] register 1717 counts through four states ⁇ 00,01,10,11 ⁇ .
  • the CalFrm[l:0] register 1720 contains a two bit value that is compared to CalState[l:0] bits in each cycle.
  • CALTRIG 1730 and CALSET 1735 are commands decoded from bus 1604 by decode logic 1722. The use of these two signals will be further described relative to the timing diagram for system 1700.
  • FIG. 18 shows the timing for block Ml of the memory component 1600.
  • signals denoted as (a), (b) and so on in FIG. 18 shall be denoted as signals 18(a), 18(b) and so on in the text of this document.
  • FIG. 18 shows the sequence needed to generate load signals and update the CalFrm[l:0] value, signal 18(k), to accommodate any timing shifts due to temperature and supply voltage changes during system operation. It should be noted that all the RQ signals shown in FIG. 18 are signals generated by the controller and sent to the memory component whose operations are depicted in FIG. 18.
  • the clock signal CLK[ij] (on bus 1602 in FIG. 16) is shown as waveform 18(a).
  • Clock signal CLK[i j] is buffered and delayed by t ⁇ y to produce CLKB[i j], waveform 18(b).
  • the rising edges of the CLKB[ij] signal are numbered to label the timing events.
  • the large black circles indicate the sampling point of signals by registers clocked by CLKB[ij].
  • the RQ[i j] bus 1604 carries the N RQ signals labeled RQ[ij][NRQ-l :0]. These signals are shown as waveform 18(c), along with signal RQ[ij][b] broken out individually below as waveform 18(d). Note that index “b” is within the range [N RQ -1 :0] for this example. Signals 18(c) and 18(d) are used to encode three commands in system 1700 when updating sequences: CALSET (calibration set), NOP (no operation), and CALTRIG (calibration trigger). The label "any" on these signals indicates any other command may be provided during the respective interval.
  • the update sequence begins with the CalState[l:0] register 1717 incrementing via incrementer 1740 through its four possible states.
  • the CalState signal is shown as signal 18(i), and the incremented signal is represented as waveform 18(j).
  • the CalFrm[l :0] register 1720 holds the value "00", and therefore the comparator 1742 finds a match during the cycles in which the value in the CalStatejT :0] register is "00".
  • the positive output of the comparator results in a "1" being stored in the Load register 1710 at the next positive going edge of the CLKB[ij] signal, at which time the value in the CalState[l:0] register becomes "01".
  • Signal 18(k) depicts the signal CalFrm stored in register 1720
  • signal 18(1) depicts the Load signal waveform.
  • the Load signal waveform 18(1) is equal to "1" in each clock cycle that follows a clock cycle in which the value in the CalState[l:0] register 1717 equals the value in the CalFrm[l:0] register 1720.
  • the RQ[ij][N RQ -l:0] bus 1604 is sampled on edge 1 (because the Load signal 18(1) is asserted during edge 1) and is decoded as the CALSET command, causing the CALSET signal 18(e) to be asserted.
  • Signal 18(e) is sampled by the CalEn register 1725 on edge 2, causing the CalEn signal 18(h) to be asserted after edge 2.
  • the RQ[i j][ N RQ -1 :0] bus is sampled again on edge 5, and is decoded as a NOP and ignored.
  • the RQ[i j][ N RQ -1 :0] bus is sampled again on edge 9, and is decoded as a CALTRIG command, which is ignored and treated the same as a NOP.
  • the RQ[ij][b] signal is asserted and sampled high on edges 9, 10, 11, and 12.
  • a set of three registers 1745, 1750, 1755 and an "AND" gate 1760 detect three high assertions in a row (of the RQ[ij][b] signal) and assert the CALTRIG signal 18(f) as indicated by arrow 1810.
  • Signal 18(f) causes the CalClr signal, 18(g), to be asserted.
  • the CalClr signal 18(g) is sampled by the CalEn register 1725 (indicated by arrow 1830), causing it to go low (i.e., be reset) after edge 12.
  • the CalClr signal 18(g) also enables the CalFrm[l:0] register to load the incremented value of the CalState[10] register (as indicated by arrow 1840), and to output its new value after edge 12.
  • This new value is "01", meaning that the Load signal on bus 1608 will now be asserted during the cycles in which the CalState[l :0] register 1717 is "10".
  • the sampling point selected by the Load register 1765 has shifted right by one CLKB[i j] cycle.
  • the RQ[ij][ N RQ -1 :0] bus is sampled on edges 13 and 14, and is decoded as a NOP and ignored.
  • the RQ[ij][ N R Q-1 :0] bus is sampled again on edge 18, and is decoded as a valid command, and the command is executed.
  • the timing relationship in FIG. 18 depicts a simple hardware implemented algorithm that searches for a string of three sampled "l"s on the RQ[ij][b] signal and updates the CalFrm[l :0] value to the value in the CalState[l :0] register plus 1.
  • This CalFrm[l :0] value is the one that makes the Load signal assert during the second sampled "1".
  • the previous value of CalFrm[l:0] caused the Load signal to assert during the first sampled "1", which is not optimal because there is less timing margin.
  • the Load signal controls not only when the command signal RQ[i J][N RQ -1 :0] is sampled and decoded, but also controls the timing of data loads in the M2 and M3 blocks and in PATO and PATl registers.
  • FIG. 19A shows the logic for block M2 of the memory component 1600 at position [i j] in system 1300.
  • Block M2 performs a parallel to serial conversion, taking four parallel bits of read data from the Q M [3:0] bus 1614 and serially transmitting the read data onto the bi-directional DQ[ij] bus 1612.
  • Block M2 also uses the buffered clock CLKB[i j] and Load signals.
  • the Load signal on bus 1608 is asserted during one of every four rising edges of CLKB[ij].
  • the edge of CLKB[ij] that is selected is the same as the one that is used by block Ml to receive the RQ[i j] signal.
  • the internal read access time tcACiNT will be an integral multiple of t C L ⁇ c ⁇ cLE (3*tcL ⁇ c ⁇ cL ⁇ or 12*tcu 4CYCL ⁇ ).
  • Other embodiments could deliberately misalign the Load signal for receiving the RQ[i j] signal on bus 1604 and the Load signal for transmitting the DQ[i j] signal 1612 to match a timing requirement of the memory core 1680.
  • Register 1930 is loaded with four bits of information from the Q M [3:0] bus 1614 during each clock cycle, but only the information loaded in the clock cycle prior to each Load signal is used.
  • the Load signal 18(1), or 1608, is asserted, the four bits of information in register 1930 are steered through multiplexer 1910 to the four one-bit registers 1920 and are loaded into those registers 1920 upon the clock edge that occurs while Load is enabled.
  • the outputs of a last one of the registers 1920 is asserted as the DQ[i j] signal after the clock edge.
  • the multiplexer shifts the remaining three bits onto the DQ[i j] signal.
  • FIG. 19B shows the logic for block M3 of the memory component 1600 at position [ij] in system 1300.
  • Block M3 receives write data on the DQ[ij] bus 1612.
  • a serial to parallel conversion is performed by registers 1940 and multiplexer 1950 to create the parallel data asserted on bus D M [3:0] 1620.
  • the serially connected registers 1940 are clocked by the buffered clock signal 1606, and Load signal transfers the content of the registers 1940 through the multiplexer 1950 to register 1960.
  • the Load signal on bus 1608 is asserted on one of every four rising edges of the CLKB[ij] signal on bus 1606.
  • the selected edge is the same edge as the one that is used by block Ml for receiving the RQ[i j] signal on bus 1604.
  • the internal write access time I C WD,INT will be an integral multiple of tcu iCYCL ⁇ (1*ICLKICYCLE or 4*tc L K4 C YCL ⁇ )-
  • Other embodiments could deliberately misalign the Load for receiving the RQ bus and the Load signal for receiving the DQ bus 1612 to match a timing requirement of the memory core 1680.
  • the four one-bit registers 1940 connected serially to the DQ[ij] signal 1612 continuously shift in the write data that is present on each rising edge of CLKB[ij].
  • the Load signal on bus 1608 When the Load signal on bus 1608 is asserted, the most recent shifted-in write data is loaded in parallel to the register 1960 connected to the D M [3:0] bus 1620.
  • the Load signal When the Load signal is deasserted, the contents of register 1960 are recirculated through the multiplexer on line 1970.
  • FIG. 20 shows the logic 2000 for the controller component 1305 in the system 1300.
  • Logic 2000 is made up of three blocks: CI, C2 and C3.
  • Block CI contains clock generator circuitry.
  • Block C2 contains circuitry for each memory rank [i] and connects to the N RQ signals of the bus 1315 and the one CLK[i,0] signal 1320.
  • Block C3 contains circuitry for each memory slice [J] and connects to the one signal of the DQ[0j] bus 1325.
  • Logic 2000 assumes that each memory component slice connects to the controller with one DQ signal. Other embodiments could connect the memory component to the controller with more than one DQ signal by a simple extension of the methods described for system 1300.
  • Block CI receives the CLKC signal 2010. Two sets of clock signals are created from this reference clock. Here, the clock signals for all ranks are the same, and the clock signals for all slices are the same.
  • the first set of clock signals is for block C2: (a) CLKl 2015 - a derived clock with same frequency as CLKC, and phase-aligned to CLKC; and (b) CLK4[8] 2018 - a derived clock with four times the frequency of CLKC.
  • the second set of clock signals is for block C3: (a) CLKl 2015 - a derived clock with same frequency as CLKC, and phase-aligned to CLKC; (b) CLK4Cyc[l:0] 2022, which is a cycle count of CLK4 clock cycles, and thus indicates a phase of CLK4 cycle relative to CLKl; (c) CLK4CycD[l:0] 2025, which is the same as CLK4Cyc[l:0] except that it is delayed by half a CLK4 clock cycle relative to CLK4Cyc[l :0]; and (d) CLK4[7:0] 2028, which is a set of 8 derived clocks having four times the frequency of CLKC, each having a different phase offset (as shown in FIG.22), staggered in increments of 118 th of a CLK4 cycle.
  • the CLK4[7:0] signals are also herein called phase vectors and the CLK4Cyc[l :0] is also herein called a clock count signal. These phase vectors and the clock count signal are used by both the transmit and receive circuits for each DQ bus.
  • Block C2 receives the RQc[i,0] bus 1315 from other circuitry in the controller and receives the CLKl 2015 and the CLK4[8] 2018 clock signal from block CI.
  • Block C3 connects to the TX[j], RX[j], Qc[)][3:0], and Dc
  • Block C3 receives the CLKl, CLK4Cyc[l :0], CLK4CycD[l :0], and CLK4[7:0] buses from block CI .
  • FIG. 21 shows the logic 2100 for block CI of the controller component of FIG. 20.
  • Block CI is responsible for creating the derived clock signals for blocks C2 and C3 from the reference clock signal CLKC 2010.
  • the reference clock signal CLKC is received by a PLL circuit 2015, which produces a clock signal CLK8 that has eight times the frequency of CLKC. This increase in frequency is set by the circuitry in the feedback loop described below.
  • the CLK8 signal clocks a three bit register 2118, which produces a three-bit signal asserted on a bus C[2:0] 2019.
  • the three-bit signal on the C[2:0] bus is decremented by the logic circuit "DEC" 2025 and loaded back into the register 2118 on the next CLK8 edge.
  • Signal C[2] is the most-significant-bit (or "msb")
  • signal C[0] 2030 is the least- significant-bit of the value stored in register 2118.
  • C[2:0] cycles through its values (111, 110, 101, 100, 011, 010, 001, 000, and then back to 111), with its value being decremented with each cycle of the CLK8 signal.
  • Signal C[2] is buffered by buffer 2058 to produce CLKl 2035.
  • Signal 2035 is a derived clock signal that has the same frequency as the reference clock CLKC.
  • the PLL circuit 2015 compares the CLKC and CLKl signals on buses 2010 and 2035, and the phase of the output signal CLK8 is adjusted until these two clock signals are essentially phase-aligned (as shown in timing diagram FIG. 22).
  • Signals C[2] and C[l] are complemented (i.e., inverted) and buffered by buffers 2045 to produce the CLK4Cyc[ 1 ] and CLK4Cyc[0] signals on buses 2038 and 2040, respectively.
  • the CLK4Cyc[l] and CLK4Cyc[0] signals are used to label four CLK4 cycles within each CLKl cycle.
  • Signals C[2] and C[l] are also loaded into two delay registers 2020 clocked by the CLK8 clock signal.
  • the output of these two registers are complemented and buffered by buffers 2050 to produce the CLK4CycD[l ] and CLK4CycD[0] signals on buses 2052 and 2055 respectively.
  • the CLK4CycD[l] and CLK4CycD[0] signals 2052 and 2055 are the same as the CLK4Cyc[l] and CLK4Cyc[0] signals, delayed by one CLK8 cycle.
  • all the buffer circuits 2045, 2050, 2058 and capacitive loads are preferably designed to give the same delay values, so that all the clock signals and clock count signals generated by CLKC (e.g., CLKl, CLK4[8:0], CLK4Cyc[l :0], and CLK4CycD[l :0]) are essentially phase-aligned as shown in FIG. 22.
  • the C[0] signal on bus 2030 has a frequency that is four times that of the reference clock signal CLKC 2010.
  • the C[0] signal is the input signal to a DLL circuit.
  • the delay-control signal could be either a set of digital signals, or it could be an analog signal, such as a voltage signal.
  • the delay of each delay element 2060 is identical.
  • each delay element 2060 is passed through a buffer 2070 (labeled "B") to produce the nine CLK4[8:0] signals 2075.
  • each of these clock signals will have a frequency that is four times that of the reference clock CLKC.
  • the two signals CLK4[0] and CLK4[8] are compared by the DLL 2080, and the value of delay-control 2065 is adjusted until the signals CLK4[0] and CLK4[8] are essentially phase aligned.
  • the remaining CLK4[7:1] clock signals will have phase offsets that are distributed in 45° (tcLK4Cycie/8) increments across a CLK4 cycle.
  • all buffer circuits 2070 and capacitive loads are preferably designed to give the same delay values, so that all the CLK4[8:0] clock signals have evenly distributed phases, and the rising edge of CLKl will be essentially aligned to every fourth edge of CLK4[0] and CLK4[8].
  • FIG. 22 shows the timing diagram with signals 22(a)-(o) for block CI of the memory controller 2000.
  • Block CI is responsible for creating the derived clock signals for blocks C2 and C3 of system 2000 from the reference clock signal CLKC 2010.
  • the reference clock signal CLKC is shown in the first waveform 22(a).
  • the cycle time of the CLKC signal is tcLKicycie-
  • the PLL circuit 2015 produces a clock signal CLK8 of 22(b) that here has eight times the frequency and whose cycle time is tc L ⁇ 8 C ycie-
  • the rising edge of the CLK8 signal is delayed from the rising edge of CLKC by t PLL , a delay introduced by the PLL circuit to ensure that the rising edges of CLKC and CLKl are aligned.
  • the CLK8 signal clocks a three bit register 2118, which produces a bus C[2:0].
  • This bus decrements through the values ⁇ 111, 110, 101, 100, 011, 010, 001, 000 ⁇ , and is delayed from CLK8 by I CLK - TO - OUT (the clock to output delay time of the register 2118).
  • Signal C[2] is buffered by a buffer 2058 having an associated delay of I BUFFER (arrow 2220) to produce CLKl 2035.
  • Signal 2035, depicted as 22(d) is a derived clock signal that has the same frequency as the reference clock CLKC.
  • the PLL circuit 2015 compares the rising edges of the two CLKC and CLKl signals (on buses 2010 and 2035), and the phase of the output signal CLK8 is adjusted until these two inputs are essentially phase-aligned.
  • the edges aligned by PLL 2015 are shown by arrows 2210. Note that the following equation will be satisfied when the PLL is phase locked:
  • Signals C[2] and C[l] are complemented and buffered to give the CLK4Cyc[l] and CLK4Cyc[0] signals on buses 2038 and 2040, respectively.
  • Signals C[2] and C[l], depicted together as signal 22(e) are also loaded into two delay registers 2020 clocked by the CLK8 clock signal. The output of these two registers are complemented and buffered to give the CLK4CycD[l :0] signals on buses 2052 and 2055, and depicted together as signal 22(f).
  • the CLK4CycD[l :0] signals are the same as the CLK4Cyc[l :0] signals delayed by one CLK8 cycle.
  • the CLK4Cyc[l :0] and CLK4CycD[l :0] signals label the four CLK4 cycles within one CLKl cycle.
  • the two sets of signals are needed because any of the eight CLK4[7:0] signals might be used. For example, if a clock domain is aligned with the CLK4[5:2] clock signals (depicted by the black dots identified by arrow 2240), then the CLK4Cyc[l] and CLK4Cyc[0] signals are used.
  • the C[0] signal is the input signal to the DLL circuit containing matched delay elements 2060 and buffers 2070.
  • the output of the eight delay elements 2060 is passed through buffers 2070 to produce the CLK4[8:0] signals on bus 2075.
  • Each of these clock signals has a frequency that is four times that of the reference clock CLKC, as shown by signals 22(g)-(o) in FIG. 22.
  • the two signals CLK4[0] and CLK4[8] are compared by the DLL 2080, and the delay-control value is adjusted until the two signals are essentially phase aligned.
  • the DLL circuit aligns the edges depicted by arrows 2250.
  • the CLK4[7:1] clock signals have phase offsets that are distributed in 45° increments (tcL 4Cycie/8) across a CLK4 cycle.
  • FIG. 23 shows the logic for the controller block 2300 of system 2000.
  • Block 2300, or R0 is part of block C3 (along with block 3000, or TO).
  • Block 2300 is responsible for receiving read data from the memory components and includes three blocks: Rl 2400, R2 2500, and R3 2600.
  • Block Rl connects to the DQ[0j] bus 1325, which connects to the memory components of the memory system.
  • Block Rl receives the CLKQ[0j] signal (line 1334) and LoadR[j] signal (line 2310) from block R2.
  • Block Rl receives CLKlSkipR[j] (line 2315) and CLKlLevelR[j][l:0] (line 2320) from block R3 and receives CLKl 2015 from outside this controller block 2300 (from block CI in FIG. 20).
  • Block Rl returns read data signals Qc[jj[3:0] to other blocks in the controller.
  • Block R2 supplies the CLKQ[0 j] and LoadR[j] signals to block Rl .
  • Block R2 receives CLK4BlendR[j][4:0] (line 2325), CLK4PhSelR[j][2:0] (line 2330) and CLK4CycleR[j][l:0] (line 2335) from block R3.
  • Block R2 also receives CLK4[7:0], CLK4Cyc[l:0] and CLK4CycD[l:0] from outside of block R0 (from block CI in FIG. 20).
  • Block R3 supplies the CLK4BlendR[j][4:0], CLK4PhSelR[j][2:0] and CLK4CycleR[j][l :0] signals to block R2.
  • Block R3 supplies CLKl SkipR[j] and
  • CLKlLevelR[j][l:0] to block Rl It receives LoadRXA, LoadRXB, CLKl, SelRXB, SelRXAB, IncDecR[j], and 256orlR signals from outside of block R0 (either block CI in FIG. 20 or other blocks in the controller).
  • FIG. 24 shows the logic for the controller block Rl 2400 of system 2300.
  • This block is responsible for receiving read data from the memory components and inserting a programmable delay.
  • the LoadRQ] signal 2310 is asserted on one of every four rising edges of CLKQ[0 j]. The correct edge is selected in the Rl block.
  • four one- bit registers 2410 connected serially to the DQ[0j] bus 1325 continuously shift in the read data that is present on the DQ[0j] bus 1325 with each rising edge of CLKQ[0j].
  • the LoadRQ] signal When the LoadRQ] signal is asserted, the most recent shifted-in read data is loaded in parallel to the 4-bit register 2420.
  • the Load signal is deasserted, the contents of this register are recirculated through the multiplexer 2430 along bus 2435 and held for four CLKQ[0 j] cycles (or one CLKl cycle).
  • the QcQ][3:0] signal on line 2050 and the CLKl signal on 2015 represent two clock domains that may have an arbitrary phase alignment with respect to each other, but they will be frequency-locked, here in a 4:1 ratio.
  • the serial-to-parallel conversion controlled by LoadR[j] 2310 makes the frequencies of the two clock domains identical. Therefore, either the rising edge of CLKl or the falling edge of CLKl will be correctly positioned to sample the parallel data in the four-bit register 2440.
  • the CLKlSkipR[j] signal (generated in block R3, shown in more detail in FIG. 26) selects between the two cases.
  • the path 2445 with a negative-CLKl -edge-triggered register is enabled, otherwise the parallel register is used directly via path 2448.
  • a positive-CLKl -edge-triggered register samples the output of the skip multiplexer 2450 and stores the four-bit value in a first register 2470.
  • the final stage involves inserting a delay of zero through three CLKl cycles. This is easily accomplished with a four-to-one multiplexer 2460, and three additional four-bit registers 2470.
  • the CLKlLevelR[j][l:0] bus 2320 is generated in block R3, and selects which of the four registers 2470 is to be enabled (i.e., it selects which register's output is to be passed by the multiplexer 2460 onto the Qc[j][3:0] bus 2050).
  • FIG. 25 shows the logic for the controller block R2 2500. This block is responsible for creating the CLKQ[0 j] clock signal needed for receiving the read data from the memory components, and for creating the LoadRQ] signal for performing serial-to-parallel conversion in 2400.
  • Block R2 supplies the CLKQ[0,j] and LoadR[j] signals to block Rl.
  • Block R2 receives CLK4BlendR[j][4:0] (line 2325), CLK4PhSelR[j][2:0] (line 2330) and CLK4CycleRQ][l:0] (line 2335) from block R3.
  • Block R2 also receives CLK4[7:0], CLK4Cyc[l :0] and CLK4CycD[l :0] from outside of block R0 (from block CI in FIG. 20).
  • CLK4PhSelRQ][2:0] on bus 2330 selects which of the eight CLK4[7:0] clock signals will be used as the lower limit for a phase blending circuit.
  • the next higher clock signal is automatically selected by multiplexer 2520 for blending with the lower limit clock signal, which is selected by multiplexer 2510. For example, if signal 2330 is "010", then the clock signal used for the lower limit is CLK4[2] and the clock signal used for the upper limit is CLK4[3].
  • These are passed by the two eight-to-one multiplexers 2510 and 2520 to the Phase Blend Logic block 2530 via buses 2515 and 2525.
  • the CLK4BlendRQ][4:0] signal on bus 2325 selects how to interpolate between the lower and upper clock signals on buses 2515 and 2525. If CLK4BlendRQ][4:0] is equal to B, then the inte ⁇ olated phase is at a point B/32 of the way between the lower and upper phases. If B is zero, then it is at the lower limit, and if B is 31, then it is almost at the upper limit.
  • the output of the Phase Blend Logic 2530 is CLKQ[0j], the clock signal on bus 1334 used to sample the read data from the memory.
  • the Phase Blend Logic 2530 uses well known circuitry, which is therefore not described in this document. However, the ability to smoothly inte ⁇ olate between two clock signals that have relatively long slew rates (i.e., the rise/fall time of the two signals is greater than the phase difference between the two signals) is important in that it makes the blending of signals to form a combined signal 1334 and implementation of dynamic mesochronous systems easier.
  • the remaining signals and logic in block R2 generate the LoadRQ] signal 2310, which indicates when the four read data bits have been serially shifted into bit registers 2410 (FIG. 24) and are ready to be clocked into the parallel register 2420 (FIG. 24).
  • the CLK4CycleRQ][l :0] signal generated by block R3, picks one of the four possible load points.
  • the LoadRQ] signal on line 2310 is generated by comparing CLK4CycleRQ][l :0] to CLK4Cyc[l:0] using compare logic 2565. CLK4Cyc[l:0] labels the four CLK4 cycles in each CLKl cycle.
  • the compare logic 2565 generates a positive ou ⁇ ut (e.g., a "1") when its two inputs are equal.
  • the output of the compare logic 2565 is sampled by a CLKQ[0,j] register 2575, the output of which is the LoadRQ] signal, and is asserted in one of every four CLKQ[0j] cycles.
  • AND gate 2580 and multiplexer 2570 determine whether a first input to the compare logic 2565 is CLK4CycleRQ][l:0] or is that value incremented by one by increment circuit 2590.
  • XOR gate 2585 and multiplexer 2560 determine whether the second input to the compare logic 2565 is CLK4Cyc[l:0] or CLK4CycD[l:0], each of which is delayed by one CLKQ clock cycle by registers 2550 and 2555.
  • FIG. 26 shows the logic 2600 for the controller block R3 in FIG. 23.
  • Block R3 2600 is responsible for generating the value of clock phase PhaseRQ][l 1 :0] for receiving the read data.
  • Logic R3 2600 supplies the CLK4BlendRQ][4:0] (line 2325), CLK4PhSelRQ][2:0] (line 2330) and CLK4CycleRQ][l :0] (line 2335) to block R2. Logic R3 2600 also supplies CLKlSkipRQ] on line 2315 and CLKlLevelRQ][l :0] on line 2320 to block Rl 2400.
  • Logic 2600 further receives the LoadRXA 2605, LoadRXB 2610, CLKl, SelRXB 2615, SelRXAB 2620, IncDecRQ] 2625, and 256orlR signals 2630 from outside of block 2300 (either block CI or other blocks in the controller).
  • PhaseRQ][ll:0] PhaseRQ][ll:0] on line 2675.
  • the PhaseRQ][4:0], PhaseRQ][7:5] and PhaseRQ][9:8] signals on lines 2676, 2677 and 2678 are extracted from the PhaseRQ][l 1 :0] signal on 2675, and after buffering by buffers 2695 these extracted signals become the CLK4BlendRQ][4:0], CLK4BlendRQ][7:5], and CLK4BlendRQ][9:8] signals on lines 2325, 2330 and 2335.
  • PhaseRQ ][11:0] represents the number of CLKl cycles from the to FFSETR point.
  • the fields CLKlSkipRQ] 2315 and CLKlLevelRQ][l:0] 2320 represent the delay that must be added to the total delay of the read data, which is tRAN G R no matter what value PhaseRQ] [11:0] contains. Thus, PhaseRQ] [11 :0] is subtracted from 2 12 -2 8 .
  • the factor of "2 12 " represents the maximum value of t RAN o ⁇ R -
  • the factor of "2 8 " is needed to give the proper skip value - this will be discussed further with FIG. 27.
  • the circuitry adds "111100000000" on line 2680 to the complement of PhaseRQ] [11 :0] and asserts carry-in to the adder 2685.
  • the low nine bits of the result are discarded on line 2682, the next bit is buffered to generate CLKlSkipRQ] and the upper two bits are buffered to generate CLKl LevelRQ][ 1:0] 2320.
  • the multiplexer 2670 that passes the (RXA+RXB)/2 value instead selects either the RXA register 2635 or the RXB register 2640 directly, as determined by the SelRXAB signal on 2620 and the SelRXB signal on 2615. Placing the value in the selected register (RXA or RXB) on the PhaseRQ] [11 :0] bus 2675 causes the receive logic to set the sampling clock to one side or the other of the data window for read data. Once the resulting sampling clock CLKQ[0j] on 1334 (FIG. 25) is stable, the read data is evaluated, and the RXA or RXB value is either incremented, decremented, or not changed by logic 2690 and output on line 2694.
  • FIG. 27 shows receive timing signals 27(a)-(k) that illustrates four cases of alignment of the CLKQ[0j] clock signal 1334 within the t R AN GE R interval.
  • PhaseRQ][l 1 :0] adjusts the values of the signals on these buses, and the value of tp HASER , which controls the position of CLKQ[0j] within the t RANGER interval, and also adjusts the compensating delays so the overall delay of the read data is (IQ FFSE TR + RANG ⁇ R) regardless of the position of CLKQ[0j].
  • the first waveform shows the CLKl clock signal, 27(a), over tRAN G ER, and the second waveform 27(b) shows the labeling for the four CLKl cycles (i.e., 00, 01, 10, 11) that comprise the I RANGER interval (note there is no bus labeled "CLKlCyc"; this is shown to make the diagram clearer).
  • the third waveform, 27(c), shows the CLK4[0] clock signal
  • waveform 27(d) shows the labeling for the four CLK4 cycles that comprise each CLKl cycle.
  • the fifth waveform, 27(e) shows the numerical values of the PhaseRQ][l 1:0] bus 2675 as a three digit hexadecimal number.
  • the most-significant digit includes two bits for the CLKlCyc value, and two bits for the CLK4Cyc value.
  • the right side of the diagram 27 shows how three buses are extracted from the PhaseRQ][9:0] bus: the CLK4BlendRQ][4:0] 2325, CLK4PhSelRQ][2:0] 2330 and CLK4CycleRQ][l :0] signals 2335 are buffered versions of the PhaseRQ][4:0] 2676, PhaseRQ][7:5] 2677, and PhaseRQ] [9:8] fields 2678, respectively.
  • the sixth and seventh waveforms, 27(f) and (g) show graphically how the CLKlSkipRQ] and CLKl LevelRQ][ 1:0] signals on buses 2315 and 2320, respectively, vary as a function of the PhaseRQ][l 1:0] value. It is noted that the CLKlSkipRQ] and CLKlLevelRQ][l:0] signals generate a compensating delay for the read data, so they increase from right to left in FIG. 27.
  • the PhaseRQ][l l:0] value is 780 16 (2701).
  • the read data has been sampled and is available in a parallel register (e.g., 2430, FIG. 24) in the CLKQ[0j] clock domain, and is ready to be transferred to the CLKl domain.
  • the read data is sampled by the next falling edge 2720 of CLKl 1330 at time a00 ⁇ 6 , then is sampled by the next rising edge 2730 of CLKl at time c00 ⁇ 6 , and finally is sampled by the next rising edge 2740 of CLKl at time 1000 1 .
  • the three intervals labeled "ts ⁇ iPRN”, "ts ⁇ iPR”, and "ILEVELR” connect the four sampling points 2701-2704.
  • the CLKlSkipRQ] value in waveform 27(k) is "1" because a "tsKiPR N " interval is used.
  • the CLKl LevelRQ][ 1:0] value in waveform 27(k) is "01" because one ' ⁇ LEVELR " interval is used.
  • the size of the tRAN GER interval has been chosen to be four CLKl cycles. It could be easily extended (or shrunk) using the utilizing the methods that have been described in this example.
  • the upper limit of the t RANGER interval is actually 3-3/4 CLKl cycles because of the method chosen to align the CLKl SkipRQ] and CLKlLevelRQ][l :0] values to the tpHASER values.
  • the loss of the ' ⁇ CLKl cycle of range is not critical, and the method shown gives the best possible margin for transferring the read data from the CLKQ[0,j] clock domain to the CLKl domain.
  • Other alignment alternatives are possible.
  • the i R AN G ⁇ R could be easily extended by adding more bits to PhaseRQ] [11 :0] and by adding more Level registers 2470 in FIG. 24.
  • FIG. 28 shows timing signals 28(a)-(h) that illustrates how the timing values are maintained in the RXA and RXB registers 2635 and 2640, respectively.
  • Waveform 28(a) shows the CLKl signal 1330 in the controller 1305.
  • the second waveform, 28(b), shows the RQ[i,0] bus 1315 issuing a RDPAT1 command.
  • Signal 28(c) shows the pattern data Q[0,j] returned to the controller.
  • the fourth signal, 28(d) shows the internal clock signal CLKQ[0j] that samples the data in the controller.
  • the position of the CLKQ[0,j] rising edge 2810 is centered on the first bit of pattern data at toFFs ⁇ TR + IPHA S ER J - tstoP.Q, where:
  • Eqn. (8) can change as temperature and supply voltage vary during system operation. The rate of change will be relatively slow, however, so that periodic calibration operations (separated by periods of normal memory operations) can keep the t P HAs ⁇ R j value centered on the read data bits.
  • the calibration logic 1355 maintains two separate register values (RXA and RXB) which track the left and right side of the read data window 2820.
  • RXA and RXB the pattern data Q[0,j] and the CLKQ[0j] rising edge are shown with an expanded scale.
  • the CLKQ[0j] rising edge is also shown at three different positions: t PH ASER j (RXA), 28(f), t PH ASER j (RX), 28(g), and tpHASER j (RXB), 28(h).
  • RX represents the average value of RXA and RXB.
  • the RXA value shown in 28(f) will hover about the point at which (tpHAs R j (RXA)- s toP .Q) trails the start of the Q[0j] [0] bit by ts , Q 2830. If the sampled pattern data is correct (pass), the RXA value is decremented, and if the data is incorrect (fail), the RXA value is incremented.
  • the RXB value shown in 28(h) will hover about the point at which (tpHASERj(RXB)- stoP,Q) precedes the end of the Q[0,j] [0] bit by t H ,Q 2840. If the sampled pattern data is co ⁇ ect (pass), the RXB value is incremented, and if the data is incorrect (fail), the RXA value is decremented.
  • a pass will cause the timing to change in the direction that makes it harder to pass (reducing the effective set or hold time).
  • a fail will cause the timing to change in the direction that makes it easier to pass (increasing the effective set or hold time).
  • the RXA and RXB values will alternate between the two points that separate the pass and fail regions. This behavior is also called "dithering".
  • calibration of RXA stops when the adjustments to RXA change sign (decrement and then increment, or vice versa), and similarly calibration of RXB stops when that value begins to dither.
  • the RXA and RXB values can be allowed to dither, since the average RX value will still remain well inside the pass region.
  • FIG. 29 shows receive timing signals 29(a)-(l) that illustrate a complete sequence that may be followed for a calibration operation.
  • Waveforms 28(a)-(c) are shown in an expanded view of the pattern read transaction.
  • the first waveform shows the CLKl signal in the controller.
  • the second waveform, 29(b), shows the RQcQ] bus in the controller (see FIG. 20).
  • the third waveform shows the pattern data QcQ][3:0] in the controller (see FIG. 20).
  • the time interval between the CLKl edges associated with the RDPATl command and the returned data PI [3:0] is labeled tcAC,c- This value is the same for all slices and all ranks in the memory system of the present invention, and is equivalent to (toFFs ⁇ TR + RAN G ⁇ R ) or eight CLKl cycles for this system example.
  • the eight cycle pattern access is one step in the calibration operation shown in waveform 29(d).
  • the calibration sequence for this example takes 61 CLKl cycles(from 02 to 63). Before the sequence begins, all ongoing transfers to or from memory must be allowed to complete.
  • the SelRXB, SelRXAB, and 256orlR signals 29(i), 29(j) and 29(1), respectively, are set to static values that are held through edge 2920.
  • the following table summarizes the values to which these signals are set:
  • Changing the value of the SelRXAB from 0 to 1 means that a time interval ts ⁇ LE i 28 (25 CLKl cycles in this example) 2940 must elapse before any pattern commands are issued. This allows the new value of PhaseRQ][l 1 :0] to settle in the phase selection and phase blending logic of the R2 block 2500 (FIG. 25).
  • the pattern data read from the memory component is available in the controller after rising edge 35, shown as edge 2930 in FIG. 29. This pattern data is compared to the expected value, and a pass or fail determination is made if it matches or does not match, respectively.
  • the IncDecRQ] signal 2625 is asserted or deasserted, as a result, and the LoadRXA 2605 or LoadRXB 2610 signal is pulsed for one CLKl cycle to save the incremented or decremented value, as shown in waveforms 29(g), 29(h) and 29(k).
  • the following table summarizes the values to which these signals are set:
  • the calibration sequence may be performed on all slices of the memory system in parallel. All of the control signals can be shared between the slices except for IncDecRQ], which depends upon the pass/fail results for the pattern data for that slice. In preferred embodiments, the calibration sequence is performed for RXA and
  • RXB at periodic intervals that are spaced closely enough to ensure that timing adjustments can keep up with timing changes due to, for example, temperature and supply voltage variations.
  • the sampling point of the CLKQ[0j] receive clock 1334 in the controller must be adjusted. This is accomplished by an update sequence for the RXA and RXB register values. This update sequence is similar to the calibration sequence of FIG. 29, but with some simplifications. Preferably, this update sequence is performed immediately after the RQ sampling point was updated.
  • the SelRXB, SelRXAB, and 256orlR signals are set to static values that are held through rising edge 38 (edge 2920).
  • the PhaseRQ] [11 :0] is not changed (SelRXAB remains low), so that the pattern transfer does not need to wait for circuitry to settle as in the calibration sequence.
  • the following table summarizes the values to which these signals are set:
  • Both RXA and RXB can be updated successively using the same pattern read transfer. Note that the update sequence may be performed on all slices in parallel. All of the control signals can be shared between the slices except for IncDecRQ], which depends upon the pass/fail results for the pattern data for that slice.
  • a time interval t S E ⁇ LE256 (e.g., 50 CLKl cycles) must elapse before any read commands are issued. This allows the new value of PhaseRQ][l 1 :0] to settle in the phase selection and phase blending logic of the R2 block (FIG. 25).
  • RXA and RXB register values Before the RXA and RXB register values can go through the calibration and update sequences just described, they must be initialized to appropriate starting values. This can be done relatively easily with the circuitry that is already in place.
  • the initialization sequence begins by setting the RXA register to the minimum value of 000 16 and by setting the RXB register to the maximum value fff 16 . These will both be failing values, but when the calibration sequence is applied to them, both values will move in the proper direction (RXA will increment and RXB will decrement).
  • the initialization procedure involves performing the RXA calibration repeatedly until it passes. Then the RXB calibration will be performed repeatedly until it passes.
  • the settings of the various signals will be:
  • PhaseRQ] [11 :0] changes by large amounts when SelRXAB is changed in the normal calibration process described earlier.
  • the initialization sequence may be performed on all slices in parallel. All of the control signals can be shared between the slices except for IncDecRQ], which depends upon the pass/fail results for the pattern data for that slice.
  • FIG. 30 shows the logic 2000 for the controller block TO.
  • Block TO is part of block C3 of FIG. 20 (along with block 2300).
  • Block TO is responsible for transmitting the write data to the memory component. It consists of three blocks: TI 3100, T2 3200, and T3 3300.
  • Block TI connects to bus DQ[0j] 1325, which connects to the external memory system (see FIG. 13).
  • Block TI receives the CLKD[0,j] 1332 and LoadTQ] 3010 signals from block T2 and receives CLKlSkipTQ] 3015 and CLKl LevelTQ][ 1:0] 3020 signals from block T3.
  • Block TI also receives CLKl 1330 from outside of block TO (e.g., from block CI in FIG. 20).
  • Block TI also returns DcQ][3:0] to other blocks in the controller.
  • Block T2 supplies the CLKD[0,j] 1332 and LoadTQ] 3010 signals to block TI.
  • Block T2 receives CLK4BlendTQ][4:0] 3025, CLK4PhSelTQ][2:0] 3030 and CLK4CycleTQ][l :0] 3035 from block T3.
  • Block T2 receives CLK4[7:0] 2075, CLK4Cyc[l :0] 2038, 2040 and CLK4CycD[l:0] 2052, 2055 from block CI of the controller (see FIG. 20).
  • Block T3 supplies the CLK4BlendTQ][4:0], CLK4PhSelTQ][2:0] and CLK4CycleTQ][l:0] signals to block T2.
  • Block T3 also supplies CLKlSkipTQ] 3015 and CLKlLevelTQ][l:0] 3020 to block TI.
  • Block T3 also receives LoadTXA, LoadTXB, CLKl, SelTXB, SelTXAB, IncDecTQ], and 256orlT signals (3040-3065) from outside of block TO (either from block CI or from other blocks in the controller, via the TXQ] control bus 2030).
  • FIG. 31 is a logic diagram of controller block TI 3100, which is responsible for transmitting write data on bus 2060 from memory and inserting a programmable delay before transmitting onto the DQ[0 j] bus.
  • Block TI connects to the DQ[0j] bus 1325, which connects to an external memory system.
  • Block TI receives the CLKD[0j] and LoadTQ] signals from block T2. It receives CLKlSkipTQ] 3015 and CLKlLevelTQ][l:0] signals from block T3.
  • Block TI receives CLKl from outside of block TO (e.g., from block CI) and receives DcQ][3:0] from other blocks in the controller.
  • the first stage of the TI Block inserts a delay of zero through three CLKl cycles.
  • the data received from the DcQ][3:0] bus 2060 is initially stored in a four-bit register 3105. Delay insertion is accomplished using a four-to-one multiplexer 3110, and three additional four-bit registers 3115.
  • the CLKlLevelTQ][l:0] bus 3020 can be generated in block T3 from bus 3020, and selects the data from one of the four registers 3105, 3115 for the multiplexer 3110 to pass.
  • the CLKD[0 j] and CLKl clock signals may have an arbitrary phase alignment, but they will be frequency-locked in a 4:1 ratio. Either the rising edge of CLKl or the falling edge of CLKl can be positioned to drive the parallel data into the four-bit register 3120 clocked by CLKD[0j].
  • the CLKlSkipTQ] signal on line 3015 (generated in block T3) selects between the two cases through a skip multiplexer 3150. When it is one, the path 3165 with a negative-CLKl -edge-triggered register is enabled, otherwise the direct path 3160 to multiplexer 3150 is used. In either case, a positive-CLKD[0j]-edge-triggered register 3120 samples the output 3170 of the skip multiplexer 3150.
  • FIG. 32 shows the logic for the controller block T2 3200, which is responsible for creating the CLKD[0,j] clock on line 1332 needed for transmitting the write data to the memory component 1310 as shown in FIG. 15.
  • Block T2 supplies the CLKD[0j] and LoadTQ] signals to block TI of FIG. 31.
  • Block T2 receives CLK4BlendTQ][4:0], CLK4PhSelTQ][2:0] and CLK4CycleTQ][l :0] from block T3.
  • Block T2 receives CLK4[7:0], CLK4Cyc[l :0] and CLK4CycD[l :0] from outside of block TO (from block CI).
  • the CLK4PhSelTQ][2:0] signal on line 3030 selects which of the eight CLK4[7:0] clock signals will be selected by multiplexer 3220 as the "lower limit clock signal" for the phase blending logic 3210.
  • the CLK4PhSelTQ][2:0] signal is also used by multiplexer 3215 to select the next higher clock signal for blending. For example, if CLK4PhSelTQ][2:0] is "010", then the clock signal used for the lower limit is CLK4[2] and the clock signal used for the upper limit is CLK4[3].
  • These limit signals are passed by the two eight-to-one multiplexers 3215, 3220 to the Phase Blend Logic block 3210 on lines 3222 and 3224, respectively.
  • the CLK4BlendTQ][4:0] signal on bus 3025 selects how to inte ⁇ olate between the lower and upper clock signals in phase blend logic 3210. For example, if CLK4BlendTQ][4:0] is equal to B, then the inte ⁇ olated phase is at a point B/32 of the way between the lower and upper phases. If B is zero, then it is at the lower limit set by multiplexer 3220, and if B is 31 set by multiplexer 3215, then it is almost at the upper limit.
  • the output of the Phase Blend logic 3210 is the CLKD[0j] clock signal on bus 1332, used to write data to a memory component.
  • the Phase Blend Logic 3210 uses well known circuit techniques to smoothly inte ⁇ olate between two clock signals, and thus is not described in detail in this document.
  • the remaining signals and logic of the T2 block generate the LoadTQ] signal 3010, which indicates when the four write data bits are to be shifted into the serial registers 3130.
  • the CLK4CycleTQ][l :0] signal generated by the T3 block, picks one of the four possible load points for multiplexer 3140.
  • the LoadTQ] signal is generated by using compare logic
  • CLK4CycD[l:0] signals on lines 2052, 2055 are delayed from the CLK4Cyc[l :0] signals by one CLK8 cycle, so there is always a valid bus to use, no matter what value of CLK4PhSelTQ][2:0] is used. See the timing diagram of FIG. 22.
  • the following table summarizes the four cases of CLK4PhSelTQ][2:0]:
  • the output of the compare logic 3265 is sampled by a CLKD[0 j] register 3275 to generate the LoadTQ] signal.
  • the LoadTQ] signal is asserted in one of every four CLKD[0j] cycles.
  • AND gate 3280 and multiplexer 3270 determine whether a first input to the compare logic 3265 is CLK4CycleTQ][l:0] or is that value incremented by one by increment circuit 3290.
  • XOR gate 3285 and multiplexer 3260 determine whether the second input to the compare logic 3265 is CLK4Cyc[l :0] or CLK4CycD[l :0], each of which is delayed by one CLKQ clock cycle by registers 3250 and 3255.
  • FIG. 33 corresponds to FIG. 26 and shows the logic 3300 for the controller block T3, which is part of block TO.
  • the T3 block is responsible for generating the value of clock phase CLKD[0 j] for transmitting write data.
  • Block T3 supplies the CLK4BlendTQ][4:0], CLK4PhSelTQ][2:0] and CLK4CycleTQ][l :0] signals to block T2.
  • Block T3 supplies CLKlSkipTQ] and
  • Block T3 receives LoadTXA, LoadTXB, CLKl, SelTXB, SelTXAB, IncDecTQ], and 256orlT signals from outside of block TO (either block CI of FIG. 20 or other blocks in the controller).
  • Block R3 there are two 12-bit registers here (TXA 3335 and TXB 3340) in block T3. These registers digitally store the phase value of CLKD[0j] that will transmit write data at the earliest and latest part of the data window for each bit.
  • these two values on lines 3337 and 3342 are added by the Add block 3345, and shifted right by one place by shifter 3350 (to divide by two), producing a 12 bit value on line 3355 that is the average of the two values (TXA+TXB)/2.
  • the carry-out of the Add block 3345 is used as the shift-in of the shift right block 3350.
  • the two registers TXA 3335 and TXB 3340 together digitally store a transmit phase value for a respective slice.
  • the average value (TXA+TXB)/2 is the appropriate value for transmitting the write data with the maximum possible timing margin in both directions. Other methods of generating an intermediate value are possible.
  • This average value is passed through multiplexer 3370 to become PhaseTQ][l 1 :0] on bus 3375.
  • the CLK4BlendTQ][4:0], CLK4PhSelTQ][2:0] and CLK4CycleTQ][l:0] signals (on buses 3025, 3030, 3035) are generated by extracting PhaseTQ][4:0] 3376, PhaseTQ][7:5] 3377, and PhaseTQ][9:8] 3378 fields, respectively from the PhaseTQ][l 1 :0] signal and buffering the extracted signals with buffers 3395.
  • PhaseTQ][l 1 :0] 3375 represent the number of CLKl cycles from the to F F S ET T point.
  • the fields CLKlSkipTQ] 3015 and CLKlLevelTQ][l:0] 3020 are extracted from these upper bits.
  • PhaseTQ][l 1 :0] is added to -2 8 .
  • the factor of "2 8 " is needed to give the proper skip value (this will be discussed further with FIG. 34).
  • An adder 3385 adds "111100000000" on line 3380 to PhaseTQ][l 1 :0].
  • the lowest nine bits of the result are discarded on line 3382, the next bit is buffered to produce CLKlSkipTQ] 3015 and the upper two bits are buffered to produce CLKl LevelTQ][ 1:0] 3020.
  • the CLKl SkipTQ] and CLKlLevelTQ][l :0] fields come from adding PhaseTQ][l 1:0] to a constant
  • the CLKlSkipRQ] and CLKl LevelRQ] [1 :0] fields come from subtracting PhaseRQ] [11 :0] from a constant.
  • the multiplexer 3370 used to select the TX value ((TXA+TXB)/2) instead selects either the TXA register 3335 or the TXB register 3340. Placing this value on the PhaseTQ][l 1:0] bus 3375 causes the transmit logic to set the driving clock to one side or the other of the data window for write data. Once the driving clock CLKD[0,j] on line 1332 is stable, data is written to a memory component and read back and evaluated, and the TXA or TXB value is either incremented, decremented, or not changed by logic 3390. An increment/decrement value of "1" is used for calibrating the CLKDfOj] clock.
  • FIG. 34 shows transmit timing signals 34(a)-(k) that illustrate four cases of alignment of the CLKD[0j] clock signal 1334 within the tRANG T interval 3405.
  • This diagram illustrates how the signals on the following five buses are generated: CLK4BlendTQ][4:0] 3025, CLK4PhSelTQ][2:0] 3030, CLK4CycleTQ][l:0] 3035, CLKlSkipTQ] 3015, and CLKlLevelTQ][l:0] 3020.
  • the value of PhaseTQ][l 1:0] adjusts the value of these buses and the value of tp RA s ⁇ T (the position of CLKD[0j] within the RANGET interval).
  • the first waveform 34(a) shows the CLKl clock signal over an interval of duration equal to tR A N G ⁇ T
  • the second waveform 34(b) shows the labeling for the four CLKl cycles that comprise the I RANGET interval (note there is no bus labeled "CLKlCyc"; this is shown to make the diagram clearer).
  • the third waveform 34(c) shows the CLK4[0] clock signal
  • waveform 34(d) shows the labeling for the four CLK4 cycles that comprise each CLKl cycle (note - a CLK4Cyc[l:0] bus does exist).
  • the fifth waveform 34(e) shows the numerical values of the PhaseTQ][l 1 :0] bus 3375 as a three digit hexadecimal number.
  • the most-significant digit includes two bits for the CLKlCyc value, and two bits for the CLK4Cyc value.
  • FIG. 34 shows how three buses are extracted from the PhaseTQ][9:0] bus: the CLK4BlendTQ][4:0] 3025, CLK4PhSelTQ][2:0] 3030 and CLK4CycleTQ][l:0] 3035 signals are generated from the PhaseTQ][4:0] 3376, PhaseTQ][7:5] 3377, and PhaseTQ][9:8] 3378 fields of the PhaseTQ][l l:0] signal, respectively.
  • the sixth and seventh waveforms, 34(f) and 34(g) show graphically how the CLKlSkipTQ] and CLKl LevelTQ][ 1 :0] buses 3015 and 3020, respectively, vary as a function of the PhaseTQ][l 1 :0] value. These buses increase in value from left to right in the figure. Note that this is opposite from the direction for the receive case.
  • the PhaseTQ][l l:0] value is 880, 6 (3410).
  • the write data is sampled 3401 on the rising edge 3415 of CLKl at time 000 16 3420.
  • the data is sampled 3402 at 400 ⁇ 6 (3430) by the next rising edge 3435 of CLKl.
  • the associated CLKlLevelTQ][l:0] in FIG. 34(g) value is "01" because one "t LEVEL ⁇ " interval is used.
  • the write data is sampled 3403 by the next falling edge 3440 of CLKl at time 600 16 .
  • the CLKlSkipTQ] value is "1" at "time” 880 16 because a "t S ⁇ iPTN" interval 3445 is used.
  • the write data then crosses into the CLKD[0 j] clock domain, and is sampled 3404 by the rising edge of CLKD[0j].
  • the three intervals labeled "I EVELT”, "ts ⁇ iPTN”, and "ts ⁇ p ⁇ ” connect the four sampling points 3401-3404.
  • the other cases B-D shown at 34(i)-(k) are analyzed in a similar fashion.
  • the size of the tRAN G ⁇ T 3405 interval has been chosen to be four CLKl cycles.
  • the interval could be easily extended (or reduced) using the utilizing the methods that have been described in this example.
  • the upper limit of the ⁇ RANGET interval is actually 3-3/4 CLKl cycles because of the method chosen to align the CLKlSkipTQ] and CLKlLevelTQ][l:0] values to the tpHA S ET values (the first V ⁇ CLKl cycle cannot be used).
  • the loss of the V ⁇ CLKl cycle of range is not critical, and the method shown gives the best possible margin for transferring the write data to the CLKD[0,j] clock domain from the CLKl domain. Other alignment methods are possible.
  • the range of t RANGET values could be easily extended by adding more bits to the PhaseTQ][l 1 :0] value and by adding more level registers 3115 in FIG. 31.
  • FIG. 35 shows timing signals 35(a)-(j) that illustrate how timing values are maintained in the TXA and TXB registers 3335 and 3340, respectively.
  • Waveform 35(a) shows the CLKl signal in the controller 1305.
  • the second waveform, 35(b), shows the RQ[i,0] bus 1315 issuing a WRPATO (write to PATO register) command 3510.
  • Waveform 35(c) shows the pattern data D[i j] received at memory component [i j].
  • the fourth waveform 35(d) shows the internal clock signal CLKD[0,j] that drives the data from the controller.
  • the position of the CLKD[0 j] rising edge is centered on toFFs ⁇ + pHASETj , where:
  • Eqn. (9) Most of the terms on the left side of Eqn. (9) can change as temperature and supply voltage vary during system operation. The rate of change will be relatively slow, however, so that periodic calibration operations can keep the tpHAs ⁇ Tj value centered on the write data bits.
  • the calibration is accomplished by maintaining two separate register values (TXA and TXB) which track the left and right side of the write data window 3520, respectively, shown in the lower part of FIG. 35.
  • the pattern data D[i,j] and the CLKD[0j] rising edge are shown with an expanded scale in waveforms 35(e)-(j).
  • the CLKD[0j] rising edge is also shown at three different positions: tp H ASETj( ⁇ xA), tpHAs ⁇ j( ⁇ x) and IPHASET TXB) in waveforms 35(f), 35(h) and 35(j), respectively.
  • TX represents the average value of TXA and TXB.
  • the TXA value shown at 35(f), will hover about the point 3525 at which tpHASET j ( ⁇ xA) precedes the end of the D[i j][0] bit by t v , D ,MiN + tcLK4CYCLE (3530). If the sampled pattern data is correct (pass), the TXA value is decremented, and if the data is incorrect (fail), the TXA value is incremented.
  • the D[ij][0] bit is sampled by the memory component, which requires a data window of ts, D 3540 and t ⁇ ,D 3550 on either side of the sampling point 3545.
  • the sampled write data must be returned to the controller to evaluate the pass/fail criterion. However, this return of sampled write data might not be required in other implementations.
  • the TXB value shown in FIG. 35(j) will hover about the point 3555 at which tpHAs ⁇ j ( ⁇ xB) precedes the start of the D[ij] [0] bit by IV.D.MA (3560).
  • the TXB value is incremented, and if the data is incorrect (fail), the TXA value is decremented.
  • a pass will cause the timing to change in the direction that makes it harder to pass (reducing the effective data window size).
  • a fail will cause the timing to change in the direction that makes it easier to pass (increasing the effective data window size).
  • the TXA and TXB values will alternate between the two points that separate the pass and fail regions. As noted earlier, this behavior is called "dithering".
  • calibration of TXA stops when the adjustments to TXA change sign (decrement and then increment, or vice versa), and similarly calibration of TXB stops when that value begins to dither.
  • the TXA and TXB values can be allowed to dither, since the average TX value will still remain well inside the pass region.
  • FIG. 36 shows transmit timing signals 36(a)-(m) that illustrate the complete sequence that is followed for a calibration timing operation for TXA/TXB.
  • Waveforms 36(a)-(d) are shown in an expanded view of the pattern read transaction.
  • the first waveform 36(a) shows the CLKl signal and the second waveform 36(b) shows the RQc bus in the controller (see FIG. 20).
  • the third waveform 36(c) shows the pattern data
  • the fourth timing waveform 36(d) shows the returned pattern data QcQ][3:0] in the controller.
  • the time interval between the CLKl edges associated with the WRPATO command 3605 and RDPATO command 3610 is t R, RD 3615.
  • Parameter 3615 is two CLKl cycles in this example.
  • the time interval between the CLKl edges associated with the RDPATO command 3610 and the returned data P0[3:0] 3620 is tc A c.c 3625, the same as for the receive calibration and normal read operations described relative to FIG. 29.
  • the ten cycle pattern access is one step in the calibration operation shown in the lower part of the diagram in timing signals 36(e)-(m).
  • the calibration sequence for this example takes 63 CLKl cycles (here, associated with 00 to 63 in 36(e)). Before the sequence begins, all ongoing transfers to or from the memory components must be allowed to complete.
  • the SelTXB, SelTXAB, and 256orlT signals are set to static values that are held through rising edge 38, associated with time 3630.
  • the following table summarizes the values to which these signals are set:
  • Changing the value of the SelTXAB from 0 to 1 means that a time interval sE ⁇ L i 28 (25 CLKl cycles in this example) must elapse before any pattern commands are issued.
  • the time elapse allows the new value of PhaseTQ][l 1 :0] 3375 to settle in the phase selection and phase blending logic 3210 of the T2 block.
  • the pattern data 3640 is available in the controller after rising edge 35 associated with time 3650.
  • the new value is compared to the expected value, and a pass or fail determination is made if it matches or does not match, respectively.
  • the IncDecTQ] signal in block T3 (FIG.
  • LoadTXA or LoadTXB signal (signal 36(h)) is pulsed for one CLKl cycle to save the incremented or decremented value.
  • the SelTXB 3050, SelTXAB 3055, and 256orlT 3065 signals are set to static values that are held through the update sequence.
  • the PhaseTQ][l 1 :0] value 3375 is not changed (SelTXAB remains low), so that the pattern transfer doesn't need to wait for circuitry to settle as in the calibration sequence.
  • the following table summarizes the values to which these signals are set:
  • Both TXA and TXB can be updated successively using the same pattern read transfer. Note that the update sequence may be performed on all slices in parallel.
  • the control signals can be shared between the slices except for IncDecTQ], which depends upon the pass/fail results for the pattern data for that slice.
  • the initialization sequence begins by setting the TXA register 3335 to the minimum value of 000 ⁇ 6 and by setting the TXB register 3340 to the maximum value fff 16 . These will both be failing values, but when the calibration sequence is applied to them, both values will move in the proper direction (TXA in increment and TXB will decrement).
  • the initialization procedure involves performing the TXA calibration repeatedly until it passes. Then the TXB calibration will be performed repeatedly until it passes.
  • the settings of the various signals will be: Case SelTXB SelTXAB ! 256orlT
  • PhaseTQ][l 1 :0] changes by large amounts when SelTXAB is changed in the normal calibration process described above.
  • initialization sequence may be performed on all slices in parallel. All of the control signals can be shared between the slices except for IncDecTQ], which depends upon the pass/fail results for the pattern data for that slice.
  • FIG. 37 shows a sample block diagram 3900 of the logic for performing the calibration processes that have been described above.
  • these processes include the calibration process in which the PhaseTQ][l 1 :0] or PhaseRQ][l 1 :0] values are incremented or decremented by one, the "update” calibration process in which the PhaseTQ][l 1 :0] or PhaseRQ][l 1 :0] values are incremented or decremented by 256, the "initialize” calibration process in which the PhaseTQ][l 1 :0] or PhaseRQ][l 1:0] values are incremented or decremented from an initial value, by up to 4096 bits, until an initial calibration is achieved, and the "CALSET/CALTRIG” calibration process in which the RQ sampling cycle of the memory components is updated.
  • FIGs.18, 29 and 36 are timing diagrams illustrating the pulsing of the control signals that perform the steps of each calibration process.
  • the logic in FIG. 37 drives these control and data signals.
  • the control and data signals include two sets of signals that are carried on busses that connect to the C3 block in FIG. 20.
  • the first set of control signals includes signals 2060 (D C Q][3:0]), 3910 (LoadTXA, LoadTXB, SelTXB, SelTXAB and 256orlT) and 3915 (IncDecTQ] [1 :0]).
  • This first set of signals corresponds to signals 2030 and 2060 in FIG. 20.
  • the second set of control and data signals includes signals 2050 (QcQ][3:0]), 3925 (LoadRXA, LoadRXB, SelRXB, SelRXAB and 256orlR) and 3930(IncDecRQ][l:0]).
  • This second set of signals corresponds to signals 2040 and 2050 in FIG. 20.
  • the control signals also include the set of signals 3920 (RQ C Q][N RQ -1 :0]) that connect to the C2 block in FIG. 20.
  • the logic 3900 is controlled by the following signals:
  • CalStart 3945 a signal that is pulsed to indicate that a calibration operation should be performed
  • DcQ][3:0] 2060 buses are not busy with normal read or write operations when the calibration operation is started. This is preferably accomplished with a hold-off signal (not shown) that is sent to the controller and which allows presently executing read or write operations to complete, and prevents any queued read or write operations from starting. Additionally, a decision to start a calibration operation could be made by a timer circuit (not shown), which uses a counter to measure the time interval between successive calibration operations. It is also possible that a calibration operation could be started early if there was an idle interval that allowed it to be performed with less interference with the normal read and write transactions. In any case, the calibration operations can be scheduled and executed with only hardware.
  • this hardware-only characteristic would not preclude using a software process in some systems to either schedule calibration operations, or to perform the sequence of pulsing on the control signals. It is likely that a full hardware implementation of the calibration logic would be preferred for use in most systems because of the ease of design and convenience of operation.
  • the CalType[2:0] signal selects the type of calibration operation using the following encodings:
  • CalType[3] bit selects between an update to the TXA/RXA edge and the TXB/RXB edge (in other words, each calibration operation updates either
  • Another bit select whether PATO 1630 or PATl 1635 pattern register is used for the calibration operation.
  • the calibration state machine in logic 3900 begins counting through a sequence that produces the appropriate pulsing of the control signals.
  • the RQSel signal 3960 selects the appropriate request to be placed on the CalRQ[N RQ -l:0] signals 3962.
  • a NOP command (not shown) is the default command selected by decode logic 1722 (FIG. 17) when no other command is specified by the RQ[i j] signal 1604.
  • the PatSel signal 3970 selects which of the pattem registers 1630, 1635 are to be used for the operation. Pattem registers 1630 and 1635 in FIG.
  • the DSel signal 3972 allows a selected pattern register to be steered onto the DcQ][3:0] signals 2060 by way of multiplexers 3976, 3978, and the RQoSel signal 3975 allows the CalRQ[N RQ -l:0] signals 3962 to be steered onto the RQQ][N RQ -1 :0] signals 3920 by way of multiplexer 3980.
  • all slices perform calibration operations in parallel.
  • the contents of a pattern register 1630 or 1635 are read from a memory component and compared to the contents of the corresponding pattern register 1630 or 1635 in the controller.
  • the IncDecRQ] [1:0] signals 3930 will be set to appropriate values to cause the PhaseRQ] [11 :0] value, such as on line 2675 of FIG. 26, to be incremented, decremented, or left unchanged. Note that only the IncDecRQ] [ 1 :0] signals 3930, can be different from slice to slice; the other five RXQ] control signals 3925 will have the same values for all the slices.
  • the contents of a controller pattern register are written to a pattern register in each memory component, read back from the memory component, and compared to the contents of the original pattern register in the controller.
  • the IncDecTQ][l :0] signals 3915 will be set to appropriate values to cause the PhaseTQ][l 1 :0] value, such as on line 3375 of FIG. 33, to be incremented, decremented, or left unchanged. Note that only the IncDecTQ] [ 1 :0] signals 3915 can be different from slice to slice; the other five TXQ] control signals 3910 will have the same values for all the slices.
  • the Compare logic block 3990 There are two sets of signals that are compared by the compare logic block 3990: QcQ][3:0] 2050 and PAT[3:0] 3995 from multiplexer 3978. The results from the compare are held in the Compare Logic 3990 when the CompareStrobe signal 3992 is pulsed.
  • the CompareSel[3:0] signals 3998 indicate which of the operation types is being executed.
  • the CompareSel[3] signal selects between an update to the TXA/RXA edge and the TXB/RXB edge.
  • the CompareSel[2:0] signals select the calibration operation type as follows:
  • the compare logic 3990 looks for a left or right shift of the read data relative to the controller pattern register, indicating that the memory component has changed its RQ sampling point. If there is no shift, no change is made to the phase value. In the case of the calibrate and initialize operations, the compare logic 3990 checks if the read data and the controller pattern register are equal or not. The phase value is either incremented or decremented, as a result.
  • the DoQ][3:0] 3901 signals are outgoing write data signals, being sent from elsewhere in the controller to a memory component.
  • the Rqo[i][N RQ -l :0] signals are outgoing request signals, being sent from elsewhere in the controller to a memory components.
  • the preferred system described routed the CLK signal on bus 1320 with the Y bus signals (the RQ bus 1315).
  • the CLK signal and RQ bus connected to two or more memory components on a memory rank.
  • two memory components in the same rank could have different timing parameters (t ⁇ y, in particular), and as a result it may not be possible to adjust the transmit timing of CLK and RQ signals in the controller so that a component of the memory system is able to receive RQ signals 1604 with the CLKB signal 1606.
  • This problem necessitated the use of the RQ sampling method, in which the CLK signal 1340 has 4 timing events (rising edges) per RQ bit time, and in which a calibration process is performed to select the proper timing event for sampling.
  • the lower sampling limit can be three when calibration pulses on the RQ signals 1604 are limited to the bit time and phase offset of normal RQ signals.
  • the RQ calibration pulses are allowed to have phase offsets with respect to normal RQ signals.
  • the RQ calibration process of the prefe ⁇ ed embodiment is very simple: a high pulse of duration tc LK icY CL E, depicted in timing diagram 18, is sampled by the CLKB signal (with a CLK4 frequency) in a component of the memory system, and looks for a string on three high values, choosing the center high value as the sample point. This approach can be extended to look for a string of 3, 4, or 5 high values (the possible outcomes for all possible phase alignments of RQ and CLKB) in order to select a better- centered sample point.
  • Another embodiment uses a second RQ signal for calibration.
  • this second signal carries a high value during NOP commands and carries a low pulse of duration tc ic YCLE at the same time that the first RQ signal carries its high pulse.
  • the calibration logic 1310, 1355 would search the high and low sampled values to select a better-centered sample point.
  • Yet another variation to the prefe ⁇ ed embodiment is based on the fact that it is not necessary to use a CLK signal (on bus 1320) having four rising edges per RQ bit time in order to get enough timing events to perform the sampling. It would be possible to route four separate CLK signals on separate wires, each with one rising edge per RQ bit time, but offset in phase across the I CLKICYCLE interval. These phase-shifted clock signals would need to be recombined in the memory component 1600 for transmitting and receiving on the DQ bus 1612. It would be beneficial to route multiple clock signals on a main printed circuit board and modules so as to minimize propagation delay differences.
  • two timing events are possible (e.g., a rising edge and a falling edge of a clock with cycle time of I CLKICYCLE )-
  • This alternate embodiment is performed by transmitting high pulses on four RQ signals, each pulse offset by l A of a I CLKICYCLE from one another.
  • the four pulses could be sampled by the rising and falling edge of CLKB on bus 1347.
  • the resulting pattern of eight sample values will indicate where the bit time of the normal RQ signals lie, and the memory component can select either the rising edge or falling edge of CLKB for sampling.
  • This approach would require transmit circuitry in the controller that could adjust the relative phase of RQ signals to generate the calibration pulses. While not shown, such circuitry could be provided by one skilled in the art and based on the requirements of a particular embodiment.
  • a high pulse could be used to indicate the start of the calibration sequence, with further pulses chosen to elicit the worst case pattern sequence for the RQ receivers in the memory.
  • These worst case patterns could be chosen at initialization time from a larger set of predefined candidate patterns and then stored for use during calibration operations.
  • the prefe ⁇ ed embodiment system routed the CLK signal with the Y bus signals (the RQ bus 1315).
  • the CLK signal 1320 and RQ bus connected to two or more components on a memory rank.
  • the fact that two memory components could have very different timing parameters (t ⁇ y , in particular) means that it may not be possible to adjust the transmit timing of CLK and RQ in the controller so that each memory component is able to receive RQ with CLK.
  • This restriction necessitated the use of the RQ sampling method in which the CLK signal is provided with two or more selectable timing events (edges) per RQ bit time.
  • each memory component in a memory rank receives its own clock signal.
  • the transmit timing of each CLK signal can be adjusted in the controller so that CLKBQ j] 1345 has the proper phase to sample the RQ bus 1315.
  • the transmit and receive timing of the DQ bus 1325 is adjusted as in the prefe ⁇ ed embodiment. Routing the clock signal with X bus signals on bus 1325 has the benefit that the RQ signals can use a bit time similar to that of the DQ signals on bus 1325.
  • this benefit may not be fully realized since the wiring topology may limit the maximum signaling frequency of the RQ signals. Additionally, this method may require more clock pins on the controller if the number of slices in a rank is more than one. This increase is because there is one CLK signal per slice but only one CLK signal per rank with the preferred embodiment.
  • This method of routing the clock signal with X bus signals will also have a performance penalty when multiple ranks are present. This penalty occurs either because there are multiple ranks on one module or because there are multiple modules in the memory system.
  • a read or write operation consists of one or more commands transfe ⁇ ed on the RQ bus 1315 followed by a data transfer on the DQ bus 1325. While commands and data are spread out over a time interval, they are usually overlapped with read or write operations to other independent banks of the same rank, or to banks of other ranks. But this method of routing requires that transfers on the RQ or DQ bus of a particular rank Q] use a CLK signal for each slice [i] with a particular phase offset.
  • a transfer to an RQ or DQ bus of a different rank [k] needs a CLK signal for each slice [i] that has a different phase offset.
  • interleaved transfers to different ranks on the RQ or DQ buses would require a settling interval between phase adjustments to the CLK signal for each slice impacting overall performance.
  • This performance impact could be addressed by generating a CLK signal for each slice of each rank (a CLK signal per memory component). It could also be addressed by limiting the number of ranks to one, but if such a limitation on the number of ranks is not desired, a performance penalty will result.
  • An alternate prefe ⁇ ed embodiment uses the falling CLK edges to receive and transmit data bits on the DQ bus 1325.
  • the prefe ⁇ ed embodiment uses the rising edge of CLKB to receive and transmit a bit of information on the DQ bus 1325. It is possible to use the falling edge of CLKB at 1347 to also receive and transmit a DQ bit. As noted, the falling edge would probably necessitate the use of differential signaling for CLK to minimize any duty cycle e ⁇ or. However, such an approach would equalize the maximum frequency component of the CLK signal and the DQ signals and would require the use of register elements in the memory components that use both the rising edge and falling edge of clock. It is also possible to use the falling edge of CLKB to also receive an RQ bit from the RQ bus 1315.
  • this approach would probably necessitate the use of differential signaling for CLK to minimize any duty cycle e ⁇ or. As with the above case, this approach would equalize the maximum frequency component of the CLK signal and the RQ signals and would require the use of register elements in the memory components that use both the rising edge and falling edge of clock.
  • the controller includes a storage a ⁇ ay to store a separate set of RXA/RXB/TXA/TXB phase adjustment values for each rank and each slice in the system (4x12 bits of phase values for each memory component using 12 bit phase resolution).
  • the phase adjustment values for a particular rank would be copied into the appropriate registers in the R3 (see FIG. 26) and T3 (see FIG. 33) blocks in the prefe ⁇ ed embodiment for each slice when a data transfer was to be performed to that rank. It is possible that a settling time would be needed between data transfers to different ranks to give the phase selection and phase blending logic of the R2 (see FIG. 25) and T2 (see FIG. 32) blocks for each slice time to stabilize the clocks they are generating.
  • the settling time needed between data transfers to different ranks will likely impact system performance. This performance impact can be minimized by a number of techniques in the memory controller.
  • the first of these techniques is to perform address mapping on incoming memory requests. This technique involves swapping address bits of a memory request so that the address bit(s) that selects an applicable rank (and module) come from address fields that change less frequently. Typically, these will be address bits from the upper part of the address.
  • the second of these techniques would be to add reordering logic to the memory controller, so that requests to a particular rank are grouped together and issue sequentially from the controller. In this way, the settling time penalty for switching to a different rank can, in effect, be amortized across a larger number of requests.
  • This embodiment requires that transfers on the RQ 1315 or DQ 1325 bus of a particular rank Q] use a CLK signal for each slice [i] with a co ⁇ esponding, separately calibrated phase offset.
  • a transfer to an RQ or DQ bus of a different rank [k] needs a CLK signal for each slice [i] that has a different phase offset.
  • interleaved transfers to different ranks on the RQ or DQ buses would require a settling interval between phase adjustments to the CLK signal for each slice, and a simultaneous settling interval for phase adjustments to the CLKD[0j] or
  • the description of the prefe ⁇ ed system related to calibration logic M4 used two registers PATO and PATl (registers 1630 and 1635, respectively, FIG. 16) to hold patterns for use in the calibration, update, and initialization sequences needed to maintain the proper phase values in the RXA/RXB/TXA/TXB registers for each slice.
  • PATO and PATl registers 1630 and 1635, respectively, FIG. 16
  • Adding registers would require at least the following: 1) enlarging the fields in the calibration commands that select calibration registers; 2) adding more registers to the memory; and 3) controller hardware that performs calibration, update, and initialization sequences to ensure that the added registers are loaded with the proper values.
  • the description of the prefe ⁇ ed embodiment used a single four bit transfer per DQ signal for performing calibration. Since calibration operations can be pipelined (like any read or write transfer), it would possible to generate a pattern of any length, provided there is enough register space to hold a multicycle pattern. The use of a longer calibration pattern in an alternate prefe ⁇ ed embodiment ensures that the phase values used during system operation have more margin than in the prefe ⁇ ed embodiment.
  • the prefe ⁇ ed embodiment used the same data or test patterns for calibrating the RXA/RXB/TXA/TXB phase values.
  • the use of customized calibration patterns for the two limits of the read and write bit windows ensures that the phase values used during system operation are provided with added margin.
  • the preferred embodiment assumed that the calibration, update, and initialization sequences used the same patterns.
  • an initialization sequence may have access to more system resources and more time than the other two sequences. This means that during initialization, many more candidate patterns can be checked, and the ones that are, for example, the most conservative for each RXA/RXB/TXA/TXB phase values for each slice can be saved in each memory component for use during the calibration and update sequences.
  • a second possible way to accomplish placing patterns in the pattern registers is to use a static pattern that is hardwired into a read-only pattern register. This pattern could be used to initialize the phase values to a usable value, and then refine the phase values with additional patterns.
  • a third possible way to place patterns in the pattern registers is to use a circuit that detects when power is applied to the memory component. When power is detected, the circuit could load pattern registers with initial pattern values.
  • a fourth possible way is to use a reset signal or command to load pattern registers with initial pattern values.
  • phase values in the RXA/RXB and TXA/TXB registers were averaged to give the best sampling point and drive point for read bits and write bits. For some systems, it might be preferable to pick a point that is offset one way or the other to compensate for the actual transmit and receive circuitry. While the prefe ⁇ ed embodiment did not explicitly show how the calibration, update, and initialization sequences generate the control signals for manipulating the RXA/RXB/TXA/TXB registers, there are a number of ways to do this. One approach is to build a state machine which sequences through the 60 or so cycles for the update and calibration sequences and pulsing the control signals, as indicated in the timing diagrams in FIGs.
  • Systems could be configured to handle longer sequences needed for initialization. Such systems would be triggered by software, in the case of the initialization sequence, or by a timer, in the case of the update and calibration sequences.
  • the update and calibration sequences could arbitrate for access to the memory system and hold off the normal read and write requests.
  • a second way to generate the control signals for manipulating the RXA RXB/TXA/TXB registers would be to use software to schedule the sequences and generate the control signals. This could be an acceptable alternative in some applications.
  • the dynamic mesochronous clocking techniques are suitable for systems in which power dissipation is important (such as portable computers).
  • power dissipation is important
  • FIG. 38 shows an example of the logic needed in the memory controller 3705 and the memory 3703 to implement a "dynamic slice width" power reduction mechanism.
  • each memory component 3703 connects to two DQ signals 3710 and 3720.
  • the two M5 blocks and two M2 blocks are appended with a "-0" and "-1" designation. It is noted that only a read operation is discussed; a write operation would use similar blocks of logic.
  • the internal Q M signals in blocks 3725 and 3730 and external DQ signals 3710 and 3720 are appended with "[0]"and "[1]".
  • the Rl-0 block 3745 and Rl-1 block 3750 in the controller convert the serial signals into four bit parallel words (QcQ][3:0][0] and QcQ][3:0][l]) at 3755, 3760, respectively.
  • the clocks to the Rl-1 3750 and M2-1 3740 blocks in the controller and memory are disabled.
  • the DQ[i j][l] signal 3720 of each slice is not used, reducing the available bandwidth by half.
  • the read data from the M5-1 block 3730 must be steered through the M2-0 block 3735 and onto the DQ[ij][0] signal bus 3710. In the controller, this data must be steered from the Rl-0 block 3745 onto the QQ][3:0][1] signal bus 3760.
  • This steering is accomplished by a four- bit 2-to-l multiplexer 3795 and a four bit register 3775 in memory 3703, and by two four- bit 2-to-l multiplexers, 3770 and 3780, and a four bit register 3785 in the controller.
  • the select control input of the multiplexers are driven by the HalfSliceWidthMode signal 3788. In the memory component, this signal is gated with a Load2 signal 3772 (by logic gate 3790) that alternates between selecting the M5-0 read data and the M5-1 read data.
  • the load control input of the registers are driven by the LoadRQ] signal 3795 in the memory controller and by the Load signal 3797 in the memory 3703.
  • FIG. 39 shows timing signals 39(a)-(k) for a read transaction performed by the system of FIG. 38. These timing signals are similar to the previous read transaction diagram (FIG. 14 A) except where noted.
  • the Read command 3805 is transmitted as the RQ[ij] signal 39(b), causing an internal read access to be made to the two memory core blocks R5-0 and R5-1.
  • the parallel read data Q[7:4] 3810 and Q[3:0] 3815 is available on the two internal buses Q M [3:0][1] and Q M [3:0][0] in blocks 3730 and 3725, respectively, as represented in signals 39(e) and 39(f).
  • Q[3:0] is selected first because the Load2 signal39(d) is low and is converted to four serial bits on the DQ[i j][0] bus, shown as waveform 39(g).
  • Q[7:4] is selected next because the Load2 signal goes high and this signal is also converted into four serial bits on the DQ[ij][0] bus.
  • the first four bits Q[3:0] are received on the DQ[0 j][0] bus (waveform 39(g)) by the Rl-0 block and converted to four parallel bits, which are loaded into the register 3785.
  • the next four bits Q[7:4] are received on the DQ[0j][0] bus (waveform 39(g)) by the Rl- 0 block and converted to four parallel bits. These are multiplexed onto the QcQ][3:0][l] signals while the register 3785 is multiplexed onto the QcQ] [3 :0] [0] signals by multiplexer 3770.
  • the reduced slice width modes could include several slice widths. Note that the above examples represent ways that power usage may be lowered, by reducing the number of signals that each memory slice drives. Other alternatives are also possible.
  • the HalfSliceWidthMode signal on the controller component and the memory component would typically be driven from a storage register on the memory component, although it could also be a signal that is directly received by each memory component.
  • the HalfSliceWidthMode signal would be asserted and deasserted during normal operation of the system so that power could be reduced. Alternatively, it could be asserted or deasserted during initialization of the system so that power dissipation could be set to the appropriate level. This could be important for reducing the system's temperature or for reducing the system's power consumption. This might be an important feature in a portable system that had limited cooling ability or limited battery capacity.
  • the System shown in FIG. 38 represents one way in which power might be lowered by reducing the number of signals that a component in the memory system transmits or receives.
  • Other methods may include reducing the number of signals that a rank transmits or receives, or reducing the number of bits transmitted or received during each read or write transaction. These alternate methods are described below.
  • a dynamic rank width method could be used. For example, a HalfRankWidthMode signal 3788 could be asserted causing each read transaction or write transaction to access only half of the memory of the rank (e.g., with two or more memory components sharing the same slice within a rank). An address bit could be added to the request information on the RQ bus to select between the two sets of memory components. Selected components would perform the access as in a normal read or write transaction. Memory components not selected would not perform any access and would shut off the internal clock signals as in the dynamic slice width example in FIG. 38.
  • transmit and receive slices of the controller co ⁇ esponding to the selected memory components could perform the access as in a normal read or write transaction. Transmit and receive slices of the controller co ⁇ esponding to memory not selected would then not perform any access and would shut off the internal clock signals as in the dynamic slice width example in FIG. 38.
  • a rank could be divided into quarters, requiring two address bits in the controller and each memory component to select the appropriate quarter-rank.
  • the HalfRankWidthMode signal 3788 on the controller 3705 and memory would typically be driven from a storage register in component 3703, although it could also be a signal that is directly received by memories.
  • the HalfRankWidthMode signal could be asserted and deasserted during normal operation of the memory system so that power could be effectively reduced. Alternatively, the signal could be asserted or deasserted during initialization of the system so that power dissipation could be set to an optimal or appropriate level.
  • a dynamic depth mode could be defined, in which a HalfDepthMode signal (not shown) is asserted, which causes each read transaction or write transaction to access only half of the normal number of bits for each transaction.
  • an address bit would have to be added to the request information on the RQ bus to select between the two sets of bits that can be accessed.
  • the controller would need to use the same address bit to decide which of the two sets of bits are being accessed.
  • the transmit and receive slices of the controller and memory would shut off the internal clock signals during the periods that no bits are being transfe ⁇ ed. This would effectively reduce power by reducing bandwidth.
  • the transfer size could be divided into quarters, requiring two address bits in the controller and each memory component to select the appropriate quarter-transfer-block.
  • the HalfDepthMode signal on the controller component (such as component 3705) and memory components (such as component 3703) would typically be driven from a storage register, although it could also be a signal that is directly received by each component.
  • the HalfDepthMode signal would be asserted and deasserted during normal operation of the system so that power could be reduced. Alternatively, it could be asserted or deasserted during initialization of the system so that power dissipation could be set to an optimal or appropriate level.
  • Power could also be reduced by reducing the operating frequency of the memory components.
  • This approach is particularly appropriate for dynamic mesochronous clocking systems such as the systems described in this document because there is no clock recovery circuitry in the memory component.
  • the memory component will therefore tolerate a very wide range of input clock frequency, unlike memory components that utilizes DLL or PLL circuits that typically operate in a narrow range of clock frequencies.
  • a dynamic frequency mode could be defined, in which a HalfFrequencyMode signal is asserted, which caused all signals connecting the controller and memory components to operate at half their normal signaling rate.
  • any timing parameter that is expressed in absolute time units e.g., nanosecond units, as opposed to clock cycle units
  • This timing parameter adjustment would typically be done in the controller by changing the interval between commands on the RQ bus. For example, the interval between a row access and a column access to that row must be greater than the T RCD parameter, a core characteristic that is expressed in nanoseconds.
  • the controller will typically insert the appropriate number of clock cycles between the row access command and the column access command to account for this parameter. If the clock rate is reduced by one-half, the number of cycles between the two commands can also be reduced by one-half. If this reduction is not done, the memory component will still operate co ⁇ ectly, but not optimally.
  • the controller will also need to provide logic to manage the reduction in bandwidth of a memory system if portions of the controller are not operated at a lower clock frequency. In other words, if the controller runs at the normal clock rate and the memory components run at half the clock rate, then the controller will need to wait twice as long for each memory access. Holding registers and multiplexers can handle this process using techniques similar to those for dynamic slice width in FIG. 38. It is noted that it could be possible to support several programmable frequencies in the system by extending this method. For example, the transfer rate could be reduced to one-quarter of the normal rate.
  • the HalfFrequencyMode signal on the controller of a memory system would typically be driven from a storage register in the controller, although it could also be a signal that is directly received by the controller.
  • the HalfFrequencyMode signal would be asserted and deasserted during normal operation of the system so that power could be reduced. Alternatively, it could be asserted or deasserted during initialization of the system so that power dissipation could be set to an appropriate level.
  • the prefe ⁇ ed embodiments discussed above utilize slices of memory components that each had one DQ (data) signal connecting the memory components in each slice to the controller. As mentioned previously with respect to FIGs. 38 and 39, the benefits of dynamic mesochronous clocking are also realized with memory components that have widths that are greater than one DQ signal.
  • each memory component could have two DQ signals connecting to the memory controller.
  • a memory controller will be designed to support memory components that have a variety of DQ widths, including a DQ width of one signal as well as a DQ width of two or more signals. This means that such a controller will need to be able to independently adjust the sample and drive points of each DQ signal. This means that when memory components with a DQ width of two or more signals are present, the signals for each memory component can still be given different sample and drive points at no extra cost.
  • each slice contains a single memory component.
  • two or more slices may be occupied by a single memory component (i.e., where the memory component communicates with the memory controller using two or more parallel DQ signal sets).
  • a slice may contain two or more memory components (which would therefore share a single DQ signal set and a set of calibration circuitry within the memory controller, for example using the HalfRankWidthMode signal described above to select one of the two memory components within each slice).
  • phase offsets of clocked components to drift over an arbitrarily large range during system operation in order to remove clock recovery circuits (DLL and PLL circuits) from the memory components.
  • This technique could be applied to a non- memory system just as easily, resulting in similar benefits. For example, assume there are two logic components (integrated circuits that principally contain digital logic circuits, but which might also include other types of circuits including digital memory circuits and analog circuits) that must communicate at high signaling rates.
  • Prior art methods include placing clock recovery circuitry in both components to reduce timing margin lost because of timing imprecision.
  • clock recovery circuitry could be entirely removed from one of the logic components, with all phase adjustments performed by another component that still retains the clock recovery circuitry.
  • Periodic calibration similar to that performed in the memory system of the prefe ⁇ ed embodiment would keep the required phase offsets near their optimal values for communication between the two components. Keeping phase offsets near their optimal values could be important if there was some design or cost asymmetry between the two components. For example, if one component was very large, or was implemented with a better process technology, it might make sense to place all the clock recovery and phase adjustment circuitry in that component. This placement of the circuitry in one component would allow the other component to remain cheaper or to have a simpler design or use an existing or proven design. Also, if one of the components went through frequent design updates, and the other component remained relatively stable, it might make sense to place all the clock recovery and phase adjustment circuitry in the stable component.
  • the term "mesochronous system” refers to a set of clocked components in which the clock signal for each component has the same frequency, but can have a relative phase offset.
  • the techniques described for a prefe ⁇ ed system permitted the phase offsets of the clocked components to drift over an arbitrarily large range during system operation in order to remove clock recovery circuits (DLL and PLL circuits) from the memory components. If these clock recovery circuits are left in a memory portion (i.e., not in the controller), the phase offsets of the memory portion will drift across a much smaller range during system operation. However, such a system could still benefit from the techniques utilized in the prefe ⁇ ed embodiment to maximize the signaling rate of the data (and request) signals.
  • the above could be considered a pseudo-static mesochronous system since it will be expected that the phase offsets of the memory components will not drift too far from the initial values.
  • the hardware to support this could include all the hardware described for a system in accordance with the preferred embodiment. However, because the dynamic phase offset range is expected to be smaller, it is possible that the hardware required could be reduced relative to the prefe ⁇ ed embodiment, reducing cost and design complexity.
  • An alternative approach would be to use the dynamic mesochronous techniques for intra-component clocking and communication (instead of for inter-component clocking and communication described in the prefe ⁇ ed embodiments above).
  • one block the "master”
  • the slave the phase difference between the clocks for the master and slave blocks would slowly drift during the operation of the circuit because of temperature and supply voltage variations.
  • the master block would perform calibration operations to ensure that it could transmit and receive to the slave block, regardless of the cu ⁇ ent state of the phase of the slave clock.
  • the calibration hardware and the calibration process would be similar to what has been shown for the above-described prefe ⁇ ed embodiments systems. Periodic calibration would keep the required phase offsets near their optimal values for communication between the two blocks.
  • phase offsets of the clock of the slave block will drift across a much smaller range during system operation.
  • a clocking arrangement could still benefit from the techniques utilized in the prefe ⁇ ed embodiment to maximize the signaling rate.
  • static phase offsets for the slave blocks would be determined at initialization.
  • these static offsets would be adjusted by small amounts to keep them closer to their optimal points. As a result, signaling bandwidth could be higher than the case where these periodic calibration operations were not carried out.
  • This intra-device clocking and communication system is similar to a pseudo-static mesochronous clocking system described above, since it will be expected that the phase offsets of the slave blocks will not drift too far from their initial values.
  • the hardware to support a pseudo-static mesochronous device could include all the hardware for a dynamic mesochronous device. However, because the dynamic phase offset range is expected to be smaller, it is possible that the hardware required could be reduced relative to the dynamic mesochronous device, reducing cost and design complexity.
  • FIG. 40 shows another approach to implement the circuit for the controller block R2 2500.
  • This circuit is responsible for creating the RCLK 4030 clock signal needed for receiving the read data from the memory components, and for creating the RX_LD_ENA0 4032 signal for performing serial-to-parallel conversion and the RX_LD_ENA1 4034 signal for synchronizing receive data between the RCLK and CLKl clock domains in block 4100 (FIG. 41).
  • the inputs to this circuit are CLK4BlendRQ][4:0] (line 2325), CLK4PhSelRQ][2:0] (line 2330) and CLK4CycleRQ][l :0] (line 2335) from block R3.
  • This circuit also receives CLK4[7 :0] , and CLK4Cyc[ 1 :0] from outside of block R0 (from block Cl in FIG. 20).
  • the circuit for generating the RCLK 4030 signal is the same as the circuit for generating the CLKQ[0j] 1334 and its functionality is explained in the description for FIG. 25.
  • the RX_LD_ENA0 signal indicates when the eight receive data bits have been serially shifted into bit registers 4110 (FIG. 41) and are ready to be loaded onto the parallel bus 4135 (FIG. 41).
  • a comparator 4024 compares a RCLK synchronized output of the multiplexer 4020, i.e., a selected CLK4Cyc[l :0] value, to the CLK4CycleRQ][l:0] value.
  • the comparator generates a positive output, i.e. RX_LD_ENA0 is asserted, when its two inputs are equal. This signal is asserted once every 4 RCLK clock cycles.
  • the RX LD ENA1 signal is generated in a similar fashion as the RX_LD_ENA0 signal except the CLK4CycleRQ][l] bit is inverted before it is sent to the comparator 4026. The net effect is that the RX_LD_ENA1 signal is asserted two RCLK cycles after the RX_LD_ENA0 signal is asserted.
  • FIG. 41 shows another approach to implement the controller block Rl 2400 of system 2300 for an 8-bit read data path.
  • This circuit 4100 consists of three stages and is responsible for receiving read data from the memory components and inserting a programmable delay.
  • the first stage is called the de-serialization stage.
  • read data input from the DQ 1325 bus is converted to a parallel 8-bit bus 4135 by shifting the serial read data into the latches 4110 through four successive RCLK clock cycles.
  • the latch 4108 is clocked by the negative edge of the RCLK signal so that the even bits are latched during the negative phase of the RCLK signal. Meanwhile, the odd bits are latched during the positive phase of the RCLK signal.
  • the second stage of controller block Rl 2400 is called the synchronization stage, and is also sometimes called the skip circuit.
  • the synchronization stage determines whether the read data is delayed by an additional two RCLK clock cycles (which is equal to a half CLKl clock cycle), as governed by the CLKlSkipRQ] control signal.
  • the synchronization stage is responsible for transferring the read data from the RCLK clock domain to the CLKl clock domain, which runs at one fourth of the frequency of RCLK clock.
  • the latch 4140 stores the parallel read data selected by RX_LD_ENA0 signal 4032 via the multiplexer 4130.
  • the latch 4120 stores a two-RCLK-cycles-delayed read data selected by RX_LD_ENA1 signal 4034 via the multiplexer 4115.
  • the output of latch 4140 is coupled to an input of the multiplexer 4130 and an input of multiplexer 4115 by signal line 4112.
  • the output of latch 4120 is coupled to an input of the multiplexer 4115 by signal line 4122.
  • the control signal CLKlSkipRQ] selects either the output of latch 4120 or latch 4140 via the multiplexer 4150 to provide the most optimal setup and hold time margins of the read data with respect to the latch 4170, which is sampled by the CLKl signal 2015.
  • the final stage of controller block Rl 2400 is called the levelization stage, where a delay of zero to three CLKl cycles is inserted into the read data path.
  • a four-bit version of this circuit is described above in detail with respect to FIG. 24.
  • the output of the levelization stage is the 8-bit RDATA 4102.
  • FIG. 42 shows another approach to implement the controller block T2 3200, which is responsible for creating the TCLK clock signal 4230, TX_LD_ENA0 signal 4232 and TX_LD_EN1 signal 4234 needed for transmitting the write data to the memory component 1310 as shown in FIG. 30.
  • This circuit is exactly the same as the one described in FIG. 40 except the inputs to this circuit are CLK4BlendTQ][4:0], CLK4PhSelTQ][2:0] and CLK4CycleTQ][l:0] from block T3.
  • This circuit also receives CLK4[7:0] and CLK4Cyc[l:0] from outside of block TO (from block CI in FIG. 21).
  • FIG. 21 shows another approach to implement the controller block T2 3200, which is responsible for creating the TCLK clock signal 4230, TX_LD_ENA0 signal 4232 and TX_LD_EN1 signal 4234 needed for transmitting the write data to the memory component 1310
  • controller block TI 3100 which is responsible for transmitting write data on an 8-bit parallel bus 4302 to memory and inserting a programmable delay. Similar to the receive read data path, this circuit also consists of three stages, namely levelization, synchronization and serialization.
  • the first stage of levelization is the same as the embodiment shown in FIG. 31 , except that in this embodiment the data path is eight bits wide instead of four bits wide.
  • the write data is written into and then sent from latch 4355 in the CLKl domain.
  • This write data is selected via the multiplexer 4350 by the TX_LD_ENA1 signal 4234 prior to being sampled by the TCLK signal 4230 and stored in latch 4320.
  • the CLKlSkipTQ] selects either the output of latch 4320 (TX_LD_ENA1- delayed write data) or the output of latch 4355 via multiplexer 4340 to provide the most optimal setup and hold time margins of the write data with respect to the latches 4304, which are sampled by the TCLK signal 4230.
  • the final serialization stage is similar to the embodiment described in FIG. 31 except that two parallel sets of 4-bit shift registers 4304 are used to store the 8 bit parallel write data.
  • Six of the write data bits, 0 through 5, are independently loaded via a set of 2- to-1 multiplexers 4306 controlled by the TX_LD_ENA0 signal 4232.
  • Another multiplexer 4308 is controlled by the TCLK, which altematively selects an even bit during the positive phase of the TCLK and an odd bit during the negative phase of the TCLK.
  • the selected transmit write data bit is sent to the memory via DQ bus 1325.
  • the data signals on the DQ bus 1325 may be transmitted and received as either single ended or differential data signals.
  • the number of bits transmitted through the TI and Rl circuits during each CLKl clock cycle may be fewer or greater than in the embodiments described above.
  • the ratio of the RCLK and TCLK clock rates to the CLKl clock rate could be greater than or less than the four-to-one clock rate ratio used in the prefe ⁇ ed embodiments. For instance, clock rate ratios of two or eight might be used in other embodiments.

Abstract

A memory system includes a memory controller (405) and a memory component (410) coupled to each other. An interface of the memory component (410) is configured to receive a first signal from the memory controller (410) with read request information, retrieve the read data information (410) from the memory core in response to the request information, and transmit to the memory controller (410) a second signal containing the read data information. The read data information includes read data symbols, where the average duration of the read data symbols, measured at the interface, defines a symbol time interval. A first external access time is measured at the interface between a first read request and read data transmitted by the interface in response to the first read request. A second external access time interval is measured at the interface between a second read request and read data transmitted by the interface in response to the second read request. The difference between the first external access time and the second external access time is greater than one-half of the symbol time interval.

Description

TIMING CALIBRATION APPARATUS AND METHOD FOR A MEMORY DEVICE SIGNALING SYSTEM
This application claims priority to U.S. provisional application 60/343,905, filed on October 22, 2001, and U.S. provisional application 60/376,947, filed on April 30, 2002, both of which are hereby incoφorated by reference.
FIELD OF THE INVENTION
This invention generally relates to the field of digital circuits, and more particularly to an apparatus and method for timing calibration and memory device signaling systems.
BACKGROUND OF THE INVENTION
Integrated circuits connect to and communicate with each other, typically using a bus with address, data and control signals. Today's complex digital circuits contain storage devices, finite-state machines, and other such structures that control the movement of information by various clocking methods. Transferred signals must be properly synchronized or linked so that information from a transmit point is properly communicated to and received by a receive point in a circuit.
The term "signal" refers to a stream of information communicated between two points within a system. For a digital signal, this information consists of a series of
"symbols," with each symbol driven for an interval of time. In digital applications, the symbols are generally referred to as "bits" in which values are represented by "zero" and "one" symbols, although other symbol sets are possible. The values commonly used to represent the zero and one symbols are voltage levels, although other variations are possible.
In some cases, a signal will be given more than one name (using an index notation), with each index value representing the signal value present at a particular point on a wire. The two or more signal names on a wire represent the same information, with one signal value being a time-shifted version of the other. The time-shifting is the result of the propagation of voltage and current waveforms on a physical wire. Using two or more signal names for the same signal information allows for easy accounting of the resulting propagation delays.
The term "wire" refers to the physical interconnection medium which connects two or more points within a system, and which serves as the conduit for the stream of information (the signal) communicated between the points. For example, but without limitation, a wire can be a copper wire, a metal (eg., copper) trace on a printed circuit board, or a fiber optic cable. A "bus" is a wire or a set of wires. These wires are collected together because they may share the same physical topology, or because they have related timing behavior, or for some other reason. The assignment of wires into a bus is often a notational convenience. The terms "line," "connection" and "interconnect" mean either a bus, wire or set of wires as appropriate to the context in which those terms are used.
The term "signal set" refers to one or more signals. Whenever a signal or signal set is described herein as being coupled to or attached to a device or component, it is to be understood that the device or component is coupled to a wire, set of wires or bus that carries the signal.
The mapping of a signal onto a physical wire involves tradeoffs related to system speed. The use of one physical wire per signal (single-ended signaling) uses fewer wires. The use of two physical wires per signal (differential signaling) permits shorter bit intervals. The mapping of signals onto physical wires can also involve optimization related to system resources. Two different signals can share the same wire (i.e., they are multiplexed) to minimize the number of physical wires. Typically, this must be done so that the potential timing conflicts that result are acceptable (in terms of system performance, for instance).
The interval of time during which a bit or symbol is transmitted or received at a particular point on a wire or at a device interface is the "symbol time interval," "bit time," "bit time interval," "bit window," or "bit eye." These time interval terms for transmitting and receiving are used interchangeably. Usually, the bit interval for transmit signals must be greater than or equal to the bit interval for receive signals.
In FIG. 1, a bus 20 interconnects a memory controller 22 and memory components (MEMS) 24. Physically, the bus 20 comprises traces on a printed circuit board or wiring board, wires or cables and connectors. Each of these devices 22, 24 has a bus output driver or transmitter circuit 30 that interfaces with the bus 20 to drive data signals onto the bus to send data to other integrated circuits. Each of these devices also has a receiver. In particular, the bus output drivers 30 in the memory controller 22 and MEMS 24 are used to transmit data over the bus 20. The bus 20 transmits signals at a rate that is a function of many factors such as the system clock speed, the bus length, the amount of current that the output drivers can drive, the supply voltages, the spacing and width of the wires or traces making up the bus, and the physical layout of the bus itself. Clock, or control, signals serve the purpose of marking the passage of time, thereby controlling the transfer of information from one storage location to another. The memory controller 22 is connected to a central processing unit (CPU) 40 and other system components 50, such as a graphics control unit, over bus 45.
As signals pass over a bus and through device interfaces, the signals experience propagation delays. Propagation delays are affected by variables such as temperature, supply voltage and process parameters (which determine physical characteristics of the devices sending and receiving the signals). For example, at a low operating temperature with a high supply voltage, signals may be transmitted with a relatively short delay. Alternatively, at a low supply voltage and high operating temperature, a significantly longer delay may be experienced by transmitted signals.
Variations in the process parameters, which result in variations in the performance of otherwise identical devices, cause devices either on a single bus, or devices on parallel buses to experience different signal propagation delays. The load on each bus, which depends on the number of devices connected to the bus, may also affect signal propagation. In sum, the phase relationships between transmitted and received signals, are affected by numerous factors, some of which may change during the operation of a system. Small changes in propagation delays can result in data transfer errors, especially in systems with very high bit (or more generally, symbol) transfer rates, and thus very short bit (or symbol) times. In order to account for actual propagation delays, it is desirable, especially in systems with very high bit (or symbol) transfer rates (e.g., without limitation, 250 Mb/s or higher) to synchronize signal transmitters and receivers, to account for actual propagation delays. The present invention provides systems and methods for dynamically synchronizing signal transmitters and receivers, even when the variations in propagation delays caused by temperature, voltage, process and loading variations exceed an average symbol time interval. Normally, a variation in propagation delay of even a half symbol time interval will cause a memory system or data transfer system to fail, because movement of a half symbol time will cause the data sample point to move from the center of the data eye to the edge of the data eye. Change in the propagation delay of more than a half symbol time will, in conventional prior art systems, cause the wrong symbol to be sampled by the receiving device. In the present invention, such changes in propagation delay are automatically "calibrated out" by the use of dynamic propagation delay calibration apparatus and methods.
SUMMARY OF THE INVENTION
This invention generally relates to apparatus and methods for timing calibration and device signaling systems in which phase offsets of system device components are not necessarily fixed during normal system operation, but are allowed to vary over a drift range. Systems designed in accordance with the present invention allow for the calibration and adjustment in memory device signaling systems so that the transmission of signal information between a first device (such as for example a memory controller) and a second device (such as for example a memory component) occurs without errors even when the accumulated delays between the first device and second device change by a half symbol time interval or more during operation of the system. This invention can also be utilized for communications between circuit blocks within a single integrated circuit or component.
BRIEF DESCRIPTION OF THE DRAWINGS For a more complete understanding of the present invention and advantages thereof, reference is now made to the following description taken in conjunction with the accompanying drawings:
FIG. 1 is a block diagram of a prior art bus connecting a memory controller and a number of memory components. FIG. 2 is a block diagram of a prior art static mesochronous memory system connecting a controller and a memory. FIG. 3 is a timing diagram for the signals of the static mesochronous memory system in FIG. 2.
FIG. 4 is second example of a block diagram of a prior art static mesochronous memory system connecting a controller and a memory. FIG. 5 is a timing diagram for the signals of the static mesochronous memory system in FIG. 4.
FIG. 6 is a block diagram of a dynamic mesochronous memory system connecting a controller and a memory in accordance with a preferred embodiment of the present invention. FIG. 7 is a block diagram of a dynamic mesochronous memory system in accordance with an alternate preferred embodiment of the present invention.
FIGS. 8 A and 8B depict dynamic mesochronous memory systems in which the X and Y buses are parallel to each other.
FIG. 9 is block diagram of a dynamic mesochronous memory system in accordance with an alternate preferred embodiment of the present invention.
FIG. 10 depicts sample splitting element configurations.
FIG. 11 depicts sample internal and external termination component variations.
FIG. 12 is logic diagram for a baseline system configuration 1200 for a component shown in the system topology diagrams. FIG. 13 depicts a dynamic mesochronous memory system in accordance with an alternate preferred embodiment of the present invention.
FIGs. 14A and 14B depict a sequence of timing signals for a read transfer of the system topology of FIG. 13.
FIG. 15 depicts a sequence of timing signals for a write transfer of the system topology of FIG. 13.
FIG. 16 is block diagram of a memory system in accordance with a preferred embodiment.
FIG. 17 is logic diagram for a memory system of the preferred embodiment.
FIG. 18 shows a sequence of timing signals for block Ml of the memory system of FIG. 16. FIG. 19A is a logic diagram of the M2 module in the memory system of FIG. 16 for transmitting read data on a bus.
FIG. 19B is a logic diagram of the M3 module in the memory system of FIG. 16 for receiving write data. FIG. 20 is a block diagram for a controller of the topology of FIG. 13 comprising three blocks, C1-C3, and interconnecting buses between the blocks.
FIG. 21 is a logic diagram for block CI of FIG. 20.
FIG. 22 shows the clock generation sequence for block CI of the controller.
FIG. 23 is a block diagram for the controller module responsible for receiving read data and comprising three blocks Rl -R3, and interconnecting buses between the blocks.
FIG. 24 is a logic diagram for a block Rl of a controller module for receiving read data from a memory and inserting a programmable delay.
FIG. 25 is logic diagram for a block R2 of a controller module for creating a clock for receiving read data. FIG. 26 is logic diagram for a block R3 of a controller module for generating the value of a clock phase for receiving read data.
FIG. 27 shows a sequence of receive timing signals illustrating four cases of alignment of a clock signal within a time interval and the generation of bus signals.
FIG. 28 shows a sequence of timing signals that illustrate how timing values are related and maintained in RXA and RXB registers.
FIG. 29 shows a sequence of receive timing signals that illustrate a calibration sequence for transferring bus signals.
FIG. 30 is a block diagram for a controller block TO, part of block C3, and responsible for transmitting write data. FIG. 31 is a logic diagram for block TI, part of block TO, for transmitting write data and inserting a programmable delay.
FIG. 32 is a logic diagram for block T2, part of block TO, for creating a clock signal for transmitting write data.
FIG. 33 is a logic diagram for block T3, part of block TO, for generating the value of a clock phase for transmitting write data. FIG. 34 shows a sequence of transmit timing signals illustrating four cases of alignment of a clock signal within a time interval and the generation of bus signals.
FIG. 35 shows a sequence of timing signals that illustrate how timing values are related and maintained in TXA and TXB registers. FIG. 36 shows a sequence of transmit timing signals that illustrate a calibration sequence for transferring bus signals.
FIG. 37 is a block diagram of the logic needed to perform the calibration processes of a preferred embodiment of the present invention.
FIG. 38 is a block diagram for a memory system to implement a power reduction mechanism.
FIG. 39 shows a sequence of timing signals for a read transaction in the memory system of FIG. 38.
FIG. 40 is another embodiment of a logic diagram of a controller module for createing a clock and control signals for receiving read data. FIG. 41 is another embodiment of a logic diagram of a controller module for receiving read data from a memory and inserting a programmable delay.
FIG. 42 is another embodiment of a logic diagram of a controller module for creating a clock signal and control signals for transmitting write data.
FIG. 43 is another embodiment of a logic diagram of a controller module for transmitting write data and inserting a programmable delay.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
The term "mesochronous" refers to a relationship between two signals having the same average rate or frequency, but which may have arbitrarily different phases. The term "mesochronous system" refers to a set of clocked components in which the clock signal for each clocked component has the same frequency, but can have a relative phase offset. The term "static mesochronous system" means that the relative phase offsets are fixed and do not vary during normal system operation. The approach of using fixed relative phase offsets that do not vary during normal system operation has been the method practiced in prior art systems. The present invention is directed to "dynamic mesochronous systems" in which the phase offsets of the clocked components are allowed to drift over some range during system operation. The term "normal system operation" is used in this document to refer to ordinary memory access operations, such as read, write and refresh operations. Calibration operations, which are used to determine timing offsets required for successful command and data transmission between the memory controller and memory components of a memory systems, are generally not considered to be normal memory operations. In the preferred embodiment, the calibration hardware in the memory controller is configured to perform calibration operations periodically, and/or during periods of little memory system usage, and such calibration operations are generally separated by periods during which normal memory operations are performed. This document describes apparatus and techniques for managing the timing of signals within a system that can be beneficially applied to systems having a wide variety of signals, signal rates, time intervals, buses, signal-to-wire mappings, and so on. While the disclosed description will often identify a preferred embodiment or implementation to illustrate a concept, it should be understood that the concept is not limited to the embodiment or implementation employed in the discussion.
All of the variations of signal, symbol, bit, values, time intervals, buses, and signal- to-physical wire mapping are independent of the methods described in this document. This document describes a set of techniques for managing the timing of signals within a system that can be beneficially applied to all the variations described above. The following description will often choose a preferred variation to illustrate each concept. However, it should be understood that the concept under discussion is not limited to the particular variation that is employed in the discussion.
FIG. 2 shows an example of a prior art static mesochronous memory system 200. The memory system comprises a controller 205 communicating to and from memory 210 via unidirectional bus 215 and bi-directional bus 216. Bus 215 carries address and control information from the controller to the memory. Bus 216 carries data information from the controller to the memory during write operations and carries data information from the memory to the controller during read operations. Bus 215 is also referred to here as the RQ bus, and bus 216 is also referred to here as the DQ bus. This description will also refer to separate D and Q signal sets, i.e., signal sets 217, 218 at the controller and signal sets 219, 220 at the memory, even though such signal sets share the same physical wires in this system.
Memory component 210 in FIG. 2, is one component of a two dimensional array of memory components, with ranks (rows) indexed by the variable "i" and slices (columns) indexed by the variable "j". Index values for the ranks and slices are zero at the memory controller and assume integer values greater than zero as you move further away from the controller 205. In system 200, there is a single memory component in each rank. Other memory systems may have more than one memory component per rank. In this document, notation "[ij]" is used to label a wire or bus at different physical points along a physical length. For example, the CTC[0,j] and CTC[i,j] signals are associated with two different points along the same physical wire. The notation is used throughout this document so that a wire or bus can be labeled or identified at any point along a signal transmission path. Each slice of the memory components is attached to the DQ and RQ busses, which carry data signals and request signals, and to bus 230 (for receiving timing information or signals). Bus 230 (which is shown as three sub-buses 230(a), 230(b) and 230(c)), communicating a clock signal (CLK), carries timing information from the controller 205 to the memory component 210 so that information transfers on the other two buses can be coordinated.
The controller uses internal clock signal CLKC for its internal operations, including transmitting and receiving on the RQ and DQ buses. CLKC is routed so that it passes the memory controller and memory components a total of three times. Clock signal 225 is made up of three sub-signals: CTE (clock-to-end), CTC (clock-to-controller), and CFC (clock-from-controller). The controller drives the CTE signal, which travels to the end of the slice of components, and returns as CTC. CTC enters the controller, and leaves the controller (unbuffered) as CFC, and then travels back to the end of the slice. While a single pair of physical wires generally carries the three clock signals (with CTC and CFC being carried by the same physical wire), three different signal lines (i.e., wires) are shown in FIG. 2 for clarity.
CLKC is also used as a reference for the phase-loop lock (PLL) or delay-loop lock (DLL) circuit 255 that drives CTE[0,j] signals onto bus 230(a). The PLL/DLL circuit 255 internally generates the CTE[0,j] signal and adjusts the phase of the CTE[0,j] signal until the CTC[0,j] and CFC[0,j] signals have the same phase as the CLKC signal.
Memory components receive the CTC and CFC signals on buses 235 and 240, respectively. More specifically, each memory component has its own pair of clock input connections for receiving the CTC and CFC signals, respectively. The CTC[i,j] and CFC[i,j] signals that are received by a memory component [i,j] on buses 235, 240, respectively, have phases that are offset from CLKC and from each other due to propagation delays. The propagation delays on the clock bus 230 are essentially identical to propagation delays on the RQ and DQ busses, and thus the CTC[i,j] and CFC[i,j] signals are used by the memory component [i,j] to control the transmission of data signals on the DQ bus 216 and to control the receipt of control and data signals from the RQ and DQ buses, respectively.
The CTC and CFC signals on buses 235, 240 pass through PLL/DLL circuits 265, 270, respectively, within the memory component 210. Memory components use PLL or DLL circuits to ensure that the clock domains within the memory are phase-aligned with the external memory clock signals that provide the timing references. By phase aligning the clock signals in this fashion, memory sub-components 245, 250 receive timing information for transmitting and receiving on internal D and Q buses 219, 220.
Clock domain crossing logic 275 links the portions of the memory component 210 that operate in two clock domains. One domain is used for transmitting read data. The other domain is used for receiving write data and address/control information. Each memory component needs to pass information between the two clock domains, and this is controlled by the clock domain crossing logic 275.
FIG. 3 shows a timing diagram for system 200 (FIG. 2). The CLK signal 225 drives the PLL/DLL 255, which produces CTE[0,j] after a delay of tPLL/DLL,- CTE[0,j] propagates to the end of the wire 230(a) and returns as the CTC signal to memory component [i,j]. The CTC[i.j] signal is delayed by tpROPtoEND relative to the CTE[0,j] signal. Read data Q[i,j] transmitted by the memory component to the controller is synchronized by the memory component [i,j] with the CTC[i,j] clock. The read data Q[i,j] signal set and the CTC[i,j] clock signal requires an additional delay of tpROPij to reach the controller to become Q[0,j] and CTC[0,j]. The PLL/DLL 255 adjusts the tP L/DLL delay so that the CTC[0,j] and CLK signals have the same phase alignment. This means that tP1χ/DLL + pROPtoEND + pROPij = C*tCγc E, where C is an integer and denotes the number of CLK cycles required for the round trip of the clock signal from CTE[0,j] to CTC[0,j]. The CTC[0,j] signal becomes the CFC[0,j] signal and exits the controller. After a delay of tpROPy CFC[0,j] reaches a memory component as CFC[i,j], where it is used to receive the RQ[i,j] address/control information and D[i,j] write data information. The information on these two buses are delayed by pROPij from the RQ[0,j] and D[0,j] buses, respectively.
In system 200, the controller is able to perform all transfer operations within the single clock domain of the CLKC signal. Each memory component, on the other hand, operates in two clock domains, as noted above. One domain is earlier in time than CLKC by tpROPy and is used for transmitting read data. The other domain is later than CLKC by pROPij and is used for receiving write data and address/control information.
Note that in all of these cases of transfers on the RQ and DQ buses, the sampling (e.g., rising) edge of the clock that is used to receive a set of bits from a bus is shown as being aligned with the start of the valid window of the bits. In practice, the receiving clock will have its sampling edge aligned with the center of the valid window of the bits. The clock recovery circuits (PLL or DLL) present on both the controller and memory component can perform this alignment easily. For simplicity, this detail is not shown in the timing diagram. Although other static alignments of the clock with respect to the data may be used, one key point with respect to static systems is that the alignment does not change during system operation.
Phase offsets required for normal operation of system 200 are known or can be generated automatically by the system hardware. This determination of phase offsets can be done because the clock signals travel through a path that is essentially the same as the path of the data and address/control signals for which they provide a timing reference. The determination of phase offsets also requires that PLL or DLL circuits be used to maintain the static phase relationships.
In practice, such PLL or DLL circuits will not align the phase of two signals exactly; there will be some small error due to, for example, circuit jitter. Such jitter must be factored into the overall timing budget for transferring each bit of information on a signal. This timing budget for transmitting and receiving a bit includes, for instance, setup and hold times of receive circuits and the variation of the output valid delay of the transmit circuits. However, the timing budget does not include a component for the round-trip propagation delay 2*tPRopij between the memory component and memory controller. The round-trip propagation delay 2*tp OPij is accounted for in the clock domain crossing logic 275. The accounting for round-trip propagation delay 2*tpRopij increases the latency of a read operation, but does not impact the bandwidth of read and write transfers. Such transfers will occur at a bandwidth that is determined by the circuits of the components, and not by the length of the wires that connect the components. The bandwidth determination based on circuit components is a critical factor in the advantage of static mesochronous systems over synchronous systems in which all components use clock signals that are at essentially the same phase. Since the transfers in the synchronous system must include the propagation delay term in the timing budget for a bit transfer, such inclusion of the delay term limits the bandwidth of transfers. FIG. 4 shows a second example of a prior art static mesochronous memory system
300 comprising a controller 305 communicating to and from a memory component 310, which may be in an array of similar memory components. Like system 200, memory components form a two dimensional array, with ranks (rows) indexed by the variable "i" and slices (columns) indexed by the variable "j". As throughout this document, the index values are zero at the memory controller, and assume integer values greater than zero as you move further away from the controller. For example, in a system with a 2 x 3 array of memory components (i.e., three memory components in each of two ranks) the value of the "i" variable increases from zero at the controller to "1" for each of the three memory components in the first rank and to "2" for each of the three memory components in the second rank. Furthermore, in this exemplary system the value "j" increases from zero at the controller to "1" for each of the two memory components in the first slice, to "2" for each of the two memory components in the second slice, and to "3" for each of the two memory components in the third slice.
Unlike system 200, in system 300 there can be more than a single memory component in each rank. Each rank of memory components is attached to an RQ bus 315 and a DQ bus 320. Other ranks are connected to different RQ buses and other slices are connected to different DQ buses. The RQ bus 315 is unidirectional and carries address and control information from the controller to the rank of memory components. The CLK bus 317 is unidirectional and carries timing information from the controller to the memory components so that information transfers on the other two buses can be coordinated. The CLK bus 317 has the same topology as the RQ bus it accompanies. The slice of memory components is attached to DQ bus 320, which connects the controller and memory and is bi-directional, and carries data information from the controller to a memory component during write operations, and carries data information from a memory component to the memory controller during read operation. The controller uses an internal clock CLKC, carried by internal bus 325, for its internal operations, including transmitting on the RQ bus 315. The CLKC signal is also used as a reference for the PLL or DLL circuit 330 that drives CLK[i,0]. The PLL/DLL 330 adjusts the phase of the CLK[i,0] signal to have the same phase as CLKC.
At the memory component 310, the CLK[i,j] signal is received offset in phase by a PLL or DLL circuit 335, which produces a buffered internal clock that is of essentially the same phase as received. This internal buffered clock signal is used to control transmission of read data onto the DQ bus 320 and to control the receipt of control and data signals from the RQ and DQ buses, as appropriate, generally to control the timing of operations performed by internal memory sub-components 340, 345 and 350. Because there is a single clock domain inside the memory component 310, there is no need for clock domain crossing logic in the memory component 310 as there was in system 200.
Instead, the clock domain crossing logic has been shifted to the controller 305 as clock domain crossing logic 375. The shift in logic 375 to the controller is because the write data D[0,j] transmit logic 365 and the read data Q[0j] receive logic 370, must be operated in two clock domains, CLKD[0 j] and CLKQ[0,j], that have different phases than the CLKC domain used by the rest of the controller. As a result, phase adjustment logic is needed that delays CLKC by toy and t to form the CLKD[0,j] and CLKQ[0,j] signals, respectively. The phase adjustment logic for the CLKD[0,j] and CLKQ[0,j] signals, are shown as circuit elements 380 and 355, respectively. FIG. 5 shows a timing diagram for system 300 (FIG. 4). The CLK signal drives the
PLL/DLL 330 to produce CLK[i,0]. The CLK[i,0] signal is delayed by tpRopcij , as it propagates to memory component [i,j] to become signal CLK[i,j]. The RQ[i,0] signal transmitted by controller element 360 is delayed by tpRopRQy as it propagates to memory component [i,j] to become the RQ[i,j] signal at internal memory component 350. The CLK and RQ buses are routed together, so that the two propagation delays are essentially the same.
In the controller, phase adjustment logic 380 delays CLK by tDlJ to form the CLKD[0,j] signal. This clock signal is used by the controller's data transmit element 365 to control the phase of the write data D[0,j]. The D[0,j] signal set is delayed by tpROPDy as it propagates to memory component [ij] to become signal set D[ij]. The controller selects tDιj so that tpROPCL ij = Dy + pROPDy There is also phase adjustment logic 355 in the controller that delays CLK by tQy to form the CLKQ[0,j] signal. This clock signal is used to receive the read data Q[0 j] at 370. The Q[i j] signal set is delayed by tpROPQy as it propagates from memory component [i j] to become signal set Q[0j]. The controller selects tQy so that tQlJ = tpRopcLKy + tpRopQy. In the transfers on the RQ and DQ buses, the sampling (rising) edge of the clock that is used to receive a set of bits (or more generally, symbols) on a bus is shown aligned with the start of the valid window of the bits. In the real system, the receiving clock will typically have its sampling edge aligned with the center of the valid window of the bits. The clock recovery circuitry (PLL or DLL) that is present on both the memory controller and memory component can perform this alignment easily. Other static phase alignments of the signals on the CLK, RQ, and DQ buses are also possible. Memory components are able to perform all transfer operations within the single clock domain of the internal buffered clock signal. Each memory component will operate in its own unique clock domain. The phase of each clock domain will stay fixed relative to the phase of CLK in the controller; hence the reason for the term "static" mesochronous system.
The controller, on the other hand, has multiple clock domains. CLK is the principle domain, and CLKD[0,j] and CLKQ[0,j] are the domains (two for each slice [j]) used for transmitting and receiving, respectively. The phase offsets of CLKD[0j] and CLKQ[0,j] are dependent, for example, upon the lengths of the wires that connect the components, and may have a range that is greater than the cycle time of CLK. Typically, the range of phase offsets (toy and tQy ) for CLKD and CLKQ is many times greater than the cycle time of CLK. The domain crossing logic 375 must accommodate these ranges of phase offsets.
Typically, the phase offsets or adjustment values tDlJ and tQy are determined at system initialization time. The values are stored and then used during normal system operation. Each rank [i] in the system needs its own set of phase adjustment values toy and tQy that must be loaded prior to transferring data to or from a memory device in the rank. In practice, the PLL or DLL circuits of system 300 do not align the phase of two signals exactly, as there is always at least a small error because of circuit jitter, as described earlier. This jitter must be absorbed into the overall timing budget for transferring each bit of information.
As with system 200, the timing budget for transmitting and receiving a bit for system 300 does not include a budget allocation for the round-trip propagation delay, 2*tpROPy, between the memory component and controller. Instead, the round-trip propagation delay, 2*tppυ, is accounted for by the clock domain crossing logic 375. The round-trip propagation delay increases the latency of read operations, but does not impact the bandwidth of read and write transfers. The transfers occur at a bandwidth that is determined by the circuits of the components, and not by the length of the signal wires that connect the components.
Dynamic Mesochronous Memory System
FIG. 6 shows an overview of a preferred embodiment of a dynamic mesochronous memory system 400 in accordance with the present invention. This system is topologically similar to system 300 with respect to the interconnection of components by buses and comprises a controller 405 for communicating to and from the memory components 410. In this system, there can be more than a single memory component in each rank and/or in each slice. Unless otherwise noted or described, reference numbers that differ by 100 for systems 300 and 400 represent circuit elements at the same topological locations and having at least some functional aspects in common, even if their internal design and operation differs substantially. While the preferred embodiments will be described in terms of a memory controller and memory components, it is to be understood that the term "memory controller" includes any device that performs the functions of a memory controller described herein, and that the term "memory component" includes any device that performs the functions of a memory component or device described herein. For instance, if the functions of a memory controller are integrated with a central processing unit or with another controller device, the resulting device will be considered a "memory controller" in the context of the present invention. Similarly, if the memory storage, access and calibration functions of a memory device are integrated into another device, such as an application specific integrated circuit (ASIC), that device will be considered a "memory component" in the context of the present invention.
System 400 differs from system 300 in numerous respects. The following is a partial listing of significant differences between the two systems: (1) the memory component 410 has a clock buffer 443 instead of the PLL/DLL clock recovery circuits 330 and 335 of memory component 310; the clock buffer can have varying delay during system operation; (2) unlike memory component 310 and controller 305, the memory component 410 and controller 405 include calibration logic 485 and 490, respectively, to support a calibration process; (3) controller 405 includes enhanced clock domain crossing logic 475 to improve the efficiency of the calibration process. In addition, certain elements of the memory component 410, such as the RQ and DQ handling logic 450, 445, 440 include new logic or circuitry to support the calibration process. These new aspects of the memory component 410 and controller 405, as well as many others, are discussed below.
The clock signal used to time the transmission of signals (sometimes called requests) on the RQ[i,0] bus 415 is called CLK[i,0]. CLK[i,0] has essentially the same phase as CLKC. The CLK[i,j] signal that is received by memory component [i,j] will have a phase that is offset from CLKC. This CLK[i,j] signal is received by a simple clock buffer 443, which is much less complex and consumes much less power than the PLL or DLL circuits 330 and 335 in system 300. Buffer 443 produces a buffered internal clock CLKB[i j] at 444 that is at a different phase than the CLK[i,j] signal, received by buffer 443. The CLKB[i,j] signal is used to transmit data onto the DQ bus 420, to receive signals (e.g., requests and data) from the RQ and DQ buses 415, 420, respectively, and to perform all other internal operations in the memory 410. Because there is a single clock domain inside the memory, there is no need for clock domain crossing logic in the memory component, such as logic 275 of system 200.
Additionally, system 400 includes calibration logic 485 and 490. Calibration logic 485 is added to the memory 410, and logic 490 is added to the controller 405. The calibration logic circuits 485 and 490 operate in conjunction with one another so that delay variations during system operation are detected and complementary delay elements in logic 480, 455 are adjusted.
As in system 300, the write data D[0,j] transmit logic 465 and the read data Q[0j] receive logic 470 must be operated in two clock domains, CLKD[0,j] and CLKQ[0,j], having different phases than the CLK signal domain used by the rest of the controller. As a result, there is phase adjustment logic 480 and 455 that delays CLK by toy and tQy, respectively, to form the CLKD[0j] and CLKQ[0 j] signals.
Also as in system 300, the values toy and tQy are functions of the propagation delay parameters t RopcL ιj, tPROPDy, and tpROPQy. These propagation delay parameters are relatively insensitive to temperature and supply voltage changes. In system 300, once the values to and tQU have been generated during system initialization, they may be left static (unchanged) during system operation. But in system 400, the values toυ and tQy are also a function of the delay of the clock buffer tβy (as well as delay of other circuits such as the transmitters and receivers). This clock buffer delay will change during system operation because it is relatively sensitive to temperature and supply voltage changes. The values toy and tQy that are generated during system initialization are dynamic (changing) during system operation, and a calibration process, using the calibration logic 485 and 490, keeps the values to and tQU updated. In addition, enhancements are made to the clock domain crossing logic 475 in system 400 (relative to system 300) to improve the efficiency of the calibration process and so that the calibration process can be handled completely by hardware. Because the enhancement (i.e., hardware for implementing the calibration process) is implemented in hardware, primarily in the controller but also in the memory components, the performance of the system 400 is not significantly impacted by the overhead of the calibration process. Within the memory component 410, receiver and transmitter circuits 440, 445, and 450 are able to perform all transfer operations within a single clock domain that is defined by the internal buffered clock signal generated by buffer 443. A clock domain is defined by a set of one or more clock signals that have the same frequency and phase. For convenience, a clock domain is often named using the name of the clock signal that defines the clock domain (e.g., "the CLK clock domain" is a clock domain defined by the CLK clock signal). Each memory component operates in its own clock domain, which may be unique for each memory component. The phase of the clock domain for each memory component can change relative to the phase of CLK in the controller; hence, the term "dynamic" mesochronous memory system.
The controller 405, on the other hand, has multiple clock domains defined by the CLK, CLKD[0,j] and CLKQ[0,j] clock signals. CLK on bus 425 is considered a principle clock domain, and CLKDfOj] and CLKQ[0j] are derived clock domains in that they are based on CLK by way of phase adjustment logic 480 and 455, respectively. CLKD[0 j] and CLKQ[0j] are used for transmitting and receiving, respectively. The phase offsets to and tQy of CLKD[0j] and CLKQ[0j] are dependent upon the lengths of the wires that connect the components, parasitic capacitance along these wires, and upon the changing delay tβy of the memory component clock buffer 443. These phase offsets may have a range that is greater than the cycle time of CLK. In some cases the range may be many times greater. The domain crossing logic 475 accommodates these ranges of phase offsets and handles the phase offset range in hardware during calibration process updates.
Each rank [i] in the system will have its own set of phase adjustment values toy and tQy that are loaded prior to transferring data to or from the rank. Each set of values are kept updated by the calibration process involving logic 485, 490. The dynamic mesochronous system 400 has similar timing benefits to that of the static mesochronous system 300. For example, in system 400 the timing budget for transmitting and receiving a bit does not include the propagation delay tpRopy between the memory component and controller. Instead, the round- trip propagation delay 2*tpRoPlJ is accounted for in the clock domain crossing logic 475. This round-trip propagation delay increases the latency of a read operation, but does not impact the bandwidth of read and write transfers. The transfers occur at a bandwidth that is determined by the circuits of the memory controller and memory components, and not by the length of the signal wires that connect the memory controller and memory components.
As noted, the clock recovery circuit 335 of the memory 310 is replaced by a simple clock buffer 443 in system 400. This change in system 400 results in a number of benefits. First, circuit area on the memory component is reduced. Additionally, the design complexity of the memory component is substantially reduced, particularly as the clock recovery circuit 335 often is a complex part of the memory design. Further, the standby power of the clock recovery circuit is eliminated. Standby power refers to the power dissipated when there are no read or write transfers taking place. Typically a PLL or DLL must dissipate some minimum amount of power to keep the output clock in phase with the input clock. In practice, this standby power requirement has made memory components with a DLL or PLL difficult to use in portable applications, where standby power is important.
System 400 introduces a memory system topology based on dynamic mesochronous clocking. A number of variations in system topology, element composition, and memory component organization are possible, and some preferred and representative variations will be described. Individual variations may, in general, be combined with any of the others to form composite variations. Any of the alternate systems formed from the composite variations can benefit from the method of dynamic mesochronous clocking. FIG. 7 shows a baseline memory system topology 700. Topology 700 is similar to the topology of system 400, but with some modifications as described below.
The memory controller 705 is shown in FIG. 7. A single memory port 710, (labeled Port[l]) is shown, but the controller 705 could have additional memory ports. In general, a controller has other external signals and buses that are not directly related to the memory system(s), which for clarity purposes are not shown in FIG. 7.
The port 710 of the controller consists of two types of buses: the X bus and the Y bus. The X and Y buses are composed of wires for carrying different sets of signals and have different routing paths through the memory system. The X bus is depicted as comprising NS X buses shown as 715, 716, 717 and 718. System 700 also depicts the Y bus comprising the NM Y buses, shown as buses 720, 721. The NS X buses usually carries data signals and the NM Y buses usually carries address signals, but other signal information configurations are possible. NM and NS are integers having values greater than zero.
Each of the NS X buses connect to the memory components along one "slice"
(column). For example, the memory components along a slice are shown as components 730, 732, 734 and 736 in memory module 740. As shown, each of the NS X buses connect to one of the NS slices of each of the NM memory modules 740, 750. Typically, only the memory components along one slice will be active at a time, although variations to this are possible.
There are NM of the Y buses, with each Y bus connecting memory components on one "module" (set of ranks). For example, the memory components of the first rank (e.g., the leftmost rank shown in FIG. 7) are shown as components 730, 744, 746 and 748. Each of the NM memory modules can consist of NR ranks (rows) of memory components.
Typically, all of the memory components of one rank of one module will be active at a time, although variations to this are possible. NM and NR are integers having values greater than zero. In some systems, the memory system may consist of NR ranks of memory components attached to the same printed circuit board (also called a wiring board) that holds the memory controller 705.
Each of the NM modules 740, 750 have a dedicated Y bus, i.e., one of the NM Y buses 720, 721, but typically most or all of the signals on a Y bus are duplicates of the signals on other Y buses. Some signals carried on the NM Y buses may be used to perform module or rank selection. These selection signals are generally not duplicated, but are dedicated to a particular module or rank.
Likewise, each of the NR ranks on a module connects to the module's dedicated Y bus. Typically, most or all of the signals composing the Y bus are connected to the memory components of each rank. Some signals on the NR ranks are used to perform rank selection. The rank selections signals are generally not duplicated, and connect to only the memory component(s) of one rank.
Generally, all signals transmitted on the X and Y buses are operated at the maximum signaling rates permitted by the signaling technology utilized. Maximum signaling rates often rely on the sequential connection of memory components to a physical wire by short stub wires branching from the physical wire. Maximum signaling rates also imply careful impedance matching when signals are split (a physical wire becomes two physical wires) and when signals are terminated (the end of a physical wire is reached).
The Y bus signals on a module may pass through splitting elements (labeled "S" in the figures) in order to make duplicate copies of signals. Alternatively, the signals may connect sequentially to the memory components of one or more of the NR ranks (the figure shows sequential connection to two ranks). A module 740, 750 may contain as few as one or two ranks, in which case no splitting element is needed on the module at all. Sample splitting element variations are shown in FIG. 10(a)-(d). Returning to FIG. 7, the Y bus signals connect to termination elements 760
(labeled "T" in the figures) where the signals reach the end of a rank. Y bus signals are typically unidirectional, so termination elements are shown only at the memory end of the signals. If any Y bus signals were bi-directional, or if any Y bus signals drove information from memory to controller, then termination elements would be required on the controller end of the Y buses.
Sample bus termination element variations 760 are shown in FIG. 1 l(a)-(d). Returning to FIG. 7, the X bus signals can pass through a splitting element on the same printed circuit board that holds the controller 705. One of the duplicate signals from a splitter, such as from splitter 752, 754, 756 or 758, enters one of the NM modules, such as module 740, and the other continues on the printed circuit board to the next module.
The X bus signals connect sequentially to the memory components of each slice and end at a termination element such as on bus 765. Alternatively, if the system only contains a single memory module, no splitting elements would be needed for the X bus signals.
The X bus signals are typically bi-directional, so termination elements are needed at the controller end of each signal (e.g., where a termination element 762 connects to bus 718) as well as at the far end of the memory array. For any unidirectional X bus, termination elements would be required only at the end of the X bus that is opposite from the component that drives the signal.
Typically, all of the signals on the X bus are transmitted (or received) by all the memory components of each slice. In some embodiments, there may be some signals on the X bus that are transmitted (or received) by only a subset of the memory components of a slice.
FIG. 8A shows a variation on the Y bus topology in which the controller 805 drives a single Y bus 810 to all the modules. A splitting element 812 is used to tap off a duplicate Y bus signal bus for each memory module, such as modules 820, 830. X bus splitters 816 sequentially connect the slices of each module. The use of external termination elements 818 is desirable when any X bus signals (on X buses Xi to XNS, not separately shown) are bi-directional. Internal (i.e., internal to the modules 820, 822) splitter 822 and termination elements 824 are still used for each slice of each of the NM modules having NR ranks of memory components 828. In system 800 the controller drives fewer buses, but each Y bus signal will pass through a larger number of splitting elements. This increase in the number of splitting elements may impact signal integrity or propagation delay.
FIG. 8B shows a second variation on the Y bus topology in which the controller 855 drives the Y buses on the same group of physical wires 856, 858 as the X buses to the modules. In other words, the Y buses run parallel to the X buses in this embodiment. In system 850, there are no buses flowing along each of the NR ranks. There may be some signals in the X or Y bus used to perform a rank and module selection which connect to only a subset of the memory of a slice (only two slices are shown for simplicity). Alternatively, module and rank selection may be performed by comparing X or Y bus signals to an internal storage circuit (which may be located in each memory component) that contains the module or rank identification information. This method of module and rank selection could be used in any of the other topology variations. As with FIG. 8 A, external termination elements 860 and external splitter elements 862 may be used, but only internal termination elements 864 are needed for each slice of the NM modules 870 having NR ranks of memory components 875.
System 900 in FIG. 9 shows a variation on the X bus topology of system 700 in which each X bus signal (e.g., on X bus 925) passes through one set of pins on each module and exits through a different set of pins. Controller 905 transmits X bus signals to memory modules 910, 920, and NM Y buses 930, 940 connect to each of the NM modules. No external splitting element is needed on the main printed circuit board, and fewer internal termination elements 935 are needed on the modules. While extra pins are needed on each module, there is a reduction in the number of splitting and termination elements.
FIGS. 10A - 10D show some of the possible splitting element variations. In each of these figures, splitter element variations are shown where a single signal is split into two signals. In FIG. 10A, a splitter 1000 converts a single signal labeled "1" into two signals labeled "2", by the use of a clocked 1010 or unclocked 1020 buffer. In FIG. 10B, the signals are bi-directional, and signals can be split or combined. Generally, a single signal can pass through an enabled switch or buffer of the splitter 1030 to form two signals and any port can receive a signal component from any other port. Splitter element 1030 is a bi-directional buffer consisting of either a pass-through, non-restoring active switch 1035 with an enable control, or a pair of restoring buffers 1042, 1044 with a pair of enable controls in element 1040. Note that element 1030 could also be used for unidirectional signals. Splitter element 1050 (FIG. 10C) is a unidirectional resistive device, implemented from either active or passive components. Splitter 1055 permits an attenuated signal to be passed to one of the output ports (labeled "2"), with the resistive value, RDAMP, chosen to limit the impedance mismatching that occurs. An alternative method would allow the characteristic impedance of the traces to be varied so that (in combination with a series resistance on one output port) there would be a smaller mismatch for unidirectional signals. Element 1060 (FIG. 10D) is a bi-directional power-splitting device, allowing the impedance to be closely matched for a signal originating on any of the three ports. The resistive devices, Z0 in element 1065 or Z0/3 in element 1070, could be implemented from passive or active devices. FIGS. 10C and 10D are similar to FIG. 10B in that a signal input at any port can yield signals at the remaining two ports. Splitter element 1050 (FIG. 10C) utilizes a wire stub with series damping, and splitter element 1060 (FIG. 10D) utilizes an impedance- matching splitter. Like splitter element 1030 (FIG. 10B), the splitter elements 1050 and 1060 have bi-directional ports so that any port can be an input port and any port can receive a signal component from any other port. FIGS. 11 A to 1 ID show some of the possible termination element variations.
Element 1100 (FIG. 11 A) is a passive, external termination element. The element may be implemented, for example, as a single device connected to a single termination voltage, NTERM, or as two (or more) devices Rt and R2 in element 1108 connected to two (or more) termination voltages, such as VDD and circuit ground. The termination element 1100 resides on a memory module or on a main printed circuit board. Termination element 1120, shown in FIG. 1 IB, is an active, external termination element. It may be implemented, for example, as a single device 1110 in a termination element 1125 connected to a single termination voltage VΓERM, or as two (or more) devices 1120 and 11320 in a termination element 1115 connected to two (or more) termination voltages, such as VDD and circuit ground. The termination element 1120 resides on a memory module or on a main printed circuit board. The voltage-current relationship needed for proper termination is generated by control voltage(s), which are maintained by an external circuit. Typically, the external circuit (not shown) measures a value that indicates whether the voltage-current relationship is optimal. If it is not, the external circuit makes an adjustment so the voltage-current relationship becomes more optimal. Termination element 1160, shown in FIG. 11C, is a passive, internal termination element. This variation is similar to termination element 1100 except that termination element 1160 resides inside a memory component or inside the memory controller, both shown as component 1165. Termination element 1170, shown in FIG. 1 ID, is an active, internal termination element. The FIG. 1 ID variation is similar to termination element 1120 except that element 1170 resides inside a memory component or inside the memory controller, both shown as component 1175.
FIG. 12 shows a baseline system configuration 1200 for the memory component "M" that is shown in the system topology diagrams, such as element 730 in system 700. An X bus 1205 and a Y bus 1210 connect to memory component M. The X and Y buses correspond to the X and Y buses shown in topology FIGs. 7, 8A, 8B and 9. The memory component M contains interface logic for receiving and transmitting the signals carried by the X and Y buses. The memory component M also contains a memory core 1215 that consists of 2Νb independent banks. Here Nb is the number of bank address bits and is an integer greater than or equal to zero. The banks are capable of performing operations independent of one another, as long as the operations do not have resource conflicts, such as the simultaneous use of shared interface signals. The Y Bus 1210 carries two signal sets: the row signal set 1220-1228 and the column signal set 1230-1238. Each group contains a timing signal (ARCLK 1220 and ACCLK. 1230), an enable signal (AREN 1 22 and AQEN 1232), an operation code signal set (OPR 1224 and OPc 1234), a bank address signal set (ABR 1226 and ACR 1236), and a row or column address signal set (AR 1228 and Ac 1238). The number of signals carried by the signal sets are represented with a "/P", such as Nopr/P, Nopc/P, Nb/P, Nb/P, Nr/P, and Nc/P, respectively. The factor "P" is a serialization or multiplexing factor, indicating how many bits of a field are received serially on each signal. The demultiplexers 1240 and 1245 convert serial bits into parallel form. The P factors for Nopr, Nope, Nr, Nc, and P may be integer values greater than zero. For example, there might be eight column address bits transmitted as two signals for the column address signal set, meaning that four column address bits are received sequentially on each signal. The P factor for this example would be four. Memory component 1200 (i.e., the baseline memory component) uses the same P factor for all the sub-buses of the Y bus, but different factor values could also be used for different sub-buses in the same memory component. Here, P is an integer greater than zero.
It is also possible that the signal sets could be multiplexed onto the same wires. The operation codes could be used to indicate which signal set is being received. For example, the bank address signal sets could share one set of wires, and the row and column address signal sets could share a second set of wires, and the operation code signal sets could share a third set of wires.
The six signal sets (i.e., signals 1224-28, 1234-38) are received by circuitry in the memory component 1200 that uses the timing signals (ARCLK and ACCLK) as a timing reference for when a bit is present on a signal. These timing signals, for example, could be a periodic clock or they could be a non-periodic strobe. An event (i.e., a rising or falling edge) could correspond to each bit, or each event could signify the presence of two or more sequential bits (with clock recovery circuitry creating two or more timing events from one). In some implementations the six signal sets share a single timing signal.
The enable signals 1222 and 1232 indicate when the memory system 1200 needs to receive information on the associated signal sets. For example, an enable signal may be used to pass or block the timing signals entering the memory component, depending on the value of the enable signal, or an enable signal might cause the operation code signal set to be interpreted as no-operation, or the enable signal may be used by logic circuitry to prevent information from being received when the value of the enable signal indicates that such information is not for receipt of the memory component 1200. The enable signals can be used to select a first group of memory components and to deselect a second group, so that an operation will be performed by only the first group. For example, the enable signals can be used for rank selection or deselection. The enable signals can also be used to manage the power dissipation of a memory component in system 1200 by managing power state transitions. In some embodiments, the enable signals for the row and column signal groups could be shared. Further, each enable signal shown could be decoded or formed from two or more signals to facilitate the task of component selection and power management.
The de-multiplexed row operation code, row bank address, and row address are decoded by decoders 1250, 1252 and 1254, and one of the 2Nb independent banks is selected for a row operation. A row operation may include sense or precharge operations. In a sense operation, one of the 2Nr rows contained in a bank selected by outputs of the decoders is coupled to a column sense amplifier for the bank. For a precharge operation, a selected bank and its column sense amplifier are returned to a precharged state, ready for another sense operation. The de-multiplexed column operation code, column bank address, and column address are decoded via decoders 1256, 1258 and 1260, and one of the 2Nb independent banks is selected for a column operation such as read or write. A column operation may only be performed upon a bank that has been sensed (not precharged). For a read operation, one of the 2Nc columns (with Ndq bits) contained in a column sense amplifier portion of the selected bank is read and transmitted on the Q signal set 1290 / 1268. For a write operation, Ndq bits received on the D signal set (i.e., signals 1270-76) is written into one of the 2Nc columns contained in the column sense amplifier portion of the selected bank, using the Nm mask bits on sub-bus 1292 to control which bits are written and which are left unchanged. The X bus 1205 carries two sets of signals: the read signal set and the write signal set. The read signals include signals 1262-1268, and the write signals include signals 1270-1276. Each group contains a timing signal (QCLK 1264 and DCLK 1274), an enable signal (QEN 1262 and DEN 1276), a mark or mask signal set (QM 1266 and DM 1270, respectively), and a data signal set (Q 1268 and D 1272). The number of signals in the signal sets are represented with a "/N", such as Ndq/N, Nm/N, and Ndq/N, respectively. The factor "N" is a serialization or multiplexing factor, indicating how many bits of a field are received or transmitted serially on each signal. The "mux" and "demux" blocks converts the bits from parallel-to-serial and serial-to-parallel form, respectively. The parameters Ndqr, Nm, and N may contain integer values greater than zero. This baseline memory system 1200 assumes that the read and write data signal sets have the same number of signals and use the same multiplexing factors. This might not be true in other memory components, and therefore the number of signals in each signal set may vary. In some embodiment, the read and write data signal sets are multiplexed onto the same wires.
The mark signal set provides a timing mark through mark logic 1286 to indicate the presence of read data. The mark signal set might have the same timing as the read data signal set, or it might be different. The mask signal set 1292 indicates whether a group of write data signals should be written or not written as determined by mask logic 1288. This baseline memory system assumes that the mark and mask signal sets have the same number of signals and use the same multiplexing factors. This assumption might not hold true in other embodiments. It is also possible that, in other embodiments, the mark and mask data signal sets could be multiplexed onto the same wires. In other embodiments, one or both of the mark and mask signal sets might not be implemented.
The data signal sets 1290, 1294 are received by circuitry 1284, 1278 that uses the timing signals (QCLK and DCLK) as a timing reference for when a bit is present on a signal. These timing signals could be, for example, a periodic clock, or they could be a non- periodic strobe or any other timing reference. An event (e.g., a rising or falling edge of a timing signal) could correspond to each bit, or each event could signify the presence of two or more sequential bits (with clock recovery circuitry creating two or more timing events from each received event). It is possible that the data signal sets could share a single timing signal. It is also possible that the X and Y buses could share a single timing signal. The enable signals QEN and DEN 1262 and 1276 indicate when the memory component needs to receive information on the associated signal sets. For example, an enable signal might pass or block the timing signals entering the memory component, or it may be used to prevent information from being transmitted or received. The enable signals can be used for slice selection or for managing power state transitions. FIG. 13 shows the overview topology of an alternate preferred dynamic mesochronous memory system 1300. System 1300 is topologically similar to system 400 with respect to the interconnection of components by buses. For example, memory components would still form a two dimensional array, with ranks (rows) indexed by the variable "i" and slices (columns) indexed by the variable "j", following the same notation as before. In system 1300, like system 400, there can be more than a single memory component in each rank. Each rank of memory components is attached to an RQ bus 1315 and a CLK bus 1320. RQ bus 1315 is unidirectional and carries address and control information from the controller to the memory components. CLK bus 1320 is unidirectional and carries timing information from the controller 1305 to the memory components 1310 so that information transfers on the other two signals sets can be coordinated.
Each slice of memory is attached to a DQ bus 1325. DQ bus 1325 is bi-directional, and carries data information from the controller 1305 to a memory component 1310 during write operations, and carries data information from a memory component to the controller during read operation. This description will also refer to the D and Q signal sets separately to include signal sets 1327 and 1329, respectively, even though the same physical wires are shared.
The controller uses an internal clock signal CLK1 1330 for its internal operations. The CLK1 signal is also used as a reference to drive the CLK[i,0] signal on bus 1320,
CLKD[0,j] signal on bus 1332 and CLKQ[0,j] signal on bus 1334. The frequency of the clock signals such as CLK4 and CLK[i,0] is an integer multiple of the frequency of CLK1 by way of frequency multiplier 1335 (which is a 4X frequency multiplier in a preferred embodiment). This multiplication is done so that the frequency of CLK[i,0] matches the frequency of the clock used to transmit and receive write data D and read data Q. The clock signal CLKl is used to transmit signals on the RQ[i,0] bus 1315. When frequency multiplier 1335 is a 4X multiplier, the rate at which bits are transferred on the RQ bus is one fourth the rate at which bits are transferred on the D and Q signal sets. This transfer rate differential is consistent with the fact that a relatively small amount of address and control information is needed for transferring a relatively large block of read or write data. Other transfer rate differentials between RQ and DQ are possible.
The CLK[i,j] signal 1340 that is received by memory component [i,j] 1310 will have a phase that is offset from CLK[i,0]. The CLK[i,j] signal is received by a simple clock buffer 1345. This buffer 1345 produces a buffered internal clock signal CLKB[i,j] on bus 1347 that is at a different phase than the CLK[i,j] signal. This CLKB[ij] signal is used to transmit on signal set 1349 to the DQ bus 1325, to receive from the RQ and DQ buses, and to perform all other internal operations in the memory component. Because there is a single clock domain (i.e., CLKB[i,j]) inside the memory component 1310, there is no need for clock domain crossing logic in the memory component as there was in system PA1 (of FIG. 2). In addition, calibration logic 1350 ("MCAL") has been added to the memory component 1310. In system 1300, this logic 1350 is used in conjunction with the calibration logic 1355 ("CCAL") that has been added to the controller 1305.
Because the internal clock CLKB[i,j] of the memory component runs at four times the rate of the RQ[i j] bus 1352, it is possible to use sampling logic 1360 within the memory to adjust for unknown skew between the internal clock signal CLKB[i j] on bus 1347 and the bit signals on RQ interface line 1352 that is caused by the buffer delay tβy. As in the controller of system 400, write data D[0j] transmit logic and the read data Q[0,j] receive logic must be operated in two different clock domains (CLKD[0,j] and CLKQ[0,j]) that have different phases than the CLKl domain that the rest of the controller uses. As a result, there is phase adjustment logic 1365 and 1368 that delays CLKl by toy and tQy, respectively, to form the CLKD[0j] and CLKQ[0,j] signals, respectively. Because of the multipliers 1335, CLKD[0,j] and CLKQ[0,j] are also four times the frequency of CLKl .
As in system 400, the values toy and tQy are functions of the propagation delay parameters t Ropc K , pROPDy, and tpRO Qy. These propagation delay parameters are relatively insensitive to temperature and supply voltage changes. Values to and tQy are also a function of the delay tBy of the memory component's clock buffer 1345 as well as other delays such as those associated with transmit and receive circuits. The clock buffer delay will change during system operation because it is relatively sensitive to temperature and supply voltage changes. The programmable values tDlJ and tQy that are generated during system initialization are dynamically updated during system operation, and a calibration process (using the calibration logic MCAL and CCAL) is needed to keep the values updated.
In system 1300, enhancements have been made to the clock domain crossing logic 1380 so that the calibration process is handled completely by hardware. Such enhancements are useful to insure that the performance of the system is not significantly impacted by the overhead of the calibration process.
Some of the important differences between system 300 (FIG. 4) and system 1300 are listed below:
(1) System 1300 has a clock buffer 1345 (which can have variable delay during system operation), rather than a PLL/DLL clock recovery circuit on the memory component ;
(2) System 1300 has calibration logic 1350 and 1355 to the memory component and controller, respectively, to support a calibration process;
(3) System 1300 has enhanced clock domain crossing logic 1380 to improve the efficiency of the calibration process;
(4) Signal transmission on the RQ bus 1315 may be at a lower frequency than the CLK and DQ buses (one fourth the rate of the CLKl signal in this example); and
(5) System 1300 includes sampling logic 1360 in the memory component for the RQ bus. FIG. 14A shows the timing of a read transfer for system 1300. As noted, the controller 1305 uses an internal clock signal CLKl, 1330, for its internal operations. Rising edge 0, 1410, of the CLKl signal 14(a) samples the signal on the internal RQc bus 1385 with a register and causes the register to drive the sampled signal value onto the RQ[i,0] bus 1315 after the delay .RQ. This delay is the output valid delay (the clock-to- output delay) of the register and driver that samples RQ and drives it out of the controller. The address and control information associated with the read command is denoted by the label "READ" in the figure. The RQ[i,0] signals on the RQ bus 1315 propagate to memory component [i,j] after a propagation delay tpp,RQy to become the RQ[ij] signals, where they are received by the memory component. The setup time of the signal on bus RQ[i,j] is ts,RQ, measured to the rising edge 1455 of CLKB[i,j] that causes sampling to be performed by the sampling logic 1360.
The CLKl signal is frequency multiplied, here by four, to give the CLK[i,0] signal 14(d), which is delayed by ty,cLK with respect to CLKl . This delay is the output valid delay of the driver that drives CLK[i,0]. The CLK[i,0] signal propagates to memory component [i,j] after a propagation delay tpRop,cLKιj to become signal CLK[i,j] 14(e), where it is received by the memory component 1310 and buffered by buffer 1345 to become the internal clock signal CLKB[i,j] after a delay tβy.
Here, because there are four CLKB[i j] cycles for each bit received on each signal of set RQ[i j], there is freedom to choose one of the four rising edges to do the sampling. This freedom is necessary because the delay tβy will be different between the memory components in rank [i], and the optimal sampling point will need to be separately adjusted.
This adjustment is accomplished by selecting one of the four CLKB[i,j] rising edges to receive the RQ[i,j] bus. The sampling edge is denoted by the heavy arrow at 1455-1458 on one of every four of the rising edges of CLKB[ij] 14(f). Here, this sampling edge is also used for internal operations in the memory component. Note that all four CLKB[i,j] rising edges are used to receive data from the D[i j] signal set and to transmit data onto the Q[i,j] signal set. The bit time in this example is equal to the CLKB cycle time (which is also the CLK4 cycle time since these two clock signals are frequency locked). The parameter tsAMPLEy accounts for the delay due to the need to choose one of the four CLKB[i,j] rising edges for sampling. tsAMPLEy is measured or denoted in integral units of tcLK4CYCLE, the cycle time of CLKB[i j]. Because CLKB[i j] is periodic, tsAMP Ey may be positive or negative, and this clock accounts for the time needed to make equation (1) correct:
tv,RQ + tpROP,RQy + ts,RQ - tγ,CLK + tpROP.CLKij + tβy + tsAMPLEy (1) The details of the calibration process used to select the sampling edge will be described later.
Once the RQ[i,0] bus has been sampled (denoted by the large black circle 1433 in the figure), the internal read access tcAC.iNT is started. In this example, this internal read access requires a total of 3*tcL iCYCLE (which is equivalent 12*tcLK4CYCLε)-
An external read access delay tcAC,Exτ may also be defined. This delay is the time from the CLK[i,j] clock signal rising edge which effectively samples the RQ[i j] bus to the time that the first bit becomes valid on the Q[i,j] signal set:
tcAC.EXT = tβy + tsAMPLEy + cACJNT + ,Q (2)
A second external read access delay tcAC,εxτ2 (not shown) may also be defined. The delay is from the time a signal on the RQ[ij] bus is set up to the time the first bit becomes valid on the Q[i j] signal set:
tcACEXT2 = ts,RQ + tcAC.INT + ty,Q
The external read access delay (tcAC,εxτ) is a useful delay parameter because it includes all delay terms contributed by the memory component 1310, but none contributed by the external interconnections or by the controller. Equation (2) includes two terms (tβy and tv,Q) that will change continuously due to, for example, temperature and supply voltage variations during system operation. In contrast, the internal read access delay term tcAC,iNτ, shown graphically in 14(c), will remain constant during system operation. The term tsAMPLEy will change in increments of tcL 4CYCLE because of sampling logic changes that compensate coarsely for some temperature and supply voltage variations during system operation. Likewise, the second external access delay (tcAC.εxrc) includes the terms ts,RQ and ty,Q that change during system operation.
As a result, the external read access delay tcAC.EXT (or tcAC.E rc) of the memory component will change during system operation. This change (plus any changes contributed by the external interconnections or by the controller) can be compensated for using, for example, an adjustable timing value tPHASERj i the controller. Due to the ability of the present invention to "calibrate out" large variations in the external access time of a memory component over time, the difference in external access time between two similar memory read operations (one at a first time and another at a later time when the temperature and/or voltage of the memory component has changed), or two similar memory write operations, may exceed a half-symbol time interval. Two memory operations are "similar" for purposes of this discussion if they have the same internal access time, or if they have very similar internal access times (e.g., which differ by less than a multiplicative factor of 1.1). For instance, two read access operations that are both "page hits" will typically be similar memory read operations having the same internal access time, while a read access that is a page hit and another read access that is a page miss will typically have very different internal access times and thus would not be similar memory operations. Two memory requests (whether read requests or write requests) are "similar" for purposes of this discussion if the resulting memory operations have the same or similar internal access times. Also, as noted earlier in this document, the "symbol time interval" is the duration of an average symbol on the DQ bus as measured at the memory interface, and is sometimes called a "bit time interval."
In a preferred embodiment, the timing compensation capabilities of the calibration circuitry are sufficiently large that the difference in external read access time between two similar memory read operations, or two similar memory write operations, can exceed a full symbol time interval.
At the end of the tcAC,iNT interval, the four bits of read data Qc[3:0] in 14(g) from the memory core are sampled, using the sampling edge of CLKB[i,j]. The four bits are driven from the memory component serially, after the delay tγ,Q. This delay is the output valid delay (the clock-to-output delay) of the register and driver that samples Qc[3:0] and drives it out of the memory component onto the Q[i j] signal set 1349.
The Q[i,j] signal of 14(h) propagates to the controller after a propagation delay pROP.Q to become signal Q[0,j], where it is received by the controller. The setup time of signal Q[0,j] is ts,Q, measured to the rising edge of internal clock signal CLKQ[0j] as shown in 14(i). The four serial bits are converted to parallel form after the delay tstop,Q (this delay is equivalent to l*tcLκιcγcLE or 4*tcL 4CYCLε)- The internal clock CLKQ[0,j] is delayed from CLKl by ( SETR + tpHASERj). tQFFSETRis a fixed offset of 4*tCLκιcγcLE i this example. tpHASERj is an adjustable delay for each slice [j]. The delay is updated and adjusted through a calibration process so that it remains centered on the data window of the bits being received on the Q[0,j] bus. The details of this calibration process will be described in a later section. The value of tpHASERj shown at 14(k) is preferably chosen to satisfy equation (3):
tv,CLK + tpROP.CLKy + β + tsAMPLEy + tcAC,INT + ,Q
+ tpROP.Qy + ts,Q+ tstoP,Q = toFFSETR + tpHASERj (3]
Many of the terms in Eqn. (3) will be affected by temperature and supply voltage variations during system operation. Here, tpHASERj will be adjusted to compensate for these variations. tpHASERj can be adjusted through a range of IRANGER- The value of tRANGERhas a value of 4*1 ;LKICYCLE in this embodiment. The range of tRANGER is chosen to accommodate pHASERj regardless of whether the terms in Eqn. (3) assume their minimum or maximum values.
Because each slice of memory components can have a different toFFsετR+ pHASERj value within a rank of memory components, it becomes necessary for the controller to add some variable delay to ensure that the read data Qc[3:0] becomes available at a fixed time. The fixed time that is chosen in this example is toFFSETR + tRANGER, and has a value of 8*tcLKicYCLE- Stated differently, read data from the read command sampled on CLKl edge 0 is available for all slices on CLKl edge 8.
The compensating delays are inserted by the controller's domain crossing logic 1380. The delays are ts iPRj + I EVE RJ- tsκiPRj is the term that inserts a delay that is a fraction of tα icYCLE- ^EVELRJ is the term that inserts a delay that is an integer multiple of tcLKiCYCLE of signal 14(a), where the integer multiple is equal to or greater than zero.
The propagation delay tpROP.Qy for data signals and the propagation delay tPRoPjcLKij for clock signals remain substantially constant, even with changes in temperature and voltage levels. As a result, differences in the external access time of memory components in the same rank are almost completely the result of differences in the internal operating characteristics of the memory components, which in turn are due to manufacturing differences as well as differences in temperature and voltage. In prior art systems, the external access time of all the memory components in a single rank would have to be substantially the same, within a tolerance of much less than half a symbol time interval, in order to avoid data transmission errors. In contrast, the calibration circuitry of the present invention enables the use of memory components in the same rank of a system that have external access times, for similar memory requests for similar memory operations, that differ by more than half of a symbol time interval. The calibration circuitry of the present invention can handle such large differences in external access time because a respective access compensation time is separately determined for each memory component of the system. Further, because the compensation time value that is determined for each memory component has such a large range of possible values, external access time differences (for memory components in the same rank of the system) greater than a full symbol time interval can be easily compensated, and thus "calibrated out" of the system.
Referring to FIG. 14B, another way to distinguish synchronous and static mesochronous systems from dynamic mesochronous systems is to look at the alignment of the data bit window with respect to the clock signal at the pins of the component. For example, in FIG. 14A, the clock signal 14(e) CLK[i,j] received at the memory component may be compared to the read data 14(h) Q[i j] output by the memory component. In a synchronous or static mesochronous system, the range of the relative phase of these signals (the drive offset time) will be essentially fixed. In this example, the bit time for Q[i,j] starts at a point -90 degrees in the CLK[i,j] cycle and is equal to a CLK[i,j] cycle time.
The convention used here is to measure the phase offset (delay offset) from the beginning of a bit time to the rising CLK[i j] edge that is associated with that bit time. In a dynamic mesochronous system, the range of the relative phase of these signals can be expected to vary over a full bit time (plus or minus a one-half of a symbol time interval or plus or minus 180 degrees).
For example, as shown in FIG. 14B, the phase difference could be measured at different times during system operation. For a static mesochronous system, the relative phase values stay within a narrow range (plus or minus 20 degrees, in this case) around the nominal phase offset of -90 degrees. For a dynamic mesochronous system, the relative phase values can vary over the maximum possible range (plus 90 or minus 270 degrees in this example) around the nominal phase offset of -90 degrees. This provides another way, then, to distinguish the types of systems. If the relative phase of the clock signal and the data signal remain within a range of plus or minus 90 degrees (plus or minus one-quarter of a symbol time interval) from the nominal operating point during system operation, then the system is a synchronous or static mesochronous system. If relative phase of the clock signal and the data signal varies over a range that exceeds plus or minus 90 degrees (plus or minus one-quarter of a symbol time interval), then the system is a dynamic mesochronous system.
This means of discriminating static mesochronous and dynamic mesochronous systems can be extended to systems in which there are two or more bit times per clock cycle. In this case, the relative phase is measured between a clock event (the rising edge in this example) and the beginning of bit time that straddles or is otherwise associated with the clock event. 360 degrees of phase are equal to the bit time interval (the shorter of the bit time and clock cycle intervals). In a static mesochronous system, the relative phase of the rising edge and the start of the associated bit time remain within a range of plus or minus 90 degrees from the nominal phase offset. In a dynamic mesochronous system, the relative phase of the clock event and the start of the associated bit time can drift outside this range of plus or minus 90 degrees from the nominal phase offset. Note that since there are a set of two or more bit times associated with each clock event, it is necessary to consistently use the same bit time from each set when evaluating the phase shift during system operation.
This means can also be extended to systems in which there are two or more clock cycles per bit time. In this case, the relative phase is measured between a clock event (e.g., the rising edge of the clock signal) and the beginning of the bit time that straddles or is otherwise associated with the clock event. 360 degrees of phase are equal to the clock cycle interval (the shorter of the bit time and clock cycle intervals). In a static mesochronous system, the relative phase of the clock event and the start of the associated bit time remain within a range of plus or minus 90 degrees from the nominal phase offset. In a dynamic mesochronous system, the relative phase of the clock event and the start of the associated bit time can drift outside this range of plus or minus 90 degrees from the nominal phase offset. Note that there are a set of two or more clock cycles associated with each bit time, and therefore it is necessary to consistently use the same clock event from each set when evaluating the phase shift during system operation.
FIG. 15 shows the timing of a write transfer for system 1300. As noted, the controller 1305 uses an internal clock signal CLKl for its internal operations. Rising edge 0, 1510 of the CLKl signal in 15(a) samples the signal on internal RQc bus with a register and causes the register to drive the sampled signal value onto the RQ[i,0] bus after the delay ty,RQ. This delay is the output valid delay (the clock-to-output delay) of the register and driver that samples RQc and drives it out of the controller. The address and control information associated with the write command is denoted by the label "WRITE" in the figure. The RQ[i,0] bus propagates to memory component [i,j] after a propagation delay tpROP.RQ 1530 to become the RQ[i,j] signal of 15(c), which is received by the memory component [ij]. The setup time of bus RQ[ij] is ts,RQ 1535, measured to the rising edge 1555 of CLKB[ij], shown in 15(f), that performs the sampling.
The CLKl signal is multiplied in frequency, here by four, to give the CLK[i,0] signal of 15(d), which is delayed by tγ,cLK 1540 relative to the CLKl signal. This delay is the output valid delay of the driver that drives CLK[i,0] out of the controller. The CLK[i,0] signal propagates to memory component [i j] after a propagation delay IPRO^CLKIJ 1545 to become signal CLK[ij] of 15(e), where it is received by the memory component and buffered to become the internal clock signal CLKB[ij] after a delay tβy, 1550. Here, because there are four CLKB[i j] cycles for each bit received from each signal of set RQ[ij], there is freedom to choose one of the four rising edges to do the sampling. This freedom is necessary because the delay tβy will be different between the memory components in rank [i], and the optimal sampling point will need to be separately adjusted. This adjustment is accomplished by selecting one of the four CLKB[i j] rising edges to receive the RQ[i j] bus. The sampling edge is denoted by the heavy arrow at
1555-1570 on one of every four of the rising edges of CLKBfij] in 15(f). This sampling edge is also used for all internal operations in the memory component. Note that all four CLKB[i j] rising edges are used to receive signals on the D[i j] signal set and to transmit signals on the Q[ij] signal set. The parameter tsAMPLεy 1585 in 15(f) accounts for the delay due to the need to choose one of the four CLKB[i j] rising edges for sampling. The duration of tsAMPLE is measured in integral units of tcL 4CYCL , the cycle time of CLKB[i j]. Because CLKB[i j] is periodic, tSAMP E may be positive or negative; it accounts for the time needed to make the following equation correct:
tv.RQ + tpROP.RQy + ts,RQ = tγ;CLK + tpROP,CLKy + tβy + tsAMPLEy (4)
The details of the process to select the sampling edge will be described later.
The steps of the write transfer described above are virtually identical to the corresponding steps of the read transfer. However, particular differences between the read and write transfer exist. Once the RQ[i,0] bus has been sampled (denoted by the large black circle 1533 in the figure), the internal write access time interval tcwD,iNT is started. This requires a total of 3*tcLκιcγcLE (which is equivalent 12*ICLK4CYCLE) in this example.
An external write access delay tcwD,εxτ 1 75 may also be defined. This delay 1575 is the time from the CLK[i j] clock signal rising edge which effectively samples the signal on the RQ[ij] bus to the time that the first bit is set up on the D[ij] signal set:
tcWD,EXT = tβy + tsAMPLEy + tcWD.INT " ts,D " tstoP.D (5)
A second external write access delay tcwD,εxτ2 (not shown) may be defined. This delay is from the time a signal on the RQ[i j] bus is set up to the time the first bit is set up on the D[i j] signal set:
ts,RQ + tcWD,INT " ts,D " tstoP,D
Eqn. (5) is useful because it includes all delay terms contributed by the memory component, but none contributed by the external interconnections or by the controller. Eqn. (5) includes two terms (tβy 1550 and ts,o 1578) that will change continuously due to temperature and supply voltage variations during system operation. In contrast, the terms tcwD,iNT and tstop,D 1 80 will remain constant during system operation. The term tsAMPLεy 1585 will change in increments of tcL 4CYCLε because of sampling logic changes that compensate coarsely for some temperature and supply voltage variations during system operation. Likewise, the second external access delay (tcwD.εxrc) includes the terms ts,RQ and tSjo that change during system operation.
As a result, the external write access delay ICWD.EXT 1575 of the memory component will change during system operation. This change (plus any changes contributed by the external interconnections or by the controller) will be compensated with an adjustable timing value tPHAsετj in the controller.
At the end of this tcwD,iNτ interval, shown graphically in 15(c), the four bits of write data DM[3:0] in 15(g) are held in a register and are available for writing to the memory core after the delay tv.o- This delay 1590 is the output valid delay (the clock-to- output delay) of the holding register.
The D[0 j] signals propagate to the memory component after a propagation delay pROP.Dy to become the D[i j] signals of 15(h), which are received by the memory component. The setup time of signal set D[ij] is tssD 1578, measured to the rising edge of internal clock signal CLKB[ij], here measured to rising edge 1565. The four bits are received by the memory component serially, after the delay tstop,D This delay 1580 is the serial-to-parallel conversion delay (this is equivalent to l*tcL ιcγcLε or 4*tcLK4CYCLε)- The four bits of write data become valid a time tv^ after the last of these four bits is sampled by the rising edge of internal clock CLKB[i j]. This delay 1590 is the output valid delay (the clock-to-output delay) of the register and on the controller. The internal clock CLKD[0 j] of 150) is delayed from CLKl by (t0FFsεττ + tPHASETj
). Here, IOFFSETT 1588 is a fixed offset of l*tcLκιcγcLε- pHAs Tj is an adjustable delay for each slice [j]. This adjustable delay is updated through a calibration process involving calibration logic 1350 and 1355 (FIG. 13) that keeps the write data bits on the bus carrying the D[i j] signal set centered with respect to the CLKB[i j] clock signal that is sampling them in the memory component [i j]. The details of this calibration process will be described later. The value of tpHAsεTj, shown in 15(k), is preferably chosen to make the following equation correct:
tv,CLK + tpROP,CLKy + tβy + tsAMPLεy + tcWD.INT = oFFSεTT + HASεTj + vD + tpROP,Dy + ts,D+ tstoP.D (6) Many of the terms in Eqn. (6) will be affected by temperature and supply voltage variations during system operation. tPHAs τj is adjusted by the calibration process to compensate for these variations. tpHASETj can be adjusted through a range of tRANGεT 1586. Here, tRANGεT has a value of 4*tCLκιcγcLε • This range is chosen to accommodate tpHAsε , regardless of whether the terms in the above equation assume their minimum or maximum values.
Each slice of memory component can have a different toFFsεττ+ tpHAsεij value within a rank of memory components. However, each memory component will be presented with write data at its core at the appropriate time (ICWD.INT after the CLKB[i j] clock edge that samples the RQ[ij] bus).
The tpHASETj delay 1592 is inserted by the controller's domain crossing logic 1380. Other delays inserted include tsκ.ιpτj + t EVE Tj- sκιpη 1595 is a delay that is a fraction of tcLKiCYCLE • tLεvELTj 1598 is a delay that is an integer multiple of tcuαcvcLE of the signal in 15(a). FIG. 16 shows the logic for the memory component 1600 at position [i j] in system
1300. There are three buses that connect the memory component to the external system: CLK[ij], RQ[i j] and DQ[i j]. In this example, the RQ[ij] bus 1604 has NRQ signals, where N is an integer greater than zero, and the other two buses have one signal each.
As depicted in FIG. 16, memory component 1600 is configured to connect to the controller with one DQ wire per slice. Other embodiments could connect the memory component to the controller with more than one DQ[i j] signal by a simple extension of the methods described for system 1300.
Memory component 1600 has three internal logic blocks forming the memory interface: Ml, M2, and M3. There is a memory core (block M5) that contains storage cells (i.e., the main memory array subcomponent of the memory component). There is also a set of registers and multiplexing logic (block M4) that form the calibration logic (also called MCAL earlier) for the memory component 1600.
Block Ml receives the CLK[ij] and RQ[ij] buses 1602 and 1604, respectively. Block Ml produces a buffered clock CLKB[i j] that is used throughout memory component 1600. Block Ml also produces a Load signal on bus 1608 that indicates which CLKB[i j] signal edges are used for internal operations. A Commands bus 1610 carries command signals that indicate which memory command (READ, WRITE, WRPATO, WRPAT1, RDPATO, RDPAT1, etc.), if any, is being executed.
Block M2 transmits read data on the DQ[ij] bus 1612. Block M2 performs a parallel to serial conversion on data bits received via the bus QM[3:0] 1614 from Block M4. Block M2 also uses the buffered clock CLKB[i j] and Load signals.
Block M3 receives write data on the DQ[ij] 1612 bus. Block M2 performs a serial to parallel conversion and outputs the resulting bits on bus DM[3:0] 1620. Block M2 also uses the buffered clock CLKBfij] on bus 1606 and Load signals on bus 1608.
The calibration logic M4 consists of two registers PATO and PATl 1630 and 1635, respectively, which can be loaded with write data on bus DM[3:0] 1620. The loading of the write data occurs when the WRPATO or WRPAT1 commands are asserted on the Commands bus 1610, causing the C2 or CI load signals on buses 1640 and 1645, respectively, to be asserted.
The calibration logic M4 is also able output the contents of the two registers PATO and PATl onto the bus QM[3:0] 1614 instead of the read data QMO[3:0] 1650 from the memory core, block M5. The contents of the registers PATO and PATl are output onto the bus QM[3:0] 1614 when read commands RDPATO and RDPATl, respectively, are received by the memory component via the RQ bus. These read commands cause the C4 select signal 1655 to be asserted and the C3 signal 1660 to be deasserted or asserted, respectively, so as to route the data from the PATO and PATl registers to the QM[3:0] bus 1614.
The two "pattern" registers 1630 and 1635 assume specific values (i.e., are automatically initialized) when the memory component 1600 is first powered up. In one embodiment, the pattern registers are initialized to a predefined value (e.g., "0 1 0 0") by circuitry that detects the ramping-up of the supply voltage. In another embodiment, the register initialization circuits is responsive to a RESET command on the command bus 1610 or to a sideband signal that causes the memory component 1600 to reset to a known state (this signal is not shown). Initialing the pattern registers 1630, 1635 to a known value is important for correct initial execution of the calibration process. These initial values could be replaced by other values later.
FIG. 17 shows the logic for block Ml of the memory component 1600 at position M[ij] in system 1300 for producing buffered clock signal CLKB[i j] on bus 1606, Load signal on bus 1608/1715 and Commands signals on bus 1610. More generally, the logic diagram in FIG. 17 and the timing diagram in FIG. 18 show how the calibration apparatus of block Ml is configured to determine the suitability of a plurality of timing events (i.e., each of the "l"s on the RQ[i j][b] signal after a CALSET command is received on the
RQ[ij] signal) and to select, based on the suitability determination, one of the plurality of timing events for use as a sampling point for sampling the symbols on the RQ[i j] signal. In an alternate embodiment, similar calibration circuitry to that used in Ml could be provided to determine the suitability of a plurality of timing events for use as a driving point for driving symbols onto a signal, and to select, based on the suitability determination, one of the plurality of timing signals for use as the driving point.
It should be noted that the calibration apparatus in block Ml of each memory component operates independently of the calibration apparatus in block Ml of each other memory component in the memory system. Thus, even if the same CALSET and CALTRIG commands are sent simultaneously to multiple memory components, each memory component will independently select the best (i.e., most suitable) timing event for sampling the RQ[ij] signal. As a result, two memory components in the same rank of a memory array may select different timing events at which to sample the RQ[i j] signal. The same independence of the timing event selection would also apply to systems in which calibration logic is used to select the most suitable timing event (e.g., clock edge) for use as a driving point for driving symbols onto a signal.
System 1700 receives the CLK[ij] and RQ[ij] buses 1602 and 1604, respectively. The buffered clock CLKB[i j] signals produced by buffer 1710 are used by the rest of the memory component. The register 1712 produces a Load signal on bus 1715/1608 which indicates which edges of CLKB[i j] are to be used for internal operations. A Commands bus 1610 carries command signals that indicate which memory command (READ, WRITE, etc.) is being executed.
The clock signal CLK[i j] is buffered to produce a buffered CLKB[i j] signal that clocks a set of register bits, here six bits, which produce the signal Load on buses 1608 and 1715. The six register bits are called Load, CalState[l :0], CalFrm[l :0] and CalEn. The CalState[l :0] register 1717 counts through four states {00,01,10,11}. The CalFrm[l:0] register 1720 contains a two bit value that is compared to CalState[l:0] bits in each cycle. When the bits from the CalState[l :0] register 1717 match the bits of the CalFrm[l:0] register 1720, a Load signal is asserted by the Load register 1712 in the next CLKB[ij] cycle on the Load bus 1608. The CalEn register 1725 is used to update the value held in register 1720. Register
1725 is responsive to two signals, CALTRIG 1730 and CALSET 1735, which are commands decoded from bus 1604 by decode logic 1722. The use of these two signals will be further described relative to the timing diagram for system 1700.
FIG. 18 shows the timing for block Ml of the memory component 1600. To facilitate unambiguous references to signals in various timing diagrams of this documents, signals denoted as (a), (b) and so on in FIG. 18 shall be denoted as signals 18(a), 18(b) and so on in the text of this document. FIG. 18 shows the sequence needed to generate load signals and update the CalFrm[l:0] value, signal 18(k), to accommodate any timing shifts due to temperature and supply voltage changes during system operation. It should be noted that all the RQ signals shown in FIG. 18 are signals generated by the controller and sent to the memory component whose operations are depicted in FIG. 18.
The clock signal CLK[ij] (on bus 1602 in FIG. 16) is shown as waveform 18(a). Clock signal CLK[i j] is buffered and delayed by tβy to produce CLKB[i j], waveform 18(b). The rising edges of the CLKB[ij] signal are numbered to label the timing events. The large black circles indicate the sampling point of signals by registers clocked by CLKB[ij].
The RQ[i j] bus 1604 carries the NRQ signals labeled RQ[ij][NRQ-l :0]. These signals are shown as waveform 18(c), along with signal RQ[ij][b] broken out individually below as waveform 18(d). Note that index "b" is within the range [NRQ-1 :0] for this example. Signals 18(c) and 18(d) are used to encode three commands in system 1700 when updating sequences: CALSET (calibration set), NOP (no operation), and CALTRIG (calibration trigger). The label "any" on these signals indicates any other command may be provided during the respective interval. Signal RQ[i j][b] must be low for the NOP command and the CALSET command 18(e), and must be high for the CALTRIG command signal 18(f). Other restrictions on the command encoding are not necessary. The update sequence begins with the CalState[l:0] register 1717 incrementing via incrementer 1740 through its four possible states. The CalState signal is shown as signal 18(i), and the incremented signal is represented as waveform 18(j). In the example shown in FIG. 18, the CalFrm[l :0] register 1720 holds the value "00", and therefore the comparator 1742 finds a match during the cycles in which the value in the CalStatejT :0] register is "00". The positive output of the comparator results in a "1" being stored in the Load register 1710 at the next positive going edge of the CLKB[ij] signal, at which time the value in the CalState[l:0] register becomes "01". Signal 18(k) depicts the signal CalFrm stored in register 1720, and signal 18(1) depicts the Load signal waveform. In other words, the Load signal waveform 18(1) is equal to "1" in each clock cycle that follows a clock cycle in which the value in the CalState[l:0] register 1717 equals the value in the CalFrm[l:0] register 1720.
The RQ[ij][NRQ-l:0] bus 1604 is sampled on edge 1 (because the Load signal 18(1) is asserted during edge 1) and is decoded as the CALSET command, causing the CALSET signal 18(e) to be asserted. Signal 18(e) is sampled by the CalEn register 1725 on edge 2, causing the CalEn signal 18(h) to be asserted after edge 2.
The RQ[i j][ NRQ-1 :0] bus is sampled again on edge 5, and is decoded as a NOP and ignored.
The RQ[i j][ NRQ-1 :0] bus is sampled again on edge 9, and is decoded as a CALTRIG command, which is ignored and treated the same as a NOP. However, the RQ[ij][b] signal is asserted and sampled high on edges 9, 10, 11, and 12. A set of three registers 1745, 1750, 1755 and an "AND" gate 1760 detect three high assertions in a row (of the RQ[ij][b] signal) and assert the CALTRIG signal 18(f) as indicated by arrow 1810. Signal 18(f) causes the CalClr signal, 18(g), to be asserted. The CalClr signal 18(g), in turn, is sampled by the CalEn register 1725 (indicated by arrow 1830), causing it to go low (i.e., be reset) after edge 12. The CalClr signal 18(g) also enables the CalFrm[l:0] register to load the incremented value of the CalState[10] register (as indicated by arrow 1840), and to output its new value after edge 12. This new value is "01", meaning that the Load signal on bus 1608 will now be asserted during the cycles in which the CalState[l :0] register 1717 is "10". In other words, the sampling point selected by the Load register 1765 has shifted right by one CLKB[i j] cycle. The RQ[ij][ NRQ-1 :0] bus is sampled on edges 13 and 14, and is decoded as a NOP and ignored. The RQ[ij][ NRQ-1 :0] bus is sampled again on edge 18, and is decoded as a valid command, and the command is executed.
The timing relationship in FIG. 18 depicts a simple hardware implemented algorithm that searches for a string of three sampled "l"s on the RQ[ij][b] signal and updates the CalFrm[l :0] value to the value in the CalState[l :0] register plus 1. This CalFrm[l :0] value is the one that makes the Load signal assert during the second sampled "1". The previous value of CalFrm[l:0] caused the Load signal to assert during the first sampled "1", which is not optimal because there is less timing margin. The Load signal controls not only when the command signal RQ[i J][NRQ-1 :0] is sampled and decoded, but also controls the timing of data loads in the M2 and M3 blocks and in PATO and PATl registers.
FIG. 19A shows the logic for block M2 of the memory component 1600 at position [i j] in system 1300. Block M2 performs a parallel to serial conversion, taking four parallel bits of read data from the QM[3:0] bus 1614 and serially transmitting the read data onto the bi-directional DQ[ij] bus 1612. Block M2 also uses the buffered clock CLKB[i j] and Load signals.
The Load signal on bus 1608 is asserted during one of every four rising edges of CLKB[ij]. In this example, the edge of CLKB[ij] that is selected is the same as the one that is used by block Ml to receive the RQ[i j] signal. As a result, the internal read access time tcACiNT will be an integral multiple of tCLκιcγcLE (3*tcLκιcγcLε or 12*tcu 4CYCLε). Other embodiments could deliberately misalign the Load signal for receiving the RQ[i j] signal on bus 1604 and the Load signal for transmitting the DQ[i j] signal 1612 to match a timing requirement of the memory core 1680. Register 1930 is loaded with four bits of information from the QM[3:0] bus 1614 during each clock cycle, but only the information loaded in the clock cycle prior to each Load signal is used. When the Load signal 18(1), or 1608, is asserted, the four bits of information in register 1930 are steered through multiplexer 1910 to the four one-bit registers 1920 and are loaded into those registers 1920 upon the clock edge that occurs while Load is enabled. The outputs of a last one of the registers 1920 is asserted as the DQ[i j] signal after the clock edge. On the next three clock edges the multiplexer shifts the remaining three bits onto the DQ[i j] signal.
FIG. 19B shows the logic for block M3 of the memory component 1600 at position [ij] in system 1300. Block M3 receives write data on the DQ[ij] bus 1612. A serial to parallel conversion is performed by registers 1940 and multiplexer 1950 to create the parallel data asserted on bus DM[3:0] 1620. The serially connected registers 1940 are clocked by the buffered clock signal 1606, and Load signal transfers the content of the registers 1940 through the multiplexer 1950 to register 1960.
The Load signal on bus 1608 is asserted on one of every four rising edges of the CLKB[ij] signal on bus 1606. In this example, the selected edge is the same edge as the one that is used by block Ml for receiving the RQ[i j] signal on bus 1604. As a result, the internal write access time ICWD,INT will be an integral multiple of tcu iCYCLε (1*ICLKICYCLE or 4*tcLK4CYCLε)- Other embodiments could deliberately misalign the Load for receiving the RQ bus and the Load signal for receiving the DQ bus 1612 to match a timing requirement of the memory core 1680.
During a write transfer, the four one-bit registers 1940 connected serially to the DQ[ij] signal 1612 continuously shift in the write data that is present on each rising edge of CLKB[ij]. When the Load signal on bus 1608 is asserted, the most recent shifted-in write data is loaded in parallel to the register 1960 connected to the DM[3:0] bus 1620. When the Load signal is deasserted, the contents of register 1960 are recirculated through the multiplexer on line 1970.
FIG. 20 shows the logic 2000 for the controller component 1305 in the system 1300. There are three buses that connect the controller to the memory components of the memory system: CLK[i,0] 1320, RQ[i,0] 1315 and DQ[0,j] 1325. Logic 2000 is made up of three blocks: CI, C2 and C3. Block CI contains clock generator circuitry. Block C2 contains circuitry for each memory rank [i] and connects to the NRQ signals of the bus 1315 and the one CLK[i,0] signal 1320. Block C3 contains circuitry for each memory slice [J] and connects to the one signal of the DQ[0j] bus 1325. The controller of FIG. 20 will typically contain other blocks of circuitry, some or all of which are not part of the memory interface, but these blocks are not shown here. Logic 2000 assumes that each memory component slice connects to the controller with one DQ signal. Other embodiments could connect the memory component to the controller with more than one DQ signal by a simple extension of the methods described for system 1300. There are six sets of signals that connect the memory interface to the rest of the memory controller: (a) CLKC - the controller clock 2010; (b) RQc[i] - the request bus for rank [i] 2020 (typically the same for all ranks); (c) TX[j] - the calibration bus for the controller transmit logic slice [j] 2030; (d) RX[j] - the calibration bus for the controller receive logic slice [j] 2040; (e) Qc[j][3:0] - the read data for slice [j] 2050; and (f) Dc[j][3 :0] - the write data for slice [j] 2060.
Block CI receives the CLKC signal 2010. Two sets of clock signals are created from this reference clock. Here, the clock signals for all ranks are the same, and the clock signals for all slices are the same. The first set of clock signals is for block C2: (a) CLKl 2015 - a derived clock with same frequency as CLKC, and phase-aligned to CLKC; and (b) CLK4[8] 2018 - a derived clock with four times the frequency of CLKC.
The second set of clock signals is for block C3: (a) CLKl 2015 - a derived clock with same frequency as CLKC, and phase-aligned to CLKC; (b) CLK4Cyc[l:0] 2022, which is a cycle count of CLK4 clock cycles, and thus indicates a phase of CLK4 cycle relative to CLKl; (c) CLK4CycD[l:0] 2025, which is the same as CLK4Cyc[l:0] except that it is delayed by half a CLK4 clock cycle relative to CLK4Cyc[l :0]; and (d) CLK4[7:0] 2028, which is a set of 8 derived clocks having four times the frequency of CLKC, each having a different phase offset (as shown in FIG.22), staggered in increments of 118th of a CLK4 cycle. The CLK4[7:0] signals are also herein called phase vectors and the CLK4Cyc[l :0] is also herein called a clock count signal. These phase vectors and the clock count signal are used by both the transmit and receive circuits for each DQ bus.
Block C2 receives the RQc[i,0] bus 1315 from other circuitry in the controller and receives the CLKl 2015 and the CLK4[8] 2018 clock signal from block CI.
Block C3 connects to the TX[j], RX[j], Qc[)][3:0], and Dc|j'][3:0] buses from the rest of the controller. Block C3 receives the CLKl, CLK4Cyc[l :0], CLK4CycD[l :0], and CLK4[7:0] buses from block CI . FIG. 21 shows the logic 2100 for block CI of the controller component of FIG. 20. Block CI is responsible for creating the derived clock signals for blocks C2 and C3 from the reference clock signal CLKC 2010.
The reference clock signal CLKC is received by a PLL circuit 2015, which produces a clock signal CLK8 that has eight times the frequency of CLKC. This increase in frequency is set by the circuitry in the feedback loop described below.
The CLK8 signal clocks a three bit register 2118, which produces a three-bit signal asserted on a bus C[2:0] 2019. The three-bit signal on the C[2:0] bus is decremented by the logic circuit "DEC" 2025 and loaded back into the register 2118 on the next CLK8 edge. Signal C[2] is the most-significant-bit (or "msb"), and signal C[0] 2030 is the least- significant-bit of the value stored in register 2118. C[2:0] cycles through its values (111, 110, 101, 100, 011, 010, 001, 000, and then back to 111), with its value being decremented with each cycle of the CLK8 signal.
Signal C[2] is buffered by buffer 2058 to produce CLKl 2035. Signal 2035 is a derived clock signal that has the same frequency as the reference clock CLKC. The PLL circuit 2015 compares the CLKC and CLKl signals on buses 2010 and 2035, and the phase of the output signal CLK8 is adjusted until these two clock signals are essentially phase-aligned (as shown in timing diagram FIG. 22).
Signals C[2] and C[l] are complemented (i.e., inverted) and buffered by buffers 2045 to produce the CLK4Cyc[ 1 ] and CLK4Cyc[0] signals on buses 2038 and 2040, respectively. The CLK4Cyc[l] and CLK4Cyc[0] signals are used to label four CLK4 cycles within each CLKl cycle.
Signals C[2] and C[l] are also loaded into two delay registers 2020 clocked by the CLK8 clock signal. The output of these two registers are complemented and buffered by buffers 2050 to produce the CLK4CycD[l ] and CLK4CycD[0] signals on buses 2052 and 2055 respectively. The CLK4CycD[l] and CLK4CycD[0] signals 2052 and 2055 are the same as the CLK4Cyc[l] and CLK4Cyc[0] signals, delayed by one CLK8 cycle.
Note that all the buffer circuits 2045, 2050, 2058 and capacitive loads are preferably designed to give the same delay values, so that all the clock signals and clock count signals generated by CLKC (e.g., CLKl, CLK4[8:0], CLK4Cyc[l :0], and CLK4CycD[l :0]) are essentially phase-aligned as shown in FIG. 22. The C[0] signal on bus 2030 has a frequency that is four times that of the reference clock signal CLKC 2010. The C[0] signal is the input signal to a DLL circuit. There are eight matched delay elements 2060 (labeled "D"), each of whose delay is controlled by a "delay-control" signal on line 2065. The delay-control signal could be either a set of digital signals, or it could be an analog signal, such as a voltage signal. The delay of each delay element 2060 is identical.
The output of each delay element 2060 is passed through a buffer 2070 (labeled "B") to produce the nine CLK4[8:0] signals 2075. Here, each of these clock signals will have a frequency that is four times that of the reference clock CLKC. The two signals CLK4[0] and CLK4[8] are compared by the DLL 2080, and the value of delay-control 2065 is adjusted until the signals CLK4[0] and CLK4[8] are essentially phase aligned. The remaining CLK4[7:1] clock signals will have phase offsets that are distributed in 45° (tcLK4Cycie/8) increments across a CLK4 cycle.
As before, all buffer circuits 2070 and capacitive loads are preferably designed to give the same delay values, so that all the CLK4[8:0] clock signals have evenly distributed phases, and the rising edge of CLKl will be essentially aligned to every fourth edge of CLK4[0] and CLK4[8].
FIG. 22 shows the timing diagram with signals 22(a)-(o) for block CI of the memory controller 2000. Block CI is responsible for creating the derived clock signals for blocks C2 and C3 of system 2000 from the reference clock signal CLKC 2010.
The reference clock signal CLKC is shown in the first waveform 22(a). The cycle time of the CLKC signal is tcLKicycie- The PLL circuit 2015 produces a clock signal CLK8 of 22(b) that here has eight times the frequency and whose cycle time is tcLκ8Cycie- The rising edge of the CLK8 signal is delayed from the rising edge of CLKC by tPLL, a delay introduced by the PLL circuit to ensure that the rising edges of CLKC and CLKl are aligned. The CLK8 signal clocks a three bit register 2118, which produces a bus C[2:0]. This bus decrements through the values {111, 110, 101, 100, 011, 010, 001, 000}, and is delayed from CLK8 by ICLK-TO-OUT (the clock to output delay time of the register 2118). Signal C[2], is buffered by a buffer 2058 having an associated delay of IBUFFER (arrow 2220) to produce CLKl 2035. Signal 2035, depicted as 22(d), is a derived clock signal that has the same frequency as the reference clock CLKC. The PLL circuit 2015 compares the rising edges of the two CLKC and CLKl signals (on buses 2010 and 2035), and the phase of the output signal CLK8 is adjusted until these two inputs are essentially phase-aligned. The edges aligned by PLL 2015 are shown by arrows 2210. Note that the following equation will be satisfied when the PLL is phase locked:
tpLL + tcLK-TO-OUT + tβUFFER = tcLK8Cycle= tcLKlCycle/8 (7
Signals C[2] and C[l] are complemented and buffered to give the CLK4Cyc[l] and CLK4Cyc[0] signals on buses 2038 and 2040, respectively. Signals C[2] and C[l], depicted together as signal 22(e), are also loaded into two delay registers 2020 clocked by the CLK8 clock signal. The output of these two registers are complemented and buffered to give the CLK4CycD[l :0] signals on buses 2052 and 2055, and depicted together as signal 22(f). The CLK4CycD[l :0] signals are the same as the CLK4Cyc[l :0] signals delayed by one CLK8 cycle. The CLK4Cyc[l :0] and CLK4CycD[l :0] signals label the four CLK4 cycles within one CLKl cycle. The two sets of signals are needed because any of the eight CLK4[7:0] signals might be used. For example, if a clock domain is aligned with the CLK4[5:2] clock signals (depicted by the black dots identified by arrow 2240), then the CLK4Cyc[l] and CLK4Cyc[0] signals are used. If a clock domain is aligned with the CLK4[7,6,0,1] clock signals (represented by arrows 2230), then the CLK4CycD[ 1 ] and CLK4CycD[0] signals are used. This alignment with multiple clock domains gives as much margin as possible for the set and hold times for sampling the CLK4Cyc[l :0] and CLK4CycD[l :0] signal sets, and permits CLK4 cycles to be labeled consistently regardless of which CLK4[7:0] signal is used. The C[0] signal on bus 2030 has a frequency that is four times that of the reference clock signal CLKC. The C[0] signal is the input signal to the DLL circuit containing matched delay elements 2060 and buffers 2070. The output of the eight delay elements 2060 is passed through buffers 2070 to produce the CLK4[8:0] signals on bus 2075. Each of these clock signals has a frequency that is four times that of the reference clock CLKC, as shown by signals 22(g)-(o) in FIG. 22. The two signals CLK4[0] and CLK4[8] are compared by the DLL 2080, and the delay-control value is adjusted until the two signals are essentially phase aligned. The DLL circuit aligns the edges depicted by arrows 2250. As a result, the CLK4[7:1] clock signals have phase offsets that are distributed in 45° increments (tcL 4Cycie/8) across a CLK4 cycle.
The clock signals CLK4[7:0], signals 22(g)-(n), are used to create the clocks needed for transmitting and receiving in the C3 block of system 2000 for each slice of the memory components. Any slice may need any of these phase-shifted clock signals. Further, the controller's calibration circuitry for a particular slice may select a different clock signal during system operation, if the timing parameters of the delay paths change because of temperature and supply voltage variations. FIG. 23 shows the logic for the controller block 2300 of system 2000. Block 2300, or R0, is part of block C3 (along with block 3000, or TO). Block 2300 is responsible for receiving read data from the memory components and includes three blocks: Rl 2400, R2 2500, and R3 2600.
Block Rl connects to the DQ[0j] bus 1325, which connects to the memory components of the memory system. Block Rl receives the CLKQ[0j] signal (line 1334) and LoadR[j] signal (line 2310) from block R2. Block Rl receives CLKlSkipR[j] (line 2315) and CLKlLevelR[j][l:0] (line 2320) from block R3 and receives CLKl 2015 from outside this controller block 2300 (from block CI in FIG. 20). Block Rl returns read data signals Qc[jj[3:0] to other blocks in the controller. Block R2 supplies the CLKQ[0 j] and LoadR[j] signals to block Rl . Block R2 receives CLK4BlendR[j][4:0] (line 2325), CLK4PhSelR[j][2:0] (line 2330) and CLK4CycleR[j][l:0] (line 2335) from block R3. Block R2 also receives CLK4[7:0], CLK4Cyc[l:0] and CLK4CycD[l:0] from outside of block R0 (from block CI in FIG. 20). Block R3 supplies the CLK4BlendR[j][4:0], CLK4PhSelR[j][2:0] and CLK4CycleR[j][l :0] signals to block R2. Block R3 supplies CLKl SkipR[j] and
CLKlLevelR[j][l:0] to block Rl. It receives LoadRXA, LoadRXB, CLKl, SelRXB, SelRXAB, IncDecR[j], and 256orlR signals from outside of block R0 (either block CI in FIG. 20 or other blocks in the controller).
FIG. 24 shows the logic for the controller block Rl 2400 of system 2300. This block is responsible for receiving read data from the memory components and inserting a programmable delay. The LoadRQ] signal 2310 is asserted on one of every four rising edges of CLKQ[0 j]. The correct edge is selected in the Rl block. During a read transfer, four one- bit registers 2410 connected serially to the DQ[0j] bus 1325 continuously shift in the read data that is present on the DQ[0j] bus 1325 with each rising edge of CLKQ[0j]. When the LoadRQ] signal is asserted, the most recent shifted-in read data is loaded in parallel to the 4-bit register 2420. When the Load signal is deasserted, the contents of this register are recirculated through the multiplexer 2430 along bus 2435 and held for four CLKQ[0 j] cycles (or one CLKl cycle).
The QcQ][3:0] signal on line 2050 and the CLKl signal on 2015 represent two clock domains that may have an arbitrary phase alignment with respect to each other, but they will be frequency-locked, here in a 4:1 ratio. The serial-to-parallel conversion controlled by LoadR[j] 2310 makes the frequencies of the two clock domains identical. Therefore, either the rising edge of CLKl or the falling edge of CLKl will be correctly positioned to sample the parallel data in the four-bit register 2440. The CLKlSkipR[j] signal (generated in block R3, shown in more detail in FIG. 26) selects between the two cases. When it is one, the path 2445 with a negative-CLKl -edge-triggered register is enabled, otherwise the parallel register is used directly via path 2448. In either case, a positive-CLKl -edge-triggered register samples the output of the skip multiplexer 2450 and stores the four-bit value in a first register 2470. The final stage involves inserting a delay of zero through three CLKl cycles. This is easily accomplished with a four-to-one multiplexer 2460, and three additional four-bit registers 2470. The CLKlLevelR[j][l:0] bus 2320 is generated in block R3, and selects which of the four registers 2470 is to be enabled (i.e., it selects which register's output is to be passed by the multiplexer 2460 onto the Qc[j][3:0] bus 2050). FIG. 25 shows the logic for the controller block R2 2500. This block is responsible for creating the CLKQ[0 j] clock signal needed for receiving the read data from the memory components, and for creating the LoadRQ] signal for performing serial-to-parallel conversion in 2400.
Block R2 supplies the CLKQ[0,j] and LoadR[j] signals to block Rl. Block R2 receives CLK4BlendR[j][4:0] (line 2325), CLK4PhSelR[j][2:0] (line 2330) and CLK4CycleRQ][l:0] (line 2335) from block R3. Block R2 also receives CLK4[7:0], CLK4Cyc[l :0] and CLK4CycD[l :0] from outside of block R0 (from block CI in FIG. 20).
CLK4PhSelRQ][2:0] on bus 2330 selects which of the eight CLK4[7:0] clock signals will be used as the lower limit for a phase blending circuit. The next higher clock signal is automatically selected by multiplexer 2520 for blending with the lower limit clock signal, which is selected by multiplexer 2510. For example, if signal 2330 is "010", then the clock signal used for the lower limit is CLK4[2] and the clock signal used for the upper limit is CLK4[3]. These are passed by the two eight-to-one multiplexers 2510 and 2520 to the Phase Blend Logic block 2530 via buses 2515 and 2525. The CLK4BlendRQ][4:0] signal on bus 2325 selects how to interpolate between the lower and upper clock signals on buses 2515 and 2525. If CLK4BlendRQ][4:0] is equal to B, then the inteφolated phase is at a point B/32 of the way between the lower and upper phases. If B is zero, then it is at the lower limit, and if B is 31, then it is almost at the upper limit. The output of the Phase Blend Logic 2530 is CLKQ[0j], the clock signal on bus 1334 used to sample the read data from the memory.
The Phase Blend Logic 2530 uses well known circuitry, which is therefore not described in this document. However, the ability to smoothly inteφolate between two clock signals that have relatively long slew rates (i.e., the rise/fall time of the two signals is greater than the phase difference between the two signals) is important in that it makes the blending of signals to form a combined signal 1334 and implementation of dynamic mesochronous systems easier.
The remaining signals and logic in block R2 generate the LoadRQ] signal 2310, which indicates when the four read data bits have been serially shifted into bit registers 2410 (FIG. 24) and are ready to be clocked into the parallel register 2420 (FIG. 24). The CLK4CycleRQ][l :0] signal, generated by block R3, picks one of the four possible load points. The LoadRQ] signal on line 2310 is generated by comparing CLK4CycleRQ][l :0] to CLK4Cyc[l:0] using compare logic 2565. CLK4Cyc[l:0] labels the four CLK4 cycles in each CLKl cycle. However, this comparison must be done carefully, since the LoadRQ] signal 2310 is used in the CLKQ[0j] clock domain, and the CLK4Cyc[l:0] signals are generated in the CLKl domain. The CLK4CycD[l:0] signals 2540 are delayed from the CLK4Cyc[l :0] signals by one CLK8 cycle, so there is always a valid bus to use, no matter what value of the CLK4PhSelRQ][2:0] signal is used. The following table summarizes the four cases of CLK4PhSelRQ][2:0] that were originally shown in the timing diagram of FIG. 22:
Figure imgf000056_0001
The compare logic 2565 generates a positive ouφut (e.g., a "1") when its two inputs are equal. The output of the compare logic 2565 is sampled by a CLKQ[0,j] register 2575, the output of which is the LoadRQ] signal, and is asserted in one of every four CLKQ[0j] cycles.
More specifically, AND gate 2580 and multiplexer 2570 determine whether a first input to the compare logic 2565 is CLK4CycleRQ][l:0] or is that value incremented by one by increment circuit 2590. XOR gate 2585 and multiplexer 2560 determine whether the second input to the compare logic 2565 is CLK4Cyc[l:0] or CLK4CycD[l:0], each of which is delayed by one CLKQ clock cycle by registers 2550 and 2555.
FIG. 26 shows the logic 2600 for the controller block R3 in FIG. 23. Block R3 2600 is responsible for generating the value of clock phase PhaseRQ][l 1 :0] for receiving the read data.
Logic R3 2600 supplies the CLK4BlendRQ][4:0] (line 2325), CLK4PhSelRQ][2:0] (line 2330) and CLK4CycleRQ][l :0] (line 2335) to block R2. Logic R3 2600 also supplies CLKlSkipRQ] on line 2315 and CLKlLevelRQ][l :0] on line 2320 to block Rl 2400. Logic 2600 further receives the LoadRXA 2605, LoadRXB 2610, CLKl, SelRXB 2615, SelRXAB 2620, IncDecRQ] 2625, and 256orlR signals 2630 from outside of block 2300 (either block CI or other blocks in the controller). There are two 12-bit registers (RXA 2635 and RXB 2640) in block 2600. These 12-bit registers digitally store the phase value of CLKQ[0,j] that will sample read data at the earliest and latest part of the data window for each bit. During normal operation, these two values on register output lines 2637 and 2642 are added by the Add block 2645, and the sum on line 2647 shifted right by one place (to divide by two) by shifter 2650, producing a 12 bit value that is the average of the two values (RXA+RXB)/2. Note that the carry-out 2660 of the Add block 2645 is used as the shift-in of the Shift Right block 2650. In effect, the two registers RXA 2635 and RXB 2640 together digitally store a receive phase value for a respective slice. The value (RXA+RXB)/2 is the appropriate value for sampling the read data with the maximum possible timing margin in both directions. Other methods of generating an intermediate value are possible. This average value is passed through multiplexer 2670 to become PhaseRQ][ll:0] on line 2675. The PhaseRQ][4:0], PhaseRQ][7:5] and PhaseRQ][9:8] signals on lines 2676, 2677 and 2678 are extracted from the PhaseRQ][l 1 :0] signal on 2675, and after buffering by buffers 2695 these extracted signals become the CLK4BlendRQ][4:0], CLK4BlendRQ][7:5], and CLK4BlendRQ][9:8] signals on lines 2325, 2330 and 2335.
The upper two bits of PhaseRQ ][11:0] represents the number of CLKl cycles from the toFFSETR point. The fields CLKlSkipRQ] 2315 and CLKlLevelRQ][l:0] 2320 represent the delay that must be added to the total delay of the read data, which is tRANG R no matter what value PhaseRQ] [11:0] contains. Thus, PhaseRQ] [11 :0] is subtracted from 212-28. The factor of "212" represents the maximum value of tRANR- The factor of "28" is needed to give the proper skip value - this will be discussed further with FIG. 27. The circuitry adds "111100000000" on line 2680 to the complement of PhaseRQ] [11 :0] and asserts carry-in to the adder 2685. The low nine bits of the result are discarded on line 2682, the next bit is buffered to generate CLKlSkipRQ] and the upper two bits are buffered to generate CLKl LevelRQ][ 1:0] 2320.
During a calibration operation, the multiplexer 2670 that passes the (RXA+RXB)/2 value instead selects either the RXA register 2635 or the RXB register 2640 directly, as determined by the SelRXAB signal on 2620 and the SelRXB signal on 2615. Placing the value in the selected register (RXA or RXB) on the PhaseRQ] [11 :0] bus 2675 causes the receive logic to set the sampling clock to one side or the other of the data window for read data. Once the resulting sampling clock CLKQ[0j] on 1334 (FIG. 25) is stable, the read data is evaluated, and the RXA or RXB value is either incremented, decremented, or not changed by logic 2690 and output on line 2694. An increment/decrement value of "1" is used for calibrating the CLKQ[0j] clock. An increment/decrement value of "256" is used by logic 2690 when the sampling point of the RQ[ij] bus 1352 in the memory system component 1310 is changed (because the memory system component 1310 will change the sampling point of the bus 1352 in increments of the CLK4 clock cycle). The RQ[ij] bus sampling point and its calibration process was described above with reference to FIG. 18. FIG. 27 shows receive timing signals 27(a)-(k) that illustrates four cases of alignment of the CLKQ[0j] clock signal 1334 within the tRANGER interval. This diagram illustrates how the following five buses are generated: CLK4BlendRQ][4:0] 2325, CLK4PhSelRQ][2:0] 2330, CLK4CycleRQ][l:0] 2335, CLKlSkipRQ] 2315, and CLKlLevelRQ][l :0] 2320. The value of PhaseRQ][l 1 :0] adjusts the values of the signals on these buses, and the value of tpHASER, which controls the position of CLKQ[0j] within the tRANGER interval, and also adjusts the compensating delays so the overall delay of the read data is (IQFFSETR + RANGεR) regardless of the position of CLKQ[0j].
The first waveform shows the CLKl clock signal, 27(a), over tRANGER, and the second waveform 27(b) shows the labeling for the four CLKl cycles (i.e., 00, 01, 10, 11) that comprise the IRANGER interval (note there is no bus labeled "CLKlCyc"; this is shown to make the diagram clearer).
The third waveform, 27(c), shows the CLK4[0] clock signal, and waveform 27(d) shows the labeling for the four CLK4 cycles that comprise each CLKl cycle.
The fifth waveform, 27(e), shows the numerical values of the PhaseRQ][l 1:0] bus 2675 as a three digit hexadecimal number. The most-significant digit includes two bits for the CLKlCyc value, and two bits for the CLK4Cyc value.
The right side of the diagram 27 shows how three buses are extracted from the PhaseRQ][9:0] bus: the CLK4BlendRQ][4:0] 2325, CLK4PhSelRQ][2:0] 2330 and CLK4CycleRQ][l :0] signals 2335 are buffered versions of the PhaseRQ][4:0] 2676, PhaseRQ][7:5] 2677, and PhaseRQ] [9:8] fields 2678, respectively. The sixth and seventh waveforms, 27(f) and (g), show graphically how the CLKlSkipRQ] and CLKl LevelRQ][ 1:0] signals on buses 2315 and 2320, respectively, vary as a function of the PhaseRQ][l 1:0] value. It is noted that the CLKlSkipRQ] and CLKlLevelRQ][l:0] signals generate a compensating delay for the read data, so they increase from right to left in FIG. 27.
In FIG. 27(k), or case D, the PhaseRQ][l l:0] value is 78016 (2701). At point 2701 of case D, the read data has been sampled and is available in a parallel register (e.g., 2430, FIG. 24) in the CLKQ[0j] clock domain, and is ready to be transferred to the CLKl domain. The read data is sampled by the next falling edge 2720 of CLKl 1330 at time a00ι6, then is sampled by the next rising edge 2730 of CLKl at time c00ι6, and finally is sampled by the next rising edge 2740 of CLKl at time 10001 . The three intervals labeled "tsκiPRN", "tsκiPR", and "ILEVELR" connect the four sampling points 2701-2704. The CLKlSkipRQ] value in waveform 27(k) is "1" because a "tsKiPRN" interval is used. The CLKl LevelRQ][ 1:0] value in waveform 27(k) is "01" because one '^LEVELR" interval is used.
The other cases are analyzed in a similar fashion. In this example, the size of the tRANGER interval has been chosen to be four CLKl cycles. It could be easily extended (or shrunk) using the utilizing the methods that have been described in this example.
Note that the upper limit of the tRANGER interval is actually 3-3/4 CLKl cycles because of the method chosen to align the CLKl SkipRQ] and CLKlLevelRQ][l :0] values to the tpHASER values. The loss of the 'Λ CLKl cycle of range is not critical, and the method shown gives the best possible margin for transferring the read data from the CLKQ[0,j] clock domain to the CLKl domain. Other alignment alternatives are possible. The iRANGεR could be easily extended by adding more bits to PhaseRQ] [11 :0] and by adding more Level registers 2470 in FIG. 24.
FIG. 28 shows timing signals 28(a)-(h) that illustrates how the timing values are maintained in the RXA and RXB registers 2635 and 2640, respectively. Waveform 28(a) shows the CLKl signal 1330 in the controller 1305. The second waveform, 28(b), shows the RQ[i,0] bus 1315 issuing a RDPAT1 command. Signal 28(c) shows the pattern data Q[0,j] returned to the controller. The fourth signal, 28(d), shows the internal clock signal CLKQ[0j] that samples the data in the controller. The position of the CLKQ[0,j] rising edge 2810 is centered on the first bit of pattern data at toFFsεTR + IPHASERJ - tstoP.Q, where:
tv.CLK + tpROP.CLK + tβy + tsAMPLεy + ΪCAC,INT + ty,Q + tpROP.Qy + ts,Q = toFFSεTR + pHASεRj " tstoP,Q (8]
See FIG. 14A for a graphical representation of this equation. Most of the terms on the left side of Eqn. (8) can change as temperature and supply voltage vary during system operation. The rate of change will be relatively slow, however, so that periodic calibration operations (separated by periods of normal memory operations) can keep the tPHAsεRj value centered on the read data bits.
As previously discussed, the calibration logic 1355 (see FIGS. 13 and 26) maintains two separate register values (RXA and RXB) which track the left and right side of the read data window 2820. In the lower part of FIG. 28, the pattern data Q[0,j] and the CLKQ[0j] rising edge are shown with an expanded scale. The CLKQ[0j] rising edge is also shown at three different positions: tPHASERj(RXA), 28(f), tPHASERj(RX), 28(g), and tpHASERj(RXB), 28(h). The three positions result from setting the PhaseRQ][l 1 :0] signal to the RXA[11 :0], RX[11 :0] or RXB[11 :0] value in logic 2600, respectively. Here, RX represents the average value of RXA and RXB. The RXA value shown in 28(f) will hover about the point at which (tpHAs Rj(RXA)- stoP.Q) trails the start of the Q[0j] [0] bit by ts,Q 2830. If the sampled pattern data is correct (pass), the RXA value is decremented, and if the data is incorrect (fail), the RXA value is incremented.
In a similar fashion, the RXB value shown in 28(h) will hover about the point at which (tpHASERj(RXB)- stoP,Q) precedes the end of the Q[0,j] [0] bit by tH,Q 2840. If the sampled pattern data is coπect (pass), the RXB value is incremented, and if the data is incorrect (fail), the RXA value is decremented.
In both cases, a pass will cause the timing to change in the direction that makes it harder to pass (reducing the effective set or hold time). A fail will cause the timing to change in the direction that makes it easier to pass (increasing the effective set or hold time). In the steady state, the RXA and RXB values will alternate between the two points that separate the pass and fail regions. This behavior is also called "dithering". In a preferred embodiment, calibration of RXA stops when the adjustments to RXA change sign (decrement and then increment, or vice versa), and similarly calibration of RXB stops when that value begins to dither. Alternatively, the RXA and RXB values can be allowed to dither, since the average RX value will still remain well inside the pass region.
FIG. 29 shows receive timing signals 29(a)-(l) that illustrate a complete sequence that may be followed for a calibration operation. Waveforms 28(a)-(c) are shown in an expanded view of the pattern read transaction. The first waveform shows the CLKl signal in the controller. The second waveform, 29(b), shows the RQcQ] bus in the controller (see FIG. 20). The third waveform shows the pattern data QcQ][3:0] in the controller (see FIG. 20). The time interval between the CLKl edges associated with the RDPATl command and the returned data PI [3:0] is labeled tcAC,c- This value is the same for all slices and all ranks in the memory system of the present invention, and is equivalent to (toFFsεTR + RANGεR) or eight CLKl cycles for this system example. The eight cycle pattern access is one step in the calibration operation shown in waveform 29(d). The calibration sequence for this example takes 61 CLKl cycles(from 02 to 63). Before the sequence begins, all ongoing transfers to or from memory must be allowed to complete. At the beginning of the sequence, the SelRXB, SelRXAB, and 256orlR signals 29(i), 29(j) and 29(1), respectively, are set to static values that are held through edge 2920. The following table summarizes the values to which these signals are set:
Case SelRXB SelRXAB 256orlR
RXA calibrate
RXB calibrate
Changing the value of the SelRXAB from 0 to 1 means that a time interval tsεττLEi28 (25 CLKl cycles in this example) 2940 must elapse before any pattern commands are issued. This allows the new value of PhaseRQ][l 1 :0] to settle in the phase selection and phase blending logic of the R2 block 2500 (FIG. 25). The pattern data read from the memory component is available in the controller after rising edge 35, shown as edge 2930 in FIG. 29. This pattern data is compared to the expected value, and a pass or fail determination is made if it matches or does not match, respectively. The IncDecRQ] signal 2625 is asserted or deasserted, as a result, and the LoadRXA 2605 or LoadRXB 2610 signal is pulsed for one CLKl cycle to save the incremented or decremented value, as shown in waveforms 29(g), 29(h) and 29(k). The following table summarizes the values to which these signals are set:
Figure imgf000062_0001
At rising edge 38 (2920), all signals 29(g)-(l) can be returned to zero. Changing the value of the SelRXAB from 1 to 0 means that another time interval tsεττLEi28 2950 must elapse before any read or write commands 2960 are issued.
Note that the calibration sequence may be performed on all slices of the memory system in parallel. All of the control signals can be shared between the slices except for IncDecRQ], which depends upon the pass/fail results for the pattern data for that slice. In preferred embodiments, the calibration sequence is performed for RXA and
RXB at periodic intervals that are spaced closely enough to ensure that timing adjustments can keep up with timing changes due to, for example, temperature and supply voltage variations.
When the sampling point of the RQQj] bus 1352 by the CLKB[i j] clock signal 1347 is changed (as in FIG. 18), the sampling point of the CLKQ[0j] receive clock 1334 in the controller must be adjusted. This is accomplished by an update sequence for the RXA and RXB register values. This update sequence is similar to the calibration sequence of FIG. 29, but with some simplifications. Preferably, this update sequence is performed immediately after the RQ sampling point was updated. When updating the RXA and RXB registers to compensate for a change in the sampling point of the RQ[i j] bus, the SelRXB, SelRXAB, and 256orlR signals are set to static values that are held through rising edge 38 (edge 2920). The PhaseRQ] [11 :0] is not changed (SelRXAB remains low), so that the pattern transfer does not need to wait for circuitry to settle as in the calibration sequence. The following table summarizes the values to which these signals are set:
Figure imgf000063_0001
The reason that an increment/decrement value of 256 is used instead of 1 is because when the sample point of the RQ[i j] bus is changed, it will be by {+1,0,-1 } CLK4 cycles. A CLK4 cycle coπesponds to the value of 256 in the range of PhaseRQ][l 1 :0]. When the sample point changes by a CLK4 cycle, the data that is received in the QQ][3:0] bus 2050 will shift by one bit to the right or left. By comparing the retrieved pattern data to the expected data, it can be determined whether the RXA and RXB values need to be increased or decreased by 256, or left the same. The following table summarizes the values to which these signals are set:
Figure imgf000063_0002
RXB update (shifted left) 01 0 1 (pulse)
Both RXA and RXB can be updated successively using the same pattern read transfer. Note that the update sequence may be performed on all slices in parallel. All of the control signals can be shared between the slices except for IncDecRQ], which depends upon the pass/fail results for the pattern data for that slice.
Once the update sequence has completed, a time interval tSEττLE256 (e.g., 50 CLKl cycles) must elapse before any read commands are issued. This allows the new value of PhaseRQ][l 1 :0] to settle in the phase selection and phase blending logic of the R2 block (FIG. 25).
Before the RXA and RXB register values can go through the calibration and update sequences just described, they must be initialized to appropriate starting values. This can be done relatively easily with the circuitry that is already in place.
The initialization sequence begins by setting the RXA register to the minimum value of 00016 and by setting the RXB register to the maximum value fff16. These will both be failing values, but when the calibration sequence is applied to them, both values will move in the proper direction (RXA will increment and RXB will decrement).
Thus, the initialization procedure involves performing the RXA calibration repeatedly until it passes. Then the RXB calibration will be performed repeatedly until it passes. The settings of the various signals will be:
Figure imgf000064_0001
Figure imgf000065_0001
There will be approximately 3840 (= 4096-256) iterations performed during the initial calibration, since the total range is 4096 and 256 is the maximum width of a bit.
Each iteration can be done with little settling time, tsεττLει, because the RXA or RXB value will change by only a least-significant-bit (and therefore the tsEττLει time will be very small). It will still be necessary to observe a settling time at the beginning and end of each iteration sequence in which the PhaseRQ] [11 :0] value is changed by large amounts. PhaseRQ] [11 :0] changes by large amounts when SelRXAB is changed in the normal calibration process described earlier. Note that the initialization sequence may be performed on all slices in parallel. All of the control signals can be shared between the slices except for IncDecRQ], which depends upon the pass/fail results for the pattern data for that slice.
FIG. 30 shows the logic 2000 for the controller block TO. Block TO is part of block C3 of FIG. 20 (along with block 2300). Block TO is responsible for transmitting the write data to the memory component. It consists of three blocks: TI 3100, T2 3200, and T3 3300.
Block TI connects to bus DQ[0j] 1325, which connects to the external memory system (see FIG. 13). Block TI receives the CLKD[0,j] 1332 and LoadTQ] 3010 signals from block T2 and receives CLKlSkipTQ] 3015 and CLKl LevelTQ][ 1:0] 3020 signals from block T3. Block TI also receives CLKl 1330 from outside of block TO (e.g., from block CI in FIG. 20). Block TI also returns DcQ][3:0] to other blocks in the controller.
Block T2 supplies the CLKD[0,j] 1332 and LoadTQ] 3010 signals to block TI. Block T2 receives CLK4BlendTQ][4:0] 3025, CLK4PhSelTQ][2:0] 3030 and CLK4CycleTQ][l :0] 3035 from block T3. Block T2 receives CLK4[7:0] 2075, CLK4Cyc[l :0] 2038, 2040 and CLK4CycD[l:0] 2052, 2055 from block CI of the controller (see FIG. 20).
Block T3 supplies the CLK4BlendTQ][4:0], CLK4PhSelTQ][2:0] and CLK4CycleTQ][l:0] signals to block T2. Block T3 also supplies CLKlSkipTQ] 3015 and CLKlLevelTQ][l:0] 3020 to block TI. Block T3 also receives LoadTXA, LoadTXB, CLKl, SelTXB, SelTXAB, IncDecTQ], and 256orlT signals (3040-3065) from outside of block TO (either from block CI or from other blocks in the controller, via the TXQ] control bus 2030). FIG. 31 is a logic diagram of controller block TI 3100, which is responsible for transmitting write data on bus 2060 from memory and inserting a programmable delay before transmitting onto the DQ[0 j] bus.
Block TI connects to the DQ[0j] bus 1325, which connects to an external memory system. Block TI receives the CLKD[0j] and LoadTQ] signals from block T2. It receives CLKlSkipTQ] 3015 and CLKlLevelTQ][l:0] signals from block T3. Block TI receives CLKl from outside of block TO (e.g., from block CI) and receives DcQ][3:0] from other blocks in the controller.
The first stage of the TI Block inserts a delay of zero through three CLKl cycles. The data received from the DcQ][3:0] bus 2060 is initially stored in a four-bit register 3105. Delay insertion is accomplished using a four-to-one multiplexer 3110, and three additional four-bit registers 3115. The CLKlLevelTQ][l:0] bus 3020 can be generated in block T3 from bus 3020, and selects the data from one of the four registers 3105, 3115 for the multiplexer 3110 to pass.
The CLKD[0 j] and CLKl clock signals may have an arbitrary phase alignment, but they will be frequency-locked in a 4:1 ratio. Either the rising edge of CLKl or the falling edge of CLKl can be positioned to drive the parallel data into the four-bit register 3120 clocked by CLKD[0j]. The CLKlSkipTQ] signal on line 3015 (generated in block T3) selects between the two cases through a skip multiplexer 3150. When it is one, the path 3165 with a negative-CLKl -edge-triggered register is enabled, otherwise the direct path 3160 to multiplexer 3150 is used. In either case, a positive-CLKD[0j]-edge-triggered register 3120 samples the output 3170 of the skip multiplexer 3150.
When the LoadTQ] signal 3010 is asserted, the most recently loaded 4-bit value in register 3120 is loaded into the four one-bit registers 3130 connected serially to the DQ[0j] bus 1325. When the Load signal is deasserted, the contents of the four one-bit registers 3130 are shifted serially to the DQ[0j] bus through multiplexer 3140. FIG. 32 shows the logic for the controller block T2 3200, which is responsible for creating the CLKD[0,j] clock on line 1332 needed for transmitting the write data to the memory component 1310 as shown in FIG. 15.
Block T2 supplies the CLKD[0j] and LoadTQ] signals to block TI of FIG. 31. Block T2 receives CLK4BlendTQ][4:0], CLK4PhSelTQ][2:0] and CLK4CycleTQ][l :0] from block T3. Block T2 receives CLK4[7:0], CLK4Cyc[l :0] and CLK4CycD[l :0] from outside of block TO (from block CI).
The CLK4PhSelTQ][2:0] signal on line 3030 selects which of the eight CLK4[7:0] clock signals will be selected by multiplexer 3220 as the "lower limit clock signal" for the phase blending logic 3210. The CLK4PhSelTQ][2:0] signal is also used by multiplexer 3215 to select the next higher clock signal for blending. For example, if CLK4PhSelTQ][2:0] is "010", then the clock signal used for the lower limit is CLK4[2] and the clock signal used for the upper limit is CLK4[3]. These limit signals are passed by the two eight-to-one multiplexers 3215, 3220 to the Phase Blend Logic block 3210 on lines 3222 and 3224, respectively.
The CLK4BlendTQ][4:0] signal on bus 3025 selects how to inteφolate between the lower and upper clock signals in phase blend logic 3210. For example, if CLK4BlendTQ][4:0] is equal to B, then the inteφolated phase is at a point B/32 of the way between the lower and upper phases. If B is zero, then it is at the lower limit set by multiplexer 3220, and if B is 31 set by multiplexer 3215, then it is almost at the upper limit. The output of the Phase Blend logic 3210 is the CLKD[0j] clock signal on bus 1332, used to write data to a memory component.
The Phase Blend Logic 3210 uses well known circuit techniques to smoothly inteφolate between two clock signals, and thus is not described in detail in this document. The remaining signals and logic of the T2 block generate the LoadTQ] signal 3010, which indicates when the four write data bits are to be shifted into the serial registers 3130.
The CLK4CycleTQ][l :0] signal, generated by the T3 block, picks one of the four possible load points for multiplexer 3140. The LoadTQ] signal is generated by using compare logic
3265 to compare CLK4CycleTQ][l :0] to CLK4Cyc[l :0], which labels the four CLK4 cycles in each CLKl cycle. However, this comparison must be done carefully, since the LoadTQ] signal 3010 is used in the CLKD[0 j] clock domain, and the CLK4Cyc[l :0] signals 2038, 2040 are generated in the CLKl domain.
The CLK4CycD[l:0] signals on lines 2052, 2055 are delayed from the CLK4Cyc[l :0] signals by one CLK8 cycle, so there is always a valid bus to use, no matter what value of CLK4PhSelTQ][2:0] is used. See the timing diagram of FIG. 22. The following table summarizes the four cases of CLK4PhSelTQ][2:0]:
Figure imgf000068_0001
The output of the compare logic 3265 is sampled by a CLKD[0 j] register 3275 to generate the LoadTQ] signal. The LoadTQ] signal is asserted in one of every four CLKD[0j] cycles.
More specifically, AND gate 3280 and multiplexer 3270 determine whether a first input to the compare logic 3265 is CLK4CycleTQ][l:0] or is that value incremented by one by increment circuit 3290. XOR gate 3285 and multiplexer 3260 determine whether the second input to the compare logic 3265 is CLK4Cyc[l :0] or CLK4CycD[l :0], each of which is delayed by one CLKQ clock cycle by registers 3250 and 3255.
FIG. 33 corresponds to FIG. 26 and shows the logic 3300 for the controller block T3, which is part of block TO. The T3 block is responsible for generating the value of clock phase CLKD[0 j] for transmitting write data.
Block T3 supplies the CLK4BlendTQ][4:0], CLK4PhSelTQ][2:0] and CLK4CycleTQ][l :0] signals to block T2. Block T3 supplies CLKlSkipTQ] and
CLKlLevelTQ][l :0] to block TI. Block T3 receives LoadTXA, LoadTXB, CLKl, SelTXB, SelTXAB, IncDecTQ], and 256orlT signals from outside of block TO (either block CI of FIG. 20 or other blocks in the controller). As with block R3, there are two 12-bit registers here (TXA 3335 and TXB 3340) in block T3. These registers digitally store the phase value of CLKD[0j] that will transmit write data at the earliest and latest part of the data window for each bit. During normal operation, these two values on lines 3337 and 3342 are added by the Add block 3345, and shifted right by one place by shifter 3350 (to divide by two), producing a 12 bit value on line 3355 that is the average of the two values (TXA+TXB)/2. Note that the carry-out of the Add block 3345 is used as the shift-in of the shift right block 3350. In effect, the two registers TXA 3335 and TXB 3340 together digitally store a transmit phase value for a respective slice. The average value (TXA+TXB)/2 is the appropriate value for transmitting the write data with the maximum possible timing margin in both directions. Other methods of generating an intermediate value are possible. This average value is passed through multiplexer 3370 to become PhaseTQ][l 1 :0] on bus 3375. The CLK4BlendTQ][4:0], CLK4PhSelTQ][2:0] and CLK4CycleTQ][l:0] signals (on buses 3025, 3030, 3035) are generated by extracting PhaseTQ][4:0] 3376, PhaseTQ][7:5] 3377, and PhaseTQ][9:8] 3378 fields, respectively from the PhaseTQ][l 1 :0] signal and buffering the extracted signals with buffers 3395.
The upper bits of PhaseTQ][l 1 :0] 3375 represent the number of CLKl cycles from the toFFSETT point. The fields CLKlSkipTQ] 3015 and CLKlLevelTQ][l:0] 3020 are extracted from these upper bits. Thus, PhaseTQ][l 1 :0] is added to -28. The factor of "28" is needed to give the proper skip value (this will be discussed further with FIG. 34).
An adder 3385 adds "111100000000" on line 3380 to PhaseTQ][l 1 :0]. The lowest nine bits of the result are discarded on line 3382, the next bit is buffered to produce CLKlSkipTQ] 3015 and the upper two bits are buffered to produce CLKl LevelTQ][ 1:0] 3020. Note that here the CLKl SkipTQ] and CLKlLevelTQ][l :0] fields come from adding PhaseTQ][l 1:0] to a constant, whereas for the R3 block (FIG. 26) of the controller's receive calibration circuitry, the CLKlSkipRQ] and CLKl LevelRQ] [1 :0] fields come from subtracting PhaseRQ] [11 :0] from a constant.
During a calibration operation, the multiplexer 3370 used to select the TX value ((TXA+TXB)/2) instead selects either the TXA register 3335 or the TXB register 3340. Placing this value on the PhaseTQ][l 1:0] bus 3375 causes the transmit logic to set the driving clock to one side or the other of the data window for write data. Once the driving clock CLKD[0,j] on line 1332 is stable, data is written to a memory component and read back and evaluated, and the TXA or TXB value is either incremented, decremented, or not changed by logic 3390. An increment/decrement value of "1" is used for calibrating the CLKDfOj] clock. The increment/decrement value of "256" is used by logic 3390 when the sampling point of the RQ[i j] bus in memory is changed (the memory component will change the sampling point of the RQQj] bus 1352 in increments of the CLK4 clock cycle). The RQ[i j] bus sampling point and its calibration process are described above with reference to FIG. 18. FIG. 34 shows transmit timing signals 34(a)-(k) that illustrate four cases of alignment of the CLKD[0j] clock signal 1334 within the tRANG T interval 3405. This diagram illustrates how the signals on the following five buses are generated: CLK4BlendTQ][4:0] 3025, CLK4PhSelTQ][2:0] 3030, CLK4CycleTQ][l:0] 3035, CLKlSkipTQ] 3015, and CLKlLevelTQ][l:0] 3020. The value of PhaseTQ][l 1:0] adjusts the value of these buses and the value of tpRAT (the position of CLKD[0j] within the RANGET interval).
The first waveform 34(a) shows the CLKl clock signal over an interval of duration equal to tRANGεT, and the second waveform 34(b) shows the labeling for the four CLKl cycles that comprise the IRANGET interval (note there is no bus labeled "CLKlCyc"; this is shown to make the diagram clearer).
The third waveform 34(c) shows the CLK4[0] clock signal, and waveform 34(d) shows the labeling for the four CLK4 cycles that comprise each CLKl cycle (note - a CLK4Cyc[l:0] bus does exist).
The fifth waveform 34(e) shows the numerical values of the PhaseTQ][l 1 :0] bus 3375 as a three digit hexadecimal number. The most-significant digit includes two bits for the CLKlCyc value, and two bits for the CLK4Cyc value.
The right side of FIG. 34 shows how three buses are extracted from the PhaseTQ][9:0] bus: the CLK4BlendTQ][4:0] 3025, CLK4PhSelTQ][2:0] 3030 and CLK4CycleTQ][l:0] 3035 signals are generated from the PhaseTQ][4:0] 3376, PhaseTQ][7:5] 3377, and PhaseTQ][9:8] 3378 fields of the PhaseTQ][l l:0] signal, respectively. The sixth and seventh waveforms, 34(f) and 34(g), show graphically how the CLKlSkipTQ] and CLKl LevelTQ][ 1 :0] buses 3015 and 3020, respectively, vary as a function of the PhaseTQ][l 1 :0] value. These buses increase in value from left to right in the figure. Note that this is opposite from the direction for the receive case. In case A, shown at 34(h), the PhaseTQ][l l:0] value is 880,6 (3410). The write data is sampled 3401 on the rising edge 3415 of CLKl at time 000163420. The data is sampled 3402 at 400ι6 (3430) by the next rising edge 3435 of CLKl. The associated CLKlLevelTQ][l:0] in FIG. 34(g) value is "01" because one "tLEVELτ" interval is used. The write data is sampled 3403 by the next falling edge 3440 of CLKl at time 60016. The CLKlSkipTQ] value is "1" at "time" 88016 because a "tSκiPTN" interval 3445 is used. The write data then crosses into the CLKD[0 j] clock domain, and is sampled 3404 by the rising edge of CLKD[0j]. The three intervals labeled "I EVELT", "tsκiPTN", and "tsκιpτ" connect the four sampling points 3401-3404.
The other cases B-D shown at 34(i)-(k) are analyzed in a similar fashion. In this example, the size of the tRANGεT 3405 interval has been chosen to be four CLKl cycles. The interval could be easily extended (or reduced) using the utilizing the methods that have been described in this example.
Note that the upper limit of the ΪRANGET interval is actually 3-3/4 CLKl cycles because of the method chosen to align the CLKlSkipTQ] and CLKlLevelTQ][l:0] values to the tpHASET values (the first VΛ CLKl cycle cannot be used). The loss of the VΛ CLKl cycle of range is not critical, and the method shown gives the best possible margin for transferring the write data to the CLKD[0,j] clock domain from the CLKl domain. Other alignment methods are possible. The range of tRANGET values could be easily extended by adding more bits to the PhaseTQ][l 1 :0] value and by adding more level registers 3115 in FIG. 31.
FIG. 35 shows timing signals 35(a)-(j) that illustrate how timing values are maintained in the TXA and TXB registers 3335 and 3340, respectively. Waveform 35(a) shows the CLKl signal in the controller 1305. The second waveform, 35(b), shows the RQ[i,0] bus 1315 issuing a WRPATO (write to PATO register) command 3510. Waveform 35(c) shows the pattern data D[i j] received at memory component [i j]. The fourth waveform 35(d) shows the internal clock signal CLKD[0,j] that drives the data from the controller. The position of the CLKD[0 j] rising edge is centered on toFFsεττ + pHASETj , where:
tv,CLK + tpROP,CLKy + tBlJ + tsAMPLEy + tcWD.INT " tstoP,D - ts,D " tpROP,Dy " tv,D = toFFSETT + tpHASεTj (9)
Most of the terms on the left side of Eqn. (9) can change as temperature and supply voltage vary during system operation. The rate of change will be relatively slow, however, so that periodic calibration operations can keep the tpHAsεTj value centered on the write data bits.
The calibration is accomplished by maintaining two separate register values (TXA and TXB) which track the left and right side of the write data window 3520, respectively, shown in the lower part of FIG. 35. The pattern data D[i,j] and the CLKD[0j] rising edge are shown with an expanded scale in waveforms 35(e)-(j). The CLKD[0j] rising edge is also shown at three different positions: tpHASETj(τxA), tpHAsετj(τx) and IPHASET TXB) in waveforms 35(f), 35(h) and 35(j), respectively. These three positions result from setting the PhaseTQ][l l:0] bus 3375 to carry the TXA[11:0], TX[11:0], and TXB[l l :0] signals in logic 3300, respectively. Here, TX represents the average value of TXA and TXB. The TXA value, shown at 35(f), will hover about the point 3525 at which tpHASETj(τxA) precedes the end of the D[i j][0] bit by tv,D,MiN + tcLK4CYCLE (3530). If the sampled pattern data is correct (pass), the TXA value is decremented, and if the data is incorrect (fail), the TXA value is incremented. Note that the D[ij][0] bit is sampled by the memory component, which requires a data window of ts,D 3540 and tκ,D 3550 on either side of the sampling point 3545. Also note that the sampled write data must be returned to the controller to evaluate the pass/fail criterion. However, this return of sampled write data might not be required in other implementations. h a similar fashion, the TXB value shown in FIG. 35(j) will hover about the point 3555 at which tpHAsετj(τxB) precedes the start of the D[ij] [0] bit by IV.D.MA (3560). If the sampled pattern data is correct (pass), the TXB value is incremented, and if the data is incorrect (fail), the TXA value is decremented. For both TXA and TXB values, a pass will cause the timing to change in the direction that makes it harder to pass (reducing the effective data window size). A fail will cause the timing to change in the direction that makes it easier to pass (increasing the effective data window size). In the steady state, the TXA and TXB values will alternate between the two points that separate the pass and fail regions. As noted earlier, this behavior is called "dithering". In a preferred embodiment, calibration of TXA stops when the adjustments to TXA change sign (decrement and then increment, or vice versa), and similarly calibration of TXB stops when that value begins to dither. Alternatively, the TXA and TXB values can be allowed to dither, since the average TX value will still remain well inside the pass region.
FIG. 36 shows transmit timing signals 36(a)-(m) that illustrate the complete sequence that is followed for a calibration timing operation for TXA/TXB. Waveforms 36(a)-(d) are shown in an expanded view of the pattern read transaction. The first waveform 36(a) shows the CLKl signal and the second waveform 36(b) shows the RQc bus in the controller (see FIG. 20). The third waveform 36(c) shows the pattern data
DcQ][3:0] in the controller (see FIG. 20). The fourth timing waveform 36(d) shows the returned pattern data QcQ][3:0] in the controller. Note that the time interval between the CLKl edges associated with the WRPATO command 3605 and RDPATO command 3610 is t R,RD 3615. Parameter 3615 is two CLKl cycles in this example. Also note that the time interval between the CLKl edges associated with the RDPATO command 3610 and the returned data P0[3:0] 3620 is tcAc.c 3625, the same as for the receive calibration and normal read operations described relative to FIG. 29.
The ten cycle pattern access is one step in the calibration operation shown in the lower part of the diagram in timing signals 36(e)-(m). The calibration sequence for this example takes 63 CLKl cycles (here, associated with 00 to 63 in 36(e)). Before the sequence begins, all ongoing transfers to or from the memory components must be allowed to complete. At the beginning of the sequence, the SelTXB, SelTXAB, and 256orlT signals (see 3050, 3055, 3065 in FIG. 30) are set to static values that are held through rising edge 38, associated with time 3630. The following table summarizes the values to which these signals are set:
Figure imgf000074_0001
Changing the value of the SelTXAB from 0 to 1 means that a time interval sEττL i28 (25 CLKl cycles in this example) must elapse before any pattern commands are issued. The time elapse allows the new value of PhaseTQ][l 1 :0] 3375 to settle in the phase selection and phase blending logic 3210 of the T2 block. The pattern data 3640 is available in the controller after rising edge 35 associated with time 3650. The new value is compared to the expected value, and a pass or fail determination is made if it matches or does not match, respectively. The IncDecTQ] signal in block T3 (FIG. 30) is asserted or deasserted, as a result, and the LoadTXA or LoadTXB signal (signal 36(h)) is pulsed for one CLKl cycle to save the incremented or decremented value. The following table summarizes the values to which these signals are set:
Figure imgf000074_0002
At rising edge 38 (at time 3630), all signals can be returned to zero. Changing the value of the SelTXAB from 1 to 0 as shown in signal 36(j) means that another time interval tsεττLEi28 must elapse before any read or write commands 3655 are issued. The calibration sequence described may be performed on all slices of a memory system in parallel. Control signals can be shared between the slices except for IncDecTQ], which depends upon the pass/fail results for the pattern data for that slice. The calibration sequence must be performed for registers TXA 3335 and TXB 3340 at periodic intervals that are spaced closely enough to ensure that timing adjustments can keep up with timing changes due to, for example, temperature and supply voltage variations.
When the sampling point of the RQQj] bus 1352 by the CLKBQ j] clock signal on line 1347 (FIG. 13) is changed in the memory component, the driving point of the CLKDfOj] transmit clock on line 1332 in the controller must be adjusted. The adjustment is accomplished by an update sequence for the TXA and TXB register values. This is similar to the calibration sequence of FIG. 36, but with some simplifications. Typically this update sequence would be performed immediately after the RQ sampling point was updated.
The SelTXB 3050, SelTXAB 3055, and 256orlT 3065 signals are set to static values that are held through the update sequence. The PhaseTQ][l 1 :0] value 3375 is not changed (SelTXAB remains low), so that the pattern transfer doesn't need to wait for circuitry to settle as in the calibration sequence. The following table summarizes the values to which these signals are set:
Figure imgf000075_0001
The reason that an increment/decrement value of 256 is used instead of 1 is because when the sample point of the RQQ j] bus is changed, it will be by {+1,0,-1 } CLK4 cycles. A CLK4 cycle corresponds to the value of 256 in the range of PhaseTQ][l 1 :0]. When the sample point changes by a CLK4 cycle, the data that is received in the DQ][3:0] bus 2060 will shift by one bit to the right or left. By comparing the pattern data to the expected data, it can be determined whether the TXA and TXB values need to be increased or decreased by 256, or left the same. The following table summarizes the values to which these signals are set:
Figure imgf000076_0001
Both TXA and TXB can be updated successively using the same pattern read transfer. Note that the update sequence may be performed on all slices in parallel. The control signals can be shared between the slices except for IncDecTQ], which depends upon the pass/fail results for the pattern data for that slice.
Once the update sequence has completed, a time interval tsEταE256 must elapse before any write commands are issued. This time elapse allows the new value of PhaseTQ][l 1 :0] to settle in the phase selection and phase blending logic 3210 of the T2 block (FIG. 32). Before TXA and TXB register values can go through the calibration and update sequences just described, the values must be initialized to appropriate starting values. This initialization can be done relatively easily with the circuitry that is already in place.
The initialization sequence begins by setting the TXA register 3335 to the minimum value of 000ι6 and by setting the TXB register 3340 to the maximum value fff16. These will both be failing values, but when the calibration sequence is applied to them, both values will move in the proper direction (TXA in increment and TXB will decrement).
Thus, the initialization procedure involves performing the TXA calibration repeatedly until it passes. Then the TXB calibration will be performed repeatedly until it passes. The settings of the various signals will be: Case SelTXB SelTXAB ! 256orlT
TXA calibrate
TXB calibrate
Figure imgf000077_0001
There will be approximately 3840 (= 4096-256) iterations performed (since the total range is 4096 and 256 is the maximum width of a bit).
Each iteration can be done with little settling time, tsETTLεi, because the TXA or TXB value will change by only a least-significant-bit (and therefore the tsEττLEi time will be very small). It will still be necessary to observe a settling time at the beginning and end of each iteration sequence when the PhaseTQ][l 1 :0] value is changed by a large amount. PhaseTQ][l 1 :0] changes by large amounts when SelTXAB is changed in the normal calibration process described above.
Note that the initialization sequence may be performed on all slices in parallel. All of the control signals can be shared between the slices except for IncDecTQ], which depends upon the pass/fail results for the pattern data for that slice.
Calibration State Machine Logic
FIG. 37 shows a sample block diagram 3900 of the logic for performing the calibration processes that have been described above. For example, these processes include the calibration process in which the PhaseTQ][l 1 :0] or PhaseRQ][l 1 :0] values are incremented or decremented by one, the "update" calibration process in which the PhaseTQ][l 1 :0] or PhaseRQ][l 1 :0] values are incremented or decremented by 256, the "initialize" calibration process in which the PhaseTQ][l 1 :0] or PhaseRQ][l 1:0] values are incremented or decremented from an initial value, by up to 4096 bits, until an initial calibration is achieved, and the "CALSET/CALTRIG" calibration process in which the RQ sampling cycle of the memory components is updated. FIGs.18, 29 and 36 are timing diagrams illustrating the pulsing of the control signals that perform the steps of each calibration process. The logic in FIG. 37 drives these control and data signals. The control and data signals include two sets of signals that are carried on busses that connect to the C3 block in FIG. 20. The first set of control signals includes signals 2060 (DCQ][3:0]), 3910 (LoadTXA, LoadTXB, SelTXB, SelTXAB and 256orlT) and 3915 (IncDecTQ] [1 :0]). This first set of signals corresponds to signals 2030 and 2060 in FIG. 20. The second set of control and data signals includes signals 2050 (QcQ][3:0]), 3925 (LoadRXA, LoadRXB, SelRXB, SelRXAB and 256orlR) and 3930(IncDecRQ][l:0]). This second set of signals corresponds to signals 2040 and 2050 in FIG. 20. The control signals also include the set of signals 3920 (RQCQ][NRQ-1 :0]) that connect to the C2 block in FIG. 20.
The logic 3900 is controlled by the following signals:
• CLKC 2010, the primary clock used by the memory controller;
• CalStart 3945, a signal that is pulsed to indicate that a calibration operation should be performed;
• CalDone 3950, a signal that is pulsed to indicate the calibration operation is completed; and
• CalType 3955, a five bit bus that specifies which calibration operation is to be performed. The controller is configured to ensure that the RQc[i][NRQ-l :0] 3920, QQ][3:0]
2050, or DcQ][3:0] 2060 buses are not busy with normal read or write operations when the calibration operation is started. This is preferably accomplished with a hold-off signal (not shown) that is sent to the controller and which allows presently executing read or write operations to complete, and prevents any queued read or write operations from starting. Additionally, a decision to start a calibration operation could be made by a timer circuit (not shown), which uses a counter to measure the time interval between successive calibration operations. It is also possible that a calibration operation could be started early if there was an idle interval that allowed it to be performed with less interference with the normal read and write transactions. In any case, the calibration operations can be scheduled and executed with only hardware. However, this hardware-only characteristic would not preclude using a software process in some systems to either schedule calibration operations, or to perform the sequence of pulsing on the control signals. It is likely that a full hardware implementation of the calibration logic would be preferred for use in most systems because of the ease of design and convenience of operation.
In a prefeπed embodiment, the CalType[2:0] signal selects the type of calibration operation using the following encodings:
Figure imgf000079_0001
An additional bit (the CalType[3] bit) selects between an update to the TXA/RXA edge and the TXB/RXB edge (in other words, each calibration operation updates either
TXA or TXB, but not both at the same time). Another bit (the CalType[4] bit) select whether PATO 1630 or PATl 1635 pattern register is used for the calibration operation.
Note that the CalType[4:3] signal would not be used during a "CALSET/CALTRIG" operation. Once the calibration operation type has been specified, the calibration state machine in logic 3900 begins counting through a sequence that produces the appropriate pulsing of the control signals. In addition to the control and data signals 3905 for the C3 block, the RQSel signal 3960 selects the appropriate request to be placed on the CalRQ[NRQ-l:0] signals 3962. The choices are based on the CALSET 1735 and CALTRIG 1730 commands (which are used to update the sampling point for the RQ signals in each memory component), and the RDPATO 3610, RDPAT 1 2850, WRPATO 3510, and WRPATl 3965 commands (used to read and write the pattern registers in the memory components). A NOP command (not shown) is the default command selected by decode logic 1722 (FIG. 17) when no other command is specified by the RQ[i j] signal 1604. The PatSel signal 3970 selects which of the pattem registers 1630, 1635 are to be used for the operation. Pattem registers 1630 and 1635 in FIG. 37 are the pattern registers in the calibration logic 3900 that correspond to the pattern registers 1630, 1635 in the memory component whose timing is being calibrated. Other embodiments could use a different number of registers in the controller and memory components. The DSel signal 3972 allows a selected pattern register to be steered onto the DcQ][3:0] signals 2060 by way of multiplexers 3976, 3978, and the RQoSel signal 3975 allows the CalRQ[NRQ-l:0] signals 3962 to be steered onto the RQQ][NRQ-1 :0] signals 3920 by way of multiplexer 3980. In this embodiment, all slices perform calibration operations in parallel.
During an RXA or RXB operation, the contents of a pattern register 1630 or 1635 are read from a memory component and compared to the contents of the corresponding pattern register 1630 or 1635 in the controller. Depending upon whether the two sets of values match in the compare logic 3990, the IncDecRQ] [1:0] signals 3930 will be set to appropriate values to cause the PhaseRQ] [11 :0] value, such as on line 2675 of FIG. 26, to be incremented, decremented, or left unchanged. Note that only the IncDecRQ] [ 1 :0] signals 3930, can be different from slice to slice; the other five RXQ] control signals 3925 will have the same values for all the slices.
During a TXA or TXB calibration operation, the contents of a controller pattern register are written to a pattern register in each memory component, read back from the memory component, and compared to the contents of the original pattern register in the controller. Depending upon whether the two sets of values match in the compare logic 3990, the IncDecTQ][l :0] signals 3915 will be set to appropriate values to cause the PhaseTQ][l 1 :0] value, such as on line 3375 of FIG. 33, to be incremented, decremented, or left unchanged. Note that only the IncDecTQ] [ 1 :0] signals 3915 can be different from slice to slice; the other five TXQ] control signals 3910 will have the same values for all the slices.
There are two sets of signals that are compared by the compare logic block 3990: QcQ][3:0] 2050 and PAT[3:0] 3995 from multiplexer 3978. The results from the compare are held in the Compare Logic 3990 when the CompareStrobe signal 3992 is pulsed. The CompareSel[3:0] signals 3998 indicate which of the operation types is being executed. The CompareSel[3] signal selects between an update to the TXA/RXA edge and the TXB/RXB edge. The CompareSel[2:0] signals select the calibration operation type as follows:
Figure imgf000081_0001
In the case of the TXA/TXB operations the IncDecTQ][l:0] signals 3915 are adjusted, and in the case of the RXA/RXB operations the IncDecRQ] [ 1 :0] signals 3930 are adjusted. In the case of the update operations, the compare logic 3990 looks for a left or right shift of the read data relative to the controller pattern register, indicating that the memory component has changed its RQ sampling point. If there is no shift, no change is made to the phase value. In the case of the calibrate and initialize operations, the compare logic 3990 checks if the read data and the controller pattern register are equal or not. The phase value is either incremented or decremented, as a result. The DoQ][3:0] 3901 signals are outgoing write data signals, being sent from elsewhere in the controller to a memory component. Similarly the Rqo[i][NRQ-l :0] signals are outgoing request signals, being sent from elsewhere in the controller to a memory components. These signals are not used by the calibration logic 3900 of the memory controller (they are used for normal read and write operations) and thus are not further discussed here.
Alternate Embodiments
The preferred system described above with reference to FIGs. 7-37 provided a complete description of a memory system topology that could benefit from the methods of dynamic mesochronous clocking. A number of variations from this baseline system will now be described individually. Any of these individual variations may, in general, be combined with any of the others to form composite variations. Any of the alternate systems formed from the composite variations can benefit from the methods of dynamic mesochronous clocking.
The preferred system described routed the CLK signal on bus 1320 with the Y bus signals (the RQ bus 1315). As a result, the CLK signal and RQ bus connected to two or more memory components on a memory rank. However, two memory components in the same rank could have different timing parameters (tβy, in particular), and as a result it may not be possible to adjust the transmit timing of CLK and RQ signals in the controller so that a component of the memory system is able to receive RQ signals 1604 with the CLKB signal 1606. This problem necessitated the use of the RQ sampling method, in which the CLK signal 1340 has 4 timing events (rising edges) per RQ bit time, and in which a calibration process is performed to select the proper timing event for sampling. It is possible to use more than 4 timing events and fewer than 4 timing events to set a sampling point. For example, the lower sampling limit can be three when calibration pulses on the RQ signals 1604 are limited to the bit time and phase offset of normal RQ signals. In alternate prefeπed embodiment, described below, the RQ calibration pulses are allowed to have phase offsets with respect to normal RQ signals. The RQ calibration process of the prefeπed embodiment is very simple: a high pulse of duration tcLKicYCLE, depicted in timing diagram 18, is sampled by the CLKB signal (with a CLK4 frequency) in a component of the memory system, and looks for a string on three high values, choosing the center high value as the sample point. This approach can be extended to look for a string of 3, 4, or 5 high values (the possible outcomes for all possible phase alignments of RQ and CLKB) in order to select a better- centered sample point.
Another embodiment uses a second RQ signal for calibration. In one variation, this second signal carries a high value during NOP commands and carries a low pulse of duration tc icYCLE at the same time that the first RQ signal carries its high pulse. The calibration logic 1310, 1355 would search the high and low sampled values to select a better-centered sample point.
Yet another variation to the prefeπed embodiment is based on the fact that it is not necessary to use a CLK signal (on bus 1320) having four rising edges per RQ bit time in order to get enough timing events to perform the sampling. It would be possible to route four separate CLK signals on separate wires, each with one rising edge per RQ bit time, but offset in phase across the ICLKICYCLE interval. These phase-shifted clock signals would need to be recombined in the memory component 1600 for transmitting and receiving on the DQ bus 1612. It would be beneficial to route multiple clock signals on a main printed circuit board and modules so as to minimize propagation delay differences.
In the description of the prefeπed embodiment, reference was often made to the rising edges of various clock and timing signals. But it is also possible to use both the rising and falling edges of a clock signal. When using both rising and falling edges, it is preferable to use differential signaling for the clock signal to minimize any duty cycle eπor. Such differential signaling would permit the use of a clock signal with two rising edges and two falling edges per RQ bit time, reducing the maximum frequency component of the clock signal. Though such elements are not shown, this approach would require the use of register elements in the memory system that use both the rising edge and falling edge of clock. As noted earlier, in yet another alternate embodiment it would be possible to use a smaller number of timing events on the CLK signal per RQ bit interval. In principle, two timing events are possible (e.g., a rising edge and a falling edge of a clock with cycle time of ICLKICYCLE)- This alternate embodiment is performed by transmitting high pulses on four RQ signals, each pulse offset by lA of a ICLKICYCLE from one another. The four pulses could be sampled by the rising and falling edge of CLKB on bus 1347. The resulting pattern of eight sample values will indicate where the bit time of the normal RQ signals lie, and the memory component can select either the rising edge or falling edge of CLKB for sampling. This approach would require transmit circuitry in the controller that could adjust the relative phase of RQ signals to generate the calibration pulses. While not shown, such circuitry could be provided by one skilled in the art and based on the requirements of a particular embodiment.
In a further variation to the prefeπed embodiment, it would be possible to use more complex calibration patterns instead of, or in combination with, the simpler pattem consisting of a high pulse of duration tcLKicYC E. For example, a high pulse could be used to indicate the start of the calibration sequence, with further pulses chosen to elicit the worst case pattern sequence for the RQ receivers in the memory. These worst case patterns could be chosen at initialization time from a larger set of predefined candidate patterns and then stored for use during calibration operations.
As noted, the prefeπed embodiment system routed the CLK signal with the Y bus signals (the RQ bus 1315). As a result, the CLK signal 1320 and RQ bus connected to two or more components on a memory rank. However, the fact that two memory components could have very different timing parameters (tβy, in particular) means that it may not be possible to adjust the transmit timing of CLK and RQ in the controller so that each memory component is able to receive RQ with CLK. This restriction necessitated the use of the RQ sampling method in which the CLK signal is provided with two or more selectable timing events (edges) per RQ bit time.
If the CLK signal is routed with the X bus signals, the sampling method is no longer necessary because each memory component in a memory rank receives its own clock signal. The transmit timing of each CLK signal can be adjusted in the controller so that CLKBQ j] 1345 has the proper phase to sample the RQ bus 1315. The transmit and receive timing of the DQ bus 1325 is adjusted as in the prefeπed embodiment. Routing the clock signal with X bus signals on bus 1325 has the benefit that the RQ signals can use a bit time similar to that of the DQ signals on bus 1325. However, if the RQ signals on bus 1315 connect to significantly more memory components of the memory system than the DQ signals, this benefit may not be fully realized since the wiring topology may limit the maximum signaling frequency of the RQ signals. Additionally, this method may require more clock pins on the controller if the number of slices in a rank is more than one. This increase is because there is one CLK signal per slice but only one CLK signal per rank with the preferred embodiment.
This method of routing the clock signal with X bus signals will also have a performance penalty when multiple ranks are present. This penalty occurs either because there are multiple ranks on one module or because there are multiple modules in the memory system. A read or write operation consists of one or more commands transfeπed on the RQ bus 1315 followed by a data transfer on the DQ bus 1325. While commands and data are spread out over a time interval, they are usually overlapped with read or write operations to other independent banks of the same rank, or to banks of other ranks. But this method of routing requires that transfers on the RQ or DQ bus of a particular rank Q] use a CLK signal for each slice [i] with a particular phase offset. A transfer to an RQ or DQ bus of a different rank [k] (where [k] is different than Q]) needs a CLK signal for each slice [i] that has a different phase offset. As a result, interleaved transfers to different ranks on the RQ or DQ buses would require a settling interval between phase adjustments to the CLK signal for each slice impacting overall performance. This performance impact could be addressed by generating a CLK signal for each slice of each rank (a CLK signal per memory component). It could also be addressed by limiting the number of ranks to one, but if such a limitation on the number of ranks is not desired, a performance penalty will result.
An alternate prefeπed embodiment uses the falling CLK edges to receive and transmit data bits on the DQ bus 1325. The prefeπed embodiment uses the rising edge of CLKB to receive and transmit a bit of information on the DQ bus 1325. It is possible to use the falling edge of CLKB at 1347 to also receive and transmit a DQ bit. As noted, the falling edge would probably necessitate the use of differential signaling for CLK to minimize any duty cycle eπor. However, such an approach would equalize the maximum frequency component of the CLK signal and the DQ signals and would require the use of register elements in the memory components that use both the rising edge and falling edge of clock. It is also possible to use the falling edge of CLKB to also receive an RQ bit from the RQ bus 1315. As noted, this approach would probably necessitate the use of differential signaling for CLK to minimize any duty cycle eπor. As with the above case, this approach would equalize the maximum frequency component of the CLK signal and the RQ signals and would require the use of register elements in the memory components that use both the rising edge and falling edge of clock.
While the description of the prefeπed embodiment concentrated on the operation of the system with respect to a single rank, the timing methods of the present invention work equally well when multiple ranks of the memory components are present. A system can have multiple ranks on one module and/or multiple modules in the memory system. The controller includes a storage aπay to store a separate set of RXA/RXB/TXA/TXB phase adjustment values for each rank and each slice in the system (4x12 bits of phase values for each memory component using 12 bit phase resolution). The phase adjustment values for a particular rank would be copied into the appropriate registers in the R3 (see FIG. 26) and T3 (see FIG. 33) blocks in the prefeπed embodiment for each slice when a data transfer was to be performed to that rank. It is possible that a settling time would be needed between data transfers to different ranks to give the phase selection and phase blending logic of the R2 (see FIG. 25) and T2 (see FIG. 32) blocks for each slice time to stabilize the clocks they are generating.
The settling time needed between data transfers to different ranks will likely impact system performance. This performance impact can be minimized by a number of techniques in the memory controller. The first of these techniques is to perform address mapping on incoming memory requests. This technique involves swapping address bits of a memory request so that the address bit(s) that selects an applicable rank (and module) come from address fields that change less frequently. Typically, these will be address bits from the upper part of the address.
The second of these techniques would be to add reordering logic to the memory controller, so that requests to a particular rank are grouped together and issue sequentially from the controller. In this way, the settling time penalty for switching to a different rank can, in effect, be amortized across a larger number of requests.
If the CLK signal is routed with the X bus signals, as in a previous alternate prefeπed embodiment, there will need to be a separate set of RXA/RXB/TXA/TXB register values for receiving and transmitting on the DQ bus 1325 for each rank and each slice in the system. This separate set of values will require 4x12 bits of phase values with 12 bit phase resolution. In addition, there will need to be a separate set of TXA/TXB register values for transmitting the CLK signal for each rank and each slice in the system (24 bits of phase values for each memory component). This embodiment requires that transfers on the RQ 1315 or DQ 1325 bus of a particular rank Q] use a CLK signal for each slice [i] with a coπesponding, separately calibrated phase offset. A transfer to an RQ or DQ bus of a different rank [k] needs a CLK signal for each slice [i] that has a different phase offset. As a result, interleaved transfers to different ranks on the RQ or DQ buses would require a settling interval between phase adjustments to the CLK signal for each slice, and a simultaneous settling interval for phase adjustments to the CLKD[0j] or
CLKQ[0j] clock signal for each slice (see phase adjustment logic 1365 and 1368 in FIG. 13). The values for a particular rank, i, would be copied into the R3 (FIG. 26) and T3 (FIG. 33) blocks for each slice, j, when a data transfer was to be performed to that rank. An additional settling time would likely be needed between data transfers to different ranks to give the phase selection and phase blending logic of the R2 (FIG. 25) and T2 (FIG. 32) blocks for each slice time to stabilize the clocks generated.
In still a further variation, the description of the prefeπed system related to calibration logic M4 used two registers PATO and PATl (registers 1630 and 1635, respectively, FIG. 16) to hold patterns for use in the calibration, update, and initialization sequences needed to maintain the proper phase values in the RXA/RXB/TXA/TXB registers for each slice. In an alternate prefeπed embodiment, it would be possible to add more registers to add flexibility and robustness to the calibration, update, and initialization sequences. Adding registers would require at least the following: 1) enlarging the fields in the calibration commands that select calibration registers; 2) adding more registers to the memory; and 3) controller hardware that performs calibration, update, and initialization sequences to ensure that the added registers are loaded with the proper values. In a further variation to the above, the description of the prefeπed embodiment used a single four bit transfer per DQ signal for performing calibration. Since calibration operations can be pipelined (like any read or write transfer), it would possible to generate a pattern of any length, provided there is enough register space to hold a multicycle pattern. The use of a longer calibration pattern in an alternate prefeπed embodiment ensures that the phase values used during system operation have more margin than in the prefeπed embodiment.
The prefeπed embodiment used the same data or test patterns for calibrating the RXA/RXB/TXA/TXB phase values. In a further variation, one could use different patterns for each of the four phase values provided there is enough register space. The use of customized calibration patterns for the two limits of the read and write bit windows ensures that the phase values used during system operation are provided with added margin.
Additionally, the preferred embodiment assumed that the calibration, update, and initialization sequences used the same patterns. However, an initialization sequence may have access to more system resources and more time than the other two sequences. This means that during initialization, many more candidate patterns can be checked, and the ones that are, for example, the most conservative for each RXA/RXB/TXA/TXB phase values for each slice can be saved in each memory component for use during the calibration and update sequences.
The description of the prefeπed embodiment did not specify how the patterns are placed into the pattern registers at the beginning of the initialization sequence. Various approaches are possible here. One possible way would be to use sideband signals. Sideband signals are signals that are not part of the RQ and DQ buses and which do not need the calibration or initialization sequence to be used. Such sideband signals could load the pattern registers with initial pattern values.
A second possible way to accomplish placing patterns in the pattern registers is to use a static pattern that is hardwired into a read-only pattern register. This pattern could be used to initialize the phase values to a usable value, and then refine the phase values with additional patterns. A third possible way to place patterns in the pattern registers is to use a circuit that detects when power is applied to the memory component. When power is detected, the circuit could load pattern registers with initial pattern values.
A fourth possible way is to use a reset signal or command to load pattern registers with initial pattern values.
Again returning to the prefeπed embodiment, the phase values in the RXA/RXB and TXA/TXB registers were averaged to give the best sampling point and drive point for read bits and write bits. For some systems, it might be preferable to pick a point that is offset one way or the other to compensate for the actual transmit and receive circuitry. While the prefeπed embodiment did not explicitly show how the calibration, update, and initialization sequences generate the control signals for manipulating the RXA/RXB/TXA/TXB registers, there are a number of ways to do this. One approach is to build a state machine which sequences through the 60 or so cycles for the update and calibration sequences and pulsing the control signals, as indicated in the timing diagrams in FIGs. 29 and 34. Systems could be configured to handle longer sequences needed for initialization. Such systems would be triggered by software, in the case of the initialization sequence, or by a timer, in the case of the update and calibration sequences. The update and calibration sequences could arbitrate for access to the memory system and hold off the normal read and write requests. A second way to generate the control signals for manipulating the RXA RXB/TXA/TXB registers would be to use software to schedule the sequences and generate the control signals. This could be an acceptable alternative in some applications.
In regards to other alternate embodiments, it was mentioned earlier that the dynamic mesochronous clocking techniques are suitable for systems in which power dissipation is important (such as portable computers). There are a number of methods for reducing power dissipation (at the cost of reducing transfer bandwidth) that allow such a system to utilize a number of different power states when power is more important than performance.
FIG. 38 shows an example of the logic needed in the memory controller 3705 and the memory 3703 to implement a "dynamic slice width" power reduction mechanism. In this figure, it is assumed that each memory component 3703 connects to two DQ signals 3710 and 3720. This means that there will be two M5 blocks (3725 and 3730) and two M2 blocks (3735 and 3740) inside each memory. In the figure, the two M5 blocks and two M2 blocks are appended with a "-0" and "-1" designation. It is noted that only a read operation is discussed; a write operation would use similar blocks of logic. The internal QM signals in blocks 3725 and 3730 and external DQ signals 3710 and 3720 are appended with "[0]"and "[1]".
During a normal read operation (HalfSliceWidthMode^O), the two M5 blocks will each access a four bit parallel word of read data (QM[3:0][0] and QM[3:0][1]). These data bits are converted into serial signals on DQ buses 3710 and 3720, and transmitted to the controller 3705. The serial signals propagate to the controller where they are received
(DQ[0j][0] and DQ[0,j][l]). The Rl-0 block 3745 and Rl-1 block 3750 in the controller convert the serial signals into four bit parallel words (QcQ][3:0][0] and QcQ][3:0][l]) at 3755, 3760, respectively.
During a reduced power mode (HalfSliceWidthMode=l), the clocks to the Rl-1 3750 and M2-1 3740 blocks in the controller and memory are disabled. The DQ[i j][l] signal 3720 of each slice is not used, reducing the available bandwidth by half. The read data from the M5-1 block 3730 must be steered through the M2-0 block 3735 and onto the DQ[ij][0] signal bus 3710. In the controller, this data must be steered from the Rl-0 block 3745 onto the QQ][3:0][1] signal bus 3760. This steering is accomplished by a four- bit 2-to-l multiplexer 3795 and a four bit register 3775 in memory 3703, and by two four- bit 2-to-l multiplexers, 3770 and 3780, and a four bit register 3785 in the controller. The select control input of the multiplexers are driven by the HalfSliceWidthMode signal 3788. In the memory component, this signal is gated with a Load2 signal 3772 (by logic gate 3790) that alternates between selecting the M5-0 read data and the M5-1 read data. The load control input of the registers are driven by the LoadRQ] signal 3795 in the memory controller and by the Load signal 3797 in the memory 3703.
FIG. 39 shows timing signals 39(a)-(k) for a read transaction performed by the system of FIG. 38. These timing signals are similar to the previous read transaction diagram (FIG. 14 A) except where noted. The Read command 3805 is transmitted as the RQ[ij] signal 39(b), causing an internal read access to be made to the two memory core blocks R5-0 and R5-1. The parallel read data Q[7:4] 3810 and Q[3:0] 3815 is available on the two internal buses QM[3:0][1] and QM[3:0][0] in blocks 3730 and 3725, respectively, as represented in signals 39(e) and 39(f). Q[3:0] is selected first because the Load2 signal39(d) is low and is converted to four serial bits on the DQ[i j][0] bus, shown as waveform 39(g). Q[7:4] is selected next because the Load2 signal goes high and this signal is also converted into four serial bits on the DQ[ij][0] bus.
The first four bits Q[3:0] are received on the DQ[0 j][0] bus (waveform 39(g)) by the Rl-0 block and converted to four parallel bits, which are loaded into the register 3785. The next four bits Q[7:4] are received on the DQ[0j][0] bus (waveform 39(g)) by the Rl- 0 block and converted to four parallel bits. These are multiplexed onto the QcQ][3:0][l] signals while the register 3785 is multiplexed onto the QcQ] [3 :0] [0] signals by multiplexer 3770.
Note that the eight bits on the QcQ][3:0][0] and QcQ][3:0][l] signals will be valid for one cycle, and can be asserted at the maximum rate of once every two cycles. In other words, the next read transaction must be asserted after a one cycle gap. In FIG. 39, this may be seen in the top waveform when one READ command 3805 is asserted after CLKl edge 0 (3820), and the next READ command 3825 (with dotted outline) cannot be asserted until after CLKl edge 2 (3830). This separation is necessary because each READ command transfers a total of eight bits on the DQ[ij][0] signal, requiring two CLKl cycles. An alternative implementation of a reduced slice width could reduce the number of bits returned by each READ command, in addition to reducing the number of DQ signals driven by each slice in block 3703. This approach would have the benefit of not requiring a one CLKl cycle between READ commands. Instead, this approach would require that another address bit be added to the request information on the RQ bus so that the one of the four bit words from the M5-0 and M5-1 blocks can be chosen. In the controller, only one of the four bit buses QcQ][3:0][0] and QcQ][3:0][l] (3775 and 3760, respectively) will contain valid read data in each CLKl cycle. Alternatively, if each memory component were connected to the controller with more than two DQ signals (four for example), then the reduced slice width modes could include several slice widths. Note that the above examples represent ways that power usage may be lowered, by reducing the number of signals that each memory slice drives. Other alternatives are also possible.
The HalfSliceWidthMode signal on the controller component and the memory component would typically be driven from a storage register on the memory component, although it could also be a signal that is directly received by each memory component. The HalfSliceWidthMode signal would be asserted and deasserted during normal operation of the system so that power could be reduced. Alternatively, it could be asserted or deasserted during initialization of the system so that power dissipation could be set to the appropriate level. This could be important for reducing the system's temperature or for reducing the system's power consumption. This might be an important feature in a portable system that had limited cooling ability or limited battery capacity.
Note that a write transaction would use a similar set of logic in the controller and memory, but operating in the reverse direction. In other words, the multiplexer 3765 and register 3775 in the memory component of FIG. 38 would be in the TO cell of the controller 3705, and the two multiplexers (3770, 3780) and register 3785 in the memory controller of FIG. 38 would be in component 3703.
The System shown in FIG. 38 represents one way in which power might be lowered by reducing the number of signals that a component in the memory system transmits or receives. Other methods may include reducing the number of signals that a rank transmits or receives, or reducing the number of bits transmitted or received during each read or write transaction. These alternate methods are described below.
If individual components of memory 3703 connect to the memory controller 3705 with a single DQ signal (such as 3710 and 3720 for blocks 3735 and 3740), it will not be possible to offer a reduced power mode using the dynamic slice width method just described. Instead, a dynamic rank width method could be used. For example, a HalfRankWidthMode signal 3788 could be asserted causing each read transaction or write transaction to access only half of the memory of the rank (e.g., with two or more memory components sharing the same slice within a rank). An address bit could be added to the request information on the RQ bus to select between the two sets of memory components. Selected components would perform the access as in a normal read or write transaction. Memory components not selected would not perform any access and would shut off the internal clock signals as in the dynamic slice width example in FIG. 38.
Likewise, transmit and receive slices of the controller coπesponding to the selected memory components could perform the access as in a normal read or write transaction. Transmit and receive slices of the controller coπesponding to memory not selected would then not perform any access and would shut off the internal clock signals as in the dynamic slice width example in FIG. 38.
In the above approaches where one is using selected and non-selected memory components for power reduction, it is important to carefully choose the address bit that selects between the two sets of memory components. The address bit taken should probably come from high in the physical address so that successive requests to the memory components tend to access the same half-rank. The selection from high in the physical address could be accomplished with multiplexing logic in the address path of the controller that selected an address bit from a number of possible positions, possibly under the control of a value held in a register set during system initialization.
It would also be possible to adjust the order of successive requests by pulling them out of a queue so that successive requests to the memory components tend to access the same half-rank. Again, this could be accomplished by logic in the controller. The logic would need to ensure that out-of-order request submission produced the same results as in- order submission, permitting one of the two half-ranks to remain in a lower power state for longer periods of time.
By extending the above method, it would be possible to support several rank widths in a memory system. For example, a rank could be divided into quarters, requiring two address bits in the controller and each memory component to select the appropriate quarter-rank.
The HalfRankWidthMode signal 3788 on the controller 3705 and memory would typically be driven from a storage register in component 3703, although it could also be a signal that is directly received by memories. The HalfRankWidthMode signal could be asserted and deasserted during normal operation of the memory system so that power could be effectively reduced. Alternatively, the signal could be asserted or deasserted during initialization of the system so that power dissipation could be set to an optimal or appropriate level.
Reducing the number of bits that are accessed in each read or write transaction could also reduce power. A dynamic depth mode could be defined, in which a HalfDepthMode signal (not shown) is asserted, which causes each read transaction or write transaction to access only half of the normal number of bits for each transaction. As with a prior variation described above, an address bit would have to be added to the request information on the RQ bus to select between the two sets of bits that can be accessed. Likewise, the controller would need to use the same address bit to decide which of the two sets of bits are being accessed. The transmit and receive slices of the controller and memory would shut off the internal clock signals during the periods that no bits are being transfeπed. This would effectively reduce power by reducing bandwidth.
It would be possible to support several programmable depths in the system by extending the above HalfDepthMode method. For example, the transfer size could be divided into quarters, requiring two address bits in the controller and each memory component to select the appropriate quarter-transfer-block.
The HalfDepthMode signal on the controller component (such as component 3705) and memory components (such as component 3703) would typically be driven from a storage register, although it could also be a signal that is directly received by each component. The HalfDepthMode signal would be asserted and deasserted during normal operation of the system so that power could be reduced. Alternatively, it could be asserted or deasserted during initialization of the system so that power dissipation could be set to an optimal or appropriate level.
Power could also be reduced by reducing the operating frequency of the memory components. This approach is particularly appropriate for dynamic mesochronous clocking systems such as the systems described in this document because there is no clock recovery circuitry in the memory component. The memory component will therefore tolerate a very wide range of input clock frequency, unlike memory components that utilizes DLL or PLL circuits that typically operate in a narrow range of clock frequencies. A dynamic frequency mode could be defined, in which a HalfFrequencyMode signal is asserted, which caused all signals connecting the controller and memory components to operate at half their normal signaling rate.
In reducing the operating frequency, there would be no change in a memory component such as memory component 3703, except that any timing parameter that is expressed in absolute time units (e.g., nanosecond units, as opposed to clock cycle units) would need to be adjusted for optimal operation. This timing parameter adjustment would typically be done in the controller by changing the interval between commands on the RQ bus. For example, the interval between a row access and a column access to that row must be greater than the TRCD parameter, a core characteristic that is expressed in nanoseconds. The controller will typically insert the appropriate number of clock cycles between the row access command and the column access command to account for this parameter. If the clock rate is reduced by one-half, the number of cycles between the two commands can also be reduced by one-half. If this reduction is not done, the memory component will still operate coπectly, but not optimally.
The controller will also need to provide logic to manage the reduction in bandwidth of a memory system if portions of the controller are not operated at a lower clock frequency. In other words, if the controller runs at the normal clock rate and the memory components run at half the clock rate, then the controller will need to wait twice as long for each memory access. Holding registers and multiplexers can handle this process using techniques similar to those for dynamic slice width in FIG. 38. It is noted that it could be possible to support several programmable frequencies in the system by extending this method. For example, the transfer rate could be reduced to one-quarter of the normal rate. The HalfFrequencyMode signal on the controller of a memory system would typically be driven from a storage register in the controller, although it could also be a signal that is directly received by the controller. The HalfFrequencyMode signal would be asserted and deasserted during normal operation of the system so that power could be reduced. Alternatively, it could be asserted or deasserted during initialization of the system so that power dissipation could be set to an appropriate level. The prefeπed embodiments discussed above utilize slices of memory components that each had one DQ (data) signal connecting the memory components in each slice to the controller. As mentioned previously with respect to FIGs. 38 and 39, the benefits of dynamic mesochronous clocking are also realized with memory components that have widths that are greater than one DQ signal.
For example, each memory component could have two DQ signals connecting to the memory controller. In such a system, it would be important to maintain different sampling and driving points in the controller for each slice of DQ signals. However, there is also some benefit to maintaining different sampling and driving points in the controller for the individual DQ signals within each slice.
For example, there could be some dynamic variation of the external access times between the different DQ signals of one memory component. While this variation would be much smaller than the variation between the DQ signals that connect to two different memory components, it is possible that the variation would be large enough to matter. This variation could be easily compensated by using an additional instance of the calibration circuitry described above. Also, there is a possible static variation needed for the sampling and driving points of the DQ signals connecting to a single memory component because of differences in the length of the interconnect wires between the controller and memory component. This variation could be easily "calibrated out" using an additional instance of the calibration circuitry described above. Finally, it is likely that a memory controller will be designed to support memory components that have a variety of DQ widths, including a DQ width of one signal as well as a DQ width of two or more signals. This means that such a controller will need to be able to independently adjust the sample and drive points of each DQ signal. This means that when memory components with a DQ width of two or more signals are present, the signals for each memory component can still be given different sample and drive points at no extra cost.
In the prefeπed embodiment, within a particular rank, each slice contains a single memory component. However, in other embodiments, within a particular rank two or more slices may be occupied by a single memory component (i.e., where the memory component communicates with the memory controller using two or more parallel DQ signal sets). In yet other embodiments, within a particular rank a slice may contain two or more memory components (which would therefore share a single DQ signal set and a set of calibration circuitry within the memory controller, for example using the HalfRankWidthMode signal described above to select one of the two memory components within each slice). The techniques described for a memory system in accordance with the prefeπed embodiments permitted phase offsets of clocked components to drift over an arbitrarily large range during system operation in order to remove clock recovery circuits (DLL and PLL circuits) from the memory components. This technique could be applied to a non- memory system just as easily, resulting in similar benefits. For example, assume there are two logic components (integrated circuits that principally contain digital logic circuits, but which might also include other types of circuits including digital memory circuits and analog circuits) that must communicate at high signaling rates. Prior art methods include placing clock recovery circuitry in both components to reduce timing margin lost because of timing imprecision. Alternatively, clock recovery circuitry could be entirely removed from one of the logic components, with all phase adjustments performed by another component that still retains the clock recovery circuitry. Periodic calibration similar to that performed in the memory system of the prefeπed embodiment would keep the required phase offsets near their optimal values for communication between the two components. Keeping phase offsets near their optimal values could be important if there was some design or cost asymmetry between the two components. For example, if one component was very large, or was implemented with a better process technology, it might make sense to place all the clock recovery and phase adjustment circuitry in that component. This placement of the circuitry in one component would allow the other component to remain cheaper or to have a simpler design or use an existing or proven design. Also, if one of the components went through frequent design updates, and the other component remained relatively stable, it might make sense to place all the clock recovery and phase adjustment circuitry in the stable component.
As noted, the term "mesochronous system" refers to a set of clocked components in which the clock signal for each component has the same frequency, but can have a relative phase offset. The techniques described for a prefeπed system permitted the phase offsets of the clocked components to drift over an arbitrarily large range during system operation in order to remove clock recovery circuits (DLL and PLL circuits) from the memory components. If these clock recovery circuits are left in a memory portion (i.e., not in the controller), the phase offsets of the memory portion will drift across a much smaller range during system operation. However, such a system could still benefit from the techniques utilized in the prefeπed embodiment to maximize the signaling rate of the data (and request) signals. In other words, in such a system, static phase offsets for the memory components would be determined at system initialization. However, during system operation, these static offsets would be adjusted by small amounts to keep them closer to their optimal points. As a result, the signaling bandwidth of the data (and request) signals could be higher than if these periodic calibration operations were not carried out.
The above could be considered a pseudo-static mesochronous system since it will be expected that the phase offsets of the memory components will not drift too far from the initial values. The hardware to support this could include all the hardware described for a system in accordance with the preferred embodiment. However, because the dynamic phase offset range is expected to be smaller, it is possible that the hardware required could be reduced relative to the prefeπed embodiment, reducing cost and design complexity.
Dynamic Mesochronous Techniques for Intra-Device Clocking and Communication
The various techniques described permit the phase offsets of clocked components to drift over an arbitrarily large range during system operation in order to remove clock recovery circuits (e.g., the above DLL and PLL circuits) from a subset of the components in the system. These techniques result in potential benefit in system cost, system power, and system design complexity.
These techniques could also be applied to the internal blocks of a single integrated circuit. As internal clock frequencies of integrated circuits increase, it becomes more difficult to operate all the blocks of a device in a single synchronous clock domain. It may be advantageous to operate the blocks in a mesochronous fashion where clocks for internal blocks are frequency-locked, but having arbitrary phases. If the internal blocks form a static-mesochronous clocking system, then clock- recovery circuits (such as DLL or PLL) must be present in each block to keep the phase locked to a static value. These clock recovery circuits could introduce unacceptable cost in terms of area, power, or design complexity. An alternative approach would be to use the dynamic mesochronous techniques for intra-component clocking and communication (instead of for inter-component clocking and communication described in the prefeπed embodiments above). When a pair of blocks communicates with one another, one block (the "master") would send a clock signal to the other block (the "slave"). The phase difference between the clocks for the master and slave blocks would slowly drift during the operation of the circuit because of temperature and supply voltage variations. In accordance with one alternative prefeπed embodiment, the master block would perform calibration operations to ensure that it could transmit and receive to the slave block, regardless of the cuπent state of the phase of the slave clock. The calibration hardware and the calibration process would be similar to what has been shown for the above-described prefeπed embodiments systems. Periodic calibration would keep the required phase offsets near their optimal values for communication between the two blocks.
If the clock recovery circuits are left in the slave block of the integrated circuit, the phase offsets of the clock of the slave block will drift across a much smaller range during system operation. However, such a clocking arrangement could still benefit from the techniques utilized in the prefeπed embodiment to maximize the signaling rate. In such a system, static phase offsets for the slave blocks would be determined at initialization. However, during operation, these static offsets would be adjusted by small amounts to keep them closer to their optimal points. As a result, signaling bandwidth could be higher than the case where these periodic calibration operations were not carried out.
This intra-device clocking and communication system is similar to a pseudo-static mesochronous clocking system described above, since it will be expected that the phase offsets of the slave blocks will not drift too far from their initial values. The hardware to support a pseudo-static mesochronous device could include all the hardware for a dynamic mesochronous device. However, because the dynamic phase offset range is expected to be smaller, it is possible that the hardware required could be reduced relative to the dynamic mesochronous device, reducing cost and design complexity.
FIG. 40 shows another approach to implement the circuit for the controller block R2 2500. This circuit is responsible for creating the RCLK 4030 clock signal needed for receiving the read data from the memory components, and for creating the RX_LD_ENA0 4032 signal for performing serial-to-parallel conversion and the RX_LD_ENA1 4034 signal for synchronizing receive data between the RCLK and CLKl clock domains in block 4100 (FIG. 41). The inputs to this circuit are CLK4BlendRQ][4:0] (line 2325), CLK4PhSelRQ][2:0] (line 2330) and CLK4CycleRQ][l :0] (line 2335) from block R3. This circuit also receives CLK4[7 :0] , and CLK4Cyc[ 1 :0] from outside of block R0 (from block Cl in FIG. 20).
The circuit for generating the RCLK 4030 signal is the same as the circuit for generating the CLKQ[0j] 1334 and its functionality is explained in the description for FIG. 25. The RX_LD_ENA0 signal indicates when the eight receive data bits have been serially shifted into bit registers 4110 (FIG. 41) and are ready to be loaded onto the parallel bus 4135 (FIG. 41). The CLK4CycleRQ][l :0] signal, generated by block R3, picks one of the four possible load points. When the CLK4PhSelRQ][2:l] signal equals 01 or 10, indicating the phase offset of the CLK4Cyc[l :0] is not within +/- 90 degrees of RCLK, then the value of the CLK4Cyc[l :0] is used directly to compute the LD_ENA_0 signal since there is sufficient setup and hold time margins for the sampling clock RCLK (FIG. 40). In the alternative if the CLK4PhSelRQ][2:l] signal equals 11, indicating the phase offset of the CLK4Cyc[l:0] is within -90 degrees of RCLK, then the previous value of CLK4CYC[1:0] is sampled at the negative edge of RCLK at the latch 4014. This pre- sampled CLK4CYC[1 :0] value, having sufficient setup and hold time margins for the sampling clock RCLK, is used to compute the LD_ENA_0 signal. In the alternative if the CLK4PhSelRQ][2:l] signal equals 00, indicating the phase offset of the CLK4Cyc[l :0] is within 90 degrees of RCLK, then the previous value of CLK4CYC[1 :0] is sampled at the negative edge of RCLK at the latch 4014. This pre-sampled CLK4CYC[1 :0] value is then incremented by 1 by the Adder 4018. The resultant value, having sufficient setup and hold time margins for the sampling clock RCLK, is used to compute the LD_ENA_0 signal. Finally, a comparator 4024 compares a RCLK synchronized output of the multiplexer 4020, i.e., a selected CLK4Cyc[l :0] value, to the CLK4CycleRQ][l:0] value. The comparator generates a positive output, i.e. RX_LD_ENA0 is asserted, when its two inputs are equal. This signal is asserted once every 4 RCLK clock cycles. The RX LD ENA1 signal is generated in a similar fashion as the RX_LD_ENA0 signal except the CLK4CycleRQ][l] bit is inverted before it is sent to the comparator 4026. The net effect is that the RX_LD_ENA1 signal is asserted two RCLK cycles after the RX_LD_ENA0 signal is asserted.
FIG. 41 shows another approach to implement the controller block Rl 2400 of system 2300 for an 8-bit read data path. This circuit 4100 consists of three stages and is responsible for receiving read data from the memory components and inserting a programmable delay. The first stage is called the de-serialization stage. In this stage, read data input from the DQ 1325 bus is converted to a parallel 8-bit bus 4135 by shifting the serial read data into the latches 4110 through four successive RCLK clock cycles. The latch 4108 is clocked by the negative edge of the RCLK signal so that the even bits are latched during the negative phase of the RCLK signal. Meanwhile, the odd bits are latched during the positive phase of the RCLK signal.
The second stage of controller block Rl 2400 is called the synchronization stage, and is also sometimes called the skip circuit. The synchronization stage determines whether the read data is delayed by an additional two RCLK clock cycles (which is equal to a half CLKl clock cycle), as governed by the CLKlSkipRQ] control signal. The synchronization stage is responsible for transferring the read data from the RCLK clock domain to the CLKl clock domain, which runs at one fourth of the frequency of RCLK clock. In this stage, the latch 4140 stores the parallel read data selected by RX_LD_ENA0 signal 4032 via the multiplexer 4130. The latch 4120 stores a two-RCLK-cycles-delayed read data selected by RX_LD_ENA1 signal 4034 via the multiplexer 4115. The output of latch 4140 is coupled to an input of the multiplexer 4130 and an input of multiplexer 4115 by signal line 4112. The output of latch 4120 is coupled to an input of the multiplexer 4115 by signal line 4122. The control signal CLKlSkipRQ] selects either the output of latch 4120 or latch 4140 via the multiplexer 4150 to provide the most optimal setup and hold time margins of the read data with respect to the latch 4170, which is sampled by the CLKl signal 2015.
The final stage of controller block Rl 2400 is called the levelization stage, where a delay of zero to three CLKl cycles is inserted into the read data path. A four-bit version of this circuit is described above in detail with respect to FIG. 24. The output of the levelization stage is the 8-bit RDATA 4102.
FIG. 42 shows another approach to implement the controller block T2 3200, which is responsible for creating the TCLK clock signal 4230, TX_LD_ENA0 signal 4232 and TX_LD_EN1 signal 4234 needed for transmitting the write data to the memory component 1310 as shown in FIG. 30. This circuit is exactly the same as the one described in FIG. 40 except the inputs to this circuit are CLK4BlendTQ][4:0], CLK4PhSelTQ][2:0] and CLK4CycleTQ][l:0] from block T3. This circuit also receives CLK4[7:0] and CLK4Cyc[l:0] from outside of block TO (from block CI in FIG. 21). FIG. 43 shows another approach for implementing the controller block TI 3100, which is responsible for transmitting write data on an 8-bit parallel bus 4302 to memory and inserting a programmable delay. Similar to the receive read data path, this circuit also consists of three stages, namely levelization, synchronization and serialization.
The first stage of levelization is the same as the embodiment shown in FIG. 31 , except that in this embodiment the data path is eight bits wide instead of four bits wide.
In the synchronization stage, the write data is written into and then sent from latch 4355 in the CLKl domain. This write data is selected via the multiplexer 4350 by the TX_LD_ENA1 signal 4234 prior to being sampled by the TCLK signal 4230 and stored in latch 4320. The CLKlSkipTQ] selects either the output of latch 4320 (TX_LD_ENA1- delayed write data) or the output of latch 4355 via multiplexer 4340 to provide the most optimal setup and hold time margins of the write data with respect to the latches 4304, which are sampled by the TCLK signal 4230.
The final serialization stage is similar to the embodiment described in FIG. 31 except that two parallel sets of 4-bit shift registers 4304 are used to store the 8 bit parallel write data. Six of the write data bits, 0 through 5, are independently loaded via a set of 2- to-1 multiplexers 4306 controlled by the TX_LD_ENA0 signal 4232. Another multiplexer 4308 is controlled by the TCLK, which altematively selects an even bit during the positive phase of the TCLK and an odd bit during the negative phase of the TCLK. The selected transmit write data bit is sent to the memory via DQ bus 1325.
The data signals on the DQ bus 1325 may be transmitted and received as either single ended or differential data signals. In other embodiments, the number of bits transmitted through the TI and Rl circuits during each CLKl clock cycle may be fewer or greater than in the embodiments described above. Further, in other embodiments the ratio of the RCLK and TCLK clock rates to the CLKl clock rate could be greater than or less than the four-to-one clock rate ratio used in the prefeπed embodiments. For instance, clock rate ratios of two or eight might be used in other embodiments.
While the present invention has been described with reference to a few specific embodiments, the description is illustrative of the invention and is not to be construed as limiting the invention. Various modifications may occur to those skilled in the art without departing from the true spirit and scope of the invention as defined by the appended claims.

Claims

What is claimed is:
1. A memory system, comprising: a memory controller; a memory component having a memory core for holding read data information and an interface that is coupled to at least one bus that is also coupled to the memory controller for conveying signals between the memory controller and the memory component; the interface of the memory component configured to: receive a first signal from the memory controller with read request information; retrieve the read data information from the memory core in response to the request information; and transmit to the memory controller a second signal containing the read data information, wherein the read data information is comprised of read data symbols and where the average duration of the read data symbols, measured at the interface, defines a symbol time interval, wherein the read request information includes a first read request and a second read request having an internal access time similar to an internal read access time of the first read request; wherein operation of the memory component is characterized by: a first external access time interval, measured at the interface, between the first read request and respective first read data transmitted by the interface in response to the first read request; a second external access time interval, measured at the interface, between the second read request and respective second read data transmitted by the interface in response to the second read request; and the difference between the first external access time and the second external access time is greater than one-half of the symbol time interval.
2. The system of claim 1, wherein the difference between the first access time and the second access time is greater than one symbol time interval.
3. The system of claim 1, wherein the operation of the memory component is further characterized by: a third external access time interval, measured at the interface, between a third read request and respective third read data transmitted by the interface in response to the third read request; the difference between the first external access time and the third external access time is less than one-half of the symbol time interval.
4. The system of claim 1 , wherein the interface of the memory component is further configured to receive timing signals from the memory controller, the timing signals carrying timing information indicating when the read request information is to be sampled and when the read data symbols are to be driven.
5. A device comprising a single integrated circuit having a plurality of internal modules, the device comprising: a first module; and a second module having storage for holding data information and an interface that is coupled to at least one bus that is also coupled to the first module for conveying signals between the first module and the second module; the interface of the second module configured to: receive a first signal with timing information; retrieve the data information from the storage; and transmit a second signal containing the data information, wherein the data information is comprised of data symbols and where the average duration of the data symbols, measured at the interface, defines a symbol time interval; wherein operation of the component is characterized by: a first drive offset time interval, measured at the interface, between a first timing event on the timing signal and a respective first data symbol transmitted by the interface, the first timing event associated with the first data symbol; a second drive offset time interval, measured at the interface, between a second timing event on the timing signal and a respective second data symbol transmitted by the interface, the second timing event associated with the second data symbol; and the difference between the first drive offset time and the second drive offset time is greater than one-half of the symbol time interval.
6. A memory component comprising: a memory core for holding read data information; and an interface configured to: receive a first signal with read request information; retrieve the read data information from the memory core in response to the request information; and transmit a second signal containing the read data information, wherein the read data information is comprised of read data symbols and where the average duration of the read data symbols, measured at the interface, defines a symbol time interval, wherein the read request information includes a first read request and a second read request having an internal access time similar to an internal read access time of the first read request; wherein operation of the memory component is characterized by: a first external access time interval, measured at the interface, between the first read request and respective first read data transmitted by the interface in response to the first read request; a second external access time interval, measured at the interface, between the second read request and respective second read data transmitted by the interface in response to the second read request; and the difference between the first external access time and the second external access time is greater than one-half of the symbol time interval.
7. The memory component of claim 6, wherein the difference between the first external access time and the second external access time is greater than one symbol time interval.
8. A memory component comprising: a memory core for holding read data information; and an interface configured to: receive a timing signal; receive a first signal with read request information; retrieve the read data information from the memory core in response to the request information; and transmit a second signal containing the read data information, wherein the read data information is comprised of read data symbols and where the average duration of the read data symbols, measured at the interface, defines a symbol time interval, wherein the read request information includes a first read request and a second read request having an internal access time similar to an internal read access time of the first read request; wherein operation of the memory component is characterized by: a first external access time interval, measured at the interface, between a timing event on the timing signal that is associated with the first read request and respective first read data transmitted by the interface in response to the first read request; a second external access time interval, measured at the interface, between a timing event on the timing signal that is associated with the second read request and respective second read data transmitted by the interface in response to the second read request; and the difference between the first external access time and the second external access time is greater than one-half of the symbol time interval.
9 The memory component of claim 15, wherein the difference between the first external access time and the second external access time is greater than one symbol time interval.
10. A device comprising a single integrated circuit having a plurality of modules, the device comprising: a first module comprising a controller; and a second module having a memory core for holding data and an interface that is coupled to at least one bus that is also coupled to the memory controller for conveying signals between the memory controller and the memory component; the interface of the second module configured to: receive a timing signal; receive a first signal from the controller with write request information; receive a second signal from the controller with write data information; store the write data information in the memory core in response to the write request information; and wherein the write data information is comprised of data symbols and where the average duration of the data symbols, measured at the interface, defines a symbol time interval, wherein the write request information includes a first write request and a second write request having an internal access time similar to an internal write access time of the first write request; wherein operation of the memory component is characterized by: a first offset time interval, measured at the interface, between a first timing event on the timing signal and a respective first write data symbol received by the interface, the first timing event associated with the first write data symbol; a second offset time interval, measured at the interface, between a second timing event on the timing signal and a respective second write data symbol received by the interface, the second timing event associated with the second write data symbol; and the difference between the first offset time and the second offset time is greater than one-half of the symbol time interval.
11. A memory component comprising: a memory core for holding data; an interface configured to: receive a first signal with write request information; receive a second signal with write data information; store the write data information in the memory core in response to the write request information; and wherein the write data information is comprised of data symbols and where the average duration of the data symbols, measured at the interface, defines a symbol time interval, wherein the write request information includes a first write request and a second write request having an internal access time similar to an internal write access time of the first write request; wherein operation of the memory component is characterized by: a first external access time interval, measured at the interface of the memory component, between the first write request and a respective first write data symbol received by the memory component in conjunction with the first write request; a second external access time interval, measured at the interface of the memory component, between the second write request and a respective first write data symbol received by the memory component in conjunction with the second write request; and the difference between the first external access time and the second external access time is greater than one-half of the symbol time interval.
12. The memory component of claim 11 , wherein the difference between the first access time and the second access time is greater than one symbol time interval.
13. A memory component comprising: a memory core for holding data; an interface configured to: receive a timing signal; receive a first signal with write request information; receive a second signal with write data information; store the write data information in the memory core in response to the write request information; and wherein the write data information is comprised of data symbols and where the average duration of the data symbols, measured at the interface, defines a symbol time interval, wherein the write request information includes a first write request and a second write request having an internal access time similar to an internal write access time of the first write request; wherein operation of the memory component is characterized by: a first external access time interval, measured at the interface of the memory component, between a first timing event on the timing signal and a respective first write data symbol received by the memory component in conjunction with the first write request, the first timing event associated with the first write request; a second external access time interval, measured at the interface of the memory component, between a second timing event on the timing signal and a respective second write data symbol received by the memory component in conjunction with the second write request, the second timing event associated with the second write request; and the difference between the first external access time and the second external access time is greater than one-half of the symbol time interval.
14. The memory component of claim 13, wherein the difference between the first external access time and the second external access time is greater than one symbol time interval.
15. A memory component, comprising: a memory core for holding data and an interface that is coupled to at least one bus that is also coupled to the memory controller for conveying signals between the memory controller and the memory component; the interface of the memory component configured to: receive a timing signal; receive a second signal with write data information to be stored in the memory core; and store the write data information in the memory core; wherein the write data information is comprised of write data symbols and where the average duration of the write data symbols, measured at the interface, defines a symbol time interval; wherein operation of the memory component is characterized by: a first offset time interval, measured at the interface, between a first timing event on the timing signal and a respective first write data symbol received by the interface, the first timing event associated with the first write data symbol; a second offset time interval, measured at the interface, between a second timing event on the timing signal and a respective second write data symbol received by the interface, the second timing event associated with the second write data symbol; and the difference between the first offset time and the second offset time is greater than one-half of the symbol time interval.
16. A memory system, comprising: a memory controller; a first memory component having an interface coupled to the memory controller, the interface configured to receive respective write data symbols from the memory controller, where average duration of the respective write data symbols, measured at the interface of the first memory component, defines a symbol time interval; the interface of the first memory component also configured to receive from the memory controller respective timing signal and write request signals, including a first write request; and a second memory component having an interface that is coupled to the memory controller, the interface of the second memory component configured to receive respective write data symbols from the memory controller; the interface of the second memory component also configured to receive from the memory controller the timing signals and respective write request signals, including a second write request; and a first external access time, measured at the interface of the first memory component, between a first timing event on the timing signal and a respective first write data symbol received by the first memory component in conjunction with the first write request, the first timing event associated with the first write request; a second external access time, measured at the interface of the second memory component, between the first timing event on the timing signal and a respective second write data symbol retrieved by the second memory component in response to the second write request; and the difference between the first external access time and the second external access time is greater than one-half of the symbol time interval.
17. The memory system of claim 16, wherein the difference between the first external access time and the second external access time is greater than one of the symbol time interval.
18. A memory controller comprising: an interface configured to receive symbols of information by sampling a first signal at a determined timing offset relative to a reference clock signal; wherein the determined timing offset initially has a first timing offset value and wherein average duration of the symbols, measured at the interface of the memory controller, defines a symbol time interval; and calibration apparatus configured to iteratively determine suitability of the determined timing offset and adjust the determined timing offset to have an updated timing offset value; wherein the updated timing offset value after multiple calibration iterations is a second timing offset value; and wherein the difference between the first timing offset value and the second timing offset value is greater than one-half of the symbol time interval.
19. The memory controller of claim 18, wherein the difference between the first timing offset and the second timing offset is greater than the symbol time interval.
20. A system, comprising: a first component; a second component, the second component including storage for holding data information and an interface that is coupled to at least one bus that is also coupled to the first component; the first component including: an interface configured to receive symbols of information by sampling a first signal at a determined timing offset relative to a reference clock signal; wherein the determined timing offset initially has a first timing offset value and wherein average duration of the symbols, measured at the interface of the first component, defines a symbol time interval; and calibration apparatus configured to iteratively determine suitability of the determined timing offset and adjust the determined timing offset to have an updated timing offset value; wherein the updated timing offset value after multiple calibration iterations is a second timing offset value; and wherein the difference between the first timing offset value and the second timing offset value is greater than one-half of the symbol time interval.
21. A memory controller for use in conjunction with a memory component coupled to at least one bus for conveying signals between the memory component and the memory controller, the memory controller comprising: an interface that is coupled to the at least one bus and that is configured to transmit data symbols to the memory component by driving a first signal on the at least one bus at a determined timing offset relative to a reference clock signal; wherein the determined timing offset is initially a first timing offset and wherein average duration of the data symbols, measured at the interface of the memory controller, defines a symbol time interval; and calibration apparatus configured to iteratively determine suitability of the determined timing offset and adjust the determined timing offset to an updated timing offset; wherein the updated timing offset value after multiple calibration iterations is a second timing offset value; and wherein the difference between the first timing offset value and the second timing offset value is greater than one-half of the symbol time interval.
22. The memory controller of claim 21 , wherein the difference between the first timing offset and the second timing offset is greater than the symbol time interval.
23. A memory controller comprising: a first circuit configured to receive a first symbol by sampling the first signal using a first timing signal having a first timing offset relative to a reference clock signal, and to drive a second signal comprising the received first symbol; and a second circuit configured to sample the received first symbol of the second signal using a second timing signal having a second timing offset relative to the reference clock signal; wherein the first circuit and second circuit are configured to accommodate all possible differences between the first timing offset and the second timing offset that falls within a range extending between a first value through a second value, wherein the second value equals the first value plus one clock cycle of the reference clock signal.
24. The memory controller of claim 23, including a first register configured to store the first timing offset.
25. The memory controller of claim 23, including calibration apparatus configured to determine suitability of the first timing offset and adjust the first timing offset to make it more suitable for sampling the first signal.
26. A memory controller comprising: a first circuit, in a first clock domain associated with a first timing offset relative to a reference clock signal, the first circuit configured to transmit a first symbol using a first timing signal having the first timing offset relative to the reference clock signal to drive the first symbol onto a first signal; and a second circuit, coupled to the first circuit by the first signal, the second circuit in both the first time domain and in a second time domain associated with a second timing offset relative to the reference clock signal, the second circuit configured to receive the first symbol from the first signal and to transmit the first symbol to the memory component by driving the first symbol onto a second signal using a second timing signal having the second timing offset relative to the reference clock signal; wherein the first circuit and second circuit are configured to accommodate all possible differences between the first timing offset and the second timing offset that falls within a range extending between a first value through a second value, wherein the second value equals the first value plus two clock cycles of the reference clock signal.
27. A memory system, comprising: a memory controller having an interface that is coupled to a first data bus and a second data bus; and a memory component having an interface that is coupled to the first data bus and the second data bus; the system having a first mode of operation in which a first memory access causes a first data symbol associated with a first memory location to be transferred on the first data bus and causes a second data symbol associated with a second memory location to be transfeπed on the second data bus; and the system having a second mode of operation in which a second memory access causes the first data symbol associated with the first memory location to be transfeπed on the first data bus and at a later time a third memory access causes the second data symbol associated with the second memory location to be transfeπed on the first data bus.
28. A memory controller comprising: an interface that is coupled to a first data bus and a second data bus; and logic having a first mode of operation and a second mode of operation, the first mode of operation comprising a mode of operation in which a first memory access causes a first data symbol associated with a first memory location to be transfeπed on the first data bus and causes a second data symbol associated with a second memory location to be transfeπed on the second data bus; and the second mode of operation comprising a mode of operation in which a second memory access causes the first data symbol associated with the first memory location to be transfeπed on the first data bus and at a later time a third memory access causes the second data symbol associated with the second memory location to be transfeπed on the first data bus.
29. A memory component comprising, a memory core for holding read data information; an interface that is coupled to a first data bus and a second data bus; and logic having a first mode of operation and a second mode of operation, the first mode of operation comprising a mode of operation in which a first memory access causes a first data symbol associated with a first memory location in the memory core to be transfeπed on the first data bus and causes a second data symbol associated with a second memory location in the memory core to be transfeπed on the second data bus; and the second mode of operation comprising a mode of operation in which a second memory access causes the first data symbol associated with the first memory location to be transfeπed on the first data bus and at a later time a third memory access causes the second data symbol associated with the second memory location to be transfeπed on the first data bus.
30. A memory system, comprising: a memory controller having an interface that is coupled to a first data bus; and a memory component having an interface that is coupled to the first data bus; the system having a first mode of operation in which a first memory access causes a first data symbol associated with a first memory location to be transfeπed on the first data bus and causes a second data symbol associated with a second memory location to be transfeπed on the first data bus after the first data symbol has been transfeπed; and the system having a second mode of operation in which a second memory access causes the first data symbol associated with the first memory location to be transfeπed on the first data bus and at a later time a third memory access causes the second data symbol associated with the second memory location to be transfeπed on the first data bus.
31. A memory controller comprising: an interface that is coupled to a first data bus; and logic having a first mode of operation and a second mode of operation, the first mode of operation comprising a mode of operation in which a first memory access causes a first data symbol associated with a first memory location to be transfeπed on the first data bus and causes a second data symbol associated with a second memory location to be transfeπed on the first data bus after the first data symbol has been transfeπed; and the second mode of operation comprising a mode of operation in which a second memory access causes the first data symbol associated with the first memory location to be transfeπed on the first data bus and at a later time a third memory access causes the second data symbol associated with the second memory location to be transfeπed on the first data bus.
32. A memory component comprising, a memory core for holding read data information; an interface that is coupled to a first data bus; and logic having a first mode of operation and a second mode of operation, the first mode of operation comprising a mode of operation in which a first memory access causes a first data symbol associated with a first memory location to be transfeπed on the first data bus and causes a second data symbol associated with a second memory location to be transfeπed on the first data bus after the first data symbol has been transfeπed; and the second mode of operation comprising a mode of operation in which a second memory access causes the first data symbol associated with the first memory location to be transfeπed on the first data bus and at a later time a third memory access causes the second data symbol associated with the second memory location to be transfeπed on the first data bus.
33. A memory system, comprising: a memory controller having an interface that is coupled to a first data bus and a second data bus; and a memory module having an interface that is coupled to the first data bus and the second data bus; the system having a first mode of operation in which a first memory access causes a first data symbol associated with a first memory location to be transfeπed on the first data bus and causes a second data symbol associated with a second memory location to be transfeπed on the second data bus; and the system having a second mode of operation in which a second memory access causes the first data symbol associated with the first memory location to be transfeπed on the first data bus and at a later time a third memory access causes the second data symbol associated with the second memory location to be transfeπed on the second data bus.
34. A memory controller comprising: an interface that is coupled to a first data bus and a second data bus; and logic having a first mode of operation and a second mode of operation, the first mode of operation comprising a mode of operation in which a first memory access causes a first data symbol associated with a first memory location to be transferred on the first data bus and causes a second data symbol associated with a second memory location to be transfeπed on the second data bus; and the second mode of operation comprising a mode of operation in which a second memory access causes the first data symbol associated with the first memory location to be transfeπed on the first data bus and at a later time a third memory access causes the second data symbol associated with the second memory location to be transfeπed on the second data bus.
35. A memory component comprising, a memory core for holding read data information; an interface that is coupled to a first data bus and a second data bus; and logic having a first mode of operation and a second mode of operation, the first mode of operation comprising a mode of operation in which a first memory access causes a first data symbol associated with a first memory location to be transfeπed on the first data bus and causes a second data symbol associated with a second memory location to be transfeπed on the second data bus; and the second mode of operation comprising a mode of operation in which a second memory access causes the first data symbol associated with the first memory location to be transfeπed on the first data bus and at a later time a third memory access causes the second data symbol associated with the second memory location to be transfeπed on the second data bus.
PCT/US2002/033707 2001-10-22 2002-10-22 Timing calibration apparatus and method for a memory device signaling system WO2003036445A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US34390501P 2001-10-22 2001-10-22
US60/343,905 2001-10-22
US37694702P 2002-04-30 2002-04-30
US60/376,947 2002-04-30

Publications (1)

Publication Number Publication Date
WO2003036445A1 true WO2003036445A1 (en) 2003-05-01

Family

ID=26993682

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/US2002/033706 WO2003036850A1 (en) 2001-10-22 2002-10-22 Phase adjustment apparatus and method for a memory device signaling system
PCT/US2002/033707 WO2003036445A1 (en) 2001-10-22 2002-10-22 Timing calibration apparatus and method for a memory device signaling system

Family Applications Before (1)

Application Number Title Priority Date Filing Date
PCT/US2002/033706 WO2003036850A1 (en) 2001-10-22 2002-10-22 Phase adjustment apparatus and method for a memory device signaling system

Country Status (5)

Country Link
US (12) US6920540B2 (en)
EP (1) EP1446910B1 (en)
AT (1) ATE477634T1 (en)
DE (1) DE60237301D1 (en)
WO (2) WO2003036850A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106708418A (en) * 2015-11-16 2017-05-24 腾讯科技(深圳)有限公司 Message storage method and device in game environment

Families Citing this family (186)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675272B2 (en) * 2001-04-24 2004-01-06 Rambus Inc. Method and apparatus for coordinating memory operations among diversely-located memory components
US6920540B2 (en) 2001-10-22 2005-07-19 Rambus Inc. Timing calibration apparatus and method for a memory device signaling system
US7231306B1 (en) 2002-04-30 2007-06-12 Rambus Inc. Method and apparatus for calibrating static timing offsets across multiple outputs
US7292629B2 (en) 2002-07-12 2007-11-06 Rambus Inc. Selectable-tap equalizer
US8861667B1 (en) 2002-07-12 2014-10-14 Rambus Inc. Clock data recovery circuit with equalizer clock calibration
JP4159415B2 (en) * 2002-08-23 2008-10-01 エルピーダメモリ株式会社 Memory module and memory system
US7350001B1 (en) * 2003-01-17 2008-03-25 Cirrus Logic, Inc. Method and apparatus for automatic word length conversion
US7093047B2 (en) * 2003-07-03 2006-08-15 Integrated Device Technology, Inc. Integrated circuit memory devices having clock signal arbitration circuits therein and methods of performing clock signal arbitration
US6999887B2 (en) * 2003-08-06 2006-02-14 Infineon Technologies Ag Memory cell signal window testing apparatus
US7983891B1 (en) * 2003-08-19 2011-07-19 Cadence Design Systems, Inc. Receiver dependent selection of a worst-case timing event for static timing analysis
US7323917B2 (en) * 2003-09-15 2008-01-29 Texas Instruments Incorporated Method and apparatus for synthesizing a clock signal having a frequency near the frequency of a source clock signal
DE10344818B4 (en) * 2003-09-27 2008-08-14 Qimonda Ag Device for calibrating the relative phase of two received signals of a memory module
US7259606B2 (en) * 2004-01-27 2007-08-21 Nvidia Corporation Data sampling clock edge placement training for high speed GPU-memory interface
US7095789B2 (en) 2004-01-28 2006-08-22 Rambus, Inc. Communication channel calibration for drift conditions
US7158536B2 (en) * 2004-01-28 2007-01-02 Rambus Inc. Adaptive-allocation of I/O bandwidth using a configurable interconnect topology
US8422568B2 (en) 2004-01-28 2013-04-16 Rambus Inc. Communication channel calibration for drift conditions
US7400670B2 (en) 2004-01-28 2008-07-15 Rambus, Inc. Periodic calibration for communication channels by drift tracking
US7064994B1 (en) * 2004-01-30 2006-06-20 Sun Microsystems, Inc. Dynamic memory throttling for power and thermal limitations
US6961862B2 (en) 2004-03-17 2005-11-01 Rambus, Inc. Drift tracking feedback for communication channels
US7079446B2 (en) * 2004-05-21 2006-07-18 Integrated Device Technology, Inc. DRAM interface circuits having enhanced skew, slew rate and impedance control
US7978754B2 (en) * 2004-05-28 2011-07-12 Rambus Inc. Communication channel calibration with nonvolatile parameter store for recovery
US7516029B2 (en) 2004-06-09 2009-04-07 Rambus, Inc. Communication channel calibration using feedback
US7164292B2 (en) * 2004-06-12 2007-01-16 Rambus Inc. Reducing electrical noise during bus turnaround in signal transfer systems
US8270501B2 (en) * 2004-08-18 2012-09-18 Rambus Inc. Clocking architectures in high-speed signaling systems
US7301831B2 (en) * 2004-09-15 2007-11-27 Rambus Inc. Memory systems with variable delays for write data signals
US7280428B2 (en) 2004-09-30 2007-10-09 Rambus Inc. Multi-column addressing mode memory system including an integrated circuit memory device
US7668272B1 (en) * 2004-10-26 2010-02-23 National Semiconductor Corporation Method and apparatus for data transfer between mesochronous clock domains
US8595459B2 (en) 2004-11-29 2013-11-26 Rambus Inc. Micro-threaded memory
US7164289B1 (en) * 2005-01-21 2007-01-16 Altera Corporation Real time feedback compensation of programmable logic memory
US11824723B2 (en) * 2005-03-23 2023-11-21 Numecent Holdings, Inc. Opportunistic block transmission with time constraints
US7332950B2 (en) * 2005-06-14 2008-02-19 Micron Technology, Inc. DLL measure initialization circuit for high frequency operation
US8796830B1 (en) 2006-09-01 2014-08-05 Google Inc. Stackable low-profile lead frame package
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US7392338B2 (en) 2006-07-31 2008-06-24 Metaram, Inc. Interface circuit system and method for autonomously performing power management operations in conjunction with a plurality of memory circuits
US8335894B1 (en) 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
US9507739B2 (en) 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US8111566B1 (en) 2007-11-16 2012-02-07 Google, Inc. Optimal channel design for memory devices for providing a high-speed memory interface
US8359187B2 (en) 2005-06-24 2013-01-22 Google Inc. Simulating a different number of memory circuit devices
US9542352B2 (en) 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US7386656B2 (en) 2006-07-31 2008-06-10 Metaram, Inc. Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit
US8130560B1 (en) 2006-11-13 2012-03-06 Google Inc. Multi-rank partial width memory modules
US8090897B2 (en) 2006-07-31 2012-01-03 Google Inc. System and method for simulating an aspect of a memory circuit
US8041881B2 (en) 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
US10013371B2 (en) 2005-06-24 2018-07-03 Google Llc Configurable memory circuit system and method
US20080028136A1 (en) 2006-07-31 2008-01-31 Schakel Keith R Method and apparatus for refresh management of memory modules
US8327104B2 (en) 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US8386722B1 (en) 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
US8081474B1 (en) 2007-12-18 2011-12-20 Google Inc. Embossed heat spreader
US8077535B2 (en) 2006-07-31 2011-12-13 Google Inc. Memory refresh apparatus and method
US7660183B2 (en) 2005-08-01 2010-02-09 Rambus Inc. Low power memory device
DE112006002300B4 (en) 2005-09-02 2013-12-19 Google, Inc. Device for stacking DRAMs
US7487378B2 (en) * 2005-09-19 2009-02-03 Ati Technologies, Inc. Asymmetrical IO method and system
US7321524B2 (en) 2005-10-17 2008-01-22 Rambus Inc. Memory controller with staggered request signal output
JP2009526278A (en) * 2005-11-03 2009-07-16 エヌエックスピー ビー ヴィ Data interface and synchronous search method
DE102005054202B3 (en) * 2005-11-14 2007-04-19 Siemens Ag Serial bus system has bus address associated with each connected input/output card and no bus address is retained for non-connected input/output cards
US20070132485A1 (en) * 2005-12-09 2007-06-14 Elad Alon Four-wire signaling system
US7650526B2 (en) * 2005-12-09 2010-01-19 Rambus Inc. Transmitter with skew reduction
US9632929B2 (en) 2006-02-09 2017-04-25 Google Inc. Translating an address associated with a command communicated between a system and memory circuits
US7571267B1 (en) 2006-03-27 2009-08-04 Integrated Device Technology, Inc. Core clock alignment circuits that utilize clock phase learning operations to achieve accurate clocking of data derived from serial data streams having different relative skews
US20070230646A1 (en) * 2006-03-28 2007-10-04 Talbot Gerald R Phase recovery from forward clock
US8570881B2 (en) * 2006-03-28 2013-10-29 Advanced Micro Devices, Inc. Transmitter voltage and receiver time margining
US20070260841A1 (en) 2006-05-02 2007-11-08 Hampel Craig E Memory module with reduced access granularity
US20070258278A1 (en) * 2006-05-05 2007-11-08 Abdallah Bacha Memory module and methods for making and using the same
US7647467B1 (en) 2006-05-25 2010-01-12 Nvidia Corporation Tuning DRAM I/O parameters on the fly
KR100915387B1 (en) 2006-06-22 2009-09-03 삼성전자주식회사 Method and Apparatus for compensating skew between data signal and clock signal in parallel interface
US7724589B2 (en) * 2006-07-31 2010-05-25 Google Inc. System and method for delaying a signal communicated from a system to at least one of a plurality of memory circuits
US7890684B2 (en) * 2006-08-31 2011-02-15 Standard Microsystems Corporation Two-cycle return path clocking
US8098784B2 (en) 2006-09-05 2012-01-17 International Business Machines Corporation Systems, methods and computer program products for high speed data transfer using a plurality of external clock signals
US20080109672A1 (en) * 2006-11-08 2008-05-08 Sicortex, Inc Large scale computing system with multi-lane mesochronous data transfers among computer nodes
US7716510B2 (en) 2006-12-19 2010-05-11 Micron Technology, Inc. Timing synchronization circuit with loop counter
US7656745B2 (en) 2007-03-15 2010-02-02 Micron Technology, Inc. Circuit, system and method for controlling read latency
CN101681670B (en) * 2007-04-19 2014-02-05 拉姆伯斯公司 Clock synchronization in memory system
US8264906B2 (en) * 2007-05-29 2012-09-11 Rambus Inc. Adjusting clock error across a circuit interface
KR100892646B1 (en) * 2007-07-13 2009-04-09 주식회사 하이닉스반도체 Circuit for Detecting Local Skew of Semiconductor Memory Apparatus
US8627134B2 (en) * 2007-07-13 2014-01-07 SK Hynix Inc. Semiconductor apparatus and local skew detecting circuit therefor
US8209479B2 (en) 2007-07-18 2012-06-26 Google Inc. Memory circuit system and method
US7876629B2 (en) * 2007-08-08 2011-01-25 Mediatek Inc. Memory control methods capable of dynamically adjusting sampling points, and related circuits
US8080874B1 (en) 2007-09-14 2011-12-20 Google Inc. Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween
US7882324B2 (en) * 2007-10-30 2011-02-01 Qimonda Ag Method and apparatus for synchronizing memory enabled systems with master-slave architecture
DE102007051839B4 (en) * 2007-10-30 2015-12-10 Polaris Innovations Ltd. Control circuit, memory device with a control circuit and method for performing a write command or for operating a memory device with a control circuit
US8195907B2 (en) * 2007-12-21 2012-06-05 Rambus Inc. Timing adjustment in a reconfigurable system
WO2009082502A1 (en) 2007-12-21 2009-07-02 Rambus Inc. Method and apparatus for calibrating write timing in a memory system
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8181056B2 (en) * 2008-09-30 2012-05-15 Mosaid Technologies Incorporated Serial-connected memory system with output delay adjustment
US8161313B2 (en) * 2008-09-30 2012-04-17 Mosaid Technologies Incorporated Serial-connected memory system with duty cycle correction
WO2010078383A1 (en) * 2008-12-31 2010-07-08 Rambus Inc. Active calibration for high-speed memory devices
WO2010080173A1 (en) * 2009-01-12 2010-07-15 Rambus Inc. Mesochronous signaling system with clock-stopped low power mode
US20110264849A1 (en) 2009-01-13 2011-10-27 Rambus Inc. Protocol including timing calibration between memory request and data transfer
JP2010166299A (en) * 2009-01-15 2010-07-29 Elpida Memory Inc Calibration circuit and method
US8108557B2 (en) * 2009-01-22 2012-01-31 Hewlett-Packard Development Company, L.P. System and method for measuring clock skew on a network
US7969813B2 (en) 2009-04-01 2011-06-28 Micron Technology, Inc. Write command and write data timing circuit and methods for timing the same
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
WO2010144624A1 (en) 2009-06-09 2010-12-16 Google Inc. Programming of dimm termination resistance values
CN101599807A (en) * 2009-06-19 2009-12-09 中兴通讯股份有限公司 A kind of method and apparatus that makes the main clock phase alignment
US8037375B2 (en) * 2009-06-30 2011-10-11 Intel Corporation Fast data eye retraining for a memory
US8151075B2 (en) * 2010-01-22 2012-04-03 Freescale Semiconductor, Inc. Multiple access type memory and method of operation
US8300479B2 (en) * 2010-03-25 2012-10-30 Infinera Corporation Temporal alignment of data unit groups in a switch
CN101873196B (en) * 2010-05-27 2013-08-14 北京经纬恒润科技有限公司 Method, system and interface card for transmitting data at high speed
US9013069B2 (en) 2010-10-08 2015-04-21 Panasonic Intellectual Property Management Co., Ltd. Power generation system and power generating unit
KR20120053602A (en) * 2010-11-18 2012-05-29 에스케이하이닉스 주식회사 Semiconductor memory apparatus and method for operating thereof
US8677211B2 (en) 2010-12-23 2014-03-18 International Business Machines Corporation Data bus inversion using spare error correction bits
US8855178B2 (en) * 2011-03-02 2014-10-07 Mediatek Inc. Signal transmitter and signal transmitting method for transmitting specific data bit with different predetermined voltage levels
US8760945B2 (en) 2011-03-28 2014-06-24 Samsung Electronics Co., Ltd. Memory devices, systems and methods employing command/address calibration
US8984320B2 (en) 2011-03-29 2015-03-17 Micron Technology, Inc. Command paths, apparatuses and methods for providing a command to a data block
US9412428B2 (en) * 2011-04-22 2016-08-09 Rambus Inc. Memory components and controllers that calibrate multiphase synchronous timing references
US8509011B2 (en) 2011-04-25 2013-08-13 Micron Technology, Inc. Command paths, apparatuses, memories, and methods for providing internal commands to a data path
US8774228B2 (en) 2011-06-10 2014-07-08 International Business Machines Corporation Timing recovery method and apparatus for an input/output bus with link redundancy
US9268719B2 (en) 2011-08-05 2016-02-23 Rambus Inc. Memory signal buffers and modules supporting variable access granularity
US9235537B2 (en) 2011-10-26 2016-01-12 Rambus Inc. Drift detection in timing signal forwarded from memory controller to memory device
US9417998B2 (en) * 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US8552776B2 (en) 2012-02-01 2013-10-08 Micron Technology, Inc. Apparatuses and methods for altering a forward path delay of a signal path
US8699550B2 (en) * 2012-03-21 2014-04-15 Lsi Corporation Phase alignment between phase-skewed clock domains
US8943242B1 (en) 2012-03-30 2015-01-27 Integrated Device Technology Inc. Timing controllers having partitioned pipelined delay chains therein
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9166579B2 (en) 2012-06-01 2015-10-20 Micron Technology, Inc. Methods and apparatuses for shifting data signals to match command signal delay
US9054675B2 (en) 2012-06-22 2015-06-09 Micron Technology, Inc. Apparatuses and methods for adjusting a minimum forward path delay of a signal path
US9329623B2 (en) 2012-08-22 2016-05-03 Micron Technology, Inc. Apparatuses, integrated circuits, and methods for synchronizing data signals with a command signal
US8913448B2 (en) 2012-10-25 2014-12-16 Micron Technology, Inc. Apparatuses and methods for capturing data in a memory
US10226535B2 (en) 2012-12-10 2019-03-12 Mersana Therapeutics, Inc. Auristatin compounds and conjugates thereof
US9734097B2 (en) 2013-03-15 2017-08-15 Micron Technology, Inc. Apparatuses and methods for variable latency memory operations
TWI508066B (en) * 2013-04-30 2015-11-11 Mstar Semiconductor Inc Memory controller and associated signal generating method
KR20150002129A (en) * 2013-06-28 2015-01-07 에스케이하이닉스 주식회사 Semiconductor device, semiconductor system including the semiconductor device and testing method of the semiconductor system
TWI508087B (en) * 2013-07-01 2015-11-11 Mstar Semiconductor Inc Dynamic memory signal phase tracking method and associated control circuit
US9727493B2 (en) 2013-08-14 2017-08-08 Micron Technology, Inc. Apparatuses and methods for providing data to a configurable storage area
CN108831512A (en) 2013-10-15 2018-11-16 拉姆伯斯公司 Load reduced memory module
KR20150069159A (en) * 2013-12-13 2015-06-23 삼성전자주식회사 Display device, calibration device and control method thereof
US9183904B2 (en) 2014-02-07 2015-11-10 Micron Technology, Inc. Apparatuses, memories, and methods for facilitating splitting of internal commands using a shared signal path
US9508417B2 (en) 2014-02-20 2016-11-29 Micron Technology, Inc. Methods and apparatuses for controlling timing paths and latency based on a loop delay
WO2015148488A1 (en) * 2014-03-26 2015-10-01 Rambus Inc. Memory controller with dynamic core-transfer latency
US9530473B2 (en) 2014-05-22 2016-12-27 Micron Technology, Inc. Apparatuses and methods for timing provision of a command to input circuitry
US9671855B2 (en) * 2014-06-30 2017-06-06 Micron Technology, Inc. Apparatuses and methods of entering unselected memories into a different power mode during multi-memory operation
US9502099B2 (en) 2014-11-14 2016-11-22 Cavium, Inc. Managing skew in data signals with multiple modes
US9570128B2 (en) * 2014-11-14 2017-02-14 Cavium, Inc. Managing skew in data signals
US9607672B2 (en) 2014-11-14 2017-03-28 Cavium, Inc. Managing skew in data signals with adjustable strobe
KR102263803B1 (en) * 2015-01-05 2021-06-10 에스케이텔레콤 주식회사 Memory apparatus and control method thereof
US20160110132A1 (en) * 2015-01-09 2016-04-21 Mediatek Inc. Dynamic Adjustment Of Speed of Memory
KR102251813B1 (en) * 2015-04-07 2021-05-13 삼성전자주식회사 Memory System and Operating Method of Memory System
US9531363B2 (en) 2015-04-28 2016-12-27 Micron Technology, Inc. Methods and apparatuses including command latency control circuit
US9813067B2 (en) 2015-06-10 2017-11-07 Micron Technology, Inc. Clock signal and supply voltage variation tracking
KR20170055786A (en) 2015-11-12 2017-05-22 삼성전자주식회사 Memory device having latency control circuit for controlling data write and read latency
US10622032B2 (en) 2015-12-08 2020-04-14 Rambus Inc. Low power signaling interface
CN107251457B (en) * 2016-01-19 2019-08-27 华为技术有限公司 The method and apparatus for transmitting clock message
US10462054B2 (en) * 2016-02-04 2019-10-29 Trinity Mobile Networks, Inc. Overloading address space for improved routing, diagnostics, and content-relay network
US20170255387A1 (en) * 2016-03-04 2017-09-07 Intel Corporation Techniques to Cause a Content Pattern to be Stored to Memory Cells of a Memory Device
US9804793B2 (en) 2016-03-04 2017-10-31 Intel Corporation Techniques for a write zero operation
WO2017161206A1 (en) 2016-03-16 2017-09-21 Halozyme, Inc. Conjugates containing conditionally active antibodies or antigen-binding fragments thereof, and methods of use
US9865317B2 (en) 2016-04-26 2018-01-09 Micron Technology, Inc. Methods and apparatuses including command delay adjustment circuit
US9601170B1 (en) 2016-04-26 2017-03-21 Micron Technology, Inc. Apparatuses and methods for adjusting a delay of a command signal path
US10877688B2 (en) * 2016-08-01 2020-12-29 Apple Inc. System for managing memory devices
US9997220B2 (en) 2016-08-22 2018-06-12 Micron Technology, Inc. Apparatuses and methods for adjusting delay of command signal path
US10324879B2 (en) * 2016-09-28 2019-06-18 International Business Machines Corporation Mitigation of side effects of simultaneous switching of input/output (I/O data signals
KR102623542B1 (en) 2016-10-07 2024-01-10 삼성전자주식회사 Clock synchronizing method of multiple clock domain memory device
US10528099B2 (en) 2016-10-10 2020-01-07 Micron Technology, Inc. Configuration update for a memory device based on a temperature of the memory device
US10249351B2 (en) 2016-11-06 2019-04-02 Intel Corporation Memory device with flexible internal data write control circuitry
US10484156B2 (en) * 2016-11-16 2019-11-19 Qualcomm Incorporated Search space associated with physical downlink control channel based on channel quality indicators
US10379748B2 (en) 2016-12-19 2019-08-13 International Business Machines Corporation Predictive scheduler for memory rank switching
US10490239B2 (en) 2016-12-27 2019-11-26 Intel Corporation Programmable data pattern for repeated writes to memory
KR102371264B1 (en) * 2017-04-21 2022-03-07 에스케이하이닉스 주식회사 Memory system
US10359803B2 (en) 2017-05-22 2019-07-23 Qualcomm Incorporated System memory latency compensation
US10490238B2 (en) * 2017-06-29 2019-11-26 SK Hynix Inc. Serializer and memory device including the same
US10224938B2 (en) 2017-07-26 2019-03-05 Micron Technology, Inc. Apparatuses and methods for indirectly detecting phase variations
KR102392055B1 (en) * 2017-08-09 2022-04-28 삼성전자주식회사 Memory device for efficiently determining whether or not to perform a re-training operation and memory systme including the same
US11604714B2 (en) 2017-08-09 2023-03-14 Samsung Electronics Co, Ltd. Memory device for efficiently determining whether to perform re-training operation and memory system including the same
US10082823B1 (en) * 2017-10-11 2018-09-25 Integrated Device Technology, Inc. Open loop solution in data buffer and RCD
US10437279B2 (en) 2017-10-11 2019-10-08 Integrated Device Technology, Inc. Open loop solution in data buffer and RCD
US10594309B2 (en) * 2018-07-02 2020-03-17 Apple Inc. Phase modulation systems and methods
US10997095B2 (en) * 2018-08-21 2021-05-04 Micron Technology, Inc. Training procedure for receivers associated with a memory device
CN109037182A (en) * 2018-09-12 2018-12-18 深圳三地芯电子有限责任公司 Chip-packaging structure and memory device
US11769544B2 (en) * 2018-10-05 2023-09-26 Tetramem Inc. Code comparators with nonpolar dynamical switches
US11609870B2 (en) 2018-12-04 2023-03-21 Rambus lnc. Off-module data buffer
US10936222B2 (en) 2019-06-19 2021-03-02 International Business Machines Corporation Hardware abstraction in software or firmware for hardware calibration
US10943628B2 (en) * 2019-07-22 2021-03-09 Micron Technology, Inc. Memory device capable of adjusting clock signal based on operating speed and propagation delay of command/address signal
US11449439B1 (en) 2019-07-25 2022-09-20 Rambus Inc. Fragmented periodic timing calibration
US11574353B2 (en) * 2019-10-09 2023-02-07 Target Brands, Inc. Compatibility based furniture recommendations
US11615862B2 (en) 2019-12-19 2023-03-28 Micron Technology, Inc. Link evaluation for a memory device
US11398289B2 (en) 2020-01-27 2022-07-26 Stmicroelectronics International N.V. Memory calibration device, system and method
US11948621B2 (en) * 2021-07-28 2024-04-02 Samsung Electronics Co., Ltd. Memory devices, memory systems having the same, and operating methods thereof
CN116052742A (en) * 2022-07-13 2023-05-02 成都海光集成电路设计有限公司 Data processing method, device, storage controller, equipment and medium
KR102643869B1 (en) 2023-07-31 2024-03-07 주식회사 몰팩바이오 Pathology diagnosis apparatus using federated learning model and its processing method

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3753232A (en) * 1972-04-06 1973-08-14 Honeywell Inf Systems Memory control system adaptive to different access and cycle times
US5671231A (en) * 1994-07-07 1997-09-23 Dell Usa, L.P. Method and apparatus for performing cache snoop testing on a cache system
US5828568A (en) * 1994-05-09 1998-10-27 Canon Kabushiki Kaisha Information processing apparatus, processing method thereof, and power supply control method therefor
US6006339A (en) * 1996-01-19 1999-12-21 Stmicroelectronics, Inc. Circuit and method for setting the time duration of a write to a memory cell
US6128244A (en) * 1998-06-04 2000-10-03 Micron Technology, Inc. Method and apparatus for accessing one of a plurality of memory units within an electronic memory device
US20020174311A1 (en) * 2001-04-24 2002-11-21 Ware Frederick A. Method and apparatus for coordinating memory operations among diversely-located memory components
US6510503B2 (en) * 1998-07-27 2003-01-21 Mosaid Technologies Incorporated High bandwidth memory interface

Family Cites Families (122)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4893318A (en) * 1988-01-26 1990-01-09 Computer Sports Medicine, Inc. Method for referencing multiple data processors to a common time reference
JP2615753B2 (en) 1988-02-10 1997-06-04 日本電気株式会社 Automatic phase adjustment method
US5097489A (en) 1989-05-19 1992-03-17 Tucci Patrick A Method for incorporating window strobe in a data synchronizer
US5274648A (en) * 1990-01-24 1993-12-28 International Business Machines Corporation Memory card resident diagnostic testing
IL96808A (en) 1990-04-18 1996-03-31 Rambus Inc Integrated circuit i/o using a high performance bus interface
JPH04195481A (en) * 1990-11-28 1992-07-15 Hitachi Ltd Single-chip microcomputer and multifunctional memory
US5485490A (en) 1992-05-28 1996-01-16 Rambus, Inc. Method and circuitry for clock synchronization
US5560000A (en) 1992-05-28 1996-09-24 Texas Instruments Incorporated Time skewing arrangement for operating memory in synchronism with a data processor
US5268639A (en) 1992-06-05 1993-12-07 Rambus, Inc. Testing timing parameters of high speed integrated circuit devices
US5598540A (en) 1992-09-30 1997-01-28 Texas Instruments Incorporated Memory module including read-write memory and read-only configuration memory accessed only sequentially and computer system using at least one such module
JPH07130166A (en) * 1993-09-13 1995-05-19 Mitsubishi Electric Corp Semiconductor storage device and synchronization type semiconductor storage device
US5554945A (en) 1994-02-15 1996-09-10 Rambus, Inc. Voltage controlled phase shifter with unlimited range
WO1995022206A1 (en) 1994-02-15 1995-08-17 Rambus, Inc. Delay-locked loop
US5579352A (en) 1994-04-06 1996-11-26 National Semiconductor Corporation Simplified window de-skewing in a serial data receiver
JP3553639B2 (en) 1994-05-12 2004-08-11 アジレント・テクノロジーズ・インク Timing adjustment circuit
US6032282A (en) * 1994-09-19 2000-02-29 Advantest Corp. Timing edge forming circuit for IC test system
US6272465B1 (en) * 1994-11-02 2001-08-07 Legerity, Inc. Monolithic PC audio circuit
US5577236A (en) 1994-12-30 1996-11-19 International Business Machines Corporation Memory controller for reading data from synchronous RAM
AU1960795A (en) 1995-03-20 1996-10-08 Hitachi Limited Device and method for transferring data
EP1146642B1 (en) 1995-05-26 2006-12-27 Rambus Inc. Phase shifter for use in a quadrature clock generator
US5684421A (en) 1995-10-13 1997-11-04 Credence Systems Corporation Compensated delay locked loop timing vernier
US5793822A (en) * 1995-10-16 1998-08-11 Symbios, Inc. Bist jitter tolerance measurement technique
JPH1021684A (en) 1996-07-05 1998-01-23 Mitsubishi Electric Corp Synchronous semiconductor memory device
US5917760A (en) 1996-09-20 1999-06-29 Sldram, Inc. De-skewing data signals in a memory system
US5892981A (en) 1996-10-10 1999-04-06 Hewlett-Packard Company Memory system and device
US5872736A (en) 1996-10-28 1999-02-16 Micron Technology, Inc. High speed input buffer
US6125157A (en) 1997-02-06 2000-09-26 Rambus, Inc. Delay-locked loop circuitry for clock delay adjustment
US5940608A (en) 1997-02-11 1999-08-17 Micron Technology, Inc. Method and apparatus for generating an internal clock signal that is synchronized to an external clock signal
US5946244A (en) 1997-03-05 1999-08-31 Micron Technology, Inc. Delay-locked loop with binary-coupled capacitor
US5831929A (en) 1997-04-04 1998-11-03 Micron Technology, Inc. Memory device with staggered data paths
GB2324214A (en) * 1997-04-08 1998-10-14 Power X Limited Synchronising arrangements
US5946712A (en) 1997-06-04 1999-08-31 Oak Technology, Inc. Apparatus and method for reading data from synchronous memory
US6247138B1 (en) * 1997-06-12 2001-06-12 Fujitsu Limited Timing signal generating circuit, semiconductor integrated circuit device and semiconductor integrated circuit system to which the timing signal generating circuit is applied, and signal transmission system
US5953284A (en) 1997-07-09 1999-09-14 Micron Technology, Inc. Method and apparatus for adaptively adjusting the timing of a clock signal used to latch digital signals, and memory device using same
US6292903B1 (en) 1997-07-09 2001-09-18 International Business Machines Corporation Smart memory interface
US5926034A (en) 1997-08-14 1999-07-20 Micron Technology, Inc. Fuse option for multiple logic families on the same die
US6011732A (en) 1997-08-20 2000-01-04 Micron Technology, Inc. Synchronous clock generator including a compound delay-locked loop
US5940609A (en) 1997-08-29 1999-08-17 Micorn Technology, Inc. Synchronous clock generator including a false lock detector
US5950115A (en) * 1997-08-29 1999-09-07 Adaptec, Inc. GHz transceiver phase lock loop having autofrequency lock correction
WO1999012306A1 (en) * 1997-09-04 1999-03-11 Silicon Image, Inc. System and method for high-speed, synchronized data communication
US6169434B1 (en) 1997-09-05 2001-01-02 Rambus Inc. Conversion circuit with duty cycle correction for small swing signals, and associated method
US5948083A (en) * 1997-09-30 1999-09-07 S3 Incorporated System and method for self-adjusting data strobe
US6143668A (en) * 1997-09-30 2000-11-07 Intel Corporation KLXX technology with integrated passivation process, probe geometry and probing process
US6000022A (en) 1997-10-10 1999-12-07 Micron Technology, Inc. Method and apparatus for coupling signals between two circuits operating in different clock domains
WO1999019806A1 (en) 1997-10-10 1999-04-22 Rambus Incorporated Method and apparatus for fail-safe resynchronization with minimum latency
JPH11203864A (en) 1998-01-14 1999-07-30 Mitsubishi Electric Corp Synchronous type semiconductor storage device
US5926369A (en) * 1998-01-22 1999-07-20 International Business Machines Corporation Vertically integrated multi-chip circuit package with heat-sink support
US6047346A (en) 1998-02-02 2000-04-04 Rambus Inc. System for adjusting slew rate on an output of a drive circuit by enabling a plurality of pre-drivers and a plurality of output drivers
US6269451B1 (en) 1998-02-27 2001-07-31 Micron Technology, Inc. Method and apparatus for adjusting data timing by delaying clock signal
US6397042B1 (en) * 1998-03-06 2002-05-28 Texas Instruments Incorporated Self test of an electronic device
US6154821A (en) 1998-03-10 2000-11-28 Rambus Inc. Method and apparatus for initializing dynamic random access memory (DRAM) devices by levelizing a read domain
JP4634605B2 (en) 1998-03-12 2011-02-16 エルピーダメモリ株式会社 Data transmission system
US6160423A (en) 1998-03-16 2000-12-12 Jazio, Inc. High speed source synchronous signaling for interfacing VLSI CMOS circuits to transmission lines
US6041419A (en) 1998-05-27 2000-03-21 S3 Incorporated Programmable delay timing calibrator for high speed data interface
US6016282A (en) 1998-05-28 2000-01-18 Micron Technology, Inc. Clock vernier adjustment
US6240128B1 (en) 1998-06-11 2001-05-29 Agere Systems Guardian Corp. Enhanced echo canceler
US6282210B1 (en) 1998-08-12 2001-08-28 Staktek Group L.P. Clock driver with instantaneously selectable phase and method for use in data communication systems
US6349399B1 (en) * 1998-09-03 2002-02-19 Micron Technology, Inc. Method and apparatus for generating expect data from a captured bit pattern, and memory device using same
US6029250A (en) 1998-09-09 2000-02-22 Micron Technology, Inc. Method and apparatus for adaptively adjusting the timing offset between a clock signal and digital signals transmitted coincident with that clock signal, and memory device and system using same
JP4034886B2 (en) 1998-10-13 2008-01-16 富士通株式会社 Semiconductor device
US6108795A (en) 1998-10-30 2000-08-22 Micron Technology, Inc. Method for aligning clock and data signals received from a RAM
US6473852B1 (en) * 1998-10-30 2002-10-29 Fairchild Semiconductor Corporation Method and circuit for performing automatic power on reset of an integrated circuit
US6374360B1 (en) 1998-12-11 2002-04-16 Micron Technology, Inc. Method and apparatus for bit-to-bit timing correction of a high speed memory bus
JP4204685B2 (en) * 1999-01-19 2009-01-07 株式会社ルネサステクノロジ Synchronous semiconductor memory device
US5986955A (en) 1999-01-19 1999-11-16 Micron Technology , Inc. Method and apparatus for hiding data path equilibration time
US6895062B1 (en) * 1999-03-24 2005-05-17 International Business Machines Corporation High speed serial interface
US6370661B1 (en) * 1999-04-26 2002-04-09 Ip-First, Llc Apparatus for testing memory in a microprocessor
US6262611B1 (en) * 1999-06-24 2001-07-17 Nec Corporation High-speed data receiving circuit and method
KR100297735B1 (en) 1999-07-13 2001-11-01 윤종용 Semiconductor memory device having effective arrangement of fuction blocks
US6839393B1 (en) * 1999-07-14 2005-01-04 Rambus Inc. Apparatus and method for controlling a master/slave system via master device synchronization
KR100323666B1 (en) 1999-08-12 2002-02-07 구자홍 Method and apparatus for compensating clock phase of monitor
US6279073B1 (en) 1999-09-30 2001-08-21 Silicon Graphics, Inc. Configurable synchronizer for double data rate synchronous dynamic random access memory
JP4342654B2 (en) 1999-10-12 2009-10-14 富士通マイクロエレクトロニクス株式会社 Delay circuit and semiconductor integrated circuit
US6643787B1 (en) * 1999-10-19 2003-11-04 Rambus Inc. Bus system optimization
US6646953B1 (en) 2000-07-06 2003-11-11 Rambus Inc. Single-clock, strobeless signaling system
AU2023001A (en) 1999-12-28 2001-07-09 Mellanox Technologies Ltd. Adaptive sampling
US7333570B2 (en) * 2000-03-14 2008-02-19 Altera Corporation Clock data recovery circuitry associated with programmable logic device circuitry
US6346911B1 (en) * 2000-03-30 2002-02-12 Motorola, Inc. Method and apparatus for determining time in a GPS receiver
JP2001283590A (en) 2000-03-31 2001-10-12 Fujitsu Ltd Semiconductor integrated circuit
US6724846B1 (en) 2000-04-28 2004-04-20 Hewlett-Packard Development Company, L.P. Simple, high performance, bit-sliced mesochronous synchronizer for a source synchronous link
US6606041B1 (en) 2000-05-10 2003-08-12 Micron Technology, Inc. Predictive timing calibration for memory devices
US6889357B1 (en) 2000-05-10 2005-05-03 Micron Technology, Inc. Timing calibration pattern for SLDRAM
US6434081B1 (en) * 2000-05-12 2002-08-13 Micron Technology, Inc. Calibration technique for memory devices
US6611905B1 (en) 2000-06-29 2003-08-26 International Business Machines Corporation Memory interface with programable clock to output time based on wide range of receiver loads
US6316980B1 (en) 2000-06-30 2001-11-13 Intel Corporation Calibrating data strobe signal using adjustable delays with feedback
US6525615B1 (en) * 2000-07-14 2003-02-25 International Business Machines Corporation Oscillator with digitally variable phase for a phase-locked loop
US6691214B1 (en) 2000-08-29 2004-02-10 Micron Technology, Inc. DDR II write data capture calibration
US6928571B1 (en) 2000-09-15 2005-08-09 Intel Corporation Digital system of adjusting delays on circuit boards
US6373293B1 (en) 2000-10-02 2002-04-16 Rambus Inc. Self-synchronized, multi-sample, quadrature phase detector
US6693985B2 (en) * 2000-10-27 2004-02-17 Silicon Image Clock and data recovery method and apparatus
US6735709B1 (en) * 2000-11-09 2004-05-11 Micron Technology, Inc. Method of timing calibration using slower data rate pattern
US7010077B1 (en) * 2000-11-20 2006-03-07 Agere Systems Inc. Gated clock recovery circuit
US20020191603A1 (en) * 2000-11-22 2002-12-19 Yeshik Shin Method and system for dynamic segmentation of communications packets
DE10058324B4 (en) 2000-11-24 2007-12-13 Infineon Technologies Ag Input circuit for an integrated memory
US6686759B1 (en) * 2000-11-28 2004-02-03 Cadence Design Systems, Inc. Techniques for testing embedded cores in multi-core integrated circuit designs
US6553472B2 (en) 2001-01-12 2003-04-22 Sun Microsystems, Inc. Method for programming clock delays, command delays, read command parameter delays, and write command parameter delays of a memory controller in a high performance microprocessor
US7116744B2 (en) * 2001-03-29 2006-10-03 Fujitsu Limited Clock recovery circuit and receiver circuit for improving the error rate of signal reproduction
US6781887B2 (en) * 2001-06-02 2004-08-24 Texas Instruments Incorporated Anti-fuse structure and method of writing and reading in integrated circuits
US7194056B2 (en) 2001-06-25 2007-03-20 Rambus Inc. Determining phase relationships using digital phase values
US6801989B2 (en) 2001-06-28 2004-10-05 Micron Technology, Inc. Method and system for adjusting the timing offset between a clock signal and respective digital signals transmitted along with that clock signal, and memory device and computer system using same
US6970988B1 (en) 2001-07-19 2005-11-29 Chung Shine C Algorithm mapping, specialized instructions and architecture features for smart memory computing
US6807614B2 (en) 2001-07-19 2004-10-19 Shine C. Chung Method and apparatus for using smart memories in computing
JP4768163B2 (en) * 2001-08-03 2011-09-07 富士通セミコンダクター株式会社 Semiconductor memory
US6779096B1 (en) 2001-09-29 2004-08-17 Apple Computer, Inc. Method and apparatus for a calibrated variable phase offset timing between synchronous clock subdomains
US7272528B2 (en) * 2001-10-01 2007-09-18 Tektronix, Inc. Reloadable word recognizer for logic analyzer
US6920540B2 (en) * 2001-10-22 2005-07-19 Rambus Inc. Timing calibration apparatus and method for a memory device signaling system
KR100414943B1 (en) 2001-12-28 2004-01-16 엘지전자 주식회사 Apparatus and Method for Distribution Clock in Multiple Processing System based on Compact Peripheral Component Interconnect
US6804764B2 (en) 2002-01-22 2004-10-12 Mircron Technology, Inc. Write clock and data window tuning based on rank select
US7076678B2 (en) * 2002-02-11 2006-07-11 Micron Technology, Inc. Method and apparatus for data transfer
JP4015986B2 (en) 2003-11-12 2007-11-28 沖電気工業株式会社 Semiconductor integrated circuit device
US7646835B1 (en) * 2003-11-17 2010-01-12 Rozas Guillermo J Method and system for automatically calibrating intra-cycle timing relationships for sampling signals for an integrated circuit device
JP4601305B2 (en) * 2004-02-27 2010-12-22 富士通セミコンダクター株式会社 Semiconductor device
US7224595B2 (en) 2004-07-30 2007-05-29 International Business Machines Corporation 276-Pin buffered memory module with enhanced fault tolerance
US7466724B2 (en) * 2004-10-14 2008-12-16 Tektronix, Inc. Apparatus and method of analyzing packetized data spanning over multiple clock cycles
KR100618870B1 (en) * 2004-10-23 2006-08-31 삼성전자주식회사 A method for data training
US7602859B2 (en) * 2005-04-28 2009-10-13 Intel Corporation Calibrating integrating receivers for source synchronous protocol
US8244971B2 (en) * 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US7778093B2 (en) * 2007-08-08 2010-08-17 Mediatek Inc. Memory control circuit capable of dynamically adjusting deglitch windows, and related method
US8134852B2 (en) * 2008-10-14 2012-03-13 Mosaid Technologies Incorporated Bridge device architecture for connecting discrete memory devices to a system
WO2010085405A1 (en) * 2009-01-22 2010-07-29 Rambus Inc. Maintenance operations in a dram
KR20140037443A (en) * 2012-09-18 2014-03-27 삼성전자주식회사 Memory device and tuning method for thererof
KR102166908B1 (en) * 2014-02-13 2020-10-19 삼성전자주식회사 Data interface method having de-skew function and Apparatus there-of

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3753232A (en) * 1972-04-06 1973-08-14 Honeywell Inf Systems Memory control system adaptive to different access and cycle times
US5828568A (en) * 1994-05-09 1998-10-27 Canon Kabushiki Kaisha Information processing apparatus, processing method thereof, and power supply control method therefor
US5671231A (en) * 1994-07-07 1997-09-23 Dell Usa, L.P. Method and apparatus for performing cache snoop testing on a cache system
US6006339A (en) * 1996-01-19 1999-12-21 Stmicroelectronics, Inc. Circuit and method for setting the time duration of a write to a memory cell
US6128244A (en) * 1998-06-04 2000-10-03 Micron Technology, Inc. Method and apparatus for accessing one of a plurality of memory units within an electronic memory device
US6510503B2 (en) * 1998-07-27 2003-01-21 Mosaid Technologies Incorporated High bandwidth memory interface
US20020174311A1 (en) * 2001-04-24 2002-11-21 Ware Frederick A. Method and apparatus for coordinating memory operations among diversely-located memory components

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106708418A (en) * 2015-11-16 2017-05-24 腾讯科技(深圳)有限公司 Message storage method and device in game environment
CN106708418B (en) * 2015-11-16 2020-06-16 腾讯科技(深圳)有限公司 Method and device for storing messages in game environment

Also Published As

Publication number Publication date
US20160260469A1 (en) 2016-09-08
US7965567B2 (en) 2011-06-21
US9367248B2 (en) 2016-06-14
US20130346685A1 (en) 2013-12-26
US20030117864A1 (en) 2003-06-26
US9123433B2 (en) 2015-09-01
US20090138747A1 (en) 2009-05-28
US6920540B2 (en) 2005-07-19
EP1446910A4 (en) 2006-08-16
US9099194B2 (en) 2015-08-04
US11232827B2 (en) 2022-01-25
US7668276B2 (en) 2010-02-23
US20050132158A1 (en) 2005-06-16
US20110248761A1 (en) 2011-10-13
EP1446910B1 (en) 2010-08-11
ATE477634T1 (en) 2010-08-15
US10811080B2 (en) 2020-10-20
US9721642B2 (en) 2017-08-01
WO2003036850A1 (en) 2003-05-01
US10192609B2 (en) 2019-01-29
US20030131160A1 (en) 2003-07-10
US20210098048A1 (en) 2021-04-01
US20150286408A1 (en) 2015-10-08
US20180012643A1 (en) 2018-01-11
EP1446910A1 (en) 2004-08-18
US20140032830A1 (en) 2014-01-30
US8542787B2 (en) 2013-09-24
US20190214074A1 (en) 2019-07-11
US7398413B2 (en) 2008-07-08
DE60237301D1 (en) 2010-09-23

Similar Documents

Publication Publication Date Title
US11232827B2 (en) Memory component with pattern register circuitry to provide data patterns for calibration
JP6113215B2 (en) Write leveling implementation in programmable logic devices
JP2002342153A (en) Method and device for adjusting memory operation from memory components arranged in various manners
KR101132321B1 (en) Mesosynchronous data bus apparatus and method of data transmission
US20080265967A1 (en) Integrated circuit for clock generation for memory devices
US8112655B2 (en) Mesosynchronous data bus apparatus and method of data transmission
US7242737B2 (en) System and method for data phase realignment
JP4535664B2 (en) Method and apparatus for signaling between devices in a memory system
EP1865648B1 (en) Phase adjustment apparatus and method for a memory device signalling system

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR IE IT LU MC NL PT SE SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP