Unidad0 Instrucciones

Unidad0 Instrucciones

¿Qué es una instrucción y cómo se forman?

Definición de Instrucción

  • Se introduce el concepto de instrucción en las unidades centrales de proceso (CPU), destacando su importancia en la ejecución de operaciones.
  • Las instrucciones pueden ser decodificadas mediante microprogramación o cableado, donde los bits se conectan a elementos de control.

Componentes de una Instrucción

  • Una instrucción debe especificar el código de operación (upcode), que indica qué tipo de operación realizar (sumar, restar, desplazar, comparar).
  • Es necesario identificar los operandos involucrados en la operación; generalmente hay dos operandos para operaciones como suma o resta.

Proceso para Ejecutar Instrucciones

  • Se debe determinar cómo acceder a los operandos, ya sea desde memoria o registros internos.
  • La instrucción también debe indicar dónde almacenar el resultado obtenido tras la ejecución.

¿Cómo se gestionan las instrucciones secuencialmente?

Ejecución Secuencial

  • Al finalizar una operación, es crucial decidir cuál será la siguiente acción. Agrupar instrucciones consecutivas en memoria facilita este proceso.
  • El valor de la siguiente instrucción suele ser la dirección actual más uno o más bytes necesarios para acceder a ella.

Contador de Programa

  • Se utiliza un registro llamado contador de programa que sigue la secuencia de ejecución del programa y señala dónde está la próxima instrucción por ejecutar.

Almacenamiento y reutilización de resultados intermedios

Resultados Intermedios

  • A menudo, el resultado obtenido no es final sino intermedio; puede ser necesario almacenarlo temporalmente en memoria.
  • En algunos casos, se puede reutilizar un operando existente para almacenar un nuevo resultado, lo que ahorra espacio en memoria.

Modos de direccionamiento: ¿cómo accedemos a los datos?

Acceso a Operandos

  • Los modos de direccionamiento determinan cómo se accede a los operandos; esto depende del diseño específico del CPU.

Tipos de Direccionamiento

  • Existen instrucciones sin operandos (modo implícito), pero las que sí tienen pueden requerir acceso directo o indirecto a registros o memoria.

Localización Efectiva

Modos de Direccionamiento en Arquitectura de Computadoras

Modos Absolutos y Relativos

  • Se define el modo absoluto como aquel donde se conoce la dirección exacta del dato en memoria, permitiendo un acceso directo.
  • En contraste, el modo relativo utiliza una referencia desde un registro interno, sumando o restando un desplazamiento para acceder al dato deseado.

Modo Indirecto y Registro Indirecto

  • El modo indirecto implica que la instrucción contiene la dirección de otra dirección, requiriendo múltiples accesos a memoria para obtener el dato final.
  • En el modo registro indirecto, la dirección del dato está almacenada en un registro interno, facilitando el acceso sin necesidad de buscar en memoria.

Formato de Instrucción Tipo R

  • El formato tipo R se caracteriza por tener todos los operandos como registros; incluye referencias a registros internos para realizar operaciones aritméticas.
  • Un ejemplo es sumar dos registros (rs1 y rs2), donde el resultado se almacena en otro registro (Rd). La sintaxis en assembler sigue un patrón específico.

Operaciones con Valores Inmediatos

  • Las instrucciones pueden incluir valores constantes directamente dentro de ellas. Esto permite realizar operaciones aritméticas utilizando tanto registros como constantes.
  • Un ejemplo sería una operación que suma un valor constante a un registro, lo cual se representa con una notación específica en assembler.

Acceso a Memoria y Almacenamiento

  • Para acceder a datos en memoria, se requiere conocer su dirección. Existen formatos específicos para almacenar datos (tipo S), que utilizan direcciones base más desplazamientos.
  • La instrucción Store permite guardar contenido desde un registro hacia una ubicación específica en memoria construida mediante la suma de una dirección base y un desplazamiento.

Ejemplo Práctico de Almacenamiento

Instrucciones de Almacenamiento y Modos de Direccionamiento

Conceptos Básicos sobre Almacenamiento

  • Se explica que si el contenido del registro r0 es 80 51 65 02, al ejecutar la instrucción Store, este valor se almacenará en la dirección de memoria 1 2 3 4 5 6 7.
  • En assembler RISC-V, se utiliza la instrucción Store Word (swb) para guardar una palabra de 32 bits desde el registro x0 a una dirección base especificada en el registro X3 más un desplazamiento.

Modos de Direccionamiento

  • Se introduce el modo de direccionamiento tipo J, utilizado para realizar saltos. Este modo modifica el valor del Program Counter (PC).
  • La constante incluida en la instrucción se suma al valor actual del PC, permitiendo así actualizar su valor. Esta constante puede ser positiva o negativa.

Importancia del Registro Destino

  • El registro destino generalmente es R1, donde se almacena el valor del PC antes de ejecutar la instrucción. Esto es crucial para retornar a la ubicación original después de llamar a una subrutina.
  • Cuando se ejecuta una llamada a subrutina, es necesario guardar el estado actual del PC para poder regresar correctamente.

Ejemplo Práctico con Instrucciones

  • La instrucción JAL (Jump and Link) permite continuar desde un nuevo punto en el código y almacenar el PC actual en x1.
  • Para retornar a la ubicación original tras finalizar una subrutina, existe otra instrucción llamada JLR que toma un nuevo valor para actualizar el PC.

Eficiencia en Direccionamiento

  • Se discute por qué existen diferentes modos de direccionamiento: usar direcciones absolutas consume mucho espacio en memoria.
  • Un ejemplo muestra cómo las instrucciones pueden requerir múltiples referencias a memoria; optimizar esto mediante registros base y desplazamientos reduce significativamente los bytes necesarios.

Resumen Final sobre Direccionamientos

  • Utilizar registros base con desplazamientos permite que las instrucciones ocupen menos espacio al evitar almacenar direcciones completas.
Video description

Formato de instrucciones y modos de direccionamiento