• Aucun résultat trouvé

Langage machine

N/A
N/A
Protected

Academic year: 2022

Partager "Langage machine"

Copied!
22
0
0

Texte intégral

(1)

Eduardo Sanchez

Ecole Polytechnique Fédérale de Lausanne

Organisation de base d’une machine de von Neumann

(2)

Le logiciel

int data = 0x123456;

int result = 0;

int mask = 1;

int count = 0;

int temp;

while (count < 32) { temp = data & mask;

result = result + temp;

data = data >> 1;

count = count + 1;

};

/* result = 9 */

variables

data:

result:

mask:

0x123456 0

1

count: 0

undef

temp:

opérations et affectations

(3)

0 Æ mov $r0, 0x123456 # $r0 Ù data

1 Æ mov $r1, 0 # $r1 Ù result

2 Æ mov $r2, 1 # $r2 Ù mask

3 Æ mov $r3, 0 # $r3 Ù count

4 Æ loop: and $r4, $r0, $r2 # $r4 = $r0 & $r2 5 Æ add $r1, $r1, $r4 # $r1 = $r1 + $r4

6 Æ srl $r0, $r0, 1 # $r0 = $r0 + 1

7 Æ add $r3, $r3, 1 # $r3 = $r3 + 1

8 Æ bne $r3, 32, loop # $r3 != 32 Æ loop 9 Æ fin:

variables opérations et affectations

contrôle

(4)

Architecture des ordinateurs

♦ Les données traitées par un ordinateur sont stockées dans sa mémoire

♦ L’élément de l’ordinateur qui réalise les opérations de

traitement des données est le processeur ou CPU (Central Processing Unit)

♦ Le processeur peut être divisé en deux parties:

l’unité de traitement: ensemble d’opérateurs arithmétiques et logiques, groupés autour d’une ou plusieurs ALUs (Arithmetic and Logic Unit);

l’unité de contrôle: coordonnateur des différentes activités du processeur

♦ En plus, le processeur possède ses propres unités de stockage d’information, plus rapides que la mémoire, mais moins

(5)

♦ Le transfert des données entre la mémoire et le processeur se fait via un ensemble de lignes d’interconnexion: le bus

♦ Le processeur est capable de lire ou d’écrire une donnée

dans la mémoire: il doit envoyer l’adresse de la donnée et un signal indiquant le type d’opération

mémoire mémoire unité

de contrôle

unité de traitement

bus processeur

ALU registres

(6)

♦ L’exécution d’une tâche, aussi simple soit-elle, implique une série d’opérations, réalisées dans l’unité de traitement et coordonnées par l’unité de contrôle, avec des transferts de données entre la mémoire et le processeur

♦ L’addition de deux nombres, par exemple, pourrait se faire en 5 pas:

chercher le premier nombre dans la mémoire et le placer dans un registre du processeur

chercher le deuxième nombre dans la mémoire et le placer dans un autre registre

activer l’additionneur avec les deux registres précédents comme sources; stocker le résultat dans un registre

sauver le résultat dans la mémoire

arrêter

(7)

Registres ALU Registres

A

B W

AW Wr AA AB

Op

5 Æ add $r1, $r1, $r4

$r1

$r4

$r1

’1’ +

(8)

+ 1

compteur de programme (PC)

compteur de programme (PC)

D Q

mémoire d'instruction

mémoire d'instruction A

Dout logique de contrôle

logique de contrôle

add $r1, $r1, $r4

$r1

$r4

$r1

’1’ +

5

6

(9)

+ 1

compteur de programme (PC)

compteur de programme (PC)

D Q

mémoire d'instruction

mémoire d'instruction A

Dout logique de contrôle

logique de contrôle

bne $r3, 32, loop

$r3 32 undef

’0’ !=

8

9

4 (= loop)

(10)

Architecture de von Neumann

♦ Dans les premiers ordinateurs, les différents pas nécessaires à l’exécution d’une tâche, le programme, étaient directement câblés dans l’unité de contrôle

♦ Un grand progrès a été effectué lorsque le programme,

comme les données, a été codé et stocké dans la mémoire principale: c’est l’architecture appelée de von Neumann

♦ La fonction de l’unité de contrôle est de lire le programme de la mémoire, décoder les instructions et commander leur

exécution

♦ Un changement de programme se fait maintenant par une simple réécriture de la mémoire

(11)

processeur processeur mémoire

d'instruction mémoire

d'instruction mémoire de données

mémoire de données

imA imD dmA dmD

architecture de Harvard

processeur processeur

A D

architecture de von Neumann

mémoire unifiée

(12)

Langage machine

♦ Les processeurs doivent reconnaître des instructions codifiées sous la forme de groupes de bits

♦ L’ensemble des instructions reconnues par un processeur et son système de codage forment ce qu’on appelle le langage machine du processeur

♦ Il y a deux grandes familles de processeurs, selon la complexité de son langage machine:

processeurs CISC (Complex Instruction Set Computer). Exemple: Pentium

processeurs RISC (Reduced Instruction Set Computer). Exemples: Sparc, PowerPC, MIPS

♦ Il y a trois grands types d’instruction:

transfert de données

opérations arithmétiques/logiques

(13)

Exemple

♦ Supposons un processeur traitant des données à 8 bits, avec 16 registres internes et une mémoire externe avec 256

positions ou cellules de stockage

♦ Les registres et les positions de mémoire reçoivent des adresses à partir de 0

unité contrôlede

unité de traitement

bus processeur

0 1 2 3 4 5 6 78 9 A B C D E F

mémoire

00 01 02 03 04 05

FC FD FE FF . . . .

. .

(14)

♦ Un programme qui divise deux données stockées en mémoire pourrait être:

1: charger un registre avec la première donnée: instruction LOAD

2: charger un autre registre avec la deuxième donnée: instruction LOAD

3: si la deuxième valeur est zéro, aller au pas 6: instruction JUMP

4: diviser les contenus des deux registres et stocker le résultat dans un troisième registre: instruction DIV

5: sauver le résultat dans une position de mémoire: instruction STORE

6: arrêter

♦ Si l’on précise les adresses de registre et de mémoire, le programme serait:

1 LOAD R0,M[0] R0 M[0]

2 LOAD R1,M[1] R1 M[1]

3 JUMP zéro,6 si 0 aller à 6 4 DIV R2,R0,R1 R2 R0/R1

(15)

♦ Chaque instruction possède entre 2 et 3 opérandes. Si l’on veut coder chaque instruction comme une chaîne de bits, il faut décider le nombre total de bits de l’instruction, le

nombre de bits pour chaque opérande et la position dans la chaîne: c’est le format de l’instruction

♦ L’opcode est le code de l’instruction

opcode opérande 2

opérande 1 opérande 3

(16)

♦ Pour notre exemple, nous pouvons utiliser 16 bits pour chaque instruction et les formats suivants:

0 0 0 0

opcode adresse de la mémoire

adresse du registre

0 0 0 1

opcode adresse de la mémoire

adresse du registre

0 0 1 0

opcode adresse de saut

LOAD

STORE

JUMP

(17)

0 0 1 1

opcode registre source1

registre destination

DIV

0 1 0 0 opcode

STOP

registre source2

(18)

♦ Notre programme codé serait alors:

1 LOAD R0,M[0] 0000 2 LOAD R1,M[1] 0101 3 JUMP zéro,6 2006 4 DIV R2,R0,R1 3201 5 STORE M[2],R2 1202

6 STOP 4000

(19)

Exécution du programme

♦ Pour exécuter un programme, l’unité de contrôle du

processeur doit lire chaque instruction, la décoder et ensuite l’exécuter. C’est le cycle exécuté sans arrêt par un

processeur: fetch-decode-execute

♦ Pour cela, l’unité de contrôle dispose de deux registres spécialisés: le compteur de programme (PC) et le registre d’instruction (IR)

♦ Le PC contient l’adresse de la prochaine instruction à

exécuter. Le IR contient le code de l’instruction en exécution

♦ Pour notre exemple précédent, le fetch implique la lecture de deux mots de la mémoire. Toute instruction, sauf le JUMP, fait donc une incrémentation par deux du PC

(20)

Exercice

♦ Supposez que vous voulez multiplier deux variables a et b, stockées dans les positions de mémoire M[20] et M[21],

respectivement, pour affecter cette valeur à la variable toto, stockée à la position de mémoire M[40]

♦ C'est-à-dire, vous voulez effectuer l'opération:

toto = a*b ou:

M[40] = M[20]*M[21]

(21)

♦ Le processeur possède 8 registres (R0...R7). Le registre R0 contient toujours la valeur 0

♦ Les instructions du langage machine du processeur sont:

LOAD Rd, M[adr] Rd M[adr]

STORE M[adr], Rs M[adr] ← Rs

ADD Rd, Rs1, Rs2 Rd ← Rs1 + Rs2

SUB Rd, Rs1, Rs2 Rd ← Rs1 – Rs2

DEC R R R - 1

JUMP zero, adr si zero alors sauter à adr

♦ Avant d'écrire le programme, nous devons trouver un algorithme réalisant la tâche voulue

♦ Un algorithme possible serait:

(22)

lecture de a et b lecture de a et b

a=0

b=0 résultat = 0

résultat = 0

résultat = résultat+a résultat = résultat+a

décrémenter b décrémenter b écriture du résultat

écriture du résultat

Références

Documents relatifs

[r]

Utilise le pentagone régulier suivant pour les questions 7 à 9 et détermine :.. Trouve combien de boîtes sont néces- saires pour recouvrir la surface entière.. Donne le nombre

Sachant qu’il y a environ 2,5 cm dans un pouce et qu’une table mesure 50 pouces de long, quelle est la longueur approximative de la table

Unité A : Les finances immobilières Résultat d’apprentissage spécifique 12.Q6.FI.1.. Questions

Clavier Restituer le son des programmes multimédia Haut-parleurs Saisir du texte, des chiffres ou des commandes Ecran Visualiser les informations.. Remplir le tableau

On profite de cette possibilité pour réaliser la mémoire virtuelle, dans laquelle la mémoire physique peut être considérée comme un cache pour la mémoire

a) Trouver le mot équivalent à chaque définition donnée dans le tableau suivant et ceci en barrant les caractères figurant dans la grille (à droite) formant le terme

Une fois que les trois nombres sont lus et rangés en mémoire de la même façon, la deuxième instruction (ADD A,B, TOTAL) est copiée dans le registre d'instruction