Microprocesadores: ¿Por qué el ciclo de búsqueda de código operativo de la instrucción “CALL” tiene 6 estados T en el microprocesador 8085?

La instrucción CALL puede ser de dos tipos:
1. LLAMADA incondicional en la que menciona la dirección de 16 bits, donde desea transferir el control del programa.
2.CALL Condicional en el que menciona la condición seguida por la dirección de 16 bits.

1.CALL 2000H (llamada incondicional):

Como el código del programa se almacena en la memoria, se recupera de la memoria.

PASO 1: MC 1 (búsqueda de código de operación): ciclos de máquina de búsqueda de código de operación-4 (busca la llamada de código de operación de la dirección de memoria especificada por el contador de programas en el registro de instrucciones y luego la decodifica).

PASO 2: MC 2,3: Lectura de memoria: Obtiene los operandos de la memoria a registros temporales (W, Z). Ahora, dado que 8085 es un procesador de 8 bits, puede leer 8 bits a la vez, lo que significa que primero leerá 00 y luego 20 de la memoria.

NOTA : cuando almacena datos de 16 bits en la memoria, se divide en dos bytes (2 * 8), el byte superior (20 en este caso) y el byte inferior (00 en este caso) que se almacenan en ubicaciones de memoria consecutivas. El HB se almacena en una ubicación de memoria superior y el byte inferior en la ubicación de memoria inferior. por ejemplo, si 2000H se va a almacenar en la ubicación de memoria señalada por [4000] H, entonces 00 se almacenará en [4000] H y 20 en [4001] H.
Entonces, mientras lee de la memoria, primero se lee el byte inferior y luego el byte superior.

PASO 3: MC 4, 5 (MW + MW): la dirección de la siguiente instrucción se guarda desde la PC para apilar la memoria. Esto se hace porque nos gustaría continuar con el flujo inicial de ejecución una vez que la declaración de llamada haya finalizado.
Entonces, dado que la dirección se debe enviar, es decir, datos de 16 bits, primero el byte inferior se empujará a la pila y luego el puntero de pila (SP) se disminuirá en 1 (esta operación de disminución requiere 2 estados T adicionales porque estamos tratando de aumentar los datos de 16 bits) y luego el byte más alto será empujado a la pila.

( NOTA: mientras sale de la pila, el byte más alto sale primero seguido por el byte más bajo, que en comparación con la lectura de memoria es el orden opuesto).
Por lo tanto, empujar la pila dos veces requerirá dos ciclos de máquina de escritura de memoria.

PASO 4 : Ahora, el contenido de los registros temporales (W, Z) (PASO 2) (el paso se transfiere al bus de direcciones y el control va a la dirección especificada. Dado que es un registro para la transferencia del bus dentro del procesador, no lo hace). tomar cualquier ciclo de máquina para ejecutar.

MC total = OF + MR + MR + 2 ciclos de reloj necesarios para disminuir el puntero de pila + MW + MW
Estados T totales = 4 + 3 + 3 + 2 + 3 + 3 = 18

2. LLAMADA Condicional : La llamada condicional salta a la ubicación especificada por la dirección solo si la condición es verdadera. El procesador llega a saber si la condición es verdadera o no cuando está en el segundo MC.
Por lo tanto, si la condición es verdadera = 18 estados T (igual que CALL incondicional), si no es falso = 7 estados T (OP + MR).

* La diferencia entre las instrucciones JMP y CALL radica en el hecho de que JMP no almacena el contenido del contador del programa (PC) en la pila.
* MC = Ciclo de máquina

En realidad, las respuestas anteriores son engañosas.

Las instrucciones CALL y PUSH tienen 6 estados T, mientras que RET y POP solo tienen 4. En el estado de búsqueda de código de operación solamente. No hay diferencia entre ellos en los ciclos de ejecución (lectura y escritura de la pila). El aumento y la disminución de SP y PC no requieren ciclos adicionales, se llevan a cabo durante el ciclo de lectura / escritura (en T2 o T3).

8085 tiene un flujo de control de lectura / escritura de memoria de 16 bits, que siempre lee / escribe primero Byte inferior (LHLD, SHLD, el byte 2. y 3. de las instrucciones de 3 byte, etc.). Escribir en la pila no se ajusta a esto (el byte superior se almacenará primero). Intel no implementó otro flujo, pero lo más probable es que tome un solo ciclo para intercambiar bytes cada vez más bajos primero (T5), y luego el flujo funciona perfectamente.

