Articolo pubblicato sul n. 184 di MCmicrocomputer (Edizioni Technimedia Srl - Roma) del maggio 1998
Il
Pentium prestigiatore Dal punto di vista puramente logico, la più alta sofisticazione tecnologica messa a disposizione dall'architettura P6 (propria prima dei Pentium Pro, ora dei Pentium II sia in versione "liscia" che Mobile) è la tanto affascinante "Esecuzione Dinamica" (una combinazione di tecnologie comprendenti la predizione multipla di salto, l'analisi del flusso dati e l'esecuzione speculativa) con quale le unità di elaborazione interne sono "rifornite" ininterrottamente di dati e istruzioni. L'analisi del flusso dei dati effettuata a tempo di esecuzione (ovvero durante l'elaborazione stessa del software) esegue un riodinamento delle istruzioni indipendente dalla sequenza imposta dal programma. Tale tecnica è parente stretta delle architetture data-flow in cui ogni istruzione viene eseguita non appena sono disponibili i dati sui quali operare, indipendentemente (se, ovvero, non sussiste dipendenza logica) dall'esecuzione delle altre istruzioni. L'esecuzione speculativa, altra carta vincente della nuova architettura, consente all'unità centrale di mantenere il proprio nucleo superscalare il più operante possibile, eseguendo quelle istruzioni che con maggiore probabilità saranno necessarie al proseguo del programma. Anche il "vecchio e malandato" Pentium (senza suffisso alcuno: Pro, II, MMX), detto anche P5, era caratterizzato da una microarchitettura pipeline superscalare. Grazie a questa, il tempo medio di esecuzione delle istruzioni risulta essere addirittura inferiore al singolo ciclo di clock. Ma se l'architettura P5 utilizzava una pipeline a cinque stadi, in P6 (Pentium Pro e Pentium II) troviamo un'implementazione a ben 12 stadi. Oltre a questo, P6 rivoluziona pesantemente le comuni tecniche di esecuzione, ricercando e stabilendo un diverso ordine di "lavorazione" delle istruzioni, al fine di completare l'intera esecuzione del programma in un tempo inferiore. L'analisi effettuata consiste nell'individuare "al volo" quelle istruzioni che possono essere eseguite indipendentemente dalle altre, anche nel caso in cui si trovino "piu' avanti" nel programma, sfruttando i tempi morti dei "cache miss" (mancanza di un dato o di un'istruzione all'interno della cache, da prelevare nella memoria centrale). Se, infatti, un dato non e' disponibile nella cache, inoltrata la richiesta alla memoria, P6 esegue altre istruzioni che non dipendono logicamente dall'istruzione iniziata ma non ancora completata. Non appena arriva il dato richiesto anche l'istruzione sospesa puo' essere completata, consentendo cosi' l'avanzamento nell'esecuzione anche delle istruzioni che dipendevano dalla prima. Come fa a non incasinarsi? Beh, trucchi del mestiere...
Articolo pubblicato su www.digiTANTO.it - per ulteriori informazioni clicca qui |