Etienne Tremblay - PowerPoint PPT Presentation

1 / 22
About This Presentation
Title:

Etienne Tremblay

Description:

L'architecture d'un CPU est l'organisation de l'ensemble des composantes du CPU qui lui permettent d'aller ... diff rent pour chaque CPU: les CPU peuvent adresser la m moire ... – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 23
Provided by: Sab70
Category:

less

Transcript and Presenter's Notes

Title: Etienne Tremblay


1
Etienne Tremblay
  • Ordinateurs, Structure et Applications

GIF-16116
Cours 5, Introduction aux microprocesseurs
Université Laval, Hiver 2007
2
Intro à larchitecture des microprocesseurs
  • Larchitecture dun CPU est lorganisation de
    lensemble des composantes du CPU qui lui
    permettent daller chercher et dexécuter des
    instructions. Ces composantes et leur
    organisation diffèrent pour chaque CPU les CPU
    peuvent adresser la mémoire de différentes façons
    (modes dadressages), ils gèrent les accès
    mémoires différemment (ex. caches et pagination),
    chaque CPU avait son propre jeu dinstruction,
    etc. Tout cela fait parti de larchitecture dun
    CPU.
  • Dans le cours 2, nous avons vu que le CPU était
    responsable daller chercher les instructions en
    mémoire et de les exécuter. Ces notes de cours
    montrent dabord un exemple de CPU très simples
    qui accomplit ces tâches. Ensuite, quelques
    caractéristiques des CPUs modernes sont
    présentées, Le tout, étant une introduction à la
    microprogrammation et à larchitecture des
    microprocesseurs.

3
Programmes, instructions et u-instruction
  • Un programme est un ensemble dinstructions
    effectuant une tâche donnée, déterminée par le
    programmeur.
  • Une instruction est constituée de deux parties
    lopcode (code op en français) et des données
    dont le format et la taille dépendent de
    lopcode. Lopcode détermine la tâche que doit
    faire le CPU afin dexécuter linstruction. Par
    exemple, il y aura un opcode pour dire au CPU
    deffectuer une addition. Les données reliées à
    cet opcode indiqueront quels éléments doivent
    être additionnés.
  • Une instruction est vue par le CPU comme un
    ensemble de micro-instructions (u-instruction).
    Une u-instruction est donc une partie logique
    dune instruction. En dautres mots, on dit
    quune instruction est un microprogramme et que
    la microprogrammation est la création de
    séquences de u-instructions afin de réaliser des
    instructions.

4
Un exemple de CPU, illustration (1/4)
5
Un exemple de CPU, registres (2/4)
  • Le CPU en exemple a plusieurs registres. Comme
    dans le cours 2, il a PC, MAR,MDR, et IR. Il a
    aussi des registres à lusage de lALU (Regs et
    ACC).
  • PC est le Program Counter. Des lignes de contrôle
    provenant du CCU permettent de lincrémenté ou de
    le mettre sur le bus interne.
  • MAR (Memory Address Register) peut prendre la
    valeur sur le bus interne et la transférer sur le
    bus dadresse.
  • MDR (Memory Data Register) est un tampon où sont
    emmagasiné les données provenant du bus de
    données. Il est possible décrire ou lire MDR,
    échangeant ainsi des données du bus de contrôle
    au bus interne ou vice versa.
  • IR est lInstruction Register. Il contient la
    prochaine instruction que devra exécuter le CPU.
    Il est possible de charger sa valeur à partir du
    bus interne.
  • LACC ou accumulateur contient le résultat de
    toute opération de lALU. Il est possible de
    mettre le contenu de lACC sur le bus interne ou
    de lécrire dans un des registres de lALU.
  • Les registres de lALU (Regs) sont des registres
    de travail très rapide à usage temporaire. Leur
    rôle est de permettre au CPU de faire des
    opérations mathématiques relativement complexes
    en évitant de faire des accès à la mémoire.

