Memory calibration and tolerance check

By recording the difference in calibration results between different performance states during the initialization process of the memory subsystem, dynamically adjusting parameters, combined with tolerance check calibration, the problem of calibration time in the prior art is solved, and the real-time performance and power efficiency of the system are improved.

CN119816894AActive Publication Date: 2025-04-11APPLE INC

Patent Information

Application Number
CN202380063091.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-09-01
Filing Date
2023-07-03
Publication Date
2025-04-11
Estimated Expiration
2043-07-03

AI Technical Summary

Technical Problem

In memory subsystems, the prior art takes a long time to perform calibration, resulting in memory unavailability and affecting system performance, especially when frequency changes.

Method used

By performing horizontal calibration during initialization and recording the calibration results differences between different performance states, memory parameters are dynamically adjusted in response to performance state changes, and tolerance check calibration is used to reduce the frequency of full-level calibration.

Benefits of technology

Reduces the time when the memory subsystem is unavailable during calibration, and improves the system's real-time performance and power efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119816894A_ABST
    Figure CN119816894A_ABST
Patent Text Reader

Abstract

The invention discloses memory calibration with tolerance check. A memory subsystem includes a memory and a memory controller coupled to the memory. The memory controller includes a calibration circuit configured to: perform a horizontal memory calibration for some of a plurality of performance states during an initialization process; and determining information indicative of a set of differences between calibration results for pairs of performance states of the plurality of performance states and storing the information in a storage circuit. The memory controller is further configured to, after the initialization process and in response to a change from a first performance state of the plurality of performance states to a second performance state of the plurality of performance states, set an initial memory parameter for the second performance state based on the set of differences. Thereafter, operation begins in the second performance state without performing the initial level calibration.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art Technical Field

[0001] The present disclosure relates to memory subsystems, and more particularly to calibration performed in memory subsystems.

[0002] Related technical description

[0003] An eye pattern or eye diagram is a graphical representation of the time and amplitude at which a digital signal can be sampled at its correct value. In various types of systems including data transmission, it is desirable to sample a signal (e.g., a data signal synchronized by a clock signal) near the center of the eye in terms of both time and sampling voltage. In terms of timing, this can provide the signal with both a sufficient amount of setup and hold time while also making the signal less susceptible to noise. In terms of voltage, this can enable a more accurate determination of a logic value (e.g., a logic 1 or a logic 0) based on a reference voltage used to distinguish one logic value from another.

[0004] In the memory subsystem, calibration may be performed to determine the point at which a signal is sampled within the eye diagram. Calibration is performed to determine an eye diagram that enables accurate sampling of the signal, and therefore includes calibration based on both timing (sometimes referred to as horizontal calibration) and sampling reference voltage (sometimes referred to as vertical calibration). Performing these calibrations typically includes adjusting a number of different parameters that manage data transfer between the memory controller and the memory. These parameters include a delay applied to the data strobe signal during the horizontal calibration. The vertical calibration may include multiple horizontal calibrations performed at different reference voltages. Such calibrations may be performed during system startup, and may also be performed periodically thereafter. Calibration may also be performed in response to a change in performance state. Summary of the invention

[0005] Memory calibration with tolerance checking is disclosed. In one embodiment, a memory subsystem includes a memory and a memory controller coupled to the memory. The memory controller includes a calibration circuit configured to: perform horizontal memory calibration for some of a plurality of performance states during an initialization process; and determine information indicating a set of differences between calibration results for pairs of performance states in the plurality of performance states and store the information in a memory circuit. The memory controller is further configured to: after the initialization process and in response to a change from a first performance state in the plurality of performance states to a second performance state in the plurality of performance states, set initial memory parameters for the second performance state based on the set of differences. Thereafter, operation begins in the second performance state without performing an initial horizontal calibration.

[0006] In one embodiment, after starting operation in the second performance state, the calibration circuit can perform a margin check calibration. When performing the margin check calibration, the calibration circuit runs a calibration routine at two points. The points correspond to delay values ​​applied to a data strobe signal used to synchronize data transfer between the memory and the memory controller. The first point of the margin check calibration is at a delay less than the most recent calibration value, and the second point is at a delay greater than the most recent calibration value. If a passing result is obtained at both points, the full level calibration is skipped and operation continues using the most recently calibrated parameter values ​​(e.g., those parameter values ​​applied based on the set of differences). BRIEF DESCRIPTION OF THE DRAWINGS

[0007] The following detailed description refers to the accompanying drawings, which are now briefly described.

[0008] Figure 1 is a block diagram of one embodiment of a memory subsystem.

[0009] Figure 2 is a block diagram of one implementation of a memory controller.

[0010] Figure 3 is a block diagram of one embodiment of a system.

[0011] Figure 4 is a diagram of one implementation of a tolerance limit check calibration.

[0012] Figure 5 is a flow chart of one embodiment of a flow chart for operating a memory subsystem.

[0013] Figure 6 is a flow chart of one embodiment of a flow chart for operating a memory subsystem.

[0014] Figure 7 is a flow chart of one embodiment of a flow chart for operating a memory subsystem.

[0015] Figure 8 is a block diagram of one embodiment of an example system. DETAILED DESCRIPTION

[0016] The present disclosure relates to various methods for calibrating parameters used in the operation of a memory subsystem and setting these parameters for normal operation. The memory calibration includes a horizontal calibration in which a plurality of different delays are applied to a data strobe signal used to synchronize data transfer between a memory controller and a memory. When performing these calibrations, an optimal delay value may be determined.

[0017] Memory calibration may take a significant amount of time to execute. During the time that calibration is executed in the memory subsystem, the memory is not available for normal read and write traffic, thus impacting other agents that need to read data from or write data to the memory.

[0018] Memory calibration is performed not only periodically, but also in response to frequency changes (e.g., changes in the frequency of a clock signal). In multi-rank memory systems (systems with multiple DRAMs sharing common pins), the time spent on calibration increases. For real-time services, the time spent on calibrating memory during frequency changes may have a negative impact on overall system performance.

[0019] Many computing systems operate in different performance states in a plurality of performance states. A performance state is defined herein as a unique combination of operating voltage and clock frequency. Certain performance states may be used when performance is a priority (e.g., when there is a high workload), while other performance states may be used when power conservation is a priority (e.g., when the workload is light). During certain initialization operations (e.g., such as a cold boot), calibration may be performed in each of a plurality of different performance states. The present disclosure exploits the insight that calibration results may be recorded, just as the difference between calibration results obtained in two different performance states may be recorded.

[0020] Thus, the present disclosure includes a memory controller having circuitry for performing calibration in each of the various possible system performance states during an initialization process and determining the difference in the results between each possible pair of states in these states. The insight also recognizes that the operating conditions encountered during the initialization process may be different from those encountered during normal operation (e.g., non-calibrated, post-initialization operation of the system performing its intended function). The differences between the various possible pairs of performance states are calculated and stored in a storage circuit. Thereafter, when a change is made from a first performance state to a second performance state, the calculated differences in the calibration operating parameters are used to set the operating parameters for the second performance state. For example, if the calculated difference in the calibrated digital strobe delay between the first performance state and the second performance state is a certain number of picoseconds, then when entering the second performance state, the delay of the second state can be set by adjusting the delay of the first state by the calculated difference. After adjusting the parameter by the calculated difference between the two performance states, operation can begin without performing a horizontal calibration. Therefore, the start of operation in the second performance state is not delayed by the amount of time required to perform a full horizontal calibration, thereby reducing the amount of time the memory subsystem is unavailable.

