new cpuid is ready for comments

Ilya Yaroshenko via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Tue Jul 12 09:06:16 PDT 2016


On Tuesday, 12 July 2016 at 15:24:29 UTC, Guillaume Chatelet 
wrote:
> On Tuesday, 12 July 2016 at 13:23:46 UTC, Ilya Yaroshenko wrote:
>> On Tuesday, 12 July 2016 at 12:46:26 UTC, Guillaume Chatelet 
>> wrote:
>>> On Monday, 11 July 2016 at 16:30:44 UTC, Ilya Yaroshenko 
>>> wrote:
>>>> Hello :-)
>>>>
>>>> `cpuid` package is core.cpuid analog.
>>>> It would be used by future D BLAS implementation.
>>>
>>> Hey Ilya,
>>>
>>> Quick question: where do the data come from/how reliable do 
>>> you think they are?
>>
>> Hello Guillaume,
>>
>> The data come from CPUID x86/x86_64 instruction.
>> I have fixed bugs for AMD yesterday. Information for Intel and 
>> AMD processors should be reliable. But I am not sure about 
>> Cache and TLB information for virtual machines and other 
>> vendors. You can use cpuid.x86_any._cpuid [1] to get any 
>> information that is not presented.
>>
>> [1] 
>> http://docs.cpuid.dlang.io/latest/cpuid_x86_any.html#._cpuid
>
> Thx Ilya,
>
> I was discussing this a few colleagues. I'm quoting one of them 
> here with his permission:
>
> "It doesn't seems that a userland library like this has any 
> possibility to solve the root problem on Android/ARM. It's a 
> twofold problem:
>
> 1. On ARM, the registers containing CPU identification and 
> cache structure information, are privileged. See:
> http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344f/Chdebced.html
> etc... (more such registers listed in the left pane on that 
> page)
>
> Thus it is up to the operating system to expose this 
> information to userspace. That takes us to the second part of 
> the problem:
>
> 2. As far as I know, Android does not expose either CPU 
> identification or cache structure information to userspace.
>
> Please do correct me if I'm wrong and this library found a way 
> around that --- but from a cursory look at the cpuid library 
> code, it does not have an ARM implementation at the moment?"

Thank you for the information, I have not know that registers are 
privileged on ARM! By "other vendors" I mean other x86 vendors 
listed in enum VendorIndex [1]. ARM is not supported, but API 
supports complex topology. So ARM direction is to receive 
approximate information from an OS, like from /proc/cpuinfo on 
Linux. Just CPU brand name with version is significant 
information for cache size.

[1] 
http://docs.cpuid.dlang.io/latest/cpuid_x86_any.html#.VendorIndex




More information about the Digitalmars-d-announce mailing list