Passer au contenu

Fonctionnement de base du processeur

Informatique A-Level · Sujet 4

Leçon vidéo pour ce sujet Ouvrir la page vidéo
21:23

Architecture Von Neumann

Pendant la plupart de l'histoire, une machine faisait une seule chose. Un métierage tissait du tissu. Une calculatrice ajoutait. Pour lui faire faire quelque chose de nouveau, vous la reconstruisiez. Puis est venue une simplement déceptive…

Narration en anglais · sous-titres en anglais et en 中文 au choix

4.1

Architecture Von Neumann

Programme
Les candidats doivent être capables de : Notes et orientations
Montrer la compréhension du modèle de base Von Neumann pour un système informatique et du concept de programme stocké
Montrer la compréhension du but et du rôle des registres, y compris la différence entre les registres à usage général et les registres à usage spécial Registres à usage spécial incluant : • Compteur de programme (PC) • Enregistreur de données mémoire (MDR) • Enregistreur d'adresse mémoire (MAR) • L'accumulateur (ACC) • Registre index (IX) • Enregistreur d'instruction courante (CIR) • Registre d'état
Montrer la compréhension du but et des rôles de l'Unité arithmétique et logique (ALU), de l'Unité de commande (CU) et de l'horloge système, du Stockage à accès immédiat (IAS)
Montrer la compréhension de la manière dont les données sont transférées entre divers composants du système informatique en utilisant le bus d'adresse, le bus de données et le bus de contrôle
Montrer la compréhension de la manière dont les facteurs contribuent aux performances du système informatique Y compris : • type de processeur et nombre de cores • la largeur du bus • vitesse d'horloge • mémoire cache
Comprendre comment différents ports assurent la connexion à des périphériques Y compris la connexion à : • Universal Serial Bus (USB) • High Definition Multimedia Interface (HDMI) • Video Graphics Array (VGA)
Décrire les étapes du cycle Fetch-Execute (F-E) Décrire et utiliser la notation 'register transfer' pour décrire le cycle F-E
Montrer la compréhension du but des interruptions Y compris : • causes possibles d'interruptions • applications des interruptions • utilisation d'une routine de service d'interruption (ISR) • moment où les interruptions sont détectées pendant le cycle fetch-execute • manière dont les interruptions sont gérées

Source : Programme Cambridge International

Le cycle fetch-décodage-exécution

L'architecture de Von Neumann sous-tend presque tous les ordinateurs à usage général :

  • une mémoire unique — la Mémoire d'accès immédiat (IAS) — contient à la fois les instructions du programme et les données (concept de programme stocké).
  • un processeur (CPU) récupère les instructions en mémoire et les exécute une par une.
  • les instructions s'exécutent dans l'ordre sauf si une branche modifie le flux.

L'idée de stored-program rend l'ordinateur flexible : changer le programme change ce qu'il fait, sans câblage.

Explorer

Tapez sur les parties d'un ordinateur de Von Neumann

Explorez chaque bloc. Le CPU (unité de contrôle, ALU, registres) communique avec une seule mémoire principale via les bus — et cette mémoire partagée unique pour les instructions ET les données est l'idée de Von Neumann.

Vocabulaire Entrainer
English Français
stored program/stɔːd ˈprəʊɡræm/ programme stocké
processor/ˈprəʊsesə/ processeur
RAM/ræm/ RAM
page/peɪdʒ/ page
cache memory/kæʃ ˈmeməri/ mémoire cache
4.1

Les principales parties du CPU

Toutes ces parties sont situées à l'intérieur d'une petite puce. Le diagramme plus loin dans cette section montre comment elles sont connectées ; la photo ci-dessous montre le réel.

Le dessous d'une puce CPU Intel sur fond blanc, un carré plat couvert d'une grille de centaines de petits pads de contact dorés qui pressent contre le socket de la carte mère
Un processeur moderne : tout le processeur est une seule petite puce (ici vue de dessous, montrant les contacts)
Un socket CPU carré sur une carte mère, avec une grille de minuscules broches et un levier de rétention en métal, entouré de pistes de circuit
Le socle de processeur correspondant sur la carte mère : les contacts de la puce viennent se poser sur ces broches

Arithmetic and Logic Unit (ALU)

L'UAL effectue les opérations arithmétiques (addition, soustraction, …) et logiques (ET, OU, comparaisons). Elle prend ses opérandes dans les registres et y retourne les résultats.

Control Unit (CU)

L'unité de contrôle décode chaque instruction et envoie les signaux de commande pour son exécution — ouverture des chemins de données, indication de l'action à effectuer à l'UAL, ainsi que le contrôle des lectures et écritures en mémoire.

System clock

L'horloge envoie un flux régulier d'impulsions qui maintiennent le CPU synchronisé. Chaque instruction nécessite un nombre fixe de cycles, et la vitesse d'horloge (p. ex. 3.8 GHz) est un facteur de performance.

"Expliquez comment la CU et l'horloge système travaillent ensemble" : l'horloge émet des impulsions à fréquence fixe ; la control unit utilise chaque impulsion pour avancer le cycle fetch-execute d'un cran, envoyant ses signaux de contrôle en phase avec les impulsions, de sorte que chaque partie du processeur change d'état simultanément. Une horloge plus rapide signifie plus d'étapes par seconde, jusqu'au point où les circuits ne peuvent plus se stabiliser entre les impulsions.

