FR3057081B1 - Processeur comprenant une pluralite de coeurs de calcul - Google Patents

Processeur comprenant une pluralite de coeurs de calcul Download PDF

Info

Publication number
FR3057081B1
FR3057081B1 FR1659600A FR1659600A FR3057081B1 FR 3057081 B1 FR3057081 B1 FR 3057081B1 FR 1659600 A FR1659600 A FR 1659600A FR 1659600 A FR1659600 A FR 1659600A FR 3057081 B1 FR3057081 B1 FR 3057081B1
Authority
FR
France
Prior art keywords
processor
external memory
application
dedicated
read
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.)
Active
Application number
FR1659600A
Other languages
English (en)
Other versions
FR3057081A1 (fr
Inventor
Adrien GAUFFRIAU
Benoit Triquet
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.)
Airbus Operations SAS
Original Assignee
Airbus Operations SAS
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 Airbus Operations SAS filed Critical Airbus Operations SAS
Priority to FR1659600A priority Critical patent/FR3057081B1/fr
Priority to US15/714,704 priority patent/US10691486B2/en
Publication of FR3057081A1 publication Critical patent/FR3057081A1/fr
Application granted granted Critical
Publication of FR3057081B1 publication Critical patent/FR3057081B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/423Preprocessors
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Abstract

Processeur (10) comprenant une pluralité de groupes de calcul, chaque groupe de calcul comprenant une pluralité de cœurs de calcul, le processeur (10) étant apte à mettre en œuvre simultanément une pluralité d'applications, chaque application étant mise en œuvre par un groupe de calcul et pouvant nécessiter un accès en lecture ou en écriture à une mémoire externe (300) connectée au processeur (10). Au moins un cœur, dit cœur dédié, d'au moins un groupe de calcul est dédié à une gestion de la mémoire externe (300), ladite gestion permettant d'organiser temporellement et spatialement des accès en lecture et en écriture à la mémoire externe (300) de chaque application nécessitant une lecture ou une écriture dans ladite mémoire externe (300) mise en œuvre par le processeur (10).

Description

