Architecture des ordinateurs

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

Module Systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Le matériel des ordinateurs Revue Pt II (Tanenbaum 1.4)
Électronique de base du processeur
Premier programme en C :
Le Concept du programme enregistré
Architecture de machines Le microprocesseur
Introduction au langage C
Fonctionnement de l'unité centrale (rappels ? de 1ère Année)
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
auxiliaires ou mémoires de masse ou alors secondaire).
Plan du cours : 2ème Partie
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
La pile un élément essentiel
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
2.Les différentes architectures (Louis)
Les microprocesseurs A. Objectifs de la séquence:
Architecture de machines Principes généraux
Système d’exploitation : Assembleur
Chapitre 8 : L’architecture de base des ordinateurs
ARCHITECTURE GLOBALE CAPTAGE Traitement DES des données GRANDEURS
Architecture de base d’un ordinateur
Gestion des Périphériques
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Système d’exploitation : Assembleur
Architecture des Ordinateurs
Algorithmique et Programmation
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
LES SYSTEMES AUTOMATISES
Architecture et technologie des ordinateurs II
Chap. 2 - Structure d’un ordinateur
Mécanismes d'exécution et de communication
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.
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.
Cours Architecture des Systèmes Informatiques
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.
Programmation Système et Réseau
Architecture et technologie des ordinateurs II
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
ISBN Chapitre 10 L'implémentation des sous- programmes.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. tél Fax Cours Architecture des.
INFOR 101 Chapitre 5 Marianne Morris.
Progression - Quelques rappels
Simulateur de microcontrôleur Intel 80C51
Patricia Renault UPMC 2005/2006
Cours Système LI324 Les Interruptions Cours Système LI324
8PRO107 Éléments de programmation Les adresses et les pointeurs.
IFT209 – Programmation Système
Les instructions de contrôle
Chapitre 4 La représentation des nombres.
Tour rapide d’un premier programme SPARC v9
Chapitre 3 L’accès aux données.

Chapitre 9 Les caractères.
CHAPITRE 10 Les sous-programmes 1. Sous-programme Suite d’instructions appelée de manière répétitive Par un programme Par plusieurs programmes distincts.
Les nombres à virgule flottante
Architecture d’un ordinateur
Formations Système Embarqué & Informatique Industrielle
ARCHITECTURE MATERIELLE D’UN SYSTEME A MICROPROCESSEUR
Étapes pour la Programmation du 68HC11 I. Écriture du programme dans un fichier *.a11 II. Le programme est compilé (traduit en langage machine) III. Le.
Transcription de la présentation:

Architecture des ordinateurs Chapitre 2 Architecture des ordinateurs

Architecture Architecture externe (spécification) Services fournis à l’utilisateur Types de données et représentation Modes d’adressage Instructions machine Mécanismes d’entrée/sortie Architecture interne (organisation) Description physique des composantes et les interconnexions Organisation interne du processeur Gestions des conflits de ressources, etc. Il peut exister plusieurs implémentations d’une même architecture (plusieurs organisations pour une spécification)

Architecture de von Neumann Présentée dans les années 1940 Un processeur central Unité de contrôle Unité arithmétique et logique Mémoire principale Unités d’entrée/sortie Les composants sont reliés par un canal de communications (bus) constitué d’un ensemble de lignes (n) électriques parallèles.

Architecture de von Neumann Processeur Unité de contrôle Unité arithmétique et logique Bus Mémoire principale Unité d’entrée/sortie Unité d’entrée/sortie

Architecture de von Neumann Processeur Gère l’allocation du BUS Décode et exécute les instructions Possède une petite mémoire locale (registres) Accès très rapide Contiennent temporairement les opérandes des instructions (données)

Architecture de von Neumann Mémoire centrale Constituée de cellules qui contiennent le programme et ses données Permet le transfert de données Mémoire  Registre (Chargement) Registre  Mémoire (Stockage) Chaque cellule a une adresse Accès beaucoup plus lent que les registres

Architecture de von Neumann Unité d’entrée/sortie Contrôle les périphériques (moniteur, souris, clavier, lecteur, etc.) Programmation généralement complexe Échange de données entre le périphérique et le processeur Définit par un ensemble de règles, appelé protocole de communication Habituellement très lent (en comparaison des registres et de la mémoire)

Architecture de von Neumann Le programme et ses données sont toujours emmagasinés en mémoire principale Les instructions ne peuvent être exécutées en mémoire principale Traitement global d’une instruction Extraction de la mémoire Décodage Exécution Stockage des résultats

Architecture de von Neumann Processeur contient deux registres spéciaux Registre d’instruction (RI) Compteur ordinal (PC  Program Counter) Traitement complet d’une instruction Extraction de l’instruction à l’adresse contenue dans le registre PC Stockage de l’instruction dans le registre d’instruction Décodage de l’instruction et accès à ses opérandes Mise à jour du registre PC Exécution de l’instruction Stockage des résultats

