FR3053485A1 - Procede et circuit de controle dynamique de consommation d'energie - Google Patents

Procede et circuit de controle dynamique de consommation d'energie Download PDF

Info

Publication number
FR3053485A1
FR3053485A1 FR1656052A FR1656052A FR3053485A1 FR 3053485 A1 FR3053485 A1 FR 3053485A1 FR 1656052 A FR1656052 A FR 1656052A FR 1656052 A FR1656052 A FR 1656052A FR 3053485 A1 FR3053485 A1 FR 3053485A1
Authority
FR
France
Prior art keywords
pipeline
data processing
clock
clock signal
synchronization
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.)
Pending
Application number
FR1656052A
Other languages
English (en)
Inventor
Fabien Journet
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.)
STMicroelectronics Alps SAS
Original Assignee
STMicroelectronics Alps 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 STMicroelectronics Alps SAS filed Critical STMicroelectronics Alps SAS
Priority to FR1656052A priority Critical patent/FR3053485A1/fr
Priority to US15/253,012 priority patent/US10067550B2/en
Priority to EP16200665.4A priority patent/EP3264221B1/fr
Priority to CN201621438938.2U priority patent/CN207397257U/zh
Priority to CN201611219826.2A priority patent/CN107545292B/zh
Publication of FR3053485A1 publication Critical patent/FR3053485A1/fr
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/06Clock generators producing several clock signals
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B5/00Near-field transmission systems, e.g. inductive or capacitive transmission systems
    • H04B5/70Near-field transmission systems, e.g. inductive or capacitive transmission systems specially adapted for specific purposes
    • H04B5/79Near-field transmission systems, e.g. inductive or capacitive transmission systems specially adapted for specific purposes for data transfer in combination with power transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Advance Control (AREA)

Abstract

L'invention concerne un pipeline de traitement de données comprenant : des premier et deuxième étages de pipeline (302, 304) recevant respectivement des premier et deuxième signaux d'horloge (CLK0, CLK1) et agencés pour réaliser des première et deuxième opérations déclenchées respectivement par des premiers fronts de synchronisation du premier signal d'horloge (CLK0) et des deuxièmes fronts de synchronisation du deuxième signal d'horloge (CLK1) ; et un contrôleur d'horloge agencé pour générer les premier et deuxième signaux d'horloge (CLK0, CLK1), et étant capable de fonctionner : dans un premier mode dans lequel, pendant un premier cycle de traitement de données du pipeline de traitement de données, un premier des premiers fronts de synchronisation est en phase avec un premier des deuxièmes fronts de synchronisation ; et dans un deuxième mode dans lequel, pendant un deuxième cycle de traitement de données du pipeline de traitement de données, un deuxième des premiers fronts de synchronisation est déphasé par rapport à un deuxième des deuxièmes fronts de synchronisation.

Description

