Report a bug
If you spot a problem with this page, click here to create a GitHub issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
a local clone.
cpuid.intel
Intel 64 and IA-32 CPUID Information
This module is available for betterC compilation mode.
References Intel® 64 and IA-32 Architectures Software Developer’s Manual
License:
Authors:
Ilya Yaroshenko
- struct
Leaf2Information; - TLB and Cache information.For convinient Cache information see also Leaf4Information..
Specification Intel
Examples:auto leaf2 = Leaf2Information(_cpuid(2));
- Cache
il1; - Level-1 instuciton cache
- Cache
l1; - Level-2 data cache
- Cache
l2; - Level-2 unified cache
- Cache
l3; - Level-2 unified cache
- Tlb
itlb; - Intruction TLB
- Tlb
hitlb; - Intruction TLB, huge pages
- Tlb
dtlb; - Data TLB
- Tlb
hdtlb; - Data TLB, huge pages
- Tlb
gdtlb; - Data TLB, giant pages
- Tlb
dtlb1; - Data TLB1
- Tlb
hdtlb1; - Data TLB1, huge pages
- Tlb
utlb; - Second-level unified TLB
- Tlb
hutlb; - Second-level unified TLB, huge pages
- Tlb
gutlb; - Second-level unified TLB, giant pages
- int
prefetch; - prefetch line size
- int
trace; - Cache trace
- bool
noCacheInfo; - true if CPUID leaf 2 does not report cache descriptor information. use CPUID leaf 4 to query cache parameters.
- union
Leaf4Information; - Deterministic Cache Parameters for Each Level.** - Add one to the return value to get the result.
Specification Intel
Examples:if(maxBasicLeaf >= 4 && vendorIndex == VendorIndex.intel) { Cache cache = void; Leaf4Information leaf4 = void; foreach(ecx; 0..12) { leaf4.info = _cpuid(4, ecx); if(!leaf4.type) break; leaf4.fill(cache); debug(cpuid) import std.stdio; debug(cpuid) writefln("Cache #%s has type '%s' and %s KB size", ecx, leaf4.type, leaf4.size); } }
- CpuInfo
info; - CPUID payload
- enum
Type: int; -
noMoreCachesdatainstructionunified
- const pure nothrow @nogc @property @trusted Type
type(); - Cache Type Field.
- const pure nothrow @nogc @property @trusted uint
level(); - Cache Level (starts at 1).
- const pure nothrow @nogc @property @trusted bool
selfInitializing(); - Self Initializing cache level (does not need SW initialization).
- const pure nothrow @nogc @property @trusted bool
fullyAssociative(); - Fully Associative cache.
- const pure nothrow @nogc @property @trusted uint
maxThreadsPerCache(); - Maximum number of addressable IDs for logical processors sharing this cache. **
- const pure nothrow @nogc @property @trusted uint
maxCorePerCPU(); - Maximum number of addressable IDs for processor cores in the physical package **
- const pure nothrow @nogc @property @trusted uint
l(); - System Coherency Line Size **.
- const pure nothrow @nogc @property @trusted uint
p(); - Physical Line partitions **.
- const pure nothrow @nogc @property @trusted uint
w(); - Ways of associativity **.
- const uint
s; - Number of Sets **.
- const pure nothrow @nogc @property @trusted bool
invalidate(); - Write-Back Invalidate/Invalidate. false if WBINVD/INVD from threads sharing this cache acts upon lower level caches for threads sharing this cache. true if WBINVD/INVD is not guaranteed to act upon lower level caches of non-originating threads sharing this cache.
- const pure nothrow @nogc @property @trusted bool
inclusive(); - true - Cache is not inclusive of lower cache levels. false - Cache is inclusive of lower cache levels.
- const pure nothrow @nogc @property @trusted bool
complex(); - false - Direct mapped cache. true A complex function is used to index the cache, potentially using all address bits.
- pure nothrow @nogc @property uint
size()(); - Compute cache size in KBs.
- pure nothrow @nogc @property void
fill()(ref Cachecache);
Copyright © 2016-2020 by Ilya Yaroshenko | Page generated by
Ddoc on Sun Oct 4 11:50:08 2020