• Non ci sono risultati.

Il processore PD32

N/A
N/A
Protected

Academic year: 2022

Condividi "Il processore PD32"

Copied!
68
0
0

Testo completo

(1)

Il processore PD32

(2)

Macchina di von Neumann

Unità di Calcolo Unità di Controllo

Memoria di lavoro Unità di

Ingresso Unità di

Uscita

(3)

Unità di Calcolo

Unità di Controllo Memoria di

lavoro Unità di

Ingresso Unità di

Uscita

Suddivisione SCA-SCO

SCA

(4)

Modifica macchina di Von Neumann con CPU

Unità di Calcolo Unità di Controllo

Memoria di lavoro Unità di

Ingresso Unità di

Uscita

CPU

(5)

Dal linguaggio ad alto livello al linguaggio macchina

Programma in Linguaggio alto Livello

Compilatore

Programma in Linguaggio Assembly

Assemblatore

Programma in Linguaggio Macchina

a=b+c

movw b,R1 movw c,R2 addw R2,R1 movw R1,a

000101..010100 1011101..010100

Non dipende dalla macchina HW

• Insieme istruzioni che dipendono dalla

macchina hw (simboliche)

• Commenti

• Riferimenti simbolici

• Insieme Istruzioni della macchina hw

(6)

PD32

• Processore “virtuale” dotato di registri da 32 bit

• Non esiste nella realtà, ma le sue funzionalità sono simulate tramite un programma

• Set delle istruzioni sottoinsieme dei processori Motorola

• Nel seguito sarà usato per approfondire alcuni aspetti legati alle architetture dei calcolatori

• Sistema multiciclo

• No pipeline, no memoria cache

(7)

. . .

R0 R1 R7

MDR

MAR

I/ODR

I/OAR

PC

IR

struttura di interconnessione

TEMP1 TEMP2

ALU SR

SHIFTER

UNITA' DI CONTROLLO

memoria di lavoro dispositivi ingresso/uscita

R0, R1...

registri

ALU, shifter unità di calcolo

Collega- menti con

memoria e I/O

(8)

PD32- Sottosistema di Calcolo (SCA)

• Registri (basati su Flip-Flop D con segnale di Enable )

– speciali – generali

• Dispositivi di calcolo

– Shifter

– ALU (somma e sottrazione)

• MUX

• Decodificatori

• Struttura di interconnessione: BUS

(9)

Processamento dell’istruzione

Il processamento dell’istruzione (ciclo istruzione)prevede tre fasi: fetch, decodifica e esecuzione

-Il fetch serve per prelevare l’istruzione dalla memoria -La decodifica serve per identificare quale micro-

programma del sottosistema di controllo (SCO) attivare -L’esecuzione serve ad implementare la “semantica”

dell’istruzione. Può richiedere uno o più cicli macchina (interazioni con la memoria o i dispositivi di I/O)

(10)

Un semplice esempio

Consideriamo l’istruzione a=a+b, espressa in un linguaggio di alto livello

• “Memorizza nella variabile di nome a, la somma dei valori contenuti nelle variabili di nome a e b”

• Nota: Le variabili sono individuate da un nome

simbolico deciso precedentemente nel programma..

a 15

b 9

24 9

a b

Prima Dopo

a =a+b

(11)

Un semplice esempio (2)

Per eseguire questa istruzione è necessario

– Stabilire dove sono memorizzati i valori da sommare – Stabilire dove va scritto il risultato dell’operazione – Quale operazione svolgere

• Nel PD32, gli operandi sono memorizzati nei registri interni alla CPU (registri visibili al programmatore)

• Il formato dell’istruzione è (s può essere B,W,L) ADDs <sorgente><destinazione>

Il campo destinazione è un registro che contiene il valore iniziale di un operando e che sarà modificato

ADDW R2,R1

(somma R1 con R2 (16 bit) e poni il risultato in R1)

(12)

Esecuzione istruzione

100

PC adds R2,R1

. .

100

Indirizzo

MEMORIA PC=Program Counter

contatore di programma (memorizza indirizzo dell’ istruzione in esecuzione)

(13)

Istruzione: fase di fetch