[0021] The present disclosure also takes advantage of the insight that time can be saved by performing a tolerance check on a particular calibration parameter (e.g., a delay value applied to a data strobe). Therefore, the present disclosure contemplates a tolerance check calibration. In a tolerance check calibration, a limited number of points (e.g., two) may be checked to determine whether they produce a passing result (e.g., where the passing result includes that the data read from the memory is equal to the expected data). In one embodiment, this may be performed by performing a calibration at a first delay point having a delay less than the current operating delay point and a second delay point having a delay amount greater than the current operating delay point. If a passing result is obtained at these two points, a full horizontal calibration is skipped. This can significantly reduce the amount of time that the memory is not available for normal operation. On the other hand, if at least one of these delay points returns a failure result, a full horizontal calibration may be performed.

[0022] Using the various methods described herein, memory unavailability can be significantly reduced. In addition, through the various examples of the aforementioned full-level calibration, power savings and systems with better power-performance ratios can be obtained.

[0023] Various details of a memory subsystem and a method for operating the memory subsystem according to the present disclosure are now discussed. The discussion begins with various device implementations, including a more detailed discussion of a memory subsystem, a memory controller, and a larger system. An illustration of one implementation of a tolerance check calibration is then described, followed by a discussion of various method implementations. The specification ends with a discussion of various implementations of an example system that may include a memory subsystem according to the present disclosure.

[0024] Memory Subsystem Implementation :

[0025] Figure 1 1 is a block diagram of one embodiment of a memory subsystem. In the illustrated embodiment, the memory subsystem 100 includes a memory controller 105 and a memory 110. In one embodiment, the memory 110 is a dynamic random access memory (DRAM), but other types of memory are possible and contemplated. The memory controller 105 and the memory 110 are coupled to transmit data signals between each other to perform read and write operations. Additionally, the memory controller 105 is configured to transmit a data strobe signal to the memory 110. The data strobe signal is a clock signal that is used to synchronize the transfer of data between the memory controller 105 and the memory 110 during the execution of the read and write operations. It is noted that in some embodiments, independent data strobe signals may be used to perform read and write operations, wherein the memory controller 105 and the memory 110 are configured accordingly.

[0026] The memory controller 105 in the illustrated embodiment includes calibration circuitry 106 and storage circuitry 107. The calibration circuitry 106 may be used to perform calibration operations to ensure that data can be written to and received from the memory 110 at the correct values. The calibration may include a horizontal calibration in which a delay value is applied to the data strobe signal while the data received from the memory 110 is evaluated to ensure that it is correct. The delay value may be applied within a particular range, and the calibration value may be selected based at least in part on the delay value that provides sufficient timing margin.

[0027] A vertical calibration may also be performed, wherein the vertical calibration includes multiple horizontal calibrations performed at different values ​​of a reference voltage used to distinguish between a logic 1 and a logic 0 of a signal received from the memory. The vertical calibration may be used to select a reference voltage that provides sufficient voltage margin for reading data returned from the memory. Thus, the results of the horizontal and vertical calibrations may produce an eye diagram that defines a delay range and a voltage range over which data may be correctly read from the memory. While performing the horizontal and vertical calibrations, the memory controller 105 may perform a series of writes to the memory and a series of data reads from the memory. Comparing the read data with the expected (e.g., written) data may determine whether a particular calibration point passed or failed.

[0028] The memory subsystem 100 can operate in a plurality of different performance states. A performance state is defined herein as a unique combination of an operating voltage and a clock frequency. The operating voltage is represented herein by a power supply voltage Vdd, and the clock frequency is represented by an input Clk_In of a clock signal. Different performance states can be used depending on the desired performance of the system. For high workloads, for example, when multiple different agents are requesting access to the memory 110, a higher performance state (e.g., a higher clock frequency and / or operating voltage) can be used. For lower performance requirements (e.g., when memory access requests are relatively infrequent), the memory subsystem 100 can operate in a lower performance state (e.g., a lower clock frequency and / or a lower power supply voltage). The various calibrations discussed above can be performed for each of the different performance states available for the memory subsystem. In one embodiment, each of the performance states can be calibrated as discussed above during an initialization process (e.g., when an initialization signal is asserted). The initialization process may include various system boot procedures, including cold boot and hot boot. Exiting the sleep state is another initialization process, in which calibrations can be performed for all performance states.

[0029] In the illustrated embodiment, the calibration results may be stored in the storage circuit 107. The calibration results indicate the range of delays and reference voltages for which the pass results were obtained and the specific delay points and reference voltage points selected for operation. During the initialization process described above, the calibration circuit 106 may store the results of various calibrations performed in different performance states in the storage circuit 107. In addition, in the illustrated embodiment, the calibration circuit 106 may calculate the differences in various parameters for paired performance states and store these differences in the storage circuit 107. These differences may be used in subsequent operations during the change from one performance state to another performance state. For example, during the change from a first performance state to a second performance state, the parameters used when entering the second performance state are determined by applying the difference between the first performance state and the second performance state to the parameters of the first performance state. Setting the parameters in the second performance state in this manner rather than directly using the calibration parameters for the second performance state can take into account operating conditions (e.g., temperature) that may have changed since the time of performing the previous calibration.

[0030] As described above, after applying the difference to set the operating parameters for the second performance state, normal operation can begin without performing a level calibration. Thus, by setting parameters based on the applied difference in lieu of a full level calibration, the amount of time that the memory subsystem is unavailable during the switch from the first performance state to the second performance state is reduced.

[0031] At a certain point in time after normal operation in the second performance state, a tolerance check calibration may be performed to verify that the current operating parameters are still valid. The tolerance check calibration is a limited calibration in which only a few delay points are checked to determine the result. In one embodiment, a tolerance check calibration is performed at a first point having a delay smaller than the current delay point and a second delay point having a delay larger than the current delay point. If a pass result is obtained at both the first delay point and the second delay point, the level calibration is not performed, and the current parameters are used to restore the operation in the second performance state. On the other hand, if at least one of these delay points returns a failure result, a full level calibration is performed (and may also or alternatively include calling a fatal interrupt). When performing the full level calibration, the result of the second performance state stored in the storage circuit 107 may be updated. Additionally, the difference between the calibration results of the first performance state and the second performance state may also be updated based on the result of the full level calibration performed in the second performance state. It should be noted that in some instances, a heuristic method may be used to determine the updated difference instead of directly applying the difference. For example, a heuristic method may be applied based on the difference in operating conditions (e.g., temperature) between the current time and the previous time when the difference was calculated to compensate for the changed operating conditions.

