Arquitectura de computadoras: herramientas interesantes

Si eres un fanático de la arquitectura de computadoras, o estás estudiando esta materia, seguro que te interesará conocer algunas herramientas que no muchos conocen, pero que pueden resultar bastante prácticas para la comprensión y el análisis.

En artículos previos ya dejé recursos para los que necesiten aprender sobre RISC-V, además de otros artículos con herramientas para los que quieran adentrarse en la electrónica, diseño de PCBs, etc. Ahora doy un paso más allá y te presento estas otras herramientas…

Inspeccionar la ISA de tu CPU

pines cpu, multinúcleo heterogéneo

Una de las herramientas interesantes es Sandsifter, que permite auditar la arquitectura de instrucciones para localizar instrucciones ocultas no documentadas o bugs de hardware. Es de código abierto, gratuita y diseñada para CPUs x86.

Para funcionar, genera sistemáticamente código máquina para buscar el conjunto de instrucciones de un procesador y supervisa la ejecución para detectar anomalías. Eso sí, el test puede durar bastante tiempo, en función del repertorio de instrucciones soportado por la CPU analizada. Podría durar unas horas e incluso algunos días…

Descargar Sandsifter e información de uso

Optimización de arquitectura

microprocesador

Likwid también es una suite de herramientas de código abierto y gratuita interesante para arquitectura de computadoras. Con ella tendrás varios programas orientados al rendimiento, funcionando sobre procesadores de Intel, AMD, ARM y POWER en sistemas operativos GNU/Linux. También tiene soporte adicional para GPUs NVIDIA.

Puedes usarlas para comprender mejor el rendimiento y la arquitectura, ya que cuentas con herramientas como:

  • likwid-topology: imprimir la topología de hilos, caché y NUMA.
  • likwid-perfctr: configura y lee los contadores de rendimiento del hardware en los procesadores Intel, AMD, ARM y POWER y en las GPUs Nvidia.
  • likwid-powermeter: lee la información de energía RAPL (Running Average Power Limit) y obtiene información sobre los pasos del modo Turbo.
  • likwid-pin: se puede utilizar con implementaciones de hilos que utilicen la llamada a la API pthread_create y que estén enlazados dinámicamente (pthread, Intel y gcc OpenMP para procesadores dedicados).
  • likwid-bench: plataforma de microcomparación para arquitecturas de CPU.
  • likwid-features: imprime y manipula las características de la CPU como los prefetchers de hardware (sólo x86).
  • likwid-genTopoCfg: vuelca la información de la topología (CPU, cache, NUMA) a un fichero.
  • likwid-mpirun: envoltura para iniciar aplicaciones MPI y MPI híbrido/OpenMP (Soporta Intel MPI, OpenMPI, MPICH y SLURM)
  • likwid-perfscope: front-end para el modo de línea de tiempo de likwid-perfctr, traza gráficos en vivo de las métricas de rendimiento utilizando GNU Plot.
  • likwid-memsweeper: barre la memoria de los dominios NUMA y desaloja las líneas de la caché de último nivel.
  • likwid-setFrequencies: herramienta para controlar las frecuencias de la CPU y Uncore (sólo x86).

Descargar Likwid e información de uso

Más herramientas

herramientas software

También te recomiendo los applets Java de Israel Koren de la Universidad de Massachusetts, que ha creado un buen repertorio de herramientas para el tema de arquitectura de computadoras. Puedes acceder a ellas desde aquí.

También puedes usar algunas herramientas de los siguientes tipos:

  • Obtener información del CPUID, del hardware, etc. Tienes mucho software de este tipo, como Hardinfo, I-Nex, y CPU-X para GNU/Linux.
  • Ensamblador / Desensamblador
  • Simulador de microprocesador
  • Emulador de CPU
  • Herramientas de estrés y benchmarking
  • Overclocking/Underclocking/Overvolting/Undervolting
  • Otros

En el pasado había herramientas como MIES, MICRO, etc. Aunque muchas de ellas no están ya disponibles. Por otro lado, diseñadores como AMD, Intel, NVIDIA, Qualcomm, etc., usan sus propias herramientas, pero no se puede acceder a ellas. También existe software de desarrolladores como Cadence, Mentor, Siemens, Maxim Integrated,… que también pueden ser interesantes, aunque son propietarias.

Bibliografía recomendada

Libros recomendados

Si te interesa seguir aprendiendo del tema, además de los recursos de este blog, también te recomiendo algunos de los mejores libros:

  • Modern Processor Design: Fundamentals of Superscalar Processors – John Paul Shen y Mikko H. Lipasti
  • Computer Organization and Design RISC-V Edition: The Hardware Software Interface – David A. Patterson y John L. Hennessy
  • Estructura y diseño de computadores: La interfaz hardware/software – David A. Patterson y John L. Hennessy
  • Arquitectura de computador de computadores: Un enfoque cuantitativo – John L. Hennessy y David A. Patterson
  • Computer Architecture: Pipelined and Parallel Processor Design –  Michael J. Flynn
  • Computer Organization and Architecture: Designing for Performance – William Stallings

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto:

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar