Architectures des ordinateurs Caches et mémoire virtuelle Daniel Etiemble [email protected] Capacité mémoire 100M ≈ 0.5 T (bits) DRAM 10M 1M Point mémoire DRAM (1,5 transistors) SRAM 100K X 4 tous les trois ans 10K 1K LM Date d’apparition 1978 1981 1984 1987 1990 1993 1996 LB LB Q Surface SRAM/DRAM = 4 Coût bit SRAM/DRAM = 10 L3 Informatique - IFIPS2 2007-08 Q Point mémoire SRAM (6 transistors) Architecture des ordinateurs D. Etiemble 2 1 Caractéristiques temporelles des DRAM ns 250 200 Temps de cycle 150 Temps d’accès ligne lent 100 rapide 50 Temps d’accès colonne 1980 64 Ko 1983 256 Ko L3 Informatique - IFIPS2 2007-08 1986 1989 1992 1 Mo 4 Mo 16 Mo année Architecture des ordinateurs D. Etiemble 3 Le “gap” des performances mémoire 10000 1000 CPU 100 DRAM 10 20 00 96 98 92 94 88 90 84 86 80 82 1 Croissance besoins CPU : 50 à 60%/an Décroissance latence DRAM : 8 à 10%/an L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 4 2 Evolution des hiérarchies mémoire (1985-2000) Special bus CPU a) L1 cache MM L2 cache Superscalar CPU d) System bus + MM L1 caches b) CPU + L1 caches L2 cache MM PentiumII System bus Special bus Pentium Superscalar CPU + L1 caches c) System bus L2 cache MM System bus Pentium 4 L2 CACHE Pentium Pro L3 Informatique - IFIPS2 2007-08 MM RDRAM Superscalar CPU + L1 caches e) System bus Architecture des ordinateurs D. Etiemble 5 Principe des caches • • • Fondés sur le principe de localité Mémoires de taille et vitesse différentes Organisation – Découpage en lignes (blocs) – Mécanisme de correspondance • Placement des lignes dans le cache • Détection succès ou échec – Gestion de la cohérence Ligne CPU Cache L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble Mémoire principale 6 3 Principe de localité • Localité spatiale – Si on accède à une case mémoire, on accédera à une case proche • Localité temporelle – si on accède à une case mémoire, on y accédera probablement très bientôt (ou dans très longtemps ou jamais !) L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 7 Mécanismes de correspondance OU PLACER UNE LIGNE DE LA MP DANS LE CACHE ? 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 Mémoire principale 01234567 ADRESSE LIGNE 01234567 01234567 0 1 2 3 Correspondance directe L3 Informatique - IFIPS2 2007-08 Totalement associatif Associatif deux voies Architecture des ordinateurs D. Etiemble 8 4 Correspondance directe J (cache) = i (MP) mod NB, avec NB = nombre de lignes du cache ETIQUETTE INDEX 5 Adresse Octet dans le Bloc i/NB 0 =? j NB - 1 ETIQUETTE NON : Echec Bits de contrôle L3 Informatique - IFIPS2 2007-08 OUI : Succès Architecture des ordinateurs D. Etiemble 9 Associativité totale Ligne i(MP) dans n’importe quelle ligne j du cache. Etiquette = i, et NB comparateurs pour détecter succès ou échec ETIQUETTE 0 j 5 Adresse Octet dans le Bloc = 1 égalité = Succès NB comparaisons = NB - 1 0 égalité = Echec = ETIQUETTE L3 Informatique - IFIPS2 2007-08 Bits de contrôle Architecture des ordinateurs D. Etiemble 10 5 Associativité par ensemble N (2, 4, 8) lignes par ensemble. Correspondance directe pour les ensembles et associativité à l’intérieur d’un ensemble. N comparateurs. ETIQUETTE INDEX Ensemble 5 Adresse Octet dans le Bloc i/NE i/NE 0 0 =? j NON Echec =? NE - 1 ETIQUETTE Bits de contrôle L3 Informatique - IFIPS2 2007-08 OUI : Succès j Bits de ETIQUETTE contrôle NE - 1 Architecture des ordinateurs D. Etiemble 11 Les causes d’échec cache • Échecs de démarrage – Premiers accès à une donnée ou une instruction : elle est en mémoire principale. • Échecs de capacité – Le cache est trop “petit” par rapport aux besoins du programme (instructions et/ou données) • Échecs de conflit – Le mécanisme de correspondance utilisé (correspondance directe ou associativité par ensemble remplace des lignes déjà présentes dans le cache (alors que d’autres lignes peuvent être non utilisées) L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 12 6 Les 3C • • • 0,14 0,12 0,1 Echecs de démarrage Echecs de capacité Echecs de conflit 0,08 0,06 Obligatoire 0,04 Capacité Conflit 0,02 0 1 bloc 2 blocs 4 blocs 8 blocs 0,01 0,009 0,008 0,007 SPEC92 Lignes de 32 octets - LRU DECStation5000 0,006 0,005 Obligatoire 0,004 Capacité Conflit 0,003 0,002 0,001 0 1 bloc L3 Informatique - IFIPS2 2007-08 2 blocs 4 blocs 8 blocs Architecture des ordinateurs D. Etiemble 13 Politique en écriture WRITE BACK (Réécriture) WRITE THROUGH (Ecriture simultanée) L2 L1 L1 CPU L2 x CPU Write Write Cohérence au plus tard Write Buffer Cohérence au plus tôt Ecriture mémoire quand une ligne modifiée est remplacée Réécriture 3 Load CPU 1 Read Miss L3 Informatique - IFIPS2 2007-08 Bit “modifié” Architecture des ordinateurs D. Etiemble L2 L1 x 2 Write back 14 7 Politiques de remplacement • Ligne à remplacer ? – La plus anciennement utilisée (LRU) – Au hasard – La moins fréquemment utilisée (LFU) L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 15 CPI Mémoire CPU Bloc Cache Mémoire principale CPImémoire = ma x m x p ma: accès mémoire/instruction m: taux d’échec p : pénalité d’échec (cycles d’horloge) L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 16 8 Améliorer les performances des caches • Diminuer le taux d’échec • Taille (cache, ligne) et associativité • Optimisations du compilateur • Préchargement • Diminuer le temps d’accès réussi (hit) • Petits caches • Eviter les traductions d’adresse • Diminuer la pénalité d’échec • Caches non bloquants • Caches de second niveau L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 17 Taux d’échec (Taille de ligne) 25,00% 1K 4K 16K 64K 256K 20,00% 15,00% 10,00% 5,00% 0,00% 16 L3 Informatique - IFIPS2 2007-08 32 64 128 Architecture des ordinateurs D. Etiemble 256 18 9 Temps d’accès (taille de ligne) 18 Temps d’accès moyen (cycles) 16 Hypothèse 14 1K 4K 16K 64K 256K 12 10 40 cycles de démarrage, puis 16 octets tous les 2 cycles 8 6 4 2 0 16/42 32/44 64/48 L3 Informatique - IFIPS2 2007-08 128/56 256/72 Taille de ligne / Pénalité d’échec Architecture des ordinateurs D. Etiemble 19 Taux d’échecs (associativité) Le taux d’échec décroît quand l’associativité croit, mais les lectures “optimistes” ne peuvent plus être utilisées (nécessité de prédicteurs d’ensemble) Cache 8 Ko ; n voies Taux d’échec 1 2 L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble hydro applu mgrid compress lisp gcc go 4 wave 10 9 8 7 6 5 4 3 2 1 0 20 10 Caches non bloquants Succès pendant échecs : le cache continue à fournir les données des accès réussis pendant qu’il traite un échec. CPU L1 Echec / Succès L2 ou MP Rapport moyen entre les temps de suspension d’un cache non bloquant/cache bloquant L3 Informatique - IFIPS2 2007-08 eqntott espresso compress ora xlisp alvinn spice2g6 ear mdljdp2 doduc wave5 nasa7 hydro2d mdljsp2 fpppp suc2cor Succès pendant 1 échec Succès pendant 2 échecs Succès pendant 2 échecs tomcatv swm256 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% Architecture des ordinateurs D. Etiemble 21 Plusieurs niveaux de cache • Options: caches instructions et données séparés ou cache unifié Processeur Regs cache D - L1 cache I – L1 Cache Cache L2 L2 unifié unifié Taille : 200 o 8-64 Ko SRAM 1-4Mo Vitesse <1 ns <1 ns 6 ns €/Moctet : 100 €/Mo Taille ligne : 8 o 32 o 32 o Plus gros, plus lent, moins cher L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble Mémoire Mémoire DRAM 128 Mo 60 ns 1.50€/Mo 8 Ko disque disque 30 Go 8 ms 0.05€/Mo 22 11 Caches inclusifs ou exclusifs • Caches inclusifs – L1⊂ L2 ⊂ MP • Caches exclusifs – L1 ⊄ L2 – Fonctionnement • Echec L1 : bloc de MP dans L1 – Si remplacement, bloc remplacé dans L2 et bloc demandé dans L1 • Echec L1 et Succès L2 – Remplacement d’un bloc dans L1 (copié dans L2) et bloc demandé de L2 dans L1 • Nécessité d’un tampon des victimes – Lors d’un remplacement, le bloc remplacé est placé dans un tampon pour ne pas retarder le transfert L2 vers L1 L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 23 Caches données des processeurs Intel CACHE PRIMAIRE Pentium Pro Pentium III Pentium 4 Taille 8 Ko 16 Ko 8 Ko Assoc. 2 voies 4 voies 4 voies Lignes Latence Ecriture 32 oct 3 Réécriture 32 oct 3 Réécriture 64 oct 2/6 Simultanée CACHE SECONDAIRE (UNIFIE) Taille Assoc. Pentium Pro 512 Ko 4 voies Pentium III* 256 Ko 8 voies Pentium 4 256 Ko 8 voies L3 Informatique - IFIPS2 2007-08 Lignes Latence Ecriture 32 oct Réécriture 32 oct 6 Réécriture 128 oct 7/7 Réécriture Architecture des ordinateurs D. Etiemble 24 12 Amélioration des performances cache • Réduire le taux d’échec – Taille de cache, de ligne et degré d’associativité – Optimisations du compilateur – Préchargement • Réduire le temps de l’accès réussi – Prédiction d’ensemble – Eviter les traductions d’adresse • Réduire la pénalité d’échec – Caches non bloquants – Caches de second niveau L3 Informatique - IFIPS2 2007-08 HW SW HW SW HW HW HW HW Architecture des ordinateurs D. Etiemble 25 L’allocation mémoire des tableaux C • Les tableaux C sont alloués dans l’ordre ligne d’abord – Ligne dans des cases mémoires contiguës • Balayage à travers les colonnes dans une ligne : – for (i = 0; i < N; i++) sum += a[0][i]; – Accède aux éléments successifs – Si la taille de bloc (B) > 4 octets, exploite la localité spatiale • Taux d’échecs obligatoires = 4 octets / B • Balayage à travers les lignes dans une colonne : – for (i = 0; i < n; i++) sum += a[i][0]; – Accèdent à des éléments distants – Aucune localité spatiale ! • Taux d’échecs obligatoires = 1 (i.e. 100%) L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 26 13 Multiplication de matrices (ijk) /* /* ijk ijk */ */ for for (i=0; (i=0; i<n; i<n; i++) i++) {{ for (j=0; j<n; for (j=0; j<n; j++) j++) {{ sum = 0.0; sum = 0.0; for for (k=0; (k=0; k<n; k<n; k++) k++) sum += a[i][k] sum += a[i][k] ** b[k][j]; b[k][j]; c[i][j] c[i][j] == sum; sum; }} PRODUIT SCALAIRE }} Boucle interne : (*,j) (i,j) (i,*) A Par ligne B C Par colonne Fixé • Echecs par itération de la boucle interne: A 0,25 B 1,0 L3 Informatique - IFIPS2 2007-08 C 0,0 Architecture des ordinateurs D. Etiemble 27 Multiplication de matrices (ikj) /* /* ikj ikj */ */ for for (i=0; (i=0; i<n; i<n; i++) i++) {{ for (k=0; k<n; for (k=0; k<n; k++) k++) {{ rr == a[i][k]; a[i][k]; for for (j=0; (j=0; j<n; j<n; j++) j++) c[i][j] c[i][j] += += rr ** b[k][j]; b[k][j]; }} SAXPY/DAXPY }} Boucle interne : (i,k) (k,*) (i,*) A Fixé B Par ligne C Par ligne • Echecs par itération de la boucle interne: A 0,0 L3 Informatique - IFIPS2 2007-08 B 0,25 C 0,25 Architecture des ordinateurs D. Etiemble 28 14 Améliorer la localité temporelle par blocage • Exemple : multiplication de matrices avec blocage – “bloc” (dans ce contexte) ne signifie pas “bloc de cache”. – C’est un sous bloc de la matrice. – Exemple: N = 8; taille de sous bloc = 4 A11 A12 A21 A22 B11 B12 X C11 C12 = B21 B22 C21 C22 Idée de base : Un sous bloc (i.e., Axy) peut être traité comme un scalaire. C11 = A11B11 + A12B21 C12 = A11B12 + A12B22 C21 = A21B11 + A22B21 C22 = A21B12 + A22B22 L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 29 Optimisations du compilateur ECHANGE DE BOUCLES for (j=0; j<100; j++) for (i=0; i<5000; i++) x[i][j] = 2*x[i][j]; for (i=0; i<5000; i++) for (j=0; j<100; j++) x[i][j] = 2*x[i][j]; FUSION DE TABLEAUX int val[SIZE]; int key[SIZE]; ! L3 Informatique - IFIPS2 2007-08 Améliore la localité spatiale struc merge { int val; ; int key; } struc merge merge-array [SIZE]; Architecture des ordinateurs D. Etiemble 30 15 Optimisations du compilateur Améliore la localité temporelle FUSION DE BOUCLES for (i=0; i<N; i++) for (j=0; j<N; j++) a[i][j] = 1/b[i][j]*c[i][j]; for (i=0; i<N; i++) for (j=0; j<N; j++) d[i][j] = a[i][j]+c[i][j]; L3 Informatique - IFIPS2 2007-08 for (i=0; i<N; i++) for (j=0; j<N; j++) { a[i][j] = 1/b[i][j]*c[i][j]; d[i][j] = a[i][j]+c[i][j]; } Architecture des ordinateurs D. Etiemble 31 Optimisations du compilateur BLOCAGE AMELIORE LA LOCALITE TEMPORELLE for (jj=0; jj<N; jj+=B) for (i=0; i<N; i++) for (kk=0; kk<N; kk+=B) for (j=0; j<N; j++) for (i=0; i<N; i++) {r=0; for (j=jj; j<(min(jj+B-1,N); j++) for (k=0; k<N; k++) {r=0; r+=y[i][k]*z[k][j]; for (k=kk; j<(min(kk+B-1,N); k++) x[i][j]=r;} r+=y[i][k]*z[k][j]; x[i][j]+=r;} B : facteur de blocage L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 32 16 Préchargement matériel • Précharger les instructions ou les données avant qu’elles ne soient nécessaires (charger une ligne avant un échec cache) • Quelle ligne ? – La suivante (préchargement séquentiel selon la localité spatiale) – Une ligne prédite • Quand ? – Toujours – Sur un échec – Sur un échec et lorsqu’on accède une donnée préchargée • Où ? – Dans le cache (pollution potentielle) – Dans un tampon L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 33 Préchargement logiciel • Instructions de préchargement (IA-32) – – – – PREFETCHT0 m8 : tous les niveaux de cache PREFETCHT1 m8: tous les niveaux sauf L0 PREFETCHT2 m8: tous les niveaux sauf L0 et L1 PREFETCHNTA m8: préchargement dans une structure non temporelle • Indications de préchargement – Dépendent des implémentations L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 34 17 Liaison cache-mémoire principale CPU CPU CPU 1 mot MUX 1 mot 1 mot Cache Cache Cache m mots 1 mot Mémoire 1 mot Mémoire Mémoire large Banc Banc Banc Banc 0 1 2 3 Mémoire entrelacée m bancs Largeur 1 mot L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 35 Entrelacement mémoire Module accédé Adresses = 0 mod 4 0 1 Adresse Donnée entrée Selon les 2 bits de poids faible de l’adresse 2 Adresses = 1 mod 4 Récupé ration donnée Adresses = 2 mod 4 Donnée sortie 3 0 1 Cycle bus Adresses = 3 mod 4 Cycle mémoire 2 3 Temps Modules indépendants L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 36 18 Mémoire virtuelle • Beaucoup de programmes se partagent la mémoire DRAM • On peut écrire des programmes sans tenir compte de la taille de la mémoire principale • Relocation : des parties de programme peuvent être placés à différents endroits mémoire • Mémoire virtuelle – La mémoire DRAM contient plusieurs programmes s’exécutant en même temps (processus) – On utilise la mémoire DRAM comme une sorte de “cache” pour le disque L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 37 Plan d’ensemble de la hiérarchie mémoire Mémoire virtuelle Mémoire principale Cache Registres Mots Lignes (transferts explicites par Instructions Mémoire) Pages (transferts automatiques lors des défauts de cache) (transferts automatiques lors des défauts de page) Transferts de données dans une hiérarchie mémoire L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 38 19 Mappage mémoire virtuelle sur mémoire physique Mémoire virtuelle • • La mémoire est divisée en “blocs” de même taille ∞ (par exemple 4 Ko) Un bloc de la mémoire virtuelle est affecté à un bloc quelconque de la mémoire physique (page) Pile Mémoire physique Un processus 64 Mo Heap Heap Static Code 0 0 L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 39 Gestion des défauts de page • Un défaut de page est comme un échec cache – On doit trouver la page dans le niveau inférieur de la hiérarchie • Si le bit « valide » est à 0, le numéro de page physique pointe vers une page sur disque • Quand le système d’exploitation démarre un nouveau processus, il crée de l’espace sur disque pour toutes les pages du processus, positionne tous les bits « valide » dans la table des pages à 0 et les numéros de pages physiques pour qu’ils pointent sur le disque – Les pages du processus sont chargés depuis le disque uniquement quand elles sont nécessaires (pagination à la demande) L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 40 20 Comparaison Cache - Mémoire virtuelle Cache Mémoire virtuelle Elément transféré Bloc ou ligne Page Echec Echec cache Défaut de page Taille transfert Bloc : 32-64 octets Page : 4 ko-16 ko Placement Correspondance directe Associativité N voies Associativité totale Remplacement LRU ou hasard Approximation LRU Ecriture Simultanée ou réécriture Réécriture Gestion Matériel OS (matériel+logiciel L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 41 Traduction adresse virtuelle en adresse physique Adresse virtuelle 31 30 29 28 27 .…………….12 11 10 9 8 ……..…3 2 1 0 Numéro page virtuelle Adresse dans page Page 1 ko Traduction Numéro page physique 29 28 27 .……………….12 11 10 Adresse dans page 9 8 ……..…3 2 1 0 Adresse physique L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 42 21 Traduction d’adresse • Associativité totale pour le placement des pages • Une table des pages est une structure de données qui contient le mappage des pages virtuelles sur les pages physiques – Différentes techniques • Chaque processus en cours d’exécution a sa propre table des pages L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 43 Traduction d’adresse : Table des pages N°page virtuelle Adresse virtuelle Déplacement Table page Registre table pages Index vers Table pages La table des pages est en mémoire physique L3 Informatique - IFIPS2 2007-08 ... V D.A. Val Droits ide Accès V D.A. 0 D.A. ... N.P.P. + N°page physique N.P.P Adresse mémoire physique Droits accès : aucun, Lect. seule, Lect./Ecrit., Exécutable Architecture des ordinateurs D. Etiemble disque 44 22 Protection et partage en mémoire virtuelle Table page pour processus 1 Accès lecture et écriture Table des pages pour processus 2 Accès lecture seulement Pointeur Drapeaux Bits autorisation vers disque Mémoire principale La mémoire virtuelle facilite le partage et la protection mémoire L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 45 Table des pages directes à 2 niveaux ADRESSE VIRTUELLE 31 22 21 MEMOIRE PHYSIQUE 12 11 Entrée répert. Entrée table 0 Déplacement + Opérande 4K + 4K + Table des pages Registre de base du répertoire L3 Informatique - IFIPS2 2007-08 Répertoire Architecture des ordinateurs D. Etiemble 46 23 Table des pages inverses Table des pages inversée Adresse virtuelle Numéro de page virtuelle déplacement Numéro page virtuelle pointeur Fonction de hachage Numéro page virtuelle pointeur Numéro page virtuelle fin de chaîne Table de pointeurs L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 47 Traduction rapide : TLB • Problème : la mémoire virtuelle demande 2 (3) accès mémoire – 1 (2) pour traduire l’adresse virtuelle en adresse physique (accès à la table des pages) – 1 pour l’accès à la donnée réelle (succès cache) – La table des pages étant en mémoire physique, il y a donc 2 (3) accès mémoire • Observation comme il y a de la localité dans les pages de données, il doit y en avoir dans les adresses virtuelles de ces pages • Créer un cache de traduction des adresses virtuelles en adresses physiques • Un tel cache de « table des pages » est appelé TLB (Translation Lookaside Buffer) L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 48 24 Format TLB N° page virtuelle • • • N° page physique Valide Référence Modifié Droits d’accès Modifié : indique si la page a été ou non modifiée en écriture Référence : utilisée pour calculer le LRU Droits d’accès : lecture/écriture/exécution sur les pages L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 49 Fonctionnement du TLB Données Données Adresse virtuelle Processeur Adresse physique succès TLB succès échec Cache Mémoire principale Gestionnaire Défaut page Disque échec Table des pages L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 50 25 Cache et TLB Cache physique Cache L1 TLB Adresses logiques Adresses physiques Cache virtuel Cache L1 TLB Adresses logiques Adresses physiques Synonymes L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 51 Cache et TLB Caches avec index virtuels et adresses physiques Numéro page virtuelle Dépl. dans la page Etiquettes Index TLB N° page physique N° page physique Cache L1 =? TLB et cache sont accédés en parallèle Avec la correspondance directe, taille du cache = taille de page L3 Informatique - IFIPS2 2007-08 Architecture des ordinateurs D. Etiemble 52 26