[0032] In some embodiments, the number of times that a tolerance check calibration can be performed is limited to a certain threshold. Therefore, when determining whether to perform a tolerance check calibration, a determination is made as to the number of times that this type of calibration has been performed since entering the second performance state. If this number does not exceed the threshold, a tolerance check calibration can be performed. In addition, assuming that a pass result is returned each time, a tolerance check calibration can be performed periodically as long as the threshold is not exceeded. However, if the number of horizontal calibrations exceeds the threshold, a full horizontal calibration is performed. The full horizontal calibration may include updating the calibration parameters for the second performance state and the difference of the paired performance states including the second performance state.

[0033] Figure 2 2 is a block diagram of one embodiment of a memory controller. In the illustrated embodiment, the memory controller 205 includes a calibration control circuit 206 and a physical interface 214. The calibration control circuit 206 in the illustrated embodiment implements various circuit units, including a data comparator 218, an eye calculator 211, and a state machine 210. The physical interface 214 implements a circuit for communicating with a memory (not shown here). The circuit of the physical interface 214 includes a transceiver 220 and a delay circuit 230. The data to be written to the memory can be received by the memory controller via the DQ_In signal path. The data read from the memory can be transmitted to the requester via the DQ_Out data bus.

[0034] In the illustrated embodiment, the transceiver 220 of the physical interface 214 is coupled to a data bus including a data signal path DQ[N-1:0]. Additionally, the physical interface 214 includes a delay circuit 230 from which a data strobe signal DQS is generated (based on a variable frequency clock signal Clk_In) and transmitted to the memory to synchronize data transfer. The physical interface 214 may also include circuits (not shown here) for adjusting various I / O settings associated with sending signals to the memory and receiving signals from the memory. This may include circuits for adjusting the drive strength of the signal, controlling the impedance and / or termination of the signal line, etc.

[0035] It should be noted that in various embodiments, additional signal paths may be coupled to the physical interface 214. These signal paths may include paths for transmitting write enable signals, read enable signals, address signals, etc. from the memory controller 205 to the correspondingly coupled memories. Similarly, the physical interface 214 may include circuits for generating these signals, and may include additional circuits for receiving signals. For simplicity, these additional signal paths and circuits are omitted here, but their absence in the drawings is not intended to limit the present disclosure in any way.

[0036] During a read operation, transceiver 220 may receive a signal transmitted from a memory via signal path DQ[N-1:0]. Transceiver 220 may also use a reference voltage value (e.g., generated by a reference voltage generator circuit, not shown here) to interpret the received signal. The reference voltage may be set by eye calculator 211 via the ReadV signal path. Using the reference voltage, transceiver 220 may determine whether a single one of the received data signals will be interpreted as a logic 0 or a logic 1. During normal operation, when transceiver 220 is operating to receive data from a memory, the output of the transceiver is the DQ_Out signal path, where the data is transmitted to other units (e.g., to a requesting agent such as a processor core).

[0037] The delay circuit 230 in the illustrated embodiment is coupled to receive an input clock signal Clk_In provided from a source external to the memory controller 205. Although not explicitly shown, the delay circuit 230 may include one or more delay locked loops (DLLs) or other types of delay circuits. A delay may be applied to the input clock signal to generate a data strobe signal DQS, which is used to synchronize the transfer of other signals (e.g., DQ[N-1:0]) between the memory and the memory controller 102. The amount of delay applied may be based on a delay control signal Dly_Ctl provided by the eye calculator 211 in the calibration control circuit 206. In addition to transmitting the data strobe signal to the memory, the delay circuit 230 in the illustrated embodiment is also coupled to provide a clock signal to the transceiver 220.

[0038] The calibration operation may include changing the reference voltage and the amount of delay applied to the data strobe signal. The horizontal calibration may include changing the delay at multiple different values ​​at a specific reference voltage. The vertical calibration may include performing multiple horizontal calibrations with different reference voltage values. At each combination of delay and reference voltage, data may be read from the memory and compared with the expected value by the data comparator 218 to determine whether any bit failure occurs. A bit failure may be defined herein as a bit corresponding to a signal transmitted on a specific signal path of the data bus that does not match its expected value (e.g., when expected to be a logical 1, the bit is read as a logical 0). In some embodiments, the compared data may be received by the data comparator 218 via the DQ_In input, and therefore the corresponding calibration operation may include writing the data to the memory.

[0039] The bit failure may be reported to the eye calculator circuit 211. In response to receiving information of the bit failure, the eye calculation circuit 211 may record the failed bit along with the reference voltage value and the delay value. Based on the data from the failed bit and the corresponding reference voltage value and the delay value, the eye calculation circuit 211 may calculate an eye diagram. In some embodiments, the eye diagram may be calculated separately for each bit position, where the eye diagram is calculated based on, for example, an average value of a single signal path.

[0040] In addition to multiple data reads from memory, some calibration operations may also include multiple data writes to memory. Through multiple iterations, eye calculator 211 may cause adjustments to both the delay used to generate the data strobe signal (via the Dly_Ctl signal) and the voltage used to distinguish between logic 1 and logic 0. Performing these operations for multiple different delay values ​​and reference voltage values ​​may be used to define an eye diagram for the calibrated signal path. Figure 2 , where the height H of the eye is defined along the vertical voltage axis V and the width W is defined along the time axis T. The voltage axis represents the value of the reference voltage and the time axis represents the delay value applied by the delay circuit 230 to the data strobe signal. Values ​​within the boundaries indicated in the figure (defined in part by the height and width of the eye) indicate areas where data bits transmitted in the signal can be correctly interpreted as logic 1 or logic 0. Areas toward the center of the eye typically have a greater amount of timing tolerance and voltage tolerance than areas located toward the boundaries.

[0041] The state machine 210 in the illustrated embodiment is configured to coordinate calibration operations. In response to receiving a calibration signal (Cal) from within another portion of the memory controller 205 or from an external source, the state machine 210 may begin a calibration operation. The assertion of the calibration signal is performed in conjunction with system startup, when exiting a sleep state, at periodic intervals, and in response to changes in performance states and other conditions. During the calibration operation, the state machine 210 may communicate with the eye calculator 211, the data comparator 218, and the transceiver 220. Among the functions that the state machine 210 may perform is to issue commands to send data for write operations, to cause the memory controller 102 to read data from the memory, and to cause changes in delay values ​​and read voltage values. Upon completion of a given calibration, the eye calculator 211 may store the determined reference voltage values ​​and delay values. These values ​​may then be used to set reference voltage values ​​and delay values ​​for normal (e.g., non-calibration) operations.