Architecture d’un ordinateur RISC (Reduced Instruction Set Computer) CISC (Complex Instruction Set Computer) Grand nombre de registres Petit nombre de registres Petit nombre d’instructions Grand nombre d’instructions Peu de mode d’adressage Beaucoup de modes d’adressage Instruction de longueur unique Instruction de longueur variable Accès à la mémoire limité à certaines instructions Accès à la mémoire pour toutes les instructions Ex : SPARC de Sun Ex : Processeur Intel

Mémoire centrale Vecteur de cellules adressables Contient des bits (valeur de 0 ou 1) La plus petite cellule contient habituellement 8 bits (1 octet) La taille d’un mot est liée à la largeur du bus de données Habituellement 32 bits (4 octets) sur les architectures courantes

Mémoire centrale Vecteur de cellules adressables 97 255 … 10 1 2 N-1 N-2 La plus grande valeur pouvant être contenue dans un octet est de ? Il n’y a pas de différence entre un « caractère » ou un nombre. L’interprétation de la valeur est laissée aux soins du programmeur.

Mémoire centrale La mémoire permet d’adresser des Octets (8 bits) Demi-mots (2 octets) Mots (4 octets) Doubles mots (8 octets) L’architecture peut exiger des contraintes de frontières S’il y en a : l’adresse doit être divisible par le nombre d’octets représentant la valeur. S’il n’y en a pas : Toute suite de 2, 4 ou 8 octets peut être interprétée comme un demi-mot, un mot ou un double mot respectivement.

Mémoire centrale Chaque bit d’un octet (ou d’un mot par exemple) est numéroté. Les octets d’un mot (ou d’un demi-mot par exemple) sont aussi numérotés Un mot à l’adresse « 𝑚 » occupe les octets mémoire aux adresses « 𝑚, 𝑚+1, 𝑚+2, 𝑚+3 » N-1 N-1 N = 8, 16, 32, 64

Mémoire centrale Il y a deux formats pour l’ordre des octets dans un mot Format « big endian » (𝐴0𝐵1𝐶2𝐷 3 16 ) L’adresse de la donnée est celle de la partie la plus significative Format « little endian » (𝐴0𝐵1𝐶2𝐷 3 16 ) L’adresse de la donnée est celle de la partie la moins significative A0 B1 C2 D3 N N+1 N+2 N+3 D3 C2 B1 A0 N N+1 N+2 N+3

Mémoire centrale La différence de format est souvent imperceptible Il faut faire attention lorsque Il y a transfert de données d’un ordinateur à l’autre Une valeur est emmagasinée dans un mot, mais lue octet par octet

Mémoire centrale Programme Donnée « A1B2C3D4 » SPARC A1B2C3D4 #include <iostream> #include <iomanip> using namespace std; union MOT { unsigned int nb ; unsigned char car[4] ; }; int main() MOT mot; cin>>hex>>mot.nb; for(uchar i = 0; i < 4; i++) cout<<hex<<(int)mot.car[i]<<endl; return 0; } Programme Donnée « A1B2C3D4 » A1B2C3D4 D4C3B2A1 SPARC Intel x86

Processeur Consiste à exécuter des instructions La spécification du processeur comprend la description Des registres Des modes d’adressage Des instructions Les modes d’adressage sont présentés dans le chapitre suivant

Processeur Possède un ensemble de cellules spécialisées (registres) Registres généraux Emmagasine temporairement les opérandes des instructions Très rapide (on ne dépend pas du bus de données) Certains sont dédiés à un usage particulier ou à une valeur fixe Un pointeur de pile (Stack pointer (SP) ), la valeur 0, etc. Registres spécialisés Compteur ordinal (Program Counter (PC) ) Registre d’état (Processor Status (PS) ) Registres d’adresse, etc. Un registre d’instruction (RI), qui ne peut être assigné directement

Processeur Comporte un ensemble d’instructions (jeu d’instructions) Caractérisé par Son nombre Sa variété Arithmétique, Logique, Contrôle, etc. Sa longueur Toutes de la même longueur Chaque type a la même longueur Peuvent être de longueur différente Son nombre d’opérandes 3 opérandes?, 2 opérandes? Aucun opérande? Code Op. Opérandes*

Processeur Exemple d’instructions à 3 opérandes Calculer : 𝐸= 𝐴÷𝐵 −(𝐶×𝐷) DIV A, B, T1 ! T1 = A / B MUL C, D, T2 ! T2 = C x D SUB T1, T2, E ! E = T1 – T2

Processeur Exemple d’instructions à 2 opérandes (le résultat est mis dans le 2e opérande) Calculer : 𝐸= 𝐴÷𝐵 −(𝐶×𝐷) On perd de l’information (certaines valeurs sont perdues) DIV A, B ! B = A / B MUL C, D ! D = C x D SUB B, D ! D = B – D MOV D, E ! E = D