Registers

Les registres sont de minuscules mémoires très rapides situées à l'intérieur du CPU. Les registres à usage spécifique ont chacun une fonction fixe dans le cycle :

Diagramme en bloc d'un CPU contenant l'unité de contrôle, l'ALU et les registres, reliés à la mémoire principale par les bus d'adresse, de données et de contrôle
Le CPU contient l'unité de contrôle, l'ALU et les registres ; trois bus le relient à la mémoire principale
  • Compteur d'instruction (PC) — l'adresse de l'instruction suivante.
  • Registre d'adresse mémoire (MAR) — l'adresse en cours de lecture ou d'écriture.
  • Registre de données mémoire (MDR) — les données allant vers ou provenant de la mémoire.
  • Registre d'instruction courante (CIR) — l'instruction actuellement décodée.
  • Accumulateur (ACC) — la valeur sur laquelle l'UAL travaille.
  • Registre d'état — contient les drapeaux (report, zéro, négatif, dépassement) utilisés par les branchements. Chaque drapeau correspond à un bit, activé ou effacé par l'UAL après une opération : le drapeau zéro après une comparaison correspondant, le drapeau report lors d'une addition dépassant la capacité du registre, le drapeau négatif lorsque le résultat est négatif. Un saut conditionnel lit les drapeaux pour décider de brancher, et un drapeau de dépassement peut déclencher une interruption.
  • Registre d'index — un décalage ajouté à une adresse dans l'adressage indexé ; son incrément permet de parcourir un tableau élément par élément.

La question "complete the table describing the role of each register" demande une phrase précise par registre en ces termes : le PC contient l'adresse de la prochaine instruction à récupérer ; le MAR contient l'adresse de l'emplacement lu ou écrit ; le MDR contient les données ou l'instruction juste lues depuis, ou sur le point d'être écrites vers, cet emplacement ; le CIR contient l'instruction actuellement décodée et exécutée ; l'ACC contient le résultat de la dernière opération arithmétique ou logique.

Les registres à usage général sont utilisés par le programmeur pour des valeurs temporaires lors d'un calcul. Les transferts de données entre registres et mémoire s'écrivent en notation de transfert de registre — p. ex. MAR ← [PC] (« copier le contenu du PC dans le MAR »).

Diagramme blocs du CPU Von Neumann montrant PC, MAR, MDR, CIR, ACC, registre d'état, unité de contrôle, ALU et horloge système, liés à la mémoire principale et à l'entrée/sortie par les bus d'adresse, de données et de contrôle
Le CPU Von Neumann : registers, control unit et ALU reliés par des buses
Vocabulaire Entrainer
English Français
Von Neumann architecture/vɒn ˈnɔɪmən ˈɑːkɪtektʃə/ architecture de Von Neumann
Immediate Access Store/ɪˈmiːdɪət ˈækses stɔː/ mémoire à accès immédiat
arithmetic and logic unit/ˌærɪθˈmetɪk ənd ˈlɒdʒɪk ˈjuːnɪt/ unité arithmétique et logique
ALU/ˌeɪ el ˈjuː/ unité arithmétique et logique (UAL)
register/ˈredʒɪstə/ registre
control unit/kənˈtrəʊl ˈjuːnɪt/ unité de commande
clock speed/klɒk spiːd/ vitesse d'horloge
bit/bɪt/ bit
interrupt/ˈɪntərʌpt/ interruption
buses/ˈbʌsɪz/ bus
address bus/əˈdres bʌs/ bus d'adresse
data bus/ˈdeɪtə bʌs/ bus de données
word size/wɜːd saɪz/ taille de mot
number of cores/ˈnʌmbə ɒv kɔːz/ nombre de cœurs
cores/kɔːz/ cœurs
amount of RAM/əˈmaʊnt ɒv ræm/ quantité de RAM
port/pɔːt/ port
peripheral/pəˈrɪfərəl/ périphérique
register transfer notation/ˈredʒɪstə ˈtrænsfɜː nəʊˈteɪʃn/ notation de transfert de registre
interrupt service routine/ˈɪntərʌpt ˈsɜːvɪs ruːˈtiːn/ routine de gestion d'interruption
interrupt register/ˈɪntərʌpt ˈredʒɪstə/ registre d'interruption
4.1

Bus

Trois bus internes (ensembles de fils parallèles) relient les différentes parties :

  • bus d'adresses — transporte l'adresse mémoire. Unidirectionnel (CPU → mémoire).
  • bus de données — transporte les données. Bidirectionnel.
  • bus de commande — transporte les signaux de commande (lecture, écriture, interruption). Bidirectionnel.

Une adresse-bus de $n$ bits peut accéder à $2^{n}$ emplacements mémoire. La largeur du bus de données détermine le nombre de bits transférés par accès (souvent la taille mot).

CPU, mémoire et entrée/sortie chacun connectés au bus d'adresses (unidirectionnel), bus de données et bus de contrôle dans le bus système
Les trois bus système reliant le CPU, la mémoire et l'entrée/sortie
Vue de dessus d'une carte mère : socket CPU, slots mémoire et slots d'extension reliés par des pistes imprimées denses
Une carte mère : le CPU, la mémoire et les E/S reposent tous sur un même ensemble de bus — les pistes imprimées qui les relient
4.1