Domaine de 1'invention
La présente description concerne le domaine du contrôle de consommation d'énergie et en particulier un procédé et un circuit de contrôle dynamique de consommation d'énergie dans un pipeline de traitement de données.
Exposé de 1'art antérieur
Dans des pipelines de traitement de données synchrones, chaque étage du pipeline réalise son opération correspondante sur chaque front significatif du signal d'horloge, ce qui provoque la propagation des données dans le pipeline. Un avantage de tels pipelines synchrones est gu'ils permettent des débits de traitement de données relativement élevés, puisque ce débit n'est limité que par le temps de traitement de données de chaque étage et pas par le délai de propagation global du pipeline. Toutefois, un tel fonctionnement synchrone peut présenter des inconvénients dans certaines applications.
Par exemple, dans le domaine des communications NFC (communications en champ proche), une carte RF est alimentée par le champ RF généré par le lecteur NFC, et module le champ RF afin de renvoyer des données vers le lecteur. Si le champ RF est faible, la carte RF peut réduire sa fréquence d'horloge afin de réduire sa consommation d'énergie. Toutefois, la consommation de courant des pipelines de traitement de données dans la carte RF va présenter des pics de consommation de courant ayant lieu sur chaque front d'horloge significatif, et à des fréquences basses, il pourrait ne pas être possible de lisser ces pics. Cela peut conduire à ce que la consommation de courant de la carte RF soit visible au niveau de l'antenne de la carte, ce qui peut perturber la communication entre la carte et le lecteur.
En outre, des attaques par canaux auxiliaires (appelés aussi canaux cachés) contre des dispositifs sécurisés comme des circuits de chiffrement ou de déchiffrement utilisent des techniques de corrélation puissantes basées sur la consommation d'énergie pour essayer de déterminer les données en cours de traitement par le pipeline de traitement de données. Les pipelines synchrones n'assurent pas une protection suffisante contre de telles attaques.
Résumé
Un objet de modes de réalisation de la présente description est de répondre au moins partiellement à un ou plusieurs problèmes de l'art antérieur.
Selon un aspect, on prévoit un pipeline de traitement de données comprenant : un premier étage de pipeline recevant un premier signal d'horloge et agencé pour réaliser une première opération déclenchée par des premiers fronts de synchronisation du premier signal d'horloge ; un deuxième étage de pipeline recevant un deuxième signal d'horloge et agencé pour réaliser une deuxième opération déclenchée par des deuxièmes fronts de synchronisation du deuxième signal d'horloge ; et un contrôleur d'horloge agencé pour générer les premier et deuxième signaux d'horloge, le contrôleur d'horloge étant capable de fonctionner : dans un premier mode dans lequel, pendant un premier cycle de traitement de données du pipeline de traitement de données, un premier des premiers fronts de synchronisation est en phase avec un premier des deuxièmes fronts de synchronisation ; et dans un deuxième mode dans lequel, pendant un deuxième cycle de traitement de données du pipeline de traitement de données, un deuxième des premiers fronts de synchronisation est déphasé par rapport à un deuxième des deuxièmes fronts de synchronisation.
Selon un mode de réalisation, le contrôleur d'horloge est agencé pour générer les premier et deuxième signaux d'horloge sur la base d'un signal d'horloge maître.
Selon un mode de réalisation, dans le premier mode, le contrôleur d'horloge est agencé pour sélectionner un premier front de synchronisation du signal d'horloge maître pour former le premier des premiers et deuxièmes fronts de synchronisation ; et dans le deuxième mode, le contrôleur d'horloge est agencé pour sélectionner un deuxième front de synchronisation du signal d'horloge maître pour former le deuxième des premiers fronts de synchronisation du premier signal d'horloge et pour sélectionner un troisième front de synchronisation du signal d'horloge maître pour former le deuxième des deuxièmes fronts de synchronisation du deuxième signal d'horloge.
Selon un mode de réalisation, le contrôleur d'horloge comprend un circuit de calcul adapté à générer : un premier signal d'activation pour sélectionner le deuxième front de synchronisation du signal d'horloge maître pour former le deuxième des premiers fronts de synchronisation du premier signal d'horloge ; et un deuxième signal d'activation pour sélectionner le troisième front de synchronisation du signal d'horloge maître pour former le deuxième des deuxièmes fronts de synchronisation du deuxième signal d'horloge.
Selon un mode de réalisation, le circuit de calcul est adapté à générer des valeurs courantes des premier et deuxième signaux d'activation sur la base de valeurs précédentes des premier et deuxième signaux d'activation et sur la base du facteur de division d'horloge.
Selon un mode de réalisation, dans le deuxième mode, le contrôleur d'horloge est adapté à étaler le deuxième cycle de traitement de données sur n phases d'horloge, où n est compris entre 2 et p, où p est le nombre d'étages de pipeline dans le pipeline de traitement de données.
Selon un mode de réalisation, le premier étage de pipeline comprend une sortie couplée à une entrée du deuxième étage de pipeline, et pendant le deuxième cycle de traitement de données du pipeline de traitement de données le contrôleur d'horloge est adapté à générer le deuxième des premiers fronts de synchronisation du premier signal d'horloge survenant à un premier instant et le deuxième des deuxièmes fronts de synchronisation du deuxième signal d'horloge survenant à un deuxième instant en avance par rapport au premier instant.
Selon un autre aspect, on prévoit une carte NFC comprenant le pipeline de traitement de données susmentionné, dans laquelle le contrôleur d'horloge est en outre adapté à contrôler la période d'horloge des premier et deuxième signaux d'horloge sur la base de l'alimentation disponible pour la carte NFC.
Selon un autre aspect, on prévoit un circuit cryptographique comprenant le pipeline de traitement de données susmentionné, dans lequel pendant le deuxième cycle de traitement de données, j premiers étages du pipeline reçoivent le premier signal d'horloge, et k deuxièmes étages du pipeline reçoivent le deuxième signal d'horloge, et pendant un troisième cycle de traitement de données, 1 premiers étages du pipeline reçoivent le premier signal d'horloge, et m deuxièmes étages du pipeline reçoivent le deuxième signal d'horloge, où j, k, 1 et m sont des entiers supérieurs ou égaux à 1, et j et 1 ne sont pas égaux.
Selon un autre aspect, on prévoit un accélérateur matériel arithmétique modulaire comprenant le pipeline de traitement de données susmentionné, dans lequel les premier et deuxième étages de pipeline mettent en œuvre une opération de multiplication.
Selon encore un autre aspect, on prévoit un processeur multi-cœur comprenant : un premier cœur comprenant un premier pipeline de traitement de données tel que susmentionné ; un deuxième cœur comprenant un deuxième pipeline de traitement de données tel que susmentionné ; et un circuit de contrôle d'horloge agencé pour fournir un premier signal d'horloge maître au premier cœur et un deuxième signal d'horloge maître au deuxième cœur, au moins certains des fronts d'horloge des premier et deuxième signaux d'horloge maîtres étant déphasés entre eux.
Selon encore un autre aspect, on prévoit un procédé de conception de circuit d'un pipeline de traitement de données, le procédé comprenant la génération d'une conception de circuit du pipeline de traitement de données de façon à comprendre : un premier étage de pipeline agencé pour réaliser- une première opération déclenchée par des premiers fronts de synchronisation d'un premier signal d'horloge un deuxième étage de pipeline agencé pour réaliser une deuxième opération déclenchée par des deuxièmes fronts de synchronisation d'un deuxième signal d'horloge indépendant du premier signal d'horloge ; et un contrôleur d'horloge agencé pour générer les premier et deuxième signaux d'horloge, le contrôleur d'horloge étant capable de fonctionner : dans un premier mode dans lequel, pendant un premier cycle de traitement de données du pipeline de traitement de données, un premier des premiers fronts de synchronisation est en phase avec un premier des deuxièmes fronts de synchronisation ; et dans un deuxième mode dans lequel, pendant un deuxième cycle de traitement de données du pipeline de traitement de données, un deuxième des premiers fronts de synchronisation est déphasé par rapport à un deuxième des deuxièmes fronts de synchronisation.
Selon un mode de réalisation, la génération de la conception de circuit du pipeline de traitement de données comprend la modification d'une conception de circuit initiale du pipeline de traitement de données en divisant un étage de pipeline initial en des premier et deuxième sous-étages de pipeline parallèles.
Selon un mode de réalisation, la génération de la conception de circuit du pipeline de traitement de données comprend en outre la génération de la conception de circuit de façon à comprendre un ou plusieurs autres étages de pipeline synchronisés par des signaux d'horloge indépendants correspondants, le nombre de signaux d'horloge indépendants dans la conception de circuit étant supérieur au nombre d'étages de pipeline de la conception de circuit initiale.
Selon un autre aspect, on prévoit un procédé de contrôle dynamique d'un pipeline de traitement de données comprenant : générer, par un contrôleur d'horloge, des premier et deuxième signaux d'horloge ; fournir le premier signal d'horloge à un premier étage de pipeline agencé pour réaliser une première opération déclenchée par des premiers fronts de synchronisation du premier signal.d'horloge ; fournir le deuxième signal d'horloge à un deuxième étage de pipeline agencé pour réaliser une deuxième opération déclenchée par des deuxièmes fronts de synchronisation du deuxième signal d'horloge ; dans lequel le contrôleur d'horloge est capable de fonctionner : dans un premier mode dans lequel, pendant un premier cycle de traitement de données du pipeline de traitement de données, un ou plusieurs des premiers fronts de synchronisation sont en phase avec un ou plusieurs des deuxièmes fronts de synchronisation ; et dans un deuxième mode dans lequel, pendant un deuxième cycle de traitement de données du pipeline de traitement de données, un ou plusieurs des premiers fronts de synchronisation sont déphasés par rapport à un ou plusieurs des deuxièmes fronts de synchronisation.
Selon encore un autre aspect, on prévoit un dispositif de traitement multi-cœur comprenant : un premier cœur de traitement recevant un premier signal d'horloge et agencé pour réaliser des opérations déclenchées par des premiers fronts de synchronisation du premier signal d'horloge ; un deuxième cœur de traitement recevant un deuxième signal d'horloge et agencé pour réaliser des opérations déclenchées par des deuxièmes fronts de synchronisation du deuxième signal d'horloge ; et un contrôleur d'horloge agencé pour générer les premier et deuxième signaux d'horloge, le contrôleur d'horloge étant capable de fonctionner dans au moins un premier et un deuxième mode, et dans le premier mode, un premier des premiers fronts de synchronisation est en phase avec un premier des deuxièmes fronts de synchronisation ; et dans le deuxième mode, un deuxième des premiers fronts de synchronisation est déphasé par rapport à un deuxième des deuxièmes fronts de synchronisation.
Brève description des dessins
Les caractéristiques et avantages susmentionnés, et d'autres, apparaîtront clairement avec la description détaillée suivante de modes de réalisation, donnés à titre d'illustration et non de limitation en faisant référence aux dessins joints dans lesquels :
les figures IA et IB sont des graphiques représentant une consommation de courant dans un pipeline' synchrone dans le cas d'une fréquence d'horloge relativement élevée ;
les figures 2A et 2B sont des graphiques représentant une consommation de courant dans un pipeline synchrone dans le cas d'une fréquence d'horloge relativement basse ;
la figure 3 illustre schématiquement un pipeline synchrone ;
la figure 4 illustre schématiquement un pipeline de traitement de données selon un exemple de réalisation de la présente description ;
les figures 5A et 5B sont des chronogrammes représentant des exemples de signaux dans le pipeline de la figure 4 ;
la figure 6 illustre schématiquement un contrôleur d'horloge de la figure 4 plus en détail selon un exemple de réalisation ;
les figures 7A à 7D sont des diagrammes représentant des temps d'exécution d'opérations dans le pipeline de la figure 4 selon un exemple de réalisation ;
la figure 8A illustre schématiquement un circuit mettant en œuvre une partie de l'algorithme cryptographique RSA ;
la figure 8B illustre schématiquement le fonctionnement du pipeline du circuit de la figure 8A ;
la figure 9A illustre schématiquement le circuit de la figure 8A comprenant une indication de phases d'exécution selon un exemple de réalisation de la présente description ;
la figure 9B illustre schématiquement le fonctionnement du pipeline du circuit de la figure 9A selon un exemple de réalisation de la présente description ;
la figure 10 illustre schématiquement un système de traitement multi-cœur selon un exemple de réalisation ; et la figure 11 est un chronogramme illustrant des exemples de signaux d'horloge dans les cœurs de traitement de la figure 10 selon un exemple de réalisation.
Description détaillée
Le terme connecté est utilisé ici pour désigner une connexion électrique directe entre des éléments d'un circuit, tandis que le terme couplé est utilisé ici pour désigner une connexion électrique qui peut être directe, ou peut se faire par l'intermédiaire d'un ou plusieurs composants intermédiaires comme des résistances, des condensateurs, des transistors, etc.
La figure IA est graphique illustrant un exemple de consommation de courant dans un pipeline synchrone en supposant une fréquence d'horloge relativement élevée. Par exemple, le pipeline synchrone fait partie d'un circuit intégré d'une carte RF destinée à être utilisée dans des communications NFC. On peut voir que la consommation de courant est en forme de pics qui surviennent sur chaque front montant du signal d'horloge.
La figure IB illustre la consommation de courant du circuit d'alimentation qui alimente le pipeline synchrone. Par exemple, le pipeline synchrone est alimenté par un LDO (régulateur à faible chute). Le LDO comprend par exemple un ou plusieurs condensateurs lui permettant de maintenir une consommation de courant relativement stable.
La figure 2A est un graphique illustrant la consommation de courant du pipeline synchrone dans le cas d'une fréquence d'horloge relativement basse. Par exemple, si la carte RF reçoit un champ RF relativement faible, elle ralentit automatiquement sa fréquence d'horloge dans le but de réduire sa consommation. Ainsi, les pics dans la consommation de courant surviennent à des intervalles de temps qui sont relativement espacés. Par exemple, alors que dans le cas de la figure IA la fréquence d'horloge est d'environ 20 à 50 MHz, dans le cas de la figure 2A, la fréquence d'horloge est réduite à environ un seizième de sa valeur initiale pour réduire la consommation d'énergie. De façon plus générale, la fréquence du signal d'horloge est réduite d'un facteur compris entre 2 et 32.
La figure 2B illustre la consommation de courant du circuit d'alimentation qui alimente le pipeline synchrone, comme un LDO. Dans ce cas, en raison des périodes de temps relativement longues entre les pics de courant, le LDO n'est pas capable de maintenir une consommation de courant stable, et la consommation de courant présente des pics sur chaque front d'horloge du signal d'horloge. Les variations de consommation de courant en amont du LDO sont vues par l'antenne de la carte RF, et peuvent ainsi interférer avec des communications entre la carte RF et le lecteur RF. Par exemple, le lecteur RF peut interpréter de façon erronée les variations au niveau de l'antenne comme une tentative de communication entre la carte RF et le lecteur RF.
La figure 3 illustre schématiquement un exemple de pipeline synchrone 300. Le pipeline 300 comprend par exemple trois étages 302, 304, 306 couplés en série, et réalisant respectivement des opérations OPERATION 0, OPERATION 1 et OPERATION 2 sur des données d'entrée. Les étages sont par.exemple disposés en série, de sorte que chaque étage reçoit, comme données d'entrée, les données de sortie de l'étage précédent. Bien que cela ne soit pas illustré en figure 3, chaque étage de pipeline peut comprendre un ou plusieurs registres d'entrée pour mémoriser temporairement les données d'entrée reçues de l'étage de pipeline précédent avant qu'elles soient traitées par l'étage, ou bien un ou plusieurs registres de sortie pour mémoriser temporairement les données de sortie avant qu'elles soient fournies à l'étage de pipeline suivant. Chacun des étages reçoit le même signal d'horloge CLK, 10 et ainsi les opérations appliquées par chaque étage sont par exemple réalisées sensiblement au même instant, le terme sensiblement impliquant par exemple une marge de plus ou moins 5 % de la période d'horloge.
La figure 4 illustre schématiquement un pipeline synchrone 400 selon un exemple de réalisation de la présente description. Le pipeline 400 est similaire au pipeline 300, et les mêmes éléments portent les mêmes références. Toutefois, dans le mode de réalisation de la figure 4, les étages de pipeline 302, 304 et 306 reçoivent chacun un signal d'horloge CLK0, CLK1 et CLK2 respectivement. Chacun des signaux d'horloge CLK0, CLK1 et CLK2 est par exemple généré par un contrôleur d'horloge (CLOCK CONTROLLER) 402 sur la base d'un signal d'horloge maître MCLK. Chacun des signaux d'horloge a par exemple la même fréquence.
Le contrôleur d'horloge 402 est par exemple agencé pour générer les signaux d'horloge CLK0 à CLKN afin de sélectionner le nombre de phases d'horloge sur lesquelles un cycle de traitement de données doit être étalé. Par exemple, le contrôleur d'horloge 402 peut générer tous les signaux d'horloge CLK0 à CLKN de telle sorte qu'ils aient un ou plusieurs fronts en phase, de sorte que les étages du pipeline fonctionnent de façon synchrone entre eux, ou de telle sorte que chaque cycle de traitement soit étalé sur 2 phases d'horloge ou plus, et jusqu'à N+l phases d'horloge. Dans certains modes de réalisation, le contrôleur d'horloge 402 sélectionne le nombre de phases d'horloge pour chaque opération de traitement sur la base de l'alimentation en énergie disponible pour le circuit. Dans des variantes de réalisation, on pourrait utiliser d'autres critères pour sélectionner le nombre de phases d'horloge. Par exemple, dans le cas d'un circuit cryptographique pour lequel la protection contre des attaques par canaux auxiliaires doit être augmentée, le nombre de phases d'horloge pourrait être sélectionné d'une manière aléatoire ou pseudoaléatoire.
Bien que la figure 4 illustre un exemple dans lequel il y a trois étages de pipeline, dans des variantes de réalisation il pourrait y avoir un nombre quelconque d'étages de pipeline.
On va maintenant décrire plus en détail le fonctionnement du pipeline 400 de la figure 4 en faisant référence aux chronogrammes des figures 5A et 5B.
La figure 5A illustre un exemple du signal d'horloge martre MCLK et des signaux d'horloge CLK0, CLK1 et CLK2 de la figure 4.
Dans le cas du pipeline de la figure 3, sur chaque front d'horloge significatif du signal d'horloge CLK, chaque étage de pipeline 302, 304, 306 va traiter les valeurs de données respectives D0, Dl, D2 présentes sur son entrée et fournir un résultat sur sa sortie. Ces événements réalisés sur chaque front d'horloge significatif dans le pipeline de la figure 3 vont être appelés ici cycles de traitement du pipeline.
Dans l'exemple de la figure 5A, un cycle de traitement du pipeline est étalé sur trois périodes consécutives de la période d'horloge maître MCLK. Par exemple, le signal d'horloge maître MCLK comprend une série d'impulsions hautes PI à P9, et le signal d'horloge CLK0 comprend seulement les impulsions P3, P6 et P9, le signal d'horloge CLK1 comprend seulement les impulsions P2, P5 et P8, et le signal d'horloge CLK2 comprend seulement les impulsions Pl, P4 et P7. Les impulsions PI, P2 et P3 correspondent par exemple à un premier cycle de traitement Cl du pipeline dans lequel chaque étage du pipeline est déclenché une seule fois. De façon similaire, les impulsions P4, P5 et P6 correspondent par exemple à un deuxième cycle de traitement C2 du pipeline, et les impulsions P7, P8 et P9 correspondent par exemple à un troisième cycle de traitement C3 du pipeline. Bien sûr, alors que dans l'exemple de la figure 5A on a choisi des impulsions positives de l'horloge maître, dans des variantes de réalisation on pourrait choisir des impulsions négatives. Les étages du pipeline pourraient être cadencés par des fronts d'horloge descendants et/ou montants.
Chaque cycle de traitement du pipeline Cl, C2 et C3 est ainsi réalisé sur une pluralité de phases d'horloge. Dans l'exemple de la figure 5A, les phases d'horloge de la plus avancée jusqu'à la plus tardive sont respectivement appliquées aux étages du pipeline à partir du dernier jusqu'au premier. Ce choix est fait afin d'éviter d'altérer le comportement fonctionnel des opérations de traitement de données dans le pipeline, comme on va le décrire plus en détail ci-après.
La figure 5B est un chronogramme illustrant le signal d'horloge maître MCLK et les signaux d'horloge CLKO à CLK3 de la figure 4 selon un autre exemple de fonctionnement, en supposant dans cet exemple que le pipeline comprend quatre étages. Comme cela est illustré en figure 5B, le contrôleur d'horloge 402 est par exemple capable de modifier dynamiquement les phases d'horloge de chaque étage du pipeline entre un cycle de traitement et le suivant. La figure 5B illustre des exemples de quatre cycles de traitement consécutifs C4 à C7.
Dans les cycles de traitement C4 et C7 de la figure 5B, les signaux d'horloge CLKO à CLK3 comprennent tous la même impulsion haute P10 de l'horloge maître, et ainsi tous les étages du pipeline fonctionnent de façon synchrone.
Dans un cycle de traitement C5, les signaux d'horloge CLKO à CLK3 comprennent respectivement des impulsions hautes Pli à P14 du signal d'horloge maître, de sorte que le cycle de traitement du pipeline est étalé sur quatre cycles d'horloge consécutifs de l'horloge maître.
Dans un cycle de traitement C6, les signaux d'horloge CLK2 et CLK3 comprennent la même impulsion haute P15 de l'horloge maître, et les signaux d'horloge CLKO et CLK1 comprennent la même impulsion haute P16 du signal d'horloge maître MCLK, de sorte que le cycle de traitement du pipeline est étalé sur deux cycles d'horloge consécutifs de l'horloge maître.
Bien sûr, les cycles de traitement de la figure 5B ne sont qu'un exemple, et dans des variantes de réalisation, le contrôleur d'horloge 402 est par exemple capable de sélectionner 13 dynamiquement un mode de fonctionnement pour chaque cycle de traitement. La sélection est par exemple basée sur la fréquence d'horloge souhaitée, et plus la fréquence est basse, plus le nombre de phases d'horloge est grand pour chaque cycle de traitement du pipeline. Dans des variantes de réalisation, la sélection peut être basée sur d'autres critères, comme par exemple sur la gestion d'énergie ou sur la sécurité. En supposant un pipeline comportant p étages, chaque opération de traitement de données est par exemple étalée sur jusqu'à p phases d'horloge consécutives.
Dans l'exemple de la figure 5B, les étages de pipeline sont tous groupés ensemble dans le cycle de traitement C4, et sont groupés par paires dans le cycle C6. Dans certains modes de réalisation, un groupement dynamique des étages du pipeline pourrait être réalisé entre un cycle de traitement et le suivant. Cela est par exemple avantageux pour des raisons de sécurité, puisque cela assure une protection contre des attaques par canaux auxiliaires. Par exemple, on pourrait utiliser deux phases d'horloge, et dans un premier cycle de traitement une première phase pourrait être appliquée au quatrième étage du pipeline tandis que la deuxième phase est appliquée aux premier, deuxième et troisième étages du pipeline. Dans un cycle de traitement suivant, la première phase pourrait être appliquée aux troisième et quatrième étages du pipeline, tandis que la deuxième phase est appliquée aux premier et deuxième étages du pipeline. Dans encore un autre cycle de traitement, la première phase pourrait être appliquée aux deuxième, troisième et quatrième étages du pipeline, tandis que la deuxième phase est appliquée au premier étage du pipeline. Dans un autre exemple, dans un pipeline à huit étages, trois phases des signaux d'horloge pourraient être choisies pour activer successivement 6-1-1 étages du pipeline pendant un premier cycle de traitement, et 3-2-3 étages du pipeline pendant un cycle de traitement suivant. De façon plus générale, pendant un même cycle de traitement de données, j premiers étages du pipeline reçoivent par exemple un premier signal d'horloge, et k deuxièmes 14 étages du pipeline reçoivent par exemple un deuxième signal d'horloge déphasé par rapport au premier signal d'horloge, et pendant un autre cycle de traitement de données, 1 premiers étages du pipeline reçoivent par exemple le premier signal d'horloge, et m deuxièmes étages du pipeline reçoivent par exemple le deuxième signal d'horloge, j, k, 1 et m étant tous des entiers supérieurs ou égaux à 1, et j et 1 étant non égaux.
En outre, alors que dans les modes de réalisation des figures 5A et 5B les impulsions d'horloge appliquées à chaque étage du pipeline sont synchrones avec le signal d'horloge maître, dans des variantes de réalisation, les différences de phase entre les signaux d'horloge pourraient être inférieures à une période d'horloge de l'horloge maître.
La figure 6 illustre schématiquement le contrôleur d'horloge 402 de la figure 4 plus en détail selon un exemple de réalisation.
L'exemple de la figure 6 concerne un cas dans lequel le contrôleur d'horloge 402 génère huit signaux d'horloge CLK0 à CLK7. Bien sûr, dans des variantes de réalisation, le contrôleur d'horloge 402 peut générer une pluralité de signaux d'horloge quelconque.
Le contrôleur d'horloge 402 comprend par exemple une ligne d'entrée 602 recevant un signal de commande Div_cmd indiquant le nombre de cycles d'horloge de l'horloge maître qu'il faut utiliser pour chaque cycle de traitement du pipeline. La ligne 602 est par exemple couplée à une connexion en série de deux bascules 604, 606 qui par exemple synchronisent le signal avec le fonctionnement du pipeline en synchronisant le signal de commande Div__cmd sur la base d'un signal temporel indiquant la fin de chaque cycle de traitement et fourni sur une ligne d'entrée 608. Le signal temporel est par exemple activé lorsqu'une phase d'horloge finale Ena(7) d'un cycle de traitement a été activée. Le signal de commande synchronisé Div_cmd_sync est fourni sur une ligne 610 à un circuit logique de calcul (COMP LOGIC) 612, qui par exemple génère un ensemble de signaux d'activation Nxt_Ena(7:0).
Les signaux d'activation Nxt_Ena(7:0) chargent une ou plusieurs valeurs 1 logique dans des bascules 614, chacune étant associée à l'un correspondant des signaux d'horloge CLK0 à CLK7. Chaque bascule 614 est par exemple synchronisée par le signal d'horloge maître MCLK. Les bascules 614 fournissent les signaux d'activation correspondants sur des sorties Ena(7:0), qui sont par exemple fournies à des entrées d'activation EN de portes d'horloge (CG) correspondantes 616. Les portes d'horloge 616 reçoivent chacune le signal d'horloge MCLK, et fournissent le signal d'horloge au niveau de leur sortie lorsque leur signal d'activation respectif est à un 1 logique. De cette manière, les portes d'horloge génèrent respectivement les signaux d'horloge CLK0 à CLK7 sur leurs sorties.
Les signaux d'activation Ena(7:0) sont aussi par exemple renvoyés sur un chemin de rétroaction 618 vers le circuit logique de calcul 612. Le circuit 612 génère par exemple les signaux d'activation Nxt_Ena(7:0) sur la base du signal de commande Div_cmd_sync, et sur la base de la valeur précédente des signaux d'activation, correspondant aux signaux Ena(7:0). Par exemple, en supposant que le signal de commande Div_cmd_sync indique qu'un cycle de traitement doit être étalé sur n cycles d'horloge, et qu'il il y a q signaux d'horloge indépendants, le circuit 612 commence par exemple le cycle de traitement en activant les signaux d'activation Nxt_Ena(0) à Nxt_Ena((q/n)-1). Si n est égal à 1, le cycle de traitement est alors terminé. Toutefois si n est supérieur à 1, alors pour la période suivante de l'horloge maître, les q/n 1 logiques des signaux Ena(7:0) sont décalés de q/n positions vers la gauche pour générer les signaux Nxt_Ena(7:0 ) . Cela continue par exemple jusqu'à ce que tous les signaux d'horloge aient été activés pendant le cycle de traitement, par exemple jusqu'à ce que la valeur Nxt_Ena(7) ait été activée.
Dans certains modes de réalisation, les portes d'horloge 616 pourraient être omises, et les bascules 614 pourraient fournir directement les signaux d'horloge CLKO à CLK7. Toutefois, un avantage du fait d'utiliser un passage de l'horloge dans des portes est que, lorsque les signaux d'activation Ena(7:0) sont tous activés, la fréquence des signaux d'horloge CLKO à CLK7 va être celle de l'horloge maître MCLK, plutôt que d'être limitée à la moitié de la fréquence de l'horloge maître.
Les figures 7A à 7D sont des diagrammes représentant les temps d'exécution d'opérations de traitement dans un pipeline selon des exemples de réalisation. On suppose que. le pipeline comporte quatre étages : un étage FSM (machine à états finis) contrôlant des multiplexeurs dans le pipeline pour fournir des données D0_A et D0__B dans le pipeline, un étage de commande CMD exécutant une commande CMD_A sur les données D0_A, ou une commande CMD_B sur les données D0_B, un étage de calcul CALC réalisant un calcul CALC_A ou CALC_B, et un étage de résultat RES mémorisant le résultat RES_A ou RES_B.
La figure 7A illustre un cas dans lequel l'horloge reçue par chaque étage du pipeline est la même. Dans un premier cycle de traitement Cl du pipeline, la machine FSM fournit les données D0_A. Dans un deuxième cycle C2 du pipeline, la machine FSM fournit les données D0_B, et l'étage CMD réalise la commande CMD_A. Dans un troisième cycle C3 du pipeline, l'étage CMD réalise la commande CMD_B, et l'étage de calcul réalise le calcul CALC_A. Dans un quatrième cycle C4 du pipeline, l'étage CALC réalise le calcul CALC_B et un résultat RES_A est mémorisé. Dans un cinquième cycle C5, le résultat RES_B est mémorisé. Aussi dans le cinquième cycle, la valeur A mémorisée dans l'opération RES_A est par exemple utilisée par l'étage FSM, qui par exemple reçoit la valeur par 1'intermédiaire d'un chemin de rétroaction du pipeline.
La figure 7B illustre un exemple dans lequel la fréquence d'horloge a par exemple été réduite par deux par rapport à l'exemple de la figure 7A, et il y a deux phases d'horloge, chaque cycle de traitement étant étalé sur deux périodes d'horloge. Ainsi, plutôt que d'être espacées d'une période d'horloge entière, les opérations dans le pipeline sont espacées 17 d'une demi-période d'horloge. On peut voir que, dans cet exemple, le comportement du pipeline est fonctionnellement différent de celui de la figure 7A, puisque le résultat RES_A va être disponible sur le chemin de rétroaction dans le troisième cycle de traitement C3 de 1'étage FSM, alors que les données sont utilisées seulement dans le cinquième cycle de traitement C5 de l'étage FSM. En d'autres termes, l'étalement des cycles de traitement sur plusieurs phases d'horloge crée des problèmes fonctionnels de maintien dans cet exemple.
La figure 7C illustre une solution pour réduire l'impact du problème fonctionnel de maintien identifié en figure 7B. Dans l'exemple de la figure 7C, chaque cycle de traitement est étalé sur quatre phases d'horloge, et la dernière phase de chaque cycle, notée PH4 en figure 7C, est fournie au premier étage du pipeline, qui est l'étage FSM. En outre, la deuxième phase avant la dernière phase, PH3, est fournie au deuxième étage du pipeline, qui est l'étage CMD, la troisième phase avant la dernière phase, PH2, est fournie au troisième étage du pipeline, qui est l'étage CALC, et la phase la plus en avance PHI est fournie au dernier étage, qui est l'étage RES. On peut voir que ce choix de phases d'horloge signifie que le résultat RES_A est disponible seulement un cycle en avant de ce qui est nécessaire. Il y a ainsi au plus un décalage d'un seul cycle d'horloge dans le comportement.
La figure 7D illustre un autre exemple, similaire à celui de la figure 7C, mais dans lequel le traitement du pipeline est modifié de telle sorte que les données restent stables un cycle d'horloge après leur utilisation. Ainsi un cycle non actif est ajouté après le cycle Cl de la FSM dans lequel les données D0_A sont fournies, et de cette manière le résultat RES_A reste aussi valide pour le cycle C5 de l'étage RES, de sorte qu'il peut être utilisé par l'étage FSM par l'intermédiaire du chemin de rétroaction directement sans aucun maintien.
La figure 8A illustre schématiquement un accélérateur matériel arithmétique modulaire selon un exemple de réalisation. Ce circuit met en œuvre par exemple une partie de l'algorithme cryptographique RSA (Rivest, Shamir et Adleman) , bien que dans d'autres variantes de réalisation il puisse avoir d'autres applications, comme un algorithme ECC (cryptographie à courbe elliptique), ou d'autres opérations de chiffrement ou de déchiffrement. Le circuit de la figure 8 met en œuvre par exemple une partie d'une exponentiation modulaire, et en particulier une fonction A.B + Y.N, en d'autres termes la multiplication modulaire de A.B modulo N. Chaque mot de données A est par exemple divisé en segments Ai pour le traitement. Par exemple, les valeurs A, B et N sont les opérandes du calcul, et Y représente un nombre qui permet de satisfaire la propriété modulo, par exemple tel que 0<A.B+Y.N<N. Les moyens pour calculer Y seront connus de 1'homme de 1'art.
Les valeurs de Ai, B et N, ainsi que le résultat temporaire d'une itération précédente S = Ri-i sont par exemple mémorisés dans une mémoire 802, qui est par exemple une RAM (mémoire à accès aléatoire), et le résultat temporaire R de chaque itération est mémorisé dans la mémoire 802. Dans cet exemple, S est utilisé pour accumuler des résultats précédents de Ao à Ai-i. R est le résultat temporaire des multiplications de Ao à Ai par B. Les valeurs de Ai, B, N, Yj, S et R sont par exemple mémorisées dans des registres correspondants 804, 806, 808, 810, 812 et 814 respectivement.
La valeur B, et un segment de rang i, Ai, de la valeur A, sont multipliés entre eux par un multiplieur 816. Une portion du résultat dépend encore de la partie suivante de B, alors qu'une autre portion du résultat est finale en ce qui concerne B. Le résultat temporaire et accumulé par l'intermédiaire d'un chemin de rétroaction revenant vers le multiplieur 816, qui réalise ensuite la multiplication de la partie suivante de B, jusqu'à ce que la totalité de la valeur B ait été multipliée par la valeur Ai. Une portion finale du résultat est ensuite progressivement fournie à un additionneur 818, pour être additionnée à une valeur fournie par un multiplexeur 820.
De façon similaire, la valeur N, et son segment de rang i, Yi, de la valeur Y, sont multipliés entre eux par un multiplieur 824, et une partie du résultat est renvoyée par l'intermédiaire d'un chemin de rétroaction vers le multiplieur 824, qui réalise ensuite la multiplication de la partie suivante de N, jusqu'à ce que la totalité de la valeur de N ait été multipliée par la valeur Yi. Le résultat est ensuite fourni à un additionneur 822, pour être additionné à la valeur fournie par 1'additionneur 818. Les valeurs de Yy sont aussi mémorisées dans le registre Yi 810.
Le multiplexeur 820 fournit, sur une itération initiale, une valeur de zéro à l'additionneur 818, et sur des itérations suivantes, le résultat S de l'itération précédente.
Un circuit de contrôle de RAM (RAM CTRL) 826 contrôle par exemple les opérations de lecture et d'écriture dans la mémoire 802, et une machine FSM (machine à états finis) 828 contrôle par exemple la commutation de données dans le circuit, comme on va 1'expliquer plus en détail en faisant référence à la figure 8B. Un registre intermédiaire (INT REG) 830 mémorise le résultat de la multiplication réalisée par le multiplieur 816.
La figure 8B illustre un pipeline formé dans le circuit de la figure 8A selon une approche standard dans laquelle chacun des étages fonctionne de façon synchrone. Le pipeline comprend par exemple des étages correspondant à la machine FSM 828, aux registres A, B, S et N (ABSN REGS) 804, 806, 812 et 808, au multiplieur (MULT0) 816, au registre intermédiaire (INT REG) 830, au multiplieur (MULTI) 824, au registre (RESULT) 814, et à la mémoire (RAM) 802. La machine FSM 828 contrôle par exemple les registres ABSN et le circuit de contrôle de mémoire (RAM CTRL) 826. Le circuit de contrôle de mémoire 826 contrôle à son tour la RAM 802 pour fournir des données aux registres ABSN. Chacun des étages du pipeline reçoit le même signal d'horloge CLK à partir d'un contrôleur d'horloge (CLK CTRL) 902.
Les figures 9A et 9B représentent une variante de mise en œuvre du circuit arithmétique modulaire des figures 8A et 8B, selon un exemple de réalisation dans lequel un contrôle de phase dynamique est mis en œuvre.
Le circuit de la figure 9A est le même que celui de la figure 8A, mais indique en plus, pour chaque étage du pipeline, la phase d'horloge qu'il reçoit.
La figure 9B illustre le pipeline modifié, qui est similaire à celui de la figure 8B, mais dans lequel les multiplieurs 816 et 824 ont été divisés pour obtenir des sousétages de pipeline séparés. En particulier, le multiplieur 816 comprend par exemple deux sous-étages correspondant à un multiplieur MSB (MULT0 MSB) 816' et à un multiplieur LSB (MULT0 LSB) 816. Le multiplieur 816' reçoit par exemple les a/2 bits les plus significatifs de la valeur Aq, où a est le nombre de bits de la valeur Aq, et le multiplieur 816 reçoit par exemple les a/2 bits les moins significatifs de la valeur Aq. Les sous-étages 816' , 816 sont par exemple des blocs à traitement parallèle pouvant être exécutés en parallèle, ou déphasés l'un par rapport à l'autre. De façon similaire, le multiplieur 824 comprend par exemple deux sous-étages correspondant à un multiplieur MSB (MULT1 MSB) 824' et à un multiplieur LSB (MULT1 LSB) 824. Le multiplieur 824' reçoit par exemple les c/2 bits les plus significatifs de la valeur Yq, où c est le nombre de bits de la va-leur Yq, et le multiplieur 824 reçoit par exemple les c/2 bits les moins significatifs de la valeur Yq. Les sous-étages 824', 824 sont par exemple des blocs à traitement parallèle pouvant être exécutés en parallèle, ou déphasés l'un par rapport à l'autre.
En faisant de nouveau référence à la figure 9A, les étages du pipeline reçoivent par exemple chacun l'une de huit phases d'horloge. Les étages du pipeline reçoivent par exemple les phases, à partir de la phase la plus en avance vers le dernier étage, dans l'ordre inverse, de sorte que le premier étage du pipeline reçoit la phase d'horloge la plus tardive, et le dernier étage du pipeline reçoit la phase d'horloge la plus en avance. Par exemple, en référence aux figures 9A et 9B, la RAM 802 et le registre 814 reçoivent la phase d'horloge 0, la plus avancée, à partir d'un circuit (CTRL 0) 902 d'un contrôleur d'horloge, le multiplieur 824 reçoit la phase d'horloge 1 à partir d'un circuit (CTRL 1) 904 du contrôleur d'horloge, le multiplieur 824' reçoit la phase d'horloge 2 à partir d'un circuit (CTRL 2) 906 du contrôleur d'horloge, le registre intermédiaire 830 reçoit la phase d'horloge 3 à partir d'un circuit (CTRL 3) 908 du contrôleur d'horloge, le multiplieur 816 reçoit la' phase d'horloge 4 à partir d'un circuit (CTRL 4) 910 du contrôleur d'horloge, le multiplieur 816' reçoit la phase d'horloge 5 à partir d'un circuit (CTRL 5) 912 du contrôleur d'horloge, les registres ABSN 804, 806, 812, 808, et le contrôleur de mémoire 826 reçoivent la phase d'horloge 6 à partir d'un circuit (CTRL 6) 914 du contrôleur d'horloge, et la machine FSM 828 reçoit la phase d'horloge 7 à partir d'un circuit (CTRL 7) 916 du contrôleur d'horloge.
Ainsi, dans l'exemple de la figure 9B, un ou plusieurs étages de pipeline d'un pipeline de traitement de données initial sont divisés en plusieurs sous-étages parallèles afin de créer des sous-étages qui peuvent être synchronisés par des signaux d'horloge indépendants déphasés entre eux. Avantageusement, ces sous-étages sont des étages parallèles, pouvant être exécutés en parallèle sans ajout de latence au pipeline par rapport à l'étage de pipeline d'origine. En outre, alors que des registres sont par exemple prévus pour mémoriser des données entre les étages du pipeline, aucun registre de la sorte n'est par exemple ajouté entre les sous-étages du pipeline.
Par exemple, un procédé de conception de circuit d'un pipeline de traitement de données comprend la génération d'une conception de circuit d'un pipeline de traitement de données, par exemple en modifiant une conception de circuit initiale du pipeline de traitement de données en divisant au moins un étage de pipeline initial en plusieurs sous-étages parallèles pouvant être synchronisés par des signaux d'horloge déphasés entre eux. La conception de circuit comprend aussi par exemple un ou plusieurs autres étages de pipeline synchronisés par des signaux d'horloge indépendants correspondants, le nombre de signaux d'horloge indépendants dans le circuit étant supérieur au nombre d'étages de pipeline de la conception de circuit initiale. En d'autres termes, en prenant une conception de circuit initiale d'un pipeline de traitement de données comportant N étages, la conception de circuit est par exemple modifiée en divisant un ou plusieurs étages de pipeline en plusieurs sous-étages, les étages et les sous-étages du pipeline étant synchronisés par des signaux respectifs parmi M signaux d'horloge indépendants, avec M > N. Un procédé de fabrication d'un pipeline de traitement de données comprend par exemple la fabrication du pipeline de traitement de données sur la base de la conception de circuit.
La figure 10 illustre schématiquement un système de traitement multi-cceur 1000 selon un exemple de réalisation. Le système 1000 comprend par exemple un cœur (CORE #1) 1002 et un cœur (CORE #2) 1004, et le système 1000 peut en plus comprendre d'autres cœurs (non illustrés en figure 10). Les cœurs 1002, 1004 reçoivent par exemple des signaux d'horloge maîtres MCLK_C1 et MCLK5C2 respectivement, qui sont par exemple générés par un circuit de commande (CTRL) 1006 sur la base d'un signal d'horloge maître MCLK commun. Le circuit de commande 1006 peut en plus générer d'autres signaux d'horloge maîtres dans le cas où le système de traitement comprend d'autre cœurs.
Chaque cœur 1002, 1004 comprend par exemple un pipeline (non illustré en figure 10) similaire à celui de la figure 4, contrôlé par un contrôleur d'horloge similaire au contrôleur 402 de la figure 4, les contrôleurs d'horloge étant référencés 1008 et 1010 dans les cœurs 1002, 1004 respectivement.
Chaque contrôleur d'horloge 1008, 1010 peut par exemple faire varier la phase de fonctionnement d'un ou plusieurs des étages de pipeline comme cela a été décrit précédemment. En plus ou à la place, le contrôleur 1006 peut par exemple générer les signaux d'horloge maîtres MCLK_C1 et MCLK_C2 pour qu'ils soient déphasés entre eux, comme on va le décrire maintenant plus en détail en faisant référence à la figure 11.
La figure 11 est un chronogramme illustrant des exemples du signal d'horloge maître commun MCLK, des signaux d'horloge de pipeline PS1C1, PS2C1 pour piloter différents étages d'un pipeline du cœur 1002, et des signaux d'horloge de pipeline PS1C2, PS2C2 pour piloter différents étages d'un pipeline du cœur 1004.
Dans l'exemple de la figure 11, le signal d'horloge maître commun MCLK comprend des impulsions PI à P5 pendant une phase initiale. Cette phase correspond par exemple à au moins une partie d'une phase de démarrage des cœurs 1002, 1004.
Le signal d'horloge PS1C1 comprend par exemple les impulsions impaires PI, P3, P5, etc. du signal d'horloge maître MCLK pendant la phase initiale, et le signal d'horloge PS2C1 comprend par exemple les impulsions paires P2, P4 etc. du signal d'horloge maître MCLK pendant la phase initiale. Par exemple, l'horloge maître MCLK_C1 fournie au cœur 1002 correspond à l'horloge maître commune MCLK, et le contrôleur d'horloge 1008 génère les signaux PS1C1 et PS2C1 en sélectionnant des impulsions de cette horloge maître.
Le signal d'horloge PS1C2 comprend par exemple, pendant la phase initiale, les impulsions impaires Pl, P3, P5, etc. du signal l'horloge maître commun MCLK, chacune retardée d'une demipériode d'horloge. Le signal d'horloge PS2C2 comprend par exemple, pendant la phase initiale, les impulsions paires P2, P4 etc. du signal d'horloge maître commun MCLK, chacune retardée d'une demipériode d'horloge. Par exemple, l'horloge maître MCLK_C2 fournie au cœur 1004 correspond à l'horloge maître inversée MCLK, et le contrôleur d'horloge 1010 génère les signaux PS1C2 et PS2C2 en sélectionnant des impulsions de cette horloge maître inversée.
La durée de la phase initiale pourrait correspondre à un nombre d'impulsions de l'horloge maître commune MCLK plus petit ou grand que les cinq impulsions représentées en figure 11. Pendant une phase suivante, commençant par exemple à partir d'une énième impulsion de l'horloge maître MCLK, les signaux d'horloge PS1C1, PS2C1, PS1C2 et PS2C2 sont par exemple amenées en phase entre eux pour revenir au fonctionnement synchrone normal.
Il apparaîtra clairement à l'homme de l'art que les exemples de la figure 11 ne représentent qu'un exemple de la façon dont les phases des signaux d'horloge fournis aux étages de pipeline dans les cœurs 1002, 1004, pourraient être choisies. Il existe de nombreuses variantes de combinaisons de phases qui pourraient être utilisées dans des variantes de réalisation.
En outre, dans certains modes de réalisation, les étages de pipeline se trouvant dans le cœur 1002 pourraient fonctionner de façon synchrone entre eux, et les étages de pipeline se trouvant dans le cœur 1004 pourraient fonctionner de façon synchrone entre eux, et un déphasage pourrait être appliqué seulement entre les signaux d'horloge maître MCLK_C1 et MCLK__C2 fournis à chacun des cœurs du système de traitement multi-cœur 1000.
Un avantage des modes de réalisation décrits ici est que, en contrôlant dynamiquement les phases d'horloge des signaux d'horloge fournis à des étages d'un pipeline de traitement de données, la consommation d'énergie du pipeline peut être modifiée dynamiquement. Dans une carte NFC, le fait d'étaler la consommation d'énergie sur plusieurs phases d'horloge conduit à l'avantage qu'on obtiendra une demande de courant plus lisse, ce qui aidera à éviter une situation dans laquelle la consommation de courant sera vue au niveau de l'antenne. Dans des circuits cryptographiques, l'étalement de la consommation d'énergie sur plusieurs phases d'horloge peut aider à empêcher des attaques par canaux auxiliaires sur la base de la consommation du circuit, en particulier si les phases d'horloge fournies aux étages de pipeline sont modifiées de manière dynamique entre un cycle de traitement de données et le suivant. Dans d'autres circuits, comme dans un processeur multi-cœur, l'étalement de la consommation d'énergie sur plusieurs phases d'horloge peut éviter des pics dans le courant d'alimentation, pics qui pourraient provoquer une forte chute dans les tensions d'alimentation présentes sur les rails de tension d'alimentation des cœurs.
Un avantage de la mise en œuvre de l'algorithme RSA des figures 9A et 9B est que, en séparant une ou plusieurs opérations de multiplication dans des étages de pipeline séparés et en contrôlant l'exécution de ces étages de pipeline sur différentes phases d'horloge, la consommation d'énergie sur chaque phase d'horloge peut être notablement réduite. En effet, les opérations de multiplication ont tendance à être relativement consommatrices d'énergie.
Avec la description ainsi faite d'au moins un mode de réalisation illustratif, diverses altérations, modifications et améliorations apparaîtront facilement à l'homme de l'art. Par exemple, alors que les figures 8A, 8B, 9A et 9B illustrent une mise en œuvre spécifique d'une partie de l'algorithme RSA, il apparaîtra clairement à l'homme de l'art que les principes décrits en relation avec celle-ci pourraient être appliqués à d'autres types de circuits.
En outre, il apparaîtra clairement à l'homme de l'art que les divers éléments décrits en relation avec les divers modes de réalisation pourraient être combinés, dans des variantes de réalisation, selon diverses combinaisons. Par exemple, le fonctionnement dynamique décrit en relation avec la figure 5B
0 pourrait être appliqué au mode de réalisation RSA des figures 9A et 9B.
B14785 - 15-GR2-0615

Claims (15)

  1. REVENDICATIONS
    1. Pipeline de traitement de données comprenant :
    un premier étage de pipeline (302) recevant un premier signal d'horloge (CLK0) et agencé pour réaliser une première opération déclenchée par des premiers fronts de synchronisation du premier signal d'horloge (CLK0) ;
    un deuxième étage de pipeline (304) recevant un deuxième signal d'horloge (CLK1) et agencé pour réaliser une deuxième opération déclenchée par des deuxièmes fronts de synchronisation du deuxième signal d'horloge (CLKl) ; et un contrôleur d'horloge (402) agencé pour générer les premier et deuxième signaux d'horloge (CLK0, CLKl), le contrôleur d'horloge (402) étant capable de fonctionner :
    - dans un premier mode dans lequel, pendant un premier cycle de traitement de données du pipeline de traitement de données, un premier des premiers fronts de synchronisation est en phase avec un premier des deuxièmes fronts de synchronisation ; et
    - dans un deuxième mode dans lequel, pendant un deuxième cycle de traitement de données du pipeline de traitement de données, un deuxième des premiers fronts de synchronisation est déphasé par rapport à un deuxième des deuxièmes fronts de synchronisation.
  2. 2. Pipeline de traitement de données selon la revendication 1, dans lequel le contrôleur d'horloge (402) est agencé pour générer les premier et deuxième signaux d'horloge (CLK0, CLKl) sur la base d'un signal d'horloge maître (MCLK) .
  3. 3. Pipeline de traitement de données selon la revendication 2, dans lequel :
    dans le premier mode, le contrôleur d'horloge (402) est agencé pour sélectionner un premier front de synchronisation· du signal d'horloge maître (MCLK) pour former le premier des premiers et deuxièmes fronts de synchronisation ; et dans le deuxième mode, le contrôleur d'horloge (402) est agencé pour sélectionner un deuxième front de synchronisation du
    B14785 - 15-GR2-0615 signal d'horloge maître (MCLK) pour former le deuxième des premiers fronts de synchronisation du premier signal d'horloge (CLKO) et pour sélectionner un troisième front de synchronisation du signal d'horloge maître (MCLK) pour former le deuxième des deuxièmes fronts de synchronisation du deuxième signal d'horloge (CLK1).
  4. 4. Pipeline de traitement de données selon la revendication 3, dans lequel le contrôleur d'horloge (402) comprend un circuit de calcul (612) adapté à générer :
    un premier signal d'activation (Nxt_Ena(0)) pour sélectionner le deuxième front de synchronisation du signal d'horloge maître (MCLK) pour former le deuxième des premiers fronts de synchronisation du premier signal d'horloge (CLKO) ; et un deuxième signal d'activation (Nxt_Ena(l)) pour sélectionner le troisième front de synchronisation du signal d'horloge maître (MCLK) pour former le deuxième des deuxièmes fronts de synchronisation du deuxième signal d'horloge (CLKl).
  5. 5. Pipeline de traitement de données selon la revendication 4, dans lequel le circuit de calcul (612) est adapté à générer des valeurs courantes des premier et deuxième signaux d'activation (Nxt_Ena(7 :0)) sur la base de valeurs précédentes des premier et deuxième signaux d'activation (Ena(7:0)) et sur la base du facteur de division d'horloge.
  6. 6. Pipeline de traitement de données selon l'une quelconque des revendications 1 à 5, dans lequel dans le deuxième mode, le contrôleur d'horloge (402) est adapté à étaler le deuxième cycle de traitement de données sur n phases d'horloge, où n est compris entre 2 et p, où p est le nombre d'étages de pipeline dans le pipeline de traitement de données.
  7. 7. Pipeline de traitement de données selon l'une quelconque des revendications 1 à 6, dans lequel le premier étage de pipeline (302) comprend une sortie couplée à une entrée du deuxième étage de pipeline (304), et dans lequel pendant le deuxième cycle de traitement de données du pipeline de traitement de données le contrôleur d'horloge (402) est adapté à générer le
    B14785 - 15-GR2-0615 deuxième des premiers fronts de synchronisation du premier signal d'horloge survenant à un premier instant et le deuxième des deuxièmes fronts de synchronisation du deuxième signal d'horloge survenant à un deuxième instant en avance par rapport au premier instant.
  8. 8. Carte NFC (communications en champ proche) comprenant le pipeline de traitement de données de l'une quelconque des revendications 1 à 7, dans laquelle le contrôleur d'horloge (402) est en outre adapté à contrôler la période d'horloge des premier et deuxième signaux d'horloge sur la base de l'alimentation disponible pour la carte NFC.
  9. 9. Circuit cryptographique comprenant le pipeline de traitement de données de l'une quelconque des revendications 1 à 7, dans lequel pendant le deuxième cycle de traitement de données, j premiers étages du pipeline reçoivent le premier signal d'horloge, et k deuxièmes étages du pipeline reçoivent le deuxième signal d'horloge, et pendant un troisième cycle de traitement de données, 1 premiers étages du pipeline reçoivent le premier signal d'horloge, et m deuxièmes étages du pipeline reçoivent le deuxième signal d'horloge, où j, k, 1 et m sont des entiers supérieurs ou égaux à 1, et j et 1 ne sont pas égaux.
  10. 10. Accélérateur matériel arithmétique modulaire comprenant le pipeline de traitement de données de l'une quelconque des revendications 1 à 7, dans lequel les premier et deuxième étages de pipeline (816', 816, 824', 824) mettent en œuvre une opération de multiplication.
  11. 11. Processeur multi-cœur comprenant :
    un premier cœur (1002) comprenant un premier pipeline de traitement de données selon l'une quelconque des revendications 1 à 7 ;
    un deuxième cœur (1004) comprenant un deuxième pipeline de traitement de données selon l'une quelconque des revendications 1 à 7 ; et un circuit de contrôle d'horloge (1006) agencé pour fournir un premier signal d'horloge maître (MCLK_C1) au premier
    B14785 - 15-GR2-0615 cœur et un deuxième signal d'horloge maître (MCLK_C2) au deuxième cœur, au moins certains des fronts d'horloge des premier et deuxième signaux d'horloge maîtres étant déphasés entre eux.
  12. 12. Procédé de fabrication d’un pipeline de traitement de données comprenant : la conception de circuit du pipeline de traitement de données, comprenant la génération d'une conception de circuit du pipeline de traitement de données de façon à comprendre :
    un premier étage de pipeline (302) agencé pour réaliser une première opération déclenchée par des premiers fronts de synchronisation d'un premier signal d'horloge (CLK0) ;
    un deuxième étage de pipeline (304) agencé pour réaliser une deuxième opération déclenchée par des deuxièmes fronts de synchronisation d'un deuxième signal d'horloge (CLK1) indépendant du premier signal d'horloge ; et un contrôleur d'horloge (402) agencé pour générer les premier et deuxième signaux d'horloge (CLK0, CLK1), le contrôleur d'horloge (402) étant capable de fonctionner :
    - dans un premier mode dans lequel, pendant un premier cycle de traitement de données du pipeline de traitement de données, un premier des premiers fronts de synchronisation est en phase avec un premier des deuxièmes fronts de synchronisation ; et
    - dans un deuxième mode dans lequel, pendant un deuxième cycle de traitement de données du pipeline de traitement de données, un deuxième des premiers fronts de synchronisation est déphasé par rapport à un deuxième des deuxièmes fronts de synchronisation; et la fabrication du pipeline de traitement de données sur la base de la conception de circuit.
  13. 13. Procédé selon la revendication 12, dans lequel la génération de la conception de circuit du pipeline de traitement de données comprend la modification d'une conception de circuit initiale du pipeline de traitement de données en divisant un étage
    B14785 - 15-GR2-0615 de pipeline initial en des premier et deuxième sous-étages de pipeline parallèles.
  14. 14. Procédé selon la revendication 12, dans lequel la génération de la conception de circuit du pipeline de traitement de données comprend en outre la génération de la conception de circuit de façon à comprendre un ou plusieurs autres étages de pipeline synchronisés par des signaux d'horloge indépendants correspondants, le nombre de signaux d'horloge indépendants dans la conception de circuit étant supérieur au nombre d'étages de pipeline de la conception de circuit initiale.
  15. 15. Procédé de contrôle dynamique d'un pipeline de traitement de données comprenant :
    générer, par un contrôleur d'horloge (402), des premier et deuxième signaux d'horloge (CLK0, CLK1) ;
    fournir le premier signal d'horloge (CLK0) à un premier étage de pipeline (302) agencé pour réaliser une première opération déclenchée par des premiers fronts de synchronisation du premier signal d'horloge (CLK0) ;
    fournir le deuxième signal d'horloge (CLKl) à un deuxième étage de pipeline (304) agencé pour réaliser une deuxième opération déclenchée par des deuxièmes fronts de synchronisation du deuxième signal d'horloge (CLKl) ;
    dans lequel le contrôleur d'horloge (402) est capable de fonctionner :
    - dans un premier mode dans lequel, pendant un premier cycle de traitement de données du pipeline de traitement de données, un ou plusieurs des premiers fronts de synchronisation sont en phase avec un ou plusieurs des deuxièmes fronts de synchronisation ; et
    - dans un deuxième mode dans lequel, pendant un deuxième cycle de traitement de données du pipeline de traitement de données, un ou plusieurs des premiers fronts de synchronisation sont déphasés par rapport à un ou plusieurs des deuxièmes fronts de synchronisation.
    1/6
    --► t Fig IB
FR1656052A 2016-06-29 2016-06-29 Procede et circuit de controle dynamique de consommation d'energie Pending FR3053485A1 (fr)

Priority Applications (5)

Application Number Priority Date Filing Date Title
FR1656052A FR3053485A1 (fr) 2016-06-29 2016-06-29 Procede et circuit de controle dynamique de consommation d'energie
US15/253,012 US10067550B2 (en) 2016-06-29 2016-08-31 Multi-phase clock method and circuit for dynamic power control in a data processing pipeline
EP16200665.4A EP3264221B1 (fr) 2016-06-29 2016-11-25 Procédé et circuit de commande de puissance dynamique
CN201621438938.2U CN207397257U (zh) 2016-06-29 2016-12-26 具有数据处理流水线的电子设备以及多核心处理器
CN201611219826.2A CN107545292B (zh) 2016-06-29 2016-12-26 用于动态功率控制的方法和电路

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1656052 2016-06-29
FR1656052A FR3053485A1 (fr) 2016-06-29 2016-06-29 Procede et circuit de controle dynamique de consommation d'energie

Publications (1)

Publication Number Publication Date
FR3053485A1 true FR3053485A1 (fr) 2018-01-05

Family

ID=57396545

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1656052A Pending FR3053485A1 (fr) 2016-06-29 2016-06-29 Procede et circuit de controle dynamique de consommation d'energie

Country Status (4)

Country Link
US (1) US10067550B2 (fr)
EP (1) EP3264221B1 (fr)
CN (2) CN207397257U (fr)
FR (1) FR3053485A1 (fr)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3053485A1 (fr) * 2016-06-29 2018-01-05 STMicroelectronics (Alps) SAS Procede et circuit de controle dynamique de consommation d'energie
US10459477B2 (en) * 2017-04-19 2019-10-29 Seagate Technology Llc Computing system with power variation attack countermeasures
US10359803B2 (en) * 2017-05-22 2019-07-23 Qualcomm Incorporated System memory latency compensation
DE102018215139A1 (de) * 2018-09-06 2020-03-12 Robert Bosch Gmbh Betriebsverfahren und Steuereinheit für ein Daten-/Signalauswertesystem, Daten-/Signalauswertesystem, Ultraschallbetriebsassistenzsystem und Arbeitsvorrichtung
US11575457B2 (en) * 2021-01-19 2023-02-07 Avago Technologies International Sales Pte. Limited Power-smart packet processing
CN113381736B (zh) * 2021-06-25 2023-11-21 上海威固信息技术股份有限公司 一种高吞吐率的流水线电路
CN113505095B (zh) * 2021-07-30 2023-03-21 上海壁仞智能科技有限公司 多核异相处理的系统级芯片和集成电路

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070294548A1 (en) * 2002-10-02 2007-12-20 International Business Machines Corperation Interlocked synchronous pipeline clock gating

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1147882A (zh) * 1995-01-25 1997-04-16 高级微型设备有限公司 包括多个传输门的高速锁存电路及使用它的微处理器
US7620131B2 (en) 2005-11-22 2009-11-17 Sigmatel, Inc. Digital clock controller, radio receiver, and methods for use therewith
US7643591B2 (en) 2006-07-26 2010-01-05 International Business Machines Corproation Transition balancing for noise reduction /Di/Dt reduction during design, synthesis, and physical design
US20170062075A1 (en) * 2015-08-31 2017-03-02 Sandisk Technologies Inc. Apparatus including core and clock gating circuit and method of operating same
FR3053485A1 (fr) * 2016-06-29 2018-01-05 STMicroelectronics (Alps) SAS Procede et circuit de controle dynamique de consommation d'energie

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070294548A1 (en) * 2002-10-02 2007-12-20 International Business Machines Corperation Interlocked synchronous pipeline clock gating

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JACOBSON H M ET AL: "SYNCHRONOUS INTERLOCKED PIPELINES", PROCEEDINGS OF THE INTERNATIONAL SYMPOSIUM ON ASYNCHRONOUSCIRCUITS AND SYSTEMS, XX, XX, 8 April 2002 (2002-04-08), pages 3 - 12, XP008037946 *
NAVID TOOSIZADEH ET AL: "VariPipe: Low-overhead variable-clock synchronous pipelines", COMPUTER DESIGN, 2009. ICCD 2009. IEEE INTERNATIONAL CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, 4 October 2009 (2009-10-04), pages 117 - 124, XP031627922, ISBN: 978-1-4244-5029-9 *

Also Published As

Publication number Publication date
EP3264221A1 (fr) 2018-01-03
CN107545292B (zh) 2021-01-08
CN207397257U (zh) 2018-05-22
EP3264221B1 (fr) 2021-06-02
US10067550B2 (en) 2018-09-04
US20180004270A1 (en) 2018-01-04
CN107545292A (zh) 2018-01-05

Similar Documents

Publication Publication Date Title
FR3053485A1 (fr) Procede et circuit de controle dynamique de consommation d&#39;energie
FR2758195A1 (fr) Coprocesseur d&#39;arithmetique modulaire comprenant deux circuits de multiplication operant en parallele
FR2788867A1 (fr) Procede arithmetique, appareil arithmetique et appareil de traitement cryptographique
FR2868628A1 (fr) Generateur de nombres aleatoires et procede de production de nombres aleatoires
CA2732444C (fr) Circuit integre protege contre une analyse par canal auxiliaire horizontale
WO2017009543A1 (fr) Dispositif de traitement de données avec représentation de valeurs par des intervalles de temps entre événements
EP3803636B1 (fr) Processeur ntt incluant une pluralite de bancs de memoires
FR3101980A1 (fr) Processeur
FR2929470A1 (fr) Procede de protection de circuit de cryptographie programmable, et circuit protege par un tel procede
WO2020012104A1 (fr) Circuit de génération de facteurs de rotation pour processeur ntt
EP2003547A1 (fr) Operateur de reduction modulaire amélioré
EP2625609A1 (fr) Systeme d&#39;ordonnancement de l&#39;exécution de taches cadence par un temps logique vectoriel
EP1869545B1 (fr) Dispositif implementant la multiplication modulaire de montgomery
EP0793165B1 (fr) Coprocesseur d&#39;arithmétique modulaire permettant de réaliser rapidement des opération non modulaires
US9172359B2 (en) Flexible chirp generator
EP0320352A1 (fr) Circuit intégré de calcul numérique pour calculs glissants du type convolution
EP0947913A1 (fr) Procédé de réalisation amélioré d&#39;une division entière
JP5127241B2 (ja) 剰余演算装置及び剰余演算方法
CA2359198C (fr) Unite de calcul pour l&#39;execution d&#39;un protocole cryptographique
WO2012045942A1 (fr) Système d&#39;ordonnancement de l&#39;exécution de taches cadence par un temps logique vectoriel
FR3133458A1 (fr) Circuit de génération de séquence temporelle
Xia et al. Design and implementation of high-performance modular exponentiation arithmetic unit
FR3084177A1 (fr) Procede d&#39;execution d&#39;une fonction, par un microprocesseur, securisee par desynchronisation temporelle
EP0625745A2 (fr) Multiplieur bit-série exempt de débordement interne
FR2986925A1 (fr) Procede et dispositif electronique de generation d&#39;un signal d&#39;horloge variable

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20180105

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 5

RX Complete rejection

Effective date: 20210817