Architecture des systèmes informatiques

Documents pareils
Architecture des ordinateurs

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

Programmation assembleur : aperçu

Rappels d architecture

Initiation à l algorithmique

Architecture des ordinateurs

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

Structure d un programme

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

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

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

Java Licence Professionnelle CISII,

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

Programme Compte bancaire (code)

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)

Compilation (INF 564)

IRL : Simulation distribuée pour les systèmes embarqués

Cours d algorithmique pour la classe de 2nde

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Recommandations techniques

Gestion mémoire et Représentation intermédiaire

Premiers Pas en Programmation Objet : les Classes et les Objets

Conception de circuits numériques et architecture des ordinateurs

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

as Architecture des Systèmes d Information

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

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

Génie Logiciel avec Ada. 4 février 2013

Le langage C. Séance n 4

Mise en route de votre collier GPS Pet Tracker

Licence Sciences et Technologies Examen janvier 2010

CM2 L architecture MIPS32

Présentation du langage et premières fonctions

La JVM. La machine virtuelle Java. La JVM. La JVM

I00 Éléments d architecture

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

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

HYPERDRIVE iusbport Guide d utilisation

UTILISATION DU LIVRE NUMÉRIQUE

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

TD3: tableaux avancées, première classe et chaînes

LOGO Smartphones, tablettes, et autres gadgets quel impact sur notre métier d ASR

Numilog - Téléchargement des ebooks Mode d emploi

OUTILS DE TRANSFERT DE FICHIER VERS LISEUSES ET IPAD

Chapitre VI- La validation de la composition.

2011 / Utilisation des smartphones Android (HTC) à la HES SO Fribourg. Service informatique. Version Date Description

Algorithmique, Structures de données et langage C


Le touristonaute en mobilité

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Microprocesseur + Logiciel

Package Java.util Classe générique

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

Introduction à MATLAB R

ASR1 TD7 : Un microprocesseur RISC 16 bits

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

I) INTRODUCTION... 3 II) ENREGISTREMENT DE SON TYROS

Cours de Programmation Impérative: Zones de mémoires et pointeurs

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

Introduction au langage C

STAGE IREM 0- Premiers pas en Python

Chapitre 1 L interface de Windows 7 9

Solutions informatiques (SI) Semestre 1

Lire, dire et écrire en utilisant les cartes heuristiques. OBJECTIFS

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Les algorithmes de base du graphisme

Le système de gestion de version Git et GitHub

TP 1. Prise en main du langage Python

2. Pour accéder au Prêt numérique, écrivez dans la barre d adresse de votre navigateur Web.

Derrière toi Une machine virtuelle!

Trixbox: Asterisk packagé. Unité Réseaux du CNRS

Corrigé des exercices sur les références

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Cours de Systèmes d Exploitation

Crédits... xi. Préface...xv. Chapitre 1. Démarrer et arrêter...1. Chapitre 2. L interface utilisateur...25

Programmer en JAVA. par Tama

Synchroniser ses photos

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Fonctions. Solution professionnelle pour le stockage de données, la synchronisation multi- plateformes et la collaboration

Spétechs Mobile. Octobre 2013

SmartCaisse, depuis Prise de Commande IPhone, IPad (2, 3 et mini), IPod et tablette Android SmartCaisse

2011 / Utilisation des smartphones Android (HTC) à la HES SO // Fribourg. Service informatique. Version Date Description

Les. Tablettes. Érik Langlois, erg. ATP, IRDPQ Jean-Marie D Amour, coordonnateur de l'accessibilité des technologies, INLB

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Présentation. Référenciel : textes officiels

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Guide de conseil en équipement. Édition 2014

Cours 1 : La compilation

TP, première séquence d exercices.

Modules InnovationCRM

2. Pour accéder au Prêt numérique, écrivez dans la barre d adresse de votre navigateur Web.

Technologies mobiles & Tourisme: la révolution? Denis Genevois Marche-en Janvier 2011

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

