CALCOLATORI ELETTRONICI - PowerPoint PPT Presentation

About This Presentation
Title:

CALCOLATORI ELETTRONICI

Description:

Title: Gestione delle subroutine Author: OPNET WARRIORS Last modified by: Roberto Palmieri Created Date: 1/1/1601 12:00:00 AM Document presentation format – PowerPoint PPT presentation

Number of Views:84
Avg rating:3.0/5.0
Slides: 21
Provided by: OPNE1
Category:

less

Transcript and Presenter's Notes

Title: CALCOLATORI ELETTRONICI


1
CALCOLATORI ELETTRONICI
  • BUS I/O PD32
  • POLLING / BUSY WAITING
  • PROGETTAZIONE INTERFACCE INPUT / OUTPUT

2
I/OBus PD32
I/O Address bus fatto da 8 bit Quante periferiche
possiamo collegare al massimo?????
3
Istruzioni I/O PD32 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.
4
Formato istruzioni I/O
  • Per loperando 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 gt indica che il contenuto di k è lindirizzo
    del device
  • 10 gt indica che lindirizzo 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.

CLASSE
TIPO
k
I/O
s
-----
-----
MODO
DEST
111
31 29 28 24 23 16 15
14 13 12 11 9 8 6 5
3 2 0
5
Interazione con le periferiche
  • Esistono due tipologie di interazione con le
    periferiche
  • Sincrona
  • Asincrona
  • In questa parte faremo focus sullinterazione
    sincrona, successivamente verrà analizzata anche
    quella asincrona.

6
Interazione Sincrona
  • Come tutte le comuni interazioni sincrone, il
    software si preoccupa di testare direttamente lo
    stato della periferica. Larchitettura deve
    quindi dare la possibilità al processore di poter
    sapere in ogni istante la situazione attuale
    della periferica. Le tecniche più usare di
    interazione sincrona sono
  • Busy Waiting
  • Polling

sei pronta??
si /no
periferica 1
pd32
7
Busy Waiting
Idea che sta dietro allimplementazione del busy
waiting Loop Salta a Loop se la periferica
non è pronta Si rimane in attesa attiva che la
periferica abbia terminato. La CPU è impegnata al
100 in questo controllo.
8
Busy Waiting / Implementazione
Implementazone del busy waiting in assembly
pd32 Aspetta JNR Device, Aspetta Listruzion
e JNR (Jump Not Ready) salta alletichetta
Aspetta se Device non è pronto, altrimenti se
Device è Ready passiamo alle istruzioni
successive.
9
verifica circolare se ogni DEVICE è pronto ad
interagire
Polling
I/O AB
PD32
I/O DB
I/O CB
DEV 1
DEV 2
DEV 3
DEV 4
10
Polling / Implementazione
Implementazone del polling in assembly
pd32 POLL1 JR D1, Op_Dev_1 POLL2 JR D2,
Op_Dev_2 POLL3 JR D3, Op_Dev_3 JMP
POLL1 Ciclicamente il software interroga le
periferiche per sapere se qualcuna è pronta ad
interagire. Altrimenti va avanti fino a che non
arriva alla fine delle periferiche da controllare
e con una jmp non condizionata torna sulla prima
da controllare.
11
Progettazione Periferiche
Progettiamo la nostra interfaccia hardware con lo
scopo di fornire i componenti e le
interconnessioni di supporto alla semantica
della periferica (ovvero cosa deve fare la
periferica).
  1. Si deve poter leggere e/o scrivere sulla
    periferica
  2. Si deve poter selezionare la periferica tra tutte
    quelle collegate al bus
  3. Si deve poter interrogare la periferica per
    sapere se ha completato il suo lavoro
  4. Si deve poter avviare la periferica

12
Classico protocollo alto livello
In maniera molto astratta si dovranno eseguire
almeno queste operazioni per interagire con le
periferiche
  1. Aspettare che la periferica sia disponibile
  2. Avviare la periferica
  3. Scrivere / Leggere i dati dinteresse

