Abstract:
A storage controller that can control memory addresses even when a memory module having a different device configuration than an already mounted memory module is added as an expansion module. More specifically, a storage controller for controlling a storage unit that can be constructed using a plurality of memory modules is configured so as to include: a register which stores memory module configuration information for a basic memory module and an expansion memory module independently of each other; and an address conversion unit which, based on the memory module configuration information stored in the register, generates an address that can access the storage unit even when the memory address space of the expansion memory module is different from the memory address space of the basic memory module.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to a storage controller and storage control method for controlling a storage unit that can be constructed using a plurality of memory modules. 
     2. Description of the Related Art 
     The predominant type of main memory storage used in computers today is SDRAM (Synchronous Dynamic Random Access Memory). SDRAM is characterized by high speed operation achieved by operating synchronously with a system bus clock, and is often used in the form of a DIMM (Dual In-line Memory Module). SDRAMs having a high-speed data transfer feature called the double data rate (DDR) mode, and SDRAMs featuring a DDR2 (Double Data Rate  2 ) mode, i.e. a speed-enhanced version of DDR-SDRAMs, have been commercially implemented. 
       FIG. 1  is a diagram showing by way of example a hardware configuration of a system board in a computer system. The system board comprises a central processing unit (CPU)  20 , a system controller (SC)  30 , a memory access controller (MAC)  40 , and a main storage unit (MSU)  50 . 
     The CPU  20  is the part that forms the core of the computer system, and processes data by decoding instructions read out from the MSU  50  via the SC  30  and MAC  40 , performing an appropriate operation based on the result of the decoding. 
     The SC  30  controls data, as well as the order in which the CPU  20  accesses the MSU  50 , and enhances the throughput of the MSU  50  by employing an interleaving scheme that allows simultaneous access to different addresses within the MSU  50 . The SC  30  converts a system address, which specifies an address in the address space of the system, into a MAC address which is passed to the MAC  40 . 
     The MAC  40  converts the MAC address into a DIMM address, and controls memory access to the MSU  50 . The MAC  40  sends an address signal, control signal, chip select signal (CS), etc., to the MSU  50 , and transfers a data signal (DQ), data strobe signal (DQS), etc., to and from the MSU  50 . A maximum of two such MACs  40  (MAC  0  and MAC  1 ) can be used. 
     The MSU  50  comprises a maximum of two banks, BANK  0  and BANK  1 . BANK  0  and BANK  1  each comprise an SDRAM-DIMM as a basic memory module unit (basic module) and an SDRAM-DIMM as an expansion memory module unit (expansion module). A maximum of two such MSUs  50  (MSU  0  and MSU  1 ) can be used to match the number of MACs  40 . 
     To accomplish read/write operations to a given memory module in the MSU  50 , the SC  30  converts the system address into the MAC address in accordance with the memory module mounting information, and the MAC  40  converts the MAC address into the DIMM address. 
     In the prior art system configuration described above, only a memory module having the same device configuration as that of the basic memory module unit can be added as an expansion module on the system board. 
       FIG. 2  shows the bit structure of a MAR (Memory Assign Register) incorporated in the system controller (SC) as a register for holding memory configuration information. As shown, the MAR comprises a “Physical MSU LIMIT ADD” field, a “MAC” field, a “BANK” field, and a “RAM” field. 
     The “Physical MSU LIMIT ADD” field indicates the physical MSU limit address. Further, as shown in the figure, the “MAC” field is a two-bit field that indicates the memory access controller (MAC) configuration. Likewise, the “BANK” field is a two-bit field that indicates the bank configuration. On the other hand, the “RAM” field, which is also a two-bit field, indicates the memory module configuration such as DIMM capacity, type of memory device, and number of devices. 
     The system controller (SC)  30  performs the system address to MAC address conversion based on the values set in the MAR, and activates memory access to the designated memory access controller (MAC)  40 . 
     There are two types of memory modules which are classified according to how DDR/DDR2-SDRAM devices are used to provide the same memory capacity. The two types are called the stacked type and the non-stacked type, respectively. In the stacked type, two sets of memory devices, twice as many as in the non-stacked type, are mounted in a single memory module, and are made individually selectable from the outside via a module pin using two chip select signals (CS0/1). The non-stacked type is controlled by only one chip select signal (CS0). 
     Since there are two module types as described above, if it is desirable to add a memory module of a different type than that of the basic memory module unit, with the prior art MAR structure it has not been possible to control the system address to the expansion module. Therefore there has been a problem in that modules of different types cannot be mounted in a mixed manner. 
     In recent years, memory modules have been increasing in capacity, and under the circumstances, when a system with a large memory capacity is needed to meet customer requirements, it is advantageous in terms of cost and supply to use a stacked type rather than a non-stacked type when twice the amount of memory is required. 
     On the other hand, even when the stacked type is advantageous, if the unit price of memory devices decreases further, the situation may reverse and the non-stacked type may become advantageous in terms of cost and supply. Therefore, there is a need to construct a system that can accommodate both types of memory modules when hardware is commercially implemented. 
     In the prior art relating to the present invention, Japanese Unexamined Patent Publication No. H11-073368 discloses a memory module accommodating a plurality of different types of memory devices. On the other hand, Japanese Unexamined Patent Publication No. 2003-076603 discloses a memory control method and apparatus wherein provisions are made so that SDRAMs of different types can be selected as desired and so that the SDRAMs of different types can be used in a mixed manner. Further, Japanese Unexamined Patent Publication No. H10-091517 discloses a memory access control method that ensures proper operation even when memory modules of different types are used in a mixed manner. 
     SUMMARY OF THE INVENTION 
     The present invention has been devised in view of the above problem, and an object of the invention is to provide a storage controller and storage control method that can control memory addresses even when a memory module having a different device configuration than an already mounted memory module is added as an expansion module. 
     To achieve the above object, according to the present invention, there is provided a storage controller for controlling a storage unit that can be constructed using a plurality of memory modules, comprising: a register, which stores memory module configuration information for a basic memory module and an expansion memory module independently of each other; and an address conversion unit which, based on the memory module configuration information stored in the register, generates an address that can access the storage unit even when the memory address space of the expansion memory module is different from the memory address space of the basic memory module. 
     According to the present invention, there is also provided a storage control method for controlling a storage unit that can be constructed using a plurality of memory modules, comprising: storing memory module configuration information in advance in a register for a basic memory module and an expansion memory module independently of each other; and generating, based on the memory module configuration information stored in the register, an address that can access the storage unit even when the memory address space of the expansion memory module is different from the memory address space of the basic memory module. 
     In one preferred mode, the memory module configuration information contains information that indicates whether the type of mounted memory device is a non-stacked type or a stacked type. 
     Preferably, the address generated by the address conversion unit contains a bit corresponding to a chip select signal which is not necessary when accessing a memory module of the non-stacked type, but becomes necessary when accessing a memory module of the stacked type. 
     According to the present invention, there is also provided an information processing apparatus which includes the storage controller described above. 
     According to the present invention, when there arises, for example, a need to add an extra memory module or to maintain or replace a memory module, a memory module of a different type can be mounted without restrictions in terms of hardware configuration. Further, if production of either the stacked type or the non-stacked type is discontinued in the future, the other type of memory module can be mounted, which serves to enhance serviceability. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Further features and advantages of the present invention will be apparent from the following description with reference to the accompanying drawings, in which: 
         FIG. 1  is a diagram showing by way of example the hardware configuration of a system board in a computer system; 
         FIG. 2  is a diagram showing the bit structure of a prior art MAR (Memory Assign Register) incorporated in a system controller (SC) as a register for holding memory configuration information; 
         FIG. 3  is a diagram showing a storage controller according to one embodiment of the present invention; 
         FIG. 4  is a diagram showing the bit structure of a MAR incorporated in a system controller in accordance with the present invention; 
         FIG. 5  is a diagram showing a logic description in Verilog-HDL (Hardware Description Language) describing the logic of decoders incorporated in the system controller in accordance with the present invention; 
         FIG. 6  is a diagram showing a logic description in Verilog-HDL describing the logic of a CS bit selector incorporated in the system controller in accordance with the present invention; 
         FIG. 7  is a diagram showing a logic description in Verilog-HDL describing the logic of a system address/MAC address conversion circuit incorporated in the system controller in accordance with the present invention; 
         FIG. 8  is a diagram showing how respective bits in a system address are converted to the corresponding bits in a MAC address by using the logic shown in  FIG. 7 ; 
         FIG. 9  is a diagram for explaining the conversion performed by a MAC address/DIMM address conversion circuit in a memory access controller (MAC); and 
         FIG. 10  is a diagram showing the mapping of the MAC address to memory device address inputs for various types of DIMM memory device. 
     
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     An embodiment of the present invention will be described below with reference to the accompanying drawings.  FIG. 3  is a diagram showing a storage controller according to one embodiment of the present invention. In the figure, reference characters  30 A and  40 A designate a system controller (SC) and a memory access controller (MAC), respectively, which respectively correspond to the SC  30  and MAC  40  in  FIG. 1 . 
     The system controller (SC)  30 A comprises a MAR (Memory Assign Register)  32  according to the present invention, two decoders  34 , a CS bit selector  36 , and a system address/MAC address conversion circuit  38 . Here, the system controller (SC)  30 A converts SYS_ADD [35:00] into MAC_ADD [31:00] which is sent to the memory access controller (MAC)  40 A. 
     The memory access controller (MAC)  40 A comprises a MAC address/DIMM address conversion circuit  42  which converts the MAC_ADD [31:00] into A0-A14 (row or column address), WA0-WA2 (way address), /RAS (row address strobe), /CAS (column address strobe), /WE (write enable), /CS (chip select) 0, /CS1, etc. The memory access controller (MAC)  40 A transfers DQ0-DQ63 (data), CB0-CB7 (check bits), DQS0-DQS17 (data strobes), etc. to and from the main storage. Here, signals are preceded by “/” are active-low signals. 
       FIG. 4  shows the bit structure of the MAR (Memory Assign Register)  32  incorporated in the system controller (SC)  30 A. The MAR  32  of this embodiment comprises a “Physical MSU LIMIT ADD” field, a “MAC” field, a “BANK” field, a “CS0_RAM” field, and a “CS1_RAM” field. The contents of the “Physical MSU LIMIT ADD”, “MAC”, and “BANK” fields are the same as those of the corresponding fields of the prior art MAR shown in  FIG. 2 . 
     The difference from the prior art shown in  FIG. 2  lies in the contents of the field provided to indicate the memory module configuration. In other words, in the prior art, one two-bit “RAM” field is provided to the basic module (CS0) and the expansion module (CS1), in the case of the MAR of the present embodiment shown in  FIG. 4  two fields “CS0_RAM” and “CS1_RAM” are provided, one for the basic module (CS0) and the other for the expansion module (CS1), and each field is expanded to four bits. 
     More specifically, as shown in  FIG. 4 , the “CS0_RAM” field comprises four bits which indicate DIMM capacity, type of memory device, number of devices, and type of mounting for the basic DIMM (CS0). Likewise, the “CS1_RAM” field comprises four bits which indicate DIMM capacity, type of memory device, number of devices, and type of mounting for the expansion DIMM (CS1). 
     In this way, by adding information bits defining the configuration of the expansion memory module in the MAR used for controlling the memory configuration, it is possible to control addresses in the expansion memory module, and thus, memory modules of the stacked type and non-stacked type can be mounted in a mixed manner. 
     With the prior art MAR, since only one type of memory module can be set, an expansion memory module cannot be mounted unless it is of the same type as the basic memory module, but with the modified MAR, since the memory module type can be set for the expansion module independently of the basic module, it is possible to control addresses in the respective memory modules, and any memory module, whether it be of the stacked type or non-stacked type, can be mounted. 
       FIG. 5  shows a logic description in Verilog-HDL (Hardware Description Language) describing the logic of the decoders  34  incorporated in the system controller (SC)  30 A. Each decoder  34  takes as an input the CSn RAM [3:0] (n is 0 or 1) output from the MAR  32  shown in  FIG. 4 , and decodes it to output CSn_DIMM_SIZE [1, 2, 4], CSn_DRAM_SIZE [0, 1, 2], and CSn_DRAM_TYPE [1, 3]. 
     CSn_DIMM_SIZE [1] output here is a bit indicating that the DIMM capacity is 1 GB, CSn_DIMM_SIZE [2] is a bit indicating that the DIMM capacity is 2 GB, and CSn_DIMM_SIZE [4] is a bit indicating that the DIMM capacity is 4 GB. 
     Further, CSn_DRAM_SIZE [0] output here is a bit indicating that the memory device is a 512-Mbit RAM, CSn_DRAM_SIZE [1] is a bit indicating that the memory device is a 1-Gbit RAM, and CSn_DRAM_SIZE [2] is a bit indicating that the memory device is a 2-Gbit RAM. 
     Likewise, CSn_DRAM_TYPE [1] output here is a bit indicating that the DIMM is a 512-Mbit RAM×36 (stacked type), and CSn_DRAM_TYPE [3] is a bit indicating that the DIMM is a 1-Gbit RAM×36 (stacked type). 
       FIG. 6  shows a logic description in Verilog-HDL describing the logic of the CS bit selector  36  incorporated into the system controller (SC)  30 A. The CS bit selector  36  takes as inputs SYS_ADD [35:31] as a portion of the system address, MAC [1:0] and BANK [1:0] from the MAR  32 , CS0_DIMM_SIZE [1, 2, 4], CS0_DRAM_SIZE [0, 1, 2], and CS0_DRAM_TYPE [1, 3] from one decoder  34 , and CS1_DIMM_SIZE [1, 2, 4], CS1_DRAM_SIZE [0, 1, 2], and CS1_DRAM_TYPE [1, 3] from the other decoder  34 . Then, the CS bit selector  36  outputs a CS conversion bit CS_SEL and DIMM control signals DIMM_SIZE [1, 2, 4], DRAM_SIZE [0:2], and DRAM_TYPE [1, 3]. 
     In  FIG. 6 , BNK_NO is a signal indicating whether the bank configuration is a single-bank configuration or a two-bank configuration. MAC_NO is a signal indicating whether the MAC configuration is a single-MAC configuration or a two-MAC configuration. MAC_BANK bits [11, 12, 21, 22] are signals indicating a single-MAC/single-BANK configuration, a single-MAC/two-BANK configuration, a two-MAC/single-BANK configuration, and a two-MAC/two-BANK configuration, respectively. 
     CS_ADD_SEL [31:35] indicates the reference bit position in the system address bits SYS_ADD [35:31] by which to determine whether the module to be accessed is the basic module (CS0) or the expansion module (CS1). CS_SEL output here is the signal that is set to 0 when the module to be accessed is the basic module (CS0) and to 1 when the module to be accessed is the expansion module (CS1). Further, DIMM_SIZE [1, 2, 4], DRAM_SIZE [0:2], and DRAM_TYPE [1, 3] output here indicate DIMM capacity, type of memory device, etc. for the basic module (CS0) or the expansion module (CS1), whichever is to be accessed. 
       FIG. 7  shows a logic description in Verilog-HDL describing the logic of the system address/MAC address conversion circuit  38  incorporated in the system controller (SC)  30 A. The system address/MAC address conversion circuit  38  converts the system address SYS_ADD [35:00] into the MAC address MAC_ADD [31:00], based on MAC [1:0] and BANK [1:0] supplied from the MAR  32  and on CS_SEL, DIMM_SIZE [1, 2, 4], DRAM_SIZE [0:2], and DRAM_TYPE [1, 3] supplied from the CS bit selector  36 . 
       FIG. 8  shows how the respective bits in SYS_ADD [35:00] are converted to the corresponding bits in MAC_ADD [31:00] by using the logic shown in  FIG. 7 . Numbers in the figure show the bits in MAC_ADD. As shown in  FIG. 8 , four SYS_ADD bits [03:00] are discarded. “MAC” and “BK” indicate address bits in interleave control. That is, “BK” is the bank address in the case of the two-bank configuration, and is output as MAC_ADD [31]. On the other hand, “MAC” indicates the MAC select address in the case of the two-MAC configuration. 
       FIG. 9  is a diagram explaining the conversion performed by the MAC address/DIMM address conversion circuit  42  in the memory access controller (MAC)  40 A. As shown, MAC_ADD [31] is converted to a bank select signal. MAC_ADD [30] is converted to a chip select signal that becomes necessary for the stacked type. MAC_ADD [29] is converted to a signal by which the memory module to be accessed is switched between the basic module and the expansion module. 
     MAC_ADD [28:26] is converted to a way address WA [2:0] within the DDR/DDR2-SDRAM. Here, WA [2] is enabled when the memory module is a 1-Gbit DDR2-SDRAM or higher. MAC_ADD [25:11] is converted to a row address RA [14:00], while MAC_ADD [10:00] is converted to a column address CA [11, 9:0]. In the present embodiment, CA [10] is a fixed value. 
       FIG. 10  is a diagram showing the mapping of the MAC address MAC_ADD [30:00] to memory device address inputs for various types of DIMM memory device. As shown in  FIG. 10 , MAC_ADD [30:00] provides an address that can access any type of memory device whether it be a 512-Mbit RAM or 1-Gbit RAM or 2-Gbit RAM. 
     By setting the types of memory module for the basic module and the expansion module as described above, it becomes possible to generate an address corresponding to a system address to the desired memory module, even in a configuration where memory modules having different address spaces are used in a mixed manner. 
     Then, the module configuration information written in a JEDEC (Joint Electron Device Engineering Council) standardized format to an EEPROM (Electronically Erasable and Programmable Read Only Memory) mounted on the memory module is read out by the hardware and automatically set as the DIMM information in the MAR; with this provision, any memory module can be added or replaced without any concern about its mounting configuration. 
     The invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The present embodiment is therefore to be considered in all respects as illustrative and not restrictive, the scope of the invention being indicated by the appended claims rather than by the foregoing description and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.