Ce qui affecte la performance

  • vitesse d'horloge — plus de cycles par seconde.
  • nombre de cœurs — un processeur multi-cœur exécute plusieurs threads simultanément.
  • taille de mot — un processeur 64-bit traite des blocs de 64-bits par cycle et peut adresser bien plus de mémoire qu'un processeur 32-bit.
  • quantité de RAM — plus de RAM permet de stocker davantage d'éléments du jeu de travail ; un volume insuffisant force le système d'exploitation à échanger des données vers le disque.
  • taille de la mémoire cache — une cache plus grande réduit le temps d'accès moyen à la mémoire.
  • type de stockage secondaire — un SSD charge les programmes beaucoup plus rapidement qu'un disque dur mécanique (HDD).
  • largeur et vitesse du bus — des buses plus larges/rapides transmettent les données plus rapidement.
La performance au centre, entourée de sept facteurs : fréquence d'horloge, cœurs, taille des mots, RAM, mémoire cache, SSD par rapport au HDD, largeur et vitesse du bus
Sept facteurs, chacun à justifier dans la réponse.

Associez les spécifications à la charge de travail : un quad-core bat un dual-core sur les tâches parallèles, mais une vitesse par cœur supérieure gagne sur les tâches monothreaded.

Chaque facteur est une réponse de deux points avec une raison associée :

  • Plus de cœurs : chaque cœur peut chercher et exécuter sa propre instruction en même temps, donc plusieurs programmes, ou les threads d'un seul programme, s'exécutent en parallèle. Mais un programme doit être écrit pour utiliser plus d'un cœur, donc doubler les cœurs ne double pas la vitesse.
  • Vitesse d'horloge plus élevée : plus de cycles recherche-exécution par seconde, donc plus d'instructions par seconde ; la limite est la chaleur produite.
  • Bus plus large : un bus de données plus large transfère davantage de bits par opération, réduisant ainsi le nombre de transferts nécessaires pour traiter la même quantité de données ; un bus d'adresse plus large peut accéder à davantage d'emplacements mémoire.
  • Mémoire cache : une petite mémoire rapide située à l'intérieur ou à côté du processeur qui conserve les instructions et les données utilisées le plus récemment ou le plus souvent. Les lire depuis le cache est beaucoup plus rapide que depuis la RAM, donc le processeur passe moins de temps en attente.

"Expliquez pourquoi l'ordinateur neuf performe mieux" se répond en comparant les deux spécifications ligne par ligne : une vitesse d'horloge plus élevée exécute plus d'instructions par seconde, plus de cœurs exécutent plus de tâches à la fois, plus de cache signifie moins d'accès lents à la RAM, et plus de RAM signifie moins de transferts vers le disque.

Vocabulaire Entrainer
English Français
cache/kæʃ/ cache
secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ stockage secondaire
4.1

Ports

Un port est une prise physique servant à connecter un périphérique :

  • USB (Universal Serial Bus) — usage général (claviers, lecteurs, téléphones).
  • HDMI (High Definition Multimedia Interface) — vidéo numérique et audio vers un écran.
  • VGA (Video Graphics Array) — sortie vidéo analogique plus ancienne vers un moniteur.
  • Ethernet (RJ-45) — LAN filaire. Jacks audio — écouteurs/microphone.

Différents ports utilisent des signaux différents, donc un câble HDMI ne s'insère pas dans une prise USB. USB-C est inhabituel car il transporte vidéo, données et alimentation.

"Expliquez comment l'ordinateur se connecte au moniteur via HDMI" : le port HDMI envoie la vidéo et l'audio comme un seul signal numérique via un seul câble, donc aucune conversion analogique n'est nécessaire et l'image n'est pas dégradée ; le câble supporte des résolutions haute définition et le port du moniteur décode le signal. Un périphérique USB est branchement et utilisation immédiate : lorsqu'il est connecté, l'ordinateur le détecte, l'identifie, charge ou installe le pilote dont il a besoin, et peut lui fournir de l'alimentation, tout cela sans redémarrage.

4.1

Cycle Fetch-Execute

Le CPU répète le cycle de fetch-execute (recherche-exécution), une exécution par instruction machine.

Fetch

  1. l'adresse du PC est copiée dans le MAR.
  2. le PC est incrémenté pour pointer vers l'instruction suivante.
  3. un signal read part sur le bus de contrôle.
  4. la mémoire place l'instruction sur le bus de données.
  5. elle est copiée dans le MDR, puis dans le CIR.

L'examen demande ces étapes en notation de transfert de registre, où [X] désigne le contenu du registre X et [[MAR]] désigne le contenu de l'emplacement mémoire dont l'adresse se trouve dans le MAR :

MAR ← [PC]          the address of the next instruction goes to the MAR
PC  ← [PC] + 1      the PC now points to the following instruction
MDR ← [[MAR]]       the instruction at that address is read into the MDR
CIR ← [MDR]         the instruction is copied into the CIR for decoding

L'ordre est important : le PC est incrémenté immédiatement après que son adresse ait été copiée, afin qu'une saut exécuté ultérieurement puisse encore le modifier. Pendant l'exécution, la même notation décrit chaque instruction ; pour LDD 200, par exemple, MAR ← 200, MDR ← [[MAR]], ACC ← [MDR].