¿Por qué no 5 estados T? Fue más fácil implementar un sistema, en el que hay instrucciones que usan 4 o 6 estados en lugar de usar 4 o 5 o 6 …

Se trata de la cantidad de transistores.

Algunas instrucciones usan una combinación de modos de direccionamiento. Una instrucción CALL, por ejemplo, combina direccionamiento directo y registro de direccionamiento indirecto. La dirección directa en una instrucción CALL especifica la dirección de la subrutina deseada; La dirección indirecta del registro es el puntero de la pila. La instrucción CALL empuja el contenido actual del contador del programa a la ubicación de memoria especificada por el puntero de la pila.

Efectos de tiempo de los modos de direccionamiento:
Los modos de direccionamiento afectan tanto la cantidad de tiempo requerido para ejecutar una instrucción como la cantidad de memoria requerida para su almacenamiento. Por ejemplo, las instrucciones que usan direccionamiento implícito o de registro, se ejecutan muy rápidamente ya que tratan directamente con el hardware del procesador o con los datos ya presentes en los registros de hardware. Sin embargo, lo más importante es que toda la instrucción se puede obtener con un solo acceso a la memoria. El número de accesos a la memoria requeridos es el factor más importante para determinar el tiempo de ejecución. Por lo tanto, más accesos a la memoria requieren más tiempo de ejecución. Una instrucción CALL, por ejemplo, requiere cinco accesos a la memoria: tres para acceder a toda la instrucción y dos más para empujar el contenido del contador del programa a la pila.

El procesador puede acceder a la memoria una vez durante cada ciclo de procesador. Cada ciclo comprende un número variable de estados. La longitud de un estado depende de la frecuencia de reloj especificada para su sistema, y ​​puede variar de 480 nanosegundos a 2 microsegundos. Por lo tanto, el tiempo para una instrucción de cuatro estados puede variar de 1.920 microsegundos a 8 microsegundos. (El 8085 tiene una frecuencia de reloj máxima de 5 MHz y, por lo tanto, una longitud de estado mínima de 200 nanosegundos).

Como nadie tiene ninguna respuesta: cuando se ejecuta una llamada, hay cosas que se envían a la pila: la PC (Contador de programas), el Registro de estado y, por lo general, el Acumulador en funcionamiento. Luego, se instala la PC de la Llamada, el Registro de Estado de la Llamada y es el Acumulador. Eso es 6 ciclos T.

Esto se conoce como un “cambio de contexto” y puede variar en el número de ciclos en función de dónde, en el programa, ocurre la llamada.

Cuando el microprocesador encuentra la instrucción CALL, en el estado T4 de CALL OPCODE FETCH, lo decodifica en el decodificador y por primera vez se da cuenta de que tiene que disminuir el SP (puntero de pila) dos veces (es decir, SP = SP -2 para empujar el contador de programa en pila), ahora para poder empujar la PC (Contador de programa) en pila, la ubicación del SP -1 debe estar lista para ello. (De lo contrario, sobrescribirá el contenido anterior empujado en la pila). El microprocesador no tiene más opción que consumir los dos estados después de T4, es decir, T5 y T6 para disminuir SP = SP-1. Eso explica los estados 6T de Opcode fetch de la instrucción CALL.

Ahora puede preguntarse dónde tiene lugar SP -1 a SP -2 y dónde están sus dos estados adicionales. En realidad, digamos que el mordisco más alto de la PC se está transfiriendo en la ubicación SP – 1, es decir, la primera operación de MW (escritura de memoria). Tiene 3 estados T, durante T1, la dirección está bloqueada por el SP para aumentar el mordisco de las PC, y en los estados T2 y T3, se está transfiriendo un mordisco más alto. Ahora es el momento en que el microprocesador disminuye internamente el SP -1 a SP -2 y utiliza el ciclo T2 y T3 de MR.

Espero que lo entiendas. (Voto a favor) 🙂
Salud

La figura anterior muestra un ciclo de Reconocimiento de interrupción para la instrucción CALL. Se requieren ciclos de máquina M 2 y M 3 para llamar a los 2 bytes de la dirección que sigue a la LLAMADA.
La escritura en memoria se realiza en los ciclos de máquina M 4 y M 5 en los que el contenido de la PC se almacena en la pila y luego comienza un nuevo ciclo de instrucciones.

La instrucción de llamada es una de las instrucciones más complejas. La CPU tiene que:

buscar el código de operación
buscar la dirección de destino
empuje ambos bytes de la dirección de retorno a la pila.
configura la PC a la dirección de destino.

Eso podría ser fácilmente seis ciclos.