6
Un exemple de CPU, ALU (3/4)
  • Le CPU en exemple a un ALU très simple. Cet ALU a
    deux entrées (A et B) et une sortie, Deux
    multiplexeurs (MUX_A et MUX_B) contrôlés par le
    CCU détermine quelles seront les entrées. Le CCU
    détermine également quelle sera lopération
    effectuée par lALU (, -, , ). Le résultat de
    lopération se retrouve toujours dans
    laccumulateur. À partir de là, il peut être
    propager dans les registres de travail de lALU,
    sur le bus interne, ou à lentrée (B) de lALU.
    Voici quelques détails supplémentaires sur lALU
  • Si on suppose 6 registres de travail interne (R0,
    R1, R2, R3, R4 et R5), il faut 3 lignes de
    contrôle provenant du CCU pour MUX_A et 3 lignes
    pour MUX_B (MUX_A Select et MUX_B Select). En
    effet, chaque MUX a 8 entrées possibles et 23
    8 (6 Regs 0 Acc ou Bus interne).
  • Si on suppose que lALU peut effectuer 16
    opérations, il faut 4 lignes de contrôles pour
    déterminer ce que fera lALU (Function Select).
  • Les lignes de contrôles branchées sur les
    registres de travail et laccumulateur
    détermineront où se retrouvera le résultat dune
    opération de lALU.

7
Un exemple de CPU, CCU (4/4)
  • Le CPU en exemple a un CCU rudimentaire. Il opère
    de la façon suivante
  • Lorsque quune instruction est chargée dans le
    registre dinstruction (IR), un mapping program
    détermine lemplacement de la première
    u-instruction à effectuer pour effectuer
    linstruction. Lopcode de linstruction sert
    dentrée au mapping prom. La sortie est
    simplement un numéro de u-instruction à
    effectuer.
  • Un compteur (Counter) détermine quelle sera la
    prochaine u-instruction à faire. La valeur
    initiale de ce compteur provient de lopcode de
    linstruction via le mapping prom. Par la suite,
    le compteur est incrémenté à chaque coup
    dhorloge, changeant lu-instruction en cours.
  • Lu-instruction PROM est une mémoire contrôlant
    lensemble du CPU. Pour chaque numéro
    du-instruction à lentrée, il existe un ensemble
    de valeurs prédéterminées pour toutes les lignes
    de contrôle du CPU à la sortie. Autrement dit, le
    nombre à lentrée de ce PROM déterminera si les
    registres sont chargés ou lus, quelle sera
    lopération effectuée par lALU et quels sera la
    valeur de certaines lignes du bus de contrôle.
    Les lignes de contrôles (ou mot de contrôle) sont
    représentées par des o dans lexemple. Elles
    partent toutes du CCU et elles se rendent au
    diverses composantes du CPU.
  • Les u-instructions sont crées de telle sorte
    quau moins une u-instruction par instruction
    recharge lIR et, ensuite, recharge le compteur
    dinstruction.

8
Microprogramme pour addition (1/3)
9
Microprogramme pour addition (2/3)
  • Supposons un programme qui contient la ligne code
    ZZ Y en langage C. Supposons, que le PC
    du CPU indique que cette ligne de code soit la
    prochaine à être exécuter. Supposons aussi que Z
    et Y sont des variables situées à un emplacement
    précis dune mémoire reliées au CPU. Voici ce que
    le CPU en exemple fera pour exécuter la tâche
    demandée
  • Découpons dabord la ligne de code en
    instructions. La table précédente montre que
    ZZY se découpe en trois instructions de
    notre CPU. Chaque instruction se découpe
    elle-même en u-instructions qui vont dabord
    charger linstruction à exécuter selon le PC,
    exécuter linstruction, puis passer à la
    prochaine instruction.
  • Donc, la première chose faite par le CPU sera
    daller chercher linstruction MOV ACC,Y en
    mémoire. Ceci est réalisé en mettant le PC sur le
    bus dadresse (PC-gtMAR) et en activant les ligne
    de lecture de la mémoire (les deux tâches sont
    effectuées dans la même u-instruction).
  • Ensuite, le contenu du bus de donnée
    (linstruction elle-même!) est transféré dans le
    registre dinstruction (MDR-gtIR) par une
    micro-instruction. On peut assumer que le
    compteur de u-instruction sera chargé par la même
    instruction.
  • Linstruction est décodée par le mapping prom du
    CPU et le bus dadresse est changé pour aller
    chercher Y (IRadresse de Y -gt MAR). On notera
    que ladresse de Y était indiquées dans
    linstruction. Il sagit dun paramètre
    accompagnant lopcode pour linstruction MOV
    ACC,Y .
  • La valeur de Y est mise dans laccumulateur
    (MDR-gtA). Cette u-instruction sera
    vraisemblablement exécutée en reliant lentrée A
    de lALU au bus interne et lentrée B de lALU à
    0.

