You are on page 1of 157

Architecture et Organisation des Ordinateurs

1re anne Ingnieurs en Informatique ENIT/Informatique

CHAPITRE I

Introduction

Architecture des Ordinateurs 1re anne ENIT/Informatique

Cest quoi une Organisation

Electronic Devices

Desired Behavior

Distance entre lectronique et comportement dsir Organisation: Intgration de diffrents composants et lments
Architecture des Ordinateurs 1re anne ENIT/Informatique 3

Cest quoi une Organisation


computer organization software

Electronic Devices

General Purpose Computer

Desired Behavior

Ordinateur : quipement qui aide joindre des composants lectroniques pour un comportement dsir
Architecture des Ordinateurs 1re anne ENIT/Informatique 4

Unit Centrale

1980 10 cartes pour faire un CPU: Central Processing Unit

2000 Unit centrale appele Microprocesseur!

Architecture des Ordinateurs 1re anne ENIT/Informatique

Piliers de lInformatique
Equipements de calcul universels
Turings Thesis: every computation can be performed by some Turing Machine : a theoretical universal computational device

Transformation du problme
Convertir une expression en langage naturel vers des lectrons qui tournent dans des circuit!
Cest le Gnie Informatique software & hardware.
Architecture des Ordinateurs 1re anne ENIT/Informatique 6

Machine de Turing

Calculateur universel !
Input : programme ou instructions de calcul + donnes Output : rsultats
Architecture des Ordinateurs 1re anne ENIT/Informatique 7

Niveaux dAbstraction
Comprtement dsir de lapplication

Natural Language Algorithm

Interfaces standards offrent


Portabilit software/hardware de partie tierce Elargir lusage

Program Machine Architecture Micro-architecture Logic Circuits

Les lments (blocks) de contruction


Architecture des Ordinateurs 1re anne ENIT/Informatique

Devices
8

Niveau programme
Les ordinateurs xcutent Application Program un programme appel Operating System systme dexploitation (OS). Les programmes utilisateurs (applicatifs) tournent sur la machine (larchitecture) par lintermdiaire de lOS.
Program (Software)

Architecture des Ordinateurs 1re anne ENIT/Informatique

Niveau Machine-1
Organisation/architecture de lordinateur
Spcification de toutes les fonctionnalits que la machine peut excuter; architecture de lensemble dinstructions (ISA)

Microarchitecture
Implmentation de lISA sur un microprocesseur spcifique
Architecture des Ordinateurs 1re anne ENIT/Informatique 10

Niveau Machine-2
Circuits logiques
Chaque composant fonctionnel de la microarchitecture est implment sur un ou plusieurs circuits logiques

Composants lectronique
Chaque circuit logique est implment sur un ou plusieurs composants lectronique avec un ensemble de transistors CMOS or NMOS or GaAs (etc.) transistors.
Architecture des Ordinateurs 1re anne ENIT/Informatique 11

Historique
17 sicle, calcul arithmtique simple: addition, soustraction PASCAL (1623-1662) effectue mcaniquement des additions et des soustractions LEIBNIZ (1646-1716) envisage quune machine puisse raisonner CHARLES BABBAGE (1792-1871) a construit en 1833 une machine calculer: la machine diffrences.
Programmable avec un langage assembleur trs simple ADA AUGUSTA LOVELACE, collaboratrice de BABBAGE et fille de LORD BYRON, a crit le premier programme informatique.
Architecture des Ordinateurs 1re anne ENIT/Informatique 12

Historique
1945 : ENIAC (Electronic Numerical Integrator And Calculator)
18 000 tubes 30 tonnes multiplie 2 nombres de 10 chiffres en 3 millisecondes donnes sur cartes perfores, mais programmes cbls en mmoire et donc, pour passer dun programme un autre, il faut dbrancher et rebrancher des centaines de cbles (ce nest pas vraiment le premier ordinateur au sens actuel).

Architecture des Ordinateurs 1re anne ENIT/Informatique

13

Historique
1945 : JOHN VON NEUMANN, associ lENIAC, propose un modle dordinateur qui fait une abstraction du programme et se lance dans la construction du EDVAC (Electronic Discrete Variable Automatic Computer) La machine de VON NEUMANN est ne:
Consiste en cinq composants de larchitecture moderne, appele architecture de VON NEUMANN.
Architecture des Ordinateurs 1re anne ENIT/Informatique 14

Historique
Premire gnration (1945-1955) : tubes vide
Tubes vide: pannes frquentes, difficiles dceler, ordinateurs demandant beaucoup de place.

Deuxime gnration (1955-1965)


Transistors: organisation de la machine autour dun bus ; stockage sur bande magntique ; crans ; etc.

Troisime gnration (1965-1980)


Circuits intgrs (puces) et des processeurs miniaturisation (ordinateurs plus petits, plus rapides et moins chers)
Architecture des Ordinateurs 1re anne ENIT/Informatique 15

Historique
Gammes de machines avec mme langage dassemblage, do la rutilisation des programmes. Multiprogrammation: plusieurs programmes en mmoire. Lorsquun programme entre en phase dentres-sorties, lUC passe lexcution dun autre programme.

Quatrime gnration ( partir de 1980)


Ordinateurs personnels et VLSI (Very Large Scale Intgration) : augmentation du nombre de transistors ; rseaux

Parallles, intelligents...
Architecture des Ordinateurs 1re anne ENIT/Informatique 16

Classification des ordinateurs


Superordinateurs (5 20M$)
Grande pice, applications scientifiques et militaires titanesques (lments finis, mto...) CRAY 2, NEC SX-2, Hitachi, IBM...

Serveurs d'entreprise, mainframe (1 5 M$)


Grosses bases de donnes avec de nombreux usagers (banques, rservations de lignes ariennes...) IBM ES/9000, CDC, AT&T NCR, Pyramid, Sequent, Unisys, DEC, HP, SUN.
Architecture des Ordinateurs 1re anne ENIT/Informatique 17

Classification des ordinateurs


Serveurs dpartementaux (50K$ 1 M$)
Grande pice, applications scientifiques et militaires titanesques (lments finis, mto...) CRAY 2, NEC SX-2, Hitachi, IBM...

Serveurs d'entreprise, mainframe (1 5 M$)


Grosses bases de donnes avec de nombreux usagers (banques, rservations de lignes ariennes...) IBM ES/9000, CDC, AT&T NCR, Pyramid, Sequent, Unisys, DEC, HP, SUN.

Architecture des Ordinateurs 1re anne ENIT/Informatique

18

Classification des ordinateurs


Serveurs dpartementaux (50K$ 1 M$)
Serveurs de fichiers, de bases de donnes, de calcul pour un groupe d'environ 100 personnes ou moins. DEC, HP, SUN, IBM, SGI, Data General...

Poste de travail (workstation), (4K$ 50K$)


CAO, dveloppement de logiciel, graphisme, multimdia, SUN, HP, IBM, DEC, SGI, NeXT...

Micro-ordinateur (100 4 K$)


Bureautique, simple (traitement de texte, administration, jeux...) IBM, APPLE, HP, Dell,

Architecture des Ordinateurs 1re anne ENIT/Informatique

19

Objectifs du cours
Les notions suivantes sont traites:
Organisation de Van Newman Systme de nombres binaire et reprsentation des donnes au niveau du microprocesseur Familiarisation avec les composants dun ordinateurs Cycle instruction Formats instructions Programmation assembleur
Le 8086 (Intel) Le MIPS ISA (notions de 80806)

Architecture des Ordinateurs 1re anne ENIT/Informatique

20

Notions darchitecture
Architecture des Ordinateurs ? Architecture de lensemble dinstructions de la machine + Organisation de la machine Architecture de lensemble dinstructions
Organisation dlments mmoires (registres, caches,). Reprsentation des types de donnes et structure de donnes. Ensemble dinstructions et leurs formats. Modes dadressage et types daccs aux lments data et instructions. Autres conditions exceptionnelles de la machine (Interruptions, erreurs,).

Architecture des Ordinateurs 1re anne ENIT/Informatique

21

Langages
Echange (int v[],int k,int k) { Programme en langage de haut niveau int temp ; (en C) temp = v[k] ; v[k] = v[k]; v[k] = temp; Compilateur C } Change: multi $2, S5, 4; add $2, $4, $2; . Assembleur 00000000101000010000000000011000 00000000100011100011000000100001.

