Short and concise summary: Intel maintains its own compiler and the high financial cost. Now you can argue about whether it is "fair" - if that term is applicable at all in a competitive situation on the free market - that Intel will ensure that the optimization of the Intel compiler mostly Intel processors used to benefit and AMD processors - although they would eventually benefit from the optimizations - not.

Already 2 years ago, we have reported in detail the difference it can make in terms of performance, if manufacturer-specific optimizations are used or not. At that time, the VIA Nano processor was used as a comparison, which makes it possible to change the CPUID Vendor VIA processor and the program - in this case the Futuremark PCMark2005 - An Intel pretend. Then the value in the memory benchmarks increased from 1845 (CPUID = VIA) to 2721 (CPUID = Intel) points.

With an AMD processor, however, it is not so easy to manipulate the visible Vendor ID for the programs. Only option here: virtualization. I set up on VMWare up a virtualized system, it is very possible the guest to miss another CPUID, when the host system actually has. In Agners CPU blog explains how this works:

By analogy to Andrew's code, I assume that you can make an AMD processor spoof to be "GenuineIntel" with these lines:

The Intel software checks so the family number, Which should be set to 6:

cpuid.1.eax = "0000:0000:0000:0001:0000:0110:0111:0001"

The software then looks inside the guest an Intel processor, even if the host system has an AMD CPU. If the performance-critical software to be used, translated with an Intel compiler, which should improve performance significantly. Provided however, that the software used all the flags correctly polls, because not always dominate current AMD processors and all commands from the comparable Intel processors. Example: SSSE3, which previously dominated non-AMD processor, or special SMT SIMD instructions older Intel processors, which were not on AMD processors in the absence of SMT implemented. The software asks all relevant flags from correctly, that's no problem. However, the software is programmed sloppy and "thinks", "ah, Intel processor, then this and that must indeed be supported", the program crashes when using this virtualization tricks out of hand.

is it possible to implement something in the code? So that the kernel thinks it is such a Intel i7 980 cpu and not a CPU AMD Phenom II X6 1100T is? Something like a generator compared with various Intel and AMD cpus. sorry for my bad english.

Short and concise summary: Intel maintains its own compiler and the high financial cost. Now you can argue about whether it is "fair" - if that term is applicable at all in a competitive situation on the free market - that Intel will ensure that the optimization of the Intel compiler mostly Intel processors used to benefit and AMD processors - although they would eventually benefit from the optimizations - not.

Already 2 years ago, we have reported in detail the difference it can make in terms of performance, if manufacturer-specific optimizations are used or not. At that time, the VIA Nano processor was used as a comparison, which makes it possible to change the CPUID Vendor VIA processor and the program - in this case the Futuremark PCMark2005 - An Intel pretend. Then the value in the memory benchmarks increased from 1845 (CPUID = VIA) to 2721 (CPUID = Intel) points.

With an AMD processor, however, it is not so easy to manipulate the visible Vendor ID for the programs. Only option here: virtualization. I set up on VMWare up a virtualized system, it is very possible the guest to miss another CPUID, when the host system actually has. In Agners CPU blog explains how this works:

By analogy to Andrew's code, I assume that you can make an AMD processor spoof to be "GenuineIntel" with these lines:

The Intel software checks so the family number, Which should be set to 6:

cpuid.1.eax = "0000:0000:0000:0001:0000:0110:0111:0001"

The software then looks inside the guest an Intel processor, even if the host system has an AMD CPU. If the performance-critical software to be used, translated with an Intel compiler, which should improve performance significantly. Provided however, that the software used all the flags correctly polls, because not always dominate current AMD processors and all commands from the comparable Intel processors. Example: SSSE3, which previously dominated non-AMD processor, or special SMT SIMD instructions older Intel processors, which were not on AMD processors in the absence of SMT implemented. The software asks all relevant flags from correctly, that's no problem. However, the software is programmed sloppy and "thinks", "ah, Intel processor, then this and that must indeed be supported", the program crashes when using this virtualization tricks out of hand.

is it possible to implement something in the code? So that the kernel thinks it is such a Intel i7 980 cpu and not a CPU AMD Phenom II X6 1100T is? Something like a generator compared with various Intel and AMD cpus. sorry for my bad english.

Hmm.. This seems like a rather ambitious idea, but I can actually see it working. I'm learning C, but veeeeeeery slowly - I've just learned how to declare an array, lol. Lets ask connactic about it when he gets back.spakk, ist Ihr Englisch besser als mein Deutsch!

Posted 29 October 2012 - 03:09 PM

spakk

If you try to please everyone, then you have certainly forgotten

Local Moderators

2,051 posts

Gender:Male

Location:marocain

spakk, ist Ihr Englisch besser als mein Deutsch!

Hmm.. This seems like a rather ambitious idea, but I can actually see it working. I'm learning C, but veeeeeeery slowly - I've just learned how to declare an array, lol. Lets ask connactic about it when he gets back.spakk, ist Ihr Englisch besser als mein Deutsch!

I really hope that someone is able, at the end result, a running kernel.