10
Microprogramme pour addition (3/3)
  • Maintenant que Y est mis dans laccumulateur, il
    faut aller chercher la prochaine instruction à
    effectuer. Pour cela, il faut incrémenter le PC.
    Cela est fait par une u-instruction
  • La première instruction est terminée. Il faut
    aller chercher et exécuter la seconde instruction
    ADD ACC,Y . Le tout se déroule comme pour la
    première instruction, sauf pour les entrées de
    lALU elles deviennent le bus interne et lACC à
    la place de bus interne et 0. La fonction de
    lALU choisie est laddition.
  • La troisième instruction est exécuté en exécutant
    5 u-instructions qui ressemblent aux
    u-instructions de la deuxième u-instruction. Vers
    la fin de linstruction, la micro-instruction
    A-gtMDR-gtZ change la valeur de Z puisque ladresse
    de Z est dans le MAR. La ligne de code est ainsi
    complétée.
  • Une autre instruction est obtenue de la mémoire
    et le cycle de fetch/execute recommence

11
Microprogramme pour addition (Annexe)
  • Les figures de cette acétate montrent les
    micro-instructions et les lignes de contrôle pour
    linstruction MOV ACC, Y , ainsi quune autre
    représentation de lALU.

12
Améliorations du CPU en exemple
  • Le CPU en exemple est très très rudimentaire et
    il comporte certaines lacunes (Ce nest quun
    exemple pour illustrer le concept!). Il existe
    une multitude daméliorations possibles. En voici
    une liste assurément incomplète
  • Permettre les branchements inconditionnels et
    conditionnels.
  • Permettre les interruptions.
  • Ajouter un pipeline.
  • Gérer les cas spéciaux de lALU (exemple
    division par zéro).
  • Optimiser et améliorer lALU.
  • Ajouter une pile pour pouvoir appeler des
    u-fonctions.
  • Traiter un jeu dinstruction plus complexe et
    mettre un buffer dinstruction plus grand.
  • etc.
  • Pour voir comment serait implémenter certaines de
    ces améliorations, voir http//www10.dacafe.com/b
    ook/parse_book.php?articleBITSLICE/bitslcP.html.
  • Les acétates qui suivent présentent certaines
    améliorations possibles sans entrer dans les
    détails dimplémentation!

13
CISC et RISC
  • Il existe plusieurs approches pour la conception
    dun CPU et de son jeu dinstruction. Ces
    approches influencent chaque aspect du design de
    larchitecture dun CPU. Les principales
    approches utilisées à ce jour sont CISC et RISC.
  • Le CISC (Complex Instruction Set Computer)
    consiste à construire un CPU avec un jeu
    dinstructions complexe dont la longueur (des
    instructions) varie. Comme les instructions
    peuvent être longues et complexes, peu de
    registres sont requis. Exemple 8086 et Pentium.
  • Le RISC (Reduced Instruction Set Competer)
    consiste à construire un jeu dinstructions dont
    la longueur est fixe. Chaque instruction a la
    même taille (ex. 4bytes) et plusieurs registres
    sont requis pour exécuter des tâches complexes.
    Exemple PowerPC.

14
Comparaison CISC et RISC
  • 10 instructions représentent environ 70 des
    instructions utilisés par un microprocesseur un
    jeu dinstruction complexe est rarement requis.
  • Plusieurs registres permettent déviter les accès
    mémoires et daccélérer la vitesse du
    microprocesseur.
  • Beaucoup de temps de calcul est requis pour
    appeler et revenir de procédures qui sont de plus
    en plus fréquentes dans un programme modulaire.
    Plusieurs registres est un avantage de ce côté
    (passage de paramètres par registre par exemple)
  • Comme la longueur des instructions des
    processeurs RISC est fixe, les opérations de
    fetch et execute sont facilités le pipelinage
    est simplifié (voir plus loin), les opérandes de
    chaque instructions ont toujours la même
    position, la manipulation du pointeur sur les
    instructions est plus simple, etc.
  • Les programmes fait pour une architecture RISC
    sont généralement un peu plus gros que ceux pour
    une architecture CISC certaines instructions
    complexes requièrent plusieurs instructions
    simples pour être exécutées.
  • Les CPUs RISC et CISC modernes ont des
    performances comparables les instructions RISC
    sont devenues plus complexes et les processeurs
    CISC ont plus de registres.

15
Fecth and Execute Timing
  • Le processus de Fetch and Execute peut se
    découper en plusieurs étapes qui prennent un
    temps fini
  • Aller chercher linstruction en mémoire (Fetch)
  • Décoder linstruction (Decode)
  • Exécuter linstruction (Execute)
  • Écrire le résultat de linstruction (Write back)
  • Exécuter une instruction peut prendre plusieurs
    coups dhorloge en fonction du temps requis pour
    chacune de ces étapes. Par exemple, le 8086
    prends 6 coups dhorloge pour aller chercher une
    instruction en mémoire!
  • Chaque étape du processus de Fetch et Execute
    peut être faite par des circuits spécialisés et
    indépendants.

