Vous êtes sur la page 1sur 157

Architecture et Organisation des Ordinateurs

1 ère année

Ingénieurs en Informatique ENIT/Informatique

CHAPITRE I

Introduction

C’est quoi une Organisation

C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement
C’est quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement

Electronic

Devices

Desired Behavior
Desired
Behavior
quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement désiré
quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement désiré
quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement désiré
quoi une Organisation Electronic Devices Desired Behavior • Distance entre électronique et comportement désiré

• Distance entre électronique et comportement désiré • Organisation: Intégration de différents composants et éléments

C’est quoi une Organisation

computer software organization General Electronic Desired Purpose Devices Behavior Computer
computer
software
organization
General
Electronic
Desired
Purpose
Devices
Behavior
Computer

• Ordinateur : équipement qui aide à joindre des composants électroniques pour un comportement désiré

Unité Centrale

Unité Centrale 1980 10 cartes pour faire un CPU: “ Central Processing Unit” 2000 Unité centrale

1980

10 cartes pour faire un CPU:

Central Processing Unit”

10 cartes pour faire un CPU: “ Central Processing Unit” 2000 Unité centrale appelée Microprocesseur! Architecture

2000

Unité centrale appelée Microprocesseur!

Piliers de l’Informatique

• Equipements de calcul universels

– Turing’s Thesis: every computation can be performed by some “Turing Machine” : a theoretical universal computational device

• Transformation du problème

–Convertir une expression en langage naturel vers des électrons qui tournent dans des circuit!

• C’est le “Génie Informatique” software & hardware.

Machine de Turing

Machine de Turing • Calculateur universel ! – Input : programme ou instructions de calcul +

• Calculateur universel !

– Input : programme ou instructions de calcul + données

– Output : résultats

Niveaux d’Abstraction

Comprtement désiré de l’application

Interfaces standards offrent

Portabilité software/hardware de partie tierce Elargir l’usage

Portabilité software/hardware de partie tierce Elargir l’usage
Portabilité software/hardware de partie tierce Elargir l’usage

Les éléments (blocks) de contruction

Natural Language Algorithm Program Machine Architecture Micro-architecture Logic Circuits Devices
Natural Language
Algorithm
Program
Machine Architecture
Micro-architecture
Logic Circuits
Devices

Niveau programme

Les ordinateurs éxécutent un programme appelé système d’exploitation (OS).

Les programmes utilisateurs (applicatifs) tournent sur la machine (l’architecture) par l’intermédiaire de l’OS.

Application Program Operating System Program (Software)
Application Program
Operating System
Program (Software)

Niveau Machine-1

• Organisation/architecture de l’ordinateur

– Spécification de toutes les fonctionnalités que la machine peut exécuter; architecture de l’ensemble d’instructions (ISA)

• Microarchitecture

– Implémentation de l’ISA sur un microprocesseur spécifique

Niveau Machine-2

• Circuits logiques

– Chaque composant fonctionnel de la microarchitecture est implémenté sur un ou plusieurs circuits logiques

• Composants électronique

– Chaque circuit logique est implémenté sur un ou plusieurs composants électronique avec un ensemble de transistors CMOS or NMOS or GaAs (etc.) transistors.

Historique

• 17è siècle, calcul arithmétique simple: addition, soustraction …

• PASCAL (1623-1662) effectue mécaniquement des additions et des soustractions

• LEIBNIZ (1646-1716) envisage qu’une machine puisse raisonner

• CHARLES BABBAGE (1792-1871) a construit en 1833 une machine à calculer: la machine à différences.

– Programmable avec un langage assembleur très simple

– ADA AUGUSTA LOVELACE, collaboratrice de BABBAGE et fille de LORD BYRON, a écrit le premier programme informatique.

Historique

1945 : ENIAC (Electronic Numerical Integrator And Calculator)

– 18 000 tubes

– 30 tonnes

– multiplie 2 nombres de 10 chiffres en 3 millisecondes

– données sur cartes perforées, mais programmes câblés – en mémoire et donc, pour passer d’un programme à un autre, il faut débrancher et rebrancher des centaines de câbles (ce n’est pas vraiment le premier ordinateur au sens actuel).

Historique

1945 : JOHN VON NEUMANN, associé à l’ENIAC, propose un modèle d’ordinateur 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 née:

– Consiste en cinq composants de l’architecture moderne, appelée architecture de VON NEUMANN.

Historique

Première génération (1945-1955) :

tubes à vide

Tubes à vide: pannes fréquentes, difficiles à déceler, ordinateurs demandant beaucoup de place.

Deuxième génération (1955-1965)

Transistors: organisation de la machine autour d’un bus ; stockage sur bande magnétique ; écrans ; etc.

Troisième génération (1965-1980)

Circuits intégrés (puces) et des processeurs miniaturisation (ordinateurs plus petits, plus rapides et moins chers)

Historique

– Gammes de machines avec même langage d’assemblage, d’où la réutilisation des programmes. – Multiprogrammation: plusieurs programmes en mémoire. Lorsqu’un programme entre en phase d’entrées-sorties, l’UC passe à l’exécution d’un autre programme.

Quatrième génération (à partir de

1980)

– Ordinateurs personnels et VLSI (Very Large Scale Intégration) : augmentation du nombre de transistors ; réseaux …

Parallèles, intelligents

Classification des ordinateurs

Superordinateurs (5 à 20M$)

– Grande pièce, applications scientifiques et militaires titanesques (éléments finis,

météo

)…

– CRAY 2, NEC SX-2, Hitachi, IBM

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

Grosses bases de données avec de nombreux usagers (banques, réservations de lignes aériennes

)

– IBM ES/9000, CDC, AT&T NCR, Pyramid, Sequent, Unisys, DEC, HP, SUN.

Classification des ordinateurs

Serveurs départementaux (50K$ à 1 M$)

– Grande pièce, applications scientifiques et militaires titanesques (éléments finis, météo

– CRAY 2, NEC SX-2, Hitachi, IBM

)

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

– Grosses bases de données avec de nombreux usagers (banques, réservations de lignes aériennes ) – IBM ES/9000, CDC, AT&T NCR, Pyramid, Sequent, Unisys, DEC, HP, SUN.

Classification des ordinateurs

• Serveurs départementaux (50K$ à 1 M$)

– Serveurs de fichiers, de bases de données, 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, développement de logiciel, graphisme, multimédia,

– SUN, HP, IBM, DEC, SGI, NeXT

Micro-ordinateur (100 à 4 K$)

– Bureautique, simple (traitement de texte, administration,

jeux

)

– IBM, APPLE, HP, Dell,…

Objectifs du cours

• Les notions suivantes sont traitées:

– Organisation de Van Newman

– Système de nombres binaire et représentation des données au niveau du microprocesseur

– Familiarisation avec les composants d’un ordinateurs

– Cycle instruction

– Formats instructions – Programmation assembleur

• Le 8086 (Intel)

• Le MIPS ISA (notions de 80806)

Notions d’architecture

Architecture des Ordinateurs ?

Architecture de l’ensemble d’instructions de la machine

+

« Organisation de la machine »

Architecture de l’ensemble d’instructions

– Organisation d’éléments mémoires (registres, caches,…).

– Représentation des types de données et structure de données.

– Ensemble d’instructions et leurs formats.

– Modes d’adressage et types d’accès aux éléments data et instructions.

– Autres conditions exceptionnelles de la machine (Interruptions, erreurs,…).

Langages

Echange (int v[],int k,int k’)

{

int temp ; temp = v[k] ;

v[k] = v[k’]; v[k’] = temp;

}

Programme en langage de haut niveau (en C)

Compilateur C

Change:

Programme en langage assembleur (pour MIPS)

multi $2, S5, 4; add $2, $4, $2; ….

Assembleur
Assembleur

00000000101000010000000000011000

00000000100011100011000000100001….

Programme en langage machine binaire (pour MIPS)

Ensembles d’instructions

• Exemples d’ensembles d’instructions

– Digital alpha

– HP PA-RISC

– SUN SPARC

– SGI MIPS

– INTEL

• Les caractéristiques d’un ensemble d’instructions seront introduites par la suite à travers l’étude d’un ensemble réel d’instructions: MIPS.

Notions d’architecture

