Calcolatori Elettronici T Ingegneria...

24
05 Periferiche di I/O con handshake Calcolatori Elettronici T Ingegneria Informatica Stefano Mattoccia

Transcript of Calcolatori Elettronici T Ingegneria...

Page 1: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

05 Periferiche di I/O con handshake

Calcolatori Elettronici TIngegneria Informatica

Stefano Mattoccia

Page 2: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Porte di Input/Output (I/O)• In precedenza abbiamo visto come progettare delle

semplici periferiche di I/O, per scambiare dati traCPU e mondo esterno mediante un buffer

• Tuttavia, non vi era nessuna garanzia sul correttoesito dei trasferimenti

• Infatti, cosa accade se, mentre la CPU scrive nellaporta in output, un dispositivo esterno legge dallamedesima porta? Inoltre, cosa accade se la CPU leggeun dato che in realtà non è mai stato scritto da undispositivo esterno? Come può saperlo? Per questo, itrasferimenti sono intrinsecamente esposti a errori

• In più, la gestione del trasferimenti era totalmentea carico della CPU (che potrebbe fare altro)

• Le porte di I/O non erano in grado di generareinterrupt con tutte le problematiche che ne derivano

Page 3: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

FFD(x8)

D[7..0]

Q[7..0]

CS·RD

DI[7..0]BD[7..0]

WRITE*

Una semplice periferica per leggere dati dall’esterno,senza utilizzare interrupt, è la seguente:

CPU

Este

rno

Tuttavia, con questa soluzione, sorgono degli evidentiproblemi:

• Come può sapere la CPU che è disponibile un nuovodato scritto dall’esterno nella porta?

• Come si può sapere dall’esterno che la CPU haletto il dato scritto in precedenza nella porta?

Page 4: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Un esempio che evidenzia questi problemi riguarda loscambio di beni/dati tra un produttore e un consumatore

Se il produttore produce un caffè che è prelevato primadell’arrivo di un altro tutto potrebbe apparentementefunzionare correttamente (setup e hold?)

Tuttavia, come può sapere il produttore che il caffè èstato prelevato? Come può sapere il consumatore che èdisponibile un nuovo caffè preparato dal produttore?

Per queste ragioni, sorgono altri problemi...

P C

Page 5: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Un primo problema si verifica se il consumatore smettedi prelevare caffè perché non è pronto (e.g., ilconsumatore è al telefono). Come può saperlo ilproduttore?

P C

bla,bla,bla

Page 6: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Il problema duale si verifica se il produttore smettedi preparare caffè perché impegnato a fare altro (e.g.,parlare al telefono). Come può saperlo il consumatore?

bla,bla,bla

• I due problemi evidenziati possono essere risolti inmodo molto semplice ricorrendo a qualche forma disincronizzazione tra le due entità P e C

• Per questo scopo l’handshake è un approcciosemplice, efficiente e ampiamente utilizzato

P C

Page 7: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Segnali del protocollo �handshake�: INPUT

1. Se IBF=0, quando possibile* UE può scrivere il datonel buffer d�ingresso della porta

2. UE, portando STB a 1, scrive il dato nella porta checontemporaneamente asserisce IBF (Input Buffer Full)

3. Quando UE porta STB a zero (scrittura terminata),l�interfaccia attiva INT_I (Interrupt Request)

4. Quando possibile*, la CPU andrà a leggere il datoscritto nella porta da UE. Al termine, IBF andrà azero (mentre INT_I va a 0, dall’inizio della lettura)

INPUT UnitàEsterna(UE)Input

RDINT_I

BD[7..0]

D_IN[7..0]

STB

IBF

CS

RDINTR

BD[7..0]

CS

D[7..0]

STB

IBF

Page 8: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

STB

IBF

INT_I

RD

Handshake (INPUT): forme d’onda

INPUTINT_I EXT

UNITSTB

IBF

D_IN[7..0]RD

BD[7..0]

NOTA: questo RD deve essere “diretto”, dal processore, alla porta in INPUT

CS

RD

INTR

BD[7..0]

CS

D[7..0]

IBF

STB

Page 9: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Un esempio di unità esterna in input potrebbe essererappresentata da un sensore (e.g., di temperatura)

Il sensore invia i dati alla CPU attraverso laperiferica di input quando una nuova misura èdisponibile e IBF=0. Al termine di ogni scrittura nellaporta da parte del sensore di temperatura, il segnaleINT_I si asserisce

INPUTINT_I

STB

IBF