PROCESSEUR COMPRENANT UNE PLURALITE DE CŒURS DE CALCUL.
La présente invention concerne un processeur comprenant une pluralité de cœurs de calcul.
CONTEXTE DE L’INVENTION
Depuis leur apparition dans la deuxième moitié du vingtième siècle, les systèmes informatiques n’ont cessé de se complexifier pour exécuter des tâches de plus en plus consommatrices en termes de calculs. Par le passé, une approche classique pour améliorer les capacités des processeurs des systèmes informatiques a été d’augmenter la fréquence de fonctionnement de ces processeurs et d’accroître leur miniaturisation. Mais cette approche a montré ses limites car elle induisait de fortes augmentations de consommation énergétique et des besoins en refroidissement des processeurs accrus. Une nouvelle approche s’est alors popularisée et consistait à créer des processeurs comprenant plusieurs cœurs de calcul (que nous appelons simplement cœurs par la suite). On distingue deux types de processeurs comportant plusieurs cœurs : les processeurs dit nombreux cœurs (plus connus sous l’appellation anglo-saxonne « manyCore ») et les processeurs multiple cœurs (« multicore » en terminologie anglo-saxonne). Les processeurs manycore diffèrent des processeurs multicore dans le nombre de cœurs dans un même processeur. Ainsi un ordre de grandeur du nombre de cœurs dans un processeur multicore est une dizaine de cœurs alors qu’un processeur manycore peut contenir une centaine voire un millier de cœurs. Les processeurs manycore et multicore ont ainsi des architectures différentes, adaptées au nombre de cœurs.
En général, les processeurs manycore sont organisés en groupes de calcul (cluster en terminologie anglo-saxonne) regroupant plusieurs cœurs partageant des ressources locales au groupe de calcul. Les groupes de calcul d’un processeur manycore peuvent communiquer entre eux et avec des ressources extérieures au groupe de calcul en utilisant un réseau interne au processeur appelé réseau sur puce (« Network on Chip (NoC) » en terminologie anglo-saxonne). Un réseau sur puce peut par exemple être un réseau maillé.
Certaines topologies de processeurs manycore comportent deux types de groupes de calcul : les groupes de calcul applicatifs dédiés à des exécutions d’applications et les groupes de calcul entrée/sortie dédiés à des communications avec des ressources externes au processeur.
Il est courant dans les processeurs manycore que chaque groupe de calcul possède une mémoire partagée entre les cœurs du groupe de calcul. Ces mémoires partagées ont généralement des tailles réduites comparées aux tailles de codes informatiques et aux données que doivent manipuler les processeurs manycore. Une mise en œuvre d’un programme informatique, mettant en œuvre une application, nécessite alors une utilisation d’une mémoire externe au processeur. Cette mémoire externe devient alors une mémoire partagée entre différentes applications mises en œuvre par le processeur. Des interférences peuvent alors apparaître entre ces différentes applications lors d’écritures ou de lectures dans la mémoire externe.
Il est souhaitable de pallier cet inconvénient de l’état de la technique. Il est notamment souhaitable de proposer un mécanisme qui permet à des applications fonctionnant sur un processeur manycore d’accéder à la mémoire distante tout en garantissant une non-interférence entre les différentes applications.
EXPOSE DE L’INVENTION
Selon un aspect de la présente invention, la présente invention concerne un processeur comprenant une pluralité de groupes de calcul, chaque groupe de calcul comprenant une pluralité de cœurs de calcul, le processeur étant apte à mettre en œuvre simultanément une pluralité d’applications, chaque application étant mise en œuvre par un groupe de calcul et pouvant nécessiter un accès en lecture ou en écriture à une mémoire externe connectée au processeur. Au moins un groupe de calcul comprend au moins un cœur, dit cœur dédié, dédié à une gestion de la mémoire externe, ladite gestion permettant d’organiser temporellement et spatialement les accès en lecture et en écriture à la mémoire externe de chaque application nécessitant une lecture ou une écriture dans ladite mémoire externe mise en œuvre simultanément par le processeur. L’organisation temporelle et spatiale des accès à la mémoire externe contrôlée par au moins un cœur du processeur permet d’éviter des interférences entre des lectures et écritures simultanées dans la mémoire externe et ainsi de fiabiliser des applications mises en œuvre par le dit processeur telles que des applications critiques.
Selon un mode de réalisation, le processeur comprend au moins un groupe de calcul entrée/sortie dédié à des communications avec des ressources externes au processeur, au moins un des cœurs d’au moins un groupe entrée/sortie fait office de cœur dédié gérant chaque accès en lecture à la mémoire externe.
Selon un mode de réalisation, le processeur comprend au moins un groupe de calcul applicatif dédié à des exécutions d’applications, au moins un des cœurs d’au moins un groupe applicatif fait office de cœur dédié gérant chaque accès en écriture à la mémoire externe.
Selon un mode de réalisation, lorsque le processeur comprend une pluralité de cœurs dédiés, lesdits cœurs dédiés sont synchronisés sur une horloge commune.
Selon un mode de réalisation, chaque cœur dédié est apte à vérifier pour chaque application qui le concerne que les écritures et lectures correspondant à une application se font bien dans une unité logique de stockage allouée pour ladite application dans la mémoire externe.
Selon un mode de réalisation, chaque cœur dédié garantit une ségrégation temporelle des lectures et des écritures dans la mémoire externe en regroupant d’une part des écritures entre elles et en regroupant d’autre part des lectures entre elles de sorte à éviter qu’au moins une écriture soit intercalée entre deux lectures ou qu’au moins une lecture soit intercalée entre deux écritures.
Selon un mode de réalisation, le processeur est apte à mettre en œuvre une pluralité d’interfaces de programmation prédéfinies, chaque interface de programmation de la pluralité permettant à une application nécessitant une lecture ou écriture en mémoire externe de faire appel à un cœur dédié pour qu’il réalise ladite lecture ou écriture.
Selon un mode de réalisation, une interface de programmation de la pluralité utilise une table de configuration prédéfinie dans laquelle le temps est divisé en périodes, chaque période de temps étant associée à des lectures ou écritures en mémoire externe à réaliser pendant ladite période par un processeur dédié pour le compte d’une application prédéterminée.
Selon un mode de réalisation, une interface de programmation de la pluralité permet à une application de demander des lectures ou écritures en mémoire externe de façon asynchrone et utilise une table de configuration dans laquelle sont définis des types de lecture ou d’écriture en mémoire externe ayant des caractéristiques différentes, chaque type de lecture ou écriture en mémoire externe étant associé à un identifiant, une application pouvant appeler un desdits identifiants pour qu’un cœur dédié mette en œuvre un type de lecture ou d’écriture en mémoire externe correspondant audit identifiant.
Selon un mode de réalisation, une interface de programmation de la pluralité permet à une application de demander des lectures ou écritures en mémoire externe de façon asynchrone en permettant à ladite application d’indiquer à un cœur dédié des caractéristiques d’une lecture ou écriture à mettre en œuvre par ledit cœur dédié calculées dynamiquement par ladite application.
Selon un deuxième aspect de l’invention, l’invention concerne un aéronef comprenant une unité de calcul comprenant au moins un processeur selon le premier aspect.
BREVE DESCRIPTION DES DESSINS
Les caractéristiques de la présente invention mentionnées ci-dessus, ainsi que d’autres, apparaîtront plus clairement à la lecture de la description suivante d’un exemple de réalisation, ladite description étant faite en relation avec les dessins joints, parmi lesquels : - la Fig. 1 illustre schématiquement un exemple de véhicule dans lequel est mise en œuvre l’invention, - la Fig. 2 illustre schématiquement un exemple de processeur manycore ; et, - la Fig. 3 illustre schématiquement un exemple de groupe de calcul.
DESCRIPTION DETAILLEE DE DIVERS MODES DE REALISATION
La description détaillée ci-après s’attache à décrire un mode de réalisation de la présente invention dans un contexte d’un processeur manycore. Les principes de la présente invention s’appliquent cependant dans un contexte plus large et pourraient s’appliquer à des processeurs comportant plusieurs cœurs tels que les processeurs multicore. Par ailleurs, l’invention est mise en œuvre dans un véhicule de type aéronef. Elle pourrait toutefois être mise en œuvre dans tout autre véhicule tel qu’un véhicule automobile, un drone, etc. L’invention pourrait d’ailleurs être mise en œuvre dans un autre contexte qu’un véhicule, sur tous dispositifs ou appareils comprenant un processeur manycore ou multicore.
La Fig. 1 illustre schématiquement un exemple de véhicule dans lequel est mise en œuvre l’invention. Ledit véhicule est un aéronef 2. Cet aéronef 2 comprend une unité de calcul 1 chargée notamment de gérer les commandes de pilotage. Cette unité de calcul 1 comprend un processeur manycore 10 décrit en détail en relation avec la Fig. 2.
La Fig. 2 illustre schématiquement un exemple de processeur manycore 10.
Le processeur manycore 10 comprend une pluralité de groupes de calcul applicatifs 200 à 215 (ici « 16» groupes de calcul applicatifs) et une pluralité de groupes de calcul entrée/sortie 100 à 115 (ici « 16 » groupes de calcul entrée/sortie). Au moins un des groupes de calcul entrée/sortie est adapté pour communiquer avec une mémoire externe 300 par exemple de type DDR SDRAM (« Double data Rate Synchronous Dynamic Random Access Memory » en terminologie anglo-saxonne : mémoire à accès aléatoires dynamiques synchronisés à débit doublé). Les communications entre les groupes de calculs (applicatifs et/ou entrée/sortie) utilisent un réseau sur puce NoC maillé. Dans ce réseau sur puce NoC maillé, chaque groupe de calcul applicatif est relié à « 4 » autres groupes de calcul (applicatifs et/ou entrée/sortie) et chaque groupe de calcul entrée/sortie est relié à un groupe de calcul applicatif. Chaque groupe de calcul entrée/sortie comprend une pluralité de cœurs, dits cœurs entrée/sortie.
La Fig. 3 illustre schématiquement un exemple de groupe de calcul applicatif 200.
Le groupe de calcul applicatif 200 comprend « 16 » cœurs numérotés de 2000 à 2015, dits cœurs applicatifs, une mémoire interne partagée 2016, et un cœur de gestion de ressources 2017. Le cœur de gestion de ressources 2017 possède des privilèges qui permettent de configurer différentes ressources du groupe de calcul applicatif 200 et notamment de configurer le réseau sur puce NoC. Le cœur de gestion de ressources assure également un rôle de vérification et d’émission sur le réseau sur puce NoC de requêtes de lectures/écritures qui viennent des cœurs applicatifs du groupe de calcul applicatif 200. Tous les groupes de calcul du processeur manycore 10 sont supposés identiques au groupe de calcul applicatif 200.
Dans le processeur 10, au moins un cœur entrée/sortie exécute un processus maître engendrant des processus esclaves. Chaque processus esclave est exécuté par un groupe de calcul applicatif. Lorsqu’un groupe de calcul applicatif met en œuvre une application, au moins un cœur applicatif de ce groupe prend en charge une exécution de ladite application. Lorsque l’application est décomposée en plusieurs tâches parallèles (« multithread » en terminologie anglo-saxonne), plusieurs cœurs applicatifs du groupe de calcul applicatif peuvent être impliqués parallèlement dans l’exécution de ladite application. Les cœurs applicatifs se partagent la mémoire interne partagée 2016 lors de l’exécution des tâches.
Le processeur manycore 10 comprend un groupe de calcul applicatif dédié à une gestion de la mémoire externe 300. Dans ce groupe de calcul applicatif, au moins un cœur est dédié à la gestion de la mémoire externe 300. Chaque cœur applicatif doit impérativement passer par un cœur dédié à la gestion de la mémoire externe 300 pour accéder à ladite mémoire externe 300. Chaque accès à la mémoire externe 300 est ainsi contrôlé par ledit cœur dédié, qui peut choisir différentes politiques d’accès à ladite mémoire externe 300. Par exemple, chaque cœur dédié peut garantir : • une organisation (ou ségrégation) temporelle des accès à la mémoire externe 300. Intercaler une écriture en mémoire entre deux lectures en mémoire (réciproquement intercaler une lecture en mémoire entre deux écritures en mémoire) entraîne des temps d’attentes (latences) qui induisent des interférences entre les applications. En effet, les temps d’accès en mémoire d’une application peuvent devenir dépendants d’une autre application. La ségrégation temporelle des accès à la mémoire consiste à regrouper d’une part les écritures entre elles et à regrouper d’autre part les lectures entre elles, de sorte à éviter autant que possible qu’au moins une écriture soit intercalée entre deux lectures et qu’au moins une lecture soit intercalée entre deux écritures ; • une organisation (ou ségrégation) spatiale des accès à la mémoire externe 300 entre les diverses applications mises en œuvre par le processeur manycore 10. Ainsi deux applications devant écrire simultanément dans la mémoire externe 300 utiliseront des zones mémoires suffisamment éloignées spatialement pour éviter toute interférence. Il est courant de diviser une mémoire en unités logiques de stockage (« memory bank » en terminologie anglo-saxonne). Des accès à des unités logiques de stockage différentes se font par définition sans interférence; • garantir des accès prioritaires de certains cœurs à la mémoire externe 300 ; • garantir des accès à latences garanties ou aléatoires à ladite mémoire externe 300.
Garantir des accès prioritaires et/ou à latences garanties à la mémoire externe 300, prévoir une ségrégation temporelle et spatiale des accès à la mémoire externe 300 permet d’accroître la fiabilité de certaines applications telles que les applications critiques dont un disfonctionnement pourrait avoir des conséquences dramatiques.
Dans un mode de réalisation, au moins un des cœurs entrée/sortie d’un des groupes de calcul entrée/sortie 100-115 du processeur manycore 10 fait office de cœur dédié gérant chaque accès en lecture à la mémoire externe 300. Par ailleurs, au moins un des cœurs de gestion de ressources d’un des groupes de calcul applicatifs 200-215 fait office de cœur dédié gérant chaque accès en écriture à la mémoire externe 300. Chaque cœur dédié impliqué dans les accès en écriture ou en lecture à la mémoire externe 300 contribue à une mise en œuvre d’un processus de gestion de mémoire externe. Le processus de gestion de mémoire externe empêche que les accès en lecture/écriture en mémoire externe 300 interfèrent entre eux.
Dans un mode de réalisation, les cœurs dédiés contribuant à la mise en œuvre du processus de gestion de mémoire externe sont synchronisés sur une horloge commune, ce qui permet aux cœurs dédiés d’implémenter des fenêtres de lecture et des fenêtres d’écriture. Durant une fenêtre de lecture, un cœur dédié ne fera que des lectures en mémoire externe 300. Durant une fenêtre d’écriture, un cœur dédié ne fera que des écritures en mémoire. De cette manière on assure une ségrégation temporelle des accès à la mémoire externe 300.
Dans un mode de réalisation, les applications mises en œuvre par le processeur manycore 10 ne partagent jamais une même unité logique de stockage de la mémoire externe 300. Chaque cœur dédié impliqué dans les accès en écriture ou en lecture à la mémoire externe 300 vérifie pour chaque application qui le concerne, que les écritures et lectures correspondant à une application se font bien dans une unité logique de stockage allouée pour ladite application dans la mémoire externe 300.
Comme dit plus haut, chaque application nécessitant une lecture/écriture en mémoire externe 300 doit passer par un cœur dédié car c’est lui qui effectue les vérifications évitant les interférences. Pour ce faire, chaque application mise en œuvre par le processeur 10 doit obligatoirement utiliser des API (Interface de programmation, « Application Programming Interface » en terminologie anglo-saxonne) prédéfinies pour pouvoir accéder en lecture/écriture à la mémoire externe 300. De cette manière, la sécurité des accès à la mémoire externe 300 est renforcée. Ces API permettent de faire appel à un cœur dédié pour effectuer réellement les lectures/écritures en mémoire externe 300 nécessaires au fonctionnement d’une application.
Une première API appelée API de transfert périodique statiquement défini permet de gérer automatiquement, à la place d’une application, des lectures/écritures en mémoire externe 300 pour ladite application. Chaque lecture/écriture est définie de manière statique dans une table de configuration. Dans cette table de configuration, le temps est divisé en périodes. Cette table de configuration comprend, pour chaque période de temps, des informations représentatives de lectures/écritures à réaliser durant cette période. Chaque information représentative de lectures/écritures comprend une adresse de source de données à lire, une adresse de destination des données lues, un identifiant de ladite application et une taille des données à lire. Dans le cas d’une lecture, l’adresse de source se trouve dans la mémoire externe 300. Dans le cas d’une écriture, l’adresse de source se trouve dans la mémoire interne partagée du groupe de calcul applicatif concerné par la mise en œuvre de ladite application. Dans le cas d’une lecture, l’adresse de destination se trouve dans la mémoire interne partagée du groupe de calcul applicatif concerné par la mise en œuvre de ladite application. Dans le cas d’une écriture, l’adresse de destination se trouve dans la mémoire externe 300. Chaque cœur dédié lit alors la table de configuration et met en œuvre les lectures/écritures qui le concernent. Chaque lecture et écriture est réalisée en assurant les propriétés de ségrégation spatiales et temporelles présentées précédemment. L’API de transfert périodique statiquement défini est particulièrement adaptée pour les applications temps réel strictes telles que des applications de gestion de commandes de vol dans un aéronef.
Dans un mode de réalisation, ΓΑΡΙ de transfert périodique statiquement défini peut être bloquante ou non bloquante, c’est-à-dire qu’un appel à cette API pour une lecture/écriture peut empêcher (i.e. API bloquante) toute autre lecture/écriture impliquant la mémoire externe 300.
Une deuxième API, dite API de transfert apériodique statiquement défini permet des lectures/écritures apériodiques. Cette API permet à une application de demander des lectures/écritures de façon asynchrone. Cette deuxième API définit une pluralité de types de lecture/écriture, chaque type de lecture/écriture ayant des caractéristiques différentes. Une table de configuration définit chaque type de lecture/écriture de la pluralité. Dans la table de configuration, chaque type de lecture/écriture de la pluralité est associé à un identifiant et à des informations représentatives de caractéristiques dudit type de lecture/écriture. Ces informations représentatives de caractéristiques du type de lecture/écriture comprennent une adresse de source des données à lire, une adresse de destination des données lues, et une taille des données à lire. Lorsqu’une application veut mettre en œuvre une lecture/écriture dans le cadre de cette API, il fait appel à l’identifiant du type de lecture/écriture souhaité. Un cœur dédié réalise ensuite chaque lecture/écriture correspondant au type appelé au moment de l’appel. Chaque lecture et écriture est réalisée en assurant les propriétés de ségrégation spatiales et temporelles présentées précédemment.
Dans un mode de réalisation, l’API de transfert apériodique statiquement défini peut être bloquante ou non bloquante, c’est-à-dire qu’un appel à cette API pour une lecture/écriture peut empêcher (i.e. API bloquante) toute autre lecture/écriture impliquant la mémoire externe 300.
La deuxième API est particulièrement adaptée aux applications qui réagissent à des évènements externes mais qui ont des traitements systématiques et identiques sur ces évènements.
Une troisième API, dite API de transfert apériodique dynamiquement défini, permet aussi des lectures/écritures apériodiques. Cette troisième API permet à une application de demander des lectures/écritures de façon asynchrone. Contrairement à la deuxième API, dans cette troisième API, aucun type de lecture/écriture n’est prédéfini. Chaque caractéristique d’une lecture/écriture (i.e. adresse de source des données à lire, adresse de destination des données lues, et taille des données à lire) est calculée dynamiquement par l’application faisant appel à la troisième API. Chaque caractéristique est ensuite passée au cœur dédié devant mettre en œuvre ladite lecture/écriture. Chaque lecture et écriture est réalisée en assurant les propriétés de ségrégation spatiales et temporelles présentées précédemment. La troisième API est particulièrement adaptée pour les applications dynamiques dont certains éléments sont calculés en cours d’exécution de l’application.
Dans un mode de réalisation, l’API de transfert apériodique dynamiquement défini peut être bloquante ou non bloquante, c’est-à-dire qu’un appel à cette API pour une lecture/écriture peut empêcher (i.e. API bloquante) toute autre lecture/écriture impliquant la mémoire externe 300.

