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:
- 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).
- 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.