D_IN[7..0]RD

BD[7..0]

CS

RD

INTR

BD[7..0]

CS

D[7..0]

IBF

STB

Il sensore deve contenere una semplice rete logica ingrado di gestire il protocollo di handshake

Page 10: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Segnali del protocollo �handshake�: OUTPUT

OUTPUT Unità Esterna(UE)

Output

1. Il segnale INT_O asserito comunica alla CPU che laporta può accettare un nuovo dato

2. In risposto alla richiesta di interrupt la CPUscrive, quando possibile*, il dato sul buffer dellaporta

1. L � interfaccia segnala a UE che è disponibile unnuovo dato attivando OBF (Output Buffer Full)

2. Quando possibile*, UE legge il dato scritto dallaCPU asserendo ACK (acknowledge)

WRINT_O

BD[7..0]

D_OUT[7..0]

ACK

OBF

CS

WR

INTR

BD[7..0]

CS

D[7..0]

ACK

OBF

Page 11: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

WR

OBF

INT_O

ACK

Handshake (OUTPUT): forme d’onda

NOTA: questo WR deve essere “diretto”, dal processore, alla porta in OUTPUT

OUTPUTINT_O EXT

UNITACK

OBF

D_OUT[7..0]WR

BD[7..0]

CS

WR

INTR

BD[7..0]

CS

D[7..0]

OBF

ACK

Page 12: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Un esempio di unità esterna in output potrebbe essererappresentata da una stampante che imprime sulla cartauna carattere alla volta.

La CPU, fornisce* i dati alla stampante attraverso laperiferica di output quando il segnale INT_O è asserito(questo implica che OBF sia 0)

La stampante legge il dato solo quando il segnale OBF èasserito (i.e., quando la porta in output comunica allastampante che un nuovo dato è stato scritto dalla CPUnel buffer ed è quindi disponibile)

OUTPUTINT_O

ACK

OBF

D_OUT[7..0]WR

BD[7..0]

CS

WR

INTR

BD[7..0]

CS

D[7..0]

OBF

ACK

La stampante deve contenere una semplice rete logica ingrado di gestire il protocollo di handshake

Page 13: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Progettare una rete logica basata su FFD in grado di gestirele comunicazioni con due dispositivi esterni – uno in inputmappato a CS+0 e uno in output mappato a CS+1 – utilizzando ilprotocollo di handshake

Esercizio

ParallelI/O

BD[7..0]

RDINT_I

CS

A0

WRINT_0 D_OUT[7..0]

OBFACK

D_IN[7..0]

STBIBF

A_RESET

RDINT_I

CS

BA2

WRINT_0

D_OUT[7..0]

OBFACK

D_IN[7..0]

STBIBF

RESET

BD[7..0]

Page 14: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Progetto dell�interfaccia

L’interfaccia parallela è dotata di due porte, ciascunain grado di traferire dati a 8 bit:

• Porta in INPUT mappata all’indirizzo CS + 0

• Porta in OUTPUT mappata all’indirizzo CS + 1

Al fine di risolvere il problema, risulta utile pensarela porta di I/O come composta da due porteindipendenti: una porta in input e una porta in output

Inoltre, nella soluzione si desidera evitare clockgating

Il punto di partenza sono le forme d’onda delprotocollo di handhsake, mostrate nelle pagineprecedenti

Page 15: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

STB

IBF

INT_I

RD

Handshake (INPUT)

NOTA: questo RD deve essere “diretto”, dal processore, alla porta in INPUT

INPUTINT_I EXT

UNITSTB

IBF

D_IN[7..0]RD

BD[7..0]

CS

RD

INTR

BD[7..0]

CS

D[7..0]

IBF

STB

Page 16: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

STB

IBF

INT_I

RD

Handshake (INPUT)

NOTA: questo RD deve essere “diretto”, dal processore, alla porta in INPUT

0 1 2 3 0

INPUTINT_I EXT

UNITSTB

IBF

D_IN[7..0]RD

BD[7..0]

CS

RD

INTR

BD[7..0]

CS

D[7..0]

IBF

STB

Page 17: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

STB

IBF

INT_I

RD

U0U1U2U3

00 0 0

10 0 0

11 0 0

11 1 0

11 1 1

01 1 1

00 1 1

00 0 1

00 0 0

10 0 0

11 0 0

11 1 0

11 1 1

Handshake (INPUT): soluzione senza clock gating

0 1 3 7 15 14 12 8 0 1 3 7 15

