SISD
Macchina SISDNell'architettura SISD è possibile eseguire un'unica istruzione per volta su un unico dato, eseguendo le istruzioni una dopo l'altra come previsto dal paradigma imperativo. Cicli di istruzione
Limiti dell'architettura SISDUn importante limite della architettura SISD è la singola connessione tra il processore e la memoria. Siccome l'accesso alla memoria è limitato soltanto a un'operazione alla volta, insorge il classico problema definito come collo di bottiglia, generando un rallentamento generalizzato. Possibili soluzioniAlcune soluzioni individuate sono:
Macchina SISD con prefetchingSovrapposizione "temporale" della fase di fetch ed execute di due successive istruzioni. L'elaboratore ha due unità hardware separate per eseguire la fase di fetch e di execute. Questa tecnica non tiene conto di alterazioni della sequenza di esecuzione.
I cambiamenti di sequenza non consentono di sfruttare i guadagni temporali dovuti al prefetching, ma neanche rallentano l'esecuzione rispetto al modello prefetching. Il Pipelining su SISDIl pipelining prevede sia l'esecuzione di una istruzione divisa in più fasi (anche chiamati stadi) che la sovrapposizione temporale degli stadi di più istruzioni, dove ogni stadio è gestito da una unità hardware dedicata. Il pipelining su SISD premette l'operazione in parallelo di più istruzioni situate a diversi stadi. Il pipelining non esegue più velocemente le istruzioni, ma fa aumentare la frequenza di completamento delle istruzioni, cioè fa aumentare il numero di istruzioni eseguite al secondo (Throughtput). Throughtput = Num_operazioni/ciclo Di solito le pipeline hanno 5 stadi fondamentali. Una pipeline da X stadi elabora N istruzioni in un periodo di tempo pari a X+(N-1) cicli di clock, invece un processore senza pipeline impiega X*N cicli di clock. Il guadagno massimo (rendimento) è dato dall'indice di Speed_up così definito:
Problemi del pipeliningIn presenza di stalli il guadagno di una pipeline si riduce sia a causa della dipendenza tra le istruzioni sia a causa della presenza di istruzioni di salto (jump point), in quanto non si conosce a priori la prossima istruzione da eseguire. Nell'architettura RISC il pipelining consente di raggiungere elevate velocità di calcolo. Nell'architettura CISC i vantaggi del pipelining non vengono sempre sfruttati a causa della presenza di istruzioni complesse che utilizzano tutte le fasi del pipelining rallentando quelle semplici. Note
|