100

PC adds R2,R1

. .

100

Indirizzo

adds R2,R1

IR

MEMORIA PC=Program Counter

IR= Instruction Register

(14)

Istruzione: decodifica

100

PC adds R2,R1

. .

100

Indirizzo

adds R2,R1

IR

Controllo

MEMORIA Decodifica istruzione: identifica il microprogramma per l’esecuzione dell’istruzione

(15)

Istruzione: fase di esecuzione

100

PC adds R2,R1

. .

100

Indirizzo

adds R2,R1

IR

Controllo Risorse di MEMORIA

(16)

CPU come interprete

L’esecuzione di un programma può essere visto come la ripetizione continua dei seguenti passi (Ciclo Istruzione) che interpretano le istruzioni del programma contenuto in memoria.

fetch: (PC)IR incrementa PC

esegui istruzione in IR vai al passo fetch

• La CPU interpreta le istruzioni che man mano sono presenti nel suo Instruction Register (nota che l’esecuzione puo’ modificare il PC)

• Tale schema è semplificato poiché per interagire con l’esterno, o gestire situazioni anomale, tale ciclo deve poter essere interrotto.

La notazione (PC) indica il contenuto della

locazione di memoria con indirizzo PC

(17)

PD32- BUS interno

• Usato per il collegamento dei registri interni

• Operazioni che caratterizzano il bus

– Ricezione dati

• i bit presenti sul bus sono memorizzati in un registro

– Trasmissione dati

• Il contenuto di un registro è posto sul bus

• Al più un solo registro può scrivere sul bus

– segnali di controllo opportunamente generati

• Il segnale di abilitazione alla scrittura di un registro

corrisponde alla ricezione dei dati presenti sul bus in quel momento

• Il segnale di abilitazione sul buffer three-state permette di trasferire sul bus il contenuto del registro

(18)

PD32- BUS interno, segnali di controllo

32 bit

R0 R1 R7

WR0 WR1 WR7

BR0 BR1 BR7

Una sola scrittura per volta (controllo mediante Bi) 2n segnali di controllo (n numero dei registri)

Wi=1, leggi dal bus Bi =1 scrivi sul bus

(19)

PD32- BUS interno, esempio R1 -> R0

Per eseguire il trasferiemento da R1 ad R0

(simbolicamente (R1)->R0) devono essere affermati solamente i seguenti segnali: BR1 = 1, WR0 = 1

32 bit

R0 R1 R7

WR0 WR1 WR7

BR0 BR1 BR7

(20)

PD32- Banco dei registri

• Insieme di 8 registri generali indicati da R0 ad R7

• Sono controllati mediante

– Segnali di abilitazione per

• scrittura del registro (WM)

• lettura e conseguente invio sul bus interno del contenuto del registro (RM)

Indirizzo

BUS interno

WM RM

(21)

R0 R1 R7

w0 w1 w7

B0 B1 B7

Decoder

WM RM

Indirizzo registro

PD32- Banco dei registri

(22)

PD32-

esempio: R7 ->BUS

R0 R1 R7

w0 w1 w7

B0 B1 B7

BUS Decoder

Indirizzo registro

11 1

WM RM

Address=111, RM=1

Address

nota: non si può leggere e scrivere contemporaneamente

(23)

PD32- ALU

• Esegue le operazioni aritmetiche e logiche dei valori memorizzati in due registri tampone (non visibili al programmatore) Temp1 e Temp2

• Il risultato è posto in un registro generale Ri

TEMP1 TEMP2

OpCode

