Architetture correlate
(Tassonomia di Flynn)
  Istruzione
Singola
Istruzioni
Multiple
Dato
Singolo
SISD MISD
Dati
Multipli
SIMD MIMD

Single Instruction stream, Single Data stream (SISD) è un'architettura in cui una singola unità di elaborazione esegue un singolo flusso di dati[1]. Corrisponde alla classica architettura di von Neumann utilizzata in quasi tutti i personal computer anche se è ormai obsoleta.

Macchina SISDModifica

Nell'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 istruzioneModifica

  • Fase di Fetch = Preleva dalla memoria centrale l'istruzione da eseguire utilizzando l'indirizzo contenuto nel PC (Program Counter), incrementa il PC in maniera tale che possa contenere l'indirizzo della prossima istruzione da eseguire,
  • Fase di Decode = La CU (control unit) interpreta l'istruzione e determina le operazioni da eseguire.
  • Fase di Execute = L'ALU (unità aritmetico logica) esegue le operazioni e la CU controlla l'andamento dell'esecuzione delle operazioni.

Limiti dell'architettura SISDModifica

Un 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 soluzioniModifica

Alcune soluzioni individuate sono:

  • Allargamento del BUS Dati;
  • Introduzione della cache;
  • Parallelismo temporale per le istruzioni, facendo in modo che la macchina riesca ad elaborare il più alto numero possibile di istruzioni al secondo.

Macchina SISD con prefetchingModifica

Sovrapposizione "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.

Esempio : in presenza di istruzioni di salto

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 SISDModifica

Il 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: Speed_up = [X+(N-1)]/(X*N)

Problemi del pipeliningModifica

In 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.

NoteModifica

  1. ^ Hennessy, John L. e Asanović, Krste., Computer architecture : a quantitative approach, 5th ed, Morgan Kaufmann, 2012, ISBN 012383872X, OCLC 755102367.
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica