Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Durata istruzioni e programmi
Ogni istruzione in linguaggio di basso livello ha una sua durata definita, ricavabile dal set di istruzioni; nel caso dello Z80 è indicata nella colonna “No of T cycles” (numero di cicli T) e varia da un minimo di 4, per le istruzioni più semplici, a un massimo di 23. T è il periodo relativo alla frequenza di lavoro del microprocessore (per lo Z80 varia da 2,5 a 4 MHz); moltiplicando quindi T per il numero di cicli dell’istruzione, si ha la durata di una singola esecuzione della stessa; dunque, sapendo con precisione il numero di volte (iterazioni) che ogni istruzione sarà eseguita durante l’esecuzione completa di un programma, è possibile risalire all’intera durata dello stesso. Anelli di ritardo Spesso è opportuno sincronizzare il sistema a microprocessore, creando artificiosamente nel programma dei “tempi morti” apparentemente inutili, ma in realtà necessari a dare il tempo, alle periferiche collegate, di svolgere il loro compito, prima che la CPU svolga le operazioni successive. Questi sono detti “anelli di ritardo” (delay loop), costituiti da un determinato blocco di istruzioni, di durata definita. Ipotizzando di impiegare una CPU Z80 che lavora a 2,5 MHz, in un blocco costituito dalle istruzioni: label cod.op operandi n. cicli T iterazioni cicli T tot. ……………………………………… LD A,64H 7 1 7 L1: DEC A JP NZ,L la prima istruzione viene eseguita una volta, la seconda e la terza vengono ripetute 100 volte, fino a che il registro A si azzera e il salto all’indietro non avviene più, essendo 64H il corrispondente esadecimale di 10010; la durata totale del blocco è uguale alla somma dei cicli T totali di ogni istruzione, cioè 1407 moltiplicato per 0,4 x 10-6 sec, che è il periodo relativo alla frequenza di lavoro della CPU (T = 1/f), vale a dire 562,8 x 10-6 (μsec).
2
Utilizzando per la struttura precedente un registro a 8 bit, la massima durata possibile, caricando il registro a 00H così da avere 256 decrementi prima del nuovo azzeramento, è di 1,4364 msec; per ottenere un anello di durata maggiore si hanno due possibilità: 1° - usare un registro a 16 bit, con l’accortezza di inserire istruzioni che alterino il flag di zero (l’istruzione DEC BC, come tutte le istruzioni di incremento e decremento a 16 bit, non altera il flag di zero), per controllare la condizione di salto, come nell’esempio: label cod.op operandi n. cicli T iterazioni cicli T tot. ……………………………………… LD BC,0000H L1: DEC BC LD A,B OR C JP NZ,L dove (216) è il numero di decrementi del registro BC necessari ad azzerarlo di nuovo; così la massima durata possibile è x 0,4 x 10-6, vale a dire ,6 μsec (0,63 secondi circa). 2° - creare una struttura ad “anelli nidificati”, come nell’esempio: label cod.op operandi n. cicli T iterazioni cicli T tot. ……………………………………… LD A,02H 7 1 7 * L1: LD B,03H ** L2: LD C,04H *** L3: DEC C *** JP NZ,L ** DEC B ** JP NZ,L * DEC A 4 2 8 * JP NZ,L
3
La formula: durata totale = {7 + [21 + (21 + 14 x N3) x N2] x N1} x T
nella precedente struttura a 3 anelli nidificati, la prima istruzione (priva di etichette o label) viene eseguita una volta, le istruzioni contrassegnate da un asterisco vengono ripetute 2 volte, perché dipendono solo dall’azzeramento del registro A, le istruzioni con il doppio asterisco vengono ripetute 6 volte (2 x 3 volte), perché dipendono dall’azzeramento dei registri A e B (quest’ultimo viene ricaricato a 3 ogni volta che A risulta diverso da 0), le istruzioni con il triplo asterisco vengono ripetute 24 volte (2 x 3 x 4 volte) perché dipendono dall’azzeramento di tutti e tre i registri (il registro C viene ricaricato a 4 ogni volta che B risulta diverso da 0). Nell’esempio la durata del blocco è data dalla somma dei cicli totali di ogni istruzione, cioè 511 moltiplicato x 0,4 x 10-6, vale a dire 204,4 μsec. La formula: durata totale = {7 + [21 + ( x N3) x N2] x N1} x T aiuta a determinare, per tentativi, i numeri N1 , N2 e N3 da caricare nell’ordine (dopo averli convertiti in esadecimale) nei 3 registri a 8 bit, per la struttura a 3 anelli nidificati; in questo caso, sempre alla frequenza di lavoro di 2,5 MHz, la massima durata possibile è di μsec, vale a dire 1 minuto 34 secondi e 5 decimi circa.
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.