¿La CPU 8085 tiene un registro adicional dentro de ALU?

11

Desde la arquitectura de la CPU 8085, cuando ALU realizó el cálculo, el resultado se regresó al acumulador A en el siguiente borde del reloj. Pero el acumulador A está conectado directamente como entrada ALU, y si el borde del reloj no se elevara lo suficientemente rápido como para causar que A se agregue dos o muchas veces más, sería extremadamente difícil detectar dicho error, tal diseño es muy " frágil "para mí.

A menos que haya un registro adicional dentro de ALU para guardar temporalmente los resultados de ALU.

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

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

starx
fuente
2
Esto parece una pregunta para @ KenShirriff ...
duskwuff -inactive-
1
¿Por qué cree que registrar el resultado de ALU en un registro intermedio no tendría los mismos problemas posibles que registrarlo en el acumulador? De cualquier manera, es mejor que sepa que su ALU produce un resultado válido con suficiente configuración y tiempo de espera en relación con el reloj.
The Photon

Respuestas:

17

Como sospechaba @duskwuff, he investigado esto. Para responder a la pregunta, el 8085 tiene dos registros adicionales en la ALU.

El 8085 tiene varios registros "ocultos": un par WZ de 16 bits y dos registros auxiliares ALU de 8 bits: ACT y TMP. WZ es parte del archivo de registro, mientras que ACT, A (acumulador) y TMP se encuentran en el circuito ALU.

Aquí hay un diagrama de cómo funciona la ALU:

Estructura de registro de la ALU del 8085

El registro ACT tiene varias funciones importantes. Primero, contiene la entrada a la ALU. Esto permite que los resultados de la ALU se vuelvan a escribir en el acumulador sin alterar la entrada, lo que causaría inestabilidad. En segundo lugar, el ACT puede mantener valores constantes (por ejemplo, para aumentar o disminuir, o el ajuste decimal) sin afectar el acumulador. Finalmente, el ACT permite operaciones ALU que no usan el acumulador.

Una consecuencia interesante de la configuración de la ALU del 8085 es que un valor puede cargarse en el acumulador solo después de pasar por la ALU.

Los detalles sobre el conjunto de registros 8085 están aquí y los detalles de la ALU están aquí .

Ken Shirriff
fuente
1
De alguna manera, sabía que tendrías algo que decir sobre esto. : 3
duskwuff -inactive-
2
genial ~ (tanto el blog de Ken Shirriff como el 8085)!
starx
5

En los diseños sincrónicos, es una tarea importante del diseñador asegurarse de que tales cosas no sucedan. El registro, que tiene datos "sincronizados", tiene propiedades dinámicas específicas como tiempo de subida del reloj, tiempo de retención del reloj, datos estables antes y después del cambio de señal del reloj. Si se viola el tiempo, no se garantiza el estado resultante.

En su caso particular, ALU está teniendo su retraso de propagación, y para agregar A dos veces debería haber un tiempo hasta que se agregue A nueva a A anterior dentro del sumador y el resultado aparezca en su salida. Lo más probable es que se haya simulado y calculado que tal cosa no sucederá dentro del rango de frecuencia de reloj permitido para el dispositivo. Es por eso que la hoja de datos tiene explícitamente índices de reloj mínimos y máximos. Para 8085A-2 dice:

  • Periodo mínimo de ciclo CLK: 320 ns
  • Período máximo de ciclo CLK: 2000 ns
Anónimo
fuente
5

El acumulador es el registro de salida de la ALU.

El 8085 tiene un reloj de dos fases. Donde la instrucción de un solo reloj como un NOP tomó 2 ciclos de reloj. Similar al 8088 usado en la PC original de IBM, el 8088 tenía un reloj de cuatro fases de 4Mhz y ejecutaba instrucciones a una velocidad de 1Mhz.

Con el reloj de dos fases, tiene dos ciclos de oscilador para cada ciclo de instrucción.

Internamente, para la sincronización, se puede usar cualquier borde de cualquier reloj. Los relojes están invertidos, por lo que en realidad hay cuatro relojes disponibles para temporizar.

Luego tiene pestillos transparentes que se enganchan en el borde descendente y D-Flip Flops que se enganchan en el borde ascendente del reloj.

Un enclavamiento transparente permite que los datos de entrada se propaguen hacia la salida comenzando en el flanco ascendente del reloj, y los valores se enclavan en el flanco descendente del reloj.

El 8085 tenía muchas opciones para evitar las condiciones de carrera de propagación.

ingrese la descripción de la imagen aquí

Incomprendido
fuente
"El 8088 tenía un reloj de cuatro fases de 4Mhz e instrucciones ejecutadas a una velocidad de 1Mhz": el 8088 solo tiene un pin de entrada de reloj único (aunque espera un reloj no simétrico, con un estado alto que dura aproximadamente el doble que el estado bajo, lo que indica internamente que claramente está haciendo cosas diferentes en estos estados, a diferencia de la mayoría de los procesadores modernos que siempre registran todo en el mismo borde del reloj), entonces, ¿este reloj de 4 fases se genera internamente de alguna manera? ¿Hay una descripción en alguna parte de cómo funciona esto?
Julio