Date : 15 mai 2019
Lieu : Paris, Jussieu, salle 211 tour 55-65

Le compte-rendu de la journée est disponible ici :
compte-rendu-journee-outils-simu

Contexte

La complexité grandissante des systèmes sur puce et leur coût prohibitif de prototypage et de conception a conduit depuis plus de deux décennies déjà à s’appuyer sur des outils de prototypage virtuel.
L’avènement des systèmes multi-processeurs et many-cores a exacerbé le besoin par l’ajout de la simulation de périphériques, de contrôleurs mémoire, de caches, et des média d’interconnexion (bus, NoC). La simulation est devenu d’une part le moyen d’évaluer de nouvelles idées architecturales pour un coût abordable, et d’autre part de développer du logiciel lorsque le matériel n’est pas disponible, soit par qu’il n’est pas encore conçu, soit parce qu’il ne peut pour des raisons de coût être déployé à l’ensemble des développeurs potentiels.
L’intérêt premier de la simulation est une vérification fonctionnelle du système, mais l’utilisateur est très vite tenté de vouloir disposer d’informations plus précises : temps d’exécution, consommation énergétique, voire température. Un outil de simulation est alors confronté à deux objectifs contradictoires : la rapidité et la précision de la simulation.
De nombreux outils et bibliothèques existent : SoCLib, GEM5, Sniper, Graphite, OVP, Qemu, Prime, SystemC (liste non exhaustive), ayant chacun leurs avantages et inconvénients, répondant ainsi aux différents besoins des utilisateurs.

Objectifs de la journée

L’objectif de la journée est de rassembler les utilisateurs des outils de prototypage virtuel de plates-formes multi ou many-core, mais aussi des contributeurs à ces outils, et de pouvoir échanger sur les fonctionnalités de chaque outil ainsi que sur leurs limites.
Un résultat attendu est une cartographie des outils pour pouvoir identifier l’outil le plus adapté à partir d’un besoin utilisateur.

Programme

Début de journée vers 10h, fin vers 17h.

  • 9h30 – 10h : accueil café
  • 10h – 10h15 : Introduction
  • 10h15 – 11h15 : Maria Mendez
    • Retour d’expérience : utilisation et développement sur OVP
  • 11h15 – 12h15 : Abdoulaye Gamatié
    • Multicore System Design using the gem5 Simulation Framework
  • 12h15 – 13h30 : Repas
  • 13h30 – 14h30 : Frédéric Pétrot
    • QEMU + SystemC integration for virtual prototyping
  • 14h30 – 15h30 : Guillaume Delbergue
    • The cruelest and pleasant things I’ve ever used with the IEEE SystemC/TLM standard
  • 15h30 – 16h30 : Quentin Meunier
    • Soclib : une bibliothèque pour le prototypage virtuel – présentation et retour d’expérience
  • 16h30 – 17h : discussion
Il resterait éventuellement un créneau pour une présentation autour d’autres outils (Sniper, Graphite, …). Les propositions de présentations sont à envoyer à Kevin Martin [mailto](mailto:kevin.martin@univ-ubs.fr) et Frédéric Pétrot [mailto](mailto:frederic.petrot@univ-grenoble-alpes.fr).

Résumé des présentations

Retour d’expérience : utilisation et développement sur OVP
OVP (Open Virtual Platforms) est une technologie de prototypage virtuel développée par Imperas pour la modélisation et la simulation de systèmes multi-coeurs complets. Cette technologie, précise à l’instruction près, permet des simulations de systèmes complexes extrêmement rapides avec l’exécution de 100s de MIPS sur un ordinateur classique. OVP consiste principalement en un simulateur ISS (Instruction Set Simulator), ainsi que des modèles open source de processeurs (ARM, ORC1, RISC-V,…) et de périphériques. Additionnellement, OVP permet l’encapsulation de modèles développés en SystemC TLM.
Cette présentation fera un retour d’expérience sur l’utilisation de cette technologie en exposant ses avantages mais aussi les limitations rencontrées. L’extension de cet outil avec un réseau-sur-puce modélisé en SystemC sera également présentée.

Multicore System Design using the gem5 Simulation Framework (send me an email to get the slides)
Multicore architectures have become the de-facto solution to meet the ever-increasing performance/power efficiency demand in modern compute systems. In practice, designing such energy-efficient systems requires well-suited decisions about the configuration of hardware devices (e.g., parameters of cores, interconnect and memory), software components (e.g., OS and application code optimization) and the combination of both parts (e.g., workload mapping on hardware devices). Effective design space exploration frameworks are required to deal with such a complex design task. By effective, we mean frameworks that provide designers with adequate technical design concepts, relevant design abstractions, easy configurability and reasonable simulation times for easy decision-making.
This talk focuses on the gem5 simulation framework and discusses how it can assist the designer to evaluate different design choices. gem5 provides the user with a set of concepts (CPU, memory and interconnect models) that can be combined to build target architectures. It also supports a full-system simulation (based on linux), which is quite attractive for relevant system assessment.

The cruelest and pleasant things I’ve ever used with the IEEE SystemC/TLM standard  (slides)
SystemC is a C++ serialization library designed to describe system and hardware designs. It adds notions to the C++ language for modelling and simulation but it can also be used for synthesis. Basically, the SystemC standard provides the bricks to build hardware like modules, interfaces, etc. TLM-2.0, coming along with SystemC, aims to provide a fast data transaction layer at a higher abstraction level. Both solutions are helpful to design virtual prototypes. They look like the right candidate, don’t they?
For many years, I used SystemC for various use cases and contributed to the standard. Hiventive is using this standard for virtual prototyping. However, even with continuous upgrade of the standard, some use cases doesn’t fit well and can’t be easily resolved. Is SystemC the right solution for your use case ? Join the talk and discover the friendly and less friendly parts of SystemC/TLM. No worry, there will be a happy end.

Soclib : une bibliothèque pour le prototypage virtuel – présentation et retour d’expérience (slides)
Soclib est une bibliothèque C++ qui repose sur SystemC et qui a pour but le prototypage virtuel et la simulation précise d’architectures à base de processeurs. Si Soclib a été conçue à l’origine pour pouvoir gérer plusieurs niveaux de modélisation (CABA et TLM), la présentation ne portera que sur le niveau CABA (cycle-accurate). Après une présentation des principes sous-jacents à Soclib et de son utilisation, cette présentation s’attachera à faire un retour d’expérience personnel concernant l’utilisation de cet outil de simulation. En outre, l’architecture TSAR sera présentée comme un exemple de réalisation d’une architecture complexe basée sur soclib.