13
Interfaccia di Input
I/O programmato PROTOCOLLO DI HANDSHAKING
IMPLEMENTATO A SOFTWARE
I/O AB
PD32
I/O DB
I/O CB
I/O RD
START
WAIT
READY
0
STARTD
O.C.
SELECT
R Q
REG
STATUS
S Q
STARTDEV
COMPLETE
SCA
SCO
14
Interfaccia di Input / Impl
  1. Aspettare finché la periferica DeviceIn non è
    disponibile
  2. Avvio la periferica così che possa produrre
    informazioni
  3. Aspetto la sua terminazione
  4. Leggo il risultati acquisiti

Aspetta1 JNR DeviceIN, Aspetta1 START
DeviceIN Aspetta2 JNR DeviceIN,
Aspetta2 INB DeviceIN, R0
Cosa implementa?? Busy Waiting / Polling??
15
Interfaccia di Output
I/O programmato PROTOCOLLO DI HANDSHAKING
IMPLEMENTATO A SOFTWARE
I/O AB
PD32
I/O DB
I/O CB
START
READY
STARTD
DEC
O.C.
SELECT
R Q
REG
STATUS
S Q
STARTDEV
COMPLETE
SCA
SCO
16
Interfaccia di Output / Impl
  1. Aspettare finché la periferica DeviceOut non è
    disponibile
  2. Scrivi il dato sul registro di interfaccia
  3. Avverto la periferica che può considerare un
    nuovo dato.
  4. Aspetto la sua terminazione

Aspetta1 JNR DeviceOUT, Aspetta 1 OUT R0,
DeviceOUT START DeviceOUT Aspetta2 JNR
DeviceOUT, Aspetta2
Cosa implementa?? Busy Waiting / Polling??
17
Esercizio Busy Waiting
Dato questo frammento di codice implementante il
codice di una funzione chiamante, definire la
subroutine IN_AD1 che legge 100 dati dalla
periferica di input con indirizzo AD1 e li
memorizza in un vettore a partire dallindirizzo
1280. Si noti che i dati sono già nei registi
R0 ed R1
MOVL 100, R0 numero di dati da
acquisire MOVL 1200, R1 ind.dellarea di
memoria JSR IN_AD1
18
Soluzione Busy Waiting
MOVL 100, R0 numero di dati da
acquisire MOVL DATI, R1 ind.dellarea di
memoria JSR IN_AD1 IN_AD1 PUSH R0 salv.
registri usati PUSH R1 PUSH R2 IN_1 JNR AD1,
IN_1 attende che AD1 sia pronto IN_2 START
AD1 avvia lacquisizione di un dato IN_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
memoria SUBL 1, R0 decremento del
contatore JNZ IN_2 acquisizione di un altro
dato se non si è azzerato il contatore POP
R2 ripristino dei registri usati POP
R1 POP R0 RET ritorno al programma
chiamante
19
Esercizio Polling
Dato questo frammento di codice implementante il
codice di una funzione chiamante, definire la
subroutine IN_AD1 che legge 100 dati da quattro
periferiche di input con indirizzo AD1, AD2, AD3,
AD4 e li memorizza in un vettore a partire
dallindirizzo 1280. I 100 dati possono essere
letti non necessariamente rispettando lordine
delle periferiche, ovvero 25 da AD1, 25 da
AD2. Si noti che i dati sono già nei registi
R0 ed R1
MOVL 100, R0 numero di dati da
acquisire MOVL 1200, R1 ind.dellarea di
memoria JSR IN_AD1
20
Soluzione Polling
IN_AD1 PUSH R0 salv. registri usati PUSH
R1 PUSH R2 POLL1 JR AD1, IN_1 attende che AD1
sia pronto POLL2 JR AD2, IN_2 POLL3 JR AD3,
IN_3 POLL4 JR AD4, IN_4 JMP POLL1 IN_i START
ADi avvia lacquisizione di un dato WAIT JNR
ADi, WAIT attende che il dato sia stato
prodotto INW ADi, R2 prelievo del dato
e. MOVW R2, (R1) suo trasferimento in
memoria SUBL 1, R0 decremento del
contatore JZ EXIT JMP POLL_i1 continua a
interrogare le altre periferiche EXIT POP R2
ripristino dei registri usati POP R1 POP
R0 RET ritorno al programma chiamante
Write a Comment
User Comments (0)
About PowerShow.com