La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Architecture et technologie des ordinateurs II

Présentations similaires


Présentation au sujet: "Architecture et technologie des ordinateurs II"— Transcription de la présentation:

1 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

2 Un processeur « générique »
Architecture et technologie des ordinateurs II Un processeur « générique » AL[2:0] | Fonction | not I0 | I0 and I1 | I0 xor I1 | I0 or I1 | I0 - 1 | I0 + I1 | I0 - I1 | 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 | Décalage < | Rotation < | Décalage > | Rotation > | NOP | NOP | NOP | NOP 3 RA 3 R0 R1 R2 R3 R4 R5 R6 R7 RB WEN 3 WA REGISTRES G. Tempesti 2

3 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

4 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

5 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

6 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

7 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 outportocount start=1 data=0 S1 datainport S6 datadata >> 1 S2 ocount0 data≠0 S5 ocountocount + temp S3 mask1 S4 tempdata AND mask G. Tempesti 7

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 ØØØØ ØØØØ 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

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 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

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 ØØØØ ØØØØ 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

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 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

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 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

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 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

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 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

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 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

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 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

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 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

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 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

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 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

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 ØØØØ ØØØØ 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

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 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

22 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

23 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

24 Architecture et technologie des ordinateurs II
Table d’états Une table d’états possible est: | start, data=0 | | | S0 000 | | nop S1 001 | | data  inport S3 011 | | mask  1 S2 010 | | ocount  0 S4 100 | | temp  data and mask S5 101 | | ocount  ocount + temp S7 111 | | outport  ocount S6 110 | | data  data >> 1 G. Tempesti 24

25 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 ØØØ S1 001 datainport ØØ ØØØ S3 011 mask ØØ 000 ØØØ S2 010 ocount ØØ S4 100 tempdata AND mask ØØ S5 101 ocountocount+temp ØØ S7 111 outportocount ØØ ØØØ S6 110 datadata >> 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

26 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 | | 000 S0 00 | | 010 S1 01 | | 011 S2 10 | | 100 S3 11 | | 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

27 Architecture et technologie des ordinateurs II
SLC = mémoire | start, data=0 | | | S0 000 | | nop S1 001 | | data  inport S3 011 | | mask  1 S2 010 | | ocount  0 S4 100 | | temp  data and mask S5 101 | | ocount  ocount + temp S7 111 | | outport  ocount S6 110 | | 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

28 Architecture et technologie des ordinateurs II
SLC = mémoire  OEN SEL ALC SHC RRA RRB WEN WRA S0 000 nop  ØØØ ØØØ ØØØ ØØØ 0 ØØØ S1 001 datainport ØØ ØØØ S3 011 mask ØØ 000 ØØØ S2 010 ocount ØØ S4 100 tempdata AND mask ØØ S5 101 ocountocount+temp ØØ S7 111 outportocount ØØ ØØØ S6 110 datadata >> 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

29 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

30 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

31 Langage de haut-niveau
Compilation program toto; var A, B, C : array [ ] 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

32 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

33 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

34 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, R Adresse[5:0] MOVE R0, R ø ø ø INC R0, R ø ø ø BRA ADR, COND Adresse[5:0] data=0 AND R1, R3, R ADD R2, R4, R SHR R1, R ø ø ø BRA ADR, COND Adresse[5:0] vrai STORE ADR, R Adresse[5:0] Paramètres: 8 registres, 8 conditions, 26=64 adresses mémoire G. Tempesti 34

35 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.

36 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:tempdata AND mask 5:ocountocount+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:AIN 4: CA&B 1:BA 5: CA+B 2:BA+1 6: BA>>1 3:NOP 7: OUTA


Télécharger ppt "Architecture et technologie des ordinateurs II"

Présentations similaires


Annonces Google