Desarrollador(es) | Imperios |
---|---|
Versión estable | 20231026.0 / 26 de octubre de 2023 ( 26/10/2023 ) |
Sistema operativo | Ventanas , Linux |
Tipo | Emulador |
Licencia | Propietario , Licencia Apache versión 2.0 para modelos |
Sitio web | www.ovpworld.org |
OVPsim es un emulador de plataforma multiprocesador (a menudo llamado simulador de sistema completo ) que se utiliza para ejecutar binarios de producción sin cambios del hardware de destino. Tiene API públicas que permiten a los usuarios crear sus propios modelos de procesador , periféricos y plataforma. Hay varios modelos disponibles como código abierto. [1] OVPsim es un componente clave de la iniciativa Open Virtual Platforms (OVP), [2] una organización creada para promover el uso de plataformas virtuales abiertas para el desarrollo de software integrado. OVPsim requiere el registro de OVP para descargarse.
OVPsim es desarrollado y mantenido por Imperas. [3] La plataforma de simulación principal es un software propietario ; está disponible de forma gratuita para uso no comercial. El uso comercial requiere una licencia de bajo costo de Imperas para cubrir el mantenimiento. Varios modelos de procesadores, periféricos y plataformas están disponibles como software gratuito bajo la Licencia Apache versión 2.0 .
Hay tres componentes principales de OVP: modelos de código abierto , simulador rápido OVPsim y API de modelado . Estos componentes están diseñados para facilitar el ensamblaje de plataformas heterogéneas u homogéneas de múltiples núcleos con jerarquías de memoria complejas, sistemas de caché y capas de software integrado que pueden ejecutarse a cientos de MIPS en PC de escritorio estándar. OVPSim se considera preciso en cuanto a instrucciones , pero no en cuanto a ciclos. Hay muchos ejemplos de componentes y plataformas virtuales completas que pueden iniciar un núcleo Linux en menos de 5 segundos en la página de inicio de OVP.
Dentro de OVP hay varias categorías de modelos diferentes. Estos modelos se proporcionan como código objeto precompilado y, en algunos casos, como archivos fuente. OVPsim ya no proporciona código fuente para los modelos de procesadores ARM y MIPS. Actualmente existen modelos de procesadores ARM (procesadores que utilizan los conjuntos de instrucciones ARMv4, ARMv5, ARMv6, ARMv7, ARMv8) hasta ARM Cortex-A72MPx4 (e incluyendo modelos ARMv8 multi-clúster con GICv3), Imagination MIPS (procesadores que utilizan los conjuntos de instrucciones MIPS32 , MIPS64 , microMIPS, nanoMIPS y MIPS R6) hasta los núcleos microAptiv, interAptiv, proAptiv y Warrior, Synopsys Virage ARC600/ARC700 y series ARC EM, Renesas v850 , RH850, RL78 y m16c, PowerPC , Altera Nios II , Xilinx MicroBlaze , RISC-V (modelos que utilizan RV32I de 32 bits, RV32M, RV32IM, RV32A, RV32IMA, RV32IMAC, RV32F, RV32D, RV32E, RV32EC, RV32C, RV32G, RV32GC, RV32GCN, RV32IMAFD y subconjuntos ISA RV64I, RV64M, RV64IMAC, RV64F, RV64D, RV64C, RV64G, RV64GC, RV64GCN, RV64IMAFD de 64 bits), Andes Technology N25/NX25, N25F/NX25F, A25/AX25, A25F/AX25F, Microsemi CoreRISCV/MiV-RV32IMA, SiFive E31, E51, U54, U54-MC, Freedom U540, núcleos RISC-V Codasip Series 1, 3, 5, 7, núcleo RISC-V Intel NiosV, DSP Texas Instruments TMS320 y familias OpenRisc . El grupo OpenHW utiliza OVPsim como referencia de oro para sus núcleos RISC-V CV32E40 y CV32E20 de código abierto. También hay modelos de muchos tipos diferentes de componentes del sistema, incluidos RAM, ROM, caché y puente. Hay modelos periféricos como Ethernet MAC, USB, DMA, UART y FIFO. Hay disponibles varias plataformas preconstruidas diferentes, incluidos los sistemas operativos más comunes [4] ucLinux , Linux , Android , FreeRTOS , Nucleus , Micrium.
Uno de los principales usos de la infraestructura de simulación OVP es la capacidad de crear y simular modelos personalizados, ya sea desde cero o utilizando uno de los modelos de código abierto como punto de partida. Las API de OVP están diseñadas para diferentes tipos de modelos: procesadores, modelos de comportamiento de periféricos y plataformas. Hay más de 100 variantes de modelos fuente disponibles para descargar.
El simulador OVPsim está disponible como referencia de OVP y es gratuito para uso no comercial. El simulador utiliza tecnología de traducción binaria dinámica para lograr velocidades de simulación muy altas. Es posible simular más de mil millones de instrucciones por segundo, en algunos casos en computadoras de escritorio comunes. OVPsim está disponible para hosts Windows y Linux x86 .
OVPsim incluye una interfaz GDB RSP (Remote Serial Protocol) que permite depurar aplicaciones que se ejecutan en procesadores simulados con cualquier depurador estándar que admita esta interfaz GDB RSP. OVPsim incluye el depurador gráfico Imperas iGui y también una interfaz Eclipse IDE y CDT.
OVPsim se puede encapsular y llamar desde otros entornos de simulación [5] y viene de serie con archivos de interfaz para C , C++ y SystemC . [6] OVPsim incluye archivos de interfaz nativos de SystemC TLM 2.0. También es posible encapsular modelos heredados de procesadores y modelos de comportamiento para que OVPsim pueda usarlos.
Los modelos OVP se crean mediante API de C / C++ . Hay tres API principales: OP, VMI, BHM/PPM.
La API OP está diseñada para controlar, conectar y observar plataformas. Esta API puede ser invocada desde C, C++ o SystemC. La plataforma proporciona la estructura básica del diseño y crea, conecta y configura los componentes. La plataforma también especifica el mapeo de direcciones y el software que se carga en los procesadores. Es muy fácil con OP especificar plataformas muy complejas y completas de muchos procesadores diferentes, memorias locales y compartidas, cachés, puentes de bus, periféricos y todos sus mapas de direcciones complejos, interrupciones y sistemas operativos y software de aplicación.
La API OP reemplazó a la API ICM durante 2016. La API ICM todavía se puede utilizar para plataformas más antiguas.
El modelado del procesador lo proporciona la API VMI. Estas funciones de API brindan la capacidad de describir fácilmente el comportamiento del procesador. Un modelo de procesador escrito en C utilizando la VMI decodifica la instrucción de destino que se va a simular y la traduce a instrucciones x86 nativas que luego se ejecutan en la PC. La VMI se puede utilizar para modelar arquitecturas de 8, 16, 32 y 64 bits. Existe un mecanismo de intercepción que permite la emulación de llamadas a funciones en las bibliotecas de tiempo de ejecución de la aplicación (como write, fstat, etc.) sin necesidad de modificar ni el modelo del procesador ni la aplicación simulada.
Los componentes de comportamiento, los periféricos y el entorno general se modelan utilizando código C y llamadas a estas dos API. Detrás de estas API hay un mecanismo de programación basado en eventos que permite modelar el tiempo, los eventos y la concurrencia. Los modelos periféricos proporcionan devoluciones de llamadas que se invocan cuando el software de aplicación que se ejecuta en procesadores modelados en la plataforma accede a las ubicaciones de memoria donde está habilitado el periférico.
OVPsim está siendo utilizado por múltiples establecimientos educativos para proporcionar una infraestructura de simulación para la investigación de plataformas de computación paralela , [7] [8] co-diseño de hardware/software, [9] análisis de rendimiento de sistemas integrados, [10] y como base para otros desarrollos de herramientas integradas. [ cita requerida ] También se aprovecha para cursos educativos para permitir que los estudiantes desarrollen y depuren software de aplicación y creen plataformas virtuales y nuevos modelos.
Varias organizaciones comerciales líderes también utilizan OVPsim como base de sus ofertas de productos. La tecnología fue licenciada por MIPS [11] Technologies para proporcionar soporte de modelado para su gama de procesadores integrados de arquitectura MIPS , se presenta en una asociación con el proveedor líder de procesadores ARM, [12] [13] y es parte de la gama de productos Europractice [14] para acceso general a las universidades europeas. El Grupo de trabajo de cumplimiento de la Fundación RISC-V [15] utiliza una versión de OVPsim como simulador de referencia. Las principales empresas de semiconductores como Renesas han utilizado el simulador para su trabajo de desarrollo de procesadores, como se divulga en las principales publicaciones de la industria electrónica. [16] Fue seleccionado por NEPHRON+, un proyecto de investigación de la UE, para su entorno de desarrollo de software y prueba. [17] VinChip Systems Inc. de Chennai , India, utilizó OpenOCD y OVPsim para desarrollar lo que puede ser el primer procesador de 32 bits desarrollado en la India. [18] Los modelos OVP y las plataformas virtuales forman la base para otras actividades que lleva a cabo Imperas.
... VinChip Systems Inc. ha lanzado ..., que afirma es el primer procesador de 32 bits desarrollado en India. ... El simulador OVPsim ha proporcionado soporte para prototipos virtuales ...