[0042] The state machine 210 may also cause the calculation of the differences between the paired performance states, for example, by the eye calculator 211. These differences and the calibration results on which they are based may be stored in the storage circuit 207. During the change from one performance state to another, the calibration circuit 206 may access these differences and cause the eye calculator 211 to set the operating parameters (delay and reference voltage) for operating in the newly entered performance state. Subsequently, in some embodiments, the state machine 210 may cause the tolerance check calibration to be performed, and in the case of obtaining a pass result therefrom, the horizontal calibration is skipped. In some embodiments, the state machine 210 may also determine whether the number of tolerance check calibrations has exceeded a threshold. If it is determined that the number of tolerance check calibrations exceeds the threshold, the state machine 210 may cause a full horizontal calibration to be performed. Otherwise, if the number is less than the threshold, the state machine 210 may instead cause another instance of the tolerance check calibration to be performed, instead of performing a full horizontal calibration. However, if the tolerance check calibration returns a failure result, the state machine 210 may cause a full horizontal calibration to be performed in response thereto.

[0043] Figure 3 is a block diagram of one embodiment of a system including a memory controller and a dual-rank memory. In the illustrated embodiment, the memory controller 305 may be a memory controller according to the embodiments discussed above. More generally, the memory controller 305 in the illustrated embodiment is capable of performing Figure 1 and Figure 2 305, regardless of its internal arrangement. The memory controller 305 is coupled to various agents (not shown here), such as one or more processor cores, one or more graphics processors, and one or more input / output circuits. In general, the memory controller 305 can be coupled to any agent that utilizes system memory. The actual coupling of the memory controller 305 to these agents can be performed through an on-chip network / structure including circuits such as a crossbar switch.

[0044] The dual-rank memory in the illustrated embodiment includes a memory 310-1 (rank 1) and a memory 310-2 (rank 2). The two memories are coupled to a memory controller 305 via a memory bus configured to transmit data signals DQ[N-1:0]. Select signals are also provided from the memory controller 305 to the memories 310-a and 310-2 to select one of the memories for a read and / or write operation.

[0045] The system 300 also includes a power management circuit 320, a power converter 325, and a clock generator 321. The power converter 325 in the illustrated embodiment is configured to generate an adjustable supply voltage Vdd provided to the memory controller 305 and the memories 310-1 and 310-2. Any suitable type of power converter can be used, including various types of buck converters, boost converters, low dropout regulators, etc. The clock generator 321 is configured to generate a clock signal provided to the memory controller 305, wherein the clock signal has an adjustable frequency. The circuit of the clock generator 321 may include a phase-locked loop, a ring oscillator, and / or any other suitable circuit for generating a clock signal at a plurality of different frequencies. The power management circuit 320 in the illustrated embodiment may control the performance state of the system 300. The Vctrl signal shown here may represent one or more signals or commands for causing the power converter 325 to reach an operating voltage of a desired performance state. Similarly, the power management circuit 320 may send a command labeled Fctrl to the clock generator 321 to set the frequency of the clock signal Clk_In to a value corresponding to the desired performance state. Although not explicitly shown here, the power management circuit 320 may be coupled to a plurality of other circuits within the system 300 (including circuits not shown here) and may monitor operating conditions through various telemetry to select the optimal performance state.

[0046] Graphical representation of tolerance limit check calibration :

[0047] Figure 4 is a diagram of an embodiment of a tolerance check calibration according to the present disclosure. The tolerance check calibration can be used to verify that the current delay value applied to the data selection signal determined by a previous calibration is still valid. This can be performed by calibrating at two points (tolerance calibration point 1 and tolerance calibration point 2). Tolerance calibration point 1 represents a delay less than the current operating point determined by the previous / initial calibration. Tolerance calibration point 2 represents a delay greater than the current operating point. At these two points, multiple data writes to the memory and multiple data reads from the memory can be performed. The data read from the memory is then compared with the expected data (e.g., the data that has been written) to determine whether they match. If the data read matches the expected data at both tolerance calibration points, the tolerance check calibration is considered to have passed, and operation continues using the same operating point. If the data read from the memory does not match the expected data at one or both points, the tolerance check calibration is considered to have failed, and a full horizontal calibration is then performed.

[0048] A successful margin check calibration that produces a passing result can be performed in significantly less time than a full level calibration. Thus, a passing instance of a margin check calibration can significantly reduce the time that a memory subsystem is unavailable.

[0049] Method flow chart :

[0050] Figure 5 is a flow chart of one embodiment of a method for operating a memory controller. Method 500 may be performed by any of the device embodiments discussed above. In addition, device embodiments capable of performing method 500 but not explicitly disclosed herein are also considered to fall within the scope of the present disclosure.

[0051] The method 500 includes performing, by a memory controller, a horizontal memory calibration for some of a plurality of performance states during an initialization process (block 505). The method also includes determining, by the memory controller, a set of differences between calibration results for pairs of performance states in the plurality of performance states (block 510), and storing, by the memory controller, information indicating the set of differences (block 515). After the initialization process and in response to a change from a first performance state in the plurality of performance states to a second performance state in the plurality of performance states, the method includes setting initial memory parameters for the second performance state in the plurality of performance states, the initial memory parameters being based on the set of differences (block 520), and using the initial memory parameters to begin operation in the second performance state in the plurality of performance states without performing an initial horizontal memory calibration (block 525).

[0052] In various embodiments, the method includes performing a tolerance check calibration using a calibration circuit. Performing the tolerance check calibration includes determining whether a calibration result at a first point provides a pass result, wherein the first point corresponds to a delay value less than a calibrated delay point, and determining whether a calibration result at a second point provides a pass result, wherein the second point corresponds to a delay value greater than the calibrated delay point. In response to determining that the calibration results at the first point and the second point are pass results, the method includes skipping performing a full level calibration in the second performance state. Otherwise, the method includes performing a full level calibration in the case where at least one calibration result from one of the calibration results of the first point and the second point does not produce a pass result. Alternative embodiments are also possible and contemplated, wherein an interrupt can be called in response to failure to pass the tolerance calibration. In such embodiments, an interrupt handler can be used to disable the use of future tolerance check calibrations during operation in a particular performance state, for example, in the event of excessive failures.

[0053] A given performance state of one of the plurality of performance states includes a unique combination of operating voltage and clock frequency relative to other performance states in the plurality of performance states. The initialization process may be a startup routine (e.g., a system boot procedure). The present disclosure contemplates that the initialization routine may also be a wakeup from a sleep state or a system reset that does not otherwise include a full system reboot.

[0054] Figure 6 600 is a flow chart of another embodiment of a method for operating a memory subsystem. Method 600 may be performed by various device embodiments among the device embodiments discussed above. Device embodiments capable of performing method 600 but not otherwise disclosed herein are also considered to fall within the scope of the present disclosure.

[0055] The method 600 begins by performing calibrations in some of a plurality of different performance states during an initialization routine and storing the results in a storage circuit along with the differences between the calibrations in the various performance states (block 605). The calibrations performed include horizontal calibrations in which various amounts of delay are applied to a data strobe signal to determine a delay value to be applied to sampling during subsequent operations. The present disclosure further contemplates performing vertical calibrations that include performing horizontal calibrations at a plurality of different reference voltage values, where the reference voltage is a sampling voltage used to determine whether a received signal is a logic 0 or a logic 1. By performing these calibrations, an eye diagram may be determined so that the signal may be sampled with an optimal amount of timing tolerance and voltage tolerance.

