Saltar al contenido

¿Qué significa (decodificar) en el ciclo de ejecución?

Necesitamos tu ayuda para extender nuestras crónicas acerca de las ciencias de la computación.

Solución:

Las instrucciones de ensamblaje, además de un código de operación, a menudo tienen campos de bits que indican registros y modos de direccionamiento (absoluto, relativo, autoincremental y más).

La decodificación es el ciclo que interpreta el código de operación y esos otros campos de bits para determinar en qué operará la instrucción, o qué hará de otra manera.

Resumen: averigua los detalles opcionales de una instrucción

Ejemplo: 0x90 (10010000 binario) generalmente se considera un NOP, ninguna operación, para el conjunto de instrucciones 8086.

Pero hay un XCHG instrucción, representada como 10010reg binario (reg=3 bits), (0x90 + reg) que es un registro de intercambio de 16 bits con AX instrucción. los 3 bits indicados como ‘reg’ definen con qué registro intercambiar.

‘reg’ de binario 000, significa ‘con registro AX‘. Entonces 0x90 se decodifica como “intercambio AX con AX“, que no hace mucho, también conocido como No Operation NOP

Las instrucciones y los modos de direccionamiento son lo que se decodifica. Las instrucciones + los modos de direccionamiento consisten en un código de operación y cualquier dato inmediato (operando) que siga al código de operación.

Si es así, ¿por qué está codificado entonces?

Porque estamos usando valores en la RAM para “representar” instrucciones y modos de direccionamiento. Tiene que existir un esquema en el que X = cualquier instrucción + cualquier modo de direccionamiento. Similar a cómo ASCII/Unicode es un esquema que “representa” números, letras y códigos de control de terminal.

El paso de decodificación no sería necesario si tuviera una máquina que tuviera 1 interruptor para cada instrucción posible. El “equivalente de RAM” de esto sería 1 instrucción por bit en un byte de 8 bits (u otro), y si varios bits estuvieran activados, todas las instrucciones (y sí, estaría limitado a 8 de ellas) “dispararían” en ese paso Creo que la asamblea del PDP de finales de los 60 y principios de los 70 no está muy lejos de esto.

De hecho, entiendo la decodificación aquí de manera similar a como se decodifica un mensaje dado un key en el campo de la seguridad, que es lo que me confunde un poco.

No, es más como decodificar datos MPEG en datos de video sin procesar: los datos MPEG sin procesar no se pueden pintar directamente en la pantalla, deben procesarse y “descomprimirse” para averiguar qué significan exactamente.

Descodificar significa analizar la instrucción para determinar su significado.

Una instrucción típica consiste en un código de operación y (generalmente) uno o más argumentos. Estos argumentos pueden referirse a registros específicos o direcciones de memoria o pueden ser valores inmediatos para ser usados ​​directamente durante la ejecución. Además, algunas instrucciones pueden tener prefijos (como LOCK en x86) o códigos de función (como el funct campo para algunas instrucciones MIPS) que alteran su funcionalidad.

Durante la decodificación, el procesador necesita:

  • determinar qué instrucción está representada por el código de operación para que la instrucción pueda enviarse a la unidad de ejecución correcta y que se realice la operación correcta
  • interpretar correctamente los argumentos, prefijos y otros valores adjuntos a la instrucción y pasar la información relevante al circuito correspondiente
  • (en la mayoría de los diseños de procesadores modernos) divide la instrucción en sus microoperaciones correspondientes

Con los procesadores modernos, esta puede ser una operación compleja que requiere múltiples etapas en la tubería. Para acelerar este proceso, se puede usar un caché dedicado para almacenar microoperaciones para instrucciones que se ejecutan con frecuencia.

Para obtener más información sobre las técnicas utilizadas para ofrecer un alto rendimiento en los procesadores modernos, es posible que desee leer esta respuesta.

Sección de Reseñas y Valoraciones

No se te olvide mostrar este tutorial si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *