Title: La couche ISA Instruction Set Architecture
1La couche ISA (Instruction Set Architecture)
2Rôle de la couche ISA
- Le role de la couche ISA intermédiare entre
logiciels et machine les compilateurs traduisent
dans les textes sources ( fortran, pascal, C..)
en textes ISA qui sont ensuite interprétes par
l assembleur et exécutés par la couche
micro-architecture
3Propriétés de la couche ISA
- La couche ISA est la vision que les compilateurs
ont de la machine. Ici sont définis les registres
manipulables, l organisation de la mémoire, les
interruptions, et les différentes instructions
de base qui serviront à traduire les
instructions complexes des langages de haut
niveau. - La couche ISA définit aussi un langage dit
langage d assemblage qu on peut utiliser
comme tel ou incorporer dans ses programmes de
haut niveau pour optimiser le traitement de
certaines partie du programme ( ex
interruptions, gestion mémoire graphique etc)
4Organisation de la mémoire
- La mémoire des ordinateurs est composée de
cellules (octets) rangées à des adresses
consécutives. Les mots mémoires se composent de 4
ou 8 octets (32 ou 64 bits) . La plupart des
ordinateurs imposent que ces mots soient alignés
en mémoire - C est le cas du Pentium dont le bus d adresse
n a que 33 bits les 3 bits de poids faible sont
perdus donc les adresses sont des multiples de 8.
5Organisation mémoire
- Avec 32 bits d adresse on peut adresser un
espace mémoire de 232 octets (4 Go). Comme de
plus les adresses sont décomposées en
Segmentoffset on peut théoriquement adresser un
espace mémoire immense. Le pentium peut adresser
16 384 segments de 4Go!! La plupart des systèmes
d exploitation ( Unix ou Windows) n utilisent
quun segment. - Sur le Pentium, les octets sont rangés petit
boutistes c est à dire que les octets de poids
faible ont les adresses les plus faibles.
6Les registres
- On parle ici des registres accessibles en ISA .
Tous les registres du processeur ne sont pas
accessibles (par exemple MAR, TOS) alors que
d autres sont visibles, comme SP, PC etc) - Il existe des registres généraux qui peuvent être
utilisés par certains compilateurs de manière
spécifique et des registres spéciaux, comme PSW
(program Status Word) qui contient des drapeaux
(bits) comme - N (1 si résultat négatif)
- Z (1 si zéro)
- V (1 si débordement de capacité oVerflow)
- C (1 si retenue sur bit de gauche Carry)
- A (1 si retenue intermédiare sur le bit 3)
- P (1 si résultat de Parité paire)
7Les Instructions
- Les instructions de la couche ISA définissent le
travail que doit réaliser le processeur ainsi que
ce que voit et manipule le compilateur.
Plusieurs sortes d instructions - Les déplacements de données Registre/Mémoire par
exemple Load, Store.. - Les déplacements Registre/Registre ( Move)
- Les traitements de données Arithm,logiques,
comparaisons - Les instructions d organisation du programme
sauts inconditionnels et conditionnels
8Exemple du Pentium II
- Évolution des 8086 et 8088 (processeurs 16 bits)
, 80286 (16b) et 80386(32b) puis 80486 , Pentium
. Le Pentium II est un processeur 32 bits
compatible 16b . - Il fonctionne selon 3 modes réel 8086 il se
comporte comme un 8086 et si un progr écrit pour
un 8086 ne tourne pas bien, la machine se
plante.Virtuel 8086 Le Pentium cree un espace
confiné ou il execute en 8086 mais en cas de pb,
le SE reprend la main ( exemple des progr MS DOS
tournant sous Windowsmode protégé Le Pentium
,fonctionne avec 4 noiveaux de privilèges, ( bits
du registre PSW)
9- Privilège 0 tout est permis. Utilisé par le SE
- Privilège 3 certaines instructions critiques
sont interdites, certains registres aussi
destiné a l execution des programmes
utilisateur. Les privilèges 1 et 2 sont
rarement utilisés. - Mémoire organisée en 16384 segments de 2 32
octets ( 2 32 4 Go ! ) Unix et Windows n
utilisent qu un segment. Chaque octet de cet
espace a son adresse propre et se trouve dans un
mot mémoire de 8 octets.
10Principaux registres du Pentium
- Registre général (ex calcul)Peut servir
d offset mémoireSert en général de compteur de
bouclesObligatoire pour accès aux ports -
- Offset mémoire utilisé avec DSOffset mémoire
utilisé avec ESOffset mémoire , souvent copie de
SPOffset mémoire de pileSegment mémoire du
codeSegment mémoire de la pileSegment mémoire
des donnéesautre segment mémoireautre segment
mémoireautre segment mémoireoffset mémoire du
code (innaccessible directement mais modifiable
par call jmp, jx) - mot des drapeaux
-
11Format des instructions
- Une instruction comprend plusieurs champs le
code operatoire et des informations concernant
les opérandes ou les resultats etc.. On dit aussi
adressescertaines machines ont une structure
d instruction tres complexe par exemple le
Pentium II et suivants
Complexité lenteur!
12Format instruction SPARC ( RISC machine)
2 5 6 5 1
8 5
Les 2 premiers bits définissent le format de l
instr et où se trouve le code op
13Instructions JVM
IADD
ILOAD, BIPUSH
GOTO
IINC
14L adressage
- Considérons l instruction ADD de la couche ISA
3 adresses 2 opérandes 1résultat. Soit 3x32
bits code opération ( 1octet?) 104 bits!
augmentation de la taille des programmes machine! - Pour réduire Utiliser des registres ( il y en a
peu et 5 à7 bits suffisent a les adresser (
combien?). Mais il faut les charger donc
temps perdu . Quand est-ce intéressant dutiliser
des registres?
Les statistiques prouvent que souvent 1
opérandeest re-utilisé rapidement
- Mode adresse implicite Reg2 Reg2 Reg1
par exemple ( 2 adresses)on peut diminuer le Nb
d adresses 1 adrese ( accu) ou 0 adresse
possible?
Pile ( Mic1)
15Les modes d adressage Immédiat
- Immédiat cest la façon la simple. On donne la
valeur de l opérande dans l instruction. Pas d
acces mémoire rapidité. - Exemple MOV R1, 4 4 est la valeur à
stocker dans R1. ( R1 est en fait une adr de
registre sur 5 à 7 bits!). Inconvénients - restriction sur la valeur de l opérande
pourquoi? - La valeur de l opérande est fixée lors du codage
du programme . Usage? .
Taille fixe de la zone operande dans l
instruction
Réservé aux constantes!
16Les modes d adressage direct
- On donne l adresse effective en mémoire de
l opérande. Ex MOV R1, (12436) On charge la
valeur écrite à l adresse 12436 dans
R1.Inconvénients - Restrictif
- Fixe l adresse est fixée a l écriture du code
. Usage?
Pour les variables globales des programmes
Néanmoins très utilisé par les compilateurs car
dans 1 programme on utilise souvent les var
globales
17Les modes d adressage par Registre
- Comparable à l adressage direc, mais ici on
référence un registre ex MOV R1, 2 rempli
R1 avec contenu de R2. - Avantages vitesse et taille de l adresse
réduite. - Un compilateur sait quelles sont les variables
référencées et leur affecte des registres ( ex
index de boucles)
18Les modes d adressage indirect par registre
- L opérande est en mémoire mais son adresse est
dans un registre ex MOV R1, (R2) remplit R1
avec le mot mémoire dont l adresse est dans R2. - Avantage économie de bits pour adresser la
mémoire! - Exemple calculer la somme des 1024 elements d un
tableau et la range dans R1. On sait que le
premier elt est en 2060 et que chaque element
tient sur 4 bits.
19- MOV R1, 0 R1 lt- 0 au départ
MOV R2, 2060 R2 lt- Adr 1 element MOV R3,
6156 R3 adr qui suit tableau Loop ADD R1,
(R2) ADD R2, 4 CMP R2, R3 BLT
Loop
Adressage direct
Adressage indirect par registre
Remarque dans le corps de la boucle il n y a
pas d adresse mémoire rapidité
20Les modes d adressage indexé
- L adresse effective est un offset par rapport à
une adresse de base inscrite dans un
registre ex MOV R1, A(R2) avec A une
valeur ctele format d une telle instruction
pourra être
MOV
R1
R2
12436
21Les modes d adressage par pile
- On peut réduire à zéro le nombre d adresses dans
une instruction comme ADD en utilisant une pile
c est ce qui a été fait dans mic1. Alors toutes
les adresses sont implicites. - Néanmoins il faut transférer les opérateurs sur
la pile! - Toute expression infixée est analysée par les
compilateurs et traduite en arbre syntaxique puis
en polonaise inversée ( postfixée) . Cette
expression est très simple ensuite à évaluer avec
une pile.
22exemple
- (82x5)/(13x2-4) s analyse enqui
s écrit en postfixé
8 2 5 x 1 3 2 x 4 - /
23Évaluation de
8 2 5 x 1 3 2 x 4 - /
- Empiler les opérandes
- si opérateur, dépiler 2 fois, effectuer puis
empiler le resultat. - A la fin, le resultat est au sommet de la pile
- écrivez en assembleur mic1 ( doté de Imul, Idiv)
l évaluation de cette expression , simulez
l évaluation ( exécution de votre programme) en
suivant l évolution de la pile. - Comment un compilateur peut il traduire 1 exp
postfixée analysée?