ADAPTIVE MEMORY CONTROLLER

Abstract: The operating mode of a memory controller for a random access memory having multiplexed address lines is selected to provide the highest operating speed for the addresses being presented to the memory. Each address supplied to the memory includes a row address and a column address. A page fault detector detects a page fault when the row address changes on successive transfers to the memory and detects a non-page fault when the row address remains the same on successive transfers to the memory. The operating mode is automatically selected in response to the difference between the number of page faults and the number of non-page faults to provide the highest operating speed. When the difference between the number of page faults and the number of non-page faults is equal to or greater than an upper threshold value, the memory mode is set to non-page mode. When the difference between the number of page faults and the number of non-page faults is equal to or less than a lower threshold value, the memory mode is set to page mode.

Description: ADAPTIVE MEMORY CONTROLLER Field of the Invention This invention relates to methods and apparatus for controlling computer memories which have multiplexed addresses and, more particularly, to methods and apparatus for automatically selecting a mode of operation which provides the highest operating speed for the addresses being presented to the memory. Background of the Invention Semiconductor memory devices can be classified as having a multiplexed address or a non-multiplexed address. In non-multiplexed address memories, the entire address is presented at one time, and the data transfer begins when the address has stabilized. In multiplexed address memories, a first portion of the address is presented to the memory and is strobed into the memory. Then, a second address portion is presented. When the second address portion is presented, the data transfer can take place. An example of a multiplexed address memory is a dynamic random access memory (DRAM) . The industry currently offers three types of DRAM's. They are: "page mode", "nibble mode" and "static column mode" memories. In the case of a DRAM, the first address portion is a row address, and the second address portion is a column address. When a row address strobe (RAS) is asserted, the DRAM stores the row address internally. The column address is then presented to the memory and may be strobed in page mode or nibble mode DRAM's. Data transfer begins at the strobing of the column address. In the case of static column DRAM's, a column address strobe (CAS) is interpreted as a chip select rather than a strobe. This configuration allows the DRAM to temporarily function as a static random access memory as long as the row address remains constant. Each data transfer begins at the instant the new column address stabilizes. The DRAM accesses each new location defined by the column address in real time. Multiplexed address memories are typically smaller, have more storage capacity per unit area, consume less power, run cooler and cost less than equivalent non-multiplexed address memories. A disadvantage of multiplexed address memories is that time is consumed by serially strobing the first address portion and the second address portion into the memory in a two-step process. Thus, multiplexed address memories are typically slower and more complex than non-multiplexed address memories. One known technique for increasing the operating speed of multiplexed address memories is to operate in a page mode during memory access. In the page mode, a selected row address is strobed into the memory. Then, several locations having the same row address but different column addresses are sequentially accessed. In the page mode, the two-step address process is required only for the first memory location, and the following locations with the same row address are each accessed in a single step. The page mode operates efficiently when the software frequently accesses multiple locations having the same row address. However, when the row address changes, the row address strobe (RAS) must be deasserted and then reasserted, thereby causing a time penalty. When the row address changes frequently in the page mode, a reduction in operating speed occurs. It is a general object of the present invention to provide improved methods and apparatus for controlling multiplexed address memories. It is another object of the present invention to provide methods and apparatus for controlling multiplexed address memories wherein the operating mode is automatically selected to provide the highest operating speed. It is a further object of the present invention to provide methods and apparatus for high speed operation of multiplexed address memories. It is yet another object of the present invention to provide an adaptive memory controller for automatically selecting page mode or non-page mode, depending on a differential between page faults and non-page faults. Summary of the Invention According to the present invention, these and other objects and advantages are achieved in methods and apparatus for controlling a random access memory having multiplexed address lines. A first address portion and a second address portion of an address are sequentially applied to the multiplexed address lines. Apparatus in accordance with the invention comprises means for sequentially supplying addresses for accessing the memory, each address including a first address portion and a second address portion, means for detecting a page fault when the first address portion changes on successive transfers to the memory and for detecting a non-page fault when the first address portion remains the same on successive transfers to the memory, means for determining a difference between the number of page faults and the number of non-page faults during operation of the memory, and means for automatically selecting an operating mode of the memory in response to the difference. The operating mode is selected to provide the highest operating speed for the addresses being presented to the memory. The first address portion typically comprises a row address, and the second address portion typically comprises a column address of the random access memory. The means for detecting a page fault preferably comprises means for storing the first address portion of each address and means for comparing the stored first address portion of the previous cycle with the first address portion of the current cycle, and for providing a page fault signal when the first address portions are different on successive memory transfers. The means for determining the difference between page faults and non-page faults preferably comprises a counter and means for incrementing the counter in response to each page fault and for decrementing the counter in response to each non-page fault. A count value in the counter represents the difference between the number of page faults and the number of non-page faults. The counter preferably has upper and lower count value limits and cannot be incremented above the upper count value limit or decremented below the lower count value limit. The means for automatically selecting the operating mode preferably includes means for operating the memory in a non-page mode when the difference between the number of page faults and the number of non-page faults is equal to or greater than an upper threshold value and for operating the memory in a page mode when the difference is equal to or less than a lower threshold value. In the non-page mode, a row address strobe is applied to the memory at the beginning of each burst or non-burst transfer. In the page mode, a row address strobe is applied to the memory only when a page fault is detected. When the memory is operating in the page mode and the difference between the number of page faults and the number of non-page faults becomes equal to or greater than the upper threshold value, the operating mode is switched to the non-page mode. When the memory is operating in the non-page mode and the difference becomes equal to or less than the lower threshold value, the operating mode is switched to the page mode. When the difference is between the upper and lower threshold values, the operating mode remains the same. The operating mode of the memory automatically adapts to the addresses being supplied by the CPU to provide the highest operating speed. When the row address changes frequently, faster operation is obtained in the non-page mode. When the row address changes infrequently, faster operation is obtained in the page mode. The use of separate upper and lower threshold values reduces the tendency of the memory controller to frequently switch between operating modes. According to a further aspect of the invention, there is provided a method for controlling a random access memory having multiplexed address lines. The method comprises the steps of sequentially supplying addresses for accessing the memory, each address including a first address portion and a second address portion, detecting a page fault when the first address portion changes on successive transfers to the memory and detecting a non-page fault when the first address portion remains the same on successive transfers to the memory, evaluating a difference between the number of page faults and the number of non-page faults during operation of the memory, and automatically selecting an operating mode of the memory in response to the difference to provide the highest operating speed. Brief Description of the Drawings For a better understanding of the present invention, together with other and further objects, advantages and capabilities thereof, reference is made to the accompanying drawings, which are incorporated herein by reference and in which: FIG. 1 is a block diagram of a computer that incorporates an adaptive memory controller in accordance with the present invention; FIG. 2 is a schematic diagram of a preferred embodiment of the page fault detector shown in FIG. l; FIG. 3 is a functional block diagram of the page fault detector shown in FIGS. 1 and 2; FIG. 4 is a flow diagram that illustrates the functions performed by the page fault detector; FIG. 5 is a schematic diagram of a preferred embodiment of the memory controller shown in FIG. 1; FIG. 6a is a timing diagram that illustrates waveforms associated with the memory controller of FIG. 5 for page mode operation; FIG. 6b is a timing diagram that illustrates waveforms associated with the memory controller of FIG. 5 for non-page mode operation; FIG. 7 is a timing diagram that illustrates burst write control timing; FIG. 8 is a schematic diagram of a preferred embodiment of the address multiplexer shown in FIG. l; FIG. 9 is a functional block diagram of part of the address multiplexer of FIG. 8; and FIG. 10 is a timing diagram that illustrates operation of the address multiplexer. Detailed Description of the Invention A block diagram of a computer that incorporates an adaptive memory controller in accordance with the present invention is shown in FIG. 1. A CPU 10 provides address and control signals for accessing a dynamic random access memory (DRAM) 12. A data bus 11 interconnects memory 12 and CPU 10. In the present example, the CPU 10 provides a 32 bit address. Upper address bits on lines 14 are supplied to a memory region decoder 16. The CPU 10 also supplies an address strobe (ADS) signal and a data enable (DEN) signal to the memory region decoder 16. The memory region decoder 16 outputs a local memory (LRAM) signal which indicates that the memory 12 is being accessed by CPU 10. The CPU 10 provides middle address bits on lines 18 and lower address bits on lines 20 to an address multiplexer 22. The memory 12 is of a type which has multiplexed address lines 24. A first address portion is strobed into memory 12 on address lines 24 in a first step. The first address portion is stored internally in memory 12. Then, a second address portion is applied to memory 12 on address lines 24. In the present example, the memory 12 comprises two banks of one megabit by 4 static column decode DRAM devices, such as type HM514402AZ-6. The first address portion constitutes a row address, and the second address portion constitutes a column address. The address multiplexer 22 converts the middle address bits on lines 18 and the lower address bits on lines 20, provided in parallel by CPU 10, to a multiplexed address on lines 24. The multiplexed address includes a row address followed by a column address . Page and non-page modes of applying the multiplexed address to memory 12 are discussed in detail below. Control signals are supplied to the address multiplexer 22 and the memory 12 by a memory controller 30. The memory controller 30 supplies an address select signal to address multiplexer 22. Control signals, including row address strobe (RAS), column address strobe (CAS), output enable and write enable signals, are supplied to memory 12. A refresh timer 34 supplies signals to memory controller 30 for periodic refresh of memory 12. The middle address bits on lines 18, which represent the row address for memory 12, are supplied to a page fault detector 40. The upper address bits on lines 14 and the address strobe ADS are also supplied to page fault detector 40. The page fault detector 40 compares row addresses on successive memory transfers. In the present example, the CPU 10 performs burst transfers of one to four memory locations with the same row address. In this case, the row addresses for successive burst transfers are compared. In general, the CPU 10 may not utilize burst transfers. When burst transfers are not utilized, the row addresses on successive memory access cycles are compared. Thus, row addresses are compared on successive burst or non-burst memory transfers. A page fault is defined as a change in row addresses on successive memory transfers to memory 12. No page fault occurs when the row addresses on successive memory transfers remain the same. Each memory transfer is classified by the page fault detector 40 as either a page fault or a non-page fault. The page fault detector 40 uses the page fault information to generate a page mode signal that automatically selects an operating mode of the memory 12 based on the difference between the number of page faults and the number of non-page faults. The structure and operation of the page fault detector 40 are described in detail below. The address multiplexer 22, page fault detector 40, memory region decoder 16, memory controller 30 and refresh timer 34 together constitute a memory control unit. The page fault detector 40 automatically selects an operating mode of memory 12 to provide the highest speed operation. When the row address supplied by CPU 10 changes infrequently, the page mode provides the highest speed operation. In page mode, the row address and the row address strobe are supplied to memory 12 so as to strobe the row address into memory 12. Then, successive column addresses are supplied to memory 12 on successive cycles without changing the row address. As long as the row address remains fixed, addressing of memory 12 is accomplished in one step per memory location rather than two. The page mode becomes inefficient when the row address changes frequently. When the row address changes in the page mode, it is necessary to deasεert the row address strobe and then reassert the row address strobe, thereby incurring a time penalty. When many page faults occur, the performance of the memory can be reduced by as much as 33%. In the non-page mode, the row address is reasserted on each burst or non-burst memory transfer, whether or not the row address changes. The non-page mode provides highest speed operation when the row address changes frequently. Thus, the page mode is advantageous under some addressing conditions, and the non-page mode is advantageous under other addressing conditions. The frequency with which the row address changes depends on the software being run by CPU 10 and on how the software was compiled. The page fault detector 40 selects the operating mode which provides the highest speed. As a result, the memory control unit adapts during operation to the addresses supplied to it by the CPU 10 for highest speed operation. It should be noted that when a refresh cycle is requested by the refresh timer 34, the row address strobe and the column address strobe must be deasserted in order to perform a refresh cycle. This will terminate the current page mode cycle but will not contribute to modifying the current mode. Refresh occurs relatively infrequently. It should also be noted that when the adaptive memory controller is in page mode, the row address strobe signal will remain asserted until a CPU access causes a page fault or a refresh request occurs. This means that if the CPU suspends accesses to the memory 12 and then resumes accesses without causing a page fault, the row address strobe will remain asserted. Thus, it will be understood that as used herein, the phrase "successive transfers" refers to successive transfers to memory 12 and includes the situation where transfers to memory 12 are interrupted by the CPU 10 accessing another device or another section of memory. A schematic diagram of one suitable implementation in the page fault detector 40 is shown in FIG. 2. The circuit shown in FIG. 2 is implemented as programmable logic array (PAL) devices 46 and 48. The PAL devices 46 and 48 receive the following signals from the CPU: CPU clock (CPUCLKl) address strobe (ADS), address lines (A12 to A22 and A28 to A31) and burst last (BLAST). The output signals from the page fault detector 40 are lower page fault (LPF), upper page fault (UPF) and page mode (PAGE). In the drawings, an "*" after a signal name indicates an active low signal. The page fault detection circuitry is divided between PAL devices 46 and 48. An active lower page fault LPF or upper page fault UPF signal indicates a page fault. Equations which specify the functions performed by PAL devices 46 and 48 are given in attached Appendix A and Appendix B, respectively. In the equations, the following symbols are used: "&" indicates a logical AND; "#" indicates a logical OR; "!" indicates an active low signal; and ":" indicates that the signal changes state on the clock edge. The remaining signals shown in FIG. 2 are intermediate signals which are accessed for test purposes. A functional block diagram of the page fault detector 40 is shown in FIG. 3. A flow diagram that illustrates the functions performed by the page fault detector is shown in FIG. 4. The upper address bits A28 to A31 are input to a local RAM decoder 50. When the address bits A28 to A31 have a bit combination which indicates that the CPU 10 is addressing local memory 12, a gate 52 is enabled. When the local memory 12 is not being accessed, the page fault detector 40 is inactivated. The address strobe ADS, which initiates a burst transfer, is input to gate 52. When the address strobe ADS is active and the local memory 12 is being addressed, the page fault detector circuitry is enabled by the output of gate 52 (step 70 in FIG. 4). The middle address bits A12 to A22 of the address from CPU 10 are supplied to one set of inputs of a comparator 54. The address bits A12 to A22 are also input to a register 56. The contents of register 56 are updated on the trailing edge of the address strobe ADS. Thus, the outputs of register 56, RA12 to RA22, represent address bits A12 to A22 for the previous memory transfer. The register 56 outputs RA12 to RA22 are supplied to the other set of inputs of comparator 54. Comparator 54 thus compares the row address bits A12 to A22 of the current memory transfer with the row address bits RA12 to RA22 of the previous memory transfer (step 72 in FIG. 4). The comparator 54 is enabled only when address strobe ADS is active and the local memory is addressed. The output of comparator 54 is a binary signal which indicates a page fault or no page fault for each memory access cycle. The comparator 54 provides outputs UPF and LPF because the circuitry of comparator 54 is divided between PAL devices 46 and 48. When the current row address A12 to A22 is the same as the previous row address RA12 to RA22, the comparator 54 output indicates no page fault. When the current row address A12 to A22 is different from the previous row address RA12 to RA22, even in a single bit, the comparator 54 output indicates a page fault. The page fault signal is supplied to the memory controller 30 (FIG. 1) and to a page fault counter 60. The page fault counter 60 is clocked by the address strobe ADS signal when the local memory 12 is addressed. The page fault signal from comparator 54 functions as an up/down control of page fault counter 60. The page fault counter 60 is incremented by a page fault signal (step 74 in FIG. 4) and is decremented by a non-page fault signal from comparator 54 (step 76 in FIG. 4). Thus, the count value in page fault counter 60 represents the difference between the number of page faults and the number of non-page faults. The page fault counter 60 preferably has upper and lower count value limits which effectively place upper and lower limits on difference between the number of page faults and the number of non-page faults. In one implementation of the present invention, page fault counter 60 is a three bit counter. The upper count value limit is 7, and the lower count value limit is 0. When the counter 60 contains a count value of 7 and a page fault is received, the count value is not incremented and remains at 7. Similarly, when the count value is 0 and a non-page fault is received, the count value is not decremented and remains at 0. The count value, which represents the difference between the number of page faults and the number of non-page faults, is therefore in a range between 0 and 7 in the above example. The outputs of page fault counter 60, PFCO to PFC2, are input to a mode selector 62. The mode selector 62 determines the operating mode of memory 12 based on the count value in counter 60, as best shown in FIG. 4. The count value in counter 60 is compared by mode selector 62 with upper and lower threshold values. When the count value contained in counter 60 is equal to or less than the lower threshold value, as determined in step 82, the memory 12 mode is set to page mode, as shown in step 84. A relatively low count value indicates a relatively small number of page faults, and operation in the page mode is faster. In the present example, the memory 12 mode is set to page mode when the count value is equal to or less than 2. When the count value in counter 60 is equal to or greater than the upper threshold value, as indicated in step 86, the memory 12 mode is set to non-page mode, as indicated in step 88. A relatively high count value indicates frequent page faults, and operation in the non-page mode is faster. In the present example, the memory 12 mode is set to non-page mode when the count value is equal to or greater than 5. When the count value is between the upper and lower threshold values (between 2 and 5 in the present example) the operating mode of the memory is not changed from its previous operating mode (step 90) . The use of upper and lower threshold values for switching between page mode and non-page mode provides hysteresis which reduces the likelihood of frequent switching between page mode and non-page mode. It will be understood that the parameters of the page fault counter 60 and the mode selector 62 can be varied within the scope of the present invention. Thus, the page fault counter 60 can include any desired number of bits. Furthermore, the upper and lower threshold values used by the mode selector 62 to control switching between page mode and non-page mode can be varied to provide a desired operating characteristic. Increasing the upper threshold value increases the required number of page faults to switch to the non-page mode, whereas decreasing the lower threshold value, increases the number of non-page faults required to switch to the page mode. The spacing between the upper and lower threshold values determines the amount of hysteresis, which in turn controls the frequency of switching between page mode and non-page mode. A schematic diagram of one implementation of the memory controller 30 is shown in FIG. 5. The memory controller 30 includes a PAL device 102 which provides the basic memory control signals, a PAL device 104 for burst write control, a delay generator 106 and a flip-flop 108. The PAL device 102 receives the following signals from the CPU 10: the CPU clock (CPUCLKl), address bit 22 (A22) which selects one of two banks of the local memory 12, byte enable bits (BE0, BE1, BE2 and BE3) a read/write signal (W/R) , burst last (BLAST) and a wait signal (WAIT). In addition, the PAL device 102 receives a local RAM signal (LRAM) from the memory region decoder 16 and upper page fault (UPF) , lower page fault (LPF) and page (PAGE) signals from the page fault detector 40. Outputs to the memory 12 include row address strobes (LRAS0 and LRAS1), column address strobes (LCAS0, LCAS1, LCAS2, and LCAS3) and output enable (LOE) . A ready signal (READY) is supplied to the CPU 10, and a ready signal (RREADY) is provided to the burst write control PAL device 104 and to the address multiplexer 22. A row address strobe (LRASOl), which is asserted when either of the row address strobes LRAS0 or LRAS1 is asserted, is supplied by PAL device 102 to delay generator 106. A refresh request signal (ALREFREQ) is received by PAL device 102 from flip-flop 108, and a refresh cycle signal (LREFCYC) is supplied to flip-flop 108. The PAL device 102 includes a circuit which synchronizes the refresh request from refresh timer 34 and eliminates metastability. The PAL device 104 receives bank select bit A22, read/write control (W/R), ready (RREADY) and a 48 MHz clock signal. The outputs from PAL device 104 include burst write control signals (BSTWRO and BSTWRl) to enable writing in banks 0 and 1, respectively, of the memory 12. The equations which define the functions performed by PAL devices 102 and 104 are set forth in attached Appendix C and Appendix D, respectively. The symbols used in Appendices C and D are described above in connection with Appendices A and B. Waveforms associated with the operation of the memory controller 30 are shown in FIGS. 6A and 6b. A timing diagram for page mode operation is shown in FIG. 6a, and a timing diagram for non-page mode operation is shown in FIG. 6b. In the present example, the CPU 10 is an Intel type 80960CA-25 which accesses memory in bursts of 1 to 4 cycles having the same row address. The burst cycle is initiated by the address strobe ADS and is terminated by the burst last (BLAST) signal. During the burst transfer process, the row address strobe is asserted and the row address is not changed. The burst transfer may be performed in either the page mode or the non-page mode. However, no change of mode occurs during a burst transfer. All mode changes occur between burst transfers. It will be understood that other CPU's which do not employ burst transfers can be utilized in the present invention. In either case, any change of operating mode is made after completion of a transfer. As discussed above, the page mode signal (PAGE) controls the operating mode of memory 12. At the beginning of a burst or non-burst transfer, a decision is made as to the operating mode for this transfer in accordance with the selection process described above. When the system is operating in page mode and a page fault is not detected, the row address strobe RAS is kept asserted. When the system is operating in page mode and a page fault is detected, it is necessary to deassert the row address strobe RAS and then reassert the row address strobe. In this case, a time penalty is incurred. However, when frequent page faults occur, the system automatically switches to the non-page mode as described, above, thereby adapting to the incoming address conditions for highest operating speed. In the non-page mode, the row address strobe RAS is automatically deasserted after each burst or non-burst transfer, whether or not the row address changes. This avoids the time penalty that would be incurred by deasserting and reasserting the row address strobe when a page fault occurs in page mode. The burst write control PAL device 104 divides a 48 MHz input clock by 2 to provide a 24 MHz clock output. The 24 MHz clock output is the clock for the CPU 10. Waveforms associated with the PAL device 104 are shown in FIG. 7. The burst write control signals BSTWRO and BSTWRl are in phase with the 24 HMz clock output of the PAL device 104. The appropriate burst write control signal BSTWRO or BSTWRl is determined by the state of the bank select address bit A22. The PAL device 102 generates a row address strobe LRASOl which is asserted when either of the row address strobes LRASO or LRAS1 is asserted. The delay generator device 106 outputs delayed column select signals LCS15, LCS20 and LCS25, which are delayed with respect to row address strobe LRASOl by 15, 20 and 25 nanoseconds, respectively. The control signals LCS15, LCS20 and LCS25 are used for high speed address multiplexing as described below. The refresh timer 34 can be of conventional design. A refresh request signal is applied to the memory controller 30 through flip-flop 108 as shown in FIG. 5.. A schematic diagram of one implementation of the address multiplexer 22 is shown in FIG. 8. Multiplexers 130 and 132 select row address bits A14 to A21 or column address bits A4 to All and provide multiplexed address outputs SLA2 to SLA9, which are supplied to memory 12. The row address bits or column address bits are selected by delayed column select signal LCS15 applied to the select inputs of multiplexers 130 and 132. In the example described above, the CPU 10 updates the low order column address bits A2 and A3 too slowly. To achieve the desired high speed operation, a special circuit is used to supply the low order address bits to the memory 12. The address multiplexer 22 includes an address multiplexer PAL device 134. The PAL device 134 receives row address bits A12 and A13, column address bits A2 and A3, address strobe ADS, burst last BLAST and WAIT signals from the CPU 10. The ready signal RREADY and the delayed column select signals LCS15, LCS20, and LCS25 from the memory controller 30 are also inputs to the PAL device 13 . Outputs of the PAL device 134 include address bits LAO and RAO, which are combined to form multiplexed address SLAO, and address bits LAI and RAl, which are combined to form multiplexed address SLA1. The equations which define the functions performed by the PAL device 134 are set forth in attached Appendix E. The symbols used in Appendix E are described above in connection with Appendices A and B. A functional block diagram that illustrates the operation of PAL device 134 is shown in FIG. 9. The low order row address bits A12 and A13 are input to a flow through unit 140. The flow through unit 140 is preferably implemented with tri-state gates. When the gate outputs are enabled, the outputs LAO and LAI are the same as inputs A12 and A13, respectively. When the flow through unit 140 is not enabled, the outputs are in a high impedance state. The low order column address bits A2 and A3 are input to a counter 142. The counter 142 has tri-state outputs RAO and RAl which are connected to outputs LAO and LAI, respectively, of flow through unit 140. These outputs are the low order multiplexed address bits SLAO and SLA1 supplied to memory 12. As indicated above, the address strobe ADS indicates the first cycle of a burst transfer. The address strobe ADS is used to load the column address bits A2 and A3 of the first memory location in the burst transfer into counter 142. The counter 142 is then incremented by the clock when the RREADY signal from memory controller 30 is asserted and the WAIT signal from the CPU 10 is deasserted. This provides successive column address bits to memory 12. This circuit provides faster addressing than would be obtained by waiting for the column address bits from the CPU 10. The counter 142 can be used because the CPU column address is always incremented from its initial value during a burst transfer. The incrementing of counter 142 by the ready signal RREADY and the wait signal WAIT continues until the burst transfer is completed, as indicated by the BLAST and WAIT signals. The waveforms of the combined row address strobe LRASOl and the delayed column select signals LCS15, LCS20 and LCS25 are shown in FIG. 10. A row address strobe is applied to memory 12 when LRASOl is asserted. In FIG. 10, all signals are asserted in a logic zero state. As noted above, the delayed column select LCS15 is applied to multiplexers 130 and 132. The row address is available upon assertion of combined row address strobe LRASOl. The row address at the outputs of multiplexers 130 and 132 is strobed into the memory 12 prior to the assertion of LCS15. After a delay of 15 nanoseconds, the column select LCS15 is asserted and the multiplexers 130 and 132 output the column address to memory 12 on multiplexed address lines SLA2 to SLA9. While the column select LCS15 remains asserted, a burst of column addresses is applied to memory 12 on multiplexed address lines SLA2 to SLA9. As discussed above, the tri-state outputs of flow through unit 140 and counter 142 are connected together to supply the low order multiplexed address bits SLAO and SLA1. The outputs of flow through unit 140 and counter 142 are controlled by the delayed column select signals LCS15, LCS20 and LCS25 to insure that only one device is enabled at any instant of time. The column select signals LCS15 and LCS25 are applied through an AND gate 146 to the output enable of flow through unit 140. The column select signal LCS20 is applied to the output enable of counter 142. With this arrangement, the row address bits LAO and LAI stop driving memory 12 when column select LCS15 is asserted at time ^ (see FIG. 10). After a delay of 5 nanoseconds, column select LCS20 is asserted at time T. and the column address bits RAO and RAl start driving memory 12. When column select LCS20 is deasserted at time T_, column address lines RAO and RAl stop driving memory 12. When column select LCS25 is deasserted at time T. , the flow through unit 140 is enabled and row address bits LAO and LAI start driving memory 12. This arrangement insures that the outputs of flow through unit 140 and counter 142 are never enabled at the same time. The technique for adaptive selection of operating mode in accordance with the present invention can be utilized with any memory that requires multiplexed addressing and with any CPU or other address source. The burst transfer mode is not required for implementation of the invention. The technique for selection of operating mode can be utilized to increase the speed of both reading and writing. While there have been shown and described what are at present considered the preferred embodiments of the present invention, it will be obvious to those skilled in the art that various changes and modifications may be made therein without departing from the scope of the invention as defined by the appended claims. APPENDIX A (1 of 3) P22V10 SUBSTITUTE SHEET -APPENDIX A (2 of 3) PIN 1,2,3,4,5; PIN 6,7,8,9,10; PIN 11,13,14; PIN 15,16,17,19; PIN 20,21,22,23; "Power and ground pins: VCC, GND PIN 24,12; "Output structure: RA18,RA17,RA16,RA15,RA14 ,RAl3 ,RA12 ISTYPE 'pos,reg' ; !LPF ISTYPE 'neg,co ' ; A31.0E ISTYPE 'fuse' ; "Symbol definitions: H, ,X,Z = 1,0, .X. , .Z. ; "High, Low, Don't Care, Tri-State C,K,S = .C. , .K. , .P. ; "Clock Pulse Hi, Clock Pulse Low, Set "Assert lower page "fault if registered "address (RA) bit "disagrees with "current address "(A) bit. "Update registered "address bit (RA12) "at end of address "strobe (ADS) only "if CPU is accessing "local RAM (LRAM) . SUBSTITUTE SHEET APPENDIX A (3 of 3) RA13 ADS & A31 & !A30 & !A29 & !A28 "Update registered !ADS "address bit (RA13) !A31 "at end of address A30 "strobe (ADS) only A29 "if CPU is accessing A28 "local RAM (LRAM) . RA14 := ADS A31 & !A30 & iA29 & !A28 "Update registered i IADS "address bit (RA14) !A31 "at end of address A30 "strobe (ADS) only A29 "if CPU is accessing A28 "local RAM (LRAM) . RA15 := ADS t. A31 & !A30 & !A29 & !A28 "Update registered § !ADS "address bit (RA15) !A31 "at end of address A30 "strobe (ADS) only # A29 "if CPU is accessing t A28 "local RAM (LRAM) . RA16 := ADS & A31 & !A30 & !A29 & !A28 "Update registered # !ADΞ "address bit (RA16) !A31 "at end of address A30 "strobe (ADS) only # A29 "if CPU is accessing A28 "local RAM (LRAM) . RA17 ADS & A31 & !A30 & 1A29 & !A28 "Update registered !ADS "address bit (RA17) !A31 "at end of address A30 "strobe (ADS) only A29 "if CPU is accessing A28 "local RAM (LRAM) . RA18 ADS A31 !A30 & !A29 & !A28 "Update registered !ADS "address bit (RA18) !A31 "at end of address A30 "strobe (ADS) only A29 "if CPU is accessing A28 "local RAM (LRAM) . A31.0E = 0; END lpfd SUBSTITUTE SHEET APPENDIX B (2 of 4) PIN 1,2,3,4,5; PIN 6,7,8,9,10; PIN 11,13; PIN 14,15,16,17,18; PIN 19,20,21,22,23; "Power and ground pins: VCC, GND PIN 24,12; "Output structure: RA22 ,RA21,RA20,RA19,PFC2 ,PFC1,PFCO ISTYPE 'poε,reg'; !PAGE, !XDEN ISTYPE 'neg,reg'; !UPF ISTYPE 'neg,com'; "Symbol definitions: H,L,X, Z = 1,0, .X. , .Z. "High, Low, Don't Care, Tri-State C,K,S = .C. , .K. , .P. "Clock Pulse Hi, Clock Pulse Low, Set EQUATIONS UPF ADS A31 A30 !A29 A28 !RA19 A19 "Assert upper page ADS A31 A30 !A29 A28 RA19 !A19 "fault if registered ADS A31 A30 !A29 A28 IRA20 A20 "address (RA) bit ADS A 1 A30 !A29 A28 RA20 !A20 "disagrees with ADS A31 A30 !A29 A28 ■ RA21 A21 "current address ADS A31 A30 !A29 A28 RA21 !A21 "(A) bit. ADS A31 A30 !A29 A28 !RA22 A22 ADS A31 A30 !A29 A28 RA22 !A22; RA19 := ADS & A31 & !A30 & !A29 & !A28 _ A19 "Update registered # IADS •_ RA19 "address bit (RA19) tf !A31 & RA19 "at end of address f A30 & RA19 "strobe (ADS) only i A29 & RA19 "if CPU is accessing p A28 & RA19; "local RAM (LRAM) . RA20 := ADS & A31 & !A30 & !A29 _ !A28 "Update registered # IADS "address bit (RA20) !A31 "at end of address A30 "strobe (ADS) only A29 "if CPU is accessing A28 "local RAM (LRAM) . SUBSTITUTE SHEET APPENDIX B (3 of 4) RA21 := ADS _• A31 & !A30 _ !A29 & !A28 & A21 "Update registered # IADS & RA21 "address bit (RA21) # !A31 & RA21 "at end of address # A30 4 RA21 "strobe (ADS) only f A29 & RA21 "if CPU is accessing # A28 & RA21; "local RAM (LRAM) . RA22 := ADS & A31 & !A30 & 1A29 & !A28 & A22 "Update registered # !ADS & RA22 "address bit (RA22) # 1A31 & RA22 "at end of address # A30 & RA22 "strobe (ADS) only # A29 & RA22 "if CPU is accessing # A28 & RA22; "local RAM (LRAM) . PFCO PFCl : SUBSTITUTE SHEET APPENDIX B (4 of 4) PFC2 := ADS "Increment count "value if a page # ADS "fault condition "exists or decrement # ADS "count value if no "page fault # ADS "condition exists. "NOTE: page fault # ADS "counter will not "inc beyond 7 or dec ADS "beyond 0. # IADS "Hold count value if # "no address strobe "(ADS) or CPU is not # "accessing local RAM "(LRAM) . PAGE := ADS "Assert if page "fault value is # ADS "decremented <= 2 "and deassert if # ADS "page fault value is "incremented >= 5. !ADS "Hold bit value if "no address strobe "(ADS) or CPU is not "accessing local RAM "(LRAM) . !PFCO XDEN "Create external "DEN signal (XDEN) . END upfd SUBSTITUTE SHEET APPENDIX C (1 of 4) SUBSTITUTE SHEET APPENDIX C (2 of 4) ALRCTRL device 'P26CV12' ; "Input pins: CPUCLK, A22, JLRAM, !BEO, !BE1 PIN 1,2,3,4,5; !BE2, !BE3, WR, !BLAST, .WAIT PIN 6,8,9,10,11; 1ALREFREQ, 'LPF, !UPF, .PAGE PIN 12,13,14,28; "Output pins: !LREFCYC, !LREFREQ, !READY, !RREADY, !LRAS1 PIN 15,16,17,18,19; ILRASO, "LRASOl, !LOE, !LCAS3, !LCAS2 PIN 20,22,23,24,25; •LCAS1, !LCASO PIN 26,27; "Power and ground pins: VCC, GND PIN 7,21; "Output structure: !LREFCYC, ILREFREQ, !RREADY, !LRAS1, ILRASO, !LRASOl ISTYPE 'neg,reg'; !LCAS3, ! CAS2, •LCAS1, ! CASO ISTYPE 'neg,reg'; !L0E, !READY ISTYPE 'neg,com'; "Symbol definitions: H,L,X,Z = 1,0, .X. , -Z. "High, Low, Don't Care, Tri-State C,K,S = .C.,.K. , .P. "Clock Pulse Hi, Clock Pulse Low, Set EQUATIONS SUBSTITUTE SHEET APPENDIX C (3 of 4) LRASO LRASl LCASO !LREFCYC & LRASOl & LRAM "SCD cycle start "BURST cycle start "CPU cycle "CPU cycle WAIT LCASO "CPU cycle "REF cycle start "REF (keep set) SUBSTITUTE SHEET APPENDIX C (4 of 4) LCASl := !LREFCYC LRASOl LRAM PAGE ' BE1 "SCD cycle start !LCASl !UPF !LPF # !LREFCYC LRASOl LRAM !PAGE i BE1 "BURST cycle start 1LCASl •LREFCYC LRASOl LRAM •BLAST & LCASl "CPU cycle !LREFCYC LRASOl LRAM ! EADY & LCASl "CPU cycle !LREFCYC LRASOl LRAM WAIT & LCASl "CPU cycle LREFREQ !LRASOl "REF cycle start # LREFCYC & !LRASOl & LCASO; "REF (keep set) LCAS2 !LREFCYC &* LRASOl & LRAM PAGE & BE2 "SCD cycle start & !LCAS2 & 'UPF & !LPF !LREFCYC & LRASOl & LRAM & !PAGE & BE2 "BURST cycle start !LCAS2 !LREFCYC LRASOl LRAM !LREFCYC LRASOl LRAM ! REFCYC LRASOl LRAM LREFREQ !LRASOl # LREFCYC & !LRASOl & LCASO; LCAS3 := .LREFCYC & LRASOl & LRAM i & PAGE & BE3 "SCD cycle start & !LCAS3 & !UPF & !LPF # iLREFCYC LRASOl LRAM & !PAGE & BE3 "BURST cycle start •LCAS3 # !LREFCYC LRASOl LRAM # !LREFCYC LRASOl LRAM # !LREFCYC LRASOl LRAM # LREFREQ & !LRASOl # LREFCYC & !LRASOl & LCASO; LREFCYC := LREFREQ !LRASOl "REF cycle start LREFCYC LCASO; "REF cycle LREFREQ := ALREFREQ; "Eliminates etastability READY !LREFCYC LRASOl & LCASO "CPU cycle !LREFCYC LRASOl & LCASl "CPU cycle # !LREFCYC LRASOl & LCAS2 "CPU cycle # !LREFCYC LRASOl & LCAS3; "CPU cycle RREADY := 'LREFCYC LRASOl LRAM PAGE "SCD cycle start •RREADY !UPF !LPF # !LREFCYC LRASOl LRAM .PAGE "BURST cycle start !RREADY # !LREFCYC LRASOl LRAM !BLAST & RREADY "CPU cycle # !LREFCYC LRASOl LRAM •READY & RREADY "CPU cycle # ! REFCYC LRASOl LRAM WAIT & RREADY; "CPU cycle READY.OE = LRAM; END alrctrl SUBSTITUTE SHEET APPENDIX D (1 of 2) P16R8 SUBSTITUTE SHEET APPENDIX D (2 of 2) BWCTRL device 'P16R8'; "Input pins: CLK48M, A22, WR, ! RREADY, INITCLK PIN 1,2,3,4,9; !0E PIN 11; "Output pins: !BSTWRl, !BSTWRO, CLK24M PIN 15,16,17; "Power and ground pins: VCC, GND PIN 20,10; "Output structure: !BSTWRl, !BSTWRO,CLK24M ISTYPE 'neg,reg'; "Symbol definitions: H f i / X Z • = X r U, * X * •__«• "High, Low, Don't Care, Tri-State "Clock Pulse Hi, Clock Pulse Low, Set EQUATIONS JCLK24M CLK24M & ! INITCLK; "Divide CLK48M by 2 BSTWRO CLK24M & !A22 & WR & RREADY; "Put BSTWRO in phase with CLK24M BSTWRl CLK24M & A22 & WR & RREADY; "Put BSTWRl in phase with CLK24M END bwctrl SUBSTITUTE SHEET APPENDIX E (1 of 2) P16V8R - SUBSTITUTE SHEET APPENDIX E (2 of 2) PIN 1,2,3,4,5; PIN 6,7,8,9,11; PIN 13,14; PIN 12,15,16,19; "Power and ground pins: VCC, GND PIN 20,10; "Output structure: LAI,LAO ISTYPE 'neg,com'; RAl,RAO ISTYPE 'neg,reg'; •LCS15.0E, 1LCS25.0E ISTYPE 'fuse'; "Symbol definitions: H,L,X,Z — 1,0,.X.,.Z.; "High, Low, Don't Care, Tri-State c,κ,s ---* «c.,.κ.,._ .; "Clock Pulse Hi, Clock Pulse Low, Set "Drive A12 for RAS "Drive A13 for RAS & ADS "Load & !ADS & !BLAST & RREADY & !WAIT "Increment & IADS & BLAST "Hold & IADS & !RREADY "Hold & !ADS & WAIT; "Hold !RA1 A3 RAl & RAO - RAl & !RA0 & RAl & RAl & RAl & ADS & WAIT; "Hold LAO.OE LCS15 & !LCS25; "Drive when no RAS LAl.OE LCS15 & !LCS25; "Drive when no RAS !LCS15.0E = 0; "Always an input 1LCS25.0E = 0; "Always an input END IrmuxOl SUBSTITUTE SHEET

