FR2971596A1 - Dispositif pour accelerer l'execution d'une simulation systemc - Google Patents

Dispositif pour accelerer l'execution d'une simulation systemc Download PDF

Info

Publication number
FR2971596A1
FR2971596A1 FR1151223A FR1151223A FR2971596A1 FR 2971596 A1 FR2971596 A1 FR 2971596A1 FR 1151223 A FR1151223 A FR 1151223A FR 1151223 A FR1151223 A FR 1151223A FR 2971596 A1 FR2971596 A1 FR 2971596A1
Authority
FR
France
Prior art keywords
systemc
processes
memory
execution
etu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1151223A
Other languages
English (en)
Other versions
FR2971596B1 (fr
Inventor
Nicolas Ventroux
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique CEA
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Commissariat a lEnergie Atomique CEA, Commissariat a lEnergie Atomique et aux Energies Alternatives CEA filed Critical Commissariat a lEnergie Atomique CEA
Priority to FR1151223A priority Critical patent/FR2971596B1/fr
Priority to PCT/EP2012/052386 priority patent/WO2012110445A1/fr
Priority to US13/984,525 priority patent/US9612863B2/en
Publication of FR2971596A1 publication Critical patent/FR2971596A1/fr
Application granted granted Critical
Publication of FR2971596B1 publication Critical patent/FR2971596B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/08HW-SW co-design, e.g. HW-SW partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking

Abstract

La présente invention concerne un dispositif pour accélérer, sur une plateforme comportant une pluralité d'unités de traitement, l'exécution d'une simulation SystemC d'un système, ladite simulation comportant un noyau SystemC et des processus SystemC. Le dispositif comporte des moyens matériels pour ordonnancer les processus SystemC sur les unités de traitements de manière dynamique pendant l'exécution de la simulation, ces moyens permettant notamment de préempter les unités de traitement. Application : outils de vérification et d'émulation de circuits complexes

Description

Dispositif pour accélérer l'exécution d'une simulation SystemC Domaine technique : La présente invention concerne un dispositif pour pour accélérer l'exécution d'une simulation SystemC. Elle s'applique par exemple dans le domaine des outils de vérification et d'émulation de circuits complexes.
Art antérieur et problème technique : Les applications devenant de plus en plus complexes et performantes, les systèmes à concevoir pour supporter ces applications nécessitent l'utilisation de moyens de simulation de plus en plus importants et rapides. La simulation de ces systèmes a plusieurs rôles. Elle permet non seulement de fournir un support pour le développement des couches applicatives et la validation des applications, mais également de concevoir, dimensionner, évaluer les performances et d'explorer l'espace de conception afin de garantir le fonctionnement et de valider les solutions choisies. Par ailleurs, le dynamisme des applications empêche de s'intéresser uniquement aux performances crêtes et seules des simulations permettent d'estimer et de comprendre les performances efficaces et de dimensionner correctement l'architecture de ces systèmes. Ainsi, la simulation de très grands systèmes, comme les architectures multiprocesseurs constituées de plusieurs dizaines de coeurs de calcul voire de plusieurs centaines, peut se révéler très lente, de plusieurs jours à plusieurs semaines. Dans le cycle de conception d'un tel système, l'architecte doit réaliser un modèle fonctionnel voire transactionnel avec des informations temporelles pour effectuer le dimensionnement, l'évaluation des performances effectives de son système, et l'exploration de différentes solutions architecturales afin de trouver celle qui réponde au mieux à ses besoins. Mais lorsque le système devient trop complexe, il n'est plus possible de conserver ce modèle et le concepteur doit alors faire des choix méthodologiques. Pendant de nombreuses années, le langage C ou C++ a été utilisé pour développer des systèmes logiciels et matériels. L'utilisation de ce langage est due à plusieurs raisons. Tout d'abord, il est facile d'utilisation et très connu par les concepteurs de systèmes. Ensuite, de nombreux algorithmes et applications sont décrits et disponibles dans ce langage et ceci permet de réutiliser des librairies ou du code existants afin de réduire les coûts de développement. Enfin, il permet de décrire dans un même programme les parties logicielles et matérielles d'un système et leurs interactions. Cependant, le langage C ou C++ ne permet pas de décrire la concurrence ou la notion de temps, indispensable pour la conception de systèmes matériels. Pour cela, le modèle matériel doit être traduit manuellement dans un langage de description matériel comme le VHDL (Very high speed integrated circuits Hardware Description Language) ou le VERILOG. L'intérêt d'une traduction d'un modèle matériel en VHDL ou en VERILOG tient à ce qu'elle est exécutable et peut ainsi être vérifiée par 1 o simulation, ou par des moyens d'émulation matérielle. Mais un inconvénient majeur est que cette traduction est longue et très difficile. De surcroît, elle introduit souvent des erreurs ou imposent des contraintes jusqu'alors ignorées qui changent les hypothèses ou les spécifications initiales. Pour tenter de répondre à ces inconvénients, un consortium, 15 nommé Open SystemC Initiative (OSCI), a développé un nouveau standard international (IEEE Std. 1666TM-2005) appelé SystemC qui est aujourd'hui très largement utilisé dans le monde entier. SystemC est une librairie C++ associé à un moteur de simulation, capable de combler ces manques et de transformer le langage C et C++ en langage de description matériel. 20 SystemC introduit donc notamment les notions de concurrence et de temps. Aujourd'hui, des outils permettent la synthèse matérielle de systèmes décris en SystemC au niveau RTL (Register Transfer Level) via une traduction automatique en VHDL ou VERILOG. Ainsi, les moyens d'émulation matérielle disponibles pour ces langages de description matériels peuvent 25 être utilisés pour accélérer les simulations. Cependant, décrire un système en RTL est long et fastidieux, et il est très coûteux de revenir sur ses choix architecturaux. En effet, le niveau de description RTL est tel qu'il est très long d'obtenir une solution fonctionnelle. De plus, il est nécessaire de développer le code système et de porter une application pour valider l'architecture. Il faut 30 donc faire des choix très tôt, c'est-à-dire dans la phase de conception, concernant le modèle de programmation et d'exécution, ces choix pouvant se révéler inadaptés. Enfin, les développeurs logiciels ne peuvent pas avoir accès à ce type de plateforme d'émulation, car elle nécessite l'utilisation d'outils de conception matériels non connus des ingénieurs logiciels qui ne 35 s'intègrent pas dans leur environnement de développement. Ainsi, cette solution n'est envisageable que pour valider le système avant de démarrer le processus de fabrication, lorsque tous les outils, les logiciels et le système complet ont été définis, réalisés et validés. Pour tenter de répondre à cet inconvénient, une nouvelle librairie C++ appelée Transactional Level Modeling (TLM) a été créée, fournissant un niveau d'abstraction bien supérieur à celui du niveau RTL pouvant intégrer également des informations temporelles de haut niveau. En particulier, le TLM permet d'abstraire les communications entre les processus SystemC et d'accroître les vitesses de simulation. Cette librairie TLM répond en fait à un 1 o besoin croissant de conception de systèmes de plus en plus complexes. Ainsi, les développeurs logiciels ont la possibilité d'utiliser un modèle fonctionnel rapide de l'architecture. Mais là encore les inconvénients sont nombreux. Tout d'abord, seulement une partie des validations peuvent être réalisées puisque le modèle n'a plus d'informations temporelles précises. De 15 plus, l'optimisation du code n'est plus possible et il n'est par exemple pas possible d'estimer précisément le coût des communications entre les différentes tâches ou mémoires. Enfin, ce modèle ne permet pas l'exploration de tout l'espace de conception, car il n'apporte pas suffisamment d'information. 20 Ainsi, il semble qu'il n'existe pas aujourd'hui une solution capable de répondre à la fois aux problèmes de la conception du logiciel et à la conception de systèmes complexes.
25 Dans des demandes de brevet chinois CN101634979, CN1 01 31 5648, CN101329702, CN101635006, CN101770362 et CN1 01 1 96826 déposées par l'Institut des Technologies Informatiques de l'Académie des Sciences de Chine, l'utilisation d'unités matérielles spécifiques pour accélérer l'exécution des simulations SystemC est 30 proposée. Adjointes à un processeur RISC (Reduced Instruction Set Computer), des unités matérielles capables d'émuler des primitives ou des fonctions SystemC sont utilisées pour accélérer les simulations. Ces primitives supportent par exemple la gestion dynamique de processus (SC_SPAWN), les sémaphores et les exclusions mutuelles (mutex), les FI FO 35 (First ln First Out) et la gestion des listes de sensibilité et des évènements.
En plus, des unités particulières pour l'échange de données entre processus sont utilisées pour stocker les valeurs des signaux. Un inconvénient majeur de cette approche est qu'elle nécessite une modification profonde de la librairie SystemC afin d'utiliser les primitives sur les unités matérielles. De plus, le nombre limité d'unités matérielles contraint irrémédiablement les possibilités de modélisation. Enfin, l'exécution des processus SystemC est considérablement ralentie par d'incessants changements de contexte.
Exposé de l'invention L'invention a notamment pour but d'accélérer n'importe quel type de simulation SystemC décrite dans un langage C ou C++ en utilisant les librairies standards SystemC et TLM sans aucune modification. Pour cela, l'invention propose une accélération matérielle du noyau SystemC capable de répartir l'ensemble des processus dynamiquement sur une pluralité d'unités de calcul. A cet effet, l'invention a pour objet un dispositif pour accélérer, sur une plateforme comportant une pluralité d'unités de traitement, l'exécution d'une simulation SystemC d'un système, ladite simulation comportant un noyau SystemC et des processus SystemC. Le dispositif comporte des moyens matériels pour ordonnancer les processus SystemC sur les unités de traitements de manière dynamique pendant l'exécution de la simulation. Avantageusement, les moyens pour ordonnancer les processus system C permettent de préempter les unités de traitement, de sorte que si un premier processus systemC exécuté par une unité de traitement est bloqué en attente d'une synchronisation avec un deuxième processus systemC, alors ladite unité de traitement est préemptée, ladite unité de traitement sauvegardant son contexte d'exécution dans une mémoire partagée par les unités de traitement et commençant l'exécution d'un autre processus systemC, l'exécution du premier processus étant reprise ultérieurement. Avantageusement, le système simulé peut être décrit au niveau RTL ou au niveau TLM. Dans un mode de réalisation préférentiel, les moyens matériels pour ordonnancer les processus SystemC peuvent inclure des moyens pour exécuter le noyau SystemC. Ils peuvent également inclure des moyens pour gérer des évènements, ces moyens pouvant inclure une liste de tous les évènements pouvant être générés associés à des identifiants des processus SystemC sensibles auxdits évènements. Ils peuvent aussi inclure des moyens pour gérer le temps, ces moyens pouvant inclure un chien de garde pour chacun des processus SystemC. Par exemple, les moyens pour exécuter le noyau SystemC peuvent inclure un processeur RISC pour exécuter les instructions formant le noyau SystemC. Les moyens pour exécuter le noyau SystemC peuvent également 1 o inclure un graphe de dépendance entre les processus SystemC, de manière à activer des processus fils dès lors que leurs processus pères respectifs ont été exécutés. Dans un mode de réalisation préférentiel, les moyens pour gérer le temps peuvent inclure un compteur fournissant un temps simulé courant. 15 Ils peuvent également inclure une mémoire contenant une liste des temps simulés à atteindre par chacun des processus en cours d'exécution sur les unités de traitement. Ils peuvent également inclure une mémoire contenant une liste des états de chacun des processus en cours d'exécution sur les unités de traitement, cet état indiquant que le processus est actif ou en 20 attente. Ils peuvent également inclure des moyens pour comparer le temps simulé courant aux temps simulés à atteindre par chacun des processus. L'état d'un processus peut alors commuter de l'état actif à l'état d'attente dès lors que le temps simulé courant a atteint le temps simulé à atteindre associé audit processus. 25 Les moyens pour gérer des évènements peuvent inclure une mémoire contenant une liste d'identifiants d'évènements. Ils peuvent également inclure une mémoire contenant, pour chaque identifiant d'évènement, l'adresse dans une autre mémoire d'une liste des processus sensibles audit évènement. 30 Avantages : L'invention a encore pour principaux avantages qu'elle supporte les communications transactionnelles et permet l'accélération de simulations SystemC à un niveau d'abstraction élevé. Elle propose également des moyens de mise au point et de trace pour la validation du modèle ou de l'application exécutée. L'invention a encore pour principaux avantages qu'elle offre un modèle temporel rapide et très flexible, s'intégrant dans n'importe quel environnement de développement ou de conception. Elle offre aux développeurs de logiciel et de matériel une solution idéale pour la conception de systèmes complexes. Ceci a un impact très important sur les temps de développement et constitue un avantage majeur pour la compétitivité.
1 o Description des figures : D'autres caractéristiques et avantages de l'invention apparaîtront à l'aide de la description qui suit faite en regard de dessins annexés qui représentent : - la figure 1, par un diagramme, une illustration d'un exemple de 15 réalisation de l'invention sur une plateforme multiprocesseur ; - la figure 2, par un diagramme, une illustration d'un exemple de réalisation d'une unité de contrôle selon l'invention ; - la figure 3, par un diagramme, une illustration d'un exemple de réalisation d'une unité de gestion du temps selon l'invention; 20 - la figure 4, par un diagramme, une illustration d'un exemple de réalisation d'une unité de gestion des évènements selon l'invention; - la figure 5, par un diagramme, un exemple d'ordonnancement de processus System C sur une pluralité de ressources de calcul; 25 - la figure 6, par un diagramme, une illustration d'un exemple de réalisation de l'invention sur un serveur de calcul accessible via un réseau Ethernet.
Description de l'invention à partir des figures : 30 L'invention inclut notamment un environnement matériel capable d'accélérer les simulations SystemC à des niveaux d'abstraction variables, qu'il s'agisse de RTL, de TLM ou même de TLM avec prise en compte d'informations temporelles, de systèmes complexes numériques et analogiques, ainsi que de leurs parties logicielles et matérielles. Cet 35 environnement matériel est constitué d'une pluralité de processeurs de calcul capables d'exécuter des processus SystemC, d'au moins une unité d'accélération matérielle du noyau SystemC en charge d'ordonnancer dynamiquement l'exécution des processus SystemC, de mémoires, d'entrées-sorties pour émuler les entrées-sorties du système simulé, ainsi que de moyens de mise au point et de trace. Ces unités d'accélération matérielle ont accès à une unité de gestion des évènements liant les processus sensibles afin de sélectionner les processus à exécuter, ainsi qu'à une unité de gestion temporelle afin de gérer l'ensemble des synchronisations temporelles présentes dans SystemC qui régissent la 1 o concurrence entre les processus, et ainsi qu'à un graphe de dépendance entre processus pour déterminer un ordre partiel d'ordonnancement et minimiser le nombre de changement de contexte.
15 La figure 1 illustre par un diagramme un exemple de mise en oeuvre de l'invention dans un environnement multiprocesseur. L'environnement matériel inclut une pluralité d'unités de calcul P1 à Pn contrôlées par une unité matérielle HWSKS selon l'invention (HardWare SystemC Kernel Sequencing), cette unité HWSKS permettant de contrôler 20 les processus du noyau SystemC. Cette architecture, dite asymétrique, présente l'avantage de séparer explicitement le contrôle, c'est-à-dire l'exécution du noyau SystemC par l'unité HWSKS, et le calcul, c'est-à-dire l'évaluation des processus SystemC par les processeurs P1 à Pn. Dans ce mode de réalisation, les unités de calcul P1 à Pn sont 25 des processeurs capables d'exécuter les processus SystemC. Chaque unité de calcul P1 à Pn est accompagnée d'une interface de contrôle CTRL_IF pour communiquer avec l'unité HWSKS via un bus de contrôle et d'une unité TLB de translation des mémoires caches pour accéder au contenu des mémoires partagées. Les unités de calcul P1 à Pn sont reliées via un réseau 30 d'interconnexion, un multibus par exemple, à différentes mémoires ainsi qu'à une unité I/OM de gestion des entrées-sorties (1/0 Management). Une mémoire SPC (SystemC Processes Context) permet de sauvegarder les contextes des différents processus SystemC actifs. Elle est partagée par les processeurs P1 à Pn. Une mémoire SP/LD (SystemC Processes / Local 35 Data) permet de stocker le code lié aux processus SystemC, comme les instructions, les variables locales et les constantes. Une mémoire SDM (Shared Data Memory) permet de stocker les données partagées entre les processus SystemC comme les variables globales et les constantes. Enfin, une mémoire système SM (System Memory) contient l'ensemble des routines du logiciel système pour supporter les préemptions ou l'initialisation des unités de calcul P1 à Pn par exemple. Dans ce mode de réalisation, une MCMU (Memory Configuration and Management Unit) permet de transférer à l'initialisation le code des processus SystemC, et de gérer dynamiquement les accès aux mémoires 1 o partagées 4. Cette unité permet de gérer la pagination et les translations associées aux codes des processus SystemC et de leur contexte, ainsi que l'allocation dynamique d'espace mémoire dans la mémoire partagée. Conformément à l'invention, l'unité de contrôle HWSKS permet l'exécution matérielle du noyau SystemC. 15
Dans la suite de la présente demande, le terme « processus » est utilisé pour désigner implicitement des processus SystemC.
20 La figure 2 illustre par un diagramme un exemple de réalisation de l'unité HWSKS selon l'invention, qui supporte l'exécution du noyau SystemC. Elle tient compte d'un graphe de dépendance entre les processus pour déterminer leur ordre d'activation, ce graphe n'étant pas représenté sur la 25 Figure 2. L'unité HWSKS comporte une unité ETU de gestion des évènements (Event Tag Unit) qui possède la liste de tous les évènements pouvant être générés associés aux numéros des processus à activer sur occurrence de ces évènements. L'unité HWSKS comporte également une unité WTU de gestion du temps (Watchdog Tag Unit) qui possède un chien 30 de garde pour chacun des processus et permet de référencer les processus en attente de synchronisation et d'évaluer les attentes longues de synchronisation. L'unité WTU évite ainsi le réveil inutile de processus. L'unité HWSKS utilise alors ces informations pour activer les processus et répartir leur exécution sur les unités de calcul P1 à Pn, via le bus de contrôle de la 35 Figure 1 par exemple.
L'ordonnancement des processus se fait de manière dynamique, c'est-à-dire pendant l'exécution de la simulation. Un processus alloué sur une unité de calcul parmi P1 à Pn peut être préempté ou migré vers une autre unité de calcul parmi P1 à Pn si l'unité HWSKS le décide. Un gestionnaire d'horloge SystemC TM (Timer Management) permet à chaque processus d'avoir accès au temps courant de simulation et permet au noyau SystemC d'ordonnancer ses processus en fonction du temps. Dans le mode de réalisation des figures 1 et 2, l'unité de contrôle HWSKS peut être une structure programmable comportant, en plus des 1 o unités matérielles ETU et WTU, un module SKE (SystemC Kernel Evaluation) incluant par exemple un processeur RISC (Reduced Instruction Set Computer), de sorte que le module SKE peut exécuter le code du noyau SystemC. Ainsi, l'exécution de ce code, via l'utilisation des unités matérielles ETU et WTU, a un comportement compatible avec le noyau SystemC issu de 15 la version standard. Le module SKE utilise également un graphe de dépendance entre les processus, qui est une structure de données organisée sous forme de liste chaînée. Dans cette liste, chaque processus possède des processus pères et des processus fils. Lorsque les processus pères ont été évalués, les processus fils sont activés. 20
La figure 3 illustre un mode de réalisation de l'unité WTU comportant deux mémoires WTU_MO et WTU_M1, ainsi qu'un ensemble de comparateurs représentés par des symboles "<" et une horloge TT. L'horloge 25 TT peut être un compteur matériel Current sc time qui représente le temps courant SystemC, qui sera appelé "temps simulé" par la suite. Ce compteur est incrémenté à chaque pas de simulation, une fois que tous les processus ont été évalués et que l'unité ETU est vide. La mémoire WTU_MO contient, pour chacun des processus PR1 à PRn, le temps simulé à atteindre 30 Stop time reg. Lorsque ce temps est atteint, c'est-à-dire lorsque Current sc time = Stop time reg, le contenu de la mémoire WTU_M1 est mis à jour. Le processeur SKE peut accéder à cette mémoire WTU_M1 pour vérifier l'état des processus. Si le contenu de la mémoire est positif (1), le processus est considéré comme en attente. Dans le cas contraire (0), le 35 processus est considéré comme actif.
La figure 4 illustre un mode de réalisation de l'unité ETU comportant trois mémoires ETU_M0, ETU_M1 et ETU_M2. La mémoire ETU_MO permet de stocker les identifiants d'évènements du type evn, qui sont générés lors de l'évaluation des processus. La mémoire ETU_M1 est une mémoire dont chaque ligne contient un mot comportant deux champs. Le premier champ est un identifiant d'évènement, du type evn sur la figure 4, et le second est une adresse dans une mémoire ETU_M2, du type @processus listm sur la figure 4, d'une liste de processus PR1 à PRn sensibles à cet évènement evn. La mémoire ETU_M2 contient donc des listes de processus et les adresses du type @a processus listm spécifiées dans la mémoire ETU_M1 sont des pointeurs sur des cases de la mémoire ETU_M2. Ces trois mémoires ETU_M0, ETU_M1 et ETU_M2 permettent donc, à partir d'un évènement, de retrouver rapidement tous les processus sensibles, afin de pouvoir les activer ultérieurement. Ainsi, pour chacun des évènements, tous les processus sensibles sur cet évènement sont activés. Lorsque tous les processus d'un évènement evn dans ETU_M0 ont été activés, l'évènement correspondant est supprimé de la mémoire ETU_M0.
Une fois tous les évènements supprimés de ETU_M0, l'unité ETU est considéré comme étant vide.
Dans le mode de réalisation illustré par les figures qui précèdent, l'utilisateur charge dans l'unité HWSKS le graphe de dépendances entre les processus, ainsi que l'ensemble des codes liés aux processus dans la mémoire SP/LD. L'unité HWSKS démarre alors son cycle d'exécution suivant le fonctionnement du noyau SystemC et exécute tous les processus en parallèle suivant la disponibilité des unités de calcul P1 à Pn. Tous les processus sont alors initialisés puis exécutés jusqu'à ce qu'ils rencontrent une synchronisation. Certains vont alors mettre à jour leurs signaux de sorties ou envoyer des transactions à d'autres processus. Dans ce dernier cas, suivant la norme TLM, les fonctions dites « transport » des processus cibles concernés sont exécutées jusqu'à ce que leur évaluation soit complète. Ainsi, tous les processus vont s'exécuter jusqu'à ce qu'ils rencontrent une synchronisation, que tous les processus dans WTU_M1 soient positifs et que la liste d'évènements activés dans l'unité ETU_MO soit vide. L'unité HWSKS aura juste pour rôle de distribuer équitablement les différents processus entre les unités de calcul P1 à Pn. Lorsque tous les processus exécutés sont bloqués en attente de synchronisation dans l'unité WTU, le gestionnaire d'horloge TM incrémente l'horloge SystemC suivant le pas de simulation. Puis, suivant le graphe de dépendance entre les processus actifs, l'unité HWSKS évalue de nouveau les processus qui ne sont plus en attente dans l'unité WTU en optimisant la répartition de la charge des unités de calcul P1 à Pn. Ce procédé a lieu jusqu'à la fin de la simulation.
Comme illustré par la figure 5, un avantage majeur de cette invention réside dans sa capacité à ordonnancer dynamiquement des processus sur les différentes unités de calcul homogènes P1 à Pn. Cette capacité est rendue possible grâce à la complémentarité des éléments constituant l'invention. Pour permettre la préemption et la migration des processus entre les unités de calcul P1 à Pn, il faut tout d'abord disposer d'un algorithme d'ordonnancement capable de prendre de telles décisions qui est exécuté par l'unité de contrôle HWSKS par l'intermédiaire de son processeur RISC. Cet algorithme peut donc simplement, en fonction de la durée d'exécution des processus ou de leur activité, décider de les préempter, pour les exécuter ultérieurement sur un processeur identique ou différent. Comme présenté dans la figure 5, supposons par exemple que le processus PR1 soit évalué sur le processeur P3. Si PR1 se met en attente d'une synchronisation avec un autre processus PR6 (en cours d'évaluation ou non), le processus PR1 est bloqué et le processeur P3 est alors sous- utilisé. L'invention propose d'interrompre PR1 jusqu'à ce qu'il ne soit plus bloqué, pour exécuter un autre processus, par exemple PR3, qui lui ne sera pas bloqué. Lorsque le processeur exécutant le processus concerné par la demande de préemption, envoyée par HWSKS, reçoit la commande, le processeur sauvegarde son contexte dans la mémoire partagée SPC. Cette mémoire est accessible et partagée entre tous les processeurs via le réseau d'interconnexion, le multibus dans le présent exemple de réalisation. Lorsque l'unité de contrôle HWSKS souhaite reprendre l'exécution du processus PR1, elle peut arbitrairement lui attribuer un processeur libre pour que celui-ci puisse continuer son évaluation, le processeur pouvant être le processeur préalablement préempté ou un tout autre processeur parmi P1 à Pn.
La figure 6 illustre par un schéma un autre mode de réalisation, intégrant sur une carte d'émulation installée dans un serveur de calcul accessible à un ensemble de clients via un réseau Ethernet plusieurs 1 o environnements matériels d'accélération SystemC selon l'invention. L'utilisateur peut exécuter le simulateur via son environnement de travail et ses outils de développements. Grâce à une interface particulière client-serveur, le simulateur peut être exécutée sur une carte d'émulation distante et toutes les informations de mise au point et de trace liées à l'interface 15 utilisateur peuvent être redirigées vers le client. Ainsi, l'utilisateur a l'impression d'exécuter localement le simulateur alors qu'il s'exécute sur un système distant. Le système distant peut être un serveur de calcul possédant une ou plusieurs cartes accélératrices, chacune pouvant accueillir un ou plusieurs modules d'accélération SystemC. Chaque module d'accélération 20 SystemC peut être constitué d'une architecture similaire à celle précédemment présentée, avec en plus une unité de mise au point et de trace capable de transférer toutes les informations nécessaires aux outils de développement utilisés par l'utilisateur.
25 Autres avantages : L'invention décrite précédemment fournit un moyen pour accélérer les simulations ainsi qu'un support permettant de réduire considérablement les temps de conception. En effet, la capacité à faire émerger rapidement un nouveau système sur le marché de l'électronique embarquée est directement 30 liée à la compétitivité et au facteur de pénétration et de réussite du produit commercial.

Claims (8)

  1. REVENDICATIONS1. Dispositif pour accélérer, sur une plateforme comportant une pluralité d'unités de traitement (P1 à Pn), l'exécution d'une simulation SystemC d'un système, ladite simulation comportant un noyau SystemC et des processus SystemC, le dispositif étant caractérisé en ce qu'il comporte des moyens matériels (HWSKS) pour ordonnancer les processus SystemC sur les unités de traitements de manière dynamique pendant l'exécution de la simulation.
  2. 2. Dispositif selon la revendication 1, caractérisé en ce que les moyens (HWSKS) pour ordonnancer les processus systemC permettent de préempter les unités de traitement (P1 à Pn), de sorte que si un premier processus systemC exécuté par une unité de traitement (P1 à Pn) est bloqué en attente d'une synchronisation avec un deuxième processus systemC, alors ladite unité de traitement est préemptée, ladite unité de traitement sauvegardant son contexte d'exécution dans une mémoire partagée (SPC) par les unités de traitement (P1 à Pn) et commençant l'exécution d'un autre processus systemC, l'exécution du premier processus étant reprise ultérieurement.
  3. 3. Dispositif selon la revendication 1, caractérisé en ce que le système simulé est décrit au niveau RTL ou au niveau TLM.
  4. 4. Dispositif selon la revendication 2, caractérisé en ce que les moyens matériels (HWSKS) pour ordonnancer les processus SystemC incluent: - des moyens (SKE) pour exécuter le noyau SystemC; - des moyens (ETU) pour gérer des évènements, ces moyens incluant une liste de tous les évènements pouvant être générés associés à des identifiants des processus SystemC sensibles auxdits évènements, et; - des moyens (WTU) pour gérer le temps, ces moyens incluant un chien de garde pour chacun des processus SystemC.
  5. 5. Dispositif selon la revendication 4, caractérisé en ce que les moyens (SKE) pour exécuter le noyau SystemC incluent un processeur RISC pour exécuter les instructions formant le noyau SystemC.
  6. 6. Dispositif selon la revendication 4, caractérisé en ce que les moyens (SKE) pour exécuter le noyau SystemC incluent un graphe de dépendance entre les processus SystemC, de manière à activer des processus fils dès lors que leurs processus pères respectifs ont été exécutés.
  7. 7. Dispositif selon la revendication 4, caractérisé en ce que les moyens (WTU) pour gérer le temps incluent: - un compteur (Current sc time) fournissant un temps simulé courant; - une mémoire (WTU_MO) contenant une liste des temps simulés à atteindre (Stop time reg) par chacun des processus en cours d'exécution sur les unités de traitement (P1 à Pn); - une mémoire (WTU_M1) contenant une liste des états de chacun des processus en cours d'exécution sur les unités de traitement (P1 à Pn), cet état indiquant que le processus est actif ou en attente; - des moyens pour comparer le temps simulé courant aux temps simulés à atteindre par chacun des processus; l'état d'un processus commutant de l'état actif (0) à l'état d'attente (1) 25 dès lors que le temps simulé courant a atteint le temps simulé à atteindre associé audit processus.
  8. 8. Dispositif selon la revendication 4, caractérisé en ce que les moyens (ETU) pour gérer des évènements incluent: 30 - une mémoire (ETU_MO) contenant une liste d'identifiants d'évènements (evn); - une mémoire (ETU_M1) contenant, pour chaque identifiant d'évènement (evn), l'adresse (@a processus listm) dans une autre mémoire (ETU_M2) d'une liste des processus sensibles audit 35 évènement.
FR1151223A 2011-02-15 2011-02-15 Dispositif pour accelerer l'execution d'une simulation systemc Expired - Fee Related FR2971596B1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
FR1151223A FR2971596B1 (fr) 2011-02-15 2011-02-15 Dispositif pour accelerer l'execution d'une simulation systemc
PCT/EP2012/052386 WO2012110445A1 (fr) 2011-02-15 2012-02-13 Dispositif pour accélérer l'exécution d'une simulation system c
US13/984,525 US9612863B2 (en) 2011-02-15 2012-02-13 Hardware device for accelerating the execution of a systemC simulation in a dynamic manner during the simulation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1151223A FR2971596B1 (fr) 2011-02-15 2011-02-15 Dispositif pour accelerer l'execution d'une simulation systemc

Publications (2)

Publication Number Publication Date
FR2971596A1 true FR2971596A1 (fr) 2012-08-17
FR2971596B1 FR2971596B1 (fr) 2016-01-01

Family

ID=45855711

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1151223A Expired - Fee Related FR2971596B1 (fr) 2011-02-15 2011-02-15 Dispositif pour accelerer l'execution d'une simulation systemc

Country Status (3)

Country Link
US (1) US9612863B2 (fr)
FR (1) FR2971596B1 (fr)
WO (1) WO2012110445A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014124852A2 (fr) 2013-02-15 2014-08-21 Commissariat A L'energie Atomique Et Aux Energies Alternatives Dispositif et procédé pour accélérer la phase de mise à jour d'un noyau de simulation

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9817771B2 (en) * 2013-08-20 2017-11-14 Synopsys, Inc. Guarded memory access in a multi-thread safe system level modeling simulation
US9778817B2 (en) 2013-12-31 2017-10-03 Findo, Inc. Tagging of images based on social network tags or comments
US10445445B2 (en) * 2016-04-22 2019-10-15 Synopsys, Inc. Sliding time window control mechanism for parallel execution of multiple processor core models in a virtual platform simulation
US20240012629A1 (en) * 2022-07-11 2024-01-11 Xilinx, Inc. Compiler-based generation of transaction accurate models from high-level languages

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003441B2 (en) * 2001-07-31 2006-02-21 Hewlett-Packard Development Company, L.P. Method for deriving the benchmark program for estimating the maximum power consumed in a microprocessor
US20050229170A1 (en) * 2004-04-08 2005-10-13 Matthew Bellantoni Optimized system-level simulation
WO2006072082A2 (fr) * 2004-12-30 2006-07-06 Vast Systems Technology Corporation Systeme et procede de simulation d'horloge
JP2008059192A (ja) * 2006-08-30 2008-03-13 Oki Electric Ind Co Ltd ハード・ソフト協調検証用シミュレータ
US8296741B1 (en) * 2007-03-05 2012-10-23 Google Inc. Identifying function-level code dependency by simulating runtime binding
CN100580630C (zh) 2007-12-29 2010-01-13 中国科学院计算技术研究所 满足SystemC语法要求的多核处理器及获得其执行代码的方法
US7957950B2 (en) * 2008-02-28 2011-06-07 Oki Semiconductor Co., Ltd. Hard/soft cooperative verifying simulator
US8751211B2 (en) * 2008-03-27 2014-06-10 Rocketick Technologies Ltd. Simulation using parallel processors
JP5066013B2 (ja) * 2008-06-24 2012-11-07 富士通セミコンダクター株式会社 シミュレーション装置およびプログラム
CN101635006B (zh) 2008-07-22 2012-02-29 中国科学院计算技术研究所 一种满足SystemC语法的多核处理器的互斥和信号量单元组
CN100568247C (zh) 2008-07-22 2009-12-09 中国科学院计算技术研究所 一种满足systemC语法的多核处理器的事件处理单元组
CN101329702A (zh) 2008-07-22 2008-12-24 中国科学院计算技术研究所 一种满足SystemC语法的多核处理器的先进先出队列单元组
CN101634979B (zh) 2008-07-22 2011-09-07 中国科学院计算技术研究所 一种满足SystemC语法的多核处理器
US8156458B2 (en) * 2008-08-29 2012-04-10 International Business Machines Corporation Uniquification and parent-child constructs for 1xN VLSI design
CN101770362B (zh) 2009-01-06 2013-04-03 中国科学院计算技术研究所 满足SystemC的处理器中的分布式动态进程生成单元
JP5262774B2 (ja) * 2009-02-03 2013-08-14 富士通株式会社 シミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法
WO2011076278A1 (fr) * 2009-12-23 2011-06-30 Inchron Gmbh Procédé et système de traitement de données pour simuler un système intégré
US20110307847A1 (en) * 2010-06-10 2011-12-15 Global Unichip Corporation Hybrid system combining TLM simulators and HW accelerators
US8458630B1 (en) * 2010-06-26 2013-06-04 Cadence Design Systems, Inc. Supporting dynamic aspects of polymorphism in high-level synthesis of integrated circuit designs
US9015649B2 (en) * 2010-07-19 2015-04-21 Taiwan Semiconductor Manufacturing Co., Ltd. Method and apparatus for electronic system model generation
US20120197625A1 (en) * 2011-01-28 2012-08-02 National Tsing Hua University Data-dependency-Oriented Modeling Approach for Efficient Simulation of OS Preemptive Scheduling

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
A. GUERRE: "Approche hiérarchique pour la gestion dynamique des tâches et des communications dans les architectures massivement parallèles programmables", 24 September 2010 (2010-09-24), Université Paris-Sud 11, France, pages I - 150, XP002663625, Retrieved from the Internet <URL:http://nventrou.free.fr/thesis/these_aguerre.pdf> [retrieved on 20111114] *
C. BECHARA ET AL: "A TLM-based Multithreaded Instruction SetSimulator for MPSoC Simulation Environment", January 2011 (2011-01-01), pages 1 - 7, XP002663624, Retrieved from the Internet <URL:http://nventrou.free.fr/papers/RAPIDO2011_CB.pdf> [retrieved on 20111114] *
NICOLAS VENTROUX ET AL: "SCMP architecture: An Asymmetric Multiprocessor System-On-Chip for Dynamic Applications", PROCEEDINGS OF THE SECOND INTERNATIONAL FORUM ON NEXT-GENERATION MULTICORE/MANYCORE TECHNOLOGIES, IFMT '10, 19 June 2010 (2010-06-19), New York, New York, USA, pages 1 - 12, XP055012079, ISBN: 978-1-45-030008-7, DOI: 10.1145/1882453.1882461 *
VENTROUX N ET AL: "SESAM: An MPSoC Simulation Environment for Dynamic Application Processing", COMPUTER AND INFORMATION TECHNOLOGY (CIT), 2010 IEEE 10TH INTERNATIONAL CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, 29 June 2010 (2010-06-29), pages 1880 - 1886, XP031757603, ISBN: 978-1-4244-7547-6 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014124852A2 (fr) 2013-02-15 2014-08-21 Commissariat A L'energie Atomique Et Aux Energies Alternatives Dispositif et procédé pour accélérer la phase de mise à jour d'un noyau de simulation
FR3002342A1 (fr) * 2013-02-15 2014-08-22 Commissariat Energie Atomique Dispositif et procede pour accelerer la phase de mise a jour d'un noyau de simulation
WO2014124852A3 (fr) * 2013-02-15 2014-10-23 Commissariat A L'energie Atomique Et Aux Energies Alternatives Dispositif et procédé pour accélérer la phase de mise à jour d'un noyau de simulation

Also Published As

Publication number Publication date
US9612863B2 (en) 2017-04-04
WO2012110445A1 (fr) 2012-08-23
FR2971596B1 (fr) 2016-01-01
US20140325516A1 (en) 2014-10-30

Similar Documents

Publication Publication Date Title
Xue et al. Fast distributed deep learning over rdma
EP2257876B1 (fr) Methode de prechargement dans une hierarchie de memoires des configurations d&#39;un systeme heterogene reconfigurable de traitement de l&#39;information
US10248581B2 (en) Guarded memory access in a multi-thread safe system level modeling simulation
US10585648B2 (en) Systems and methods for aggregating implicit and explicit event code of executable models
WO2012110445A1 (fr) Dispositif pour accélérer l&#39;exécution d&#39;une simulation system c
US9075666B2 (en) Deferred execution in a multi-thread safe system level modeling simulation
FR2964225A1 (fr) Procede et dispositif de deploiement et d&#39;aide au deploiement de composants formant un systeme temps reel embarque
CN107291481A (zh) 一种组件更新方法、装置和系统
US9201708B2 (en) Direct memory interface access in a multi-thread safe system level modeling simulation
US11755294B2 (en) Systems and methods for generating service access points for RTE services in code or other RTE service information for use with the code
CN115686805A (zh) Gpu资源共享的方法和装置、调度gpu资源共享的方法和装置
EP2856323B1 (fr) Procédé, dispositif et programme d&#39;ordinateur de contrôle dynamique de distances d&#39;accès mémoire dans un système de type numa
Denninnart et al. Efficiency in the serverless cloud paradigm: A survey on the reusing and approximation aspects
EP2956874B1 (fr) Dispositif et procédé pour accélérer la phase de mise à jour d&#39;un noyau de simulation
Pierfederici Distributed Computing with Python
CA2887077C (fr) Systeme de traitement de donnees pour interface graphique et interface graphique comportant un tel systeme de traitement de donnees
De Munck et al. Design and performance evaluation of a conservative parallel discrete event core for GES
FR3053140B1 (fr) Architecture de calcul notamment pour un systeme embarque aeronautique
Otterness Developing real-time GPU-sharing platforms for artificial-intelligence applications
US20230244525A1 (en) Methods and apparatus for an xpu-aware dynamic compute scheduling framework
Lucas On the use of hierarchical task for heterogeneous architectures
US20220114137A1 (en) Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry
US20230289177A1 (en) In-band instantiation configuration for application workloads
Melnyk et al. UNIX-like operating system extension for real-time FPGA-based SCCS support
Qureshi Reduce Cost of Batch Processing Microsoft Azure Cloud (March 2019)

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 10

ST Notification of lapse

Effective date: 20211005