Anteprima
Vedrai una selezione di 7 pagine su 28
Architetture dei calcolatori e cloud computing - 1/2 Pag. 1 Architetture dei calcolatori e cloud computing - 1/2 Pag. 2
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Architetture dei calcolatori e cloud computing - 1/2 Pag. 6
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Architetture dei calcolatori e cloud computing - 1/2 Pag. 11
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Architetture dei calcolatori e cloud computing - 1/2 Pag. 16
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Architetture dei calcolatori e cloud computing - 1/2 Pag. 21
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Architetture dei calcolatori e cloud computing - 1/2 Pag. 26
1 su 28
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

OTTIMIZZAZIONE DELLA PIPELINE:

Come visto le dipendenze dai dati e dai branch riducono le prestazioni di esecuzione. Si usano

delle tecniche organizzative per compensare questo.

Delayed branch

Delayed load: usati nei LOAD instructions. Il registro target della load è bloccato dal processore,

che continua l’esecuzione dello stream attuale no a che raggiunge un istruzione che richiede

quel registro, quindi si ferma ad aspettare il completamento della load.

Loop unrolling: assegnare un unrolling Factor agli elementi replicati nel body di un loop. 20 of 28

fi fi fi fi fi

Instruction-level Parallelism and Superscalar processors - 18

Superscalare

Architettura in cui tutte le tipologie di istruzioni possono essere iniziate simultaneamente e poi

eseguite in modo indipendente. La possibilità di eseguire istruzioni indipendente in diverse

pipeline. È possibile permettere l’esecuzione delle istruzioni in un ordine diverso da quello indicato

dal programma.

Nello scalare normale: il parallelismo è ottenuto permettendo istruzioni multiple di essere in diversi

stage della pipeline allo stesso momento.

Superscalare: ci sono più unità funzionali, ognuna delle quali è a sua volta implementata

come una pipeline. Stream di istruzioni possono essere eseguiti in parallelo, uno per ciascuna

pipeline.

Superscalare vs Superpipelined

Superpipelined: suddivide la pipeline in un numero maggiore di stages per usare Clock a più alta

frequenza. C’è sempre una sola pipeline, ma in questo modo miglioriamo il parallelismo

temporale, perchè lavora su più istruzioni allo stesso tempo.

-> ciascuno stage esegue le sue istruzioni in sequenza, le esecuzioni nel

(Superpipeline

complesso di tutti gli stage sembrano in parallelo

Superscalare -> ciascuno stage ha a sua volta più pipeline, eseguono istruzioni in parallelo)

(Esempio slide)

Pipeline normale: invia un’istruzione per Clock cycle ed esegue un pipeline stage ogni clock cycle.

Solo un’istruzione alla volta occupa uno stage, anche se sono più esecuzioni concorrenziali.

Superpipeline: eseguire due stage per clock cycle. Le funzioni eseguite in ciascuno stage può

essere divisa in due parti che non si sovrappongono e ciascuna può essere eseguita in mezzo

ciclo di Clock -> pipeline di grado 2.

Superscalare: eseguire due istanze nello stesso stage in parallelo

LIMITAZIONI SUPERSCALARE:

true data dependency (o RAW dependency o ow dependency):

Sulla seconda istruzione si può esseguire il fetch e il decode ma non l’execute no a che sia la

prima ad essere eseguita. Perchè la seconda ha bisogno dei dati prodotti dalla prima.

Con itto di risorse: più istruzioni richiedono la stessa risorsa allo stesso momento

Procedural dependency: presenza di un branch, l’istruzione successiva a un branch non può

essere eseguita in parallelo con questo

Senza dipendenze tra due istruzioni, si può eseguire un fetch in parallelo senza problemi. Se ci

sono data dependencies tra le due, la seconda è ritardata per un numero di Clock necessari a

rimuovere la dipendenza. (Tutte le istruzioni possono ricevere un Delay in attesa di ottenere tutti gli

input necessari)

