Saltar a contenido

Resumen


🖥️ Limitaciones de Hardware

  1. Jerarquía de memoria limitada:
  2. La caché L1/L2 por núcleo es pequeña (KB-MB) vs. RAM (GB)
  3. El tamaño reducido genera cache misses (compulsorios, de capacidad, de conflicto)

  4. Latencia en acceso a memoria:

  5. Cada cache miss obliga a acceder a RAM, mucho más lenta
  6. Penalización de latencia afecta directamente el rendimiento paralelo

  7. Problemas de coherencia de caché:

  8. Protocolos como MESI añaden overhead al mantener consistencia entre núcleos
  9. Comunicación entre cachés introduce retardos

  10. False Sharing (Falso compartimiento):

  11. Hilos que acceden a variables distintas en una misma línea de caché se invalidan mutuamente
  12. Genera sincronización innecesaria y reduce rendimiento

  13. Recursos físicos compartidos:

  14. Aunque hay múltiples núcleos, comparten caché L3 y bus de memoria
  15. Contención por acceso a recursos compartidos limita escalabilidad

📟 Limitaciones de Software

  1. Ley de Amdahl:
  2. Limitación teórica por la fracción no paralelizable \((1-P)\)
  3. Máximo speedup acotado incluso con recursos infinitos: \(S = \frac{1}{1-P}\)
  4. Ej: Si solo el 60% es paralelizable, el máximo speedup es 2.5×

  5. Diseño algorítmico:

  6. No todos los algoritmos son paralelizables eficientemente
  7. Dependencia de datos entre hilos requiere sincronización (locks, semáforos)

  8. Overhead de gestión de hilos:

  9. Creación, sincronización y comunicación entre hilos añade costo adicional
  10. El paralelismo puede volverse contraproducente en cargas pequeñas

  11. Falta de localidad:

  12. Si los hilos no trabajan con datos locales en caché, aumentan los misses
  13. Algoritmos deben diseñarse con localidad espacial/temporal

🧠 Conclusión

El hardware impone límites físicos (tamaño de caché, latencia, coherencia), mientras el software tiene límites teóricos (Ley de Amdahl) y prácticos (diseño de algoritmos). La paralelización eficiente requiere optimizar ambos aspectos.