ARM Instruction Set Simulator , ARMulator , es una de las herramientas de desarrollo de software proporcionada por la unidad de negocios de sistemas de desarrollo de ARM Limited a todos los usuarios de chips basados en ARM. Debe su herencia al desarrollo temprano de la instrucción establecida por Sophie Wilson . Parte de esta herencia todavía es visible en la provisión de un modelo Tube BBC Micro en ARMulator.
Características
ARMulator está escrito en C y proporciona más que un simulador de conjunto de instrucciones, proporciona una plataforma virtual para la emulación del sistema. Viene listo para emular un procesador ARM y ciertos coprocesadores ARM . Si el procesador es parte de un sistema integrado , los licenciatarios pueden extender ARMulator para agregar sus propias implementaciones del hardware adicional al modelo de ARMulator. ARMulator proporciona una serie de servicios para ayudar con el comportamiento basado en el tiempo y la programación de eventos, y se envía con ejemplos de expansiones de coprocesadores y mapas de memoria. De esta manera, pueden usar ARMulator para emular todo su sistema integrado . Una limitación clave para ARMulator es que solo puede simular una sola CPU ARM a la vez, aunque casi todos los núcleos ARM hasta ARM11 están disponibles.
El rendimiento de ARMulator es bueno para la tecnología empleada, se trata de aproximadamente 1000 instrucciones de host (PC) por instrucción de ARM. Esto significa que las velocidades emuladas de 1 MHz eran normales para las PC de mediados a finales de los 90. La precisión también es buena, aunque se clasifica como precisa de recuento de ciclos en lugar de precisa de ciclos, esto se debe a que la tubería ARM no está completamente modelada (aunque los enclavamientos de registro sí lo son). La resolución es para una instrucción, como consecuencia, cuando se ignoran los enclavamientos de registro de paso único y se devuelven diferentes recuentos de ciclos que si el programa simplemente se hubiera ejecutado, esto era inevitable.
Probar ARMulator siempre fue un desafío que requería mucho tiempo, ya que se emplearon las suites completas de validación de la arquitectura ARM. Con más de 1 millón de líneas de código C, era un producto bastante pesado.
ARMulator permite la depuración en tiempo de ejecución utilizando armsd (ARM Symbolic Debugger) o cualquiera de los depuradores gráficos que se enviaron en SDT y los productos ADS posteriores. ARMulator adolecía de ser una herramienta invisible con una configuración de archivo de texto (armul.conf) que muchos encontraron compleja de configurar.
ARMulator II formó la base para los modelos de coverificación de ciclo invocables de alta precisión de los procesadores ARM, estos modelos CoVs (ver Cycle Accurate Simulator ) fueron la base de muchos sistemas de CoVerificación para procesadores ARM.
Disponibilidad
ARMulator estuvo disponible en una amplia gama de plataformas a lo largo de su vida, incluidas Mac , plataformas RISC OS , DEC Alpha , HP-UX , Solaris , SunOS , Windows , Linux . A mediados de la década de 1990, había renuencia a admitir plataformas Windows; antes de Windows 95, era una plataforma relativamente desafiante. A finales de la década de 1990 y principios de la de 2000, se eliminó el soporte para todos menos Solaris, Windows y Linux, aunque sin duda la base del código sigue plagada de pragmas como #ifdef RISCOS.
ARMulator II se envió en los primeros kits de herramientas de ARM, así como en los posteriores SDT 2.5, SDT 2.5.1, ADS 1.0, ADS 1.1, ADS 1.2, RCVT 1.0 y también por separado como RVISS. Se produjeron modelos especiales durante el desarrollo de las CPU, en particular ARM9E , ARM10 y ARM11 , estos modelos ayudaron con decisiones arquitectónicas como Thumb-2 y TrustZone.
ARMulator se ha eliminado gradualmente y ha sido reemplazado por modelos de CPU y sistema de alto rendimiento basados en compilación Just-in-time (consulte el enlace FastSim a continuación).
ARMulator I se hizo de código abierto y es la base para la versión GNU de ARMulator. Las diferencias clave están en la interfaz de memoria y los servicios, también la decodificación de instrucciones se realiza de manera diferente. GNU ARMulator está disponible como parte del depurador GDB en ARM GNU Tools.
ARMulator II formó la base para los modelos de coverificación de ciclo invocables de alta precisión de los procesadores ARM, estos modelos CoVs (ver Cycle Accurate Simulator) fueron la base de muchos sistemas de CoVerificación para procesadores ARM. Seamless de Mentor Graphic tiene el sistema CoV líder en el mercado que admite muchos núcleos ARM y muchas otras CPU.
ARMulator II se envió en los primeros kits de herramientas de ARM, así como en los posteriores SDT 2.5, SDT 2.5.1, ADS 1.0, ADS 1.1, ADS 1.2, RVCT 1.0 y también por separado como RVISS.
Los colaboradores clave de ARMulator II fueron Mike Williams, Louise Jameson, Charles Lavender, Donald Sinclair, Chris Lamb y Rebecca Bryan (quien trabajó en ARMulator como ingeniero y luego como gerente de producto). Allan Skillman, que en ese momento estaba trabajando en los modelos de coverificación ARM, también hizo una aportación significativa.
Un colaborador clave de ARMulator I fue Dave Jaggar .
Se produjeron modelos especiales durante el desarrollo de las CPU, en particular ARM9E, ARM10 y ARM11, estos modelos ayudaron con decisiones arquitectónicas como Thumb-2 y TrustZone.
Ver también
enlaces externos
- Información oficial de ARMulator
- Página de inicio de uClinux GDB ARMulator
- Guía del usuario de RVISS (ARMulator)
- Página de inicio de Mentor's Seamless
- Página de inicio de Imperas: desarrollador de un conjunto de herramientas de software integradas que utilizan modelos de plataforma virtual de los núcleos ARM
- Documentación de modelos ARM Fast (FastSim)
- Emulador de Arquímedes de Bellota de Ardilla Roja
- Una lista de emuladores ARM de código abierto
- Depurador GNU