[0056] After calibration is completed during the initialization routine, normal operation then begins in the first performance state. Normal operation is defined herein as the memory subsystem performing its intended operations to support the intended system functions. For the memory subsystem, this includes reading data to be provided to other agents (e.g., reading operands to be used in operations performed by the processor core), writing and storing data received from other agents (e.g., writing / storing results from operations performed by the processor core), etc. The initialization routine can be system startup (e.g., cold boot), reset (e.g., hot boot), wakeup from a sleep state, etc. The first performance state can be any of a plurality of performance states for which calibration is performed during the initialization routine.

[0057] The method 600 also includes changing from operation in the first performance state to a second performance state, and setting an operating parameter based on a difference between the states while skipping performance of a horizontal calibration in the second performance state (block 615). For example, if there is a particular difference between a delay value for sampling a signal in the first performance state and a delay value for sampling a signal in the second performance state, the parameter is adjusted by that amount upon entering the second performance state. Other parameters (e.g., reference voltage) may also be similarly adjusted. These adjustments may be made to allow operation in the second performance state to begin with a minimal delay relative to the delay that would be incurred by performing a full horizontal calibration.

[0058] At a point in time after normal operation begins in the second performance state, a margin check calibration is performed (block 620). As discussed above, the margin check calibration is a limited calibration that can be performed in place of a full-level calibration and can be performed by performing a calibration routine at two different delay points. The delay at the first point is less than the delay of the current operating point, and the delay at the second point is greater than the delay of the current operating point. If the margin check calibration obtains a pass result at both points (block 625, yes), the full-level calibration is skipped (block 630). A pass result is defined herein as data read from the memory being equal to the expected data. A pass of the margin check calibration may indicate that the current operating parameters remain valid under the current operating conditions in the second performance state. Additionally, performing the margin check calibration in place of the full-level calibration may reduce the amount of time that the memory subsystem is unavailable for normal memory transactions due to calibration. If the margin check calibration fails to obtain a pass result from at least one of the first point or the second point (block 625, no), a full-level calibration is performed (block 635).

[0059] Figure 7 700 is a flow chart of another embodiment of a method for operating a memory subsystem. Method 700 may be performed by various device embodiments among the device embodiments discussed above. Device embodiments capable of performing method 700 but not otherwise disclosed herein are also considered to fall within the scope of the present disclosure.

[0060] The method 700 begins by operating in a second performance state using difference-based parameters after having switched from operating in a first performance state (block 705). The difference-based parameters are those parameters determined based on the calculated differences determined when performing horizontal memory calibrations in various performance states during the system initialization process. After operating in the second performance state for a period of time, a check may be performed to determine the number of margin check calibrations that have been performed since entering the state (block 710). If the number of margin check calibrations is not greater than a certain threshold (block 710, no), a capacity check calibration is performed (block 715). As discussed above, the margin check calibration includes performing calibration at two different delay points relative to the current operating delay point, and determining whether a passing result is obtained. If the margin check calibration produces a passing result at two points (block 720, yes), the full horizontal calibration is skipped (block 725) and the method 700 returns to block 705.

[0061] If it is determined that the number of margin check calibrations performed while operating in the second performance state has exceeded the threshold (block 710, yes), a full horizontal calibration is performed (block 730). The full horizontal calibration may be performed at a plurality of different points within a wider range of delay values ​​than the margin check calibration. In the event that the number of margin check calibrations does not exceed the threshold (block 710, no), but at least one of the points did not provide a passing result during the margin check calibration (block 720, no), a full horizontal calibration is performed.

[0062] In the embodiment of the method 700 illustrated here, it is assumed that once the number of times of tolerance check calibration has exceeded the threshold value, the subsequent periodic calibration performed while maintaining the current performance state is a full horizontal calibration. However, it is possible and contemplated that the embodiment of full horizontal calibration is performed only when the number of times of tolerance check calibration after horizontal calibration exceeds the threshold value or when a specific tolerance check calibration provides a failure result. Otherwise, as long as the tolerance check calibration continues to produce a pass result, the tolerance check calibration can be performed at periodic intervals until the number of times of the tolerance calibration performed since the most recent horizontal calibration exceeds the threshold value. In this way, most of the calibrations performed after entering a specific performance state can be tolerance check calibrations, thereby further reducing the amount of time that the memory subsystem is unavailable for normal memory transactions.

[0063] It is also noted that the calculated differences may be updated after a full horizontal calibration is performed. For example, when a full horizontal calibration is performed in a second performance state after having previously operated in a first performance state, the results from the full horizontal calibration (in the second state) may be used to calculate updated differences relative to the results of the most recent horizontal calibration performed in the first performance state. In this way, the current set of differences may more accurately reflect system operating conditions that change over time. As further noted above, embodiments are possible and contemplated in which heuristics may be applied, for example, to account for changes in operating conditions (such as temperature) rather than directly applying the differences. Thus, previously calculated differences may be modified by heuristics to account for current operating conditions relative to those operating conditions that existed during their initial calculation.

[0064] Example System :

[0065] Next go to Figure 8, which shows a block diagram of one embodiment of a system 800 that can incorporate and / or otherwise utilize the methods and mechanisms described herein. In the illustrated embodiment, the system 800 includes at least one instance of a system on a chip (SoC) 806, which can include multiple types of processing units such as a central processing unit (CPU), a graphics processing unit (GPU), or other communication structures, as well as interfaces to memory and input / output devices. In some embodiments, one or more processors in the SoC 806 include multiple execution lanes and instruction issue queues. In various embodiments, the SoC 806 is coupled to an external memory 802, peripherals 804, and a power supply 808.

[0066] A power supply 808 is also provided that supplies a supply voltage to the SoC 806 and one or more supply voltages to the memory 802 and / or peripherals 804. In various embodiments, the power supply 808 represents a battery (e.g., a rechargeable battery in a smartphone, laptop or tablet computer, or other device). In some embodiments, more than one instance of the SoC 806 is included (also including more than one external memory 802).

[0067] The memory 802 is any type of memory, such as dynamic random access memory (DRAM), synchronous DRAM (SDRAM), double data rate (DDR, DDR2, DDR3, etc.) SDRAM (including mobile versions of SDRAM, such as mDDR3, etc., and / or low power versions of SDRAM, such as LPDDR2, etc.), RAMBUS DRAM (RDRAM), static RAM (SRAM), etc. One or more memory devices are coupled to the circuit board to form a memory module, such as a single inline memory module (SIMM), a dual inline memory module (DIMM), etc. Alternatively, the device can be mounted together with the SoC or integrated circuit in a chip-on-chip configuration, a package-on-package configuration, or a multi-chip module configuration.

[0068] The SoC 806 in the illustrated embodiment may include at least one memory controller coupled to the memory 802, wherein the memory controller and the memory form a memory subsystem. The memory controller may include calibration circuitry that performs various memory calibrations as discussed above. These calibrations may include level calibrations as well as margin check calibrations disclosed herein.

