double vs real

Timon Gehr timon.gehr at gmx.ch
Fri May 31 15:09:29 PDT 2013


On 05/31/2013 09:08 PM, John Colvin wrote:
> On Friday, 31 May 2013 at 16:17:28 UTC, Ali Çehreli wrote:
>> On 05/31/2013 04:28 AM, Shriramana Sharma wrote:
>>
>> > On Fri, May 31, 2013 at 4:31 PM, Timon Gehr
>> <timon.gehr at gmx.ch> wrote:
>> >>
>> >> If double uses xmm registers and real uses the fpu registers
>> (as is standard
>> >> on x64), then double multiplication has twice the throughput
>> of real
>> >> multiplication on recent intel microarchitectures.
>> >
>> > Hi can you clarify that? I'm interested because I'm running a
>> 64 bit
>> > system. What does twice the throughput mean? double is faster?
>>
>> I am interested in the answer too.
>
> int, long, float, double etc. are all of size 2^n. That means they can
> be neatly packed in to SIMD registers (e.g. XMM0-XMM15 on x86_64) and
> can be operated on in parallel, providing very large speedups in some
> cases. real, on the other hand - on x86/64 - is 80bits and as such
> doesn't fit in to the same scheme.
>

What I was talking about also holds for scalar code without usage of any 
packed instructions.

> There are also differences to do with calling conventions that can make
> different types slower/faster, but this is very dependant on the exact
> usage and normally only significantly affects small functions that can't
> be inlined IME.



More information about the Digitalmars-d-learn mailing list