Claims (11)

  1. REVENDICATIONS 1) Processeur (10) comprenant une pluralité de groupes de calcul, chaque groupe de calcul comprenant une pluralité de cœurs de calcul, le processeur (10) étant apte à mettre en œuvre simultanément une pluralité d’applications, chaque application étant mise en œuvre par un groupe de calcul et pouvant nécessiter un accès en lecture ou en écriture à une mémoire externe (300) connectée au processeur (10), caractérisé en ce que : au moins un groupe de calcul comprend au moins un cœur, dit cœur dédié, dédié à une gestion de la mémoire externe (300), ladite gestion permettant d’organiser temporellement et spatialement les accès en lecture et en écriture à la mémoire externe (300) de chaque application nécessitant une lecture ou une écriture dans ladite mémoire externe (300) mise en œuvre par le processeur (10).
  2. 2) Processeur (10) selon la revendication 1, caractérisé en ce que le processeur (10) comprend au moins un groupe de calcul entrée/sortie dédié à des communications avec des ressources externes au processeur, au moins un des cœurs d’au moins un groupe entrée/sortie fait office de cœur dédié gérant chaque accès en lecture à la mémoire externe (300).
  3. 3) Processeur (10) selon la revendication 1 ou 2, caractérisé en ce que le processeur (10) comprend au moins un groupe de calcul applicatif dédié à des exécutions d’applications, au moins un des cœurs d’au moins un groupe applicatif fait office de cœurs dédié gérant chaque accès en écriture à la mémoire externe (300).
  4. 4) Processeur (10) selon la revendication 1, 2 ou 3, caractérisé en ce que lorsque le processeur (10) comprend une pluralité de cœurs dédiés, lesdits cœurs dédiés sont synchronisés sur une horloge commune.
  5. 5) Processeur selon l’une quelconque des revendications précédentes, caractérisé en ce que chaque cœur dédié est apte à vérifier pour chaque application qui le concerne que les écritures et lectures correspondant à une application se font bien dans une unité logique de stockage allouée pour ladite application dans la mémoire externe (300).
  6. 6) Processeur selon l’une quelconque des revendications précédentes, caractérisé en ce que chaque cœur dédié garantit une ségrégation temporelle des lectures et des écritures dans la mémoire externe (300) en regroupant d’une part des écritures entre elles et en regroupant d’autre part des lectures entre elles de sorte à éviter qu’au moins une écriture soit intercalée entre deux lectures ou qu’au moins une lecture soit intercalée entre deux écritures.
  7. 7) Processeur selon l’une quelconque des revendications précédentes, caractérisé en ce que le processeur est apte à mettre en œuvre une pluralité d’interfaces de programmation prédéfinies, chaque interface de programmation de la pluralité permettant à une application nécessitant une lecture ou écriture en mémoire externe (300) de faire appel à un cœur dédié pour qu’il réalise ladite lecture ou écriture.
  8. 8) Processeur selon la revendication 7, caractérisé en ce que une interface de programmation de la pluralité utilise une table de configuration prédéfinie dans laquelle le temps est divisé en périodes, chaque période de temps étant associée à des lectures ou écritures en mémoire externe (300) à réaliser pendant ladite période par un processeur dédié pour le compte d’une application prédéterminée.
  9. 9) Processeur selon la revendication 7, caractérisé en ce que une interface de programmation de la pluralité permet à une application de demander des lectures ou écritures en mémoire externe (300) de façon asynchrone et utilise une table de configuration dans laquelle sont définis des types de lecture ou d’écriture en mémoire externe (300) ayant des caractéristiques différentes, chaque type de lecture ou écriture en mémoire externe (300) étant associé à un identifiant, une application pouvant appeler un desdits identifiants pour qu’un cœur dédié mette en œuvre un type de lecture ou d’écriture en mémoire externe (300) correspondant audit identifiant.
  10. 10) Processeur selon la revendication 7, caractérisé en ce que une interface de programmation de la pluralité permet à une application de demander des lectures ou écritures en mémoire externe (300) de façon asynchrone en permettant à ladite application d’indiquer à un cœur dédié des caractéristiques d’une lecture ou écriture à mettre en œuvre par ledit cœur dédié calculées dynamiquement par ladite application.
  11. 11) Aéronef (2) comprenant une unité de calcul (1) comprenant au moins un processeur selon l’une des revendications 1 à 10.