Programme en langage assembleur (pour MIPS)

Programme en langage machine binaire (pour MIPS)


22

Architecture des Ordinateurs 1re anne ENIT/Informatique

Ensembles dinstructions
Exemples densembles dinstructions
Digital alpha HP PA-RISC SUN SPARC SGI MIPS INTEL

Les caractristiques dun ensemble dinstructions seront introduites par la suite travers ltude dun ensemble rel dinstructions: MIPS.
Architecture des Ordinateurs 1re anne ENIT/Informatique 23

Notions darchitecture

Ordinateur personnel

Ordinateur Processeur Contrle Chemin de donnes Mmoire (programmes en excution) Entres

Clavier, Souries

Disque dur
Sorties

Ecran, Imprimante
Architecture des Ordinateurs 1re anne ENIT/Informatique 24

Evolutions technologiques
1985 : Invention du processeur sur une seule puce et de lordinateur sur une seule plaque (PC, Stations de travail, ) Processeur : (Chaque 1.5 anne depuis 85) 2X en vitesse Mmoire : (Chaque 2 ans depuis 96) Capacit : 2X (DRAM) (64X, dernire dcennie) Disque dur : (Chaque anne) Capacit : 2X (250X, dernire dcennie)
Architecture des Ordinateurs 1re anne ENIT/Informatique 25

Fonction darchitecte
Application (Netscape) Systme dexploitation Compilateur Assembleur (Windows 2K) Processeur Mmoire Systme dE/S Chemin de donnes & Contrle Digital Design Circuit Design
transistors

Software Hardware

Architecture de lensemble dinstructions

Coordination entre plusieurs niveaux dabstraction


Architecture des Ordinateurs 1re anne ENIT/Informatique 26

Fonction darchitecte Prvoir l'volution


Au moment de l'tude du march, le concepteur doit prvoir ltat de la comptition au moment o le nouvel ordinateur arrivera sur le march.

Architecture des Ordinateurs 1re anne ENIT/Informatique

27

Rfrences
Principales
David Patterson et John Hennessy. Organisation et conception des ordinateurs, Dunod, 1994. Cours en Franais sur 8086 (Haggge).

Autres
Dominic Sweetman. See MIPS Run, 2nd edition, Morgan Kaufman Publishers, Inc. , 2003. Randall. The Art of Assembly Programming (8086): http://homepage.mac.com/randyhyde/webster.cs.u cr.edu/www.artofasm.com/Windows/index.html
Architecture des Ordinateurs 1re anne ENIT/Informatique 28

Plan du cours
Introduction Nombres binaires et reprsentations des donnes Architecture Van Newman Cycle Instruction Notions de bus mmoires, registres Le MIPS Le 8086 Les interruptions (8086) Le systme mmoire Le systmes E/S (8086)
Architecture des Ordinateurs 1re anne ENIT/Informatique 29

CHAPITRE II:

Nombres binaires et reprsentation des donnes

Architecture des Ordinateurs 1re anne ENIT/Informatique

30

Reprsentation en Mmoire
Visualiser octet en mmoire
1 0 0 1 0 0 0 1

Bit: cellule mmoire = 0/1 Octet : unit de base ou case de mmoire = 8 bits Mot: unit de manipulation = ensemble de 2, 4 ou doctets
8086: 2 octets, 16 bits; MIPS: 4 octets, 32 bits.
Architecture des Ordinateurs 1re anne ENIT/Informatique 31

Transfert vers ordinateur


Saisie par humain travers clavier, cases en mmoire, conversion en signaux . Processus de conversion
Touche clavier code standard enregistrement en mmoire A 65 1000001
0 1 0

sequence bit

Architecture des Ordinateurs 1re anne ENIT/Informatique

32

Systme Dcimal
On utilise dix symboles diffrents: {0,1,2,3,4,5,6,7,8,9} Nimporte quelle combinaison de ces symboles nous donne un nombre.

2334567
Poids fort Poids faible

345 , 567
Partie fractionnelle Partie entire
Architecture des Ordinateurs 1re anne ENIT/Informatique 33

Systme Dcimal
On utilise dix symboles diffrents: {0,1,2,3,4,5,6,7,8,9} Nimporte quelle combinaison de ces symboles nous donne un nombre.

2334567
Poids fort Poids faible

345 , 567
Partie fractionnelle Partie entire
Architecture des Ordinateurs 1re anne ENIT/Informatique 34

Systme Dcimal
123 base 10
= 1*10**2 + 2 * 10**1 + 3*10**0 = = 100 + 20 + 3

123.456 base 10
= 1*10**2 + 2*10**1 + 3*10**0 + 4*10**-1 + 5*10**-2 + 6*10**-3 = 100 + 20 + 3 + 0.4 + 0.05 + 0.006

Architecture des Ordinateurs 1re anne ENIT/Informatique

35

Systme Binaire
Le systme binaire utilise uniquement 2 symboles : { 0 , 1}!

Un bit

( 1101)2 ( 1 1 0 1)2

La base

Le bits du poids forts

Le bits du poids faible

Architecture des Ordinateurs 1re anne ENIT/Informatique

36

Systme Binaire
Un nombre dans la base 2 peut tre crit aussi sous forme polynomiale 11001010 base 2, conversion vers dcimal
= + = = 1*2**7 + 1*2**6 + 0*2**5 + 0*2**4 1*2**3 + 0*2**2 + 1*2**1 + 0*2**0 128 + 64 + 8 + 2 202 (base 10)
37

Architecture des Ordinateurs 1re anne ENIT/Informatique

Systme Binaire
Binaire 0 0 1 0 0 0 1 1

27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1

Donc,
00100012 = 0128+064+132+016+08+04+12+11 = 3510

Architecture des Ordinateurs 1re anne ENIT/Informatique

38

Systme Binaire
Diviser nombre par 2 Chiffre correspondant et reste de division Arrt quand quotient= 0

Architecture des Ordinateurs 1re anne ENIT/Informatique

39

Systme Binaire
3510 = _________ 2 1. Write down place values 2. Place 1 under the proper place values 3. Place 0 in all other places
128 64 32 16 8 4 2 1 1 0 0 1 1 1 0 0 0 1 1

Architecture des Ordinateurs 1re anne ENIT/Informatique

40

Systme Hexadcimal
Le systme binaire utilise 10 symboles : { 0 , 1, 2, , 9, A, B, C, D, E, F}!
( 1234)16 ou 1234h

1234h = 1 * 16**3 + 2 * 16**2 + 3 * 16**1 + 4 * 16**0 = 4096 + 512 + 48 + 4 = 4660 (dcimal) Exemples : 0DEADh, 0FEEDh, 0DEAFh.
Architecture des Ordinateurs 1re anne ENIT/Informatique 41

Systme Hexadcimal
Binaire 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Hexadcimal 0 1 2 3 4 5 6 7 8 9 A B C D E F
42

1234h = 0001 0010 0011 0100

0DEADh = 0000 1101 1110 1010 1101

Architecture des Ordinateurs 1re anne ENIT/Informatique

Reprsentation des nombres


Reprsentation distinguant le positif du ngatif :
Utilisation de 1 bit de signe : 0 va avoir une reprsentation positive et ngative Un nombre ayant deux reprsentations est plus grave qu'un dsquilibre entre les nombres positifs et les nombres ngatifs. Complment 2 (adopter pour les ordinateurs 32 bits)

0000 0000 0000 0000 0000 0000 0000 0000deux = 0 dix 0000 0000 0000 0000 0000 0000 0000 0001deux = 1dix 0000 0000 0000 0000 0000 0000 0000 0010deux = 2dix
..................................................................................

0111 1111 1111 1111 1111 1111 1111 1110deux = 2.147.483.646dix 0111 1111 1111 1111 1111 1111 1111 1111deux = 2.147.483.647dix
Architecture des Ordinateurs 1re anne ENIT/Informatique 43

Reprsentation des nombres


0000 0000 0000 0000 0000 0000 0000 0000deux = 0 dix 0000 0000 0000 0000 0000 0000 0000 0001deux = 1dix 0000 0000 0000 0000 0000 0000 0000 0010deux = 2dix
..................................................................................

0111 1111 1111 1111 1111 1111 1111 1110deux = 2.147.483.646dix 0111 1111 1111 1111 1111 1111 1111 1111deux = 2.147.483.647dix 1000 0000 0000 0000 0000 0000 0000 0000deux = -2.147.483.648 dix 1000 0000 0000 0000 0000 0000 0000 0001deux = -2.147.483.647 dix
..................................................................................

1111 1111 1111 1111 1111 1111 1111 1110deux = -2 dix 1111 1111 1111 1111 1111 1111 1111 1111deux = -1 dix
Architecture des Ordinateurs 1re anne ENIT/Informatique 44

Reprsentation des nombres


Cette convention s'appelle complment deux : tous les nombres ngatifs ont un 1 comme bit de poids fort. Le matriel n'a donc besoin de tester que ce bit pour dterminer si un nombre est positif ou non . Ce bit particulier est appel souvent le bit de signe. Un nombre binaire de 32 bits sera alors reprsent comme suit : (x31 * -231)+ ( x30 * 2 30 ) + ................+ ( x1 * 2 1 ) + (x0 * 20) xi : signifie : le ime bit de x x + (-x) = 0 1 seul nombre ngatif -2.147.483.648 dix qui n a pas de nombre positif correspondant
45

Architecture des Ordinateurs 1re anne ENIT/Informatique

Reprsentation des nombres


Exemple: Prendre l'oppos de 2 dix et ajouter 1 2 dix = 0000 0000 0000 0000 0000 0000 0000 0010 deux Prendre l'oppos de ce nombre en inversant ses bits et en ajoutant 1 donne : 1111 1111 1111 1111 1111 1111 1111 1101 deux + 1 deux --------------------------------------------------------= 1111 1111 1111 1111 1111 1111 1111 1110 deux = -2 dix
Architecture des Ordinateurs 1re anne ENIT/Informatique 46

Reprsentation des nombres


Par consquent :

-x = x + 1 La manire de convertir un nombre binaire reprsent avec n bits en un nombre reprsent avec plus de n bits: extension signe. Rpliquer le bit du signe: 2 dix -2 dix (16)bits : 0000 0000 0000 0010 deux (32)bits : 0000 0000 0000 0000 0000 0000 0000 0010 deux (16) bits : 1111 1111 1111 1110 deux (32) bits : 1111 1111 1111 1111 1111 1111 1111 1110 deux
Architecture des Ordinateurs 1re anne ENIT/Informatique 47

CHAPITRE II:

von Newman, Cycle Instruction, Bus

Architecture des Ordinateurs 1re anne ENIT/Informatique

48

von Newman/Turing
Programme en mmoire Mmoire centrale contient programme+donnes UAL (Unit Arithmtique et Logique) opre sur donnes binaires UC (Unit de Controle) interprte et excute les instructions du programme E/S controlles par UC! Princeton Institute for Advanced Studies IAS, complt 1952
Architecture des Ordinateurs 49

Machine von Newman

Unit Arithmtique et Logique (UAL) Equipements E/S

Mmoire Centrale Unit de Contrle dxcution du programme (UC)

Architecture des Ordinateurs

50

IAS-Dtails
1000 mots x 40 bits
Nombres binaires 2 x 20 bit instructions

Registers (mmoire dans UC/CPU)


MBR: Memory Buffer Register MAR: Memory Address Register IR: Instruction Register IBR: Instruction Buffer Register PC: Program Counter ACC: Accumulator Registre quotient de multiplicateur
Architecture des Ordinateurs 51

IAS-Dtails
Central Processing Unit Arithmetic and Logic Unit Accumulator MQ

Arithmetic & Logic Circuits Input Output Equipment IBR IR Program Control Unit
Architecture des Ordinateurs

MBR Instructions Main & Data Memory PC MAR Control Circuits Address

52

Concept de Programme
Systmes cabls (hardware) inflexibles Hardware gnrique excute diffrents types de tches avec signaux de contrle appropris Au lieu de re-cablage, fournir nouvel ensemble de signaux de commande (contrle)
Architecture des Ordinateurs 53

Cest quoi un Programme


Une squence dtapes ou oprations Chaque tape/opration, consiste en lexcution dune simple opration arithmtique ou logique Chaque opration ncssite un nouvel ensemble de signaux de contrle
Architecture des Ordinateurs 54

Fonction dUnit de Contrle (Commande)


A chaque opration est associ un code opration unique
e.g. ADD, MOVE

Un circuit lectronique (un bloc de hardware) accepte le code et gnre les signaux de contrle appropris (correspondants au code opration) Cest un ordinateur!
Architecture des Ordinateurs 55

Exemple de ProgrammeAssembleur MIPS


Exemple en C: if (i==j) goto E1; f = g+h E1: f = f = f-i; F,g,h,i,j correspondent aux cinq registres $17 $21 beq $20,$21,E1 add $17,$18,$19 E1: sub $17,$17,$20 # aller en E1 si i==j # f = g+h #f = f-i

Architecture des Ordinateurs

56

Autres Composants
LUC et lUAL constituent le UC (CPU: Central Processing Unit) Introduction des donnes et des instructions dans le systme; et renvoi des rsultats
Systme E/S (entres et sorties)

Ncssit denregistrer de manire temporaire les programmes, donnes et rsultats


Mmoire centrale
Architecture des Ordinateurs 57

Composants, Vue Haut niveau

Architecture des Ordinateurs

58

Cycle Instruction
Deux tapes:
Fetch (chargement/lecture instruction) Execute

Architecture des Ordinateurs

59

Cycle Fetch
PC contient adresse de prochaine instruction chercher Charger instruction de mmoire de lemplacement point par PC Incrmentation PC
Exception saut!

Charger instruction dans Registre Instruction (RI) Interprter instruction et xcuter action correspondante
Architecture des Ordinateurs 60

Cycle Excution
Processeur-Mmoire
Transfert de donnes entre CPU et mmoire centrale

Processeur-E/S
Transfert de donnes entre le CPU et un module E/S

Opration sur donnes


Une opration arithmtique ou logique sur des donnes dans les registres ou en mmoire

Contrle programme
Changement du squencement du programme e.g. saut

Combinaison dactions ci-dessus!

Architecture des Ordinateurs

61

Exemple dexcution de programme

Architecture des Ordinateurs

62

Cycle Instruction Diagramme Etats

Architecture des Ordinateurs

63

Interruptions
Mchanisme travers lequel dautres modules (e.g. E/S) peuvent interrompre la squence normale dexcution Source : le programme
e.g. overflow (dbordement), division par zro

Source: Temporisateur (timer)


Gnr par lhorloge systme Systmes multi-tches pour la premption

Source: E/S
Controlleur E/S

Source: faute du hardware


e.g. erreur de parit de la mmoire
Architecture des Ordinateurs 64

Squencement Programme

Architecture des Ordinateurs

65

Cycle Interruption
Sajoute au cycle instruction CPU vrifie prsence dinterruptions
Signal dinterruptions

Pas dinterruption => lecture dinstruction suivante Si interruption en attente:


Suspendre excution programme Sauvegarde du contexte Chargement dans PC adresse dbut de routine dinterruption Excution de routine dinterruption Restoration contexte programme et continuation

Architecture des Ordinateurs

66

Cycle Instruction Diagramme Etat avec Interruptions!

Architecture des Ordinateurs

67

Interruptions Multiples
Fermer les interruptions
CPU prend pas en considration les interruptions qui arrivent pendant le traitement dune interruption Interruptions restent dans file attente et trait aprs terminaison Interruption trait dans leur ordre darriv

Dfinition de priorits
Priorit faible peut tre interrompu par plus haute priorit Aprs avoir terminer le traitement de haute priorit le CPU traite plus basse priorit
Architecture des Ordinateurs 68

Interruptions Multiples--Squentiels

Architecture des Ordinateurs

69

Iterruptions Multiples--Imbriques

Architecture des Ordinateurs

70

Connecter les Units


Les units doivent tre connectes Diffrentes types de connections, appropries pour chaque unit
Mmoire E/S CPU

Architecture des Ordinateurs

71

Connections avec Mmoire