Istruction issue policy

Politica di spostamento di un’istruzione da una fase a quella successiva.

- rilascio in-order: distribuire le istruzioni nello stesso ordine di come sarebbe se eseguite in

sequenza

- Completamento in-order: scrivere anche i risultati nello stesso ordine

Es: se una funzione richiede più Clock cycle per eseguire un’unità funzionale (es: decode) e

generare un risultato, il rilascio di ulteriori istruzioni va temporaneamente in stallo.

In-order issue con out-of-order completion 21 of 28

fl fl fi

Usato nei RISC. Qualunque numero di istruzione può essere nel ciclo di esecuzione allo stesso

momento, no al massimo grado di parallelismo concesso. Il processore decodi ca istruzioni no

al punto di dipendenza o con itto, e nient’altro è eseguito no alla risoluzione di questo.

Nuova dipendenza: output dependency (WAW)

Out-of-order issue con out-of-order completion

Disaccoppiare la fase di decode da quella di execute, aggiungendo un bu er chiamato instruction

window. Dopo la decodi ca l’istruzione è messa qui dentro, no a che il bu er non è pieno, il

processore continua ad eseguire fetch e decode delle istruzioni.

Quando nello stage di esecuzione si libera un’unità funzionale, un’istruzione dall’instruction

window può essere inviata all’execute stage.

Il processore ha così una capacità di previsione, trovando e mandando in esecuzione solo quelle

istruzioni indipendenti.

Genera antidependency (WAR) (o output dependency)

Che peggiora con le tecniche di ottimizzazione che aumentano l’utilizzo dei registri, causando

maggiori con itti nella richiesta di risorse.

Register renaming

Questo può essere risolto con il cioè i registri sono allocati dinamicamente

dal processore e associati ai valori utili alle istruzioni in diversi momenti. Quando un nuovo valore

di registro è creato, un nuovo registro viene allocato per quel valore 22 of 28

fi fl fi fl fi fi ff ff fi fi

CU operation and microprogrammed control - 19

Micro-operations

L’esecuzione di un programma consiste nella sequenza di cicli di istruzioni con un’istruzione

macchina per ciclo. La sequenza di istruzioni non sempre segue quella indicata dal programma a

causa della presenza di possibili istruzioni di branch.

Ogni ciclo di istruzioni è composto da unità più piccole:

- Fetch

- Indirect

- Execute

- Interrupt

(Con I ciccli di fetch e execute che sono quelli sempre presenti)

Ogni ciclo più piccolo poi include degli steps che coinvolgono i registri del processore -> micro-

operazioni.

Fetch cycle

All’inizio di ogni instruction cycle, per fare il fetch dell’istruzione dalla memoria.

Coinvolge 4 registri:

- MAR: connesso alle address lines del system bus, speci ca l’indirizzo in memoria per una

lettura o scrittura

- MBR: connesso alle data Lines del system bus, contiene il valore da salvare in memoria o

l’ultimo valore letto dalla memoria

- PC: contiene l’indirizzo dell’istruzione per la successiva fetch

- IR: contiene l’istruzione dell’ultimo fetch

1. Indirizzo passato da PC a MAR (unico registro connesso alle Address Lines del system bus)

MAR <- PC

2. MAR invia l’indirizzo nell’address bus

3. CU invia un READ Command sul control bus

4. Il risultato ritornato nel data bus è copiato nel MBR - PC incrementato (usa ALU) [queste due

istruzioni non interferiscono l’una con l’altra quindi sono eseguite insieme]

MBR <- Memory ;

PC <- PC+1

5. Spostare il contenuto dall’MBR all’IR (così l’MBR si libera per un possibile indirect cycle)

IR <- MBR

Tutte le micro operazioni (sono 4, nei punti 1,4,5) sono di input/output di dati nei registri, quindi se

questi movimenti non interferiscono a vicenda possono essere eseguiti in simultanea per

