EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: [Merge] lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base
From: Jeff Hill <[email protected]>
To: Jeff Hill <[email protected]>
Date: Wed, 10 Aug 2011 19:36:38 -0000
> Actually, where does the >=586 requirement come from?  

I made this (quick) decision originally based on some observed gcc preprocessor predefined macro differences (see attached below), but in fact that difference doesn’t matter if we are building for 32 bit architecture, and so it's true that i486 is sufficient for the gcc atomic intrinsic operations.

However we should ask ourselves another question. What other CPU-based code acceleration capabilities are we missing out on if we build for 22 year old 486 CPU architecture. IMHO 22 years is a long time in the tech business. As I recall, starting with the MS VS 2005 compiler MS dropped support for building for any processor before pentium II. Note also that this change is setting a minimum architecture for workstations, and has zero impact on the embedded platforms.

1989 486 introduced
1993 586 (Pentium I) introduced
1997 pentium II introduced
1999 pentium III introduced

Windows XP requires a 586  processor or better. Suspect that Linux distros have similar minimum requirements.

In the end it’s a judgment call on what minimum arch is appropriate so I defer to whatever consensus is arrived at. IMHO, our past practice of establishing no minimum x86 arch for workstations is probably not optimal, and setting 586 for R3.15 is unlikely to cause any substantive discomfort.

PS: While testing the performance on the various x86 versions I found a small ifdef bug (related to detecting sufficient x86 architecture on old gcc) in the gcc version of epicsAtomicCD.h for which I have pushed a fix to the atomics branch.

Jeff

g++ -march=i586 -E -dM -x c++ dog.cpp | sort

#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1

g++ -march=i486 -E -dM -x c++ dog.cpp | sort

#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1

With -march=i386

<none defined>

-- 
https://code.launchpad.net/~epics-core/epics-base/epicsR3.15-atomics/+merge/70642
Your team EPICS Core Developers is requested to review the proposed merge of lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base.


References:
[Merge] lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base Jeff Hill

Navigate by Date:
Prev: RE: [Merge] lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base Jeff Hill
Next: Re: [Merge] lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base Michael Davidsaver
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: [Merge] lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base mdavidsaver
Next: Re: [Merge] lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base Jeff Hill
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 02 Feb 2012 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·