Skip to content

Architecture des ordinateurs

Préface

Après avoir construit un CPU à partir de transistors, comment l'ordinateur forme-t-il un système complet ? Dans le chapitre précédent, nous sommes partis des transistors pour construire des additionneurs, des registtres, des unités de calcul, et finalement assembler le cœur du CPU. Mais le CPU seul ne suffit pas — il doit collaborer avec la mémoire et les périphériques d'entrée/sortie, les bus relient les composants, et un jeu d'instructions pilote le tout. Dans ce chapitre, nous passons de la perspective interne du CPU à celle du système informatique dans son ensemble, pour approfondir notre compréhension de l'architecture de von Neumann, du jeu d'instructions, de la hiérarchie de stockage, ainsi que des bus et des entrées/sorties.

Que allez-vous apprendre dans cet article ?

À la fin de ce chapitre, vous aurez acquis :

  • Perspective système : comprendre comment le CPU, la mémoire et les E/S collaborent — vous n'êtes plus un simple passionné de hardware isolé
  • Terminologie hardware : maîtriser les concepts clés tels que le cycle d'instruction, le pipeline, le CPI, le taux de succès du cache
  • Pensée performance : comprendre les goulots d'étranglement et les optimisations dans l'architecture informatique
  • Fondamentaux pour la suite : bases professionnelles pour les systèmes d'exploitation, l'architecture des calculateurs et le développement embarqué
ChapitreContenuConcepts clés
Chapitre 1Architecture de von NeumannProgramme stocké, cinq composants principaux, chemin de données
Chapitre 2Jeu d'instructionsFormat d'instruction, modes d'adressage, CISC vs RISC
Chapitre 3Unité de contrôle du CPUUnité de commande, micro-opérations, cycle d'instruction
Chapitre 4Hiérarchie de stockageCache, mémoire principale, mémoire virtuelle, pagination
Chapitre 5Bus et E/SArbitrage de bus, DMA, mécanisme d'interruption

0. Vue d'ensemble : le système hardware de l'ordinateur

Dans le chapitre précédent « Du transistor au CPU », nous avons compris le fonctionnement interne du CPU — de l'extraction, au décodage, à l'exécution, jusqu'à l'écriture. Mais le CPU lui-même n'est qu'une unité d'exécution ; pour que l'ordinateur soit réellement « utilisable », il faut la coopération de plusieurs composants périphériques.

Detailed CPU Instruction Cycle Demo
CPU
Control Unit CU
PC256Program Counter
IRInstruction Register
MARMemory Address Register
MDRMemory Data Register
Arithmetic Logic Unit ALU
ACC0Accumulator
General Register File
R00
R10
R20
R30
Address Bus
Data Bus
Control Bus
Main Memory
0x100LOAD R0, [0x200]
 0x101LOAD R1, #7
 0x102ADD R0, R1
 0x103STORE [0x201], R0
Data Area
 0x51242
 0x5130
FetchFetch
DecodeDecode
ExecuteExecute
Write BackWrite Back
Step 0 / 32
Click "Clock Pulse" to step through execution, or "Auto Run" to play continuously.

Décomposition par couches : le système hardware de l'ordinateur

  • Couche 1 : Cœur du CPU Responsable de l'exécution des instructions, comprenant l'unité de commande (émission des signaux de contrôle) et l'unité de calcul (opérations arithmétiques et logiques)

  • Couche 2 : Banc de registres Stockage ultra-rapide à l'intérieur du CPU, comprenant les registres généralistes et spécialisés (PC, IR, MAR, MDR, etc.)

  • Couche 3 : Mémoire principale Mémoire stockant les programmes et les données, à laquelle le CPU accède via le bus d'adresses et le bus de données

  • Couche 4 : Périphériques d'E/S Périphériques d'entrée/sortie connectés au bus système via des contrôleurs d'E/S

  • Couche 5 : Bus système Canal de données reliant le CPU, la mémoire et les E/S, comprenant le bus d'adresses, le bus de données et le bus de contrôle


1. Architecture de von Neumann : la « constitution » de l'ordinateur moderne

1.1 Le concept de programme stocké

En 1945, le mathématicien John von Neumann a proposé le concept révolutionnaire d'architecture à programme stocké (Stored-program). Cette idée a posé les fondations de l'ordinateur moderne.

Concept clé

Programme stocké : le programme lui-même, en tant que type particulier de données, est stocké en mémoire au même titre que les données ordinaires. Le CPU peut lire et exécuter les instructions du programme stockées en mémoire de la même manière qu'il lit et écrit des données.

Cela signifie que :

  • Les premiers ordinateurs : les programmes étaient implémentés par câblage fixe ; modifier un programme nécessitait de refaire les soudures
  • Architecture de von Neumann : les programmes sont stockés en mémoire ; pour modifier un programme, il suffit de modifier le contenu de la mémoire