(specifica operazione

WT1 WT2

ALU 32

(24)

PD32- ALU, esempio:

esecuzione addw R2,R1

TEMP1 TEMP2

OpCode

BA

WT1 WT2

ALU REGISTRI

WM RM

3

32 Address

(25)

PD32- ALU, esempio:

esecuzione addw R2,R1

1. R1 -> Temp1 RM=1, Address = 001, WT1=1

TEMP1 TEMP2

OpCode

WT1 WT2

ALU REGISTRI

WM RM

Address3

(26)

PD32- ALU, esempio:

esecuzione addw R2,R1

1. R1 -> Temp1 RM=1, Address = 001, WT1 = 1 2. R2 -> Temp2 RM=1, Address = 010, WT2 = 1

TEMP1 TEMP2

OpCode

BA

WT1 WT2

ALU REGISTRI

WM RM

3

32 Address

(27)

PD32-

ALU, esempio: esecuzione addw R2,R1

1. R1 -> Temp1 RM=1, Address = 001, WT1 = 1 2. R2 -> Temp2 RM=1, Address = 010, WT2 = 1

3. ALU-OUT(Temp1+Temp2)->R1 WM=1, Address = 001, OpCode = addw, BA=1

TEMP1 TEMP2

OpCode

WT1 WT2

ALU REGISTRI

WM RM

Address3

(28)

Osservazioni

• Per l’esecuzione dell’istruzione (senza considerare la fase di fetch) sono state necessarie 3 operazioni elementari

• Ogni operazione viene eseguita durante un ciclo di clock

• In generale il numero di cicli di clock richiesti per completare una istruzione è variabile e

dipende dall’istruzione. Tale paramentro viene indicato con CPI (Clock per Instruction)

• La velocità di esecuzione di un programma dipende anche dal numero medio di CPI

(29)

PD32- Shifter

Usato per eseguire operazioni di scorrimento di posizioni, nonché per lo spostamento di dati tra registri interni (i registri

tampone non possono scrivere sul bus mentre i segnali di controllo valgono per tutti i registri)

TEMP1 TEMP2

OpCode

WT1 WT2

ALU 32 bit

SHIFTER OpCode

(30)

Shifter (background)

Spostamento logico a destra di k posti.

bn-i = 0 (per 0 ≤ i < k) bi = ai+k (per 1≤ i ≤ n - k) C = ak

0 . . .0 a . . a a a . . . a

n k+2 k+1 k 1

b b b b b C n n-k+1 n-k 2 1

(31)

Barrel shifter

. . .

. . .

. . . .

. .

. . . . . . . . .

an a an-2 a a1

. . .

. . .

registro di controllo

1

2

3 c

c

c

n-1 n-3

log n

c -1 1

2

3

log n -1

d

(32)

Schema di una cella

Ci d

(33)

PD32-

Status Register

Contiene informazioni sull’esito dell’ultima operazione (ex. zero, overflow). Usato anche come ingresso per alcune operazioni (ex. Salti condizionati)

TEMP1 TEMP2

OpCodeALU

BA

WT1 WT2

ALU 32

SHIFTER OpCodeSHIFTER

BS

SR

(34)

singola linea linee multiple

N.B. non sono evidenziate le variabili di condizione che da SR e IR vanno al SCO

opcode

B B

BA S R BS

PC

RPC WPC

M U X

I R BSR

.

. .

R M W M

decoder

AND

R0

R1

R7

AND

AND AND

AND AND

. . .

shifter ALU

TEMP1 TEMP2

Wt1 Wt2

opcode

S MUX W IR

INC(N=1,2,4)

(35)

Incremento PC

PC

R PC

INC2 INC1 WPC

Il PC deve essere incrementato (se non si eseguono istruzione di salto) NOTA: le

istruzioni PD-32 possono avere

lunghezza diversa;

quindi incremento PC è variabile

INC4

(36)

PD32-

Interazione con la memoria

• La memoria contiene sia i dati che le istruzioni e può essere sia letta che scritta.

• E’ necessario quindi:

– Prelevare istruzioni – Leggere dati

– Scrivere dati

• Le operazioni di lettura/scrittura avvengono fra una locazione di memoria e un registro (registro dati, RI, PC)

• E’ necessario quindi instradare opportunamente i dati ricevuti dalla memoria verso i registri e viceversa.

(37)

Memoria: organizzazione logica

a a a a

3 2 1 0

0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1

a a a a 3 2 1 0

0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 a a a a a a a a 3 2 1 0 a a a a 3 2 1 0

0 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1 3 2 1 0

0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0 0 0 1 1

0 1 1 1 1 0 1 1 1 1 1 1

Organizzazione logica a vettore di 16 celle di memoria

Un’organizzazione a 4 moduli di 16 celle di memoria

(38)

Organizzazione di una RAM statica

(4 x 3 bit)

(39)

Memoria RAM

. . .

decoder di colonna decoder di riga

indirizzi

amplificatore di uscita

amplificatore di scrittura

RD

WR CS

al DB

dal DB

dall'AB

matrice m x m bit 1

2

m

1 2 . . . m

(40)

Memoria

comportamento esterno

Funzionalmente è caratterizzata dai seguenti segnali

– Indirizzo della parola da leggere/scrivere – MR, affermato se si vuole leggere

– MW, affermato se si vuole scrivere

– CS, Abilita l’intero modulo (Chip Select) – Dati

Indirizzo Dati

MR MW CS

m bit n bit

Indirizzo valido

Dato valido

Tempo di accesso

MR

(41)

Memoria organizzazione in moduli

Data BUS (32 bit)

a2…a31 a2…a31 d23…d16 d31…d24

a2…a31 d15…d8

a2…a31 d7…d0

MR MW CS

MR MW CS

MR MW CS

MR MW CS

(42)

Lo spazio di indirizzamento del PD32 e’

monodimensionale e

Composto da 232 locazioni (byte)

Locazione 00000000

Locazione FFFFFFFF

Byte (8 bit)

Word (16 bit)

Longword (32 bit)

Memoria: spazio di indirizzamento

(43)

Memoria: disallineamento

Esempio di memorizzazione di una informazione di quattro byte allineati sullo stesso indirizzo di riga.

a a a a 3 2 1 0

0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 a a a a a a a a 3 2 1 0 a a a a 3 2 1 0

0 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1 3 2 1 0

0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0 0 0 1 1

0 1 1 1 1 0 1 1 1 1 1 1

a a a a 3 2 1 0

0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 a a a a a a a a 3 2 1 0 a a a a 3 2 1 0

0 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1 3 2 1 0

0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0 0 0 1 1

0 1 1 1 1 0 1 1 1 1 1 1

Esempio di memorizzazione di una informazione di quattro byte disallineati

a a a a 3 2 1 0

0 0 0 0 a a a a a a a a 3 2 1 0 a a a a 3 2 1 0

0 0 0 1 3 2 1 0

0 0 1 0 0 0 1 1

(44)

Memoria : byte allineati

Address BUS (30 bit) Data BUS (32 bit)

a2…a31 a2…a31 d23…d16 d31…d24

a2…a31 d15…d8

a2…a31 d7…d0

Mb3 Mb2 Mb1 Mb0

MR MW CS

MR MW CS

MR MW CS

MR MW CS

(45)

Memoria : byte non allineati (1)

Data BUS (32 bit)

a2…a31 a2…a31 d23…d16 d31…d24

a2…a31 d15…d8

a2…a31 d7…d0

MR MW CS

MR MW CS

MR MW CS

MR MW CS

(46)

Memoria : byte non allineati (2)

Address BUS (30 bit) Data BUS (32 bit)

a2…a31 a2…a31 d23…d16 d31…d24

a2…a31 d15…d8

a2…a31 d7…d0

Mb3 Mb2 Mb1 Mb0

MR MW CS

MR MW CS

MR MW CS

MR MW CS

(47)

Memoria: interfaccia del PD32

• Registro Memoria Dati (MDR)

• Registro Indirizzo (MAR)

• Segnali di Controllo (MR,MW, Mb3, Mb2, Mb1, Mb0)

MDRAR

Memoria Di Lavoro

WMDR

dati SCO

Segnali di Controllo

BMDR

(48)

Memoria: interfaccia SCA del PD32

Address Bus

Bus Interno del PD32

M D R

M A R

Data Bus

SCA del PD32

BMDR WMDR DIR B

DB

BAB WMAR

(49)

PD32-

Interazione con l’esterno

• Ogni fase che comporta l’interazione con le unità esterne viene detta ciclo macchina.

• Ogni ciclo macchina può essere costituito da uno o due cicli di bus; per esempio la lettura di una parola memorizzata su due byte non allineati sullo stesso indirizzo di riga necessita di due accessi in memoria (cioè di due cicli di bus).

(50)

Interfaccia dispositivi di I/O

Device Control

Dipendente dal dispositivo

Indipendente dal dispositivo

INTERFACCIA

BUS

Decoder

Registro

indirizzi

dati

segnali di controllo

dati

segnali di controllo

(51)

Dispositivi di I/O: interfaccia del PD32

• Registro Dati (I/ODR)

• Registro Indirizzo (I/OAR)

• Segnali di Controllo (I/OR,I/OW, Start, ……….)

I/ODR0AR

Dispositivo di I/O

WMDR

dati SCO

Segnali di Controllo

BI/ODR

(52)

I/O: interfaccia SCA del PD32

I/O Address Bus

Bus Interno del PD32 I/O

Data Bus

SCA del PD32

B W DIR B

B W

I/O D R

I/O A R

I/ODR I/ODR I/ODB

I/OAB I/OAR

(53)

Interconnesione del PD32

PD32

Memory address bus

Memory control bus Memory data bus Modulo di

memoria Modulo di memoria

30

32

8 Interfaccia I/OInterfaccia I/O

32

dispositivo di I/O

dispositivo di I/O

(54)

Sottosistema di controllo (SCO)

SCA

(SLAVE)

SCO

(MASTER)

TASK

Data In Data Out

Stato o variabili di condizionamento

Variabili Condizionamento

esterne

Uscite esterne

(55)

Sottosistema

di controllo (SCO)

microprogramma relativo alla fase di

fetch

. . .

XXX YYY

start

codice della classe dell' istruzione

ZZZ

microprogramma relativo

alle istruzione

microprogramma relativo

alle istruzione

microprogramma relativo

alle istruzione

Decodifica

(56)

SCO: schema di Mealy

spostamento base

load

reset codice

classe micro ordini reg. SEL

circuito di selezione

ROM

variabili di condizione

CK

CK

(57)

SCO: schema di Moore

. . .

ROM micro ordini

circuito di selezione multiplexer

spostamentobase

load reset

codice classe

SS1 SS2 SSm

CK

SEL

Cod. Classe: codice istruzione

Load: segnale di caricamento nuova istruzione (a fine fetch)

Reset: azzera cod.

classe (inizia fetch) variab. di cond.:

influenzano

esecuzione istr. (ad es. var. in SR)

(58)

Interazione con la memoria: ciclo di scrittura

T1 T2 T3

CLOCK

MWR BUS

INDIRIZZI indirizzo

dato

BUS DATI

(59)

Interazione con la memoria: ciclo di lettura

T1 T2 T3

CLOCK

BUS INDIRIZZI

MRD

BUS DATI

indirizzo

dato

(60)

Passi elementari per eseguire il Fetch

(ipotesi: 4 byte allineati in memoria)

1. PC -> MAR; /* trasferimento del contenuto del PC nel MAR */

MDRMAR

Memoria Di Lavoro

WMAR WMDR

PC RPC

WIR IR

WPC

Address Bus Data Bus

DIR BDB

BAB

INC4

BMDR

(61)

Fetch

1. PC -> MAR; /* trasferimento del contenuto del PC nel MAR */

2. (MAR)->MDR /* trasferimento istruzione da eseguire in MDR*/

MDRAR

Memoria Di Lavoro

WMDR

PC RPC

WIR IR

WPC

Address Bus Data Bus

DIR BDB

INC4

BMDR

(62)

Fetch

1. PC -> MAR; /* trasferimento del contenuto del PC nel MAR */

2. (MAR) -> MDR /* trasferimento istruzione da eseguire in MDR*/

3. MDR -> IR /* trasferimento istruzione da eseguire nell’IR*/

PC+4->PC /* e predisposizione PC per prelievo prossima istruzione*/

MDRMAR

Memoria Di Lavoro

WMAR WMDR

PC RPC

WIR IR

WPC

Address Bus Data Bus

DIR BDB

BAB

INC4

BMDR

(63)

Fetch: micro-ordini

1. PC -> MAR; /* trasferimento del contenuto del PC sul MAR

*/

1. RPC = 1, WMAR = 1

2. (MAR) -> MDR /* trasferimento istruzione da eseguire in MDR*/

1. BAB = 1 /* T1 */

2. BAB = 1, MRD = 1 /* T2 */

3. BAB = 1, MRD = 1, WMDR = 1/* T3*/

3. MDR -> IR /* trasferimento istruzione da eseguire in IR e predisposizione PC per prelievo prossima istruzione*/

(64)

Ciclo Istruzione - Decode

IR

SCO

reset

RESET

fetch2

I = ADD I = MOV

fetch3

add1

fetch4

add2 addx

fetch1 fetch5

fetch5: decodifica istr. utilizzando IR e dopo esecuzione delle diverse istruzioni, add, mov, sub, jump...

(65)

Ciclo Istruzione

(66)

PC

Il registro “Program Counter” contiene l’indirizzo da cui prelevare l’istruzione da eseguire.

Il SCO lo incrementa di 4 ad ogni fetch

IR = Instruction Register

Segnali di comando per la SCA e per lo SCO

Fetch

1) PC -> MAR 2) (MAR) -> MDR

