Petite synth`ese Proc´edure, pile et pointeur de pile La couche d’assemblage Langages de haut niveau
Architecture des ordinateurs
J´er´emy Fix
CentraleSup´elec
2016-2017
Architecture er´emy Fix
Petite synth`ese Proc´edure, pile et pointeur de pile La couche d’assemblage Langages de haut niveau
Petit retour sur l’architecture v0
SetMem SetRADM SetA SetB SetPC
ReadA ReadB ReadPC
A B
S
UAL
Do
Di
Adr
Bus B
Bus A
Bus S
RADM A B PC
0x0000 0x0000 0x0000 0x0000
ReadMem
0x1000 0x0001
0x000A 0x0000
0x0000 0x0000 0x0000 0x0000
0x20000x0010
0x1c000x3000
MicroPC
+1
Mux
CodeMCount
00
00800008 00000000 00000000 00000000
Adr
D
00
04
08
0c
10
14
18
1c
20
00000000 00000000 00000000 00000000
00000c00 01401900 00000000 00000000
0080000c 00000000 00000000 00000000
00000c00 00084100 00c01800 00000000
00000c00 00080500 00084100 00c01800
00000000 00000000 00000000 00000000
00002200
00000000
· · · · · · · · · · · · · · · 32
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
ReadMem
SetMem
SetRADM
ReadPC
SetPC
ReadA
SetA
ReadB
SetB
UAL
CodeMCount
@Adr
@Adr [8:15]
[0:7]
00
01
10
11
Z
C
V
00000c00 00080500 00c01800
00000c00 00090100 00c01800
30 00b0e000 00000000 00000000 00000000
· · · · · · · · · · · · · · ·
70 00000c00 00881100 00000000 00000000
74 01802076 00c01800 00000c00 00881100
78 0188807a
MuxSel 00c01800 00000c00 00881100
Architecture er´emy Fix
Petite synth`ese Proc´edure, pile et pointeur de pile La couche d’assemblage Langages de haut niveau
Architecture `a Jeu d’instructions (ISA)
Code instruction Nom Mots Description
0x0c00 END 1 Fin du programme
0x1000 LDAi 2 Charge la valeur de l’op´erande dans le registre A. [A:=op´erande]
0x1400 LDAd 2 Charge la valeur dans la RAM point´ee par l’op´erande dans le registre A. [A:=Mem[op´erande]].
0x1c00 STA 2 Sauvegarde en m´emoire la valeur du registre A `a l’adresse donn´ee par l’op´erande. [Mem[op´erande]:= A]
0x2000 LDBi 2 Charge la valeur de l’op´erande dans le registre B. [B:=op´erande]
0x2400 LDBd 2 Charge la valeur dans la RAM point´ee par l’op´erande dans le registre B. [B:=Mem[op´erande]].
0x2c00 STB 2 Sauvegarde en m´emoire la valeur du registre B `a l’adresse donn´ee par l’op´erande. [Mem[op´erande]:= B]
0x3000 ADDA 1 Ajoute le contenu des registres A et B et m´emorise le r´esultat dans le registre A. [A:=A+B]
0x3400 ADDB 1 Ajoute le contenu des registres A et B et m´emorise le r´esultat dans le registre B. [B:=A+B]
0x3800 SUBA 1 Soutstrait le contenu des registres A et B et m´emorise le r´esultat dans le registre A. [A:=A-B]
0x3c00 SUBB 1 Soutstrait le contenu des registres A et B et m´emorise le r´esultat dans le registre B. [B:=A-B]
0x4000 MULA 1 Multiplie le contenu des registres A et B et m´emorise le r´esultat dans le registre A. [A:=AxB]
0x4400 MULB 1 Multiplie le contenu des registres A et B et m´emorise le r´esultat dans le registre B. [B:=AxB]
0x4800 DIVA 1 Divise le contenu du registre A par deux et m´emorise le r´esultat dans A. [A:=A/2]
0x5000 ANDA 1 Calcule un ET logique entre le contenu des registres A et B et m´emorise le r´esultat dans A. [A:=A&B]
0x5400 ANDB 1 Calcule un ET logique entre le contenu des registres A et B et m´emorise le r´esultat dans B. [B:=A&B]
0x5800 ORA 1 Calcule un OU logique entre le contenu des registres A et B et m´emorise le r´esultat dans A. [A:=A—B]
0x5c00 ORB 1 Calcule un OU logique entre le contenu des registres A et B et m´emorise le r´esultat dans B. [B:=A—B]
0x6000 NOTA 1 emorise dans A la n´egation de A. [A:=!A]
0x6400 NOTB 1 emorise dans B la n´egation de B. [B:=!B]
0x7000 JMP 2 Saute inconditionnellement `a l’adresse donn´ee par l’op´erande. [PC:=operande]
0x7400 JZA 2 Saute `a l’adresse donn´ee par l’op´erande si le contenu du registre A est nul. [PC:=operande si A=0]
0x7800 JZB 2 Saute `a l’adresse donn´ee par l’op´erande si le contenu du registre B est nul. [PC := operande si B=0]
Architecture er´emy Fix
Petite synth`ese Proc´edure, pile et pointeur de pile La couche d’assemblage Langages de haut niveau
Automate `a ´etats finis du s´equenceur
0×00 0 ×08 0 ×09
CodeMCount=001
@Adr=0x08
ReadPC=1
UAL=0000
SetRADM=1
ReadMem=1
CodeMCount=010
ReadPC=1
SetPC=1
UAL=1000
0×10 0 ×11 0 ×12
ReadPC=1
UAL=0000
SetRADM=1
ReadMem=1
UAL=0001
SetA=1
ReadPC=1
UAL=1000
SetPC=1
CodeMCount=001
@Adr=0x00
0×20 0 ×21 0 ×22
ReadPC=1
UAL=0000
SetRADM=1
ReadMem=1
UAL=0001
SetB=1
ReadPC=1
UAL=1000
SetPC=1
CodeMCount=001
@Adr=0x00
0×1c0×1d0×1e0×1f
ReadPC=1
UAL=0000
SetRADM=1
ReadMem=1
UAL=0001
SetRADM=1
ReadA=1
UAL=0000
SetMem=1
ReadPC=1
UAL=1000
SetPC=1
CodeMCount=001
@Adr=0x00
0×30
ReadA=1
ReadB=1
UAL=0110
SetA=1
CodeMCount=001
@Adr=0x00
0×14 0 ×15 0 ×16 0 ×17
ReadPC=1
UAL=0000
SetRADM=1
ReadMem=1
UAL=0001
SetRADM=1
ReadMem=1
UAL=0001
SetA=1
ReadPC=1
UAL=1000
SetPC=1
CodeMCount=001
@Adr=0x00
0×70 0 ×71
ReadPC=1
UAL=0000
SetRADM=1
ReadMem=1
UAL=0001
SetPC=1
CodeMCount=001
@Adr=0x00
0×74 0 ×75
0×76 0 ×77
ReadA=1
UAL=0000
CodeMCount=011
@Adr=0x76
ReadPC=1
UAL=1000
SetPC=1
CodeMCount=001
@Adr=0x00
ReadPC=1
UAL=0000
SetRADM=1
ReadMem=1
UAL=0001
SetPC=1
CodeMCount=001
@Adr=0x00
Architecture er´emy Fix
Petite synth`ese Proc´edure, pile et pointeur de pile La couche d’assemblage Langages de haut niveau
S´equenceur et programme
S´equenceur
S´emantique des instructions
G´en´erique
Automate `a ´etats finis : ´etat dans MicroPC, signaux de
contrˆole ROM[MicroPC]
Programme
Qu’est ce que je veux calculer ?
Sp´ecifique
S´equence de codes d’instructions et de donn´ees en RAM
Architecture er´emy Fix
1 / 56 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !