Fases de Ejecución de una Instrucción en un Procesador (Periodo II - Actividad X)
Taller: Fases de Ejecución de una Instrucción en un Procesador
Grado: Décimo de Bachillerato
Duración: 90 minutos
Objetivo
Comprender cómo un procesador ejecuta instrucciones paso a paso, desde su recepción hasta el almacenamiento de resultados, identificando el rol de cada componente interno.
1. Conceptos Fundamentales
El Ciclo de Ejecución de Instrucciones
Un procesador ejecuta instrucciones siguiendo un ciclo básico de 5 fases:
- Búsqueda (Fetch): El procesador solicita la instrucción desde la memoria RAM
- Decodificación (Decode): Interpreta qué operación debe realizar
- Búsqueda de Operandos: Obtiene los datos necesarios para la operación
- Ejecución (Execute): Realiza la operación en la ALU
- Escritura (Write-back): Almacena el resultado en registros o memoria
Diagrama del ciclo de instrucciones con las 5 fases [tomado de www.monografias.com]
Formato de las Instrucciones
Las instrucciones llegan al procesador como código binario de 32 bits (en arquitecturas comunes), dividido en campos:
- Opcode (6-8 bits): Código de la operación (ADD, SUB, LOAD, etc.)
- Registros (5 bits c/u): Especifica qué registros usar
- Inmediato/Dirección (16 bits): Valores constantes o direcciones de memoria
[INSERTAR FIGURA: Estructura de una instrucción de 32 bits mostrando los campos]
Componentes Clave del Procesador
Unidad de Control (UC): Coordina todo el proceso y decodifica instrucciones
Unidad Aritmético-Lógica (ALU): Ejecuta operaciones matemáticas y lógicas
Registros: Almacenamiento ultrarrápido dentro del procesador
Memoria Caché: Almacenamiento rápido entre procesador y RAM
[INSERTAR FIGURA: Arquitectura básica del procesador con estos componentes]
2. Decodificación e Instrucciones
Estándar MIPS (Arquitectura de Referencia)
Utilizaremos el estándar MIPS (Microprocessor without Interlocked Pipeline Stages), uno de los más estudiados en educación. MIPS define tres formatos de instrucción de 32 bits:
Formato R (Registro): Para operaciones entre registros
[6 bits: op] [5 bits: rs] [5 bits: rt] [5 bits: rd] [5 bits: shamt] [6 bits: funct]
Formato I (Inmediato): Para operaciones con constantes o direcciones
[6 bits: op] [5 bits: rs] [5 bits: rt] [16 bits: inmediato/dirección]
Formato J (Salto): Para saltos incondicionales
[6 bits: op] [26 bits: dirección de destino]
[INSERTAR FIGURA: Los tres formatos de instrucción MIPS con campos etiquetados]
Interpretación de Campos según MIPS
- op (opcode): Identifica el tipo de operación principal
- rs: Registro fuente (source register)
- rt: Registro destino temporal (target register)
- rd: Registro destino final (destination register)
- shamt: Cantidad de desplazamiento para operaciones shift
- funct: Función específica (para op=000000, especifica la operación exacta)
- inmediato: Valor constante o desplazamiento de dirección
Principales Opcodes MIPS
| Opcode | Formato | Instrucción | Descripción | Campos Requeridos |
|---|---|---|---|---|
| 000000 | R | ADD/SUB/AND/OR | Operaciones aritméticas/lógicas | rs, rt, rd, funct |
| 001000 | I | ADDI | Suma con inmediato | rs, rt, inmediato |
| 001100 | I | ANDI | AND con inmediato | rs, rt, inmediato |
| 100011 | I | LW (Load Word) | Carga palabra de memoria | rs, rt, inmediato |
| 101011 | I | SW (Store Word) | Guarda palabra en memoria | rs, rt, inmediato |
| 000100 | I | BEQ | Salto si son iguales | rs, rt, dirección |
| 000101 | I | BNE | Salto si son diferentes | rs, rt, dirección |
| 001010 | I | SLTI | Comparar menor que inmediato | rs, rt, inmediato |
| 000010 | J | J | Salto incondicional | dirección |
| 000011 | J | JAL | Salto y enlace (función) | dirección |
Códigos de Función (funct) para Opcode 000000
| Funct | Instrucción | Operación |
|---|---|---|
| 100000 | ADD | Suma |
| 100010 | SUB | Resta |
| 100100 | AND | AND lógico |
| 100101 | OR | OR lógico |
| 101010 | SLT | Menor que |
| 000000 | SLL | Desplazamiento izquierda |
Ejemplo de Decodificación
Instrucción binaria: 00000001001010100100000000100000
Análisis por formato R:
- op:
000000→ Operación tipo R, consultar funct - rs:
01001→ Registro R9 (fuente 1) - rt:
01010→ Registro R10 (fuente 2) - rd:
01000→ Registro R8 (destino) - shamt:
00000→ Sin desplazamiento - funct:
100000→ ADD (suma)
Interpretación: Sumar contenido de R9 + R10 y guardar resultado en R8
Segundo ejemplo: 00100000001000100000000000000101
- op:
001000→ ADDI (suma inmediata) - rs:
00001→ Registro R1 (fuente) - rt:
00010→ Registro R2 (destino) - inmediato:
0000000000000101→ Valor 5
Interpretación: Sumar contenido de R1 + 5 y guardar resultado en R2
3. Ejemplo Práctico: Ejecución de una Secuencia
Supongamos que queremos ejecutar: C = A + B donde A=5, B=3
Instrucciones en memoria:
Dirección Instrucción MIPS Código Binario
0x1000 LW R1, 0(R0) ; Cargar A en R1 10001100000000010000000000000000
0x1004 LW R2, 4(R0) ; Cargar B en R2 10001100000000100000000000000100
0x1008 ADD R3, R1, R2 ; Sumar R1+R2→R3 00000000001000100001100000100000
0x100C SW R3, 8(R0) ; Guardar R3 en C 10101100000000110000000000001000
[INSERTAR FIGURA: Mapa de memoria mostrando ubicación de instrucciones y datos]
Ejecución Paso a Paso:
Instrucción 1: LW R1, 0(R0) - Cargar A en R1
Binario MIPS: 10001100000000010000000000000000
-
Fetch:
- PC (Program Counter) contiene dirección 0x1000
- UC envía 0x1000 por bus de direcciones a RAM
- RAM responde con 32 bits:
10001100000000010000000000000000 - Instrucción llega por bus de datos al procesador
-
Decode:
- op=
100011(LW - Load Word, formato I) - rs=
00000(R0 - registro base) - rt=
00001(R1 - registro destino) - inmediato=
0000000000000000(desplazamiento 0)
- op=
- Operandos: Calcula dirección efectiva: R0 + 0 = dirección de A
- Execute: Solicita a memoria el valor en dirección de A, recibe 5
- Write-back: Almacena 5 en registro R1
Instrucción 2: LW R2, 4(R0) - Cargar B en R2
Binario MIPS: 10001100000000100000000000000100
-
Fetch:
- PC incrementado a 0x1004
- UC solicita instrucción en 0x1004 desde RAM
- RAM devuelve:
10001100000000100000000000000100
-
Decode:
- op=
100011(LW), rs=00000(R0), rt=00010(R2) - inmediato=
0000000000000100(desplazamiento 4)
- op=
- Operandos: Dirección efectiva: R0 + 4 = dirección de B
- Execute: Obtiene valor 3 de memoria
- Write-back: Almacena 3 en registro R2
Instrucción 3: ADD R3, R1, R2 - Sumar R1 + R2 → R3
Binario MIPS: 00000000001000100001100000100000
-
Fetch:
- PC en 0x1008
- UC solicita instrucción desde RAM
- Recibe:
00000000001000100001100000100000
-
Decode:
- op=
000000(tipo R), rs=00001(R1), rt=00010(R2) - rd=
00011(R3), funct=100000(ADD)
- op=
- Operandos: Lee R1 (valor 5) y R2 (valor 3) desde banco de registros
- Execute: ALU ejecuta 5 + 3 = 8
- Write-back: Guarda resultado 8 en registro R3
Instrucción 4: SW R3, 8(R0) - Guardar R3 en C
Binario MIPS: 10101100000000110000000000001000
-
Fetch:
- PC en 0x100C
- UC obtiene de RAM:
10101100000000110000000000001000
-
Decode:
- op=
101011(SW - Store Word), rs=00000(R0) - rt=
00011(R3), inmediato=0000000000001000(desplazamiento 8)
- op=
- Operandos: Calcula dirección: R0 + 8 = dirección de C
- Execute: Envía valor de R3 (8) a memoria en dirección de C
- Write-back: No aplica (operación de escritura a memoria)
[INSERTAR FIGURA: Diagrama temporal mostrando cada fase para cada instrucción]
Rol de Caché y Registros
Registros: Almacenan temporalmente los operandos (R1, R2, R3). Acceso en 1 ciclo de reloj.
Caché L1: Si los valores A y B estaban recientemente usados, se obtienen de caché (3-4 ciclos) en lugar de RAM (100+ ciclos).
Caché L2/L3: Backup de L1, mantienen copias de datos frecuentemente usados.
[INSERTAR FIGURA: Jerarquía de memoria mostrando tiempos de acceso]
4. Actividades
Actividad A: Decodificación Manual (20 minutos)
Decodifica las siguientes instrucciones binarias usando el estándar MIPS e indica qué operación realizan:
00000001000010010100000000100000(Formato R)10001100001000100000000000000100(Formato I)00010000001000100000000000001000(Formato I)00100000001000100000000000001010(Formato I)
Para cada instrucción indica:
- Formato utilizado (R, I o J)
- Significado de cada campo
- Operación que realiza
- Registros involucrados
Actividad B: Simulación de Ejecución (25 minutos)
Simula la ejecución completa de este programa que calcula D = (A × 2) + B:
Memoria inicial: A = 7 (dirección 0x2000), B = 4 (dirección 0x2004)
Dirección Instrucción Código Binario MIPS
0x1000 LW R1, 0x2000(R0) 10001100000000010010000000000000
0x1004 ADD R2, R1, R1 00000000001000010001000000100000
0x1008 LW R3, 0x2004(R0) 10001100000000110010000000000100
0x100C ADD R4, R2, R3 00000000010000110010000000100000
0x1010 SW R4, 0x2008(R0) 10101100000001000010000000001000
Completa la tabla de seguimiento:
| Instrucción | Fase | PC | Código desde RAM | Componente Activo | Operación Específica | Estado Registros |
|---|---|---|---|---|---|---|
| LW R1, 0x2000(R0) | Fetch | 0x1000 | 10001100000000010010000000000000 | UC + Bus | Solicita instrucción | R1=?, R2=?, R3=?, R4=? |
| LW R1, 0x2000(R0) | Decode | 0x1000 | - | UC | op=100011, rt=R1, offset=0x2000 | R1=?, R2=?, R3=?, R4=? |
| … | … | … | … | … | … | … |
Actividad C: Análisis de Rendimiento (15 minutos)
Explica por qué cada escenario afecta el rendimiento:
- Un dato está en caché L1 vs. debe buscarse en RAM
- Una instrucción requiere acceso a memoria vs. solo usa registros
- Hay dependencia entre instrucciones consecutivas
5. Presentación Oral (20 minutos)
Cada equipo presentará 5 minutos la solución de una actividad, explicando:
- Proceso de decodificación realizado
- Justificación de cada fase identificada
- Análisis del rol de cada componente
6. Recursos de Apoyo
Lecturas Recomendadas:
- “Organización y Arquitectura de Computadores” - William Stallings (Cap. 3-4)
- “Arquitectura de Computadores” - Morris Mano (Cap. 5-6)
Videos de YouTube (en español):
- “Ciclo de Instrucciones del Procesador” - Canal Informática Educativa
- “Decodificación de Instrucciones MIPS” - Arquitectura de Computadores UNAL
- “Funcionamiento de la Memoria Caché” - TecnoEducativo
Documentos PDF:
- Manual básico de arquitectura MIPS
- Guía de códigos de operación comunes
- Diagrama detallado de jerarquía de memoria
7. Rúbrica de Evaluación
| Criterio | Nivel 1 (1.0-2.0) | Nivel 2 (2.1-3.0) | Nivel 3 (3.1-3.5) | Nivel 4 (3.6-4.5) | Nivel 5 (4.6-5.0) |
|---|---|---|---|---|---|
| Decodificación | No identifica campos ni opcodes correctamente | Identifica algunos campos básicos con errores | Decodifica correctamente la mayoría de instrucciones | Decodifica todas las instrucciones con explicación clara | Decodifica perfectamente y explica variaciones de formato |
| Fases de Ejecución | No distingue las fases del ciclo | Identifica 2-3 fases sin orden correcto | Identifica 4-5 fases en orden básico | Explica todas las fases con detalle y orden correcto | Domina todas las fases y explica interacciones complejas |
| Rol de Componentes | No identifica función de componentes | Identifica función básica de 1-2 componentes | Explica función de registros y ALU | Explica función de todos los componentes principales | Explica componentes y sus interacciones avanzadas |
| Análisis de Rendimiento | No relaciona componentes con rendimiento | Identifica 1 factor de rendimiento | Explica 2-3 factores básicos | Analiza múltiples factores con justificación | Análisis completo con optimizaciones propuestas |
| Presentación Oral | Lectura sin comprensión evidente | Explicación básica con algunos errores | Presentación clara de conceptos principales | Presentación organizada con buen dominio | Presentación excepcional con ejemplos adicionales |

Comments
Post a Comment