Processeur Exemple d’instructions à 1 opérande (on utilise un accumulateur) Calculer : 𝐸= 𝐴÷𝐵 −(𝐶×𝐷) On a changé l’ordre des opérations pour utiliser moins d’instructions LOAD C ! Acc = C MUL D ! Acc = Acc x D STORE T ! T = Acc A ! Acc = A DIV B ! Acc = Acc / B SUB ! Acc – T E ! E = Acc

Processeur Exemple d’instructions à 0 opérande (on utilise une pile) Calculer : 𝐸= 𝐴÷𝐵 −(𝐶×𝐷) PUSH A ! Empiler A B ! Empiler B DIV ! Dépiler B et A, empiler A / B (T1) C ! Empiler C D ! Empiler D MUL ! Dépiler D et C, empiler C x D (T2) SUB ! Depiler T2 et T1, empiler T1 – T2 POP E ! Dépiler le dessus de la pile et copier dans E

Organisation d’un ordinateur Technique de pipeline Permet d’obtenir de meilleure performance d’exécution des programmes Un pipeline a autant d’étages que d’étape dans le traitement d’une instruction Un cycle machine est défini comme étant le temps nécessaire au processeur pour passer une instruction d’un étage à l’autre

Organisation d’un ordinateur Technique de pipeline Supposons le cycle de traitement d’une instruction suivant : EI  Extraction de l’instruction et dépôt dans RI DI  Décodage de l’instruction et accès aux opérandes dans des registres EX  Exécution de l’instruction MEM Mise à jour du PC lors d’un branchement Accès mémoire pour un chargement ou un stockage ER  Écriture du résultat dans un registre Le cycle comporte 5 étapes indépendantes

Organisation d’un ordinateur Technique de pipeline Le cycle comporte 5 étapes indépendantes Sans pipeline, l’exécution de 3 instructions prend 15 cycles EI DI EX MEM ER Avec pipeline, l’exécution de 3 instructions prend 7 cycles EI DI EX MEM ER

Organisation d’un ordinateur Technique de pipeline Il peut y avoir des situations conflictuelles Accès parallèle à la mémoire EI DI EX MEM ER La 4e instruction et la première instruction peuvent vouloir accéder à des zones mémoires distinctes simultanément. Le problème est réglé par le matériel.

Organisation d’un ordinateur Technique de pipeline Il peut y avoir des situations conflictuelles Utilisation de données communes EI DI EX MEM ER La deuxième instruction peut avoir besoin du résultat de la première instruction comme valeur d’opérande. Le problème est réglé majoritairement par le matériel.

Organisation d’un ordinateur Technique de pipeline Il peut y avoir des situations conflictuelles Modification de la séquence des instructions (instructions hasardeuses) EI DI EX MEM ER EI DI EX MEM ER Branchement On suspend le pipeline lorsqu’un branchement est détecté (étape DI) jusqu’à l’étape MEM. Il reste quand même une instruction qui ne devrait pas être exécutée. Dans une architecture avec pipeline, l’instruction qui suit un branchement est toujours exécutée! Le programmeur doit en tenir compte.

Architecture SPARC Architecture RISC de 64 bits (version 9) Mémoire centrale Supporte les octets, les demi-mots, les mots (32 bits) et les doubles mots (64 bits, appelés mot étendu) Les adresses sont représentées par des mots étendus. Il y a des contraintes sur les frontières L’adresse d’un demi-mot est paire L’adresse d’un mot est un multiple de 4 L’adresse d’un mot étendu est un multiple de 8 Le bit 0 d’une cellule est le moins significatif Le format par défaut est « big endian »

Architecture SPARC 32 registres 8 registres généraux (g0 à g7) 8 registres d’entrée (i0 à i7) 8 registres locaux (L0 à L7) 8 registres de sortie (o0 à o7) Certains registres sont dédiés à certaines fonctionnalités g0  Contient toujours la valeur 0 o6, o7, i6, i7  utilisés pour le pointeur de pile, les adresses de retour pour les fonctions, etc.

Architecture SPARC Nom global Nom spécifique Usage R0 g0 Vaut toujours 0, lecture seulement R1 g1 Libre … R7 g7 R8 o0 R14 o6 SP (sommet de la pile « stack pointer ») R15 o7 Dédié lors de l’appel d’un sous-programme R16 L0 R23 L7 R24 i0 ... R30 i6 FP (pointeur de cadre « frame pointer »), lien avec o6 R31 i7 Dédié lors de l’appel d’un sous-programme, lien avec o7

