Vous êtes sur la page 1sur 10

LE PROCESSEUR LE PROCESSEUR

Introduction
Excution dinstructions machines
Instructions et donnes des programmes se trouvent dans une
mmoire (Architecture de Von Neuman - 1948)
Processeur

PC Adresses Mmoire vive (RAM)


RI 0
1100 0010
1101 0010 Instructions
Registres Bus adresses 1100 0010 machines
de 10001111
calculs Bus donnes
10101010 Donnes

UAL
taille -1

Machine algorithmique particulire

P. Sicard-Cours ALM 10 Le processeur 1 P. Sicard-Cours ALM 10 Le processeur 2

Brve historique Evolution processeur (Source Intel)


Processeurs dans les micro-ordinateurs

Anne Nom (fabriquant) Bus donnes/adr Horloge Ordinateur

6502 (MOS Atari-Apple II-


1975-80 technologie) 8 /16 bits 1 Mhz Commodore 64

1979 8088 (Intel) 8/16 bits 5 Mhz PC

1980 8086(Intel) 16/16 bits 5 Mhz PC

1980-90 68000(Motorola) 16/24 bits 8 puis 16 Mhz MAC

80386 puis
1990 80486 (Intel) 32/32 bits 25 puis 50 Mhz PC

PowerPC (Apple-
1995 IBM-Motorola) 32/64 bits 50 puis 100 MAC

1995 Pentium (Intel) 32/64 60 PC

2000 PowerPC/Pentium 32/36 300 MAC/PC

2006 Core/core duo 32/36 1 3 GigaHz MAC et PC


10 m 3 m 1 m 0.8 m 0.18 m 65 nm
(Intel) 6 m 1,5 m 0.25 m 90 nm 45 nm
2010 Core i7 (Intel) 64/64 3 4 GigaHz MAC et PC Taille du transistor (micro: 10 mtre, nano 10 -9 mtre)
-6

P. Sicard-Cours ALM 10 Le processeur 3 P. Sicard-Cours ALM 10 Le processeur 4


Architecture gnrale Algorithme du processeur
CISC: Complexe Instruction Set Computer
Soit Mem le tableau reprsentant la mmoire
Jeu dinstructions complexe pour aider les compilateurs
Soit PC la variable contenant ladresse de linstruction en cours dexcution
Nombreux modes dadressage
Instructions de tailles diffrentes Soit RI une variable contenant linstruction machine excuter

Instructions de dures diffrentes Le jeu dinstruction du processeur est compos de N instructions


Jusquen 1995 PC=0!; /*il faut bien commencer quelque part, la premire instruction doit tre ladresse 0
en mmoire*/
RISC: Reduce Instruction Set Computer Tant que vrai faire
Jeu dinstructions restreint -RI=Mem[PC]!; /*Une instruction!: 1 mot mmoire, variable suivant les processeurs*/
Permet de pipeliner lexcution des instructions -PC=PC +1!; /*On passe linstruction suivante, cas particulier pour les branchements
Plusieurs instructions sexcute en mme temps PC = adresse de branchement*/
Chacune est dans une phase diffrente un moment donn
Exemple: ARM : 4 phases -Suivant RI!:
Instructions de taille unique Instruction1!: excuter instruction1
Instructions de dure unique (pas tout fait vrai pour load/ Instruction2!: excuter instruction2
store) .
A partir du PowerPC et du Pentium InstructionN!: excuter instructionN

P. Sicard-Cours ALM 10 Le processeur 5 P. Sicard-Cours ALM 10 Le processeur 6

Etude sur un processeur Ecole


Dfinition des caractristiques du processeur
- Dfinition de la taille des donnes et des adresses(Bus) Taille des donnes!et des adresses: 1 mot (par exemple 8 bits)
- Dfinition du jeu dinstructions!: oprations possibles, registres, -> Taille maximale de la mmoire 256 octets
mode dadressage, instructions spciales pour langage haut Instructions sur 2 mots
niveau (saut sous programme) Un seul registre de calcul appel ACC (Accumulateur)
- Choix du codage des instructions (taille des instructions) Jeu dinstructions!:
Exemple!: " - Load " #Vi!" ! Acc= Vi (Valeur immdiate)
-ARM !: 32 bits dadresse, donnes 32!; instructions sur 32 bits - St " Adresse" ! Mem[Adresse]=Acc
-68000!: adresse sur 24 ou 32 bits, donnes sur 8 ou 16 bits, - Jmp"Ad" ! PC=Ad, difference avec le ARM!: dplacement
instructions sur 8,16, 24 32,64 bits - Add"Ad" ! Acc!=Acc+ Mem[Ad]