FR1659600A 2016-10-05 2016-10-05 Processeur comprenant une pluralite de coeurs de calcul Active FR3057081B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1659600A FR3057081B1 (fr) 2016-10-05 2016-10-05 Processeur comprenant une pluralite de coeurs de calcul
US15/714,704 US10691486B2 (en) 2016-10-05 2017-09-25 Processor comprising a plurality of computation cores

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1659600A FR3057081B1 (fr) 2016-10-05 2016-10-05 Processeur comprenant une pluralite de coeurs de calcul
FR1659600 2016-10-05

Publications (2)

Publication Number Publication Date
FR3057081A1 FR3057081A1 (fr) 2018-04-06
FR3057081B1 true FR3057081B1 (fr) 2019-11-08

Family

ID=57960539

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1659600A Active FR3057081B1 (fr) 2016-10-05 2016-10-05 Processeur comprenant une pluralite de coeurs de calcul

Country Status (2)

Country Link
US (1) US10691486B2 (fr)
FR (1) FR3057081B1 (fr)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3084500B1 (fr) * 2018-07-26 2020-07-03 Thales Procede et dispositif electronique d'installation logicielles avioniques sur une plateforme comprenant un processeur multicoeurs, programme d'ordinateur et systeme electronique associes
US20230053087A1 (en) * 2020-02-03 2023-02-16 Samsung Electronics Co., Ltd. Data management system and method of controlling

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4090883B2 (ja) * 2000-12-28 2008-05-28 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 異なるリソースアクセス方式を有するシステム統合エージェント
US6782435B2 (en) * 2001-03-26 2004-08-24 Intel Corporation Device for spatially and temporally reordering for data between a processor, memory and peripherals
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US9021046B2 (en) * 2010-01-15 2015-04-28 Joyent, Inc Provisioning server resources in a cloud resource
TW201533576A (zh) * 2013-11-20 2015-09-01 Insyde Software Corp 在多核心系統上運用系統管理中斷(smi)之系統效能增強
US9563585B2 (en) * 2014-02-19 2017-02-07 Futurewei Technologies, Inc. System and method for isolating I/O execution via compiler and OS support

