pcm
pcm copied to clipboard
Reporting IMC's configuration
PCM is able to enumerate the IMCs but it would be very handy to expose some of the IMC's configuration.
Exposing the DDR timing would be very nice so we could use this as a conformity tool to ensure the DDR are used in a good setup.
Exposing values from tcdbp, tcrap, tcrwp, tcothp, tcrfp would be fanstatic.
this should be possible by writing a script that checks lspci -n
to find IMC_DEV_IDS
(from cpucounter.cpp) and then read the tcdbp, tcrap, tcrwp, tcothp, tcrfp registers from bus/device/function offset using pcm-pcicfg.x (compiled with CXXFLAGS += -DPCM_USE_PCI_MM_LINUX
)
The idea was a little bit different ;o) OPCM have some memory testing tooling, it does detect the IMCs and have all the logic to reach those registers. It would make sense reporting the DDR timing in this tool so the hardware setup is exposed before making a benchmark. This could be used to increase the hardware conformity tests before benchmarking.
Hello,
I'm not fond of having a reporting for something that isn't related to PCM data. Instead, you may check this memory output from CoreFreq:
sudo ./corefreq-cli -M
Union Point [5914]
Controller #0 Dual Channel
Bus Rate 4000 MT/s Bus Speed 4022 MT/s DRAM Speed 1600 MHz
Cha CL RCD RP RAS RRD RFC WR RTPr WTPr FAW B2B CWL Rate
#0 17 17 17 39 0 420 0 9 38 0 0 15 2N
#1 17 17 17 39 0 420 0 9 38 0 0 15 2N
ddWR drWR srWR ddRW drRW srRW ddRR drRR srRR ddWW drWW srWW ECC
#0 0 0 0 0 0 0 0 0 0 0 0 0 0
#1 0 0 0 0 0 0 0 0 0 0 0 0 0
DIMM Geometry for channel #0
Slot Bank Rank Rows Columns Memory Size (MB)
#0 16 2 65536 1024 16384
DIMM Geometry for channel #1
Slot Bank Rank Rows Columns Memory Size (MB)
#0 16 2 65536 1024 16384
You also have the "./corefreq-cli -j" that outputs every element as json:
"MC": [
{
"Channel": [
{
"DIMM": [
{
"Banks": 16,
"Cols": 1024,
"Ranks": 2,
"Rows": 65536,
"Size": 16384
},
{
"Banks": 16,
"Cols": 0,
"Ranks": 1,
"Rows": 65536,
"Size": 0
},
{
"Banks": 0,
"Cols": 0,
"Ranks": 0,
"Rows": 0,
"Size": 0
},
{
"Banks": 0,
"Cols": 0,
"Ranks": 0,
"Rows": 0,
"Size": 0
}
],
"Timing": {
"B2B": 0,
"CMD_Rate": 1,
"ECC": 0,
"tCL": 10,
"tCWL": 8,
"tFAW": 0,
"tRAS": 28,
"tRCD": 10,
"tRFC": 234,
"tRP": 10,
"tRRD": 0,
"tRTPr": 6,
"tWR": 0,
"tWTPr": 23,
"tddRdTRd": 0,
"tddRdTWr": 0,
"tddWrTRd": 0,
"tddWrTWr": 0,
"tdrRdTRd": 0,
"tdrRdTWr": 0,
"tdrWrTRd": 0,
"tdrWrTWr": 0,
"tsrRdTRd": 0,
"tsrRdTWr": 0,
"tsrWrTRd": 0,
"tsrWrTWr": 0
}
},
Might be nice asking him to use his tool as reporting only.