Testo di rif.to: [Congiu] – 4.4.1 (pg. 148–158)
Uso dei metodi di indirizzamento 02.e
Un esempio: acquisizione dati Esempi d’impiego Confronto tra i metodi Analisi temporale
Sistema di acquisizione dati
1
5 dispositivi A/D (convertitori analogico/digitale) siano collegati ad un calcolatore come indicato in figura:
Architettura degli Elaboratori
35
© 2010
Sistema di acquisizione dati - esempio
2
Le conversioni A/D sono sincronizzate da un clock c(t). Ciascun fronte di salita di c(t) avvia, in parallelo, le conversioni su tutti 5 i dispositivi: i 5 campioni (valori digitali prodotti nei registri Rui) si riferiscono quindi al medesimo istante.
35
L’elaboratore deve acquisire i 5 campioni e ricopiarli in memoria, prima che i valori contenuti nei Rui vengano sovrascritti dai nuovi campioni prodotti dal successivo fronte di salita del clock (specifica real-time). Si debbano acquisire 100 set di dati dai 5 convertitori A/D
Architettura degli Elaboratori
Conversione A/D ● registro Ru da 16 bit: 64 K valori digitali possibili, ● l’errore (assoluto) di discretizzazione massimo è: es = (SiMAX - SiMIN)/64K
© 2010
3
35
Errore di discretizzazione nella conversione A/D:
Architettura degli Elaboratori
© 2010
Sincronizzazione delle conversioni
4
Le conversioni vengono avviate dal primo fronte di salita del clock successivo al comando START. Il tempo necessario al convertitore A/D per produrre il valore digitale in Ru è tc (tempo di conversione). Rispetto allo START, il dato convertito è pronto con un ritardo minimo pari a tc e massimo pari a tc+T (T = periodo del clock).
35
Diagramma temporale delle operazioni di conversione
Architettura degli Elaboratori
© 2010
Organizzazione dei dati in memoria
5
Organizzazione della struttura di dati nella memoria centrale: ● a ciascun convertitore sia associata un’area (a partire dagli indirizzi TAB1, TAB2, …) destinata a contenere i dati acquisiti; ● vi sia anche una tabella di puntatori, situata all’indirizzo IND, ciascuno dei quali individua il primo elemento dell’area corrispondente destinata a contenere i dati.
Architettura degli Elaboratori
35
© 2010
Programmazione dell’esempio
6
Conviene scrivere prima il codice che acquisisce i 100 campioni da un convertitore (ad es. AD4).
35
Vengono ora presentate diverse soluzioni, con diversi modi di indirizzamento (allo scopo di esemplificarne l’uso e di consentire qualche raffronto). Si affronterà poi il problema di codificare la soluzione completa, che acquisisce 100 set di 5 campioni simultanei dai 5 convertitori, rispettando le specifiche di tempo reale. Architettura degli Elaboratori
© 2010
1a soluzione
7
Si supponga di usare una macchina (più semplice del PD32) ● ad un indirizzo (con registro accumulatore), dotata dei soli metodi di indirizzamento:
35
▪ immediato, ▪ assoluto (diretto e indiretto);
● in grado di eseguire almeno le seguenti istruzioni: m - aritmetiche: ADD SUB m - di trasferimento: LOAD(W) m STORE(W) m - di controllo: JNZ m - di I/O: INW disp START disp JNR disp, m Architettura degli Elaboratori
© 2010
Codifica della 1a soluzione
8
PT: CT:
.DSL 1 ; puntatore .DSL 1 ; contatore . . . LOAD IND+12 ; valore iniziale del … STORE PT ; … puntatore LOAD #100 ; valore iniziale del … STORE CT ; … contatore LOOP: JNR AD4, LOOP ; protocollo di input per la … LOOP1: START AD4 ; … acquisizione … WAIT: JNR AD4, WAIT ; … del … INW AD4 ; … dato STOREW @PT ; memorizzazione del dato LOAD PT ; incremento … ADD #2 ; … del … STORE PT ; puntatore LOAD CT ; aggiornamento … SUB #1 ; … del … STORE CT ; … contatore JNZ LOOP1 ; iterazione se L[CT] è diverso da zero Architettura degli Elaboratori
35
© 2010
2a soluzione
9
Si supponga di usare una macchina: - con più registri e quindi con la possibilità di usare anche i metodi di indirizzamento con registro;
35
- i metodi di indirizzamento disponibili siano: ● immediato, ● assoluto (diretto), ● diretto di registro, ● indiretto con registro. Questa macchina potrebbe essere il PD32.
Architettura degli Elaboratori
© 2010
Codifica della 2a soluzione . . . MOVL MOVB LOOP: JNR LOOP1: START WAIT: JNR INW ADDL SUBB JNZ . . .
IND+12, R1 #100, R0 AD4, LOOP AD4 AD4, WAIT AD4, (R1) #2, R1 #1, R0 LOOP1
; ; ; ; ; ; ; ; ;
10
35
valore iniziale del puntatore valore iniziale del contatore protocollo di input per la … … acquisizione … … del … … dato incremento del puntatore aggiornamento del contatore iterazione se R0 ≠ 0
Architettura degli Elaboratori
© 2010
3a soluzione
11
Si voglia usare anche l’indirizzamento con registro indice;
35
- i metodi di indirizzamento disponibili siano: ● immediato, ● assoluto (diretto), ● diretto di registro, ● indiretto con registro, ● con registro indice. Questa macchina potrebbe essere il PD32. Architettura degli Elaboratori
© 2010
Codifica della 3a soluzione MOVL MOVB LOOP: JNR LOOP1: START WAIT: JNR INW ADDL SUBB JNZ . . .
#0, R1 ; #100, R0 ; AD4, LOOP ; AD4 ; AD4, WAIT ; AD4, TAB4(R1) ; #2,R1 ; #1,R0 ; LOOP1 ;
12
valore iniziale dell’offset valore iniziale del contatore 35 protocollo di input per la … … acquisizione … … del … … dato incremento dell’offset aggiornamento del contatore iterazione se R0 ≠ 0
Specificando gli indirizzi base TAB1, TAB2, …, nell’istruzione che memorizza il dato acquisito, con lo stesso valore in R1 si potrà collocare il set di 5 campioni in posizioni di pari indice nelle 5 tabelle. Questo sarà il metodo usato nella soluzione completa. Architettura degli Elaboratori
4a soluzione Si voglia usare l’indirizzamento con registro indice indiretto (pre-indexed); - i metodi di indirizzamento disponibili siano: ● immediato, ● assoluto (diretto), ● diretto di registro, ● indiretto con registro, ● con registro indice, ● con registro indice indiretto (pre-indexed). Questa macchina non è il PD32 (potrebbe essere il PD132). Architettura degli Elaboratori
© 2010
13
35
© 2010
Codifica della 4a soluzione . . . MOVL MOVB LOOP: JNR LOOP1: START WAIT: JNR INW ADDL
SUBB JNZ . . .
#12, R1 ; #100, R0 ; AD4, LOOP ; AD4 AD4, WAIT AD4, @IND(R1) #2, IND(R1) ; ; ; ; #1, R0 ; LOOP1 ;
Architettura degli Elaboratori
14
valore nel registro indice valore iniziale del contatore protocollo di input per la … ; … acquisizione … ; … del … ; … dato incremento del puntatore in memoria (PD132!) attenzione: così si altera il contenuto della tabella IND aggiornamento del contatore iterazione se R0 ≠ 0
© 2010
5a soluzione
15
Si voglia usare il registro indice indiretto nella forma post-indexed; - i metodi di indirizzamento disponibili siano: ● immediato, ● assoluto (diretto), ● diretto di registro, ● indiretto con registro, ● con registro indice, ● con registro indice indiretto (post-indexed). Questa macchina non è il PD32 (potrebbe essere il PD132). Architettura degli Elaboratori
35
35
© 2010
Codifica della 5a soluzione
16
. . . PT: .DSL 1 ; puntatore (a TAB4) . . . MOVL #12, R1 ; valore iniziale del … MOVL IND(R1), PT ; … puntatore MOVB #100, R0 ; valore iniziale del contatore MOVL #0, R1 ; valore iniziale del registro indice LOOP: JNR AD4, LOOP ; protocollo di input per … LOOP1: START AD4 ; … la acquisizione … WAIT: JNR AD4, WAIT ; … del … INW AD4, [@PT](R1) ; … dato ADDL #2, R1 ; incremento del registro indice SUBB #1, R0 ; aggiornamento del contatore JNZ LOOP1 ; iterazione se R0 ≠ 0 . . . Architettura degli Elaboratori
© 2010
6a soluzione
17
Con l’indirizzamento auto-incrementante si ottiene la soluzione più efficiente (minor numero di istruzioni!); - i metodi di indirizzamento disponibili siano: ● immediato, ● assoluto (diretto), ● diretto di registro, ● indiretto con registro, ● post-incrementante e pre-decrementante ● con registro indice, Questa macchina è il PD32.
Architettura degli Elaboratori
35
35
© 2010
Codifica della 6a soluzione . . . MOVL MOVB LOOP: JNR LOOP1: START WAIT: JNR INW SUBB JNZ . . .
IND+12, R1 #100, R0 AD4, LOOP AD4 AD4, WAIT AD4, (R1)+ #1, R0 LOOP1
; ; ; ; ; ; ; ;
18
valore iniziale del puntatore valore iniziale del contatore protocollo di input per la … … acquisizione … … del dato … … + incremento del puntatore aggiornamento del contatore iterazione se R0 ≠ 0
© 2010
Architettura degli Elaboratori
Soluzioni esaminate - 1
19
Se non è disponibile un indirizzamento tramite registro, bisogna ricorrere ad una locazione di memoria che svolga le funzioni di puntatore. Così si è fatto nella prima soluzione (puntatore PT): STOREW @PT LOAD PT ADD #2 STORE PT memoria puntatore
Architettura degli Elaboratori
35
; ; ; ;
35
memorizzazione del dato incremento …del …puntatore dato dato successivo © 2010
Soluzioni esaminate - 2
20
L’efficienza aumenta se è possibile sfruttare l’indirizzamento con registro:
35
Così si è fatto nella seconda soluzione (registro R1): INW AD4, (R1)
; memorizzazione del dato
ADDL #2, R1
; incremento del puntatore
registro puntatore
dato dato successivo
© 2010
Architettura degli Elaboratori
Soluzioni esaminate - 3
21
Se si usa il metodo di indirizzamento con registro indice, l’indirizzo di ciascun elemento si ottiene come somma di un indirizzo base X e di un offset, fornito da un registro indice RI. Per individuare elementi diversi si può modificare RI oppure X.
35
L’accesso agli elementi consecutivi di una lista di dati si ottiene incrementando RI, come fatto nel terzo dei metodi presentati (registro indice R1): INW AD4, TAB4(R1) ADDL #2, R1
; memorizzazione del dato ; incremento del puntatore
Con un diverso valore di X (ad es. TAB5 invece di TAB4) si accede all’elemento di uguale indice in un’altra tabella. Architettura degli Elaboratori
© 2010
Schematizzazione del terzo metodo
22
35
istruzione ind. base
dato + registro
dato successivo
offset
© 2010
Architettura degli Elaboratori
Soluzioni esaminate - 3
23
Diversi valori di X, inseriti in istruzioni diverse, consentono di accedere a elementi corrispondenti di liste diverse, come si è fatto nell’esempio della somma di due array: MOVW ADDW MOVW ADDW
Architettura degli Elaboratori
35
300(R1), R0 500(R1), R0 R0, 100(R1) #2, R1
© 2010
Soluzioni esaminate - 4 Con l’indirizzamento indiretto e l’uso di un registro indice nella forma pre-indexed gli elementi della struttura di dati sono individuati da un puntatore che si trova all’indirizzo RI + X.
24
35
Per scandire gli elementi consecutivi si incrementa tale puntatore, come si è fatto nel quarto metodo presentato INW AD4, @IND(R1) ; memorizzazione del dato ADDL #2, IND(R1) ; incremento del puntatore ; in memoria (PD132!) istruzione ind. base registro
puntatore +
dato
ind. base
offset
dato successivo © 2010
Architettura degli Elaboratori
Soluzioni esaminate - 5
25
Con l’indirizzamento indiretto e l’uso di un registro indice nella forma post-indexed, l’indirizzo di ciascun elemento è fornito dalla somma dell’indirizzo base (puntatore situato 35 all’indirizzo X) e dell’offset (contenuto nel registro RI). Gli elementi successivi possono essere individuati incrementando RI, come si è fatto nel quinto dei metodi presentati (registro indice R1): INW AD4, [@PT](R1) ADDL #2, R1
; memorizzazione del dato ; incremento del reg. indice
In alternativa, sarebbe stato possibile incrementare il puntatore base (situato all’indirizzo PT): INW AD4, [@PT](R1) ADDL #2, PT Architettura degli Elaboratori
; memorizzazione del dato ; incremento del puntatore © 2010
Schematizzazione del quinto metodo istruzione indir. punt.
26
35
memoria puntatore + registro
dato dato successivo
offset
© 2010
Architettura degli Elaboratori
Soluzioni esaminate - 6
27
I metodi di indirizzamento con registro (diretto, indiretto, auto-incrementante e auto-decrementante) sono, per questo tipo di problemi, i più efficienti. La possibilità di auto-aggiornamento consente di risparmiare istruzioni, come appare dal sesto dei metodi presentati: INW AD4, (R1)+ ; memorizzazione del dato ; + incremento del puntatore registro puntatore
Architettura degli Elaboratori
35
dato dato successivo
© 2010
Soluzione completa Si tratta ora di codificare la soluzione completa, che acquisisce 100 set di 5 campioni simultanei dai 5 convertitori, rispettando le specifiche di tempo reale:
28
35
▪per evitare perdita di dati, dopo l’avvio del campionamento (fronte di salita del clock) il calcolatore deve acquisire i 5 campioni e ricopiarli in memoria, prima che i valori contenuti nei Rui vengano sovrascritti dai nuovi campioni prodotti dal successivo fronte di salita del clock: l’esecuzione di tutte le istruzioni che: acquisiscono i 5 dati, li mettono in memoria e comandano l’acquisizione dei successivi 5, deve durare meno del periodo del clock. ▪per garantire la simultaneità dei 5 campioni acquisiti ad ogni “tic” del clock, il calcolatore deve inviare il comando START a tutti 5 i dispositivi, prima del fronte di salita del clock.
Architettura degli Elaboratori
Soluzione completa: avvio
© 2010
29
35
Architettura degli Elaboratori
© 2010
Soluzione completa: ciclo iterativo
30
35
© 2010
Architettura degli Elaboratori
Soluzione completa: diagramma temporale
31
tc MAX= tempo di conversione massimo tL = tempo di esecuzione del ciclo V1: • • • JMP V1 T = periodo del clock che sincronizza il campionamento
35
Per rispettare le specifiche real-time, deve essere: tL < T - tc MAX
Architettura degli Elaboratori
© 2010
Esercizio
32
Con riferimento al sistema di acquisizione di 100 set da 5 campioni dai 5 convertitori A/D, ▪ supponendo che il tempo di conversione tc dei 5 convertitori sia compreso tra 1 µs e 1.2 µs, e ▪ nell’ipotesi che il tempo di esecuzione delle istruzioni del PD32 (comprese le operazioni di fetch) sia di 200 ns se la codifica dell'istruzione occupa un long word, 300 ns se occupa 2 long word, e 400 ns se occupa 3 long word,
35
si calcoli il periodo minimo TMIN del clock che garantisce la contemporaneità dei campioni acquisiti e la non perdita dei dati. Architettura degli Elaboratori
Soluzione dell’esercizio ; istruzioni del ciclo iterativo e relativi tempi d’esecuzione V1: JNR AD1, V1 ; 2L 300ns INW AD1, TAB1(R1) ; 2L 300ns V2: JNR AD2, V2 ; 2L 300ns INW AD2, TAB2(R1) ; 2L 300ns V3: JNR AD3, V3 ; 2L 300ns INW AD3, TAB3(R1) ; 2L 300ns V4: JNR AD4, V4 ; 2L 300ns INW AD4, TAB4(R1) ; 2L 300ns V5: JNR AD5, V5 ; 2L 300ns INW AD5, TAB5(R1) ; 2L 300ns ADDL #2, R1 ; 2L 300ns SUBB #1, R0 ; 2L 300ns JZ FINE ; 2L 300ns START AD1 ; 1L 200ns START AD2 ; 1L 200ns START AD3 ; 1L 200ns START AD4 ; 1L 200ns START AD5 ; 1L 200ns JMP V1 ; 2L 300ns ;---------------------------------5’200ns ; totale tL
Architettura degli Elaboratori
© 2010
33
35
© 2010
Soluzione: considerazioni - 1
34
Prima che sia trascorso un periodo del clock, il processore deve completare l’acquisizione dei 5 campioni e comandare l’acquisizione dei 5 successivi; deve, cioè, completare l’esecuzione di tutte le istruzioni comprese tra V1: … e JMP V1. Va tenuto inoltre presente il fatto che le istruzioni di attesa (Vx: JNR ADx, Vx) sono destinate ad essere eseguite più volte, in attesa che, trascorso il tempo di conversione, il dato sia pronto. Per rispettare le specifiche del problema, va considerato il caso peggiore, che si ha quando il primo dei dispositivi che vengono esaminati (AD1) è il più lento (ha un tempo di conversione pari a tc MAX = 1200ns). Architettura degli Elaboratori
Soluzione: considerazioni - 2
35
© 2010
35
Nelle ipotesi fatte, il primo ciclo di attesa (V1: JNR AD1, V1) viene eseguito tante volte quante sono 35 necessarie a far trascorrere i 1200ns . Il caso più sfortunato è che, trascorso questo tempo, debba ancora iniziare il fetch della istruzione V1: JNR AD1, V1 (la cui esecuzione trova READY = 1 e consente di uscire dal ciclo di attesa). Pertanto la durata di questo primo ciclo di attesa è, nel caso peggiore, 1200+300ns. La durata totale del ciclo V1: … JMP V1 è, nel caso peggiore, 1200ns + 5200ns = 6400ns. Allo stesso risultato si arriva usando la formula tL < T - tc MAX da cui si ottiene: T > tL + tc MAX = 5200ns + 1200ns = 6400ns. In conclusione il periodo minimo del clock è TMIN = 6400ns Architettura degli Elaboratori
© 2010
Fine 02.e
Uso dei modi di indirizzamento