Uso dei metodi di indirizzamento



Похожие документы
Metodi di indirizzamento

Architettura del Calcolatore

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

Architettura di una CPU

Architettura hardware

Architettura del calcolatore (Seconda parte)

Esercitazione di Calcolatori Elettronici Prof. Fabio Roli. Corso di Laurea in Ingegneria Elettronica. Esercitazione 3 (Capitolo 4) Set di istruzioni

Richiami sull architettura del processore MIPS a 32 bit

Elaborazione dell informazione

Corso di Laurea in Informatica Architetture degli Elaboratori

Il processore minimo MU0. S. Salvatori - Microelettronica marzo 2019 (50)

Struttura di un elaboratore

Informatica Teorica. Macchine a registri

Calcolatori Elettronici II parte (CdL Ingegneria Informatica) Esame del 22 settembre 2011 tempo a disposizione: 1 ora e 30 minuti

Architettura di un calcolatore: Introduzione parte 2

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

Richiami sull architettura del processore MIPS a 32 bit

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

PD32. Interfacciamento con i dispositivi di I/O (V)

A.A. 2018/2019. CPU e Linguaggio Macchina FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Processore Danilo Dessì. Architettura degli Elaboratori.

La macchina di Von Neumann

Linguaggi, compilatori e interpreti

Architettura del Calcolatore

Mari, Buonanno, Sciuto Informatica e cultura dell informazione McGraw-Hill 3/2/2010

Esercizio I-DLX. Calcolatori Elettronici L-A

L insieme delle istruzioni (6)

L'architettura del processore MIPS

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

ARM: stack e subroutine

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A.

Un esempio di ciclo macchina

Elementi di informatica

Laboratorio di Architettura degli Elaboratori

Транскрипт:

Testo di rif.to: [Congiu] 4.4.1 (pg. 148 158) 02.e Uso dei metodi di indirizzamento Un esempio: acquisizione dati Esempi d impiegod Confronto tra i metodi Analisi temporale Sistema di acquisizione dati 5 dispositivi A/D (convertitori analogico/digitale) siano collegati ad un calcolatore come indicato in figura: 1

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 Ru i ) si riferiscono quindi al medesimo istante. L elaboratore deve acquisire i 5 campioni e ricopiarli in memoria, prima che i valori contenuti nei Ru i 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 Conversione A/D registro Ru da 16 bit: 64 K valori digitali possibili, l errore (assoluto) di discretizzazione massimo è: e s = (S imax - S imin )/64K 3 Errore di discretizzazione nella conversione A/D:

Sincronizzazione delle conversioni 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 è t c (tempo di conversione). Rispetto allo START, il dato convertito è pronto con un ritardo minimo pari a t c e massimo pari a t c +T (T = periodo del clock). 4 Diagramma temporale delle operazioni di conversione 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.

Programmazione dell esempio esempio Conviene scrivere prima il codice che acquisisce i 100 campioni da un convertitore (ad es. AD4). 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. 6 1 a soluzione Si supponga di usare una macchina (più semplice del PD32) ad un indirizzo (con registro accumulatore), dotata dei soli metodi di indirizzamento: immediato, assoluto (diretto e indiretto); in grado di eseguire almeno le seguenti istruzioni: - aritmetiche: ADD m SUB m -di trasferimento: LOAD(W) m STORE(W) m - di controllo: JNZ m -di I/O: INW disp START disp JNR disp, m 7

Codifica della 1 a soluzione PT:.DSL 1 ; puntatore CT:.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 8 2 a soluzione Si supponga di usare una macchina: - con più registri e quindi con la possibilità di usare anche i metodi di indirizzamento con registro; - i metodi di indirizzamento disponibili siano: immediato, assoluto (diretto), diretto di registro, indiretto con registro. Questa macchina potrebbe essere il PD32. 9

Codifica della 2 a soluzione 10 MOVL IND+12, R1 ; valore iniziale del puntatore MOVB #100, R0 ; valore iniziale del contatore LOOP: JNR AD4, LOOP ; protocollo di input per la LOOP1: START AD4 ; acquisizione WAIT: JNR AD4, WAIT ; del INW AD4, (R1) ; dato ADDL #2, R1 ; incremento del puntatore SUBB #1, R0 ; aggiornamento del contatore JNZ LOOP1 ; iterazione se R0 0 3 a soluzione Si voglia usare anche l indirizzamento con registro indice; 11 - i metodi di indirizzamento disponibili siano: immediato, assoluto (diretto), diretto di registro, indiretto con registro, con registro indice. Questa macchina potrebbe essere il PD32.

