Fondamentaux de la Représentation des Données
Au niveau matériel, l'ordinateur traite exclusivement des signaux numériques. La compréhension de l'organisation informatique commence par la manière dont les informations sont codées en binaire. Chaque type de donnée (entier, flottant, caractère) suit des standards spécifiques qui déterminent sa précision et sa plage de valeurs.
Conversion et Codage
Le passage entre le binaire (base 2) et l'hexadécimal (base 16) est une opération routinière en architecture système. L'hexadécimal simplifie la lecture humaine des adresses mémoire et des opcodes, car quatre bits (un quartet) correspondent exactement à un chiffre hexadécimal. Cette structuration facilite le débogage de bas niveau.
Précision et Erreurs de Calcul
La représentation des nombres à virgule flottante, généralement régie par la norme IEEE 754, introduit inévitablement des erreurs d'arrondi. Ces imprécisions proviennent de l'impossibilité de représenter certaines fractions décimales de manière exacte en binaire. Pour un ingénieur, anticiper ces erreurs est crucial lors de la conception d'algorithmes numériques de haute précision.
Conception de l'Unité Arithmétique et Logique (UAL)
L'UAL, ou Arithmetic and Logic Unit (ALU), est le moteur de calcul du processeur. Elle effectue les opérations fondamentales demandées par les instructions logicielles.
Architecture Interne de l'UAL
Une UAL performante repose sur plusieurs composants clés :
- Additionneurs : Évolution des additionneurs série vers des additionneurs à anticipation de retenue (Carry Look-Ahead) pour réduire le temps de propagation.
- Multiplicateurs : Utilisation d'algorithmes comme celui de Booth pour optimiser les cycles d'horloge.
- Unités Logiques : Portes élémentaires (ET, OU, NON, XOR) traitant les données bit à bit.
Implémentation Matérielle (Exemple en Verilog)
Voici une modélisation simplifiée d'une UAL 8 bits utilisant une structure de contrôle modifiée :
module calculatrice_alu(
input [7:0] operande_x,
input [7:0] operande_y,
input [2:0] selecteur_op,
output reg [7:0] sortie_val,
output flag_zero
);
always @(*) begin
case(selecteur_op)
3'b000: sortie_val = operande_x & operande_y; // ET Logique
3'b001: sortie_val = operande_x | operande_y; // OU Logique
3'b010: sortie_val = operande_x + operande_y; // Addition
3'b011: sortie_val = operande_x - operande_y; // Soustraction
3'b100: sortie_val = ~operande_x; // Complément à un
default: sortie_val = 8'h00;
endcase
end
assign flag_zero = (sortie_val == 8'b0);
endmodule
Hiérarchie et Gestion de la Mémoire
Le système de stockage est conçu pour combler le fossé de performance entre la vitesse du processeur et le temps d'accès aux données de masse.
Segmentation et Pagination
La gestion de la mémoire moderne utilise deux techniques principales :
- La Pagination : Découpage de la mémoire physique en cadres (frames) de taille fixe, éliminant la fragmentation externe.
- La Segmentation : Division logique basée sur la structure du programme (code, données, pile), facilitant la protection et le partage de la mémoire.
Mémoire Virtuelle et Remplacement de Pages
La mémoire virtuelle permet d'exécuter des programmes dont la taille dépasse la RAM physique disponible. Lorsqu'un "défaut de page" survient, le système doit choisir quelle page évincer. Les algorithmes courants incluent :
- LRU (Least Recently Used) : Remplace la page qui n'a pas été accédée depuis le plus longtemps.
- FIFO (First-In, First-Out) : Remplace la page la plus ancienne.
- Algorithme de l'Horloge : Une approximation efficace de LRU avec un overhead minimal.
Jeu d'Instructions et Modes d'Adressage
L'Architecture du Jeu d'Instructions (ISA) définit les opérations que le CPU peut exécuter. On distingue principalement les acrhitectures CISC (instructions complexes, longueur varible) et RISC (instructions simples, longueur fixe, optimisées pour le pipeline).
Typologie des Modes d'Adressage
Les modes d'adressage déterminent comment le processeur localise ses opérandes :
- Adressage Immédiat : La valeur est incluse dans l'instruction.
- Adressage Indirect : L'instruction contient l'adresse d'un pointeur vers la donnée.
- Adressage Indexé : Utilise un registre de base et un offset (très commun pour parcourir des tableaux).
; Exemple d'adressage indexé en assembleur (syntaxe générique)
LOAD R1, [R2 + 8] ; Charge dans R1 la valeur située à l'adresse (contenu de R2 + 8)
ADD R1, #10 ; Addition immédiate : R1 = R1 + 10
Optimisation par Pipeline et Gestion des Aléas
Le pipeline augmente le débit d'instructions en superposant les étapes d'exécution (Récupération, Décodage, Exécution, Accès Mémoire, Écriture).
Conflits de Pipeline (Hazards)
- Aléas Structurels : Manque de ressources matérielles pour exécuter deux instructions simultanément.
- Aléas de Données : Une instruction dépend du résultat d'une instruction précédente non encore finalisée. Solution : Forwarding (court-circuitage).
- Aléas de Contrôle : Causés par les branchements. Solution : Unité de prédiction de branchement.
Mécanismes d'Entrées/Sorties (E/S)
Le sous-système d'E/S gère la communication entre le processeur et le monde extérieur via des contrôleurs dédiés.
Modes de Transfert de Données
- E/S Programmées (Polling) : Le CPU interroge continuellement le périphérique. Simple mais inefficace car monopolise le CPU.
- Interruptions : Le périphérique signale au CPU quand il est prêt. Permet au processeur de réaliser d'autres tâches en attendant.
- DMA (Direct Memory Access) : Permet au périphérique de transférer des blocs de données directement vers la mémoire sans intervention du CPU, excepté pour initier et terminer le transfert.