le processeur 8085 a-t-il un registre supplémentaire dans ALU?

11

À partir de l'architecture du processeur 8085, lorsque ALU a effectué le calcul, le résultat est synchronisé vers l'accumulateur A au bord d'horloge suivant. Mais l'accumulateur A est directement câblé en tant qu'entrée ALU. Que se passe-t-il si le front d'horloge ne se soulève pas assez rapidement pour que A soit ajouté deux ou plusieurs fois, il serait extrêmement difficile de détecter une telle erreur, une telle conception est très " fragile "pour moi.

Sauf s'il existe un registre supplémentaire dans ALU pour enregistrer temporairement les résultats ALU?

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

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

starx
la source
2
Cela ressemble à une question pour @ KenShirriff…
duskwuff -inactive-
1
Pourquoi pensez-vous que cadencer le résultat ALU vers un registre intermédiaire n'aurait pas les mêmes problèmes que de le synchroniser avec l'accumulateur? Quoi qu'il en soit, vous feriez mieux de savoir que votre ALU produit un résultat valide avec une configuration et un temps de maintien suffisants par rapport à l'horloge.
Le Photon

Réponses:

17

Comme @duskwuff le soupçonnait, je me suis penché sur cela. Pour répondre à la question, le 8085 possède deux registres supplémentaires dans l'ALU.

Le 8085 possède plusieurs registres "cachés": une paire WZ 16 bits et deux registres auxiliaires ALU 8 bits: ACT et TMP. WZ fait partie du fichier de registre, tandis que ACT, A (accumulateur) et TMP sont situés dans le circuit ALU lui-même.

Voici un schéma du fonctionnement de l'ALU:

Structure du registre de l'ALU du 8085

Le registre ACT a plusieurs fonctions importantes. Tout d'abord, il contient l'entrée de l'ALU. Cela permet aux résultats de l'ALU d'être réécrits dans l'accumulateur sans perturber l'entrée, ce qui provoquerait une instabilité. Deuxièmement, l'ACT peut contenir des valeurs constantes (par exemple pour l'incrémentation ou la décrémentation, ou l'ajustement décimal) sans affecter l'accumulateur. Enfin, l'ACT permet les opérations ALU qui n'utilisent pas l'accumulateur.

Une conséquence intéressante de la configuration de l'ALU du 8085 est qu'une valeur ne peut être chargée dans l'accumulateur qu'après avoir traversé l'ALU.

Les détails sur le jeu de registres 8085 sont ici et les détails de l'ALU sont ici .

Ken Shirriff
la source
1
D'une certaine manière, je savais que vous auriez quelque chose à dire à ce sujet. : 3
duskwuff -inactif-
2
génial ~ (le blog de Ken Shirriff et 8085)!
starx
5

Dans les conceptions synchrones, il est important pour le concepteur de s'assurer que de telles choses ne se produisent pas. Le registre, dans lequel les données sont "synchronisées", a des propriétés dynamiques spécifiques comme le temps de montée de l'horloge, le temps de maintien de l'horloge, les données stables avant et après le changement de signal d'horloge. Si le timing est violé, l'état résultant n'est pas garanti.

Dans votre cas particulier, ALU a son retard de propagation, et pour ajouter A deux fois, il devrait y avoir un certain temps avant que le nouveau A soit ajouté au A précédent dans l'additionneur et que le résultat apparaisse à sa sortie. Très probablement, il a été simulé et calculé qu'une telle chose ne se produira pas dans la plage de fréquences d'horloge autorisée définie pour l'appareil. C'est pourquoi la fiche technique a explicitement des valeurs d'horloge minimales et maximales. Pour 8085A-2, il est indiqué:

  • Période de cycle CLK minimale: 320 ns
  • Période de cycle CLK maximale: 2000 ns
Anonyme
la source
5

L'accumulateur est le registre de sortie de l'ALU.

Le 8085 a une horloge à deux phases. Où une instruction d'horloge unique comme un NOP a pris 2 cycles d'horloge. Semblable au 8088 utilisé dans le PC IBM d'origine, le 8088 avait une horloge à quatre phases de 4 MHz et une instruction exécutée à une fréquence de 1 MHz.

Avec l'horloge à deux phases, vous avez deux cycles d'oscillateur pour chaque cycle d'instructions.

En interne, pour le chronométrage, n'importe quel front de l'une ou l'autre horloge peut être utilisé. Les horloges sont inversées, donc il y a en fait quatre horloges disponibles pour le chronométrage.

Ensuite, vous avez des verrous transparents qui se verrouillent sur le bord descendant et des bascules D-Flip qui se verrouillent sur le bord de l'horloge montant.

Un verrou transparent permet aux données d'entrée de se propager jusqu'à la sortie commençant au front montant de l'horloge, et les valeurs sont verrouillées sur le front descendant de l'horloge.

Le 8085 avait de nombreuses options pour éviter les conditions de course de propagation.

entrez la description de l'image ici

Mal compris
la source
"le 8088 avait une horloge à quatre phases de 4Mhz et une instruction exécutée à un rythme de 1Mhz" - le 8088 n'a qu'une seule broche d'entrée d'horloge (bien qu'il s'attende à une horloge non symétrique, avec l'état haut qui dure environ deux fois plus longtemps que le état bas, ce qui indique en interne qu'il fait clairement des choses différentes dans ces états, contrairement à la plupart des processeurs modernes qui cadencent toujours tout sur le même front d'horloge), cette horloge 4 phases est-elle générée en interne d'une manière ou d'une autre? Y a-t-il une description quelque part de la façon dont cela fonctionne?
Jules