@@ -71,21 +71,31 @@ Explication de DECOD:
71
71
- "mtrans_mask": le mask sur les registers a traiter a tout instant
72
72
- "mtrans_nbr": le nombre de registre que reste a etre traiter
73
73
- "mtrans_list": la liste des registre qui reste a traiter
74
- - "mtrans_rd": prochain register a traiter, le registre de destination
74
+ - "mtrans_rd": prochain register a traiter, le registre de dest ou source
75
75
- "mtrans_1un": quand le multi-transfert n'a qu'un seule registr a traiter
76
76
77
77
+ Il ya un cycle qui separe MEM et DECOD, ce qui reste interessant.
78
78
79
79
------------------------------------------------------------------------------------------------
80
80
Explication de Exec:
81
81
> ALU
82
- - commandes(dec_alu_cmd): 00 => add | 01 => and | 10 => or | 11 => xor
82
+ - commandes(dec_alu_cmd):
83
+ 00 => add | 01 => and | 10 => or | 11 => xor
83
84
84
- > SHIFTER
85
+ > SHIFTER
86
+ - Rm qui correspond a l'op2 qui est shifter
85
87
86
88
87
89
---------------------------------------------------------------------------------------------------------
88
90
Explication sur la machine a etat du DECOD
91
+ Dans le decode il faut satisfaire les instructions selon leur cycle:
92
+ - regop_t : 1 cycle
93
+ - mult_t : 1 cycle + m cycle interne
94
+ - branch_t : 2 cycle
95
+ - mtrans_t : 15 cycle
96
+ - trans_t : 1 cycle
97
+
98
+
89
99
> FETCH: apres demarage Decod envoi une valeur vers Ifetch
90
100
- reste quand la fifo vers Ifetch est pleine
91
101
- quitte vers RUN une valeur PC ecrite dans
@@ -103,7 +113,10 @@ Explication sur la machine a etat du DECOD
103
113
104
114
> LINK:
105
115
pris systematiquement: calcul de la nouvelle valeur PC par EXEC
106
- (puis vers BRANCH)
116
+ (puis vers BRANCH).
117
+ Il faut Remarquer dans le decode d'une instruction le PC est deja a PC+8, a cause
118
+ du prefetch, c-a-d que quand decode deja a PC+8, la fifo if2dec contient PC et
119
+ l'inst PC+4 est entrain d'etre recuperer par IFetch.
107
120
108
121
> BRANCH:
109
122
- reste: if2dec est vide
@@ -129,16 +142,19 @@ Descriptions de instructions
129
142
- regop
130
143
131
144
> Swap:
145
+ - pas valeur immediat
132
146
<SWP>{cond}{B} Rd,Rm,[Rn] , B = 1 => load byte, B = 0 => load word
133
147
- swap_t:
134
148
Rd <= [Rn]
135
149
Rn <= Rm
136
150
137
- > Mutiplication:
151
+ > Mutiplication:
152
+ - pas de valeur immediat
138
153
Rd <= Rm * Rs + Rn si A=1 sinon Rd <= Rm * Rs
139
154
- mla_i: op1 <= Rm; op2 <= Rs;
140
155
dec_mem_data <= Rn (puisqu'il est accessible par exec)
141
156
- mul_i: op1 <= Rm; op2 <= Rs;
157
+ - c'est possible de comfondre mla_i & mul_i avec Rn=0 pour mul_i
142
158
143
159
- la multiplication est un process dans DECOD:
144
160
+ pour l'instant la seule solution avec ce modele d'architecture
@@ -152,14 +168,28 @@ Descriptions de instructions
152
168
153
169
> transferts de donnees:
154
170
- trans:
155
- Load:
171
+ les complement peuvent etre utilise "comp_op{1,2}"
172
+ avec les pre_index = 0, on prend l'op1 = Rn
173
+
174
+ Load:
156
175
Store:
157
176
158
177
> multi transferts de donnees:
159
178
- mtrans:
160
179
Load:
161
180
Store:
162
181
182
+ ------------------------------------------------------------------------
183
+ Comment ecrire des Test compiler
184
+ > Le TME3 vlsi umpc est peut etre comme reference
185
+ > (Voir Main/main_tb)
186
+ Dans programme qu'il faut tester sur le processor
187
+ pour savoir s'il a reussi le test ou pas il doit avoir
188
+ des branchement _good et _bad, il doit se mettre sur
189
+ un des branchement pour que le simulateur s'arrete
190
+ les 2 branchment sont connu apres le chargement
191
+ voir(C_model/src/mem.c).
192
+ > On peut compiler un programme en C et le linker avec "sections.lds"
163
193
164
194
--------------------------
165
195
A retenir
@@ -170,4 +200,9 @@ A retenir
170
200
+ lors d'un traiement candencer avec une horloge, visualiser
171
201
a l'instant le traiement.
172
202
+ IMPORTANT: les dependance Write after Read doivent etre pris en compte
173
- pour la validite de l'operation
203
+ pour la validite de l'operation
204
+
205
+
206
+
207
+ > LA FIFO A COrriger
208
+
0 commit comments