3) MDR -> IR, PC + 4 -> PC

Bus memoria

MEMORIA

Istruzione 1 Istruzione 2 Istruzione 3

Ciclo Istruzione - Fetch

Nell’esempio si assume che ogni

istruzione sia di 4 byte

(67)

Esecuzione dell’istruzione

Nel PD32 la fase di esecuzione di un ciclo istruzione

consiste in un numero variabile di cicli macchina dipendente dal numero di accessi in memoria necessari (oltre al fetch)

1. PC -> MAR;

2. (MAR) -> MDR

3. MDR -> IR , PC+4->PC 4. R2 -> Temp1

5. PC -> MAR 6. (MAR) ->MDR

Entrambi gli operandi sono contenuti in registri interni del PD32

(indirizzamento a registro)

Uno degli operandi (0x20) è memorizzato nei due byte successivi a quelli contenente l’istruzione (indirizzamento immediato)

ADDW #20h, R2 ADDW R1, R2

1. PC -> MAR;

2. (MAR) -> MDR

3. MDR -> IR , PC+4->PC 4. R1 -> Temp1

5. R2 -> Temp2

(68)

Esercizi

Con riferimento alla parte SCA della CPU, rispondere

• Cosa succede se elimino il buffer temp2? discutere l’efficienza del sistema (vantaggi e svantaggi)

