US 7617356 B2
A refresh port for a dynamic memory. In one embodiment, an apparatus includes a memory and a refresh command interface to receive a refresh command including a portion indicating signal. Refresh logic performs a refresh to a portion of the memory array specified, at least partially, by the portion specifying signal. Data transfer interfaces receive data transfer commands and transfer memory to and from the apparatus. Another apparatus includes refresh control logic to output a refresh signal and a portion specifying signal via a refresh command interface.
1. A memory device comprising:
a dynamic random access memory (DRAM);
a data transfer port coupled to the DRAM to receive data transfer requests and memory addresses from an external memory controller;
a refresh port coupled to the DRAM to receive refresh commands from the external memory controller, wherein the external memory controller includes a memory request logic to transmit said data transfer requests and memory addresses to the memory device and refresh control logic to provide said refresh commands and to inhibit memory access commands during a refresh, and wherein the external memory controller schedules refreshes to different memory locations than the data transfer requests, and schedules data transfer requests to different memory locations than the refresh requests to reduce interference with the data transfer requests by coordinating the data transfer requests from the memory request logic with the refresh commands from the refresh control logic by throttling a rate of memory requests to a portion of the DRAM needing additional refreshes.
2. The memory device of
3. The memory device of
a plurality of portion-indicating interfaces;
a refresh command interface.
4. The memory device of
logic to receive a bank indicating signal via the plurality of portion-indicating interfaces;
logic to receive a refresh command from the refresh command interface.
5. The memory device of
6. A memory device comprising:
a memory array;
a refresh command interface to receive refresh commands from a memory controller, the refresh commands each including a portion specifying signal wherein the refresh command interface throttles a rate of memory requests to a portion of the memory array needing additional refreshes;
refresh logic to refresh a portion of said memory array specified by the portion specifying signals in response to the refresh commands;
a plurality of data transfer interfaces to receive data transfer commands from the memory controller, and to transfer memory data to and from the memory device, wherein the memory controller prevents scheduling the refresh commands and the data transfer commands to a same location within the memory array to reduce interference with the transfer of memory data without having to provide separate data transfer and refresh bit-lines for each location in the memory array.
7. The memory device of
a plurality of portion-specifying interfaces to receive said portion specifying signal that specifies a portion of the memory array to be refreshed;
a refresh interface to receive a refresh signal.
8. The memory device of
a plurality of bank refresh counters, one of the plurality of bank refresh counters being associated with each one of said plurality of banks, wherein said portion specifying signal specifies a bank, and wherein a refresh counter associated with the bank specifies a row within the bank.
9. The memory device of
10. The memory device of
11. The memory device of
12. An apparatus comprising:
a plurality of data transfer interfaces to output data transfer requests and to transfer memory data to and from the apparatus;
a refresh command interface to output refresh commands to a memory device;
refresh control logic to output a refresh signal and a portion specifying signal via the refresh command interface by throttling a rate of memory requests to a portion of the memory device needing additional refreshes;
a processor portion to execute a plurality of program instructions and to initiate a plurality of memory requests to be communicated via the plurality of data transfer interfaces, wherein the processor portion prevents scheduling the outputting of the refresh commands and the outputting of the data transfer requests to a same memory location in the memory device to reduce interference with the transfer of memory data without having to provide separate data transfer and refresh bit-lines for each location in the memory array; and
a cache control portion, said cache control portion coupled to the processor portion and coupled to the plurality of data transfer interfaces to generate the plurality of memory requests as cache accesses on the plurality of data transfer interfaces.
13. The apparatus of
14. The apparatus of
refresh count logic, said refresh count logic to track refresh activity and to inhibit activity on said plurality of data transfer interfaces if a refresh metric is not met.
15. The apparatus of
16. The apparatus of
17. The apparatus of
18. A method comprising:
providing commands from an external memory controller to a separate memory device that requires or benefits from refreshing, the commands including memory request commands and memory address signals that together define memory accesses, via an data transfer interface;
providing from the external memory controller to the separate memory device, refresh commands specifying portions to refresh of a memory array via a refresh port wherein the data transfer port is separate from the refresh port;
scheduling by the external memory controller the refresh commands and the memory request commands to different portions of the memory array to reduce interference with the memory accesses wherein the external memory controller transmits said cache memory requests to a selected portion of the cache memory device and inhibits memory access commands to the selected portion of the cache memory device during a refresh; and
scheduling, by the external memory controller, refreshes to different portions of the cache memory device to reduce interference with cache memory requests by coordinating data transfer requests with said refresh commands by throttling a rate of memory request to the selected portion of the cache memory.
19. The method of
asserting a refresh signal;
providing a plurality of portion indicating signals.
20. The method of
tracking refresh activity;
inhibiting memory requests in response to said tracking if a refresh metric is not met.
21. The method of
22. The method of
23. The method of
providing commands defining a memory access and providing a refresh command both being at least partially performed during a clock cycle.
24. A system comprising:
a first device having a memory request interface and a refresh output port;
a memory device comprising a memory array, the memory device being coupled to the first device, the memory array having a refresh input port coupled to the refresh output port, the memory device to refresh memory cells at least partially specified by refresh commands in response to refresh commands received from the first device via the refresh output port and the refresh input port, wherein said first device is a processor comprising a cache controller to communicate with the memory device, wherein the memory device is treated as a cache memory by the cache controller and the first device is to generate a plurality of portion-specifying signals transferred to the memory device via the refresh output port and the refresh input port, further wherein the cache controller transmits the cache memory requests to the cache memory device and inhibits memory access commands during a refresh and throttles a rate of memory request to a portion of the cache memory needing additional refreshes.
25. The system of
26. The system of
27. The system of
28. The system of
29. The system of
The present disclosure pertains to the field of memories, memory controllers, devices having memory controllers, and memory systems.
2. Description of Related Art
Single transistor memories such as dynamic random access memories (DRAMs) are traditionally used because it is hard to beat the density that can be provided with a single cell memory. A capacitor stores a charge (or the lack thereof) to indicate memory state(s). However, a well known downside to this type of memory device is that the capacitive devices that store the state information lose their charge over time. As such, if the charge on the capacitive portion of the memory is not periodically refreshed, information may be lost.
A refresh cycle involves reading a portion of the dynamic memory, such as a row, and then writing the data back into the portion of memory. This is done periodically and frequently enough to avert any data loss due to decay of the charge in the capacitive structure. Since the data from the portion of the memory being refreshed must be read out, it is typically not possible, at least in a single ported memory, to access some portions of the dynamic memory during the refresh cycle. In other words, the refresh cycle typically blocks accesses to at least some regions of the memory device. Accordingly, intelligent memory controllers often control refresh cycles so that they can be scheduled so as to not interfere with more time-critical system memory accesses.
Current memory controllers generally use the same interface or portions of the same interface to send refresh commands or refresh row identifying information as are used to send memory access commands. Additionally, some memories provide a self-refresh function, whereby the memory itself refreshes dynamic cells. Typically, self-refresh is used to retain data during low power periods when the memory controller is disabled and/or does not access the memory device. However, self-refresh does not allow the memory controller to maintain control over which portions of the memory are being refreshed at a particular time.
Some memory devices also perform hidden refresh. A hidden refresh is a refresh performed by the memory device without being signaled by the memory controller to perform a refresh. Such hidden refreshes can impact timing because the memory device is not aware of the accesses that will be requested by the memory controller, making a conflict between the memory controller and the refresh possible. Thus, delays in satisfying memory requests due to refreshes may be encountered in some cases.
The present invention is illustrated by way of example and not limitation in the Figures of the accompanying drawings.
The following description describes embodiments of a refresh port for a dynamic memory. In the following description, numerous specific details such as memory types, memory latencies, and signal and clock names are set forth in order to provide a more thorough understanding of the present invention. It will be appreciated, however, by one skilled in the art that the invention may be practiced without such specific details. Additionally, some well known structures, circuits, and the like have not been shown in detail to avoid unnecessarily obscuring the present invention.
In various embodiments, a variety of refresh ports are disclosed. A memory controller or device containing a memory controller may utilize a refresh port to output refresh commands to a dynamic memory. Correspondingly, a memory may utilize a refresh port as an input to receive such commands. The use of a refresh port may advantageously offload such refresh requests from the data transfer interface.
The memory controller 110 includes a data transfer port 120 and a refresh port 130. The data transfer port is coupled to one or more conductors 125 (e.g., electrical or optical conductors). The conductors 125 are coupled to a data transfer port 160 on the memory device 150. The memory controller also includes a refresh port 130. The refresh port is coupled to one or more conductors 135, and these conductors are coupled to a refresh port 170 of the memory device 150. In general, the data transfer ports handle commands, address, and data that form the traditional exchange of memory requests and corresponding data. The data transfer port may include row and column address signal interfaces, among others.
As used in this disclosure, the term port may be used to describe an input or an output interface. The interface may include one or more signal interfaces. For example, an interface may be a pin or a ball or some other interconnect to connect a device such as an integrated circuit to a signal conductor. In some embodiments, a port may be a dedicated port. As discussed herein, a refresh port is a port that, in normal operation, is used to send or receive refresh commands, and is not used to communicate the traditional memory access requests that transfer the bulk of data to or from a particular device. A refresh port may be a dedicated refresh port if it is substantially dedicated to performing refresh related functions.
In contrast, a data transfer port is an interface that is used to communicate the traditional memory access requests that transfer the bulk of data to or from a memory device. A variety of different types and sizes of memory requests may be handled via the data transfer interface. The data transfer interface may include address signal interfaces, data signal interfaces, command signal interfaces, etc. These interfaces may be individual and dedicated or may be multiplexed. Address and commands may be multiplexed in some embodiments, and address, data, and command may all be multiplexed in other embodiments. One of skill in the art will recognize that any of the many different types of known or otherwise available interfaces to communicate memory access requests may be used as a data transfer interface.
In one embodiment, the refresh port handles refresh requests (commands) separately from the data transfer port(s) so as to avoid consuming bandwidth of the data transfer ports. As dynamic memory density continues to increase, the overhead of refreshing memory typically grows. That is because a larger memory typically has more rows, and each row is typically individually refreshed, thereby increasing the number of refreshes needed. As the refresh overhead grows, so too would the amount of overhead required to control such refreshes on the data transfer interface grow using the traditional technique of sending refresh commands over the data transfer interface. Therefore, some embodiments of a refresh port may becomes increasingly valuable as memory densities increase.
For example, if a 256 megabit DRAM has eight banks of memory and 16 k rows, then 16,384 refreshes are required within the refresh period for that part. If the refresh interval is ten nanoseconds and the refresh period is eight milliseconds, then the overhead could grow to as much as sixteen percent. The high overhead problem may just be exacerbated as DRAM densities increase.
In one embodiment, the refresh port includes an interface for a portion specifying signal and an interface for a refresh signal. In other embodiments, such information may be conveyed via a single interface or via shared interfaces. The portion specifying signal at least partially identifies a portion of the memory to be refreshed when the refresh signal is asserted. For example, the portion specifying signal may indicate a row to be refreshed. Since many dynamic memories may have logic such as counters to assist in the refresh process, information from the memory device may be combined with the portion specifying signal to determine more specifically which portion of the memory should be refreshed. Another example is that in a multi-bank memory, the portion specifying signal may specify a bank number, and a counter internal to the memory may specify the row within that bank to be refreshed.
For example, in the embodiment of
The refresh command from the refresh control logic 220 may include a bank number and a refresh signal. In some cases a dedicated refresh interface and a dedicated set of bank number indicating interfaces may be provided, with corresponding conductors coupling the refresh signal and bank number to the memory device. The bank number indicates to the memory device which bank to refresh, and the memory device refreshes that bank in response to the refresh signal. In other embodiments, different signaling conventions may be used, as will be appreciated by one of skill in the art. For example, the transmission of a portion indicating signal, such as a bank number, could itself serve as the trigger to refresh that portion.
In another alternative embodiment, bank indicating interfaces may be shared with the traditional data transfer interface. Bank numbers for refreshes may be provided between bank numbers for data access requests. A refresh signal may be separately provided. Thus, some of the benefit of having a dedicated port may still be achieved by having a port and sharing a portion of the other interface(s).
In one embodiment, the refresh signal (or equivalent trigger) causes a refresh to a particular bank and then adjusts the respective refresh counter for the bank. For example, the refresh counter may be incremented or decremented. Thus, as refreshes proceed to a particular bank, the entire bank is eventually refreshed. Moreover, less information needs to be transferred from the memory controller 200 to the memory device 250 because the refresh count is locally stored. Other patterns of refreshing rows may also be used if such other access patterns would provide an advantage with a particular type of memory or in a particular configuration.
In one embodiment, the memory controller 200 and the memory device exchange memory requests and data via data transfer ports 210 and 260. A set of conductors 225 convey signals reflective of the data and requests between the respective ports 210 and 260. The memory controller 200 may schedule requests according to memory request logic 215. Requests may be received via an additional conductor or conductors linking the memory controller 200 to another device, or may be generated by processing logic on a device that includes the memory controller 200. In this embodiment, since the memory control logic includes both the memory request logic 215 and the refresh control logic 220, the memory controller 200 can intelligently schedule refreshes to reduce interference with memory requests.
For example, the memory controller 200 can avoid scheduling a refresh to bank one at the same time a memory request to bank one is occurring. Thus, different banks can be read (or written to) and refreshed at the same time. Some memories may permit the reading (writing) of multiple banks or refreshing of multiple banks, however, the concept remains the same. The memory controller 200 can attempt to optimize the mix of refreshes and memory requests. The ability to separately transmit the refreshes via a dedicated port that does not consume memory request or data bandwidth may advantageously also further increase the effective bandwidth between the memory and the controller.
In order to provide high memory access bandwidth, the memory controller 200 may generally prefer memory requests to a particular bank when a conflict between refreshing and memory access occurs. Therefore, during times of high memory utilization, the refresh control logic 220 may be somewhat starved for access to the memory array 252. In some cases, the memory device may be a dynamic memory that will lose data if it is not refreshed within a given period of time, and often such a loss would be considered unacceptable. Therefore, the refresh control logic 220 may include one or more refresh timing supervisors. Such refresh timing supervisors track the amount of time taken in refreshing a group of rows of a memory. If too much time is being taken to refresh a group of rows in a memory, then accesses to that group of rows for memory requests from the memory request logic 215 may be inhibited to allow an increased mix of refresh requests to the neglected group of rows.
For example, the embodiment of
Additionally, as indicated in block 382, the memory controller issues a refresh command via its refresh port. In some embodiments, the refresh command may be issued simultaneously (e.g., in the same clock cycle) to the memory access command, but in other embodiments these commands may or may not be correlated some or all of the time. The memory device receives the refresh command via its refresh port as indicated in block 392.
In response to receiving the refresh command, the memory device performs a refresh operation as indicated in block 394. In some embodiments, the refresh operation may be to a row that is partially specified by a refresh counter in the memory and partially specified by a bank number transmitted as a part of the refresh command, as discussed with respect to
If the memory device is a memory device having a refresh counter, then the memory device may adjust its refresh counter as indicated in block 396. In embodiments such as the embodiment of
On the memory controller side, the events in blocks 384 through 388 are not necessarily correlated in time to events in the memory device. After the refresh command is sent, however, the memory controller updates its internal counters, timers, etc., to track the refresh activity. In particular, the memory controller tracks whether a refresh metric has been achieved. The metric typically indicates whether enough refreshes are occurring over time, signaling whether or not it would be prudent to increase the mix of refreshes to avoid data loss. If the metric has been achieved, then activity may continue as usual, with the memory controller returning to block 380. If, however, the metric has not been reached, then memory access commands may be inhibited as indicated in block 388.
For example, as shown in the embodiment of
In the embodiment of
In the embodiment of
In the embodiment of
In either case, the memory request is forwarded to the level-N cache 425 at some point if a miss in the lower level cache occurs. The memory request may be forwarded to the level-N cache and then aborted in some embodiments upon a lower level cache hit. Assuming that a cache lookup is to be performed in the level-N cache 425, the cache control circuit 430 receives the translated address from the address translation logic 420 and initiates transmission of that address to the memory devices. If the command and address bus 440 is immediately available, a portion of the address from the request may be driven on the command and address bus 440. However, the cache control circuit 430 may be forced to queue the request if the command and address bus 440 is in use. In either case, the cache control circuit 430 initiates a transfer of a first portion of the translated address by dispatching the first portion of the translated address received from the address translation logic 420 (either to the bus or to a queue). In this embodiment, at the point when the transfer of the first address portion is initiated, the remainder of the address is unknown because the tag lookup has not been completed. In fact, it may not yet be known whether the requested memory location is cached in the cache 425 because the tag lookup typically also indicates whether a hit or miss occurred.
The cache control circuit 430 also initiates the tag lookup according to the address received from the address translation logic 420. Thus, the way information from the integrated tag RAM 435 is not available until subsequent to at least initiating the transfer of the first address portion to the memory device in this embodiment. The way information is driven on a subsequent cycle on the command and address bus 440. Thus, the tag lookup latency may be advantageously masked by first transmitting the row information and then transmitting the column information which indicates the results of the tag lookup.
The bus 440 in the embodiment of
The system shown in
Finally, the system of
In the example of
The activity in clock cycle zero is followed by three no operation (NOP) cycles. In clock cycle four, the read command is driven on the address bus with bank, row and column information (bank zero, row zero, column zero). At this time, a second refresh operation is driven via the refresh port. Thus, another active refresh signal is driven, and the refresh bank number (bank five) is driven via the refresh port. If a refresh were desired to the same bank (i.e., bank four), then a longer delay may be needed because a memory devices is likely to specify a required delay between such accesses.
No operation is driven in clock cycles five and six on the command bus. In clock cycle seven, the activate command is once again given on the command bus, with the address bus indicating bank two, bank three, and row one. In clock cycle eight, the read command is driven on the command bus, and bank one, row zero, and column zero are driven on the address bus. Also in clock eight, another refresh signal is driven, and the refresh bank signals indicate bank six.
No operation is driven in clocks nine through eleven, but data corresponding to the first read request (bank zero, row zero, column zero) begins to return in clock eleven. In the example shown, the data is provided in a double-pumped manner, with two data items being delivered per clock cycle. The data is delivered in clock cycles eleven through fourteen in this example.
During clock cycle twelve, another read command is driven, and signals indicating bank two, row one, column three are driven on the address bus. Additionally, another refresh signal and another refresh bank number (bank seven) is driven via the refresh port. During clock cycles thirteen, fourteen, and fifteen, no commands are driven on the command bus. However, in clock cycle fifteen, data from the second read command (bank one, row zero, column zero) begins to appear on the data bus. Data for the second read command is driven during clock cycles fifteen through eighteen.
During clock cycle sixteen, another read command is driven, and bank three, row one, column three are driven on the address bus. Additionally, another refresh signal and another refresh bank number (bank four) is driven via the refresh port. Bank four is chosen to again avoid interfering with pending read transactions. Thereafter, no further commands on the command bus are shown in this example, but an additional refresh to bank five occurs at clock cycle 20. Furthermore, data from the third read (bank two, row one, column three) and the fourth read (bank three, row one, column three) is placed on the data bus in clock cycles nineteen through twenty six. In one embodiment, cache lines are split across two banks in each memory device. Therefore, data for two cache lines is provided in clock cycles eleven through twenty-six.
It is to be understood that the above commands and timing relationships are given as illustrative only. Many different timing schemes are likely in view of the many different configurations of memory devices both now available and within the reach of one of skill in the art. However, advantages may be achieved across a variety of memories by employing a refresh port.
Moreover, a design may go through various stages, from creation to simulation to fabrication. Data representing a design may represent the design in a number of manners. First, as is useful in simulations, the hardware may be represented using a hardware description language or another functional description language Additionally, a circuit level model with logic and/or transistor gates may be produced at some stages of the design process. Furthermore, most designs, at some stage, reach a level of data representing the physical placement of various devices in the hardware model. In the case where conventional semiconductor fabrication techniques are used, the data representing the hardware model may be the data specifying the presence or absence of various features on different mask layers for masks used to produce the integrated circuit. In any representation of the design, the data may be stored in any form of a machine readable medium. An optical or electrical wave modulated or otherwise generated to transmit such information, a memory, or a magnetic or optical storage such as a disc may be the machine readable medium. Any of these mediums may “carry” or “indicate” the design or software information. When an electrical carrier wave indicating or carrying the code or design is transmitted, to the extent that copying, buffering, or re-transmission of the electrical signal is performed, a new copy is made. Thus, a communication provider or a network provider may make copies of an article (a carrier wave) embodying techniques of the present invention.
Thus, techniques for a refresh port for a dynamic memory are disclosed. While certain exemplary embodiments have been described and shown in the accompanying drawings, it is to be understood that such embodiments are merely illustrative of and not restrictive on the broad invention, and that this invention not be limited to the specific constructions and arrangements shown and described, since various other modifications may occur to those ordinarily skilled in the art upon studying this disclosure. In an area of technology such as this, where growth is fast and further advancements are not easily foreseen, the disclosed embodiments may be readily modifiable in arrangement and detail as facilitated by enabling technological advancements without departing from the principles of the present disclosure or the scope of the accompanying claims.