Plan du cours. 1 Histoire de l ordinateur. 3 Représentation interne des informations. 4 Circuits logiques. 5 Mémoires. 6 Unité centrale de traitement

Documents pareils
Rappels d architecture

Compilation (INF 564)

CM2 L architecture MIPS32

Jeu d instructions NIOS II

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Architecture des ordinateurs

Conception de circuits numériques et architecture des ordinateurs

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Gestion mémoire et Représentation intermédiaire

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Programmation assembleur : aperçu

Exécution des instructions machine

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

ASR1 TD7 : Un microprocesseur RISC 16 bits

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

PIC : COURS ASSEMBLEUR

Architecture : Circuits numériques et éléments d architecture

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Architecture des ordinateurs Introduction à l informatique

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours Informatique 1. Monsieur SADOUNI Salheddine

Microprocesseur + Logiciel

Architecture des ordinateurs

Représentation des Nombres

Structure d un programme

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

La mémoire. Un ordinateur. L'octet. Le bit

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Sujets de Travaux Dirigés et de Travaux Pratiques Pascal Ballet, Philippe Le Parc et François Monin

Programmation en langage C


Conversion d un entier. Méthode par soustraction

IV- Comment fonctionne un ordinateur?

UE Programmation Impérative Licence 2ème Année

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

Architecture matérielle des systèmes informatiques

Licence Sciences et Technologies Examen janvier 2010

Cours Informatique Master STEP

Informatique Générale

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Résumé Génération de code Le code intermédiaire

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

IFT2880 Organisation des ordinateurs et systèmes

Claude Delannoy. 3 e édition C++

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

I00 Éléments d architecture

Analyse de sécurité de logiciels système par typage statique

CONFIGURATION DE L AUTOMATE SIEMENS

Créer le schéma relationnel d une base de données ACCESS

Programmation C. Apprendre à développer des programmes simples dans le langage C

Logiciel de base. Première année ENSIMAG

Systèmes et traitement parallèles

STAGE IREM 0- Premiers pas en Python

Cours 1 : La compilation

Logiciel de Base. I. Représentation des nombres

Rappels Entrées -Sorties

Le langage C. Séance n 4

TP, première séquence d exercices.

Introduction à MATLAB R

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Bases de programmation. Cours 5. Structurer les données

Initiation à l algorithmique

NOTICE DE PROGRAMMATION D AUTOMATES SIEMENS S7 300 S7 400

Architecture de l ordinateur

UE C avancé cours 1: introduction et révisions

Conventions d écriture et outils de mise au point

Cours d initiation à la programmation en C++ Johann Cuenin

Une version javascript sera disponible directement dans le cours prochainement.

Plan du cours. Historique du langage Nouveautés de Java 7

1. Structure d'un programme FORTRAN 95

Architecture Matérielle et Logicielle (LIF6) Cahier d'exercices, automne 2014

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Notions fondamentales du langage C# Version 1.0

Introduction au langage C

Représentation d un entier en base b

La programmation des PIC en C. Les fonctions, les interruptions.

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

Partie 7 : Gestion de la mémoire

SUPPORT DE COURS. Langage C

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Méthodologie de la programmation

IN SYSTEM. Préconisations techniques pour Sage 100 Windows, MAC/OS, et pour Sage 100 pour SQL Server V16. Objectif :

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1

Codage d information. Codage d information : -Définition-

Chapitre I Notions de base et outils de travail

Le langage VHDL. Eduardo Sanchez EPFL

IFT1215 Introduction aux systèmes informatiques

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Sélection du contrôleur

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

INF 321 : mémento de la syntaxe de Java

Transcription:

Plan du cours 1 Histoire de l ordinateur 2 Présentation générale 3 Représentation interne des informations 4 Circuits logiques 5 Mémoires 6 Unité centrale de traitement 7 Assembleur 8 Introduction au langage MIPS 9 Entrées / sorties Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 201 / 238

Ressources Sur la base des notes de cours de Christophe Fiorio, Jean- Marc Talbot. Computer organization and design : the hardware/software interface, David A. Patterson & John L. Hennessy, Morgan Kaufmann, 4th edition, 2008. Assemblers, Linkers, and the SPIM Simulator, James R. Larus. Documentation on the MIPS32 architecture, MIPS Technologies, 2010. Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 202 / 238

Les machines MIPS Le langage MIPS est l assembleur des processeurs MIPS (jeux d instructions : MIPS I à V, MIPS32, MIPS64) ; Introduit au début des années 1980 ; Développé par MIPS Technologies ; Processeur RISC ; Existe en 32 et 64 bits ; Souvent utilisé comme support dans le milieu académique ; Processeur des machines NEC, SGI (supercalculateurs), Sony PS,PS2, PSP, Nintendo (console), FreeBox, NeufBox (routeur) ; Nous allons nous intéresser à la norme du langage MIPS32. Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 203 / 238

