CoreFreq, a CPU monitoring software with BIOS like functionalities, is designed for the 64-bits Processors of architecture Intel Atom, Core2, Nehalem, SandyBridge and superiors; AMD Families from 0Fh ... up to 17h (Zen , Zen+ , Zen2), 18h (Hygon Dhyana), 19h (Zen3)
CoreFreq provides a framework to retrieve CPU data with a high degree of precision:
Core frequencies & ratios; SpeedStep (EIST), Turbo Boost, Hyper-Threading (HTT) and Base Clock
Performance counters including Time Stamp Counter (TSC), Unhalted Core Cycles (UCC), Unhalted Reference Cycles (URC)
Number of instructions per cycle or second, IPS, IPC, or CPI
CPU C-States C0 C1 C3 C6 C7 - C1E - Auto/UnDemotion of C1 C3
DTS Temperature and Tjunction Max, Thermal Monitoring TM1 TM2 state, Vcore
Topology map including Caches for boostrap & application CPU
Processor features, brand & architecture strings
In progress: Uncore, Memory Controller channels & geometry, DIMM timings,
Stress tools, Power & Energy (RAPL, P-State, HWP, TDP), Overclocking, cpuidle & cpufreq driver, ClockSource, Mitigation Mechanisms
To reach this goal, CoreFreq implements a Linux Kernel module which employs the followings:
asm code to keep as near as possible the readings of the performance counters;
per-CPU, implements slab data memory and high-resolution timer;
compliant with suspend / resume and CPU Hot-Plug;
a shared memory to protect kernel from the user-space part of the software;
atomic synchronization of threads to avoid mutexes and deadlock.