Fundamentos de Arquitectura de Computadores: ISA, Datapath y Procesadores
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 2,05 MB
1. ISA (Instruction Set Architecture)
Es la interfaz entre el hardware y el software. Define los siguientes elementos fundamentales:
- Conjunto de instrucciones
- Formato de instrucciones
- Registros del procesador
- Modos de direccionamiento
- Tipos de datos
- Modelo de memoria
📌 En pocas palabras: Es la visión que tiene el programador sobre el funcionamiento del procesador.
2. Tipos de Arquitectura
RISC (Reduced Instruction Set Computer)
Se caracteriza por:
- Instrucciones simples.
- Tamaño fijo de instrucciones.
- Gran cantidad de instrucciones elementales.
- Acceso a memoria restringido a operaciones de load/store.
- Diseño optimizado para pipeline.
Ejemplos: ARM, MIPS, RISC-V.
CISC (Complex Instruction Set Computer)
Se caracteriza por:
- Instrucciones complejas.
- Tamaño variable.
- Capacidad de realizar varias operaciones en una sola instrucción.
- Hardware de mayor complejidad.
Ejemplo: x86.
3. Componentes principales del CPU
3.1. Banco de registros
Memoria pequeña y de alta velocidad integrada dentro del CPU (ejemplos: R0, R1, R2, R3...).
3.2. ALU (Arithmetic Logic Unit)
Unidad encargada de realizar operaciones aritméticas (suma, resta) y lógicas (AND, OR, comparaciones).
3.3. Unidad de Control
Gestiona las operaciones de la ALU, el acceso a memoria y la escritura en registros. Puede implementarse mediante una FSM (Máquina de estados finitos).
4. Datapath
Es el camino que siguen los datos dentro del procesador. Incluye componentes como la ALU, registros, multiplexores, buses, memoria, PC e IR. Describe cómo viajan los datos en el CPU.
5. Flujo de ejecución de instrucciones
El ciclo típico de instrucción consta de:
- FETCH: Obtención de la instrucción de memoria (IR ← Mem[PC]; PC ← PC + 4).
- DECODE: Identificación de la instrucción.
- EXECUTE: Operación realizada por la ALU.
- MEMORY: Acceso a memoria si es necesario.
- WRITEBACK: Escritura del resultado en un registro.
6. Registros importantes
- PC (Program Counter): Guarda la dirección de la siguiente instrucción (PC ← PC + 4).
- IR (Instruction Register): Guarda la instrucción actual.
7. Ecuaciones de transferencia
Describen las operaciones de hardware, por ejemplo: PC ← PC + 4, IR ← Mem[PC], R1 ← R2 + R3.
8. Unidad de control con FSM
Se implementa mediante máquinas de estado finito:
- Moore: La salida depende solo del estado.
- Mealy: La salida depende del estado y las entradas.
9. Modelado de Hardware
Se utilizan lenguajes como VHDL o Verilog para diseñar, simular y verificar el procesador.
10. Pipeline
Divide la ejecución en etapas (IF, ID, EX, MEM, WB) para aumentar el rendimiento al procesar varias instrucciones simultáneamente.
11. Formato de instrucciones (32 bits)
Ejemplo tipo MIPS: opcode | rs | rt | rd | shamt | funct.
| Campo | Función |
|---|---|
| opcode | Tipo de instrucción |
| rs | Registro fuente |
| rt | Registro fuente |
| rd | Registro destino |
| shamt | Shift |
| funct | Operación |
11.1. Operaciones Lógicas
- AND: 1 solo si ambos son 1.
- OR: 1 si alguno es 1.
- XOR: 1 si son diferentes.
- NOT: Invierte todos los bits.
- NAND/NOR: Negaciones de AND y OR.
11.2. Instrucciones de comparación
- SLT: Compara con signo. Si rs1 < rs2, rd = 1.
- SLTU: Compara sin signo. Si rs1 < rs2, rd = 1.
11.3. Instrucciones de desplazamiento
- SLL (Shift Left Logical): Desplaza a la izquierda, rellena con ceros.
- SRL (Shift Right Logical): Desplaza a la derecha, rellena con ceros.
- SRA (Shift Right Arithmetic): Desplaza a la derecha, conserva el signo.
11.4. Instrucciones de salto condicional
Instrucción | Condición | Comprobación ALU
- BEQ: Salta si igual (Z = 1)
- BNE: Salta si distinto (Z = 0)
- BLT: Salta si menor (N ⊕ V = 1)
- BGE: Salta si mayor o igual (N ⊕ V = 0)
- BLTU: Salta si menor sin signo (C = 1)
- BGEU: Salta si mayor o igual sin signo (C = 0)
12. JAL / JALR (Saltos y Enlaces)
Permiten saltar a una dirección y guardar la dirección de retorno en un registro.
- JAL: Salta a PC + offset, guarda PC + 4 en rd.
- JALR: Salta a rs1 + inmediato, guarda PC + 4 en rd.
Ejercicio Resuelto: JAL
Ejecutar JAL con PC = 0x00001000, Offset = 0x00000020, rd = x1.
- Dirección de salto: 0x00001000 + 0x00000020 = 0x00001020.
- Dirección de retorno: 0x00001000 + 4 = 0x00001004.
- Resultado: x1 = 0x00001004, Nuevo PC = 0x00001020.