[Programmation] Durée d'exécution instructions µC
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Durée d'exécution instructions µC



  1. #1
    Ruffister

    Exclamation Durée d'exécution instructions µC


    ------

    Bonjour à tous,

    Je fais aujourd'hui appel à personnes qualifiées en microcontrôleurs pour répondre à mon interrogation.

    L'exécution d'une instruction sur un processeur nécessite 3 coups d'horloge au minimum (Fetch/Decode/Execute).

    Cependant, j'ai observé à l'oscilloscope qu'en exécutant l'instruction suivante sur un ATmega328 cadencé à 16 MHz (Tclk = 62,5 ns), j'obtenais environ 120 ns avant que le BIT6 repasse à 0, soit 2 coups d'horloge.
    Code:
    PORTB |= 0x40 // set BIT6
    PORTB &= ~0x40 // clear BIT6
    Comment expliquer cela ?

    Merci par avance pour chacune de vos réponses.

    -----

  2. #2
    Gustave19

    Re : Durée d'exécution instructions µC

    Je ne connais pas ATmega mais c'est probablement le prefetch. La lecture de l'instruction a lieu pendant l'exécution de la précédente.
    Voir aussi : https://fr.wikipedia.org/wiki/M%C3%A9moire_cache

  3. #3
    Ruffister

    Re : Durée d'exécution instructions µC

    Merci Gustave pour cette réponse.
    Intéressant, cela semble être la réponse la plus adéquate. Je vais creuser sur le fonctionnement des caches.

    On m'a également comme réponse l'optimisation de mon extrait de code par le compilateur C. Qu'en penses-tu ?

  4. #4
    fdamien12

    Re : Durée d'exécution instructions µC

    Bonjour,
    Non, il ne peut pas s'agir d'une optimisation de la part du compilateur C : il peut optimiser du code C afin qu'il donne lieu à moins d'instructions assembleur (langage machine), mais il ne peut pas réduire la durée nécessaire à l'exécution d'une instruction en langage machine !

    Par contre, comme l'a expliqué Gustave19, les opérations fetch/decode/execute sont il me semble exécutées en parallèle : pendant que le CPU exécute l'instruction N, il décode l'instruction N+1 et prefetch l'instruction N+2. Il me semble que c'est ce que l'on appelle le pipelining.

    Je ne suis ainsi pas d'accord avec toi quand tu dis "L'exécution d'une instruction sur un processeur nécessite 3 coups d'horloge au minimum", car une fois le pipeline rempli, le CPU peut bien exécuter une instruction par coup d'horloge.
    Cf jeu d'instruction de l'AVR : http://ww1.microchip.com/downloads/e...set-manual.pdf (mais c'est valable pour beaucoup d'autres micros).

    Les instruction "set bit" et "clear bit" (SBR et CBR) ont d'après ce doc besoin d'1 seule instruction. Si tu mesures à l'oscillo 120ns et pas 62,5, c'est que le compilateur C a généré 2 instructions et pas une seule pour gérer ces bits.
    Cela peut s'expliquer par le fait que tu utilises les opérateurs |= et &= qui font un cycle de lecture, une opération binaire et un cycle d'écriture. Regarde le code assembleur généré, tu auras ta réponse.

  5. A voir en vidéo sur Futura
  6. #5
    Gustave19

    Re : Durée d'exécution instructions µC

    Le compilateur peut choisir des jeux d'instructions particuliers pour optimiser la vitesse par rapport aux lignes de code. Il y a des instructions µP aux nombres de cycles différents.

  7. #6
    umfred

    Re : Durée d'exécution instructions µC

    Dans la doc de l'atmega, c'est décrit en page 23 (section 7.6 Figure 7.4) https://ww1.microchip.com/downloads/...S40002061B.pdf

  8. #7
    Gyrocompas

    Re : Durée d'exécution instructions µC

    Bonjour,
    Le compilateur propose certainement l'accès au code que le processeur connait.
    Y jeter un coup d'oeil pour vérifier :
    L'instruction PORTB |= 0x40 récupère l'état du port, modifie sa valeur puis la stocke dans le registre adapté.
    Ce qui fait pas mal de cycles en se référant à la doc du µp.

Discussions similaires

  1. QTCreator(QT5), C++ et exécution des instructions (dans un ordre curieux)
    Par Bounoume dans le forum Programmation et langages, Algorithmique
    Réponses: 9
    Dernier message: 22/11/2018, 17h51
  2. Instructions string
    Par invitee6712f08 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 14/05/2011, 10h55
  3. Instructions privilégiées
    Par Ravaner dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 22/10/2010, 10h08
  4. Instructions AT ELZ50
    Par thomasalbert1993 dans le forum Électronique
    Réponses: 3
    Dernier message: 03/05/2008, 09h40
  5. instructions??
    Par invite9b9d0eb8 dans le forum Électronique
    Réponses: 3
    Dernier message: 16/11/2006, 14h36
Découvrez nos comparatifs produits sur l'informatique et les technologies.