Envoi et rception de donnes (criture/lecture) Reois adresses (des cases mmoire) Reois signaux de contrle
Lecture Ecriture Temps

Architecture des Ordinateurs

72

Connexions E/S
Similaire la connexion mmoire du point de vue de lordinateur Sortie
Reois donnes de lordinateur Envoi donnes au priphrique

Entres
Reois donnes de priphrique Envoi donnes lordinateur

Architecture des Ordinateurs

73

Connexion E/S
Reois signaux de control de lordinateur Envoi signaux de contrle aux priphriques
e.g. spin disk

Reois adresses de lordinateur


e.g. num. de port pour identifier le priphrique

Envoi signaux dinterruption


Architecture des Ordinateurs 74

Connexion CPU
Lecture instructions et donnes Ecriture donnes (aprs traitement) Envoi des signaux de contrle aux autres units Recevoir (et agir sur, ou traitement) des interruptions

Architecture des Ordinateurs

75

Les Bus
Il y a un choix entre un grand nombre de systmes dinterconnexion possibles Structures de bus simple avec canal unique et structures de bus complexes avec canaux multiples e.g. Control/Address/Data bus (PC) e.g. Unibus (DEC-PDP)

Architecture des Ordinateurs

76

Cest quoi un Bus


Un canal de communication et un chemin de connexion entre 2 ou plusieurs units (priphriques) Typiquement utilise le mcanisme de diffusion (broadcast) Les canaux dun mme bus sont typiquement groups
e.g. 32 bit data bus is 32 separate single bit channels

Ligne de puissance sont typiquement omises des schmas de bus


Architecture des Ordinateurs 77

Bus de donnes
Transport et communication de donnes
Il ne faut pas oublier quil y a pas de diffrence entre donnes et instructions, a ce niveau

Largeur est cl dans la caractrisation la performance


8, 16, 32, 64 bit

Architecture des Ordinateurs

78

Bus Adresses
Identification de la source et destination des donnes e.g. CPU veut lire une instruction (donnes) partir de certaine cases de la mmoire (adresse = adresse de la premire case) La largeur du bus adresses dtermine la capacit mmoire du systme
e.g. 8080 a 16 bit bus addresses = 64k dspace daddreses
Architecture des Ordinateurs 79

Bus de contrle
Fournir les information de contrle et de temps
Lecture/Ecriture de mmoire Demande dinterruption Signaux horloges

Architecture des Ordinateurs

80

Interconnexion par Bus

Architecture des Ordinateurs

81

Grands et Jaunes
Les bus cest quoi physiquement!
Des lignes parallle sur circuits Des cbles en rubans Des connecteurs sur les cartes mres
e.g. PCI

Un ensemble de fils (avec des circuits de contrle)

Architecture des Ordinateurs

82

Un Seul Bus?
Beaucoup dunits sur un mme bus, engendre:
Des dlais importants de propagation des signaux
Un long chemin de donnes implique que la coordination du bus devient une tache complexe et affecte la performance Et si la sommes des demandes sur le bus approche sa capacit?

La majorit des systme utilisent des bus multiples pour viter les consquences de ces problmes
Architecture des Ordinateurs 83

Bus ISA dOrigine, avec Cache

Architecture des Ordinateurs

84

Bus Haute Performances

Architecture des Ordinateurs

85

Types de Bus
Ddies
Des lignes dadresses et de donnes spares

Multiplexs
Lignes partages Ligne de contrle: Adresses/donnes valide Avantage nombre rduit de ligens Inconvnient
Contrle compliqu Performance
Architecture des Ordinateurs 86

Question dArbitrage
Plus dune unit commande les bus e.g. CPU et DMA Un seul module peut contrler le bus un instant donn Recours larbitrage centralis ou dcentralis

Architecture des Ordinateurs

87

Arbitrage Centralis
Un seul module (unit de hardware) contrle lacc au bus
Contrleur de bus Cest larbitre

Le contrleur de bus peut faire partie intgrale du CPU ou spar

Architecture des Ordinateurs

88

Arbitrage Rparti
Chaque module peut essayer daccder directement au bus Il y a du hardware darbitrage sur chaque module qui globalement dcide celui qui rellement accde au bus un instant donn

Architecture des Ordinateurs

89

Temporisation du Bus
Coordination des vnement sur le bus Synchrone
Occurrence dvnement dcid par signal horloge Contrle du bus inclue ligne horloge Un cycle bus: 1-0 Tous les module sur le bus accdent au signal horloge Typiquement synchronis sur front montant Typiquement un seul vnement par cycle
Architecture des Ordinateurs 90

Diagramme de Temporisation Synchrone

Architecture des Ordinateurs

91

Diagramme de Temporisation Asynchrone

Architecture des Ordinateurs

92

CHAPITRE III:

Organisation du MIPS, Format Instructions, Assembleur


Architecture des Ordinateurs 1re anne ENIT/Informatique 93

Environnement de Dveloppement pour lAssembleur MIPS


Simulateurs/Emulateurs MIPS
Excution de programmes en assembleur MIPS-32 MARS: MIPS Assembly and Runtime Simulator
Site Web: http://courses.missouristate.edu/KenVollmar/MARS/

PCSPIM
Site Web : http://www.cs.wisc.edu/~larus/spim.html

Architecture des Ordinateurs

94

MIPS Organisation/ISA
232 octets mmoire Registres: 31 * 32 bits, R0=0 Registres flottants (nombres rels): 32 * 32 bits, utiliss en paires HI, LO, CP (compteur ordinal ou programme) R0 R1 R31 CP LO HI
Architecture des Ordinateurs 95

Les Registres
32 Registres usages gnriques (GPRs)
Assembleur utilise $numro $0, ,$31 Registres 32bits/4octets pour MIPS-32 Le registre $0 est cbl = 0 !!

Conventions du software pour standardiser utilisation des registres


e. g. $8 - $15 appels $t0 - $t7 et utiliss pour la tenue des valeurs temporaires

Architecture des Ordinateurs

96

Organisation du P MIPS
...
4 bytes per word

Memory
Up to 232 bytes = 230 words ...

EIU 32 General Purpose Registers Arithmetic & Logic Unit ALU

$0 $1 $2

Execution & Integer Unit (Main proc)

FPU

F0 F1 F2

Floating Point Unit (Coproc 1) 32 Floating-Point Registers

$31

Integer mul/div
Hi Lo

FP Arith

F31

Floating-Point Arithmetic Unit TMU


BadVaddr

Integer Multiplier/Divider Architecture des Ordinateurs

Trap & Status Memory Unit (Coproc 0) Cause


EPC

97

Noms et Utilisations de Registres


$16 = $s0 $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 = $zero = $at = $v0 = $v1 = $a0 = $a1 = $a2 = $a3 = $t0 $25 = $t9 = $t1 $26 = $k0 $10 = $t2 $27 = $k1 $11 = $t3 $28 = $gp $12 = $t4 $29 = $sp $13 = $t5 $30 = $fp $14 = $t6 $31 = $ra $15 = $t7 $17 = $s1 $18 = $s2 $19 = $s3 $20 = $s4 $21 = $s5 $22 = $s6 $23 = $s7 $24 = $t8

Architecture des Ordinateurs

98

Noms et Utilisations de Registres


Assembleur fait rfrence aux registres par nom ou par numro
Cest plus simple pour vous dutiliser les noms!
Name $zero $at $v0 $v1 $a0 $a3 $t0 $t7 $s0 $s7 $t8 $t9 $k0 $k1 $gp $sp $fp $ra Register $0 $1 $2 $3 $4 $7 $8 $15 $16 $23 $24 $25 $26 $27 $28 $29 $30 $31 Usage Always 0 (forced by hardware) Reserved for assembler use Result values of a function Arguments of a function Temporary Values Saved registers (preserved across call) More temporaries Reserved for OS kernel Global pointer (points to global data) Stack pointer Frame pointer Return address (points to top of stack) (points to stack frame) (used by jal for function call)
99

Architecture des Ordinateurs

Format Instructions Type-R


Op6 Rs5 Rt5 Rd5 sa5 funct6

Op: code opration (opcode)


Spcifie lopration de linstruction Spcifie le format de linstruction

funct: code fonction extension de opcode


