US6389520B2 - Method for controlling out of order accessing to a multibank memory - Google Patents

Method for controlling out of order accessing to a multibank memory Download PDF

Info

Publication number
US6389520B2
US6389520B2 US09/221,210 US22121098A US6389520B2 US 6389520 B2 US6389520 B2 US 6389520B2 US 22121098 A US22121098 A US 22121098A US 6389520 B2 US6389520 B2 US 6389520B2
Authority
US
United States
Prior art keywords
request
memory
bank
page
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US09/221,210
Other versions
US20020004880A1 (en
Inventor
Leonard E. Christenson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
US Bank NA
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US09/221,210 priority Critical patent/US6389520B2/en
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Assigned to MICRON ELECTRONICS, INC. reassignment MICRON ELECTRONICS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHRISTENSON, LEONARD E.
Assigned to MICRON TECHNOLOGY, INC. reassignment MICRON TECHNOLOGY, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICRON ELECTRONICS, INC.
Publication of US20020004880A1 publication Critical patent/US20020004880A1/en
Publication of US6389520B2 publication Critical patent/US6389520B2/en
Application granted granted Critical
Assigned to U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT reassignment U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICRON TECHNOLOGY, INC.
Assigned to MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT reassignment MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT PATENT SECURITY AGREEMENT Assignors: MICRON TECHNOLOGY, INC.
Assigned to U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT reassignment U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Assignors: MICRON TECHNOLOGY, INC.
Assigned to JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT reassignment JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICRON SEMICONDUCTOR PRODUCTS, INC., MICRON TECHNOLOGY, INC.
Assigned to MICRON TECHNOLOGY, INC. reassignment MICRON TECHNOLOGY, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Anticipated expiration legal-status Critical
Assigned to MICRON TECHNOLOGY, INC. reassignment MICRON TECHNOLOGY, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Assigned to MICRON TECHNOLOGY, INC., MICRON SEMICONDUCTOR PRODUCTS, INC. reassignment MICRON TECHNOLOGY, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1647Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access

Definitions

  • the present invention relates generally to circuitry and protocols associated with operating memory devices, and more particularly to methods for controlling multibank memory devices.
  • FIG. 1 is a simplified functional block diagram of a memory device 200 that represents any of a wide variety of currently available multibank memory devices.
  • the central memory storage unit is a memory array 202 that is arranged in a plurality of banks, with two such banks 204 A and 204 B shown.
  • the memory array 202 includes a plurality of individual memory elements (not shown) for storing data, with the memory elements commonly arranged in separately addressable rows and columns, as is well known. Those skilled in the art commonly refer to a collectively addressable subset of the array 202 as a “page.” Typically, a single row of memory elements in a bank of the array constitutes a particular page.
  • a plurality of pages 206 A and 206 B are depicted, corresponding with banks 204 A and 204 B, respectively.
  • Particular locations within the memory array 202 are addressable by Address signals that external circuitry such as a memory controller (not shown) provides to the memory device 200 .
  • the memory controller also provides a plurality of Control or command signals that are used to designate the particular memory access type and/or sequence of memory accesses.
  • a control/address logic circuit 208 receives the Control and Address signals, which may be provided in parallel signal paths, serially, or some suitable combination.
  • the control/address logic circuit 208 then applies a plurality of internal control signals to control the timing and sequence of operations accessing the banks 204 A and 204 B via access circuits 210 A and 210 B, respectively.
  • depicted access circuits 210 A and 210 B represent a collection of various functional circuit components commonly found in memory devices. Examples include row and column address latch, buffer, and decoder circuits, sense amplifiers and I/O gating circuitry, and other well-known circuits adapted for particular memory device implementations.
  • Data written to and read from the memory array 202 is transferred from and to the memory controller or other external circuitry via a data I/O circuit 212 and the access circuits 210 A and 210 B.
  • a data I/O circuit 212 represents a collection of various functional circuit components adapted to transmit data to or receive data from external circuitry and to correspondingly receive read data from or transmit write data to the array 202 via the access circuits 210 A and 210 B.
  • the memory device 200 depicted in FIG. 1 exemplifies multibank memories such as synchronous dynamic random access memories (SDRAMs) and packet-oriented or synchronous-link DRAMs (known as SLDRAMs).
  • SDRAMs commonly have two array banks
  • SLDRAMs commonly have eight array banks. Providing multiple banks improves the average speed with which a sequence of memory operations can be performed.
  • a “precharge” operation is performed to prepare the corresponding access circuitry for a subsequent data transfer operation with the array bank.
  • the precharge operation requires a certain amount of time for its completion, and therefore limits the speed with which a sequence of memory operations can be performed to a particular array bank.
  • the precharge time can, in some instances, be “hidden.” For example, if a first access is to bank 204 A and a subsequent access is to bank 204 B, precharge operations associated with bank 204 A can occur while executing memory access operations to bank 204 B.
  • Successive memory access operations directed to a single bank ordinarily result in precharge time intervals during which memory access operations cannot be performed. However, if operations are directed to the same page in a given bank (a “page hit”), the successive operations can be performed without precharge. Thus, improving data transfer speed requires detecting the existence of such page hits and interleaving multiple bank and page hit access operations to the memory device 200 .
  • a method for controlling a multibank memory device.
  • the method includes receiving first, second, and third requests.
  • the first request is applied to the memory and a determination is made as to whether the second request is a page hit. If a page hit, the third request is applied to the memory before the second request.
  • the second request may be temporarily stored or otherwise held, with the second request then being applied to the memory at a determined time following application of the first request.
  • a method in connection with a memory controller that receives data transfer requests directed to a multibank memory.
  • the method includes receiving first, second, and third requests, with the second request being directed to a same page as the first request. Execution of the first request is initiated, and the second request is stored. Execution of the third request is then initiated before initiating execution of the second request.
  • the execution of the first request is monitored, and execution of the second request is initiated after execution of the first request has progressed to a predetermined extent. Monitoring the first request may be performed by loading a first address of the first request into a timing chain and successively shifting the first address through a plurality of locations within the timing chain. Execution of the second request may then be initiated after the first address has shifted through a selected one of the timing chain locations. A second address of the second request may then be inserted into the timing chain at the selected location.
  • a method in connection with a multibank memory that requires a minimum page time interval between successive registration of commands addressed to the same page in one of the banks.
  • the method includes registering a first command addressed to first page in a first bank.
  • a second command addressed to the first page in the first bank is then held, while a third command addressed to a second bank is registered before elapse of the page time interval. After elapse of the page time interval, the second command is then registered.
  • FIG. 1 is a functional block diagram depicting a memory device in accordance with the prior art.
  • FIG. 2 is a timing diagram depicting SLDRAM operations.
  • FIG. 3 is a functional block diagram depicting a computer system adapted to perform a method in accordance with an embodiment of the present invention.
  • FIG. 4 is a functional block diagram depicting a memory controller included in the computer system of FIG. 3 .
  • FIG. 5 is a functional block diagram depicting control timing chain circuitry included in the memory controller of FIG. 4 .
  • FIGS. 6 and 7 are timing diagrams depicting SLDRAM operations in accordance with an embodiment of the present invention.
  • FIG. 8 is a process flow diagram depicting a method of controlling multibank memory operations in accordance with an embodiment of the present invention.
  • FIG. 2 is a timing diagram depicting the operation of an SLDRAM in the event of a page hit.
  • control and address information is provided to the SLDRAM in the form of packets, with each packet including a sequence of packet words registered at respective clock “ticks” (rising or falling edges of a command clock signal).
  • Memory access commands are provided as packets of four control/address words CA 0 -CA 9 .
  • the commands are registered at times referenced to the command clock signal CCLK during successive command time intervals of four clock ticks each.
  • Data input to or output from the SLDRAM is in the form of data packets, with each data packet including a sequence of four data words DQ 0 -DQl 7 .
  • the data is shown with reference to CCLK, although those skilled in the art understand that data clock signals are used in an SLDRAM.
  • first and second commands are registered during successive ten nanosecond command time intervals.
  • the first registered command is a bank read command addressed to a location in bank 0
  • the second registered command is a bank read command addressed to a location in bank 1 .
  • tBR bank read time interval
  • data read from the respective banks is then delivered as packets of four data words.
  • FIG. 2 depicts the particular bank read time interval tBR for bank 1 .
  • the next command depicted is a page read command to bankI (i.e., a page hit).
  • precharge of bank 1 is not required when a page hit occurs, the different read latencies for bank read operations and for page read operations require a time lapse between registration of the bank read command and the page read command. Following the page read time interval tPR (also known as page read latency), another packet of data words is then delivered from bank 1 .
  • tPR also known as page read latency
  • FIG. 2 depicts a bank read command addressed to a location in bank 2 , followed by a bank read command addressed to a location in bank 3 .
  • the data read from banks 2 and 3 is then delivered as corresponding packets of four data words following the associated bank read time intervals.
  • the operations depicted in FIG. 2 show interleaved bank and page accesses without the large time penalties associated with bank precharge operations. However, significant idle time intervals still occur during which memory access commands are not registered and during which the data bus remains idle. Thus, an alternative approach to interleaved bank and page memory accesses can provide still further performance improvements.
  • FIG. 3 shows a computer system 20 adapted to perform a method in accordance with an embodiment of the present invention.
  • the central processing unit such as a microprocessor 22
  • a system controller 26 also known as corelogic
  • the system controller 26 includes a memory controller 28 for accessing a main memory 30 via a memory address/control bus 32 and a memory data bus 34 .
  • the microprocessor 22 may be any of a wide variety of processors, such as Pentium-type processors manufactured by Intel or other x86-type architecture processors manufactured by AMD, Cyrix, and others.
  • the main memory may include any of a wide variety of multibank DRAMs.
  • DRAMs manufactured by Micron Technology, Inc. such as SDRAMs, SLDRAMs, etc.
  • the address/control bus 32 would typically be implemented as separate address and control buses, as is well known by those skilled in the art. If the main memory is populated by SLDRAMs, the address/control bus 32 is then a single bus adapted for transmission of command and address packets, as is well known to those skilled in the art.
  • the system controller 26 also includes CPU interface circuitry 33 that couples the microprocessor 22 with other components of the system controller.
  • the system controller 26 also includes a cache controller (not shown) for controlling data transfer operations to a cache memory 35 that provides higher speed access to a subset of the information stored in the main memory 30 .
  • the cache memory 35 may include any of a wide variety of suitable high-speed memory devices, such as static random access memory (SRAM) modules manufactured by Micron Technology, Inc.
  • SRAM static random access memory
  • the system controller 26 also functions as a bridge circuit (sometimes called the host bus bridge or North bridge) between the processor bus 24 and a system bus, such as I/O bus 36 .
  • the I/O bus 36 may itself be a combination of one or more bus systems with associated interface circuitry (e.g., AGP bus and PCI bus with connected SCSI and ISA bus systems).
  • Multiple I/O devices 38 - 46 are coupled with the I/O bus 36 .
  • Such I/O devices include a data input device 38 (such as a keyboard, mouse, etc.), a data output device 40 (such as a printer), a visual display device 42 (commonly coupled with the system controller 26 via a high-speed PCI or AGP bus), a data storage device 44 (such as a disk drive, tape drive, CD-ROM drive, etc.), and a communications device 46 (such as a modem, LAN interface, etc.). Additionally expansion slots 48 are provided for future accommodation of other I/O devices not selected during the original design of the computer system 20 .
  • FIG. 3 depicts the various I/O devices 38 - 46 as being coupled with the controller via single, shared I/O bus 36 and an I/O interface 50 integrated within the system controller.
  • I/O interface 50 represents one or more I/O interfaces, as appropriate to a particular computer system design.
  • the I/O bus 36 may itself be a multiple bus and bridge network.
  • the depiction of FIG. 3 encompasses any of a wide variety of suitable interconnection structures between the I/O devices 38 - 46 and other components of the computer system 20 .
  • the computer system 20 could include multiple processors with multiple host bus bridges and multiple memories with associated memory controllers. Therefore, those skilled in the art will understand the particular depiction of FIG. 3 to encompass any of a wide variety of computer system architectures.
  • FIG. 4 is a functional block diagram depicting portions of the memory controller 28 .
  • the memory controller 28 receives a request and associated address from circuitry, such as from the CPU interface 33 or the I/O interface 50 in response to corresponding signals produced by the microprocessor 22 or one of the I/O devices 38 - 46 (see FIG. 3 ).
  • the request is for a memory read or write operation, but may instead be a specialized operation used, for example, during computer system initialization.
  • Each request and associated address is first stored in a request buffer or queue 52 . Requests stored in the request queue 52 may then be reorganized or prioritized to optimize data transfer operation speed or other parameters, as is well known to those skilled in the art of multibank memory controller design.
  • the memory controller 28 includes a DRAM state machine 54 that receives a request and associated address from the request queue 52 and produces the well-known control signal sets and sequences to initiate the corresponding memory access operations.
  • the particular control signal types and protocols of the DRAM state machine 54 vary, depending on the particular multibank memory device types populating the main memory 30 (see FIG. 3 ).
  • example control signals include the row address strobe (RAS), column address strobe (CAS), write enable (WE), and chip select (CS) signals.
  • example control signals include the packet-defined control/address signals that indicate device identification, command code, bank address, row address, and column address values. Details of the various control signals and protocols are well known to those skilled in the art and need not be described herein.
  • a control timing chain circuit 56 applies a plurality of timing control signals to the DRAM state machine 54 .
  • the control timing chain 56 controls the time at which the DRAM state machine 54 registers a request and associated address from the request queue 52 .
  • the control timing chain 56 determines whether bank conflicts or bus conflicts exist between pending requests stored in the request queue 52 and requests previously registered in the DRAM state machine 54 .
  • the memory controller 28 also includes page hit detect circuitry 58 coupled with the request queue 52 . As depicted, the page hit detect circuitry 58 is coupled with the final ranks of the request queue 52 . The page hit detect circuitry 58 includes comparator circuitry for comparing the request addresses stored in these final ranks, as will be understood by those skilled in the art.
  • the page hit detect circuitry 58 produces an input control signal applied to a page hit register 60 . In the event a page hit occurs, the input control signal is asserted to enable the page hit register to store the page hit request and associated address. Once the page hit request has been stored in the page hit register 60 , other pending requests stored in the request queue 52 may then be registered in the DRAM state machine 54 under control of the control timing chain 56 .
  • the control timing chain 56 also produces an output control signal applied to the page hit register 60 to control subsequent provision of the page hit request to the DRAM state machine 54 .
  • FIG. 5 is a functional block diagram that shows the page hit register 60 , the request queue 52 , and particular details of the control timing chain 56 .
  • the control timing chain 56 includes a plurality of rank registers 62 , depicted as Rank 8 -Rank 0 , which are coupled to form a rank register queue 63 .
  • Associated with each of the rank registers 62 is a respective one of a plurality of bank conflict comparators 64 , depicted as R 8 -R 0 .
  • the Rank 8 register stores the bank address as well as information about whether the particular request is a read or write request.
  • the contents of the rank registers 62 are shifted to a next lower order rank. For example, in the next command time period following initial registration of the request information in the Rank 8 register, that information is then shifted to the Rank 7 register, and so on, to propagate the request information through the rank register queue 63 .
  • the bank address of a next pending request stored in the request queue 52 is applied to each of the bank conflict comparators 64 at a first comparator input.
  • a second input of each of the bank conflict comparators 64 receives the bank address stored in a corresponding one of the rank registers 62 .
  • the control timing chain 56 determines whether a next pending request stored in the request queue 52 presents a bank conflict with any of the previously registered requests currently being executed by the DRAM state machine 54 .
  • Each of the bank conflict comparators 64 produces a comparison output signal to indicate whether such a bank conflict exists.
  • a bank conflict occurs when the next pending request is directed to a bank in which operations are currently being performed. Unless the next pending request is a page hit, the control timing chain 56 will not allow its registration until the previously registered conflicting request has cleared the rank register queue 63 .
  • Each of the rank registers 62 outputs a Write or a Read signal indicating the request type associated with the address currently stored in the respective rank register.
  • Such information concerning write or read access is important for determining the existence of bus conflicts, as is well understood by those skilled in the art. For example, a write request following a read request requires an intervening idle time interval for turnaround of the external memory data bus. Similarly, a read request following a write request requires a time interval for turnaround of the internal memory data bus/pipeline.
  • the control timing chain 56 also includes circuitry (not shown) to account for bus/pipeline turnaround times, as well as to account for bank conflicts as particularly depicted in FIG. 5 .
  • the timing of the well-known Write Data and Read Data strobe signals may also be conveniently controlled by the rank register queue 63 , as shown in FIG. 5 .
  • FIG. 5 shows the page hit register 60 and the page hit entry points into the rank registers 62 .
  • a page hit write request is inserted at the Rank 6 register
  • a page hit read request is inserted at the Rank 5 register, as consistent with the particular page read and write latencies for an SLDRAM.
  • the page hit entry points may vary (as may the number of rank registers included in the rank register queue 63 ) depending on the timing specifications of particular multibank memory devices being controlled by the memory controller 28 .
  • Page bank conflict comparators 66 compare the bank address of the request stored in the page hit register 60 with the bank address of the Rank 7 and Rank 6 registers to ensure proper timing of page hit request insertion. In the particular embodiment depicted in FIG. 5, after a bank write request clears the Rank 7 register (as indicated by the respective one of the page bank conflict comparators 66 ), a page hit write request to that bank may then be inserted in the Rank 6 register in the next command time period (at which time the bank write request has shifted to the Rank 5 register).
  • a page hit read request to that bank may then be inserted in the Rank 5 register in the next command time period (at which time the bank read request has shifted to the Rank 4 register).
  • control timing chain 56 has separate inputs for bank and page accesses—namely, the inputs to the Rank 5 and Rank 6 registers being read and write page access inputs 68 and 70 , respectively, and the input to the Rank 8 register being a bank access input 72 .
  • the inputs to the Rank 5 and Rank 6 registers being read and write page access inputs 68 and 70 , respectively, and the input to the Rank 8 register being a bank access input 72 .
  • subsequent requests stored in the request queue 52 may be applied to the DRAM state machine 54 (see FIG. 4) and correspondingly registered in the rank register queue 63 at the bank access input 72 .
  • a first bank write request directed to a first bank is applied to the DRAM state machine 54 and to the bank access input 72 for registration in the Rank 8 register of the control timing chain 56 .
  • this request is then stored in the page hit register 60 during the next command time period, and the first bank write request shifts to the Rank 7 register.
  • a second bank write request directed to a second bank can be applied to the DRAM state machine 54 and to the bank access input 72 for registration in the Rank 8 register (the first bank write request has now shifted to the Rank 6 register).
  • the first bank write request shifts to the Rank 5 register
  • the second bank write request shifts to the Rank 7 register
  • the page write request is applied to the DRAM state machine 54 and inserted at the page access input 70 into the Rank 6 register (i.e., in between the first and second bank write requests).
  • FIGS. 6 and 7 are timing diagrams that depict operation of an SLDRAM in accordance with an embodiment of the present invention, such as by using the memory controller 28 described above in connection with FIGS. 4 and 5.
  • Requests stored in the request queue 52 are registered as corresponding commands in the SLDRAM, as is well known to those skilled in the art.
  • FIG. 6 depicts a sequence of read operations
  • FIG. 7 depicts a sequence of write operations. In each case, operations are directed sequentially to bank 0 , bank 1 , bank 2 , and bank 3 , with two successive operations directed to bank 1 (the second being a page hit).
  • a first command is registered during a first ten nanosecond command time interval, with the first registered command being a bank read command addressed to a location in banko.
  • a second command is registered, with the second command being a bank read command addressed to a location in bank 1 .
  • the next pending request received from the request queue 52 is a page read to bank 1 (i.e., a page hit), which is then temporarily stored in the page hit register 60 (see FIGS. 4 and 5 ).
  • commands addressed to other banks can be successively registered, such as the depicted bank read commands addressed to locations in bank 2 and bank 3 .
  • the page read command is then registered during a command time period determined by the control timing chain 56 (as described above in connection with FIG. 5 ), consistent with timing specifications for bank read time tBR and page read time tPR.
  • Data read from the various banks then appear on the data bus as successive data packets, including the page hit data from bank 1 immediately following the first accessed data from bank 1 . In contrast to the operations described above in connection with FIG. 2, there is no data bus idle time.
  • a first registered command is a bank write command addressed to a location in bank 0 .
  • a second registered command is a bank write command addressed to a location in bank 1 .
  • the next pending request received from the request queue 52 is a page write to bank 1 (i.,e., a page hit), which is then temporarily stored in the page hit register 60 (see FIGS. 4 and 5 ).
  • a command addressed to another bank can be registered, such as the depicted bank write command addressed to a location in bank 2 .
  • the page write command is then registered during a command time period determined by the control timing chain 56 (as described above), consistent with timing specifications for bank write time tBW and page write time tPW.
  • Other commands can then be registered, such as the depicted bank write command directed to bank 3 .
  • embodiments of the present invention can provide a continuous data stream on the data bus for successive write operations, including a page hit write operation.
  • FIG. 8 is a process flow diagram depicting a method 100 of operating a multibank memory device in accordance with an embodiment of the present invention.
  • Operations begin upon receipt of a Request at step 102 .
  • step 104 it is determined whether the Request is a page hit. If a page hit, the Request is then stored in step 106 . Subsequently, it is determined whether a bus conflict or bank conflict exists in step 108 .
  • the bank conflict determination amounts to waiting for the previously issued bank request (to which the stored Request is a page hit) to progress in execution sufficient to then initiate the page hit operations. Once it has been determined that no bank or bus conflicts exist, the Request is initiated and control timing chain insertion occurs in step 110 . Operations associated with the method 100 then cease pending receipt of another Request.
  • the Request is treated like any other bank access request.
  • the existence of any bus or bank conflicts is determined in step 112 .
  • the Request is then initiated and control timing chain registration occurs in step 114 .
  • Operations associated with the method 100 then cease pending receipt of another Request.
  • a page hit request is being processed according to operations 106 - 110
  • another bank access request may be processed according to operations 112 - 114 .
  • FIGS. 6 and 7 show the improved data transfer speeds made possible by an interleaved bank and page hit memory control method in accordance with an embodiment of the present invention.
  • FIG. 6 shows sequential read operations only
  • FIG. 7 shows sequential write operations only
  • data transfer bandwidth is significantly improved when both read and write operations are performed sequentially.
  • FIGS. 3-5 These figures represent just one of many possible implementations of a multibank memory control method in accordance with the present invention. Likewise, the present invention may be accomplished using process steps other than those particularly depicted and described in connection with FIG. 8 .
  • each of the circuits whose functions and interconnections are described in connection with FIGS. 3-5 is of a type known in the art. Therefore, one skilled in the art will be readily able to adapt such circuits in the described combination to practice the invention. Particular details of these circuits are not critical to the invention, and a detailed description of the internal circuit operation need not be provided. Similarly, each one of the process steps described in connection with FIG. 8 is of a type well known in the art, and may itself be a sequence of operations that need not be described in detail in order for one skilled in the art to practice the invention.
  • control timing chain page access inputs relative to the bank access input is exemplary, and may well vary depending on particular memory device timing specifications.
  • Those skilled in the art will appreciate that many of the advantages associated with the circuits and processes described above may be provided by other circuit configurations and processes. Indeed, a number of suitable circuit components can be adapted and combined in a variety of circuit topologies to implement a multibank memory control method in accordance with the present invention.
  • the term “bank” may refer solely to a memory array bank, or may refer both to an array bank and its associated access circuitry.
  • the term “request” or “command” may refer solely to a request or command type (e.g., read or write), or may refer also to the associated address to which the request or command is directed.

Abstract

A method is described for interleaving bank and page access to a multibank memory device, such as an SDRAM or SLDRAM. An address detector detects a pending page access, and the associated data transfer request is then stored in a page hit register. A control timing chain includes a rank register queue with a bank access input, a page write input, and a page read input. Comparator circuitry provides bank address comparisons to avoid bank conflicts and to control the timing of insertion of the page hit register contents into the appropriate page write or page read input. While a pending page access request is stored in the page hit register, other pending bank access operations can be initiated. Consequently, bank and page accesses can be interleaved in substantially contiguous command cycles, and data transfer bandwidth is correspondingly improved.

Description

TECHNICAL FIELD
The present invention relates generally to circuitry and protocols associated with operating memory devices, and more particularly to methods for controlling multibank memory devices.
BACKGROUND OF THE INVENTION
FIG. 1 is a simplified functional block diagram of a memory device 200 that represents any of a wide variety of currently available multibank memory devices. The central memory storage unit is a memory array 202 that is arranged in a plurality of banks, with two such banks 204A and 204B shown. The memory array 202 includes a plurality of individual memory elements (not shown) for storing data, with the memory elements commonly arranged in separately addressable rows and columns, as is well known. Those skilled in the art commonly refer to a collectively addressable subset of the array 202 as a “page.” Typically, a single row of memory elements in a bank of the array constitutes a particular page. In FIG. 1, a plurality of pages 206A and 206B are depicted, corresponding with banks 204A and 204B, respectively.
Particular locations within the memory array 202 are addressable by Address signals that external circuitry such as a memory controller (not shown) provides to the memory device 200. The memory controller also provides a plurality of Control or command signals that are used to designate the particular memory access type and/or sequence of memory accesses. As depicted in FIG. 1, a control/address logic circuit 208 receives the Control and Address signals, which may be provided in parallel signal paths, serially, or some suitable combination. The control/address logic circuit 208 then applies a plurality of internal control signals to control the timing and sequence of operations accessing the banks 204A and 204B via access circuits 210A and 210B, respectively. Those skilled in the art will understand that the depicted access circuits 210A and 210B represent a collection of various functional circuit components commonly found in memory devices. Examples include row and column address latch, buffer, and decoder circuits, sense amplifiers and I/O gating circuitry, and other well-known circuits adapted for particular memory device implementations.
Data written to and read from the memory array 202 is transferred from and to the memory controller or other external circuitry via a data I/O circuit 212 and the access circuits 210A and 210B. Those skilled in the art will also understand that the depicted data I/O circuit 212 represents a collection of various functional circuit components adapted to transmit data to or receive data from external circuitry and to correspondingly receive read data from or transmit write data to the array 202 via the access circuits 210A and 210B.
The memory device 200 depicted in FIG. 1 exemplifies multibank memories such as synchronous dynamic random access memories (SDRAMs) and packet-oriented or synchronous-link DRAMs (known as SLDRAMs). SDRAMs, commonly have two array banks, and SLDRAMs commonly have eight array banks. Providing multiple banks improves the average speed with which a sequence of memory operations can be performed. When access to a particular array bank is complete, a “precharge” operation is performed to prepare the corresponding access circuitry for a subsequent data transfer operation with the array bank. The precharge operation requires a certain amount of time for its completion, and therefore limits the speed with which a sequence of memory operations can be performed to a particular array bank. By organizing the memory array to have multiple banks with associated access circuits, the precharge time can, in some instances, be “hidden.” For example, if a first access is to bank 204A and a subsequent access is to bank 204B, precharge operations associated with bank 204A can occur while executing memory access operations to bank 204B.
Successive memory access operations directed to a single bank ordinarily result in precharge time intervals during which memory access operations cannot be performed. However, if operations are directed to the same page in a given bank (a “page hit”), the successive operations can be performed without precharge. Thus, improving data transfer speed requires detecting the existence of such page hits and interleaving multiple bank and page hit access operations to the memory device 200.
SUMMARY OF THE INVENTION
In accordance with the present invention, a method is provided for controlling a multibank memory device. The method includes receiving first, second, and third requests. The first request is applied to the memory and a determination is made as to whether the second request is a page hit. If a page hit, the third request is applied to the memory before the second request. The second request may be temporarily stored or otherwise held, with the second request then being applied to the memory at a determined time following application of the first request.
In one aspect of the invention, a method is provided in connection with a memory controller that receives data transfer requests directed to a multibank memory. The method includes receiving first, second, and third requests, with the second request being directed to a same page as the first request. Execution of the first request is initiated, and the second request is stored. Execution of the third request is then initiated before initiating execution of the second request. The execution of the first request is monitored, and execution of the second request is initiated after execution of the first request has progressed to a predetermined extent. Monitoring the first request may be performed by loading a first address of the first request into a timing chain and successively shifting the first address through a plurality of locations within the timing chain. Execution of the second request may then be initiated after the first address has shifted through a selected one of the timing chain locations. A second address of the second request may then be inserted into the timing chain at the selected location.
In another aspect of the invention, a method is provided in connection with a multibank memory that requires a minimum page time interval between successive registration of commands addressed to the same page in one of the banks. The method includes registering a first command addressed to first page in a first bank. A second command addressed to the first page in the first bank is then held, while a third command addressed to a second bank is registered before elapse of the page time interval. After elapse of the page time interval, the second command is then registered.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a functional block diagram depicting a memory device in accordance with the prior art.
FIG. 2 is a timing diagram depicting SLDRAM operations.
FIG. 3 is a functional block diagram depicting a computer system adapted to perform a method in accordance with an embodiment of the present invention.
FIG. 4 is a functional block diagram depicting a memory controller included in the computer system of FIG. 3.
FIG. 5 is a functional block diagram depicting control timing chain circuitry included in the memory controller of FIG. 4.
FIGS. 6 and 7 are timing diagrams depicting SLDRAM operations in accordance with an embodiment of the present invention.
FIG. 8 is a process flow diagram depicting a method of controlling multibank memory operations in accordance with an embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
The following describes a novel method for controlling operations of a multibank memory, which may be included in a computer system. Certain details are set forth to provide a sufficient understanding of the present invention. However, it will be clear to one skilled in the art that the present invention may be practiced without these details. In other instances, well-known circuits, control signals, timing protocols, and software operations have not been shown in detail in order to avoid unnecessarily obscuring the invention.
FIG. 2 is a timing diagram depicting the operation of an SLDRAM in the event of a page hit. As is known to those skilled in the art, control and address information is provided to the SLDRAM in the form of packets, with each packet including a sequence of packet words registered at respective clock “ticks” (rising or falling edges of a command clock signal). Memory access commands are provided as packets of four control/address words CA0-CA9. The commands are registered at times referenced to the command clock signal CCLK during successive command time intervals of four clock ticks each. Data input to or output from the SLDRAM is in the form of data packets, with each data packet including a sequence of four data words DQ0-DQl7. For purposes of convenient depiction, the data is shown with reference to CCLK, although those skilled in the art understand that data clock signals are used in an SLDRAM.
Referring to FIG. 2, first and second commands are registered during successive ten nanosecond command time intervals. The first registered command is a bank read command addressed to a location in bank0, and the second registered command is a bank read command addressed to a location in bank1. Following the bank read time interval tBR (also known as read latency), data read from the respective banks is then delivered as packets of four data words. FIG. 2 depicts the particular bank read time interval tBR for bank1. Following the bank read command addressed to a location in bank1, the next command depicted is a page read command to bankI (i.e., a page hit). Although precharge of bank1 is not required when a page hit occurs, the different read latencies for bank read operations and for page read operations require a time lapse between registration of the bank read command and the page read command. Following the page read time interval tPR (also known as page read latency), another packet of data words is then delivered from bank1.
After registration of the page read command, successive commands to other banks may then be registered. FIG. 2 depicts a bank read command addressed to a location in bank2, followed by a bank read command addressed to a location in bank3. The data read from banks 2 and 3 is then delivered as corresponding packets of four data words following the associated bank read time intervals. The operations depicted in FIG. 2 show interleaved bank and page accesses without the large time penalties associated with bank precharge operations. However, significant idle time intervals still occur during which memory access commands are not registered and during which the data bus remains idle. Thus, an alternative approach to interleaved bank and page memory accesses can provide still further performance improvements.
FIG. 3 shows a computer system 20 adapted to perform a method in accordance with an embodiment of the present invention. The central processing unit (CPU), such as a microprocessor 22, is coupled with a system controller 26 (also known as corelogic) by a host or processor bus 24 that carries address, data, and control signals therebetween. The system controller 26 includes a memory controller 28 for accessing a main memory 30 via a memory address/control bus 32 and a memory data bus 34. The microprocessor 22 may be any of a wide variety of processors, such as Pentium-type processors manufactured by Intel or other x86-type architecture processors manufactured by AMD, Cyrix, and others. The main memory may include any of a wide variety of multibank DRAMs. Examples include DRAMs manufactured by Micron Technology, Inc., such as SDRAMs, SLDRAMs, etc. If the main memory 30 is populated by SDRAMs, the address/control bus 32 would typically be implemented as separate address and control buses, as is well known by those skilled in the art. If the main memory is populated by SLDRAMs, the address/control bus 32 is then a single bus adapted for transmission of command and address packets, as is well known to those skilled in the art.
The system controller 26 also includes CPU interface circuitry 33 that couples the microprocessor 22 with other components of the system controller. The system controller 26 also includes a cache controller (not shown) for controlling data transfer operations to a cache memory 35 that provides higher speed access to a subset of the information stored in the main memory 30. The cache memory 35 may include any of a wide variety of suitable high-speed memory devices, such as static random access memory (SRAM) modules manufactured by Micron Technology, Inc.
The system controller 26 also functions as a bridge circuit (sometimes called the host bus bridge or North bridge) between the processor bus 24 and a system bus, such as I/O bus 36. The I/O bus 36 may itself be a combination of one or more bus systems with associated interface circuitry (e.g., AGP bus and PCI bus with connected SCSI and ISA bus systems). Multiple I/O devices 38-46 are coupled with the I/O bus 36. Such I/O devices include a data input device 38 (such as a keyboard, mouse, etc.), a data output device 40 (such as a printer), a visual display device 42 (commonly coupled with the system controller 26 via a high-speed PCI or AGP bus), a data storage device 44 (such as a disk drive, tape drive, CD-ROM drive, etc.), and a communications device 46 (such as a modem, LAN interface, etc.). Additionally expansion slots 48 are provided for future accommodation of other I/O devices not selected during the original design of the computer system 20.
FIG. 3 depicts the various I/O devices 38-46 as being coupled with the controller via single, shared I/O bus 36 and an I/O interface 50 integrated within the system controller. However, those skilled in the art will understand that the depicted I/O interface 50 represents one or more I/O interfaces, as appropriate to a particular computer system design. Also, the I/O bus 36 may itself be a multiple bus and bridge network. Those skilled in the art will understand, therefore, that the depiction of FIG. 3 encompasses any of a wide variety of suitable interconnection structures between the I/O devices 38-46 and other components of the computer system 20. Likewise, the computer system 20 could include multiple processors with multiple host bus bridges and multiple memories with associated memory controllers. Therefore, those skilled in the art will understand the particular depiction of FIG. 3 to encompass any of a wide variety of computer system architectures.
FIG. 4 is a functional block diagram depicting portions of the memory controller 28. The memory controller 28 receives a request and associated address from circuitry, such as from the CPU interface 33 or the I/O interface 50 in response to corresponding signals produced by the microprocessor 22 or one of the I/O devices 38-46 (see FIG. 3). Typically, the request is for a memory read or write operation, but may instead be a specialized operation used, for example, during computer system initialization. Each request and associated address is first stored in a request buffer or queue 52. Requests stored in the request queue 52 may then be reorganized or prioritized to optimize data transfer operation speed or other parameters, as is well known to those skilled in the art of multibank memory controller design.
The memory controller 28 includes a DRAM state machine 54 that receives a request and associated address from the request queue 52 and produces the well-known control signal sets and sequences to initiate the corresponding memory access operations. The particular control signal types and protocols of the DRAM state machine 54 vary, depending on the particular multibank memory device types populating the main memory 30 (see FIG. 3). For an SDRAM, example control signals include the row address strobe (RAS), column address strobe (CAS), write enable (WE), and chip select (CS) signals. For an SLDRAM, example control signals include the packet-defined control/address signals that indicate device identification, command code, bank address, row address, and column address values. Details of the various control signals and protocols are well known to those skilled in the art and need not be described herein.
A control timing chain circuit 56 applies a plurality of timing control signals to the DRAM state machine 54. The control timing chain 56 controls the time at which the DRAM state machine 54 registers a request and associated address from the request queue 52. In particular, and as described in detail below, the control timing chain 56 determines whether bank conflicts or bus conflicts exist between pending requests stored in the request queue 52 and requests previously registered in the DRAM state machine 54.
The memory controller 28 also includes page hit detect circuitry 58 coupled with the request queue 52. As depicted, the page hit detect circuitry 58 is coupled with the final ranks of the request queue 52. The page hit detect circuitry 58 includes comparator circuitry for comparing the request addresses stored in these final ranks, as will be understood by those skilled in the art. The page hit detect circuitry 58 produces an input control signal applied to a page hit register 60. In the event a page hit occurs, the input control signal is asserted to enable the page hit register to store the page hit request and associated address. Once the page hit request has been stored in the page hit register 60, other pending requests stored in the request queue 52 may then be registered in the DRAM state machine 54 under control of the control timing chain 56. The control timing chain 56 also produces an output control signal applied to the page hit register 60 to control subsequent provision of the page hit request to the DRAM state machine 54.
FIG. 5 is a functional block diagram that shows the page hit register 60, the request queue 52, and particular details of the control timing chain 56. The control timing chain 56 includes a plurality of rank registers 62, depicted as Rank8-Rank0, which are coupled to form a rank register queue 63. Associated with each of the rank registers 62 is a respective one of a plurality of bank conflict comparators 64, depicted as R8-R0. When a request is registered in the DRAM state machine 54, portions of that request are registered in the Rank8 register. In particular, the Rank8 register stores the bank address as well as information about whether the particular request is a read or write request. With each successive command time period (one clock cycle for an SDRAM or four clock ticks for an SLDRAM), the contents of the rank registers 62 are shifted to a next lower order rank. For example, in the next command time period following initial registration of the request information in the Rank8 register, that information is then shifted to the Rank7 register, and so on, to propagate the request information through the rank register queue 63.
The bank address of a next pending request stored in the request queue 52 is applied to each of the bank conflict comparators 64 at a first comparator input. A second input of each of the bank conflict comparators 64 receives the bank address stored in a corresponding one of the rank registers 62. In this way, the control timing chain 56 determines whether a next pending request stored in the request queue 52 presents a bank conflict with any of the previously registered requests currently being executed by the DRAM state machine 54. Each of the bank conflict comparators 64 produces a comparison output signal to indicate whether such a bank conflict exists. As known to those skilled in the art, a bank conflict occurs when the next pending request is directed to a bank in which operations are currently being performed. Unless the next pending request is a page hit, the control timing chain 56 will not allow its registration until the previously registered conflicting request has cleared the rank register queue 63.
Each of the rank registers 62 outputs a Write or a Read signal indicating the request type associated with the address currently stored in the respective rank register. Such information concerning write or read access is important for determining the existence of bus conflicts, as is well understood by those skilled in the art. For example, a write request following a read request requires an intervening idle time interval for turnaround of the external memory data bus. Similarly, a read request following a write request requires a time interval for turnaround of the internal memory data bus/pipeline. Thus, the control timing chain 56 also includes circuitry (not shown) to account for bus/pipeline turnaround times, as well as to account for bank conflicts as particularly depicted in FIG. 5. The timing of the well-known Write Data and Read Data strobe signals may also be conveniently controlled by the rank register queue 63, as shown in FIG. 5.
As discussed above in connection with FIG. 4, when a page hit is detected, the page hit request is stored in the page hit register 60 for subsequent provision to the DRAM state machine 54 at the appropriate time. FIG. 5 shows the page hit register 60 and the page hit entry points into the rank registers 62. In the particular depiction of FIG. 5, a page hit write request is inserted at the Rank6 register, and a page hit read request is inserted at the Rank5 register, as consistent with the particular page read and write latencies for an SLDRAM. Those skilled in the art will understand that the page hit entry points may vary (as may the number of rank registers included in the rank register queue 63) depending on the timing specifications of particular multibank memory devices being controlled by the memory controller 28.
Page bank conflict comparators 66 compare the bank address of the request stored in the page hit register 60 with the bank address of the Rank7 and Rank6 registers to ensure proper timing of page hit request insertion. In the particular embodiment depicted in FIG. 5, after a bank write request clears the Rank7 register (as indicated by the respective one of the page bank conflict comparators 66), a page hit write request to that bank may then be inserted in the Rank6 register in the next command time period (at which time the bank write request has shifted to the Rank5 register). After a bank read request clears both the Rank7 and Rank6 registers (as indicated by the page bank conflict comparators 66), a page hit read request to that bank may then be inserted in the Rank5 register in the next command time period (at which time the bank read request has shifted to the Rank4 register).
Thus, the control timing chain 56 has separate inputs for bank and page accesses—namely, the inputs to the Rank5 and Rank6 registers being read and write page access inputs 68 and 70, respectively, and the input to the Rank8 register being a bank access input 72. By temporarily storing a page hit request in the page hit register 60 (and later insertion at a page access input 68 or 70 of the control timing chain 56), subsequent requests stored in the request queue 52 may be applied to the DRAM state machine 54 (see FIG. 4) and correspondingly registered in the rank register queue 63 at the bank access input 72.
For example, a first bank write request directed to a first bank is applied to the DRAM state machine 54 and to the bank access input 72 for registration in the Rank8 register of the control timing chain 56. If the next pending request is a page write to the first bank, this request is then stored in the page hit register 60 during the next command time period, and the first bank write request shifts to the Rank7 register. During the next command time period, a second bank write request directed to a second bank can be applied to the DRAM state machine 54 and to the bank access input 72 for registration in the Rank8 register (the first bank write request has now shifted to the Rank6 register). During the next command time period, the first bank write request shifts to the Rank5 register, the second bank write request shifts to the Rank7 register, and the page write request is applied to the DRAM state machine 54 and inserted at the page access input 70 into the Rank6 register (i.e., in between the first and second bank write requests). Thus, the timing advantages associated with a page hit may be exploited without delaying registration of other pending requests to other banks in the multibank memory device.
FIGS. 6 and 7 are timing diagrams that depict operation of an SLDRAM in accordance with an embodiment of the present invention, such as by using the memory controller 28 described above in connection with FIGS. 4 and 5. Requests stored in the request queue 52 are registered as corresponding commands in the SLDRAM, as is well known to those skilled in the art. FIG. 6 depicts a sequence of read operations, and FIG. 7 depicts a sequence of write operations. In each case, operations are directed sequentially to bank0, bank1, bank2, and bank3, with two successive operations directed to bank1 (the second being a page hit).
Referring to FIG. 6, a first command is registered during a first ten nanosecond command time interval, with the first registered command being a bank read command addressed to a location in banko. During the next command time interval, a second command is registered, with the second command being a bank read command addressed to a location in bank1. The next pending request received from the request queue 52 is a page read to bank1 (i.e., a page hit), which is then temporarily stored in the page hit register 60 (see FIGS. 4 and 5). Subsequently, commands addressed to other banks can be successively registered, such as the depicted bank read commands addressed to locations in bank2 and bank3. The page read command is then registered during a command time period determined by the control timing chain 56 (as described above in connection with FIG. 5), consistent with timing specifications for bank read time tBR and page read time tPR. Data read from the various banks then appear on the data bus as successive data packets, including the page hit data from bank1 immediately following the first accessed data from bank1. In contrast to the operations described above in connection with FIG. 2, there is no data bus idle time.
Referring to FIG. 7, a first registered command is a bank write command addressed to a location in bank0. A second registered command is a bank write command addressed to a location in bank1. The next pending request received from the request queue 52 is a page write to bank1 (i.,e., a page hit), which is then temporarily stored in the page hit register 60 (see FIGS. 4 and 5). Subsequently, a command addressed to another bank can be registered, such as the depicted bank write command addressed to a location in bank2. The page write command is then registered during a command time period determined by the control timing chain 56 (as described above), consistent with timing specifications for bank write time tBW and page write time tPW. Other commands can then be registered, such as the depicted bank write command directed to bank3. As with successive read operations, embodiments of the present invention can provide a continuous data stream on the data bus for successive write operations, including a page hit write operation.
FIG. 8 is a process flow diagram depicting a method 100 of operating a multibank memory device in accordance with an embodiment of the present invention. Operations begin upon receipt of a Request at step 102. In step 104, it is determined whether the Request is a page hit. If a page hit, the Request is then stored in step 106. Subsequently, it is determined whether a bus conflict or bank conflict exists in step 108. The bank conflict determination amounts to waiting for the previously issued bank request (to which the stored Request is a page hit) to progress in execution sufficient to then initiate the page hit operations. Once it has been determined that no bank or bus conflicts exist, the Request is initiated and control timing chain insertion occurs in step 110. Operations associated with the method 100 then cease pending receipt of another Request.
If the Request is determined not to be a page hit in step 104, the Request is treated like any other bank access request. The existence of any bus or bank conflicts is determined in step 112. Once it has been determined that no such conflicts exist, the Request is then initiated and control timing chain registration occurs in step 114. Operations associated with the method 100 then cease pending receipt of another Request. Of course, while a page hit request is being processed according to operations 106-110, another bank access request may be processed according to operations 112-114.
A number of advantages are provided by the above-described embodiments of the present invention. FIGS. 6 and 7 show the improved data transfer speeds made possible by an interleaved bank and page hit memory control method in accordance with an embodiment of the present invention. Although much of the discussion above is directed to exemplary SLDRAM protocols and timing parameters, those skilled in the art will readily understand the applicability of the present invention to SDRAMs and other multibank memory devices. Although FIG. 6 shows sequential read operations only, and FIG. 7 shows sequential write operations only, those skilled in the art will also appreciate that data transfer bandwidth is significantly improved when both read and write operations are performed sequentially.
Those skilled in the art will appreciate that methods in accordance with the present invention may be performed by circuits other than those particularly depicted and described in connection with FIGS. 3-5. These figures represent just one of many possible implementations of a multibank memory control method in accordance with the present invention. Likewise, the present invention may be accomplished using process steps other than those particularly depicted and described in connection with FIG. 8.
Those skilled in the art will also understand that each of the circuits whose functions and interconnections are described in connection with FIGS. 3-5 is of a type known in the art. Therefore, one skilled in the art will be readily able to adapt such circuits in the described combination to practice the invention. Particular details of these circuits are not critical to the invention, and a detailed description of the internal circuit operation need not be provided. Similarly, each one of the process steps described in connection with FIG. 8 is of a type well known in the art, and may itself be a sequence of operations that need not be described in detail in order for one skilled in the art to practice the invention.
It will be appreciated that, although specific embodiments of the invention have been described for purposes of illustration, various modifications may be made without deviating from the spirit and scope of the invention. For example, the above-described location of control timing chain page access inputs relative to the bank access input is exemplary, and may well vary depending on particular memory device timing specifications. Those skilled in the art will appreciate that many of the advantages associated with the circuits and processes described above may be provided by other circuit configurations and processes. Indeed, a number of suitable circuit components can be adapted and combined in a variety of circuit topologies to implement a multibank memory control method in accordance with the present invention.
Those skilled in the art will also appreciate that various terms used in the description above are sometimes used with somewhat different, albeit overlapping, meanings. For example, the term “bank” may refer solely to a memory array bank, or may refer both to an array bank and its associated access circuitry. The term “request” or “command” may refer solely to a request or command type (e.g., read or write), or may refer also to the associated address to which the request or command is directed. One skilled in the art will understand, therefore, that terms used in the following claims are properly construed to include any of various well-known meanings. Accordingly, the invention is not limited by the particular disclosure above, but instead the scope of the invention is determined by the following claims.

Claims (28)

What is claimed is:
1. A method of controlling a multibank memory, comprising:
receiving a first request directed to a first bank of the memory;
receiving a second request directed to the first bank;
receiving a third request directed to a second bank of the memory;
determining if the second request is a page hit;
applying the first request to the memory;
if the second request is a page hit, then applying the third request to the memory before applying the second request to the memory; and
if the second request is a page hit, storing the second request to one of a plurality of rank registers, the one of the plurality of rank registers being selected based on at least one of a read latency characteristic or a write latency characteristic of the multibank memory.
2. The method of claim 1, further comprising:
determining a time at which to apply the second request to the memory; and
applying the second request to the memory at the determined time.
3. The method of claim 2 wherein determining the time at which to apply the second request to the memory includes determining when a predetermined time interval has elapsed following the application of the first request to the memory.
4. The method of claim 1, further comprising:
receiving a fourth request directed to a third bank of the memory; and
if the second request is a page hit, then applying the fourth request to the memory before applying the second request to the memory.
5. The method of claim 1 wherein each of the first, second, and third requests is a respective one of first, second, and third read requests.
6. The method of claim 1 wherein each of the first, second, and third requests is a respective one of first, second, and third write requests.
7. A method of controlling a multibank memory, comprising:
receiving a first request, a second request, and a third request;
applying the first request to the memory;
determining if the second request is a page hit; and
if the second request is a page hit, then:
storing the second request to one of a plurality of rank registers, the one of the plurality of rank registers being selected based on at least one of a read latency characteristic or a write latency characteristic of the multibank memory;
determining if the third request creates a bank conflict;
if the third request does not create a bank conflict, then applying the third request to the memory before applying the second request to the memory;
determining if the second request creates a bank conflict; and
when the second request does not create a bank conflict, then applying the second request to the memory.
8. The method of claim 7 wherein determining if the second request creates a bank conflict includes monitoring time elapse following the application of the first request to the memory.
9. The method of claim 7 wherein determining if the third request creates a bank conflict includes comparing an address associated with the third request to an address associated with the first request.
10. The method of claim 7, further comprising:
receiving a fourth request; and
if the second request is a page hit, then:
determining if the fourth request creates a bank conflict; and
if the fourth request does not create a bank conflict, then applying the fourth request to the memory before applying the second request to the memory.
11. The method of claim 7 wherein each of the first, second, and third requests is a respective one of first, second, and third read requests.
12. The method of claim 7 wherein each of the first, second, and third requests is a respective one of first, second, and third write requests.
13. In a memory controller operable to receive data transfer requests directed to a memory having a plurality of banks, a method of controlling request execution timing, comprising:
receiving a first request directed to a first page in a first of the banks;
receiving a second request directed to the first page in the first bank;
receiving a third request directed to a second of the banks;
initiating execution of the first request;
storing the second request to one of a plurality of rank registers, the one of the plurality of rank registers being selected based on at least one of a read latency characteristic or a write latency characteristic of the memory;
initiating execution of the third request prior to initiating execution of the second request;
monitoring the execution of the first request; and
initiating execution of the second request after the execution of the first request has progressed to a predetermined extent.
14. The method of claim 13 wherein monitoring the execution of the first request includes loading a first address of the first request into the timing chain and successively shifting the first address through a plurality of locations within the timing chain, and wherein initiating the execution of the second request includes loading a second address of the second request into the timing chain after the first address has shifted through a selected one of the locations.
15. The method of claim 13 wherein monitoring the execution of the first request includes:
loading a first address of the first request into the timing chain; and
successively moving the first address through a plurality of locations in the timing chain;
and wherein initiating the execution of the second request includes:
monitoring the movement of the first address through a selected one of the locations in the timing chain; and
loading a second address of the second request into the selected location of the timing chain after the first address has moved therethrough.
16. The method of claim 13 wherein:
initiating execution of the first request includes loading a first address of the first request into the timing chain and successively moving the first address through a plurality of locations in the timing chain;
initiating execution of the second request includes loading a second address of the second request into the timing chain and successively moving the second address through the timing chain; and
initiating the execution of the third request includes loading a third address of the third request into the timing chain and successively moving the third address through the timing chain, the second address being located within the timing chain between the first and third addresses.
17. A method of controlling operations in a memory having a plurality of banks, each having a plurality of pages, the memory operable to register commands and requiring a minimum page time interval between successive registration of commands directed to a same page in one of the banks, the method comprising:
registering a first command addressed to a first one of the pages in a first one of the banks;
holding a second command addressed to the first page in the first bank, the second command being held in one of a plurality of rank registers, the one of the plurality of rank registers being selected based on at least one of a read latency characteristic or a write latency characteristic of the memory;
registering a third command addressed to a second of the banks prior to elapse of the page time interval; and
registering the second command after elapse of the page time interval.
18. The method of claim 17, further comprising registering a fourth command addressed to a third of the banks prior to elapse of the page time interval.
19. The method of claim 17 wherein each of the first, second, and third commands is a respective one of first, second, and third read commands.
20. The method of claim 17 wherein each of the first, second, and third commands is a respective one of first, second, and third write commands.
21. A method of controlling a multibank memory, comprising:
receiving a first request directed to a first bank of the memory;
receiving a second request directed to the first bank;
determining if the second request is a page hit; and
if the second request is a page hit, storing the second request to one of a plurality of rank registers, the one of the plurality of rank registers being selected based on at least one of a read latency characteristic or a write latency characteristic of the multibank memory.
22. The method of claim 21 wherein the step of storing the second request to one of a plurality of rank registers comprises storing the second request to one of a plurality of rank registers of a control timing circuit.
23. The method of claim 21 wherein the step of the second request is a write page hit, and wherein storing the second request to one of a plurality of rank registers comprises storing the second request to one of a plurality of rank registers, the one of the plurality of rank registers being selected based on a write latency characteristic of the multibank memory.
24. The method of claim 21 wherein the second request is a read page hit, and wherein the step of storing the second request to one of a plurality of rank registers comprises storing the second request to one of a plurality of rank registers, the one of the plurality of rank registers being selected based on a read latency characteristic of the multibank memory.
25. The method of claim 21, further comprising:
receiving a third request directed to a second bank of the memory; and
if the second request is a page hit, then applying the third request to the memory before applying the second request to the memory.
26. The method of claim 21, further comprising determining a time at which to apply the second request to the memory and applying the second request to the memory at the determined time.
27. The method of claim 26 wherein the step of determining the time at which to apply the second request to the memory includes determining when a predetermined time interval has elapsed following the application of the first request to the memory.
28. The method of claim 25, further comprising:
receiving a fourth request directed to a third bank of the memory; and
if the second request is a page hit, then applying the fourth request to the memory before applying the second request to the memory.
US09/221,210 1998-12-23 1998-12-23 Method for controlling out of order accessing to a multibank memory Expired - Lifetime US6389520B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/221,210 US6389520B2 (en) 1998-12-23 1998-12-23 Method for controlling out of order accessing to a multibank memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/221,210 US6389520B2 (en) 1998-12-23 1998-12-23 Method for controlling out of order accessing to a multibank memory

Publications (2)

Publication Number Publication Date
US20020004880A1 US20020004880A1 (en) 2002-01-10
US6389520B2 true US6389520B2 (en) 2002-05-14

Family

ID=22826842

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/221,210 Expired - Lifetime US6389520B2 (en) 1998-12-23 1998-12-23 Method for controlling out of order accessing to a multibank memory

Country Status (1)

Country Link
US (1) US6389520B2 (en)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542957B2 (en) * 2000-08-21 2003-04-01 Hitachi, Ltd. Memory of controlling page mode access
US6622225B1 (en) * 2000-08-31 2003-09-16 Hewlett-Packard Development Company, L.P. System for minimizing memory bank conflicts in a computer system
US20030189870A1 (en) * 2002-04-05 2003-10-09 Wilcox Jeffrey R. Individual memory page activity timing method and system
US20030223016A1 (en) * 2002-04-12 2003-12-04 Takashi Izawa Image processing apparatus and image processing method
US6715024B1 (en) * 2001-12-31 2004-03-30 Lsi Logic Corporation Multi-bank memory device having a 1:1 state machine-to-memory bank ratio
US20040128428A1 (en) * 2002-12-31 2004-07-01 Intel Corporation Read-write switching method for a memory controller
US20040210730A1 (en) * 2000-08-25 2004-10-21 Stmicroelectronics S.A. Dram control circuit
US20060227651A1 (en) * 2005-04-07 2006-10-12 Hynix Semiconductor Inc. Column Path Circuit
US7167942B1 (en) 2003-06-09 2007-01-23 Marvell International Ltd. Dynamic random access memory controller
US20070047370A1 (en) * 2005-08-02 2007-03-01 Ulrich Hachmann Memory arrangement and method for addressing a memory arrangement
US20070094460A1 (en) * 2000-08-25 2007-04-26 Stmicroelectronics S.A. DRAM control circuit
US20120198194A1 (en) * 2002-08-28 2012-08-02 Round Rock Research, Llc Multi-Bank Memory Accesses Using Posted Writes

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030217223A1 (en) * 2002-05-14 2003-11-20 Infineon Technologies North America Corp. Combined command set
US7183792B2 (en) * 2003-04-01 2007-02-27 Micron Technology, Inc. Method and system for detecting a mode of operation of an integrated circuit, and a memory device including same
JP4416694B2 (en) * 2005-05-12 2010-02-17 株式会社ソニー・コンピュータエンタテインメント Data transfer arbitration device and data transfer arbitration method
US20080162852A1 (en) * 2006-12-28 2008-07-03 Surya Kareenahalli Tier-based memory read/write micro-command scheduler

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5953743A (en) * 1997-03-12 1999-09-14 Micron Electronics, Inc. Method for accelerating memory bandwidth
US6034900A (en) 1998-09-02 2000-03-07 Micron Technology, Inc. Memory device having a relatively wide data bus

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5953743A (en) * 1997-03-12 1999-09-14 Micron Electronics, Inc. Method for accelerating memory bandwidth
US6034900A (en) 1998-09-02 2000-03-07 Micron Technology, Inc. Memory device having a relatively wide data bus

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624238B2 (en) 2000-08-21 2009-11-24 Hitachi Ltd. Memory controller and data processing system
US6542957B2 (en) * 2000-08-21 2003-04-01 Hitachi, Ltd. Memory of controlling page mode access
US6675269B2 (en) 2000-08-21 2004-01-06 Hitachi, Ltd. Semiconductor device with memory controller that controls page mode access
US8024512B2 (en) 2000-08-21 2011-09-20 Renesas Electronics Corporation Memory controller and data processing system
US20040095818A1 (en) * 2000-08-21 2004-05-20 Hitachi, Ltd. Memory controller and data processing system
US7076601B2 (en) 2000-08-21 2006-07-11 Hitachi, Ltd. Memory controller and data processing system
US8255622B2 (en) 2000-08-21 2012-08-28 Renesas Electronics Corporation Memory controller and data processing system
US20070094460A1 (en) * 2000-08-25 2007-04-26 Stmicroelectronics S.A. DRAM control circuit
US7395399B2 (en) * 2000-08-25 2008-07-01 Stmicroelectronics S.A. Control circuit to enable high data rate access to a DRAM with a plurality of areas
US20040210730A1 (en) * 2000-08-25 2004-10-21 Stmicroelectronics S.A. Dram control circuit
US6622225B1 (en) * 2000-08-31 2003-09-16 Hewlett-Packard Development Company, L.P. System for minimizing memory bank conflicts in a computer system
US6715024B1 (en) * 2001-12-31 2004-03-30 Lsi Logic Corporation Multi-bank memory device having a 1:1 state machine-to-memory bank ratio
US6687172B2 (en) * 2002-04-05 2004-02-03 Intel Corporation Individual memory page activity timing method and system
US20030189870A1 (en) * 2002-04-05 2003-10-09 Wilcox Jeffrey R. Individual memory page activity timing method and system
US7209186B2 (en) * 2002-04-12 2007-04-24 Sony Corporation Image processing apparatus and image processing method for high speed real-time processing
US20030223016A1 (en) * 2002-04-12 2003-12-04 Takashi Izawa Image processing apparatus and image processing method
US8687436B2 (en) * 2002-08-28 2014-04-01 Round Rock Research, Llc Increasing efficiency of memory accesses by selectively introducing a relative delay between the time that write addresses are provided to the memory and the time that write data is provided to the memory
US20120198194A1 (en) * 2002-08-28 2012-08-02 Round Rock Research, Llc Multi-Bank Memory Accesses Using Posted Writes
US7093059B2 (en) * 2002-12-31 2006-08-15 Intel Corporation Read-write switching method for a memory controller
US20040128428A1 (en) * 2002-12-31 2004-07-01 Intel Corporation Read-write switching method for a memory controller
KR100865188B1 (en) * 2002-12-31 2008-10-23 인텔 코오퍼레이션 Read-write switching method for a memory controller
US7167942B1 (en) 2003-06-09 2007-01-23 Marvell International Ltd. Dynamic random access memory controller
US9430379B1 (en) 2003-06-09 2016-08-30 Marvell International Ltd. Dynamic random access memory controller
US20090040845A1 (en) * 2005-04-07 2009-02-12 Hynix Semiconductor Inc. Column Path Circuit
US7626885B2 (en) 2005-04-07 2009-12-01 Hynix Semiconductor Inc. Column path circuit
US7428186B2 (en) 2005-04-07 2008-09-23 Hynix Semiconductor Inc. Column path circuit
US20060227651A1 (en) * 2005-04-07 2006-10-12 Hynix Semiconductor Inc. Column Path Circuit
US7366031B2 (en) * 2005-08-02 2008-04-29 Infineon Technologies Ag Memory arrangement and method for addressing a memory
US20070047370A1 (en) * 2005-08-02 2007-03-01 Ulrich Hachmann Memory arrangement and method for addressing a memory arrangement

Also Published As

Publication number Publication date
US20020004880A1 (en) 2002-01-10

Similar Documents

Publication Publication Date Title
US6026464A (en) Memory control system and method utilizing distributed memory controllers for multibank memory
US6389520B2 (en) Method for controlling out of order accessing to a multibank memory
US9904489B2 (en) Processing systems, memory controllers and methods for controlling memory access operations
US6611885B2 (en) Method and apparatus for synchronous data transfers in a memory device with selectable data or address paths
US6631440B2 (en) Method and apparatus for scheduling memory calibrations based on transactions
US5889714A (en) Adaptive precharge management for synchronous DRAM
US6587918B1 (en) Method for controlling refresh of a multibank memory device
US7017022B2 (en) Processing memory requests in a pipelined memory controller
US6295586B1 (en) Queue based memory controller
US6564284B2 (en) Apparatus for controlling a multibank memory device
US6298413B1 (en) Apparatus for controlling refresh of a multibank memory device
US5022004A (en) Method and apparatus for DRAM memory performance enhancement
US6640292B1 (en) System and method for controlling retire buffer operation in a memory system
US6266734B1 (en) Reducing memory latency by not performing bank conflict checks on idle banks
US6549991B1 (en) Pipelined SDRAM memory controller to optimize bus utilization
US6125425A (en) Memory controller performing a mid transaction refresh and handling a suspend signal
US6442645B1 (en) Pre-decode conditional command generation for reduced SDRAM cycle latency
JPH06324940A (en) Method and device for controlling memory

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICRON ELECTRONICS, INC., IDAHO

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CHRISTENSON, LEONARD E.;REEL/FRAME:009865/0452

Effective date: 19990303

AS Assignment

Owner name: MICRON TECHNOLOGY, INC., IOWA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICRON ELECTRONICS, INC.;REEL/FRAME:010763/0572

Effective date: 20000317

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT, CALIFORNIA

Free format text: SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038669/0001

Effective date: 20160426

Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGEN

Free format text: SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038669/0001

Effective date: 20160426

AS Assignment

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT, MARYLAND

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038954/0001

Effective date: 20160426

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038954/0001

Effective date: 20160426

AS Assignment

Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT, CALIFORNIA

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:043079/0001

Effective date: 20160426

Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGEN

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:043079/0001

Effective date: 20160426

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT, ILLINOIS

Free format text: SECURITY INTEREST;ASSIGNORS:MICRON TECHNOLOGY, INC.;MICRON SEMICONDUCTOR PRODUCTS, INC.;REEL/FRAME:047540/0001

Effective date: 20180703

Owner name: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT, IL

Free format text: SECURITY INTEREST;ASSIGNORS:MICRON TECHNOLOGY, INC.;MICRON SEMICONDUCTOR PRODUCTS, INC.;REEL/FRAME:047540/0001

Effective date: 20180703

AS Assignment

Owner name: MICRON TECHNOLOGY, INC., IDAHO

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT;REEL/FRAME:047243/0001

Effective date: 20180629

AS Assignment

Owner name: MICRON TECHNOLOGY, INC., IDAHO

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT;REEL/FRAME:050937/0001

Effective date: 20190731

AS Assignment

Owner name: MICRON TECHNOLOGY, INC., IDAHO

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT;REEL/FRAME:051028/0001

Effective date: 20190731

Owner name: MICRON SEMICONDUCTOR PRODUCTS, INC., IDAHO

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT;REEL/FRAME:051028/0001

Effective date: 20190731