TP1 : Initiation à Java et Eclipse

Architecture des ordinateurs Introduction à l informatique

Transcription:

1/24 5 : Architecture des systèmes informatiques Chapitre 5 : Idir AIT SADOUNE CentraleSupélec - Département Informatique 3, rue Joliot-Curie, 91192 Gif-sur-Yvette cedex <idir.aitsadoune@centralesupelec.fr> Année scolaire 2015-2016, Séquence 5

2/24 Outline 5 :

3/24 Mode immédiat AQ := arg 5 : Intérêt donner des constantes Inconvénient uniquement pour les constantes

4/24 Mode direct AQ := Mem[arg] 5 : Intérêt manipuler des variables Inconvénient le programme est lié à la variable

5/24 Mode indirect AQ :=Mem[Mem[arg]] 5 : Intérêt pointeurs/références, travail générique sur plusieurs variables Inconvénient une indirection supplémentaire

6/24 Mode relatif AQ :=Mem[CO + arg] 5 : Intérêt code indépendant de sa position (utile surtout pour les branchements)

7/24 Mode indexé : indicé 5 : AQ :=Mem[TAB + arg] (AQ := TAB[X]) Intérêt parcours d un tableau en faisant varier la valeur de l index

8/24 Mode indexé : pointé AQ :=Mem[X+2] (AQ := X.(attribut num 3)) 5 : Intérêt accès à un attribut d un objet désigné par le registre X

9/24 Récapitulatif indicé / pointé 5 : Partie fixe Partie variable > argument > registre d index X indicé (accès tableau) adresse du tableau indice pointé (accès objet) position de l attribut adresse de l objet

10/24 Variante indexé : post-incrément AQ :=Mem[0+X] puis X := X+1 5 : Autres variantes pré-incrément, post-décrément, pré-décrément,... Intérêt gestion de pile

11/24 Manipulation d une pile 5 : Convention pour cette pile : Le pointeur de pile pointe sur la première place libre La pile progresse vers les adresses croissantes Autres conventions possibles

12/24 Indirect et indexé : pré-indexé AQ :=Mem[Mem[arg+X]] 5 : Intérêt combinaison des avantages de l indexé et de l indirect tableau contenant des adresses de variables (tableau de pointeurs/références)

13/24 Indirect et indexé : post-indexé AQ :=Mem[Mem[arg]+X] 5 : Intérêt programme pouvant travailler sur différents tableaux (référence à un tableau)

14/24 5 : Mécanisme classique dans les langages évolués (appel d une méthode en Java...)

14/24 5 : Mécanisme classique dans les langages évolués (appel d une méthode en Java...) Mécanisme indispensable (modularité)

5/24 5 : Appel de sous programme (JSR) mémoriser l adresse de retour (l adresse de l instruction située après le JSR) Retour du sous-programme (RTS) restaurer l adresse de retour

15/24 5 : Appel de sous programme (JSR) mémoriser l adresse de retour (l adresse de l instruction située après le JSR) Retour du sous-programme (RTS) restaurer l adresse de retour Machine à 8 accumulateurs (R0,..., R7) R0,..., R6 sont utilisés pour les arguments de la fonction R0 est utilisé pour le résultat de la fonction

6/24 solution 1 Lors du JSR, l adresse de retour est stockée dans un registre interne au processeur (R7 := CO) Lors du RTS : (CO := R7) 5 : MOV R0, #5 JSR incr % R7 := CO et CO := @incr MOV R1, R0... @incr ADD R0, #1 RTS % CO := R7

16/24 solution 1 Lors du JSR, l adresse de retour est stockée dans un registre interne au processeur (R7 := CO) Lors du RTS : (CO := R7) 5 : MOV R0, #5 JSR incr % R7 := CO et CO := @incr MOV R1, R0... @incr ADD R0, #1 RTS % CO := R7 Problème : que faire quand SP1 appelle SP2?