26 = 64 fonctions pour mme opcode MIPS opcode 0 pour dfinir instructions de type-R

3 registres arguments
Rs, Rt: arguments source Rd: argument destination sa: nombre de bits pour dcalage
Architecture des Ordinateurs 100

Addition/Soustraction Entiers (type-R)


Instruction
add $s1, $s2, $s3 addu $s1, $s2, $s3 sub $s1, $s2, $s3

Meaning
$s1 = $s2 + $s3 $s1 = $s2 + $s3 $s1 = $s2 $s3 $s1 = $s2 $s3

R-Type Format
op = 0 rs = $s2 rt = $s3 rd = $s1 sa = 0 f = 0x20 op = 0 rs = $s2 rt = $s3 rd = $s1 sa = 0 f = 0x21 op = 0 rs = $s2 rt = $s3 rd = $s1 sa = 0 f = 0x22 op = 0 rs = $s2 rt = $s3 rd = $s1 sa = 0 f = 0x23

subu $s1, $s2, $s3

add & sub: dbordement gnre une exception arithmtique addu & subu: similaires add & sub
Dbordement nest pas pris en considration

Architecture des Ordinateurs

101

Addition/Soustraction Exemple
Traduction de : f = (g+h) (i+j) Compilateur va allouer registres aux variables
Suppose que f, g, h, i, and j sont placs dans $s0 $s4 Appels les registres save : $s0 = $16, $s1 = $17, , $s7 = $23

Traduction: f = (g+h) (i+j)


addu addu subu $t0, $s1, $s2 $t1, $s3, $s4 $s0, $t0, $t1 # $t0 = g + h # $t1 = i + j # f = (g+h)(i+j)

Valeurs temporaires dans $t0 = $8 et $t1 = $9

Traduire: addu $t0,$s1,$s2 vers code binaire Solution:


Architecture des Ordinateurs

op

rs = $s1 rt = $s2 rd = $t0

sa

func

000000 10001 10010 01000 00000 100001


102

Opration Logiques, bit/bit


Oprations logiques bit/bit: and, or, xor, nor
x y x and y 0 0 1 1 0 1 0 1 0 0 0 1 x y 0 0 1 1 0 1 0 1 x or y 0 1 1 1 x y x xor y 0 0 1 1 0 1 0 1 0 1 1 0 x y x nor y 0 0 1 1 0 1 0 1 1 0 0 0

Instruction AND pour mettre : x and 0 = 0 Instruction OR mettre 1: x or 1 = 1 Instruction XOR pour inverser: x xor 1 = not x NOR peut tre utilise comme NOT, comment?
nor $s1,$s2,$s2 quivalent not $s1,$s2
Architecture des Ordinateurs 103

Instructions Logiques, bit/bit


Instruction
and or xor nor $s1, $s2, $s3 $s1, $s2, $s3 $s1, $s2, $s3 $s1, $s2, $s3

Meaning
$s1 = $s2 & $s3 $s1 = $s2 | $s3 $s1 = $s2 ^ $s3 $s1 = ~($s2|$s3) op = 0 op = 0 op = 0 op = 0

R-Type Format
rs = $s2 rs = $s2 rs = $s2 rs = $s2 rt = $s3 rt = $s3 rt = $s3 rt = $s3 rd = $s1 rd = $s1 rd = $s1 rd = $s1 sa = 0 sa = 0 sa = 0 sa = 0 f = 0x24 f = 0x25 f = 0x26 f = 0x27

Exemples: Suppose $s1 = 0xabcd1234 et $s2 = 0xffff0000 and $s0,$s1,$s2 or $s0,$s1,$s2 # $s0 = 0xabcd0000 # $s0 = 0xffff1234 # $s0 = 0x54321234 # $s0 = 0x0000edcb
104

xor $s0,$s1,$s2 nor $s0,$s1,$s2


Architecture des Ordinateurs

Oprations de Dcalage
Dcaler cest translater tous les bits dans un registre gauche ou droite Dcaler par un nombre constant de bits: sll, srl, sra
sll/srl : shift left/right logique Champ de 5-bits pour valeur du shift sra : shift right arithmtique
Le bit de signe (au lieu de 0) est dcaler dans le registre de la gauche 32-bit register sll

shift-out MSB

... ... ...

shift-in 0 shift-out LSB shift-out LSB


105

srl
shift-in 0

sra
shift-in sign-bit
Architecture des Ordinateurs

Instructions de Dcalage
Instruction
sll srl sra sllv srlv srav $s1,$s2,10 $s1,$s2,10 $s1, $s2, 10 $s1,$s2,$s3 $s1,$s2,$s3 $s1,$s2,$s3

Meaning
$s1 = $s2 << 10 $s1 = $s2>>>10 $s1 = $s2 >> 10 $s1 = $s2 << $s3 $s1 = $s2>>>$s3 $s1 = $s2 >> $s3 op = 0 op = 0 op = 0 op = 0 op = 0 op = 0

R-Type Format
rs = 0 rt = $s2 rs = 0 rt = $s2 rs = 0 rt = $s2 rs = $s3 rt = $s2 rs = $s3 rt = $s2 rs = $s3 rt = $s2 rd = $s1 rd = $s1 rd = $s1 rd = $s1 rd = $s1 rd = $s1 sa = 10 sa = 10 sa = 10 sa = 0 sa = 0 sa = 0 f=0 f=2 f=3 f=4 f=6 f=7

Dcalage par un nombre de bits variable: sllv, srlv, srav


Comme sll, srl, sra, mais registre utilis pour spcifier valeur du dcalage

Exemples: $s2 = 0xabcd1234, et $s3 = 16 sll sra $s1,$s2,8 $s1,$s2,4 $s1 = $s2<<8 $s1 = $s2>>4 $s1 = $s2>>>$s3 $s1 = 0xcd123400 $s1 = 0xfabcd123 $s1 = 0x0000abcd

srlv $s1,$s2,$s3

op=000000 rs=$s3=10011 rt=$s2=10010 rd=$s1=10001 sa=00000 f=000110


Architecture des Ordinateurs 106

Multiplication Binaire
Instruction Shift-left (sll) peut faire multiplication!
Quand le multiplicateur est une puissance de 2

On peut factoriser nimporte quel nombre binaire en des puissance de 2


Exemple: multiplier $s1 par36
Factoriser 36 en (4 + 32) et utiliser la distributivit de la multiplication

$s2 = $s1*36 = $s1*(4 + 32) = $s1*4 + $s1*32

sll sll

$t0, $s1, 2 $t1, $s1, 5

; $t0 = $s1 * 4 ; $t1 = $s1 * 32 ; $s2 = $s1 * 36

addu $s2, $t0, $t1

Architecture des Ordinateurs

107

Multiplication Exercice
Multiplier $s1 par 26, en utilisant des instructions de dcalage Ide: 26 = 2 + 8 + 16
sll sll addu sll addu $t0, $t1, $s2, $t0, $s2, $s1, $s1, $t0, $s1, $s2, 1 3 $t1 4 $t0 ; ; ; ; ; $t0 $t1 $s2 $t0 $s2 = = = = = $s1 $s1 $s1 $s1 $s1 * * * * * 2 8 10 16 26

Multiplier $s1 by 31, Ide: 31 = 32 1


sll $s2, $s1, 5 subu $s2, $s2, $S1 ; $s2 = $s1 * 32 ; $s2 = $s1 - $S1

Architecture des Ordinateurs

108

Format Type-I
Constantes utilises dans programmes
Le type-R instructions de dcalage utilisent une constante de 5-bits pour spcifier nombre bits dcaler Quoi pour les autres instruction besoin de constantes?

Type-I: Instructions avec arguments immdiats


Op6 Rs5 Rt5 immediate16

16-bits constante immdiate est enregistre avec instruction


Rs est le registre source Rt est maintenant le registre destination (pour R-type appel Rd)

Exemples dinstruction Type-I, ALU :


Add immd.: OR immd. :
Architecture des Ordinateurs

addi $s1, $s2, 5 ori $s1, $s2, 5

# $s1 = $s2 + 5 # $s1 = $s2 | 5


109

Type-I Instruction Arith./Logiques