A-t-on des machines MIPS sous la main? Code ass. MIPS Non Utilisation d une machine virtuelle : un programme qui simule de manière logicielle le fonctionnement d une machine réelle. Compilateur prog. en langage machine MIPS Interpreteur code machine local + exécution Il existe plusieurs logiciels qui sont des simulateurs de machine MIPS e.g., SPIM, MIPSter, MARS, OVPsim, GXemul. Nous utiliserons SPIM (http://pages.cs.wisc.edu/~larus/spim.html) Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 204 / 238

Généralités MIPS Instructions de 32 bits, 3 types d instructions différentes ; Mémoire adressable de 2 32 octets ; CO et RI de 32 bits ; 32 registres de 32 bits ; Toujours une seule instruction par ligne ; # prefixe un commentaire ; Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 205 / 238

Exemple Le opérations arithmétiques MIPS OPA a,b,c # a := b OPA c avec OPA ={add, sub,...} f := (g + h) (i + j) add $t0,$t1,$t2 # $t0 := $t1+$t2 add $t3,$t4,$t5 # $t3 := $t4+$t5 sub $v0,$t0,$t3 # $v0 := $t0-$t3 Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 206 / 238

Registres MIPS Il existe 32 registres de 32 bits numérotés $0,..., $31 Nom Numéro Description $zero 0 Constante 0 $at 1 Réservé à l assembleur $v0,$v1 2-3 Évaluation d une expression et résultats d une fonction $a0,...,$a3 4-7 Arguments de sous-programmes $t0,...,$t7 8-15 Valeurs temporaires (non préservées) $s0,...,$s7 16-23 Valeurs temporaires (préservées) $t8,$t9 24-25 Valeurs temporaires (non préservées) $k0,$k1 26-27 Réservé pour les interruptions (i.e., système d exploitation) $gp 28 Pointeur global $sp 29 Pointeur de pile $fp 30 Pointeur de bloc $ra 31 Adresse de retour Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 207 / 238

Accès mémoire MIPS Il existe des instructions de transfert vers/de la mémoire centrale (e.g., lw et sw) ; La mémoire est vue comme un tableau où l adresse serait l indice du tableau ; Mot mémoire de 32 bits ; Mémoire adressable de 2 32 octets (4Go) 2 35 bits 2 30 (=1073741824) mots de 32 bits ; Adresse sur 1 octet Les mots mémoires sont adressés par des multiples de 4 (i.e., le CO est incrémenté de 4 à chaque cycle). Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 208 / 238

Instructions MIPS Une instruction MIPS est codée en binaire par un mot de 32 bits ; Les 32 bits sont décomposés en champs, chaque partie ayant une signification particulière, codant ainsi soit l instruction, soit un opérande numérique, soit une adresse ; Avoir un nombre fixe d opérande est plus simple à gérer ; 3 types de format d instruction différentes : Instruction de type R (registre) ; Instruction de type I (transfert) ; Instruction de type J (saut) ; Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 209 / 238

Format des instructions MIPS (1/3) Instruction de type R (registre) Les 32 bits sont décomposés de la manière suivante : op rs rt rd decval fonction 6 bits 5 bits 5 bits 5 bits 5bits 6bits op : code opération correspondant à l instruction rs : premier registre opérateur source rt : deuxième registre opérateur source rd : registre opération destination (reçoit le résultat de l opération) decval : valeur du décalage fonction : variante de l opération décrite par op Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 210 / 238

Format des instructions MIPS (2/3) Instruction de type I (transfert) Les 32 bits sont décomposés de la manière suivante : op rs rt adresse 6 bits 5 bits 5 bits 16 bits op : code opération correspondant à l instruction rs : premier registre opérateur source rt : deuxième registre opérateur source adresse : adresse mémoire Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 211 / 238

Format des instructions MIPS (3/3) Instruction de type J (saut) Les 32 bits sont décomposés de la manière suivante : op adresse 6 bits 26 bits op : code opération correspondant à l instruction adresse : adresse mémoire Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 212 / 238

Exemples d instructions MIPS Exemple d instruction de type R 000000 10001 10010 01000 00000 100000 0 17 18 8 0 32 add $8,$17,$18 en MIPS Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 213 / 238

Type d instructions : arithmétiques type instruction commentaire add Rd,Rs,Rt addition Rd Rs+Rt addu Rd,Rs,Rt addition - sans déb. Rd Rs+Rt addi Rd,Rs,Imm addition d un immédiat Rd Rs+Imm addiu Rd,Rs,Imm addition - sans déb. Rd Rs+Imm sub Rd,Rs,Rt soustraction Rd Rs-Rt mult Rs,Rt multiplication [hi,lo] Rs Rt multu Rs,Rt multiplication non signée [hi,lo] Rs Rt mul Rd,Rs1,Rs2 multiplication - sans déb. Rd Rs1 Rs2 arithmétiquesdiv Rs,Rt division lo Rs Rt ; hi Rs mod Rt div Rd,Rs1,Rs2 division Rd Rs1 Rs2 divu Rd,Rs1,Rs2 division non signée (sans déb.) Rd Rs1 Rs2 rem Rd,Rs1,Rs2 reste de la division Rd Rs1 Rs2 si Rs1 ou Rs2 est négatif abs Rd,Rs,Rt valeur absolue neg Rd,Rs opposé d une valeur Rd Rs rol Rd,Rs1,Rs2 rotation vers la gauche ror Rd,Rs1,Rs2 rotation vers la droite Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 214 / 238

Type d instructions : logiques type instruction commentaire and Rd,Rs,Rt et logique Rd Rs Rt andi Rd,Rs,Imm et logique immédiat Rd Rs Imm or Rd,Rs,Rt ou logique Rd Rs Rt ori Rd,Rs,Rt ou logique immédiat Rd Rs Imm nor Rd,Rs,Rt nor logique le non ou Rd Rs Imm logiques xor Rd,Rs,Rt xor logique Rd Rs Rt xori Rd,Rs,Imm xor logique immédiat Rd Rs Imm not Rd,Rs non logique Rd Rs ; négation bit à bit sll Rd,Rs,Sa décalage logique à gauche sllv Rd,Rt,Rs décalage logique à gauche rang du décalage défini par Rs srl Rd,Rs,Sa décalage logique à droite srlv Rd,Rt,Rs décalage logique à droite rang du décalage défini par Rs sra Rd,Rs,Sa décalage arithmétique à droite srav Rd,Rt,Rs décalage arithmétique à droite rang du décalage défini par Rs Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 215 / 238

Type d instructions : chargement et rangement mémoire type instruction commentaire lb Rt,@ chargement d octet Rt M[@] chargement et rangement lw Rt,@ chargement d un mot Rt (M[@],M[@+1]) ld Rt,@ chargement d un mot double (Rt,Rt+1) lwl Rt,@ chargt de la partie gauche (M[@],M[@+1],M[@+2], d un mot lwt Rt,@ chargt de la partie droite d un mot li Rd,Imm chargement d un immédiat Rd Imm lui Rt,Imm chargment d un immédiat Rt Imm 2 1 6 dans l octet de poids fort la Rt,@ chargement d une adresse Rt @ (utilisée avec un label) sb Rt,@ rangement d octet M[@] Rt sw Rt,@ rangement d un mot (M[@],M[@+1]) Rt sd Rt,@ rangement d un mot double (M[@],M[@+1],M[@+2],M[ (Rt,Rt+1) swl Rt,@ swt Rt,@ rangt de la partie gauche d un mot rangt de la partie droite d un mot Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 216 / 238

Type d instructions : transfert de données type instruction commentaire transfert move Rd,Rs transfert Rd Rs de données mfhi Rd transfert depuis hi Rd hi mflo Rd transfert depuis lo Rd lo mfc1.d Rd,Fs Transfert d un mot double depuis le coprocesseur 1 [Rd,Rd+1] [Fs,Fs+1] Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 217 / 238

Type d instructions : comparaison type instruction commentaire seq Rd,Rs1,Rs2 positionner si égal Rd=Rs1==Rs2?1:0; sne Rd,Rs1,Rs2 positionner si différent Rd=Rs1!=Rs2?1:0; sgt Rd,Rs1,Rs2 positionner si supérieur Rd=Rs1>=Rs2?1:0; comparaison sge Rd,Rs1,Rs2 positionner si supérieur ou égal Rd=Rs1>=Rs2?1:0; slt Rd,Rs1,Rs2 positionner si inférieur Rd=Rs1<=Rs2?1:0; sle Rd,Rs1,Rs2 positionner si inférieur ou égal Rd=Rs1<=Rs2?1:0; slti Rd,Rs,Imm positionner si inférieur à l immédiat Rd=Rs<=Imm?1:0; Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 218 / 238

Type d instructions : branchement conditionnel et saut type instruction commentaire branchement conditionnel et saut beq Rs,Rt,label branchement si égal if(rs==rt) goto label bne Rs,Rt,label branchement si différent if(rs!=rt) goto label bgt Rs,Rt,label branchement si supérieur if(rs>rt) goto label bge Rs,Rt,label branchement si supérieur ou égal if(rs>=rt) goto label blt Rs,Rt,label branchement si inférieur if(rs<rt) goto label ble Rs,Rt,label branchement si inférieur ou égal if(rs<=rt) goto label j label saut saut inconditionnel jal label saut avec lien saut incond. avec $31 @retour jr Rs saut par registre saut inconditionnel à l adresse stockée dans Rs Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 219 / 238

Type d instructions : exception et interruption type instruction commentaire exception et interruption rfe retour d exception restitue le registre État syscall appel système le registre $v0 contient le numéro de l appel système nop aucune opération ne rien faire! Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 220 / 238

Type d instructions : virgule flottante (1/2) instructions flottantes abs.s Fd,Fs valeur absolue flottante simple Fd Fs abs.d Fd,Fs valeur absolue flottante double Fd Fs add.s Fd,Fs,Ft addition flottante simple Rd Rs+Rt add.d Fd,Fs,Ft addition flottante double Rd Rs+Rt bc1t label branchement si drapeau flottant vrai branchement conditionnel à l adresse du label bc1f label branchement si drapeau flottant faux branchement conditionnel à l adresse du label c.eq.s Fs,Ft test si égalité simple drapeau flottant à 1 si Fs==Ft c.eq.d Fs,Ft test si égalité double drapeau flottant à 1 si Fs==Ft c.lt.s Fs,Ft test si inférieur simple drapeau flottant à 1 si Fs<Ft c.le.s Fs,Ft test si inférieur ou égal simple drapeau flottant à 1 si Fs<=Ft c.lt.d Fs,Ft test si inférieur double drapeau flottant à 1 si Fs<Ft c.le.d Fs,Ft test si inférieur ou égal double drapeau flottant à 1 si Fs<=Ft Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 221 / 238

Type d instructions : virgule flottante (2/2) instructions flottantes cvt.d.s Fd,Fs conversion simple en double simple Fs; Fd (double)fs cvt.s.d Fd,Fs conversion double en simple double Fs; Fd (simple)fs cvt.s.w Fd,Fs conversion entier en simple int Fs; Fd (simple)fs cvt.d.w Fd,Fs conversion entier en double int Fs; Fd (double)fs cvt.w.s Fd,Fs conversion simple en entier simple Fs; Fd (int)fs cvt.w.d Fd,Fs conversion double en entier double Fs; Fd:=(int)Fs mul.s Fd,Fs,Ft multiplication flottante simple Fd Fs Ft mul.d Fd,Fs,Ft multiplication flottante double Fd Fs Ft div.s Fd,Fs,Ft division flottante simple Fd Fs/Ft div.d Fd,Fs,Ft division flottante double Fd Fs/Ft neg.s Fd,Fs,Ft opposé d un nombre simple flottant Fd - Fs neg.d Fd,Fs,Ft opposé d un nombre simple flottant Fd - Fs l.s Fd,@ chargement flottant simple précision Fd M[@] l.d Fd,@ chargement flottant double précision Fd M[@] mov.s Fd,Fs transfert d un nombre flottant simple précision Fd Fs mov.d Fd,Fs transfert d un nombre flottant Fd Fs double précision Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 222 / 238

Exemple de branchement s mod Rt 1 ou Rs2 épend de Les instructions de test s appelle, en langage conditionnels : beq, bne, bgt, bge, blt, ble exercice : coder le programme suivant en la if i/=j then f :=f+h ; end if f :=f-i ; beq $19,$20,L1 #aller en L1 si i=j add $16,$16,$18 #f :=f+h L1 : sub $16,$16,$19 39/112 Christophe Fiorio, EPU Montpellier 2008-2009 Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 223 / 238

Sous-programmes MIPS ne fournit pas d instruction permettant de définir des sous-programmes ou des macros. On doit utiliser des sauts/branchements qui modifient le CO : jal saute à une étiquette et garde un lien sur le lieu d exécution dans le registre $31 ; j saute sans sauvegarder l adresse de retour ; jr saute à une adresse stockée dans un registre. Lors de l appel de sous-programmes : On utilise les registres 4 à 7 pour le passage de paramètres ; $t0-$t9 sont sauvés par l appelant ; $s0-$s7 sont sauvés par l appelé. Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 224 / 238

Appels de sous-programmes imbriqués Utilisation d une pile (LIFO) pour le passage de paramètre et la sauvegarde de l adresse de retour. On utilise le registre $29 comme sommet de pile (registre SP) ; Il n y a pas d instruction PUSH et POP ; Équivalent de PUSH et POP en MIPS push : addi $29,$29,4 # sommet de pile ajusté sw $31,0($29) # sauvegarde de l adresse de retour jal procedure # saut à la procédure pop : lw $31,0($29) # restauration de $31 subi $29,$29,4 # ajustement du sommet de pile Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 225 / 238

Appels de sous-programmes : exemple [Talbot] (1/2) Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 226 / 238

Appels de sous-programmes : exemple [Talbot] (2/2) Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 227 / 238

Adressage des opérandes en MIPS Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 228 / 238

Exemple de boucle [Talbot] (1/2) Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 229 / 238

Exemple de boucle [Talbot] (2/2) Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 230 / 238