Anteprima
Vedrai una selezione di 10 pagine su 177
Calcolatori Elettronici Pag. 1 Calcolatori Elettronici Pag. 2
Anteprima di 10 pagg. su 177.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici Pag. 6
Anteprima di 10 pagg. su 177.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici Pag. 11
Anteprima di 10 pagg. su 177.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici Pag. 16
Anteprima di 10 pagg. su 177.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici Pag. 21
Anteprima di 10 pagg. su 177.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici Pag. 26
Anteprima di 10 pagg. su 177.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici Pag. 31
Anteprima di 10 pagg. su 177.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici Pag. 36
Anteprima di 10 pagg. su 177.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici Pag. 41
1 su 177
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

CPU A SINGOLO CICLO

Schema del processore (e memoria)

Si chiama a singolo ciclo perché faremo in modo che ogni istruzione venga eseguita in un ciclo di clock. Nonostante sembri un vantaggio, in realtà non lo è, in quanto non è possibile dedicare meno di un ciclo di clock ad ogni istruzione.

Il PC ottiene l'indirizzo dell'istruzione da eseguire, la memoria legge le istruzioni, l'IR preleva i comandi da eseguire e l'Unità di Controllo le esegue.

Nel singolo ciclo IR non c'è, in quanto nello stesso ciclo di clock dobbiamo leggere ed eseguire l'istruzione. Quindi, togliamo l'IR per velocizzare il tutto.

L'esecuzione deve avvenire immediatamente, quindi l'Unità di Controllo, sulla base dell'istruzione, tramite una tabella prescrive il comportamento da attuare. Quindi, l'Unità di Controllo è di tipo combinatorio ed utilizza le tabelle di verità, dato che essa è in grado di

Mandare i segnali di controllo al datapath nello stesso ciclo di clock. I segnali di controllo determinano, a seconda del tipo di istruzione:

  • Il percorso sorgente-destinazione dei dati mediante indirizzi e numeri registri + segnali di controllo ai multiplexer.
  • Le operazioni aritmetiche e logiche effettivamente svolte mediante segnali di controllo alle ALU.
  • Se un elemento di memoria deve scrivere e/o leggere un dato mediante segnali di tipo read/write.

Avremo, quindi, la determinazione di un "percorso" del tipo dove Sorgente e destinazione possono coincidere. Valore sorgente disponibile "nel corso" del ciclo, destinazione scritta alla fine.

Si noti che prima che l'unità di controllo mandi i segnali di controllo, questi ultimi hanno comunque dei valori infiniti. Potenzialmente questi valori potrebbero anche ordinare la scrittura in un determinato registro, ma questo non succederà mai perché la scrittura avviene solo a ogni ciclo di clock.

(cioè al prossimo fronte di salita). L'importante è quindi che vi siano i segnali di controllo giusti entro un tempo necessario a consentire al datapath di produrre un valore e renderlo disponibile per la memorizzazione entro un ciclo.

Martina Contestabile Ingegneria Informatica — II anno A.A. 2021/22

Temporizzazione: L'idea è che, dopo un certo tempo dall'inizio, ci sono segnali che settano un percorso e permettono lo svolgimento dell'istruzione prescelta. Tra i segnali ci sarà anche RegWrite, che permette la scrittura del dato alla fine del ciclo di clock. Un punto fondamentale di questo processore è che il Register File, nonostante l'andamento caotico delle operazioni, deve avere un tempo di scrittura sufficiente. Ciò è possibile settando opportunamente il periodo di clock.

Ad ogni ciclo di clock abbiamo che il PC invia l'indirizzo dell'istruzione da eseguire e memorizza quello

dell'istruzione da eseguire nel prossimo ciclo.

Progettazione Datapath — Caso MIPS

Ci sarà un'unità di controllo che penserà a impostare i segnali di controllo in modo tale che ogni istruzione possa essere eseguita. Come vengono impostati è compito dell'unità di controllo, se vengono impostati del progettista.

Nella progettazione della CPU, faremo riferimento alle seguenti istruzioni:

Istruzioni aritmetiche:

  • add rd, rs, rt // rd = rs + rt
  • slt rd, rs, rt // rd = 1 se rs < rt, 0 altrimenti

Istruzioni di accesso a memoria:

  • lw rt, o set(rs) // rt = M[rs+o set]
  • sw rt, o set(rs) // M[rs+o set] = rt

Istruzioni di salto condizionato:

  • beq rs, rt, o set // se rs = rt salta a o set istruzioni rispetto a PC (aggiornato a istruzione corrente + 4 bytes!)

in bytes: PC + (o set || 00)

Salto incondizionato:

  • j o set // salta all'indirizzo in istruzioni ottenuto da: 4 bit di PC || o set [30 bit] indirizzo in byte

concatenazione di 4 bit di PC || o set || 00 [32bit]

Codi ca delle istruzioni viste Tutte le istruzioni aritmetiche sono codi cate allo stesso modo, quindi possiamo ragionare sull'istruzione add consapevoli che questo vale per tutte le restanti.

Si ricorda che la codi ca di queste istruzioni avviene con il tipo R.

72fi ff fi ffff ff ff ff fi ff ff ff è ff fi ffi

Martina Contestabile Ingegneria Informatica — II anno A.A. 2021/22

Note sulla codi ca utili per la progettazione

La progettazione facilitata dal fatto che:

  • Campo op sempre in [31-26].
  • I registri da leggere sono sempre in rs e rt.
  • Il registro base [da sommare] per lw e sw rs [primo ingresso della ALU].
  • L'o set a 16 bit da sommare per beq, lw, sw in [15-0],
  • Il registro su cui scrivere pu essere rd — per operazioni di TIPO-R — o rt — per lw.

Consideriamo inizialmente solo le istruzioni aritmetiche — ad esempio, add

