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 memoria1 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
JLRque 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.