Instruction
addi addiu andi ori xori lui $s1, $s2, 10 $s1, $s2, 10 $s1, $s2, 10 $s1, $s2, 10 $s1, $s2, 10 $s1, 10

Meaning
$s1 = $s2 + 10 $s1 = $s2 + 10 $s1 = $s2 & 10 $s1 = $s2 | 10 $s1 = $s2 ^ 10 $s1 = 10 << 16 op = 0x8 op = 0x9 op = 0xc op = 0xd op = 0xe op = 0xf

I-Type Format
rs = $s2 rs = $s2 rs = $s2 rs = $s2 rs = $s2 0 rt = $s1 rt = $s1 rt = $s1 rt = $s1 rt = $s1 rt = $s1 imm16 = 10 imm16 = 10 imm16 = 10 imm16 = 10 imm16 = 10 imm16 = 10

addi: dbordement gnre exception arithmtique


Cas de dbordement rsultat pas crit dans destination

addiu: mme que addi mais pas de dbordement Constante immdiate pour addi et addiu est signe
Pas besoin de subi ou subiu

Constante Immdiate pour andi, ori, xori est sans signe


Architecture des Ordinateurs 110

Exemple Inst. Arith./Logiques


Exemples: suppose A, B, C placs dans $s0, $s1, $s2 A = B+5; traduire comme C = B1; traduire comme
op=001001 rs=$s1=10001 rt=$s2=10010

addiu $s0,$s1,5 addiu $s2,$s1,-1


imm = -1 = 1111111111111111

A = B&0xf; traduire comme andi C = B|0xf; traduire comme ori C = 5; A = B; traduire comme ori traduire comme ori

$s0,$s1,0xf $s2,$s1,0xf $s2,$zero,5 $s0,$s1,0

Pas besoin subi, constante de addi est signe Registre 0 ($zero) a toujours la valeur 0!
Architecture des Ordinateurs 111

Constantes de 32 bits
Instruction Type-I introduit constante de 16-bits
Op6 Rs5 Rt5 immediate16

On veut charger 32-bits dans registre? Impossible davoir constante sur 32-bits
Tous les instructions sont de taille 32-bits!

Solution: utiliser 2 instructions


Suppose nous dsirons: $s1=0xAC5165D9 (32-bit constant) lui: load upper immediate lui $s1,0xAC51 ori $s1,$s1,0x65D9
Architecture des Ordinateurs load upper 16 bits clear lower 16 bits

$s1=$17 0xAC51 $s1=$17 0xAC51

0x0000 0x65D9
112

Format Type-J
Op6 immediate26

Format type-J utilis pour saut inconditionnel:: j label # saut au label . . . label: Valeur immdiate de 26-bits et enregistre avec instruction
Constante immdiate spcifie adresse destination

Compteur Programme (PC) est modifi comme suit:


- PC suivant =
PC4 immediate26 00
2 bits LSB deviennent 00

4-bits MSB restent inchanges!


Architecture des Ordinateurs 113

Instructions Branchement Conditionnel


Instructions MIPS comparaison & saut au label : beq Rs,Rt,label branchement si (Rs == Rt) bne Rs,Rt,label branchement si (Rs != Rt) Instructions MIPS comparer zro & saut
utilises frquemment donc implmentes de manire efficiente!

bltz Rs,label branchement si (Rs bgtz Rs,label branchement si (Rs blez Rs,label branchement si (Rs bgez Rs,label branchement si (Rs Pas besoin de beqz et bnez. Pourquoi?

< 0) > 0) <= 0) >= 0)

Architecture des Ordinateurs

114

Instructions SLT
MIPS fournit instruction set on less than instructions (mettre 1 si >) slt rd,rs,rt if (rs < rt) rd = 1 else rd = 0 sltu rd,rs,rt sans signe < slti rt,rs,im16 if (rs < im16) rt = 1 else rt = 0 sltiu rt,rs,im16 sans signe < Comparaisons avec signe / sans signe Peut produire rsultat diffrents Suppose $s0 = 1 et $s1 = -1 = 0xffffffff $t0 = 0 slt $t0,$s0,$s1 rsultat stlu $t0,$s0,$s1 rsultat $t0 = 1
115

Architecture des Ordinateurs

Suite Branchement
Le MIPS ne fournit dinstructions pour blt, bltu branch if less than (signed/unsigned) ble, bleu branch if less or equal (signed/unsigned) bgt, bgtu branch if greater than (signed/unsigned) bge, bgeu branch if greater or equal (signed/unsigned) Peut faire avec une squence de 2 instructions Comment faire: Solution: Comment faire: Solution:
Architecture des Ordinateurs

blt slt bne ble slt beq

$s0,$s1,label $at,$s0,$s1 $at,$zero,label $s2,$s3,label $at,$s3,$s2 $at,$zero,label


116

Pseudo-Instructions
Introduits par assembleur comme des vraies instructions
Ils facilitent la programmation en assembleur

Pseudo-Instructions move $s1, $s2 not $s1, $s2 li $s1, 0xabcd li sgt blt $s1, 0xabcd1234 $s1, $s2, $s3 $s1, $s2, label

Conversion to Real Instructions addu $s1, $zero, $s2 nor $s1, $s2, $zero ori $s1, $zero, 0xabcd lui $at, 0xabcd ori $s1, $at, 0x1234 slt $s1, $s3, $s2 slt $at, $s1, $s2 bne $at, $zero, label

Lassembleur rserve $at = $1 pour son utilisation


$at cest assembler temporary register
Architecture des Ordinateurs 117

Instructions saut, slt, branchement


Instruction
j beq bne blez bgtz bltz bgez label rs, rt, label rs, rt, label rs, label rs, label rs, label rs, label

Meaning
jump to label branch if (rs == rt) branch if (rs != rt) branch if (rs<=0) branch if (rs > 0) branch if (rs < 0) branch if (rs>=0) op6 = 2 op6 = 4 op6 = 5 op6 = 6 op6 = 7 op6 = 1 op6 = 1 rs5 rs5 rs5 rs5 rs5 rs5

Format
imm26 rt5 rt5 0 0 0 1 imm16 imm16 imm16 imm16 imm16 imm16

Instruction
slt sltu slti sltiu

Meaning
op6 = 0 op6 = 0 0xa 0xb rs5 rs5 rs5 rs5

Format
rt5 rt5 rt5 rt5 rd5 rd5 0 0x2a 0 0x2b imm16 imm16

rd=(rs<rt?1:0) rd, rs, rt rd=(rs<rt?1:0) rd, rs, rt rt, rs, imm16 rt=(rs<imm?1:0) rt, rs, imm16 rt=(rs<imm?1:0)

Architecture des Ordinateurs

118

Traduction de IF vers MIPS


Soit la structure en C, IF suivante: if (a == b) c = d + e; else c = d e; Supposons que a, b, c, d, e sont respectivement dans $s0, , $s4. Comment traduire cette structure IF? bne addu j else : subu sortie: . . .
Architecture des Ordinateurs

$s0, $s1, else $s2, $s3, $s4 sortie $s2, $s3, $s4

119

Evaluation avec court-circuit


Les langages de programmation utilisent la notion dvaluation avec court-circuit Si la premire expression est fausse, la seconde nest pas excute!
if (($s1 > 0) && ($s2 < 0)) {$s3++;} # One Possible Implementation ... bgtz $s1, L1 # first expression j next # skip if false L1: bltz $s2, L2 # second expression j next # skip if false L2: addiu $s3,$s3,1 # both are true next:
Architecture des Ordinateurs 120

Meilleure implmentation de AND


if (($s1 > 0) && ($s2 < 0)) {$s3++;}

Iimplmentation suivante utilise moins de code Inverser loprateur relationnel Laisser flux aller naturellement la seconde expression Nombre dinstruction rduit de 5 3!
# Better Implementation blez $s1, next bgez $s2, next addiu $s3,$s3,1 next:
Architecture des Ordinateurs

... # skip if false # skip if false # both are true

121

Court-circuit avec OR
Court-circuit pour OR Si la premire expression est vraie, la deuxime nest pas excute if (($sl > $s2) || ($s2 > $s3)) {$s4 = 1;} Utiliser le fall-through pour obtenir du code le plus court que possible bgt $s1, $s2, L1 ble $s2, $s3, next L1: li $s4, 1 next: # yes, execute if part # no: skip if part # set $s4 to 1