Claims: CLAIMS What is claimed is: 1. A method for controlling a random access memory having multiplexed address lines for sequentially receiving a first address portion and a second address portion of an address, comprising the steps of: sequentially supplying addresses for accessing said memory, each address including a first address portion and a second address portion; detecting a page fault when the first address portion changes on successive transfers to said memory and detecting a non-page fault when the first address portion remains the same on successive transfers to said memory; evaluating a difference between the number of page faults and the number of non-page faults during operation of said memory; and automatically selecting an operating mode of said memory in response to said difference to provide the highest operating speed. 2. A method as defined in claim 1 wherein said first address portion comprises a row address portion and wherein the step of detecting a page fault includes comparing row address portions of said address on successive transfers to said memory, a page fault being indicated when said row address portions are different on successive transfers to said memory. 3. A method as defined in claim 2 wherein the step of evaluating said difference includes changing a count value in one direction in response to each page fault and changing said count value in the opposite direction in response to each non-page fault, said count value representing said difference. 4. A method as defined in claim 1 wherein the step of automatically selecting the operating mode includes operating said memory in a non-page mode when said difference is equal to or greater than an upper threshold value and operating said memory in a page mode when said difference is equal to or less than a lower threshold value. 5. A method as defined in claim l wherein the step of automatically selecting the operating mode includes switching to a non-page mode when said memory is operating in a page mode and said difference becomes equal to or greater than an upper threshold value limit, and switching to the page mode when said memory is operating in the non-page mode and said difference becomes equal to or less than a lower threshold value. 6. A method as defined in claim 5 wherein the step of automatically selecting the operating mode includes remaining in the same operating mode when said difference is between said upper and lower threshold values . 7. A method as defined in claim 2 wherein the step of evaluating said difference includes incrementing a count value in response to each page fault and decrementing said count value in response to each non-page fault, said count value representing said difference. 8. A method as defined in claim 7 further including the step of maintaining said count value within upper and lower count value limits. 9. Apparatus for controlling a random access memory having multiplexed address lines for sequentially receiving a first address portion and a second address portion of an address, comprising: means for sequentially supplying addresses for accessing said memory, each address including a first address portion and a second address portion; means for detecting a page fault when the first address portion changes on successive transfers to said memory and for detecting a non-page fault when the first address portion remains the same on successive transfers to said memory; means for determining a difference between the number of page faults and the number of non-page faults during operation of said memory; and means for automatically selecting an operating mode of said memory in response to said difference to provide the highest operating speed. 10. Apparatus as defined in claim 9 wherein said means for detecting a page fault comprises means for storing the first address portion of each address and means for comparing a current first address portion with the previous first address portion and for providing a page fault signal when said first address portions are different on successive transfers to said memory. 11. Apparatus as defined in claim 9 wherein said means for determining a difference includes a counter and means for incrementing said counter in response to each page fault and for decrementing said counter in response to each non-page fault, a count value in said counter representing said difference. 12. Apparatus as defined in claim 11 further including means for maintaining the count value in said counter within upper and lower count value limits . 13. Apparatus as defined in claim 9 wherein said means for automatically selecting the operating mode includes means for operating said memory in a non-page mode when said difference is equal to or greater than an upper threshold value and for operating said memory in a page mode when said difference is equal to or less than a lower threshold value. 14. Apparatus as defined in claim 9 wherein said means for automatically selecting the operating mode includes means for switching to a non-page mode when said memory is operating in a page mode and said difference becomes equal to or greater than an upper threshold value and for switching to the page mode when said memory is operating in the non-page mode and said difference becomes equal to or less than a lower threshold value. 15. Apparatus as defined in claim 14 wherein said means for automatically selecting the operating mode includes means for remaining in the same operating mode when said difference is between said upper and lower threshold values.

Inventors: PARKER THOMAS B, PARKER, THOMAS, B.
Applicants: CABLETRON SYSTEMS INC, CABLETRON SYSTEMS, INC.
Application year: 1993
Main classification: G06F12
IPC codes: G06F12