web-dev-qa-db-fra.com

Quelles sont les "instructions par cycle"?

J'en apprenais un peu plus sur la façon dont les transformateurs fonctionnent, mais je n'ai pas été en mesure de trouver une réponse directe sur les instructions par cycle.

Par exemple, j'ai eu l'impression qu'un processeur de quatre principaux pouvait exécuter quatre instructions par cycle, de sorte qu'un processeur central de quatre essais à 2 GHz exécuterait 8 milliards d'opérations par seconde. Est-ce le cas?

Je suis sûr que ça veut trop simplifier les choses, mais s'il y a un guide ou autre chose que je peux utiliser pour me libérer, je suis certainement ouvert aux idées.

23
Matt Simmons

Les mots-clés que vous devriez probablement rechercher sont [~ # ~] cisc [~ # ~] , [~ # ~ # ~] RISC [~ # ~] et Superscalar Architecture .

Crevette

Dans une architecture de la CISC (X86, 68000, VAX), une instruction est puissante, mais il prend plusieurs cycles pour traiter. Dans les architectures plus anciennes, le nombre de cycles a été fixé, de nos jours, le nombre de cycles par instruction dépend généralement de divers facteurs (cache hit/miss, prédiction des succursales, etc.). Il y a Tables Pour rechercher ce genre de choses. Souvent, il convient également de mesurer le nombre de cycles une certaine instruction dans certaines circonstances (voir compteurs de performance ).

Si vous êtes intéressé par les détails de Intel, le Intel 64 et IA-32 Manuel de référence d'optimisation est une très bonne lecture.

Ranch

L'architecture RISC (bras, PowerPC, SPARC) signifie généralement une instruction très simple ne prend que quelques-uns (souvent seulement un) cycle.

Superscalar

Mais quel que soit le CCC ou le RISC, il y a l'architecture Superscalar. Le processeur ne traite pas une instruction après une autre, mais travaille sur de nombreuses instructions simultanément, comme une chaîne de montage.

La conséquence est la suivante: si vous recherchez simplement les cycles pour chaque instruction de votre programme, puis les ajoutez à tous, vous vous retrouverez avec un chiffre de manière élevé. Supposons que vous ayez un processeur de RISC à base unique. Le temps de traiter une seule instruction ne peut jamais être inférieur à l'heure d'un cycle, mais le débit global peut bien être plusieurs instructions par cycle.

22
Ludwig Weinzierl

La façon dont j'aime penser est avec une analogie de lessive. Les instructions du processeur sont comme des charges de la lessive. Vous devez utiliser la laveuse et la sécheuse pour chaque charge. Disons que chacun prend 30 minutes à courir. C'est le cycle d'horloge. Les anciens processeurs dirigeraient la laveuse, puis couraient la sécheuse, prenant 60 minutes (2 cycles) pour terminer chaque charge de la lessive, à chaque fois.

Pipelining : Un pipeline est lorsque vous utilisez les deux en même temps - vous lavez une charge, alors qu'il sèche, vous lavez la charge suivante. La première charge prend 2 cycles pour finir, mais la deuxième charge est terminée après 1 cycle de plus. Ainsi, la plupart des charges n'ont besoin que d'un cycle, à l'exception de la première charge.

SuperScalar : Prenez toute la blanchisserie à la laverie automatique. Obtenez 2 rondelles et chargez-les tous les deux. Quand ils sont terminés, trouvez 2 sécheuses et utilisez-les tous les deux. Maintenant, vous pouvez laver et sécher 2 charges en 60 minutes. C'est 2 charges dans 2 cycles. Chaque charge prend toujours 2 cycles, mais vous pouvez en faire plus maintenant. Le temps moyen est maintenant de 1 chargement par cycle.

SuperScalar avec pipeline : Lavez les 2 premières charges, alors que ceux-ci sont séchées, chargez les rondelles avec les 2 charges suivantes. Maintenant, les 2 premières charges prennent encore 2 cycles, puis les 2 suivants sont terminés après 1 cycle de plus. Donc, la plupart du temps, vous terminez 2 charges dans chaque cycle.

Plusieurs cœurs : Donnez la moitié de votre linge à votre mère, qui a également 2 laveuses et 2 sécheuses. Avec vous deux travaillant ensemble, vous pouvez obtenir deux fois plus. Ceci est similaire à Superscalar, mais légèrement différent. Au lieu de vous avoir à déplacer toute la lessive et de chaque machine vous-même, elle peut le faire en même temps que vous.

C'est génial, nous pouvons faire huit fois plus blanchisserie qu'avant dans le même temps, sans avoir à créer des machines plus rapides. (Double vitesse de l'horloge: machines à laver que vous n'avez besoin que de 15 minutes à courir.)

Maintenant, parlons de la mal tournée:

Bubble de pipeline : Vous avez une tache qui n'est pas sortie dans le lavage, vous décidez donc de la laver à nouveau. Maintenant, la sécheuse est juste assise là-bas, attendant que quelque chose à faire.

Cache Miss : Le camion qui livre le linge sale est bloqué dans le trafic. Maintenant, vous avez 2 rondelles et 2 sécheuses, mais vous ne faites aucun travail car vous devez attendre.

En fonction de la fréquence à laquelle les choses vont mal, nous ne pourrons pas toujours obtenir 4 charges effectuées chaque cycle, de sorte que la quantité de travail réelle effectuée peut varier.

Prédiction de la succursale : Eh bien, vous commencez à faire la lessive sur vos vêtements propres au cas où vous les tachez plus tard, ils seront déjà propres ... d'accord, c'est là que l'analogie se décompose ...

32
Kevin Panko

Pas exactement. Le cycle que vous parlez est le cycle de l'horloge et, puisque la plupart des processeurs modernes, il faut plusieurs cycles d'horloge pour 1 instruction pour exécuter. (C'est une bonne chose car elle permet à d'autres instructions de commencer l'exécution même avant que la 1ère instruction finale.) En supposant que la situation la plus idéale, ce serait probablement environ 8 milliards IPC, mais toutes sortes de choses se produisent comme des dépendances, des bulles dans le pipeline , branches, etc., donc cela ne marche pas toujours.

Désolé, c'est trop compliqué pour une réponse directe. Jon Stokes fait un bon travail de l'expliquer avec cet article .

3
hyperslug

Les jours où on pouvait rechercher (ou même mémoriser) le temps de cycle pour chaque instruction et savoir combien d'horloges qu'il faudrait pour un certain nombre de code à terminer sont un passé long pour des frites haut de gamme (mais sont toujours avec nous dans certains micro-contrôleurs). Un noyau de la CPU à usage général moderne peut avoir plusieurs copies de plusieurs unités d'exécution différentes dans plusieurs pipelines, accédant à un cache de mémoire multi-étapes avec sa propre logique, plus la prédiction des succursales et la capacité d'exécution spéculative. Avoir de multiples noyau sur une seule traînée de matrice dans la logique de consistance cache et d'autres complexités.

Donc, la réponse courte est la suivante: plus de cœurs signifie plus de capacité à faire avancer les choses, mais pas de manière agréable, prévisible.

LudwiG a expliqué la différence entre CISC et RISC, mais a oublié de mentionner que, tandis que les instructions RISC sont simples et rapides, elles font peu individuellement et vous devez donc enduire plusieurs ensemble pour faire la même chose qu'une seule instruction dans un processeur de CSCC. En conséquence, certaines instructions de RISC seront plus rapides, d'autres ne le feront pas.

1
Synetech

Les cycles sont plus un concept de base. Chaque noyau est-il propriétaire de cycles en parallèle.

0
Joakim Elofsson