BACKGROUND
[0001] A user or a computing machine can configure and initialize one or more of the components
of the computing machine. When configuring one or more of the components, the user
or the computing machine can access and edit one or more settings corresponding to
the components. Utilizing the edited settings, the computing machine can proceed to
configure and initialize one or more of the components.
[0002] EP0549139 describes a method of providing programmable memory timing within a data processing
system with multiple DRAM memory modules.
BRIEF DESCRIPTION OF THE DRAWINGS
[0003] Various features and advantages of the disclosed embodiments will be apparent from
the detailed description which follows, taken in conjunction with the accompanying
drawings, which together illustrate, by way of example, features of the embodiments.
Figure 1 illustrates a computing machine with at least one memory module and a memory
controller according to an embodiment of the invention.
Figure 2 illustrates a block diagram of a memory application configuring a memory
controller according to an embodiment of the invention.
Figure 3 illustrates a block diagram of a memory application configuring a memory
controller according to another embodiment of the invention.
Figure 4 illustrates a computing machine with an embedded memory application and a
memory application stored on a removable medium being accessed by the computing machine
according to an embodiment of the invention.
Figure 5 is a flow chart illustrating a method for configuring a memory controller
according to an embodiment of the invention.
Figure 6 is a flow chart illustrating a method for configuring a memory controller
according to another embodiment of the invention.
DETAILED DESCRIPTION
[0004] Figure 1 illustrates a computing machine 100 with at least one memory module 160
and a memory controller 170 according to an embodiment of the invention. In one embodiment,
the computing machine 100 is a desktop, laptop/notebook, netbook, and/or any other
computing device.
[0005] As illustrated in Figure 1, the computing machine 100 is coupled to a processor 120,
at least one dimm slot 130, a memory controller 170, a storage device 140, and a communication
bus 150 for the computing machine 100 and/or one or more components of the computing
machine 100 to communicate with one another. Additionally, as illustrated in Figure
1, a memory module 160 can be coupled to at least one of the dimm slot 130.
[0006] Further, as shown in Figure 1, the storage device 140 can store a memory application
110, a stored serial number 180, and/or a stored timing data 190. In other embodiments,
the computing machine 100 includes additional components and/or is coupled to additional
components in addition to and/or in lieu of those noted above and as illustrated in
Figure 1.
[0007] As noted above, the computing machine 100 includes a processor 120. The processor
120 sends data and/or instructions to one or more components of the computing machine
100, such as the storage device 140, a memory module 160, the memory controller 170,
and the memory application 110. Additionally, the processor 120 receives data and/or
instruction from one or more components of the computing machine 100, such as the
memory controller 170, at least one memory module 160, and the memory application
110.
[0008] The memory application 110 is an application which can be utilized in conjunction
with the processor 120 and at least one dimm slot 130 to determine whether a serial
number of a memory module 160 matches a stored serial number 180. Additionally, the
memory application 110 can determine whether a memory module 160 is in a last used
dimm slot 130. Further, the memory application 110 can configure the memory controller
170 utilizing a stored timing data 190 or with a new timing data.
[0009] In one embodiment, the memory application 110 can be launched in response to the
computing machine 100 and/or one or more components of the computing machine 100 powering
on. In another embodiment, the memory application 110 can be launched in response
to the computing machine 100 transitioning to a S0 power state from a S1, S2. S3,
S4, and/or S5 power state. In other embodiments, the memory application 110 can be
launched in response to the computing machine 100 entering and/or transitioning between
any of the power states.
[0010] The S0, S1, S2, S3, S4, and the S5 power state are ACPI standardized power configurations
for the computing machine 100. When in a S0 power state, one or more components of
the computing machine 100 are powered on. When in a S1, S2, S3, S4, and/or a S5 power
state, one or more components of the computing machine 100 can be powered off.
[0011] The memory application 110 can be firmware which is embedded onto the computing machine
100. In one embodiment, the memory application 110 operates as a BIOS of the computing
machine 100. In other embodiments, the memory application 110 is a software application
stored on the computing machine 100 within ROM or on the storage device 140 accessible
by the computing machine 100 or the memory application 110 is stored on a computer
readable medium readable and accessible by the computing machine 100 from a different
location.
[0012] Additionally, in one embodiment, the storage device 140 is included in the computing
machine 100. In other embodiments, the storage device 140 is not included in the computing
machine 100, but is accessible to the computing machine 100 utilizing a network interface
of the computing machine 100. The network interface can be a wired or wireless network
interface card.
[0013] In a further embodiment, the memory application 110 is stored and/or accessed through
a server coupled through a local area network or a wide area network. The memory application
110 communicates with devices and/or components coupled to the computing machine 100
physically or wirelessly through a communication bus 150 included in or attached to
the computing machine 100. In one embodiment the communication bus 150 is a memory
bus. In other embodiments, the communication bus 150 is a data bus.
[0014] As noted above, the memory application 110 can be utilized in conjunction with the
processor 120 to determine whether a serial number of a memory module 160 matches
a stored serial number 180. A memory module 160 is a circuit board which includes
at least one memory chip. At least one of the memory chips include random access memory
configured to store and/or transmit data from the computing machine 100 when accessed.
[0015] Additionally, the memory module 160 includes a storage medium which can be configured
to store a serial number. In one embodiment, the storage medium of the memory module
160 includes serial presence detect (SPD) space. The SPD space can include nonvolatile
storage configured to store a serial number.
[0016] For the purposes of this application, a serial number is a sequence of numbers and/or
characters utilized to identify a memory module 160. In one embodiment, the serial
number can be copied and written to the SPD space of the memory module 160 by the
memory application 110. The serial number can be copied from an identification number
from another component of the computing machine, such as a MAC address of the network
interface card.
[0017] In another embodiment, the serial number can be calculated and/or generated by the
memory application 110 and stored on the storage medium of the memory module 160.
When calculating and/or generating the serial number, the memory application 110 can
utilize one or more algorithms to create the serial number. In one embodiment, utilizing
one or more algorithms includes utilizing a random number and/or character generator.
[0018] Additionally, if the serial number is not already available and/or stored on one
or more components of the computing machine 100, the memory application 110 can store
the serial number as a stored serial number 180 on a storage device 140 coupled to
the computing machine 100. In one embodiment, the memory application 110 can include
the stored serial number in a database accessible to the computing machine 100. In
another embodiment, the memory application 110 can store the stored serial number
as a file within the storage device 140.
[0019] When determining whether a serial number of a memory module 160 matches a stored
serial number 180, the memory application 110 initially scans at least one dimm slot
130 coupled to the computing machine 100 for a memory module 160. A dimm slot 130
is a component of the computing machine 100 configured to couple and interface a memory
module 160 to the computing machine 100.
[0020] In one embodiment, at least one dimm slot 130 can be integrated as part of the computing
machine 100. In another embodiment, at least one dimm slot 130 can be coupled to another
component of the computing machine 100, such as a motherboard and/or a printed circuit
board.
[0021] If a memory module 160 is determined to be present in at least one of the dimm slot
130, the memory application 110 can scan the storage medium of the memory module 160
for a serial number. If the storage medium of the memory module 160 does not include
a serial number, the memory application 110 will determine that the memory module
160 is presented to the computing machine 100 for a first time and proceed to calculate,
generate, and/or copy a serial number onto the storage medium of the memory module
160 for subsequent identification of the memory module 160.
[0022] If the storage medium of the memory module 160 already includes a serial number,
the memory application 110 will proceed to compare the serial number of the memory
module 160 to a stored serial number 180. A stored serial number 180 is a serial number
of a memory module 160 that was previously and/or last used with the computing machine
100.
[0023] As illustrated in Figure 1, in one embodiment, the stored serial number 180 can be
stored on the storage device 140. In another embodiment, as noted above, the stored
serial number 180 can be an identification number of another component of the computing
machine 100 and the identification number is stored on the other component.
[0024] If the serial number of a memory module 160 matches the stored serial number 180,
the memory application 110 can proceed to use a stored timing data 190 when configuring
and/or initializing a memory controller 170. In one embodiment, the memory application
110 can additionally determine whether the memory module 160 is in a last used dimm
slot 130 before utilizing the stored timing data 190 to configure and/or initialize
the memory controller 170.
[0025] A stored timing data 190 is a timing data which was previously calculated and/or
stored by the memory application 110. Additionally, the stored timing data 190 can
be downloaded from another device and/or stored on one or more components of the computing
machine 100.
[0026] When determining whether the memory module 160 is in a last used dimm slot, the memory
application 110 can scan at least one dimm slot 130 to determine which of the dimm
slots 130 the corresponding memory module 160 is present in. Once the memory application
110 has identified the corresponding dimm slot 130, the memory application 110 can
compare the corresponding dimm slot 130 to a last used dimm slot listed.
[0027] The last used dimm slot can be listed and/or stored on one or more components of
the computing machine 100, such as the storage device 140. In one embodiment, the
last used dimm slot can be listed in a database accessible to the computing machine
100. The database can include entries for the dimm slots 130 of the computing machine
100 and list the last memory module used in the corresponding dimm slot 130. Additionally,
information of the last used dimm slot can be listed and/or stored on the storage
medium of the corresponding memory module 160.
[0028] In one embodiment, if more than one memory module 160 is coupled to the computing
machine 100, the memory application 110 can repeat the process noted above for each
memory module 160 to insure that the serial number of all of the memory modules 160
match stored serials and that the memory modules 160 are all in a last used dimm slot
before proceeding to utilize the stored timing data 190 to configure and/or initialize
the memory controller 170.
[0029] In another embodiment, if the memory application 110 determines that the serial number
of the memory module 160 does not match the stored serial number 180 or if the memory
module 160 is not in a last used dimm slot 130, the memory application 110 will proceed
to identify and/or calculate a new timing data to utilize when configuring the memory
controller 170.
[0030] A memory controller 170 is a component of the computing machine 100 configured to
manage the flow of data received from and/or sent to at least one memory module 160.
The memory controller 170 can be configured by the memory application 110 when the
computing machine 100 enters and/or transitions from one or more power states.
[0031] In one embodiment, when configuring the memory controller 170, the memory application
110 uses timing parameters from a timing data to specify timings to be utilized on
parameters of the memory controller 170 when data is written to and/or read from at
least one memory module 160. The memory application 110 can access one or more parameters
of at least one memory module 160 and proceed to define and/or set timings for the
parameters.
[0032] For the purposes of this application, a timing data includes one or more timing parameters
for at least one memory module 160. Additionally, for the purposes of this application,
a timing parameter can include one or more timings utilized for a corresponding parameter.
In one embodiment, a timing parameter can be a timing delay. One or more timing parameters
can be predefined by a manufacturer, calculated, and/or identified by the memory application
110.
[0033] In one embodiment, a parameter of at least one memory module 160 can include a CAS
latency, a row address to column delay time, a row precharge time, and/or a row active
time. As a result, the timing data includes timing parameters specifying a timing
delay for the CAS latency, a timing for the row address to column, a timing for the
row precharge, and/or a timing for the row active. In other embodiments, the timing
data can include additional timings utilized for additional parameters of at least
one memory module 160 in addition to and/or in lieu of those noted above.
[0034] Additionally, the timing data can be calculated by executing one or more timing algorithms
on at least one memory module 160. A timing algorithm is a process, function, and/or
sequence which the memory application 110 and/or the processor 120 can execute with
a timing parameter to determine whether data can successfully be written to and/or
read from at least one memory module 160.
[0035] When executing one or more timing algorithms, the memory application 110 utilizes
a range of timings for the different parameters of the memory modules to determine
whether data can successfully be written to and/or read from at least one memory module
160 utilizing the timings.
[0036] Utilizing the results from the timing algorithms, the memory application 110 can
identify an average and/or median timing for a corresponding parameter where data
can successfully be written to and/or read from at least one memory module 160. The
average and/or median timing is then identified by the memory application 110 as a
timing parameter for the corresponding parameter.
[0037] The memory application 110 can repeat this process for each of the parameters of
at least one memory module 160 to determine timing parameters for one or more of the
parameters. The memory application 110 can then proceed to utilize a collection of
the identified timing parameters as the timing data to configure the memory controller
170.
[0038] Additionally, once the timing data has been identified, the timing data can be stored
for future use as a stored timing data 190. In other embodiments, the memory application
110 can calculate, define, and/or determine additional factors or variables to be
utilized when configuring the memory controller 170.
[0039] Figure 2 illustrates a block diagram of a memory application 200 configuring a memory
controller 280 according to an embodiment of the invention. As noted above, in response
to a computing machine entering and/or transitioning into one or more power states,
a memory controller 280 can be configured.
[0040] As illustrated in Figure 2, when configuring the memory controller 280, the memory
application 200 can initially access at least one memory module 215, 225, 236, coupled
to at least one dimm slot 210, 220, 230. When accessing the dinim slots, the memory
application 200 determines that memory module 1 215 is coupled to dimm slot 1 210,
memory module 2 225 is coupled to dimm slot 2 220, and memory module 3 235 is coupled
to dimm slot 3 230.
[0041] Once the memory application 200 has identified that at least one memory module is
coupled to at least one dimm slot, the memory application 200 proceeds to determine
whether the memory modules have corresponding serial numbers and whether the corresponding
serial numbers match stored serial numbers. Additionally, as illustrated in Figure
2, the memory application 200 can additionally determine whether the memory modules
are in a last used dimm slot.
[0042] As shown in the present embodiment, the memory application 200 accesses storage medium
1 of memory module 1 215 and determines that memory module 1 215 has a serial number
of 111111000. As noted above, in one embodiment, the storage medium of a memory module
can include serial presence detect (SPD) space and the serial number of the memory
module can be stored in the SPD space.
[0043] After identifying the serial number of memory module 1 215, the memory application
compares the serial number to a stored serial number. In one embodiment, as illustrated
in Figure 2, the stored serial can be stored on a storage device 240 coupled to the
computing machine. In other embodiments, a stored serial number can be an identification
number of another component of the computing machine, stored by the other component.
[0044] As shown in the present embodiment, the memory application 200 accesses the storage
device 240 and finds that the stored serial number 215 for a memory module last used
in Dimm Slot 1 is 111111000. As a result, the memory application 210 determines that
the serial number of memory module 1 215 matches a stored serial number. Additionally,
the memory application 210 determines that memory module 1 is in the last used Dimm
Slot 1 210.
[0045] As illustrated in Figure 2, in one embodiment, when identifying which dimm slot a
memory module was last used in, information of the last used dimm slot for a memory
module can be stored on the storage device 240 of the computing machine. In another
embodiment, information of the last used dimm slot can be stored on a corresponding
storage medium of the memory module.
[0046] After identifying that the serial number of memory module 1 215 matches the stored
serial number 250 and that memory module 1 215 is in a last used dimm slot, the memory
application 200 then proceeds to determine whether memory module 2 225 and memory
module 3 235 include a serial number, whether the serial numbers match of the memory
modules match stored serial numbers, and/or whether the memory modules are in a last
used dimm slot.
[0047] As illustrated in Figure 2, the memory application 200 accesses the storage medium
of memory module 2 225 and memory 3 235. Additionally, the memory application 200
determines that the serial number for memory module 2 225 is 110111000 and the serial
number for memory module 3 235 is 110111011. Further, the memory application 200 accesses
the storage device 240 and determines that the stored serial number 260 for Dimm Slot
2 is 110111000. Additionally, the stored serial number 270 for Dimm Slot 3 is 110111011.
[0048] As a result, the memory application 200 determines that the serial number of memory
module 2 225 matches the stored serial 260 corresponding to memory module 2 225. Additionally,
the memory application 200 determines that memory module 2 225 is in the last used
Dimm Slot 2. Further, the memory application 200 determines that the serial number
of memory module 3 235 matches the stored serial 270 corresponding to memory module
3 235 and that memory module 3 235 is in the last used Dimm Slot 3 230.
[0049] In response to determining that the serial of all of the memory modules match stored
serial numbers and that the memory modules are all in a last used dimm slot, the memory
application 200 proceeds to utilize a stored timing data to configure a memory controller
280 of the computing machine. As noted above, the stored timing data includes timings
for one or more parameters of the memory modules.
[0050] in another embodiment, if any of the memory modules have a serial number which does
not match a corresponding stored serial number and/or if any of the memory modules
are not in a last used dimm slot, the memory application 200 can proceed to identify
a new timing data to be used when configuring the memory controller 280.
[0051] Figure 3 illustrates a block diagram of a memory application 300 configuring a memory
controller 380 according to another embodiment of the invention. In one embodiment,
if the memory application 300 determines that at least one memory module has a serial
number which does not match a stored serial number and/or if the memory application
300 determines that at least one of the memory modules are not in a last used dimm
slot, then the memory application 300 will proceed to identify a new timing data to
be utilized when configuring the memory controller 380.
[0052] For the purposes of this application, a serial number of a memory module may not
match a stored serial number when a memory module is replaced with another memory
module, when the memory module is moved to another dimm slot, and/or when the memory
module is coupled to a computing machine for a first time.
[0053] As shown in Figure 3, the memory application 300 accesses Dimm Slot 1 310, Dimm Slot
2 320, and Dimm Slot 3 330 on a computing machine and determines that the dimm slots
have memory modules coupled to the dimm slots. The memory application 300 proceeds
to determine whether the memory modules have corresponding serial numbers and whether
the corresponding serial numbers match stored serial numbers.
[0054] As illustrated in the present embodiment, the memory application 300 accesses storage
medium 1 of memory module 1 315 and determines that memory module 1 315 has a serial
number of 110111011. The memory application 300 then proceeds to access a storage
device 340 of the computing machine to determine whether the serial number of memory
module 1 315 matches stored serial number 1 350, 111111000. In other embodiments,
the memory application 300 can access additional components of the computing machine
and identification numbers of the additional components to compare the serial number
of memory module 1 315 with.
[0055] As shown in Figure 3, the memory application 300 determines that the serial number
of memory module 1 315, 110111011, does not matched the stored serial number 1 350,
111111000. Additionally, the memory application 300 determines the storage medium
of memory module 1 315 lists that memory module 1 315 was last used in Dimm Slot 3
330. As a result, in response to the serial number of a memory module not matching
a corresponding stored serial number and/or in response to a memory module not being
in a last used dimm slot, the memory application 300 proceeds to identify a new timing
data to use when configuring a memory controller 380.
[0056] As noted above, when identifying a new timing data, the memory application 300 executes
at least one timing algorithm on the memory modules (memory module 1 310, memory module
2 320, and memory module 3 330) coupled to the computing machine.
[0057] In one embodiment, the memory application 300 uses a range of timings for a parameter
of the memory modules when executing the timing algorithms to identify a successful
range of timings where data can successfully be written to and read from the memory
modules. The memory application 300 then identifies an average and/or a median successful
timing from the successful range of timing and uses the average and/or median successful
timing as a timing parameter for the corresponding parameter.
[0058] In one embodiment, the memory application 300 identifies a timing parameter for the
CAS latency parameter of the memory modules. The memory application 300 utilizes a
timing delay range from 10 milliseconds up to 2 seconds as timings for the CAS latency
parameter of the memory modules. The memory application 300 uses the range of timing
delays when executing one or more of the timing algorithms on memory module 1 315,
memory module 2 325, and memory module 3 335. In one embodiment, the memory application
300 determines that data was successfully written to and read from the memory modules
utilizing timing delays from a range of 10 milliseconds up to 1 second.
[0059] The memory application 300 then identifies that an average and/or median successful
timing delay of 500 milliseconds can be used as a timing delay and as the timing parameter
for the CAS latency parameter of the memory modules.
[0060] The memory application 300 can repeat this process for each of the parameters of
the memory modules to identify additional corresponding timing parameters. The collection
of average and/or median successful timings for the corresponding parameters are then
used as timing parameters for the new timing data.
[0061] In another embodiment, when identifying a new timing data, the memory application
300 can consider a frequency of the memory modules and access a timing table when
identifying a new timing data. In other embodiments, the memory application 300 can
identify a new timing data utilizing additional methods and/or in consideration of
additional factors in addition to and/or in lieu of those noted above.
[0062] The memory application 300 can then utilize the new timing data to configure the
memory controller 380. When configuring the memory controller 380 with the new timing
data, the memory application 300 loads the timing parameters previously identified
from the memory modules onto the memory controller 380. The memory controller 380
can then utilize the timings with the parameters of the memory modules when writing
data to and/or reading data from the memory modules.
[0063] Further, once the memory application 300 has identified the new timing data, the
memory application 300 stores the new timing data for future configurations of the
memory controller 380. In one embodiment, a stored timing data 390 can be overwritten
with the new timing data.
[0064] In addition, in one embodiment, when the memory application 300 determines that the
serial number of a memory module does not match a corresponding stored serial number,
the memory application 300 can store the serial number of the memory module for subsequent
comparisons when determining whether to use a stored timing data or calculate a new
timing data.
[0065] As shown in Figure 3, because the serial number of memory module 1 315 does not match
the stored serial 315 corresponding to memory module 1, the memory application can
overwrite the stored serial 315 with 110111011. Additionally, the memory application
300 can update the storage medium of memory module 1 to reflect that the last used
dimm slot for memory module 1 is Dimm Slot 1 310.
[0066] The memory application 300 then proceeds to determine whether a serial number of
memory module 2 325 and memory module 3 335 matches stored serial numbers corresponding
to the memory modules. Additionally, the memory application 300 determines whether
the memory modules are in a last used dimm slot.
[0067] As illustrated in Figure 3, the memory application 300 determines that the serial
number of memory module 2 325, 110111000, matches the stored serial number 360, 110111000,
corresponding to memory module 2 325. Additionally, the memory application 300 determines
that the last used dimm slot listed in the storage medium of memory module 2 325 is
accurately listed as Dimm Slot 2 320. As a result, the memory application 300 does
not update a stored serial number 360 corresponding to memory module 2 325 and the
memory application 300 does not update the last used dimm slot listed by memory module
2 325.
[0068] The memory application 300 then proceeds to memory module 3 335 and determines that
memory module 3 335 does not have a serial number listed. As a result, the memory
application 300 determines that memory module 3 335 is detected and coupled to the
computing machine for a first time. The memory application 300 proceeds to write a
new serial number to memory module 3 335. As noted above, the new serial number can
be calculated and/or generated by the memory application 300. Additionally, the new
serial number can be copied from an identification number of another component of
the computing machine.
[0069] Figure 4 illustrates a computing machine 400 with an embedded memory application
410 and a memory application 410 stored on a removable medium being accessed by the
computing machine 400 according to an embodiment of the invention. For the purposes
of this description, a removable medium is any tangible apparatus that contains, stores,
communicates, or transports the application for use by or in connection with the computing
machine 400. As noted above, in one embodiment, the memory application 410 is firmware
that is embedded into one or more components of the computing machine 400 as ROM.
In other embodiments, the memory application 410 is a software application which is
stored and accessed from a hard drive, a compact disc, a flash disk, a network drive
or any other form of computer readable medium that is coupled to the computing machine
400.
[0070] Figure 5 is a flow chart illustrating a method for configuring a memory controller
according to an embodiment of the invention. The method of Figure 5 uses a computing
machine coupled to at least one dimm slot, at least one memory module, a processor,
and a memory application. In other embodiments, the method of Figure 5 uses additional
components and/or devices in addition to and/or in lieu of those noted above and illustrated
in Figures 1, 2, 3, and 4.
[0071] As noted above, the memory application can be a BIOS of the computing machine and
is launched when the memory enters and/or transitions into a S0 power state from a
S1, S2, S3, S4, S5 and/or a power off power state. The memory application will initially
scan at least one dimm slot on the computing machine to determine whether at least
one dimm slot is coupled.
[0072] If at least one memory module is coupled to a dimm slot of the computing machine,
the memory application will proceed to access a storage medium of a memory module
to determine whether the memory module has a serial number listed. In one embodiment,
the storage medium of the memory module can include serial presence detect (SPD) space.
[0073] If a serial number is not found to be listed for the memory module, the memory application
determines that the memory module is coupled to the computing machine a first time
and proceeds to assign a serial number for the memory module. When assigning a memory
module a serial number, the memory application can calculate and/or generate the serial
number utilizing one or more algorithms.
[0074] Further, the memory application can store the serial number of the memory module
for subsequent comparisons. In other embodiments, the memory application can copy
an identification number stored and/or used by another component of the computing
machine and utilize the identification number as the serial number for the memory
module.
[0075] In another embodiment, if the memory application finds a serial number on the storage
medium of the memory module, the memory application will proceed to determine whether
the serial number of the corresponding memory module matches a stored serial number
corresponding to at least one of the memory module 500.
[0076] As noted above, the serial number of the memory module can be an identification number
of another component of the computing machine or the serial number can be stored on
a storage device coupled to the computing machine. As a result, the memory application
will scan the storage device and components of the computing machine for a stored
serial number and/or a stored identification number which matches the serial number
of the memory module.
[0077] In one embodiment, the memory application can additionally determine whether the
corresponding memory module is in a last used dimm slot. If the serial number matches
a stored serial number and/or if the memory module is in a last used dimm slot, the
memory application can proceed to utilize a stored timing data to configure a memory
controller 510. As noted above, a stored timing data corresponds to timing parameters
previously calculated and utilized when configuring the memory controller.
[0078] In one embodiment, if the computing machine includes more than one dimm slot and
more than one memory module is coupled to the computing machine, the memory application
can ensure the serial numbers of all of the memory modules match stored serial numbers
and that all of the memory modules are in a last used dimm slot before utilizing a
stored timing data to configure the memory controller.
[0079] In another embodiment, if the memory application determines that at least one of
the memory module does not have a serial number, if the serial does not match a stored
serial number, and/or if at least one of the memory module are not in a last used
dimm slot, the memory application can proceed to identify a new timing data to be
utilized when configuring the memory controller.
[0080] When identifying the new timing data, the memory application identifies one or more
timing parameters. As noted above, a timing parameter includes a timing utilized for
a parameter of one or more memory modules. The memory application can identify a timing
utilized for a parameter of the memory modules by executing one or more timing algorithms
utilizing a range timings. The memory application can then proceed to identify a successful
timing range where data was successfully written to and read from the memory modules.
[0081] Utilizing the successful timing range, the memory application can identify and utilize
an average and/or median successful timing as a timing parameter for the corresponding
parameter. The memory application can repeat this to identify additional timing parameters
for additional parameters of the memory modules. In one embodiment, the memory application
then utilizes the collection of timing parameters as the new timing data. The new
timing data can then be stored for subsequent configurations of the memory controller.
[0082] Additionally, if the memory application determines that the serial number of a memory
module does not match a stored serial number, the memory application can proceed to
store the serial number of the corresponding memory module. Further, if the memory
application determines that a memory module is not in a last used dimm slot, the memory
application can proceed to update information specifying a last used dimm for a corresponding
memory module. The information specifying the last used dimm slot for a corresponding
memory module can be stored on the corresponding memory module or a component of the
computing machine.
[0083] The method is then complete or the memory application can repeat the method disclosed
above when entering and/or transitioning into a S0 power state from a S1, S2, S3,
S4, S5 and/or power off power state. In other embodiments, the method of Figure 5
includes additional steps in addition to and/or in lieu of those depicted in Figure
5.
[0084] Figure 6 is a flow chart illustrating a method for configuring a memory controller
according to another embodiment of the invention. Similar to the method disclosed
in Figure 5, the method of Figure 6 uses a computing machine coupled to at least one
dimm slot, at least one memory module, a processor, and a memory application. In other
embodiments, the method of Figure 6 uses additional components and/or devices in addition
to and/or in lieu of those noted above and illustrated in Figures 1, 2, 3, and 4.
[0085] As noted above, in response to the computing machine entering and/or transitioning
into one or more power states, a memory application can be launched and configured
to scan a serial number of at least one memory module and compare the serial number
to a stored serial number corresponding to at least one of the memory module 600.
[0086] The memory application can determine whether the serial number of at least one memory
module matches a stored serial number 610. In one embodiment, if more than one memory
module is coupled to the computing machine the memory application determines whether
the serial number of all of the corresponding memory modules match stored serial numbers.
[0087] If the memory application determines that a serial number of a memory module matches
a stored serial number, the memory application proceeds to determine whether at least
one of the memory modules is in a last used dimm slot 640. In another embodiment,
the memory application will check and insure that the serial number of all of the
memory modules match stored serial numbers before continuing to determine whether
at least one of the memory module in a last used dimm slot 640.
[0088] When determining whether a memory module is in a last used dimm slot, the memory
application can scan for a last used dimm slot for the corresponding memory module
listed in the storage medium of the memory module or on the storage device coupled
to the computing machine.
[0089] In one embodiment, if at least one of the memory modules is in a last used dimm slot,
the memory application can continue to utilize a stored timing data to configure a
memory controller of the memory application 670. As noted above, the stored timing
data includes timing parameters which were previously used and/or calculated by the
memory application. In another embodiment, the memory application will ensure that
all of the memory modules coupled to the computing machine are in a last used dimm
slot before proceeding to utilize a stored timing data to configure a memory controller
of the memory application 670.
[0090] In other embodiments, if the memory application previously determined that a memory
module does not include a serial number and/or if the serial number does not match
a stored serial number, the memory application proceeds to determine whether the memory
module is being coupled to the computing machine is being detected for the first time
620.
[0091] As noted above, if the memory application finds that a memory module does not have
a serial number listed, the memory application will determine that the memory module
is detected by the computing machine a first time and proceed to calculate, generate,
and/or a copy a serial number onto the memory module. As noted above, the storage
medium can include non volatile memory that includes serial presence detect (SPD)
space and the serial number can be written and stored on the SPD space.
[0092] Additionally, the serial number can be stored as a stored serial number on a storage
device and/or on one or more components of the computing machine 630. The memory application
can then proceed to identify a new timing data by executing at least one timing algorithm
on one or more parameters of at least one of the memory module 650. As noted above,
the memory application uses a range of timings when executing at least one timing
algorithm on one or more parameters.
[0093] In another embodiment, if the memory application finds a serial number listed on
the memory module and the memory application determines that the serial number does
not match a stored serial number, the memory application can store the serial number
as a stored serial number and/or overwrite a previously stored serial number on one
or more components of the computing machine. The memory application can then proceed
to identify a new timing data by executing at least one timing algorithm on at least
one of the memory module 650.
[0094] Once the timing parameters for the timing data have been determined, the memory application
can then store the new timing data on a storage device for subsequent use 660. Utilizing
the new timing data which has been stored, the memory application can proceed to configure
the memory controller 670.
[0095] The method is then complete or the memory application can repeat the method disclosed
above in response to the computing machine entering and/or transitioning into one
or more power states. In other embodiments, the method of Figure 6 includes additional
steps in addition to and/or in lieu of those depicted in Figure 6.
[0096] By utilizing a stored timing data to configure a memory module when a serial number
of a memory module matches a stored serial number, time can be saved and efficiency
can be increased when powering on a computing machine. Additionally, by calculating
a new timing data and storing the new timing data when a serial number of a memory
module does not match a stored serial number and/or when a memory module is not in
a last used dimm slot, stability and security can be increased for the computing machine.
1. Verfahren zum Konfigurieren eines Speicher-Controllers (170), umfassend die folgenden
Schritte:
Bestimmen, ob eine Seriennummer mindestens eines Speichermoduls (160) mit einer gespeicherten
Seriennummer (180) übereinstimmt, die mindestens einem der Speichermodule entspricht,
und
Verwenden von gespeicherten Zeitsteuerungsdaten (190), um den Speicher-Controller
(170) zu konfigurieren, wenn die Seriennummer mit der gespeicherten Seriennummer (180)
übereinstimmt, die mindestens einem der Speichermodule entspricht, und dadurch gekennzeichnet, dass:
das Verfahren ferner das Identifizieren von neuen Zeitsteuerungsdaten für mindestens
eines der Speichermodule (160) umfasst, wenn die Seriennummer nicht mit der gespeicherten
Seriennummer (180) übereinstimmt, die mindestens einem der Speichermodule entspricht.
2. Verfahren zum Konfigurieren eines Speicher-Controllers (170) nach Anspruch 1, ferner
umfassend das Speichern der neuen Zeitsteuerungsdaten und das Verwenden der neuen
Zeitsteuerungsdaten, um den Speicher-Controller (170) zu konfigurieren.
3. Verfahren zum Konfigurieren eines Speicher-Controllers (170) nach Anspruch 1, ferner
umfassend das Speichern der Seriennummer, wenn die Seriennummer nicht mit der gespeicherten
Seriennummer übereinstimmt, die mindestens einem der Speichermodule (160) entspricht.
4. Verfahren zum Konfigurieren eines Speicher-Controllers (170) nach Anspruch 1, wobei
das Identifizieren der neuen Zeitsteuerungsdaten das Ausführen mindestens eines Zeitsteuerungsalgorithmus
auf mindestens einem der Speichermodule (160) beinhaltet.
5. Verfahren zum Konfigurieren eines Speicher-Controllers (170) nach Anspruch 1, wobei
das Bestimmen, ob eine Seriennummer mindestens eines Speichermoduls mit einer gespeicherten
Seriennummer (180) übereinstimmt, das Suchen nach einer Seriennummer mindestens eines
Speichermoduls und das Vergleichen der Seriennummer mit der gespeicherten Seriennummer
(180), die mindestens einem der Speichermodule (160) entspricht, beinhaltet.
6. Rechenmaschine (400), umfassend:
einen Prozessor (420);
mindestens ein Speichermodul (460), das dazu konfiguriert ist, eine Seriennummer zu
speichern;
eine Speicheranwendung (410), die von dem Prozessor (420) aus dem computerlesbaren
Speicher (450) ausgeführt wird und dazu konfiguriert ist, die Seriennummer mindestens
eines der Speichermodule (460) mit einer gespeicherten Seriennummer (480), die mindestens
einem der Speichermodule entspricht, zu vergleichen, und die gespeicherte Zeitsteuerungsdaten
(490) verwendet, um einen Speicher-Controller (470) zu konfigurieren, wenn die Seriennummer
mit der gespeicherten Seriennummer übereinstimmt; und dadurch gekennzeichnet, dass:
die Speicheranwendung (410) ferner dazu konfiguriert ist, neue Zeitsteuerungsdaten
für mindestens eines der Speichermodule (460) zu identifizieren, wenn die Seriennummer
nicht mit der gespeicherten Seriennummer (480) übereinstimmt, die mindestens einem
der Speichermodule entspricht.
7. Rechenmaschine (400) nach Anspruch 6, wobei die Seriennummer in einem Speichermedium
gespeichert ist, das in mindestens einem der Speichermodule (460) enthalten ist.
8. Rechenmaschine (400) nach Anspruch 7, wobei die Seriennummer von der Rechenmaschine
auf das Speichermedium geschrieben wird, wenn die Rechenmaschine mindestens eines
der Speichermodule zum ersten Mal erkennt.
9. Rechenmaschine (400) nach Anspruch 6, wobei die Seriennummer einer Identifikationsnummer
einer Komponente der Rechenmaschine entspricht.
10. Rechenmaschine (400) nach Anspruch 6, wobei die Speicheranwendung als ein BIOS der
Rechenmaschine funktioniert, wenn die Rechenmaschine eingeschaltet wird.
11. Computerlesbares Programm in einem computerlesbaren Medium, umfassend:
eine Speicheranwendung (410), die dazu konfiguriert ist, mindestens ein Speichermodul
(460) nach einer Seriennummer zu durchsuchen und zu bestimmen, ob die Seriennummer
mit einer gespeicherten Seriennummer (480) übereinstimmt, die mindestens einem der
Speichermodule entspricht; und
wobei die Speicheranwendung (410) zusätzlich dazu konfiguriert ist, gespeicherte Zeitsteuerungsdaten
(490) zu verwenden, die mindestens einem der Speichermodule entsprechen, um einen
Speicher-Controller (470) zu konfigurieren, wenn die Seriennummer mit der gespeicherten
Seriennummer übereinstimmt, die mindestens einem der Speichermodule entspricht; und
dadurch gekennzeichnet, dass:
die Speicheranwendung zusätzlich neue Zeitsteuerungsdaten identifiziert und die neuen
Zeitsteuerungsdaten verwendet, um den Speicher-Controller zu konfigurieren, wenn die
Seriennummer nicht mit der gespeicherten Seriennummer übereinstimmt.
12. Computerlesbares Programm in einem computerlesbaren Medium nach Anspruch 11, wobei
die Speicheranwendung (410) ferner bestimmt, ob sich mindestens eines der Speichermodule
(460) in einem zuletzt verwendeten DIMM-Steckplatz befindet.
13. Computerlesbares Programm in einem computerlesbaren Medium nach Anspruch 12, wobei
die Speicheranwendung (410) zusätzlich neue Zeitsteuerungsdaten berechnet und die
neuen Zeitsteuerungsdaten verwendet, um den Speicher-Controller zu konfigurieren,
wenn sich mindestens eines der Speichermodule nicht in dem zuletzt verwendeten DIMM-Steckplatz
befindet.
1. Procédé pour configurer un contrôleur de mémoire (170) comprenant :
déterminer si un numéro de série d'au moins un module de mémoire (160) correspond
à un numéro de série stocké (180) correspondant à au moins l'un des modules de mémoire,
et
utiliser des données de temporisation stockées (190) pour configurer le contrôleur
de mémoire (170) lorsque le numéro de série correspond au numéro de série stocké (180)
correspondant à au moins l'un des modules de mémoire ; et caractérisé par :
le procédé comprenant en outre identifier de nouvelles données de temporisation pour
au moins un des modules de mémoire (160) lorsque le numéro de série ne correspond
pas au numéro de série stocké (180) correspondant à au moins l'un des modules de mémoire.
2. Procédé pour configurer un contrôleur de mémoire (170) selon la revendication 1, comprenant
en outre stocker des nouvelles données de temporisation et utiliser les nouvelles
données de temporisation pour configurer le contrôleur de mémoire (170).
3. Procédé pour configurer un contrôleur de mémoire (170) selon la revendication 1, comprenant
en outre stocker le numéro de série lorsque le numéro de série ne correspond pas au
numéro de série stocké correspondant à au moins l'un des modules de mémoire (160).
4. Procédé pour configurer un contrôleur de mémoire (170) selon la revendication 1, dans
lequel l'identification des nouvelles données de temporisation comprend l'exécution
d'au moins un algorithme de temporisation sur au moins l'un des modules de mémoire
(160).
5. Procédé pour configurer un contrôleur de mémoire (170) selon la revendication 1, dans
lequel la détermination du point de savoir si numéro de série d'au moins un module
de mémoire correspond à un numéro de série stocké (180) comprend le balayage d'un
numéro de série d'au moins un module de mémoire, et la comparaison du numéro de série
au numéro de série stocké (180) correspondant à au moins l'un des modules de mémoire
(160).
6. Machine informatique (400) comprenant :
un processeur (420) ;
au moins un module de mémoire (460) configuré pour stocker un numéro de série ;
une application de mémoire (410) exécutée par le processeur (420) à partir d'une mémoire
lisible par ordinateur (450) et configurée pour comparer le numéro de série d'au moins
l'un des modules de mémoire (460) à un numéro de série stocké (480) correspondant
à au moins l'un des modules de mémoire et utilisant des données de temporisation stockées
(490) pour configurer un contrôleur de mémoire (470) lorsque le numéro de série correspond
au numéro de série stocké ; et caractérisé par le fait que :
l'application de mémoire (410) est en outre configurée pour identifier de nouvelles
données de temporisation pour au moins l'un des modules de mémoire (460) lorsque le
numéro de série ne correspond pas au numéro de série stocké (480) correspondant à
au moins l'un des modules de mémoire.
7. Machine informatique (400) selon la revendication 6, dans laquelle le numéro de série
est stocké sur un support de stockage inclus dans au moins un des modules de mémoire
(460).
8. Machine informatique (400) selon la revendication 7, dans laquelle le numéro de série
est écrit sur le support de stockage par la machine informatique lorsque la machine
informatique détecte une première fois au moins l'un des modules de mémoire.
9. Machine informatique (400) selon la revendication 6, dans laquelle le numéro de série
correspond à un numéro d'identification d'un composant de la machine informatique.
10. Machine informatique (400) selon la revendication 6, dans laquelle l'application de
mémoire fonctionne comme un BIOS de la machine informatique lorsque la machine informatique
est mise sous tension.
11. Programme lisible par ordinateur dans un support lisible par ordinateur, comprenant
:
une application de mémoire (410) configurée pour balayer au moins un module de mémoire
(460) pour un numéro de série et déterminer si le numéro de série correspond à un
numéro de série stocké (480) correspondant à au moins l'un des modules de mémoire
; et
l'application de mémoire (410) étant en outre configurée pour utiliser des données
de temporisation stockées (490) correspondant à au moins l'un des modules de mémoire
pour configurer un contrôleur de mémoire (470) lorsque le numéro de série correspond
au numéro de série stocké correspondant à au moins l'un des modules de mémoire ; et
caractérisé par le fait que :
l'application de mémoire identifie en outre de nouvelles données de temporisation
et utilise les nouvelles données de temporisation pour configurer le contrôleur de
mémoire lorsque le numéro de série ne correspond pas au numéro de série stocké.
12. Programme lisible par ordinateur dans un support lisible par ordinateur selon la revendication
11, dans lequel l'application de mémoire (410) détermine en outre si au moins un des
modules de mémoire (460) est dans une fente de module de mémoire à double rangée de
connexions (DIMM) utilisée en dernier.
13. Programme lisible par ordinateur dans un support lisible par ordinateur selon la revendication
12, dans lequel l'application de mémoire (410) calcule en outre de nouvelles données
de temporisation et utilise les nouvelles données de temporisation pour configurer
le contrôleur de mémoire lorsqu'au moins un des modules de mémoire n'est pas dans
la fente DIMM utilisée en dernier.