Currently putting together a box for an Alder Lake processor, e.g. an i7-12700k or i9-12900k. I still need to select the memory (RAM) for it.
How can I compare different options to determine which would be best?
I'd like a mathematical-formula that assigns a score based on the RAM's frequency, timings, and number of sticks. Then, the RAM with the highest (or lowest) score would be fastest.
Assumptions:
CPU is a 12th-generation Intel processor, e.g. i7-12700k or i9-12900k.
Memory is DDR5.
Can use 1-to-4 memory-sticks.
- As a simplification, may assume exactly 2 sticks.
This question is purely about quantifying speed; other factors such as cost, capacity/size, voltage, temperature, etc. may be ignored.
Computer is running number-crunching software that takes up a lot of memory. So, let's assume that the worst-case scenario where:
the computer is bottlenecked by the RAM having to constantly read/write values;
the read/writes aren't sequential or local, so on each operation, the RAM has to perform whatever operations would be associated with reading/writing from/to a different section of the memory.
Not using hardware-ECC (except DDR5's on-stick ECC) nor buffering.
Physical conditions can be assumed ideal, e.g. temperatures/voltages are well-controlled, no hardware defects, etc..
No need to consider custom overclocking nor any dynamic runtime adjustments. This is, memory can be assumed to run with the values advertised.
Other simplifications can be assumed too.
- For example, the command-rate (CMD) is apparently T2 for DDR5 by-default. While a fuller scoring-metric might consider other values, we can just assume that it's T2.
Information already found online.
Skimming online, it looks like a lot of folks recommend minimizing
[score] = [CAS latency] / [frequency]
, under the theory that the memory'd take [CAS latency] cycles at a rate proportional to [frequency], so minimizing that ratio provides the most speed.
However:
The CAS latency is the delay between the time at which the column address and the column address strobe signal are presented to the memory module and the time at which the corresponding data is made available by the memory module. The desired row must already be active; if it is not, additional time is required.
—"CAS latency", Wikipedia [emphasis added].
And I'm guessing that, because my workload is accessing the RAM pretty randomly, the CAS-latency isn't the only relevant timing. Presumably I'd need to incorporate timings for.. closing rows, charging rows, activating rows..?
Also, how does the number-of-sticks affect performance? For example, if there's a choice between:
1 64-GB stick;
2 32-GB sticks;
4 16-GB sticks;
all with equal timings, might they perform differently?
Relevant variables.
Relevant variables might include:
| Name | Symbol | Description |
|---|---|---|
| Number of memory-sticks | Nsticks | Number of sticks of memory, from 1 to 4. |
| Frequency | F | Frequency of the RAM's clock; this is, the number of clock-cycles per second. |
| CAS latency | CL | The number of cycles between sending a column address to the memory and the beginning of the data in response. |
| Row Address to Column Address Delay | TRCD | The minimum number of clock cycles required between opening a row of memory and accessing columns within it. |
| Row Precharge Time | TRP | The minimum number of clock cycles required between issuing the precharge command and opening the next row. |
| Row Active Time | TRAS | The minimum number of clock cycles required between a row active command and issuing the precharge command. |
| Command Rate | CMD | The time it takes between the memory chip having been activated and when the first command may be sent to the memory. Sometimes this value is not announced. It usually is T1 (1 clock cycle) or T2 (2 clock cycles)." |
Question: What scoring-metric could quantify the relative performance of 1-to-4 DDR5 RAM-sticks for a workload that frequently accesses different parts of the memory?
This is, if we have a list of different options for RAM, along with the variables tabulated above (Nsticks, F, CL, TRCD, TRP, TRAS, and CMD) for each option, plus any other relevant variables, then what mathematical expression/equation could we use to determine which of the options would be best?