2016-04-11 2 views
1

J'analyse Agner Fog's "Optimizing subroutines in assembly language: An optimization guide for x86 platforms". Surtout j'essaie de comprendre le chapitre 12.7. Et il y a un problème que je ne peux pas comprendre. L'auteur écrit:Motif de l'instruction de décodage

Le décodage d'instructions dans le processeur PM suit le modèle 4-1-1. Le modèle de (fusionné) μops pour chaque instruction de la boucle dans l'exemple 12.6b est 2-2-2-2-2-1-1-1. Ce n'est pas optimal, et il faudra 6 cycles d'horloge pour décoder. Ceci est plus que le temps de retrait, donc nous pouvons conclure que le décodage d'instruction est le goulot d'étranglement dans l'exemple 12.6b. La durée totale d'exécution est de 6 cycles d'horloge par itération ou de 3 cycles d'horloge par valeur Y [i] calculée.

  1. Qu'est-ce que cela signifie que le décodage d'instruction suit le schéma 4-1-1 et comment le savoir?
  2. Le motif de la boucle est 2-2-2-2-2-1-1-1. Ok, mais pourquoi il faut 6 cycles pour décoder je ne sais pas. Pourquoi?

Répondre

3
  1. frontend de la CPU peut décoder plusieurs instructions (macro) dans un cycle d'horloge. Chaque macro-instruction décode en 1 ou plusieurs micro-ops (μops). Ce que le modèle 4-1-1 signifie, c'est que le premier décodeur parallèle peut gérer une instruction complexe qui décode jusqu'à 4 μops. Mais les deuxième et troisième décodeurs parallèles ne peuvent gérer que des instructions qui décodent à 1 μop chacune (si elles ne sont pas satisfaites, elles ne consomment pas l'instruction).

  2. Les 5 instructions qui décodent à 2 μops devront être consommées par le premier décodeur, alors la queue permet un certain parallélisme.

    2 2 2 2 2 1 1 1 (Macro-instruction stream, μops per instruction) 
    ^ x x 
    4 1 1 (Decode cycle 0) 
    
    . 2 2 2 2 1 1 1 
    ^x x 
        4 1 1 (Decode cycle 1) 
    
    . . 2 2 2 1 1 1 
        ^x x 
        4 1 1 (Decode cycle 2) 
    
    . . . 2 2 1 1 1 
        ^x x 
         4 1 1 (Decode cycle 3) 
    
    . . . . 2 1 1 1 
         ^^^
         4 1 1 (Decode cycle 4) 
    
    . . . . . . . 1 
          ^x x 
           4 1 1 (Decode cycle 5) 
    
    . . . . . . . . (Instruction stream fully consumed) 
    
+0

merci :) Comment savoir modèle pour processeur patricular? – Gilgamesz

+1

Le guide d'Agner devrait avoir quelques informations. Sinon, recherchez des articles sur l'architecture CPU sur Ars Technica – Nayuki

+1

Pour certains processeurs Intel récents (Skylake et Haswell jusqu'à présent) - vous pouvez trouver une recherche détaillée du comportement de recherche d'instruction [dans cette réponse] (http://stackoverflow.com/a/39940932/149138). – BeeOnRope