[0069] Peripheral devices 804 include any desired circuitry, depending on the type of system 800. For example, in one embodiment, peripheral devices 804 include devices for various types of wireless communications, such as Wi-Fi, Bluetooth, cellular, global positioning systems, etc. In some embodiments, peripheral devices 804 also include additional memory, including RAM storage, solid-state storage, or disk storage. Peripheral devices 804 include user interface devices such as display screens, including touch screens or multi-touch screens, keyboards or other input devices, microphones, speakers, etc.

[0070] As shown, system 800 is shown as having applications in a wide range of fields. For example, system 800 can be used as a part of a chip, circuit, component, etc. of a desktop computer 810, a laptop computer 820, a tablet computer 830, a cellular or mobile phone 840, or a TV 850 (or a set-top box coupled to a TV). A smart watch and a health monitoring device 860 are also shown. In some embodiments, smart watch 860 may include various general computing related functions. For example, smart watch 860 may provide access to email, mobile phone services, user calendars, etc. In various embodiments, the health monitoring device may be a dedicated medical device or otherwise include dedicated health-related functionality. For example, a health monitoring device may monitor a user's vital signs, track the proximity of a user to other users for the purpose of epidemiological social distance, contact tracking, provide communications to emergency services in the event of a health crisis, etc. In various embodiments, the above-mentioned smart watch may include or may not include some or any health monitoring related functions. Other wearable devices are also envisioned, such as devices worn around the neck, devices that can be implanted in the human body, glasses designed to provide enhanced and / or virtual reality experiences, etc.

[0071] The system 800 may also be used as part of a cloud-based service 870. For example, the previously mentioned devices and / or other devices may access computing resources in the cloud (i.e., remotely located hardware and / or software resources). Still further, the system 800 may be used in one or more devices in a home other than those previously mentioned. For example, a home appliance may monitor and detect noteworthy situations. For example, various devices in a home (e.g., a refrigerator, a cooling system, etc.) may monitor the status of the device, and an alert may be provided to the homeowner (or, for example, a maintenance agency) if a particular event is detected. Alternatively, a thermostat may monitor the temperature in a home, and may automatically adjust the heating / cooling system based on a history of responses by the homeowner to various situations. Figure 8Also shown in the figure are applications of system 800 to various modes of transportation. For example, system 800 may be used for control and / or entertainment systems for airplanes, trains, buses, taxis, private cars, watercraft ranging from private boats to cruise ships, scooters (for rental or private use), etc. In various cases, system 800 may be used to provide automated guidance (e.g., self-driving vehicles), general system control, etc. Any of these and many other implementations are possible and contemplated. Note that Figure 8 The devices and applications shown are exemplary only and are not intended to be limiting. Other devices are possible and contemplated.

[0072] ***

[0073] This disclosure includes references to "an embodiment" or groups of "embodiments" (e.g., "some embodiments" or "various embodiments"). Embodiments are different specific implementations or examples of the disclosed concepts. References to "an embodiment," "one embodiment," "a particular embodiment," etc. are not necessarily to the same embodiment. A large number of possible embodiments are contemplated, including those specifically disclosed, as well as modifications or alternatives that fall within the spirit or scope of the present disclosure.

[0074] The present disclosure may discuss potential advantages that may be generated by the disclosed embodiments. Not all of these implementations will necessarily exhibit any or all of the potential advantages. Whether a particular implementation achieves an advantage depends on many factors, some of which are outside the scope of the present disclosure. In fact, there are many reasons why an implementation that falls within the scope of the claims may not exhibit some or all of any of the disclosed advantages. For example, a particular implementation may include other circuits outside the scope of the present disclosure that, in combination with one of the disclosed embodiments, negate or reduce one or more of the disclosed advantages. In addition, suboptimal design execution of a particular implementation (e.g., a specific implementation technique or tool) may also negate or reduce the disclosed advantages. Even assuming a specific implementation of the technology, the realization of the advantages may still depend on other factors, such as the environmental conditions in which the specific implementation is deployed. For example, the input provided to a particular implementation may prevent one or more problems solved in the present disclosure from occurring in a particular occasion, and as a result, the benefits of its solution may not be realized. In view of the existence of possible factors external to the present disclosure, it is hereby clarified that any potential advantages described herein should not be construed as claim limitations that must be met in order to prove infringement. Instead, the identification of such potential advantages is intended to illustrate the types of improvements available to designers who benefit from the present disclosure. Permanently describing such advantages (eg, stating that a particular advantage "may occur") is not intended to convey a doubt as to whether such advantage can actually be achieved, but rather to recognize that achievement of such advantage typically depends on technical realities of additional factors.

[0075] Unless otherwise stated, the embodiments are non-limiting. That is, the disclosed embodiments are not intended to limit the scope of the claims drafted based on the present disclosure, even if only a single example is described with respect to a particular feature. The embodiments disclosed by the present invention are intended to be illustrative and non-restrictive, without any contrary statement in the present disclosure. Therefore, the present application is intended to allow claims covering the disclosed embodiments, as well as such alternatives, modifications and equivalents, which will be apparent to those skilled in the art who are aware of the beneficial effects of the present disclosure.

[0076] For example, features in this application may be combined in any suitable manner. Accordingly, new claims may be made during the prosecution of this application (or an application claiming priority thereto) for any such combination of features. In particular, with reference to the appended claims, features of dependent claims may be combined, where appropriate, with features of other dependent claims, including claims that are dependent on other independent claims. Similarly, features from corresponding independent claims may be combined, where appropriate.

[0077] Thus, while the appended dependent claims may be drafted such that each dependent claim is dependent upon a single other claim, additional dependencies are also contemplated. Any combination of dependent claims consistent with the present disclosure is contemplated and may be claimed in this or another patent application. In short, the combinations are not limited to those specifically recited in the appended claims.

[0078] It is also contemplated that claims drafted in one format or legal type (eg, apparatus) are intended to support corresponding claims in another format or legal type (eg, method), where appropriate.

[0079] ***

[0080] Because this disclosure is a legal document, various terms and phrases may be subject to regulatory and judicial interpretation. Notice is hereby given that the definitions provided in the following paragraphs and throughout this disclosure will be used to determine how to interpret claims drafted based on this disclosure.

[0081] Unless the context clearly dictates otherwise, reference to an item in the singular (i.e., a noun or noun phrase preceded by "a," "an," or "the") is intended to mean "one or more." Thus, reference to "an item" in a claim does not exclude additional instances of that item without the accompanying context. A "plurality" of an item refers to a group of two or more items.

[0082] The word "may" is used herein in a permissive sense (ie, having the potential to, being able to), rather than the mandatory sense (ie, must).

[0083] The terms "including" and "comprising" and forms thereof are open ended and mean "including, but not limited to."

[0084] When the term "or" is used in this disclosure with respect to a list of options, it will generally be understood to be used in an inclusive sense unless the context provides otherwise. Thus, the expression "x or y" is equivalent to "x or y, or both," and thus encompasses 1) x but not y, 2) y but not x, and 3) both x and y. On the other hand, phrases such as "either x or y, but not both" make it clear that "or" is used in an exclusive sense.