Quello che devono fare queste istruzioni è usare la ALU, facendo arrivare i valori

contenuti in rs, per poi porre il risultato in ingresso al Register File, che memorizzerà il dato in rd.
Fetch
La scrittura avviene solo nei fronti di salita.
Ad ogni ciclo di clock il PC deve contenere un nuovo indirizzo.
Quindi, quando non troveremo segnati segnali di lettura della memoria, dato che deve leggere una nuova istruzione da eseguirla ad ogni ciclo di clock, significa che è settato ad 1.
Durante ogni ciclo di clock, se il PC contiene l'indirizzo corrente, bisogna trovare l'indirizzo del prossimo ciclo, che verrà PC + 4 memorizzato a ne ciclo, che è PC + 4.
Per generare tale indirizzo avremo un sommatore, ossia una ALU che esegue solo una somma, e produce il nuovo indirizzo.
Il PC è a 32 bit, il sommatore pure, quindi viene prodotto un valore di 32 bit che viene subito immesso nel PC.
Il valore corrente del registro PC è sempre disponibile in uscita. Normalmente esso dovrebbe essere dotato di un segnale di scrittura in modo da poterdecidere se sovrascrivere il segnale che ha in ingresso a ogni ciclo di clock o no. Nel nostro caso, questo segnale non serve perché si tratta di un processore a singolo ciclo: è implicito che ad ogni ciclo di clock l'istruzione da eseguire deve cambiare, altrimenti il programma rimane fermo. Questo implica che il PC sarà già progettato per scrivere il risultato che ha in ingresso alla fine di ogni ciclo di clock. La memoria serve solo per leggere istruzioni, è l'unica operazione che le è consentito svolgere. Per leggere e scrivere nello stesso ciclo di clock servono due memorie che svolgano ciascuna una delle due operazioni. Se la memoria è una sola, in un ciclo fa la lettura e in quello successivo fa la scrittura. Quindi, la instruction memory fa solo lettura, i dati da scrivere sono lavorati da un'altra. In uscita dal Register File avrò dati in 32 bit che corrispondono ai valori di rs e rt. Qui, però, bisogna fare attenzione,

Perché è facile confondersi. Quelli che collego in ingresso sono i numeri in 5 bit che corrispondono a ciò che viene indicato dalle istruzioni - il registro. Nel Register File ci sono tutti i registri, in base a quelli immessi ne legge il contenuto, e, dopo essere stati letti, viene prodotto il valore che è contenuto nel registro. Questi valori sono inviati alla ALU che svolgerà l'operazione prescelta. Svolta l'operazione, il valore a 32 bit viene inviato nuovamente al Register File che, a sua volta, scriverà nel registro che è stato posto in ingresso PC + 4 nella terza porta a 5 bit. Scritto il valore in rd, PC viene memorizzato in e così può iniziare un nuovo ciclo. Read-Write Per concludere, se il programma è costituito solo da istruzioni di tipo R, questo è il processore che permette lo svolgimento delle stesse. Ora che abbiamo ricevuto l'istruzione dalla memoria istruzioni, ci ricordiamo che i

Suoi 32 bit sono suddivisi seguendo il formato R. Seguendo questo formato, i vari bit 73ff è fi fi fi è ò fi è fi

Martina Contestabile Ingegneria Informatica — II anno A.A. 2021/22 verranno codificati, noi sfruttiamo la Green Card, ed utilizzati per individuare i registri richiesti.

Avremo quindi in uscita il contenuto di questi registri, che è a 32 bit.

Prendiamo come esempio l'istruzione add $s0, $t0, $t1.

$t0 = rs = registro numero 16, quindi si converte 16 in binario e lo si dà in ingresso in formato 32bit per ricavarne il contenuto.

$t1 = rt = registro numero 17, quindi si converte 17 in binario e lo si dà in ingresso in formato 32bit per ricavarne il contenuto.

I contenuti dei due registri letti, ossia rs e rt, verranno poi posti in ingresso alla ALU che, sullabase del segnale ALU Operation, dato dall’Unità di Controllo, saprà che operazione eseguire.

Il risultato di questa operazione viene poi collegato all’ingresso Write

  1. Arrivano i 32 bit dell'istruzione in ingresso.
  2. Tramite la codifica Tipo R si riconosce il loro significato e si definiscono i numeri dei registri interessati.
  3. Il registro pesca il contenuto dei due registri specifici indicati e li pone in uscita.
  4. Le uscite sono collegate alla ALU a quale esegue l'operazione specificata con il segnale ALUOperation - ALUOp.
  5. Il risultato, uscita della ALU, viene riportato nell'ingresso Write data dei registri.
  6. Il segnale che arriva nell'ingresso Write data viene scritto nel registro indicato su Write register dal campo rd dell'istruzione.

Integrazione della lw e sw

Il codice

operativo è 6 bit, mentre rs, rt sono a 5 bit, in ne const è a 16 bit. Per aggiungere queste due istruzioni ripercorriamo lo schema n ora costruito ed aggiungiamo le funzioni mancanti, senza influenzare quanto fatto per le istruzioni tipo R.

Analizziamo la lw. Sia per la lw che per la sw l'istruzione successiva è identica al tipo R, non ci sono salti, quindi non bisogna fare alcuna modifica. L'istruzione viene letta in Instruction Memory allo stesso modo del tipo R, perciò anche qui non facciamo modifiche.

Dobbiamo prendere il valore di rs, sommarlo alla costante e memorizzare il tutto in rt. È necessario

Dettagli
A.A. 2022-2023
177 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/01 Elettronica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher martina.contestabile01 di informazioni apprese con la frequenza delle lezioni di Calcolatori elettronici 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à degli Studi di Brescia o del prof Giacomin Massimiliano.