Comment le processeur multicœur met-il en œuvre la coordination asynchrone?

8

Je viens de l'informatique et je souhaite étudier le calcul de processus pour une utilisation dans la conception de circuits asynchrones.

Je regarde donc la pratique actuelle sur les circuits asynchrones. Il existe de nombreux articles qui disent que l' impossibilité d'augmenter la vitesse d'horloge conduit à une architecture CPU multicœur . Cependant, aucun ne dit vraiment comment la coordination asynchrone entre les cœurs est réalisée.

Je veux que vous confirmiez / corrigez mes hypothèses suivantes sur la façon dont le processeur multicœur actuel gère la coordination asynchrone:

  1. Chaque cœur a des signaux d'horloge distincts, qui n'ont pas besoin d'être en phase les uns avec les autres. Sinon, le problème de distribution du signal d'horloge ne serait pas vraiment résolu, n'est-ce pas?
  2. Les cœurs se coordonnent uniquement au niveau de la programmation. C'est-à-dire, faire un test et définir sur une certaine mémoire (RAM ou registre). Et pas quelque chose de bas niveau comme un protocole de poignée de main utilisant un circuit de rendez-vous .
Apiwat Chantawibul
la source
1
Les gros processeurs monocœur ont plusieurs horloges, utilisées pour la réduction de puissance. Certaines horloges sont fermées, certaines sont ralenties dynamiquement. Ajoutez un autre noyau et bien sûr, il a plusieurs horloges. Une distribution d'horloge plus facile est un effet secondaire, mais pas la raison pour laquelle il existe plusieurs horloges.
2
Jetez un œil à cet article sur la façon de traverser les domaines d'horloge entre différentes fréquences: w2.cadence.com/whitepapers/cdc_wp.pdf
pjc50
1
(à propos de la distribution du signal d'horloge: une arborescence tampon où tous les nœuds terminaux ont un temps de propagation égal à partir de la source est la solution. Vous pouvez le construire de manière algorithmique. Ce n'est pas trivial mais cela fonctionne)
pjc50
1
Les inconvénients des arbres tampons sont nombreux: ils peuvent consommer la majorité de l'énergie et 10 à 30% de la surface disponible. Cependant, comme l'a constaté notre startup, le principal problème avec la conception asynchrone est de changer l' ensemble de votre chaîne d'outils logiciels pour l'utiliser efficacement. Les sociétés de circuits intégrés sont étonnamment conservatrices, en raison des coûts de fabrication et des risques d'échec.
pjc50
1
@ pjc50 ISTR que certains processeurs orientés vers la transmission de messages (peut-être ceux de Tilera?) avaient le "flux" d'horloge de gauche à droite et de bas en haut, car seuls les voisins les plus proches devaient communiquer directement (une sorte de variété de globalement asynchrone localement synchrone).
Paul A. Clayton

Réponses:

1

Vous mélangez deux idées indépendantes (orthogonales) dans la théorie des circuits numériques: les circuits asynchrones et les processeurs multicœurs.

Circuits asynchrones: circuits qui ont plus d'une horloge, et les horloges sont asynchrones (c'est-à-dire ont une relation de phase non constante et imprévisible).

Certains circuits peuvent utiliser deux horloges (par exemple), mais l'un n'est qu'une division par 2 de l'autre. Ces circuits ne sont pas asynchrones car il existe une relation de phase connue entre les deux horloges, bien que les fréquences des horloges soient différentes.

Vous pouvez avoir un processeur monocœur ayant peu d'horloges asynchrones et un processeur multicœur avec tous ses cœurs fonctionnant sur la même horloge (ce dernier n'est qu'un processeur imaginaire - tous les vrais processeurs multicœur ont de nombreuses horloges qui se composent plusieurs mutuellement) horloges asynchrones).

Les circuits asynchrones sont un sujet majeur de la conception numérique. L'explication ci-dessus est basique.

Processeurs multicœurs: peu de microprocesseurs (cœurs) connectés en parallèle qui utilisent du matériel et des logiciels sophistiqués pour atteindre des performances élevées.

La pratique habituelle est de rendre les cœurs aussi indépendants que possible en termes d'horloges / puissance / exécution / etc. Cela permet un ajustement dynamique (au moment de l'exécution) de l'activité du processeur (c'est-à-dire la puissance consommée) aux besoins réels du système.

Mon impression est que ce que vous cherchez est une explication sur les processeurs multicœurs , pas sur les circuits asynchrones.

Ce sujet est beaucoup, beaucoup plus vaste que tout ce que l'on peut mettre dans la réponse.

Les réponses à vos questions, cependant:

  1. Les horloges utilisées par différents cœurs (à ma connaissance) ont les mêmes sources (peuvent en être plusieurs: cristal, VCO, ...). Chaque cœur (généralement) possède peu d'horloges mutuellement asynchrones. Chaque coeur a une logique d'horloge et de limitation d'horloge dédiée qui permet d'éteindre ou de ralentir l'horloge, indépendamment pour chaque coeur. Encore une fois, si vous ne vous intéressez qu'à l'aspect algorithmique du parallélisme des cœurs - oubliez les horloges (pour l'instant).
  2. Vous venez d'indiquer l'aspect principal du parallélisme des cœurs - comment exécuter efficacement plusieurs cœurs en parallèle . Ce sujet est énorme et contient des solutions matérielles et logicielles. Du point de vue matériel, les cœurs modifient à la fois une mémoire commune et échangent des signaux de commande et d'état avec une logique de séquencement et entre eux. L'image se complique beaucoup en raison de l'existence de caches - je vous suggère de commencer par lire sur les caches, puis sur la cohérence du cache, puis uniquement sur les encaissements dans les systèmes multi-cœurs.

J'espère que cela t'aides.

Vasiliy
la source
Le fait que les processeurs doivent fonctionner à une vitesse différente n'implique pas qu'ils doivent être asynchrones. Il est extrêmement utile d'avoir une fenêtre autour de chaque horloge lorsque les signaux sont garantis de ne pas changer. Même si deux modules ont des fréquences d'horloge qui ne sont pas des multiples l'un de l'autre, il peut être utile d'avoir les deux générés par un dispositif qui garantit qu'ils ne commutent jamais trop près l'un de l'autre.
supercat