← Fundamentos de Sistemas Embebidos

Clase 02

M.C. José Mauricio Matamoros de María y Campos · 31 ago 2026 · Tema 2 — Organización, arquitectura y plataformas · arquitecturas RISC vs. CISC recorriendo PIC, AVR, ESP32, RP2040/Cortex-M e Intel x86; memoria caché y el cuello de botella CPU–RAM.

En corto

🎯 Para el examen (lo que el profesor marcó explícito)

RISC vs. CISC — el eje de la clase

RISC (ARM, PIC, AVR…)CISC (Intel x86)
MemoriaPrograma y datos separados (Harvard)Unificada; instrucciones operan directo sobre memoria
Catálogo~1000 instrucciones, ancho fijoMillones de combinaciones de mnemónicos, ancho variable
EstiloCasi todo load/store pasando por un registro/acumuladorInstrucciones complejas que hacen varias cosas a la vez
CostoMuy verboso (más instrucciones por operación)…Código más compacto…
…pero el pipeline vuelve ese costo irrelevante en rendimiento…a cambio de un decodificador mucho más caro

"La pata donde cojean" las RISC: todo trabajo aritmético pasa por un registro, lo que obliga a accesos constantes a memoria. El pipeline es lo que las hace competitivas.

Todos los Intel de escritorio están basados, por herencia, en la arquitectura del 8086 (80x86 / IA-32).

PIC — arquitectura RISC de 8 bits

AVR — el microcontrolador de Arduino

ESP32 — sistema integrado con red

Memoria caché y latencia de acceso

RP2040 — Raspberry Pi Pico

Familia Cortex-M — cómo elegir (criterio de ingeniería)

NúcleoPunto flotanteCuándo
Cortex-M0Sin FPU. Cada operación con decimales se aproxima por software inyectando ~30 instrucciones enteras en el pipeline.El más barato (~1 USD). Sirve si casi no hay matemáticas de flotante.
Cortex-M3Soporta flotantes pero no optimizados; tiene hardware de multiplicación → divide calculando el inverso multiplicativo del divisor y multiplicando.Punto intermedio.
Cortex-M4FPU nativa: multiplica y divide flotante por hardware en un paso.Óptimo cuando la aplicación usa mucho punto flotante.
Cortex-M7FPU + unidad vectorial (DSP).Overkill salvo que se necesiten algoritmos avanzados de procesamiento de señales.

Si el sistema necesita red, el ESP32 es buena opción por su cripto SHA por hardware. El desafío que lanzó el profesor: programar en C un cociente de flotantes usando solo variables enteras, con corrimientos de bits y manipulación de la mantisa.

Compilación y micro-instrucciones

El compilador traduce el código de alto nivel a ensamblador de la arquitectura (ARMv6-M para Cortex-M0/M0+). Después, el decodificador de hardware descompone cada instrucción de ensamblador en micro-operaciones internas del núcleo (cargas, almacenamientos, operaciones de acumulador). Un int de C en RISC se traduce en varias instrucciones básicas de load y store.

Intel: CISC por fuera, RISC por dentro

Microarquitectura interna de un Intel moderno:

  1. Un decodificador con predictor de saltos toma las instrucciones y las lleva a la caché L1-I (32 KB, 8 vías).
  2. El predecodificador jala 16 bytes por ciclo.
  3. Descompone las instrucciones CISC complejas en micro-operaciones RISC elementales (micro-fusion). Hay decodificadores simples y uno completo, dimensionados sabiendo que el 60–75 % del código son cargas y descargas repetitivas.
  4. Las µops entran a una cola y pasan a un planificador / reordenador de hardware (ejecución fuera de orden).
  5. Renombrado de registros: hay muchos más registros físicos que los 8 nominales de x86. El procesador renombra los nominales a físicos libres y puede correr dos programas independientes de 32 bits en paralelo por hardware, sin hilos del SO ni semáforos.

Puertos de ejecución: Coffee Lake (2017) tenía 8 puertos (0–7) → un Intel de 4 núcleos paraleliza hasta 32 µops por ciclo. Golden Cove (2021) sube a 12 puertos (P0–P11), con cola de reordenamiento de 512 entradas: 2 puertos de store, 2 de load y 5 de cómputo pesado (3 de ellos vectoriales).

Caché multinivel en multinúcleo: regla obligatoria de ≥ 2 niveles — L1 y L2 a nivel núcleo, L3 global —, con la L1 dividida en datos (D) e instrucciones (I).

Práctica de laboratorio (sesión siguiente)