Passer au contenu

Fonctionnement de base du processeur

Informatique A-Level · Sujet 4

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

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 anglais + 中文 incrustés

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 Von Neumann 冯·诺依曼体系结构 sous-tend presque tous les ordinateurs à usage général :

  • une mémoire unique — la Immediate Access Store 立即存取存储器 (IAS) — contient à la fois les instructions de programme et les données (le concept de stored program 存储程序).
  • non processor 处理器 (CPU) récupère les instructions depuis la 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
Anglais Chinois Pinyin
Immediate Access Store/ɪˈmiːdɪət ˈækses stɔː/ 立即存取存储器 lì jí cún qǔ cún chǔ qì
stored program/stɔːd ˈprəʊɡræm/ 存储程序 cún chǔ chéng xù
processor/ˈprəʊsesə/ 处理器 chǔ lǐ qì
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'ALU 算术逻辑单元 effectue les opérations arithmétiques (addition, soustraction, …) et logiques (AND, OR, comparaisons). Elle prend des opérandes depuis les registers 寄存器 et place les résultats dans un registre.

Unité de contrôle (CU)

L'control unit 控制单元 décode chaque instruction et envoie les signaux de contrôle pour l'exécuter — ouvrir les chemins de données, dire à l'ALU quoi faire, et contrôler les lectures et écritures mémoire.

System clock

L'horloge envoie un flux régulier d'impulsions qui maintiennent le CPU synchronisé. Chaque instruction prend un nombre fixe de cycles, et la vitesse d'horloge 时钟频率 (par 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.

Registres

Les registers sont de petites mémoires très rapides à l'intérieur du CPU. Les special purpose registers 专用寄存器 ont chacune une tâche fixe dans le cycle :

  • Program Counter 程序计数器 (PC) — l'adresse de l'suivante instruction.
  • Memory Address Register 内存地址寄存器 (MAR) — l'adresse lue ou écrite.
  • Memory Data Register 内存数据寄存器 (MDR) — les données allant vers ou venant de la mémoire.
  • Current Instruction Register 当前指令寄存器 (CIR) — l'instruction actuellement décodée.
  • Accumulator 累加器 (ACC) — la valeur sur laquelle l'ALU travaille.
  • Status Register 状态寄存器 — contient des flags 标志 (carry, zero, negative, overflow) utilisés par les branches. Chaque flag est un bit, positionné ou effacé par l'ALU après une opération : le flag zero après une comparaison qui a matches, le flag carry quand une addition a débordé le registre, le flag negative quand un résultat est négatif. Un saut conditionnel lit les flags pour décider de brancher, et un flag overflow peut déclencher une interruption.
  • Index Register 变址寄存器 — un décalage ajouté à une adresse dans l'adressage indexé ; l'incrémenter permet de parcourir un tableau un élément à la fois.

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.

General-purpose registers 通用寄存器 sont utilisés par le programmeur pour des valeurs temporaires durant un calcul. Les mouvements de données entre registers et mémoire sont écrits en notation register transfer 寄存器传送 — par ex. MAR ← [PC] ("copiez 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
Anglais Chinois Pinyin
Von Neumann architecture/vɒn ˈnɔɪmən ˈɑːkɪtektʃə/ 冯·诺依曼体系结构 féng · nuò yī màn tǐ xì jié gòu
arithmetic and logic unit/ˌærɪθˈmetɪk ənd ˈlɒdʒɪk ˈjuːnɪt/ 算术逻辑单元 suàn shù luó jí dān yuán
ALU/ˌeɪ el ˈjuː/ 算术逻辑单元 suàn shù luó jí dān yuán
register/ˈredʒɪstə/ 寄存器 jì cún qì
control unit/kənˈtrəʊl ˈjuːnɪt/ 控制单元 kòng zhì dān yuán
clock speed/klɒk spiːd/ 时钟频率 shí zhōng pín lǜ
special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/ 专用寄存器 zhuān yòng jì cún qì
Program Counter/ˈprəʊɡræm ˈkaʊntə/ 程序计数器 chéng xù jì shù qì
Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/ 内存地址寄存器 nèi cún dì zhǐ jì cún qì
Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/ 内存数据寄存器 nèi cún shù jù jì cún qì
Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/ 当前指令寄存器 dāng qián zhǐ lìng jì cún qì
accumulator/əˈkjuːmjʊleɪtə/ 累加器 lěi jiā qì
Status Register/ˈsteɪtəs ˈredʒɪstə/ 状态寄存器 zhuàng tài jì cún qì
flags/flæɡz/ 标志 biāo zhì
Index Register/ˈɪndeks ˈredʒɪstə/ 变址寄存器 biàn zhǐ jì cún qì
indexed addressing/ˈɪndekst əˈdresɪŋ/ 变址寻址 biàn zhǐ xún zhǐ
general-purpose registers/ˈdʒenərəl ˈpɜːpəs ˈredʒɪstəz/ 通用寄存器 tōng yòng jì cún qì
register transfer/ˈredʒɪstə ˈtrænsfɜː/ 寄存器传送 jì cún qì chuán sòng
buses/ˈbʌsɪz/ 总线 zǒng xiàn
4.1

Bus

Trois buses internes 总线 (ensembles de fils parallèles) connectent les parties :

  • address bus 地址总线 — transporte l'adresse mémoire. Unidirectionnel (CPU → mémoire).
  • data bus 数据总线 — transporte les données. Bidirectionnel.
  • control bus 控制总线 — transporte les signaux de contrôle (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
Vocabulaire Entrainer
Anglais Chinois Pinyin
control bus/kənˈtrəʊl bʌs/ 控制总线 kòng zhì zǒng xiàn
address bus/əˈdres bʌs/ 地址总线 dì zhǐ zǒng xiàn
data bus/ˈdeɪtə bʌs/ 数据总线 shù jù zǒng xiàn
word size/wɜːd saɪz/ 字长 zì cháng
number of cores/ˈnʌmbə ɒv kɔːz/ 核心 hé xīn
cores/kɔːz/ 核心 hé xīn
amount of RAM/əˈmaʊnt ɒv ræm/ 随机存取存储器 suí jī cún qǔ cún chǔ qì
4.1

Ce qui affecte la performance

  • vitesse d'horloge — plus de cycles par seconde.
  • nombre de cœurs 核心 — un CPU multi-cœur exécute plusieurs threads simultanément.
  • taille mot 字长 — un CPU 64 bits traite des blocs de 64 bits par cycle et peut adresser bien plus de mémoire qu'un 32 bits.
  • quantité de RAM 随机存取存储器 — plus de RAM retient davantage du jeu de travail ; trop peu force le système d'exploitation à faire du pageage 页 vers le disque.
  • mémoire cache 高速缓存 taille — plus de cache réduit le temps d'accès moyen à la mémoire.
  • type de stockage secondaire 辅助存储器 — un SSD charge les programmes bien plus vite qu'un HDD.
  • largeur et vitesse du bus — des buses plus larges/rapides transmettent les données plus rapidement.

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转移更多位 in each transfer, so fewer transfers are needed for the same data; a wider address bus can address more memory locations.
  • 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
Anglais Chinois Pinyin
RAM/ræm/ 随机存取存储器 suí jī cún qǔ cún chǔ qì
page/peɪdʒ/ 页 yè
cache memory/kæʃ ˈmeməri/ 高速缓存 gāo sù huǎn cún
cache/kæʃ/ 高速缓存 gāo sù huǎn cún
secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ 辅助存储器 fǔ zhù cún chǔ qì
4.1

Ports

Un port 端口 est une prise physique pour 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.

Vocabulaire Entrainer
Anglais Chinois Pinyin
port/pɔːt/ 端口 duān kǒu
peripheral/pəˈrɪfərəl/ 外围设备 wài wéi shè bèi
4.1

Cycle Fetch-Execute

Le CPU répète le cycle fetch-execute 取指-执行周期, une itération 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 register transfer notation 寄存器传送记法, où [X] signifie le contenu du registre X et [[MAR]] signifie le contenu de l'emplacement mémoire dont l'adresse est 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
Anglais Chinois Pinyin
fetch-execute cycle/fetʃ ˈeksɪkjuːt ˈsaɪkl/ 取指-执行周期 qǔ zhǐ - zhí xíng zhōu qī
register transfer notation/ˈredʒɪstə ˈtrænsfɜː nəʊˈteɪʃn/ 寄存器传送记法 jì cún qì chuán sòng jì fǎ
4.1

Interrupts

Une interrupt 中断 est un signal qui pauses le cycle normal pour que le CPU puisse gérer un événement urgent (une touche pressée, un paquet arrivant, une panne matérielle, division par zéro, horloge OS).

Gérer une :

  1. termine l'instruction actuelle.
  2. save the state (PC et registres).
  3. charge l'adresse de la interrupt service routine 中断服务程序 (ISR) dans le PC et exécute-la.
  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 interrupt 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 avec ces éléments : le périphérique envoie un signal d'interruption qui positionne le flag d'interruption dans le interrupt register 中断寄存器 ; le processeur vérifie ce registre à la fin de chaque cycle fetch-execute, après que l'instruction actuelle ait fini d'être exécutée ; si un flag est positionné et que l'interruption a une priorité supérieure à la tâche actuelle, le contenu du PC et des autres registres est sauvegardé 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 finit, les valeurs sauvegardées sont restaurées depuis la stack 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
Anglais Chinois Pinyin
interrupt/ˈɪntərʌpt/ 中断 zhōng duàn
interrupt service routine/ˈɪntərʌpt ˈsɜːvɪs ruːˈtiːn/ 中断服务程序 zhōng duàn fú wù chéng xù
interrupt register/ˈɪntərʌpt ˈredʒɪstə/ 中断寄存器 zhōng duàn jì cún qì
stack/stæk/ 栈 zhàn
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 le machine code 机器码 — motifs de bits, spécifiques à une architecture. L'assembly language 汇编语言 est une forme lisible, avec une instruction par instruction machine, écrite en utilisant des mnemonics 助记符 comme LDD, ADD, JMP. Un assembler 汇编器 le traduit en machine code.

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 :

  • pass 1 construit une symbol table 符号表 : chaque fois qu'un label 标签 (comme LOOP:) apparaît, on note son adresse ; aucun code 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 passes gèrent les forward references 前向引用 (un saut vers un label défini 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 chaque étiquette 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, remplaçant chaque mnémonique par son code opérationnel 操作码 et chaque adresse symbolique par le nombre de la table des symboles : LDD COUNT devient le code opérationnel pour LDD avec l'opérande 操作数 105, et JPN LOOP devient le code opérationnel pour JPN avec l'opérande 101. Le saut en arrière vers LOOP aurait pu être résolu en un seul passage, mais un saut avant vers une étiquette non encore vue ne le pouvait pas, c'est pourquoi l'assembleur fait 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.

Groupe Instruction Ce qu'il fait
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
Anglais Chinois Pinyin
operand/ˈɒpərænd/ 操作数 cāo zuò shù
assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ 汇编语言 huì biān yǔ yán
machine code/məˈʃiːn kəʊd/ 机器码 jī qì mǎ
mnemonics/nɪˈmɒnɪks/ 助记符 zhù jì fú
assembler/əˈsemblə/ 汇编器 huì biān qì
symbol table/ˈsɪmbl ˈteɪbl/ 符号表 fú hào biǎo
label/ˈleɪbl/ 标签 biāo qiān
forward references/ˈfɔːwəd ˈrefrənsɪz/ 前向引用 qián xiàng yǐn yòng
opcode/ˈɒpkəʊd/ 操作码 cāo zuò mǎ
4.2

Modes d'adressage

Le mode d'adressage 寻址方式 (les modes d'adressage) indique comment le CPU trouve l'opérande :

  • adressage immédiat 立即寻址 — l'opérande est la valeur dans l'instruction. LDM #10 charge 10.
  • adressage direct 直接寻址 — l'instruction contient une adresse ; l'opérande est la valeur à cet endroit. LDD 200.
  • adressage indirect 间接寻址 — l'instruction contient une adresse qui contient une autre adresse, qui est les données. LDI 200.
  • adressage indexé 变址寻址 — l'adresse effective est address + index register ; utilisé pour les tableaux. LDX 100 avec IR = 5 lit l'adresse 105.

(Adressage relatif 相对寻址 donne 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
Anglais Chinois Pinyin
addressing mode/əˈdresɪŋ məʊd/ 寻址方式 xún zhǐ fāng shì
immediate addressing/ɪˈmiːdɪət əˈdresɪŋ/ 立即寻址 lì jí xún zhǐ
direct addressing/daɪˈrekt əˈdresɪŋ/ 直接寻址 zhí jiē xún zhǐ
indirect addressing/ɪndaɪˈrekt əˈdresɪŋ/ 间接寻址 jiàn jiē xún zhǐ
relative addressing/ˈrelətɪv əˈdresɪŋ/ 相对寻址 xiāng duì xún zhǐ
logical shift/ˈlɒdʒɪkl ʃɪft/ 逻辑移位 luó jí yí wèi
cyclic shift/ˈsaɪklɪk ʃɪft/ 循环移位 xún huán yí wèi
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é.

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 de quelques places, 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 logique à droite conserve le bit de signe pour qu'un nombre négatif signé reste négatif. Un décalage cyclique 循环移位 (rotation) renvoie le bit qui tombe d'une extrémité à l'autre, afin qu'aucun bit ne soit 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 exemple 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
Anglais Chinois Pinyin
bit/bɪt/ 位 wèi
mask/mæsk/ 掩码 yǎn mǎ
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