ARCHITECTURE DES MICROPROCESSEURS

Documents pareils
Rappels d architecture

Compilation (INF 564)

CM2 L architecture MIPS32

Architecture des ordinateurs

Conception de circuits numériques et architecture des ordinateurs

ASR1 TD7 : Un microprocesseur RISC 16 bits

Licence Sciences et Technologies Examen janvier 2010

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

Jeu d instructions NIOS II

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

Exécution des instructions machine

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits


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

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

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

Représentation d un entier en base b

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

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

Cours Informatique 1. Monsieur SADOUNI Salheddine

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

IV- Comment fonctionne un ordinateur?

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

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

Représentation des Nombres

Cours 1 : La compilation

Fonctionnement et performance des processeurs

Informatique Générale

Cours Informatique Master STEP

Limitations of the Playstation 3 for High Performance Cluster Computing

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

Ordinateurs, Structure et Applications

Tout savoir sur le matériel informatique

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

Cours d algorithmique pour la classe de 2nde

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

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

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

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)

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

GPA770 Microélectronique appliquée Exercices série A

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

Microprocesseur + Logiciel

Architecture matérielle des systèmes informatiques

Architecture des ordinateurs Introduction à l informatique

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

Compression Compression par dictionnaires

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

ISO/CEI NORME INTERNATIONALE

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

Organigramme / Algorigramme Dossier élève 1 SI

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

Gestion mémoire et Représentation intermédiaire

Introduction à l informatique en BCPST

Temps Réel. Jérôme Pouiller Septembre 2011

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

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

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

PIC : COURS ASSEMBLEUR

Éléments d'architecture des ordinateurs

Programmation en langage C

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

Cours 1 : Qu est-ce que la programmation?

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

J AUVRAY Systèmes Electroniques TRANSMISSION DES SIGNAUX NUMERIQUES : SIGNAUX EN BANDE DE BASE

TP 1. Prise en main du langage Python

Programmation assembleur : aperçu

Architecture des ordinateurs

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

V- Manipulations de nombres en binaire

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

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

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

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

Chapitre 4 : Les mémoires

Calcul Formel et Numérique, Partie I

Introduction au langage C

Corrigé des TD 1 à 5

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

SGM. Master S.T.S. mention informatique, première année. Isabelle Puaut. Septembre Université de Rennes I - IRISA

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Cours d Algorithmique et de Langage C v 3.0

STAGE IREM 0- Premiers pas en Python

Transmissions série et parallèle

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Traduction des Langages : Le Compilateur Micro Java

Algorithmique I. Algorithmique I p.1/??

Présentation du langage et premières fonctions

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

Enseignement secondaire technique

Algorithmique et Programmation, IMA

IFT1215 Introduction aux systèmes informatiques

Initiation au HPC - Généralités

REALISATION d'un. ORDONNANCEUR à ECHEANCES

2 Comment fonctionne un ordinateur, dans les grandes lignes

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

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

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

Transcription:

ES IN (Python) IN (C), IN & MO (OS, Unix) Couches logicielles Architecture Micro-architecture Logique/Arithmétique Circuit logique Circuit analogique Dispositif Physique ARCHITECTURE DES MICROPROCESSEURS (INTRODUCTION) ES / CM8 8 4 9 9 ES/CM8 DERRIÈRE VOTRE PROGRAMME C swap(int v[],int k) { int temp; temp=v[k]; v[k]=v[k+]; v[k+]=temp; } compilation C langage de l embarqué, du calcul intensif et des systèmes d exploitation! IN instruction élémentaire exécutée en une (ou quelques) période(s) d horloge swap: sll $ $ add $ $4 $ lw $ ($) lw $ 4($) sw $ ($) sw $ 4($) jr $ langage assembleur (variante lisible du langage machine) processus langage machine exécution programme s exécutant sur une machine dépend du type de machine visée Ici, jeu d instruction MIPS bits (origine de la révolution RISC)

ES/CM8 BESOIN DE PLUS DE REGISTRES (que dans la calculette primitive) pour supporter des algorithmes courants Registre load CK R load d q dff d q dff d q dff d q dff load= : chargement nouvelle load= : maintien ancienne CK CK CK CK chaque registre portera typiquement une variable de calcul on veut pouvoir en combiner au choix à chaque période d horloge pour cela, il faut pouvoir récupérer le contenu de n importe quel couple de registres parmi de multiples accessibles, faire une opération sur les deux opérandes ainsi récupérés, et ranger le résultat dans n importe quel registre! registres regroupés en banc pour répondre à ce besoin ES/CM8 numéro de registre! sw sw sw sw sw sw load d_in R d_out d_out 4 Décodeur d (PC4) SR = Select Read SR = Select Read = Select Write Exemple avec 8 registres bits! kt CK SR SR data in data out data out un seul load à décodeur 4 load load load4 load load load load R R R4 R R R R BANC DE REGISTRES 4 SR 4 SR multiplexeurs numériques 8 vers

