8085 CPU ha un registro aggiuntivo all'interno di ALU?


11

Dall'architettura della CPU 8085, quando ALU ha eseguito il calcolo, il risultato viene riportato all'accumulatore A sul bordo dell'orologio successivo. Ma l'accumulatore A è direttamente collegato come ingresso ALU, e se il bordo dell'orologio non si alza abbastanza velocemente da causare A viene aggiunto due o più volte, sarebbe estremamente difficile rilevare un tale errore, un tale design è molto " fragile "per me.

A meno che non vi sia un registro aggiuntivo all'interno di ALU per salvare temporaneamente i risultati ALU?

https://en.wikipedia.org/wiki/Intel_8085#/media/File:Intel_8085_arch.svg

https://en.wikipedia.org/wiki/Intel_8085


2
Sembra una domanda per @ KenShirriff…
duskwuff -inattivo-

1
Perché pensi che il clock dell'ALU si traduca in un registro intermedio non avrebbe gli stessi possibili problemi del clock nell'accumulatore? Ad ogni modo, faresti meglio a sapere che il tuo ALU produce un risultato valido con una configurazione sufficiente e un tempo di attesa rispetto all'orologio.
Il fotone

Risposte:


17

Come sospettavo @duskwuff, ho esaminato questo aspetto. Per rispondere alla domanda, l'8085 ha due registri extra nell'ALU.

L'8085 ha diversi registri "nascosti": una coppia WZ a 16 bit e due registri helper ALU a 8 bit: ACT e TMP. WZ fa parte del file di registro, mentre ACT, A (accumulatore) e TMP si trovano nel circuito ALU stesso.

Ecco un diagramma di come funziona ALU:

Struttura del registro dell'ALU dell'8085

Il registro ACT ha diverse funzioni importanti. Innanzitutto, contiene l'input per l'ALU. Ciò consente ai risultati dell'ALU di essere riscritti nell'accumulatore senza disturbare l'ingresso, causando instabilità. In secondo luogo, ACT può contenere valori costanti (ad es. Per incrementare o decrementare o regolazione decimale) senza influire sull'accumulatore. Infine, ACT consente operazioni ALU che non utilizzano l'accumulatore.

Una conseguenza interessante della configurazione dell'ALU dell'8085 è che un valore può essere caricato nell'accumulatore solo dopo aver attraversato l'ALU.

I dettagli sul set di registri 8085 sono qui e i dettagli dell'ALU sono qui .


1
In qualche modo, sapevo che avresti avuto qualcosa da dire al riguardo. : 3
duskwuff -inattivo-

2
brillante ~ (sia il blog di Ken Shirriff che l'8085)!
Starx

5

Nei progetti sincroni è importante che il progettista si assicuri che tali cose non accadano. Il registro, in cui vengono "sincronizzati" i dati, presenta proprietà dinamiche specifiche come il tempo di aumento dell'orologio, il tempo di mantenimento dell'orologio, i dati stabili prima e dopo la modifica del segnale di clock. Se la temporizzazione viene violata, lo stato risultante non è garantito.

Nel tuo caso particolare ALU sta avendo il suo ritardo di propagazione e per aggiungere A due volte dovrebbe esserci un tempo fino a quando la nuova A viene aggiunta alla precedente A all'interno dell'adder e il risultato appare sul suo output. Molto probabilmente è stato simulato e calcolato che tale cosa non accadrà entro l'intervallo di frequenza di clock consentito definito per il dispositivo. Ecco perché la scheda tecnica ha esplicitamente valutazioni di clock minime e massime. Per 8085A-2 dice:

  • Durata minima del ciclo CLK: 320 ns
  • Durata massima del ciclo CLK: 2000 ns

5

L'accumulatore è il registro di uscita dell'ALU.

L'8085 ha un orologio a due fasi. Dove l'istruzione a clock singolo come un NOP ha richiesto 2 cicli di clock. Simile all'8088 utilizzato nel PC IBM originale, l'8088 aveva un orologio a 4 fasi a 4 Mhz ed eseguiva le istruzioni a una velocità di 1 Mhz.

Con l'orologio a due fasi hai due cicli di oscillazione per ogni ciclo di istruzioni.

Internamente, per il cronometraggio, è possibile utilizzare qualsiasi bordo di entrambi i clock. Gli orologi sono invertiti, quindi in realtà ci sono quattro orologi disponibili per il cronometraggio.

Quindi hai chiavistelli trasparenti che si agganciano sul bordo di caduta e D-Flip Flop che si agganciano sul bordo di salita dell'orologio.

Un latch trasparente consente ai dati di input di propagarsi all'output a partire dal fronte di salita del clock, mentre i valori sono latch sul fronte di discesa del clock.

L'8085 aveva molte opzioni quando si trattava di evitare le condizioni della razza di propagazione.

inserisci qui la descrizione dell'immagine


"l'8088 aveva un orologio a 4 fasi a 4 Mhz ed eseguiva istruzioni a una frequenza di 1 Mhz" - l'8088 ha solo un singolo pin di ingresso (anche se si aspetta un orologio non simmetrico, con lo stato alto che dura all'incirca il doppio del stato basso, che indica internamente che sta chiaramente facendo cose diverse in questi stati, a differenza della maggior parte dei processori moderni che eseguono sempre il clock sullo stesso fronte di clock), quindi questo clock a 4 fasi viene generato internamente in qualche modo? C'è una descrizione da qualche parte di come funziona?
Jules,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.