Agner`s CPU blog

Software optimization resources | E-mail subscription to this blog | www.agner.org

More Parallels
Author: Agner Fog Date: 2010-01-23 02:28
I have always thought that it is bad programming practice to make software that relies on specific CPU brands and models. Any program that makes assumptions based on the CPU model number is likely to be obsolete as soon as a new processor appears on the market.

Unfortunately, this practice is more widespread than I thought. Here are some examples:

  1. According to CNET news, Skype has made a deal with Intel to limit the functionality on non-Intel computers, alleging that contemporary AMD processors were not powerful enough. See CNET News and Slashdot News. This limitation has later been removed.
     
  2. 64-bit Windows will only run on processors with known vendor names. This is a serious barrier for new companies to enter the x86 processor market and it is an obstackle to emulation. Same problem in FreeBSD. In fact, VIA had to make a feature to change the vendor string in their processors in order to run 64-bit Windows. See analysis by Geoff Chappell. Incidentally, this feature made it possible for me to make my CPUID manipulation program.
     
  3. An Intel employee is making a separate branch for the Intel Atom processor in a certain function in the Gnu Libc library (see libc-alpha archive). Intel also have a separate branch for the Atom processor in their IPP library. If this practice spreads then the libraries will soon be bloated with many separate branches for different brands and models of microprocessors. In my opinion, the branching should be based on certain performance characteristics, not on specific processor models. If necessary, add CPUID bits for specific performance parameters, or let the software test which branch is fastest.
     
Thank you to Yuhong Bao for sending me the first two examples.
 
thread Intel's "cripple AMD" function - Agner Fog - 2009-12-30
reply Intel's - Felid - 2010-01-01
replythread Intel's "cripple AMD" function - inhahe - 2010-01-03
last replythread Intel's - Agner Fog - 2010-01-04
replythread Intel's compiler is the best? - Weber - 2010-01-04
last reply Intel's compiler is the best? - Agner Fog - 2010-01-09
last reply Intel article - Agner Fog - 2010-01-22
replythread Web Parallels - Jeff Craig - 2010-01-04
last replythread More Parallels - Agner Fog - 2010-01-23
reply Early Examples - Yuhong Bao - 2010-02-01
last reply More Parallels - Yuhong Bao - 2010-02-20
replythread New CPUID manipulation program - Agner Fog - 2010-01-22
replythread CPUID manipulation through virtualization - Andrew Lofthouse - 2010-08-16
reply CPUID manipulation through virtualization - Agner Fog - 2010-08-16
replythread CPUID manipulation program for AMD - Agner - 2010-10-01
last replythread CPUID manipulation program for AMD - Ralf - 2012-01-30
last reply CPUID manipulation program for AMD - Agner - 2012-01-31
last reply CPUID manipulation through virtualization - akshay - 2015-07-08
last replythread New CPUID manipulation program - AVK - 2011-02-09
last reply New CPUID manipulation program - Agner - 2011-02-09
reply AMD Blog on compilers/benchmarch - margaret lewis - 2010-02-01
replythread New version is still crippling Intel's competitors - Agner Fog - 2010-06-29
last reply New version is still crippling Intel's competitors - granyte - 2014-09-16
reply Out of court settlement with FTC - Agner Fog - 2010-08-05
reply AMD library contains Intel's cripple-AMD function! - Agner Fog - 2010-08-11
replythread Common math programs are affected - Agner Fog - 2010-08-20
last reply Preliminary test results for Matlab - Agner Fog - 2010-09-16
reply Overview of CPU dispatching in Intel software - Agner Fog - 2010-08-23
replythread New Intel compiler version - still the same! - Agner Fog - 2010-09-22
reply GCC now has support for function dispatch - Jean-Luc - 2010-09-27
replythread Intel compiler question - James Russell - 2010-10-11
last reply Intel compiler question - Agner - 2010-10-12
reply New Intel compiler version - still the same! - Don Kretsch - 2010-11-29
last replythread New Intel compiler version - still the same! - Daniel - 2011-12-23
last replythread New Intel compiler version - still the same! - Agner - 2011-12-25
last replythread New Intel compiler version - still the same! - Stanley Theamer - 2012-02-12
last reply New Intel compiler version - still the same! - Stretcho - 2012-03-14
last replythread Still no library that is optimal on all processors - Agner - 2012-04-18
replythread Still no library that is optimal on all processors - Guest - 2012-05-17
last replythread Still no library that is optimal on all processors - Agner - 2012-05-17
last replythread Still no library that is optimal on all processors - David - 2012-05-19
last replythread Still no library that is optimal on all processors - Agner - 2012-05-20
last reply Still no library that is optimal on all processors - Bubba_Hotepp - 2012-06-16
last replythread Still no library that is optimal on all processors - Marat Dukhan - 2013-05-20
last reply Still no library that is optimal on all processors - Agner - 2013-05-21