Perché dati meno precisi come il float possono essere più veloci di dati più grandi e precisi come il doppio?

1

Attualmente sto leggendo un capitolo in un libro di testo su Processor Architecture e ho visto la seguente dichiarazione:

The less precision there is, the less space is occupied by a program variable in memory. Further, there is often a time advantage, both in ferrying the operands back and forth between the processor and memory, and for arithmetic and logic operations that need less precision. This is particularly true for floating-point arithmetic operations.

Perché i dati meno precisi come il float sono talvolta più veloci di dati più grandi e più precisi come il doppio? Qualcuno può sviluppare questa spiegazione e magari dare un esempio?

    
posta forgetaboutme 08.02.2017 - 23:03
fonte

3 risposte

12

Per intuitivamente la stessa ragione per cui è più veloce calcolare 2 + 2 a mano che calcolare 3685 + 2193: ci sono semplicemente meno dati per farti strada.

    
risposta data 08.02.2017 - 23:20
fonte
1

Formato a virgola mobile a precisione singola rispetto alla doppia precisione:

  1. utilizza meno memoria, quindi può essere trasferito nel registro più velocemente (in una sola istruzione macchina, di solito)
  2. ha meno precisione, quindi alcune approssimazioni possono essere utilizzate per calcoli più veloci (a livello di software questo significa meno istruzioni macchina per chiamata, a livello hardware questo significa meno clock della CPU per istruzione)

La dimensione dei tipi di doppia parola ( double , long ), è influenzata anche dalle specifiche dei linguaggi di livello superiore, ad esempio, Java non garantisce l'accesso alla variabile di tale tipo per essere atomico (fatto in un passaggio per esterni osservatore).

    
risposta data 09.02.2017 - 18:22
fonte
1

Una FPU o GPU può (a volte) parallelizzare più operazioni FP a 32 bit (float) rispetto alle operazioni FP a 64 bit (doppie). Cioè, se può aggiungere 2 doppi in parallelo, può aggiungere 4 float in parallelo.

Per loop stretti altamente ottimizzati questo può avere un effetto drammatico, specialmente su GPU dove le unità di elaborazione sono meno vincolate con la larghezza di banda della memoria.

    
risposta data 09.02.2017 - 18:42
fonte

Leggi altre domande sui tag