Architecture et technologie des ordinateurs II

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes d’exploitation
Advertisements

GEF 435 Principes des systèmes dexploitation Le matériel des ordinateurs Revue Pt II (Tanenbaum 1.4)
Électronique de base du processeur
Le Concept du programme enregistré
Architecture de machines Le microprocesseur
Fonctionnement de l'unité centrale (rappels ? de 1ère Année)
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
GEF 435 Principes des systèmes d’exploitation
Plan du cours : 2ème Partie
Interface Matériel/logiciel
Interface Matériel/logiciel
Objectifs Nous allons concevoir une mise en œuvre contenant un noyau de jeu d’instructions. Nous verrons comment l’architecture de jeu d’instructions.
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Architecture Systèmes
Les microprocesseurs A. Objectifs de la séquence:
Architecture de machines Le microprocesseur
Système d’exploitation : Assembleur
Système d’exploitation : Assembleur
Chapitre 8 : L’architecture de base des ordinateurs
ARCHITECTURE GLOBALE CAPTAGE Traitement DES des données GRANDEURS
Cours #9 Conception et réalisation de processeurs à usage général
Introduction : Compilation et Traduction
Architecture et technologie des ordinateurs II
Architecture de base d’un ordinateur
Gestion des Périphériques
Système d’exploitation : Assembleur
Python La structure itérative
Structure de la famille de DSP Motorola 56300
Architecture des Ordinateurs
Fonctionnement des Unités de Traitement
Algorithmique et Programmation
Arithmétique des “computers”
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
Architecture Fondamentale des Microprocesseurs
LES SYSTEMES AUTOMATISES
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Systèmes Pipeline – opérations multicycles Nous avons vu jusquà maintenant comment faire un.
Parallélisme des instructions
Parallélisme des instructions
Architecture et technologie des ordinateurs II
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
L'Unité centrale (CPU) Le CPU doit être rapide (mesuré en temps de CPU) UNITE DE CONTROLE Générer les signaux de control/temps Contrôler le décodage/exécution.
Lycée ELKHAWARIZMI De SAFI
Processeurs et chemins des données
Architecture Des Ordinateurs Microprocesseur Et Mémoire
Chapitre 9 : La machine MIASM
Cours de Structure et Technologie des composants d’ordinateurs
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Encodage du jeu d’instructions.
Un survol du language C.
Architecture d'un ordinateur
3-Présentation d’un µP simple
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Modélisation VHDL de.
Les Machines RAM.
Architecture et technologie des ordinateurs II
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. tél Fax Cours Architecture des.
Cours LCS N°4 Présenté par Mr: LALLALI
INFOR 101 Chapitre 5 Marianne Morris.
Architecture et technologie des ordinateurs II
UE MAREP Cours 12 : Révisions
Architecture et technologie des ordinateurs II
UE MAREP Cours 5 : Structures de contrôle représentées en assembleur
Patricia Renault UPMC 2005/2006
Représentation digitale des données Trois formats de base: 1) Décimale: base 10 (Une constante i.e dimension d ’1 vecteur) 2) Binaire: base 2 ( Mask, set/reset.
Architecture et technologie des ordinateurs II
Chapitre 3 L’accès aux données.
Architecture des ordinateurs
Architecture d’un ordinateur
Formations Système Embarqué & Informatique Industrielle
ARCHITECTURE MATERIELLE D’UN SYSTEME A MICROPROCESSEUR
Transcription de la présentation:

Architecture et technologie des ordinateurs II Instructions Types d’instructions Séquencement Contrôle MÉMOIRE PRINCIPALE IO IO IO BUS SYSTÈME CPU Cache Instructions Unité de Contrôle Unité de Traitement Cache Données Décodeur ALU Unité Flottante PC Registres G. Tempesti 1

Contrôle de l’unité de traitement Architecture et technologie des ordinateurs II Contrôle de l’unité de traitement OUTPORT INPORT UNITÉ DE CONTRÔLE OEN OEN SEL SEL 1 0 3 AL[2:0] I0 I1 AL2 AL1 AL0 3 SH[2:0] 3 Z RA[2:0] Z≠0 3 RB[2:0] SH2 SH1 SH0 SHIFTER WEN 3 WA[2:0] 3 RA 3 R0 R1 R2 R3 R4 R5 R6 R7 RB WEN Z≠0 3 WA OEN SEL AL[2:0] SH[2:0] WEN RA[2:0] RB[2:0] WA[2:0] OPÉRATION OPÉRANDES G. Tempesti 2

Contrôle par instructions - Décodage SLC CK Opcode Opérandes n BASCULES Fanions RAM Contrôle Opérandes Instruction Adresse 0:0|1 4:5 1:2 5:6 2:3 6:7|4 3:4 7:0 0:data  inport 1:ocount  0 2:mask  1 3:while data ≠ 0 4:tempdata AND mask 5:ocountocount+temp 6:data  data >> 1 end while 7:outport  ocount 0:R1 4:R1,R3,R4 1:R0,R2 5:R2,R4,R2 2:R0,R3 6:R1,R1 3: 7:R2 0:AIN 4: CA&B 1:BA 5: CA+B 2:BA+1 6: BA>>1 3:NOP 7: OUTA Chaque instruction doit permettre de générer les bits de contrôle pour l’unité de traitement ainsi que l’adresse de l’instruction suivante.

Format des instructions: exemple Architecture et technologie des ordinateurs II Format des instructions: exemple Le codage des instructions est, en général, arbitraire: OPCODE OPER1 OPER2 OPER3 LOAD ADR, R1 0 0 0 Adresse[5:0] 0 0 1 MOVE R0, R2 0 0 1 0 0 0 0 1 0 ø ø ø INC R0, R3 0 1 0 0 0 0 0 1 1 ø ø ø BRA ADR, COND 0 1 1 Adresse[5:0] data=0 AND R1, R3, R4 1 0 0 0 0 1 0 1 1 1 0 0 ADD R2, R4, R2 1 0 1 0 1 0 1 0 0 0 1 0 SHR R1, R1 1 1 0 0 0 1 0 0 1 ø ø ø BRA ADR, COND 0 1 1 Adresse[5:0] vrai STORE ADR, R2 1 1 1 Adresse[5:0] 0 1 0 G. Tempesti 4

Langage de haut-niveau Compilation program toto; var A, B, C : array [1...1000] of integer; i : integer begin ... for i:=1 to 1000 do C[i] := A[i] + B[i]; end Algorithme  Langage de haut-niveau Langage machine = jeu d’instructions ... MOVE.L #2001,A0 MOVE.L #3001,A1 MOVE.L #4001,A2 START: ABCD -(A0),-(A1) MOVE.B (A1),(A2) TEST: CMPA #1001, A0 BNE START COMPILATEUR

Opération du processeur - Opcodes Architecture et technologie des ordinateurs II Opération du processeur - Opcodes Un processeur non-spécialisé (general-purpose) doit avoir un jeu d’instructions qui soit: Complet: il doit pouvoir exécuter toute fonction calculable; Efficace: il doit exécuter rapidement les fonctions les plus utilisées; Régulier: il doit contenir les fonctions attendues (p.ex., s’il y a un décalage à gauche, il doit y avoir un décalage à droite); Compatible?: si nécessaire, il doit être compatible avec le jeu d’une machine existante. Tout algorithme est réalisé par une séquence (série) d’instructions. G. Tempesti 6

Boucle de traitement Début Les instructions sont stockées en mémoire, comme n’importe quelle donnée. À chaque instruction correspond donc un adresse. Chaque instruction est chargée dans le processeur, décodée pour déterminer sa fonction et les bits de contrôle pour l’unité de traitement sont générés en conséquence. L’unité de traitement effectue l’opération désirée sur les données. Si une interruption est en attente, elle a normalement précédence sur les instructions, et elle est donc traitée immédiatement. Instructions en attente? NON OUI Chargement Décodage Interruptions en attente? NON OUI Traitement

Types d’instructions - Opcode Architecture et technologie des ordinateurs II Types d’instructions - Opcode Transfert de données Transferts d’informations entre positions mémoire (interne ou externe au processeur) Arithmétique Opérations sur données numériques Logique Opérations booléennes et autres Entrées/sorties (I/O) Transferts d’informations entre le processeur ou la RAM et les unités externes Contrôle Instructions qui modifient le flot d’instructions G. Tempesti 8

Format des instructions: exemple Architecture et technologie des ordinateurs II Format des instructions: exemple data  inport = LOAD ADR, R1 [T] ocount  0 = MOVE R0, R2 [T] mask  1 = INC R0, R3 [A] while data ≠ 0 = BRA COND, ADR [C] temp  data AND mask = AND R1, R3, R4 [L] ocount  ocount + temp = ADD R2, R4, R2 [A] data  data >> 1 = SHR R1, R1 [L] end while = BRA 1, ADR [C] outport  ocount = STORE ADR, R2 [T] G. Tempesti 9

Format des instructions Architecture et technologie des ordinateurs II Format des instructions Opcode Conditions Opérandes (3) Prochaine(s) instruction(s) Beaucoup d’information! P.ex., une architecture avec 256 instructions, 16 fanions, 64 registres et un bus (adresse) de 32 bits aurait besoin, même si tous les opérandes sont des registres (ce qui n’est pas le cas), de 8 + 4 + 6x3 + 32x2 = 94 bits! Une solution est de coder les instructions sur plusieurs mots mémoire. Ce fut une technique très utilisée dans le passé (processeurs 8 et 16 bits) et le reste aujourd’hui pour certains types d’instructions. Elle introduit cependant beaucoup de délai (plusieurs coups d’horloge par instruction, décodage complexe). Des simplifications sont nécessaires! G. Tempesti 10

Format des instructions - Simplifications Première simplification: chaque type d’instruction nécessite des informations différentes. Transferts de données: 78 bits (un opérande peut être une adresse) Opérations arithmétiques et logiques: 58 bits (que des registres) Opérations d’entrée/sortie: 78 bits (un opérande peut être une adresse) Instructions de contrôle: 76 bits Opcode Opérandes (2) Prochaine instruction Opcode Opérandes (3) Prochaine instruction Opcode Opérandes (2) Prochaine instruction Opcode Conditions Prochaine(s) instruction(s)

Format des instructions - Simplifications Deuxième simplification: par défaut, on peut définir la prochaine instruction comme étant l’instruction suivante en mémoire. SL CK Opcode Opérandes n BASCULES Fanions RAM Contrôle SLC Opérandes Instruction Adresse 0:+1|0 4:+1 1:+1 5:+1 2:+1 6:+1|4 3:+1 7:0 0:data  inport 1:ocount  0 2:mask  1 3:while data ≠ 0 4:tempdata AND mask 5:ocountocount+temp 6:data  data >> 1 end while 7:outport  ocount

Séquenceur PC +1 SLC RAM SLC Opcode Opérandes n BASCULES Fanions CK Opcode Opérandes n BASCULES Fanions RAM Contrôle SLC Opérandes Instruction Adresse Adresse PC +1 CK Opérande Opcode SLC Condition Fanions

Format des instructions - Simplifications Transferts de données: 46 bits (un opérande peut être une adresse) Opérations arithmétiques et logiques: 26 bits (que des registres) Opérations d’entrée/sortie: 46 bits (un opérande peut être une adresse) Instructions de contrôle: 44 bits Toujours trop grandes! Il faut trouver d’autres simplifications. Opcode Opérandes (2) Opérandes (3) Condition Prochaine instruction

Opérations arithmétiques et logiques Les opérations arithmétiques et logiques peuvent, en théorie, être effectuées directement sur des données en mémoire (CISC): add adr1,adr2,adr3 (8+32x3=104 bits!) En pratique, pour simplifier le contrôle du processeur, ce type d’opérations est toujours fait avec des données préalablement placées dans les registres du processeur (RISC): add rx,ry,rz (8+6x3=26 bits) Grâce à cette approche, 32 bits sont normalement suffisants pour stocker une instruction complète. Pour des processeurs plus petits (16 bits), on peut toujours réduire le nombre d’opérandes à deux: move rx,rz add ry,rz

Transferts de données et I/O Pour les transferts de données et pour le traitement des entrées/sorties, on ne peut pas se passer de références à la mémoire principale. L’instruction doit coder soit les données elles-mêmes, soit des indications sur comment l’unité de traitement peux les retrouver. Encore une fois, les transferts de données peuvent, en théorie, être effectués directement sur des adresses mémoire: move adr1,adr2 (8+32x2=72 bits) En pratique, pour simplifier le contrôle du processeur, un des opérandes (la source ou la destination, indifféremment) dans ce type d’opérations est toujours un des registres du processeur: move adr,rx (8+ 32+6=46 bits) Cette approche réduit le nombre de bits nécessaires pour codes ces instructions, mais pas suffisamment. Le problème est résolu (plus ou moins) par l’utilisations de modes d’adressage.

Modes d'adressage Pour les transferts de données et pour le traitement des entrées/sorties, on suppose donc que l’un des opérandes est un registre. L’autre opérande doit coder soit les données elles-mêmes, soit leur emplacement dans la mémoire principale (adresse). Petit exemple: MAX = 100; CNTR = MAX/2; ARR = MALLOC(MAX*sizeof(INT)); START_VAL = *(ARR); END_VAL = *(ARR + 100); CNTR_VAL = *(ARR + CNTR); START = ARR; END = ARR + MAX; FOR (I=0; I<CNTR; I++) { BOTTOM_HALF += *(START); START += sizeof(INT); TOP_HALF += *(END-sizeof(INT)); } ...

Adressage immédiat Si les données sont stockées directement dans l'instruction elle-même, on parle d’adressage immédiat ou littéral: move data,rx Il faut remarquer que les données de ce type d’instruction ont forcément une taille limitée par largeur de l’instruction (dans notre exemple, 32 - 8 - 6 = 18 bits). Dans notre exemple: MAX = 100; Opcode Data Destination (Rx)

Adressage par registre Les données peuvent être préalablement stockées dans un des registres du processeur. On parle dans ce cas d’adressage par registre: move ry,rx Les données dans ce type d’instructions ont une taille égale à la largeur des registres. Dans notre exemple: CNTR = MAX/2; Opcode Source (Ry) Destination (Rx) Banc des registres Opérande

Adressage direct Si le deuxième opérande doit indiquer l’emplacement des données en mémoire principale, on peut coder directement l’adresse dans l’instruction. On parle dans ce cas d’adressage direct ou absolu: move adr,rx La taille des adresses est ici limitée par la largeur de l’instruction. Les bits restants sont implicites (ajoutés par la MMU). Ce mode d'adressage est très rarement utilisé dans les programmes écrits par l'utilisateur. Par contre, il est très commun dans les OS: ARR = MALLOC(MAX*sizeof(INT)); Opcode Source (adresse) Destination (Rx) Mémoire MMU Opérande

Adressage indirect par registre L’emplacement (adresse) des données en mémoire principale peut aussi être préalablement stocké dans un des registres du processeur. On parle dans ce cas d’adressage indirect par registre: move (ry),rx Les adresses dans ce type d’instructions ont une taille égale à la largeur des registres. Dans notre exemple: START_VAL = *(ARR); Opcode Source (Ry) Destination (Rx) Banc des registres Mémoire Adresse Opérande

Adressage indirect via mémoire L’emplacement (adresse) des données en mémoire principale peut être lui-même stocké en mémoire principale. On parle dans ce cas d’adressage indirect via mémoire: move (adr),rx Opcode Source (adresse) Destination (Rx) Mémoire Opérande MMU Adresse La taille des adresses est ici limitée par la largeur de l’instruction. Les bits restants sont implicites (ajoutés par la MMU). Comme l'adressage direct, ce mode d'adressage est très rarement utilisé dans les programmes écrits par l'utilisateur mais il est très commun dans les OS.

Adressage avec déplacement L’emplacement (adresse) des données en mémoire principale peut être défini comme un déplacement (offset) par rapport à une adresse de base stockée dans un des registres. Si le déplacement est stocké dans l'instruction, on parle d’adressage avec déplacement ou basé: move dpl(ry),rx Opcode Offset Base (Ry) Destination (Rx) Banc des registres Mémoire Adresse + Opérande La taille des adresses est égale à la largeur des registres. Par contre, la taille du déplacement est limitée par la taille de l'instruction. Dans notre exemple: END_VAL = *(ARR + 100);

Adressage indexé L’emplacement (adresse) des données en mémoire principale peut être défini par la somme d’une adresse de base stockée dans un registre et d’un déplacement (index) stocké dans un autre registre. On parle dans ce cas d’adressage indexé: move (ry+rz),rx Opcode Base (Ry) Index (Rz) Destination (Rx) Banc des registres Mémoire Offset + Opérande Adresse Les adresses et le déplacements dans ce type d’instructions ont une taille égale à la largeur des registres. Dans notre exemple: CNTR_VAL = *(ARR + CNTR);

Adressage auto-incrémenté Pour parcourir une série de positions mémoire successives (p.ex. lors de l’accès à une table), il est utile d’incrémenter une adresse avant ou après chaque accès. Il s'agit de l’adressage auto-incrémenté. Post-incrément: move (ry)+,rx Opcode Source (Ry) Destination (Rx) Banc des registres Mémoire Adresse Opérande Taille de la donnée + Les adresses dans ce type d’instructions ont une taille égale à la largeur des registres. Dans notre exemple: BOTTOM_HALF += *(START); START += sizeof(INT);

Adressage auto-décrémenté Pour parcourir une série de positions mémoire successives à partir de la fin, il est utile de décrémenter une adresse avant ou après chaque accès. On parle dans ce cas d’adressage auto-décrémenté. Pre-décrément: move -(ry),rx Opcode Source (Ry) Destination (Rx) Taille de la donnée Banc des registres Mémoire Adresse - Opérande Les adresses dans ce type d’instructions ont une taille égale à la largeur des registres. Dans notre exemple: TOP_HALF += *(END-sizeof(INT));

Petit exemple bien compliqué program toto; var A, B, C : array [1...1000] of integer; i : integer begin for i:=1 to 1000 do C[i] := A[i] + B[i]; end ... MOVE.L #2001,A0 Charger l’adresse 2001 dans le registre A0 (pointeur sur le vecteur A) MOVE.L #3001,A1 Charger l’adresse 2001 dans le registre A1 (pointeur sur le vecteur B) MOVE.L #4001,A2 Charger l’adresse 2001 dans le registre A2 (pointeur sur le vecteur C) START: ABCD -(A0),-(A1) Décrémenter le contenu de A0 et A1 (adresses), puis additionner les données (1 byte BCD) MOVE.B (A1),-(A2) Décrémenter A2 et stocker le résultat (1 octet) dans le vecteur C TEST: CMPA #1001, A0 Comparer le contenu de A0 (adresse) avec 1001; Z=1 si les deux valeurs sont égales, Z=0 sinon BNE START Sauter à START si Z n’est pas égal à 1

Instructions de contrôle Les instructions de contrôle (essentiellement des branchements) doivent nécessairement indiquer une adresse (la cible du branchement): if (cond) then [continue] else [branche] En théorie, cette cible pourrait être n’importe quelle position mémoire. En pratique, dans la grande majorité des cas, il s’agit d’un saut à une instruction dont la position mémoire est relativement proche de l’instruction qui est en train de s’exécuter. Par conséquent, le mode d’adressage couramment utilisé pour les instructions de contrôle est l’adressage par déplacement, où la base est définie implicitement comme étant le PC. Opcode Condition Adresse cible Opcode Condition Offset

Branchement par déplacement Séquenceur CK Opcode Opérandes n BASCULES Fanions RAM Contrôle SLC Opérandes Instruction Adresse 0:+1|+0 4:+1 1:+1 5:+1 2:+1 6:+1|-2 3:+1 7:-7 0:data  inport 1:ocount  0 2:mask  1 3:while data ≠ 0 4:tempdata AND mask 5:ocountocount+temp 6:data  data >> 1 end while 7:outport  ocount

Séquenceur PC +1 SLC + RAM SLC Opcode Opérandes n BASCULES Fanions CK Opcode Opérandes n BASCULES Fanions RAM Contrôle SLC Opérandes Instruction Adresse Adresse PC +1 CK + Offset Opcode SLC Condition Fanions