A method according to the invention ensures optimal memory configuration in a computer: A determination is made whether performance can be improved by rearranging the dimms that are installed in the computer. If so, then a user of the computer is notified that the dimms can be rearranged to improve performance.
|
9. A method of ensuring optimal memory configuration in a computer having dimms, comprising:
detecting if a dimm slot population state has changed; if not,
detecting if a non-volatile bit is set; if so:
detecting that the dimms in the computer can be rearranged to improve performance by at least moving an installed dimm from a first slot to a second slot;
displaying a message indicating that performance can be improved by rearranging the dimms; and
clearing the non-volatile bit.
18. A method of ensuring optimal memory configuration in a computer, comprising:
detecting that a hardware configuration has changed;
determining whether performance can be improved by rearranging dimms that are installed in the computer by at least moving an installed dimm from a first slot to a second slot, and, if so:
changing the status of a non-volatile bit to control a detection of the dimm slot population state during a subsequent boot procedure; and
notifying a user of the computer that the installed dimms can be rearranged to improve performance.
13. Storage media containing program code operable to cause a computer having dimms to perform a method of ensuring optimal memory configuration in the computer, the method comprising:
detecting that a hardware configuration has changed;
detecting that a dimm slot population state has changed;
detecting that the dimms in the computer can be rearranged to improve performance by at least moving an installed dimm from a first slot to a second slot and, if so, changing a status of a non-volatile bit; and
displaying a message indicating that performance can be improved by rearranging the dimms.
1. A method of ensuring optimal memory configuration in a computer, comprising:
during a boot procedure,
detecting that a hardware configuration has changed since a previous boot procedure, and:
determining whether performance can be improved by rearranging dimms that are installed in the computer by at least moving an installed dimm from a first slot to a second slot; and, if so:
changing a status of a non-volatile bit to control a detection of the dimm slot population state during a subsequent boot procedure; and
notifying a user of the computer that the installed dimms can be rearranged to improve performance.
3. A method of ensuring optimal memory configuration in a computer having dimms, comprising:
during a first boot procedure:
detecting that a hardware configuration or a dimm slot population state has changed since a previous boot procedure;
detecting that the dimms in the computer can be rearranged to improve performance; by at least moving an installed dimm from a first slot to a second slot;
displaying a message indicating that performance can be improved by rearranging the dimms; and
changing the status of a non-volatile bit to control a detection of the dimm slot population state during a subsequent boot procedure.
20. A method of ensuring optimal memory configuration in a computer, comprising:
during a boot procedure, detecting whether a hardware configuration has changed since a previous boot procedure;
determining whether a non-volatile bit is set, and if the non-volatile bit is set:
determining whether performance can be improved by rearranging dimms that are installed in the computer by at least moving an installed dimm from a first slot to a second slot;
notifying a user of the computer that the installed dimms can be rearranged to improve performance; and
clearing the non-volatile bit; and
if the non-volatile bit is not set, continuing with a boot procedure.
17. A method of ensuring optimal memory configuration in a computer having dimms, comprising:
during a first boot procedure:
detecting that a hardware configuration or a dimm slot population state has changed since a previous boot procedure;
detecting that the dimms in the computer can be rearranged to improve performance by at least moving an installed dimm from a first slot to a second slot; and
displaying a message indicating that performance can be improved by rearranging the dimms;
during a second boot procedure:
detecting that no hardware configuration or dimm slot population state has changed since the first boot procedure; and
displaying the message again.
6. Storage media containing program code operable to cause a computer having dimms to perform a method of ensuring optimal memory configuration in the computer, the method comprising:
during a first boot procedure:
detecting that a hardware configuration or a dimm slot population state has changed since a previous boot procedure;
detecting that the dimms in the computer can be rearranged to improve performance by at least moving an installed dimm from a first slot to a second slot;
displaying a message indicating that performance can be improved by rearranging the dimms; and
changing the status of a non-volatile bit to control a detection of the dimm slot population state during a subsequent boot prodecure.
2. Storage media containing program code operable to cause a computer to perform a method of ensuring optimal memory configuration in the computer, the method comprising:
during a boot procedure:
detecting that a hardware configuration has changed since a previous boot procedure;
determining whether performance can be improved by rearranging dimms that are installed in the computer by at least moving an installed dimm from a first slot to a second slot; and if so:
changing a status of a bit in a non-volatile memory to control a detection of the dimm slot population state during a subsequent boot procedure; and
notifying a user of the computer that the installed dimms can be rearranged to improve performance.
19. A method of ensuring optimal memory configuration in a computer, comprising:
during a boot procedure:
detecting whether a hardware configuration has changed since a previous boot procedure, and if the hardware configuration has changed:
determining whether performance can be improved by rearranging dimms that are installed in the computer by at least moving an installed dimm from a first slot to a second slot;
notifying a user of the computer that the installed dimms can be rearranged to improve performance; and
setting a non-volatile bit; and
if the hardware configuration has not changed:
determining if a dimm slot population has changed, and, if so:
determining whether performance can be improved by rearranging the dimms by at least moving an installed dimm from the first slot to the second slot;
notifying a user of the computer that the installed dimms can be rearranged to improve performance; and
clearing the non-volatile bit.
4. The method of
during a second boot procedure:
detecting that no hardware configuration or dimm slot population state has changed since the first boot procedure; and
displaying the message again.
5. The method of
during a third boot procedure:
detecting that no hardware configuration or dimm slot population state has changed since the second boot procedure; and
not displaying the message again until a hardware configuration or dimm slot population state change is detected during a subsequent boot procedure.
7. The storage media of
during a second boot procedure:
detecting that no hardware configuration or dimm slot population state has changed since the first boot procedure; and
displaying the message again.
8. The storage media of
during a third boot procedure:
detecting that no hardware configuration or dimm slot population state has changed since the second boot procedure; and
not displaying the message again until a hardware configuration or dimm slot population state change is detected during a subsequent boot procedure.
10. The method of
determining a number of matching dimm pairs installed in the computer.
11. The method of
creating one slot table for each dimm slot in the computer;
populating each slot table with one or more values from SPD bytes of a dimm that is installed in a dimm slot corresponding to the slot table;
creating a dimm match table;
populating the dimm match table with pairs of pointers to the slot tables; and
for each pair of pointers in the dimm match table, comparing the values in the slot tables indicated by the pair of pointers.
12. The method of
retrieving SPD bytes from a dimm responsive to offset information stored in an SPD byte offset table.
14. The storage media of
determining a number of matching dimm pairs installed in the computer.
15. The storage media of
creating one slot table for each dimm slot in the computer;
populating each slot table with one or more values from SPD bytes of a dimm that is installed in a dimm slot corresponding to the slot table;
creating a dimm match table; populating the dimm match table with pairs of pointers to the slot tables; and
for each pair of pointers in the dimm match table, comparing the values of the slot tables indicated by the pair of pointers.
16. The storage media of
retrieving SPD bytes from a dimm responsive to offset information stored in an SPD byte offset table.
|
This invention relates generally to computer systems, and more particularly to memory configuration in computer systems.
In most computer systems, a memory controller provides an interface between main memory and many of the other components of the system including the CPU. Such a memory controller typically is responsible for handling data flow to and from main memory and governs support for different types, sizes and speeds of memory devices. For many years, most memory controllers were of the single-channel variety. Recently, however, dual-channel memory controllers have risen in popularity. Dual-channel memory controllers typically support similar types, sizes and speeds of memory devices as did single-channel controllers, but dual-channel controllers increase bandwidth by adding a second data path to and from the devices.
While dual-channel controllers provide a performance benefit relative to single-channel controllers, they also impose certain limitations on memory configuration: Usually, dual-channel memory controllers require that the slots of channel A be populated identically with the slots in channel B. In other words, if a slot in channel A is populated with a dual inline memory module (“DIMM”) having certain size and speed characteristics, then the corresponding slot in channel B must be populated with a DIMM having the same size and speed characteristics as that in channel A. If not, then either the system will hang or the memory controller will default to single-channel operation. Either result deteriorates system performance.
A method according to a preferred embodiment of the invention ensures optimal memory configuration in a computer.
In one aspect, a determination is made whether performance can be improved by rearranging the DIMMs that are installed in the computer. If so, then a user of the computer is notified that the DIMMs can be rearranged to improve performance.
In another aspect, during a first boot procedure, the computer detects that a hardware configuration or a DIMM slot population state has changed since a previous boot procedure. The computer then detects that the DIMMs in the computer can be rearranged to improve performance. The computer then displays a message indicating that performance can be improved by rearranging the DIMMs.
In another aspect, during a second boot procedure, the computer detects that no hardware configuration or DIMM slot population state has changed since the first boot procedure and displays the message again.
In another aspect, during a third boot procedure, the computer detects that no hardware configuration or DIMM slot population state has changed since the second boot procedure and does not display the message again until a hardware configuration or DIMM slot population state change is detected during a subsequent boot procedure.
Referring now to
If a hardware configuration change is not detected in step 204, then the computer may determine in step 206 whether a DIMM slot population state change has occurred. A DIMM slot population state change is defined herein to include a DIMM slot becoming populated whereas before it was unpopulated, or becoming unpopulated whereas before it was populated. A DIMM slot population state change also includes a DIMM slot becoming populated with a DIMM having first characteristics whereas before it was populated with a DIMM having second characteristics, and wherein the first and second characteristics differ. A DIMM slot population state change may or may not constitute a hardware configuration change.
If either a hardware configuration change or a DIMM slot population state change is detected in steps 204 or 206, then the computer may determine in step 208 or step 210 whether the DIMMs in the computer can be rearranged to improve performance—again, for example, by causing the computer to run in dual-channel mode rather than in single-channel mode.
The determination made in steps 208 and 210 may be implemented in a variety of ways. One preferred way is illustrated by the method 300 of
In step 306, the method determines how many matching pairs of DIMMs exist among the installed DIMMs. This determination may be made in a variety of ways. One preferred way is to access the information stored in the serial presence detect (“SPD”) bytes of the installed DIMMs. Specifically, four of the SPD bytes may be compared among the DIMMs: number of rows, number of columns, number of sides, and width. If this information is byte-for-byte equal as between two DIMMs being compared, then the method may conclude that the two DIMMs constitute a matching pair for the purposes of dual-channel memory operation.
Although numerous techniques may be employed to determine the number of matching pairs of DIMMs that exist among the installed DIMMs,
A DIMM match table 410 may be used to facilitate determining the number of matching DIMM pairs using tables 400-406. Table 410 maybe loaded with pointers to tables 400-406 in various combinations. (An example set of combinations is shown by entries 412-426.) Once this had been done, the number of matching DIMM pairs can be determined simply by walking table 410 and considering its entries two at a time: Considering entries 412 and 414 would lead to a comparison of the information in tables 400 and 402. Considering entries 416 and 418 would lead to a comparison of the information in tables 400 and 406, and so on. For each set of tables compared, a match counter may be incremented or not depending on the outcome of the comparison. Once table 410 has been traversed, the value of the match counter will indicate the number of matches found among the tested pairs. Depending on the application and the characteristics of the host computer, table 410 may be implemented to contain more of fewer pairs of pointers, and the slot pairs indicated by the table may be varied as appropriate.
The results of step 306 are used in steps 308 and 310. In step 308, method 300 determines whether the number of installed DIMMs equals 2 and whether the number of matching pairs found equals 1. If so, then dual-channel operation is possible, and the method indicates so in step 316 and returns in step 318. If not, then the method determines in step 310 whether the number of installed DIMMs equals 4 and whether the number of matching pairs found equals 2. If so, then again dual-channel operation is possible. The method would indicate so in step 312 and would return in step 318. But if not, then dual-channel operation is not possible, so the method would indicate in step 314 that the current memory configuration is optimal and would return in step 318.
Referring again to
In another aspect of the invention, the notification messages maybe presented more than once if the user seems not to have responded to a first notification message, and then may be suppressed thereafter to avoid annoying the user. For example, assume a notification message was presented during a first boot procedure. Then, after the computer has been rebooted and a second boot procedure is in progress, the computer may detect that no hardware configuration has changed and that no DIMM slot population states have changed since the first boot procedure. If so, then the method may issue a notification message one more time to ensure that the user has seen it and has had an opportunity to respond. But if the computer is rebooted a third time and the third boot procedure detects no hardware configuration or DIMM slot population state changes, then the notification message may be suppressed until a hardware configuration or DIMM slot population state change is detected on a subsequent boot.
This functionality may be implemented in a variety of ways. In the example of
As in the case of the method of
While the invention has been described in detail with reference to preferred embodiments thereof, the described embodiments have been presented by way of example and not by way of limitation. It will be understood by those skilled in the art that various changes may be made in the form and details of the described embodiments without deviating from the spirit and scope of the invention as defined by the appended claims.
Piwonka, Mark A., Volentine, Robert J., Gibbons, Patrick L.
Patent | Priority | Assignee | Title |
11068278, | Oct 18 2019 | Dell Products L.P. | Dual inline memory module with multiple boot processes based on first and second environmental conditions |
8639879, | Mar 25 2010 | LENOVO INTERNATIONAL LIMITED | Sorting movable memory hierarchies in a computer system |
Patent | Priority | Assignee | Title |
5960462, | Sep 26 1996 | Intel Corporation | Method and apparatus for analyzing a main memory configuration to program a memory controller |
6226720, | Dec 11 1998 | International Business Machines Corporation | Method for optimally configuring memory in a mixed interleave system |
6356986, | Sep 26 1996 | Intel Corporation | Method and apparatus for analyzing a main memory configuration |
6590781, | May 10 2000 | Rambus, Inc.; Rambus Inc | Clock routing in multiple channel modules and bus systems |
6792561, | Oct 20 1999 | Kabushiki Kaisha Toshiba | Apparatus and method for controlling access to expansion memory for a computer system |
7024547, | Dec 10 2001 | Intel Corporation | Method and system for initializing a hardware device |
7096349, | Dec 16 2002 | GLOBALFOUNDRIES Inc | Firmware algorithm for initializing memory modules for optimum performance |
20030023841, | |||
20040064686, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 30 2004 | Hewlett-Packard Development Company, L.P. | (assignment on the face of the patent) | / | |||
Aug 12 2004 | VOLENTINE, ROBERT J | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 015066 | /0138 | |
Aug 12 2004 | PIWONKA, MARK A | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 015066 | /0138 | |
Aug 12 2004 | GIBBONS, PATRICK L | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 015066 | /0138 |
Date | Maintenance Fee Events |
Sep 06 2013 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Apr 21 2017 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Nov 01 2021 | REM: Maintenance Fee Reminder Mailed. |
Apr 18 2022 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Mar 16 2013 | 4 years fee payment window open |
Sep 16 2013 | 6 months grace period start (w surcharge) |
Mar 16 2014 | patent expiry (for year 4) |
Mar 16 2016 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 16 2017 | 8 years fee payment window open |
Sep 16 2017 | 6 months grace period start (w surcharge) |
Mar 16 2018 | patent expiry (for year 8) |
Mar 16 2020 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 16 2021 | 12 years fee payment window open |
Sep 16 2021 | 6 months grace period start (w surcharge) |
Mar 16 2022 | patent expiry (for year 12) |
Mar 16 2024 | 2 years to revive unintentionally abandoned end. (for year 12) |