Architecture matérielle et logicielle : introduction.

Documents pareils
Conception de circuits numériques et architecture des ordinateurs

Éléments d'architecture des ordinateurs

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

IV- Comment fonctionne un ordinateur?

Rappels d architecture

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

Le langage C. Séance n 4

Tout savoir sur le matériel informatique

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Exécution des instructions machine

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours Informatique 1. Monsieur SADOUNI Salheddine

Structure d un programme

ELP 304 : Électronique Numérique. Cours 1 Introduction

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

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

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

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Introduction au langage C

Cours 1 : La compilation

Compilation (INF 564)

Microprocesseur + Logiciel

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Samsung Drive Manager FAQ

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

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

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits


Programmation assembleur : aperçu

Cours Langage C/C++ Programmation modulaire

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

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

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

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

Chapitre VI- La validation de la composition.

ALGORITHMIQUE ET PROGRAMMATION En C

Les chaînes de caractères

Initiation. àl algorithmique et à la programmation. en C

Concept de machine virtuelle

SRS DAY: Problématique liée à la virtualisation

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

ASR1 TD7 : Un microprocesseur RISC 16 bits

Représentation d un entier en base b

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

Algorithmique et Programmation, IMA

I00 Éléments d architecture

Une version javascript sera disponible directement dans le cours prochainement.

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Télécom Nancy Année

Architecture des ordinateurs

Windows 8 Installation et configuration

Initiation à la sécurité

Vers l'ordinateur quantique

Chapitre 10 Arithmétique réelle

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

1/ Présentation de SQL Server :

Rappels Entrées -Sorties

Compression de Données - Algorithme de Huffman Document de Conception

Annexe : La Programmation Informatique

I.1- DÉFINITIONS ET NOTIONS DE BASE

Le prototype de la fonction main()

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

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

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Programmation en langage C

Programmation système I Les entrées/sorties

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Machines virtuelles Cours 1 : Introduction

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

Architecture des ordinateurs Introduction à l informatique

I. Introduction aux fonctions : les fonctions standards

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

Une introduction à Java

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

Informatique Générale

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

Le Raid c est quoi? Comment ca marche? Les différents modes RAID :

Conservation des documents numériques

Gestion et impression

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

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Cours Programmation Système

Projet de Veille Technologique

Programmation Orientée Objet

Cours 3 : L'ordinateur

Architecture des ordinateurs

Hubert & Bruno Lundi 12 octobre 2009 SAINT-QUENTIN (02)

Cours: Administration d'une Base de Données

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

Configuration système requise pour les grandes et moyennes entreprises

Architecture des Ordinateurs Première partie. Licence d Informatique - IUP Miage - FIIFO

V- Manipulations de nombres en binaire

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

BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS

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

Cours d Algorithmique et de Langage C v 3.0

Copie de sauvegarde de votre disque dur

Systèmes d exploitation

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

Transcription:

Architecture matérielle et logicielle : introduction. 1 Organisation de l'ordinateur par niveaux Niveau 0 : circuits logiques Niveau 1 : micro-architecture Niveau 2 : architecture Niveau 3 : système d'exploitation Niveau 4 : langage d'assemblage Niveau 5 : langage de programmation Un exemple pour résumer 2 Conclusion Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 1 / 13

Un ordinateur ne peut exécuter qu'un nombre resteint d'instructions : additionner deux nombres, tester l'égalité d'un nombre à zéro, copier des données d'une zone de la mémoire à une autre,... L'ensemble de ces instructions de base forme un langage appelé langage machine, qui permet de programmer l'ordinateur : on appelle programme la séquence d'instructions décrivant la réalisation d'un certain traitement. Le langage machine est si élémentaire qu'il est fastidieux de programmer ainsi. Pour faciliter la tâche du programmeur, des niveaux d'abstraction s'empilent donc au dessus du matériel : on parle d'organisation par niveaux de l'ordinateur. Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 2 / 13

Niveau 0 : circuits logiques Ce niveau comprend les portes logiques qui permettent à l'ordinateur d'eectuer des traitements de données élémentaires. Ces portes logiques sont aujourd'hui réalisées à l'aide de transistors. Chaque porte présente des entrées prenant comme valeur 0 ou 1, et applique à ces entrées une fonction logique simple : NOT, AND, OR... Les ordinateurs manipulent donc de façon privilégiée des informations codées en binaire. V cc V 1 V 2 V s V 1 V 2 V s 0 0 1 0 1 0 1 0 0 a b a + b 1 1 0 Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 3 / 13

Niveau 1 : micro-architecture Avec les portes logiques, on peut concevoir des unités de traitement évoluées. Chaque ordinateur dispose d'un processeur (appellé aussi unité centrale de traitement), qui comprend de nombreux circuits, dont : une unité arithmétique et logique qui eectue les opérations de base, une unité de contrôle, chargée de gérer l'exécution des opérations élémentaires dans un certain ordre. Le niveau micro-architecture comprend tout le matériel chargé de l'exécution eective des instructions du langage machine. Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 4 / 13

Ex : diagramme repésentant la micro-architecture du processeur Intel 8080 : Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 5 / 13

Niveau 2 : architecture L'architecture décrit le principe général de fonctionnement de l'ordinateur, pour permettre à un programmeur de l'utiliser au travers du langage machine. Dénir une architecture, c'est dénir tous les attributs d'un ordinateur qui sont visibles au programmeur lorsqu'il programme en langage machine. Citons quatre attributs dénissant une architecture : le jeu d'instructions qui compose le langage machine, les registres que le programmeur peut utiliser, la manière dont la mémoire de l'ordinateur est organisée, les types de données élémentaires (entiers, nombres ottants). On parle aussi d'isa pour Instruction Set Architecture. Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 6 / 13

Ex : jeu d'instructions de l'architecture LC3 : instruction action nzp codage en langage machine opcode arguments F E D C B A 9 8 7 6 5 4 3 2 1 0 NOT DR,SR DR <- not SR * 1 0 0 1 DR SR 1 1 1 1 1 1 ADD DR,SR1,SR2 DR <- SR1 + SR2 * 0 0 0 1 DR SR1 0 0 0 SR2 ADD DR,SR1,Imm5 DR <- SR1 + SEXT(Imm5) * 0 0 0 1 DR SR1 1 Imm5 AND DR,SR1,SR2 DR <- SR1 and SR2 * 0 1 0 1 DR SR1 0 0 0 SR2 AND DR,SR1,Imm5 DR <- SR1 and SEXT(Imm5) * 0 1 0 1 DR SR1 1 Imm5 LEA DR,label DR <- PC + SEXT(PCoset9) * 1 1 1 0 DR PCoset9 LD DR,label DR <- mem[pc + SEXT(PCoset9)] * 0 0 1 0 DR PCoset9 ST SR,label mem[pc + SEXT(PCoset9)] <- SR 0 0 1 1 SR PCoset9 LDR DR,BaseR,Oset6 DR <- mem[baser + SEXT(Oset6)] * 0 1 1 0 DR BaseR Oset6 STR SR,BaseR,Oset6 mem[baser + SEXT(Oset6)] <- SR 0 1 1 1 SR BaseR Oset6 LDI DR,label DR <- mem[mem[pc + SEXT(PCoset9)]] * 1 0 1 0 DR PCoset9 STI SR,label mem[mem[pc + SEXT(PCoset9)]] <- SR 1 0 1 1 SR PCoset9 BR[n][z][p] label Si (cond) PC <- PC + SEXT(PCoset9) 0 0 0 0 n z p PCoset9 NOP No Operation 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 JMP BaseR PC <- BaseR 1 1 0 0 0 0 0 BaseR 0 0 0 0 0 0 RET (JMP R7) PC <- R7 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 JSR label R7 <- PC ; PC <- PC + SEXT(PCoset11) 0 1 0 0 1 PCoset11 JSRR BaseR R7 <- PC ; PC <- BaseR 0 1 0 0 0 0 0 BaseR 0 0 0 0 0 0 RTI cf. interruptions 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 TRAP Trapvect8 R7 <- PC ; PC <- mem[trapvect8] 1 1 1 1 0 0 0 0 Trapvect8 Réservé 1 1 0 1 Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 7 / 13

Niveau 3 : système d'exploitation Le système d'exploitation est un programme qui introduit un niveau d'abstraction entre le programmeur (ou plus généralement l'utilisateur d'une machine), et le matériel. Il fournit au programmeur une interface de gestion du matériel (mémoire, périphériques, exécution des programmes... ) identique sur de nombreuses architectures diérentes. Ex : Linux a été adapté à de nombreuses architectures : ARM, x86, Power... Si un programmeur écrit un programme qui réalise des accès au disque dur en utilisant les primitives fournies par Linux, ce programme fonctionnera correctement sur ARM, x86 ou PowerPC. Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 8 / 13