1.2 Les cinq composants principaux

L'architecture de von Neumann divise l'ordinateur en cinq composants fondamentaux :

CPU Register FileHigh-speed storage inside the CPU
Special Registers
PC
0x00401000
Program counter
IR
0x8B450008
Instruction register
MAR
0x00401000
Memory address register
MDR
0x00000000
Memory data register
ACC
0x0000001A
Accumulator
General Purpose Registers
RAX
0x00000000
Return value
RBX
0x00000000
Base register
RCX
0x00000000
Counter register
RDX
0x00000000
Data register
RSI
0x00000000
Source index
RDI
0x00000000
Destination index
RBP
0x00000000
Base pointer
RSP
0x7FFDE000
Stack pointer
Program Status Word (PSW / FLAGS)
CF0Carry flag
PF0Parity flag
AF0Auxiliary carry
ZF0Zero flag
SF0Sign flag
OF0Overflow flag
Registers vs Memory
FeatureRegisterMemory (RAM)
LocationInside the CPUOutside the CPU
Access speedFastest (< 1ns)Slower (50-100ns)
CapacityTiny (bytes)Large (GB)
RoleHold instructions, operands, and resultsStore programs and data
ComposantAnglaisFonctionPrincipaux éléments
Unité arithmétiqueALU (Arithmetic Logic Unit)Exécute les opérations arithmétiques et logiquesAdditionneur, décaleur, comparateur
Unité de commandeCU (Control Unit)Coordonne le travail de tous les composantsRegistre d'instruction, décodeur, générateur de séquence
MémoireMemoryStocke les programmes et les donnéesRegistre d'adresse mémoire (MAR), registre de données mémoire (MDR)
EntréeInputSaisie d'informationsClavier, souris, scanner
SortieOutputAffichage des informationsÉcran, imprimante

1.3 Chemin de données

Le chemin de données (Data Path) est la route suivie par les données entre les différentes unités fonctionnelles. À l'intérieur du CPU, le chemin de données relie :

  • Le banc de registres
  • L'unité arithmétique et logique (ALU)
  • Le registre de données mémoire (MDR)

La largeur du chemin de données (combien de bits peuvent être transférés à la fois) influence directement les performances de l'ordinateur.

1.4 Le goulot d'étranglement de von Neumann

L'architecture de von Neumann présente un célèbre goulot d'étranglement de performance :

La vitesse de transfert des données entre le CPU et la mémoire est bien inférieure à la vitesse de traitement du CPU.

Le CPU se retrouve donc souvent en état d'attente. De nombreuses techniques d'optimisation des ordinateurs modernes sont conçues pour résoudre ce problème :

Technique d'optimisationPrincipe
CachePlacer un petit stockage rapide à proximité du CPU
Pipeline d'instructionsPlacer plusieurs instructions simultanément à différents stades
SuperscalaireÉmettre plusieurs instructions par cycle d'horloge
Multi-cœur parallèlePlusieurs cœurs de CPU se partagent les tâches de calcul

2. Jeu d'instructions : l'interface entre le CPU et le logiciel

Dans la section précédente, nous avons découvert le concept clé de l'architecture de von Neumann : les programmes et les données sont stockés de la même manière en mémoire. Mais cela soulève une question essentielle — à quoi ressemble le « programme » stocké en mémoire ? Comment le CPU le comprend-il ?

La réponse est le jeu d'instructions (Instruction Set Architecture, ISA). Si l'on compare le CPU à un service, le jeu d'instructions est sa documentation API — il définit toutes les commandes que le CPU peut comprendre, le format de chaque commande et la portée des données sur lesquelles les commandes peuvent opérer. Chaque ligne de code que vous écrivez est finalement traduite par le compilateur en une séquence d'appels de cette « API ».

2.1 Du code à l'instruction : le voyage de traduction d'une ligne de code

Tout d'abord, établissons une vue d'ensemble : le code que vous écrivez dans votre éditeur et ce que le CPU exécute réellement sont séparés par plusieurs couches de traduction.

🔗 From Code to Instructions: One Line Through the Translation Pipeline

Click each stage to see how source code becomes CPU-executable instructions

1Source code
int a = 10 + 5;
This is high-level code written in an editor. It is easy for humans to read, but the CPU does not understand int or the + operator directly.
2Compiler emits assembly
MOV  R1, #10    ; put 10 into register R1
MOV  R2, #5     ; put 5 into register R2
ADD  R3, R1, R2 ; R3 = R1 + R2
STORE R3, [a]   ; store the result at variable a
3Assembler emits machine code
0001 0001 0000 1010  → MOV R1, #10
0001 0010 0000 0101  → MOV R2, #5
0010 0011 0001 0010  → ADD R3, R1, R2
0100 0011 1000 0000  → STORE R3, [a]
4CPU executes instructions
Clock 1: fetch → decode → execute MOV R1, #10
Clock 2: fetch → decode → execute MOV R2, #5
Clock 3: fetch → decode → execute ADD R3, R1, R2
Clock 4: fetch → decode → execute STORE R3, [a]
💡 Key idea
An instruction set is the CPU API: it defines every command the CPU understands. A compiler translates your high-level language into calls to that API. Different CPUs, such as x86 and ARM, have different instruction sets, just as different services expose different APIs.

Cette chaîne de traduction est la clé pour comprendre le jeu d'instructions :

CoucheContenuQui peut comprendre
Langage de haut niveauint a = 10 + 5;Les humains
Langage assembleurMOV R1, #10 / ADD R3, R1, R2Les humains (avec formation)
Code machine0001 0001 0000 1010Le CPU

Pourquoi comprendre cette chaîne ?

  • En voyant une erreur de compilation, vous savez que l'erreur s'est produite à l'étape « langage de haut niveau → assembleur »
  • En voyant un crash à l'exécution, vous savez que le problème survient au stade d'exécution des instructions par le CPU
  • Pour l'optimisation des performances, vous comprenez quelles optimisations le compilateur effectue lors de la « traduction »
  • Lors du choix d'une architecture CPU (x86 vs ARM), vous savez que la différence réside dans « l'API du jeu d'instructions »

2.2 À quoi ressemble une instruction ?

Maintenant que nous savons que le code est traduit en instructions, la question suivante est : quelle est la structure interne d'une instruction ?

Chaque instruction machine est essentiellement une séquence de bits, mais avec un format interne strict. Les deux parties les plus importantes :

  • Code opération (Opcode) : indique au CPU « quoi faire » — addition ? saut ? lecture mémoire ?
  • Opérandes : indiquent au CPU « avec quoi » — quel registre ? quelle adresse mémoire ? quelle constante ?

Comme une phrase a une structure « verbe + objet », une instruction a une structure « opération + cible » :

Instruction :  ADD  R3, R1, R2
               ───  ──────────
               Opcode  Opérandes
               (addition) (R3 = R1 + R2)

Selon le nombre d'opérandes, les formats d'instructions se divisent en quatre types :

Machine Instruction FormatOpcode + operands = machine instruction
Opcode8 bits
Destination8 bits
Source 18 bits
Source 28 bits
Example instruction
01101100 00000001 00000010 00000011
Result goes to a new destination without changing sources
Three-address format
Three addresses identify the destination and two source operands separately. The result goes into the destination without modifying the sources.
Common examples
ADD R1, R2, R3R1 = R2 + R3
SUB R1, R2, R3R1 = R2 - R3
MUL R1, R2, R3R1 = R2 × R3
Common opcodes
00000000NOPNo operation
00000001MOVMove data
00000010ADDAddition
00000011SUBSubtraction
00000100MULMultiplication
00000101DIVDivision
00000110ANDLogical AND
00000111ORLogical OR
00001000NOTLogical NOT
00001001XORExclusive OR
00001010SHLShift left
00001011SHRShift right
00001100JMPUnconditional jump
00001101JEJump if equal
00001110JNEJump if not equal
00001111CALLCall subroutine
00010000RETReturn
00010001PUSHPush stack
00010010POPPop stack
00010011LOADLoad from memory
00010100STOREStore to memory
FormatStructureExempleCas d'utilisation
Zéro adresseOpcode uniquementRET (retour)Machine à pile, opérandes implicites au sommet
Une adresseOpcode + 1 adresseINC R1 (R1 + 1)Opérations à un opérande
Deux adressesOpcode + 2 adressesMOV R1, R2Le plus courant, transfert et opérations
Trois adressesOpcode + 3 adressesADD R3, R1, R2Ne détruit pas les opérandes sources

Pourquoi autant de formats ?

C'est un compromis entre espace et flexibilité. Les instructions à zéro adresse sont les plus courtes (économie de mémoire) mais nécessitent des opérations de pile supplémentaires ; les instructions à trois adresses sont les plus flexibles (les données sources sont préservées) mais occupent plus de bits. Différentes architectures CPU choisissent différentes combinaisons de formats d'instructions.

2.3 Comment le CPU trouve-t-il les données ? — Modes d'adressage

L'instruction dit au CPU « fais une addition », mais où sont les deux nombres à additionner ? Ils peuvent être écrits directement dans l'instruction, se trouver dans un registre, ou à une adresse mémoire. Les modes d'adressage sont les règles qui indiquent au CPU « où trouver les opérandes ».

Analogie quotidienne « retrouver quelqu'un » :

Mode d'adressageAnalogieExemple d'instructionExplication
Adressage immédiatLa personne est devant vousMOV R1, #100Donnée directement dans l'instruction, le plus rapide
Adressage par registreAppeler un collègue au poste interneMOV R1, R2Donnée dans un registre interne du CPU, très rapide
Adressage directConnaître le numéro de porte et s'y rendreMOV R1, [0x1000]Adresse mémoire dans l'instruction
Adressage indirectDemander à l'accueil « Dans quelle chambre est Dupont ? »MOV R1, [R2]Le registre contient une adresse, recherche supplémentaire nécessaire
Adressage indexé« Bâtiment 3 + 5ème étage » pour trouver la chambreMOV R1, [R2+10]Adresse de base + décalage, pour l'accès aux tableaux
Addressing ModesHow an instruction finds operand locations
Immediate addressingImmediate Addressing
Definition
The operand is embedded directly in the instruction and is immediately available.
Instruction format
MOV R1, #100
Example
MOV R1, #100 ; R1 = 100
Immediate value 100 is stored directly in the instruction, so no register or memory lookup is needed.
Execution process
1CPU reads immediate value 100 directly from the instruction
2Write the immediate value into target register R1
3Execution completes without extra memory access
Characteristics
SpeedFast
FlexibilityLow
Addressing mode comparison
Addressing modeFormatSpeedUse case
Immediate addressingMOV R1, #100FastestConstant assignment and initialization
Register addressingMOV R1, R2FastestRegister-to-register data transfer
Direct addressingMOV R1, [100]Relatively fastAccessing global variables
Indirect addressingMOV R1, [R2]Relatively fastPointers and array traversal
Indexed addressingMOV R1, [R2 + R3]Relatively fastArray access and loops
Based addressingMOV R1, [R2 + 100]Relatively fastStruct fields and function parameters
Relative addressingJMP LABELFastestLoops and conditional branches

Pourquoi autant de modes d'adressage ?

Différents scénarios nécessitent différentes stratégies de « recherche de données » :

  • Affectation de constante (x = 100) → adressage immédiat, la donnée est dans l'instruction
  • Opération sur variable (a + b) → adressage par registre, la donnée est déjà chargée dans un registre
  • Accès à un tableau (arr[i]) → adressage indexé, adresse de base + décalage d'index
  • Opération sur pointeur (*ptr) → adressage indirect, le registre contient une adresse

Quand vous écrivez arr[i], vous ne pensez pas aux modes d'adressage, mais le compilateur choisit automatiquement le mode le plus approprié.

2.4 La liste des capacités du CPU — Classification des instructions

Maintenant que nous connaissons les formats d'instructions et les modes d'adressage, la dernière question : que peut faire réellement le CPU ?

Toutes les instructions peuvent être classées en six grandes catégories, couvrant tout ce qu'un ordinateur peut faire :

TypeCe qu'il faitInstructions représentativesCorrespond à votre code
Transfert de donnéesDéplacer des donnéesMOV, LOAD, STORElet x = y, passage de paramètres
Opérations arithmétiquesCalculs de baseADD, SUB, MUL, DIVa + b, count++
Opérations logiquesManipulation de bitsAND, OR, NOT, XORflags & 0xFF, vérification de permissions
Opérations de décalageDécalage gauche/droiteSHL, SHRx << 2 (équivalent à multiplier par 4)
Transfert de contrôleSaut et appelJMP, CALL, RETif, for, appel de fonction
Entrée/SortieCommunication avec les périphériquesIN, OUTLire le clavier, écrire à l'écran

Une observation clé

Tout le code que vous écrivez — aussi complexe soit la logique métier, aussi spectaculaire soit l'animation UI — sera finalement décomposé en combinaisons de ces six opérations de base. L'« intelligence » du CPU ne réside pas dans sa capacité à faire des choses complexes, mais dans sa capacité à exécuter ces opérations simples à une vitesse de plusieurs milliards par seconde.

2.5 Deux philosophies de conception : CISC vs RISC

La conception du jeu d'instructions comporte une divergence fondamentale : rendre chaque instruction aussi puissante que possible, ou aussi simple que possible ?

Cette divergence a créé deux camps, affectant directement chaque appareil que vous utilisez aujourd'hui :

⚔️ Two Design Philosophies: CISC vs RISC

Click a comparison dimension to see the core differences between instruction set styles

Thousands of complex instructions
Instruction count
Tens to hundreds of streamlined instructions
One instruction can do many things
Single instruction
One instruction does one thing
Variable length (1-15 bytes)
Instruction length
Fixed length, often 4 bytes
Complex instructions take multiple cycles
Execution speed
Most instructions complete in one cycle
Higher
Power use
Lower
Harder to optimize because lengths vary
Pipeline
Easier to optimize because instructions are regular
Lighter because hardware does more
Compiler burden
Heavier because software optimizes more
🌍 Real-world choices
💻 Your computerx86 (CISC)Compatible with decades of software
📱 Your phoneARM (RISC)Low power consumption and longer battery life
🍎 Apple SiliconARM (RISC)High performance per watt reshaped laptops
🔬 RISC-V boardRISC-V (RISC)Open and royalty-free for IoT and education

Une analogie pour comprendre :

  • CISC comme un couteau suisse : un couteau intégrant ciseaux, ouvre-bouteille, tournevis... beaucoup de fonctions, mais aucune n'est forcément optimale
  • RISC comme une boîte à outils professionnelle : chaque outil ne fait qu'une chose, mais la fait vite et bien

Pourquoi votre smartphone utilise ARM et votre PC x86 ?

  • x86 (CISC) domine le marché des PC et serveurs depuis 40 ans, accumulant un vaste écosystème logiciel. Changer d'architecture signifie recompiler tous les logiciels
  • ARM (RISC) domine les appareils mobiles grâce à sa faible consommation. Les batteries de téléphones sont petites, chaque milliwatt compte
  • Apple Silicon a prouvé que RISC peut aussi offrir de hautes performances — la série M dépasse simultanément les concurrents x86 en performance et en consommation
  • RISC-V est une architecture RISC open source en croissance rapide dans les domaines de l'IoT, de l'éducation et des puces IA

Résumé : Le jeu d'instructions est le pont entre le logiciel et le hardware. Votre code est traduit en instructions par le compilateur ; les instructions indiquent au CPU via l'opcode et les opérandes quoi faire et avec quoi ; le mode d'adressage détermine d'où proviennent les données. Différentes conceptions de jeux d'instructions (CISC/RISC) déterminent les caractéristiques de performance et les scénarios d'utilisation du CPU.

Nous connaissons maintenant la « structure statique » des instructions — leur apparence et leurs types. La question suivante est : comment le CPU exécute-t-il ces instructions étape par étape en interne ? C'est le rôle de l'unité de commande.


3. Unité de commande : le « centre de commandement » du CPU

3.1 Composition de l'unité de commande

L'unité de commande est le « cerveau » du CPU, chargée de coordonner tous les composants selon les exigences des instructions :

How the Controller WorksHow control signals coordinate CPU components
Control Unit CU
Instruction Register IR
Instruction Decoder
Timing Generator
Output control signals:
PC→MAR
MEM→MDR
MDR→IR
IR→ID
ALU→ACC
ACC→MDR
PC
Program Counter
MAR
Address Register
Memory
Main Memory
MDR
Data Register
IR
Instruction Register
ID
Decoder
ALU
Arithmetic Logic Unit
ACC
Accumulator
Current microinstruction
Core controller concepts
Control signals:Electrical signals emitted by the controller to control each component on the data path.
Timing:CPU operations advance by clock ticks; each tick performs specific micro-operations.
Hardwired vs microprogrammed:Hardwired controllers are fast but complex; microprogrammed controllers are flexible but slightly slower.
ComposantFonction
Compteur ordinal (PC)Stocke l'adresse de la prochaine instruction
Registre d'instruction (IR)Stocke l'instruction en cours d'exécution
Décodeur d'instructionsAnalyse l'opcode et les opérandes de l'instruction
Générateur de séquenceProduit les signaux de tempo pour contrôler le timing
Générateur de séquence de micro-opérationsProduit la série de signaux de contrôle nécessaires à l'exécution de l'instruction
Program Status Word (PSW)The CPU status indicators
CF
0
Carry flag
PF
0
Parity flag
AF
0
Auxiliary carry
ZF
0
Zero flag
SF
0
Sign flag
TF
0
Trap flag
IF
1
Interrupt flag
DF
0
Direction flag
OF
0
Overflow flag
How operation results affect flags
Result:
0
CF:0PF:0AF:0ZF:0SF:0TF:0IF:1DF:0OF:0
Typical flag uses
🔀
Conditional jumps
JE, JNE, JG, JL and similar instructions decide jumps based on ZF, SF, and OF.
Arithmetic
Multi-word arithmetic uses CF for carry and OF for signed overflow.
🔄
Loop control
Loop instructions often use ZF to detect the loop ending condition.

3.2 Cycle d'instruction

Pour exécuter une instruction, le CPU traverse un cycle d'instruction complet, comprenant généralement :

  1. Cycle d'extraction (Fetch) : Lecture de l'instruction depuis la mémoire vers l'IR
  2. Cycle de décodage (Decode) : Analyse du sens de l'instruction
  3. Cycle d'exécution (Execute) : Exécution de l'opération
  4. Cycle d'accès mémoire (Memory Access) : Accès à la mémoire si nécessaire
  5. Cycle d'écriture (Write Back) : Écriture du résultat dans un registre ou la mémoire

3.3 Micro-opérations

Les micro-opérations sont les opérations les plus élémentaires pilotées par des signaux de contrôle. Par exemple, la phase « d'extraction » peut être décomposée en micro-opérations suivantes :

TempoMicro-opérationSignaux de contrôle
T1PC → MARPCout, MARin
T2MEM → MDRMEMout, MDRin
T3MDR → IRMDRout, IRin
T4PC + 1 → PCPC+1, PCin

3.4 Unité de commande câblée vs microprogrammée

CaractéristiqueUnité câbléeUnité microprogrammée
ImplémentationCircuit logique combinatoireSéquence de micro-instructions (firmware)
VitesseRapideLégèrement plus lent
Complexité de conceptionComplexePlus simple
FlexibilitéFaible (modification = reconception)Élevée (modification du microprogramme)
Application typiqueProcesseurs RISCPremiers processeurs CISC

4. Hiérarchie de stockage : pourquoi le cache est-il nécessaire ?

4.1 Structure de la hiérarchie de stockage

Les dispositifs de stockage de l'ordinateur forment une structure pyramidale :

Storage HierarchyFrom fastest to slowest, smallest to largest
Registers
Fastest
Smallest (KB)
Cache
Very fast
Small (MB)
Memory
Fast
Medium (GB)
Disk
Slow
Large (TB)
Network/Cloud
Slowest
Unlimited
Detailed comparison
Storage levelAccess timeTypical capacityCost
Registers< 1 nsA few KBHighest
L1 cache~1 ns64 KBVery high
L2 cache~3 ns256 KBHigh
L3 cache~10 ns8 MBMedium
Memory~100 ns8-32 GBMedium-low
SSD~100 μs256 GB-2 TBLow
HDD~10 ms1-10 TBLowest
Locality principle
Programs tend to access recently accessed locations (temporal locality) and nearby locations (spatial locality)
By exploiting locality, caches can significantly improve performance.
NiveauType de stockageTemps d'accèsCapacité typiquePosition
RegistresSRAM< 1 nsQuelques KoÀ l'intérieur du CPU
Cache L1SRAM~ 1 ns32-64 KoPrès du cœur du CPU
Cache L2SRAM~ 3-10 ns256 Ko - 1 MoDans la puce CPU
Cache L3SRAM~ 10-20 ns2-16 MoDans la puce CPU / partagé
Mémoire principale (RAM)DRAM~ 50-100 ns8-64 GoSur la carte mère
SSDFlash~ 10-100 μs256 Go - 2 ToSur la carte mère
HDDDisque magnétique~ 5-10 ms1-10 ToDans le boîtier

Analogie des différences de vitesse

Si l'accès du CPU au cache L1 correspond à prendre une feuille de papier sur son bureau :

  • Accès à la mémoire → prendre l'ascenseur pour aller acheter du papier au magasin en bas
  • Accès au SSD → conduire dans une autre ville pour acheter du papier
  • Accès au HDD → prendre l'avion pour un autre pays pour acheter du papier

Les différences de vitesse peuvent atteindre plusieurs millions de fois !

4.2 Principe du cache

Le Cache est un stockage rapide entre le CPU et la mémoire principale. Son principe fondamental repose sur deux principes de localité :

Principes de localité

  • Localité temporelle : si une donnée vient d'être accédée, elle sera probablement accédée à nouveau bientôt
  • Localité spatiale : si une donnée est accédée, les données voisines le seront probablement aussi bientôt

Fonctionnement du cache

  1. Succès (Hit) : les données demandées par le CPU sont dans le cache — lecture directe
  2. Échec (Miss) : les données ne sont pas dans le cache — chargement depuis la mémoire
Taux de succès = Nombre de succès / Total des accès
Temps d'accès moyen = Taux de succès × Temps cache + (1 - Taux de succès) × Temps mémoire
Cache PrinciplesThe bridge between CPU and memory
CPU core
L1 cache
64 KB~1ns
L2 cache
256 KB~5ns
L3 cache
8 MB~15ns
Main memory
16 GB~100ns
Cache operation demo
Operation log
Why does cache work? Locality principle
⏱️
Temporal locality
Recently accessed data is likely to be accessed again.
Variables inside loops
📦
Spatial locality
After one item is accessed, nearby data is likely to be accessed.
Array traversal and sequential execution
Cache mapping methods
Each memory block maps to exactly one cache line.
SpeedFastest
Hit rateLower
Implementation complexityLowest
Hit-rate calculation
Average access time = H × Tc + (1-H) × Tm
2 ns
100 ns
90%
Average access time = 12 ns

4.3 Méthodes de mappage du cache

MéthodePrincipeAvantageInconvénient
Mappage directChaque bloc mémoire ne peut aller qu'à une position fixeSimple et rapideTaux de conflit élevé
Associatif par ensembleChaque bloc peut aller dans N positions (N voies)Équilibre vitesse/taux de succèsImplémentation plus complexe
Pleinement associatifPosition quelconqueTaux de conflit le plus basDifficile à implémenter (comparaison de tous les tags)

4.4 Mémoire virtuelle

La mémoire virtuelle est une abstraction importante fournie par le système d'exploitation :

  • Chaque processus croit disposer d'un espace d'adressage virtuel complet
  • Le système d'exploitation traduit les adresses virtuelles en adresses physiques
  • Les pages peu utilisées peuvent être échangées vers le disque (espace de swap)

Analogie de la mémoire virtuelle

Imaginez la mémoire virtuelle comme la gestion des chambres d'hôtel :

  • Vous (le processus) croyez que tout l'immeuble est à vous
  • En réalité, l'hôtel (l'OS) ne vous alloue que les chambres actuellement nécessaires
  • Les chambres inoccupées sont « échangées » vers l'entrepôt (disque)
  • Les chambres nécessaires peuvent être « rapatriées » à tout moment

5. Bus et E/S : les « vaisseaux sanguins » de l'ordinateur

5.1 Bus système

Le Bus est le canal de données reliant les composants de l'ordinateur :

Computer Bus SystemAddress bus, data bus, and control bus
CPU
Control unit
ALU
Address bus32 bits
Data bus64 bits
Control busControl signal
Main memory
0x0
0x1
0x2
0x3
0x4
0x5
0x6
0x7
Operation flow
Bus concepts
Address bus
CPU sends memory addresses over a one-way path.
Data bus
Transfers actual data in both directions.
Control bus
Transfers read/write and other control signals.
Type de busFonctionDirectionLargeur typique
Bus d'adressesTransmet les adresses mémoireUnidirectionnel (CPU → mémoire)32 bits / 64 bits
Bus de donnéesTransmet les donnéesBidirectionnel32 bits / 64 bits
Bus de contrôleTransmet les signaux de contrôleBidirectionnelPlusieurs lignes de signal

5.2 Arbitrage de bus

Quand plusieurs appareils demandent simultanément l'utilisation du bus, un mécanisme d'arbitrage décide qui l'utilisera en premier :

Méthode d'arbitrageDescription
Arbitrage centraliséUn arbitre central prend la décision
Arbitrage distribuéLes appareils négocient entre eux

5.3 Méthodes d'accès aux périphériques E/S

MéthodePrincipeAvantageInconvénient
Scrutation programmée (Polling)Le CPU vérifie cycliquement l'état des E/SSimpleFaible utilisation du CPU
InterruptionLes E/S notifient le CPU après achèvementLe CPU peut travailler en parallèleSurcoût du traitement des interruptions
DMALe périphérique E/S accède directement à la mémoireLe CPU n'est pas impliquéNécessite un contrôleur DMA
I/O Method ComparisonProgrammed I/O · Interrupt-driven I/O · DMA
Programmed I/OProgrammed I/O
Workflow
1CPU polls the I/O device status
2Device busy? Keep waiting
3Device ready, send read/write command
4CPU reads or writes data byte by byte
5Check whether transfer is complete
6If incomplete, keep polling
CPU involvementHigh
SpeedSlow
ComplexityLow
Three I/O methods compared
FeatureProgrammed I/OInterrupt-driven I/ODMA
CPU involvementInvolved throughoutOnly handles interruptsAlmost uninvolved
Data transferCPU moves each byteCPU moves each wordDevice transfers directly to memory
ProsSimple and flexible controlHigh CPU efficiencyCPU is fully freed
ConsLow CPU utilizationInterrupt overheadComplex hardware
Best forSimple or low-speed devicesLow/medium-speed devicesHigh-speed bulk transfer

5.4 Principe du DMA

Le DMA (Direct Memory Access) permet aux périphériques E/S d'échanger directement des données avec la mémoire :

How Networks ConnectThe complete path from sending to receiving
💻
Sender
192.168.1.100
📧
Mail app
📧
Application layer
Mail software creates the message content
🔐
Transport layer
TCP adds port numbers and sequence numbers
🌐
Network layer
IP adds source and destination addresses
🔌
Data link layer
Ethernet adds MAC addresses
Physical layer
Convert to electrical signals and send
🖥️
Receiver
192.168.1.200
📧
Mail app
Data encapsulation process
7Application layer
Message content: "Hello!"
6Presentation layer
Encoding: UTF-8
5Session layer
Session ID: sess_123
4Transport layer
TCP header: port 25
3Network layer
IP header: 192.168.1.100 → 192.168.1.200
2Data link layer
Ethernet frame: MAC address
1Physical layer
Bitstream: 01010101...
Network protocol stack (OSI model)
Sender
Application layer (HTTP, SMTP)
Transport layer (TCP, UDP)
Network layer (IP)
Data link layer (Ethernet)
Physical layer (electrical signals)
Receiver
Application layer (HTTP, SMTP)
Transport layer (TCP, UDP)
Network layer (IP)
Data link layer (Ethernet)
Physical layer (electrical signals)
  • Sans DMA : Le CPU participe à tout le transfert de données et ne peut rien faire d'autre
  • Avec DMA : Le CPU indique au contrôleur DMA « d'où à où, combien transférer », puis va exécuter d'autres tâches ; le DMA notifie le CPU une fois terminé

