← Fundamentos de Sistemas Embebidos

Clase 04

M.C. José Mauricio Matamoros de María y Campos · 7 sep 2026 · Tema 2 (continuación) — Evolución x86 (Pentium P5 a AMD64), pipelines U/V, ejecución fuera de orden, compilación GCC, alineación de datos, MMX/SSE, batalla IA-64 vs. AMD64, HyperTransport e IMC.

En corto

🎯 Para el examen

Distribución estadística de instrucciones

Regla del 75/25 (o 60/40): en cualquier programa compilado:

Implicación arquitectónica: esta distribución fundamenta la separación de pipelines en el Pentium P5 y la filosofía RISC de mantener instrucciones simples rápidas para aprovechar los ciclos muertos.

Pentium P5 (1993) — Arquitectura superescalar de doble pipeline
Herramientas de compilación — GCC y banderas clave

Proceso de compilación modular en sistemas embebidos:

Alineación de memoria y struct packing

En arquitecturas de 64 bits, la memoria se organiza en palabras de 8 bytes (no por bytes).

Ejemplo de struct con padding (desperdicio):

struct Datos {
    int a;    // 4 bytes nominales → 8 bytes (alineado a palabra)
    int b;    // 4 bytes nominales → 8 bytes
    double c; // 8 bytes nominales → 8 bytes
};
// Cálculo teórico: 4 + 4 + 8 = 16 bytes
// Realidad: 8 + 8 + 8 = 24 bytes (relleno/padding)

Solución — Empaquetado (`packed`): directiva del compilador para forzar almacenamiento contiguo sin bytes de relleno, optimizando transmisión en ráfaga por bus serie/red:

struct Datos {
    int a;
    int b;
    double c;
} __attribute__((packed));  // Ahora pesa exactamente 16 bytes
Extensiones SIMD — MMX y SSE
Pentium Pro (P6) — Salto a arquitectura moderna
Evolución de x86 — Pentium II, III, 4
Guerra de los 64 bits — IA-64 vs. AMD64
AMD Opteron — Innovaciones arquitectónicas
Ejemplo — Reducción de complejidad: cierre convexo

Problema: dado un conjunto de puntos en un plano, encontrar el contorno convexo que los delimita.

Contexto — no examen
Pendiente / próxima clase