This application is a continuation application of International Application PCT/JP2010/058973 filed on May 27, 2010 and designated the U.S., the entire contents of which are incorporated herein by reference.
The embodiments discussed herein are related to memory system, a memory device and a memory interface device.
A high speed and large-capacity memory system is effective to improve a speed and processing ability of the information processing apparatus. For example, with the rapid adoption of virtualization of server system, a capacity of a memory which is equipped with existing server system is insufficient.
In addition, in order that the memory controller 102 performs to obtain the status and to set the status, etc. of each of the memory modules 110-0˜110-2, 110-3˜110-5, and 110-6˜110-8, the memory controller 102 connects to the three pieces of the memory modules 110-0˜110-2, 110-3110-5, and 110-6˜110-8 through three serial buses 114-0˜114-2. The serial buses 114-0˜114-2 are used a lower transmission speed bus compared to the memory bus. For example, I2C (Inter-Integrated Circuit) communication bus is used. In the I2C communication bus, a 3-bit identification is possible, and single I2C communication bus can connect up to eight memory modules.
The riser boards 120-0˜120-2 mounts on a memory buffer chip 122 for expansion memory and a plurality of memory modules 124-0˜124-3. In this example, single memory slot is extended to the four memory slots by the riser boards 124-0˜124-3. SPD (Serial Presence Detect) memories of each memory module are connected directly to the serial bus 114-0˜114-2. In addition, a RAM (Random Access Memory) of each memory modules 124-0˜124-3 is connected to the memory bus 112-0˜112-2 through the buffer memory chip 122. That is, it is possible to extend to four times of the memory capacity.
On the other hand, when power is applied to the computer system, a start-up process of the operating system (OS: Operating System), which is called as boot process, is started. The start-up process includes an initialization and a diagnostics of various hardware and incorporation of various hardware in a computer system by firmware such as BIOS (Basic Input Output System) and the OS.
The BIOS executes the initialization process of the memory through the serial buses 114-0˜114-2. In the initialization process, the BIOS reads specification information (hereinafter referred to as the SPD data) of the memory module which stored in a nonvolatile memory (hereinafter referred to as SPD (Serial Presence Detect) memory) mounted on the memory module, and the BIOS determines the operating speed, latency and an access timing of the memory module. Further, the BIOS performs setting of the operation of the memory controller and the initialization process of RAM (Random Access Memory) that is installed in the memory module based on the determined information.
In such a memory system, there is a possibility that system failure occurs due to erroneous mounting of the memory module because a load of the BIOS for performing memory initialization process makes heavy with increasing memory. In order to reduce the burden of memory initialization of the BIOS, it is proposed to provide a memory initialization control device, which collects the SPD data and checks the error with mounting of the memory in place of the BIOS, separately from the memory module.
Patent Document 1: Japanese Laid-open Patent Publication No. 2006-018487
As indicated as
In
The purpose of the present invention is to provide a memory system, a memory device and a memory interface device to increase the mounting number of memory device equipped with a plurality of memory modules.
According to an aspect of the embodiments, a memory system includes a plurality of memory circuits having a volatile memory and a non-volatile memory that stores specification information of input and output data of the volatile memory, a memory device having a memory interface circuit that is connected to the non-volatile memory in the plurality of memory circuits and a processing unit having a memory controller that controls data input and output of the volatile memory through a memory bus. And the memory interface circuit has a processing circuit that reads specification information of the non-volatile memory in the plurality of memory circuits through the control bus and determines whether or not the plurality of memory circuits satisfy requirements of memory expansion from the specification information of the plurality of memory circuits and a storage unit that is connected to processing unit through the control bus and stores a determination result of the processing circuit, and the processing unit reads the information stored from the storage unit through the control bus and executes an initialization process of the memory controller.
According to an aspect of the embodiments, a memory device includes a plurality of memory circuits having a volatile memory and a non-volatile memory that stores specification information of input and output data of the volatile memory, a memory interface circuit that is connected to a processing unit, that controls an input and output of data in the volatile memory through memory bus, via control bus and connected to the non-volatile memory in the plurality of memory circuits through the control bus. And the memory interface circuit has a processing circuit that reads specification information of the non-volatile memory in the plurality of memory circuits through the control bus and determines whether or not the plurality of memory circuits satisfy requirements of memory expansion from the specification information of the plurality of memory circuits and a storage unit that is connected to processing unit through the control bus and stores a determination result of the processing circuit for executing an initialization process by the processing unit.
According to an aspect of the embodiments, a memory interface device is connected to each of non-volatile memory in a plurality of memory circuits having a volatile memory and a non-volatile memory that stores specification information of input and output data of the volatile memory and is connected to a processing unit, that controls an input and output of data in the volatile memory through memory bus, via control bus. The memory interface circuit has a processing circuit that reads specification information of the non-volatile memory in the plurality of memory circuits through the control bus and determines whether or not the plurality of memory circuits satisfy requirements of memory expansion from the specification information of the plurality of memory circuits and a storage unit that is connected to processing unit through the control bus and stores a determination result of the processing circuit for executing an initialization process by the processing unit.
The object and advantages of the invention will be realized and attained by means of the elements and combinations part particularly pointed out in the claims.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention.
Hereinafter, embodiments will be described in the order of the first embodiment of the memory system, a virtual SPD memory, a process of match and expansion conversion of memory and the other embodiments of the memory system, but the disclosed memory system, the memory device, the memory interface device are not limited to these embodiments.
And the memory bus 20-0˜20-2 are constituted by high-speed memory transmission system of DDR (Double Data Rate) 2 specification 2/DDR3 specification. The serial bus 22-0˜22-2 are used bus of slow transmission speed compared with the memory bus. For example, I2C (Inter-Integrated Circuit) communication bus is used. The I2C communication bus is able 3-bit identification, and single I2C communication bus can connect up to eight memory modules.
Each of riser boards 1-0˜1-2, 1-3˜1-5 and 1-6˜1-8 is connected to three memory slots which are connected to the memory bus 20-0˜20-2 and the serial bus 22-0˜22-2.
Each of riser boards 1-0˜1-8 includes a memory buffer chip 12 for memory expansion, a plurality of memory modules 10-0˜10-3 and a memory interface circuit (referred to as virtual SPD memory) 14. Each of memory modules 10-0˜10-3 has a nonvolatile memory 70 (referred as SPD in
In the example of
The example of
When targeting single memory bus 20-0 and single serial bus 22-0 in the entire memory system of
The virtual SPD memory 14 connects to the memory controller 32 and the SPD memory 70 in each of memory modules 10-0˜10-2 by the serial bus 22-0. The SPD memory 70 is a nonvolatile memory which stores specification information (called to as SPD data: Serial Presence Detect Data) as described later. In addition,
As described below, the virtual SPD memory 14 collects the SPD data of the memory modules 10-0˜10-3 in the riser board, performs an integrity check of the data, executes conversion of memory expansion and stores expansion converted SPD data. That is, the virtual SPD memory 14 stores the SPD data which is an aggregated data of the SPD data in the SPD memory of four memory modules 10-0˜10-3 in the riser board.
Therefore, it is possible that the memory controller 32 recognizes a plurality of memory modules in the riser as if they were a single memory module. In other words, it is possible to extend the number of memory modules in spite of the limit on the number of connections of the serial bus 22-0. In addition, it is possible that the memory controller 32 omits the initialization process of the individual memory module in the riser board. Therefore, it is possible to reduce the load of the BIOS even though increasing the number of memory modules.
(Virtual SPD Memory)
As depicted by
The SPD readout sequencer 42 reads the SPD data in the SPD memory 70 of the memory modules 10-0˜10-3 to the SPD readout register 46 via the local SPD bus 44 of the same configuration as the serial bus 22-0. The SPD data check unit 48 judges whether or not the SPD data of each memory modules 10-0˜10-3 which were readout to the SPD readout register 46 are matched.
The SPD data memory expansion and conversion unit 50 performs the conversion of memory expansion such as address bit width form the SPD data of each of memory modules 10-0˜10-3 that have been read to the SPD readout register 46. The SPD write sequencer 52 writes data in the SPD readout register 46 into the SPD data storage unit 56 via the SPD command decode unit 54. In addition, the SPD command decode unit 54 connects to the serial bus 22-0 and performs a read access to the SPD data storage unit 56 and sends the data in the SPD data storage unit 56 to the serial bus 22, when receiving a slave address from the memory controller 32.
In addition, the SPD readout sequencer 42 has a SPD readout control unit 60 and a SPD bus control unit 62. The SPD readout control unit 60 issues local slave address LSA and word address WA of the memory modules 10-0˜10-3 to the SPD bus control unit 62, in response to a trigger signal Tr from the supply voltage monitoring circuit 40. The SPD bus control unit 62 sends read command RD including the local slave address LSA and the word address Wa which were issued to the SPD memory 70 of memory modules 10-0˜10-3 via the local bus 44.
The SPD write sequencer 52 has a SPD write control unit 64 and a SPD bus control 66. The SPD write control unit 64 issues a word address WA of the SPD data storage unit 66 to the SPD bus control unit 62, depending on the trigger signal Tr from the SPD data memory expansion and conversion unit 50. The SPD bus control unit 66 transmits a write command WD including the word address WA which was issued to the SPD command decode unit 54.
Next, referring to
When the SPD readout sequences 42 receives the trigger signal Tr, the SPD readout sequencer 42 starts collection of actual SPD data in the plurality of memory modules 10-0˜10-3 under the control of the memory buffer chip 12 (referring to
The SPD bus control unit 62 receives the local SPD slave address LSA and the SPD word address WA from the SPD readout control unit 60, generates a SPD read command RD, and sends the command to the local SPD bus 44. Thereby, the SPD data in the specified SPD memory device 70 is read and sequentially stored in the SPD readout data register 46 via the local SPD bus 44. The SPD readout sequencer 42 repeats this process and collects all SPD data in all SPD memory 70 into the SPD readout data register 46 (referring to step S20 in
After the SPD data collected is temporarily stored in the SPD readout data register 46, the SPD data check unit 48 checks the integrity of the data. The integrity check is to check whether or not the memory modules 10-0˜10-3 under the control of the memory buffer chip 12 meet the requirements for memory expansion.
There are two type of integrity checks, that is, one is to judge matching and another is to calculate common timing. In matching judgment, checking is performed whether the memory capacity is same and whether the operation speed aligned. In calculation of the common timing, checking is performed whether there is variation in the timing characteristics and performed data processing to absorb the variation when there is the variation (referring to step S22, S24 in
As described below in
Therefore, it is preferable that matching judgment logic in the SPD data check unit 48 implements the programmable PLD (Programable Logic Device), or to have multiple modes. This allows flexibility in each expansion method.
In addition, as described in
When there is a problem with the integrity check by the matching determination of the SPD data, that is, when a memory module that does not meet the requirements for memory expansion is mounted on the riser board 1-0 in error, the SPD data check unit 48 logs the result of the check error as an error log to the reserved bit in the SPD data storage unit 56 (referring to step S30 in
On the other hand, the SPD data check unit 48, when calculating the maximum value as a common timing, updates corresponding entry fields in the SPD data storage unit 56 to the maximum value.
When the SPD data check unit 46 determines that there is no problem with the integrity of the match by judging of match in the SPD data, the SPD data memory expansion conversion unit 50 expands and converts the SPD data (referring to step S26 in
As will be described below in
When the memory expansion conversion unit 50 has completed all expansion conversion processes, the memory expansion conversion unit 50 rewrites the converted value to the corresponding field in the SPD readout data register 46. And memory expansion conversion unit 50 outputs a trigger signal Tr to the SPD write sequencer 52. When the SPD write sequencer 52 receives the trigger signal Tr, the SPD write sequencer 52 writes the SPD data (as indicated by
That is, the SPD write control unit 64 in the SPD write sequencer 52 generates a SPD word address WA of the SPD data storage unit 56. The SPD bus control unit 66 receives the SPD word address WA from the SPD write control unit 64, generates a SPD write command WT, and transmits the write command to the SPD command decode unit 54 (referring to step S28 in
The SPD command decode unit 54 decodes the SPD write command and writes the data in the SPD readout register 46 which is specified by the word address into the SPD data storage unit 56. The SPD write sequencer 52 repeats this process and creates one virtual SPD memory in the SPD data storage unit 56.
The SPD data storage unit 56 is provided with a same address map and same data format as the real SPD memory 70. Thus, it is possible that the BIOS accesses the virtual SPD memory unit 56 through the serial bus 22-0 in the same way as the actual SPD memory 70. That is, without having to change the BIOS, the memory expansion is possible.
Next, the process of the virtual SPD memory and the BIOS will be explained according to
(S10) In response to the power-on, the boot process for start-up of the OS in the CPU30 starts. In addition, the creation process of the virtual SPD memory by the virtual SPD memory 14 described above is started.
(S12) In the boot process of the CPU30, the settings of the chip sets of the CPU 30 and the peripheral circuits including the memory system are performed. Then, the boot process performs adjustments of the bus. And then, the boot process performs the internal settings of the processor in the CPU30.
(S14) When the boot process in step S12 is successful, a reset of the processor is released.
(S16) When releasing the reset of the processor, the processor starts the BIOS.
(S32) The BIOS executed by the CPU30 reads the SPD data in the SPD data storage unit 56 of the SPD virtual memory 14 in the riser board 1-0 (1-1 to 1-8) through the serial bus 22-0. As described in the steps S20˜S30, when the SPD virtual memory 14 detected the power-on, the SPD virtual memory 14 has executed the initialization process of the memory modules 11-011-3 in the riser board 1-0 (1-1˜1-8) and stored a result of the process in the SPD data storage unit 56.
Accordingly, the BIOS can performs memory recognition process of the SPD data of the memory modules 10-0˜10-3 in the riser board 1-0 (1-1 to 1-8) by once reading. Therefore, it is possible to reduce the load of the BIOS for the recognition process of the memory. In other words, it is possible to reduce the initialization time of the BIOS. Of course, when equipped with a mixed the riser board and the memory module (referring to
(S34) Next, the BIOS performs SPD data processing. The BIOS determines the operating speed, latency, and access timing of the memory modules in the riser board, based on the SPD data read from the virtual SPD memory 14 in each of the riser boards. In this case, since the determination of the access timing in the riser board is terminated, the BIOS determines only access timing between the riser boards.
Therefore, because the BIOS do not need to perform the extended conversion of the SPD data, it is possible to reduce the processing load of the SPD data in the BIOS. In other words, it is possible to reduce the initialization time of the BIOS.
(S36) The BIOS performs an operating setting of the memory controller 32 and initialization processing of the RAM72 which is mounted on the memory module based on the determined information.
(Matching and Expansion/Conversion Process of the Memory)
Next, the matching and expansion/conversion process as described above will be explained in detail.
As illustrated as
For example, byte 0 defines total byte number of the SPD data/number of valid bytes/CRC (Cyclic Redundancy Code) protection width. In addition, byte 1 defines the version number of the SPD. SPD data item of determined target which is required aforementioned match is indicated by “necessary” in
In other words, the SPD data items of the target to be required match determination are the DRAM device type in byte 2, the module type in byte 3, a module voltage in byte 6, module bus width in 8 byte, the CRC code of the SPD in bytes 126-127.
The DRAM (Dynamic Random Access Memory) device type in the byte 2, specifies whether the memory module is DDR2 specification or DDR 3 specification or other specification. The module type in the byte 3 specifies whether the type of memory module is a RDIMM (Registered Dual Inline Memory Module) or a UDIMM (Unbuffered Dual Inline Memory Module). The module voltage in byte 6 defines as the value of the operating voltage of the memory module. The module bus width in byte 8 defines the bus width of the memory module. The CRC code of the SPD in bytes 126-127 defines as CRC code value of the SPC data (CRC value of 0˜116 bytes or CRC value of 0˜125 bytes).
If these SPD data do not match with each of the memory modules, the memory modules becomes inoperable. The SPD data check unit 48 as described above compares whether the SPD data items match between each of the memory modules and determines the match. When the SPD data check unit 48 detects an item that do not match, the SPD data check unit 48 logs an error as an incorrect implementation as described above.
In addition, the SPD data item of the judgment item which is selected matching is indicated as “[necessary]” in
These items in which the match are selected are selected due to characteristics of the buffer memory 12 or when performing the operation of simultaneously read (called to Lockstep) of the memory modules and the operation of duplex. For example, it is necessary that memory modules which become a pair are same specification.
On the other hand, the SPD data items that are used to calculate the common timing in the integrity check are indicated by “necessary” in column of common timing calculation in
In these specification regarding to the timing and the speed of the memory module, there is some deviation width of the timing characteristics between the memory modules of same speed specification due to variations of the semiconductor. In order to absorb the deviation width, the common timing calculation compares the timing characteristics of the individual memory modules, and calculates the timing specification which is valid for all memory modules. In this example, as described in the processing content of
In
Similarly, the latency measure items are indicated by “necessary” in column of the latency measure items in
As indicated by
Depending on each of DRAM capacity and the DRAM configuration, the row address bit width (RA) and the column address bit width (CA) are set. The row address bit width is up to 16 bits in maximum, and the column address bit width is up to 12 bits in maximum.
For example, 512 Mbit capacity of DRAM uses 13 bits of the row address bit width and 1 Gbit capacity of DRAM uses 14 bits of the row address bit width. Also, 2 Gbit capacity of DRAM uses 15 bits of the row address bit width, and each of 4 G bits, 8 Gbits and 16 Gbits capacity of DRAM use 16 bits row address bit width.
In addition, the *8-bit construction DRAM of which the capacity is 512 Mbit, 1 Gbit, 2 Gbit, 4 Gbit use 10 bits of the column address bit width. The *4-bit construction DRAM of which the capacity is 512 Mbit, 1 Gbit, 2 Gbit, 4 Gbit use 10 bits of the column address bit width. The *8-bit DRAM configuration of which the capacity is 8 Gbit uses 11 bits of the column address bit width. The *4-bit construction DRAM of which the capacity is 8 Gbit and the 16 Gbit capacity DRAM uses 12 bits of the column address bit width.
Expansion processing of RA/CA bit by the SPD data memory expansion and conversion unit 50 will be explained by using
(S40) The SPD data memory expansion and conversion unit 50 sets the number of virtual rank (Rank). The number of virtual rank indicates the number of virtual rank of the riser board, and is normally smaller than the number of actual ranks.
(S42) The SPD data memory expansion and conversion unit 50 calculates the number of bits required extension from the difference between the number of virtual ranks and the total number of real ranks. For example, when the number of the virtual ranks=2 and the total number of the real ranks=8, the number of bits required extension is 2 bits (=3−1) from the number of the virtual ranks=2 (=a power of 2 (information content=1 bit) and the total number of the actual ranks=8 (a cube of 2 (information contents=3 bit).
(S44) The SPD data memory expansion and conversion unit 50 adds the number of bits required extension to the row address width (RA) of the actual SPD data in byte 5 in
(S46) The SPD data memory expansion and conversion unit 50 determines whether or not the row address width which is calculated is equal or less than 16 bits which is the maximum width of the row address. Then, when the SPD data memory expansion and conversion unit 50 determines that the row address width which is calculated is equal or less than 16 bits which is the maximum width, the SPD data memory expansion and conversion unit 50 rewrites corresponding fields of the SPD readout register 46 by the row address width which is calculated and exit the processing.
(S48) On the other hand, when the SPD data memory expansion and conversion unit 50 determines that the row address width which is calculated is not equal or less than 16 bits which is the maximum width, that is, when the row address which is calculated is beyond 16 bits which is maximum width, the SPD data memory expansion and conversion unit 50 determines whether or not the row address width which is calculated is 17 bits.
(S50) When the SPD data memory expansion and conversion unit 50 determines that the row address width which was calculated is 17 bits, the SPD data memory expansion and conversion unit 50 expands the width of column address. That is, the SPD data memory expansion and conversion unit 50 adds 1 bit to the width of column address (CA) of the actual SPD data in byte 5 of
(S52) On the other hand, when the SPD data memory expansion and conversion unit 50 determines that the width of row address which was calculated is not 17 bits, the SPD data memory expansion and conversion unit 50 determines that the extension is not possible, rewrites the corresponding field in the SPD readout register 46 to an error log, and exits the processing.
As described in
In the example, the SPD data memory expansion and conversion unit 50 re-calculates the CRC up to 0-116 bytes of the SPD data (after expansion and conversion) in
As described above, the SPD readout register 46 holds the SPD data with the fields of 0-255 bytes as indicated by
Therefore, the BIOS can performs memory recognition process of the SPD data of the memory modules 10-0˜10-3 in the riser board 1-0 (1-1 to 1-8) by once reading. Therefore, it is possible to reduce the load of the BIOS for the recognition process of the memory. In other words, it is possible to reduce the initialization time of the BIOS.
That is, the bus switch 16 is provided to each of riser board 1-0˜1-2, the memory controller 32 accesses the virtual SPD memory 14 by switching the bus switch 16 according to an address of the memory controller 32. In addition, the memory controller 32 can also access the SPD memory 70 in the memory modules 10-0˜10-2.
15, the memory controller 32 in the CPU30 connects to the virtual SPD memory 14 via the serial bus 22-0. The virtual SPD memory 14 has a bus switch 18. The bus switch 18 connects to the SPD memory 70 in the memory modules 10-010-2.
The bus switch 18 is provided in the virtual SPD memory 14 of the riser board 1-0˜1-2, the memory controller 32 can access the SPD memory in the memory module 10-0˜10-2 by switching the bus switch 18 according to an address from the memory controller 32.
The configuration examples in
By integrating the virtual SPD memory 14 in the memory buffer chip 12, it is possible to reduce the LSI (Large Scaled Integrated) chip in the riser board.
The virtual SPD memory 14 has a ROM (Read Only Memory) 24 that stores the logical data of check of the SPD data and of expansion and conversion of the SPD data and a PLD (Programable and a Logic Device) 26 that programmable-changes a check logic and a expansion and conversion logic according to the logical data in the RAM 24.
This configuration can programmable-changes a the SPD data check unit 48 and the SPD data expansion and conversion unit 50 as described in
The virtual SPD memory 14A has a function of checking (detecting of match) of the SPD data and has not the functions of the common timing of the SPD data and of the expansion and conversion of the SPD data. An error log of the data check of the virtual SPD memory 14A is logged in the empty space of the storage section of the virtual SPD memory 14A. Then, the BIOS accesses the real SPD memory 70 in the memory modules 10-0˜10-2 as usual and performs memory initialization process.
According to this configuration, the virtual SPD memory 14A can be equipped to the riser 1-0 of other manufacturers without changing the riser 1-0 of the other manufacturers. In addition, since the virtual SPD memory 14A performs the data check of the SPD data instead of the BIOS, it is possible to reduce the load of the BIOS.
In the above embodiment, memory circuit has been described in the DIMM, but it may be applied memory module circuits of other configurations. Also the memory bus has been described in the example of DDR 3 in the time-division address and command transmission scheme, but the memory bus can be applied the other time-division address and command transmission scheme such as DDR or DDR2. In addition, the control bus has been described the I2C bus, the control bus can be applied to other forms of control bus.
The present invention has been described by the embodiments, but within the scope of the spirit of the present invention, the present invention can modify various form, and it is not intended to exclude them from the scope of the present invention.
All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiments of the present invention has been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.
Number | Date | Country | |
---|---|---|---|
Parent | PCT/JP2010/058973 | May 2010 | US |
Child | 13655893 | US |