17/24 5 : solution 2 Lors du JSR, l adresse de retour est stockée dans un mot mémoire spécifique au sous-programme (par exemple : mot situé juste avant le sous-programme) Problème : que faire quand SP1 appelle SP1 (récursion)?

18/24 solution 3 Utilisation d une pile et d un registre pointeur de pile (SP) interne au processeur lors du JSR, l adresse de retour est empilée (PUSH CO) lors du RTS, l adresse de retour est dépilée (PULL CO) 5 : MOV R0, #24 MOV R1, #16 JSR pgcd % PUSH CO et CO := @pgcd... @pgcd CMP R0, R1 JEQ fpgcd JAN else SUB R0 R1 JSR pgcd % PUSH CO et CO := @pgcd JMP fpgcd @else SUB R1 R0 JSR pgcd % PUSH CO et CO := @pgcd @fpgcd RTS % PULL CO

9/24 Communication entre sous-programmes Problème à résoudre passage des arguments et retour du résultat 5 :

9/24 Communication entre sous-programmes Problème à résoudre passage des arguments et retour du résultat 5 : mêmes problèmes... Registres internes que faire quand SP1 passe des arguments à SP2? Mots réservé récursion?

19/24 Communication entre sous-programmes Problème à résoudre passage des arguments et retour du résultat 5 : mêmes problèmes... Registres internes que faire quand SP1 passe des arguments à SP2? Mots réservé récursion?... même solution Les arguments sont empilés Une place est réservée dans la pile pour la valeur de retour La pile est aussi utilisée pour les variables locales, la sauvegarde de registres...

0/24 Appel d un sous-programme 5 : Example int a = 5 ; int b = 15 ; int res = PGCD(a, b) ;

20/24 Appel d un sous-programme 5 : Example int a = 5 ; int b = 15 ; int res = PGCD(a, b) ; PUSH b PUSH a PUSH #0 JSR PGCD % PUSH CO et CO := @pgcd PULL res PULL a PULL b

21/24 Exécution d un sous-programme 5 : Example int PGCD(int a, int b) { if (a == b) return a ; if (a > b) return PGCD(a-b,b) ; if (a < b) return PGCD(a,b-a) ; }

22/24 Exécution d un sous-programme 5 : PUSH R7 MOV R7, SP % récupérer l adresse de la tête de pile PUSH R6 MOV R6, R7 SUB R6, #2 PUSH R0 LDA R0, [R6] % récupérer a MOV R6, R7 SUB R6, #3 PUSH R1 LDA R1, [R6] % récupérer b... MOV SP, R7 % restituer l adresse de la tête de pile PULL R1 PULL R0 PULL R6 PULL R7 RTS % PULL CO

3/24 Processeurs actuels 5 : Certains registres sont réservés pour le passage d arguments

3/24 Processeurs actuels 5 : Certains registres sont réservés pour le passage d arguments Si des arguments supplémentaires sont nécessaires, ils sont empilés

23/24 Processeurs actuels 5 : Certains registres sont réservés pour le passage d arguments Si des arguments supplémentaires sont nécessaires, ils sont empilés Si SP1 appelle SP2 (ou SP1), il doit sauvegarder (dans la pile!) les valeurs des registres dédiés

4/24 Exemple : ARM (embarqué) 5 : Utilisations mobiles (Android, iphone, BlackBerry...) consoles, tablettes (ipad...), baladeurs (ipod...) équipements réseau (routeurs, set-top-boxes)

24/24 Exemple : ARM (embarqué) 5 : Utilisations mobiles (Android, iphone, BlackBerry...) consoles, tablettes (ipad...), baladeurs (ipod...) équipements réseau (routeurs, set-top-boxes) Architecture «RISC» 16 registres : r0 à r15 r15 : compteur ordinal r14 : link register (adresse de retour lors d un appel) r13 : pointeur de pile r4 à r12 : variables de travail (locales) lors d un calcul r0 à r3 : arguments transmis à un sous-programme... le reste est placé sur la pile!