
Cache Sizes with CPUID on Intel CPU's - Tatyanazaxarova
http://blog.melkerlitsgard.se/2016/05/12/cache-sizes-with-cpuid/
======
tux1968
I don't get it. The code doesn't even compile. Both code snippets have
undefined variables.

~~~
svens_
Just declare cpu_info as int[4] and it should run.

Basically on x86 CPUs you can use the cpuid instruction to get information
about the CPU and the cache:
[http://www.sandpile.org/x86/cpuid.htm](http://www.sandpile.org/x86/cpuid.htm)

The code in the first snippet uses a compiler intrinsic to execute this
instruction and calculates the cache size from the result. In the second
snippet the assembler code is written by hand instead.

~~~
tux1968
Yes, that was pretty clear, but in the D version that's not enough to make it
compile, there is also the missing functionID which apparently needs to be
primed with the correct value to make things work. No idea what that value
should be though.

It's not that I thought that this information was difficult to look up, rather
it seemed very odd information to be missing from a link that was submitted as
useful/interesting.

~~~
svens_
functionID is what's called "standard level" in the link I posted. So it
should be 4 (you can also see that in the C version btw.).

I agree that the example isn't very well tested - the author probably pulled
it out of some existing code and wasn't very careful.

------
jepler
on Debian Linux, the commandline programs 'cpuid' and 'x86info' from packages
of the same name show this information; their source might also be worth
reading to understand how to obtain and interpret this information in
practice.

~~~
frakturfreund
lscpu (from the preinstalled util-linux package) works too. And now that
Windows comes with the Ubuntu Bash …

~~~
RandomBK
Might as well just read from /proc/cpuinfo

