[Beowulf] Question about amd64 architecture and floating point operations

Richard Walsh rbw at ahpcrc.org
Wed Nov 22 12:04:21 PST 2006

Mark Hahn wrote:
>> A common confusion ... x86_64 changes nothing about the precision of 
>> floats or doubles in
>> C or Fortran.
> well, sort of.  it was pretty common to find at least some computations
> in ia32 using 80b FP, intentionally or not.  but iirc in long mode
> (colloquially x86_64), you no longer get x87 access.
An important internal detail.  My "nothing" above was assigned to the 
program level
and the computable epsilons.  Your point is that in long mode because 
you cannot use
the x87 FPU there is a potential difference internally--no 80-bit versus 
possibly some--
>> units.  The 64-ness refers to the added memory addressibility 
>> provided by the larger address
>> registers.
> the architecture family doesn't really have address registers
> (ala 68000, for instance).  ax/dx/si/etc are all 64b, and possibly
> more importantly, there are now more such registers available.  that's 
> just the non-SSE parts - x86_64 also gives more 128b MMX/SSE/etc
> registers.
Another useful clarification. They are GPRs ... General Purpose 
Registers ... and only can
be thought of as address registers for instructions requiring an address.
>> This potential itself is not fully utilized as I believe only 40-bits 
>> are used (the socket
>> F series may have bumped this up to 48-bits).
> no, that's physical address bits, which are completely unrelated to 
> virtual address bits and/or addr register width.  consider that the 
> last generations of ia32 could address more than 4GB of ram (had more
> than 32b of physical addressability), but any process still only ever 
> really had a 32b address space.
More clarification. Right.  40-bits are used for physical addressing and 
an additional 8-bits are used to round
out the virtual space.  I believe socket F extends both of these numbers 
by 8 to 48-bit physical and 54-bit
virtual.  I do not think we are using all 64-bits though ... even in 
socket F ... but you tend to be right very
often Mark, so I am hesitating here.  ;-)
> I don't believe the 40/48 is in any way visible to the user.
> I also don't think it's relevant, in the absense of Horus-style 
> extensions to the physical expandability of these machines (8 
> sockets,  theoretically 64 dimms and "only" ~256G ram.)
> the user sees a 64b address space.
Mmm ... I guess I would say 48-bit with socket 940 and 54-bit with 
socket F ... but am willing to listen to
a good explanation of why I am wrong.
>>      Results are truncated to 64-bits when stored to memory, but a path
> they can be; they don't have to be.
Mmm ... I did not know this.  Compiler flags?  What are they?

Thanks for raising the quality of the answer Mark.



Richard B. Walsh

"The world is given to me only once, not one existing and one
 perceived. The subject and object are but one."

Erwin Schroedinger

Project Manager
Network Computing Services, Inc.
Army High Performance Computing Research Center (AHPCRC)
rbw at ahpcrc.org  |  612.337.3467

This message (including any attachments) may contain proprietary or
privileged information, the use and disclosure of which is legally
restricted.  If you have received this message in error please notify
the sender by reply message, do not otherwise distribute it, and delete
this message, with all of its contents, from your files.

More information about the Beowulf mailing list