← Organización y Arquitectura de Computadoras
Clase 04
M.I. José Antonio de Jesús Arredondo Garza · 9 sep 2026 · Tema 2 (continuación) — ISA vs. Microarquitectura, CISC vs. RISC, RISC-V vs. ARM vs. x86. Raspberry Pi Pico 1 vs. Pico 2 (RP2350): FPU, benchmarks, PIO, mecanismo de selección de arquitectura en arranque. Videos técnicos: RISC-V vs ARM vs x86, Pico 2 architecture review.
En corto
- ISA vs Microarquitectura: ISA = especificación de instrucciones y registros (interfaz de programador) · Microarquitectura = implementación física en silicio (cambia cada generación).
- CISC vs RISC: CISC = instrucciones complejas de longitud variable (1–15 bytes), más código pero heterogéneo · RISC = instrucciones simples de longitud fija, homogéneo, menor consumo.
- Arquitecturas comerciales: x86 (CISC, servidores/PC) · ARM (RISC, móviles/Apple Silicon, licencias pagadas) · RISC-V (abierto, sin regalías, adoptado por Google/Nvidia/Alibaba).
- Pico 1 (RP2040) vs Pico 2 (RP2350): Pico 2 = 4 núcleos (2x ARM Cortex-M33 + 2x RISC-V Hazard3), 520 KB SRAM, 4 MB Flash QSPI externa, FPU integrada, hasta 150 MHz (overclocking ~350 MHz).
- FPU: acelerador de punto flotante integrado, 32 registros (s0–s31), reduce tiempo de ejecución de operaciones flotantes de 125 µs–220 ms a 102 µs.
- PIO: mini-FPGA programable para crear periféricos personalizados (3 interfaces, 12 máquinas de estado en Pico 2) independientes de la CPU.
🎯 Para el examen
- ISA vs Microarquitectura: diferencia fundamental, ejemplos concretos (Intel x86 mantiene ISA pero cambia microarquitectura generación tras generación).
- CISC vs RISC: características, trade-offs, ejemplos (x86 vs. RISC-V), consumo energético y densidad de código.
- Arquitectura abierta vs propietaria: RISC-V libre de licencias · ARM con regalías · x86 cerrado.
- Especificaciones Pico 2 (RP2350): cantidad de núcleos, SRAM, Flash externa, FPU, frecuencia base y overclocking máximo.
- Ciclo Fetch: impacto del overclocking en la velocidad del ciclo de reloj.
- FPU: beneficio de aceleradores de hardware en punto flotante; interpretación de benchmarks.
- PIO: propósito como máquinas de estado programables independientes; no consume ciclos de CPU principal.
ISA vs. Microarquitectura
Instruction Set Architecture (ISA): organización funcional del procesador desde la perspectiva del software.
- Define qué instrucciones puede ejecutar el procesador.
- Especifica la estructura de memoria (direccionamiento lineal, segmentado, etc.).
- Define el conjunto de registros visibles al programador (AX, BX, PC, SP en x86; x0–x31 en RISC-V).
- Codifica el "idioma" de la máquina: binario de instrucciones, formatos, modos de direccionamiento.
- Permanece estable durante años (ej. x86 desde 1978 mantiene compatibilidad hacia atrás).
Microarquitectura: diseño e implementación física detallada del procesador que ejecuta una ISA.
- Incluye datapath (ALU, registros, multiplexores), unidad de control, caché, predicción de saltos, ejecución fuera de orden.
- Cambia en cada generación de silicio para mejorar rendimiento, consumo energético y densidad transistórica.
- Ejemplo: Intel Pentium, Pentium Pro, Core i3/i5/i7 comparten ISA x86 pero difieren radicalmente en microarquitectura.
Implicación para el programador: código ensamblador escrito para ISA x86 ejecuta en procesadores Pentium de 1993 y en i9 moderno (compatibilidad), pero la microarquitectura determina velocidad y eficiencia.
CISC vs. RISC — Filosofías de Diseño
CISC (Complex Instruction Set Computer):
- Conjunto de instrucciones: amplio y heterogéneo (x86 tiene ~1500 instrucciones).
- Longitud de instrucción: variable (1 a 15 bytes en x86), ocupa diferentes espacios en memoria.
- Complejidad de operaciones: instrucción única puede realizar operaciones complejas (ej. multiplicar dos números en memoria: `IMUL [mem1], [mem2]`).
- Código resultante: compacto, menos líneas de ensamblador para la misma tarea.
- Ciclos de reloj: heterogéneos por instrucción (algunas tardan 1 ciclo, otras 20+).
- Consumo energético: más alto por ciclo debido a decodificadores complejos y accesos múltiples a memoria.
- Ejemplos: Intel x86 (1978–presente), IBM System/360 (1964).
RISC (Reduced Instruction Set Computer):
- Conjunto de instrucciones: reducido y ortogonal (RISC-V tiene ~50 instrucciones base).
- Longitud de instrucción: fija (4 bytes en RISC-V, 32 bits en ARM Thumb es variable pero en bloques de 2 o 4).
- Complejidad de operaciones: instrucciones atómicas simples (carga, almacenamiento, operación ALU, salto).
- Código resultante: más líneas de ensamblador para resolver la misma tarea.
- Ciclos de reloj: homogéneos, casi todas las instrucciones tardan 1 ciclo (excepto carga/almacenamiento: 2–3 ciclos).
- Consumo energético: más bajo por ciclo, decodificadores simples.
- Pipeline: altamente optimizado, pocas dependencias de datos entre instrucciones consecutivas.
- Ejemplos: RISC-V (abierto, 2010–presente), ARM, MIPS.
Comparativa visual:
- CISC = navaja multiusos (compleja pero versátil).
- RISC = herramientas especializadas (simples pero coordinadas).
Arquitecturas Comerciales: x86, ARM, RISC-V
x86 (Intel, AMD):
- Filosofía: CISC, instrucciones complejas de longitud variable.
- Mercado: PCs, servidores, estaciones de trabajo (monopolio ~95% de mercado en 2000–2015).
- Consumo energético: alto (100–500 W en servidores).
- Historial: Intel 4004 (1971, 2,300 transistores) → 8086 (1978) → Pentium (1993) → Core i7 (2008) → Xeon (servidores actuales).
- Licencia: cerrada, propietaria.
- Intento fallido en móviles: Intel Atom fue diseñado para teléfonos pero falló por disipación térmica (el teléfono se calentaba demasiado).
ARM (ARM Holdings):
- Filosofía: RISC, instrucciones simples de longitud fija (32 bits) o variable comprimida (Thumb: 16 bits).
- Mercado: smartphones, tablets, Apple Silicon (M1, M2, M3, M4 en MacBook Pro), IoT.
- Consumo energético: bajo–medio (5–15 W en smartphones, 10–30 W en M4).
- Versiones: ARMv7 (32 bits, Cortex-A8/A9), ARMv8 (64 bits, Cortex-A72/A76), ARMv9 (Cortex-X1/A710).
- Licencia: pagada, ARM Holdings cobra por cada chip fabricado y diseño de núcleos (ej. Cortex-M4 = licencia anual + regalías por volumen).
- Dominancia actual: ~90% de procesadores en IoT/móviles (2023–2024).
RISC-V:
- Filosofía: RISC, arquitectura abierta, modular, libre de licencias y regalías.
- Mercado: emergente, adoptado por Google (SoCs Tensor), Nvidia (chips de IA), Alibaba (Xuantie), startups de semiconductores.
- Consumo energético: bajo (similar a ARM, por ser RISC).
- Ventaja competitiva: no hay pago de regalías, diseño flexible, escalabilidad desde microcontroladores (32 bits) a servidores (64 bits).
- Licencia: open-source, estándar Berkeley (BSD-like), cualquiera puede fabricar chips RISC-V sin pedir permiso.
- Proyección: esperado como alternativa a ARM en IoT/Edge dentro de 5–10 años.
Raspberry Pi Pico: Pico 1 (RP2040) vs. Pico 2 (RP2350)
Pico 1 (RP2040, 2021):
- Procesador: 2x ARM Cortex-M0+ @ 133 MHz (inicializado a 125 MHz).
- Memoria SRAM: 264 KB (integrada en el die).
- Memoria Flash: 2 MB QSPI externa (en la placa).
- FPU: No (emulación por software de punto flotante en MicroPython).
- PIO: 2 interfaces, 8 máquinas de estado programables en total.
- Costo: ~$4–5 USD.
Pico 2 (RP2350, 2024):
- Procesador: 2x ARM Cortex-M33 @ 150 MHz + 2x RISC-V Hazard3 @ 150 MHz (4 núcleos heterogéneos).
- Memoria SRAM: 520 KB (integrada en el die, 2x capacidad vs. Pico 1).
- Memoria Flash: 4 MB QSPI externa (2x capacidad).
- FPU: Sí, integrada (32 registros s0–s31 para punto flotante, acelerador de hardware).
- PIO: 3 interfaces, 12 máquinas de estado programables en total (50% más).
- Overclocking: soporta hasta ~350 MHz (vs. 250 MHz en Pico 1).
- Seguridad: TrustZone integrado (procesador ARM Cortex-M33 incluye seguridad).
- Costo: ~$8–10 USD.
Mecanismo de Selección de Arquitectura en Arranque (Pico 2): proceso controlado por software en el bootloader que determina si la placa arrancará en modo ARM Cortex-M33 o en modo RISC-V Hazard3. Implementado mediante un registro de la CPU leído en el inicio (warm boot detection).
FPU (Unidad de Punto Flotante) — Benchmarks Pico 1 vs Pico 2
Problema: operaciones de punto flotante (multiplicación, división, trigonométricas, logaritmos) son costosas computacionalmente. En Pico 1 sin FPU integrada, la emulación por software (mediante rutinas compiladas en MicroPython) es lenta.
Benchmark (mismo algoritmo de procesamiento flotante):
- Pico 1 (RP2040) sin FPU: tiempo de ejecución entre 125 µs y 220 ms (dependiendo de la complejidad).
- Pico 2 (RP2350) con FPU: tiempo de ejecución 102 µs (aceleración hardware ~2.15x más rápido en casos simples, hasta 2000x en operaciones complejas).
Registros de FPU: banco de 32 registros de punto flotante denominados s0 a s31 (single precision, 32 bits cada uno). Permiten operaciones FADD (suma), FMUL (multiplicación), FDIV (división), FSQRT (raíz cuadrada) en un solo ciclo de reloj.
Implicación: para cálculos de IA, DSP (procesamiento de señal), simulaciones físicas, la FPU integrada es crítica para rendimiento aceptable en microcontroladores.
PIO (Programmable I/O) — Mini-FPGA del Microcontrolador
¿Qué es PIO? periférico dedicado que funciona como máquinas de estado programables independientes, capaces de implementar protocolos de comunicación o control de periféricos sin consumir ciclos del procesador principal.
Especificaciones Pico 2:
- 3 interfaces PIO independientes.
- 12 máquinas de estado en total (4 por interfaz).
- Frecuencia de reloj: síncrona con el reloj del sistema (150 MHz en Pico 2).
- Capacidad: crear periféricos personalizados como SPI de 20–30 MHz, I2S (audio digital), protocolos IR, PWM, etc.
Ventaja arquitectónica: en lugar de usar interrupciones de software (costosas) o polling (consume CPU), PIO ejecuta de forma asincrónica periodos de comunicación complejos. Ejemplo: protocolo WS2812 (LED RGB addressable) se implementa en 10–15 líneas de código PIO, sin cargar a la CPU.
Comparativa: PIO ≈ FPGA ultraminimalista integrada en el microcontrolador.
Desglose de la nomenclatura RP2350
- RP2: serie de microcontroladores de Raspberry Pi (2 = segunda generación de Pico).
- 3: número que indica la familia de procesador: 3 = ARM Cortex-M33 (presencia de Cortex-M33, no solo M0+).
- 5: encode de la capacidad de SRAM: 5 = 2^5 × 16 KB = 32 × 16 KB = 512 KB (realmente 520 KB contando overhead del sistema).
- 0: memoria Flash interna del die: 0 = 0 KB de Flash interna (utiliza 4 MB QSPI externa en la placa, conectada vía bus SPI a 30 MHz).
Implicación: la nomenclatura codifica las especificaciones de hardware de forma compacta, facilitando identificación rápida de capacidades.
Overclocking e Impacto en el Ciclo Fetch
Ciclo Fetch (Fase 1 del ciclo de máquina): etapa donde la CPU lee la próxima instrucción desde memoria (o caché de instrucciones) y la coloca en el registro de instrucción (IR).
Relación con frecuencia de reloj: el ciclo fetch toma 1 ciclo de reloj (en arquitecturas RISC modernas con pipeline). Si aumentamos la frecuencia del reloj, el ciclo de reloj se acorta:
- Pico 1 a 133 MHz: ciclo de reloj = 1/133 MHz ≈ 7.5 ns.
- Pico 2 a 150 MHz (base): ciclo de reloj = 1/150 MHz ≈ 6.7 ns.
- Pico 2 con overclocking a 350 MHz: ciclo de reloj = 1/350 MHz ≈ 2.9 ns.
Consecuencia: el fetch ocurre más frecuentemente, lo que acelera la ejecución global de programas. Sin embargo, overclocking aumenta consumo de energía y temperatura (requiere disipación térmica).
Limitación en Pico 2: la memoria Flash QSPI externa tiene latencia intrínseca (~30 ns), por lo que fetch desde Flash remoto es más lento que desde caché o SRAM. El overclocking mejora fetch desde SRAM pero no tanto desde Flash.
Ensamblador Inline en MicroPython — Acceso Directo a Registros
Limitación de MicroPython puro: intérprete Python compilado a bytecode, no accede directamente a registros de hardware ni a FPU.
Solución: Decorador @micropython.asm_thumb en MicroPython: permite declarar subrutinas nativas en ensamblador ARM Thumb, operando directamente sobre registros y aceleradores (FPU).
Ejemplo (pseudocódigo):
@micropython.asm_thumb
def add_floats(r0, r1):
# r0, r1 son parámetros de entrada (registros flotantes s0, s1)
VADD(s0, s1, s2) # s0 += s1, resultado en s2
# retorna s2 en r0
Beneficio: combina flexibilidad de Python para lógica de control + velocidad de ensamblador nativo para operaciones críticas (DSP, cálculos flotantes).
Videos Técnicos Proyectados en Clase
Video 1: RISC-V vs. ARM vs. x86 (13 minutos)
- Explora las diferencias fundamentales entre ISA y microarquitectura.
- Analiza filosofías CISC (x86) vs. RISC (ARM, RISC-V).
- Contexto histórico: irrupción de RISC-V como disruptor en el mercado de licencias de ARM.
- Impacto en el costo de fabricación y adopción por fabricantes chinos (Alibaba Xuantie, Nvidia).
Video 2: Reseña Técnica de Raspberry Pi Pico 2 (RP2350)
- Desglose de la arquitectura heterogénea: 2x ARM Cortex-M33 + 2x RISC-V Hazard3.
- Capacidades de la FPU integrada.
- Demostraciones de PIO programado para periféricos personalizados.
- Comparativa de rendimiento vs. Pico 1 en benchmarks de punto flotante.
- Seguridad TrustZone y aislamiento de código de confianza.
Contexto — no examen
- (Contexto) Crítica del M.I. Arredondo a MicroPython: expresó su descontento con que Raspberry Pi enfatice MicroPython, señalando que oculta la arquitectura subyacente e incentiva el uso de librerías genéricas en lugar de programación de registros directa.
- (Contexto) Anécdota sobre Orange Pi 6: destacó la potencia de la tarjeta china Orange Pi 6 (12 núcleos ARM/RISC-V heterogéneos, opción de declarar núcleos adicionales como RISC-V, memoria LPDDR5 hasta 24 GB, 2 slots M.2 NVMe) a precio muy accesible (~$120 USD). Comentó que Orange Pi "le está comiendo el mandado" a Raspberry Pi en el mercado de maker/IoT profesional.
- (Contexto) Reflexión sobre regalías en arquitecturas propietarias: explicó cómo ARM Holdings no solo cobra licencia de diseño inicial (~$10–50 millones USD), sino que exige regalías porcentuales por cada chip fabricado si se alcanza cierto volumen de producción anual (~10 millones de unidades). Esta estructura de costos hace que RISC-V sea tan disruptivo: sin pago de regalías, las márgenes de ganancia en chips de volumen alto son significativamente mayores.
Pendiente / próximas clases
- Tema 3 (El Procesador): profundización completa en Transferencia entre Registros (RTL), diseño detallado de la ALU, Datapath (banco de registros, multiplexores, control de buses), Unidad de Control (microprogramada vs. hardwired), ciclos de máquina (Fetch, Decode, Execute, Write Back).
- Práctica directa en ensamblador ARM Thumb: próxima clase se iniciará la escritura paso a paso de:
* Toggle de un pin de puerto (LED).
* Rutina de lectura del registro de ID de procesador (CPUID).
* Implementación de una macro de delay en ciclos de reloj.