Architecture SPARC Registres spécialisés Compteur ordinal (PC, 64 bits) Contient l’adresse de l’instruction exécutée Compteur ordinal voisin (nPC, 64 bits) Contient l’adresse de la prochaine instruction à exécuter Registre de codes de condition (CCR, 8 bits) Bit n (négatif), z (zéro), v (débordement), c (report) Sont présents deux fois dans le registre (pour les opérations sur 32 bits (icc) et celles sur 64 bits (xcc)) Registres virgule flottante 32 registres simple précision (F0 à F31, 32 bits), 32 double précision (F0, F2, … F62, 64 bits), 16 quadruple précision (F0, F4, …, F60, 128 bits) Registre d’état des registres virgules flottantes (FPRS, 3 bits) Registre d’état de l’unité virgule flottante (FSR, 64 bits)

Architecture SPARC Cycle de traitement d’une instruction Extraction de l’instruction à l’adresse contenue dans le PC et dépôt dans RI Décodage et accès aux opérandes Exécution de l’instruction, si l’instruction précédente n’est pas Un branchement avec annulation Une remise à l’état initial (« reset ») Une interruption PC = nPC nPC = nPC + 4 Si l’instruction courante est un branchement, nPC prend la valeur de l’adresse du branchement Dépôt des résultats

Architecture SPARC Le SPARC a la particularité de fournir des fenêtres de registres Une fenêtre comporte 24 registres (8 registres de sorties, 8 registres locaux, 8 registres d’entrées) Les registres globaux (G0 à G7) sont communs à toutes les fenêtres. Seulement une fenêtre de registre est accessible à la fois Il y a au maximum 520 registres sur le processeur, pour un maximum de 32 fenêtres de registre Chaque fenêtre partage 8 registres avec la fenêtre précédente Il y a des instructions particulières pour changer de fenêtre de registre et avoir accès à 16 nouveaux registres save restore

Architecture SPARC g0 à g7 i0 à i7 L0 à L7 o0 à o7 Permet le passage de paramètres entre des sous-programmes. Les registres de sorties d’une fenêtre sont les registres d’entrées de la fenêtre suivante.

Architecture SPARC SAVE ! Instruction allouant une nouvelle fenêtre ⋮ ⋮ Corps du sous-programme ⋮ RET ! Instruction de retour RESTORE ! Instruction pour revenir à l’ancienne fenêtre

Instructions 3 formats principaux Le champ « Code Op » est subdivisé Généralement 3 opérandes Le champ « Code Op » est subdivisé « op » (bits 30 et 31) « op2 » « op3 » Les opérandes peuvent être Un déplacement Une valeur Un registre (« rs1 », « rs2 », « rd »)

Instructions Format 1 Ce format représente l’instruction « call » L’adresse d’appel est équivalente à 𝑃𝐶+(4×𝐷é𝑝𝑙𝑎𝑐𝑒𝑚𝑒𝑛𝑡) 1 Déplacement de 30 bits 31 30

Instructions Format 2 Il s’agit de l’instruction « sethi » Il s’agit d’une instruction de branchement Immédiat de 22 bits 31 30 rd op2 29 25 24 22 21 Immédiat de 22 bits 31 30 cond op2 29 25 24 22 21 a 28

Instructions Format 3 Instructions logiques et arithmétique entière Instructions de chargement et de stockage 1 rs2 31 30 rd op3 29 25 24 19 18 rs1 14 asi 13 12 5 4 1 Immédiat de 13 bits 31 30 rd op3 29 25 24 19 18 rs1 14 13 12 1 rs2 31 30 rd op3 29 25 24 19 18 rs1 14 asi 13 12 5 4 1 Immédiat de 13 bits 31 30 rd op3 29 25 24 19 18 rs1 14 13 12

Instructions Seules les instructions de chargement et de stockage peuvent accéder à la mémoire ld [rs1+rs2], rd [%l0+%l3], %l6 [rs1+imm13], rd [%i4-124], %o2 [rs1], rd [%l1], %l7 st rd, [rs1+rs2] %i3, [%l1+%o2] rd, [rs1+imm13] %l0, [%i1+0x1C] rd, [rs1] %o5, [%o0] add rs1, rs2, rd %l2, %i5, %l7 rs1, imn13, rd %l3, 345, %l5

Instructions Sur l’architecture SPARC, l’instruction qui suit un branchement est toujours exécutée (pipeline). Cette instruction se trouve dans la fente de temporisation (« delay slot ») Le programmeur doit en tenir compte et mettre une instruction qui n’altère pas le traitement souhaité NOP : Instruction synthétique dérivée de SETHI 0, %g0

Instructions Solution facile mov 1, %o0 setx A, %o1 8, %o2 call spg nop Solution élégante mov 1, %o0 setx A, %o1 call spg 8, %o2 Attention : setx est une instruction synthétique qui est remplacée par six instructions à la compilation  elle ne doit jamais être dans la fente de temporisation.