Codifica della 3 a soluzione MOVL #0, R1 ; valore iniziale dell offset MOVB #100, R0 ; valore iniziale del contatore LOOP: JNR AD4, LOOP ; protocollo di input per la LOOP1: START AD4 ; acquisizione WAIT: JNR AD4, WAIT ; del INW AD4, TAB4(R1) ; dato ADDL #2,R1 ; incremento dell offset SUBB #1,R0 ; aggiornamento del contatore JNZ LOOP1 ; 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. 12 4 a 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). 13

Codifica della 4 a soluzione MOVL #12, R1 ; valore nel registro indice MOVB #100, R0 ; valore iniziale del contatore LOOP: JNR AD4, LOOP ; protocollo di input per la LOOP1: START AD4 ; acquisizione WAIT: JNR AD4, WAIT ; del INW AD4, @IND(R1) ; dato ADDL #2, IND(R1) ; incremento del puntatore in ; memoria (PD132!) ; attenzione: così si altera il ; contenuto della tabella IND SUBB #1, R0 ; aggiornamento del contatore JNZ LOOP1 ; iterazione se R0 0 14 5 a soluzione 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). 15

Codifica della 5 a soluzione 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 16 6 a soluzione 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. 17

Codifica della 6 a soluzione 18 MOVL IND+12, R1 ; valore iniziale del puntatore MOVB #100, R0 ; valore iniziale del contatore LOOP: JNR AD4, LOOP ; protocollo di input per la LOOP1: START AD4 ; acquisizione WAIT: JNR AD4, WAIT ; del dato INW AD4, (R1)+ ; + incremento del puntatore SUBB #1, R0 ; aggiornamento del contatore JNZ LOOP1 ; iterazione se R0 0 Soluzioni esaminate - 1 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): 19 STOREW @PT LOAD PT ADD #2 STORE PT memoria puntatore ; memorizzazione del dato ; incremento ; del ; puntatore dato dato successivo

Soluzioni esaminate - 2 L efficienza aumenta se è possibile sfruttare l indirizzamento con registro: 20 Così si è fatto nella seconda soluzione (registro R1): INW AD4, (R1) ADDL #2, R1 ; memorizzazione del dato ; incremento del puntatore registro puntatore dato dato successivo Soluzioni esaminate - 3 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. 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 21 Con un diverso valore di X (ad es. TAB5 invece di TAB4) si accede all elemento di uguale indice in un altra tabella.

Schematizzazione del terzo metodo 22 istruzione ind. base registro offset + dato dato successivo 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 300(R1), R0 500(R1), R0 R0, 100(R1) #2, R1

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. Per scandire gli elementi consecutivi si incrementa tale puntatore, come si è fatto nel quarto metodo presentato INW AD4, @IND(R1) ADDL #2, IND(R1) istruzione ind. base registro + ind. base offset ; memorizzazione del dato ; incremento del puntatore ; in memoria (PD132!) puntatore dato dato successivo 24 Soluzioni esaminate - 5 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 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) ; memorizzazione del dato ADDL #2, R1 ; incremento del reg. indice In alternativa, sarebbe stato possibile incrementare il puntatore base (situato all indirizzo PT): INW AD4, [@PT](R1) ; memorizzazione del dato ADDL #2, PT ; incremento del puntatore 25

Schematizzazione del quinto metodo 26 istruzione indir. punt. memoria puntatore registro offset + dato dato successivo Soluzioni esaminate - 6 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 27 registro puntatore dato dato successivo

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: 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 Ru i 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. 28 Soluzione completa: avvio 29

Soluzione completa: ciclo iterativo 30 Soluzione completa: diagramma temporale t c MAX = tempo di conversione massimo t L = tempo di esecuzione del ciclo V1: JMP V1 T = periodo del clock che sincronizza il campionamento 31 Per rispettare le specifiche real-time, deve essere: t L < T - t c MAX

Esercizio Con riferimento al sistema di acquisizione di 100 set da 5 campioni dai 5 convertitori A/D, supponendo che il tempo di conversione t c 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, si calcoli il periodo minimo T MIN del clock che garantisce la contemporaneità dei campioni acquisiti e la non perdita dei dati. 32 Soluzione dell esercizio 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 ;---------------------------------- ; totale t L 5 200ns 33

Soluzione: considerazioni - 1 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 t c MAX = 1200ns). 34 Soluzione: considerazioni - 2 Nelle ipotesi fatte, il primo ciclo di attesa (V1: JNR AD1, V1) viene eseguito tante volte quante sono 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 t L < T - t c MAX da cui si ottiene: T > t L + t c MAX = 5200ns + 1200ns = 6400ns. In conclusione il periodo minimo del clock è T MIN = 6400ns

Fine 02.e Uso dei modi di indirizzamento