Analogie du DMA

C'est comme commander en livraison :

  • Sans DMA : Vous allez vous-même au supermarché, faites les courses, rentrez, lavez et cuisinez (participation totale)
  • Avec DMA : Vous commandez par téléphone et le livreur dépose tout directement dans la cuisine (quelqu'un d'autre s'en charge, vous n'avez qu'à « réceptionner »)

5.5 Mécanisme d'interruption

Les interruptions sont un mécanisme très important dans le système informatique :

  1. Le périphérique E/S envoie une requête d'interruption au CPU après achèvement
  2. Le CPU termine l'instruction en cours, puis répond à l'interruption
  3. Le CPU sauvegarde son état et branche vers le programme de traitement d'interruption
  4. Après traitement, l'état est restauré et l'exécution reprend

6. Optimisation des performances du CPU : technique de pipeline

6.1 Pipeline d'instructions

Le pipeline d'instructions est une technique de parallélisme maximisant l'efficacité du CPU :

CPU Instruction PipelineFive stages: Fetch → Decode → Execute → Memory → Write Back
Fetch(IF)
Decode(ID)
Execute(EX)
Memory(MEM)
Write Back(WB)
ADD R1,R2,R3
SUB R4,R1,R5
LOAD R6,[R4]
STORE R6,[R7]
AND R8,R1,R6
Total cycles0
Completed instructions0
CPI0
Pipeline principle

Sequential execution: each instruction finishes before the next starts, so N instructions require N × 5 cycles.

Pipeline execution: multiple instructions occupy different stages at once; ideally CPI ≈ 1.

Principe de fonctionnement du pipeline

Exécution séquentielle (5 instructions, 15 cycles) :
Instruction1 : IF→ID→EX→MEM→WB
Instruction2 :            IF→ID→EX→MEM→WB
Instruction3 :                         IF→ID→EX→MEM→WB
...

Exécution en pipeline (5 instructions, 9 cycles) :
Instruction1 : IF→ID→EX→MEM→WB
Instruction2 :    IF→ID→EX→MEM→WB
Instruction3 :       IF→ID→EX→MEM→WB
...

Idéalement, pour N instructions, le CPI (cycles par instruction) ≈ 1

6.2 Aléas du pipeline

Le pipeline peut améliorer les performances mais introduit aussi des problèmes d'aléas (Hazards) :

TypeCauseSolution
Aléa structurelConflit de ressources hardwareAjouter du hardware / décaler l'exécution
Aléa de donnéesInstruction ultérieure nécessite le résultat d'une précédenteTransmission de données / bulles / ordonnancement
Aléa de contrôleInstruction de branchement modifie le flux d'exécutionSlot de délai / prédiction de branchement

7. Résumé : comment l'ordinateur « fonctionne-t-il » ?

Relions l'ensemble du processus avec la terminologie professionnelle :

Après le lancement du programme, le système d'exploitation charge le fichier exécutable depuis le disque vers la mémoire. L'unité d'extraction du CPU (IF) lit l'instruction depuis la mémoire via le bus d'adresses et la place dans le registre d'instruction (IR). L'unité de commande décode l'instruction (ID), identifie le type d'opération et génère les signaux de contrôle appropriés. L'unité d'exécution (EX) effectue l'opération arithmétique ou logique ; si un accès mémoire est nécessaire, elle accède à la mémoire via le bus de données (MEM) ; enfin, le résultat est écrit (WB) dans un registre ou la mémoire. L'ensemble du processus est cadencé par l'horloge, et la séquence de micro-opérations générée par l'unité de commande coordonne le travail ordonné de tous les composants.


Pour aller plus loin

ThèmeContenu recommandé
Architecture des calculateurs« Computer Organization and Design: The Hardware/Software Interface » - Patterson & Hennessy
Microarchitecture CPU« Computer Systems: A Programmer's Perspective » - Bryant & O'Hallaron
Architecture de jeu d'instructionsManuel de référence ARMv8, Manuel Intel x64
Principes du cacheProtocole de cohérence de cache (MESI), Politiques d'écriture du cache
Systèmes d'exploitationChapitre suivant « Systèmes d'exploitation »

Prochaines étapes

Vous avez maintenant maîtrisé les connaissances professionnelles de l'architecture des ordinateurs. Vous pouvez continuer à apprendre :