Comment gérer les différentes rapidités des composants dans un ordinateur ?

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

en concevant des circuits qui ne seront jamais réalisés en vrai, je me suis rendu compte que pour un système synchrone, le délai le plus grand conditionne la fréquence d’horloge, c’est-à-dire que même si je suis capable de faire des additions très rapidement, la fréquence d’horloge étant fixée, si la mémoire est lente, je vais devoir ralentir la fréquence d’horloge pour qu’il ne se passe pas n’importe quoi. J’ai aussi été étonné par l’absence de composants avec des délais en dessous de 1ns, alors que les CPU actuels dépasse largement le GHz.

Comment s’en sort-on ?

Merci !

+0 -0

Bonjour,

Parmi les éléments qui te permettent de répondre :

Il faut distinguer la latence et la fréquence d’horloge. Un processeur est plus compliqué qu’une machine qui exécute instruction par instruction. Il y a un découpage de son fonctionnement en plusieurs étapes (pipeline). Par exemple le pipeline classique sur ARM est le Fetch, Decode, Execute. Il effectue a chaque coup d’horloge ces 3 opérations. Plus tu augmentes la taille de ton pipeline, et plus tu vas pouvoir augmenter ta fréquence d’horloge puisque tu vas travailler sur plus d’instructions en même temps. Néanmoins, avec un pipeline long tu enchaînes beaucoup de composants et tu te prends le temps de réponse de tous les composants en latence (on peut en très gros dire que ta latence va être le temps pour traverser tout le pipeline, en oubliant pleins de trucs).

Ca permet notamment de comprendre que les performances d’un processeur ne viennent pas vraiment que de sa fréquence d’horloge. Par exemple, Intel a essayé de faire des processeurs à plus de 100 étapes de pipeline à une époque, juste parce que c’était l’argument qui permettait de vendre. Ça n’a pas très bien fonctionné pour eux et ils sont revenu à des pipelines plus conventionnels.

Bref, c’est possible, parce que ce sont des notions assez déliées dans les architectures processeurs actuelles.

Édité par unidan

+0 -0
Auteur du sujet

Merci de la réponse,

mais je ne comprends pas très bien. Du coup, de quoi parle-t-on quand on parle de la fréquence d’horloge d’un CPU, s’il n’y rien qui fonctionne vraiment à la fréquence d’horloge ?

L’autre partie de la question est comment tout cela fonctionne-t-il avec des périphériques externes qui ont un temps de réponse bien plus lent (RAM, et tout le reste).

Merci !

+0 -0

Bah c’est pourtant simple, qui peut le plus, peut le moins.

Le CPU ne communique pas avec les périphériques externes à la fréquence d’horloge maximale. En fait le CPU a une horloge de base (souvent à 21 MHz environ) et grâce à des mécanismes internes (des PLL), il peut générer d’autres fréquences dont celle au delà du GHz pour le fonctionnement interne mais aussi celles pour la mémoire, le PCIe, etc.

En fait, chaque zone du CPU a sa propre fréquence d’horloge pour communiquer correctement avec les autres périphériques extérieurs comme la RAM. La fréquence d’horloge commerciale n’est qu’une fréquence parmi d’autres pour le processeur. Cependant cette fréquence conditionne les performances du processeur car de nombreuses opérations utilisent un cycle du processeur à cette fréquence donnée (des opérations simples, notamment au sein du pipeline).

Amateur de Logiciel Libre et de la distribution GNU/Linux Fedora.

+0 -0
Auteur du sujet

Du coup, avoir une fréquence d’horloge plus grande que celle de la RAM n’a d’intérêt que si on stocke des instructions qui prennent plusieurs coups d’horloge (et c’est le cas de toutes, en faites), c’est ça ?

Comment est-on sûr, du point de vue du CPU, d’avoir reçu les informations de la RAM ? Rien ne garantit que l’on n’y accède pas trop rapidement, vu qu’on ne connaît pas la fréquence maximale d’accès de la RAM, si ?

Plus généralement, comment fait-on, techniquement, pour faire fonctionner un composant avec un autre qui est plus rapide ou plus lent ? Il faut bien que le plus lent informe le plus rapide de ralentir les échanges et à quel point, non ?

Merci beaucoup ?

+0 -0

Du coup, avoir une fréquence d’horloge plus grande que celle de la RAM n’a d’intérêt que si on stocke des instructions qui prennent plusieurs coups d’horloge (et c’est le cas de toutes, en faites), c’est ça ?

Déjà tu oublies qu’un processeur a de la mémoire cache pour permettre de travailler un peu dans son coin sans solliciter la RAM et les temps d’accès à la cache est très rapide (plus que la RAM, logique).

Ensuite le processeur a bien entendu assez d’instructions stockés pour travailler sans solliciter la RAM systématiquement et n’enregistrer ou lire les valeurs suivantes que quand ce sera nécessaire.

Comment est-on sûr, du point de vue du CPU, d’avoir reçu les informations de la RAM ? Rien ne garantit que l’on n’y accède pas trop rapidement, vu qu’on ne connaît pas la fréquence maximale d’accès de la RAM, si ?

Bah si, le processeur sait à quelle vitesse fonctionne tous les composants avec qui il communique, RAM incluse. Soit via un protocole standard, soit fixé par le constructeur / programmeur soit par une ligne d’horloge. Du coup il sait dialoguer avec sans difficulté vu qu’il le fera à la bonne vitesse.

Amateur de Logiciel Libre et de la distribution GNU/Linux Fedora.

+0 -0

En théorie, l’accès à la ram prend environ 800 cycles. En pratique, on utilise un cache au niveau du processeur pour stocker les instructions/données qui vont potentiellement être utilisées dans un futur proche. Cela réduit drastiquement les accès en cas de cache hit.

Pour répondre à ta question, la fréquence à laquelle communiquer est connue des deux périphériques (processeur, mémoire). Je connais très mal les architectures PC mais certains microchips en ARM ont des circuits dédiés à la manipulation de la mémoire et peuvent même bypasser le processeur pour aller plus vite sur les opérations type copie (DMA, pour direct memory access). Lorsque le processeur aura besoin des données, il vérifiera si elles sont disponibles, sinon il essayera de faire autre chose, sinon il "stall" et ne fait rien tant que les données sont absentes.

+0 -0
Auteur du sujet

D’accord, merci beaucoup !

Une question : comment ils savent, du coup, la vitesse de communication ? Sur mon ordinateur, si je change de RAM, je peux en mettre une plus rapide, comment le processeur saura-t-il ?

Merci !

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte