IP Library Granted Patent US 9,043,586
Granted Patent B2
US 9,043,586 · App. 13/332,092 · Granted May 26, 2015

Memory training results corresponding to a plurality of memory modules

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,043,586
App. No.
13/332,092
Granted
May 26, 2015
Kind
B2
Abstract

Methods, apparatuses, and computer program products for improving memory training results corresponding to a plurality of memory modules are provided. Embodiments include detecting a hardware configuration change upon initiating a boot sequence of a system that includes the plurality of memory modules; generating for a plurality of training iterations, reference training values corresponding to aligning of a data strobe (DQS) signal with a data valid window of data (DQ) lines of the plurality of memory modules; identifying for each training iteration, any outer values within the reference training values generated for that training iteration; eliminating the identified outer values from the reference training values; generating a final reference training value based on an average of the remaining reference training values; and using the final reference training value as the DQ-DQS timing value for the boot sequence of the system.

Claims (67)

1. A method of improving memory training results corresponding to a plurality of memory modules, the method comprising:

detecting, by a training controller, a hardware configuration change upon initiating a boot sequence of a system that includes the plurality of memory modules;

generating for a plurality of training iterations, by the training controller, reference training values corresponding to aligning of a data strobe (DQS) signal with a data valid window of data (DQ) lines of the plurality of memory modules;

identifying for each training iteration, by the training controller, any outer values within the reference training values generated for that training iteration;

eliminating, by the training controller, the identified outer values from the reference training values;

generating, by the training controller, a final reference training value based on an average of the remaining reference training values; and

using, by the training controller, the final reference training value as the DQ-DQS timing value for the boot sequence of the system.

2. The method of claim 1 further comprising:

generating, by the training controller, training values upon initiation of a subsequent boot sequence;

determining, by the training controller, whether the training values are within acceptable limits of the final reference training value;

if the training values are within the acceptable limits, using, by the training controller, the final reference training value as the DQ-DQS timing value in the subsequent boot sequence; and

if the training values are not within the acceptable limits, using, by the training controller, an average of the training values as the DQ-DQS timing value in the subsequent boot sequence.

3. The method of claim 1 further comprising:

generating, by the training controller, training values upon initiation of a subsequent boot sequence;

determining, by the training controller, whether the training values are within acceptable limits of the final reference training value;

if the training values are within the acceptable limits, continuing to generate, by the training controller, the training values until the training values are within the acceptable limits; and

if the training values are not within the acceptable limits, using, by the training controller, an average of the training values as the DQ-DQS timing value in the subsequent boot sequence.

4. The method of claim 1 wherein identifying for each training iteration, by the training controller, outer values within the reference training values includes:

identifying low outer values that are less than a predetermined minimum value; and

identifying high outer values that are greater than a predetermined maximum value.

5. The method of claim 1 further comprising for each training iteration, changing, by the training controller, a fan speed corresponding to cooling of one or more components of the system that includes the plurality of memory modules.

6. The method of claim 1 further comprising for each training iteration, changing, by the training controller, a direct current cycle loop of the system that includes the plurality of memory modules.

7. An apparatus for improving memory training results corresponding to a plurality of memory modules, the apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that when executed cause the apparatus to carry out the steps of:

detecting, by a training controller, a hardware configuration change upon initiating a boot sequence of a system that includes the plurality of memory modules;

generating for a plurality of training iterations, by the training controller, reference training values corresponding to aligning of a data strobe (DQS) signal with a data valid window of data (DQ) lines of the plurality of memory modules;

identifying for each training iteration, by the training controller, any outer values within the reference training values generated for that training iteration;

eliminating, by the training controller, the identified outer values from the reference training values;

generating, by the training controller, a final reference training value based on an average of the remaining reference training values; and

using, by the training controller, the final reference training value as the DQ-DQS timing value for the boot sequence of the system.

8. The apparatus of claim 7 further comprising computer program instructions that when executed cause the apparatus to carry out the steps of:

generating, by the training controller, training values upon initiation of a subsequent boot sequence;

determining, by the training controller, whether the training values are within acceptable limits of the final reference training value;

if the training values are within the acceptable limits, using, by the training controller, the final reference training value as the DQ-DQS timing value; and

if the training values are not within the acceptable limits, using, by the training controller, an average of the training values as the DQ-DQS timing value.

9. The apparatus of claim 7 further comprising computer program instructions that when executed cause the apparatus to carry out the steps of:

generating, by the training controller, training values upon initiation of a subsequent boot sequence;

determining, by the training controller, whether the training values are within acceptable limits of the final reference training value;

if the training values are within the acceptable limits, continuing to generate, by the training controller, the training values until the training values are within the acceptable limits; and

if the training values are not within the acceptable limits, using, by the training controller, an average of the training values as the DQ-DQS timing value.

10. The apparatus of claim 7 wherein identifying for each training iteration, by the training controller, outer values within the reference training values includes:

identifying low outer values that are less than a predetermined minimum value; and

identifying high outer values that are greater than a predetermined maximum value.

11. The apparatus of claim 7 further comprising computer program instructions that when executed cause the apparatus to carry out the steps of for each training iteration, changing, by the training controller, a fan speed corresponding to cooling of one or more components of the system that includes the plurality of memory modules.

12. The apparatus of claim 7 further comprising computer program instructions that when executed cause the apparatus to carry out the steps of for each training iteration, changing, by the training controller, a direct current cycle loop of the system that includes the plurality of memory modules.

13. A computer program product for improving memory training results corresponding to a plurality of memory modules, the computer program product disposed upon a non-transitory computer readable medium, the computer program product comprising computer program instructions capable, when executed, of causing a computer to carry out the steps of:

detecting, by a training controller, a hardware configuration change upon initiating a boot sequence of a system that includes the plurality of memory modules;

generating for a plurality of training iterations, by the training controller, reference training values corresponding to aligning of a data strobe (DQS) signal with a data valid window of data (DQ) lines of the plurality of memory modules;

identifying for each training iteration, by the training controller, any outer values within the reference training values generated for that training iteration;

eliminating, by the training controller, the identified outer values from the reference training values;

generating, by the training controller, a final reference training value based on an average of the remaining reference training values; and

using, by the training controller, the final reference training value as the DQ-DQS timing value for the boot sequence of the system.

14. The computer program product of claim 13 further comprising computer program instructions capable, when executed, of causing a computer to carry out the steps of:

generating, by the training controller, training values upon initiation of a subsequent boot sequence;

determining, by the training controller, whether the training values are within acceptable limits of the final reference training value;

if the training values are within the acceptable limits, using, by the training controller, the final reference training value as the DQ-DQS timing value; and

if the training values are not within the acceptable limits, using, by the training controller, an average of the training values as the DQ-DQS timing value.

15. The computer program product of claim 13 further comprising computer program instructions capable, when executed, of causing a computer to carry out the steps of:

generating, by the training controller, training values upon initiation of a subsequent boot sequence;

determining, by the training controller, whether the training values are within acceptable limits of the final reference training value;

if the training values are within the acceptable limits, continuing to generate, by the training controller, the training values until the training values are within the acceptable limits; and

if the training values are not within the acceptable limits, using, by the training controller, an average of the training values as the DQ-DQS timing value.

16. The computer program product of claim 13 wherein identifying for each training iteration, by the training controller, outer values within the reference training values includes:

identifying low outer values that are less than a predetermined minimum value; and

identifying high outer values that are greater than a predetermined maximum value.

17. The computer program product of claim 13 further comprising computer program instructions capable, when executed, of causing a computer to carry out the steps of for each training iteration, changing, by the training controller, a fan speed corresponding to cooling of one or more components of the system that includes the plurality of memory modules.

18. The computer program product of claim 13 further comprising computer program instructions capable, when executed, of causing a computer to carry out the steps of for each training iteration, changing, by the training controller, a direct current cycle loop of the system that includes the plurality of memory modules.

19. The computer program product of claim 13 wherein the computer readable medium is a storage medium.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2019
From: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE LTD.
To: LENOVO INTERNATIONAL LIMITED
Reel/Frame 050304/0277 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNMENT DOCUMENT CONTAINING TYPO ERRORS PREVIOUSLY RECORDED AT REEL: 037101 FRAME: 0969. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Dec 28, 2015
From: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE. LTD.
To: LENOVO INTERNATIONAL LIMITED
Reel/Frame 037689/0190 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2015
From: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE. LTD.
To: LENOVO INTERNATIONAL LIMITED
Reel/Frame 037101/0969 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2014
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE. LTD.
Reel/Frame 034194/0111 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 20, 2011
From: COX, WILLIAM H., JR.; FOSTER, JIMMY G., SR.; KOCHAR, SUMEET; ZAPATA, IVAN R.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 027449/0794 →