ES/CM8 SR SR BANC DE REGISTRES () lu lu d_out d_out d_in décodeur Les registres ont aussi des «"petits noms"», selon certaines spécificités : t, s, ra, a, v, sp R souvent remplacé par la constante numérique et appelé registre zéro : - utile pour particulariser certaines opérations - permet de n écrire sur aucun registre avec = 4 load load load load4 load load load d_in inutilisé Ci-après, banc de registres avec registres bits (MIPS I) R R R R4 R R R d_out 4 SR d_out 4 SR multiplexeurs numériques 8 vers ES/CM8 SO LU a b a b LU = CHEMIN DE DONNÉES POUR PROCESSEUR SO : Select Operation +/ " r r SR SR lu lu SO > = = Unité Logique & Arithmétique Instruction = { SR, SR, SO, } : les signaux de commande du CD

ES/CM8 DONNÉES EN MÉMOIRE Banc de registres trop exigu pour des s nombreuses ici de largeur Adresse Exemple de contenu (ligne par ligne / mot par mot) bits (MIPS I) - 4-8 - - - - 4-8 - ex. : la chaîne «"ES"» débute à l = (n de ligne) " 4 " 4 car on compte en octets ainsi, chaque caractère d une chaîne a une propre caractère S caractère E caractère caractère NUL situé à l? entier entier - (si signé) réel / en format flottant 4 bits (cf. PC/Exo) chaîne «"ES"» en code ASCII entier? de S! pointeur du langage C... en langage C, toute chaîne est «"terminée"» par un NUL NUL remplit aussi les octets restants sur la ligne (alignement) ES/CM8 tableau de bits de contenance n octets, chacun avec une propre : son numéro, sur n bits espaces adressables pour n puissance de : n=! 4 gigaoctets (désormais bien étroit) n=4! exaoctets (gigantesque) MÉMOIRE de largeur l, donc comportant n /l lignes (mots) chacune accessible en lecture (RW = ) R : read ou en ure (RW = ) W : write sur présentation de son comparé aux registres, stockage bien + dense (CM9) mais séquencement + complexe (possible lenteur d accès) accueillant des s de taille variable, selon leur type, multiple de l sauf exception il faut sauter du bon nombre d octets pour passer à la suivante d un tableau... accueillant aussi des s de s ou encore des instructions (mémoire dédiée ici) MI MD l= RW de s n= l= MIPS I : n = l = instruction 8

ES/CM8 CHEMIN DE DONNÉES ÉTENDU 9 Pas d échange de s direct entre mémoire et : architecture dite load-store Adresses mémoire élaborées par l : ce sont les pointeurs du langage C R/W Entrée din pour usage ultérieur spécifique L instruction { SR, SR, SO, } se complexifie : R/W et commandes des MUX en plus SR SR lu lu din SO > = de s Bus multiplexés ES/CM8 CODAGE DES INSTRUCTIONS Redondance entre SO, R/W et les commandes des MUX ; cas inutilisés! on code chaque instruction pour gagner en concision, en lui attribuant un numéro propre : le code opératoire sur bits en MIPS SR, SR et restent en clair car indépendants/orthogonaux sur bits chacun car registres en MIPS I instruction structurée en champs successifs instruction codée # décodage «"live"» nécessaire! à la charge de l UC (unité de commande) code opératoire sur bits RI op rs rt rd r = reg. SR SR lu lu din Exemple ultérieur SO > = de s R/W

