Architecture et technologie des ordinateurs II Instructions Types d’instructions Séquencement Contrôle MÉMOIRE PRINCIPALE IO IO IO BUS SYSTÈME CPU Cache Instructions Unité de Contrôle Unité de Traitement Cache Données Décodeur ALU Unité Flottante PC Registres G. Tempesti 1
Un processeur « générique » Architecture et technologie des ordinateurs II Un processeur « générique » AL[2:0] | Fonction 0 0 0 | not I0 0 0 1 | I0 and I1 0 1 0 | I0 xor I1 0 1 1 | I0 or I1 1 0 0 | I0 - 1 1 0 1 | I0 + I1 1 1 0 | I0 - I1 1 1 1 | I0 + 1 OUTPORT INPORT DATAPATH OEN SEL 1 0 I0 I1 AL2 AL1 AL0 Z Z≠0 SH2 SH1 SH0 ALU SHIFTER SH[2:0] | Fonction 0 0 0 | Décalage < 0 0 1 | Rotation < 0 1 0 | Décalage > 0 1 1 | Rotation > 1 0 0 | NOP 1 0 1 | NOP 1 1 0 | NOP 1 1 1 | NOP 3 RA 3 R0 R1 R2 R3 R4 R5 R6 R7 RB WEN 3 WA REGISTRES G. Tempesti 2
Architecture et technologie des ordinateurs II Le banc de registres RA0 I0 I1 I2 1 2 3 4 5 6 7 DÉCODEUR RA1 RA2 RB0 I0 I1 I2 1 2 3 4 5 6 7 DÉCODEUR RB1 RB2 LD R0 LD R1 LD R2 LD R3 LD R4 LD R5 LD R6 LD R7 WA0 1 2 3 4 5 6 7 I0 I1 I2 EN DÉCODEUR WA1 WA2 WAN G. Tempesti 3
Architecture et technologie des ordinateurs II Exemple de programme Problème: compter le nombre de 1 dans un mot d’entrée. Une solution possible (langage RTL): data inport ocount 0 mask 1 while data ≠ 0 temp data AND mask ocount ocount + temp data data >> 1 end while outport ocount G. Tempesti 4
Architecture et technologie des ordinateurs II Exemple de programme data inport data = R1 R1 inport ocount 0 ocount = R2 R2 0 mask 1 mask = R3 R3 1 while data ≠ 0 while R1 ≠ 0 temp data AND mask temp = R4 R4 R1 AND R3 ocount ocount + temp R2 R2 + R4 data data >> 1 R1 R1 >> 1 end while end while outport ocount outport R2 Ce programme nécessite donc 4 éléments de stockage (registres) pour les 4 variables, ainsi que la constante 0. G. Tempesti 5
Contrôle de l’unité de traitement Architecture et technologie des ordinateurs II Contrôle de l’unité de traitement OUTPORT INPORT UNITÉ DE CONTRÔLE OEN OEN SEL SEL 1 0 3 AL[2:0] I0 I1 3 AL2 AL1 AL0 SH[2:0] 3 RA[2:0] Z 3 Z≠0 RB[2:0] SH2 SH1 SH0 SHIFTER WEN 3 WA[2:0] 3 RA 3 R0 R1 R2 R3 R4 R5 R6 R7 RB WEN Z≠0 3 WA OEN SEL AL[2:0] SH[2:0] RA[2:0] RB[2:0] WEN WA[2:0] 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 G. Tempesti 6
Architecture et technologie des ordinateurs II Machine d’états Une séquence d’instructions peut être vue comme une séquence d’états: start=0 S0 S7 outportocount start=1 data=0 S1 datainport S6 datadata >> 1 S2 ocount0 data≠0 S5 ocountocount + temp S3 mask1 S4 tempdata AND mask G. Tempesti 7
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ OUTPORT INPORT ØØØØ OEN SEL 1 0 ØØØØ START I0 I1 AL2 AL1 AL0 Ø 1 Ø S0 Z Ø Ø Z≠0 ØØØØ SH2 SH1 SH0 Ø SHIFTER Ø Ø start=0 ØØØØ S0 S7 start=1 data=0 RA S1 S6 ØØØ R0 R1 R2 R3 R4 R5 R6 R7 RB ØØØ WEN 0000 ØØØØ ØØØØ ØØØØ ØØØØ ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 ØØØ S3 S4 G. Tempesti 8
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 R1 inport ØØØØ 0011 OUTPORT INPORT ØØØØ OEN SEL 1 0 1 0000 START I0 I1 AL2 AL1 AL0 1 Ø + S1 Z 1 1 Z≠0 0011 SH2 SH1 SH0 1 SHIFTER | Ø Ø start=0 0011 S0 S7 start=1 data=0 RA S1 S6 ØØØ R0 R1 R2 R3 R4 R5 R6 R7 RB 000 WEN 1 0000 ØØØØ ØØØØ ØØØØ ØØØØ ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 001 S3 S4 G. Tempesti 9
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ R2 0 OUTPORT INPORT 0000 OEN SEL 1 0 0000 START I0 I1 AL2 AL1 AL0 1 Ø + S2 Z 1 Z≠0 0000 SH2 SH1 SH0 1 SHIFTER | Ø Ø start=0 0000 S0 S7 start=1 data=0 RA S1 S6 000 R0 R1 R2 R3 R4 R5 R6 R7 RB 000 WEN 1 0000 0011 ØØØØ ØØØØ ØØØØ ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 010 S3 S4 G. Tempesti 10
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ OUTPORT INPORT R3 1 0000 OEN SEL 1 0 ØØØØ START I0 I1 AL2 AL1 AL0 1 Ø +1 1 S3 Z 1 1 Z≠0 0001 SH2 SH1 SH0 1 SHIFTER | Ø Ø start=0 0001 S0 S7 start=1 data=0 RA S1 S6 000 R0 R1 R2 R3 R4 R5 R6 R7 RB ØØØ WEN 1 0000 0011 0000 ØØØØ ØØØØ ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 011 S3 S4 G. Tempesti 11
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ OUTPORT INPORT 0011 OEN SEL 1 0 0001 R4 R1 AND R3 START I0 I1 AL2 AL1 AL0 Ø & S4 Z 1 1 Z≠0 0001 SH2 SH1 SH0 1 SHIFTER | Ø Ø start=0 0001 S0 S7 start=1 data=0 RA S1 S6 001 R0 R1 R2 R3 R4 R5 R6 R7 RB 011 WEN 1 0000 0011 0000 0001 ØØØØ ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 100 S3 S4 G. Tempesti 12
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ OUTPORT INPORT 0000 OEN SEL 1 0 0001 START R2 R2 + R4 I0 I1 AL2 AL1 AL0 1 Ø + S5 Z 1 1 Z≠0 0001 SH2 SH1 SH0 1 SHIFTER | Ø Ø start=0 0001 S0 S7 start=1 data=0 RA S1 S6 010 R0 R1 R2 R3 R4 R5 R6 R7 RB 100 WEN 1 0000 0011 0000 0001 0001 ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 010 S3 S4 G. Tempesti 13
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ OUTPORT INPORT 0011 OEN SEL 1 0 0000 START I0 I1 AL2 AL1 AL0 1 Ø + R1 R1 >> 1 end while S6 Z 1 1 Z≠0 0011 SH2 SH1 SH0 SHIFTER \ 1 start=0 0001 S0 S7 start=1 data=0 RA S1 S6 001 R0 R1 R2 R3 R4 R5 R6 R7 RB 000 WEN 1 0000 0011 0001 0001 0001 ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 001 S3 S4 G. Tempesti 14
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ OUTPORT INPORT 0001 OEN SEL 1 0 0001 R4 R1 AND R3 START I0 I1 AL2 AL1 AL0 Ø & S4 Z 1 1 Z≠0 0001 SH2 SH1 SH0 1 SHIFTER | Ø Ø start=0 0001 S0 S7 start=1 data=0 RA S1 S6 001 R0 R1 R2 R3 R4 R5 R6 R7 RB 011 WEN 1 0000 0001 0001 0001 0001 ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 100 S3 S4 G. Tempesti 15
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ OUTPORT INPORT 0001 OEN SEL 1 0 0001 START R2 R2 + R4 I0 I1 AL2 AL1 AL0 1 Ø + S5 Z 1 1 Z≠0 0010 SH2 SH1 SH0 1 SHIFTER | Ø Ø start=0 0010 S0 S7 start=1 data=0 RA S1 S6 010 R0 R1 R2 R3 R4 R5 R6 R7 RB 100 WEN 1 0000 0001 0001 0001 0001 ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 010 S3 S4 G. Tempesti 16
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ OUTPORT INPORT 0001 OEN SEL 1 0 0000 START I0 I1 AL2 AL1 AL0 1 Ø + R1 R1 >> 1 end while S6 Z 1 1 Z≠0 0001 SH2 SH1 SH0 SHIFTER \ 1 start=0 0000 S0 S7 start=1 data=0 RA S1 S6 001 R0 R1 R2 R3 R4 R5 R6 R7 RB 000 WEN 1 0000 0001 0010 0001 0001 ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 001 S3 S4 G. Tempesti 17
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ OUTPORT INPORT 0000 OEN SEL 1 0 0001 R4 R1 AND R3 START I0 I1 AL2 AL1 AL0 Ø & S4 Z 1 Z≠0 0000 SH2 SH1 SH0 1 SHIFTER | Ø Ø start=0 0000 S0 S7 start=1 data=0 RA S1 S6 001 R0 R1 R2 R3 R4 R5 R6 R7 RB 011 WEN 1 0000 0000 0010 0001 0001 ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 100 S3 S4 G. Tempesti 18
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ OUTPORT INPORT 0010 OEN SEL 1 0 0000 START R2 R2 + R4 I0 I1 AL2 AL1 AL0 1 Ø + S5 Z 1 1 Z≠0 0010 SH2 SH1 SH0 1 SHIFTER | Ø Ø start=0 0010 S0 S7 start=1 data=0 RA S1 S6 010 R0 R1 R2 R3 R4 R5 R6 R7 RB 100 WEN 1 0000 0000 0010 0001 0000 ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 010 S3 S4 G. Tempesti 19
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ OUTPORT INPORT 0000 OEN SEL 1 0 0000 START I0 I1 AL2 AL1 AL0 1 Ø + R1 R1 >> 1 end while S6 Z 1 Z≠0 0000 SH2 SH1 SH0 SHIFTER \ 1 start=0 0000 S0 S7 start=1 data=0 RA S1 S6 001 R0 R1 R2 R3 R4 R5 R6 R7 RB 000 WEN 1 0000 0000 0010 0001 0000 ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 001 S3 S4 G. Tempesti 20
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 0010 ØØØØ OUTPORT INPORT 0010 OEN 1 SEL 1 0 0000 START I0 I1 AL2 AL1 AL0 1 Ø + S7 Z 1 1 Z≠0 0010 outport R2 SH2 SH1 SH0 1 SHIFTER | Ø Ø start=0 0010 S0 S7 start=1 data=0 RA S1 S6 010 R0 R1 R2 R3 R4 R5 R6 R7 RB 000 WEN 0000 0000 0010 0001 0000 ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 ØØØ S3 S4 G. Tempesti 21
Exécution de programme - Exemple Architecture et technologie des ordinateurs II Exécution de programme - Exemple R1 inport R2 0 R3 1 while R1 ≠ 0 R4 R1 AND R3 R2 R2 + R4 R1 R1 >> 1 end while outport R2 ØØØØ ØØØØ OUTPORT INPORT ØØØØ OEN SEL 1 0 ØØØØ START I0 I1 AL2 AL1 AL0 Ø Ø S0 Z Ø Ø Z≠0 ØØØØ SH2 SH1 SH0 Ø SHIFTER Ø Ø start=0 ØØØØ S0 S7 start=1 data=0 RA S1 S6 ØØØ R0 R1 R2 R3 R4 R5 R6 R7 RB ØØØ WEN 0000 ØØØØ ØØØØ ØØØØ ØØØØ ØØØØ ØØØØ ØØØØ WA S2 data≠0 S5 ØØØ S3 S4 G. Tempesti 22
Contrôle par machine d’états Architecture et technologie des ordinateurs II Contrôle par machine d’états Toute machine d’états peut être réalisée par un système logique: start SLC D2 Q2 start=0 data≠0 S0 S7 start=1 D1 Q1 data=0 S1 S6 SLC D0 Q0 S2 data≠0 S5 CONTRÔLE[17:0] CK S3 S4 G. Tempesti 23
Architecture et technologie des ordinateurs II Table d’états Une table d’états possible est: | start, data=0 | | 00 01 11 10 | S0 000 | 000 000 001 001 | nop S1 001 | 010 010 010 010 | data inport S3 011 | 100 100 100 100 | mask 1 S2 010 | 011 011 011 011 | ocount 0 S4 100 | 101 101 101 101 | temp data and mask S5 101 | 110 110 110 110 | ocount ocount + temp S7 111 | 000 000 000 000 | outport ocount S6 110 | 100 111 111 100 | data data >> 1 G. Tempesti 24
Architecture et technologie des ordinateurs II Signaux de contrôle On peut aussi créer la table des signaux de contrôle nécessaires pour gérer l’unité de traitement. OEN SEL AL SH RA RB WEN WA S0 000 nop 0 0 ØØØ ØØØ ØØØ ØØØ 0 ØØØ S1 001 datainport 0 1 101 1ØØ ØØØ 000 1 001 S3 011 mask1 0 0 111 1ØØ 000 ØØØ 1 010 S2 010 ocount0 0 0 101 1ØØ 000 000 1 011 S4 100 tempdata AND mask 0 0 001 1ØØ 001 010 1 100 S5 101 ocountocount+temp 0 0 101 1ØØ 011 100 1 011 S7 111 outportocount 1 0 101 1ØØ 011 000 0 ØØØ S6 110 datadata >> 1 0 0 101 010 001 000 1 001 On peut alors déterminer, à l’aide de tables de Karnaugh, les fonctions logiques nécessaires pour évaluer le prochain état ainsi que tous les signaux de contrôle. G. Tempesti 25
Architecture et technologie des ordinateurs II SLC = mémoire Un système logique combinatoire peut toujours être réalisé par une mémoire suffisamment grande: | AB ABCD | Z CD | 00 01 10 11 0000 | 000 S0 00 | 000 000 001 001 0001 | 010 S1 01 | 010 010 010 010 0010 | 011 S2 10 | 011 011 011 011 0011 | 100 S3 11 | 100 100 100 100 0100 | 000 0101 | 010 0110 | 011 0111 | 100 1000 | 001 1001 | 010 1010 | 011 1011 | 100 1100 | 001 1101 | 010 1110 | 011 1111 | 100 N variables d’entrée = 2N adresses M variables de sortie = M bits de large G. Tempesti 26
Architecture et technologie des ordinateurs II SLC = mémoire | start, data=0 | | 00 01 11 10 | S0 000 | 000 000 001 001 | nop S1 001 | 010 010 010 010 | data inport S3 011 | 100 100 100 100 | mask 1 S2 010 | 011 011 011 011 | ocount 0 S4 100 | 101 101 101 101 | temp data and mask S5 101 | 110 110 110 110 | ocount ocount + temp S7 111 | 000 000 000 000 | outport ocount S6 110 | 100 111 111 100 | data data >> 1 La table d’états de notre programme peut donc être réalisée avec une mémoire de 25=32 adresses et de 3 bits de large. G. Tempesti 27
Architecture et technologie des ordinateurs II SLC = mémoire OEN SEL ALC SHC RRA RRB WEN WRA S0 000 nop 0 0 ØØØ ØØØ ØØØ ØØØ 0 ØØØ S1 001 datainport 0 1 101 1ØØ ØØØ 000 1 001 S3 011 mask1 0 0 111 1ØØ 000 ØØØ 1 010 S2 010 ocount0 0 0 101 1ØØ 000 000 1 011 S4 100 tempdata AND mask 0 0 001 1ØØ 001 010 1 100 S5 101 ocountocount+temp 0 0 101 1ØØ 011 100 1 011 S7 111 outportocount 1 0 101 1ØØ 011 000 0 ØØØ S6 110 datadata >> 1 0 0 101 010 001 000 1 001 Les signaux de contrôle de l’unité de traitement pour notre programme peuvent donc être définis avec une mémoire de 23=8 adresses et de 18 bits de large. G. Tempesti 28
Architecture et technologie des ordinateurs II SLC = mémoire L’unité de contrôle de notre processeur peut donc être réalisée à l’aide de mémoires: start RAM 32 x 3 D2 Q2 data≠0 D1 Q1 RAM 8 x 18 D0 Q0 CONTRÔLE[17:0] CK G. Tempesti 29
Architecture et technologie des ordinateurs II SLC = mémoire L’avantage d’utiliser des mémoires pour implémenter l’unité de contrôle est que cette approche peut être généralisée: M Fanions RAM 2N+M x N N N BASCULES RAM 2N x 18 CONTRÔLE[17:0] CK L’inconvénient d’utiliser des mémoires pour implémenter l’unité de contrôle est la taille des mémoires, fonction de la complexité de la table d’états et donc du programme. P.ex.: 16 bascules (64K instructions) + 8 signaux = 224x16 = 32MB! G. Tempesti 30
Langage de haut-niveau Compilation program toto; var A, B, C : array [1...1000] of integer; i : integer begin ... for i:=1 to 1000 do C[i] := A[i] + B[i]; end Algorithme Langage de haut-niveau Langage machine = assembleur ... MOVE.L #2001,A0 MOVE.L #3001,A1 MOVE.L #4001,A2 START: ABCD -(A0),-(A1) MOVE.B (A1),(A2) TEST: CMPA #1001, A0 BNE START COMPILATEUR
Contrôle de l’unité de traitement Architecture et technologie des ordinateurs II Contrôle de l’unité de traitement OUTPORT INPORT UNITÉ DE CONTRÔLE OEN OEN SEL SEL 1 0 3 AL[2:0] I0 I1 AL2 AL1 AL0 3 SH[2:0] 3 Z RA[2:0] Z≠0 3 RB[2:0] SH2 SH1 SH0 SHIFTER WEN 3 WA[2:0] 3 RA 3 R0 R1 R2 R3 R4 R5 R6 R7 RB WEN Z≠0 3 WA OEN SEL AL[2:0] SH[2:0] WEN RA[2:0] RB[2:0] WA[2:0] OPÉRATION OPÉRANDES G. Tempesti 32
Format des instructions: exemple Architecture et technologie des ordinateurs II Format des instructions: exemple data inport = LOAD ADR, R1 ocount 0 = MOVE R0, R2 mask 1 = INC R0, R3 while data ≠ 0 = BRA COND, ADR temp data AND mask = AND R1, R3, R4 ocount ocount + temp = ADD R2, R4, R2 data data >> 1 = SHR R1, R1 end while = BRA 1, ADR outport ocount = STORE ADR, R2 Opcode: 8 instructions différentes = 3 bits de opcode Opérandes: 3 opérandes de 3 bits de large Les instructions de notre processeur seront donc codées sur 12 bits. G. Tempesti 33
Format des instructions: exemple Architecture et technologie des ordinateurs II Format des instructions: exemple Le codage des instructions est, en général, arbitraire: OPCODE OPER1 OPER2 OPER3 LOAD ADR, R1 0 0 0 Adresse[5:0] 0 0 1 MOVE R0, R2 0 0 1 0 0 0 0 1 0 ø ø ø INC R0, R3 0 1 0 0 0 0 0 1 1 ø ø ø BRA ADR, COND 0 1 1 Adresse[5:0] data=0 AND R1, R3, R4 1 0 0 0 0 1 0 1 1 1 0 0 ADD R2, R4, R2 1 0 1 0 1 0 1 0 0 0 1 0 SHR R1, R1 1 1 0 0 0 1 0 0 1 ø ø ø BRA ADR, COND 0 1 1 Adresse[5:0] vrai STORE ADR, R2 1 1 1 Adresse[5:0] 0 1 0 Paramètres: 8 registres, 8 conditions, 26=64 adresses mémoire G. Tempesti 34
Contrôle par instructions - Décodage Adresse Instruction SLC M RAM 2N+M x N Fanions N SLC N BASCULES Opcode Opérandes n BASCULES Opérandes RAM 2N x 18 CONTRÔLE[17:0] RAM 2x x 9 Contrôle CK CK Fanions Chaque instruction doit permettre de générer les bits de contrôle pour l’unité de traitement ainsi que l’adresse de l’instruction suivante.
Contrôle par instructions - Décodage SLC CK Opcode Opérandes n BASCULES Fanions RAM Contrôle Opérandes Instruction Adresse 0:0|1 4:5 1:2 5:6 2:3 6:7|4 3:4 7:0 0:data inport 1:ocount 0 2:mask 1 3:while data ≠ 0 4:tempdata AND mask 5:ocountocount+temp 6:data data >> 1 end while 7:outport ocount 0:R1 4:R1,R3,R4 1:R0,R2 5:R2,R4,R2 2:R0,R3 6:R1,R1 3: 7:R2 0:AIN 4: CA&B 1:BA 5: CA+B 2:BA+1 6: BA>>1 3:NOP 7: OUTA