Alcune Istruzioni per la gestione dell’I/O (Classe 7)

13
Alcune Istruzioni per la gestione dell’I/O (Classe 7) TIP O CO DICE O PERANDI C N Z V P I C O M M E N TO 0 INs dev,D 0 ------ Ildato contenuto nel bufferdeldevice dev è trasferito nella destinazione D 0. dev ->d0 1 O U Ts S ,dev ------ Ildato sorgente S viene trasferito nel bufferdeldevice dev. S ->dev 2 S TA R T dev ------ V iene azzerato ilflip- flop S TA TU S deldev e viene avviata l'operazione. 3 JR dev,D 1 ------ S e S TA TU S =1 salta alla destinazione D 1 4 JN R dev,D 1 ------ S e S TA TU S =0 salta alla destinazione D 1 Per la destinazione D0 sono ammessi tutti i tipi di indirizzamento tranne quello immediato. Per la destinazione D1 sono ammessi tutti i tipi di indirizzamento tranne quello con registro e immediato.

description

Alcune Istruzioni per la gestione dell’I/O (Classe 7). Per la destinazione D0 sono ammessi tutti i tipi di indirizzamento tranne quello immediato. Per la destinazione D1 sono ammessi tutti i tipi di indirizzamento tranne quello con registro e immediato. Formato delle istruzioni di I/O. - PowerPoint PPT Presentation

Transcript of Alcune Istruzioni per la gestione dell’I/O (Classe 7)

Page 1: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

Alcune Istruzioni per la gestione dell’I/O (Classe 7)

TIPO CODICE OPERANDI C N Z V P I COMMENTO0 INs dev, D0 - - - - - - Il dato contenuto nel

buffer del device dev è trasferito nella

destinazione D0. dev ->d0

1 OUTs S,dev - - - - - - Il dato sorgente S viene trasferito nel

buffer del device dev.S->dev

2 START dev - - - - - - Viene azzerato il flip-flop STATUS del dev e

viene avviata l'operazione.

3 JR dev, D1 - - - - - - Se STATUS=1 salta alla destinazione D1

4 JNR dev, D1 - - - - - - Se STATUS=0 salta alla destinazione D1

Per la destinazione D0 sono ammessi tutti i tipi di indirizzamento tranne quello immediato.Per la destinazione D1 sono ammessi tutti i tipi di indirizzamento tranne quello con registro e immediato.

Page 2: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

Formato delle istruzioni di I/O

TIPO k I/O s ----- ----- MODO DEST

CLASSE

31 29 28 24 23 16 15 14 13 12 11 9 8 6 5 3 2 0

Per l’operando dev sono ammessi solo due modi di indirizzamento: diretto con registro ed assoluto. Per la codifica di questo campo sono usati i campi I/O e k.

Il campo I/O può assumere solo due valori:• 01 => indica che il contenuto di k è l’indirizzo del device• 10 => indica che l’indirizzo del device è contenuto nel registro generale specificato dai primi 3 bit del campo k

Poichè i campi modo sorgente e sorgente sono inutilizzati, la sorgente S viene specificata nei campi modo destinazione e destinazione.

111

Page 3: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

I/O ABI/O DBI/O CB

SELECTREG

I/O RD START

STARTD O.C.

READY

SCOSCA

R Q

S Q

STATUS

PD32

I/O programmato – INTERFACCIA di INPUTPROTOCOLLO DI HANDSHAKING IMPLEMENTATO A SOFTWARE

STARTDEVCOMPLETE

“0”

WAIT

Page 4: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

Programma assembler (input)

Aspetta1: JNR DeviceIN, Aspetta1

START DeviceIN

Aspetta2: JNR DeviceIN, Aspetta2

INB DeviceIN, R0

Page 5: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

I/O ABI/O DBI/O CB

DEC

SELECT

REG

STARTI/O WR

STARTD O.C.

READY

SCOSCA

R Q

S Q

STATUS

PD32

STARTDEVCOMPLETE

I/O programmato- INTERFACCIA di OUTPUTPROTOCOLLO DI HANDSHAKING IMPLEMENTATO A SOFTWARE

Page 6: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

Programma assembler (output)

Aspetta1: JNR DeviceOUT, Aspetta 1

OUT R0, DeviceOUT

START DeviceOUT

Aspetta2: JNR DeviceOUT, Aspetta2

Page 7: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

