Documente Academic
Documente Profesional
Documente Cultură
CHAPITRE I
Introduction
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
Electronic Devices
Desired Behavior
Ordinateur : quipement qui aide joindre des composants lectroniques pour un comportement dsir
Architecture des Ordinateurs 1re anne ENIT/Informatique 4
Unit Centrale
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
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)
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).
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.
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.
Parallles, intelligents...
Architecture des Ordinateurs 1re anne ENIT/Informatique 16
18
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)
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,).
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.
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
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
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:
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
sequence bit
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
35
Systme Binaire
Le systme binaire utilise uniquement 2 symboles : { 0 , 1}!
Un bit
( 1101)2 ( 1 1 0 1)2
La base
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
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
38
Systme Binaire
Diviser nombre par 2 Chiffre correspondant et reste de division Arrt quand quotient= 0
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
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
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
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
-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:
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
50
IAS-Dtails
1000 mots x 40 bits
Nombres binaires 2 x 20 bit instructions
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
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
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)
58
Cycle Instruction
Deux tapes:
Fetch (chargement/lecture instruction) Execute
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
Contrle programme
Changement du squencement du programme e.g. saut
61
62
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: E/S
Controlleur E/S
Squencement Programme
65
Cycle Interruption
Sajoute au cycle instruction CPU vrifie prsence dinterruptions
Signal dinterruptions
66
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
69
Iterruptions Multiples--Imbriques
70
71
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
73
Connexion E/S
Reois signaux de control de lordinateur Envoi signaux de contrle aux priphriques
e.g. spin disk
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
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)
76
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
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
80
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
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
84
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
87
Arbitrage Centralis
Un seul module (unit de hardware) contrle lacc au bus
Contrleur de bus Cest larbitre
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
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
91
92
CHAPITRE III:
PCSPIM
Site Web : http://www.cs.wisc.edu/~larus/spim.html
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 !!
96
Organisation du P MIPS
...
4 bytes per word
Memory
Up to 232 bytes = 230 words ...
$0 $1 $2
FPU
F0 F1 F2
$31
Integer mul/div
Hi Lo
FP Arith
F31
97
98
3 registres arguments
Rs, Rt: arguments source Rd: argument destination sa: nombre de bits pour dcalage
Architecture des Ordinateurs 100
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
add & sub: dbordement gnre une exception arithmtique addu & subu: similaires add & sub
Dbordement nest pas pris en considration
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
op
sa
func
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
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
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
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
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
Multiplication Binaire
Instruction Shift-left (sll) peut faire multiplication!
Quand le multiplicateur est une puissance de 2
sll sll
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
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?
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
addiu: mme que addi mais pas de dbordement Constante immdiate pour addi et addiu est signe
Pas besoin de subi ou subiu
A = B&0xf; traduire comme andi C = B|0xf; traduire comme ori C = 5; A = B; traduire comme ori traduire comme ori
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!
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
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?
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
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
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
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)
118
$s0, $s1, else $s2, $s3, $s4 sortie $s2, $s3, $s4
119
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
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
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:
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
124
Instructions Chargement/Rangement
Instruction chargement dun mot (mot = 4 octets dans MIPS) lw Rt, imm16(Rs) # Rt = MEMORY[Rs+imm16]
+
Base address Architecture des Ordinateurs
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
lw sw
126
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
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
128
Etant donn la structure WHILE suivante: i = 0; while (A[i] != k) i = i+1; A tableau dentiers (4 octets par lment)
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, $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
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
Somme de Tableau
sum = 0; for (i=0; i<n; i++) sum = sum + A[i];
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
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
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
135
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
Dynamic Area
0x10000000
Segment de donnes
0x04000000
Reserved
0
Architecture des Ordinateurs 138
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 .FLOAT
Liste de valeurs point flottants prcision simple
Directive .DOUBLE
Liste de valeurs point flottants prcision double
Architecture des Ordinateurs 140
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
141
array: .SPACE
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
143
$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
# Exit program
145
# output sum
# exit
148
increment pointer
exit
150
151
152
153
154
155
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
+
Register = Base address
Byte
Halfword
Word
157