ELEMANIA
Z80 - Architettura interna
Architettura interna e registri dello Z80

La figura seguente mostra l'architettura interna dello Z80:

Esaminiamone più nel dettaglio le parti fondamentali:

Fetch di un'istruzione

Con riferimento all'architettura interna dello Z80, esaminiamo adesso nel dettaglio le operazioni interne compiute dal µP per prelevare (fetch) il codice operativo di un'istruzione dalla memoria.

Per prima cosa l'indirizzo dell'istruzione dev'essere messo sul bus indirizzi esterno. Siccome l'indirizzo della prossima istruzione da eseguire è contenuto nel Program Counter (PC), il µP invia il contenuto del PC sul bus indirizzi esterno. Contemporaneamente vengono inviati alla memoria anche i segnali di controllo per l'operazione di lettura (RD e MREQ):

Mentre la memoria viene letta, il PC viene automaticamente incrementato (PC=PC+1) in modo da essere già pronto con l'indirizzo della successiva istruzione da eseguire.

Quindi il codice operativo dell'istruzione (fornito dalla memoria) viene trasferito dal bus dati esterno all'Instruction Register, per poter essere eseguito e decodificato:

Decodifica ed esecuzione di un'istruzione

Mentre la fase di fetch del codice operativo è comune a tutte le istruzioni, la fase di decodifica ed esecuzione dipende invece dalla particolare istruzione che deve essere eseguita.

Consideriamo a titolo di esempio l'esecuzione dell'istruzione

ADD A,B

la quale somma il contenuto del registro A con il contenuto del registro B e mette il risultato nuovamente in A.

Per prima cosa l'unità di controllo decodifica il codice operativo dell'istruzione e quindi abilita il trasferimento sul bus dati interno del contenuto del registro B fino al registro temporaneo collegato con uno dei due ingressi della ALU:

Infine la ALU effettua la somma fra l'accumulatore e il registro temporaneo e il risultato viene nuovamente caricato nell'accumulatore attraverso il bus dati interno. Si noti che il contenuto del Flag Register viene modificato in base al risultato dell'operazione (positivo, negativo, nullo, con o senza riporto, etc.):

Fetch/execute overlap

Una caratteristica interessante dell'architettura dello Z80 è il cosiddetto fetch/execute overlap (ovvero sovrapposizione di prelievo ed esecuzione). In pratica, per aumentare la velocità, durante la fase di esecuzione di un'istruzione che non richiede l'accesso ai bus esterni (per esempio un'addizione fra due registri interni al µP) lo Z80 accede alla memoria per prelevare l'istruzione successiva da eseguire.

Un diagramma temporale esemplificativo è mostrato in figura:

Naturalmente non per tutte le istruzioni è possibile questo pre-caricamento dell'istruzione successiva. In particolare l'overlap è impossibile per le istruzioni che devono accedere alla memoria esterna durante la fase di esecuzione. E' compito dell'Unità di Controllo interna al µP determinare in ogni caso se una data istruzione consente oppure no il fetch contemporaneo dell'istruzione successiva.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it