[0085] The expressions "w, x, y, or z, or any combination thereof" or "at least one of ... w, x, y, and z" are intended to cover all possibilities involving individual elements up to the total number of elements in the set. For example, given the set [w, x, y, z], these phrases cover any single element in the set (e.g., w but not x, y, or z), any two elements (e.g., w and x, but not y or z), any three elements (e.g., w, x, and y, but not z), and all four elements. The phrase "at least one of ... w, x, y, and z" thus refers to at least one element in the set [w, x, y, z], thereby covering all possible combinations in the list of elements. The phrase should not be interpreted as requiring the presence of at least one instance of w, at least one instance of x, at least one instance of y, and at least one instance of z.

[0086] In this disclosure, various "labels" may precede a noun or noun phrase. Unless the context provides otherwise, different labels used for a feature (e.g., "a first circuit," "a second circuit," "a particular circuit," "a given circuit," etc.) refer to different instances of the feature. Additionally, unless otherwise stated, the labels "first," "second," and "third" do not imply any type of ordering (e.g., spatial, temporal, logical, etc.) when applied to features.

[0087] The phrase "based on" is used to describe one or more factors that influence a determination. This term does not exclude the possibility that additional factors may influence a determination. That is, a determination may be based only on specified factors or on specified factors as well as other unspecified factors. Consider the phrase "A is determined based on B." This phrase specifies that B is a factor used to determine A or that B influences the determination of A. This phrase does not exclude that the determination of A may also be based on some other factor such as C. This phrase is also intended to cover embodiments in which A is determined based only on B. As used herein, the phrase "based on" is synonymous with the phrase "based at least in part on."

[0088] The phrases "in response to" and "in response to" describe one or more factors that trigger an effect. The phrase does not exclude the possibility that additional factors may influence or otherwise trigger the effect, either in conjunction with the specified factors or independently of the specified factors. That is, the effect may be responsive to these factors alone, or may be responsive to the specified factors as well as other unspecified factors. Consider the phrase "A is performed in response to B." The phrase specifies that B is a factor that triggers the execution of A or triggers a specific result of A. The phrase does not exclude that the execution of A may also be responsive to some other factor, such as C. The phrase also does not exclude that the execution of A may be performed jointly in response to B and C. This phrase is also intended to cover embodiments in which A is performed only in response to B. As used herein, the phrase "in response to" is synonymous with the phrase "at least partially in response to." Similarly, the phrase "in response to" is synonymous with the phrase "at least partially in response to."

[0089] ***

[0090] Within the present disclosure, different entities (which may be variously referred to as "units," "circuits," other components, etc.) may be described or claimed as being "configured to" perform one or more tasks or operations. This expression—[an entity] configured to [perform one or more tasks]—is used herein to refer to a structure (i.e., a physical thing). More specifically, this expression is used to indicate that this structure is arranged to perform one or more tasks during operation. A structure may be said to be "configured to" perform a task even if the structure is not currently being operated. Thus, an entity described or stated as "configured to" perform a task refers to a physical thing used to implement the task, such as a device, a circuit, a system with a processor unit, and a memory storing executable program instructions, etc. This phrase is not used herein to refer to an intangible thing.

[0091] In some cases, various units / circuits / components may be described herein as performing a set of tasks or operations. It should be understood that these entities are "configured to" perform those tasks / operations, even if not specifically stated.

[0092] The term "configured to" is not intended to mean "configurable to". For example, an unprogrammed FPGA would not be considered "configured to" perform a particular function. However, the unprogrammed FPGA may be "configurable to" perform that function. After being appropriately programmed, the FPGA may then be considered "configured to" perform the particular function.

[0093] For purposes of a U.S. patent application based on the present disclosure, stating in a claim that a structure is “configured to” perform one or more tasks is expressly intended not to invoke 35 U.S.C. §112(f) for that claim element. If the applicant wishes to invoke section 112(f) during prosecution of a U.S. patent application based on the present disclosure, it would use the “means for [performing the function]” construct to phrase the claim element.

[0094] Different "circuits" may be described in the present disclosure. These circuits or "circuits" constitute hardware that includes various types of circuit elements, such as combinational logic, clock storage devices (e.g., flip-flops, registers, latches, etc.), finite state machines, memories (e.g., random access memory, embedded dynamic random access memory), programmable logic arrays, etc. Circuits may be custom designed or taken from a standard library. In various specific implementations, circuits may include digital components, analog components, or a combination of both, as appropriate. Certain types of circuits may be generally referred to as "units" (e.g., decoding units, arithmetic logic units (ALUs), functional units, memory management units (MMUs), etc.). Such units are also referred to as circuits.

[0095] Thus, the disclosed circuits / units / components and other elements illustrated in the drawings and described herein include hardware elements, such as those described in the preceding paragraphs. In many cases, the internal arrangement of hardware elements in a particular circuit can be specified by describing the functionality of the circuit. For example, a particular "decode unit" may be described as performing the function of "processing an opcode for an instruction and routing the instruction to one or more of a plurality of functional units," meaning that the decode unit is "configured to" perform that function. For one skilled in the computer arts, this functional specification is sufficient to suggest a set of possible structures for the circuit.

[0096] In various embodiments, as discussed in the preceding paragraphs, circuits, units, and other elements may be defined by the functions or operations they are configured to implement. The arrangement relative to each other and such circuits / units / components and the way they interact form a microarchitecture definition of hardware, which is ultimately manufactured in an integrated circuit or programmed into an FPGA to form a physical implementation of the microarchitecture definition. Therefore, the microarchitecture definition is considered by those skilled in the art to be a structure from which many physical implementations can be derived, all of which fall into the broader structure described by the microarchitecture definition. That is, a technician with a microarchitecture definition provided in accordance with the present disclosure can implement the structure by coding a description of a circuit / unit / component in a hardware description language (HDL) such as Verilog or VHDL without excessive experimentation and using the application of ordinary technicians. HDL descriptions are often expressed in a way that can be displayed as functional. However, for those skilled in the art, the HDL description is a way to transform the structure of a circuit, unit, or component into the next level of specific implementation details. Such HDL descriptions may take the form of behavioral code (which is generally non-synthesizable), register transfer language (RTL) code (which is generally synthesizable compared to behavioral code), or structural code (e.g., a netlist specifying logic gates and their connectivity). The HDL description may be sequentially synthesized for a library of cells designed for a given integrated circuit manufacturing technology, and may be modified for timing, power, and other reasons to obtain a final design database that is sent to the factory to generate masks and ultimately produce integrated circuits. Some hardware circuits or portions thereof may also be custom designed in a schematic editor and captured into an integrated circuit design along with the synthesized circuits. The integrated circuit may include transistors and other circuit elements (e.g., passive elements such as capacitors, resistors, inductors, etc.), as well as interconnects between transistors and circuit elements. Some embodiments may implement multiple integrated circuits coupled together to implement the hardware circuit, and / or discrete elements may be used in some embodiments. Alternatively, the HDL design may be synthesized into a programmable logic array such as a field programmable gate array (FPGA), and may be implemented in an FPGA. This decoupling between the design of a set of circuits and the subsequent low-level implementation of those circuits often leads to a situation where a circuit or logic designer never specifies a specific set of structures for the low-level implementation beyond a description of what the circuits are configured to do, because that process is performed at different stages of the circuit implementation process.