risparmiare tempo.

Indirect cycle

Dopo il fetch dell’istruzione bisogna recuperare anche gli operandi. Se l’istruzione speci ca un

indirect Address allora si esegue un indirect cycle prima dell’execute.

Micro operazioni:

T1: MAR <- IR - address eld of IR

address

T2: MBR <- memory

T3: IR <- MBR

address address

Quindi

- MBR contiene un indirizzo

- IR è nello stesso stato nel caso in cui si fosse usato il Direct addressing

Si può eseguire quindi l’execute

Interrupt cycle

Dopo l’execute cycle si esegue un test per vedere se sono stati chiamati degli interrupt. Se così

allora avvia il ciclo: 23 of 28

fi fi fi

- t1: MBR <- PC così il contenuto può essere salvato in memoria per poi essere ripreso al

return dell’interrupt

- t2: MAR <- save-address indirizzo dove il contenuto del PC deve essere salvato

PC <- routine-address indirizzo dell’inizio dell’interrupt-processing routine

- t3: memory <- MBR

N.B. il salvataggio del context dall’interrupt-handler routine (non dalle micro operazioni)

Instruction cycle

In ogni instruction cycle, per l’execute ci sono cicli di micro operazioni per ogni opcode, per tutti

gli altri c’è solo un ciclo di micro operazioni.

Instruction cycle code ICC : dice in che punto del ciclo è il processore:

- 00 : fetch

- 01: indirect

- 10: execute

- 11: interrupt

È settato alla ne di ciascuno di questi cicli

Controllo del processore

Step per la caratterizzazione della CU:

1. De nire gli elementi base del processore

2. De nire micro operazioni che può eseguire

3. Determinare le funzioni che la CU deve eseguire per innescare l’esecuzione delle micro

operazioni

Elementi funzionali di base di un processore

- ALU

- Registri:

salvare dati internamente al processore. Alcuni registri contengono info sullo stato utili a

gestire la sequenza di operazioni.

Altri contengono dati che vanno o provengono dall’ALU, dalla memoria e dai moduli I/O

- Internal data paths:

sono usati per passare i dati tra registri o tra i registri e l’ALU

- External data paths:

servono per collegare I registri alla memoria e moduli I/O, spesso usando il system bus

- CU: permette l’esecuzione delle operazioni nel processore

Funzioni della CU

2 task di base:

- Sequencing: fa in modo che il processore esegua una serie di micro operazioni nella corretta

sequenza, in base al programma eseguito

- Execution: la CU permette l’esecuzione di ciascuna micro operazione

Opera usando i segnali di controllo.

Input nella CU

- Clock

- IR: l’indirizzo dell’istruzione corrente serve a capire quale micro operazione far eseguire durante

l’execute cycle

- Flags: usate per determinare lo stato del processore

- Control signals dal control bus

Output dalla CU

- Segnali di controllo interni al processore (che fanno muovere dati tra registri o che attivano delle

funzioni nell’ALU)

- Control signals al control bus (verso la memoria o verso I/O devices)

Es: segnale di controllo che apre i Gate per permettere al MAR di inserire l’indirizzo nell’address

bus 24 of 28

fi

fi fi

Es: invio di un memory read nel control bus

Es: segnale di controllo che apre i Gate per permettere all’MBR di prendere i dati dal data bus

Es: segnale di controllo alla logica (nell’ALU) che aggiunge 1 al PC e salva il risultato nel PC

Organizzazione interna del processore

CU controlla i percorsi dei dati,

Data paths: la ognuno dei quali ha uno switch, un segnale dalla

CU li apre temporaneamente facendo passare i dati.

Dettagli
Publisher
A.A. 2023-2024
28 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher massimm di informazioni apprese con la frequenza delle lezioni di Architetture dei calcolatori e cloud computing e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università Politecnica delle Marche - Ancona o del prof Galdelli Alessandro.