FR3031819A1 - Procede de gestion d'une execution de taches et processeur pour mettre en œuvre ce procede - Google Patents

Procede de gestion d'une execution de taches et processeur pour mettre en œuvre ce procede Download PDF

Info

Publication number
FR3031819A1
FR3031819A1 FR1550469A FR1550469A FR3031819A1 FR 3031819 A1 FR3031819 A1 FR 3031819A1 FR 1550469 A FR1550469 A FR 1550469A FR 1550469 A FR1550469 A FR 1550469A FR 3031819 A1 FR3031819 A1 FR 3031819A1
Authority
FR
France
Prior art keywords
tasks
processor
memory module
calculation unit
computing unit
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
FR1550469A
Other languages
English (en)
Other versions
FR3031819B1 (fr
Inventor
Jean-Louis Dufour
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.)
Safran Electronics and Defense SAS
Original Assignee
Sagem Defense Securite SA
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 Sagem Defense Securite SA filed Critical Sagem Defense Securite SA
Priority to FR1550469A priority Critical patent/FR3031819B1/fr
Priority to PCT/EP2016/051260 priority patent/WO2016116574A1/fr
Publication of FR3031819A1 publication Critical patent/FR3031819A1/fr
Application granted granted Critical
Publication of FR3031819B1 publication Critical patent/FR3031819B1/fr
Active 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F2009/3883Two-engine architectures, i.e. stand-alone processor acting as a slave processor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

L'invention concerne un procédé de gestion d'une exécution de tâches par un processeur 4 comportant deux unités de calcul dont une première unité de calcul 5 et une deuxième unité de calcul 6 destinées à exécuter simultanément des tâches, le procédé comprenant les étapes de : - synchroniser un premier ordonnanceur de la première unité de calcul 5 et un deuxième ordonnanceur de la deuxième unité de calcul 6 ; - séquencer tâches de manière à limiter des accès simultanés de la première 5 et de la deuxième unité de calcul 6 à un module de mémoire commun L2 du processeur 4. L'invention concerne aussi un processeur 4 programmé pour mettre un œuvre le procédé de gestion décrit ci-dessus.

Description