[0097] The fact that many different low-level combinations of circuit elements can be used to achieve the same specification of a circuit results in a large number of identical structures for that circuit. As noted, these low-level circuit implementations can vary depending on variations in manufacturing technology, the foundry selected to manufacture the integrated circuit, the cell libraries provided for a particular project, etc. In many cases, the selection made by different design tools or methodologies to produce these different implementations can be arbitrary.

[0098] Furthermore, for a given embodiment, a single implementation of a particular functional specification of a circuit typically includes a large number of devices (e.g., millions of transistors). Thus, the shear volume of this information makes it impractical to provide a complete description of the low-level structure used to implement a single embodiment, let alone the large number of equivalent possible implementations. For this reason, the present disclosure describes the structure of the circuit using functional shorthand commonly used in the industry.

[0099] Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to include all such variations and modifications.

Claims

1. A device, comprising: Memory; and a memory controller coupled to the memory, wherein the memory controller includes a calibration circuit configured to: performing a horizontal memory calibration for some of the plurality of performance states during an initialization process; as well as determining information indicative of a set of differences between calibration results for pairs of performance states in the plurality of performance states and storing the information in a memory circuit; wherein the memory controller is further configured to, after the initialization process and in response to a change from a first performance state of the plurality of performance states to a second performance state of the plurality of performance states: setting initial memory parameters for the second performance state based on the set of differences; as well as Operation is initiated in the second performance state without performing an initial level calibration. 2 . The apparatus of claim 1 , wherein a given one of the plurality of performance states comprises a unique combination of operating voltage and clock frequency relative to other ones of the plurality of performance states.

3. The apparatus of claim 1 , wherein the calibration circuit is further configured to perform a margin check calibration after operating in the second performance state, wherein to perform the margin check calibration, the calibration circuit is further configured to: determining whether a calibration result at a first point provides a passing result, wherein the first point corresponds to a delay value less than a calibrated delay point; and A determination is made as to whether the calibration result at a second point provides a passing result, wherein the second point corresponds to a delay value greater than the calibrated delay point. 4 . The apparatus of claim 3 , wherein the calibration circuit is configured to skip performing a full level calibration in the second performance state in response to determining that the calibration results at the first point and the second point are passing results.

5. The apparatus of claim 3, wherein the calibration circuit is further configured to: performing a full level calibration in the second performance state in response to determining that at least one of the calibration results at the first point and the second point has failed; and The set of differences is updated based on results of the full horizontal calibration.

6. The apparatus of claim 3 , wherein the calibration circuit is further configured to limit the number of times the margin check calibration is performed after entering the second performance state to a threshold, and to perform a full level calibration instead of the margin check calibration in response to determining that the number of times the margin check calibration has been performed exceeds the threshold.

7. The apparatus of claim 1, wherein when performing horizontal calibration, the calibration circuit is configured to perform data writing to and reading from a memory at a specific reference voltage and at different delay values ​​applied to a data strobe signal.

8. The apparatus of claim 1, wherein the memory comprises a multi-rank memory system having a first group of memory circuits and a second group of memory circuits, the first group of memory circuits and the second group of memory circuits sharing a set of common signal paths between the memory controller and the memory.

9. An apparatus according to claim 1, wherein the calibration circuit is further configured to perform one or more periodic horizontal calibrations during operation in the first performance state among the multiple performance states after the initialization process and before changing to the second performance state among the multiple performance states, and is further configured to set initial memory parameters for the second performance state among the multiple performance states based on the most recent horizontal calibration performed in the first performance state among the multiple performance states before transitioning to the second performance state.

10. The apparatus of claim 1, wherein the initialization process comprises system startup.

11. A method comprising: performing, by the memory controller, horizontal memory calibration for some of the plurality of performance states during an initialization process; determining, by the memory controller, a set of differences between calibration results for pairs of performance states in the plurality of performance states; storing, by the memory controller, information indicative of the set of differences; After the initialization process and in response to a change from a first performance state of the plurality of performance states to a second performance state of the plurality of performance states: setting initial memory parameters for the second performance state of the plurality of performance states, the initial memory parameters being based on the set of differences; as well as The initial memory parameters are used to begin operation in the second of the plurality of performance states without performing an initial horizontal memory calibration.

12. The method of claim 11 , further comprising performing a margin check calibration using a calibration circuit, wherein performing the margin check calibration comprises: determining whether a calibration result at a first point provides a passing result, wherein the first point corresponds to a delay value less than a calibrated delay point; as well as A determination is made as to whether the calibration result at a second point provides a passing result, wherein the second point corresponds to a delay value greater than the calibrated delay point. 13 . The method of claim 12 , further comprising skipping performing a full-level calibration in the second performance state among the plurality of performance states in response to determining that the calibration results at the first point and the second point are passing results.

14. The method of claim 13, further comprising performing a full level calibration if at least one of the calibration results from one of the first point and the second point does not produce a passing result.

15. The method of claim 11, wherein a given one of the plurality of performance states comprises a unique combination of operating voltage and clock frequency relative to other ones of the plurality of performance states. The method of claim 11 , wherein the initialization process comprises a startup routine.

17. A system, comprising: a memory subsystem having a memory controller coupled to a memory, wherein the memory controller includes a calibration circuit configured to perform a horizontal memory calibration for some of a plurality of performance states during an initialization process, and a storage circuit configured to store information indicating a set of differences between calibration results for pairs of performance states in the plurality of performance states; and a power management circuit configured to change operation of the memory subsystem from a first performance state of the plurality of performance states to a second performance state of the plurality of performance states; Wherein the memory controller is further configured to, after the initialization process and in response to a change from a first performance state among the multiple performance states to a second performance state among the multiple performance states, set initial parameters for the second performance state based on the set of differences, and begin operation in the second performance state without performing an initial level calibration.

18. The system of claim 17, wherein a given one of the plurality of performance states comprises a unique combination of operating voltage and clock frequency relative to other ones of the plurality of performance states.

19. The system of claim 17 , wherein the calibration circuit is configured to perform a tolerance check calibration, the tolerance check calibration comprising determining whether calibration results at a first point and a second point provide a passing result, wherein the first point corresponds to a delay value less than a calibrated delay point, and wherein the second point corresponds to a delay value greater than the calibrated delay point; and wherein the calibration circuit is further configured to skip performing a full level calibration in the second performance state in response to determining that the calibration results at the first point and the second point are passing results.

20. The system of claim 17, wherein the initialization process comprises a system startup routine.

Citation Information

Patent Citations

  • Method and apparatus for calibrating write timing in a memory system

    CN101465154A

  • Memory subsystem calibration using substitute results

    US11217285B1

Cited By

  • Method and system for detecting false capacity expansion of memory card

    CN120708684A

  • A method and system for detecting fake memory card capacity expansion

    CN120708684B

  • Calibration method of memory and storage device

    CN120895076A