Esecuzione speculativa

Da Wikipedia, l'enciclopedia libera.

In informatica, si chiama esecuzione speculativa l'esecuzione di codice il cui risultato potrebbe non essere utilizzato. Nel contesto della programmazione funzionale viene usato invece il termine "valutazione speculativa".

L'esecuzione speculativa è un'ottimizzazione. È utile solo quando l'esecuzione anticipata delle istruzioni utilizza meno spazio e meno tempo di quanti ne avrebbe bisogno un'esecuzione ritardata; risulta conveniente usarla se i vantaggi sono sufficienti per compensare, sulla lunga distanza, il possibile spreco di risorse utilizzate per calcolare qualcosa che non verrà mai usato.

I moderni microprocessori con pipeline utilizzano l'esecuzione speculativa per ridurre il costo delle istruzioni di salto condizionato. Quando viene incontrata una istruzione di salto condizionato, il processore cerca di intuire quale delle due vie è più probabile che verrà presa (in gergo predizione delle diramazioni) e comincia immediatamente ad eseguire le istruzioni da quel punto. Se l'intuizione si rivela errata, tutti i calcoli eseguiti dalla diramazione in poi sono scartati. L'esecuzione anticipata è conveniente perché i successivi stadi della pipeline resterebbero altrimenti inutilizzati.

Anche l'esecuzione eager è speculativa, nonostante poco spesso si faccia riferimento ad essa in questi termini; in questo caso, però, la situazione è complicata da alcuni effetti collaterali. L'esecuzione anticipata è spesso più conveniente perché i valori necessari per il calcolo sono molto probabilmente già disponibili sullo stack e non devono essere caricati e successivamente letti dall'heap. Talvolta può essere molto piò costoso, come nell'esempio della generazione della lista dei numeri interi da 1 ad 1 milione.

L'esecuzione lazy non è speculativa. L'aggiunta dell'esecuzione speculativa nelle implementazioni del linguaggio di programmazione Haskell è tuttora argomento di ricerca. La versione eager dell'Haskell è progettata intorno all'idea dell'esecuzione speculativa. Le versioni recenti del Glasgow Haskell Compiler supportano un tipo di esecuzione speculativa chiamata esecuzione ottimistica.

Voci correlate[modifica | modifica sorgente]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica