J'essaie de comprendre les termes complexes liés à la performance des processeurs.
La performance de l'ordinateur est mesurée en FLOPS
, ce qui est l'abréviation de FLOP par seconde . FLOPs
lui-même représente les opérations en virgule flottante .
Maintenant, pourquoi les opérations en virgule flottante sont-elles considérées pour les performances d’un ordinateur? Qu'en est-il des opérations entières? Existe-t-il une source en ligne (citation officielle) qui expliquerait cette tendance? Google ne m'a rien donné avec mes recherches.
Maintenant, que signifie exactement opération dans FLOP? Est -ce que , comme cela signifie une opération mathématique MUL
, ADD
, DIV
etc?
Dans ce cas, quelle serait une instruction ? Si une instruction ressemble à quelque chose comme ADDPD
, ADDSD
etc., comme je peux le voir ici ( http://docs.oracle.com/cd/E26502_01/html/E28388/epmpv.html ), une instruction peut entraîner de nombreuses opérations internes. S'agirait-il de micro-opérations ou d' ops ?
Je n'ai pas trouvé l'explication de la micro-opération sur Wikipedia utile. Celui qui explique cela clairement ici devra probablement aussi améliorer l'article de Wikipedia :)
Selon le livre de Hennessy / Patterson sur l'architecture des ordinateurs (5e édition, page 233), l' ARM Cortex-A8 (RISC) est capable d'exécuter deux instructions par horloge. Cela signifie-t-il que le processeur peut exécuter, par exemple, un ADDPD
et un ADDSD
(total = 2 instructions) en un cycle?
Cette source ( http://en.community.dell.com/techcenter/high-performance-computing/w/wiki/2329 ) indique ce qui suit:
La plupart des microprocesseurs actuels peuvent effectuer quatre (4) FLOP par cycle d'horloge, soit 4 FLOP par Hz.
Je crois que l'auteur a tort. Il impliquait probablement 4 instructions par cycle , se limitant aux processeurs basés sur CISC (Intel par exemple). En effet, certaines instructions telles que FMA sur Haswell peuvent améliorer les performances car le processeur peut traiter plus d'opérations par cycle. En d'autres termes, une FMA
instruction se traduit par deux opérations . Ai-je raison?
IPC signifie Instruction par Cycle. Quelles instructions sont référées ici? Les instructions retirées par le processeur? Avec un compteur matériel, je peux compter le nombre de cycles de la CPU et le nombre de INST_RETIRED.ANY
. Serait-ce la bonne façon de calculer l'IPC?
Merci beaucoup pour vos réponses et vos commentaires. J'espère que ma question aidera beaucoup d'autres âmes confuses :)
la source
Réponses:
Les opérations en virgule flottante ne sont que l’un des nombreux indicateurs utilisés au cours des années pour évaluer les performances des ordinateurs. Mesurer les opérations de PF est considéré comme plus applicable pour certaines applications du monde réel (telles que les simulations météorologiques) que les opérations de nombre entier. Si vous évaluiez des ordinateurs pour une application de base de données, vous ignorez probablement les spécifications FLOPS et vous concentrez sur l'IPS (instructions par seconde) et les performances d'E / S.
L '"opération" est l'exécution de "l'instruction", qui est un code machine (c'est-à-dire une valeur binaire), ou un calcul effectué par la FPU, Floating Point Unit. La FPU (la plus ancienne) s'exécute généralement de manière asynchrone avec la CPU et l'ALU, afin de ne pas entraver l'exécution du programme qui ne dépend pas du résultat de la FP.
Notez qu'un ordinateur (vers 1980) qui ne possédait pas de FPU pourrait être mis à niveau avec un périphérique FPU. La bibliothèque FP de routines logicielles implémentant des opérations FP fondamentales (additionner, soustraire, multiplier, diviser, racine carrée, etc.) serait remplacée par une bibliothèque invoquant des instructions d'E / S pour accéder au périphérique FPU. Une interruption de la FPU avertirait la CPU que l'opération FP était terminée.
Les premiers PC étaient de construction similaire. Le PC IBM d'origine utilisait le microprocesseur Intel 8088 qui ne possédait pas de capacité FP matérielle. Mais un coprocesseur mathématique 8087 pourrait être installé, de sorte que les instructions de PF puissent être exécutées par le matériel au lieu d'être redirigées vers des routines logicielles. Finalement, Intel a intégré le co-processeur mathématique dans le package de processeur pour le i486
"Instruction" ne devrait pas être une entité ambiguë. C'est un code machine ou une mnémomique du processeur.
Apparemment, vous parlez de microprogrammes.
(Auparavant, une société d’informatique prenait la micro- programmation d’une itération plus basse: jusqu’au niveau de la nano- programmation. Les produits étaient destinés à l’émulation de CPU.) La
microprogrammation n’est pas vraiment pertinente pour la performance des programmes d’application. Autrement dit, vous ne pouvez généralement pas réécrire / améliorer la microprogrammation comme vous le feriez avec un processeur à nanoprogrammes.
Sorte de. L'exécution de plus d'une instruction par cycle d'horloge nécessite un pipeline d '"unités d'exécution". Pensez à une chaîne de montage de fabrication (de véhicule). À chaque station, une tâche spécifique est effectuée. À la fin de la chaîne de montage (pipeline), un seul véhicule (instruction) est terminé à la fois. La simultanéité est échelonnée plutôt que synchronisée.
Chaque instruction est un code machine.
Non, une instruction est corrélée à une opération.
la source