¿Que es una plataforma virtual?
Una Plataforma Virtual es un sistema basado en software que puede reflejar completamente la funcionalidad de una tarjeta de chips.
Estas plataformas virtuales combinan simuladores de procesadores de alta velocidad y modelos de alto nivel, completamente funcionales de los bloques de construcción del hardware, para proporcionar una representación abstracta y ejecutable del hardware a los desarrolladores de software y a los arquitectos de sistemas.
¿Qué tipos de Plataformas Virtuales existen?
Las Plataformas Virtuales son en realidad sólo otro nombre para «simulación de su sistema». Son básicamente simulaciones de tu diseño. Hay realmente dos tipos principales de Plataformas Virtuales, las que están dirigidas como representaciones cercanas del hardware y las que están dirigidas para el desarrollo de software importante.
Plataformas virtuales de hardware / Prototipos
Estos son normalmente desarrollados por los equipos de hardware y reflejan la naturaleza exacta del ciclo del diseño. A menudo están escritos en lenguajes y bibliotecas propietarias o en el SystemC. Tienden a ser complejos, de bajo nivel, con precisión de ciclo, y lo que es más importante, extremadamente lentos – a menudo en los 10.000 de ciclos por segundo.
Necesitan ser desarrollados con una excelente comprensión de los detalles íntimos del hardware, las tuberías del procesador, la arquitectura y las optimizaciones. Típicamente sólo pueden ser validados contra la existencia del hardware y la mayoría de las veces son desarrollados por los equipos de diseño reales. A menudo sólo están disponibles después de que el diseño esté completo y fabricado y son extremadamente intensivos en recursos para crear y validar.
Las Plataformas Virtuales de Hardware se utilizan para ayudar en el diseño del sistema en términos de análisis y compensaciones de arquitectura y rendimiento, y para software y firmware de muy bajo nivel dependiente del hardware.
Con un rendimiento muy por debajo incluso del millón de instrucciones por segundo (MIPS), las Plataformas Virtuales de Hardware sólo pueden ser utilizadas prácticamente para pequeñas cantidades de desarrollo de software. Con velocidades de muchos órdenes de magnitud inferiores a las del tiempo real, se tarda demasiado tiempo en arrancar incluso los sistemas operativos más simples y en ejecutar aplicaciones integradas sencillas.
Plataformas virtuales de software / Prototipos
En contraste con lo anterior, los Prototipos Virtuales de Software están dirigidos al desarrollador del software, son precisos en cuanto a la instrucción, sólo tienen la funcionalidad necesaria y pueden correr a una velocidad vertiginosa permitiendo una verdadera simulación del sistema completo a velocidades en tiempo real. Es fácil obtener 100s de rendimiento de MIPS en una simulación de múltiples núcleos en un PC de escritorio estándar, siendo posibles velocidades superiores a 1.000 MIPS.
Cuando se trata de desarrollar software no es necesario proporcionar toda la funcionalidad de todos los componentes; el único requisito esencial es que sea posible ejecutar los binarios de producción sin modificaciones.
Esto significa que las simulaciones deben ser totalmente precisas en cuanto a las instrucciones, los procesadores deben ser modelados con todas las interrupciones y comandos similares correctos, y los periféricos y los modelos de comportamiento son precisos en cuanto al registro y proporcionan la funcionalidad apropiada. A menudo los modelos pueden ser creados a partir de los libros de datos y la mayoría de los modelos son muy simples de crear. Por ejemplo, un procesador RISC de 32 bits debe tardar menos de 8 semanas en desarrollarse.
Una gran cosa acerca de las Plataformas Virtuales de Software es que permiten la construcción de una simulación de todo el sistema – incluyendo el ambiente – con el que el sistema embebido interactúa, permitiendo así un proxy verdaderamente representativo. El software que se ejecuta en una Plataforma Virtual de Software no debería ver ninguna diferencia cuando se ejecuta en el sistema virtual que cuando se ejecuta en el sistema embebido real.
La velocidad de las Plataformas Virtuales de Software permite que se ejecuten miles y miles de millones de líneas de código en muchos procesadores – con total observabilidad, controlabilidad y muchas más opciones de análisis que las disponibles en el hardware real.
En muchos casos una Plataforma Virtual de Software correrá mucho más rápido que el hardware real. Y por supuesto, en contraste con el hardware, los modelos de software pueden ser desplegados alrededor del mundo instantáneamente.
Cuando se usan en el diseño y desarrollo de sistemas mixtos modernos de Hardware/Software, las Plataformas Virtuales tienen las siguientes ventajas:
- Una plataforma virtual permite el desarrollo temprano de software que puede comenzar antes de la disponibilidad de silicio, simulación RTL o prototipos FPGA.
- Una plataforma virtual proporciona una alta capacidad de control: el hardware físico no puede detenerse de una vez y no puede ser inspeccionado de forma completa y no intrusiva. Un VP, al ser un programa de software, puede ser totalmente administrado y personalizado por el hardware diseñado para atender sus necesidades.
- Una plataforma virtual proporciona una visibilidad total: en cualquier momento, un usuario puede obtener información sobre cualquier parte del sistema (núcleo del procesador, buses, periféricos o modelos de entorno). La información puede ser analizada y actuada de cualquier manera por el usuario final.
- Una plataforma virtual proporciona determinismo: ser capaz de reproducir problemas intermitentes o problemas complejos relacionados con el tiempo en el hardware físico es difícil. Un VP, en cambio, proporciona determinismo en forma de repetibilidad de un caso de prueba donde el usuario obtendrá exactamente el mismo comportamiento una y otra vez.
- De este modo, se optimiza la interacción con el grupo: Las plataformas virtuales, que representan el estado actual del sistema que se está diseñando, pueden ser fácilmente compartidos entre equipos distribuidos; los VP también mejoran la comunicación e interacción entre los equipos de diseño de hardware y software.
¿Por qué usar plataformas virtuales?
El software incorporado en los productos electrónicos modernos ha evolucionado drásticamente en los últimos años en tres dimensiones:
- Escala: El uso de software embebido que opera en plataformas de hardware estandarizadas se ha vuelto cada vez más común a medida que aumenta el costo de la producción de hardware IC. Esto ha hecho que aumente el volumen de código requerido para cada proyecto, y el esfuerzo para producirlo.
- Complejidad: Las arquitecturas de procesadores multinúcleo han sido continuamente mejoradas, proporcionando el rendimiento y la capacidad necesarios para cumplir con los requisitos de los productos modernos. Sin embargo, la codificación de estos nuevos procesadores se ha vuelto exponencialmente más compleja que las generaciones anteriores.
- Calidad: La funcionalidad de los productos electrónicos modernos y los requisitos de calidad continúan aumentando drásticamente, lo que sugiere una tolerancia cero a los errores de postproducción. Además, el software incorporado se ha vuelto más difícil de cambiar a medida que un producto entra en producción.
En el pasado, el desarrollo y la verificación de los programas informáticos incorporados se realizaba normalmente ejecutando el código en un prototipo de la plataforma de hardware hasta que el equipo del proyecto estaba satisfecho de que se había logrado un sistema que funcionaba.
Esta solución requiere mucho tiempo, es poco fiable en cuanto a su calidad y difícil de utilizar, lo que la hace poco práctica para la próxima generación de desarrollo de software embebido. Al igual que en la verificación del hardware hace 15 años, es necesario aplicar un nuevo pensamiento si se quiere producir oportunamente un software embebido de alta calidad.
Las plataformas virtuales ofrecen una alternativa a los prototipos de hardware. Los modelos de software de los componentes clave de una plataforma de procesador se combinan para formar un subsistema ejecutable.
Los modelos deben tener suficiente funcionalidad para ejecutar el código correctamente, pero conservan un nivel de abstracción que proporciona el rendimiento necesario para una prueba rigurosa.
Las plataformas virtuales típicas hacen uso de modelos de procesador «Instruction Accurate», o IA, junto con abstracciones de bloques de memoria y periféricos clave. Las plataformas virtuales deben ser lo suficientemente precisas como para que el software no pueda decir que no se está ejecutando en un hardware real, y los binarios de producción del software incorporado deben poder ejecutarse sin modificaciones. Las plataformas virtuales pueden estar conectadas a herramientas de desarrollo de software embebido para permitir un entorno completo para la verificación y el análisis del código.
Entre las ventajas de las plataformas virtuales figuran las siguientes
- Desarrollo temprano: Por lo general, las plataformas virtuales pueden estar disponibles mucho más rápidamente que su equivalente en hardware, lo que permite que el desarrollo del software incorporado comience a menudo meses antes de lo que era posible anteriormente, lo que reduce el tiempo de comercialización de un producto en la misma medida.
- Visibilidad y controlabilidad: Los prototipos de hardware ofrecen un acceso limitado a la visualización de los registros y señales internas, y ninguna oportunidad de cambiar o controlar la ejecución del hardware o el software. Todos los nodos dentro de Plataformas Virtuales bien construidas pueden ser vistos y una gama de controles aplicados durante la ejecución. Esto es esencial para habilitar las poderosas herramientas necesarias para una verificación efectiva.
- Rendimiento y accesibilidad: Las plataformas de hardware suelen tener una disponibilidad limitada durante las primeras etapas de producción, lo que restringe la cantidad de pruebas que se pueden realizar. Las plataformas virtuales pueden reproducirse en todas las plataformas de computación disponibles, lo que permite su uso simultáneo por miembros individuales de grandes equipos o por muchas plataformas de prueba que funcionan en paralelo. Además, si se construyen cuidadosamente, las plataformas virtuales pueden ejecutarse más rápidamente que el hardware final real, lo que permite ciclos de prueba prolongados.
La construcción de una plataforma virtual puede variar enormemente, y esto puede tener un efecto significativo en su eficacia. Imperas tiene la tecnología y la experiencia adecuadas para proporcionar entornos de desarrollo rápidos y eficaces basados en plataformas virtuales.