Niveau 4 : langage d'assemblage Ce niveau fournit un langage intermédiaire permettant au programmeur de coder plus facilement qu'en langage machine, appelé langage d'assemblage. En eet, les instructions du langage machine ne sont que des suites de bits, facilement exécutables par le processeur, mais illisibles pour le programmeur. Les langages d'assemblage peuvent également fournir des facilités pour l'interaction avec le système d'exploitation. Les programmes écrits en langage d'assemblage sont traduits en langages de niveaux 2 et 3 à l'aide d'un programme appelé assembleur. Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 9 / 13

Niveau 5 : langage de programmation On trouve à ce niveau les langages de programmation de haut niveau, tel le C, le C++ ou le Caml. Ces langages fournissent un haut niveau d'abstraction, et permettent aux programmeurs de réaliser facilement des logiciels complexes. Les programmes codés dans ces langages de haut niveau sont traduits vers les niveaux 3 (système d'exploitation) et 4 (langage d'assemblage) par des compilateurs (par exemple GCC, ICC ou CLANG pour le C/C++). Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 10 / 13

Prenons un exemple pour illustrer tout cela... On considère par exemple un programme écrit en C, un langage de haut niveau : #include <stdio.h> char car; int main(void) { printf("hi!\n"); // appel à une primitive de l'os printf("entrez un caractere...\n"); car = getchar(); // appel à une primitive de l'os printf("vous avez entre : "); putchar(car); // appel à une primitive de l'os putchar('\n'); printf("bye!\n"); return(0); } Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 11 / 13

Le programme traduit dans le langage d'assemblage du LC3 par un compilateur : LEA R0,msg0 ; charge l'adresse effective désignée par msg0 dans R0 ; affiche la chaine pointée par R0 LEA R0,msg1 ; ; affiche la chaine à l'adresse msg1 TRAP x20 ; lit un caractère et le place dans R0 ST R0,car ; stocke le caractère lu à l'adresse car LEA R0,msg2 ; ; affiche la chaine à l'adresse msg2 LD R0,car ; charge le caractère stocké à l'adresse car dans R0 TRAP x21 ; affiche le caractère qui a été lu LEA R0,ret ; ; affiche un retour à la ligne LEA R0,msg3 ; ; affiche la chaine à l'adresse msg3 TRAP x25 ; termine le programme (rend la main à l'os) car:.blkw #1 ; case mémoire pour stocker un caractère lu msg0:.stringz "Hi!\n" msg1:.stringz "Entrez un caractere...\n" msg2:.stringz "Vous avez entre : " msg3:.stringz "Bye!\n" ret:.stringz "\n" Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 11 / 13

Le programme traduit en langage machine par l'assembleur : E00F F022 E012 F022 F020 3009 E026 F022 2006... On a la correspondance suivante pour chaque instruction : langage machine langage d'assemblage xe00f xf022 xe012 xf022 xf020 x3009 xe026 xf022 x2006... LEA R0,msg0 LEA R0,msg1 TRAP x20 ST R0,car LEA R0,msg2 LD R0,car Nous sommes descendus du niveau langage de haut niveau au niveau architecture : les niveaux micro-architecture et circuits logiques de l'ordinateur ciblé permettront ensuite l'exécution eective du programme. Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 11 / 13

niveau 5 niveau 4 niveau 3 niveau 2 langages de haut niveau compilateur langage d assemblage assembleur systeme d exploitation primitives architecture niveau 1 micro architecture niveau 0 circuits logiques La compréhension de chacun de ces niveaux permet de maîtriser la complexité de l'ordinateur :) On commencera par présenter une vue d'ensemble de l'ordinateur, en se reposant sur le modèle de Von Neumann. On repartira ensuite du niveau circuits logiques pour remonter jusqu'au niveau langage d'assemblage. Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 12 / 13

Conclusion Les ordinateurs permettent de couvrir un très large spectre d'applications, et certains orent une puissance de calcul considérable. Des interfaces ont été développées pour faciliter l'utilisation des ordinateurs. D'autre part, le modèle par niveaux permet au programmeur d'eectuer son travail sans se préoccuper des détails architecturaux de sa machine... Pourquoi donc étudier l'architecture des ordinateurs? Au delà de l'augmentation du nombre de transistors intégrés par processeur, et celle de la fréquence des processeurs, de nombreuses innovations architecturales ont été mises en place an d'améliorer la performance des machines. Le programmeur doit être capable de comprendre les caractéristiques de sa machine an de concevoir des programmes plus performants. Nicolas Louvet Architecture matérielle et logicielle : introduction. 22 janvier 2016 13 / 13