Philip Helbig wrote:
> > This is a common misunderstanding. The "64-bit" nature of
> a processor
> > architecture usually referrs to the size of a memory
> address, not any
> > numerical datatype.
>
> Right, and this affects things like maximum values in the
> file system, size of a process etc. It can also refer to the
> register size.
Except that there is often no single "the register size". For example,
in the Intel Pentium 4, there are (at least) three different register
sizes. The general purpose registers are 32 bits, the x87 floating
point registers are 80 bits and the SSE registers are 128 bits. I don't
think anyone would consider the Pentium 4 to be a "128-bit processor".
(Unless it was a graphics processor, and then I'm sure it would be
advertised as such.)
It is usually the case that processors have a native integer type that
is the same size as that of an address. But that doesn't mean that that
integer type is the default in Fortran (or other languages). It can
also be the case that a processor with a 32-bit address contains
intrinsic support for larger integers. And then there's reals - for
decades, processors have had hardware support for reals larger than the
address size. The 16-bit DEC PDP-11, for example, supported 64-bit
reals in hardware (some models). For vendors to change the default kinds
would break many customer applications, which is why we don't do it.
For more than a decade, the "bit size" of a particular architecture has
been generally accepted as being the size of a memory address. In
Fortran, this is largely invisible, in C, it is not due to the
assumption that "int" and "*" are the same size. Fortran, since F90,
has provided standard ways of inquiring what numeric kinds are supported
by a compiler. If you want to know which of these kinds are natively
supported by the processor, there is no Fortran standard way to ask.
Steve Lionel
Software Products Development
Intel Corporation
Nashua, NH
|