Les transferts de registres dans l'ordre : 1 l'adresse du PC va au MAR ; 2 le MAR envoie l'adresse à la mémoire ; 3 l'instruction revient au MDR ; 4 le MDR la copie dans le CIR ; pendant ce temps le PC est incrémenté
Les transferts de registres lors d'un fetch : PC → MAR → mémoire → MDR → CIR, avec incrémentation du PC

Decode

La CU décode l'instruction dans le CIR — quelle opération, et quels opérandes ou adresses.

Execute

La CU l'exécute : arithmétique/logique va vers l'ALU (résultat vers l'ACC) ; un load/store déplace des données entre la mémoire et un registre ; un branch modifie le PC. Puis le cycle recommence.

Diagramme de flux du cycle fetch-execute depuis START : étape fetch (PC vers MAR, incrémentation PC, signal read, mémoire vers bus de données vers MDR vers CIR), étape decode, étape execute, puis vérification des interruptions qui boucle vers START
Le cycle fetch-execute, avec vérification des interruptions à chaque fois
Explorer

Le cycle fetch-execute

Tapez autour de la boucle que le CPU répète des milliards de fois par seconde. Regardez comment le fetch utilise les registres PC/MAR/MDR/CIR, puis comment le decode et l'execute agissent sur ce qui a été cherché.

Explorer

Le cycle recherche-exécution

Parcourez comment le CPU exécute une instruction — cherchez-la en mémoire, décoder-la, puis exécutez-la, encore et encore.

Vocabulaire Entrainer
English Français
fetch-execute cycle/fetʃ ˈeksɪkjuːt ˈsaɪkl/ cycle de lecture-exécution
special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/ registres à usage spécialisé
Program Counter/ˈprəʊɡræm ˈkaʊntə/ compteur d'instruction
Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/ registre d'adresse mémoire
Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/ registre de données mémoire
Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/ registre d'instruction courante
accumulator/əˈkjuːmjʊleɪtə/ accumulateur
Status Register/ˈsteɪtəs ˈredʒɪstə/ registre d'état
flags/flæɡz/ drapeaux
4.1

Interruptions

Une interruption est un signal qui met en pause le cycle normal afin que le CPU puisse gérer un événement urgent (une frappe au clavier, l'arrivée d'un paquet, une panne matérielle, une division par zéro, le temporisateur du système d'exploitation).

Un cycle : programme principal en cours d'exécution, puis lors d'une interruption, le CPU sauvegarde son état, exécute le routine de service d'interruption, restaure l'état et reprend
Lors d'une interruption, le CPU sauvegarde son emplacement, exécute le routine de service d'interruption, puis restaure son emplacement et continue

Gérer une :

  1. termine l'instruction actuelle.
  2. save the state (PC et registres).
  3. Charger l'adresse de la routine de service d'interruption (ISR) dans le PC et l'exécuter.
  4. l'ISR gère l'événement.
  5. restore l'état sauvegardé et continue.

Les interrupts permettent au système de répondre rapidement sans que le CPU surveille constamment les appareils, et sont la méthode par laquelle le OS fait du multitasking.

« Expliquez comment une interruption provenant d'un périphérique d'entrée est détectée et gérée dans le cycle F-E » est une réponse de quatre points comportant les éléments suivants : le périphérique envoie un signal d'interruption qui active le drapeau d'interruption dans le registre d'interruption ; le processeur vérifie ce registre à la fin de chaque cycle de fetch-execute, après l'exécution de l'instruction courante ; si un drapeau est activé et que l'interruption a une priorité supérieure à la tâche en cours, le contenu du PC et des autres registres sont sauvegardés sur la pile ; l'adresse de la routine de service d'interruption est chargée dans le PC et la routine s'exécute ; lorsqu'elle se termine, les valeurs sauvegardées sont restaurées depuis la pile et le programme interrompu reprend là où il s'était arrêté.

Causes dignes d'être nommées : une interrupt matérielle venant d'un appareil (une touche pressée, tampon d'imprimante vide, paquet réseau arrivant), une interrupt logicielle due à une faute (division par zéro, instruction illégale, dépassement d'arithmétique), une interrupt d'horloge provenant du système d'exploitation marquant la fin d'une tranche de temps, et un avertissement de coupure de courant.

Diagramme de flux de gestion des interrupts : le programme en cours est interrompu, le CPU termine l'instruction actuelle, sauvegarde son état (PC et registres) sur la stack, exécute la routine de service d'interruption, restaure l'état et reprend
Comment une interrupt s'intègre dans le cycle fetch-execute
Vocabulaire Entrainer
English Français
stack/stæk/ pile
assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ langage assembleur
4.2

Assembly language and machine code

Programme
Les candidats doivent être capables de : Notes et orientations
Montrer la compréhension de la relation entre le langage assembleur et le code machine
Décrire les différentes étapes du processus d'assemblage pour un assembleur à deux passages Appliquer le processus de l'assembleur à deux passages à un programme assembleur simple donné
Tracer un programme assembleur simple donné
Montrer la compréhension que l'ensemble des instructions est groupé Y compris les groupes suivants : • Mouvement de données • Entrée et sortie de données • Opérations arithmétiques • Instructions inconditionnelles et conditionnelles • Instructions de comparaison
Montrer la compréhension et être capable d'utiliser différents modes d'adressage Y compris immédiat, direct, indirect, indexé, relatif

Source : Programme Cambridge International

Le CPU exécute réellement du code machine — des motifs de bits spécifiques à une architecture. Le langage assembleur est une forme lisible, avec une instruction par instruction machine, écrite à l'aide de mnémoniques telles que LDD, ADD, JMP. Un assembleur le traduit en code machine.

Un assembleur traduit les mnemoniques assembleur en motifs de bits de code machine
Un assembler transforme des mnemonics en motifs de bits de machine code

Two-pass assembler

Un assembleur à deux passes lit la source deux fois :

  • passage 1 construit une table des symboles : chaque fois qu'une étiquette (comme LOOP:) apparaît, on enregistre son adresse ; aucun code n'est produit encore.
  • pass 2 génère le code : traduit chaque instruction, et quand l'une référence un label (comme JMP LOOP), cherche son adresse dans la table des symboles.

Deux passages traitent les références futures (un saut vers une étiquette définie plus tard).

Exemple résolu. Appliquez le processus à deux passes à ce programme, dont la première instruction est stockée à l'adresse 100.

        LDD  COUNT
LOOP:   DEC  ACC
        CMP  #0
        JPN  LOOP
        END
COUNT:  5

Le passage 1 lit chaque ligne, compte l'adresse qu'elle occupera et enregistre toutes les étiquettes dans la table des symboles : LOOP = 101 (la ligne DEC) et COUNT = 105 (la ligne de données). Aucun code n'est produit. Le passage 2 relit le programme et traduit chaque ligne en code machine, en remplaçant chaque mnémotechnique par son opcode et chaque adresse symbolique par le numéro correspondant dans la table des symboles : LDD COUNT devient l'opcode pour LDD avec l'opérande 105, et JPN LOOP devient l'opcode pour JPN avec l'opérande 101. Le saut retour vers LOOP aurait pu être résolu en un seul passage, mais un saut vers l'avant vers une étiquette non encore vue ne pouvait pas, c'est pourquoi l'assembleur effectue deux passages.

Example instruction set

Cambridge utilise un petit ensemble générique, imprimé dans la table de référence de l'examen, avec un registre à usage général, l'accumulateur (ACC), et un registre index (IX). Un operand écrit #n est un nombre décimal, Bn un nombre binaire et &n un nombre hexadécimal ; <address> est un numéro d'emplacement ou un label.

Group Instruction What it does
Data movement LDM #n charge le nombre n dans ACC (immédiat)
LDD <address> charge le contenu de l'adresse dans ACC (direct)
LDI <address> l'adresse contient une autre adresse ; charge le contenu de celle-ci dans ACC (indirect)
LDX <address> ajouter IX à l'adresse et charger le contenu du résultat dans ACC (indexé)
LDR #n charger le nombre n dans IX
MOV <register> copier ACC dans le registre nommé (IX)
STO <address> stocker le contenu de ACC à l'adresse
Entrée et sortie IN lire une frappe clavier et mettre son code ASCII dans ACC
OUT afficher le caractère dont le code ASCII est dans ACC
Arithmétique ADD <address> / ADD #n additionner le contenu de l'adresse, ou le nombre, à ACC
SUB <address> / SUB #n soustraire à ACC
INC <register> / DEC <register> ajouter 1 à, ou soustraire 1 à, ACC ou IX
Comparer CMP <address> / CMP #n comparer ACC avec le contenu de l'adresse, ou avec n, et définir le drapeau
CMI <address> comparer ACC avec le contenu de l'adresse stocké à l'adresse (indirect)
Saut JMP <address> sauter vers l'adresse inconditionnellement
JPE <address> / JPN <address> sauter si la dernière comparaison était égale / non égale
Manipulation des bits AND, OR, XOR avec #n, Bn, &n ou <address> opération bit à bit sur ACC
LSL #n / LSR #n décaler ACC logiquement de n positions vers la gauche ou la droite
END terminer le programme

La question « les instructions en langage assembleur sont groupées » demande les noms des groupes et une instruction de chacun : mouvement de données, entrée/sortie, arithmétique, sauts inconditionnels et conditionnels, comparaison et manipulation des bits.

Explorer

Comment fonctionne un assembleur à deux passages

Parcourez-le. L'assembleur lit votre code deux fois : le passage 1 trouve simplement l'emplacement de chaque étiquette, afin que le passage 2 puisse remplir les adresses — c'est ainsi qu'un saut vers une étiquette définie plus tard fonctionne encore.

Vocabulaire Entrainer
English Français
operand/ˈɒpərænd/ opérande
machine code/məˈʃiːn kəʊd/ code machine
mnemonics/nɪˈmɒnɪks/ mnémoniques
assembler/əˈsemblə/ assembleur
symbol table/ˈsɪmbl ˈteɪbl/ table des symboles
label/ˈleɪbl/ étiquette
forward references/ˈfɔːwəd ˈrefrənsɪz/ références vers l'avant
opcode/ˈɒpkəʊd/ opcode
4.2

Modes d'adressage

Le mode d'adressage (les modes d'adressage) indique comment le CPU localise l'opérande :

  • adressage immédiat — l'opérande est la valeur contenue dans l'instruction. LDM #10 charge 10.
  • adressage direct — l'instruction contient une adresse ; l'opérande est la valeur située à cet endroit. LDD 200.
  • adressage indirect — l'instruction contient une adresse qui renvoie à une autre adresse, laquelle contient les données. LDI 200.
  • adressage indexé — l'adresse effective est address + index register ; utilisé pour les tableaux. LDX 100 avec IX = 5 lit l'adresse 105.

(L'adressage relatif fournit l'adresse comme un décalage par rapport au PC — utilisé pour les sauts.)

Quatre modes d'adressage atteignant leur opérande. Immédiat : LDM #10 donne 10 directement. Direct : LDD 200 lit l'emplacement mémoire 200 (=42). Indirect : LDI 200 lit l'emplacement 200 (=250) puis l'emplacement 250 (=99). Indexé : LDX 100 avec registre index 5 lit l'emplacement 105 (=7)
Comment chaque mode d'adressage accède à son opérande — immédiat, direct, indirect et indexé

Exemple résolu. La mémoire contient : emplacement 200 = 250, emplacement 250 = 99, emplacement 105 = 7. Le registre index contient 5. Que contient l'accumulateur après chacun de LDM #200, LDD 200, LDI 200 et LDX 100 ? Suivez jusqu'où chaque mode doit chercher. LDM #200 est immédiat - l'opérande est le nombre écrit dans l'instruction, donc l'accumulateur contient 200. LDD 200 est direct - aller à l'emplacement 200 et prendre ce qu'il y a : 250. LDI 200 est indirect - l'emplacement 200 contient 250, qui est une autre adresse, donc continuer vers l'emplacement 250 : 99. LDX 100 est indexé - ajouter le registre index à l'adresse, $100 + 5 = 105$, et lire l'emplacement 105 : 7. Comptez les sauts pour les distinguer : immédiat 0, direct 1, indirect 2, indexé 1 (une fois l'index ajouté).

Vocabulaire Entrainer
English Français
Index Register/ˈɪndeks ˈredʒɪstə/ registre d'indexation
indexed addressing/ˈɪndekst əˈdresɪŋ/ adressage indexé
general-purpose registers/ˈdʒenərəl ˈpɜːpəs ˈredʒɪstəz/ registres universels
register transfer/ˈredʒɪstə ˈtrænsfɜː/ transfert de registre
control bus/kənˈtrəʊl bʌs/ bus de contrôle
addressing mode/əˈdresɪŋ məʊd/ mode d'adressage
immediate addressing/ɪˈmiːdɪət əˈdresɪŋ/ adressage immédiat
direct addressing/daɪˈrekt əˈdresɪŋ/ adressage direct
indirect addressing/ɪndaɪˈrekt əˈdresɪŋ/ adressage indirect
relative addressing/ˈrelətɪv əˈdresɪŋ/ adressage relatif
logical shift/ˈlɒdʒɪkl ʃɪft/ décalage logique
cyclic shift/ˈsaɪklɪk ʃɪft/ décalage cyclique
4.2

Tracé d'un programme assembleur

Pour le tracer : faites un tableau avec des colonnes pour le PC, ACC, registre index, chaque variable et tout drapeau. Passez pas à pas à travers les instructions, mettez à jour le tableau après chacune ; suivez les branches lorsqu'elles changent le PC ; arrêtez à END. Un motif courant est une boucle sur un tableau utilisant l'adressage indexé.

Le programme de l'adresse 100 à l'adresse 108 représenté sous forme de boucle : JMP 100 revient au début, JPE 108 sort lorsque ACC vaut 0 ; avec 5 à l'adresse 200, il produit 5, 4, 3, 2, 1
Suivez les sauts pour repérer la boucle avant d'en tracer l'exécution.

Exemple résolu. Tracez ce programme. L'adresse 200 contient 5 et l'adresse 201 contient 0.

100   LDD  200
101   CMP  #0
102   JPE  108
103   OUT
104   DEC  ACC
105   STO  200
106   LDD  201
107   JMP  100
108   END

Écrivez une ligne pour chaque instruction exécutée, en ne remplissant que les colonnes qui changent :

Instruction ACC 200 201 Sortie
début 5 0
LDD 200 5
CMP #0
JPE 108 non pris
OUT caractère de code 5
DEC ACC 4
STO 200 4
LDD 201 0
JMP 100
LDD 200 4

et ainsi de suite, jusqu'à ce que LDD 200 charge 0, la comparaison définisse le drapeau égal, JPE 108 soit exécutée et le programme se termine. Trois points vérifiés par l'examinateur : un CMP ne modifie aucun registre, seulement un drapeau ; un saut non pris compte toujours comme exécuté ; et OUT produit un caractère, donc il va dans la colonne de sortie, pas dans la colonne ACC. "Décrivez l'effet du changement de LDD 10 en LDM #10" : l'ACC contiendrait le nombre 10 au lieu du contenu de l'adresse 10.

4.3

Décalages binaires

Programme
Les candidats doivent être capables de : Notes et orientations
Montrer la compréhension et effectuer des décalages binaires Logique, arithmétique et cyclique Décalage gauche, décalage droit
Montrer la compréhension de la manière dont la manipulation binaire peut être utilisée pour surveiller/contrôler un dispositif Effectuer des opérations de manipulation binaire Tester et définir un bit (en utilisant le masquage binaire)
Étiquette d'instruction | Opcode | Opérande Explication
AND #n / Bn / &n Opération ET binaire du contenu de ACC avec l'opérande
AND
Opération ET binaire du contenu de ACC avec le contenu de
XOR #n / Bn / &n Opération XOR binaire du contenu de ACC avec l'opérande
XOR
Opération XOR binaire du contenu de ACC avec le contenu de
OR #n / Bn / &n Opération OU binaire du contenu de ACC avec l'opérande
OR
Opération OU binaire du contenu de ACC avec le contenu de
LSL #n Les bits dans ACC sont décalés logiquement n positions vers la gauche. Des zéros sont introduits à l'extrémité droite
LSR #n Les bits dans ACC sont décalés logiquement n positions vers la droite. Des zéros sont introduits à l'extrémité gauche
Étiquette d'une instruction
Donne une adresse symbolique
Toutes les questions supposeront qu'il n'y a qu'un seul registre à usage général disponible (Accumulateur) ACC désigne Accumulateur IX désigne Registre Index
peut être une adresse absolue ou symbolique # désigne un nombre décimal, ex. #123 B désigne un nombre binaire, ex. B01001010 & désigne un nombre hexadécimal, ex. &4A

Source : Programme Cambridge International

Un décalage logique déplace tous les bits vers la gauche ou la droite d'un certain nombre de positions, en remplissant les nouvelles positions avec 0.

  • décalage à gauche de 1 (LSL #1) — les bits se déplacent vers la gauche, un 0 entre à droite ; pour un nombre non signé, c'est × 2.
  • décalage à droite de 1 (LSR #1) — les bits se déplacent vers la droite, un 0 entre à gauche ; pour un nombre non signé, c'est integer ÷ 2.

Décaler de $n$ positions multiplie ou divise par $2^{n}$. Exemple : 00001011 (11) LSL #1 → 00010110 (22).

Les bits décalés hors de l'extrémité sont perdus, donc la multiplication n'est correcte que tant qu'ils étaient zéros. LSL #2 sur l'entier en complément à deux 11001010 donne 00101000 : les deux 1s qui sont sortis par la gauche ont disparu, le bit de signe a changé, et le résultat n'est plus quatre fois l'original.

Un décalage arithmétique à droite conserve le bit de signe afin qu'un nombre signé négatif reste négatif. Un décalage cyclique (rotation) réinsère le bit qui sort par une extrémité à l'autre extrémité, de sorte qu'aucun bit n'est perdu.

"Montrez le résultat d'un décalage logique à droite de 3 places sur 10011110" : copiez le bit de signe dans chaque place vacante, 11110011. Le même décalage sur 01011100 donne 00001011. Un décalage cyclique à gauche de 1 sur 10000110 donne 00001101 : le 1 de tête réapparaît à droite.

Trois décalages sur 8 bits : LSL #1 transforme 00001011 en 00010110 (multiplié par 2, un 0 entre à droite) ; LSR #1 le transforme en 00000101 (division entière par 2, un 0 entre à gauche) ; ASR #1 transforme 10110100 en 11011010, en copiant le bit de signe
Décalage logique gauche ($\times 2$), logique droit ($\div 2$) et arithmétique droit (conserve le bit de signe)

La différence entre les deux décalages à droite est un seul bit. Prenez 11110000, qui est 240 lu comme non signé et $-16$ lu comme signé. LSR #1 apporte un 0 et donne 01111000 $= 120$, qui est la moitié correcte de 240. ASR #1 copie le bit de signe et donne 11111000 $= -8$, qui est la moitié correcte de $-16$. Aucun n'est faux — chacun divise la valeur par deux selon une lecture.

Le byte 11110000 décalé à droite deux fois : LSR apporte un 0 à gauche donnant 01111000 qui est 120, tandis que ASR copie le bit de signe donnant 11111000 qui est moins 8 ; les deux résultats diffèrent uniquement dans le bit entrant
Décalage logique et arithmétique droit sur le même byte : seul le bit entrant à gauche diffère

Manipulation des bits pour surveillance/contrôle

Les dispositifs embarqués utilisent souvent un bit d'un registre par signal (par ex. bit $n$ = LED $n$). En utilisant un masque — masquage de bits — vous pouvez :

  • positionner le bit $n$ : R = R OR un masque avec le bit $n$ positionné.
  • désactiver le bit $n$ : R = R AND un masque avec le bit $n$ désactivé et le reste activé.
  • inverser le bit $n$ : R = R XOR un masque avec le bit $n$ activé.
  • tester le bit $n$ : R AND le masque, puis vérifier si le résultat est non nul.
Masquage de bits sur le byte 01001000 : activer le bit 2 avec OR 00000100 pour obtenir 01001100 ; désactiver le bit 6 avec AND 10111111 pour obtenir 00001000 ; inverser le bit 3 avec XOR 00001000 pour obtenir 01000000
Activer un bit avec OR, le désactiver avec AND, l'inverser avec XOR — chacun utilisant un masque

La manipulation des bits est rapide, utilise peu de mémoire et permet à un octet de contenir jusqu'à 8 états marche/arrêt.

Dans l'ensemble d'instructions de l'examen, ce sont AND, OR et XOR avec un masque écrit comme opérande décimal, binaire ou hexadécimal. Avec ACC contenant 10101100 :

Instruction Masque Résultat dans ACC Effet
AND B00001111 00001111 00001100 garde seulement les quatre bits de poids faible (désactive les autres)
OR #1 00000001 10101101 positionne le bit de poids faible, laissant les autres inchangés
XOR &FF 11111111 01010011 inverse tous les bits
AND B00001000 puis CMP #0 00001000 00001000 teste le bit 3 : la comparaison n'est pas égale, donc le bit 3 était positionné
LSL #2 10110000 décale à gauche de deux places, perdant les deux bits supérieurs
LSR #3 00010101 décale à droite de trois places, des zéros entrant à gauche

"Écrivez l'instruction qui active le bit de poids faible à 1 et laisse les autres inchangés" : OR #1, ou OR B00000001. Pour désactiver un bit, utilisez AND avec un masque ayant un 0 à cet endroit et des 1 ailleurs ; pour tester un bit, AND avec un masque ayant un 1 uniquement à cet endroit, puis comparez le résultat avec zéro. Dans un dispositif de surveillance, un bit d'un registre par capteur permet à une seule AND de vérifier si un capteur particulier est allumé, et un OR active le bit de commande d'un actionneur sans perturber les autres.

Explorer

Décalez et masquez les bits d'un octet

Choisissez un opérateur et observez chaque bit de résultat. Un décalage gauche (<<) moves every bit up one place (×2); a right shift (>>) les déplace vers la droite (÷2) ; AND avec un masque efface les bits que vous ne voulez pas.

Vocabulaire Entrainer
English Français
mask/mæsk/ masque
4.3

Définitions acceptées par l'examinateur

Une question de définition est notée selon un libellé fixe. Apprenez-les exactement et ne donnez qu'une seule réponse.

Terme Définition
concept de programme stocké les instructions du programme et les données sont toutes deux stockées en mémoire principale, et les instructions sont fetchées et exécutées une par une
registre un petit emplacement de stockage très rapide à l'intérieur du processeur avec un but spécifique
Compteur de programme le registre contenant l'adresse de la prochaine instruction à être fetchée
Registre d'adresse mémoire le registre contenant l'adresse de l'emplacement mémoire lu ou écrit
Registre de données mémoire le registre contenant les données ou l'instruction récemment lues depuis, ou sur le point d'être écrites dans, la mémoire
Registre d'instruction courante le registre contenant l'instruction actuellement décodée et exécutée
Accumulateur le registre à usage général contenant le résultat de la dernière opération arithmétique ou logique
mémoire cache petite mémoire rapide proche du processeur contenant des instructions et des données fréquemment utilisées
interruption un signal provenant d'un périphérique ou d'un programme qui fait que le processeur pause la tâche actuelle et exécute un service d'interruption
langage assembleur un langage de bas niveau dans lequel chaque instruction mnémotechnique correspond à une instruction de code machine
adressage immédiat l'opérande est la valeur écrite dans l'instruction
adressage direct l'opérande est le contenu de l'adresse écrite dans l'instruction
adressage indirect l'adresse dans l'instruction contient l'adresse de l'opérande
adressage indexé l'adresse de l'opérande est l'adresse dans l'instruction plus le contenu du registre d'index
adressage relatif l'adresse de l'opérande est donnée comme un décalage par rapport à l'adresse de l'instruction courante
décalage logique chaque bit se déplace du nombre de places indiqué et des zéros remplissent les cases libérées
4.3

Conseils d'examen

  • Apprendre le cycle prélever-exécuter en termes de transfert de registres (PC, MAR, MDR, CIR, ACC) et ce qui incrémente le PC.
  • Nommer la fonction de chaque registre ; le bus d'adresses est unidirectionnel, le bus de données est bidirectionnel.
  • Distinguer les modes d'adressage (immédiat, direct, indirect, indexé) — une question fréquente.
  • Expliquer comment la vitesse d'horloge, le nombre de cœurs, la taille du cache et la longueur du mot influencent les performances.
  • Pour un décalage binaire, indiquer s'il est logique ou arithmétique ; un décalage vers la gauche multiplie par 2, un décalage vers la droite divise par 2.

Erreurs courantes

  • Dire que le PC contient l'instruction courante, ou que le MDR contient une adresse. Le PC contient l'adresse de l'instruction suivante ; le MDR contient des données ou une instruction, jamais une adresse.
  • Omettre l'incrémentation du PC lors de la phase de prélèvement, ou la placer après l'exécution. Elle a lieu dès que l'adresse a été copiée dans le MAR.
  • Lire LDD 10 comme "charger 10". LDD 10 charge le contenu de l'adresse 10 ; LDM #10 charge le nombre 10.
  • Placer une valeur dans la colonne ACC pour CMP ou OUT. Une comparaison définit uniquement un drapeau ; une sortie va vers la colonne de sortie.
  • Dire qu'une interruption est traitée "immédiatement". Le processeur termine l'instruction courante et vérifie les interruptions à la fin du cycle.
  • Utiliser un décalage logique droit sur un nombre négatif en complément à deux. Seul un décalage arithmétique conserve le bit de signe.

Leçons interactives sur ce sujet

Traversez-le étape par étape, avec des exercices à vérification instantanée.

Épreuves Passées

Plus de sujets dans Informatique A-Level

Se connecter ou créer un compte

IGCSE, A-Level & AP