P. Sicard-Cours ALM 10 Le processeur 7 P. Sicard-Cours ALM 10 Le processeur 8


Codage des instructions Algorithme dtaill du processeur Ecole
Format et codage des instructions PC=0!;
Mot1, Mot2 Tant que vrai faire
Mot1 contient le code opration
- 4 valeurs!(en dcimal): Load!: 0 , St!: 1, Jmp!: 2, Add!: 3 -RI1=Mem[PC]!;
Mot2 contient -PC=PC +1!;
- soit la valeur immdiate (Load), -RI2=Mem[PC]!;"/*Instruction sur 2 mots ! 2 registres instr*/
- soit ladresse(St, Jmp, Add)
-PC=PC +1!;
Exemple de programme en assembleur !Ecole! -Suivant RI1!:
-Adresse Contenu
0" 0" " Load # 3 0!: ACC=RI2 " " " /* Load */
1" 3 1!: Mem[RI2]=ACC" " /* Store */
2" 3" " Etiq1!: "Add [5] 2!: PC=RI2" " " " /* Jump */
3" 5
4" 2" " Jmp Etiq1 3!: ACC=ACC+ Mem[RI2]" /* Add */
5" 2
P. Sicard-Cours ALM 10 Le processeur 9 P. Sicard-Cours ALM 10 Le processeur 10

Architecture PC/PO La partie oprative


Registres!: PC, RI1, RI2, ACC
PO standard
Operations!:
+1,
Bus Rsultat
Addition,
Calcul des conditions RI1= 0, 1 , 2, 3!? Bus oprande1

Entres sorties!: bus donnes (E/S), Bus adresse (S)


On suppose que la lecture/criture en mmoire peut se passer en 1 RI1 RI2 PC ACC

cycle dhorloge du processeur.


Poigne de main simplifie pour les E/S, plus besoins de signaux Bus oprande2

EntrePrise et SortiePrise.

P. Sicard-Cours ALM 10 Le processeur 11 P. Sicard-Cours ALM 10 Le processeur 12


Load : ACC=RI2 Jump: PC=RI2
" RI2 ! Oprande 1, " RI2 ! Oprande 1
" Bus Resultat ! ACC " Bus Resultat ! PC

Bus Rsultat Bus Rsultat

Bus oprande1 Bus oprande1

RI1 RI2 PC ACC RI1 RI2 PC ACC

Bus oprande2
Bus oprande2

Opration de lUAL : RES=Oprande 1 Opration de lUAL : RES=Oprande 1

P. Sicard-Cours ALM 10 Le processeur 13 P. Sicard-Cours ALM 10 Le processeur 14

Add: ACC= ACC + Mem[RI2] Store: Mem[RI2]=ACC


" RI2 ! Bus Adresse, " RI2 ! Bus Adresse,
" Bus Donne ! oprande 2 " ACC ! Bus Donne
" ACC ! oprande 1
" Bus Resultat ! ACC Bus Rsultat

Bus Rsultat Bus oprande1

Bus oprande1

RI1 RI2 PC ACC

RI1 RI2 PC ACC

Bus oprande2

Bus oprande2

Bus adresse Bus donne

Bus adresse Bus donne

Opration de lUAL : RES=Oprande 1 + Oprande 2 Opration de lUAL : Indiffrent


P. Sicard-Cours ALM 10 Le processeur 15 P. Sicard-Cours ALM 10 Le processeur 16
RI1=Mem[PC], RI2=Mem[PC] PC= PC+1
" PC ! Bus Adresse, " PC ! Oprande1,
" Bus Donne ! Oprande2 " Bus Resultat ! PC
" Bus Rsultat ! RI1 ou RI2
Bus Rsultat
Bus Rsultat
Bus oprande1
Bus oprande1

RI1 RI2 PC ACC


RI1 RI2 PC ACC

Bus oprande2 Bus oprande2

Bus adresse Bus donne Bus adresse Bus donne

Opration de lUAL : Res=Oprande 2 Opration de lUAL : Res=Oprande 1 + 1


P. Sicard-Cours ALM 10 Le processeur 17 P. Sicard-Cours ALM 10 Le processeur 18

SUIVANT RI1: La partie oprative


Pris directement dans RI1 , inutile de passer dans lUAL (1 tat
supplmentaire dans la PC)
En rsum 4 oprations dans lUAL!:
00, 01, 10 et 11!:" Bit0RI1 / Bit1RI1
- Res=op1+op2
Bus Rsultat

Bus oprande1 - Res=op1+1!


