The present disclosure relates generally to memory systems, and more specifically, to signaling between a memory controller and memory in a memory system.
Memory systems are used extensively today in processing systems to store data needed by various processing entities. A memory system generally includes a memory controller that manages access to the memory. The memory is typically configured in a matrix structure formed by rows and columns of memory cells, with each memory cell being capable of storing a bit of data. A block of memory cells may be accessed by a processing entity, or other source, by providing the appropriate address to the memory controller. The address from the processing entity may be sent to the memory controller over a bus with the row address occupying the higher-order bits and the starting column address occupying the lower-order bits. The memory controller uses a multiplexing scheme to send the row address to the memory followed by the starting column address.
When a processing entity requires access to a block of memory, it sends a read or write command to the memory controller. Each read and write command includes an address. The manner in which the memory controller executes each command depends on whether the processing entity is attempting to access an open page in the memory. A “page” is normally associated with a row of memory, and an “open page” means that the memory is pointing to a row of memory and requires only the starting column address and a column access strobe (CAS) to access the block of memory. To access an unopened page of memory, the memory controller must present the row address and a row access strobe (RAS) to the memory to move the pointer before presenting the starting column address and the CAS to the memory.
Various memories are used today in memory systems. A Synchronous Dynamic Random Access Memory (SDRAM) is just one example. When a processing entity is writing to a SDRAM, or other memory device, data is transmitted over a data bus between the memory controller and the memory. A data mask may be used by the memory controller to mask data on the data bus. When the data mask is deasserted, the data on the data bus will be written to the memory. When the data mask is asserted, the data on the data bus will be ignored, and the write operation will not be performed.
The data mask is only used during write operations. When a processing entity is not writing to the SDRAM, or other memory device, the memory controller tri-states the data mask. Thus, there exists an opportunity to use the data mask for other purposes when the processing entity is not performing a write operation. By utilizing the data mask in this way, additional communications can occur between the memory controller and the memory without increasing the number of pins on the memory device.
One aspect of a memory system is disclosed. The memory system includes first and second memory devices, and a memory controller configured to selectively enable one of the memory devices, the memory controller having a first line coupled to the first and second memory devices and a second line coupled to the first and second memory devices. The first memory device is configured to provide a notification to the memory controller on the first line and the second memory device is configured to provide a notification to the memory controller on the second line. The first memory device is further configured not to load the first line and the second memory device is further configured not to load the second line when the memory controller is writing to the enabled memory device.
Another aspect of a memory system is disclosed. The memory system includes first and second memory ranks, each of the memory ranks having a memory device, and a memory controller configured to selectively enable one of the memory ranks and write data to the enabled memory rank, the memory controller having first and second lines, each being coupled to the first and second memory ranks, the first and second lines being configured to provide a data mask relating to the data. The memory device in the first memory rank is configured to provide a notification to the memory controller on the first line and the memory device in the second memory rank is configured to provide a notification to the memory controller on the second line.
One aspect of a method of communicating between a memory controller and a memory having first and second memory devices is disclosed. The memory controller includes a line coupled to the first and second memory devices. The method includes providing a notification from the first memory device to the memory controller on the first line, enabling the second memory device in order for the memory controller to write to the second memory device, and placing the first memory device into a state that does not load the line when the memory controller is writing to the second memory device.
Another aspect of a method of communicating between a memory controller and memory having first and second memory ranks is disclosed. Each of the memory ranks includes a memory device. The memory controller includes a first line coupled to the memory device in the first rank and a second line coupled to the memory device in the second rank. The method includes providing a notification from the memory device in the first memory rank to the memory controller on the first line, enabling the second memory rank in order for the memory controller to write to the second memory rank, providing a data mask from the memory controller to the second memory rank on the first and second lines when the memory controller is writing to the second memory device.
A further aspect of a memory system is disclosed. The memory system includes first and second memory devices, and memory controller configured to selectively enable one of the memory devices, the memory controller having a first line coupled to the first and second memory devices and a second line coupled to the first and second memory devices. The first memory device further includes means for providing a notification to the memory controller on the first line and the second memory device includes means for providing a notification to the memory controller on the second line. The means for providing notification to the memory controller on the first line and the means for providing notification to the memory controller on the second line are each configured not to load its respective line when the memory controller is writing to the enabled memory device.
Another aspect of a memory system is disclosed. The memory system includes first and second memory ranks, each of the memory ranks having a memory device, and a memory controller configured to selectively enable one of the memory ranks and write data to the enabled memory rank. The memory controller having first and second lines, each being coupled to the first and second memory ranks, the first and second lines being configured to output a data mask relating to the data. The memory device in the first memory rank includes means for providing a notification to the memory controller on the first line and the memory device in the second memory rank includes means for providing a notification to the memory controller on the second line.
It is understood that other aspects of the present invention will become readily apparent to those skilled in the art from the following detailed description, wherein various embodiments of the invention are shown and described by way of illustration. As will be realized, the invention is capable of other and different embodiments and its several details are capable of modification in various other respects, all without departing from the present invention. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not as restrictive.
The detailed description set forth below in connection with the appended drawings is intended as a description of various embodiments of the present invention and is not intended to represent the only embodiments in which the present invention may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of the present invention. However, it will be apparent to those skilled in the art that the present invention may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring the concepts of the present invention.
The processing system 100 is shown with a memory system 104 that may be accessed by any number of processing entities. In the configuration shown in
The memory controller 202 may be any entity that controls the operation of one or more memory devices including a dedicated memory controller chip, a processor that directly controls the memory, controller circuitry on the memory device, or any other suitable arrangement. Each memory device may be any type of temporary storage device such as a SDRAM, DRAM, or RAM, or a longer term storage device such as flash memory, ROM memory, EPROM memory, EEPROM memory, etc. In this example, the memory devices will be described in the context of a SDRAM, however, the various concepts described throughout this disclosure may be extended to other memory devices.
An example of a write operation to the memory device will be described with the reference to timing diagram of
Once a row is opened in a memory device, the memory controller may read from or write to that row. At time 322, the memory controller initiates a write operation by sending the bank address 308 and the starting column address 312 to the memory device and asserting the CS 301, the CAS 304 and the write enable (WE) 306. After a predetermined delay following the assertion of the WE 306, the memory controller begins transmitting the data to be written to the memory device on the data bus 316 (see time 324). The memory device will ignore the data on the bus 316, and not perform a write operation, when the data mask is asserted. In this example, the data mask is asserted (i.e., driven into a logic “1” state) during the first data tenure 326. As a result, that data is not written to the memory device. During the second 328 and third 330 data tenures, the data mask is deaserted, and the data transmitted on the bus 316 is written to the memory device. As pointed out earlier, the polarity of an asserted data mask is chosen in this example for convenience of explanation, but may be any polarity in practice. Prior to such as time 332, and following, the write operation, the data bus 316 and data mask 318 are not loaded, for example, driven into a high impedance state or tri-stated.
The memory device 400 also includes an address register 402 which receives an address from the memory controller. The address register 402 separates the addresses, sending the bank address to bank control logic 403, the row address to a multiplexer 404, and the starting column address to a column address counter 405. The bank control logic 403 selects the decoders from the row and column address decoders 408, 410 based on the bank address. The multiplexer 404 multiplexes the row address from the address register 402 with the output from a refresh counter 406 to the selected decoder in the row address decoder 408. The refresh counter 406 is used to generate a series of row addresses during a refresh period. The selected decoder in the row address decoder 408 decodes the row address when it receives a trigger from the control logic 401. The decoded row address is provided to the memory array 414 to open a row in the memory bank controlled by the selected decoder in the row address decoder 408.
Once the row is opened in the memory bank, the starting column address is output from the column address counter 405 when it receives a trigger from the control logic 401. Subsequent triggers from the control logic 401 are used to increment the column address counter 405 to create a series of column addresses sufficient to access a block of memory in the memory bank row to complete the read or write operation. The column address is provided to the decoder in the column address decoder 410 selected by the bank control logic 405. The selected decoder decodes the column address and provides the decoded address to an I/O and data mask logic unit 416. A signal from the control logic 401 is also provided to the I/O and data mask logic 416 to indicate whether the bus transaction is a read or write operation. In the case of a read operation, the contents of the memory array 414 specified by the bank, row, and column address is read into the I/O and data mask logic 416 before being transmitted to the memory controller by a data bus driver 423 via a bus driver 418. In the case of a write operation, the data on the data bus 418 is provided to the I/O and data mask logic 416 by a bus receiver 422. The data mask 430 is also provided to the I/O and data mask logic 416 by a data mask receiver 428. If the data mask is deasserted, the I/O and data mask logic 416 writes the data to the specified address in the memory array 414. If, on the other hand, the data mask is asserted, the data is ignored and the write operation is not performed.
As explained earlier, the data mask is tri-stated except when the memory controller is writing to the memory device 400. During that time, the data mask may be used to provide information or some type of notification to the memory controller. In one configuration of the memory device 400, the data mask may be used to indicate to the memory controller that there has been a change in status of the memory device 400. This concept may be used to eliminate the need of the memory controller to poll the status of the memory device 400 and provide the memory controller to be event driven. By way of example, and without limitation, the memory device 400 may use the data mask to indicate a change in temperature. Alternatively, or in addition to, the data mask may be used to indicate a timing error, such as a refresh error. The data mask may also be used to indicate an ECC (error-correcting code) error. Those skill in the art will be readily able to determine the information or the types of notifications best suited for any particular application.
A state machine 426, or other entity, is used to monitor changes in the status of the memory device 400. When a change is detected, a signal or interrupt is output from the state machine 426 and provided to the input of a data mask driver 424. The state machine 426 also provides an enable signal 470 to the data mask driver 424. The enable signal 470 is disabled from the data mask driver 424 when a write operation is being performed. By disabling the enable signal, the data mask driver 424 is forced into a tri-state condition, which allows the memory controller to use the data mask during the write operation. In one embodiment, the state machine 426 includes an internal timer (not shown) whose output controls the enable signal. The internal timer (not shown) is triggered or activated when the WE is asserted and remains activated for a time period sufficient to complete the write operation. The enable signal is removed from the data mask driver 424 while the internal timer (not shown) is activated.
The signaling and addressing scheme between the memory controller 502 and the memory 504 is similar to that described in connection with
The data masks 601-604 may also be used by the memory 504 to indicate a change of status as discussed earlier in connection with
The RAS, CAS, and WE are provided to the state machine 726 regardless of the state of the RS. As explained earlier in connection with
In one embodiment, the data mask used by the memory device 700 to indicate a change in status is programmable. In this embodiment, a data mask driver, either data mask driver 728 or 729, are provided for each change in status. As shown in
The various illustrative logical blocks, modules, circuits, elements, and/or components described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic component, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing components, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
The methods or algorithms described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. A storage medium may be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor.
The previous description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein, but is to be accorded the full scope consistent with the claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” All structural and functional equivalents to the elements of the various embodiments described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed under the provisions of 35 U.S.C. §112, sixth paragraph, unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “step for.”
The present Application for Patent claims priority to Provisional Application No. 60/822,279 entitled “Method and Apparatus to Enable the Cooperative Signaling of a Shared Bus Interrupt in a Multi-Rank Memory Subsystem” filed Aug. 14, 2006, and assigned to the assignee hereof and hereby expressly incorporated by reference herein.
Number | Name | Date | Kind |
---|---|---|---|
4010449 | Faggin et al. | Mar 1977 | A |
4363108 | Lange et al. | Dec 1982 | A |
5216672 | Tatosian et al. | Jun 1993 | A |
5278796 | Tillinghast et al. | Jan 1994 | A |
5600281 | Mori et al. | Feb 1997 | A |
5640521 | Whetsel | Jun 1997 | A |
5671393 | Yamaki et al. | Sep 1997 | A |
5699302 | Shinozaki et al. | Dec 1997 | A |
5787255 | Parlan et al. | Jul 1998 | A |
5860080 | James et al. | Jan 1999 | A |
5963482 | Zheng | Oct 1999 | A |
5982697 | Williams et al. | Nov 1999 | A |
6038177 | Rajith et al. | Mar 2000 | A |
6049856 | Bolyn | Apr 2000 | A |
6134167 | Atkinson | Oct 2000 | A |
6154816 | Steely et al. | Nov 2000 | A |
6236593 | Hong et al. | May 2001 | B1 |
6275420 | Fujita et al. | Aug 2001 | B1 |
6279084 | VanDoren et al. | Aug 2001 | B1 |
6324482 | Nakagaki et al. | Nov 2001 | B1 |
6373768 | Woo et al. | Apr 2002 | B2 |
6401213 | Jeddeloh | Jun 2002 | B1 |
6415364 | Bauman et al. | Jul 2002 | B1 |
6430634 | Mito | Aug 2002 | B1 |
6438057 | Ruckerbauer | Aug 2002 | B1 |
6449685 | Leung | Sep 2002 | B1 |
6453218 | Vergis | Sep 2002 | B1 |
6487629 | Shibata | Nov 2002 | B1 |
6489831 | Matranga et al. | Dec 2002 | B1 |
6594748 | Lin | Jul 2003 | B1 |
6643194 | Ryan et al. | Nov 2003 | B2 |
6665755 | Modelski et al. | Dec 2003 | B2 |
6667905 | Dono et al. | Dec 2003 | B2 |
6728798 | Roohparvar | Apr 2004 | B1 |
6757857 | Lamb et al. | Jun 2004 | B2 |
6778459 | Blodgett | Aug 2004 | B2 |
6918016 | Magro | Jul 2005 | B1 |
6937958 | Gold et al. | Aug 2005 | B2 |
6957308 | Patel | Oct 2005 | B1 |
7024518 | Halbert et al. | Apr 2006 | B2 |
7046538 | Kinsley et al. | May 2006 | B2 |
7055012 | LaBerge et al. | May 2006 | B2 |
7096283 | Roohparvar | Aug 2006 | B2 |
7230876 | Walker | Jun 2007 | B2 |
7251192 | Walker | Jul 2007 | B2 |
7304905 | Hsu et al. | Dec 2007 | B2 |
7395176 | Chung et al. | Jul 2008 | B2 |
7421525 | Polzin et al. | Sep 2008 | B2 |
7593279 | Wolford et al. | Sep 2009 | B2 |
7620783 | Wolford et al. | Nov 2009 | B2 |
7953921 | Walker et al. | May 2011 | B2 |
8122187 | Walker et al. | Feb 2012 | B2 |
20010011318 | Dalvi et al. | Aug 2001 | A1 |
20010018724 | Sukegawa | Aug 2001 | A1 |
20010032290 | Williams | Oct 2001 | A1 |
20020015328 | Dono et al. | Feb 2002 | A1 |
20020078282 | Drerup et al. | Jun 2002 | A1 |
20020152351 | Tanaka | Oct 2002 | A1 |
20020180543 | Song et al. | Dec 2002 | A1 |
20030021137 | Johnson et al. | Jan 2003 | A1 |
20030126353 | Satoh et al. | Jul 2003 | A1 |
20040071191 | Sim et al. | Apr 2004 | A1 |
20040139288 | Perego et al. | Jul 2004 | A1 |
20050044305 | Jakobs et al. | Feb 2005 | A1 |
20050060481 | Belonoznik | Mar 2005 | A1 |
20050076169 | Modelski et al. | Apr 2005 | A1 |
20050160218 | See et al. | Jul 2005 | A1 |
20050240744 | Shaikh et al. | Oct 2005 | A1 |
20050289428 | Ong | Dec 2005 | A1 |
20060044860 | Kinsley et al. | Mar 2006 | A1 |
20060239095 | Shi et al. | Oct 2006 | A1 |
20060265615 | Janzen et al. | Nov 2006 | A1 |
20060294294 | Walker | Dec 2006 | A1 |
20070214335 | Bellows et al. | Sep 2007 | A1 |
Number | Date | Country |
---|---|---|
0797207 | Sep 1997 | EP |
0851427 | Jul 1998 | EP |
06175747 | Jun 1994 | JP |
8124380 | May 1996 | JP |
8315569 | Nov 1996 | JP |
9259582 | Oct 1997 | JP |
H10198599 | Jul 1998 | JP |
11353887 | Dec 1999 | JP |
2000067576 | Mar 2000 | JP |
2001043671 | Feb 2001 | JP |
2002025288 | Jan 2002 | JP |
2002343079 | Nov 2002 | JP |
2004505404 | Feb 2004 | JP |
2004295946 | Oct 2004 | JP |
2005032428 | Feb 2005 | JP |
2008505429 | Feb 2008 | JP |
2008530721 | Aug 2008 | JP |
2014121770 | Jul 2014 | JP |
2003044314 | Jun 2003 | KR |
20100108697 | Oct 2010 | KR |
2157562 | Oct 2000 | RU |
WO0011675 | Mar 2000 | WO |
0211148 | Feb 2002 | WO |
2005106887 | Nov 2005 | WO |
WO2006089313 | Aug 2006 | WO |
WO2008011148 | Jan 2008 | WO |
Entry |
---|
International Search Report-PCT/US07/075517, International Search Authority—European Patent Office—Mar. 17, 2008. |
Written Opinion—PCT/US07/075517, International Search Authority—European Patnent Office-Mar. 17, 2008. |
Gillingham P et al., “SLDRAM:High Performance, Open-Standard Memory” IEEE Micro, IEEE Service Center, Los Alamitos, CA, US, vol. 17, No. 6, Nov. 1997, pp. 29-39, XP000726002 ISSN: 0272-1732. |
Jedec Standard: “Double Data Rate (DDR) SDRAM Specification”, JESD79E (May 2005), pp. 1-78. |
European Search Report—EP13184859—Search Authority—Munich—Nov. 13, 2013. |
Number | Date | Country | |
---|---|---|---|
20080040559 A1 | Feb 2008 | US |
Number | Date | Country | |
---|---|---|---|
60822279 | Aug 2006 | US |