ES/CM8 Registre Program d Counter d instruction (PC) UC PARTIELLE instruction vers UC RI op rs rt rd r = reg. SR SR lu lu > = de s depuis UC ES/CM8 Registre d d instruction décompte en instructions ici en octets ("4) là instruction RI op rs rt rd Program Counter (PC) état de l UC g UC lu lu f UC CHARGEMENT INSTRUCTION SUIVANTE Mécanisme atomique pour exécuter une suite prédéterminée d opérations - indépendante des s UC : chaîne d états liés par des transitions inconditionnelles Comportement implanté avec une mémoire (g UC ) adressée par un compteur (f UC ) L présentée à la mémoire est incrémentée de 4 à chaque période d horloge pour désigner l instruction suivante, située 4 octets plus loin, car largeur d instruction = bits

ES/CM8 types : Opérations sur les s : addition, soustraction, multiplication opérations logiques décalages (tournant ou pas), copie INSTRUCTIONS Transferts de s : de registre vers mémoire (ure, store) de mémoire vers registre (lecture, load) Gestion de séquencement : sauts (jump) et branchements (branch) sous-programme : appel & retour (call & return) R I J fait intervenir les registres seulement accès indirect aux s exploite pointeur sur mémoire de s procède par saut (jump) exploite pointeur sur mémoire environ instructions au total, d où bits alloués au code opératoire! passage en revue de - exemples caractéristiques pour chaque type examen de leur réalisation sur CD + UC, voire de leur raison d être apprécier l économie de moyens ES/CM8 4 LE PREMIER MICROPROCESSEUR Intel 44 novembre 9 Federico Faggin Ted Hoff Stan Mazor kt, pmos µm, 4kHz, registres entiers 4 bits, s bits, 4 instructions 8 bits # MIPS I, où tout est sur bits

ES/CM8 R ES/CM8 compteur de programme : PC INSTRUCTION ARITHMÉTIQUE R opérandes de l instruction add instruction RI op rs rt rd r = reg. lu=s lu=s =t add $t,$s,$s t$$s+$s t, s, s : noms de registres = Unité Logique & Arithmétique > = de s

ES/CM8 compteur de programme : PC instruction RI op rs rt rd r = reg. lu lu=s =t AVEC VALEUR IMMÉDIATE addi $t,$s, t$$s+ correspond à une ligne C t. q. k=j+; Incrément logé dans l instruction même, au lieu d être chargé dans un registre > = de s R ES/CM8 code opératoire de addi, à décoder par l UC, pour savoir comment exploiter le reste de l instruction et piloter le CD RI op rs rt rd r = reg. ZOOM SUR ADDI registre n : s registre n 8 : t entier lu lu=s addi $t,$s, =t la véritable instruction, sur bits représentation en langage assembleur de l instruction d addition immédiate > = de s 8

ES/CM8 9 I La mémoire de s (MD) entre en jeu. Ci-après, la MD héberge un tableau d entiers data, à partir d une certaine, chargée dans le registre s. L élément data[] se trouve donc à l $s+ pointeur du langage C = " (4 octets) ES/CM8 compteur de programme : PC CHARGEMENT DE DONNÉE I instruction RI op rs rt rd r = reg. lu lu=s =t l $s+! le registre t reçoit la valeur de data[] lw $t,$s+ «"load word"» t reçoit le contenu de la mémoire à > = de s R (R/W=)

ES/CM8 compteur de programme : PC instruction RI op rs rt rd r = reg. lu=t lu=s STOCKAGE DE DONNÉE sw $t,$s+ «"store word"» $t est stocké/ en mémoire à l $s+! data[] reçoit la valeur contenue dans le registre t > = de s I W (R/W=) ES/CM8 J Jusqu ici, la prochaine instruction exécutée était la suivante en mémoire (f UC : compteur). Mais, casser parfois cette routine va s avérer d un grand intérêt. Idée : utiliser des instructions dédiées pour altérer le fonctionnement du compteur.

ES/CM8 if then IF THEN ELSE Le if : du Python est un if then en C else if then else Besoin d un branchement (branch) qui, selon le résultat du test if, saute vers then ou poursuit avec l instruction suivante, débutant ainsi else J ex. avec else supposée de longueur 8 : beq $s, $s, +9 (branch if equal) Si $s=$s, sauter 9 instructions plus loin, sinon avancer à la suivante (comme d habitude). t A l exécution, selon le résultat du test if, on exécute soit then soit else en mémoire after En mémoire, ces segments de code sont installés les uns derrière les autres : les segments else et then doivent donc pouvoir être sautés. Une fois else exécuté, besoin d un saut (jump) systématique par dessus then pour atteindre after j BeginAfter (jump) BeginAfter = symbolique, aussi appelée étiquette, de la première instruction du segment after. ES/CM8 compteur de programme : PC instruction There RI op rs rt rd r = reg. lu lu j There saut à l «"There"» de la mémoire C est au vu du code opératoire de j que l UC dirige There vers le PC SAUT jump > = de s J 4

ES/CM8 compteur de programme : PC instruction RI op rs rt rd r = reg. +9 lu=s lu=s BRANCHEMENT «"repère"» relatif à l instruction courante beq $s,$s,+9 branch if equal O_o le CD pilote l UC? Branchements vers l arrière utiles également, pour les boucles while > = de s J ES/CM8 n=fact(k); int fact(int i) { } Déclaration d une fonction en C return_add SOUS-PROGRAMMES Appel Retour Quelque part en mémoire jal add_fact jal : jump and link - saute vers add_fact et mémorise return_add dans le registre ra jr $ra : jump register - saute vers l contenue dans le registre ra add_fact appel retour Quelque part ailleurs en mémoire jr $ra J Sousprogramme «"fact"»

ES/CM8 compteur de programme : PC RESTE DE L UC Outre charger l instruction, il faut la décoder puis l exécuter instruction RI op rs rt rd lu lu Unité de commande > = de s R/W ES/CM8 petit segment de code L instruction lw (load word) de chargement de s apparaît la plus longue : étapes successives irréductibles : lecture/décodage de l instruction lecture du registre portant l de base du tableau où se trouve la en mémoire calcul de l de la, à partir de son indice, passé en, et de la base récupération de la en provenance de la mémoire ure dans un registre tentant de pipeliner ces étapes en étages : CK lw $t,($t) bne $t,$s,exit add $s,$s,$s MI Reg MI? Reg MI MD Reg Reg MD? Reg MD Reg PIPE-LINE MI Reg MD Banc de registres : lecture de s Reg Banc de registres : ure Mais : comment utiliser $t alors qu il n est pas encore calculé? quid de charger une instruction sans savoir si c est la bonne? 8 instruction exécutée! à l UC de gérer