¿Tiene la CPU 8085 un registro adicional dentro de ALU?

11

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

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

<

enlace

    
pregunta Ale

3 respuestas

17

Como @duskwuff sospechaba, 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 de ayuda ALU de 8 bits: ACT y TMP. WZ es parte del archivo de registro, mientras que ACT, A (acumulador) y TMP están ubicados en el propio circuito ALU.

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

ElregistroACTtienevariasfuncionesimportantes.Primero,contienelaentradaalaALU.EstopermitequelosresultadosdelaALUsevuelvanaescribirenelacumuladorsinalterarlaentrada,loquecausaríainestabilidad.Ensegundolugar,elACTpuedemantenervaloresconstantes(porejemplo,paraaumentarodisminuir,oajustedecimal)sinafectarelacumulador.Finalmente,elACTpermiteoperacionesdeALUquenousanelacumulador.

UnaconsecuenciainteresantedelaconfiguracióndeALUdel8085esqueunvalorsepuedecargarenelacumuladorsolodespuésdepasarporlaALU.

Losdetallessobreelconjuntoderegistros8085son aquí y los detalles de la ALU son < a href="http://www.righto.com/2013/07/reverse-engineering-8085s-alu-and-its.html"> here .

    
respondido por el Ken Shirriff
5

En los diseños síncronos, es una tarea importante del diseñador garantizar que estas cosas no ocurran. El registro, que tiene datos "sincronizados", tiene propiedades dinámicas específicas como el tiempo de subida del reloj, el tiempo de espera del reloj, la estabilidad de los datos antes y después del cambio de la señal del reloj. Si se viola el tiempo, el estado resultante no está garantizado.

En su caso particular, ALU está teniendo su retraso de propagación, y para agregar A dos veces debe haber un tiempo hasta que se agregue una nueva A a la A anterior dentro del sumador y el resultado aparezca en su salida. Probablemente fue 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 calificaciones de reloj mínimas y máximas. Para 8085A-2 dice:

  • Período de ciclo CLK mínimo: 320 ns
  • Período de ciclo CLK máximo: 2000 ns
respondido por el Anonymous
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 ejecutó 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 temporización, se puede usar cualquier ventaja de cualquier reloj. Los relojes se invierten, por lo que en realidad hay cuatro relojes disponibles para la sincronización.

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

Un pestillo transparente permite que los datos de entrada se propaguen a la salida que comienza en el flanco ascendente del reloj, y los valores se enganchan en el borde descendente del reloj.

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

    
respondido por el Misunderstood

Lea otras preguntas en las etiquetas