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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 238000012163 sequencing technique Methods 0.000 claims abstract description 4
- 230000000737 periodic effect Effects 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 claims 1
- 238000007726 management method Methods 0.000 abstract description 6
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F2009/3883—Two-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)
- 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. 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. 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. 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. Processeur selon la revendication 4, dans lequel le module de mémoire commun (L2) est un module de mémoire cache.
- 6. Processeur selon l'une des revendications pré- cédente, dans lequel les ordonnanceurs sont des ordonnanceurs déterministes.20
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)
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 |
-
2015
- 2015-01-21 FR FR1550469A patent/FR3031819B1/fr active Active
-
2016
- 2016-01-21 WO PCT/EP2016/051260 patent/WO2016116574A1/fr active Application Filing
Patent Citations (3)
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 |