Memory device
Summary by NHIP
Multi-column access memory device
The dynamic random access memory device stores information indicating a pending second column access after the first column operation completes. State machine logic manages this sequence while an output buffer delivers the first data plurality during the second command reception.
Claim Score by NHIP
Abstract
A method and system for transferring information within a computer system is provided. The system includes a memory device that has a lower power mode in which data transfer circuitry is not driven by a clock signal, and a higher power mode in which data transfer circuitry is driven by a clock signal. The system further includes a memory controller that sends control signals to the memory device to initiate a data transfer transaction. The memory device receives the control signals asynchronously, and assumes the second mode in response to one of the control signals. While the memory device is in the second mode, the memory controller sends a control signal to identify a particular clock cycle. The memory device synchronously transfers the data. The memory device determines when to begin the data transfer based on the identified clock cycle and the type of data transfer that has been specified.

Term
Term ended
Expired 13 July 2018, 8.2 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
38 claims: 4 independent, 34 dependent
- 1Broadest claimClaim Score 44, average(NHIP)A dynamic random access memory device including a plurality of sense amplifiers and a memory cell array, wherein the memory device comprises:a control interface to receive: a row command that initiates a sense operation, wherein data from a row of the memory cell array is sensed using the plurality of sense amplifiers during the sense operation;and a first column command that initiates a first column access operation, wherein a first plurality of data identified based on a first column address is accessed from the plurality of sense amplifiers during the first column access operation;and a circuit to store information which indicates that, after the first column access operation, a second column access operation remains to be serviced wherein, during the second column access operation, a second plurality of data identified based on a second column address is accessed from the plurality of sense amplifiers.
- 13A dynamic random access memory device having a plurality of sense amplifiers to access data stored in a memory cell array, wherein the memory device comprises:an output buffer to output data synchronously with respect to an external clock cycle, wherein at least two bits of data are output during a clock cycle of the external clock cycle;and a control interface to receive: a row command that initiates a sense operation, wherein data from a row of the memory cell array is sensed in the plurality of sense amplifiers during the sense operation;a first read command that indicates a read operation, wherein a first plurality of data bits identified based on a first column address is accessed from the plurality of sense amplifiers to be output by the output buffer in response to the first read command;and a second read command that indicates a second read operation, wherein a second plurality of data bits identified based on a second column address is accessed from the plurality of sense amplifiers to be output by the output drivers, wherein the second read command is received while the first plurality of data bits is being output by the output buffer, and wherein the first and second plurality of data bits are output in succession.
- 22A method of operation in a dynamic random access memory device having a plurality of sense amplifiers to access data stored in a memory cell array, wherein the method comprises:receiving a row command that initiates a sense operation in the memory device;during the sense operation, sensing data from a row of the memory cell array;receiving a column command that initiates a first column access operation;during the first column access operation, accessing a first plurality of data from the plurality of sense amplifiers, wherein the first plurality of data is identified by a first column address;updating a value held in the memory device which indicates that, after the first column access operation, a second column access operation remains to be serviced;and during the second column access operation, accessing a second plurality of from the plurality of sense amplifiers, wherein the second plurality of data is identified by a second column address.
- 32A method of operation in a dynamic random access memory device having a plurality of sense amplifiers to access data stored an a memory cell array, wherein the method comprises:receiving a row command that initiates a sense operation in the memory device;during the sense operation, sensing data from a row of the memory cell array;receiving a first read command that specifies a first read operation to the memory device;during the first read operation, accessing, using the plurality of sense amplifiers, a first plurality of data bits identified based on a first column address;outputting the first plurality of data bits synchronously with respect to an external clock signal, wherein at least two bits of the first plurality of data are output during a single clock cycle of the external clock signal;while the first plurality of data bits is being output, receiving a second read command that specifies a second read operation to the memory device;and during the second read operation, accessing, using the plurality of sense amplifiers, a second plurality of data bits identified based on a second column address, wherein the first and second plurality of data bits are output in succession.
Independent claims4
133 paragraphs in 5 sections, as filed
This is a continuation of application Ser. No. 09/718,908 filed on Nov. 21, 2000, now U.S. Pat. No. 6,532,522 which is a continuation of application Ser. No. 08/648,300, filed May 7, 1996 (now, U.S. Pat. No. 6,209,071).
FIELD OF THE INVENTION
The present invention relates to digital storage devices, and more specifically, to dynamic random access memory.
BACKGROUND OF THE INVENTION
Improvements in fabrication technology have resulted in dynamic random access memories (DRAMs) with increased density, faster performance, and higher operating frequencies. Because overall memory bandwidth requirements are rising and the number of DRAMs in a system is falling, the ability to quickly transport data to and from each DRAM has become increasingly important.
Asynchronous Drams
In conventional memory systems, the communication between a memory controller and DRAMs is performed through asynchronous communications. For example, the memory controller uses control signals to indicate to the DRAM when requests for data transactions are sent. The data transfers themselves are also performed asynchronously. To meet increased speed requirements, various enhanced asynchronous memory systems have been developed. One such system is the Extended Data Out (EDO) DRAM memory system.
<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram illustrating a typical EDO DRAM system <b>100</b>. In the EDO DRAM system <b>100</b>, data transfers are performed asynchronously in response to control signals and addresses sent from pin buffers <b>116</b> of a memory controller to pin buffers <b>118</b> of the EDO DRAM over a plurality of lines <b>120</b>, <b>122</b>, <b>124</b>, <b>134</b> and <b>136</b>. Specifically, lines <b>122</b> carry an address that is stored in latches <b>112</b> and <b>114</b>. Line <b>120</b> carries a row address strobe ({overscore (RAS)}) that controls when the address stored in latch <b>112</b> is sent to row decoder <b>106</b>. Line <b>134</b> carries an output enable signal that controls data output of the DRAM. Line <b>136</b> carries a write enable signal that controls timing chains <b>108</b> and the direction of data flow on the bi-directional data bus <b>126</b>.
Upon receiving an address, row decoder <b>106</b> loads data that corresponds to the address from a memory array <b>110</b> in memory core <b>102</b> into a sense amplifier array <b>130</b>. Line <b>124</b> carries a column address strobe ({overscore (CAS)}) that controls when the address stored in latch <b>114</b> is sent to column decoder <b>104</b>. For a read operation, the column decoder <b>104</b> causes the data that is stored in the columns of the sense amplifier array <b>130</b> that correspond to the address received by column decoder <b>104</b> to be transferred through column I/O circuits <b>132</b>. The data passes through the column I/O circuits <b>132</b> to the memory controller over a data bus <b>126</b>.
Alternately, an EDO DRAM may use address transition detect circuitry to initiate the retrieval of data from the memory core, rather than the {overscore (CAS)} signal. Address transition detect circuitry is circuitry that monitors the address bus to detect transitions in the data that is being sent on the address bus. When a transition is detected, the EDO DRAM restarts the timing chains causing data corresponding to a new address to fall out of the column I/O circuits <b>132</b>.
The communication between the EDO DRAM and the memory controller is asynchronous. Thus, the EDO DRAM is not driven by an external clock. Rather, timing chains <b>108</b> that are activated by the {overscore (RAS)} and {overscore (CAS)} control signals are used to control the timing of the data transfer. Because the core <b>102</b> is not driven unless activated by the {overscore (RAS)} and {overscore (CAS)} control signals, the core <b>102</b> does not consume energy unless a data transfer operation is taking place. Therefore, the EDO DRAM consumes less power than alternative architectures in which the interface is clocked even when no memory operation is being performed.
<figref idref="DRAWINGS">FIG. 2</figref> is a timing diagram for a read operation in EDO system <b>100</b>. At time T<b>0</b> the memory controller places on lines <b>122</b> an address that indicates the bank and row from which data is to be read. At time T<b>1</b> the {overscore (RAS)} signal goes LOW causing the address to be sent from latch <b>112</b> to row decoder <b>106</b>. In response, row decoder <b>106</b> causes the appropriate row of data to be transferred from memory array <b>110</b> to sense amplifier array <b>130</b>.
At time T<b>2</b> the memory controller places on lines <b>122</b> the address of the column from which data is to be read. At time T<b>3</b> the {overscore (CAS)} signal goes LOW causing the address to be sent from latch <b>114</b> to column decoder <b>104</b>. In response, column decoder <b>104</b> sends through column I/O circuits <b>132</b> data from the selected column of the row stored in sense amplifier array <b>130</b>. Assuming that {overscore (WE)} is HIGH and {overscore (OE)} is LOW, the data will appear on data bus <b>126</b>. The data on the data bus <b>126</b> takes some time to stabilize. To ensure an accurate reading, the memory controller does not read the data from the data bus until time T<b>4</b>.
The delay between the time at which the {overscore (RAS)} signal goes LOW to initiate a read operation and the time at which the data may be read from the data bus <b>126</b> is identified as t<sub>RAC</sub>. The delay between the time at which the {overscore (CAS)} signal goes LOW for a read operation and the time at which the data may be read from the data bus <b>126</b> is identified as t<sub>CAC</sub>. The delay between the time at which the column address is placed on the address bus and the time at which the data may be read from the data bus <b>126</b> is identified as t<sub>CAA</sub>. In a typical EDO DRAM, exemplary times are t<sub>CAC</sub>=15 ns and t<sub>CAA</sub>=30 ns.
In one variation, the memory controller is allowed to have column address flow through. The memory controller therefore has until T<b>3</b> (the fall of {overscore (CAS)}), rather than until T<b>2</b> (the transmission of the column address), to decide whether to perform a given transaction. In the exemplary times above, the memory controller would have 15 ns more time to decide whether to perform a given transaction.
Synchronous Drams
DRAMs built with an asynchronous RAS/CAS interface have difficulty meeting the high memory bandwidth demands of many current computer systems. As a result, synchronous interface standards have been proposed. These alternative interface standards include Synchronous DRAMs (SDRAMs). In contrast to the asynchronous interface of EDO DRAMS, SDRAM systems use a clock to synchronize the communication between the memory controller and the SDRAMs. Timing communication with a clock allows data to be placed on the DRAM output with more precise timing. In addition, the clock signal can be used for internal pipelining. These characteristics of synchronous communication results in higher possible transfer rates.
<figref idref="DRAWINGS">FIG. 3</figref> is a block diagram illustrating a conventional SDRAM system <b>300</b>. In system <b>300</b>, the memory controller includes a plurality of clocked buffers <b>304</b> and the SDRAM includes a plurality of clocked buffers <b>306</b>. Data from control line <b>310</b> and an address bus <b>312</b> are received by a finite state machine <b>308</b> in the SDRAM. The output of the finite state machine <b>308</b> and the address data are sent to memory array <b>302</b> to initiate a data transfer operation.
<figref idref="DRAWINGS">FIG. 4</figref> is a timing diagram that illustrates the signals generated in system <b>300</b> during a read operation. At time T<b>0</b> the memory controller places a read request on line <b>310</b> and an address on bus <b>312</b>. At time T<b>1</b> the SDRAM reads the information on lines <b>310</b> and <b>312</b>. Between T<b>1</b> and T<b>2</b> the SDRAM retrieves the data located at the specified address from memory array <b>302</b>. At time T<b>2</b> the SDRAM places data from the specified address on data bus <b>314</b>. At time T<b>3</b> the memory controller reads the data off the data bus <b>314</b>.
Because system <b>300</b> is synchronous, various issues arise that do not arise in asynchronous systems. Specifically, the synchronous system has numerous pipeline stages. Unbalanced pipeline stages waste computational time. For example, if a shorter pipeline stage is fed by a longer pipeline stage, there will be some period of time in which the shorter pipeline stage remains idle after finishing its operation and before receiving the next set of data from the preceding pipeline stage. Similarly, if a short pipeline stage feeds a longer pipeline stage, the shorter pipeline stage must wait until the longer pipeline stage has completed before feeding the longer pipeline stage with new input.
Each stage in the pipeline must allow for the setup, clock transition, and clock-to-output time of the flip-flop that is dividing the stages. Typically the execution time of each step is not substantially larger than the sum of these overheads, so the latency is significantly increased by them. Further, the memory controller may be running from a clock of a different frequency and/or phase from the DRAM subsystem clock. Crossing the boundaries between these clocks requires a time proportional to the clock frequencies. In addition, the architecture must take into account jitter that occurs when various data queues are clocked.
In general, the synchronous nature of the SDRAM architecture gives SDRAMs higher transfer rates than EDO DRAMs. However, the higher rates are achieved at the expense of increased latency and power consumption. Specifically, the time required to clock control and address data through various pipeline stages increases the delay between when an address for a read operation is transmitted and when the data from the specified address is actually supplied by the SDRAM.
The increased overhead (OV) that results from the use of synchronous transfer rather than an asynchronous transfer can be expressed by the formula OV=SD+(T<sub>DC</sub>−D<b>1</b>)+(T<sub>DC</sub>−D<b>3</b>)+(T<sub>DC</sub>−(D<b>2</b> MOD TDC)), SD is synchronization delay, T<sub>DC </sub>is the time period of the DRAM clock, D<sub>1 </sub>is the delay due to controller-to-DRAM time of flight, D<sub>2 </sub>is the time to perform a CAS operation, D<sub>3 </sub>is the delay due to DRAM-to-controller time of flight, and (D<sub>2 </sub>MOD T<sub>DC</sub>) is the remainder of (D<sub>2</sub>/T<sub>DC</sub>). SD is typically equal to (T<sub>DC</sub>+T<sub>CC</sub>), where T<sub>CC </sub>is the duration of the controller clock cycle. In a system in which the external clock is at 66 Mhz and the DRAM subsystem clock is at 83 Mhz, typical values may be: T<sub>DC </sub>is 12 ns, TCC is 15 ns, D<sub>1 </sub>is 6 ns, D<sub>2 </sub>is 35 ns, and D<sub>3 </sub>is 6 ns. Thus, a typical OV would be (15+12)+(12−6)+(12−6)+(12−11)=40 ns.
Further, systems that use SDRAMs typically consume more power than the systems that use EDO DRAMs because, when the clock is enabled, the SDRAM interface is clocked whether or not a data transfer operation is actually being performed. For example, under typical conditions SDRAMs in an idle state consume approximately two to ten times more energy than EDO DRAMs in an idle state. When the clock is disabled, the clock must be enabled before a data transfer operation can be performed. More specifically, the clock must be enabled before any address or control information can be sampled by the SDRAM. The time used to enable the clock signal further increases the delay between the time that data is desired and the time that the requested data is available.
SUMMARY AND OBJECTS OF THE INVENTION
One object of the invention is to provide a memory system with an improved balance between request-to-data latency, power consumption and bandwidth.
According to one aspect of the invention, a memory interface is provided that maintains the high-bandwidth of synchronous systems, while reducing the latency and power requirements of these systems. This is accomplished by using an asynchronous interface for the address and control information, and using a synchronous interface for fast data transport.
According to one aspect of the invention, a controller transmits control signals requesting a data transfer to a memory device. The memory device asynchronously receives the control signals and synchronously performs the requested data transfer.
The memory device has a first mode in which data transfer circuits within the memory device are not driven by an internal clock signal. The memory device has a second mode in which data transfer circuits within the memory device are driven by the internal clock signal.
The memory device asynchronously receives the control signals. If the memory device is in the first mode, the memory device may assume the second mode in response to one or more of the control signals from a memory controller. While in the second mode, the memory device transfers data with the data transfer circuits while the data transfer circuits are being driven by the internal clock signal. The memory device is also able to asynchronously perform data transfers while the memory device is in the first mode.
The internal clock signal is generated from an external clock signal that may selectively pass through a delay lock loop within the memory device. The memory device may support higher clock frequencies when the external clock signal passes through the delay lock loop to drive the data transfer circuits during a data transfer. Energy may be saved by circumventing the delay lock loop and using an external clock signal with a relatively slower frequency to drive the data transfer circuits during a data transfer.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram illustrating a prior art EDO DRAM system;
<figref idref="DRAWINGS">FIG. 2</figref> is a timing diagram illustrating the timing of signals when a read operation is performed in the EDO DRAM system of <figref idref="DRAWINGS">FIG. 1</figref>;
<figref idref="DRAWINGS">FIG. 3</figref> is a block diagram illustrating a prior art SDRAM system;
<figref idref="DRAWINGS">FIG. 4</figref> is a timing diagram illustrating the timing of signals when a read operation is performed in the SDRAM system of <figref idref="DRAWINGS">FIG. 3</figref>;
<figref idref="DRAWINGS">FIG. 5</figref><i>a </i>is a block diagram illustrating a memory system according to an embodiment of the present invention;
<figref idref="DRAWINGS">FIG. 5</figref><i>b </i>is a block diagram illustrating the clock generation circuitry of <figref idref="DRAWINGS">FIG. 5</figref><i>a </i>in greater detail;
<figref idref="DRAWINGS">FIG. 6</figref> is a timing diagram illustrating the timing of signals when a read operation is performed in the memory system of <figref idref="DRAWINGS">FIG. 5</figref><i>a; </i>
<figref idref="DRAWINGS">FIG. 7</figref> is a timing diagram illustrating the timing of signals when a write operation is performed in the memory system of <figref idref="DRAWINGS">FIG. 5</figref><i>a; </i>
<figref idref="DRAWINGS">FIG. 8</figref> is a flow chart illustrating the steps performed by a DRAM during a data transfer in the memory system shown in <figref idref="DRAWINGS">FIG. 5</figref><i>a; </i>
<figref idref="DRAWINGS">FIG. 9</figref> is a timing diagram illustrating the timing of signals during a read transaction in a memory system in which the mask and address signals are multiplexed over the same set of lines;
<figref idref="DRAWINGS">FIG. 10</figref> is a timing diagram illustrating the timing of signals during a read transaction in a memory system in which the mask, address and data signals are multiplexed over the same lines;
<figref idref="DRAWINGS">FIG. 11</figref> is a timing diagram illustrating the timing of signals during a write transaction in a memory system in which the mask, address and data signals are multiplexed over the same lines;
<figref idref="DRAWINGS">FIG. 12</figref> is a diagram illustrating the correlation between a {overscore (RAS)} signal and separate PRECHARGE and SENSE signals according to an embodiment of the invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
Referring to <figref idref="DRAWINGS">FIG. 5</figref><i>a</i>, it illustrates a memory system <b>500</b> according to one embodiment of the invention. System <b>500</b> includes a memory controller <b>518</b> coupled to a DRAM <b>520</b> by a plurality of lines. The lines connecting memory controller <b>518</b> to DRAM <b>520</b> include a {overscore (RAS)} line <b>502</b>, an address bus <b>504</b>, a {overscore (CAS)} line <b>506</b>, a mask bus <b>508</b>, a data bus <b>510</b>, a clock line <b>512</b>, a clock enable ({overscore (CKE)}) line <b>514</b>, and a write enable ({overscore (WE)}) line <b>516</b>.
The DRAM <b>520</b> has a core <b>522</b> that includes a memory array <b>524</b>, a sense amplifier array <b>560</b>, column I/O circuits <b>562</b>, a row decoder <b>526</b> and a column decoder <b>528</b>. DRAM <b>520</b> further includes core timing chains <b>530</b>, latches <b>532</b> and <b>534</b>, a clocked buffer <b>536</b>, a finite state machine <b>538</b>, a flip flop circuit <b>540</b> and a clock buffer <b>544</b>. DRAM <b>520</b> further includes a clock generation circuit (CGC) <b>570</b> and a mode control circuit <b>566</b>. As shall be explained in greater detail below, in system <b>500</b>, data transfers are requested using asynchronous communication, while the actual data transfers performed in response to the requests may be performed using synchronous communication or asynchronous communication, depending on the mode selected by mode control circuit <b>566</b>.
DRAM <b>520</b> illustrates an embodiment that supports at least three data transfer modes: synchronous mode, slow synchronous mode, and asynchronous mode. As shall be described in greater detail hereafter, mode control circuit <b>566</b> controls the transfer mode currently in effect in DRAM <b>520</b>. Mode control circuit <b>566</b> may be, for example, a value stored in a register of DRAM <b>520</b>, or pin coupled to an external control line.
Asynchronous Transfer Control Signals
Referring to <figref idref="DRAWINGS">FIG. 6</figref>, it illustrates the timing of signals generated during an exemplary read transaction performed in memory system <b>500</b>. Initially, the {overscore (CKE)} line <b>514</b> is HIGH, causing the flip flop <b>540</b> to turn off the clock buffer <b>544</b>. When the clock buffer <b>544</b> is off, any clock signal on line <b>512</b> is prevented from driving the synchronous components of DRAM <b>520</b>.
Prior to time T<b>1</b>, memory controller <b>518</b> transmits a row address over the address bus <b>504</b>. The row address is loaded into latches <b>532</b> and <b>534</b>. At time T<b>1</b>, memory controller <b>518</b> causes the {overscore (RAS)} signal to go LOW. When the {overscore (RAS)} line goes LOW, the row address passes through latch <b>532</b> and is applied to row decoder <b>526</b>. For multi-bank devices, row and column addresses include bank address information. Row decoder <b>526</b> causes a sense operation to be performed on cells within memory array <b>524</b> to load into sense amplifier array <b>560</b> the data that corresponds to the specified row address.
Prior to time T<b>3</b>, the memory controller <b>518</b> places a column address on the address bus <b>504</b>. The column address is loaded into latches <b>532</b> and <b>534</b>. At time T<b>3</b>, the memory controller <b>518</b> causes the signal on the {overscore (CAS)} line <b>506</b> to go LOW. When the {overscore (CAS)} signal goes LOW, the column address passes through latch <b>534</b> and is applied to column decoder <b>528</b>. Column decoder <b>528</b> causes an access operation to be performed on the data currently stored in the sense amplifier array <b>560</b>. The data corresponding to the specified column address is sent from sense amplifier array <b>560</b> through column I/O circuits <b>562</b>.
Prior to time T<b>6</b>, the memory controller <b>518</b> places a second column address on the address bus <b>504</b>. The column address is loaded into latches <b>532</b> and <b>534</b>. At time T<b>6</b>, the memory controller <b>518</b> causes the signal on the {overscore (CAS)} line <b>506</b> to go LOW. When the {overscore (CAS)} signal goes LOW, the column address passes through latch <b>534</b> and is applied to column decoder <b>528</b>. Column decoder <b>528</b> causes an access operation to be performed on the data currently stored in the sense amplifier array <b>560</b>. The data corresponding to the specified column address is sent from sense amplifier array <b>560</b> through column I/O circuits <b>562</b>.
Significantly, all of the control information to perform the read transaction is sent without reference to any particular clock cycles. This is true even though the internal clock of DRAM <b>520</b> may be active at the time at which some of the control signals are sent by the memory controller <b>518</b>. For example, the internal clock is active at time T<b>6</b> when the second column address is latched to the column decoder. However, the timing of the {overscore (CAS)} signal that causes the column address to be latched and sent to the column decoder does not necessarily have any correlation with the clock signal.
According to an alternate embodiment, the {overscore (RAS)} and {overscore (CAS)} signals are well controlled with respect to the clock signal on line <b>512</b>. In such an embodiment, the request for data is issued from the same time domain as the data transport clock on line <b>512</b>. The timing of the data transfer may then be determined based on the timing of the control signals.
For example, data transport may begin a predetermined number of clock cycles after the clock cycle on which the falling edge of {overscore (CAS)} occurs. Various techniques may be used to ensure that the DRAM is aware of the clock cycle on which the falling edge of {overscore (CAS)} occurred. For example, the memory controller <b>518</b> may cause the {overscore (CKE)} signal to go LOW sufficiently before the falling edge of {overscore (CAS)} to ensure that the internal clock signal is stabilized by the time the falling edge of {overscore (CAS)} occurs.
Alternately, if it has been determined exactly how many clock cycles will elapse between the falling edge of {overscore (CKE)} and the first clock cycle to cause data to be output, the falling edge of {overscore (CKE)} may be used to time the data transfer. Under these circumstances, the internal clock signal must be relatively stable as soon as clock buffer <b>544</b> is activated in response to the falling edge of {overscore (CKE)}.
In an alternate embodiment, DRAM <b>520</b> includes address transition detect circuitry, thus avoiding the need of separate {overscore (CAS)} line <b>506</b> and signal. Address transition detect circuitry monitors the address bus <b>504</b> to detect transitions in the data that is being sent on the address bus <b>504</b>. When a transition is detected, DRAM <b>520</b> restarts the timing chains <b>530</b> causing data corresponding to a new address to fall out of the column I/O circuits <b>562</b>.
Multi-Mode Clock Generation Circuit
As mentioned above, DRAM <b>520</b> supports a synchronous data transfer mode, a slow synchronous data transfer mode, and an asynchronous data transfer mode. The current data transfer mode determines the signal at the output of clock generation circuit <b>570</b>. The mode is selected by mode control circuit <b>566</b>, which may be, for example, a value in a register within DRAM <b>520</b> or a pin connected to an external control line.
Referring to <figref idref="DRAWINGS">FIG. 5</figref><i>b</i>, it is a block diagram illustrating a clock generation circuit <b>570</b> according to one embodiment of the invention. Clock generation circuit <b>570</b> includes a multiplexer <b>574</b> with three inputs and one output. The inputs are coupled to lines <b>564</b>, <b>576</b> and <b>512</b>. The output of multiplexer <b>574</b> feeds the input of clock buffer <b>544</b>. The multiplexer <b>574</b> is controlled by the control signal sent by the mode control circuit <b>566</b> over line <b>568</b>.
When mode control circuit <b>566</b> applies a signal associated with the asynchronous transfer mode over line <b>568</b>, the signal on {overscore (CAS)} line <b>506</b> passes from line <b>564</b> through multiplexer <b>574</b> to the input of clock buffer <b>544</b>. When mode control circuit <b>566</b> applies a signal associated with the synchronous transfer mode over line <b>568</b>, the output of a delay lock loop (DLL) <b>572</b> whose input is the external clock signal on line <b>512</b> passes through multiplexer <b>574</b> to the input of clock buffer <b>544</b>. When mode control circuit <b>566</b> applies a signal associated with the slow synchronous transfer mode over line <b>568</b>, the external clock signal on line <b>512</b> passes through multiplexer <b>574</b> to the input of clock buffer <b>544</b>.
Clock Activation
Returning again to the transaction illustrated in <figref idref="DRAWINGS">FIG. 6</figref>, the memory controller <b>518</b> causes the signal on the {overscore (CKE)} line <b>514</b> to go LOW at time T<b>2</b>. When the {overscore (CKE)} line <b>514</b> goes LOW, the flip flop <b>540</b> turns on the clock buffer <b>544</b>. The signal at the output of clock generation circuit <b>570</b> begins driving clocked buffer <b>536</b> and finite state machine <b>538</b> through the clock buffer <b>544</b> when the clock buffer <b>544</b> is on. Assuming that DRAM <b>520</b> is in either synchronous mode or slow synchronous mode, the signal at the output of clock generation circuit <b>570</b> will reflect a clock signal on line <b>512</b>, as shown in <figref idref="DRAWINGS">FIG. 6</figref>.
In <figref idref="DRAWINGS">FIG. 6</figref>, the “internal clock signal” is the signal generated at the output of the clock buffer <b>544</b>. The internal clock signal generated by clock buffer <b>544</b> typically takes a few cycles to stabilize. Therefore, the signal on line <b>546</b> does not immediately reflect the clock signal on line <b>512</b>. In the illustrated example, the signal on line <b>546</b> does not stabilize until some time has elapsed after T<b>2</b>.
In the illustrated read transaction, the source of the clock signal on line <b>512</b> is not activated until time T<b>2</b>. By turning off the source of the external clock signal when no data transfers are in progress, both the external clock source and DRAM <b>520</b> conserve power when data transfer operations are not being performed. In alternative embodiments, the source of the external clock signal on line <b>512</b> remains on, while the internal clock signal on line <b>546</b> is only turned on when DRAM <b>520</b> is actually involved in a data transfer, as described above.
Synchronizing the Timing
After time T<b>3</b>, the DRAM <b>520</b> has all the information it requires to transmit data from the specified row and column, but does not yet know when to begin sending the data. In conventional SDRAMs, the timing of the data transfer is based on the timing of the data transfer request. Thus, if a controller sends a data transfer request on a particular clock cycle, then the controller knows that the requested data transfer will begin a predetermined number of clock cycles after the particular clock cycle.
In system <b>500</b>, the data transfer requests are transmitted in an asynchronous manner. In fact, the clock source whose signal is used to time synchronous data transfers may not even be active at the time the {overscore (RAS)} and {overscore (CAS)} signals are <b>5</b>transmitted. Therefore, the transmission of information other than the data itself (e.g. {overscore (CAS)}, {overscore (RAS)}, address information, {overscore (WE)}, etc.) need not be associated with any particular clock cycle or mode. Consequently, DRAM <b>520</b> cannot time the transmission of data based on a clock cycle on which the {overscore (RAS)} or {overscore (CAS)} signals were transmitted, and memory controller <b>518</b> cannot use a clock cycle on which the {overscore (RAS)} or {overscore (CAS)} signals were transmitted to determine the clock cycle on which DRAM <b>520</b> will begin sending data.
According to one embodiment of the invention, the rising edge of the {overscore (CKE)} signal is used as a timing mark to indicate to the finite state machine <b>538</b> of DRAM <b>520</b> when to begin sending requested data. Specifically, the clock buffer <b>544</b> is activated at the falling edge of the {overscore (CKE)} signal (at time T<b>2</b>) as described above. The memory controller <b>518</b> continues to generate the LOW {overscore (CKE)} signal. After the clock signal from the clock buffer has stabilized, the memory controller <b>518</b> causes the {overscore (CKE)} signal to go HIGH. The time at which the {overscore (CKE)} signal goes HIGH is used by memory controller <b>518</b> and the finite state machine <b>538</b> as a timing mark.
According to an alternate embodiment, a control line separate from the {overscore (CKE)} line <b>514</b> may be used to provide the timing mark. In an embodiment that uses a separate control line for the timing mark, {overscore (CKE)} might be full swing CMOS while the timing mark is low swing high speed signal.
In the illustrated read transaction, the first timing mark occurs at time T<b>4</b>. In one embodiment, the finite state machine <b>538</b> begins the transmission of the requested data a predetermined number of clock cycles after the timing mark, and memory controller <b>518</b> knows to expect the data from DRAM <b>520</b> the predetermined number of clock cycles after the timing mark. The predetermined number may be a fixed constant, or a value stored in a register within DRAM <b>520</b>.
In the illustrated embodiment, the {overscore (WE)} signal is sampled at the first rising edge of the clock signal after {overscore (CKE)} is sampled HIGH. The sample of {overscore (WE)} is used to determine whether the transaction is going to be a read transaction or a write transaction. In the example shown in <figref idref="DRAWINGS">FIG. 6</figref>, {overscore (WE)} is HIGH on the first rising edge of the clock signal after {overscore (CKE)} goes HIGH, indicating that the data transfer is going to be a read transaction.
In an alternate embodiment, the {overscore (WE)} signal can be sampled at the falling edge of {overscore (CKE)}. To increase transmission bandwidth, the input receive path of DRAM <b>520</b> and the output transmit path of DRAM <b>520</b> can be separately compensated. For example, clock generation circuit <b>570</b> and clock buffer <b>544</b> may be replaced with two clock generation circuit/clock buffer combinations, where one clock generation circuit/clock buffer combination is used to drive clocked buffer <b>536</b> to receive data and a different clock generation circuit/clock buffer combination is used to drive clocked buffer <b>536</b> to transmit data. Power is saved by activating only the clock generation circuit/clock buffer combination that will be involved in the transfer. By sampling the {overscore (WE)} signal at the falling edge of {overscore (CKE)}, the DRAM has more time between when the type of transaction (read or write) is known and when the data transfer will begin. During this interval the DRAM activates the clock buffer that corresponds to the type of transaction to be performed.
The Synchronous Data Transfer
As mentioned above, the finite state machine <b>538</b> causes data from the specified column of the specified row to be sent over the data bus <b>510</b> a predetermined number of clock cycles after the timing mark. The delay between a {overscore (CAS)} signal and the transmission of data must be long enough for the data from the appropriate column to be loaded through the column I/O circuits <b>562</b> into the clocked buffer <b>536</b>. In the illustrated example, each column address corresponds to eight bytes. However, a packet size of eight bytes is merely exemplary. The actual size of data packets will vary from implementation to implementation. The present invention is not limited to any particular size of data packet.
In response to the {overscore (CAS)} signal, eight bytes that correspond to the specified column address are loaded through the column I/O circuits <b>562</b> into clocked buffer <b>536</b>. During a data transfer, finite state machine <b>538</b> causes the eight bytes to be sent sequentially (per data bus width) from the clocked buffer <b>536</b> to the data bus <b>510</b>. The clock signal from the clock buffer <b>544</b> determines the timing of the transmission of the eight bytes. In the illustrated example, two bytes are sent per clock cycle, beginning a time T<b>5</b>. The same clock signal is applied to a clocked buffer <b>550</b> in the memory controller <b>518</b>. The eight bytes of data are sequentially received at the clocked buffer <b>550</b> based on the timing of the clock signal.
In the embodiment described above, data is transferred through column I/O circuits <b>562</b> to clocked buffer <b>536</b> eight bytes at a time, and transferred out of clocked buffer <b>536</b> to clocked buffer <b>550</b> one byte at a time. Consequently, in this embodiment, clocked buffer <b>536</b> may be a parallel to serial shift register, while clocked buffer <b>550</b> may be a serial to parallel shift register. The buffer circuits used to perform the transfer function may vary from implementation to implementation. The present invention is not limited to any particular type of clocked buffers, nor any particular clock speeds or bandwidths used to transfer data within DRAM <b>520</b> or between DRAM <b>520</b> and memory controller <b>518</b>.
Shutdown After a Data Transfer
As mentioned above, the synchronous components within DRAM <b>520</b> begin to be driven at time T<b>2</b> by the clock signal on line <b>512</b>. While these components are being driven by the clock signal, the DRAM <b>520</b> continues to consume relatively large amounts of power. DRAM <b>520</b> would continue to consume large amounts of power even when DRAM <b>520</b> is not involved in a data transfer if the DRAM <b>520</b> is not isolated from the clock signal on line <b>512</b> after the completion of a data transfer. Therefore, finite state machine <b>538</b> contains a mechanism for turning off clock buffer <b>544</b> after all of the outstanding data transfer operations that involve DRAM <b>520</b> have been completed.
According to one embodiment of the invention, finite state machine <b>538</b> uses a countdown timer to determine when to turn off the clock buffer <b>544</b>. Specifically, upon detecting the timing mark, finite state machine <b>538</b> stores a count value in a countdown timer and begins decrementing the count value during each clock cycle. As shall be explained in greater detail below, the countdown timer is incremented or reloaded for each data block in multiple-block transfers. When count value of the countdown timer reaches zero, the finite state machine <b>538</b> sends a signal to flip flop <b>540</b> over a line <b>542</b> to cause the flip flop <b>540</b> to turn off the clock buffer <b>544</b>. When clock buffer <b>544</b> is turned off, the synchronous components of DRAM <b>520</b> cease to be driven by the clock signal on line <b>512</b>, causing DRAM <b>520</b> to assume a state in which little power is consumed.
Alternative embodiments may use other mechanisms for turning off the clock buffer <b>544</b> when all data transfers involving the DRAM <b>520</b> have been completed. For example, logic circuits within finite state machine <b>538</b> may be configured to detect the completion of a data transfer operation and determine whether there is any outstanding transaction that involves DRAM <b>520</b>. If there is an outstanding transaction, then the finite state machine <b>538</b> transmits the appropriate signals to the clocked buffer <b>536</b> to perform the outstanding transaction. If there are no outstanding transactions that involve DRAM <b>520</b>, then the finite state machine <b>538</b> sends a signal to the flip flop <b>540</b> to cause the clock buffer <b>544</b> to be turned off.
Asynchronous Data Transfer Mode
To achieve high data transfer rates, synchronous transfers can be performed as described above. However, under certain conditions it may be desirable to avoid the relatively high power consumption requirements of DLL <b>572</b> by performing data transfers asynchronously.
To perform asynchronous data transfers, mode control circuit <b>566</b> applies a control signal to line <b>568</b> to cause the signal on {overscore (CAS)} line <b>506</b> to be generated at the output of clock generation circuit <b>570</b>, as described above. Memory controller <b>518</b> may then toggle the {overscore (CAS)} signal without introducing any new address information on address bus <b>504</b>, causing the {overscore (CAS)} signal to act as a clock to drive clocked buffer <b>536</b>.
In an alternate embodiment, asynchronous transfers may be performed by placing the clocked buffer <b>536</b> in flow-through. To address the width mismatch between the internal data bus <b>523</b> and the external data bus <b>510</b>, the memory controller <b>518</b> presents sufficient addressing information to the DRAM <b>520</b> to select a single byte from the eight bytes loaded on the sense amplifier array <b>560</b>.
Slow Synchronous Data Transfer Mode
Even when synchronous data transfers are desired, the delay lock loop circuit <b>572</b> within clock generation circuit <b>570</b> may be bypassed to reduce power consumption. To bypass DLL <b>572</b>, mode control circuit <b>566</b> applies a control signal to line <b>568</b> to cause the signal on line <b>512</b> to be generated at the output of clock generation circuit <b>570</b>, as described above.
However, DRAM <b>520</b> cannot support the same transfer rate without the clock synchronization provided by the DLL <b>572</b> as it can with a clock synchronized by the DLL <b>572</b>. Consequently, when the DLL <b>572</b> is bypassed, a slower clock signal must be used to perform the synchronous data transfers. Due to the lower clock frequency, the synchronous data transfers take longer than when the DLL <b>572</b> is used. Consequently, DRAM <b>520</b> is said to be in “slow” synchronous data transfer mode when an external clock signal that has not been phase compensated by a DLL is used to drive the data transfers.
Multiple-Block Transfers
In an embodiment that uses a countdown timer, the seed count value used by the countdown timer is based on the amount of time required for DRAM <b>520</b> to send one packet of data (eight bytes in the illustrated example). Specifically, after the timing mark is detected, the clock buffer <b>544</b> must stay on long enough for a packet of data to be accessed, loaded, and transmitted from DRAM <b>520</b>. If a new column address arrives before data from the previous column address has been completely transferred, then the clock buffer <b>544</b> should stay on until the data from the new column address has been transmitted.
To prevent clock buffer <b>544</b> from being turned off between consecutive packet transfers, the finite state machine <b>538</b> adds a predetermined value to the count value in the countdown timer upon detecting a falling edge of the {overscore (CKE)} signal. Because the count value in the countdown timer is increased, a greater number of clock cycles will elapse before the count value reaches zero. Preferably, the predetermined value that is added to the count value causes the shutdown of the clock buffer <b>544</b> to be delayed long enough for the additional packet of data to be transferred.
In an alternate embodiment, a predetermined value is loaded into the countdown timer upon detecting a falling edge of the {overscore (CKE)} signal. The predetermined value is large enough to ensure that the countdown timer will not reach zero before a packet of data is transferred. During the transfer of multiple data packets the counter will repeatedly be reloaded and thus never reach zero.
<figref idref="DRAWINGS">FIG. 6</figref> illustrates the timing of a read transaction in which two data packets are transferred. At time T<b>2</b> the count value in the countdown timer is set to a value that ensures that the clock buffer <b>544</b> will be on long enough for one packet of data to be transferred. In the illustrated example, the count value will be set to a value that ensures that the clock buffer <b>544</b> remains on until time T<b>8</b>.
At time T<b>5</b>, the finite state machine <b>538</b> adds or reloads a predetermined number to the count value in response to detecting the falling edge of the {overscore (CKE)} signal. At time T<b>8</b> the transmission of the first packet of data is completed. Because the predetermined value was added to the count value or the counter was reloaded, the finite state machine <b>538</b> does not turn off the clock buffer at T<b>8</b>. Rather, the count value does not reach zero until after time T<b>9</b>, when the packet of data from the second column has been completely transferred.
According to an alternate embodiment of the invention, finite state machine <b>538</b> contains logic for keeping track of how many CAS requests remain to be serviced. Upon detecting the falling edge of the {overscore (CKE)} signal, the finite state machine <b>538</b> increments the outstanding request value. Upon completing the transfer of one data block, the finite state machine <b>538</b> decrements the outstanding request value. When the outstanding request value is zero, the finite state machine <b>538</b> turns off the clock buffer <b>544</b>.
Write Transaction Timing
<figref idref="DRAWINGS">FIG. 7</figref> is a timing diagram of the signals generated in system <b>500</b> during a two packet write transaction. At time T<b>1</b>, an address on address bus <b>504</b> is transferred from latch <b>532</b> to row decoder <b>526</b> when the {overscore (RAS)} signal on line <b>502</b> goes LOW. At time T<b>2</b>, the {overscore (CKE)} signal on line <b>514</b> goes LOW causing the flip flop <b>540</b> to activate the clock buffer <b>544</b>. The finite state machine <b>538</b> detects the rising edge of the {overscore (CKE)} signal to determine that time T<b>3</b> (the rising edge of the {overscore (CKE)} signal) is the timing mark for the first packet transfer.
The {overscore (WE)} signal is sampled on the first clock cycle after the rising edge of the {overscore (CKE)} signal to determine whether the transaction is going to be a read transaction or a write transaction. In the present example, {overscore (WE)} is LOW at the rising edge of the first clock cycle after the {overscore (CKE)} signal goes HIGH, indicating that the data transfer is going to be a write transaction.
At time T<b>4</b>, {overscore (CAS)} goes LOW indicating to DRAM <b>520</b> that the data bus <b>510</b> has data that is to be written to the column that corresponds to the address on the address bus <b>504</b>. In the illustrated example, the address on the address bus at time T<b>4</b> specifies column A. The DRAM also receives the mask data on lines <b>508</b>. The finite state machine <b>538</b> controls the clocked buffer <b>536</b> to cause the data to be synchronously stored in column A in the sense amplifier array <b>560</b>. Finite state machine <b>538</b> knows to expect the data at time T<b>5</b> because time T<b>5</b> is a predetermined number of clock cycles (e.g. one clock cycle) after the timing mark.
A timing mark occurs at time T<b>6</b>, the first clock cycle after another rising edge of the {overscore (CKE)} signal. At time T<b>6</b> the {overscore (WE)} signal is sampled. In the illustrated example, the {overscore (WE)} signal is LOW at time T<b>6</b> indicating a second column of data is to be written to DRAM <b>520</b>. When receipt of the first packet of data is complete, the received data is stored in column A of the appropriate row of the memory array <b>524</b>.
At time T<b>7</b>, {overscore (CAS)} goes LOW, indicating to DRAM <b>520</b> that the data bus <b>510</b> has data that is to be written to the column that correspond to the address on the address bus <b>504</b>. In the illustrated example, the address on the address bus <b>504</b> at time T<b>7</b> specifies column B. The finite state machine <b>538</b> controls the clocked buffer <b>536</b> to cause the data to be synchronously received into column B of the sense amplifier array <b>560</b>. Finite state machine <b>538</b> knows to expect the data at time T<b>7</b> because time T<b>7</b> is a predetermined number of clock cycles after the second timing mark at time T<b>6</b>. At time T<b>8</b> the second packet of data has been completely received, so the DRAM <b>520</b> stores the second packet of data in column B of the appropriate row within memory array <b>524</b>.
<figref idref="DRAWINGS">FIG. 8</figref> is a flowchart illustrating the operation of system <b>500</b> according to an embodiment of the invention. Initially, DRAM <b>520</b> is in a powered down state where clock buffer <b>544</b> is off. At step <b>800</b>, the DRAM <b>520</b> detects the fall of the {overscore (RAS)} signal. The fall of the {overscore (RAS)} signal causes the address on the address bus <b>504</b> to be sampled (i.e. sent from latch <b>532</b> to row decoder <b>526</b>) at step <b>802</b>. At step <b>804</b> the core of DRAM <b>420</b> senses the row of data that corresponds to the address sampled at step <b>802</b>.
At step <b>812</b>, the DRAM <b>520</b> detects the falling edge of the {overscore (CAS)} signal. In response to detecting the falling edge of the {overscore (CAS)} signal, DRAM <b>520</b> samples the mask signals on lines <b>508</b> and the column address on the address bus <b>504</b> (step <b>814</b>).
Steps <b>800</b>, <b>802</b>, <b>804</b>, <b>812</b> and <b>814</b> are performed asynchronously and therefore do not require an active clock signal. Steps <b>806</b>, <b>808</b> and <b>810</b> may occur before, in parallel with, or after steps <b>800</b>, <b>802</b>, <b>804</b>, <b>812</b> and <b>814</b>, and therefore are shown as a separate thread of execution.
At step <b>806</b>, the {overscore (CKE)} signal goes LOW causing the clock buffer to be turned on at step <b>808</b>. At step <b>810</b> the DRAM <b>520</b> detects a timing mark. In the embodiment described above, the timing mark is detected when the finite state machine <b>538</b> senses the start of the first clock cycle subsequent to the rising edge of the {overscore (CKE)} signal. The {overscore (WE)} signal is sampled at this time to determine whether the data transfer is going to be a read transaction or a write transaction.
At step <b>816</b>, the finite state machine <b>538</b> determines the clock cycle on which the data transfer is to begin based on when the timing mark was detected and whether the transaction is a write transaction or a read transaction.
At step <b>818</b>, it is determined whether the {overscore (WE)} signal sampled at step <b>810</b> indicated that the transaction is a write transaction. The {overscore (WE)} signal sampled at step <b>810</b> indicated that the transaction is a write transaction, then control proceeds to step <b>828</b>. Otherwise, control proceeds to step <b>820</b>.
Significantly, all of the steps performed up to step <b>816</b> are performed in an asynchronous manner. The use of an asynchronous mechanism to perform these steps reduces the latency between the fall of the {overscore (RAS)} signal and the time that the appropriate row of data is sensed. By the time step <b>810</b> has been performed, the clock buffer <b>544</b> has been on long enough to provide a stable clock signal that may be used to synchronously transfer the data involved in the transaction.
At step <b>820</b> the core of DRAM <b>520</b> loads into an output buffer (e.g. clocked buffer <b>536</b>) the data block from the column specified in the address sampled at step <b>814</b>. At step <b>822</b> the data block is transmitted from the output buffer to the memory controller <b>518</b> in a synchronous fashion based on the clock signal from clock buffer <b>544</b>. At step <b>824</b> it is determined if the {overscore (CAS)} signal went LOW again. If so, then an additional packet of data is to be sent in the current read transaction. Control therefore returns to steps <b>810</b> and <b>814</b>. If the {overscore (CAS)} signal did not go LOW again, then the last packet of data for the transaction has been transmitted, and the clock buffer <b>544</b> is turned off at step <b>826</b>.
Control proceeds to step <b>828</b> if the transaction is a write transaction. At step <b>828</b>, DRAM <b>520</b> receives data through clocked buffer <b>536</b> which is driven by the clock signal from clock buffer <b>544</b>. When the packet of data has been received, the packet of data is stored in the memory array <b>524</b> of DRAM <b>520</b> at step <b>830</b>. At step <b>824</b> it is determined if the {overscore (CAS)} signal went LOW again subsequent to steps <b>810</b> and <b>812</b>. If so, then an additional packet of data is to be received in the current write transaction. Due to the asynchronous control circuitry of DRAM <b>520</b>, the clock does not have to be operating to perform a memory cell refresh operation. Control therefore returns to step <b>814</b>. If the {overscore (CAS)} signal did not go LOW subsequent to step <b>812</b>, then the last packet of data for the transaction has been received, and the clock buffer <b>544</b> is turned off at step <b>826</b>.
It should be noted that an assertion of {overscore (RAS)} may be followed by any arbitrary read/write sequence. For example, {overscore (RAS)} may go LOW to cause a particular row of data to be loaded into sense amplifier array <b>560</b>. Subsequently, a series of mixed reads and writes may be performed on the row of data. In addition, an arbitrary amount of time may elapse between {overscore (CAS)} signals. The duration of {overscore (RAS)} and the delay between {overscore (CAS)} operations is limited only by core considerations such as refresh rates.
Multiple-Dram Systems
The memory system <b>500</b> of <figref idref="DRAWINGS">FIG. 5</figref><i>a </i>includes only one DRAM <b>520</b>. However, the present invention is not limited to memory systems with any particular number of DRAMs. Additional DRAMs may be added to memory system <b>500</b> without affecting the operations described above. Each of the DRAMs would be connected to memory controller <b>518</b> by its own private {overscore (CAS)} line, {overscore (RAS)} line and {overscore (CKE)} line. All of the other lines that connect the DRAMs to the memory controller <b>518</b> may be shared.
In an alternate embodiment, a memory system has a two dimensional array of memory chips. In such an embodiment, all DRAMs that belong to the same column of the two dimensional array would share the same set of control lines, while each row of DRAMs in the two dimensional array would have its own set of control lines.
Multiplexed Embodiments
In the embodiment illustrated in <figref idref="DRAWINGS">FIG. 5</figref><i>a</i>, the throughput is maximized by providing separate lines for each type of signal so that the signals which are separated can function simultaneously. However, as a general rule, the higher the number of lines required by a memory system, the more expensive it is to manufacture the components for the memory system. Therefore, the approach shown in <figref idref="DRAWINGS">FIG. 5</figref><i>a </i>may not be optimal when the cost of manufacturing is taken into account. In an alternative embodiment to that shown in <figref idref="DRAWINGS">FIG. 5</figref><i>a</i>, the number of lines is reduced by multiplexing some of the lines to allow the same lines to carry more than one type of signal.
According to an alternative embodiment, the mask signal can be sent over the address bus <b>504</b>, eliminating the need for mask lines <b>508</b>. <figref idref="DRAWINGS">FIG. 9</figref> is a timing diagram illustrating the timing of the signals generated during a write operation in such an embodiment. The timing proceeds in the same fashion as described above with reference to <figref idref="DRAWINGS">FIG. 7</figref> with the difference that the mask signal is not sent over a mask bus at the same time as the column address is sent over the address bus. Rather, both the address and the mask bits are sent over a combined address/mask bus, where the address bits precede the corresponding mask bits.
Similar to memory system <b>500</b>, the memory controller in a combined address/mask bus embodiment indicates to the DRAM that the column address is present on the address/mask bus by causing the {overscore (CAS)} signal to go LOW (at times T<b>1</b> and T<b>4</b>). The memory controller indicates to the DRAM that the transaction is a write transaction by causing the {overscore (WE)} signal to be LOW at the start of the clock cycle after the rising edge of the {overscore (CKE)} signal. In addition, the memory controller indicates the presence of the mask bits on the address/mask bus (at times T<b>2</b> and T<b>5</b>) by causing the {overscore (CAS)} signal to go HIGH. When the DRAM detects the rising edge of the {overscore (CAS)} signal, the DRAM reads the mask bits from the address/mask bus.
In an alternate combined address/mask bus embodiment, the memory controller indicates the presence of the mask bits on the address/mask bus by causing the {overscore (WE)} signal to go HIGH. When the DRAM detects the rising edge of the {overscore (WE)} signal, the DRAM reads the mask bits from the address/mask bus. When the rising edge of {overscore (WE)} is used to indicate the presence of mask bits, the mask bits for the transfer of a particular data block must be placed on the combined address/mask bus at the rising edge of {overscore (WE)} that corresponds to the transfer of the particular data block. In <figref idref="DRAWINGS">FIG. 9</figref>, for example, the mask bits associated with the data block that is transferred beginning at T<b>1</b> would be placed on the combined address/mask bus to be read at the first rising edge of {overscore (WE)} after time T<b>0</b>. Similarly, the mask bits associated with the data block that is transferred beginning at T<b>4</b> would be placed on the combined address/mask bus to be read at the first rising edge of {overscore (WE)} after time T<b>3</b>.
For read transactions, mask bits are not transmitted. Therefore, read transactions in a combined address/mask bus embodiment proceed as illustrated in <figref idref="DRAWINGS">FIG. 6</figref>, with the exception that the separate mask signal does not exist.
In alternative embodiments, addresses may be multiplexed even though a separate address bus is provided. For example, row addresses may be sent over the separate address bus while column addresses are multiplexed on the same bus that carries data. Similarly, column addresses may be sent over the separate address bus while row addresses are multiplexed on the same bus that carries the data.
Read Transaction in a Multiplexed Data/Address/Mask Bits Embodiment
The number of lines required by a memory system that implements the present invention may be further reduced by using the same set of lines to transmit the data, address and mask bits. <figref idref="DRAWINGS">FIG. 10</figref> illustrates the timing of signals generated during a read transaction in an embodiment in which the data, address and mask bits are transmitted over a combined bus.
Referring to <figref idref="DRAWINGS">FIG. 10</figref>, at time T<b>1</b> the {overscore (RAS)} signal goes LOW to indicate to the DRAM that a row address is on the combined bus. The DRAM reads the row address and begins a sense operation to load the appropriate row of data into the sense amplifier array. At time T<b>2</b>, the {overscore (CAS)} signal goes LOW to indicate to the DRAM that a column address is on the combined bus. In the illustrated example, the column address on the combined bus at time T<b>2</b> specifies column address A. Also at time T<b>2</b>, the signal goes LOW to turn on the clock buffer within the DRAM.
The memory controller causes the {overscore (CKE)} signal to go HIGH to indicate that time T<b>3</b> is the timing mark for the transfer of data from column address A. At time T<b>4</b>, the {overscore (CAS)} signal goes LOW to indicate to the DRAM that a column address is on the combined bus. In the illustrated example, the column address on the combined bus at time T<b>4</b> specifies column address B. At time T<b>5</b>, the data from column address A begins to be placed on the combined bus. The memory controller knows to expect the data from column address A at time T<b>5</b> because the time at which the data from column address A is placed on the combined bus is determined by the timing mark at time T<b>3</b>. Also at time T<b>5</b>, the DRAM core begins to access the data from column address B.
The memory controller causes the {overscore (CKE)} signal to go HIGH to indicate that T<b>6</b> is the timing mark for the transfer of data from column address B. At time T<b>7</b>, the {overscore (CAS)} signal goes LOW to indicate to the DRAM that a column address is on the combined bus. In the illustrated example, the column address on the combined bus at time T<b>7</b> specifies column address C. At time T<b>8</b>, the data from column address B begins to be placed on the combined bus. The memory controller knows to expect the data from column address B at time T<b>8</b> because the time at which the data from column address B is placed on the combined bus is determined by the timing mark at time T<b>6</b>. Also at time T<b>8</b>, the DRAM core begins to access the data from column address C. This process may be repeated to transfer any arbitrary number of columns of data. Each falling edge in the {overscore (CAS)} signal initiates a transfer that constitutes an independent transaction, and continues until the entire set of read and write transactions have been completed.
Write Transaction in a Multiplexed Data/Address/Mask Bits Embodiment
<figref idref="DRAWINGS">FIG. 11</figref> illustrates the timing of signals generated during a write transaction in an embodiment in which the data, address and mask bits are transmitted over a combined bus. Referring to <figref idref="DRAWINGS">FIG. 11</figref>, at time T<b>1</b> the {overscore (RAS)} signal goes LOW to indicate to the DRAM that a row address is on the combined bus. The row decoder receives the row address and begins a sense operation to load the appropriate row of data into the sense amplifier array. At time T<b>2</b>, the {overscore (CKE)} signal goes LOW to turn on the clock buffer within the DRAM.
The memory controller causes the {overscore (CKE)} signal to go HIGH prior to time T<b>3</b> to indicate that T<b>3</b> is the timing mark. At time T<b>3</b> the DRAM samples the {overscore (WE)} signal to determine that the transaction is a write transaction. The DRAM receives a column address specifying column A when {overscore (CAS)} goes LOW, and mask data when {overscore (CAS)} goes HIGH. The transfer of data for column A begins at time T<b>4</b>. The DRAM knows to receive the data for column A at time T<b>4</b> because clock cycle T<b>4</b> is a predetermined number of clock cycles after the timing mark (T<b>3</b>). In the illustrated example, data is transmitted three clock cycles after the corresponding timing mark.
The second rising edge of the {overscore (CKE)} signal indicates to the DRAM that time T<b>5</b> is a timing mark for a second data transfer operation. The DRAM samples the {overscore (WE)} signal at time T<b>5</b> to determine that the second data transfer transaction will be a write transaction.
Independent Sense and Precharge Signals
When a single {overscore (RAS)} line is connected to a DRAM, only one bank within the DRAM may be sensed at any given time. Therefore, only one sense amplifier array is required per DRAM. To allow more than one bank to be sensed at a time, multiple {overscore (RAS)} lines can be connected to the DRAM. If each bank within the DRAM has its own {overscore (RAS)} line, then the controller can independently control (and sense) each of the banks. In such an embodiment, each bank would have its own sense amplifier array. However, the cost of providing a separate line for each bank in each DRAM is significant.
To avoid the cost of providing a separate {overscore (RAS)} line for each back in each DRAM, the {overscore (RAS)} line may be replaced with separate {overscore (SENSE)} and PRECHARGE signals. In this embodiment, the memory controller can cause a row within any given bank to be sensed by causing the {overscore (SENSE)} signal to go LOW while placing an address on the address bus that indicates a particular row and bank within the DRAM. The rising edge of {overscore (SENSE)} is irrelevant, though a minimum pulse width must be observed. Similarly, any bank may be precharged by causing the PRECHARGE signal to go HIGH while placing an address on the address bus that indicates a particular bank within the DRAM. The falling edge of the PRECHARGE signal is irrelevant. <figref idref="DRAWINGS">FIG. 12</figref> illustrates the correlation between separate {overscore (SENSE)} and PRECHARGE signals and a traditional {overscore (RAS)} signal. In this embodiment, each bank will have its own sense amplifier array, but will not require its own {overscore (RAS)} line.
In a system that provides separate PRECHARGE and {overscore (SENSE)} signals, the address that is sent when the {overscore (CAS)} signal goes LOW includes, in addition to a column address, bits that indicate a particular memory bank. The DRAM transmits data from the specified column of the sense amplifier array that corresponds to the specified memory bank. Thus, in the read transaction described above with reference to <figref idref="DRAWINGS">FIG. 10</figref>, column address A, column address B and column address C may be columns in different memory banks.
In the foregoing specification, the invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Contents5
14 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14
Every citation, both waysCites: the store holds 112 of 113
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2017011786A1 | Cited by | United States of America | Pre-grant |
| US8341364B2 | Cited by | United States of America | Search report |
| US8266405B2 | Cited by | United States of America | Search report |
| US2012096301A1 | Cited by | United States of America | Pre-grant |
| US10456819B2 | Cited by | United States of America | Search report |
| US2008148085A1 | Cited by | United States of America | Pre-grant |
| US2012042139A1 | Cited by | United States of America | Pre-grant |
| US9734877B2 | Cited by | United States of America | Search report |
| US4293932A | Cites | United States of America | Applicant |
| US4330852A | Cites | United States of America | Applicant |
| US4334295A | Cites | United States of America | Applicant |
| US4388686A | Cites | United States of America | Applicant |
| US4484308A | Cites | United States of America | Applicant |
| US4485461A | Cites | United States of America | Applicant |
| US4617647A | Cites | United States of America | Applicant |
| US4649522A | Cites | United States of America | Applicant |
| US4694197A | Cites | United States of America | Applicant |
| US4734880A | Cites | United States of America | Applicant |
| US4792929A | Cites | United States of America | Applicant |
| US4800530A | Cites | United States of America | Applicant |
| US4823324A | Cites | United States of America | Applicant |
| US4825411A | Cites | United States of America | Applicant |
| US4831597A | Cites | United States of America | Applicant |
| US4833656A | Cites | United States of America | Applicant |
| US4839856A | Cites | United States of America | Applicant |
| US4875192A | Cites | United States of America | Applicant |
| US4901282A | Cites | United States of America | Applicant |
| US4979145A | Cites | United States of America | Applicant |
| US5007028A | Cites | United States of America | Applicant |
| US5034917A | Cites | United States of America | Applicant |
| US5077693A | Cites | United States of America | Applicant |
| US5083296A | Cites | United States of America | Applicant |
| US5088062A | Cites | United States of America | Applicant |
| US5099481A | Cites | United States of America | Applicant |
| US5111386A | Cites | United States of America | Applicant |
| US5124589A | Cites | United States of America | Applicant |
| US5140688A | Cites | United States of America | Applicant |
| US5150329A | Cites | United States of America | Applicant |
| US5173878A | Cites | United States of America | Applicant |
| US5179687A | Cites | United States of America | Applicant |
| US5185719A | Cites | United States of America | Applicant |
| US5193072A | Cites | United States of America | Applicant |
| US5202857A | Cites | United States of America | Applicant |
| US5218572A | Cites | United States of America | Applicant |
| US5218686A | Cites | United States of America | Applicant |
| US5226147A | Cites | United States of America | Applicant |
| US5249277A | Cites | United States of America | Applicant |
| US5249282A | Cites | United States of America | Applicant |
| US5258953A | Cites | United States of America | Applicant |
| US5260905A | Cites | United States of America | Applicant |
| US5267200A | Cites | United States of America | Applicant |
| US5268865A | Cites | United States of America | Applicant |
| US5274788A | Cites | United States of America | Applicant |
| US5276858A | Cites | United States of America | Applicant |
| US5278789A | Cites | United States of America | Applicant |
| US5278792A | Cites | United States of America | Applicant |
| US5287327A | Cites | United States of America | Applicant |
| US5291444A | Cites | United States of America | Applicant |
| US5293340A | Cites | United States of America | Applicant |
| US5299169A | Cites | United States of America | Applicant |
| US5305278A | Cites | United States of America | Applicant |
| US5307320A | Cites | United States of America | Applicant |
| US5307469A | Cites | United States of America | Applicant |
| US5311483A | Cites | United States of America | Applicant |
| US5313431A | Cites | United States of America | Applicant |
| US5319755A | Cites | United States of America | Applicant |
| US5323358A | Cites | United States of America | Applicant |
| US5325329A | Cites | United States of America | Applicant |
| US5327390A | Cites | United States of America | Applicant |
| US5335336A | Cites | United States of America | Applicant |
| US5339276A | Cites | United States of America | Applicant |
| US5341341A | Cites | United States of America | Applicant |
| US5341488A | Cites | United States of America | Applicant |
| US5343438A | Cites | United States of America | Applicant |
| US5347491A | Cites | United States of America | Applicant |
| US5349566A | Cites | United States of America | Applicant |
| US5353253A | Cites | United States of America | Applicant |
| US5353427A | Cites | United States of America | Applicant |
| US5355348A | Cites | United States of America | Applicant |
| US5365489A | Cites | United States of America | Applicant |
| US5367493A | Cites | United States of America | Applicant |
| US5379259A | Cites | United States of America | Applicant |
| US5379263A | Cites | United States of America | Applicant |
| US5381367A | Cites | United States of America | Applicant |
| US5381376A | Cites | United States of America | Applicant |
| US5384735A | Cites | United States of America | Applicant |
| US5384737A | Cites | United States of America | Applicant |
| US5384745A | Cites | United States of America | Applicant |
| US5386385A | Cites | United States of America | Applicant |
| US5390149A | Cites | United States of America | Applicant |
| US5392239A | Cites | United States of America | Applicant |
| US5394373A | Cites | United States of America | Applicant |
| US5400292A | Cites | United States of America | Applicant |
| US5402388A | Cites | United States of America | Applicant |
| US5404335A | Cites | United States of America | Applicant |
| US5404338A | Cites | United States of America | Applicant |
| US5410514A | Cites | United States of America | Applicant |
| US5416743A | Cites | United States of America | Applicant |
| US5416918A | Cites | United States of America | Applicant |
| US5421000A | Cites | United States of America | Applicant |
16 members in 3 offices
Priority claims10
| Document | Office | Kind | Date |
|---|---|---|---|
| 64830096 | United States of America | A | |
| 64830096 | United States of America | A | |
| 71890800 | United States of America | A | |
| 71890800 | United States of America | A | |
| 28804502 | United States of America | A | |
| 08648300 | – | – | – |
| 09718908 | – | – | – |
| US19960648300 | – | – | – |
| US20000718908 | – | – | – |
| US20020288045 | – | – | – |
Members16
| Document | Office | Kind | |
|---|---|---|---|
| WO9742557A2 | World Intellectual Property Organization (WIPO) | A2 | |
| AU2825697A | Australia | A | |
| WO9742557A3 | World Intellectual Property Organization (WIPO) | A3 | |
| US6209071B1 | United States of America | B1 | |
| US2001042182A1 | United States of America | A1 | |
| US6405296B1 | United States of America | B1 | |
| US6532522B1 | United States of America | B1 | |
| US2003061460A1 | United States of America | A1 | |
| US6542976B2 | United States of America | B2 | |
| US2005201164A1 | United States of America | A1 | |
| US2005243612A1 | United States of America | A1 | |
| US7085906B2This record | United States of America | B2 | |
| US7210015B2 | United States of America | B2 | |
| US7213121B2 | United States of America | B2 | |
| US2007201280A1 | United States of America | A1 | |
| US7315929B2 | United States of America | B2 |
25 transactions on the USPTO file
Allowed without a rejection on record.
- Non-final rejections
- 0
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | |
|---|---|
| Expire Patent | |
| Recordation of Patent Grant Mailed | |
| Patent Issue Date Used in PTA CalculationAllowed | |
| Issue Notification MailedAllowed | |
| Dispatch to FDC | |
| Application Is Considered Ready for Issue | |
| Response to Reasons for Allowance | |
| Issue Fee Payment Verified | |
| Issue Fee Payment Received | |
| Mail Notice of AllowanceAllowed | |
| Notice of Allowance Data Verification CompletedAllowed | |
| Correspondence Address Change | |
| IFW TSS Processing by Tech Center Complete | |
| Reference capture on IDS | |
| Correspondence Address Change | |
| Change in Power of Attorney (May Include Associate POA) | |
| Change in Power of Attorney (May Include Associate POA) | |
| Case Docketed to Examiner in GAU | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Preliminary Amendment | |
| Application Dispatched from OIPE | |
| Application Is Now Complete | |
| IFW Scan & PACR Auto Security Review | |
| Initial Exam Team nn |
6 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Lapse for failure to pay maintenance feesLapsedLAPS | LAPS | |
| Maintenance fee reminder mailedREMI | REMI | |
| Fee paymentFPAY | FPAY |
Numbers
- Publication
- 07085906
- Publication, DOCDB
- 7085906
- Publication, EPODOC
- US7085906
- Application
- 10288045
- Application, DOCDB
- 28804502
- Application, EPODOC
- US20020288045
Titles
- English
- Memory device
Patent term adjustment
- A delay
- +799 daysthe office missed an examination deadline
- Applicant delay
- −2 days
- Net adjustment
- 797 days
Classification
- CPC, 9
- G11C7/222
- G06F13/16
- G11C7/1045
- G11C7/1051
- G11C7/1066
- G11C7/1072
- G11C7/22
- G11C8/18
- Y02D10/00
- IPC, 7
- G06F13 14
- G06F12 00
- G06F13 16
- G11C5 00
- G11C7 10
- G11C7 22
- G11C8 18
- USPC, 2
- 711167000
- 711105000