bgt, ble, et li sont des pseudo-instructions


Traduits par assembleur vers instructions machine
Architecture des Ordinateurs 122

Traduction IF
Traduire IF vers assembleur MIPS $s1 et $s2 contiennent des valeurs unsigned
if( $s1 <= $s2 ) { $s3 = $s4 } bgtu $s1, $s2, next move $s3, $s4 next:

$s3, $s4, contiennent $s5 des valeurs signed


if (($s3 <= $s4) && ($s4 > $s5)) { $s3 = $s4 + $s5 }
Architecture des Ordinateurs

bgt $s3, $s4, next ble $s4, $s5, next addu $s3, $s4, $s5 next:
123

Instructions Chargement/Rangement
Instructions de transfert entre mmoire & registres Programmes utilisent variables comme tableaux et objets Ces variables sont enregistres en mmoire
Registers load

Memory
store

Instruction Load :
Transfert donnes de mmoire vers registres

Instruction Store :
Transfert donnes de registres vers mmoire

Adresse mmoire doit tre spcifie pour load et store

Architecture des Ordinateurs

124

Instructions Chargement/Rangement
Instruction chargement dun mot (mot = 4 octets dans MIPS) lw Rt, imm16(Rs) # Rt = MEMORY[Rs+imm16]

Instruction rangement dun mot sw Rt, imm16(Rs) # MEMORY[Rs+imm16] = Rt

Adresse de base avec dplacement utiliss


Adresse mmoire = Rs (base) + Immediate16 (dplacement) Immediat16 et signe-tendu pour avoir un dplacement sign
Base or Displacement Addressing
Op6 Rs5 Rt5 immediate16

+
Base address Architecture des Ordinateurs

Memory Word 125

Traduire Chargement/Rangement
Traduire A[1] = A[2] + 5 mots)
lw addiu sw $s1, 8($s0) $s2, $s1, 5 $s2, 4($s0)