I/O programmatoMODALITA’ BUSY WAITING

…MOVL #100, R0 ; numero di dati da acquisireMOVL #DATI, R1 ; ind.dell’area di memoriaJSR IN_AD1…IN_AD1: PUSH R0; salv. registri usati

PUSH R1PUSH R2

IN_1: JNR AD1, IN_1 ; attende che AD1 sia prontoIN_2: START AD1 ;avvia l’acquisizione di un datoIN_3: JNR AD1, IN_3 ; attende che il dato sia stato prodotto

INW AD1, R2 ; prelievo del dato e….MOVW R2, (R1)+ ; … suo trasferimento in memoriaSUBL #1, R0 ; decremento del contatoreJNZ IN_2 ; acquisizione di un altro dato se non si è azzerato

; il contatorePOP R2 ; ripristino dei registri usatiPOP R1 ;POP R0 ;RET ; ritorno al programma chiamante

Page 8: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

Polling(verifica circolare se ogni DEVICE è pronto ad interagire)

I/O ABI/O DBI/O CB

PD32

DEV 1 DEV 2 DEV 3 DEV 4

Page 9: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

Polling(acquisisce 100 dati da 4 dispositivi)

…MOVL #100, R0 ; numero di dati da acquisireMOVL #DATI, R1 ; ind.dell’area di memoriaJSR IN_AD1…IN_AD1: PUSH R0 ; salv. registri usati

PUSH R1PUSH R2

POLL1: JR AD1, IN_1 ; attende che AD1 sia prontoPOLL2: JR AD2, IN_2POLL3: JR AD3, IN_3POLL4: JR AD4, IN_4

JMP POLL1…IN_i: START ADi ; avvia l’acquisizione di un datoWAIT: JNR ADi, WAIT ; attende che il dato sia stato prodotto

INW ADi, R2 ; prelievo del dato e….MOVW R2, (R1)+ ; … suo trasferimento in memoriaSUBL #1, R0 ; decremento del contatoreJZ EXITJMP POLL_i+1 ; continua a interrogare le altre periferiche

EXIT: POP R2 ; ripristino dei registri usatiPOP R1 ;POP R0 ;RET ; ritorno al programma chiamante

Page 10: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

Esercizio

Una stanza e’ monitorata da 4 sensori di temperatura, i quali sono pilotati da un PD32. Quest’ultimo controlla costantemente che il valor medio della temperatura rilevata nella stanza sia compreso tra i valori [Tmin-Tmax]. Nel caso in cui il valor medio della temperatura non cada in tale intervallo, il microprocessore inviera’ un segnale di allarme su un’apposita periferica, detta ALARM. Il segnale d’allarme utilizzato e’ il valore 1 codificato con 8 bit. Se la temperatura ritorna all’interno dell’intervallo [Tmin-Tmax], la CPU invia sulla periferica ALARM il valore 0.

I sensori ritornano la temperatura misurata come un numero intero ad 8 bit, usando i decimi di gradi Celsius come unita’ di misura.

Scrivere il codice assembly per il controllo dei sensori di temperatura e della periferica di allarme.

Page 11: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

Macchina a stati finiti

T_media in[Tmin-Tmax]

T_media fuori da[Tmin-Tmax]

newTemp,T_media NON in [Tmin-Tmax] /Alarm_ON

Legenda per le transizioni:

Input, Condizione / Output

newTemp,T_media in [Tmin-Tmax] /Alarm_OFF

newTemp,T_media NON in [Tmin-Tmax]/

-

newTemp,T_media in [Tmin-Tmax] /

-

Page 12: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

Diagramma di flussoT_media=Ts1=Ts2=Ts3=Ts4=

= (Tmin+Tmax)/2Stato=IN_RANGE

dev iready?

controlla dev.succ

Polling

NO

SI

Ricalcola media: T_media=T_media+(new_T_si-old_T_si)/4

T_mediain_range?

SIStato =IN

SI

Stato =OUT

SI

OUTPUT:ALARM OFF

NO

OUTPUT:ALARM ON

Input da dev_i: new_T_si

NO

Stato=IN Stato=OUT

NO

Page 13: Alcune Istruzioni per la gestione dell’I/O (Classe 7)

Il codice

VEDI FILE POLLING.ASM SUL SITO…http://www.dis.uniroma1.it/~ciciani/DIDATTICA/CALCOLATORI-II/polling.asm