1o trasferimento 2o trasferimento 3o trasferimento

Osservando le forme d�onda, è possibile individuare unasoluzione senza clock gating

Due trasferimenti, un ciclo completo

Page 18: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Il segnale DEC(x) identificala configurazione binariaU3U2U1U0 equivalente a x inbase 10. Pertanto, i segnaliIBF e INT_I risultano:

IBF = (DEC(1)+DEC(3)+DEC(7))+(DEC(14)+DEC(12)+DEC(8))

INT_I = DEC(3) + DEC(12)

Oppure,

IBF = U0 XOR U3

INT_I = U1 XOR U2

CS è il chip-select dellaperiferica in input

FFDD Q0

A_RESQ0*

RESET

STB

U0

FFDD Q1

A_RESQ1*

RESET

STB*

U1

FFDD Q3

A_RESQ3*

RESETRD*

U3Q3*

Q31

0

CS·A0*

FFDD Q2

A_RESQ2*

RESETRD

U2Q2*

Q21

0

CS·A0*

Page 19: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

373 D[7..0]

Q[7..0]

OE

C

CS·RD·A0*

D_IN[7..0]BD[7..0]

STB

Handshake (INPUT): buffer di ingresso con 373

Ipotizzando di mappare la porta in INPUT all’indirizzoCS + 0 e di voler utilizzare dei latch 373 come buffer.

Ovviamente sarebbe possibile una soluzione del tuttoequivalente con 374 come mostrato nella paginasuccessiva

Page 20: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

374 D[7..0]

Q[7..0]

OE

CS·RD·A0*

D_IN[7..0]BD[7..0]

STB*

Handshake (INPUT): buffer di ingresso con 374

Ipotizzando di mappare la porta in INPUT all’indirizzoCS + 0 e di voler utilizzare dei FFD 374 come buffer

Page 21: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Esercizio: progetto della porta in output

Progettare la periferica per gestire i trasferimenti inOutput mediante handshake a partire dalle forme d�ondamostrate nelle slide successive.

OUTPUTINT_O EXT

UNITACK

OBF

D_OUT[7..0]WR

BD[7..0]

CS

WR

INTR

BD[7..0]

CS

D[7..0]

OBF

ACK

Page 22: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

WR

OBF

INT_O

ACK

Handshake (OUTPUT)

NOTA: questo WR deve essere “diretto”, dal processore, alla porta in OUTPUT

0 1 2 3 0

OUTPUTINT_O EXT

UNITACK

OBF

D_OUT[7..0]WR

BD[7..0]

CS

WR

INTR

BD[7..0]

CS

D[7..0]

OBF

ACK

Page 23: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Registri di stato e programmazione

Sarebbe utile aggiungere alla periferica che gestisceinput e output con protocollo di handshake i seguentiregistri:

• Registro di stato (lettura segnali di stato pergestione a polling) indirizzo A1A0 = 10

• Registro di programmazione (enable/disable singolainterfaccia, etc) indirizzo A1A0 = 11

Ovviamente, serve un ulteriore bit (A1) per indirizzaregli ulteriori due registri

EsercizioCome si potrebbe modificare il progetto della porta diI/O con handshake per aggiungere queste nuovefunzionalità?

Page 24: Calcolatori Elettronici T Ingegneria Informaticavision.deis.unibo.it/~smatt/DIDATTICA/Calcolatori_Elettronici_T/PDF/05... · Segnali del protocollo handshake : INPUT1.SeIBF=0,quandopossibile*UEpuòscrivereildato

Progettare un sistema basato sul microprocessore DLX,con 1 GB di EPROM agli indirizzi bassi e 2 GB di RAMagli indirizzi alti. Nel sistema è presente una porta ininput, già progettata e denominata INPUT_PORT, e unpulsante denominato P. Il byte (unsigned) letto daINPUT_PORT deve essere memorizzato all’indirizzoFFFF0020h mentre il registro R20 deve essereincrementato di uno, via software, a ogni pressione di Pe inizializzato a 0 all’avvio del sistema. Inoltre, siassuma che:

1) Il pulsante P abbia priorità maggiore di INPUT_PORT2) Il pulsante P non possa essere premuto prima che sia

terminata la gestione di P da parte dell’interrupthandler. A tal fine segnalare, con un LED, quando ilpulsante non deve essere premuto

3) I registri da R25 a R30 possono essere utilizzatisenza la necessità di essere ripristinati

4) Il registro R20 sia modificabile solo dall’handlerche gestisce il pulsante

Esercizio