(A un tableau de

Supposons que ladresse de A est enregistre dans $s0 # $s1 = A[2] # $s2 = A[2] + 5 # A[1] = $s2

Indice de A[2] et A[1] est multipli par 4. Pourquoi? Memory


Registers
... $s0 = $16 address of A $s1 = $17 value of A[2] $s2 = $18 A[2] + 5 ... ...

lw sw

A[3] A[2] A[1] A[0] ...

A+12 A+8 A+4 A

Architecture des Ordinateurs

126

Chargement/Rangement Octet, Demi-mot


Processeur MIPS utilise les formats de donnes suivants:
Octet = 8 bits, Demi-mot = 16 bits, Mot = 32 bits

Instructions Load & store pour octet et demi-mot


lb = load byte, lbu = load byte unsigned,sb = store byte lh = load half, lhu = load half unsigned, sh = store halfword

Load tend des donnes en mmoire pour les mettre dans registre de 32 bits Store rduit des donnes dans registre de 32 bits pour les mettre en mmoire
32-bit Register s 0 s 0 sign extend zero extend sign extend zero extend s s 0 s s 0 h hu
127

b bu

Architecture des Ordinateurs

Chargement/Rangement
Instruction
lb lh lw lbu lhu sb sh sw rt, imm16(rs) rt, imm16(rs) rt, imm16(rs) rt, imm16(rs) rt, imm16(rs) rt, imm16(rs) rt, imm16(rs) rt, imm16(rs)

Meaning
rt = MEM[rs+imm16] rt = MEM[rs+imm16] rt = MEM[rs+imm16] rt = MEM[rs+imm16] rt = MEM[rs+imm16] MEM[rs+imm16] = rt MEM[rs+imm16] = rt MEM[rs+imm16] = rt 0x20 0x21 0x23 0x24 0x25 0x28 0x29 0x2b

I-Type Format
rs5 rs5 rs5 rs5 rs5 rs5 rs5 rs5 rt5 rt5 rt5 rt5 rt5 rt5 rt5 rt5 imm16 imm16 imm16 imm16 imm16 imm16 imm16 imm16

Adressage base/dplacement utilis


Adresse mmoire = Rs (base) + Immediate16 (dplacement)

Deux variantes sur adressage avec base:


If Rs = $zero = 0 then Address = Immediate16 (absolue) If Immediate16 = 0 then Address = Rs (registere indirect)

Architecture des Ordinateurs

128

Traduction Boucle WHILE


Memory
... A[i] A+4i A+8 A+4 A

Etant donn la structure WHILE suivante: i = 0; while (A[i] != k) i = i+1; A tableau dentiers (4 octets par lment)

... A[2] A[1] A[0] ...

Supposons que ladresse de A, et i, k sont respectivement dans $s0, $s1, $s2 Comment traduire la structure WHILE ci-dessus? xor move loop: lw beq addiu sll addu j exit: . . .
Architecture des Ordinateurs

$s1, $t0, $t1, $t1, $s1, $t0, $t0, loop

$s1, $s1 $s0 0($t0) $s2, exit $s1, 1 $s1, 2 $s0, $t0

# # # # # # #

i = 0 $t0 = address A $t1 = A[i] exit if (A[i]== k) i = i+1 $t0 = 4*i $t0 = address A[i]
129

Utilisation Pointeur pour Tableaux


Etant donn la structure WHILE : i = 0; while (A[i] != k) i = i+1; Avec ladresse de A, et i, k sont respectivement dans $s0, $s1, $s2 Nous pouvons utiliser un pointeur pour traverser le tableau Le pointeur est incrment par 4 (plus rapide que lindice) move $t0, $s0 # $t0 = $s0 = addr A j cond # test condition loop: addiu $s1, $s1, 1 # i = i+1 addiu $t0, $t0, 4 # point to next cond: lw $t1, 0($t0) # $t1 = A[i] bne $t1, $s2, loop # loop if A[i]!= k Seulement 4 instructions (au lieu de 6) dans le corps de boucle
Architecture des Ordinateurs 130

Copie de Chaines
Le code suivant permet de copier une chaine de caractres dun emplacement source vers emplacement destination Adresse de source est dans $s0 et adresse destination dans $s1 Les chaine de caractres se termine par le caractre null (des chaines du langage C!) i = 0; do {target[i]=source[i]; i++;} while (source[i]!=0); move move L1: lb sb addiu addiu bne $t0, $t1, $t2, $t2, $t0, $t1, $t2, $s0 $s1 0($t0) 0($t1) $t0, 1 $t1, 1 $zero, L1 # # # # # # # $t0 = pointer to source $t1 = pointer to target load byte into $t2 store byte into target increment source pointer increment target pointer loop until NULL char
131

Architecture des Ordinateurs

Somme de Tableau
sum = 0; for (i=0; i<n; i++) sum = sum + A[i];

Suppose $s0 = adresse tableau, $s1 = longeure tableau = n


move xor xor L1: lw addu addiu addiu bne $t0, $t1, $s2, $t2, $s2, $t0, $t1, $t1, $s0 $t1, $t1 $s2, $s2 0($t0) $s2, $t2 $t0, 4 $t1, 1 $s1, L1 # # # # # # # # $t0 = address A[i] $t1 = i = 0 $s2 = sum = 0 $t2 = A[i] sum = sum + A[i] point to next A[i] i++ loop if (i != n)
132

Architecture des Ordinateurs

Instructions Assembleur
Trois types dinstructions assembleur
Typiquement, une instruction par ligne Gnrent du code pour le microprocesseur excuter pendant lexcution du programme Des instructions pour commander le microprocesseur Traduits par lassembler en des instructions relles Simplifient la tache du programmeur Fournissent des informations lassembleur pendant la traduction Dfinissent les diffrents segments, et pour lallocation des variables, etc. Ne sont pas excutables: les directives ne font pas partie de lensemble des instructions
133

1. Instructions excutables

2. Pseudo-Instructions et Macros

3. Directives lAssembleur

Architecture des Ordinateurs

Instructions
Instructions assembleur ont format:
[label:] mnemonic [operands] [#comment]

Label: (optional)
Pour marque ladresse dun emplacement mmoire, doit tre suivit dun : Typiqument dans le segment text

Mnmonic
Identifient les oprations (e.g. add, sub, etc.)

Arguments
Specifient les donnes exiges pas lopration Les arguments peuvent tre des registres, de variables e, mmoire, ou des constantes Majorit des instruction ont 3 arguments
L1: addiu $t0, $t0, 1 #increment $t0
134

Architecture des Ordinateurs

Commentaires
Les commentaires sont trs importants!
Expliquer les objectifs du programme Date rdaction, version et auteurs Explique les donnes, les entres et Expliquer les squences dinstruction et les algorithmes utiliss Les commentaires sont important et exigs au dbut de chaque procdure et fonction
Expliquer les arguments et rsultats de la procdure Dcrire la fonction traite par la procdure

Des commentaires sur une seule ligne


Commence par # et se termine en fin de ligne

Architecture des Ordinateurs

135

Exemple de Format de Programme


# Title: Filename: # Author: Date: # Description: # Input: # Output: ################# Data segment ##################### .data . . . ################# Code segment ##################### .text .globl main main: # main program entry . . . li $v0, 10 # Exit program syscall
Architecture des Ordinateurs 136

Directives : .DATA, .TEXT, & .GLOBL


Directive .DATA
Dfinie le segment de donne dun programma contenant des donnes Les variables sont dfinies en utilisant cette directive Lassembleur va allouer lespace pour les variable et va les initialiser

Directive .TEXT
Dfinie le segment de texte dun programme qui contient des instructions

Directive .GLOBL
Dclare un symbole comme global Des symboles globaux peuvent tre rfrencs par dautres fichiers Nous utilisons cette directive pour dclarer la procdure principale dun programme
Architecture des Ordinateurs 137

Disposition de Mmoire
0x7FFFFFFF

Stack Segment
Adresse Mmoire en Hex

Croissance de la Plie vers le bas

Dynamic Area
0x10000000

Static Area Text Segment

Segment de donnes

0x04000000

Reserved
0
Architecture des Ordinateurs 138

Instruction de dfinition des donnes


Rserver des case mmoire pour lenregistrement de variable Peut associer un nom (label) un lment de donnes Syntax:
[name:] directive initializer [, initializer] . . . var1: .WORD var1: .WORD 10 10:5

Les valeurs initiales deviennent des donnes binaires en mmoire!


Architecture des Ordinateurs 139

Directives de donnes
Directive .BYTE
Liste de valeurs comme octets 8-bits

Directive .HALF
Liste de valeurs de 16-bits alignes sur des frontires de demi mots

Directive .WORD
Liste de valeurs de 32 bits alignes sur des frontire de mots (adresses multiples de 4)

Directive .WORD w:n


Liste de n valeurs de 32-bits conscutives

Directive .FLOAT
Liste de valeurs point flottants prcision simple

Directive .DOUBLE
Liste de valeurs point flottants prcision double
Architecture des Ordinateurs 140

Directives de chaines de caractres


Directive .ASCII
Allocation de squence doctets pour une chaine ASCII

Directive .ASCIIZ
Mme que .ASCII, mais ajoute un caractre NULL la fin Des chaine termines par null comme en C

Directive .SPACE n
Allocation de n octets non initialiss dans le segment donnes

Les caractre spciaux sont reprsents comme en C


Newline: \n Tab:\t Quote: \

Architecture des Ordinateurs

141

Exemples de dclarations de donnes


DATA var1: var2: var3: Var4: var5: var6: str1: str2: .BYTE .HALF .WORD .WORD .FLOAT .DOUBLE .ASCII .ASCIIZ 'A', 'E', 127, -1, '\n' -10, 0xffff 0x12345678 0:10 12.3, -0.1 1.5e-10 "A String\n" "NULL Terminated String" 100

array: .SPACE

Architecture des Ordinateurs

142

Appels Systme
Les programmes font des Entres/Sorties travers les appels systmes MIPS donnes une instruction spciale syscall pour invoquer les appels systmes Avec syscall :
Charger le numro de service dans $v0 Charge les arguments dans $a0, $a1, etc. Invoquer linstruction syscall Prendre les valeurs de retour des registres rsultats

Architecture des Ordinateurs

143

Liste dAppels Systme


Service Print Integer Print Float Print Double Print String Read Integer Read Float Read Double Read String Exit Program Print Char Read Char $v0 Arguments / Result 1 2 3 4 5 6 7 8 10 11 12 $a0 = character to print $a0 = character read
144

$a0 = integer value to print $f12 = float value to print $f12 = double value to print $a0 = address of null-terminated string $v0 = integer read $f0 = float read $f0 = double read $a0 = address of input buffer $a1 = maximum number of characters to read

Architecture des Ordinateurs

Lire un Entier et lAfficher


################# Code segment ##################### .text .globl main main: # main program entry li $v0, 5 # Read integer syscall # $v0 = value read move $a0, $v0 li $v0, 1 syscall li $v0, 10 syscall # $a0 = value to print # Print integer

# Exit program

Architecture des Ordinateurs

145

Lire un Chaine et lAfficher


################# Data segment ##################### .data str: .space 10 # array of 10 bytes ################# Code segment ##################### .text .globl main main: # main program entry la $a0, str # $a0 = address of str li $a1, 10 # $a1 = max string length li $v0, 8 # read string syscall li $v0, 4 # Print string str syscall li $v0, 10 # Exit program syscall
Architecture des Ordinateurs 146

Somme de 3 Entiers 1/2


# Sum of three integers # # Objective: Computes the sum of three integers. # Input: Requests three numbers. # Output: Outputs the sum. ################### Data segment ################### .data prompt: .asciiz "Please enter three numbers: \n" sum_msg: .asciiz "The sum is: " ################### Code segment ################### .text .globl main main: la $a0,prompt # display prompt string li $v0,4 syscall li $v0,5 # read 1st integer into $t0 syscall move $t0,$v0
Architecture des Ordinateurs 147

Somme de 3 Entiers 2/2


li $v0,5 syscall move $t1,$v0 li $v0,5 syscall move $t2,$v0 addu addu $t0,$t0,$t1 $t0,$t0,$t2 # read 2nd integer into $t1

# read 3rd integer into $t2

# accumulate the sum # write sum message

la $a0,sum_msg li $v0,4 syscall move $a0,$t0 li $v0,1 syscall li $v0,10 syscall

# output sum

# exit

Architecture des Ordinateurs

148

Conversion en Majuscules 1/2


# Objective: Convert lowercase letters to uppercase # Input: Requests a character string from the user. # Output: Prints the input string in uppercase. ################### Data segment ##################### .data name_prompt: .asciiz "Please type your name: " out_msg: .asciiz "Your name in capitals is: " in_name: .space 31 # space for input string ################### Code segment ##################### .text .globl main main: la $a0,name_prompt # print prompt string li $v0,4 syscall la $a0,in_name # read the input string li $a1,31 # at most 30 chars + 1 null char li $v0,8 syscall
Architecture des Ordinateurs 149

Conversion en Majuscules 2/2


la $a0,out_msg li $v0,4 syscall la $t0,in_name loop: lb $t1,($t0) beqz $t1,exit_loop # blt $t1,'a',no_change bgt $t1,'z',no_change addiu $t1,$t1,-32 # sb $t1,($t0) no_change: addiu $t0,$t0,1 # j loop exit_loop: la $a0,in_name # li $v0,4 syscall li $v0,10 # syscall if NULL, we are done # write output message

convert to uppercase: 'A'-'a'=-32

increment pointer

output converted string

exit

Architecture des Ordinateurs

150

Architecture des Ordinateurs

151

Architecture des Ordinateurs

152

Architecture des Ordinateurs

153

Architecture des Ordinateurs

154

Architecture des Ordinateurs

155

Architecture des Ordinateurs

156

Type DAdressages
Ou sont les arguments? Comment les adresses sont calcules?
Adressage Immdiat
Op6 Rs5 Rt5 immediate16

Operand is a constant

Adressage Registres
Op6 Rs5 Rt5 Rd5 sa5 funct6

Operand is in a register
Register

Adressage Base et Dpalcement


Op6 Rs5 Rt5 immediate16

Operand is in memory (load/store)

+
Register = Base address

Byte

Halfword

Word

Architecture des Ordinateurs

157

You might also like