US5621678A - Programmable memory controller for power and noise reduction - Google Patents
Programmable memory controller for power and noise reduction Download PDFInfo
- Publication number
- US5621678A US5621678A US08/422,237 US42223795A US5621678A US 5621678 A US5621678 A US 5621678A US 42223795 A US42223795 A US 42223795A US 5621678 A US5621678 A US 5621678A
- Authority
- US
- United States
- Prior art keywords
- simm
- connector
- present
- driver
- signals
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4072—Drivers or receivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/02—Arrangements for writing information into, or reading information out from, a digital store with means for avoiding parasitic signals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the invention is related to computer systems and particularly to memory controllers supporting multiple memory configurations.
- Computer systems are usually constructed with main memory subsystems which may be configured with widely variable sizes.
- main memory subsystems which may be configured with widely variable sizes.
- a desktop computer system might be delivered with a main memory capacity of anywhere in the range of 1-Mbyte to 32-Mbyte, or a workstation or file server type of computer might be delivered with a main memory capacity of from 8-Mbyte to 128-Mbyte.
- SIMM Single In-line Memory Module
- This is an industry-standard package format employing pin assignments that are in conformance with the standards for DRAM SIMM modules in accordance with Solid State Products Engineering Council specifications.
- Computer systems using SIMMs provide multiple SIMM slots into which SIMMs of various capacities can be connected, either during manufacturing or during upgrade by an end-user.
- Memory controllers driving industry standard SIMMs derive various standard memory address and control signals for accessing the DRAMs on the SIMMs.
- Memory configurations supporting many SIMMs have very large loading requirements when all SIMM slots are loaded; thus, a memory controller may derive and drive multiple versions of each signal in order to maintain signal integrity and edge rate requirements. It is, however, a common occurrence that, even though many SIMM slots exist in a particular computer system, many of these slots remain empty.
- SIMM single in-line memory module
- a memory controller circuit producing memory address and control signals.
- Drivers are each associated with one of the channels. Each driver accepts as input one of the memory address and control signals, and either drives a buffered memory signal to the associated channel via a corresponding signal line when in an enabled state, or places the signal line in a high impedence state when in a disabled state.
- the drivers associated with the channels of a connector are placed in the high impedence state if it is determined by a processor that no SIMM is present in the connector. More particularly, the drivers associated with one of the channels of the connector are placed in the high impedence state if it is determined by the processor that a single-sided SIMM is present in the connector.
- the memory controller circuit includes memory controllers each associated with at least one channel.
- the memory controllers produce the address and control signals when in an enabled condition, and do not produce the signals when in a disabled condition.
- the memory controllers associated with the channels of a connector are placed in the disabled state if no SIMM is installed in the connector; or, the memory controller associated with one of the channels of the connector is placed in the disabled state if a single sided SIMM is installed in the connector.
- a processor determines whether a SIMM is present in a connector and, if so, whether the SIMM is single or double sided by executing software that checks memory locations associated with each channel to see if DRAMs are present there. If no SIMM is present, or if a single sided SIMM is present, a programmable disabling means is programmed by the processor to disable the drivers and memory controllers associated with the empty channels.
- the programmable disabling means provides driver enable signals coupled to the drivers. When a driver enable signal is asserted, drivers coupled to the driver enable signal are in the enabled state. When a driver enable signal is deasserted, drivers coupled to the driver enable signal are in the disabled state.
- the processor reads SIMM ID bits coupled between the connectors and processor readable register.
- the SIMM ID bits indicate for each connector whether a SIMM is present, and if so, whether it is single or double sided.
- the processor decodes the SIMM ID bits, and then programs the programmable disabling means to disable the drivers and memory controllers associated with the empty channels.
- a decoder can be used to directly decode the SIMM ID bits and assert or deassert the appropriate driver enable signals in response to the decode.
- Buffered memory address and control signals are thereby provided to SIMM connectors in such a way that no unloaded signals are driven during operation, thereby avoiding the disadvantageous effects of driving unloaded signals.
- the additional ability to disable memory controllers also has a number of advantages. First of all, disabling memory controllers associated with empty channels decreases overall power consumption. Secondly, the ability to disable particular memory controllers is especially useful for implementing a "powersaver" mode, wherein the state of a bank of memory is saved to disk. After saving the state of the bank of memory, the memory controller associated with that bank can be disabled according to the principles of the invention, thereby decreasing overall power consumption.
- FIG. 1 is a block diagram of a computer system including a buffer expansion array according to the principles of the invention
- FIG. 2 is a block diagram of an alternate computer system employing an external memory controller
- FIG. 3 is a perspective view of the SIMMs constituting the system memory of FIGS. 1 and 2;
- FIG. 4 is a block diagram of the CPU, buffer expansion array, and system memory of FIG. 1;
- FIG. 5 is a block diagram of the buffer expansion array of FIG. 4;
- FIG. 6 is a schematic representation of the output buffers of FIG. 5;
- FIG. 7(a)-7(d) is a flow diagram of the operation of the type/present controller of FIG. 5;
- FIG. 8 is a block diagram of an alternate embodiment of the buffer expansion array of FIG. 5;
- FIG. 9 is a block diagram of an alternate implementation of the buffer expansion array of FIG. 8;
- FIG. 10 is a schematic representation of additional drivers within the output buffers of FIG. 5;
- FIG. 11 is a flow diagram of operation, additional to the operation represented in FIG. 7;
- FIG. 12 is a block diagram of the CPU, buffer expansion array, memory controller circuit, and system memory of FIG. 2;
- FIG. 13 is a block diagram of the buffer expansion array of FIG. 12;
- FIG. 14 is a schematic representation of the output buffers of FIG. 13;
- FIG. 15(a)-15(h) is a flow diagram of the operation of the type/present controller of FIG. 13;
- FIG. 16 is a is a block diagram of an alternate embodiment of the buffer expansion array of FIG. 12.
- FIG. 17 is a is a block diagram of another embodiment of the buffer expansion array of FIG. 16.
- the computer system 10 includes a processor 12 coupled via memory address and control signals 14 and a processor data bus 16 to a cache memory 18 and a system memory 20.
- the processor 12 is further coupled via a system bus 22 to various peripheral devices supporting, among other things, a video subsystem 24, a network subsystem 26, and a disk subsystem 28.
- the processor 12 employed in the particular system shown in FIG. 1 is an ALPHA microprocessor produced by Digital Equipment Corporation, Inc.
- This particular processor 12 includes a memory controller circuit 30 which produces the memory address and control signals 14 for controlling access to the system memory 20.
- a buffer expansion array 32 accepts the memory address and control signals 14 from the memory controller circuit 30 and produces buffered memory address and control signals 34 for driving the system memory 20.
- any processor 12 can be used in the computer system 10 without departing from the basic principles of the invention.
- an external memory controller circuit 36 is provided external to the processor 12.
- the external memory controller circuit 36 accepts as input a processor address and control bus 38 from the processor 12, and produces as output the memory address and control signals 14 which are fed to the buffer expansion array 32.
- the system memory consists physically of Single In-Line Memory Modules (SIMMs 40) which plug into SIMM connectors or slots 42.
- SIMMs are small printed wiring boards 44 having a row of dynamic RAM chips (DRAMs 46) mounted thereon. Though four slots 48, 50, 52, and 54 are shown, it is understood that any number of slots 42 might be provided for supporting larger system memories.
- SIMMs 40 are available in a wide variety of configurations resulting in varying memory capacities.
- a typical industry standard SIMM used in the present embodiment has nine DRAMs 46 mounted on one side 56 providing a first bank of memory, and may have nine more DRAMs 46 mounted on the other side 58 and providing a second bank of memory. Eight of the nine DRAMs 46 on a side are used for data and one is used for parity and/or error correction codes (ECC). As implemented, the DRAMs 46 are "by four" ( ⁇ 4) DRAMs, meaning each DRAM 46 provides four data bit outputs.
- ECC error correction codes
- the DRAMs 46 are presently available in a variety of capacities ranging from 1 Mbits (256K ⁇ 4) to 16 Mbits (4M ⁇ 4).
- a SIMM 40 having 9 256K ⁇ 4 DRAMs 46 mounted on one side 56 thereof has a capacity of 1 Mbyte
- a SIMM 40 having 9 256K ⁇ 4 DRAMs 46 mounted on each side 56 and 58 thereof has a capacity of 2 Mbytes
- a SIMM 40 having 9 4M ⁇ 4 DRAMs 46 mounted on one side 56 thereof has a capacity of 16 Mbytes
- a SIMM 40 having 9 4M ⁇ 4 DRAMs 46 mounted on each side thereof has a capacity of 32 Mbytes.
- each slot 48, 50, 52, and 54 is provided with all the address, data, and control signals required to drive a two-sided SIMM 40 containing DRAMs 46 of the largest supported capacity.
- the group of signals that drive one side 56 or 58 of a slot will be herein referred to as a "channel".
- the system shown includes four slots and eight channels. Channels 60 and 62 are associated with slot 48; channels 64 and 66 are associated with slot 50; channels 68 and 70 are associated with slot 52; and channels 72 and 74 are associated with slot 54.
- the signals provided to each SIMM slot are:
- MA ⁇ 11:0>--multiplexed memory address All 12 bits are required to fully address a SIMM 40 having 4M ⁇ 4 DRAMs.
- MA ⁇ 10:0> are used by SIMMs 40 having 1M ⁇ 4 DRAMs.
- MA ⁇ 9:0> are used by SIMMs 40 having 256K ⁇ 4 DRAMs.
- RAS ⁇ 3:0>--Row Address Strobe--the RAS signals select the row being accessed within the DRAM 46.
- RAS ⁇ 3> and RAS ⁇ 1> are provided for driving the DRAMs 46 on one side 56 of a SIMM 40--i.e. the first channel--while RAS ⁇ 2> and RAS ⁇ 0> drive the DRAMs 46 on the other side 58, or the second channel, when a two sided SIMM 40 is installed.
- Two RAS signals are provided per side 56 or 58 in the event that the computer system 10 accesses the 32-bit memory with word resolution.
- CAS ⁇ 3:0>--Cas Address Strobe--the CAS signals select the column being accessed within the DRAM 46.
- Four CAS signals are provided per side 56 or 58 in the event that the computer system 10 accesses memory with byte resolution.
- WE--Write Enable--the WE signal is active during writes to either side of the SIMM 40.
- the processor 12 employed in the Computer system of FIG. 4 is an ALPHA microprocessor.
- the processor 12 includes the memory controller circuit 30, which is coupled to the buffer expansion array 32, which is in turn coupled to SIMM slots 48, 50, 52, and 54.
- the ALPHA microprocessor supports a 64 bit data bus; thus, the SIMM slots 48, 50, 52, and 54 are arranged in such a way that each memory access will access two 32 bit SIMMs at the same time, providing a 64 bit data transfer. As shown, one 64 bit data path 76 is provided between the processor 12 and the SIMM slots 48 and 50, and another 64 bit data path 78 is provided between the processor 12 and the SIMM slots 52 and 54.
- the memory controller circuit 30 within the processor 12 actually contains four different memory controllers MEM -- CTL -- 1, MEM -- CTL -- 2, MEM -- CTL -- 3, and MEM -- CTL -- 4. Each is a separate state machine providing the proper timing to drive the memory address and control signals 14 for a given memory address space.
- the memory controller circuit 30 is programmable such that, by writing to addresses in the processor 12 address space which are mapped to certain registers within the processor 12, each of the four memory controllers MEM -- CTL -- 1, MEM -- CTL -- 2, MEM -- CTL -- 3, and MEM -- CTL -- 4 can be selectively enabled or disabled.
- each memory controller MEM -- CTL -- 1, MEM -- CTL -- 2, MEM -- CTL -- 3, and MEM -- CTL -- 4 can be programmed to drive the memory address and control signals 14 over a given CPU address range.
- Each controller provides a separate RAS signal, while the controllers share the remaining memory address and control signals 14. That is, when enabled, the memory controller MEM -- CTL -- 1 drives memory control signals RAS1 ⁇ 0>, CAS, and WE, and memory address MA ⁇ 11:0>.
- the memory controller MEM -- CTL -- 2 when enabled drives the memory control signals RAS1 ⁇ 1>, CAS, and WE, and memory address MA ⁇ 11:0>.
- the memory controller MEM -- CTL -- 3, likewise, drives the RAS2 ⁇ 0> signal as well as the remaining memory address and control signals 14, and memory controller MEM -- CTL -- 4 drives the RAS2 ⁇ 1> signal as well as the remaining memory address and control signals 14.
- Each memory controller is associated with a pair of channels. That is, memory controller MEM -- CTL -- 1 is associated with the channels 60 and 64, such that when the memory controller MEM -- CTL -- 1 is enabled, a 64 bit memory access can occur to the first sides of SIMMs 40 plugged into the slots 48 and 50. Likewise, the memory controller MEM -- CTL -- 2 is associated with the channels 62 and 66, such that when the memory controller MEM -- CTL -- 2 is enabled, a 64 bit memory access can occur to the second sides of SIMMs 40 plugged into the slots 48 and 50.
- the memory controller MEM -- CTL -- 3 is associated with the channels 68 and 72, such that when the memory controller MEM -- CTL -- 3 is enabled, a 64 bit memory access can occur to the first sides of SIMMs 40 plugged into the slots 52 and 54.
- the memory controller MEM -- CTL -- 4 is associated with the channels 70 and 74, such that when the memory controller MEM -- CTL -- 4 is enabled, a 64 bit memory access can occur to the second sides of SIMMs 40 plugged into the slots 52 and 54.
- the various memory controllers are enabled or disabled in response to knowledge as to whether SIMMs are present in each slot 48, 50, 52 and 54, and as to whether those SIMMs are double sided or single sided.
- the buffer expansion array 32 accepts as input the memory address and control signals 14 from the memory controller circuit 30 and generates as output four sets of buffered memory address and control signals 80, 82, 84, and 86 for driving each of the SIMM slots 48, 50, 52, and 54. Furthermore, each set of buffered memory address and control signals includes two RAS control signals: one per channel. Accordingly, as shown, the buffer expansion array 32 provides the signals RAS -- A ⁇ 1:0>, CAS -- A, WE -- A and MA -- A ⁇ 11:0> to the SIMM slot 48, where RAS -- A ⁇ 0> is fed to channel 60 and RAS -- A ⁇ 1> is fed to channel 62.
- the CAS -- A, WE -- A, and MA -- A ⁇ 11:0> signals are fed to both channels 60 and 62. Since the ALPHA microprocessor accesses 64 bits of data at a time, neither byte nor word resolution is required for a memory access. Therefore the RAS -- A ⁇ 0> signal drives the SIMM signals RAS ⁇ 2> and RAS ⁇ 0> for the channel 60 of the slot 48, while the RAS -- A ⁇ 1> signal drives the RAS ⁇ 3> and RAS ⁇ 1> signals for the channel 62 of the slot 48, and the CAS -- A signal drives the CAS ⁇ 3:0> signals.
- the signals RAS -- B ⁇ 1:0>, CAS -- B, WE -- B an MA -- B ⁇ 11:0> to the SIMM slot 50 where RAS -- B ⁇ 0> is fed to channel 64 and RAS -- B ⁇ 1> is fed to channel 66.
- the signals RAS -- C ⁇ 1:0>, CAS -- C, WE -- C an MA -- C ⁇ 11:0> are provided to the SIMM slot 52, and the signals RAS -- D ⁇ 1:0>, CAS -- D, WE -- D an MA -- D ⁇ 11:0> to the SIMM slot 54.
- the sets of buffered memory address and control signals 80, 82, 84, and 86 are driven to the slots 48, 50, 52, and 54 via signal lines 87.
- the buffer expansion array 32 is programmable such that the signal lines 87 carrying any of the sets of buffered memory address and control signals 80, 82, 84, or 86 can be selectively placed in a high impedence state in response to a determination that no SIMM is plugged into the SIMM slot to which the signals correspond. Furthermore, the signal lines 87 carrying either of the RAS control signals within each set of buffered memory address and control signals can be placed in a high-impedence state in response to a determination that a SIMM is present in a slot but no DRAMs are present in the channel to which the RAS signal corresponds.
- the signal line 87 carrying the RAS -- A ⁇ 1> signal can be placed in the high impedence state in the event that a single-sided SIMM is plugged into slot 48, and thus no DRAMs are present at channel 62.
- the problems associated with providing timed output signals to potentially unloaded channels are thereby avoided.
- the buffer expansion array 32 is shown to include a programmable SIMM type/present controller 88 and output buffers 90.
- the SIMM type/present controller 88 accepts as input the memory address and control signals 14 from the processor 12 and generates as output the enable signals EN -- A ⁇ 1:0>, EN -- B ⁇ 1:0>, EN -- C ⁇ 1:0>, and EN -- D ⁇ 1:0>, which are fed in turn to the output buffers 90.
- Each enable signal is associated with a particular channel; that is, EN -- A ⁇ 0> is associated with channel 60, EN -- A ⁇ 1> is associated with channel 62, enable signal EN -- B ⁇ 0> is associated with channel 64, enable signal EN -- B ⁇ 1> is associated with channel 66, EN -- C ⁇ 0> is associated with channel 68, EN -- C ⁇ 1> is associated with channel 70, enable signal EN -- D ⁇ 0> is associated with channel 72, and enable signal EN -- D ⁇ 1> is associated with channel 74.
- the enable signals EN -- A ⁇ 1:0>, EN -- B ⁇ 1:0>, EN -- C ⁇ 1:0>, and EN -- D ⁇ 1:0> are input to the output buffers 90, as are the memory address and control signals 14 from the memory controller circuit 30.
- the output buffers 90 drive memory address and control signals 14 onto the four sets of buffered memory address and control signals 80, 82, 84, and 86 in response to the assertion of corresponding enable signals EN -- A ⁇ 1:0>, EN -- B ⁇ 1:0>, EN -- C ⁇ 1:0>, and EN -- D ⁇ 1:0>.
- the output buffers 90 place the signal lines 87 carrying the corresponding buffered memory address and control signals 80, 82, 84, and 86 in the high impedence state.
- the output buffers 90 are shown in further detail in FIG. 6.
- the output buffers 90 contain three-state drivers 96.
- the enable signal coupled to a driver 96 When the enable signal coupled to a driver 96 is asserted, the driver is in an "enabled state” in which it drives a buffered memory address and control signal.
- the enable signal coupled to the driver 96 When on the other hand the enable signal coupled to the driver 96 is deasserted, the driver is in a "disabled state" wherein its output, and thus the signal line 87 to which it is coupled, is placed in a high-impedence state.
- the RAS1 ⁇ 0> signal is driven onto the signals RAS -- A ⁇ 0> and RAS -- B ⁇ 0> to the channels 60 and 64 respectively via two of the drivers 96.
- SIMMs 46 are installed in slots 48 and 50, a memory access is initiated to the DRAMs on the front sides of those SIMMs 46.
- the two associated drivers 96 are placed in a disabled state such that signal lines 87 carrying the signals RAS -- A ⁇ 0> and RAS -- B ⁇ 0> to the channels 60 and 64 respectively are placed in the high impedence state.
- the RAS1 ⁇ 1> signal is asserted by the second memory controller MEM -- CTL -- 2
- the enable signals EN -- A ⁇ 1> and EN -- B ⁇ 1> are asserted
- the RAS1 ⁇ 1> signal is driven onto the RAS -- A ⁇ 1> and RAS -- B ⁇ 1> signals to the channels 62 and 66 respectively.
- the RAS2 ⁇ 0> signal is asserted by the third memory controller MEM -- CTL -- 3
- the enable signals EN -- C ⁇ 0> and EN -- D ⁇ 0> are asserted
- the RAS2 ⁇ 0> signal is driven onto the RAS -- C ⁇ 0> and RAS -- D ⁇ 0> signals to the channels 68 and 72 respectively.
- the RAS2 ⁇ 1> signal is driven onto the RAS -- C ⁇ 1> and RAS -- D ⁇ 1> signals to the channels 70 and 74 respectively.
- the remaining address and control signals in each of the four sets of buffered memory address and control signals 80, 82, 84, and 86 are driven to both channels of each slot.
- ⁇ OR ⁇ gates 98, 100, 102, and 104 therefore logically ⁇ OR ⁇ together the enable signals corresponding to the two channels of each slot to provide enable signals EN -- A, EN -- B, EN -- C and EN -- D.
- These enable signals enable corresponding drivers 96 to drive the remaining buffered memory address and control signals 80, 82, 84, and 86 respectively.
- the CAS signal is driven by an driver 96 onto the CAS -- A signal to slot 48 and thus to channels 60 and 62 if either EN -- A ⁇ 0> or EN -- A ⁇ 1> is asserted.
- the WE -- A and MA -- A ⁇ 11:0> signals are driven if either EN -- A ⁇ 0> or EN -- A ⁇ 1> is asserted.
- the buffered address and control signals to the remaining slots 50, 52, and 54 are generated in the same manner from the corresponding enable signals EN -- B, EN -- C, and EN -- D.
- the programmable SIMM type/present controller 88 is programmed via the memory address and control signals 14 from the processor 12 such that the enable signals EN -- A ⁇ 1:0>, EN -- B ⁇ 1:0>, EN -- C ⁇ 1:0>, and EN -- D ⁇ 1:0> are selectively asserted or deasserted in response to a determination as to whether SIMMs are present in each slot 48, 50, 52 and 54, and as to the type of SIMMs installed--i.e. whether those SIMMs are double sided or single sided.
- the type/present controller 88 responds to processor 12 writes to certain dedicated addresses within the processor 12 address space by asserting or deasserting the enable signals EN -- A ⁇ 1:0>, EN -- B ⁇ 1:0>, EN -- C ⁇ 1:0>, or EN -- D ⁇ 1:0> corresponding to the addresses written.
- the type/present controller 88 can operate as follows:
- Enabling or disabling the proper drivers 96 by writing to the type/present controller 88 to assert or deassert the appropriate enable signals EN -- A ⁇ 1:0>, EN -- B ⁇ 1:0>, EN -- C ⁇ 1:0>, and EN -- D ⁇ 1:0> is performed in response to a determination as to whether SIMMs 40 are present in each slot 48, 50, 52 and 54, and as to whether those SIMMs 40 are double sided or single sided.
- the software attempts to access the various channels to determine whether memory is installed there.
- the basic steps are as follows.
- the software first attempts to write data to the first side (channels 60 and 64) of the first and second SIMM slots 48 and 50.
- the memory controller MEM -- CTL -- 1 is enabled by the processor 12(106), and a write is performed to the type/present controller 88 at addresses 60 0000H and 60 0008H (108).
- the type/present controller 88 asserts, in response, the enable signals EN -- A ⁇ 1:0> and EN -- B ⁇ 1:0>.
- the software then reads memory address 0H (112).
- a write is then performed to the type/present controller 88 at address locations 60 0058H, 60 0060H, 60 0068H, and 60 0070H (120), thereby deasserting all enable signals EN -- A ⁇ 1:0> and EN -- B ⁇ 1:0>.
- SIMMs 40 are present in SIMM slots 48 and 50.
- a "walking bit" address test is then performed: that is, N is incremented (124), and data patterns are then successively written to and read from memory address 2**N (126, 128), where N is incremented on each successive pass, until the data pattern is not successfully read back (130).
- the read failure indicates that the address boundary for the DRAMs 46 on the first side 56 of the SIMMs 40 has been reached; thus, the capacity of the first side of the SIMMs 40, and therefore the SIMM type, has been determined.
- the processor 12 enables the memory controller MEM -- CTL -- 2 to attempt to access the second sides (channels 62 and 66) of the SIMMs 40 in slots 48 and 50 (134).
- the last address location used where the read from channels 60 and 64 was unsuccessful, is used as the starting address for the memory controller MEM -- CTL -- 2's address space.
- the starting address for testing the second sides of the SIMMs 40 is 10 0000H.
- the data pattern is written to this address (136), and then a read is performed at the address (138). If the data pattern is successfully read back, it is concluded that double-sided SIMMs 40 are installed in the SIMM slots 48 and 50.
- the software therefore leaves memory controllers MEM -- CTL -- 1 and MEM -- CTL -- 2 enabled, and leaves enable signals EN -- A ⁇ 1:0> and EN -- B ⁇ 1:0> asserted.
- the software can conclude that, if double sided SIMMs 40 are installed in slots 48 and 50, the capacity of the second sides of the SIMMs 40 is the same as the capacity already determined for the first side of the SIMMs 40, and would therefore proceed from step 156.
- the computer system 10 might support double-sided SIMMs 40 having different capacities on each side.
- the software will again write to and read from successive memory addresses until the read fails in order to determine the capacity of the second sides of the SIMMs 40 (steps 142, 144, 146, 148).
- the software then repeats the same basic process to determine whether SIMMs 40 are installed in slots 52 and 54, and if so, whether they are double-sided. Particularly, the software first attempts to write data to the first side (channels 68 and 72) of the third and fourth SIMM slots 52 and 54. Accordingly, the memory controller MEM -- CTL -- 3 is enabled (156), and a write is performed to the type/present controller 88 at addresses 60 0010H and 60 0018H (158), thus asserting the enable signals EN -- C ⁇ 1:0> and EN -- D ⁇ 1:0>.
- SIMMs 40 were installed in the first two slots 48 and 50, a 64 bit data pattern is then written to a memory address immediately following the last addressable location accessible on the first two SIMMs 40 as determined previously (160). If SIMMs 40 were not installed in the first two slots 48 and 50, the software could either start at memory address 0H or at another pre-determined address, depending upon system implementation. The 64 bit data pattern is then read back from the address A to which it was written (161).
- a write is then performed to the type/present controller 88 at address locations 60 0078H, 60 0080H, 60 0088H, and 60 0090H (168), thereby deasserting all enable signals EN -- C ⁇ 1:0> and EN -- D ⁇ 1:0>.
- SIMMs 40 are present in SIMM slots 52 and 54. Data patterns are then successively written to and read from successive memory addresses until the data pattern is not successfully read back (steps 172, 174, 176, 178).
- the read failure indicates that the address boundary for the DRAMs 46 on the first side 56 of the SIMMs 40 has been reached; thus, the capacity of the first side 56 of the SIMMs 40, and therefore the SIMM type, has been determined.
- the software enables the memory controller MEM -- CTL -- 4 (180) to attempt to access the second sides 58 (channels 70 and 74) of the SIMMs 40 in slots 52 and 54.
- the last address location used where the read from channels 68 and 72 was unsuccessful, is used as the starting address for the memory controller MEM -- CTL -- 4's address space.
- the data pattern is written to this address (182), and then a read is performed at the address (184). If the data pattern is successfully read back (186), it is concluded that double-sided SIMMs 40 are installed in the SIMM slots 52 and 54.
- Software therefore leaves memory controllers MEM -- CTL -- 3 and MEM -- CTL -- 4 enabled, and leaves enable signals EN -- A ⁇ 1:0> and EN -- B ⁇ 1:0> asserted.
- the software can again write to and read from successive memory addresses until the read fails in order to determine the capacity of the second sides of the SIMMs 40 (steps 188, 190, 192, 194), or it can assume that the capacity of the second sides is the same as the previously determined capacities for the first sides.
- SIMM ID bits which are provided on JEDEC industry standard SIMMs 40. These SIMM ID bits indicate whether SIMMs 40 are installed and, if so, the types of the SIMMs 40 installed. Accordingly, the SIMM ID bits are fed from the SIMMs 40 to a register 201 within the type/present controller 88. One set of SIMM ID bits is input to the register 201 for each SIMM; thus, SID0 ⁇ 3:0> corresponds to SIMM slot 48; SID1 ⁇ 3:0> corresponds to SIMM slot 50, SID2 ⁇ 3:0> corresponds to SIMM slot 52; and SID3 ⁇ 3:0> corresponds to SIMM slot 54.
- the industry standard encoding of the SIMM ID bits is as follows:
- the processor 12 can therefore determine the presence or absence of SIMMs 40 in the slots 48, 50, 52, and 54, for certain cases, simply by reading the register 201 via the processor data bus 16. With the exception of the 8 Mbyte 60 ns case, every type of SIMM 40 ties at least one the SIMM ID bits to a logic ⁇ 1 ⁇ level; thus, when all the SIMM ID bits corresponding to a given slot are at a logic level ⁇ 0 ⁇ , there is no SIMM 40 installed in the slot.
- the processor 12 can read the SIMM ID bits for each slot from the register 201 to determine which of the enable bits should be asserted, and which of the memory controllers should be enabled.
- the processor 12 disables the memory controllers MEM -- CTL -- 1 and MEM -- CTL -- 2, thus disabling the memory controller state machines.
- the processor 12 then writes to the type/present controller 88 at the appropriate addresses as previously described to deassert the enable signals EN -- A ⁇ 1:0> and EN -- B ⁇ 1:0>, thereby placing the corresponding signal lines 87 carrying the buffered memory address and control signals 80 and 82 to the slots 48 and 50 in the high impedence state.
- the sets of SIMM ID bits SID0 ⁇ 3:0> and SID1 ⁇ 3:1> decode to 1 MB, 4 MB, or 16 MB SIMMs 40
- the decode indicates that single-sided SIMMs 40 are present in the slots 48 and 50.
- the processor therefore disables the memory controller MEM -- CTL -- 2, and then writes to the type/present controller 88 to deassert the enable bits EN -- A ⁇ 1> and EN -- B ⁇ 1>, thereby disabling the drivers 96 driving the RAS -- A ⁇ 1> and RAS -- B ⁇ 1> signals to the slots 48 and 50 and placing the corresponding signal lines 87 in the high impedence state.
- SIMM ID bits SID0 ⁇ 3:0> and SID1 ⁇ 3:1> decode to 2 MB or 32 MB SIMMs 40, then double-sided SIMMs 40 are present in the slots 48 and 50.
- the processor 12 therefore leaves the memory controllers MEM -- CTL -- 1 and MEM -- CTL -- 2 enabled, and leaves the enable signals EN -- A ⁇ 1:0> and EN -- B ⁇ 1:0> asserted via the type/present controller 88.
- the processor 12 If one of the sets of SIMM ID bits--for example, SID0 ⁇ 3:0>--decodes to indicate a single-sided SIMM is plugged into the slot 48, and the other set of SIMM ID bits SID1 ⁇ 3:0> decode to indicate that a double-sided SIMM 40 is plugged into the slot 50, the processor 12 enables only the memory controller MEM -- CTL -- 1 and the enable signals EN -- A ⁇ 0> and EN -- B ⁇ 0> are asserted via the type/present controller 88; thus, the second side of the double-sided SIMM 40 is ignored.
- the remaining two slots 52 and 54 are decoded in exactly the same manner. If either of the sets of SIMM ID bits SID2 ⁇ 3:0> or SID3 ⁇ 3:0> are all at a logic ⁇ 0 ⁇ level, then there is no SIMM 40 installed in one of the slots 52 or 54; therefore, the processor 12 disables the memory controllers MEM -- CTL -- 3 and MEM -- CTL -- 4, and enable signals EN -- C ⁇ 1:0> and EN -- D ⁇ 1:0> are deasserted via the type/present controller 88. The memory controller MEM -- CTL -- 3 and MEM -- CTL -- 4 state machines are thus disabled and the output drivers associated with the signals routed to the slots 52 and 54 are disabled.
- the sets of SIMM ID bits SID2 ⁇ 3:0> and SID3 ⁇ 3:1> decode to 1 MB, 4 MB, or 16 MB SIMMs 40
- the decode indicates that single-sided SIMMs 40 are present in the slots 48 and 50.
- the processor 12 therefore disables the memory controller MEM -- CTL -- 4, and the enable bits EN -- C ⁇ 1> and EN -- D ⁇ 1> are deasserted via the type/present controller 88, thereby disabling the drivers 96 driving the RAS -- C ⁇ 1> and RAS -- D ⁇ 1> signals to the slots 52 and 54 and placing the corresponding signal lines 87 in the high impedence state.
- SIMM ID bits SID2 ⁇ 3:0> and SID3 ⁇ 3:1> decode to 2 MB or 32 MB SIMMs 40, then double-sided SIMMs 40 are present in the slots 52 and 54.
- the memory controllers MEM -- CTL -- 3 and MEM -- CTL -- 4 are therefore enabled by the processor 12, and the enable signals EN -- C ⁇ 1:0> and EN -- D ⁇ 1:0> are asserted via the type/present controller 88.
- SIMM ID bits are provided to cover 24 possible SIMM types in TABLE I; thus, some of the decodes must overlap.
- the decode indicating a 1 MB 100 ns SIMM is the same as the decode indicating a 16 MB 100 ns SIMM.
- the capacity of a given SIMM must be known in order to determine at which address boundaries the memory controllers MEM -- CTL -- 1, MEM -- CTL -- 2, MEM -- CTL -- 3, and MEM -- CTL -- 4 should be enabled.
- software executing on the processor 12 performs the "walking bit" address test previously described on the installed pairs of SIMMs 40 in order to make this determination.
- FIG. 9 An alternate embodiment that makes use of the SIMM ID bits is shown in FIG. 9. Accordingly, the sets of SIMM ID bits SID0 ⁇ 3:0>, SID1 ⁇ 3:0>, SID2 ⁇ 3:0>, and SID3 ⁇ 3:0> are fed from the SIMMs 40 to a decoder 202 within the type/present controller 88. The presence or absence of SIMMs 40 in the slots 48, 50, 52, and 54, and the type of the SIMMs 40 present, can therefore be determined, for certain cases, by a hardware decode of the SIMM ID bits.
- the decoder 202 provides a direct hardware decode of the SIMM ID bits for each slot, and asserts or deasserts the appropriate enable bits EN -- A ⁇ 1:0>, EN -- B ⁇ 1:0>, EN -- C ⁇ 1:0>, and EN -- D ⁇ 1:0> in response to the decode.
- the decoder 202 deasserts the enable signals EN -- A ⁇ 1:0> and EN -- B ⁇ 1:0>, thereby disabling the drivers 96 associated with the signals routed to the slots 48 and 50.
- the decoder 202 deasserts the enable bits EN -- A ⁇ 1> and EN -- B ⁇ 1>, thereby disabling the drivers 96 driving the RAS -- A ⁇ 1> and RAS -- B ⁇ 1> signals to the slots 48 and 50 and placing the corresponding signal lines 87 in the high impedence state.
- SIMM ID bits SID0 ⁇ 3:0> and SID1 ⁇ 3:1> decode to 2 MB or 32 MB SIMMs 40
- double-sided SIMMs 40 are present in the slots 48 and 50.
- the decoder 202 therefore asserts the signals EN -- A ⁇ 1:0> and EN -- B ⁇ 1:0>.
- the remaining two slots 52 and 54 are decoded in exactly the same manner.
- the previously described software methods can be used in combination with the decoder 202 in order to support the 8 MB 60 ns SIMMs or to determine the capacity of installed SIMMS for enabling or disabling the memory controllers.
- the implementations so far described enable or disable the entire memory address bus MA ⁇ 11:0> to be driven to a SIMM slot in which a SIMM is installed.
- all the memory address bits are not required for all the possible SIMM types.
- 16 MB single-sided and 32 MB double-sided SIMMs 40 require all 12 address bits; however, the 4 MB single sided and 8 MB double-sided SIMMs 40 require only MA ⁇ 10:0> to fully address the memory available on the SIMM.
- the 1 MB and 2 MB SIMMs 40 require only the MA ⁇ 9:0> address bits.
- the memory address bits MA -- A ⁇ 11:10>, MA -- B ⁇ 11:10>, MA -- C ⁇ 11:10>, and MA -- D ⁇ 11:10> can be selectively enabled or disabled for each channel just as the RAS -- A ⁇ 1:0>, RAS -- B ⁇ 1:0>, RAS -- C ⁇ 1:0>, and RAS -- D ⁇ 1:0> are.
- FIG. 10 there is shown an implementation of the output buffers 90 wherein MA -- A ⁇ 11:10>, MA -- B ⁇ 11:10>, MA -- C ⁇ 11:10>, and MA -- D ⁇ 11:10> drivers 96 are separately enabled by the memory controller enable signals ENMA1 ⁇ 1:0> and ENMA2 ⁇ 1:0>.
- the ENMA1 ⁇ 1:0> signals are coupled to the drivers 96 driving MA -- A ⁇ 11:10> and MA -- B ⁇ 11:10> respectively, such that when ENMA1 ⁇ 1> is deasserted the signal lines carrying the MA -- A ⁇ 11> and MA -- B ⁇ 11> signals are in the high impedence state, and when ENMA1 ⁇ 0> is deasserted the signal lines 87 carrying the MA -- A ⁇ 10> and MA -- B ⁇ 10> signals are in the high impedence state.
- the ENMA2 ⁇ 1:0> signals are coupled to the drivers 96 driving MA -- A ⁇ 11:10> and MA -- B ⁇ 11:10> respectively in the same manner. These enable signals can be asserted and deasserted in a manner similar to the previously describe enable signals, at their own dedicated address spaces. For example:
- the flow diagram of FIG. 11 adds to the flow diagram of FIG. 7 such that at each point where the capacity of a given installed SIMM is determined, this information is used to write to the appropriate address to assert or deassert the memory controller enable signals.
- the ENMA1 ⁇ 1:0> and ENMA2 ⁇ 1:0> enable signals are initially asserted by writing to 60 0200H. If it is determined that no SIMM is installed in the slot 48 (FIG. 7), then a write is performed to the type/present controller at addresses 60 0208H and 60 0210H to deassert the enable signals ENMA1 ⁇ 1:0> in addition to all the other enable signals constituting buffered memory address signals 80 and 82.
- a write is performed to the type/present controller at addresses 60 0208H and 60 0210H to deassert the enable signals ENMA1 ⁇ 1:0>, thus placing the signal lines 87 carrying the unused memory address signals MA -- A ⁇ 11:10> and MA -- B ⁇ 11:10> to the SIMM slots 48 and 50 in the high impedence state (206).
- FIG. 12 there is shown such a computer system 10 in which a processor 12 is coupled to an external memory controller circuit 36, which is in turn coupled to the buffer expansion array 32.
- the processor 12 since the processor 12 is coupled to a 32 bit processor data bus 16, 32 bit SIMM slots 48, 50, 52, and 54 need not be accessed in pairs. Instead, each channel can separately provide memory data to the processor data bus 16.
- channel 60 is associated with a first side 56 of the slot 48
- channel 64 is associated with the second side 58 of the slot 48.
- Channels 62 and 66 are likewise associated with slot 50; channels 68 and 72 with slot 52; and channels 70 and 74 with slot 54. It is conceivable to provide separate memory controllers for each channel; however, the memory controller circuit 30 as shown includes four separate memory controllers MEM -- CTL -- 1, MEM -- CTL -- 2, MEM -- CTL -- 3, and MEM -- CTL -- 4 each of which is a separate state machine that can be separately enabled and disabled. Each memory controller provides memory address and control signals for one of the slots 48, 50, 52, and 54.
- the buffer expansion array 32 includes the type/present controller 88 and the drivers 96 for driving the buffered memory address and control signals 80, 82, 84, and 86 to the slots 48, 50, 52, and 54 respectively as previously described.
- the type/present controller 88 shown here also provides as output the signals MEM -- EN1, MEM -- EN2, MEM -- EN3, and MEM -- EN4, which, when asserted, enable the memory controllers MEM -- CTL -- 1, MEM -- CTL -- 2, MEM -- CTL -- 3, and MEM -- CTL -- 4 respectively.
- the MEM -- EN1, MEM -- EN2, MEM -- EN3, and MEM -- EN4 signals can be asserted and deasserted in a manner similar to that previously described for asserting and deasserting the EN -- A ⁇ 1:0>, EN -- B ⁇ 1:0>, EN -- C ⁇ 1:0>, an EN -- D ⁇ 1:0> signals.
- the type/present controller 88 can respond to writes by the processor 12 via the processor address and control bus 38 as follows:
- the output buffers 90 are shown in further detail in FIG. 14. Contained within the output buffers 90 are drivers 96, each separately enabled by one of the enable signals EN -- A ⁇ 1:0>, EN -- B ⁇ 1:0>, EN -- C ⁇ 1:0>, or EN -- D ⁇ 1:0>.
- the memory control signal RAS1 ⁇ 0> is asserted by the memory controller MEM -- CTL -- 1 and the enable signal EN -- A ⁇ 0> is asserted
- the RAS1 ⁇ 0> signal is asserted onto the signals RAS -- A ⁇ 0> for the channel 60.
- the enable signal EN -- A ⁇ 0> is deasserted, the signal line 87 carrying the RAS -- A ⁇ 0> signal is placed in the high impedence state.
- the RAS1 ⁇ 0> signal is asserted onto the signal RAS -- A ⁇ 1> for the channel 62.
- the RAS1 ⁇ 1> signal is asserted by the second memory controller MEM -- CTL -- 2
- the enable signal EN -- B ⁇ 0> is asserted
- the RAS1 ⁇ 1> signal is asserted onto the signal RAS -- B ⁇ 0> for the channel 64.
- the RAS1 ⁇ 1> signal is asserted onto the signal RAS -- B ⁇ 1> for the channel 66.
- the RAS2 ⁇ 0> signal is asserted by the third memory controller MEM -- CTL -- 3, and the enable signal EN -- C ⁇ 0> is asserted, the RAS2 ⁇ 0> signal is driven onto the RAS -- C ⁇ 0> signal to the channel 68.
- the RAS2 ⁇ 0> signal When the RAS2 ⁇ 0> signal is asserted by the memory controller MEM -- CTL -- 3, and the enable signal EN -- C ⁇ 1> is asserted, the RAS2 ⁇ 0> signal is driven onto the RAS -- C ⁇ 1> signal to the channel 70. Finally, when the RAS2 ⁇ 1> signal is asserted by the fourth memory controller MEM -- CTL -- 4, and the enable signal EN -- C ⁇ 1> is asserted, the RAS2 ⁇ 1> signal is driven onto the RAS -- D ⁇ 0> signal to the channel 72.
- the RAS2 ⁇ 1> signal is asserted by the memory controller MEM -- CTL -- 4, and the enable signal EN -- D ⁇ 1> is asserted, the RAS2 ⁇ 1> signal is driven onto the RAS -- D ⁇ 1> signal to the channel 74.
- the remaining address and control signals in each of the four sets of buffered memory address and control signals 80, 82, 84, and 86 are driven to both channels of each slot.
- ⁇ OR ⁇ gates 98, 100, 102, and 104 therefore logically ⁇ OR ⁇ together the enable signals corresponding to the two channels of each slot to provide enable signals EN -- A, EN -- B, EN -- C and EN -- D.
- These enable signals enable corresponding drivers 96 to drive the remaining buffered memory address and control signals 80, 82, 84, and 86 respectively.
- the CAS signal is driven by a driver 96 onto the CAS -- A signal to slot 48 and thus to channels 60 and 62 if either EN -- A ⁇ 0> or EN -- A ⁇ 1> is asserted.
- the WE -- A and MA -- A ⁇ 11:0> signals are driven if either EN -- A ⁇ 0> or EN -- A ⁇ 1> is asserted.
- the buffered address and control signals to the remaining slots 50, 52, and 54 are generated in the same manner from the corresponding enable signals EN -- B, EN -- C, and EN -- D.
- the buffer expansion array 32 operates generally as previously described except that each channel is accessed separately to determine whether memory is installed there.
- the software first enables the memory controller MEM -- CTL -- 1 and the enable signal EN -- A ⁇ 0> and attempts to write data to the first side--channel 60--of the first SIMM slot 48.
- a write is performed to the type/present controller 88 at address location 60 0100H to assert the MEM -- EN1 signal and thereby enable the memory controller MEM -- CTL -- 1 (218).
- a write is performed to the type/present controller 88 at address location 60 0000H, thereby asserting the enable signals EN -- A ⁇ 1:0>.
- a write is performed to the type/present controller 88 at address location 60 0060 to deassert the enable signal EN -- A ⁇ 1> (220).
- a 32 bit data pattern is then written to memory address 0H (222).
- the software then reads memory address 0H (224).
- SIMM slot 48 If the data pattern that was written at memory address 0 is successfully read (229), it is concluded that a SIMM is present in SIMM slot 48. Data patterns are then successively written to and read from memory address 2**N, where N is incremented on each successive pass, until the data pattern is not successfully read back (steps 230, 232, 234, 236).
- the read failure indicates that the address boundary for the DRAMs 46 on the first side of the SIMM 40 has been reached; thus, the capacity of the first side of the SIMM 40, and therefore the SIMM type, has been determined. For example, if a 1 megabyte SIMM 40 is plugged into the slot 48, the data pattern will be successfully read back at the memory address of 01 0000, but on the next pass, the data pattern will not be successfully read from the memory address of 10 0000.
- the software still using the memory controller MEM -- CTL -- 1, attempts to access the second side--channels 64--of the SIMM in slot 48.
- the software writes to the type/present controller 88 at address location 60 0000 to re-assert the enable signal EN -- A ⁇ 1> (238).
- the last memory address location used, where the read from channel 60 was unsuccessful, is used as the starting address for accessing channel 64.
- the starting address for testing the second side of the SIMM is 10 0000H.
- the data pattern is written to this address (240), and then a read is performed at the address (242). If the data pattern is successfully read back (244), it is concluded that a double-sided SIMM 40 is installed in the SIMM slot 48.
- Software therefore leaves the memory controller MEM -- CTL -- 1 enabled, and leaves enable signals EN -- A ⁇ 1:0> asserted.
- the software can again write to and read from successive memory addresses until the read fails in order to determine the capacity of the second side of the SIMM, or it can assume that the capacity of the second side is the same as the previously determined capacity for the first side (steps 246, 248 250, 252).
- SIMM slots 50, 52, and 54 are tested in exactly the same manner, as shown in FIGS. 14(c)-14(h). If a SIMM was found in the slot 48, then testing of the slot 50 will begin at the next successive address. If no SIMM was found in the slot 48, then testing of the next SIMM slot 50 can start from memory address 0 or from an address predetermined for that slot.
- Each memory controller MEM -- CTL -- 2, MEM -- CTL -- 3, and MEM -- CTL -- 4 is enabled in succession to test the corresponding SIMM slots 50, 52, and 54 respectively, and is disabled in the event that no SIMM is found in the slot.
- SIMM ID decodes overlap--for instance, for the 1 MB and 16 MB cases--software can be used to determine the proper SIMM type as previously described.
- the memory controllers should be initially configured to access the higher capacity SIMM type.
- the memory controller MEM -- CTL -- 1 should be configured to access a memory address range between 0 and 32 Mbytes until the type of a SIMM plugged into the slot 48 is determined.
- the memory controller MEM -- CTL -- 1 can be configured to access the first megabyte of memory space while the memory controller MEM -- CTL -- 2 is configured to access a 32 MB address space starting from the second megabyte.
- the process is then repeated for the memory controller MEM -- CTL -- 2 and successive memory controllers MEM -- CTL -- 3 and MEM -- CTL -- 4 as shown in FIGS. 15c-15h.
- the type/present controller 88 can use the SIMM ID bits which are provided on JEDEC industry standard SIMMs 40 for determining if SIMMs 40 are installed in the slots 48, 50, 52, and 54.
- FIG. 16 there is shown another embodiment of the buffer expansion array wherein SIMM ID bits are fed from the SIMMs 40 to a register 201 within the type/present controller 88.
- SIMM ID bits are fed from the SIMMs 40 to a register 201 within the type/present controller 88.
- SIMM ID bits is fed from the SIMMs 40 to a register 201 within the type/present controller 88.
- SIMM ID bits is input to the register 201 for each SIMM; thus, SID ⁇ 3:0> corresponds to SIMM slot 48; SID2 ⁇ 3:0> corresponds to SIMM slot 50, SID3 ⁇ 3:0> corresponds to SIMM slot 52; and SID3 ⁇ 3:0> corresponds to SIMM slot 54.
- the processor 12 can therefore determine the presence or absence of SIMMs 40 in the slots 48, 50, 52, and 54, and whether the present SIMMs 40 are double or single sided, by simply reading the register 201.
- the processor 12 can then program the type/present controller 88 to assert or deassert the appropriate driver enable signals EN -- A ⁇ 1:0>, EN -- B ⁇ 1:0>, EN -- C ⁇ 1:0>, and EN -- D ⁇ 1:0> to the drivers 96, and to assert or deassert the appropriate memory controller enable signals MEM -- EN -- 1, MEM -- EN -- 2, MEM -- EN -- 3, and MEM -- EN -- 4 to enable or disable the corresponding memory controllers MEM -- CTL -- 1, MEM -- CTL -- 2, MEM -- CTL -- 3, and MEM -- CTL -- 4.
- processor 12 For example, if the processor 12 reads the register 201 and finds that the set of SIMM ID bits SID0 ⁇ 3:0> are all at a logic ⁇ 0 ⁇ level, then there is no SIMM installed in the slot 48. In this case, processor 12 writes to the type/present controller as previously described to deassert the MEM -- EN -- 1 signal and the EN -- A ⁇ 1:0> signals, thereby disabling the memory controller MEM -- CTL -- 1 and placing the signal lines 87 routed to the slot 48 in a high impedence state.
- the processor reads the register 201 and finds that the set of SIMM ID bits SID0 ⁇ 3:0> decodes to a 1 MB, 4 MB, or 16 MB SIMM, the decode indicates that a single-sided SIMM is present in the slot 48.
- the memory controller MEM -- CTL -- 1 remains enabled but the processor writes to the type/present controller 88 to deassert the enable bit EN -- A ⁇ 1>, thereby placing the signal line 87 carrying the RAS -- A ⁇ 1> signal to the slot 48 in a high impedence state.
- the set of SIMM ID bits SID0 ⁇ 3:0> decodes to a 2 MB, 8 MB, or 32 MB SIMM, then a double-sided SIMM is present in the slot 48 and 50.
- the enable signals EN -- A ⁇ 1:0> therefore remain asserted.
- the remaining slots 50, 52, and 54 are tested in exactly the same manner using their corresponding SIMM ID bits.
- the type/present controller 88 can use the SIMM ID bits which are provided on JEDEC industry standard SIMMs 40 in another manner in certain cases for determining if SIMMs 40 are installed in the slots 48, 50, 52, and 54. Referring now to FIG. 17, there is shown an embodiment of the buffer expansion array wherein SIMM ID bits are fed from the SIMMs 40 to a combinatorial logic decoder 202 within the type/present controller 88.
- SIMM ID bits are input to the decoder 202 for each SIMM; thus, SID ⁇ 3:0> corresponds to SIMM slot 48; SID2 ⁇ 3:0> corresponds to SIMM slot 50, SID3 ⁇ 3:0> corresponds to SIMM slot 52; and SID3 ⁇ 3:0> corresponds to SIMM slot 54.
- the decoder 202 within the type/present controller 88 decodes the SIMM ID bits for each slot to assert or deassert the driver enable signals EN -- A ⁇ 1:0>, EN -- B ⁇ 1:0>, EN -- C ⁇ 1:0>, and EN -- D ⁇ 1:0> to the drivers 96 and to assert or deassert the memory controller enable signals MEM -- EN -- 1, MEM -- EN -- 2, MEM -- EN -- 3, and MEM -- EN -- 4 to enable or disable the appropriate memory controllers MEM -- CTL -- 1, MEM -- CTL -- 2, MEM -- CTL -- 3, and MEM -- CTL -- 4.
- the decoder 202 deasserts the MEM -- EN -- 1 signal, thereby disabling the memory controller MEM -- CTL -- 1, and deasserts the enable signals EN -- A ⁇ 1:0>, thus placing the signal lines 87 routed to the slot 48 in a high impedence state.
- the decode indicates that a single-sided SIMM is present in the slot 48.
- the memory controller MEM -- CTL -- 1 remains enabled but the enable bit EN -- A ⁇ 1> is deasserted by the decoder 202, thereby placing the signal line 87 carrying the RAS -- A ⁇ 1> signal to the slot 48 in a high impedence state.
- the set of SIMM ID bits SID0 ⁇ 3:0> decodes to a 2 MB, 8 MB, or 32 MB SIMM, then a double-sided SIMM is present in the slot 48 and 50.
- the enable signals EN -- A ⁇ 1:0> therefore remain asserted.
- the remaining slots 50, 52, and 54 are tested in exactly the same manner using their corresponding SIMM ID bits.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
______________________________________ Processor Type/present controller hexadecimal address response ______________________________________ 60 0000 assert EN.sub.-- A<1:0> 60 0008 assert EN.sub.-- B<1:0> 60 0010 assert EN.sub.-- C<1:0> 60 0018 assert EN.sub.-- D<1:0> 60 0028 deassert EN.sub.-- A<1:0>, EN.sub.-- B<1:0>, EN.sub.-- C<1:0>, EN.sub.-- D<1:0> 60 0058 deassert EN.sub.-- A<0> 60 0060 deassert EN.sub.-- A<1> 60 0068 deassert EN.sub.-- B<0> 60 0070 deassert EN.sub.-- B<1> 60 0078 deassert EN.sub.-- C<0> 60 0080 deassert EN.sub.-- C<1> 60 0088 deassert EN.sub.-- D<0> 60 0090 deassert EN.sub.-- D<1> ______________________________________
TABLE I ______________________________________ SIMM Type Speed SID0 SID1 SID2 SID3 ______________________________________ 1MB (256K × 36) 100 ns 1 0 1 1 80 ns 1 0 0 1 70 ns 1 0 1 0 60 ns 1 0 0 0 2MB (512K × 36) 100 ns 0 1 1 1 80 ns 0 1 0 1 70 ns 0 1 1 0 60 ns 0 1 0 0 4MB (1M × 36) 100 ns 1 1 1 1 80 ns 1 1 0 1 70 ns 1 1 1 0 60 ns 1 1 0 0 8MB (2M × 36) 100 ns 0 0 1 1 80 ns 0 0 0 1 70 ns 0 0 1 0 60 ns 0 0 0 0 16MB (4M × 36) 100 ns 1 0 1 1 80 ns 1 0 0 1 70 ns 1 0 1 0 60 ns 1 0 0 0 32MB (8M × 36) 100 ns 0 1 1 1 80 ns 0 1 0 1 70 ns 0 1 1 0 60 ns 0 1 0 0EMPTY SLOT 0 0 0 0 ______________________________________
______________________________________ Processor Type/present controller hexadecimal address Response ______________________________________ 60 0200 assert ENMA1<1:0>, ENMA2<1:0> 60 0208 deassert ENMA1<1> 60 0210 deassert ENMA1<0> 60 0218 deassert ENMA2<1> 60 0220 deassert ENMA2<0> ______________________________________
______________________________________ Processor hexadecimal Type/present controller address Response ______________________________________ 60 0100 assert MEM.sub.-- EN1, MEM.sub.-- EN2, MEM.sub.-- EN3, MEM.sub.--EN4 60 0108 deassert MEM.sub.--EN1 60 0110 deassert MEM.sub.--EN2 60 0118 deassert MEM.sub.--EN3 60 0120 deassert MEM.sub.-- EN4 ______________________________________
Claims (31)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/422,237 US5621678A (en) | 1995-04-13 | 1995-04-13 | Programmable memory controller for power and noise reduction |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/422,237 US5621678A (en) | 1995-04-13 | 1995-04-13 | Programmable memory controller for power and noise reduction |
Publications (1)
Publication Number | Publication Date |
---|---|
US5621678A true US5621678A (en) | 1997-04-15 |
Family
ID=23673975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/422,237 Expired - Lifetime US5621678A (en) | 1995-04-13 | 1995-04-13 | Programmable memory controller for power and noise reduction |
Country Status (1)
Country | Link |
---|---|
US (1) | US5621678A (en) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5786769A (en) * | 1996-12-11 | 1998-07-28 | International Business Machines Corporation | Method and system for detecting the presence of adapter cards |
US5852795A (en) * | 1996-11-22 | 1998-12-22 | New York Gas Group | Apparatus for controlling a multiplicity of compressors |
US5950220A (en) * | 1996-12-13 | 1999-09-07 | Intel Corporation | Method and apparatus for providing a logical double sided memory element by mapping single sided memory elements onto a logical double sided memory address space |
US6034878A (en) * | 1996-12-16 | 2000-03-07 | Hitachi, Ltd. | Source-clock-synchronized memory system and memory unit |
US6055614A (en) * | 1996-12-31 | 2000-04-25 | Intel Corporation | Apparatus for performing a user requested reset during algorithm execution |
WO2001020457A1 (en) * | 1999-09-17 | 2001-03-22 | Njr Corporation | Method and apparatus for controlling multi-channel bitstreams |
US6684314B1 (en) * | 2000-07-14 | 2004-01-27 | Agilent Technologies, Inc. | Memory controller with programmable address configuration |
US6715013B1 (en) * | 1999-08-16 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Bus system having improved control process |
US6804760B2 (en) * | 1994-12-23 | 2004-10-12 | Micron Technology, Inc. | Method for determining a type of memory present in a system |
US20080140900A1 (en) * | 2006-10-30 | 2008-06-12 | Qimonda Ag | Memory module system |
US20100067278A1 (en) * | 2008-09-18 | 2010-03-18 | Hakjune Oh | Mass data storage system with non-volatile memory modules |
US20100097868A1 (en) * | 1994-12-23 | 2010-04-22 | Merritt Todd A | Distributed write data drivers for burst access memories |
US10762006B2 (en) * | 2017-03-31 | 2020-09-01 | Intel Corporation | Techniques to dynamically enable memory channels on a compute platform |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5241643A (en) * | 1990-06-19 | 1993-08-31 | Dell Usa, L.P. | Memory system and associated method for disabling address buffers connected to unused simm slots |
-
1995
- 1995-04-13 US US08/422,237 patent/US5621678A/en not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5241643A (en) * | 1990-06-19 | 1993-08-31 | Dell Usa, L.P. | Memory system and associated method for disabling address buffers connected to unused simm slots |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804760B2 (en) * | 1994-12-23 | 2004-10-12 | Micron Technology, Inc. | Method for determining a type of memory present in a system |
US8213244B2 (en) | 1994-12-23 | 2012-07-03 | Round Rock Research, Llc | Distributed write data drivers for burst access memories |
US8107304B2 (en) | 1994-12-23 | 2012-01-31 | Round Rock Research, Llc | Distributed write data drivers for burst access memories |
US20100097868A1 (en) * | 1994-12-23 | 2010-04-22 | Merritt Todd A | Distributed write data drivers for burst access memories |
US5852795A (en) * | 1996-11-22 | 1998-12-22 | New York Gas Group | Apparatus for controlling a multiplicity of compressors |
US5786769A (en) * | 1996-12-11 | 1998-07-28 | International Business Machines Corporation | Method and system for detecting the presence of adapter cards |
US5950220A (en) * | 1996-12-13 | 1999-09-07 | Intel Corporation | Method and apparatus for providing a logical double sided memory element by mapping single sided memory elements onto a logical double sided memory address space |
US6034878A (en) * | 1996-12-16 | 2000-03-07 | Hitachi, Ltd. | Source-clock-synchronized memory system and memory unit |
US6055614A (en) * | 1996-12-31 | 2000-04-25 | Intel Corporation | Apparatus for performing a user requested reset during algorithm execution |
US20040230732A1 (en) * | 1999-08-16 | 2004-11-18 | Hewlett-Packard Company | Bus system having improved control process |
US6957289B2 (en) * | 1999-08-16 | 2005-10-18 | Hewlett-Packard Development Company, L.P. | Bus system having improved control process |
US6715013B1 (en) * | 1999-08-16 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Bus system having improved control process |
US6728824B1 (en) * | 1999-09-17 | 2004-04-27 | Njr Corporation | Method and apparatus for controlling multi-channel bitstreams |
WO2001020457A1 (en) * | 1999-09-17 | 2001-03-22 | Njr Corporation | Method and apparatus for controlling multi-channel bitstreams |
SG115388A1 (en) * | 2000-07-14 | 2005-10-28 | Agilent Technologies Inc | Memory controller with programmable address configuration |
US6684314B1 (en) * | 2000-07-14 | 2004-01-27 | Agilent Technologies, Inc. | Memory controller with programmable address configuration |
US20080140900A1 (en) * | 2006-10-30 | 2008-06-12 | Qimonda Ag | Memory module system |
US8694726B2 (en) * | 2006-10-30 | 2014-04-08 | Qimonda Ag | Memory module system |
US20100067278A1 (en) * | 2008-09-18 | 2010-03-18 | Hakjune Oh | Mass data storage system with non-volatile memory modules |
US10236032B2 (en) | 2008-09-18 | 2019-03-19 | Novachips Canada Inc. | Mass data storage system with non-volatile memory modules |
US10762006B2 (en) * | 2017-03-31 | 2020-09-01 | Intel Corporation | Techniques to dynamically enable memory channels on a compute platform |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6298426B1 (en) | Controller configurable for use with multiple memory organizations | |
US8626998B1 (en) | Multi-rank memory module that emulates a memory module having a different number of ranks | |
US6981089B2 (en) | Memory bus termination with memory unit having termination control | |
US4860252A (en) | Self-adaptive computer memory address allocation system | |
EP1194856B1 (en) | A memory expansion module including multiple memory banks and a bank control circuit | |
US6021477A (en) | Multiple mode memory module | |
US6895474B2 (en) | Synchronous DRAM with selectable internal prefetch size | |
US5446860A (en) | Apparatus for determining a computer memory configuration of memory modules using presence detect bits shifted serially into a configuration register | |
EP1581877B1 (en) | Memory subsystem including memory modules having multiple banks | |
US20080126692A1 (en) | Memory device with emulated characteristics | |
US5621678A (en) | Programmable memory controller for power and noise reduction | |
GB2406409A (en) | Single rank memory module for use in a two-rank memory module system | |
EP0307945B1 (en) | Memory control apparatus for use in a data processing system | |
US5504700A (en) | Method and apparatus for high density sixteen and thirty-two megabyte single in-line memory module | |
WO1996024897A2 (en) | Parallel processing redundancy scheme for faster access times and lower die area | |
US5307469A (en) | Multiple mode memory module | |
US6888760B2 (en) | System and method for multiplexing data and data masking information on a data bus of a memory device | |
US5613094A (en) | Method and apparatus for enabling an assembly of non-standard memory components to emulate a standard memory module | |
EP0440445B1 (en) | System memory initialization with presence detect encoding | |
US5500831A (en) | RAS encoded generator for a memory bank | |
US6564308B2 (en) | Multiple mode memory module | |
EP0619546A1 (en) | Programmable memory controller and method for configuring same | |
US6141727A (en) | Device and method for controlling data storage device | |
JPH0652043A (en) | Memory device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: DIGITAL EQUIPMENT CORPORATION, MASSACHUSETTS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BARNABY, MICHAEL J.;BRISSETTE, JAMES W.;REEL/FRAME:007486/0855 Effective date: 19950413 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: COMPAQ INFORMATION TECHNOLOGIES GROUP, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DIGITAL EQUIPMENT CORPORATION;COMPAQ COMPUTER CORPORATION;REEL/FRAME:012447/0903;SIGNING DATES FROM 19991209 TO 20010620 |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: CHANGE OF NAME;ASSIGNOR:COMPAQ INFORMANTION TECHNOLOGIES GROUP LP;REEL/FRAME:014102/0224 Effective date: 20021001 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FPAY | Fee payment |
Year of fee payment: 12 |