• Modificare la struttura SCA inserendo due bus dati

• Se ci sono due bus dati come migliora l’efficienza del sistema? su quali operazioni?

• Nel PD32 ci sono 8 registri dati; discutere vantaggi e svantaggi di avere molti registri dati (ad es. cento)

• Nel fetch si incrementa il PC per tutte le istruzioni.

Perché è corretto anche per i salti; migliora l’efficienza?

• Dare il microdice per le istruzioni di salto del PD32

Riferimenti

Documenti correlati

[r]

Si innesca un ‘ciclo’ di attivazioni, non esplicitamente realizzato con strutture cicliche, dovuto alle susseguenti attivazioni che il sottoprogramma fa a se stesso (se

• Dividere il gruppo rimasto in tre sottogruppi e applicare di nuovo il procedimento finché i sottogruppi contengano una sola pallina: l’ultima pesata indicherà quale delle

Scrivi la frazione rappresentata e la frazione complementare, la quale ricostruisce l’intero.. Scrivi la frazione complementare e

Per i procedimenti speciali, il patteggiamento allargato - con il limite di pena applicabile su richiesta delle parti portato ad otto anni di reclusione solo o congiunta a pena

com/), su 3,9 milioni di casi di Co- vid-19 della II e III ondata 3,5 circa sono stati diagnosticati in sede ex- tra-ospedaliera, dopo prescrizione e prenotazione di test molecolare

• JMP LABEL(PC) (metti nel PC quanto ottenuto dalla somma del contenuto della locazione il cui indirizzo è dato da LABEL con il valore corrente del PC).. Indirizzamento

Per utilizzare questi moduli (che sono entità passive, cioè asservite all'utilizzatore) è necessario che il SCO del PD32 generi dei segnali di controllo