← 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

🎯 Para el examen

ISA vs. Microarquitectura

Instruction Set Architecture (ISA): organización funcional del procesador desde la perspectiva del software.

Microarquitectura: diseño e implementación física detallada del procesador que ejecuta una ISA.

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):

RISC (Reduced Instruction Set Computer):

Comparativa visual:

Arquitecturas Comerciales: x86, ARM, RISC-V

x86 (Intel, AMD):

ARM (ARM Holdings):

RISC-V:

Raspberry Pi Pico: Pico 1 (RP2040) vs. Pico 2 (RP2350)

Pico 1 (RP2040, 2021):

Pico 2 (RP2350, 2024):

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):

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:

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

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:

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)

Video 2: Reseña Técnica de Raspberry Pi Pico 2 (RP2350)

Contexto — no examen
Pendiente / próximas clases