Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
GB2256293A - Memory decode system - Google Patents
[go: Go Back, main page]

GB2256293A - Memory decode system - Google Patents

Memory decode system Download PDF

Info

Publication number
GB2256293A
GB2256293A GB9111002A GB9111002A GB2256293A GB 2256293 A GB2256293 A GB 2256293A GB 9111002 A GB9111002 A GB 9111002A GB 9111002 A GB9111002 A GB 9111002A GB 2256293 A GB2256293 A GB 2256293A
Authority
GB
United Kingdom
Prior art keywords
address
memory
interleave
bits
bank
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.)
Withdrawn
Application number
GB9111002A
Other versions
GB9111002D0 (en
Inventor
Keith Alexander Ford
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.)
Research Machines PLC
Original Assignee
Research Machines PLC
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
Application filed by Research Machines PLC filed Critical Research Machines PLC
Priority to GB9111002A priority Critical patent/GB2256293A/en
Publication of GB9111002D0 publication Critical patent/GB9111002D0/en
Publication of GB2256293A publication Critical patent/GB2256293A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)

Abstract

A memory decode system for a computer having a plurality of memory banks each (A, B, C, D) of which is made up of a number of memory pages (1A, 2A, 1B, 2B, 1C, 2C, 1D, 2D), the system comprising a decoder module for each memory bank (A, B; C, D), each decoder module being arranged to receive memory addresses from the computer address bus and control signals and being configured to provide signals to the respective memory bank (A, B, C, D): a SELECT signal for indicating when the address supplied to the decoder module is within the address range of the respective memory bank (A, B, C, D), a HIT signal for indicating when the address supplied to the decoder module is within the address range of the memory page currently selected, and a row address signal for identifying which memory address within a given memory page is to be accessed, so as to cause the respective memory bank (A, B, C, D) to form part of a set of memory banks which are interleaved with each other on a page-by-page basis. <IMAGE>

Description