Also Published As

Publication number Publication date
FR3057081A1 (fr) 2018-04-06
US20180095784A1 (en) 2018-04-05
US10691486B2 (en) 2020-06-23

Similar Documents

Publication Publication Date Title
US11121915B2 (en) FPGA-enabled compute instances
US10331669B2 (en) Fast query processing in columnar databases with GPUs
US10241880B2 (en) Efficient validation/verification of coherency and snoop filtering mechanisms in computing systems
US10929184B2 (en) Bandwidth aware resource optimization
US10579550B2 (en) Low overhead exclusive control for shared memory objects
FR3103586A1 (fr) Procédé de gestion du fonctionnement d’un système sur puce formant par exemple un microcontrôleur, et système sur puce correspondant
FR3057081B1 (fr) Processeur comprenant une pluralite de coeurs de calcul
EP3494475B1 (fr) Procede et dispositif de distribution de partitions sur un processeur multi-coeurs
FR3103585A1 (fr) Procédé de gestion de la configuration d’accès à des périphériques et à leurs ressources associées d’un système sur puce formant par exemple un microcontrôleur, et système sur puce correspondant
FR3103584A1 (fr) Procédé de gestion du débogage d’un système sur puce formant par exemple un microcontrôleur, et système sur puce correspondant
CA2887077C (fr) Systeme de traitement de donnees pour interface graphique et interface graphique comportant un tel systeme de traitement de donnees
US11528197B1 (en) Request facilitation for approaching consensus for a service transaction
CN111095310A (zh) 实现动态和自动地更改用户简档以增强性能
US11823144B2 (en) Handling an online group payment
US20200257727A1 (en) Topic clustering to generate formulations
US20230207084A1 (en) Pharmaceutical combination parameter estimation via model surrogate
US11683173B2 (en) Consensus algorithm for distributed ledger technology
US11573960B2 (en) Application-based query transformations
FR3045866A1 (fr) Calculateur comprenant un processeur multi-coeurs et un procede de controle
US20230259987A1 (en) Peer-to-peer donation management
WO2024037222A1 (fr) Procédé et appareil de gestion d'un système de fichiers
US20240070519A1 (en) Online fairness monitoring in dynamic environment
US20210141782A1 (en) Concurrent update management
WO2023052730A1 (fr) Procédé de supervision et superviseur du pilotage d'un traitement parallèle distribué dans un réseau de communication, dispositif de fourniture de services et programme le mettant en œuvre
FR2869700A1 (fr) Gestion de registres indexes dans un systeme sur une puce

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20180406

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

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