L'invention concerne un procédé de gestion d'une exécution de tâches, et un processeur programmé pour mettre en oeuvre ledit procédé. ARRIERE PLAN DE L'INVENTION Les processeurs multi-coeurs sont des proces- seurs comportant plusieurs unités de calcul (ou coeurs) gravées sur une même puce de silicium. L'utilisation de ce type de processeur comporte de nombreux avantages en termes de performance et de consommation électrique asso- ciée à ces performances. Dans certains cas, les deux coeurs doivent accé- der à une même mémoire. Les deux accès ne pouvant avoir lieu simultanément, l'un des accès doit alors être retar- dé. Cette situation peut intervenir à plusieurs reprises lors de l'exécution d'un programme, entraînant une fluctuation des temps d'exécution. Comme les demandes d'accès simultanées sont difficilement prévisibles et leur influence particulièrement complexe à simuler, les concep- teurs ont tendance à surestimer des durées « pire cas » de temps d'exécution, ce qui dégrade les performances du système. OBJET DE L'INVENTION L'invention a pour objet de concevoir des ap- plications utilisant des processeurs multi-coeurs en pré- déterminant les accès simultanés pour limiter leur influence sur les performances du système. RESUME DE L'INVENTION En vue de la réalisation de ce but, on propose un procédé de gestion d'une exécution de tâches par un processeur comportant une première unité de calcul et une deuxième unité de calcul destinées à exécuter simultanément respectivement des premières tâches et des deuxièmes tâches de durées prédéterminées, le procédé comprenant les étapes de : synchroniser un premier ordonnanceur de la première unité de calcul adapté à séquencer les premières tâches et un deuxième ordonnanceur de la deuxième unité de calcul adapté à séquencer les deuxième tâches ; séquencer les premières et les deuxièmes tâches de manière à prédéterminer et limiter des accès simultanés de la première et de la deuxième unité de calcul à un module de mémoire commun du processeur auquel chacune des unités de calcul est adaptée à accéder en lecture ou en écriture. La synchronisation du premier et du deuxième ordonnanceur permet de maîtriser temporellement l'exécution des premières et des deuxièmes tâches les unes par rapport aux autres. On peut ainsi prévoir préci- sément les accès simultanés au module de mémoire commun du processeur de la première et de la deuxième unité de calcul, et donc adapter la séquence des tâches pour limiter ces accès simultanés.
On propose de plus un processeur comportant deux unités de calcul et un module de mémoire commun aux deux unités de calcul, chaque unité de calcul étant destinée à exécuter des tâches séquencées par un ordonnanceur de l'unité de calcul, le processeur étant programmé pour mettre un oeuvre un procédé de gestion d'une exécu- tion de tâches selon l'une des revendications précédentes. L'utilisation d'un tel processeur permet de bénéficier des avantages décrits ci-dessus.
L'invention sera mieux comprise à la lumière de la description qui suit d'un mode de mise en oeuvre particulier non limitatif de l'invention. BREVE DESCRIPTION DES DESSINS Il sera fait référence aux dessins annexés, parmi lesquels : - la figure 1 représente schématiquement un calculateur contenant une carte électrique sur laquelle est monté le processeur de l'invention ; la figure 2 représente schématiquement des en- sembles de premières tâches et de secondes tâches séquencées selon le procédé de gestion de l'invention. DESCRIPTION DETAILLEE DE L'INVENTION Le procédé de gestion d'une exécution de tâches de l'invention et le processeur de l'invention sont ici mis en oeuvre et montés dans un calculateur intégré dans un système temps réel de navigation inertielle pour aéronef. Le calculateur 1, représenté schématiquement à la figure 1, comporte un boîtier 2 dans lequel est montée au moins une carte électrique 3 comprenant le processeur 4 de l'invention. On supposera dans la suite que le processeur 4, la carte électrique 3, et le calculateur 1 coopèrent avec leur environnement respectif conformément aux exigences diverses (fonctionnelles, d'intégration, de sécurité, etc.) du système de navigation inertielle. Le processeur 4 de l'invention est un proces- seur bi-coeur symétrique comportant une première unité de calcul (ou coeur) 5 et une deuxième unité de calcul (ou coeur) 6, les deux unités de calcul 5, 6 étant identiques. Chacune des unités de calcul est associée à un module de mémoire cache de premier niveau formé par un module dit « I-Cache » (pour Cache d'Instructions), réservé aux instructions, et un module dit « D-Cache » (pour Cache de Données), réservé aux données. Ici, les modules I-Cache et D-Cache présentent la même taille de mémoire cache. On nomme L1-1 et L1-2 les modules de mémoire cache de premier niveau respectifs de la première unité de calcul 5 et de la deuxième unité de calcul 6.
Le processeur 4 comporte de plus un module de mémoire cache commun de second niveau L2, partagé entre la première unité de calcul 5 et la deuxième unité de calcul 6. Les unités de calcul 5, 6 et leurs modules de mémoire cache L1-1, L1-2, ainsi que le module de mémoire cache L2, sont reliés par un bus 7 dont le trafic est surveillé par un module de surveillance 8 chargé de gérer la cohérence et la consistance mémoire des accès au module de mémoire cache L2. Le processeur 4 comporte en outre un ensemble 9 d'autres composants habituels parmi lesquels des modules d'interface, de gestion de l'alimentation, etc. La première unité de calcul 5 et la deuxième unité de calcul 6 sont destinées à exécuter simultanément des premières tâches et des deuxièmes tâches. On appelle ici tâche un programme ou une partie de programme enre- gistré dans une mémoire associée au processeur pour être exécutée par l'une des unités de calcul. La première unité de calcul 5 est ici un coeur maître et la deuxième unité de calcul un coeur esclave. La première unité de calcul 5 active la deuxième unité de calcul 6 et lui transfère des données nécessaires à l'exécution des deuxièmes tâches. Lorsque les deuxièmes tâches ont été entièrement exécutées, la deuxième unité de calcul 6 prévient la première 5 et lui transfère les données résultant de ces tâches (résultats de calculs, etc.) ou les enregistre dans une mémoire à une adresse prédéfinie. La gestion de l'exécution des premières tâches et des deuxièmes tâches est respectivement confiée à un premier ordonnanceur déterministe de la première unité de calcul 5 et à un deuxième ordonnanceur déterministe de la deuxième unité de calcul 6. Les ordonnanceurs sont des composants d'un système d'exploitation du processeur 4 programmés pour séquencer l'exécution des tâches exécutées par les unités de calcul 5, 6, c'est-à-dire pour dé- finir l'ordre d'exécution des tâches en fonction de con- traintes temporelles et de contraintes liées aux disponibilités de ressources requises. Par déterministe, on entend que la date théorique de début ou de fin de chaque tâche peut être calculée avant le début de la tâche.
En référence à la figure 2, le premier et le deuxième ordonnanceur définissent ici respectivement des premières tâches périodiques Ti, T2, T3, T4 de la première unité de calcul 5, regroupées en un premier ensemble Si lui-même répété périodiquement, et des deu- xièmes tâches périodiques Ni, N2,..., N16 de la deuxième unité de calcul 6 regroupées en un deuxième ensemble E2 lui aussi répété périodiquement. Sur la figure 2, le trait horizontal en pointillés 10 représente le module de mémoire cache L2, les flèches en direction du trait 10 représentent des accès en écriture au module de mémoire cache L2 par la première unité de calcul 5 ou la deuxième unité de calcul 6, et les flèches en direction opposée représentent des accès en lecture. La durée T des premières tâches T1,..., T4 est constante et prédéterminée, de même que la durée t des deuxièmes tâches, t étant inférieure à T. Le deuxième ensemble E2 a donc une durée inférieure au premier ensemble El. La deuxième unité de calcul est inactive lorsqu'elle n'exécute pas les deuxièmes tâches Ni,..., N16.
Le procédé de gestion d'une exécution de tâches selon l'invention comporte tout d'abord une première étape consistant à synchroniser le premier ordonnanceur et le deuxième ordonnanceur des unités de calcul. On peut ainsi maîtriser parfaitement le lance- ment de l'exécution des tâches d'une unité de calcul par rapport à l'autre. Ici, en l'occurrence, on lance l'exécution de la première tâche Ni du deuxième ensemble E2 exactement à la fin de la première tâche Tl du premier ensemble El.
Le procédé de gestion comporte ensuite une deu- xième étape consistant à séquencer les premières et les deuxièmes tâches de manière à limiter des accès simultanés de la première et de la deuxième unité de calcul au module de mémoire cache L2.
Au cours de la tâche Tl, la première unité de calcul 5 écrit dans le module L2 les données nécessaires à l'exécution des tâches de l'ensemble E2. Puis, au cours de la première tâche de l'ensemble 62, la deuxième unité de calcul copie ces données dans son module de mémoire cache L1-2. Les deuxièmes tâches d'E2 sont ensuite exécu- tées successivement, la deuxième unité de calcul 6 utilisant son module de mémoire cache L1-2 et écrivant les résultats des tâches dans le module de mémoire cache L2. Lorsque la dernière tâche N16 a été exécutée et les ré- sultats associés à cette tâche écrits dans le module de mémoire cache L2, la première unité de calcul 5 accède à toutes les données écrites dans L2 par la deuxième unité de calcul 6 et les exploite. La deuxième unité de calcul 6 est alors inactive jusqu'à la prochaine occurrence de la tâche Ni. Ainsi, on constate que la durée D des accès simultanés par les deux unités de calcul 5, 6, visible sur la figure 2, au cours de laquelle les deux unités de calcul sont susceptibles d'accéder de manière simultanée au module L2, est de durée réduite, puisqu'elle correspond à une durée ici inférieure à deux périodes T. Ces accès simultanés sont de plus parfaitement prévisibles, car ils se produisent à la fin de la tâche Ti, qui peut être datée du fait du caractère déterministe du premier ordon- nanceur, et s'achèvent à la fin de la tâche N16, qui peut être datée du fait du caractère déterministe du deuxième ordonnanceur. L'invention n'est pas limitée au mode de réali- sation particuliers qui vient d'être décrit, mais, bien au contraire, couvre toute variante entrant dans le cadre de l'invention telle que définie par les revendications. Bien que l'on ait proposé une certaine configu- ration des modules de mémoire cache, l'invention s'applique à tout type de configuration et à tout type de mémoire (par exemple, à une mémoire vive non cache), un module de mémoire devant bien sûr être partagé par au moins deux unités de calcul. Les deux unités de calcul peuvent ne pas être identiques comme décrit précédemment.
Le procédé de l'invention et le processeur peu- vent bien sûr être mis en oeuvre avec un nombre d'unités de calcul différent. Par exemple, un processeur pourrait comporter une unité de calcul maître et deux unités de calcul esclaves qui accéderaient successivement à un mo- dule de mémoire partagé. Le nombre de premières tâches et de deuxièmes tâches est bien sûr fourni à titre d'exemple, et pourrait être différent.20

Claims (6)

  1. REVENDICATIONS1. Procédé de gestion d'une exécution de tâches par un processeur (4) comportant au moins deux unités de calcul dont une première unité de calcul (5) et une deu- xième unité de calcul (6) destinées à exécuter simultané- ment respectivement des premières tâches (Ti, ..., T4) et des deuxièmes tâches N16) de durées prédétermi- nées, le procédé comprenant les étapes de : - synchroniser un premier ordonnanceur de la pre- mière unité de calcul (5) adapté à séquencer les premières tâches et un deuxième ordonnanceur de la deuxième unité de calcul (6) adapté à séquencer les deuxième tâches ; séquencer les premières et les deuxièmes tâches de manière à prédéterminer et limiter des accès si- multanés de la première (5) et de la deuxième unité de calcul (6) à un module de mémoire commun (L2) du processeur (4) auquel chacune des unités de calcul est adaptée à accéder en lecture ou en écriture.
  2. 2. Procédé de gestion d'une exécution de tâches selon la revendication 1, dans lequel les premières et les deuxièmes tâches sont regroupées respectivement en un premier et un deuxième ensembles (El, E2) de tâches synchronisés et périodiques, la durée du deuxième ensemble (E2) étant inférieure à celle du premier ensemble (El).
  3. 3. Procédé de gestion d'une exécution de tâches selon la revendication 2, dans lequel les premières et les deuxièmes tâches sont séquencées de sorte que la première (5) et la deuxième unité de calcul (6) n'accèdent au module de mémoire commun (L2) que pendant la durée d'un deuxième ensemble (E2).
  4. 4. Processeur comportant au moins deux unités de calcul (5, 6) et un module de mémoire (L2) commun aux deux unités de calcul, chaque unité de calcul étant des- tinée à exécuter des tâches séquencées par un ordonnan- ceur de l'unité de calcul, le processeur (4) étant programmé pour mettre un oeuvre un procédé de gestion d'une exécution de tâches selon l'une des revendications précé- dentes.
  5. 5. Processeur selon la revendication 4, dans lequel le module de mémoire commun (L2) est un module de mémoire cache.
  6. 6. Processeur selon l'une des revendications pré- cédente, dans lequel les ordonnanceurs sont des ordonnanceurs déterministes.20
FR1550469A 2015-01-21 2015-01-21 Procede de gestion d'une execution de taches et processeur pour mettre en œuvre ce procede Active FR3031819B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1550469A FR3031819B1 (fr) 2015-01-21 2015-01-21 Procede de gestion d'une execution de taches et processeur pour mettre en œuvre ce procede
PCT/EP2016/051260 WO2016116574A1 (fr) 2015-01-21 2016-01-21 Procede de gestion d'une execution de taches et processeur pour mettre en œuvre ce procede

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1550469 2015-01-21
FR1550469A FR3031819B1 (fr) 2015-01-21 2015-01-21 Procede de gestion d'une execution de taches et processeur pour mettre en œuvre ce procede

Publications (2)

Publication Number Publication Date
FR3031819A1 true FR3031819A1 (fr) 2016-07-22
FR3031819B1 FR3031819B1 (fr) 2018-01-26

Family

ID=54014889

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1550469A Active FR3031819B1 (fr) 2015-01-21 2015-01-21 Procede de gestion d'une execution de taches et processeur pour mettre en œuvre ce procede

Country Status (2)

Country Link
FR (1) FR3031819B1 (fr)
WO (1) WO2016116574A1 (fr)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735687B1 (en) * 2000-06-15 2004-05-11 Hewlett-Packard Development Company, L.P. Multithreaded microprocessor with asymmetrical central processing units
US7093109B1 (en) * 2000-04-04 2006-08-15 International Business Machines Corporation Network processor which makes thread execution control decisions based on latency event lengths
GB2462860A (en) * 2008-08-22 2010-02-24 Advanced Risc Mach Ltd Apparatus for communicating between a cpu and a gpu

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093109B1 (en) * 2000-04-04 2006-08-15 International Business Machines Corporation Network processor which makes thread execution control decisions based on latency event lengths
US6735687B1 (en) * 2000-06-15 2004-05-11 Hewlett-Packard Development Company, L.P. Multithreaded microprocessor with asymmetrical central processing units
GB2462860A (en) * 2008-08-22 2010-02-24 Advanced Risc Mach Ltd Apparatus for communicating between a cpu and a gpu

Also Published As

Publication number Publication date
WO2016116574A1 (fr) 2016-07-28
FR3031819B1 (fr) 2018-01-26

Similar Documents

Publication Publication Date Title
EP1337919B1 (fr) Procede de securisation rendant deterministe l'execution en temps reel d'applications multitaches du type controle-commande avec confinement d'erreur
EP2257876B1 (fr) Methode de prechargement dans une hierarchie de memoires des configurations d'un systeme heterogene reconfigurable de traitement de l'information
FR2937439A1 (fr) Procede d'execution deterministe et de synchronisation d'un systeme de traitement de l'information comportant plusieurs coeurs de traitement executant des taches systemes.
FR2912526A1 (fr) Procede de maintien du synchronisme d'execution entre plusieurs processeurs asynchrones fonctionnant en parallele de maniere redondante.
EP3470986B1 (fr) Procédé et dispositif de surveillance d'une application logicielle avionique via sa durée d'exécution, programme d'ordinateur et système avionique associés
EP3123344B1 (fr) Procede de transfert de donnees entre taches temps reel utilisant un controleur memoire dma
EP3204867B1 (fr) Système embarqué sur puce à haute sûreté de fonctionnement
EP3494475B1 (fr) Procede et dispositif de distribution de partitions sur un processeur multi-coeurs
CA2886466C (fr) Systeme multicoeur de traitement de donnees a dispositifs d'entree/sortie locaux et globaux et interface graphique comportant un tel systeme de traitement de donnees
EP2850520A1 (fr) Procede de gestion d'une execution de taches dans un systeme informatique
EP2856323B1 (fr) Procédé, dispositif et programme d'ordinateur de contrôle dynamique de distances d'accès mémoire dans un système de type numa
EP3660677B1 (fr) Procédé et dispositif de surveillance d'application(s) logicielle(s) avec période temporelle tampon précédant une section réservée pour un ensemble de ressource(s) partagée(s), programme d'ordinateur et système avionique associés
FR3084500A1 (fr) Procede et dispositif electronique d'installation logicielles avioniques sur une plateforme comprenant un processeur multicoeurs, programme d'ordinateur et systeme electronique associes
WO2012110445A1 (fr) Dispositif pour accélérer l'exécution d'une simulation system c
FR3031819A1 (fr) Procede de gestion d'une execution de taches et processeur pour mettre en œuvre ce procede
EP2875428B1 (fr) Procede de gestion des fils d'execution dans une unite informatique et unite informatique agencee pour la mise en oeuvre de ce procede
FR3053140B1 (fr) Architecture de calcul notamment pour un systeme embarque aeronautique
WO2011047823A1 (fr) Unite electronique de commande a noyau temps reel gerant un partitionnement
WO2003107185A1 (fr) Procede et systeme de gestion des evenements____________________
EP3695313B1 (fr) Procédé et dispositif électronique d'implémentation d'un partitionnement lors de l'exécution d'applications logicielles sur une plateforme comprenant un processeur multi-coeurs, programme d'ordinateur et système électronique associés
CA2778576C (fr) Procede et dispositif de traitement de taches optimise pour un fws
FR3086780A1 (fr) Systeme et procede d'acces a une ressource partagee
EP2572253B1 (fr) Procede d'optimisation de gestion de veille d'un microprocesseur permettant la mise en oeuvre de plusieurs coeurs logiques et programme d'ordinateur mettant en oeuvre un tel procede
FR3000250A1 (fr) Systeme de processeur multi-coeurs de traitement d'informations
FR3107369A1 (fr) Calculateur electronique, systeme electronique, procede de surveillance de l'execution d'une application et programme d'ordinateur associe

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20160722

PLFP Fee payment

Year of fee payment: 3

CD Change of name or company name

Owner name: SAFRAN ELECTRONICS & DEFENSE, FR

Effective date: 20170111

PLFP Fee payment

Year of fee payment: 4

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: 9

PLFP Fee payment

Year of fee payment: 10