void main()
{
import std.stdio;
import cpuid.unified;
enum fmt = "%14s: %s";
fmt.writefln("vendor", vendor);
fmt.writefln("brand", brand);
fmt.writefln("cores", cores);
fmt.writefln("threads", threads);
fmt.writefln("data caches", dCache.length);
fmt.writefln("code caches", iCache.length);
fmt.writefln("unified caches", uCache.length);
fmt.writefln("data TLBs", dTlb.length);
fmt.writefln("code TLBs", iTlb.length);
fmt.writefln("unified TLBs", uTlb.length);
}
This package also can be used as workaround for core.cpuid Issue 16028.
See http://docs.cpuid.dlang.io .
See all reports.
To receive a report about your CPU, run
dub fetch cpuid
dub test cpuid
Please report dub log in a new GitHub issue!
See also output example.
- API was split to unified, target specified, and vendor specified parts.
- Complex cache topology (number of cores per cache) is supported. This feature is required by ARM CPUs.
- Translation lookaside buffers are supported. They are used in server and math software, for example cache optimized BLAS requires TLB information.
- Caches and TLBs are split into three types:
- Data
- Instruction (code)
- Unified (data and code)
_cpuid
function is available for x86/x86-64 targets.
- The library was written completely from scratch.
- Code is clean and simple.
- Unions and
std.bitmanip.bitfields
are used instead of bit operations.
- Add information about recent features like AVX2, AVX512F.
- Add information about ARM target and ARM vendors.
- Test a lot of different CPUs.
- Extend testing infrastructure.