Esecuzione speculativa

L'esecuzione speculativa è una tecnica di ottimizzazione in cui un processore (CPU) esegue una serie di attività prima che gli venga richiesto, in modo da avere le informazioni pronte se è necessario in qualsiasi momento. L'esecuzione speculativa utilizza l'elaborazione simultanea e l'esecuzione fuori ordine (OoOE) per anticipare e recuperare i dati che potrebbero essere richiesti in un secondo momento. Elimina lo stallo sperimentato in attesa dell'arrivo delle istruzioni appropriate per il passaggio successivo. L'esecuzione speculativa utilizza la previsione dei rami per indovinare quali istruzioni saranno molto probabilmente necessarie nel prossimo futuro e l'analisi del flusso di dati per organizzare le istruzioni per un'esecuzione ottimale (invece di eseguirle nell'ordine in cui sono arrivate). L'obiettivo è ridurre il tempo di esecuzione totale e migliorare le prestazioni complessive della CPU.

Per prima cosa, il predittore di ramo indovina quale ramo è più probabile che venga preso nel processo e quindi raccoglie la serie successiva di istruzioni associate a quel ramo. Inizierà quindi a eseguirli in modo speculativo prima di sapere quale dei due rami verrà effettivamente utilizzato. Se il predittore del ramo ha indovinato correttamente, le istruzioni sono già allineate e non ci sarà alcun ritardo nell'esecuzione. Se il predittore del ramo ha indovinato in modo errato, il sistema carica le informazioni appropriate e procede invece con quelle istruzioni. Tuttavia, i tassi di precisione per i predittori di ramo sono in genere superiori al 95 percento, quindi la necessità di ricaricare nuove informazioni è rara.

Con l'esecuzione in ordine, uno stallo della pipeline interromperà l'intera CPU fino a quando il problema non sarà risolto. Inoltre, viene creato un divario tra la CPU e le velocità della memoria principale. Man mano che il divario aumenta, aumenta anche il tempo trascorso in attesa che la memoria principale fornisca informazioni alla CPU, aumentando così il tempo trascorso in attesa dell'esecuzione. L'esecuzione speculativa colma questa lacuna mantenendo la CPU occupata e riducendo al minimo il tempo che trascorre al minimo, migliorando così le prestazioni complessive del sistema.

L'esecuzione speculativa è stata adottata da Intel, che ha iniziato a utilizzare OoOE con i suoi microprocessori Pentium Pro e Pentium II, Advanced Micro Devices (AMD), che l'ha introdotta con il microprocessore K5 e Advanced RISC Machines (ARM), che ha iniziato a usarlo con Cortex Microprocessore A9.

Sebbene l'esecuzione speculativa possa migliorare le prestazioni di un sistema informatico, è importante notare che può anche causare falle di sicurezza come la vulnerabilità della CPU da fusione.