EP1191445A2

Memory controller with programmable configuration

Abstract

A memory controller provides programmable flexibility, via one or more configuration registers, for the configuration of the memory. The memory may be optimized for a given application by programming the configuration registers. For example, in one embodiment, the portion of the address of a memory transaction used to select a storage location for access in response to the memory transaction may be programmable. In an implementation designed for DRAM, a first portion may be programmably selected to form the row address and a second portion may be programmable selected to form the column address. Additional embodiments may further include programmable selection of the portion of the address used to select a bank. Still further, interleave modes among memory sections assigned to different chip selects and among two or more channels to memory may be programmable, in some implementations. Furthermore, the portion of the address used to select between interleaved memory sections or interleaved channels may be programmable. One particular implementation may include all of the above programmable features, which may provide a high degree of flexibility in optimizing the memory system.

EP1191445A2, drawing sheet 1
Sheet 1 of 10

Term

Term ended

Projected expiry passed 20 September 2021, 5 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

34 claims: 13 independent, 21 dependent

  1. 1
    A memory controller for coupling to a memory and for coupling to receive an address for access to the memory, the memory controller programmable with an indication of which portion of said address is used to select a storage location in said memory for access in response to said address, and wherein said memory controller is configured to extract said portion of said address for transmission to said memory responsive to said indication.
  2. 6
    The memory controller as recited.in any of claims 3 to 5 wherein said memory is further arranged into banks, and wherein said portion of said address includes a third portion used to select one of said banks, and wherein said indication identifies said third portion.
  3. 8
    The memory controller as recited in any preceding claim wherein said memory is arranged into two or more memory sections, and wherein said memory controller is configured to provide a different select signal to each of said memory sections to select said memory sections to respond to said address, and wherein said memory controller is further programmable with an interleave mode for said memory sections.
  4. 12
    The memory controller as recited in any of claims 8 to 11 wherein said portion of said address further includes a fourth portion of said address which is used to select one of said interleaved memory sections, and wherein said indication identifies said fourth portion.
  5. 14
    The memory controller as recited in any of claims 8 to 13 wherein said memory controller is further programmable with a different page mode policy for each of said memory sections.
  6. 15
    The memory controller as recited in any preceding claim wherein said memory is arranged in two or more independent memory sections, and wherein said memory controller is configured to provide a separate channel to each of said memory sections, and wherein said memory controller is further programmable with a channel interleave indication indicating whether or not one or more of said channels are interleaved.
  7. 17
    A method comprising:programming a memory controller with an indication of which portion of an address is used to select a storage location in a memory for access in response to said address;receiving said address in said memory controller;and extracting said portion of said address responsive to said indication.
  8. 21
    The method as recited in any of claims 18 to 20 wherein said memory is further arranged into banks, and wherein said portion of said address includes a third portion used to select one of said banks, and wherein said indication identifies said third portion, the method further comprising transmitting said third portion separate from said first portion and said second portion.
  9. 23
    The method as recited in any of claims 17 to 22 wherein said memory is arranged into two or more memory sections, the method further comprising:providing a different select signal to each of said memory sections to select said memory sections to respond to said address;and programming said memory controller with an interleave mode for said memory sections.
  10. 27
    The method as recited in any of claims 23 to 26 wherein said portion of said address further includes a fourth portion of said address which is used to select one of said interleaved memory sections, and wherein said indication identifies said fourth portion.
  11. 29
    The method as recited in any of claims 23 to 28 further comprising programming said memory controller with a different page mode policy for each of said memory sections.
  12. 30
    The method as recited in any of claims 17 to 29 wherein said memory is arranged in two or more independent memory sections, the method further comprising:providing a separate channel to each of said memory sections;and programming said memorv controller with a channel interleave indication indicating whether or not one or more of said channels are interleaved.
  13. 31
    The method as recited in claim 31 wherein said channel interleave indication further indicates a fifth portion of said address used to select one of said channels if one or more of said channels are interleaved.
  14. 32
    A circuit defining mechanism comprising one or more databases representing the memory controller as recited in any of claims 1-16.