MEMORY DECODE SYSTEM This invention relates to a memory decode system for a computer having a plurality of memory banks and more particularly for a digital computer incorporating a memory sub-system based on dynamic random access memory (DRAM) chips using page-mode interleaving of the DRAM for performance improvements.
Most modern microcomputers use i-1RAiM for ttseir ] in memory system and consequently require a DRAIN; corltroller. It is comiion for the DRAM controller to support several banks of DRAM where a bank comprises n DRAMa (where n in an integer), each comprising w words of b bits, and wired so as to behave as a single DRAM of w words of (n x b) bits. it is also common to provide the option of populating, i.e. using, only some of the total number of banks which can be supported.Thus, for example, a controller unsigned to support up to eight banks of DRAM may be installed in a system in which fewer than 8 banks of DRAM are actually present.
In this latter case, it is usual for the DRAM controller to provide a mechanism whereby the address decoding for the banks of DRAM can be arranged so as to provide the system with a single, contiguous block of DRAM, normally-starting at address 0.
Figure 1 illustrates a memory sub-system comprising four banks (A, B, C, D) of memory in which each bank comprises two DRAMa (iA and 2A, iB and 2B, iC and 2C, iD and 2D, respectively) each comprising 256K 8-bit words but wired together (as indicated by dotted lines) to behave as a single 256K 16-bit word DRAM. Each memory location in a DRAM has a row address and a column address. Thus, for a 256K, (=2let) word DRAM there are 512 (=29) column addresses and 5i2 (=23) row addresses each of which comprises 9 address bits. Conventionally, the most significant bits of an address of a memory location in such a memory bank form the row address and the least significant bits form the column address.Thus, in this case, for each 18 bit address, the 9 most significant bits provide the row address and the 9 least significant bits provide the column address.
Also, as is conventional, all the addresses having the same row address are said to comprise a memory 'page'. Each page in this case thus comprises 0.5K (=23) memory locations. In the example illustrated in Figure 1, the first page of the first memory bank (A) comprises all memory locations have the row address 000000000, i.e. 0.5K 8-bit memory locations in each of the two DRAMs (lA and 2A) which are wired together to act as 0.5K 16-bit memory locations.
It is common for DRAM controllers to operate the DRAM in the, so-called, page mode whereby the mosl significant bits of the address which form the row address are strobed into the DRAM by a ow address strobe (RAS) which is then held active. A sequence of accesses to various addresses within the selected memory page may then be made by simply at robing the column addresses witil a column address strobe (CAS).Such page mode accesses are considerably juster than standard DRAING accesses and so tend, on average, to reduce the memory system access and cycle times. if an attempt is made to access a meuiory location which is not in the selected page then a full DRAM cycle must he run, to strobe both a new row address and a new column address.
When multiple banks of DRAM are provided, it is possible for each of their RAS lines to be driven independently so that if, for example, four banks of DRAM are present as in Figure i then at any one time up to four pages of DRAM (one from each bank) can be selected for page mode accesses. As most memory accesses are to an address close to that of the previous access, it is advantageous if these selected pages are close to each other in address space. This is commonly achieved by arranging the DRAM banks to be interleaved on a page-by-page basis. So, for example, in a system with four banks of DRAM of equal size arranged in a page-mode interleaved fashion, each bank provides every fourth memory page within the address space.This is illustrated in Figure 2 which shows the 0.5K memory pages of each of the four 256K word memory banks (A, B, C, D) and the manner in which the pages from the memory banks are interleaved with each other to provide an interleaved set of 1024K (=ism) words.
Such page mode interleaving has generally only been possible using a set of 2 (where n is an integer) identical memory banks. Also, DRAM controllers supporting such page mode interleaving are normally only able to support it between specified pairs, quartets etc. of banks with a very limited number of combinations possible.A typical DRAM controller may, for instance, only allow the following configurations: ä) Bank 0 populated only with no interleave b) Banks 0 and i populated with identical DRAMs with a 2-way interleave c) Banks 2 and 3 populateu with identical DRAlAIs with a 2-way interleave d) Banks 0 nu i pupulaLed with iaunbicai liRAMs with a 2-way interleave and banks 2 and 3 populated with identical DRAMs (not necessarily the same as for banks 0 and i) with a 2-way interleave Thus, 4-way interleaving i not provided for and the choice of banks pairs for 2-way interleaving is restricted and the only permitted non-interleaved configuration is with only bank 0 populated.
According to the invention, there is provided a memory decode system for a computer having a plurality of memory banks each of which is made up of a number of memory pages, the system comprising a decoder module for each memory bank, each decoder module being arranged to receive memory addresses from the computer address bus and control signals and being arranged to provide address and control signals to the respective memory bank in accordance with a predetermined configuration so as to cause the respective memory bank to form part of a set of memory banks which are interleaved with each other on a page-by-page basis.
Preferred features of the invention will be apparent from the following description and from the subsidiary claims. of the specification.
The invention will now be further described, merely by way of example, with reference to the accompanying drawings, in which: Figure 1 illustrates a conventional arrangement of a memory sub-system comprises 'a plurality of memory banks (4 in this case); Figure 2 illustrates the manner in which memory pages of four memory banks can be interleaved on a page-by-page basis to form an interleaved set of memory banks; Figure 3 shows a block diagram of a memory decode system according to an embodiment of the invention; Figures 4, 5 and 6 illustrate address partitioning for three different memory sub-systems; and Figures 7 and 8 illustrate the manner in which memory pages in two different arrangements of memory banks of different sizes can be iterleaved on a page-by-page basis to form an interleaved set of memory banks The memory decode system described herein provides a modular DRAM address decoder which allows a plurality of DRAM banks, including banks of different sizes, to be mapped so as to generate a single, contiguous address space whilst also allowing the maximum possible flexibility for page mode interleaving and, in some cases, the interleaving of banks of differing sizes.
The system is readily expandable to support an arbitrary number of DRAM banks with minimum added complexity and can be implementated in an application specific integrated circuit (ASIC).
The following description relates to a DRAM decoder designed to pY ovioe a memory system of up to 32M (=29'5) ;6-òit words so the memory system is fed with a total of 25 address lines (numbered i to 25, with i the least significant). Up to 8 banks of DRAM (each of 256K, 1M or 4M words) are supported with up to 8-way page mode interleaving being possible. It will, however, become clear that the system could readily be modified to support any number of DRAM banks with any degree of interleaving.
As shown in Figure 3, the decode system comprises a plurality of decoder modules (3A, 3B, 3C, etc), one for each DRAM bank (not shown), all the decoder modules being identical to each other.
Each decoder module is provided with the following inputs: an address bus (ADDR(25:i)) which provides a 25-bit signal indicating which of the 32M (=2-') memory locations is to be accessed.
a row address strobe (RAS) signal, a control signal which causes the address bits representing a row address to be output by the module. As tne la:'gest size memory bank the system is designed to support Is a 4.VI (-2- # ) word panic (which requires 22 address bits), the row address may comprise. up to 11 addt ebs bits.
data bus and control signals for conliguring the module as required (as described further below).
Each decoder module is arranged to provide the following outputs: a SELECT signal which indicates whether or not the address provided to the module is within the address range of the respective DRAM.
A HIT signal which indicates whether or not the address provided to the module is within the memory page currently selected by the RAS signal.
the row address (ROW (11:1)) of the memory location to be accessed.
interleaved memory banks can be thought of as being combined into a number of 'interleave sets'. Each interleave set comprises 2~7 (n being an integer) memory banks of the same size which are arranged to behave as a single, combined memory bank. Thus, in the example illustrated in Figure 2, the interleave set comprises 4 (22) memory banks (A, B, C, D) each of 256K words arranged to behave as a single 1M word memory bank.
An interleave set may be defined by the following characteristics: Bank Size The Bank Size indicates the size, in words, of the DRAM banks making up the interleave set, i.e. 256K, iM or 4M in the example being considered.
Interleave Factor The interleave Factor indicates the repeat factor of the set, i.e.
whether a page from a particular memory bank forms every second, fourth, eight etc., page in the interleaved set. Or, put more generally, it is the number of memory addresses between the addresses of successive pages irom a partIcular bank within the interleave set divided by the number of addresses within each page.In the example shown in Figure 2, a page from each memory bank forms every fourth page of the interleave set so the Interleave Factor is 4 (=22). Or, looked at in the more general way, successive pages of a given bank are spaced at intervals of 27 addresses within the interleave set, and each page comprises 0.5K address, so the Interleave Factor is 2/0.5 = 4. It will be seen that for an interleave set of 2" memory banks of equal size, the Interleave Factor is also 2".
Interleave Members An interleave set is made up of interleaved pages from a plurality of memory banks and the order in which the pages from the different banks are interleaved is the same throughout the interleave set. An interleave set with an Interleave-Factor of 2" comprises interleaved pages from 2 memory banks and the pages from each bank can be regarded as being numbered in dependence upon the order in which they appear in the interleave set. The Interleave Members of an interleave set of 2" memory banks can thus be numbered 0 to 2n - 1. In the arrangement shown in Figure 2, the four interleave Members are numbered 0, i, 2 and 3 (=22-i), respectively.
Set Base Address An interleave set of 2" memory banks of equal size provides a contiguous block of memory of a size (S) which is 2 times the size of each individual memory bank within the interleave set and the block of memory start at a Base Address. The Set Base Address need not necessarily be 0 but is generally a multiple of the set size (S) and hence a multiple of the Bank Size (BS).
Each decoder module is programmed with four parameters representing these four characteristics in order to describe its operation. The four parameters, together with a Bank Enable bit are stored in an encoded form in a software accessible configuration register within the decoder module.
The Bank Size parameter (BS) is provided in encoded form as follows: 0 for 256K words, 1 tor 1M worms and 2 for *2. worms.
,~he Interleave reactor parameter (IF) is provided in encloded form as follows: 0 for no interleave, 1 for an Interleave Factor of 2, 2 for an Interleave Factor of 4 and 3 for an Interleave Factor of 8 (i.e. for a set comprising 2" banks of equal size, IF=n).
The Interleave Vember parameter (IM) is provided as a number in the range of O to (2IF-i), ie. for a set with an interleave factor parameter (IF) of 2, the Interleave Member parameters for the four members of the set are 0, i, 2 and 3.
The Set Base address parameter (SB) indicates the base address of the interleave set and is expressed as a number of units of the smallest bank size. Thus, in the arrangement being considered, in which the total address space supported is 32M and the smallest DRAM bank size is 256K words, the largest value required for SB is given by (32M/256k) - i = i27. The SB parameter is thus given by a value of up to 7 bits (127 = 2# - i).
It will therefore be seen that any system of 2" DRAM banks of equal size can be configured to form an interleave set by setting their BS parameters at 0, i, or 2 as appropriate, setting the IF parameters to the value n, setting the IM parameters of the individual banks to the values 0, 1, 2n-i and setting all the SB parameters to the starting address desired for the interleave set.
Any arbitrary collection of DRAM banks can therefore be configured to form a contiguous block of memory starting at address 0 in the manner described aoove using the following algorithm: Step (1) For each memory bank in turn, determine (and program the encoder accordingly) the Bank Size parameter, i.e. O, 1, 2 or 3.
Step (2) Fur each Bank Size represented, count the number of banks of that size and form them into the minimum possible number of interleave seis (each set comprising 28n members, i.e. i, 2, 4 or 8 members etc).
Step (3) For each interleave set, calculate the size of the set, i.e.
the Bank Size times the Interleave Factor.
Step (4) Sort the interleave sets in order of set size.
Step (5) Map the largest set to address 0, i.e. set its Base Address as -0, map the next largest set immediately above the first set, i.e. so its Base Address equals the size of the first set, etc.
As an example, consider a system comprising four 256K DRAM banks. Using the above algorithm, the following steps are carried out: Step i: Each memory bank is a 256K bank so eacla of the encoders is programmed with the Bank Size parameter (BS) = 0.
Step 2: Four 256K memory banks can be formed into a single interleave set of four members.
Step 3: The size of the interleave set is Bank Size (=256k) times the Interleave Factor (4 way interleave), so the size (S) of the set is 256K x 4 = IM.
Step 4: There is only one interleave set so it is the largest set.
Step 5: The interleave set is mapped with a Base Address of 0.
The above description explains how the configuration of each encoder module is programmed. The following description will explain how, once configured, the decoder module provides the output signals (HIT, SELECT and the ROW address) in response to the input signals (RAS and the 25 bit address).
To generate the SELECT, HIT and ROW signals, the 25 bit address signal must first be divided into four fields.
The column address field within the address signal is not used by the decoder module since the smallest unit of address space of interest to the decoder is a single DRAM page. As explained above, the column address field starts at the least signficant address bit (ADDER1) and its size is dependent on lhe size of the memory banks (and thus on the Bank Size parameter). if the Bank Size is 22 words, each page of the bank comprises 2" words so there are n column address bits. In the arrangement being considered, the Bank Size varies from 256K C=2##) words to 4M (=222) words so that the column address field will vary from 9 bits to 11 bits in width.
The next address field is the interleave member field and is used to determine which member of an interleave set should be enabled at the current address. This field begins at the end of the column address field and so, in the arrangement being considered, starts the 10th, 11th or 12th address bit depending on the size of the column address field. The size of the interleave member field depends on the value of the Interleave Factor which in the arrangement under consideration varies from 0 to 8 (=2'-') and so requires between 0 and 3 bits.
The third address field is the row address field and starts immediately after the interleave member field. In the arrangement being considered, it starts anywhere between address bits iO to 15, depending on the size of the column address field (9 to li bits) and the interleave member field (0 to 3 bits). The size of the row address field is the same as that of the column address field, i.e. 9 to 11 bits, and so the top address bit of this field is in the range 18 to 25.
The final field, the Set Base Address field, comprises the remaining, high order address bits and this requires from 0 to 7 bits as discussed above.
Two examples of this partitioning of the address field are illustrated in Figures 4 and 5. Figure 4 shows the situation for eight banks of 4M word DRAMs configured for 8 way interleave and Figure 5 shows the situation for a single non-interleaved 256K word bank. These two examples represent the two extreme cases. Figure 6 shows the situation for another example in this case four banks of 2M words DRAM configured for a 4-way interleave.
having divided the 25 bit address field in this way, the manner in which the output signals of the encoder module are generated will now be described.
Generation of tne row address signal (ROW) In the simplest case of the arrangement being considered, the row address (ROW (11:1)) for the respective memory bank may be generated by means of a simple, 1 bit wide multiplexer selecting one of 6 possible sets of row address bits from the ADDR bus (the row address can start at bit 10, ii, i2, i3, 14 or 15, i.e. 6 possibilities). The address bit ADDR(a) which provides the row address bit ROW (r) is determined by the following formula: a = r + 9 + IF + BS where a is the number of the address bit, r is the number of the row address bit and IF and BS are the Interleave Factor and Bank Size parameters discussed above.
Thus, for the example illustrated in Figure 5 in which IF and BS are 3 and 2, respectively, a = r + 9 + 3 + 2 = r + 14 so row address bits 1 to 11 are provided by address bits 15 to 25.
Some logic reduction can be achieved by noting that the order in which row address bits ROW (1) to ROW(9) are connected to the DRAM address lines is unimportant as these are provided for all of the memory sizes supported.
However, row address bits ROW(10) and ROW(11) are important since these are only connected for the larger DRAM sizes (1M and 4M). As will be appreciated from Figures 4, 5 and 6, in the arrangement under consideration, address bits ADDR(15) to ADDR(18 > are always connected to address lines within the range ROW (1) to ROW(9). By re-arranging the order of the ROW (n) signals to the DRAM, these ADDR(n) lines can always be connected to ROW(1) to ROW (4), thus avoiding the need for multiplexers to generate these row address bits and so reducing Lhe width of the multiplexer required from ii bits to 7 bits.
SimiLar technique, can bt: uhec to reduce Lise number of ways of the multiplexer four the other 'ROW(n) linea. ii0e multiplexer needs to be able to switch the row address between 6 states corresponding to row addresses starting at address bits iO, li, 12, i3, 14 and 15 as discussed above.As all these result in address bits 15 to 18 being connected to row address oits in the lance i to 9, address bits 15 to 18 can be permanently connected to provide three of the row address bits 1 to 9. In the first three cases, audress bits 13 and i4 will always form part of the row address and in the other three cases, address bits i6 and 17 will always form part of the row address. So, row bits 5 and 6 can be provided by address bits 13 and i4 in the first three cases and by address bits 16 and i7 in the other three cases.
There are, of course, many different (and equally good) combinations for assigning address bits as row address bits.
Generation of the SELECT signal The SELECT signal indicates whether the address supplied to the decoder module is within the address range of the respective memory bank. The address range for a memory bank forming part of an interleave set comprises a series of bands of address ranges corresponding to the pages the bank provides for the interleave set. in the example illustrated in Figure 2, for instance, the address range of the memory bank A comprises the series of address bands OK to 0.5K, 2K to 2.5K, 4K to 4.5K etc. It will therefore be seen that an address falls within such an address range if the Set Base Address field of the address matches the Set Base Address field of the configuration register and the Interleave Member field of the address matches the Interleave Member value specified in the configuration register.
Comparison of these fields with the data stored in the configuration register may be performed using a special equality comparator in which each pair of data bits also has a 'mask' bit associated with it so a match is considered to occur if either the two data bits match each other or if the mask bit is active.
Comparison of the Set Base Address is thus made by comparing the top 7 bits of the input address with the Set Base field of the configuration register using a 7-bit wide comparator of the type described above. The 7-bit mask input is used to mask out the n least signficant bits from the comparison, where n is given by the formula: n = lr + (2 x BS) Thus, for a non-interleaved 256K word bank (lr=O, BS=O), n is 0 and all the address bits (19 to 25 as in Figure 4) are taken into account in the comparison.At the other extreme, for a 4M word bank part of an 8-way interleave (IF=3, BS=2), n=7 and all the address bits are ignored (i.e. all 7 mask bits are active) since no address bits are used to provide the Set Base Address parameter (see Figure 5).
The Interleave Member comparison is performed using a similar 5 bit wide comparator. The address inputs to the comparator are fed with address bits ADDR(;O) to ADDRCi4) which are guaranteed to include the interleave member field (see Figures 4, 5 and 6). The configuration register input is generated from the Interleave Member field shifted left by BS places (i.e.
0, 1 or 2 places) and the mask input is used to mask the BS least signficant bits and the (5 - BS - IF) most significant bits of the comparison. Thus, for the Figure 4 example, the configuration register input is generated from the address bits 10 to i4 shifted left by BS (=O) places, and so from the address bits iO to 14, and the mask input masks the BS (=0) least significant bits and the (5 - BS - IF) = 5 - 0 - 0 = .5 most signficant bits so all 5 address bits 10 to 14 are masked (since in this example no address bits are required for the interleave member field).
Similarly, for the example shown in Figure 5, the configuration register input is generated from the address bits 10 to i4 shifted left by BS (=2) place, and so from the address bits 12 to 14, and the mask input masks the BS (=2) least significant bits (bits 10 and 11) and the 5 - BS - IF = 5 - 2 - 3 = 0 most signficant bits, so all three address bits 12 to 14 are used in the comparison (corresponding to the interleave member field shown in Figure 5).
Generation of tne hIT signal The HIT signal indicates whether the address supplied to the decoder module is within the address range of the memory page currently being addressed.
This occurs if the RAS line for the decoder is active and the bits of the address under test representing the row address thereof match the values the corresponoing bits had at the time the RAS signal was asserted.
To achieve this a latch is required to store the value of the high order address bits at the time when the RAS signal was asserted. This is implemented by means of a 16-bit latch whose data inputs are connected to the ADDR(iO) to ADDR(25) signals (the lower order address signals 0 to 9 are guarante#ed to be column address bits and can therefore be ignored) and which is open (transparent) while RAS is inactive and closed when RAS is active. The output of this latch is compared with the corresponding input address bits, with address bit ADDa(iO) being ignored for a iM and address bits ADDR(iO) and ADDR(11) being ignored for a 4M word bank. If there is a match and the RAS line is asserted, then the HIT signal is driven active.
The description so far has related only to the interleaving of a number (2") of banks of equal size. However, there are some cases in which, using this modular approach, combinations of banks of different sizes can be interleaved.
The simplest such case is a system comprising four banks (B, C, D, E) of 256K words each and one bank (A) of IM words giving a total of SM words of memory. If the IM word bank (A) is set as interleave member 0 of a 2-way interleave set with base address 0, and two (B and C) of the 256K banks are set to be members 2 and 3 of a 4-way interleave set based at 0, while the remaining two 256K banks (A and E) are set to be members 2 and 3 of a 4 way interleave set based at address 1M, the overall effect is to produce a single 2M word interleave set based at address O as illustrated in Figure 7.
A similar technique can be used to interleave 3 banks (A, X, C) of 1M words with 4 bsn's CD, E, F, C) of 256K words to form a single 4M interleave set.
In this case the three iM banks (A, B, C) are arranged as members 0, 1 and 2 of a 4-way interleave set with a base address at 0, two of the 256K banks CD and E) are saL as members 6 and 7 of an 8-way interleave set with a base address at 0, and the other two 256K banks (F and C) are set as members 6 and 7 of an eight way interleave set with above address at 2M (=2048K). This case is illustrated in Figure 8.
A similar technique can be used if the 256K banks are replaced by iM banks, the IM banks replaced by 4M banks and all the addresses multiplied by 4.
One disadvantage of the modular approach described above in which each of the memory banks has its own, totally independent, decoder module is that it is possible to program two or more DRAM banks to share the same area of address space. This is clearly highly undesirable as. it could cause bus clashes between the selected banks of DRAM. This problem, however, is readily overcome by installing, in the logic (not described herein) which generates the DRAM control signals, a circuit which detects the simultaneous activation of two or more bank SELECT or HIT signals and, if this occurs, inhibits the generation of the column address strobe (CAS) to all banks of DRAM.
A DRAM controller can be implemented in two significantly different ways using the address decode system described above using ASIC technology.
In a first arrangement, a single chip may be built which incorporates a number of decoder modules (e.g. 8) together with the control logic necessary to generate DRAM address and control signals. A multiplexer is also provided to select the ROW address from whichever decoder module is generating an active SELECT signal to provide the DRAM row address. This approach results in a DRAM controller chip which, although it has very flexible control over DRAM interleaving, still only supports a fixed, maximum number of banks of DRAM in the same way as conventional memory decode systems.
A second arrangement is to integrate a single bank decoder module, together with an address multiplexer to generate a multiplexed row/column address, and the control logic necessary to generate the control signals for a single DRAM bank, on a Cilip. clilo chip is titus. a contdined DRAM controller for a single bank of viAìv - although it can still be used to cause the DRAM bank to appear as a member of an interleaved set of banks. With such an arrangement there is no reason (except for the fan-out of the signals being input to the DRAM controllers) why the total memory system should not be extended to an arbitrarily large number of DRAM banks (although the maximum interleave factor is still pre-determined by the design of the decoder module).
The memory decode system described above provides a flexible, modular means for arranging multiple banks of DRAMs of varying sizes to be interleaved on a page-by-page basis to provide a contiguous address space to assist in maximising the performance of the memory sub-system.

Claims (11)

1. A memory decode system for a computer having a plurality of memory banks each of which is made up of a number of memory pages, the system comprising a decoder module for each memory bank, each decoder module being arranged to receive memory addresses from the computer address bus and control signals and being arranged to provide address and control signals to the respective memory bank in accordance with a predetermined configuration so as to cause the respective memory bank to form part of a set of memory banks which are interleaved with each other on a page-by-page basis.
2. A system as claimed in claim i in which each decoder module is arranged to provide the following signals to the respective memory bank: a SELECT signal for indicating when the address supplied to the decoder module is within the address range of the respective memory bank, a HIT signal for indicating when the address supplied to the decoder module is within the address range of the memory page currently selected and a row address signal for identifying which memory address within a given memory page is to be accessed.
3. A system as claimed in claim 2 in which each decoder module is arranged to define the respective memory bank's part in the interleaved set by means of the following parameters: a Bank Size parameter (BS) representing the size, in words, of the respective memory bank; an Interleave Factor parameter (IF) representing the repeat factor of the interleave set defined by the number of. memory addresses between the addresses of successive pages from the respective memory bank within the set divided by the number of addresses making up a page of the memory bank; an Interleave Member parameter (IM) representing the order in which pages of the respective memory banks are interleaved within the set; and a Set Base Address parameter (BA) representing the base address of the interleave set.
4. A system as claimed in claim 3 in which each module is arranged to define the respective memory bank's part in an interleaved set of 2" memory banks (n being. an integer) with the respective parameters being defined as follows: the Bank Size parameter (BS) is set as 0, i, 2 ... etc. depending on the size w of the respective memory bank in words, e.g. if w is 256K, iM, 412 ... etc.
the Interleave Factor parameter (IF) is set as n.
the Interleave Member parameter (IM) is set as 0, 1, 2, 3 ... etc.
depending whether pages of the respective memory bank forms every first, second, third, fourth ... etc. page of the interleaved set.
the Set Base Address parameter (boa) is set as N when the base address of the interleave set is Nw (where N is an integer).
5. A system as claimed in claim 4 which is designed to support a memory sub-system of up to 2M words (where M is an integer) and so requires a memory address of M bits and in which each decoder module is arranged to partition the memory address into the following fields: a column address field comprising b bits, where b is an integer and the respective memory bank comprises 22b words; an interleave member field whose size, in bits, is equal to the value of the Interleave Factor parameter (IF); a row address field comprising b bits; and a set base address field comprising up to s bits where s is the number of bits required to give the value (2M/wl) - 1 in binary, where wl is the size of the smallest memory bank supported by the system, wherein C2b + IF T s) 6 M.
6. A system as claimed in claim 5 in which each decoder module comprises a multiplexer connected to receive the address signal and arranged to generate the row address signal in dependence upon the values of b, IF and BS.
7. A system as claimed in claim 5 or 6 in which each decoder module comprises comparators arranged to generate the SELECT signal when a match between the interleave member field of the address and the value represented by the Interleave Factor parameter (IF) and a match between the set base address field of the address and the Set Base Address parameter (BA) is detected.
8. A system as claimed in claim 5, 6 or 7 in which each decoder module comprises a comparator arranged to generate the HIT signal when a match between all bits of the address under test, apart from the b column address bits, with the corresponding bits of the current address is detected.
9. A system as claimed in any preceding claim implemented on a single chip which comprises a plurality of decoder modules, control logic for generating the memory address and control signals and a multiplexer for connecting the SELECT signals from the decoder modules to the memory banks.
10. A system as claimed in any of claims i to 8 in which a single decoder module together with an address multiplexer for generating a multiplexed row/column address and control logic for generating control signals for a single memory bank is implemented on a chip.
11. Any novel feature or combination of features disclosed herein.
i2. A memory decode system for a computer having a plurality of memory banks each of which is made up of a number of memory pages, the system comprising a decoder module for each memory oank, eacn aecoder module oeing arranged to receive memory addresses from the computer address bus and control signais and being arranged to provide address and control signals to the respective memory bank in accoraance with a predetermined configuration so as to cause the respective memory bank to form part of a set of memory banks which are interleaved with each other on a page-by-page basis.
11. A memory decoder system for a computer substantially as hereinbefore described with reference to the accompanying drawings.
12. Any novel feature or combination of features disclosed herein.
Amendments to the claims have been filed as follows i. A memory decode system for a. computer having a plurality of memory banks each of which is made up of a number of memory pages, the system comprising a decoder module for each memory bank, each decoder module being arranged to receive memory addresses from the computer address bus and control signals and being configured to provide the following signals to the respective memory bank: a SELECT signal for indicating when the address supplied to the decoder module is within the address range of the respective memory bank, a HIT signal for indicating when the address supplied to the decoder module is within the address range of the memory page currently selected and a row address signal for identifying which memory address within a given memory page is to be accessed so as to cause the respective memory bank to form part of a set of memory banks which are interleaved with each other on a page-by-page basis.
2. A system as claimed in claim i in which each decoder module is arranged to define the respective memory bank's part in the interleaved set by means of the following parameters: a Bank Size parameter (BS) representing the size, in words, of the respective memory bank; an Interleave Factor parameter (IF) representing the repeat factor of the interleave set defined by the number of memory addresses between the addresses of successive pages from the respective memory bank within the set divided by the number of addresses mating up a page of the memory bank; an Interleave Member parameter (IM) representing the order in which pages of the respective memory banks are interleaved within the set; and a Set Base Address parameter (BA) representing the base address of the interleave set.
3. A system as ciaimea in claim 2 in which each module is arranged to define the respective memory bank's part in an interleaved set of 2" memory banks (n being an integer) with the respective parameters being defineo as follows: the Bank Size parameter (BS) is set as 0, i, 2 ... etc. depending on the size w of the respective memory bank in words, e.g. if w is 256K, 1M, 4M ... etc.
the Interleave Factor parameter (IF) is set as n.
the zIterieave Member parameter (iM) is set as 0, i, 2, 3 ... etc.
depending whether pages of the respective memory bank forms every first, second, third, fourth ... etc. page of the interleaved set.
the Set 3ase Address parameter (BA) is set as N when the base address of tile interleave set is Nw (where N is an integer).
4. A system as claimed in claim 3 which is designed to support a memory sub-system of up to 2m words (where M is an integer) and so requires a memory address of M bits and in which each decoder module is arranged to partition the memory address into the following fields: a column address field comprising b bits, where b is an integer and the respective memory bank comprises 2## words; an interleave member field whose size, in bits, is equal to the value of the Interleave Factor parameter (IF); a row address field comprising b bits; and a set oase address field comprising up to s bits where s is the number of bits required to give the value (2n/wl) - 1 in binary, where w, is the size of the smallest memory bank supported by the system, wherein C2b + iF + s) C M.
5. A system as claimed in claim 4 in wnicn each decoder module comprises a multiplexer connected to receive the address signal and arranged to generate the row address signal in dependence upon the values of b, IF and BS.
6. A system as claimed in claim 4 or 5 in which each decoder module comprises comparators arranged to generate the SELECT signal when a match between the interleave member field of the address and the value represented by the Interleave Factor parameter (IF) and a match between the set base address field of the undress and the Set Base Address parameter (BA) is detected.
7. A system as claimed in claim 4, 5 or 6 in which each decoder module comprises a comparator arranged to generate the HIT signal when a match between all bits of the address under test, apart from the o column address bits, with the corresponding bits of the current address is detected.
8. A system as claimed in any preceding claim implemented on a single chp which comprises a plurality of decoder modules, control logic for generating the memory address and control signals and a multiplexer for connecting the SELECT signals from the decoder modules to the memory banks.
9. A system as claimed in any of claims i to 7 in which a single decoder module together with an address multiplexer for generating a multiplexed row/column address and control logic for generating control signals for a single memory oank is implemented on a chip.
iO. A memory decoder system for a computer substantially as hereinbefore described with reference to the accompanying drawings.
GB9111002A 1991-05-21 1991-05-21 Memory decode system Withdrawn GB2256293A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GB9111002A GB2256293A (en) 1991-05-21 1991-05-21 Memory decode system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB9111002A GB2256293A (en) 1991-05-21 1991-05-21 Memory decode system

Publications (2)

Publication Number Publication Date
GB9111002D0 GB9111002D0 (en) 1991-07-10
GB2256293A true GB2256293A (en) 1992-12-02

Family

ID=10695383

Family Applications (1)

Application Number Title Priority Date Filing Date
GB9111002A Withdrawn GB2256293A (en) 1991-05-21 1991-05-21 Memory decode system

Country Status (1)

Country Link
GB (1) GB2256293A (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0613088A1 (en) * 1993-02-24 1994-08-31 Digital Equipment Corporation Method of memory interleaving and memory systems interleaved thereby
WO1996037841A1 (en) * 1995-05-26 1996-11-28 National Semiconductor Corporation Dram controller that reduces the time required to process memory requests
WO2001038985A2 (en) 1999-11-24 2001-05-31 Koninklijke Philips Electronics N.V. Arrangement and method for accessing data in a virtual memory arrangement
EP1191445A3 (en) * 2000-09-20 2004-05-12 Broadcom Corporation Memory controller with programmable configuration
GB2495533A (en) * 2011-10-13 2013-04-17 St Microelectronics Res & Dev Distributing buffer data evenly across different memory devices
US12487961B2 (en) 2023-04-12 2025-12-02 Hamilton Sundstrand Corporation Scalable and modular bus controller including page memory PLD architecture
US12602023B2 (en) 2023-03-23 2026-04-14 Goodrich Actuation Systems Limited Non-standard bus controller-based programmable logic device (PLD) architecture for interconnecting multiple bus controllers and increased numbers of PLD modules

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4740911A (en) * 1984-10-12 1988-04-26 Elxsi International Dynamically controlled interleaving

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4740911A (en) * 1984-10-12 1988-04-26 Elxsi International Dynamically controlled interleaving

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0613088A1 (en) * 1993-02-24 1994-08-31 Digital Equipment Corporation Method of memory interleaving and memory systems interleaved thereby
US5652861A (en) * 1993-02-24 1997-07-29 Digital Equipment Corporation System for interleaving memory modules and banks
WO1996037841A1 (en) * 1995-05-26 1996-11-28 National Semiconductor Corporation Dram controller that reduces the time required to process memory requests
US6782466B1 (en) 1999-11-24 2004-08-24 Koninklijke Philips Electronics N.V. Arrangement and method for accessing data in a virtual memory arrangement
WO2001038985A3 (en) * 1999-11-24 2001-11-15 Koninkl Philips Electronics Nv Arrangement and method for accessing data in a virtual memory arrangement
WO2001038985A2 (en) 1999-11-24 2001-05-31 Koninklijke Philips Electronics N.V. Arrangement and method for accessing data in a virtual memory arrangement
KR100822617B1 (en) * 1999-11-24 2008-04-21 엔엑스피 비 브이 Computer systems
EP1191445A3 (en) * 2000-09-20 2004-05-12 Broadcom Corporation Memory controller with programmable configuration
US6877076B1 (en) 2000-09-20 2005-04-05 Broadcom Corporation Memory controller with programmable configuration
GB2495533A (en) * 2011-10-13 2013-04-17 St Microelectronics Res & Dev Distributing buffer data evenly across different memory devices
US9164903B2 (en) 2011-10-13 2015-10-20 Stmicroelectronics (Research & Development) Limited Memory manager
US12602023B2 (en) 2023-03-23 2026-04-14 Goodrich Actuation Systems Limited Non-standard bus controller-based programmable logic device (PLD) architecture for interconnecting multiple bus controllers and increased numbers of PLD modules
US12487961B2 (en) 2023-04-12 2025-12-02 Hamilton Sundstrand Corporation Scalable and modular bus controller including page memory PLD architecture

Also Published As

Publication number Publication date
GB9111002D0 (en) 1991-07-10

Similar Documents

Publication Publication Date Title
US4860252A (en) Self-adaptive computer memory address allocation system
US5396608A (en) Method and apparatus for accessing variable length words in a memory array
US4831522A (en) Circuit and method for page addressing read only memory
WO1996039664A1 (en) Memory controller for both interleaved and non-interleaved memory
KR970071283A (en) Cache Memory and How It Works
US6233665B1 (en) Mapping shared DRAM address bits by accessing data memory in page mode cache status memory in word mode
US6131146A (en) Interleave memory control apparatus and method
US5737572A (en) Bank selection logic for memory controllers
EP0629952B1 (en) Variable interleaving level memory and related configuration unit
US5179686A (en) Method for automatically detecting the size of a memory by performing a memory warp operation
US4800535A (en) Interleaved memory addressing system and method using a parity signal
KR980004059A (en) Data processing apparatus and register address conversion method
GB2256293A (en) Memory decode system
US4318175A (en) Addressing means for random access memory system
JPH04503275A (en) Memory data preservation system
JPS6231440B2 (en)
KR970071281A (en) Interleaved Cache Memory and Its Operation Method and Data Processing System
KR950014551B1 (en) Seniconductor memory device and method for controlling its output
US5757817A (en) Memory controller having automatic RAM detection
US4266285A (en) Row selection circuits for memory circuits
KR950014176B1 (en) Memory controller and data processing system
US6016537A (en) Method and apparatus for address multiplexing to support variable DRAM sizes
EP1050819A1 (en) Computer memory access
US5577221A (en) Method and device for expanding ROM capacity
US4782488A (en) Digital signal scrambler

Legal Events

Date Code Title Description
WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)