Notions d’architecture Ordinateur personnel Ordinateur Processeur Mémoire Entrées Contrôle (programmes en
Notions d’architecture Ordinateur personnel Ordinateur Processeur Mémoire Entrées Contrôle (programmes en
Notions d’architecture Ordinateur personnel Ordinateur Processeur Mémoire Entrées Contrôle (programmes en
Ordinateur personnel
Ordinateur personnel
Ordinateur Processeur Mémoire Entrées Contrôle (programmes en exécution) Chemin de données Sorties
Ordinateur
Processeur
Mémoire
Entrées
Contrôle
(programmes
en exécution)
Chemin de
données
Sorties

Clavier,

Souries

Disque dur

Ecran,

Imprimante

Evolutions technologiques

1985 : Invention du processeur sur une seule puce et de l’ordinateur sur une seule plaque (PC, Stations de travail, …)

Processeur : (Chaque 1.5 année depuis 85)

2X en vitesse

Mémoire : (Chaque 2 ans depuis 96)

Capacité : 2X (DRAM)

(64X, dernière décennie)

Disque dur : (Chaque année)

Capacité : 2X

(250X, dernière décennie)

Fonction d’architecte

Application (Netscape) Compilateur Système d’exploitation (Windows 2K) Software Assembleur
Application (Netscape)
Compilateur
Système
d’exploitation
(Windows 2K)
Software
Assembleur

Hardware

Processeur Mémoire Système d’E/S Chemin de données & Contrôle Digital Design Circuit Design transistors
Processeur
Mémoire
Système d’E/S
Chemin de données & Contrôle
Digital Design
Circuit Design
transistors

Architecture de l’ensemble d’instructions

• Coordination entre plusieurs niveaux d’abstraction

Fonction d’architecte

Prévoir l'évolution

– Au moment de l'étude du marché, le concepteur doit prévoir l’état de la compétition au moment où le nouvel ordinateur arrivera sur le marché.

Références

• Principales

– David Patterson et John Hennessy. Organisation et conception des ordinateurs, Dunod, 1994.

Cours en Français sur 8086 (Haggége).

• Autres

– Dominic Sweetman. See MIPS Run, 2 nd 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

Plan du cours

• Introduction

• Nombres binaires et représentations des données

• Architecture Van Newman

• Cycle Instruction

• Notions de bus

• mémoires, registres

• Le MIPS

• Le 8086

• Les interruptions (8086)

• Le système mémoire

• Le systèmes E/S (8086)

CHAPITRE II:

Nombres binaires et représentation des données

Architecture des Ordinateurs

1ère année ENIT/Informatique

30

Représentation en « Mémoire »

Visualiser octet en mémoire

1 0 0 1 0 0 0 1
1
0
0
1
0
0
0
1

Bit: cellule mémoire = 0/1

Octet : unité de base ou « case » de mémoire = 8 bits

Mot: unité de manipulation = ensemble de 2, 4 ou … d’octets

8086: 2 octets, 16 bits;

MIPS: 4 octets, 32 bits.

Architecture des Ordinateurs

1ère année ENIT/Informatique

31

Transfert vers ordinateur

• Saisie par humain à travers clavier…, … cases en mémoire, conversion en signaux ….

• Processus de conversion

Touche clavier

code standard sequence bit

enregistrement en mémoire

A

65 1000001

0 1 0 0 0 0 0 1
0
1
0
0
0
0
0
1

Architecture des Ordinateurs

1ère année ENIT/Informatique

32

Système Décimal

• On utilise dix symboles différents:

{ 0 ,

1 ,

2 ,

3

, 4 ,

5 ,

6 , 7

,

8 , 9 }

• N’importe quelle combinaison de ces symboles nous donne un nombre.

Poids fort

symboles nous donne un nombre. P o i d s f o r t 2 3
symboles nous donne un nombre. P o i d s f o r t 2 3

2 3 3 4 5 6 7

Poids faibledonne un nombre. P o i d s f o r t 2 3 3 4

P o i d s f o r t 2 3 3 4 5 6 7
P o i d s f o r t 2 3 3 4 5 6 7
P o i d s f o r t 2 3 3 4 5 6 7

345 , 567

Partie entière

Partie fractionnelle

Architecture des Ordinateurs

1ère année ENIT/Informatique

33

Système Décimal

• On utilise dix symboles différents:

{ 0 ,

1 ,

2 ,

3

, 4 ,

5 ,

6 , 7

,

8 , 9 }

• N’importe quelle combinaison de ces symboles nous donne un nombre.

Poids fort

symboles nous donne un nombre. P o i d s f o r t 2 3
symboles nous donne un nombre. P o i d s f o r t 2 3

2 3 3 4 5 6 7

Poids faibledonne un nombre. P o i d s f o r t 2 3 3 4

P o i d s f o r t 2 3 3 4 5 6 7
P o i d s f o r t 2 3 3 4 5 6 7
P o i d s f o r t 2 3 3 4 5 6 7

345 , 567

Partie entière

Partie fractionnelle

Architecture des Ordinateurs

1ère année ENIT/Informatique

34

Système Décimal

• 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

1ère année ENIT/Informatique

35

Système Binaire

• Le système binaire utilise uniquement 2

symboles :

{ 0 , 1}!

Un bit

binaire utilise uniquement 2 symboles : { 0 , 1}! Un bit ( 1101) 2 La

( 1101) 2

utilise uniquement 2 symboles : { 0 , 1}! Un bit ( 1101) 2 La base

La base

uniquement 2 symboles : { 0 , 1}! Un bit ( 1101) 2 La base (
uniquement 2 symboles : { 0 , 1}! Un bit ( 1101) 2 La base (

( 1 1 0 1) 2

Le bits du poids forts

L e b i t s d u p o i d s f o r

Le bits du poids faible

Architecture des Ordinateurs

1ère année ENIT/Informatique

36

Système Binaire

• Un nombre dans la base 2 peut être écrit aussi sous forme polynomiale

• 11001010 base 2, conversion vers décimal

= 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)

Architecture des Ordinateurs

1ère année ENIT/Informatique

37

Système Binaire

Binaire

0

0

1

0

0

0

1

1

2 7

2 6

2 5

2 4

2 3

2 2

2 1

2 0

128

64

32

16

8

4

2

1

Donc,

0010001 2 = 0×128+0×64+1×32+0×16+0×8+0×4+1×2+1×1 = 35 10

Architecture des Ordinateurs

1ère année ENIT/Informatique

38

Système Binaire

• Diviser nombre par 2

• Chiffre correspondant et reste de division • Arrêt quand quotient= 0

et reste de division • Arrêt quand quotient= 0 Architecture des Ordinateurs 1ère année ENIT/Informatique

Architecture des Ordinateurs

1ère année ENIT/Informatique

39

Système Binaire

35 10 =

2

1. Write down place values

128 64

32

16

8

4

2

1

2. Place 1 under the proper place values 3. Place 0 in all other places 0 0 1 0 0 0 1 1

1

1

1

Architecture des Ordinateurs

1ère année ENIT/Informatique

40

Système Hexadécimal

• Le système 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 (décimal)

• Exemples : 0DEADh, 0FEEDh, 0DEAFh.

Architecture des Ordinateurs

1ère année ENIT/Informatique

41

Système Hexadécimal

Binaire

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

Architecture des Ordinateurs

Hexadécimal

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

1234h = 0001 0010 0011 0100

0DEADh = 0000 1101 1110 1010 1101

1ère année ENIT/Informatique

42

Représentation des nombres

Représentation distinguant le positif du négatif :

•Utilisation de 1 bit de signe : 0 va avoir une représentation positive et négative

Un nombre ayant deux représentations est plus grave qu'un déséquilibre entre les nombres positifs et les nombres négatifs.

•Complément à 2 (adopter pour les ordinateurs 32 bits)

0000

0000 0000 0000 0000 0000 0000 0000 deux = 0 dix

0000

0000 0000 0000 0000 0000 0000 0001 deux = 1 dix

0000

0000 0000 0000 0000 0000 0000 0010 deux = 2 dix

0111

1111 1111 1111 1111 1111 1111 1110 deux = 2.147.483.646 dix

0111

1111 1111 1111 1111 1111 1111 1111 deux = 2.147.483.647 dix

Architecture des Ordinateurs

1ère année ENIT/Informatique

43

Représentation des nombres

0000

0000 0000 0000 0000 0000 0000 0000 deux = 0 dix

0000

0000 0000 0000 0000 0000 0000 0001 deux = 1 dix

0000

0000 0000 0000 0000 0000 0000 0010 deux = 2 dix

0111

1111 1111 1111 1111 1111 1111 1110 deux = 2.147.483.646 dix

0111

1111 1111 1111 1111 1111 1111 1111 deux = 2.147.483.647 dix

1000

0000 0000 0000 0000 0000 0000 0000 deux = -2.147.483.648 dix

1000

0000 0000 0000 0000 0000 0000 0001 deux = -2.147.483.647 dix

1111

1111 1111 1111 1111 1111 1111 1110 deux = -2 dix

1111

1111 1111 1111 1111 1111 1111 1111 deux = -1 dix

Architecture des Ordinateurs

1ère année ENIT/Informatique

44

Représentation des nombres

• Cette convention s'appelle complément à deux : tous les nombres négatifs ont un 1 comme bit de poids fort.

• Le matériel n'a donc besoin de tester que ce bit pour déterminer 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 représenté comme suit :

(x31 * -231)+ ( x30 * 2 30 ) +

xi : signifie : le ième bit de x

• x + (-x) = 0

+ ( x1 * 2 1 ) + (x0 * 20)

• 1 seul nombre négatif -2.147.483.648 dix qui n ’a pas de nombre positif correspondant

Architecture des Ordinateurs

1ère année ENIT/Informatique

45

Représentation 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

---------------------------------------------------------

= 1111 1111 1111 1111 1111 1111 1111 1110 deux

= -2 dix

deux

Architecture des Ordinateurs

1ère année ENIT/Informatique

46

Représentation des nombres

Par conséquent :

• -x = x + 1

La manière de convertir un nombre binaire représenté avec n bits en un nombre représenté avec plus de n bits: extension signée. Répliquer 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

1ère année ENIT/Informatique

47

CHAPITRE II:

von Newman, Cycle Instruction, Bus…

von Newman/Turing

• Programme en mémoire

• Mémoire centrale contient programme+données

• UAL (Unité Arithmétique et Logique) opère sur données binaires

• UC (Unité de Controle) interprète et exécute les instructions du programme

• E/S controllées par UC!

• Princeton Institute for Advanced Studies – IAS, complété 1952

Architecture des Ordinateurs

49

Machine von Newman

Equipements E/S
Equipements
E/S
Unité Arithmétique et Logique (UAL) Mémoire Centrale Unité de Contrôle d’éxécution du programme (UC)
Unité Arithmétique
et Logique (UAL)
Mémoire
Centrale
Unité de Contrôle
d’éxécution du
programme
(UC)
(UAL) Mémoire Centrale Unité de Contrôle d’éxécution du programme (UC) Architecture des Ordinateurs 5 0
(UAL) Mémoire Centrale Unité de Contrôle d’éxécution du programme (UC) Architecture des Ordinateurs 5 0

Architecture des Ordinateurs

50

IAS-Détails

• 1000 mots x 40 bits

– Nombres binaires

– 2 x 20 bit instructions

• Registers (mémoire 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-Détails

Central Processing Unit Arithmetic and Logic Unit Accumulator MQ Arithmetic & Logic Circuits Input MBR
Central Processing Unit
Arithmetic and Logic Unit
Accumulator
MQ
Arithmetic & Logic Circuits
Input
MBR
Output
Instructions
& Data
Main
Equipment
Memory
IBR
PC
MAR
IR
Control
Circuits
Address
Program Control
Unit

Architecture des Ordinateurs

52

Concept de Programme

• Systèmes cablés (hardware) inflexibles

• Hardware générique exécute différents types de tâches avec signaux de contrôle appropriés

• Au lieu de re-cablage, fournir nouvel ensemble de signaux de commande (contrôle)

Architecture des Ordinateurs

53

C’est quoi un Programme

• Une séquence d’étapes ou opérations

• Chaque étape/opération, consiste en l’exécution d’une simple opération arithmétique ou logique

• Chaque opération nécéssite un nouvel ensemble de signaux de contrôle

Architecture des Ordinateurs

54

Fonction d’Unité de Contrôle (Commande)

• A chaque opération est associé un “code opération” unique

– e.g. ADD, MOVE

• Un circuit électronique (un bloc de hardware) accepte le code et génère les signaux de contrôle appropriés (correspondants au code opération)

• C’est un ordinateur!

Architecture des Ordinateurs

55

Exemple de Programme—Assembleur 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

Architecture des Ordinateurs

# aller en E1 si i==j # f = g+h #f = f-i

56

Autres Composants

• L’UC et l’UAL constituent le UC (CPU:

Central Processing Unit)

• Introduction des données et des instructions dans le système; et renvoi des résultats

– Système E/S (entrées et sorties)

• Nécéssité d’enregistrer de manière temporaire les programmes, données et résultats

– Mémoire centrale

Architecture des Ordinateurs

57

Composants, Vue Haut niveau

Composants, Vue Haut niveau Architecture des Ordinateurs 5 8

Architecture des Ordinateurs

58

Cycle Instruction

• Deux étapes:

– Fetch (chargement/lecture instruction)

– Execute

Instruction • Deux étapes: – Fetch (chargement/lecture instruction) – Execute Architecture des Ordinateurs 5 9

Architecture des Ordinateurs

59

Cycle Fetch

• PC contient adresse de prochaine instruction à chercher

• Charger instruction de mémoire de l’emplacement pointé par PC

• Incrémentation PC

– Exception saut!

• Charger instruction dans Registre Instruction (RI)

• Interpréter instruction et éxécuter action correspondante

Architecture des Ordinateurs

60

Cycle Exécution

• Processeur-Mémoire

– Transfert de données entre CPU et mémoire centrale

• Processeur-E/S

– Transfert de données entre le CPU et un module E/S

• Opération sur données

– Une opération arithmétique ou logique sur des données dans les registres ou en mémoire

• Contrôle programme

– Changement du séquencement du programme

– e.g. saut

• Combinaison d’actions ci-dessus!

Architecture des Ordinateurs

61

Exemple d’exécution de programme

Exemple d’exécution de programme Architecture des Ordinateurs 6 2

Architecture des Ordinateurs

62

Cycle Instruction – Diagramme Etats

Cycle Instruction – Diagramme Etats Architecture des Ordinateurs 6 3

Architecture des Ordinateurs

63

Interruptions

• Méchanisme à travers lequel d’autres modules (e.g. E/S) peuvent interrompre la séquence normale d’exécution

• Source : le programme

– e.g. overflow (débordement), division par zéro…

• Source: Temporisateur (timer)

– Généré par l’horloge système

– Systèmes multi-tâches pour la préemption

• Source: E/S

– Controlleur E/S

• Source: faute du hardware

– e.g. erreur de parité de la mémoire

Architecture des Ordinateurs

64

Séquencement Programme

Séquencement Programme Architecture des Ordinateurs 6 5

Architecture des Ordinateurs

65

Cycle Interruption

• S’ajoute au cycle instruction

• CPU vérifie présence d’interruptions

– Signal d’interruptions

• Pas d’interruption => lecture d’instruction suivante

• Si interruption en attente:

– Suspendre exécution programme

– Sauvegarde du “contexte”

– Chargement dans PC adresse début de routine d’interruption

– Exécution de routine d’interruption

– Restoration contexte programme et continuation

Architecture des Ordinateurs

66

Cycle Instruction – Diagramme Etat avec Interruptions!

Cycle Instruction – Diagramme Etat avec Interruptions! Architecture des Ordinateurs 6 7

Architecture des Ordinateurs

67

Interruptions Multiples

• Fermer les interruptions

– CPU prend pas en considération les interruptions qui arrivent pendant le traitement d’une interruption

– Interruptions restent dans “file attente” et traité aprés terminaison

– Interruption traité dans leur ordre d’arrivé

• Définition de priorités

– Priorité faible peut ètre interrompu par plus haute priorité

– Aprés avoir terminer le traitement de haute priorité le CPU traite plus basse priorité

Architecture des Ordinateurs

68

Interruptions Multiples--Séquentiels

Interruptions Multiples--Séquentiels Architecture des Ordinateurs 6 9

Architecture des Ordinateurs

69

Iterruptions Multiples--Imbriquées

Iterruptions Multiples--Imbriquées Architecture des Ordinateurs 7 0

Architecture des Ordinateurs

70

Connecter les Unités

• Les unités doivent être connectées

• Différentes types de connections, appropriées pour chaque unité

– Mémoire

– E/S

– CPU

Architecture des Ordinateurs

71

Connections avec Mémoire

• Envoi et réception de données (écriture/lecture)

• Reçois adresses (des cases mémoire)

• Reçois signaux de contrôle

– Lecture

– Ecriture – Temps

Architecture des Ordinateurs

72

Connexions E/S

• Similaire à la connexion mémoire du point de vue de l’ordinateur

• Sortie

– Reçois données de l’ordinateur

– Envoi données au périphérique

• Entrées

– Reçois données de périphérique

– Envoi données à l’ordinateur

Architecture des Ordinateurs

73

Connexion E/S

• Reçois signaux de control de l’ordinateur

• Envoi signaux de contrôle aux périphériques

– e.g. spin disk

• Reçois adresses de l’ordinateur

– e.g. num. de port pour identifier le périphérique

• Envoi signaux d’interruption

Architecture des Ordinateurs

74

Connexion CPU

• Lecture instructions et données

• Ecriture données (après traitement)

• Envoi des signaux de contrôle aux autres unités

• Recevoir (et agir sur, ou traitement) des interruptions

Architecture des Ordinateurs

75

Les Bus

• Il y a un choix entre un grand nombre de systèmes d’interconnexion 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

C’est quoi un Bus

• Un canal de communication et un chemin de connexion entre 2 ou plusieurs unités (périphériques) • Typiquement utilise le mécanisme de diffusion (broadcast)

• Les canaux d’un même bus sont typiquement groupés

– e.g. 32 bit data bus is 32 separate single bit channels

• Ligne de puissance sont typiquement omises des schémas de bus

Architecture des Ordinateurs

77

Bus de données

• Transport et communication de données

– Il ne faut pas oublier qu’il y a pas de différence entre “données” et “instructions”, a ce niveau

• Largeur est clé dans la caractérisation la performance

– 8, 16, 32, 64 bit

Architecture des Ordinateurs

78

Bus Adresses

• Identification de la source et destination des données

• e.g. CPU veut lire une instruction (données) à partir de certaine “cases” de la mémoire (adresse = adresse de la première “case”)

• La largeur du bus adresses détermine la capacité mémoire du système

– e.g. 8080 a 16 bit bus addresses = 64k d’éspace d’addreses

Architecture des Ordinateurs

79

Bus de contrôle

• Fournir les information de contrôle et de temps

– Lecture/Ecriture de mémoire

– Demande d’interruption

– Signaux horloges

Architecture des Ordinateurs

80

Interconnexion par Bus

Interconnexion par Bus Architecture des Ordinateurs 8 1

Architecture des Ordinateurs

81

Grands et Jaunes…

• Les bus… c’est quoi physiquement!

– Des lignes parallèle sur circuits – Des câbles en rubans – Des connecteurs sur les cartes mères

• e.g. PCI

– Un ensemble de fils… (avec des circuits de contrôle)

Architecture des Ordinateurs

82

Un Seul Bus?

• Beaucoup d’unités sur un même bus, engendre:

– Des délais importants de propagation des signaux

• Un long chemin de données 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 système utilisent des bus multiples pour éviter les conséquences de ces problèmes

Architecture des Ordinateurs

83

Bus ISA d’Origine, avec Cache

Bus ISA d’Origine, avec Cache Architecture des Ordinateurs 8 4

Architecture des Ordinateurs

84

Bus à Haute Performances

Bus à Haute Performances Architecture des Ordinateurs 8 5

Architecture des Ordinateurs

85

Types de Bus

• Dédiées

– Des lignes d’adresses et de données séparées

• Multiplexés

– Lignes partagées

– Ligne de contrôle: Adresses/données valide

– Avantage – nombre réduit de ligens

– Inconvénient

• Contrôle compliqué

• Performance

Architecture des Ordinateurs

86

Question d’Arbitrage

• Plus d’une unité commande les bus

• e.g. CPU et DMA

• Un seul module peut contrôler le bus à un instant donné

• Recours à l’arbitrage centralisé ou décentralisé

Architecture des Ordinateurs

87

Arbitrage Centralisé

• Un seul module (unité de hardware) contrôle l’accé au bus

– Contrôleur de bus

– C’est l’arbitre

• Le contrôleur de bus peut faire partie intégrale du CPU ou séparé

Architecture des Ordinateurs

88

Arbitrage Réparti

• Chaque module peut essayer d’accéder directement au bus • Il y a du hardware d’arbitrage sur chaque module qui globalement décide celui qui réellement accède au bus à un instant donné

Architecture des Ordinateurs

89

Temporisation du Bus

• Coordination des évènement sur le bus • Synchrone

– Occurrence d’évènement décidé par signal horloge

– Contrôle du bus inclue ligne horloge

– Un cycle bus: 1-0

– Tous les module sur le bus accèdent au signal horloge

– Typiquement synchronisé sur front montant

– Typiquement un seul évènement par cycle

Architecture des Ordinateurs

90

Diagramme de Temporisation Synchrone

Diagramme de Temporisation Synchrone Architecture des Ordinateurs 9 1

Architecture des Ordinateurs

91

Diagramme de Temporisation Asynchrone

Diagramme de Temporisation Asynchrone Architecture des Ordinateurs 9 2

Architecture des Ordinateurs

92

CHAPITRE III:

Organisation du MIPS,

CHAPITRE III: Organisation du MIPS , Format Instructions, Assembleur Architecture des Ordinateurs 1ère année

Format Instructions, Assembleur

Environnement de Développement pour l’Assembleur MIPS

• Simulateurs/Emulateurs MIPS

– Exécution 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

• 2 32 octets mémoire

• Registres: 31 * 32 bits, R0=0

• Registres flottants (nombres réels…): 32 * 32 bits, utilisés en paires

• HI, LO, CP (compteur ordinal ou programme)

R0

R1

R31

CP

LO

HI

0
0
HI, LO, CP (compteur ordinal ou programme) R0 R1 R31 CP LO HI 0 … Architecture

HI, LO, CP (compteur ordinal ou programme) R0 R1 R31 CP LO HI 0 … Architecture
HI, LO, CP (compteur ordinal ou programme) R0 R1 R31 CP LO HI 0 … Architecture
HI, LO, CP (compteur ordinal ou programme) R0 R1 R31 CP LO HI 0 … Architecture
HI, LO, CP (compteur ordinal ou programme) R0 R1 R31 CP LO HI 0 … Architecture

Architecture des Ordinateurs

95

Les Registres

• 32 Registres à usages génériques (GPRs)

– Assembleur utilise “$numéro” $0, …,$31

– Registres à 32bits/4octets pour MIPS-32

– Le registre $0 est câblé = 0 !!

• Conventions du software pour standardiser utilisation des registres

– e. g. $8 - $15 appelés $t0 - $t7 et utilisés pour la tenue des valeurs temporaires

Architecture des Ordinateurs

96

Organisation du µP MIPS

. . . Memory 4 bytes per word Up to 2 32 bytes = 2
.
.
.
Memory
4 bytes per word
Up to 2 32 bytes = 2 30 words
.
.
.
4 bytes per word Up to 2 32 bytes = 2 30 words . . .
4 bytes per word Up to 2 32 bytes = 2 30 words . . .
4 bytes per word Up to 2 32 bytes = 2 30 words . . .
4 bytes per word Up to 2 32 bytes = 2 30 words . . .
4 bytes per word Up to 2 32 bytes = 2 30 words . . .
4 bytes per word Up to 2 32 bytes = 2 30 words . . .
EIU Execution & $0 Integer Unit $1 (Main proc) $2 $31 Integer ALU mul/div Hi
EIU
Execution &
$0
Integer Unit
$1
(Main proc)
$2
$31
Integer
ALU
mul/div
Hi
Lo

Integer

Multiplier/Divider

FPU Floating F0 Point Unit F1 (Coproc 1) F2 F31 FP Arith
FPU
Floating
F0
Point Unit
F1
(Coproc 1)
F2
F31
FP
Arith
TMU Trap & BadVaddr Memory Unit Status (Coproc 0) Cause EPC
TMU
Trap &
BadVaddr
Memory Unit
Status
(Coproc 0)
Cause
EPC

32 General

Purpose

Registers

Arithmetic &

Logic Unit

32 Floating-Point Registers

Floating-Point Arithmetic Unit

Architecture des Ordinateurs

97

Noms et Utilisations de Registres

$0 = $zero $1 = $at $2 = $v0 $3 = $v1 $4 = $a0
$0
= $zero
$1
= $at
$2
= $v0
$3
= $v1
$4
= $a0
$5
= $a1
$6
= $a2
$7
= $a3
$8
= $t0
$9
= $t1
$10 = $t2
$11 = $t3
$12 = $t4
$13 = $t5
$14 = $t6
$15 = $t7

Architecture des Ordinateurs

$16 = $s0 $17 = $s1 $18 = $s2 $19 = $s3 $20 = $s4
$16 = $s0
$17 = $s1
$18 = $s2
$19 = $s3
$20 = $s4
$21 = $s5
$22 = $s6
$23 = $s7
$24 = $t8
$25 = $t9
$26 = $k0
$27 = $k1
$28 = $gp
$29 = $sp
$30 = $fp
$31 = $ra

98

Noms et Utilisations de Registres

• Assembleur fait référence aux registres par nom ou par numéro…

– C’est plus simple pour vous d’utiliser les noms!

Name

Register

Usage

$zero

$0

Always 0

(forced by hardware)

$at

$1

Reserved for assembler use

$v0 – $v1

$2 – $3

Result values of a function

$a0 – $a3

$4 – $7

Arguments of a function

$t0 – $t7

$8 – $15

Temporary Values

$s0 – $s7

$16 – $23

Saved registers

(preserved across call)

$t8 – $t9

$24 – $25

More temporaries

$k0 – $k1

$26 – $27

Reserved for OS kernel

$gp

$28

Global pointer

(points to global data)

$sp

$29

Stack pointer

(points to top of stack)

$fp

$30

Frame pointer

(points to stack frame)

$ra

$31

Return address

(used by jal for function call)

Architecture des Ordinateurs

99

Format Instructions Type-R

Op 6

Rs 5

Rt 5

Rd 5

sa 5
sa 5

funct 6

Op: code opération (opcode)

– Spécifie l’opération de l’instruction

– Spécifie le format de l’instruction

funct: code fonction – extension de « opcode »

– 2 6 = 64 fonctions pour même « opcode »

– MIPS « opcode » 0 pour définir instructions de type-R

• 3 registres arguments

Rs, Rt: arguments source

Rd: argument destination

sa: nombre de bits pour décalage

Architecture des Ordinateurs

100

Addition/Soustraction Entiers (type-R)

Instruction

Meaning

 

R-Type Format

 

add

$s1, $s2, $s3

$s1 = $s2 + $s3

op = 0

rs = $s2

rt = $s3

rd = $s1

sa = 0

f

= 0x20

addu $s1, $s2, $s3

$s1 = $s2 + $s3

op = 0

rs = $s2

rt = $s3

rd = $s1

sa = 0

f

= 0x21

sub

$s1, $s2, $s3

$s1 = $s2 – $s3

op = 0

rs = $s2

rt = $s3

rd = $s1

sa = 0

f

= 0x22

subu $s1, $s2, $s3

$s1 = $s2 – $s3

op = 0

rs = $s2

rt = $s3

rd = $s1

sa = 0

f

= 0x23

add & sub: débordement génère une exception arithmétique

addu & subu: similaires à add & sub

Débordement n’est pas pris en considération

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 placés dans $s0 à $s4

– Appelés les registres « save » : $s0 = $16, $s1 = $17, …, $s7 = $23

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

addu

$t0, $s1, $s2

# $t0 = g + h

addu

$t1, $s3, $s4

# $t1 = i + j

subu

$s0, $t0, $t1

# f = (g+h)–(i+j)

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

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

• Solution:

op

rs = $s1

rt = $s2

rd = $t0

sa

func

000000 10001

10010 01000

00000 100001
00000 100001

Architecture des Ordinateurs

102

Opération Logiques, bit/bit

• Opérations logiques bit/bit: and, or, xor, nor

x y x and y x y x or y x y x xor y
x
y
x and y
x
y
x or y
x
y
x xor y
0
0
0
0
0
0 0
0
0
0
1
0
0
1
1 0
1
1
1
0
0
1
0
1 1
0
1
1
1
1
1
1
1 1
1
0
x y x nor y 0 0 1 0 1 0 1 0 0 1
x
y
x nor y
0
0
1
0
1
0
1
0
0
1
1
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 utilisée comme NOT, comment?

nor $s1,$s2,$s2 équivalent à not $s1,$s2

Architecture des Ordinateurs

103

Instructions Logiques, bit/bit

Instruction

Meaning

 

R-Type Format

 

and $s1, $s2, $s3

$s1 = $s2 & $s3

op = 0

rs = $s2

rt = $s3

rd = $s1

sa = 0

f

= 0x24

or

$s1, $s2, $s3

$s1 = $s2 | $s3

op = 0

rs = $s2

rt = $s3

rd = $s1

sa = 0

f

= 0x25

xor

$s1, $s2, $s3

$s1 = $s2 ^ $s3

op = 0

rs = $s2

rt = $s3

rd = $s1

sa = 0

f

= 0x26

nor

$s1, $s2, $s3

$s1 = ~($s2|$s3)

op = 0

rs = $s2

rt = $s3

rd = $s1

sa = 0

f

= 0x27

Exemples:

Suppose $s1 = 0xabcd1234 et $s2 = 0xffff0000

and $s0,$s1,$s2 or $s0,$s1,$s2 xor $s0,$s1,$s2

nor $s0,$s1,$s2

Architecture des Ordinateurs

# $s0 = 0xabcd0000 # $s0 = 0xffff1234 # $s0 = 0x54321234

# $s0 = 0x0000edcb

104

Opérations de Décalage

• Décaler c’est translater tous les bits dans un registre à gauche ou à droite

• Décaler 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 arithmétique

• Le bit de signe (au lieu de 0) est décaler dans le registre de la gauche

sll

shift-out MSB

srl

shift-in 0

sra

shift-in sign-bit

32-bit register

MSB srl shift-in 0 sra shift-in sign-bit 32-bit register . . . . . . .
. . . . . . . . .
.
.
.
.
.
.
.
.
.

Architecture des Ordinateurs

shift-in 0

shift-out LSB

shift-out LSB

105

Instructions de Décalage

Instruction

Meaning

 

R-Type Format

 

sll

$s1,$s2,10

$s1 = $s2 << 10

op = 0

rs = 0

rt = $s2

rd = $s1

sa = 10

f

= 0

srl

$s1,$s2,10

$s1 = $s2>>>10

op = 0

rs = 0

rt = $s2

rd = $s1

sa = 10

f

= 2

sra

$s1, $s2, 10

$s1 = $s2 >> 10

op = 0

rs = 0

rt = $s2

rd = $s1

sa = 10

f

= 3

sllv

$s1,$s2,$s3

$s1 = $s2 << $s3

op = 0

rs = $s3

rt = $s2

rd = $s1

sa = 0

f

= 4

srlv

$s1,$s2,$s3

$s1 = $s2>>>$s3

op = 0

rs = $s3

rt = $s2

rd = $s1

sa = 0

f

= 6

srav

$s1,$s2,$s3

$s1 = $s2 >> $s3

op = 0

rs = $s3

rt = $s2

rd = $s1

sa = 0

f

= 7

Décalage par un nombre de bits variable: sllv, srlv, srav

Comme sll, srl, sra, mais registre utilisé pour spécifier valeur du décalage

Exemples: $s2 = 0xabcd1234, et $s3 = 16

du décalage • Exemples: $s2 = 0xabcd1234, et $s3 = 16 sll $s1,$s2,8 sra $s1,$s2,4 srlv

sll $s1,$s2,8 sra $s1,$s2,4 srlv $s1,$s2,$s3

$s1 = $s2<<8 $s1 = $s2>>4 $s1 = $s2>>>$s3

$s1 = 0xcd123400 $s1 = 0xfabcd123 $s1 = 0x0000abcd

$s1 = 0xcd123400 $s1 = 0xfabcd123 $s1 = 0x0000abcd op=000000 rs=$s3=10011 rt=$s2=10010 rd=$s1=10001 sa=00000
$s1 = 0xcd123400 $s1 = 0xfabcd123 $s1 = 0x0000abcd op=000000 rs=$s3=10011 rt=$s2=10010 rd=$s1=10001 sa=00000
$s1 = 0xcd123400 $s1 = 0xfabcd123 $s1 = 0x0000abcd op=000000 rs=$s3=10011 rt=$s2=10010 rd=$s1=10001 sa=00000
$s1 = 0xcd123400 $s1 = 0xfabcd123 $s1 = 0x0000abcd op=000000 rs=$s3=10011 rt=$s2=10010 rd=$s1=10001 sa=00000

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 n’importe 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 $t0, $s1,
– $s2 = $s1*36 = $s1*(4 + 32) = $s1*4 + $s1*32
sll
$t0, $s1, 2
; $t0 = $s1 * 4
sll
$t1, $s1, 5
; $t1 = $s1 * 32
addu $s2, $t0, $t1
; $s2 = $s1 * 36

Architecture des Ordinateurs

107

Multiplication Exercice

Multiplier $s1 par 26, en utilisant des instructions de décalage

Idée: 26 = 2 + 8 + 16

sll sll addu sll addu $t0, $s1, 1 $t1, $s1, 3 $s2, $t0, $t1 $t0,
sll
sll
addu
sll
addu
$t0, $s1, 1
$t1, $s1, 3
$s2, $t0, $t1
$t0, $s1, 4
$s2, $s2, $t0
; $t0 = $s1 * 2
; $t1 = $s1 * 8
; $s2 = $s1 * 10
; $t0 = $s1 * 16
; $s2 = $s1 * 26

Multiplier $s1 by 31, Idée: 31 = 32 – 1

sll $s2, $s1, 5 subu $s2, $s2, $S1 ; $s2 = $s1 * 32 ;
sll
$s2, $s1, 5
subu $s2, $s2, $S1
; $s2 = $s1 * 32
; $s2 = $s1 - $S1
108
Architecture des Ordinateurs

Format Type-I

• Constantes utilisées dans programmes

– Le type-R instructions de décalage utilisent une constante de 5-bits pour spécifier nombre bits à décaler

– Quoi pour les autres instruction besoin de constantes?

• Type-I: Instructions avec arguments “immédiats”

Op 6

Rs 5 Rt 5 immediate 16
Rs 5
Rt 5
immediate 16

• 16-bits constante immédiate est enregistrée avec instruction

– Rs est le registre source

– Rt est maintenant le registre destination (pour R-type appelé Rd)

• Exemples d’instruction Type-I, ALU :

– Add imméd.: addi $s1, $s2, 5

– OR imméd. :

ori

$s1, $s2, 5

Architecture des Ordinateurs

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

109

Type-I Instruction Arith./Logiques

Instruction

Meaning

 

I-Type Format

addi

$s1, $s2, 10

$s1 = $s2 + 10

op = 0x8

rs = $s2

rt = $s1

imm 16 = 10

addiu $s1, $s2, 10

$s1 = $s2 + 10

op = 0x9

rs = $s2

rt = $s1

imm 16 = 10

andi

$s1, $s2, 10

$s1 = $s2 & 10

op = 0xc

rs = $s2

rt = $s1

imm 16 = 10

ori

$s1, $s2, 10

$s1 = $s2 | 10

op = 0xd

rs = $s2

rt = $s1

imm 16 = 10

xori

$s1, $s2, 10

$s1 = $s2 ^ 10

op = 0xe

rs = $s2

rt = $s1

imm 16 = 10

lui

$s1, 10

$s1 = 10 << 16

op = 0xf

0

rt = $s1

imm 16 = 10

addi: débordement génère exception arithmétique

Cas de débordement résultat pas écrit dans destination

addiu: même que addi mais pas de débordement Constante immédiate pour addi et addiu est signée

Pas besoin de subi ou subiu

Constante Immédiate pour andi, ori, xori est sans signe

Architecture des Ordinateurs

110

Exemple Inst. Arith./Logiques

• Exemples: suppose A, B, C placés dans $s0, $s1, $s2

• Exemples: suppose A, B, C placés dans $s0, $s1, $s2 A = B+5; traduire comme

A

= B+5; traduire comme

addiu $s0,$s1,5

C

= B–1; traduire comme

addiu $s2,$s1,-1

C = B–1; traduire comme addiu $s2,$s1,-1 op=001001 rs=$s1=10001 rt=$s2=10010 imm = -1 =

op=001001 rs=$s1=10001 rt=$s2=10010

imm = -1 = 1111111111111111
imm = -1 = 1111111111111111

A

= B&0xf; traduire comme

andi $s0,$s1,0xf

C

= B|0xf; traduire comme

ori

$s2,$s1,0xf

C

=

5;

traduire comme

ori

$s2,$zero,5

A

= B;

traduire comme

ori

$s0,$s1,0

• Pas besoin subi, constante de addi est signée

• Registre 0 ($zero) a toujours la valeur 0!

Architecture des Ordinateurs

111

Constantes de 32 bits

• Instruction Type-I introduit constante de 16-bits Op 6 Rs 5 Rt 5 immediate 16
• Instruction Type-I introduit constante de 16-bits
Op 6
Rs 5
Rt 5
immediate 16

• On veut charger 32-bits dans registre?

• Impossible d’avoir constante sur 32-bits

– Tous les instructions sont de taille 32-bits!

• Solution: utiliser 2 instructions

– Suppose nous désirons: $s1=0xAC5165D9 (32-bit constant)

lui: load upper immediate

load upper

clear lower

16 bits 16 bits $s1=$17 0xAC51 0x0000
16 bits
16 bits
$s1=$17 0xAC51 0x0000
upper clear lower 16 bits 16 bits $s1=$17 0xAC51 0x0000 lui $s1,0xAC51 ori $s1,$s1,0x65D9 $s1=$17 0
upper clear lower 16 bits 16 bits $s1=$17 0xAC51 0x0000 lui $s1,0xAC51 ori $s1,$s1,0x65D9 $s1=$17 0

lui $s1,0xAC51

ori $s1,$s1,0x65D9 $s1=$17 0xAC51 0x65D9

Architecture des Ordinateurs

112

Format Type-J

Op 6 immediate 26
Op 6
immediate 26

• Format type-J utilisé pour saut inconditionnel::

j label

.

label:

.

.

# saut au label

• Valeur immédiate de 26-bits et enregistrée avec instruction

– Constante immédiate spécifie adresse destination

• Compteur Programme (PC) est modifié comme suit:

- PC suivant =

– 4-bits MSB restent inchangées!

PC 4 immediate 26 00
PC 4
immediate 26
00

Architecture des Ordinateurs

2 bits LSB deviennent 00

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 à zéro & saut

utilisées fréquemment donc implémentées de manière efficiente!

bltz Rs,label bgtz Rs,label blez Rs,label bgez Rs,label

branchement si (Rs < 0) branchement si (Rs > 0) branchement si (Rs <= 0) branchement si (Rs >= 0)

• Pas besoin de beqz et bnez. Pourquoi?

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,im 16

if (rs < im 16 ) rt = 1 else rt = 0

sltiu rt,rs,im 16

sans signe <

• Comparaisons avec signe / sans signe Peut produire résultat différents Suppose $s0 = 1 et $s1 = -1 = 0xffffffff slt $t0,$s0,$s1 résultat $t0 = 0 stlu $t0,$s0,$s1 résultat $t0 = 1

Architecture des Ordinateurs

115

Suite Branchement

• Le MIPS ne fournit d’instructions pour …

blt, bltu

ble, bleu

bgt, bgtu

bge, bgeu

branch if less than (signed/unsigned) branch if less or equal (signed/unsigned) branch if greater than (signed/unsigned) branch if greater or equal

(signed/unsigned) Peut faire avec une séquence de 2 instructions

• Comment faire:

• Solution:

• Comment faire:

• Solution:

faire: • Solution: • Comment faire: • Solution: Architecture des Ordinateurs blt $s0,$s1,label slt
faire: • Solution: • Comment faire: • Solution: Architecture des Ordinateurs blt $s0,$s1,label slt

Architecture des Ordinateurs

blt $s0,$s1,label slt $at,$s0,$s1 bne $at,$zero,label ble $s2,$s3,label slt $at,$s3,$s2 beq $at,$zero,label

116

Pseudo-Instructions

• Introduits par assembleur comme des vraies instructions

– Ils facilitent la programmation en assembleur

Pseudo-Instructions Conversion to Real Instructions move $s1, $s2 addu $s1, $zero, $s2 not $s1, $s2
Pseudo-Instructions
Conversion to Real Instructions
move
$s1, $s2
addu $s1, $zero, $s2
not
$s1, $s2
nor
li
$s1, 0xabcd
ori
lui
li
$s1, 0xabcd1234
ori
sgt
$s1, $s2, $s3
slt
slt
blt
$s1, $s2, label
bne
$s1, $s2, $zero
$s1, $zero, 0xabcd
$at, 0xabcd
$s1, $at, 0x1234
$s1, $s3, $s2
$at, $s1, $s2
$at, $zero, label

• L’assembleur réserve $at = $1 pour son utilisation

$at c’est “assembler temporary register”

Architecture des Ordinateurs

117

Instructions saut, slt, branchement

Instruction

Meaning

 

Format

 

j

label

jump to label

op 6 = 2

 

imm 26

 

beq

rs, rt, label

branch if (rs == rt)

op 6 = 4

rs 5

rt 5

 

imm 16

bne

rs, rt, label

branch if (rs != rt)

op 6 = 5

rs 5

rt 5

 

imm 16

blez

rs, label

branch if (rs<=0)

op 6 = 6

rs 5

0

 

imm 16

bgtz

rs, label

branch if (rs > 0)

op 6 = 7

rs 5

0

 

imm 16

bltz

rs, label

branch if (rs < 0)

op 6 = 1

rs 5

0

 

imm 16

bgez rs, label

branch if (rs>=0)

op 6 = 1

rs 5

1

 

imm 16

Instruction

Meaning

 

Format

 

slt

rd, rs, rt

rd=(rs<rt?1:0)

op 6 = 0

rs 5

rt 5

rd 5

0

0x2a

sltu

rd, rs, rt

rd=(rs<rt?1:0)

op 6 = 0

rs 5

rt 5

rd 5

0

0x2b

slti

rt, rs, imm 16

rt=(rs<imm?1:0)

0xa

rs 5

rt 5

 

imm 16

sltiu

rt, rs, imm 16

rt=(rs<imm?1:0)

0xb

rs 5

rt 5

 

imm 16

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

$s0, $s1, else

addu

$s2, $s3, $s4

j

sortie

else

: subu

$s2, $s3, $s4

sortie:

Architecture des Ordinateurs

119

Evaluation avec court-circuit

• Les langages de programmation utilisent la notion d’évaluation avec court-circuit

• Si la première expression est fausse, la seconde n’est pas exécutée!

if (($s1 > 0) && ($s2 < 0)) {$s3++;}
if (($s1 > 0) && ($s2 < 0)) {$s3++;}
# One Possible Implementation bgtz j L1: bltz $s1, L1 next $s2, L2 j next
# One Possible Implementation
bgtz
j
L1: bltz
$s1, L1
next
$s2, L2
j
next
L2: addiu $s3,$s3,1
# first expression
# skip if false
# second expression
# skip if false
# both are true
next:

Architecture des Ordinateurs

120

Meilleure implémentation de AND

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

Iimplémentation suivante utilise moins de code Inverser l’opérateur relationnel Laisser flux aller naturellement à la seconde expression Nombre d’instruction réduit de 5 à 3!

# Better Implementation blez bgez $s1, next $s2, next addiu $s3,$s3,1 next: # skip if
# Better Implementation
blez
bgez
$s1, next
$s2, next
addiu $s3,$s3,1
next:
# skip if false
# skip if false
# both are true

Architecture des Ordinateurs

121

Court-circuit avec OR

Court-circuit pour OR

Si la première expression est vraie, la deuxième n’est pas exécutée

if (($sl > $s2) || ($s2 > $s3)) {$s4 = 1;}
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 # yes, execute
bgt $s1, $s2, L1