- Res=op1
RI1 RI2 PC ACC - Res=op2
Il faut rajouter les signaux de contrle
Bus oprande2 -Commandes des slections des bus oprande 1 et 2
2 bits poids
faible de RI1
-Liaison Bus Interne/externe (Adresse et donne)
Bus adresse Bus donne
-OpUAL

Opration de lUAL : Indiffrent -Chargement/initialisation registres

P. Sicard-Cours ALM 10 Le processeur 19 P. Sicard-Cours ALM 10 Le processeur 20


La partie oprative avec les signaux de La partie contrle
contrle
Init PC=0

Bus Rsultat
RI1=Mem[PC]

Bus oprande1
OpUAL
SRI2op1 SPCop1 SACCop1
PC=PC+1

RI1 RI2 PC ACC


RI2=Mem[PC]

chPC SACCop2
chRI1 chRI2 chACC
ResetPC
Bus oprande2 PC=PC+1
2 bits Poids Ri2Ad PCAd
RI1=0 RI1=3
faible vers
partie contrle RI1=1 RI1=2
ACC=RI2 PC=RI2
Bus adresse Bus donne

Mem[RI2]=ACC ACC=ACC+Mem[RI2]

P. Sicard-Cours ALM 10 Le processeur 21 P. Sicard-Cours ALM 10 Le processeur 22

Exemples: Signaux de contrle Amliorations

Signaux mentionns 1 Paralllisation de calcul


Etat ACC=ACC+Mem[RI2] -RI2=Mem[PC] // PC=PC+1
SACCop1, (ACC ! BusOprande1) -RI1=Mem[PC] // PC=PC+1

Op2Don, Ri2Ad, ReadMemoire (Mem[RI2] ! BusOprande2)


-On gagne 2 priodes dhorloge

OpUAL: code pour laddition (BusOprande1+ BusOprande ! BusRsultat) Il faut rajouter dans la PO!:
chACC (BusRsultat ! ACC) -Le bus donne doit arriver lentre de RI1 et RI2 sans passer
par lUAL
Etat: Mem[RI2]=ACC -Du coup, le bus rsultat ne doit plus arriver lentre de RI1 et
SACCop2, Op2Don, (ACC ! Busdonne) RI2
-On na plus besoin de lopration Res=op2 dans lUAL
RI2Ad, WriteMemoire (BusDonne ! Mem[RI2])

P. Sicard-Cours ALM 10 Le processeur 23 P. Sicard-Cours ALM 10 Le processeur 24


La partie contrle bis
La partie oprative bis

Bus Rsultat PC=0


Init

Bus oprande1 OpUAL


SRI2op1 PCop1 SACCop1
RI1=Mem[PC]//PC=PC+1
RI1 RI2 PC ACC
RI2=Mem[PC]//PC=PC+1

chRI1 chRI2 ResetPCchPC SACCop2 RI1=0 RI1=3


chACC ACC=RI2
Bus oprande2 RI1=1 RI1=2
Ri2Ad PCAd
2 bits Poids PC=RI2
faible vers PC

Bus adresse
Mem[RI2]=ACC ACC=ACC+Mem[RI2]
Bus donne

P. Sicard-Cours ALM 10 Le processeur 25 P. Sicard-Cours ALM 10 Le processeur 26

Extension du jeu dinstructions Amlioration


Un branchement conditionnel!suivant le flag N (branchement si Un tat inutile et un tat commun avec linstruction jmp

ngatif en complment 2)
PC=0
- BrN adresse PC=0
Init Init

- Code 5
RI1=Mem[PC]//PC=PC+1 RI1=Mem[PC]//PC=PC+1

RI1=5 et N
RI2=Mem[PC]//PC=PC+1
RI1=0
RI2=Mem[PC]//PC=PC+1
RI1=5 N
RI1=0
RI1=1
RI1=5 et N
RI1=3
RI1=1
RI1=2
N
RI1=2 RI1=3

PC=RI2
PC=RI2

P. Sicard-Cours ALM 10 Le processeur 27 P. Sicard-Cours ALM 10 Le processeur 28


Modification de la PO Extension du jeu dinstructions
Instructions de calcul
Flag N donn par lUAL
Mmorisation du flag N dans une bascule (commande ChFlag) On augmente le nombre doprations de calcul possible!: add, sub,
- Par exemple lors dinstructions de calcul (AddS du ARM), chargement de la and, or ...
bascule dans ltat du calcul du AddS
Sortie de la bascule vers la partie contrle On peut choisir un code quelconque pour ces instructions
OpUAL
Un tat par oprations de calcul aprs lclatement