16
Pipelining
  • Le pipelinage est une technique qui consiste
    à exécuter plusieurs instructions simultanément
  • Pendant quune instruction est cherchée en
    mémoire (fetch), le CPU avec pipeline peut
    décoder une autre instruction, exécuter une
    troisième instruction et écrire le résultat dune
    quatrième instruction Plus le processus de Fetch
    et Execute est découpé en petites tâches
    individuelles, plus dinstructions peuvent être
    exécutées simultanément.
  • Pour quun pipeline fonctionne, il faut que
    chaque étape du Fetch N Execute sexécute à
    lintérieur dun temps fini (habituellement un
    cycle dhorloge).
  • Le pipelinage permet une accélération
    substantielle de lexécution des programmes.
    Toutefois, cette technique fait surgir plusieurs
    problèmes. Par exemples il ne faut pas exécuter
    une instruction avant que toutes les données
    requises pour cette instructions ne soient
    présentes les énoncés conditionnels rompent la
    séquence des instructions lors dune
    interruption il faut attendre que la pipeline se
    vide, etc
  • Habituellement, plusieurs instructions sont
    chargées dans CPU en avance.

17
Pipelining (2)
Tiré de Irv Englander, p.216
18
Scalar et Superscalar
Un CPU scalaire exécute 1 instruction par cycle
dhorloge grâce à sa pipeline. Un CPU
superscalaire peut exécuter plus dune
instructions par seconde grâce à plusieurs
pipelines en parallèles.
Tiré de Irv Englander, p.217
19
Branch et pipeline
  • Avec une pipeline, un CPU exécute plusieurs
    instructions simultanément. Il doit utiliser
    plusieurs instructions consécutives en mémoire.
    Quelle est linstruction qui suit un saut
    conditionnel (appelé BRANCH, JNZ par exemple pour
    le 8086)?
  • Afin de gérer les sauts conditionnels, le CPU
    tente de prévoir si le saut sera effectué. Il
    exécute les instructions quil prévoit être les
    suivantes.
  • Si le CPU se trompe, beaucoup de processeur est
    perdu, car la pipeline doit être vidée. Si le CPU
    a raison toutefois, les instructions sont
    exécutées comme sil ny avait pas eu de branch.
  • Il existe des alternatives de design à ce
    problème par exemple il est possible de rouler 2
    pipeline en parallèle et de choisir, après
    évaluation du saut conditionnel quelle est la
    bonne pipeline.
  • Il existe aussi des outils qui aident à prévoir
    le résultat du prochain saut conditionnel. Par
    exemple, il peut y avoir une table historique des
    résultats des énoncés conditionnels.

20
Modern CPU block diagram (1)
Tiré de Irv Englander p.221
21
Modern CPU block diagram (2)
  • Un CPU moderne contient plusieurs circuits vus
    dans les acétates et les cours précédents
  • Bus Interface Unit Permet dAccéder aux BUS de
    données, dadresse et de contrôle.
  • Cache and Memory management unit Gère les
    caches, la mémoire et la mémoire virtuelle.
  • Instruction Unit Gère lacquisition, le décodage
    et lexécution des instructions.
  • Branch processing unit Gère les branchement pour
    le pipelinage.
  • Load/Store unit Sauvegarde et lit des données ou
    des résultats.
  • Floating point Contient des registres spéciaux
    et une unité de calcul spécial pour traiter les
    fractions (ALU).
  • Registres Contient tous les registres du CPU.
  • Integer Contient une unité de calcul pour les
    entiers (ALU).
  • Completion unit Termine une instruction
    provenant de la pipeline.

22
Références et exercices
  • Références
  • Irv Englander, sections 7.2, 8.1 et 8.4
  • http//www10.dacafe.com/book/parse_book.php?articl
    eBITSLICE/bitslcP.html
  • William Stallings Débuts des chapitres 16 et 17.
  • Exercices
  • Décrivez les micro étapes réalisées afin de faire
    une instruction.
  • Lisez les chapitres 1 et 2 de Bit-Slice Design,
    Controllers and ALUs de D. E. White (voir la
    deuxième référence!).
  • Quelle est la différence entre CISC et RISC?
  • Quest quun microprocesseur superscalaire?
  • Quelles sont les différentes composantes dun
    CPU moderne?
  • Quest-ce que le pipelinage?
Write a Comment
User Comments (0)
About PowerShow.com