On peut essayer de simplifier lautomate (au dtriment de la PO) en


se servant du code de linstruction comme entre des commandes de
lUAL. Il ny a plus quun tat pour ces 4 oprations.

Basc ChFlag
Attention il faut rajouter un signal de commande supplmentaire
permettant dutiliser ou non cette fonctionnalit
vers la Partie
Contrle

P. Sicard-Cours ALM 10 Le processeur 29 P. Sicard-Cours ALM 10 Le processeur 30

Instructions de calcul Instructions de calcul


Exemple!:
-Instructions: jmp, st, load, add, sub, or, and UAL conu en fonction du choix des codes des instructions!:
-Changement du codage des instructions: - Opration effectuer dans lUAL (sur 3 bits):
Champ OpCalcul dans linstruction Res= op1+op2 000
1 bit pour dterminer le type dinstruction (calcul ou autres) Res= op1-op2 001
Choix des codes des instructions (en binaire) Res= op1 or op2 010
add 000 Res= op1 and op2 011
sub 001 Res= op1+1! 100
Champ "Type d'instruction"
or 010 Champ OpCalcul Res= op1 101
and 011
}

jmp 100
st 101
load 110

P. Sicard-Cours ALM 10 Le processeur 31 P. Sicard-Cours ALM 10 Le processeur 32


Extension du jeu dinstructions Augmentation du nombre de registres de
Le calcul effectu dans lUAL est dfini calcul
- Soit directement par les 2 bits de poids faible de RI1, On veut avoir N registres Regj de calcul au lieu dun seul
- Soit par les 2 bits envoys par la PC; par exemple pour Etat1 : opUAL= 100 (Incr) - Toute les instructions avec ces registres:
store Regj, Adresse
PC=0 OpUAL
add Regj, Adresse
Init
(tats autre load Regj, Vimmediate
2 bits poids faible que calcul)
de RI1
SelOpCalcul
-Si on ajoute un tat par instruction possible, le nombre dtats
1 0
Etat1 RI1=Mem[PC]//PC=PC+1 devient trs grand
SelOpCalcul 2
RI2=Mem[PC]//PC=PC+1
-Mme ide que prcdemment on nutilise quun seul tat, le
choix du registre est dtermin directement dans la PO
RI1=ld RI1=jmp
ACC=RI2
RI1=st RI1="calcul"
-On ajoute dans linstruction un champ !Numro de registre!
UAL
PC=RI2 -On slectionne le registre envoyer sur les bus oprandes grce
calcul
ce champ et un dcodeur (idem pour le choix du registre
Mem[RI2]=ACC ACC=ACC op Mem[RI2]
SelOpCalcul
charger)

P. Sicard-Cours ALM 10 Le processeur 33 P. Sicard-Cours ALM 10 Le processeur 34

Augmentation du nombre de registres Augmentation du nombre de registres


Changement du codage des instructions Il faut que le chargement et la slection des registres sur les bus nest
lieu que dans les tats o les registres sont concerns: commandes
-16 registres: Reg0 Reg15 supplmentaires de la PC : Regload, RegBus1, RegBus2
-Champ No Registre (4 bits), Champ Type intructions, Bus Rsultat

Champ OpCalcul
store Rj : NoRegistre, 1, 00 (indiffrent) SR15op1 SR1op1 SR0op1

Reg Reg Reg


add, sub, or, and Rj : NoRegistre, 0, Opcalcul 15 ... 1 0

load Rj, Vi : NoRegistre, 1, 00 (indiffrent)


ChR15 SR15op2 ChR1 SR1op2 ChR0 SR0op2
jmp : 0000 (indiffrent), 1, 00 (indiffrent)
RegBus1 RegBus2 RegLoad

Champ SR0op1 Champ SR0op2 ChR0


Champ
No Registre Type d'instruction No Registre SR1op1 No Registre SR1op2
}

No Registre ChR1
OpCalcul
}

SR15op1 SR15op2 ChR15

P. Sicard-Cours ALM 10 Le processeur 35 P. Sicard-Cours ALM 10 Le processeur 36


Augmentation du nombre de registres
La partie contrle

PC=0
Init

Etat1 RI1=Mem[PC]//PC=PC+1

RI2=Mem[PC]//PC=PC+1

RI1=ld RI1=jmp
Regj=RI2
RI1=st RI1="calcul"
RegLoad PC=RI2

calcul
Mem[RI2]= Regj Regj = Regj op Mem[RI2]
RegBu2 SelOpCalcul
RegBus1

P. Sicard-Cours ALM 10 Le processeur 37