Wikilivres
frwikibooks
https://fr.wikibooks.org/wiki/Accueil
MediaWiki 1.48.0-wmf.3
first-letter
Média
Spécial
Discussion
Utilisateur
Discussion utilisateur
Wikilivres
Discussion Wikilivres
Fichier
Discussion fichier
MediaWiki
Discussion MediaWiki
Modèle
Discussion modèle
Aide
Discussion aide
Catégorie
Discussion catégorie
Transwiki
Discussion Transwiki
Wikijunior
Discussion Wikijunior
TimedText
TimedText talk
Module
Discussion module
Event
Event talk
Programmation Visual Basic .NET
0
56491
775706
680212
2026-11-05T18:08:11Z
DavidL
1746
775706
wikitext
text/x-wiki
{{Page de garde|image=VB.NET Logo.svg|description=
[[w:Visual Basic .NET|Visual Basic .NET]] est un langage de programmation inspiré de [[Programmation VBA|Visual Basic]] 6 et utilisant le [[Programmation .Net|framework .Net]].
{{Lecture conseillée|[[Programmation orientée objet]]}}
|avancement=Terminé
|cdu=
* {{CDU item|6/68/681|681.3/681.3.0}}
|versions=
{{version imprimable}}
{{version PDF}}
}}
== Sommaire ==
{{:Visual Basic .NET/Sommaire}}
[[Catégorie:Visual Basic]]
[[Catégorie:.Net]]
ezoubcbzwc0vqzy1pe88m2ahpa7x0z1
775707
775706
2026-11-05T18:09:56Z
DavidL
1746
775707
wikitext
text/x-wiki
{{Page de garde|image=VB.NET Logo.svg|description=
[[w:Visual Basic .NET|Visual Basic .NET]] est un langage de programmation inspiré de Visual Basic 6 et utilisant le [[Programmation .Net|framework .Net]].
{{Lecture conseillée|[[Programmation orientée objet]]}}
|avancement=Terminé
|cdu=
* {{CDU item|6/68/681|681.3/681.3.0}}
|versions=
{{version imprimable}}
{{version PDF}}
}}
== Sommaire ==
{{:Visual Basic .NET/Sommaire}}
[[Catégorie:Visual Basic]]
[[Catégorie:.Net]]
e9citj7jksj40lu6nd8nsvowkqsfb8k
Fonctionnement d'un ordinateur/Les mémoires cache
0
65957
775710
775314
2026-11-06T11:26:57Z
Mewtow
31375
/* Le remplacement pseudo-aléatoire */
775710
wikitext
text/x-wiki
La '''mémoire cache''' est une mémoire intercalée entre la mémoire et un processeur, plus rarement à l'intérieur d'un périphérique. Sans elle, on se croirait à l'âge de pierre tellement nos PC seraient lents ! En effet, la mémoire RAM est très lente comparée au processeur. Le temps mis pour accéder à la mémoire est du temps durant lequel le processeur n'exécute pas d'instructions (sauf cas particuliers impliquant un pipeline). Pour diminuer ce temps d'attente, il a été décidé d'intercaler une mémoire petite mais rapide, entre le processeur et la mémoire. Ainsi, le processeur accède à un cache très rapide plutôt qu'à une RAM beaucoup plus lente.
==Les caches internes ou externes (au processeur)==
Les tout premiers processeurs utilisaient un cache externe, séparé du processeur. Mais de nos jours, le cache est intégré dans le processeur, directement. La loi de Moore a permis d'utiliser des transistors pour le cache, en plus des cœurs du processeur. Et cela nous amène à distinguer deux types de caches : les caches externes et internes. Les '''caches externes''' sont des caches qui sont à l'extérieur du processeur. Ils sont soudés sur la carte mère, ou ont leur propre connecteur, les deux sont possibles. À l'inverse, les '''caches internes''' sont intégrés dans le processeur, à l'intérieur de celui-ci.
Intégrer le cache dans le processeur a divers avantages. Le premier est que le cache est plus rapide quand il est dans le processeur que dehors. Les transferts entre cache et processeurs restent dans le processeur, il n'y a pas besoin de passer dans des interconnexions avec l'extérieur, qui sont assez lentes. Le cache a aussi tendance à aller à la même fréquence que le processeur, même s’il faut nuancer, comme on le verra plus bas.
Les caches internes sont tous fabriqués avec de la mémoire SRAM, la seule forme de mémoire qu'on peut implémenter dans un circuit intégré. Pour les caches externes, on pourrait d'attendre à ce qu'ils soient faits en mémoire DRAM, mais c'est assez rare. En général, ils sont faits avec de la mémoire SRAM, comme les caches internes. Il y a cependant quelques exceptions, des caches externes qui utilisaient de la mémoire eDRAM.
===Les caches internes et la hiérarchie de caches===
L'intégration du cache dans le processeur ne suffit plus de nos jours. Les processeurs sont devenus tellement rapides qu'ils ne peuvent plus se contenter d'un seul cache ! Pour rappel, plus une mémoire peut contenir de données, plus elle est lente. Et les caches ne sont pas épargnés. Si on devait utiliser un seul cache, celui-ci serait très gros et donc trop lent. La situation qu'on cherche à éviter avec la mémoire RAM revient de plus belle. Et qui dit même problème, dit même solution !
Les processeurs modernes utilisent une hiérarchie de mémoires caches, allant d'un cache très petit mais très rapide, à un cache plus lent mais de grande capacité. Les processeurs assez anciens n'utilisaient pas de cache L3, ils avaient juste un cache L1 petit et rapide, et un cache L2 gros et lent.
[[File:Hiérarchie de caches.png|centre|vignette|upright=2|Hiérarchie de caches]]
Depuis les années 2010, les processeurs utilisent une hiérarchie à trois niveaux de cache. Les caches en question sont appelés le '''cache L1''' pour le plus petit et le plus rapide, le '''cache L2''' pour le cache intermédiaire, et le '''cache L3''' pour le cache gros et lent. Il arrive même que certains processeurs aient un '''cache L4''', très gros mais aussi très lent.
[[File:Cache Hierarchy.png|centre|vignette|upright=1.5|Hiérarchie de caches]]
La grande majorité des processeurs utilise deux caches L1 séparés : un '''cache d'instructions''' dédié aux instructions, et un '''cache L1 de données''' pour les données. Une telle organisation permet de charger une instruction tout en lisant une donnée en même temps. Notons que seul le cache L1 est ainsi séparé entre cache de données et d'instructions. Le cache L2 mémorise indifféremment données et instructions. La séparation entre cache L1 de données et d’instruction est apparue en même temps que la scission entre cache L1 et L2.
[[File:Cache d'instructions.png|centre|vignette|upright=2|Cache d'instructions.]]
Le nombre de niveaux de cache varient d'un processeur à l'autre. Les tout premiers processeurs faisaient avec un cache unique, sans hiérarchie de cache. Mais par la suite, la scission entre L1 et L2 est apparue. Puis un cache L3 a été ajouté, avec parfois un cache L4. Pour rester général, la hiérarchie de caches est composée de plusieurs '''niveaux de cache''', qui vont des niveaux inférieurs proches de la mémoire RAM à des niveaux supérieurs proches du processeur. Plus on monte vers les niveaux supérieurs, plus les caches sont petits et rapides.
Le cache le plus proche de la mémoire est appelé le '''cache de dernier niveau''', ''Last Level Cache'' en anglais. Concrètement, c'est le cache L2 sur les anciens processeurs, le cache L3 ou L4 sur les processeurs modernes. Le cache de dernier niveau a parfois des caractéristiques totalement différentes des autres caches. Par exemple, sur les processeurs multicœurs, le cache L3 n'est techniquement pas dans le cœur, mais fait partie du contrôleur mémoire ou de l'interface mémoire. Il fonctionne à une fréquence différente du processeur, n'a pas la même tension d'alimentation, etc. Il est fréquent que le cache de dernier niveau ailler à une fréquence plus basse que celle du processeur. Le Pentium 2 avait par exemple un cache de dernier niveau qui allait à la moitié de la fréquence du CPU.
Petit point terminologie avant de poursuivre : j'utiliserais parfois l'expression "niveaux de cache inférieurs". L'expression se fait quand on parle d'un niveau de cache bien précis, souvent le niveau L1. Quand on parle des "niveaux de cache inférieurs au L1", cela veut dire le cache L2 et L3, voire ceux en dessous s'ils existent. Idem pour les "niveaux de cache inférieurs au L2", qui désigne le cache L3. La mémoire RAM est souvent implicitement comptée dans cette expression, même si elle n'est pas un cache à proprement parler.
===Les caches externes : les ''Cache On A STick''===
[[File:Cache-on-a-stick module.jpg|vignette|Cache-on-a-stick module]]
Les processeurs assez anciens incorporaient un cache L1 dans le processeur, mais plaçaient un cache L2 sur la carte mère. Le cache était clippé sur un connecteur sur la carte mère, un peu comme le sont les barrettes de mémoire. On parlait alors de '''''Cache On A STick''''' (COAST). On aurait pu s'attendre à ce que de tels caches soient en DRAM, vu qu'ils sont placés sur des barrettes de RAM, mais ils étaient fabriqués en mémoire SRAM.
L'avantage d'un cache externe est que cela permettait de mettre plus de cache, à une époque où le budget en transistor était limité. Un autre avantage est que le consommateur pouvait choisir quelle quantité de cache il voulait, selon ses finances. Il était possible de laisser le processeur fonctionner soit sans mémoire cache, soit avec un cache de 256 Kibioctets, de 512 Kibioctets, etc. Il était aussi possible d'upgrader le cache si besoin.
Pour les concepteurs de processeur, c'était aussi un moyen d'économiser des transistors, pour privilégier un maximum le processeur lui-même. Par exemple, c'est la raison pour laquelle le processeur PA 7100 n’intégrait aucun cache et devait se débrouiller avec un cache externe. Derrière ce choix se cachait une volonté d'utiliser un maximum de transistors pour le processeur proprement dit. Les modèles ultérieurs, comme le PA 7300, intégraient des caches L1, mais le L2 était déporté hors du CPU. Le choix d'HP était d'avoir un unique niveau de cache, optimisé de manière à pouvoir être à la fois rapide et de grande capacité.
Les premiers processeurs avec un cache faisaient ainsi, au début des années 90. Les ''Cache on a stick'' ont été introduits sur les processeurs Motorola, et utilisés sur les IBM PC et les Macintosh de l'époque. Les ordinateurs Macintosh utilisaient de tels caches, pour la plupart des modèles. Les processeurs PA RISC de HP utilisaient eux aussi des caches externes. Les premiers processeurs x86 d'Intel avaient un cache L2 externe, de type ''Cache on a stick'', et ils vont nous intéresser dans ce qui suit.
Le Pentium 2 avait une organisation assez particulière. Le processeur était placé non pas sur un ''socket'', comme la quasi-totalité des processeurs, mais sur une carte fille qu'on clipsait sur la carte mère. La carte fille ressemblait à une barrette de RAM de grande taille, sur laquelle était soudé/connecté le processeur. Et le cache L2 était placé sur la carte fille. Ce n'était donc pas vraiment du ''cache on a stock'', mais le processeur était séparé du cache, les deux étaient dans des circuits séparés.
[[File:Intel Pentium II 400 SL357 SECC2.jpg|centre|vignette|upright=2|Pentium 2 : carte fille. Le processeur est au centre, le cache correspond aux deux circuits à droite.]]
Une différence avec les caches internes est qu'il n'y a pas de hiérarchie de cache avec les caches externes. Un cache externe est, par définition, un cache de dernier niveau. Le processeur peut avoir un cache L1, et utiliser un cache externe qui sera alors un cache L2. Ou encore, un processeur peut utiliser une hiérarchie de cache L1-L2-L3, mais avoir un cache externe, qui sera de niveau L4.
Un cache externe est connecté au bus mémoire s'il existe, au bus système sinon. Il intercepte les lectures à destination de la mémoire RAM, et y répond s'il a une copie de la donnée demandée. Les lectures étaient servies soit par le cache s'il avait une copie de la donnée, par la RAM sinon. Si le cache répondait en premier, la transaction sur le bus se terminait précocement et l'accès en RAM était abandonné. Pour les écritures, elles se font généralement à la fois dans la RAM et le cache externe.
[[File:Intel486 Иерархия памяти.png|centre|vignette|upright=2.5|Intel486 : le cache était connecté sur le bus système.]]
===Les caches mi-internes, mi-externes : les caches eDRAM===
Les '''caches eDRAM''' sont des caches assez rares, à mi-chemin entre cache internet et externe. Si je dis à mi-chemin, c'est car tout dépend de ce que veut dire "en-dehors d'un processeur". La réponse peut paraitre évidente, mais elle ne l'est pas si le processeur utilise une organisation en ''chiplet''. Pour rappel, cela veut dire que le processeur est en réalité composé de plusieurs circuits intégrés séparés, mais interconnectés et soudés sur un même PCB carré. En retirant la céramique qui recouvre le processeur, on a bien plusieurs circuits.
De rares processeurs avaient plusieurs circuits intégrés sur le même PCB : un pour le processeur proprement dit, un autre pour les interconnexions avec l'extérieur, et un pour un cache externe. Le cache était donc dans le "processeur" au sens du machin carré qu'on insère dans un ''socket'' de carte mère, mais dans un circuit intégré séparé. D'où le fait que j'ai parlé de cache à mi-chemin entre interne et externe. Un exemple est celui du cache des processeurs Intel de microarchitecture Broadwell, que nous allons voir dans la suite du chapitre.
De tels caches étaient fabriqués avec de la '''mémoire eDRAM''' (''embedded Dynamic Random Access Memory''), une forme de mémoire DRAM un peu particulière, fabriquée avec les mêmes technologies que celles utilisées pour les circuits intégrés. Ils avaient une densité intéressante, de bonnes performances, mais devaient être rafraichis comme toute mémoire DRAM. C'était les seuls caches qui n'étaient pas fabriqués avec de la mémoire SRAM, les seuls à avoir besoin de rafraichissement régulier.
Un exemple est celui du cache L4 des processeurs Intel, de microarchitecture ''Broadwell''. Ces processeurs ont une organisation en ''chiplet'' où le processeur incorpore plusieurs puces séparées :
* une puce pour le processeur proprement dit ;
* une puce nommée ''Crystal Well'' contenant 128 mébioctets de mémoire eDRAM ;
* et une puce IO pour la communication avec la RAM et la carte mère.
La puce ''Crystal Well'' était une mémoire eDRAM adressable tout ce qu'il y a de plus basique, avec cependant quelques optimisations notables. Par exemple, elle avait deux bus séparés pour l'écriture et la lecture. De plus, elle avait une organisation interne avec 128 banques, contre moins d'une dizaine pour la DDR de l'époque et environ 32 banques pour la DDR5 moderne. Elle contenait aussi quelques circuits pour gérer son rôle de mémoire cache. Ajoutons à cela que le processeur et ''Crystal Well'' n'avaient pas la même finesse de gravure ni la même technologie de fabrication.
Le cache ''Crystal Well'' était utilisable à la fois par le processeur, mais aussi par le GPU intégré au processeur. Les processeurs de l'époque intégraient déjà une carte graphique rudimentaire, peu puissante, mais suffisante pour jouer à des jeux vidéos anciens, et aussi pour afficher le bureau de Windows/Linux/MacOS, etc. Le GPU lit et écrit des données en mémoire RAM, comme le CPU. Mais en général, il n'a pas accès aux caches L1 et L2 du processeur. Le cache L4 externe pouvait mémoriser indifféremment données pour le CPU ou pour le GPU. Les performances du GPU étaient alors grandement améliorées.
: Pour plus d'informations techniques sur ce cache, voici un lien qui explique son fonctionnement : [https://chipsandcheese.com/p/broadwells-edram-vcache-before-vcache Broadwell’s eDRAM: VCache before VCache was Cool].
==L'accès au cache==
Le cache contient une copie de certaines données présentes en RAM. La copie présente dans le cache est accessible bien plus rapidement que celle en RAM, vu que le cache est plus rapide. Mais seule une petite partie de ces données sont copiées dans le cache, les autres données devant être lues ou écrites dans la RAM. Toujours est-il que le cache contient une copie des dernières données accédées par le processeur.
Une donnée est copiée dans la mémoire cache quand elle est lue ou écrite par le processeur. Le processeur conserve une copie de la donnée dans le cache après son premier accès. Les lectures/écritures suivantes se feront alors directement dans le cache. Évidemment, au fur et à mesure des accès, certaines données anciennes sont éliminées du cache pour faire de la place aux nouveaux entrants, comme nous le verrons plus tard.
[[File:Principe d'une mémoire cache.gif|centre|vignette|upright=2|Principe d'une mémoire cache.]]
La mémoire cache est invisible pour le programmeur, qui ne peut pas déceler celles-ci dans l'assembleur. Les accès mémoire se font de la même manière avec ou sans le cache. La raison à cela est que le cache intercepte les accès mémoire et y répond s'il en a la capacité. Par exemple, si le cache intercepte une lecture à une adresse et que le contenu de cette adresse est dans le cache, le cache va outrepasser la mémoire RAM et la donnée sera envoyée par le cache au lieu d'être lue en RAM. par contre, si un accès se fait à une adresse pour laquelle le cache n'a pas la donnée, alors l'accès mémoire sera effectué par la RAM de la même manière que si le cache n'était pas là.
[[File:Accès au cache.png|centre|vignette|upright=2|Accès au cache]]
===Les succès et défauts de caches===
Tout accès mémoire est intercepté par le cache, qui vérifie si la donnée demandée est présente ou non dans le cache. Si la donnée voulue est présente dans le cache, on a un '''succès de cache''' (''cache hit'') et on accède à la donnée depuis le cache. Sinon, c'est un '''défaut de cache''' (''cache miss'') et on est obligé d’accéder à la RAM.
Les défauts de cache peuvent avoir plusieurs origines. Tout ce qu'il faut savoir est que lorsque le processeur accède à une donnée ou une instruction pour la première fois, il la place dans la mémoire cache car elle a de bonnes chances d'être réutilisée prochainement. La raison à cela est qu'un programme a tendance à réutiliser les instructions et données qui ont été accédées dans le passé : c'est le ''principe de localité temporelle''. Bien évidement, cela dépend du programme, de la façon dont celui-ci est programmé et accède à ses données et du traitement qu'il fait, mais c'est souvent vrai en général.
La première cause des défauts de cache est liée à la taille du cache. À force de charger des données/instructions dans le cache, le cache fini par être trop petit pour conserver les anciennes données. Le cache doit bien finir par faire de la place en supprimant les anciennes données, qui ont peu de chances d'être réutilisées. Ces anciennes données éliminées du cache peuvent cependant être accédées plus tard. Tout prochain accès à cette donnée mènera à un cache miss. C'est ce qu'on appelle un ''Capacity Cache Miss'', ou encore '''défaut de capacité'''. Les seules solutions pour éviter cela consistent à augmenter la taille du cache ou à optimiser le programme exécuté (voir plus bas).
Une autre raison pour un défaut est donc la suivante. Lorsqu'on exécute à une instruction ou qu'on accède à donnée pour la première fois, celle-ci n'a pas encore été chargée dans le cache. Le défaut de cache est inévitable : ce genre de cache miss s'appelle un ''Cold Miss'', ou encore un '''défaut à froid'''. De tels défauts sont presque impossibles à éliminer, sauf à utiliser des techniques de préchargement qui chargent à l'avance des données potentiellement utiles.
Ces méthodes de préchargement se basent sur le principe de localité spatiale, à savoir le fait que les programmes ont tendance à accéder à des données proches en mémoire. Pour donner un exemple, les instructions d'un programme sont placées en mémoire dans l’ordre dans lequel on les exécute : la prochaine instruction à exécuter est souvent placée juste après l'instruction en cours (sauf avec les branchements). Quand on accède à une donnée ou une instruction, le cache peut précharger les données adjacentes pour en profiter. Nous parlerons de ces techniques de préchargement dans un chapitre dédié, vers la fin du cours.
===Le fonctionnement du cache, vu du processeur===
Vu du processeur, le cache prend en entrée toutes les informations nécessaires pour effectuer un accès mémoire : des signaux de commande, une adresse et la donnée à écrire si besoin. Tout cela est passé en entrée du cache, celui-ci répondant aux accès mémoire via divers bits de contrôles, que le processeur peut lire à souhait. Le cache fournit aussi la donnée à lire, pour les lectures, sur une sortie, connectée directement au bus mémoire/processeur. Globalement, le cache a une capacité limitée, mais il prend en entrée des adresses complètes. Par exemple, sur un processeur 64 bits, le cache prend en entrée des adresses de 64 bits (sauf si optimisations), même si le cache en question ne fait que quelques mébioctets.
Les caches sont souvent des mémoires multiports, surtout sur les processeurs récents. Les caches simple port sont rares, mêmes s'ils existent et ont existé par le passé. les caches double port sont eux plus fréquents, et ont généralement un port d'écriture séparé du port de lecture. Mais les caches récents ont plusieurs ports de lecture/écriture et sont capables de gérer plusieurs accès mémoire simultanés.
Les données présentes dans le cache sont (pré)chargées depuis la mémoire, ce qui fait que toute donnée dans le cache est la copie d'une donnée en mémoire RAM. Le cache doit faire la correspondance entre une donnée du cache et l'adresse mémoire correspondante. Du point de vue du fonctionnement, on peut voir le cache comme une sorte de table de correspondance, qui mémorise des données, chacune étant associée à son adresse mémoire. Le cache contient donc des paires adresse-ligne de cache qui lui permettent de faire le lien entre ligne de cache et adresse. Cela vaut du point de vue du processeur, le fonctionnement interne du cache étant quelque peu différent selon le cache. Il existe des caches dont le fonctionnement interne est bien celui d'une table de correspondance matérielle, d'autres qui sont beaucoup plus optimisés.
[[File:Fonctionnement d'une mémoire associative à correspondance.png|centre|vignette|upright=2|Fonctionnement simplifié d'une mémoire cache : les adresses sont dans la colonne de gauche, les données sont dans la colonne de droite. On voit qu'on envoie l'adresse au cache, que celui-ci répond en renvoyant la donnée associée.]]
===La situation avec une hiérarchie de caches===
Un accès mémoire dans une hiérarchie de cache fonctionne comme suit : on commence par vérifier si la donnée recherchée est dans le cache le plus rapide, à savoir le cache L1. Si c'est le cas, on la charge depuis ce cache directement. Si elle n’y est pas, on vérifie si elle est dans le cache de niveau supérieur, le cache L2. Et rebelote ! Si elle n'y est pas, on vérifie le cache du niveau supérieur. Et on répète cette opération, jusqu’à avoir vérifié tous les caches. Si la donnée n'est dans aucun cache, on doit alors aller chercher la donnée en mémoire.
[[File:Hiérarchie de caches.png|centre|vignette|upright=2|Hiérarchie de caches]]
Quelques processeurs ajoutent un micro-cache L0, appelé le '''''filter cache''''', avant le cache L1. Le cache L0 contient à peine 8-16 lignes de cache maximum. Son existence n'est pas justifiée par une question de performance, même si sa consultation est très rapide. En réalité, il vise à réduire la consommation d'énergie du cache L1. Un succès dans le ''filter cache'' fait qu'on n'a pas à accéder à un cache L1 plus gros, dont l'accès consommerait plus d'électricité. Accéder à un cache L0 de quelques lignes de cache ne consomme quasiment rien, mais économise beaucoup en cas de succès de cache.
Le cache L1 répond généralement en un ou deux cycles d'horloge, alors que le cache L0 répond tellement rapidement que ce n'est même pas la peine d'en parler, c'est une affaire d'une fraction de nanosecondes, tout au plus. Le cache L0 indique un succès ou défaut de cache tellement rapidement que le cache L1 a tout le temps de faire un accès dans le même cycle d'horloge. D'oùù le fait que le cache L0 n'a aucun intérêt en matière de performance.
==La performance des mémoires caches==
L'analyse de la performance des mémoires caches est plus riche pour celle des autres mémoires. Sa performance dépend de beaucoup de paramètres, mais on peut cependant citer les principaux. Les deux premiers sont tout bonnement sa latence et son débit, comme pour n'importe quelle autre mémoire. La latence est plus importante que son débit, car le processeur est généralement plus rapide que le cache et qu'il n'aime pas attendre. Mais le critère le plus important pour un cache est sa capacité à empêcher des accès mémoire, son efficacité. Plus les accès mémoire sont servis par le cache au lieu de la RAM, meilleures seront les performances. Pour résumer, la performance d'un cache est surtout caractérisée par deux métriques : le taux de défaut, qui correspond à l’efficacité du cache, et la latence du cache.
===Le taux de succès/défaut===
Le '''taux de succès''' (hit ratio) est un premier indicateur des performances du cache, mais un indicateur assez imparfait. C'est le pourcentage d'accès mémoire qui ne déclenchent pas de défaut de cache. Plus il est élevé, plus le processeur accède au cache à la place de la RAM et plus le cache est efficace. Certains chercheurs préfèrent utiliser le '''taux de défauts''', à savoir le pourcentage d'accès mémoire qui entraînent un défaut de cache. Plus il est bas, meilleures sont les performances. Le taux de défaut est relié au taux de succès par l'équation <math>T_\text{succes} = 1 - T_\text{defaut}</math>. Par définition, il est égal à :
: <math>\text{Taux de défauts de cache} = \frac{\text{Nombre de défauts de cache}}{\text{Nombre d’accès mémoires}}</math>
Plutôt que de comparer le nombre de défauts/succès de cache au nombre d'accès mémoire, il est aussi possible de diviser le nombre de défauts par le nombre total d'instructions. On obtient alors le '''taux de défauts/succès par instruction''', une autre métrique utile. Par définition, elle est égale à :
: <math>\text{Taux de défauts par instruction} = \frac{\text{Nombre de défauts de cache}}{\text{Nombre d'instructions}} = \text{Taux de défauts de cache} \times \frac{\text{Nombre d’accès mémoires}}{\text{Nombre d'instructions}}</math>
Si certains défauts de cache sont inévitables quel que soit le cache, comme les défauts à froids, mentionnés plus haut, d'autres défauts peuvent être évités en augmentant la capacité du cache. C'est le cas des défauts de capacité qui sont causés par un accès à une donnée qui a été éliminée du cache faute de place. Plus le cache est gros, moins il a de chances d'être rempli, moins il doit rapatrier de données, plus son taux de succès augmente. Mais nous reviendrons sur le lien entre taille du cache et taux de défaut plus bas.
Le taux de succès ne dépend pas que du cache, mais aussi de la conception des programmes exécutés. Une bonne utilisation du cache (ainsi que de la mémoire virtuelle) repose sur le programmeur qui doit prendre en compte les principes de localités dès la conception de ses programmes.
Par exemple, un programmeur peut parfaitement tenir compte du cache au niveau de son algorithme : on peut citer l'existence des algorithmes ''cache oblivious'', qui sont conçus pour être optimaux quelle que soit la taille du cache. Le programmeur peut aussi choisir ses structures de données de manière à améliorer la localité. Par exemple, un tableau est une structure de donnée respectant le principe de localité spatiale, tandis qu'une liste chaînée ou un arbre n'en sont pas (bien qu'on puisse les implémenter de façon à limiter la casse). D'autres optimisations sont parfois possibles : par exemple, le sens de parcours d'un tableau multidimensionnel peut faire une grosse différence. Cela permet des gains très intéressants pouvant se mesurer avec des nombres à deux ou trois chiffres.
Je vous recommande, si vous êtes programmeur, de vous renseigner le plus possible sur les optimisations de code ou algorithmiques qui concernent le cache : il vous suffira de chercher sur Google. Il y a une citation qui résume bien cela, prononcée par un certain Terje Mathisen. Si vous ne le connaissez pas, cet homme est un vieux programmeur (du temps durant lequel on codait encore en assembleur), grand gourou de l’optimisation, qui a notamment travaillé sur le moteur de Quake 3 Arena.
{{BlocCitation|Almost all programming can be viewed as an exercise in caching.|auteur=Terje Mathisen}}
===La latence moyenne d'un cache===
Le temps mis pour lire ou écrire une donnée varie en présence d'un cache. Certaines lectures/écritures vont atterrir directement dans le cache (succès) tandis que d'autres devront aller chercher leur contenu en mémoire RAM (défaut de cache). Dans tous les cas, qu'il y ait défaut ou non, le cache sera consulté et mettra un certain temps à répondre, égal au temps de latence du cache. Tous les accès mémoires auront donc une durée au moins égale au temps de latence du cache, qui sera notée <math>T_c</math>.
En cas de succès, le cache aura effectué la lecture ou l'écriture, et aucune action supplémentaire n'est requise. Ce qui n'est pas le cas en cas de défaut : le processeur devra aller lire/écrire la donnée en RAM, ce qui prend un temps supplémentaire égal au temps de latence de la mémoire RAM. Un défaut ajoute donc un temps, une pénalité, à l'accès mémoire. Dans ce qui suivra, le temps d'accès à la RAM sera noté <math>T_m</math>. Fort de ces informations, nous pouvons calculer le temps de latence moyen d'un accès mémoire, qui est la somme du temps d'accès au cache (pour tous les accès mémoire), multiplié par le temps lié aux défauts. On a alors :
: <math>T = T_c + \text{Taux de défaut} \times T_m</math>
On voit que plus le taux de succès est élevé, plus le temps de latence moyen sera bas, et inversement. Ce qui explique l'influence du taux de succès sur les performances du cache, influence assez importante sur les processeurs actuels. De nos jours, le temps que passe le processeur dans les défauts de cache devient de plus en plus un problème au fil du temps, et gérer correctement le cache est une nécessité, particulièrement sur les processeurs multi-cœurs.
Il faut dire que la différence de vitesse entre processeur et mémoire est tellement importante que les défauts de cache sont très lents : alors qu'un succès de cache va prendre entre 1 et 5 cycles d'horloge, un cache miss fera plus dans les 400-1000 cycles d'horloge. Tout ce temps sera du temps de perdu que le processeur aura du mal à mitiger. Autant dire que réduire les défauts de cache est beaucoup plus efficace que d'optimiser les calculs effectués par le processeur (erreur courante chez de nombreux programmeurs, notamment débutants).
===L'impact de la taille du cache sur le taux de défaut et la latence===
Il y a un lien entre taille du cache, taux de défaut, débit binaire et latence moyenne. Globalement, plus un cache est gros, plus il est lent. Simple application de la notion de hiérarchie mémoire vue il y a quelques chapitres. Les raisons à cela sont nombreuses, mais nous ne pouvons pas les aborder ici, car il faudrait que nous sachions comment fonctionne un cache et ce qu'il y a à l'intérieur, ce qui sera vu dans la suite du chapitre. Toujours est-il que la latence moyenne d'un cache assez gros est assez importante. De même, le débit binaire d'un cache diminue avec sa taille, mais dans une moindre mesure. Les petits caches ont donc un gros débit binaire et une faible latence, alors que c'est l'inverse pour les gros caches.
Une grande capacité de cache améliore le taux de succès, mais cela se fait au détriment de son temps de latence et de son débit, ce qui fait qu'il y a un compromis assez difficile à trouver entre taille du cache, latence et débit. Il peut arriver qu'augmenter la taille du cache augmente son temps d'accès au point d’entraîner une baisse de performance. Par exemple, les processeurs Nehalem d'Intel ont vus leurs performances dans certains jeux vidéos baisser de 2 à 3 %, malgré de nombreuses améliorations architecturales, parce que la latence du cache L1 avait augmentée de 2 cycles d'horloge.
Pour avoir une petite idée du compromis à faire, regardons la relation entre taille du cache et taux de défaut. Il existe une relation approximative entre ces deux variables, appelée la '''loi de puissance des défauts de cache'''. Elle donne le nombre total de défaut de cache en fonction de la taille du cache et de deux autres paramètres. Voici cette loi :
: <math>\text{Taux de défauts de cache} \approx K \times \text{Taille du cache}^{- \alpha }</math>, avec <math>K</math> et <math>\alpha</math> deux coefficients qui dépendent du programme exécuté.
Le coefficient <math>\alpha</math> est généralement compris entre 0.3 et 0.7, guère plus, et varie suivant le programme exécuté. Précisons que cette loi ne marche que si le cache est assez petit par rapport aux données à utiliser. Pour un cache assez gros et des données très petites, la relation précédente est mise en défaut. Pour s'en rendre compte, il suffit d'étudier le cas extrême où toutes les données nécessaires tiennent dans le cache. Dans ce cas, il n'y a qu'un nombre fixe de défauts de cache : autant qu'il faut charger de données dans le cache. Le nombre de défauts de cache observé dans cette situation n'est autre que le coefficient <math>K</math> de la situation précédente, mais il n'y a aucune dépendance entre taux de défaut et taille du cache.
L'origine de cette relation s'explique quand on regarde combien de fois chaque donnée est réutilisée lors de l’exécution d'un programme. La plupart des données finissent par être ré-accédées à un moment ou un autre et il se passe un certain temps entre deux accès à une même donnée. Sur la plupart des programmes, les observations montrent que beaucoup de réutilisations de données se font après un temps très court et qu'inversement, peu de ré-accès se font après un temps inter-accès long. Si on compte le nombre de réutilisation qui ont un temps inter-accès bien précis, on retrouve une loi de puissance identique à celle vue précédemment :
: <math>\text{Nombre de réaccès avec un temps inter-accès égal à t} \approx K \times t^{- \beta}</math>, avec t le temps moyen entre deux réutilisations.
Le coefficient <math>\beta</math> est ici compris entre 1.7 et 1.3. De manière générale, les coefficients <math>\alpha</math> et <math>\beta</math> sont reliés par la relation <math>\alpha = 1 - \beta</math>, ce qui montre qu'il y a un lien entre les deux relations.
Précisons cependant que la loi de puissance précédente ne vaut pas pour tous les programmes informatiques, mais seulement pour la plupart d’entre eux. Il n'est pas rare de trouver quelques programmes pour lesquels les accès aux données sont relativement prédictibles et où une bonne optimisation du code fait que la loi de puissance précédente n'est pas valide.
La loi de puissance des défauts de cache peut se démontrer à partir de la relation précédente, sous certaines hypothèses. Si un suppose que le cache est assez petit par rapport aux données, alors les deux relations sont équivalentes. L'idée qui se cache derrière la démonstration est que si le temps entre deux accès à une donnée est trop long, alors la donnée accédée aura plus de chance d'être rapatriée en RAM, ce qui cause un défaut de cache. La chance de rapatriement dépend de la taille du cache, un cache plus gros peut conserver plus de données et a donc un temps avant rapatriement plus long.
==Les lignes de cache et leurs tags==
Du point de vue du processeur, les lectures et écritures se font mot mémoire par mot mémoire. Un processeur avec des entiers de 64 bits recoit des données de 64 bits de la part du cache, et y écrit des mots de 64 bits. Mais quand on regarde comment sont stockées les données à l'intérieur du cache, les choses sont différentes.
===Les lignes de cache===
Les données sont mémorisées dans le cache par blocs de plusieurs bytes, d'environ 64 à 256 octets chacun, qui portent le nom de '''lignes de cache'''. Les lignes de cache sont l'unité de stockage que l'on trouve à l'intérieur du cache, mais elles servent aussi d'unité de transaction avec la mémoire RAM. Sur les caches actuels, on transfère les données entre le cache et la RAM ligne de cache par ligne de cache, dans la limite de la taille du bus mémoire. Mais d'autres caches plus anciens permettaient de faire des transferts plus fins. C’est-à-dire qu'on pouvait mettre à jour quelques octets dans une ligne de cache sans avoir à la recopier intégralement depuis ou dans la mémoire RAM.
En théorie, on pourrait imaginer des caches où les données sont stockées différemment, où l'unité serait le mot mémoire, par exemple. Par exemple, sur un processeur 64 bits, on aurait une ligne de cache de 64 bits. Cela aurait l'avantage de la simplicité : les transferts entre le processeur et la mémoire serait de même taille, l'intérieur du cache ressemblerait à son interface montrée au processeur. Mais cela aurait quelques défauts qui sont compensés par l'organisation en lignes de cache de grande taille.
Le premier avantage des lignes de cache est lié à la localité spatiale, la tendance qu'on les programmes à accéder à des données proches les unes des autres. Des accès mémoires consécutifs ont tendance à se faire à des adresses proches, qui ont de bonnes chances d'être dans la même ligne de cache. Et des accès consécutifs à une même ligne de cache sont plus rapides que des accès à deux lignes distinctes. Une autre raison est tout simplement que cela simplifie considérablement la circuiterie du cache. Pour une capacité identique, il vaut mieux avoir peu de lignes de cache assez grosses, que beaucoup de petites lignes de cache. La raison est que les circuits du cache, comme le décodeur, l'encodeur et autres, ont moins de sorties et sont donc plus simples.
===L'alignement des lignes de cache===
Les lignes de cache sont des blocs de plusieurs dizaines à centaines de bytes, dont la taille est presque toujours une puissance de deux. De plus, les lignes de cache sont alignées en mémoire. Nous avions déjà abordé la notion d'alignement mémoire dans un chapitre précédent, mais le concept d'alignement des lignes de cache est quelque peu différent. Quand nous avions parlé d'alignement auparavant, il s'agissait de l'alignement des données manipulées par le processeur, qui faisait partie du jeu d'instruction du processeur. Ici, nous parlons d'un alignement totalement différent, invisible pour le programmeur, sans lien avec le jeu d’instruction. Voyons de quoi il retourne.
Concrètement, cela veut dire que du point de vue du cache, la RAM est découpée en blocs qui font la même taille qu'une ligne de cache, aux positions prédéterminées, sans recouvrement entre les blocs. Par exemple, pour un cache dont les lignes de cache font 256 octets, le premier bloc est à l'adresse 0, le second est 256 octets plus loin, c'est à dire à l'adresse 256, le troisième à l'adresse 512, la quatrième à l'adresse 768, etc. Une ligne de cache de 256 octets contiendra une donnée provenant d'un bloc de RAM de 256 octets, dont l'adresse est systématiquement un multiple de 256. Il n'est pas possible qu'une ligne de cache contienne un bloc de 256 octets dont l'adresse du premier octet serait l'adresse 64, ou l'adresse 32, par exemple. En clair, les adresses de ces blocs sont des multiples de la taille de la ligne de cache, de la taille des blocs. Cela rappelle les contraintes d'alignement vues dans le chapitre "Le modèle mémoire : alignement et boutisme", mais appliquées aux lignes de cache.
L'alignement des lignes de cache a des conséquences pratiques pour la conception des caches. Notons qu'il est en théorie possible d'avoir des caches dont les lignes de cache ne sont pas alignées, mais cela poserait des problèmes majeurs. Il serait en effet possible qu'une donnée soit présente dans deux lignes de cache à la fois. Par exemple, prenons le cas où une ligne de cache de 256 commence à l'adresse 64 et une autre ligne de cache commence à l'adresse 0. L'adresse 128 serait dans les deux lignes de cache ! Et cela poserait des problèmes lors des lectures, mais encore plus lors des écritures. C'est pour éviter ce genre de problèmes que les lignes de cache sont alignées avec la mémoire RAM dans tous les caches existants.
L'alignement des lignes de cache est une chose que les programmeurs doivent parfois prendre en compte quand ils écrivent du code ultra-optimisé, destiné à des programmes demandant des performances extrêmes. Il arrive que les contraintes d'alignement posent des problèmes. Nous avions vu dans le chapitre sur le boutisme et l'alignement qu'il valait mieux gérer l'alignement des variables des structures de données, pour éviter les accès non-alignés avec le bus mémoire. La même chose est possible, mais pour l'alignement avec des lignes de cache. Si une données, comme un entier ou un flottant, est à cheval sur deux lignes de cache, elle sera chargée en deux fois, en deux lectures. idem pour les écritures.
Typiquement, l'idéal est que, pour une structure de donnée, on puisse en mettre un nombre entier dans une ligne de cache. Ou alors, si la structure est vraiment grande, que celle-ci occupe un nombre entier de lignes de cache. Si ce n'est pas le cas, il y a un risque d'accès non-alignés, c'est à dire qu'une structure se retrouve à cheval sur deux lignes de cache, avec les défauts que cela implique.
===Le tag d'une ligne de cache===
Plus haut, nous avions dit que le cache mémorise, pour chaque ligne de cache, l'adresse RAM associée. Le cache contient donc des paires adresse-ligne de cache qui lui permettent de faire le lien entre ligne de cache et adresse. Mais du fait de l'organisation du cache en lignes de cache de grande taille, qui sont de plus alignées en mémoire, il faut nuancer cette affirmation. Le cache ne mémorise pas la totalité de l'adresse, ce qui serait inutile. L'alignement des lignes de cache en RAM fait que les bits de poids faible de l'adresse ne sont pas à prendre en compte pour l'association adresse-ligne de cache. Dans ces conditions, on mémorise seulement la partie utile de l'adresse mémoire correspondante, qui forme ce qu'on appelle le '''tag'''.
Le reste de l'adresse indique quelle est la position de la donnée dans la ligne de cache. Par exemple, prenons le cas où le processeur gère des nombres entiers de 64 bits (8 octets) et des lignes de cache de 128 octets : chaque ligne de cache contient donc 16 entiers. Si le processeur veut lire ou écrire un entier bien précis, il doit préciser sa place dans la ligne de cache. Et ce sont les bits de l'adresse mémoire non-inclus dans le cache qui permettent de faire ça. En clair, une adresse mémoire à lire/écrire est interprété par le cache comme la concaténation d'un tag et de la position de la donnée dans la ligne de cache correspondante.
[[File:Adressage d'un cache totalement associatif.png|centre|vignette|upright=2|Adressage d'un cache totalement associatif]]
Le cache est donc une grande table de correspondance entre tags et lignes de cache. Lors d'un accès mémoire, le cache extrait le tag de l'adresse à lire ou écrire, et le compare avec les tags de chaque ligne de cache. Si une ligne contient ce tag, alors c'est que cette ligne correspond à l'adresse, et c'est un défaut de cache sinon. Lors d'un succès de cache, la ligne de cache est lue depuis le cache et envoyée à un multiplexeur qui sélectionne la donnée à lire dans la ligne de cache. Le fonctionnement est similaire pour une écriture : la donnée à écrire passe dans un démultiplexeur, qui envoie la donnée au bon endroit dans la ligne de cache sélectionnée.
[[File:Lecture d'une donnée dans un cache CPU, organisé en lignes de cache.png|centre|vignette|upright=2|Lecture d'une donnée dans un cache CPU, organisé en lignes de cache.]]
===Le contenu d'une ligne de cache===
Dans ce qui va suivre, nous allons considérer que chaque ligne de cache mémorise son tag, les données de la ligne de cache proprement dit, et quelques bits de contrôle annexes qui varient suivant le cache considéré.
[[File:Tag d'une ligne de cache.png|centre|vignette|upright=2|Tag d'une ligne de cache.]]
Les caches modernes incluent de nombreux bits de contrôle, mais deux d'entre eux sont communs à presque tous les caches modernes : le bit ''Dirty'' et le bit ''Valid''.
Le '''bit ''Valid''''' indique si la ligne de cache contient des données valides ou non. Si le bit ''Valid'' est à 0, la ligne de cache est en état valide, à savoir qu'elle contient des données et n'est pas vide. Par contre, si ce bit est à 1, la ligne de cache est invalide et son contenu ne peut pas être lu ou écrit. L'utilité de ce bit est qu'il permet d'effacer une ligne de cache très rapidement : il suffit de mettre ce bit à 0. Il existe des situations où le cache doit être effacé, on dit alors qu'il est invalidé. Une section de ce chapitre sera dédié à l'invalidation du cache.
Le '''bit ''Dirty''''' indique qu'une ligne de cache a été modifiée. Par modifiée, on veut dire que le processeur a écrit dedans, qu'il a modifié la ligne de cache. Mais attention : si la donnée a été modifiée dans le cache, la modification n'est pas forcément propagée en mémoire RAM. Le bit ''dirty'' indique si c'est le cas, si l'écriture a été propagée en mémoire RAM. Il précise que la ligne de cache contient des données modifiées, alors que la RAM a des données initiales non-modifiées. Une ligne de cache avec un bit ''dirty'' à 1 est dite ''dirty'', par métonymie. Nous verrons cela en détail dans la section sur les caches ''write-back'' et ''write-through''.
Les caches modernes ajoutent des '''bits de détection/correction d'erreur''' dans les bits de contrôle. Pour rappel, les codes de détection/correction d'erreur permettent de se prémunir contre des erreurs matérielles, qui corrompent les données stockées dans une mémoire, ici une mémoire cache. Ils ajoutent un ou plusieurs bits à la ligne de cache, dans les bits de contrôle. Nous reviendrons dessus dans une section ultérieur de ce chapitre.
Sur certains caches assez anciens, on pouvait transférer les lignes de caches morceaux par morceaux. Ces caches avaient des lignes de cache divisées en sous-secteurs, ces sous-secteurs étant des morceaux de ligne de cache qu'on pouvait charger indépendamment les uns des autres (mais qui sont consécutifs en RAM). Chaque secteur avait ses propres bits de contrôle, mais le tag était commun à tous les secteurs.
[[File:Cache à secteurs.png|centre|vignette|upright=2.5|Cache à secteurs.]]
: Dans ce qui va suivre, le terme "ligne de cache" désignera soit un bloc de données copiées depuis la RAM d'une taille de 64/128/256/... octets, soit la concaténation de ces données avec le tag et des bits de contrôle. Les deux définitions ne sont pas équivalentes, mais l'usage a entériné cet abus de langage. Et il faut avouer que cela rend les explications du chapitre plus simples.
==Les instructions de contrôle du cache==
Plus haut, nous avions dit que le cache est totalement transparent du point de vue du programmeur. Le cache contient des copies de données en RAM, le programmeur n'a rien à faire pour utiliser le cache correctement. Mais la réalité est que pour des raisons diverses, des processeurs incorporent des '''instructions de contrôle du cache'''. Il s'agit d’instructions qui agissent sur le contenu du cache. Elles existent pour des raisons diverses qu'on détaillera plus bas, mais il s'agit globalement d'une question de performances ou de nécessité pour le système d'exploitation.
===Les instructions de préchargement===
La première instruction de contrôle du cache est une '''instruction de préchargement''', qui demande à charger un bloc de données dans le cache. Elle prend en opérande une adresse mémoire, et le contenu de cette adresse est chargé dans une ligne de cache. Bien sûr, des contraintes d'alignement sont à prendre en compte : on charge un bloc de la même taille qu'une ligne de cache, aligné en mémoire sur la taille du bloc, qui contient l'adresse.
L'instruction de préchargement n'est utile que si l'instruction est exécutée bien avant que la donnée ne soit utilisée/lue/écrite. Cela permet de charger une donnée dans le cache à l'avance, d'où le nom de préchargement donné à cette technique. Mais les processeurs modernes gérent des techniques de préchargement automatique, qui ne requièrent pas d'instructions de préchargement. Le préchargement automatique et les instructions de préchargement sont deux solutions complémentaires, mais qui peuvent se marcher sur les pieds. Nous en reparlerons dans le prochain chapitre, qui sera dédié au préchargement automatique.
Il faut noter que les instructions de préchargement peuvent être ignorées par le processeur. Sous certaines conditions, le processeur peut décider que l'instruction de préchargement ne sera pas exécutée. Par exemple, il ne va pas précharger une donnée déjà présente dans le cache. Ou encore, si le bus mémoire est occupé, il ne va pas exécuter le préchargement, par manque de ressources matérielles.
===Les instructions d'invalidation et de ''flush''===
Les instructions ''flush'' regroupent deux types d'instructions qui sont souvent utilisées en même temps. Il s'agit des instructions d'invalidation et de nettoyage (''clean''). Les deux termes proviennent de la terminologie ARM, il n'y a pas de terminologie standardisé pour les noms de ces instructions.
Dans les grandes lignes, elles permettent de vider le cache, à savoir de rapatrier son contenu en RAM et de réinitialiser le cache à zéro. Elles sont utilisées par le système d'exploitation lors des commutations de contexte, à savoir quand on passe d'un programme à un autre. Elles sont aussi utilisées lors des appels systèmes et routines d'interruption/exception. L'idée est de vider le cache avant d'exécuter un nouveau programme ou une nouvelle routine. Le nouveau programme aura accès à un cache tout propre, les données de l'ancien programme auront été retirée du cache.
Les '''instructions ''clean''''' recopient le contenu de la ligne de cache en RAM. Elles forcent la recopie immédiatement de la ligne de cache en mémoire RAM. Pour faire leur travail, elle vérifient si la ligne de cache a été modifiée, avant de la recopier en RAM. Et pour cela, ils vérifient le bit de contrôle ''dirty'', qui est mis à 1 après une première écriture. Si ce bit est à 0, alors pas besoin de recopier la ligne de cache : elle n'a pas été modifiée, la RAM a déjà la bonne copie. Mais s'il est à 1, le cache et la RAM n'ont pas le même contenu, la recopie s'exécute.
Les '''instructions d'invalidation''' permettent d'invalider une ligne de cache, à savoir d'effacer son contenu. Nous verrons à quoi servent ces instructions dans la section sur les changement de processus. Invalider une ligne de cache est une opération optimisée : le cache n'est en réalité pas réellement effacé. À la place, le bit ''Valid'' de chaque ligne de cache est juste mis à 0. Il faut noter que l'invalidation efface les lignes de cache sans se préoccuper de leur contenu. Elle se moque qu'une ligne de cache contienne une donnée modifiée, ''dirty'' ou quoique ce soit : la ligne de cache est effacée, point.
Il est possible d'invalider une ligne de cache en fournissant une adresse mémoire, mais il est aussi possible d'invalider le cache tout entier. Le choix entre les deux dépend du mode d'adressage de l'instruction d'invalidation. Parfois, il existe une instruction séparée pour invalider tout le cache, et une autre pour invalider une ligne de cache bien précise. Des instructions séparées sont parfois disponibles pour invalider les caches de données et d'instructions, parfois aussi la TLB (un cache qu'on verra dans quelques chapitres). Il est possible de n'invalider que le cache L1, voire le cache L2.
Il faut noter que l'invalidation efface tout le cache, mais ne se préoccupe pas de vérifier si les données ont été modifiées dans le cache. Pour certains caches, comme le cache d'instruction, ce n'est pas un problème, vu qu'il est en "lecture seule". Mais pour les caches de données, les données modifiées sont perdues en cas d'invalidation. Heureusement, il existe des instructions d'invalidation qui fusionnent une instruction ''clean'' et une instruction d'invalidation. Il s'agit d''''instructions d'invalidation spéciales'''.
===Les instructions d'optimisation : instructions non-temporelles et écritures optimisées===
Les '''instructions mémoire non-temporelles''' contournent complètement le cache. Par exemple, une lecture peut lire une donnée, mais celle-ci ne sera pas chargée dans le cache, elle passe directement de la RAM vers les registres. Une section entière de ce chapitre sera dédiée au contournement du cache, à savoir aux situations où les accès mémoire doivent passer directement du processeur à la RAM sans passer par le cache.
D'autres instructions assez rares incorporent des indications pour le cache. Par exemple, l'instruction ''load last'' des processeurs POWER PC implique que la donnée ne sera utilisée qu'une seule fois. Elle est donc chargée dans le cache, mais la ligne de cache est configurée de manière à être remplacée très rapidement, typiquement avec une valeur de LRU/LFU adéquate. La donnée est bien chargée dans le cache, au cas où elle doive être relue suite à une mauvaise prédiction de branchement ou autre, chose qu'une lecture non-temporelle (qui contourne le cache) ne fait pas. Des indications de ce type sont appelées des '''''cache hint'''''.
L''''instruction ''flush''''' permet de préciser qu'une ligne de cache contient une donnée inutile, qui ne sera pas réutilisée par le programme. Pas besoin de la conserver dans le cache, elle peut laisser sa place à des données plus utiles. Or, sans indication, les algorithmes de remplacement d'une ligne de cache risquent de conserver cette donnée trop longtemps, ce qui entraine une certaine pollution du cache par des données inutiles.
Une autre instruction est elle beaucoup plus importante : celle de '''pré-allocation sur écriture'''. Elle sert dans le cas où une ligne de cache est complétement écrite. Par exemple, imaginons qu'on veuille écrire dans une portion de mémoire. Si celle-ci n'est pas dans le cache, le processeur va charger une ligne de cache complète depuis la RAM, écrire dans la ligne de cache, puis recopier la ligne de cache modifiée en mémoire RAM. Une écriture en RAM demande donc de faire une lecture et une écriture. Mais les instructions de pré-allocation sur écriture permettent de prévenir qu'une ligne de cache sera intégralement écrite, et qu'il n'y a donc pas besoin de lire celle-ci depuis la RAM. Notons que l'instruction d'écriture qui suit n'est pas une écriture non-temporelle, vu que les données sont écrites dans la ligne de cache, qui est ensuite envoyée en mémoire RAM dès que nécessaire. De plus, les données écrites peuvent ensuite être relue depuis le cache si nécessaire.
Enfin, certains processeurs MIPS incorporent une instruction pour modifier le tag d'une ligne de cache. Elles servent à optimiser les copies mémoire, à savoir quand on copie un bloc de données d'un endroit à un autre. L'idée est de charger le bloc de données dans le cache avec une instruction LOAD/PREFETCH, de modifier le tag pour qu'il pointe vers l'adresse à écrire, et de laisser faire le cache pour que l'écriture se fasse en RAM. Mais les contraintes pour utiliser cette instruction sont assez drastiques : les données doivent être alignées sur la taille d'une ligne de cache, le bloc de départ et d'arrivée (l'original versus la copie) ne doivent pas se recouvrir, etc.
==L'associativité des caches et leur adressage implicite==
Lorsqu'on souhaite accéder au cache, il faut trouver quelle est la ligne de cache dont le tag correspond à l'adresse demandée. On peut classifier les caches selon leur stratégie de recherche de la ligne correspondante en trois types de caches : totalement associatifs, directement adressés (''direct mapped'') et associatifs par voie.
===Les caches totalement associatifs===
Avec les caches totalement associatifs, toute donnée chargée depuis la mémoire peut être placée dans n'importe quelle ligne de cache, sans aucune restriction. Ces caches ont un taux de succès très élevé, quand on les compare aux autres caches.
[[File:Cache totalement associatif.png|centre|vignette|upright=2|Cache totalement associatif.]]
Concevoir un cache totalement associatif peut se faire de deux grandes manières différentes. La première consiste tout simplement à combiner une mémoire associative avec une mémoire RAM, en ajoutant éventuellement quelques circuits annexes. La mémoire associative mémorise les tags, alors que la mémoire RAM mémorise les données de la ligne de cache, éventuellement avec quelques bits de contrôle. La ligne de cache est stockée à une adresse A dans la mémoire RAM et son tag est stocké à la même adresse, mais dans la mémoire CAM. Ce faisant, quand on envoie le tag à la mémoire CAM, elle renvoie l'adresse de la ligne de cache dans la mémoire RAM. Cette adresse est alors envoyée directement sur le bus d'adresse de la RAM, et la lecture est effectuée automatiquement. Il faut ajouter quelques circuits annexes pour garantir que les écritures se passent correctement dans les deux mémoires, mais rien de bien terrible.
[[File:Cache fabriqué avec une mémoire associative et une RAM.png|centre|vignette|upright=3|Cache fabriqué avec une mémoire associative et une RAM]]
Il est cependant possible d'optimiser un tel cache, en fusionnant la mémoire CAM et la mémoire RAM, afin d'éliminer des circuits redondants. Pour comprendre pourquoi, rappelons que les mémoires CAM sont composées d'un plan mémoire, d'un paquet de comparateurs et d'un encodeur. Quant à la mémoire RAM, elle est composée d'un décodeur connecté au plan mémoire. En mettant une CAM suivie d'une RAM, on a un encodeur dont l'entrée est envoyée à un décodeur.
[[File:Cache totalement associatif naif.png|centre|vignette|upright=3|Cache totalement associatif naif]]
Or, le décodeur réalise l'opération inverse de l'encodeur, ce qui fait que mettre les deux composants à la suite ne sert à rien. On peut donc retirer l'encodeur et le décodeur, et envoyer directement les résultats des comparateurs sur les entrées de commande du plan mémoire de la RAM.
[[File:Cache totalement associatif optimisé.png|centre|vignette|upright=2|Cache totalement associatif optimisé]]
Avec cette méthode, les circuits du cache ressemblent à ce qui illustré ci-dessous. Le tag est envoyé à chaque ligne de cache. Le tag envoyé est alors comparé avec le Tag contenu dans chaque ligne de cache, comme c'est le cas sur les mémoires associatives. Si une ligne de cache matche avec le tag envoyé en entrée, la ligne pour laquelle il y a eu une égalité est alors connectée sur les lignes de bit (''bitlines''). Cela est réalisé par un circuit commandé par le comparateur de la ligne de cache. Il ne reste plus qu'à sélectionner la portion de la ligne de cache qui nous intéresse, grâce à un paquet de multiplexeurs. Cela permet d'effectuer une lecture ou écriture, mais il faut aussi préciser si il y a eu un défaut de cache ou un succès. Un succès de cache a lieu quand au moins des comparaisons est positive, alors que c'est un défaut de cache sinon. En clair, détecter un succès de cache demande juste de connecter une porte OU à plusieurs entrées à tous les comparateurs.
[[File:Organisation générale d'un cache totalement associatif.png|centre|vignette|upright=2|Organisation générale d'un cache totalement associatif.]]
===Les caches directement adressés===
Les caches directement adressés peuvent être vus comme un cache totalement associatif auquel on aurait ajouté des restrictions assez drastiques. Plus haut, on a vu qu'un cache totalement adressé est équivalent à la combinaison d'une CAM avec une RAM. La mémoire CAM prend en entrée un Tag et traduit celui-ci en une adresse qui commande la mémoire RAM interne au cache. Dans ce qui suit, l'adresse interne au cache sera appelé l''''indice''' pour éviter toute confusion.
[[File:Cache hash table - 2.png|centre|vignette|upright=2|Fonctionnement interne du cache, expliquée sous forme abstraite, en utilisant la notion d'indice interne au cache.]]
Les caches directement adressés cherchent à remplacer la mémoire CAM par un circuit combinatoire. Ce circuit traduit le Tag en indice, mais est beaucoup plus simple qu'une mémoire CAM. Mais qui dit circuit plus simple dit circuit plus limité. Un circuit combinatoire n'est pas aussi versatile que ce qui est permis avec une mémoire CAM. En conséquence, une restriction majeure apparait : toute adresse mémoire est associée dans une ligne de cache prédéfinie, toujours la même. L'association entre ligne de cache et adresse mémoire est faite par le circuit combinatoire, et ne peut pas changer.
Les concepteurs de caches s'arrangent pour que des adresses consécutives en mémoire RAM occupent des lignes de cache consécutives, par souci de simplicité. Tout se passe comme suit la mémoire RAM était découpés en blocs de la même taille que le cache. La première adresse du bloc est associée à la première ligne de cache (celle d'indice 0), la seconde adresse est associée à la seconde adresse du_ bloc, et ainsi de suite. Le tout est illustré ci-dessous.
[[File:Cache adressé directement.png|centre|vignette|upright=2|Cache adressé directement.]]
Avec cette contrainte, le circuit de traduction de l'adresse en adresse mémoire pour la RAM interne au cache est drastiquement simplifié, et disparait même. Une partie de l'adresse mémoire sert à indiquer la position de la donnée dans le cache, le reste de l'adresse sert encode le tag et la position de la donnée dans le ligne de cache.
[[File:Cache line.png|centre|vignette|upright=2|Adresse d'une ligne de cache sur un cache adressé directement.]]
Un cache directement adressé est conçu avec une RAM, un comparateur, et un paquet de multiplexeurs. En général, la mémoire RAM stocke les lignes de caches complète. Il arrive que l'on utilise deux mémoires RAM : une pour les tags et une pour les données, mais cette technique augmente le nombre de circuits et de portes logiques nécessaires, ce qui réduit la capacité du cache. L'index à lire/écrire est envoyé sur l'entrée d'adresse de la RAM, la RAM réagit en mettant la ligne de cache sur sa sortie de donnée. Sur cette sortie, un comparateur compare le tag de la ligne de cache lue avec le tag de l'adresse à lire ou écrire. On saura alors si on doit faire face à un défaut de cache. Ensuite, un multiplexeur récupère la donnée à lire/écrire.
[[File:Direct mapped cache - french.png|centre|vignette|upright=2|Cache directement adressé.]]
L'accès à un cache directement adressé a l'avantage d'être très rapide vu qu'il suffit de vérifier une seule ligne de cache : celle prédéfinie. Mais ces caches ne sont cependant pas sans défauts. Vu que le cache est plus petit que la mémoire, certaines adresses mémoires se partagent la même ligne de cache. Si le processeur a besoin d’accéder fréquemment à ces adresses, chaque accès à une adresse supprimera l'autre du cache : tout accès à l'ancienne adresse se soldera par un défaut de cache. Ce genre de défauts de cache causés par le fait que deux adresses mémoires ne peuvent utiliser la même ligne de cache s'appelle un '''défaut par conflit''' (''conflict miss''). Les défauts par conflit n'existent pas sur les caches totalement associatifs. En conséquence, le taux de succès des caches directement adressés est assez faible comparé aux autres caches.
[[File:Cache Block Basic Conflict.svg|centre|vignette|upright=1.5|Exemple de ''Conflict Miss''.]]
===Les caches associatifs par voie===
Les caches associatifs par voie sont un compromis entre les caches directement adressés et les caches totalement associatifs. Pour simplifier, ces caches sont composés de plusieurs caches directement adressés accessibles en parallèle, chaque cache/RAM étant appelé une '''voie'''. Avec ces caches, toute adresse mémoire en RAM est associée à une ligne de cache dans chaque voie.
[[File:Cache associatif par voie.png|centre|vignette|upright=2|Cache associatif par voie.]]
Le schéma ci-dessous compare un cache directement adressé et un cache associatif à deux voies. On voit que chaque adresse est associée à une ligne de cache bien précise avec un cache directement dressé, et à deux lignes de cache avec un cache associatif à deux voies. L'adresse sera associée à 4 lignes de cache sur un cache associatif à 4 voies, à 8 lignes pour un cache à 8 voies, etc. L'ensemble des lignes de cache associées à une adresse est appelé un '''ensemble'''.
[[File:Cache Fill.svg|centre|vignette|upright=2|Comparaison entre un cache directement adressé et un cache associatif à deux voies.]]
Sur ces caches, toute adresse est découpée en trois parties : un tag, un index, et un décalage, comme sur les caches directement adressés. Comme vous pouvez le voir, l'organisation est identique à celle d'un cache totalement associatif, à part que chaque ensemble tag-ligne de cache est remplacé par une mémoire RAM qui en contient plusieurs.
[[File:Implémentation d'un cache associatif par voie.png|centre|vignette|upright=2|Implémentation d'un cache associatif par voie.]]
Le risque de conflits d'accès au cache est donc réduit sur un cache associatif à plusieurs voies, et il est d'autant plus réduit que le cache a de voies. Par contre, leur conception interne fait qu'ils ont un temps d'accès légèrement élevé que les caches directement adressés. Les caches associatifs par voie ont donc un taux de succès et un temps d'accès intermédiaire, situé entre les caches directement adressés et totalement associatifs. Ils sont une sorte de compromis entre réduction des défaut par conflits d'accès au cache et temps d'accès, et complexité des circuits.
==Les optimisations des caches associatifs par voie==
Les caches partiellement associatifs regroupent les caches associatifs par voie et directement adressés, ainsi que leurs variantes. En clair : tous les caches qui ne sont pas totalement associatifs. Ils peuvent être optimisés de nombreuses manières, que ce soit pour gagner en performance ou pour économiser de l’énergie. Dans cette section, nous allons voir quelles sont ces optimisations.
===Les caches pseudo-associatifs===
Les caches adressés par voie contiennent une mémoire SRAM par voie. En théorie, les voies sont accédées en parallèles, en même temps, afin de voir si l'on a un succès de cache ou un défaut. Les '''caches pseudo-associatifs''' sont identiques aux caches associatifs par voie, si ce n'est qu'ils vérifient chaque voie une par une. Ils ont été utilisés sur des processeurs commerciaux, un exemple étant l'IBM 370.
Là encore, on perd en performance pour gagner en consommation d'énergie. Le temps d'accès dans le meilleur des cas est plus faible pour les caches pseudo-associatifs, mais le pire des cas teste tous les caches avant de tomber sur le bon. Les performances sont donc réduites. Mais la consommation énergétique est meilleure, vu qu'on ne vérifie pas forcément toutes les voies en parallèle. On teste la première voie, éventuellement la seconde, peut-être la troisième, etc. Mais dans le cas général, on ne teste qu'une partie des voies, pas toutes, ce qui donne un gain en termes d'énergie.
L'implémentation de caches de ce genre demande que l'on parcoure les voies une par une, en commençant de la première jusqu'à la dernière. Pour cela, un simple compteur suffit. Suivant la valeur du compteur, la voie associée est activée puis accédée. Toute la complexité revient à ajouter un circuit qui prend la valeur du compteur, et active la voie associée, lance un accès mémoire dessus. Vu que les voies sont chacune des caches ''direct mapped'', il suffit pour cela de geler les entrées d'adresse, soit en les déconnectant, soit en utilisant du ''clock gating'' ou de l'évaluation gardée. Les détails d'implémentation, non-cités ici, varient selon le cache.
===La prédiction de voie===
Pour réduire le temps d'accès des caches pseudo-associatifs, certains chercheurs ont inventé la '''prédiction de voie''', qui consiste à faire des paris sur la prochaine voie accédée. L'idée est d'accéder à la voie qui contient la donnée voulue du premier coup, en lisant celle-ci en priorité.
Dans son implémentation la plus simple, le cache reste un cache pseudo-associatif. Lors d'un accès au cache, les voies sont toutes parcoures une par une. Par contre, les voies ne sont donc pas parcourues de la première vers la dernière, mais dans un ordre différent. Cette technique permet de mettre en veille les voies sur lesquels le processeur n'a pas parié, ce qui permet de diminuer la consommation énergétique du processeur. C'est plus efficace que d'aller lire plusieurs données dans des voies différentes et de n'en garder qu'une. L'implémentation est assez simple : il suffit d'ajouter un circuit de prédiction de voie,relié au compteur de voie.
Une amélioration de la technique fait fonctionner le cache comme un intermédiaire entre cache pseudo-associatif et associatif par voies. L'idée est de chercher la voie prédite en premier, puis de chercher dans toutes les voies en parallèle en cas de défaut de cache. Au lieu d'attendre que les comparaisons de tags donnent leur résultat, le processeur sélectionne automatiquement une voie et configure les multiplexeurs à l'avance. Si le processeur ne se trompe pas, le processeur accède à la donnée plus tôt que prévu. S'il se trompe, le processeur annule la lecture effectuée en avance et recommence en faisant un accès en parallèle aux autres voies. Le compromis entre performance et consommation d'énergie est alors différent. On économise de l'énergie par rapport à un cache associatif par voie, au prix d'une petite perte de performance (doublement des temps d'accès). Mais par rapport à un cache pseudo-associatif, l'économie d'énergie est bien moindre, au prix d'un gain en performance assez manifeste.
Prédire quelle voie sera la bonne est assez simple. En vertu du principe de localité, les accès futurs ont des chances de tomber dans les voies les plus fréquemment utilisées ou dans celle plus récemment utilisée. Il suffit de retenir la voie la plus récemment accédée dans un registre, qui sera utilisée comme prédiction. Pour vérifier que la prédiction est correcte, il suffit de comparer le registre et le résultat obtenu après vérification des tags.
Cependant, on peut complexifier l'implémentation pour prendre en compte l'adresse à lire/écrire, l'instruction à l'origine de l'accès mémoire ou tout autre paramètre utile. Par exemple, des instructions différentes ont tendance à aller chercher leurs données dans des ensembles différents et la voie à choisir n'est pas la même. Pour cela, il suffit d'utiliser un cache pour stocker la correspondance instruction - voie. Pour plus de simplicité, la mémoire cache des prédictions est parfois remplacée par une RAM, qui est adressée :
* soit par le program counter de l'instruction à l'origine de l'accès (en réalité, seulement quelques bits de poids faible de l'adresse) ;
* soit par l'adresse à accéder (là encore, quelques bits de poids faible) ;
* soit (pour les modes d'adressage qui utilisent un registre de base et un décalage) par un XOR entre les bits de poids faible de l'adresse de base et le décalage ;
* soit par autre chose.
===La mise en veille sélective des voies===
Les caches associatifs ont tendance à utiliser beaucoup d'énergie, même quand on n'y accède pas. Aussi, certains processeurs détectent quand le cache est peu utilisé et en profitent pour mettre en veille les voies inutilisées. Vous vous demandez certainement ce qui se passe quand une donnée à lire/écrire est dans une voie désactivée. La réponse est que le cache détecte cette situation, car elle déclenche un succès de cache. Les ''tags'' ne sont en effet pas désactivés, seules les données sont mises en veille. L'implémentation est plus simple sur les caches qui séparent les tags et les données dans deux RAM différentes.
Cette optimisation marche surtout sur les gros caches, qui ont des chances d'avoir une portion significative d’inutilisée (pas assez de données pour les remplir), donc généralement les caches L3/L4. Par exemple, les processeurs d'Intel de microarchitecture Ivy Bridge disposent d'un cache de 8 mébioctets à 16 voies, qu'ils peuvent faire passer à 512 kibioctets si le besoin s'en fait sentir. Quand ces processeurs détectent une faible activité, ils mettent en veille 14 voies et n'en gardent que 2 d'actives. Évidemment, les 14 voies sont vidées avant d'être mises en veille, afin qu'une aucune donnée ne soit perdue.
===Les caches ''skew-associative''===
Vous aurez remarqué que dans une voie, les lignes sont accédées en adressage direct : les défauts par conflit sont possibles sur un cache associatif par voie. Pour éviter cela, certains chercheurs ont créé des '''caches ''skew associative''''' (ou associatifs à biais).
Pour faire simple, les index des lignes de cache subissent un petit traitement avant d'être utilisés. Le traitement en question est différent suivant la voie de destination, histoire que deux adresses mémoires avec des index identiques donnent des index différents après traitement. Le traitement en question est souvent une permutation des bits de l'index, qui est différente suivant la voie prise, ou un simple XOR avec un nombre qui dépend de la voie.
[[File:Implémentation d'un cache skew associative.jpg|centre|vignette|upright=2|Implémentation d'un cache skew associative.]]
==L'adressage physique ou logique des caches==
Le cache utilise les adresses à lire/écrire pour déterminer s'il a une copie de la donnée en son sein. Mais l’interaction entre caches et mémoire virtuelle donne lieu à un petit problème : l'adresse utilisée est-elle une adresse virtuelle/logique ou physique ? La réponse varie suivant le processeur : certains caches utilisent l'adresse virtuelle, tandis que d'autres prennent l'adresse physique. On parle de cache '''virtuellement tagué''' dans le premier cas et de cache '''physiquement tagué''' dans le second.
{|
|[[File:Cache tagué virtuellement.png|vignette|Cache tagué virtuellement.]]
|[[File:Cache tagué physiquement.png|vignette|Cache tagué physiquement.]]
|}
===L'accès à un cache physiquement/virtuellement tagué===
La manière d'accéder à un cache dépend de s'il est virtuellement ou physiquement tagué. Il faut utiliser l'adresse virtuelle pour les premiers, physique pour les seconds.
Avec un cache virtuellement tagué, l'adresse logique peut être envoyée directement au cache. La MMU ne traduit les adresses que s'il faut accéder à la mémoire RAM. Ces caches sont donc plus rapides.
Avec un cache physiquement tagué, le processeur doit traduire l'adresse logique en adresse physique dans la MMU, avant d'accéder au cache. La traduction d'adresse se fait soit en accédant à une table des pages en mémoire RAM, soit en accédant à un cache spécifiquement dédié à accélérer la traduction d'adresse, la TLB (''Translation Lookaside Buffer''). Dans la quasi-totalité des cas, la traduction d'adresse passe par la TLB, ce qui fait qu'elle est raisonnablement rapide. Toujours est-il que chaque accès au cache demande d'accéder à la TLB et de faire la traduction d'adresse avant d'accéder au cache. L'accès est donc plus lent que sur les caches virtuellement tagués, où les accès sont plus directs.
[[File:Virtual and Physical addressing.svg|centre|vignette|upright=2|Cache tagué virtuellement versus physiquement tagué.]]
===Les défauts des caches virtuellement tagués===
Les caches physiquement tagués sont moins rapides que les caches virtuellement adressés. Pourtant, les caches virtuellement tagués sont peu fréquents sur les processeurs modernes. Et la raison est assez intéressante : c'est une question d'adresses homonymes et synonymes.
====Les droits d'accès doivent être vérifiés lors d'un accès au cache====
Un premier problème est que la protection mémoire est compliquée avec de tels caches. Rappelons que certaines portions de mémoire sont accessibles seulement en lecture, ou sont interdites en écriture, sont inexécutables, etc. Ces droits d'accès sont gérés par la MMU, qui vérifie pour chaque accès mémoire que l'accès est autorisé. En bypassant la MMU, l'accès au cache virtuellement tagué ne permet pas de faire ces vérifications. Il est possible de charger une donnée en lecture seule dans le cache, mais d'y faire des accès en écriture pour les accès ultérieurs.
Les solutions à cela sont multiples. La première consiste à consulter la MMU en parallèle de l'accès au cache. L'accès au cache est alors réalisé de manière spéculative, et est ensuite confirmé/annulé une fois que la MMU a rendu son verdict. Les performances du cache restent alors les mêmes : l'accès à la MMU se fait en parallèle de l'accès au cache, pas avant. Une autre solution est d'ajouter les droits d'accès en question dans la ligne de cache, dans les bits de contrôle situés après le Tag. Chaque accès au cache récupère ces bits de contrôle et vérifie si l'accès est autorisé. L'inconvénient est que les lignes de cache deviennent plus longues, les droits d'accès sont dupliqués entre MMU et cache. Mais si le budget en transistor suit, ce n'est rien d'insurmontable.
====Les adresses homonymes perturbent la gestion du cache====
Pour rappel, une adresse logique homonyme correspond à plusieurs adresses physiques différentes. Elles surviennent quand chaque programme a son propre espace d'adressage. Dans ce cas, une adresse logique correspondra à une adresse physique différente par programme.Une autre manière de voir les choses est qu'il y a en réalité deux adresses homonymes, qui ont la même valeur, mais appartiennent à des espaces d'adressage différentes. Et c'est cette seconde interprétation que nous allons utiliser.
Les caches doivent gérer ces adresses homonymes et faire en sorte que la lecture/écriture d'une adresse homonyme se fasse à la bonne adresse physique, dans la bonne ligne de cache. Et autant un cache physiquement tagué n'a aucun problème avec ça, vu qu'il ne gère que des adresses physiques, autant des problèmes surviennent avec les caches virtuellement tagués. Le problème est que les caches virtuellement tagués doivent faire la différence entre deux adresses homonymes de même valeur.
Pour corriger ces problèmes, il existe deux grandes méthodes. La première méthode est simple : '''vider les caches''' en changeant de programme. Leur contenu est rapatrié en mémoire RAM, puis les caches sont remis à zéro. Le vidage du cache recopie les lignes de cache ''dirty'' (modifiées) en RAM, puis efface/invalide tout le cache. C'est à cela que servent les instructions ''clean'' et d'invalidation vues plus haut, elles ont été inventées pour cette situation précise. Lorsque le système d'exploitation déclenche une commutation de contexte, à savoir qu'il change le programme en cours d'exécution, le processeur vide tous les caches du processeur. Les interruptions font la même chose, elles vide tous les caches du processeur.
Une seconde méthode numérote chaque programme en cours d'exécution, chaque processus. Le numéro attribué est spécifique à chaque processus, ce qui fait qu'il est appelé un '''identifiant de processus CPU'''. Le processeur mémorise l'identifiant du programme en cours d'exécution dans un registre dédié. L'identifiant de processus CPU est utilisé lors des accès mémoire. Chaque ligne de cache contient le numéro de l'espace d'adressage associé, dans son ''tag''. Lors de chaque accès mémoire, l'ID du registre est comparé à l'ID de la ligne de cache accédée, pour vérifier que l'accès mémoire accède à la bonne donnée. Cette méthode n'est pas très économe en termes de transistors.
L'usage d'identifiant de processus CPU est clairement meilleure en termes de performance, les commutations de contexte sont plus rapides. Par contre, le budget en transistor est plus important. Un autre défaut de cette méthode est que l'identifiant de processus est généralement codé sur une dizaine de bits, alors que le système d'exploitation utilise des identifiants de processus beaucoup plus larges, de 32 à 64 bits sur les CPU 32/64 bits. L'OS doit gérer la correspondance entre identifiants de processus CPU et ceux de l'OS. Parfois, pour cette raison, les OS n'utilisent pas toujours ce système d'identifiant de processus CPU.
====Les adresses synonymes perturbent aussi la gestion du cache====
La gestion des adresses synonymes est aussi un gros problème sur les caches virtuellement tagués. Pour rappel, il s'agit du cas où des adresses logiques différentes pointent vers la même adresse physique. Typiquement, quand deux programmes se partagent un morceau de mémoire, ce morceau correspondra à des adresses synonymes dans les deux espaces d'adressage. Mais il arrive que l'on ait des adresses synonymes dans le même espace d'adressage, ce n'est pas si rare !
Autant les adresses synonymes ne posent aucun problème avec les caches physiquement tagués, ce n'est pas le cas avec les caches virtuellement adressés. Sur ces caches, deux adresses logiques synonymes vont tomber dans deux lignes de cache différentes. Corriger ce problème demande d'ajouter des circuits annexes pour détecter les adresses synonymes, qui sont vraiment complexes et ont un cout en termes de performance. Aussi, les caches virtuellement tagués sont très peu utilisés sur les processeurs modernes.
===Les caches virtuellement adressés, mais physiquement tagués===
Si les caches physiquement et virtuellement tagués ont des défauts, il existe un intermédiaire qui est un bon compromis entre ces deux extrêmes. Il s'agit des '''caches virtuellement adressés - physiquement tagués''', aussi appelés '''caches pseudo-virtuels'''. Pour comprendre comment ils fonctionnent, précisons que ces caches sont soit des caches ''direct-mapped'', soit des caches associatifs par voie (composés de plusieurs RAM ''direct-mapped'' accédées en parallèle, plusieurs voies).
L'accès à ce genre de cache se fait en deux temps : on accède à un ou plusieurs RAM ''direct-mapped'' et on vérifie ensuite les ''Tags'' pour sélectionner la bonne voie. Sur les caches ''direct-mapped'', on n'a qu'une seule RAM ''direct-mapped''. Sur les caches associatifs, on a plusieurs RAM ''direct-mapped'', appelées des voies, qui sont accédées en parallèle. L'accès se fait donc en deux étapes : adresser les RAM ''direct-mapped'' avec un indice, vérifier les ''tags'' avec le reste de l'adresse.
Une autre chose à rappeler est que l'adresse logique est composée de deux parties : un numéro de page logique qui indique dans quel page se situe l'adresse, un décalage/''offset'' qui indique la position de l'adresse dans la page. La traduction d'adresse transforme le numéro de page logique en numéro de page physique, mais laisse le décalage intouché. L'idée est d'utiliser le décalage pour adresser les RAM avec le décalage, tandis que le numéro de page sert de ''tag''. Le décalage est découpé en deux lors de l'accès au cache : les bits de poids fort forment l'indice (l'adresse envoyée à la voie), les bits de poids faible donnent la position de l'adresse dans la ligne de cache.
L'idée est d'utiliser un numéro de page physique pour les ''tags'', mais d'adresser les voies avec le décalage logique. Les deux servent à des instants différents : vérification des ''tags'' pour l'adresse physique, accès aux voies pour l'adresse logique. Ainsi, le problème des adresses synonymes ou homonymes est résolu par l'utilisation de l'adresse physique pour les tags. Par contre, l'accès au cache est plus rapide, car on utilise l'adresse logique pour la première étape. Le processeur accède à la TLB et récupère l'adresse physique pendant que l'on adresse les voies, les deux sont faits en parallèle, ce qui fait que tout se passe comme si l'accès à la TLB était gratuit. La TLB étant assez rapide comparé au cache, l'adresse physique est disponible quand on doit faire la comparaison avec les ''tags''.
[[File:Virtual - Physical - Pseudo Virtual addressing.svg|centre|vignette|upright=2|Adressage pseudo virtuel des caches.]]
Il s'agit d'un excellent compromis entre performance et correction des problèmes des adresses synonymes/homonymes. Tous les caches des processeurs haute performance utilisent cette méthode, au moins pour leurs caches L1. Les caches L2 tendent à utiliser des caches physiquement adressés, pour lesquels la latence d'accès est suffisante pour qu'on accède à la TLB en amont. La raison est assez simple à expliquer, elle provient d'une contrainte assez précise sur le calcul de l'indice.
La conséquence est qu'un cache ''direct-mapped'' ne peut pas dépasser la taille d'une page, soit 4 kibioctets sur les ordinateurs actuels. Sur les caches associatifs, on peut dépasser cette limite en augmentant le nombre de voies, mais la taille maximale d'une voie reste celle d'une page. Cette contrainte n'est pas trop grave sur les caches de petite taille, dont les caches L1. La plupart d'entre eux ont trouvé un compromis idéal avec moins d'une dizaine de voies par cache, chacun de 4 kibioctets, ce qui donne des caches allant de 16 à 64 kibioctets, soit entre 4 et 16 voies. Par contre, un cache de grande taille doit utiliser un grand nombre de voies, ce qui est peu pratique. Aussi, cette technique de caches pseudo-virtuels n'est pas toujours appliquée sur les caches L2, qui sont physiquement adressés. Il faut dire qu'on accède au cache L2 lors d'un défaut dans le cache L1, et l'adresse physique est disponible à ce moment-là, elle a déjà été récupérée lors de l'accès au cache L1. On peut donc l'utiliser pour adresser le cache L2 sans perte de performance.
==Le remplacement des lignes de cache==
Lorsqu'un cache est rempli et qu'on charge une nouvelle donnée dedans, il faut faire de la place pour cette dernière. Dans le cas d'un cache directement adressé, il n'y a rien à faire vu que la ligne de cache à évincer est déterminée lors de la conception du cache. Mais pour les autres caches, la donnée peut aller dans n'importe quelle ligne ou voie.
Or, le choix des données à rapatrier en RAM doit être le plus judicieux possible : on doit virer de préférence des données inutiles. Rapatrier une donnée qui sera surement utilisée sous peu est inutile, et il vaudrait mieux supprimer des données qui ne serviront plus ou alors dans longtemps. Il existe différents algorithmes spécialement dédiés à résoudre ce problème efficacement, directement câblés dans les unités de gestion du cache. Certains sont vraiment très complexes, aussi je vais vous présenter quelques algorithmes particulièrement simples.
Il y a des différences assez notables entre chaque niveau de cache. Par exemple, les différents niveaux de cache n'ont pas forcément les mêmes politiques de remplacement des lignes de cache. Le cache L1 a généralement une politique de remplacement simple, très rapide, mais peu efficace. De même, il faut aussi savoir que la taille des lignes de cache n'est pas la même suivant les niveaux de cache. Par exemple, le L2 peut avoir des lignes plus grandes que celles du L1.
Mais avant de voir ces algorithmes, il faut absolument que je vous parle d'une chose très importante. Quel que soit l'algorithme en question, il choisit la ligne de cache à évincer et recopie son contenu dans la RAM. Ce qui demande d'identifier et de sélectionner une ligne de cache parmi toutes les autres. Pour cela, le circuit de remplacement attribue une adresse chaque ligne de cache ! Vous avez bien vu : chaque ligne de cache est numérotée par une adresse, interne au cache.
===Le remplacement pseudo-aléatoire===
Le algorithme est aussi simple que contre-intuitif : la donnée effacée du cache est choisie au hasard ! On parle alors de '''remplacement pseudo-aléatoire'''. C'est contre-intuitif, mais cet algorithme donne des résultats assez honorables, en plus d'utiliser peu de portes logiques. Ces avantages font qu'il a été utilisé sur quelques processeurs basse consommation, au budget en transistors limité, qui n'avaient pas besoin de performances exceptionnelles. Par exemple, les processeurs ARM Cortex A53 utilisaient un tel algorithme, à la fois pour leur cache d'instruction et leur cache de données L1.
L'avantage principal de cet algorithme est qu'il utilise très peu de portes logiques. Un générateur de nombres pseudo-aléatoire est un circuit assez simple : un simple registre à décalage à rétroaction linaire (LSFR) suffit. Le LSFR donne le numéro de la ligne de cache à évincer, il est "incrémenté"/mis à jour à chaque défaut de cache. Il n'y a pas besoin de mémoriser de méta-données pour savoir si telle ou telle ligne de cache a été récemment utilisée, comme ce sera le cas sur les algorithmes qui vont suivre.
Pour ce qui est des performances, elles sont acceptables, sous certaines conditions. Généralement, les défauts de cache sont séparés par un nombre assez important et irrégulier de cycles d'horloge. Dans ces conditions, cette technique donne un bon résultat. De plus, les économies de circuits faites sur le remplacement des lignes de cache peuvent être utilisées pour grossir le cache. Par exemple, au lieu d'avoir un cache de 64 kibioctets avec un algorithme complexe, on peut passer à 96 kibioctets avec remplacement pseudo-aléatoire. La capacité supplémentaire aide à réduire les performances moyennes du remplacement pseudo-aléatoire.
===Le remplacement ''round-robin''===
La politique de remplacement ''round-robin'' remplace les lignes de cache dans un ordre bien précis : celui de leur numéro. Comme dit plus haut, les lignes de cache sont numérotées, avec une sorte de pseudo-adresse interne au cache, qui permet d'identifier une ligne de cache parmi toutes les autres. Le remplacement ''round-robin'' utilise un compteur binaire pour déterminer quelle ligne de cache remplacer. Il est initialisé à zéro, et est incrémenté à chaque fois qu'une ligne de cache est remplacée. Cet algorithme ''round-robin'' a été utilisé sur le processeur MIPS R4000.
Les avantages de cet algorithme sont similaires à ceux du remplacement pseudo-aléatoire. Le budget en transistor est très faible : un compteur binaire, et quelques circuits annexes. En contrepartie, les lignes de cache remplacées sont choisies selon leur position dans le cache, sans tenir compte de la localité temporelle ou spatiale. L'algorithme n'a pas besoin de mémoriser de méta-données pour savoir si telle ou telle ligne de cache a été récemment utilisée, ce qui fait qu'il utilise pue de circuits mais ne permet de choisir efficacement la ligne de cache à remplacer. Ses performances sont, en pratique, proches de celles du remplacement pseudo-aléatoire.
===FIFO : first in, first out===
Avec l'algorithme FIFO, la donnée effacée du cache est la plus ancienne, celle chargée dans le cache avant les autres. Cet algorithme est très simple à implémenter en circuit, concevoir une mémoire de type FIFO n'étant pas très compliqué, comme on l’a vu dans le chapitre dédié à ce type de mémoires. Et on peut dire que dans le cas d'un cache, l'implémentation est encore plus simple et se contente d'un seul registre/compteur. Typiquement, il suffit d'ajouter un registre qui mémorise où se situe la donnée la plus récente. Toute insertion d'une nouvelle donnée se fait à l'adresse suivante, ce qui demande juste d'incrémenter le registre avant d'utiliser son contenu pour l'accès mémoire.
[[File:Algorithme FIFO de remplacement des lignes de cache.png|centre|vignette|upright=2|Algorithme FIFO de remplacement des lignes de cache.]]
Cet algorithme possède une petite particularité sur les caches associatifs par voie : en augmentant le nombre d'ensembles, les performances peuvent se dégrader : c'est ce qu'on appelle l''''anomalie de Bélády'''.
===MRU : most recently used===
Avec l'algorithme MRU, la donnée remplacée est celle qui a été utilisée le plus récemment. Cet algorithme s'implémente simplement avec un registre, dans lequel on place le numéro de la dernière ligne de cache utilisée.
Cet algorithme de remplacement est très utile quand un programme traverse des tableaux du premier élément jusqu'au dernier : les données du tableau sont rarement réutilisées, rendant le cache inutile. Il est prouvé que dans ces conditions, l'algorithme MRU est optimal. Mais dans toutes les autres conditions, cet algorithme a des performances assez misérables.
===LFU : least frequently used===
Avec l'algorithme LFU, la donnée supprimée est celle qui est utilisée le moins fréquemment. Cet algorithme s'implémente en associant un compteur à chaque ligne de cache, qui est incrémenté à chaque accès mémoire. La ligne la moins récemment utilisée est celle dont le compteur associé a la plus petite valeur. Implémenter cet algorithme prend pas mal de transistors, car il faut rajouter autant de compteurs qu'il y a de lignes de cache, en plus d'un circuit pour comparer les compteurs et d'un encodeur.
[[File:Algorithme LFU de remplacement des lignes de cache.png|centre|vignette|upright=2|Algorithme LFU de remplacement des lignes de cache]]
===LRU : least recently used===
Avec l'algorithme LRU, la donnée remplacée est celle qui a été utilisée le moins récemment. Cet algorithme se base sur le principe de localité temporelle, qui stipule qu'une donnée accédée récemment a de fortes chances d'être réutilisée dans un futur proche. Et inversement, la donnée la moins récemment utilisée du cache est celle qui a le plus de chance de ne servir à rien dans le futur. Autant la supprimer en priorité pour faire de la place à des données potentiellement utiles.
Implémenter l'algorithme LRU peut se faire de différentes manières, qui ont pour point commun d'enregistrer les accès au cache pour en déduire la ligne la moins récemment accédée. La manière la plus simple demande d'utiliser un compteur pour chaque ligne de mémoire cache, un peu comme le LFU. La différence avec le LFU est que le compteur n'est pas incrémenté lors d'un accès mémoire. À la place, ce compteur est incrémenté régulièrement, chaque incrémentation ayant lieu en même temps pour tous les compteurs. Quand un bloc est chargé dans le cache, ce compteur est mis à zéro. Quand une ligne de cache doit être remplacée, un circuit va vérifier la valeur de tous les compteurs : la ligne LRU (la moins récemment utilisée), est celle dont le compteur a la valeur la plus haute. Le circuit est composé d'un paquet de comparateurs, et d'un encodeur, comme pour l'agorithme LFU.
===Les approximations du LRU===
Implémenter le LRU demande un nombre de transistors proportionnel au carré du nombre de lignes de cache. Autant dire que le LRU devient impraticable sur de gros caches. Ce qui fait que les processeurs modernes implémentent des variantes du LRU, moins couteuses en transistors, qui donnent un résultat approximativement semblable au LRU. En clair, ils ne sélectionnent pas toujours la ligne de cache la moins récemment utilisée, mais une ligne de cache parmi les moins récemment utilisées. Ce n'est pas un problème si grave que cela car les lignes les moins récemment utilisées ont toutes assez peu de chance d'être utilisées dans le futur. Entre choisir de remplacer une ligne qui a 0,5 % de chances d'être utilisée dans le futur et une autre qui a une chance de seulement 1 %, la différence est négligeable en termes de taux de succès. Mais les gains en termes de circuits ou de temps d'accès au cache de ces algorithmes sont très intéressants.
L'algorithme le plus simple consiste à couper le cache (ou chaque voie s'il est associatif) en plusieurs sections. L'algorithme détermine la section la moins récemment utilisée, avant de choisir aléatoirement une ligne de cache dans cette section. Pour implémenter cet algorithme, il nous suffit d'un registre qui mémorise le morceau le moins récemment utilisé, et d'un circuit qui choisit aléatoirement une ligne de cache. Cette technique s'adapte particulièrement bien avec des caches associatifs à voies : il suffit d'utiliser autant de morceaux que de voies.
Autre algorithme, un peu plus efficace : le '''pseudo-LRU de type M'''. Cet algorithme attribue un bit à chaque ligne de cache, bit qui sert à indiquer de façon approximative si la ligne de cache associée est une candidate pour un remplacement ou non. Il vaut 1 si la ligne n'est pas une candidate pour un remplacement et zéro sinon. Le bit est mis à 1 lorsque la ligne de cache associée est lue ou écrite. Évidemment, au fil du temps, toutes les lignes du cache finiront par avoir leur bit à 1. Lorsque cela arrive, l'algorithme remet tous les bits à zéro, sauf pour la dernière ligne de cache accédée. L'idée derrière cet algorithme est d'encercler la ligne de cache la moins récemment utilisée au fur et à mesure des accès. L'encerclement commence lorsque l'on remet tous les bits associés aux lignes de cache à 0, sauf pour la ligne accédée en dernier. Au fur et à mesure des accès, l'étau se resserre autour de la ligne de cache la moins récemment utilisée. Après un nombre suffisant d'accès, l'algorithme donne une estimation particulièrement fiable. Et comme les remplacements de lignes de cache sont rares comparés aux accès aux lignes, cet algorithme finit par donner une bonne estimation avant qu'on ait besoin d'effectuer un remplacement.
Le dernier algorithme d'approximation, le '''PLURt''', se base sur ce qu'on appelle un arbre de décision. Il a besoin de n − 1 bits pour déterminer la ligne LRU. Ces bits doivent être organisés en arbre, comme illustré plus bas. Chacun de ces bits sert à dire : le LRU est à ma droite ou à ma gauche : il est à gauche si je vaux 0, et à droite si je vaux 1. Trouver le LRU se fait en traversant cet arbre, et en interprétant les bits un par un. Au fur et à mesure des lectures, les bits sont mis à jour dans cet arbre, et pointent plus ou moins bien sur le LRU. La mise à jour des bits s'effectue lors des lectures et écritures : quand une ligne est lue ou écrite, elle n'est pas la ligne LRU. Pour l'indiquer, les bits à 1 qui pointent vers la ligne de cache sont mis à 0 lors de la lecture ou écriture.
{|
|[[File:Organisation des bits avec l'algorithme PLURt.jpg|vignette|Organisation des bits avec l'algorithme PLURt.]]
|[[File:Ligne de cache pointée par les bits de l'algorithme.png|vignette|Ligne de cache pointée par les bits de l'algorithme.]]
|}
===LRU amélioré===
L'algorithme LRU, ainsi que ses variantes approximatives, sont très efficaces tant que le programme respecte relativement bien la localité temporelle. Par contre, Le LRU se comporte assez mal dans les circonstances ou la localité temporelle est mauvaise mais où la localité spatiale est respectée, le cas le plus emblématique étant le parcours d'un tableau. Pour résoudre ce problème, des variantes du LRU existent.
Une variante très connue, l''''algorithme 2Q''', utilise deux caches : un cache FIFO pour les données accédées une seule fois et un second cache LRU. Évidemment, les données lues une seconde fois sont migrées du cache FIFO vers le cache LRU, ce qui n'est pas très pratique. Les processeurs n'utilisent donc pas cette technique, mais celle-ci est utilisée dans les caches de disque dur.
D'autres variantes du LRU combinent plusieurs algorithmes à la fois et vont choisir lequel de ces algorithmes est le plus adapté à la situation. Notre cache pourra ainsi détecter s’il vaut mieux utiliser du MRU, du LRU, ou du LFU suivant la situation.
==Les écritures dans le cache : gestion et optimisations==
Les écritures se font à une adresse mémoire bien précise, qui peut ou non être chargée dans le cache. Si la donnée à écrire est chargée dans le cache, elle est modifiée directement dans le cache, mais elle ne l'est pas forcément en mémoire RAM. Suivant le processeur, les écritures sont ou non propagées en mémoire RAM. Il existe deux stratégies d'écritures, appelées respectivement le ''write-back'' et le ''write-through''.
Avec un '''cache ''write-back''''', si une écriture a lieu dans une ligne de cache, elle ne concerne que ce cache. Elle n'est pas propagée dans les niveaux de cache inférieurs, ni en RAM. Dans ces conditions, une donnée n'est enregistrée en mémoire que si celle-ci quitte le cache, ce qui évite de nombreuses écritures mémoires inutiles.
[[File:Cache write-through.png|centre|vignette|upright=2|Cache write-through.]]
Avec les '''caches ''Write-Through''''', toute écriture dans le cache est propagée dans les niveaux de cache inférieurs s'ils existent, puis en RAM. Cette stratégie augmente le nombre d'écritures dans la mémoire RAM, ce qui peut saturer le bus reliant le processeur à la mémoire. Les performances de ces caches sont donc légèrement moins bonnes que pour les caches ''write back''. Par contre, ils sont beaucoup plus simples à implémenter. Ils sont utiles dans les architectures avec plusieurs processeurs, comme nous le verrons dans les chapitres sur les architectures multiprocesseurs.
[[File:Cache write-back.png|centre|vignette|upright=2|Cache write-back.]]
===Les caches ''Write-through''===
Sans optimisation particulière, on ne peut écrire dans un cache ''write-through'' pendant qu'une écriture en RAM a lieu en même temps. Cela forcerait à effectuer deux écritures simultanées, en comptant celle imposée par l'écriture dans le cache. Et le même problème survient quand les niveaux de cache inférieurs sont utilisés en écriture. L'écriture ne peut pas être propagée tant que le port d'écriture est occupé.
Pour éviter cela, certains caches ''write-through'' intègrent un '''tampon d’écriture''', qui sert de file d'attente pour les écritures. C'est une mémoire FIFO dans laquelle on place temporairement les écritures, à savoir : les données à écrire en RAM, mais aussi l'adresse à laquelle écrire. Les écritures attendent dans le tampon d'écriture que les niveaux de cache inférieurs (ou la RAM) soient libres. Grâce à lui, le processeur peut écrire dans un cache même si d'autres écritures sont en attente dans le tampon d'écriture.
Par souci d'efficacité, des écritures à la même adresse sont fusionnées en une seule, dans le tampon d’écriture. Cela fait un peu de place dans le tampon d’écriture, ce qui lui permet d'accumuler plus d'écritures avant de devoir bloquer le cache. Il est aussi possible de fusionner des écritures à adresses consécutives de la mémoire en une seule écriture en rafales. Dans les deux cas, on parle de '''combinaison d'écriture'''.
L'usage d'un tampon d'écriture a cependant un léger défaut qui se manifeste dans une situation bien précise : quand le processeur veut lire une donnée en attente dans le tampon d’écriture. La première manière de gérer cette situation est de mettre en attente la lecture tant que la donnée n'a pas été écrite en mémoire RAM. Mais on peut aussi lire la donnée directement dans le tampon d'écriture, cette optimisation portant le nom de '''''store-to-load forwading'''''.
Dans tous les cas, il faut détecter le cas où une lecture accède à une donnée dans le tampon d'écriture. À chaque lecture, l'adresse à lire est envoyée au tampon d'écriture, qui vérifie si une écriture en attente se fait à cette adresse. Pour cela, le tampon d’écriture doit être un cache, dont chaque entrée mémorise une écriture. Chaque ligne de cache contient la donnée à écrire, et le tag de la ligne de cache contient l'adresse où écrire la donnée. Notons que cache d'écriture a une politique de remplacement de type FIFO, le tampon d'écriture non-optimisé étant une mémoire FIFO.
===Les caches ''Write-back''===
Les caches ''write-back'' ont beau avoir des performances supérieures à celles des caches ''write-through'', il existe des optimisations qui permettent d'améliorer leurs performances. Ces optimisations consistent à ajouter des caches spécialisés à côté du cache proprement dit. Ces caches permettent de mémoriser des données qui sont éliminées du cache par les algorithmes de remplacement de ligne cache, sans pour autant faire une écriture en RAM.
En suivant la procédure habituelle de remplacement des lignes de cache, on doit rapatrier la ligne en RAM avant d'en charger une nouvelle. On peut améliorer la situation en faisant l'inverse : on charge la nouvelle ligne pendant que l'ancienne donnée est rapatriée en RAM. Ainsi, la nouvelle ligne est disponible plus tôt pour le processeur, diminuant son temps d'attente. Pour implémenter cette technique, on doit mémoriser l'ancienne ligne de cache temporairement dans un '''cache d’éviction''' (ou ''write-back buffer'').
[[File:Cache d’éviction.png|centre|vignette|upright=2|Cache d’éviction]]
Les caches directement adressés ou associatifs par voie possèdent aussi un tampon d’écriture amélioré. Pour limiter les défauts par conflit de ces caches, des scientifiques ont eu l'idée d'insérer un cache pour stocker les données virées du cache. En faisant ainsi, si une donnée est virée du cache, on peut alors la retrouver dans ce cache spécialisé. Ce cache s'appelle le '''cache de victime'''.
Le cache de victime est géré par un algorithme de suppression des lignes de cache de type FIFO. Petit détail : ce cache utilise un tag légèrement plus long que celui du cache directement adressé au-dessus de lui. L'index de la ligne de cache doit en effet être contenu dans le tag du cache de victime, pour bien distinguer deux adresses différentes, qui iraient dans la même ligne du cache juste au-dessus.
[[File:Victim Cache Implementation Example.svg|centre|vignette|upright=1|Cache de victime.]]
Quelques processeurs des années 2010 avaient un cache L3 qui était un cache de victime. Les défauts à froid chargeaient la donnée associée dans le cache L2, plus rarement dans le cache L1 directement. En tout cas, les données ne passaient pas par le cache L3. Le seul moyen pour qu'une donnée atterrissent dans le cache L3 est qu'elles aient été évincées du cache L2. C'était une solution adaptée pour une époque où avoir un gros cache était primordial, mais où le budget en transistor était un peu serré. Faire du L3 un cache de victime économisait des transistors, qui pouvaient être utilisés pour faire grossir le cache. De nos jours, les budgets en transistors permettent de faire autrement.
===La configuration du fonctionnement du cache===
Sur de nombreux processeurs, il est possible de configurer la mémoire cache pour qu'elle fonctionne soit en mode ''write-back'', soit en mode ''write-through''. Pour cela, les processeurs modernes incorporent des '''registres de configuration du cache'''. Le terme ''registre de configuration du cache'' est assez transparent et indique bien quel est leur rôle. Ils configurent comment le cache est utilisé et permettent notamment de configurer le cache pour dire s'il doit fonctionner en mode ''write-back'' ou ''write-through''. Ils permettent aussi d'activer ou de désactiver la combinaison sur écriture.
Les registres en question sont configurés soit par le BIOS, soit par le système d'exploitation. Ce sont des registres protégés, que les applications ne peuvent pas configurer, elles n'en ont pas le droit. Typiquement, ils ne sont accessibles en écriture qu'en mode noyau.
Sur les processeurs x86, les registres de configuration du cache sont appelés des '''''Memory type range registers''''' (''MTRRs''). Les MTRRs sont assez nombreux, et il y a notamment une différence entre mode réel et protégé. Si vous vous souvenez des chapitres sur le mode d'adressage et la mémoire virtuelle, vous vous souvenez que les processeurs x86 incorporent plusieurs modes de fonctionnement. En mode réel, le processeur ne peut adresser qu'un mébioctet de RAM, avec un système de segmentation particulier. En mode protégé, le processeur peut adresser toute la mémoire et la segmentation fonctionne différemment, quand elle n'est pas simplement désactivée.
Les MTRRs sont séparés en deux : ceux pour le mode réel, ceux pour le mode protégé. Les MTRRs fixes sont ceux qui configurent le cache en mode réel, ils étaient utilisés pour gérer l'accès au BIOS, à la mémoire VGA de la carte graphique, et quelques autres accès aux entrées-sorties basiques gérées nativement par le BIOS. Pour le mode protégé, les processeurs au-delà du 386 incorporent des MTRRs variables, qui servent pour les autres entrées-sorties en général, notamment les périphériques PCI, la mémoire vidéo de la carte graphique, et j'en passe.
De nos jours, les registres de configuration du cache sont désuets et cette fonctionnalité est gérée directement par la mémoire virtuelle. La table des pages contient, pour chaque page mémoire, des bits de contrôle qui disent si la page mémoire est cacheable ou non. Le contournement de cache est alors géré par le système de mémoire virtuelle, le cache de TLB et tout ce qui va avec.
===L’allocation sur écriture===
Que faire quand une écriture modifie une donnée qui n'est pas dans le cache ? Doit-on écrire la donnée dans le cache, ou non ? Si la donnée est écrite dans le cache, on dit que le cache fait une '''allocation sur l'écriture''' (ou ''write-allocate''). Certains caches effectuent une telle allocation sur écriture, mais d'autres ne le font pas ou du moins pas systématiquement.
L’allocation sur écriture peut se décliner en deux sous-catégories : le '''chargement à la demande''' et l''''écriture immédiate'''. Dans le premier cas, on charge la donnée à modifier dans le cache, et on la remplace avec la donnée écrite. Dans l'écriture immédiate, l'écriture a lieu directement dans le cache et la donnée à modifier n'est pas chargée dans le cache. Évidemment, seule une portion de la ligne de cache contient la donnée écrite (valide), et le reste contient des données invalides. Le cache doit savoir quelles sont les portions du cache qui sont valides : cela demande d'utiliser un ''sector cache''.
[[File:Write-back with write-allocation.svg|centre|vignette|upright=2|Cache Write-back avec allocation sur écriture.]]
Sans allocation sur écriture, l'écriture est transférée directement aux niveaux de cache inférieurs ou à la mémoire si la donnée à modifier n'est pas dans le cache. Certains caches de ce genre utilisent une petite optimisation : lors de toute écriture, ils supposent que l'écriture donnera un succès de cache. Si c'est le cas, la ligne de cache qui contient la donnée est mise à jour avec la donnée à écrire. Mais si ce n'est pas le cas, la ligne de cache est invalidée, et l'écriture est transférée directement à la mémoire ou aux niveaux de cache inférieurs.
[[File:Write-through with no-write-allocation.svg|centre|vignette|upright=2|Cache Write-through sans allocation sur écriture.]]
===La cohérence des caches===
Il arrive parfois que la mémoire d'un ordinateur soit mise à jour, sans que les modifications soient répercutées dans les mémoires cache. Dans ce cas, le cache contient une donnée périmée. Or, un processeur doit toujours éviter de se retrouver avec une donnée périmée et doit toujours avoir la valeur correcte dans ses caches : cela s'appelle la '''cohérence des caches'''. Il est possible de se retrouver avec des valeurs périmées dans le cache sur les ordinateurs avec plusieurs processeurs, ou si un périphérique écrit en RAM, les modifications ne sont pas répercutées automatiquement dans les mémoires cache.
Pour résoudre ce problème, on peut interdire de charger dans le cache des données stockées dans les zones de la mémoire dédiées aux périphériques. Toute lecture ou écriture dans ces zones de mémoire ira donc directement dans la mémoire RAM, sans passer par la ou les mémoires cache. Autre solution : utiliser le fait que les périphériques déclenchent une interruption matérielle pour laisser le contrôleur DMA accéder à la mémoire. Dans ce cas, il suffit de vider les caches à chaque interruption matérielle. Le processeur peut le faire automatiquement, ou fournir des instructions pour.
==Les caches exclusifs et inclusifs==
Au début du chapitre, nous avons abordé le fait qu'un processeur moderne intégre une hiérarchie de mémoire caches, avec un cache L1, un cache L2 et un cache L3. Il est intéressant de regarder comment sont réaprties les données dans ces différents niveaux de cache. Et cela nous amène à parler des caches inclusifs et exclusifs.
Avec les caches inclusifs, si une donnée est présente dans un cache, alors elle est présente dans les caches des niveaux inférieurs, ce qui implique l'existence de données en doublon dans plusieurs niveaux de cache. À l'opposé, les caches exclusifs font que toute donnée est présente dans un seul cache, pas les autres. Il existe aussi des caches qui ne sont ni inclusifs, ni exclusifs. Sur ces caches, chaque niveau de cache gère lui-même ses données, sans se préoccuper du contenu des autres caches. Pas besoin de mettre à jour les niveaux de cache antérieurs en cas de mise à jour de son contenu, ou en cas d'éviction d'une ligne de cache. La conception de tels caches est bien plus simple.
{|
|[[File:Exclusivecache.png|vignette|upright=0.5|Cache exclusif.]]
|[[File:Inclusivecache.png|vignette|upright=0.5|Cache inclusif.]]
|}
Dans les '''caches exclusifs''', le contenu d'un cache n'est pas recopié dans le cache de niveau inférieur. Il n'y a pas de donnée en double et on utilise 100 % de la capacité du cache, ce qui améliore le taux de succès. Par contre, le temps d'accès est un peu plus long. La raison est que si une donnée n'est pas dans le cache L1, on doit vérifier l'intégralité du cache L2, puis du cache L3. De plus, assurer qu'une donnée n'est présente que dans un seul cache nécessite aux différents niveaux de caches de communiquer entre eux pour garantir que l'on a pas de copies en trop d'une ligne de cache, ce qui peut prendre du temps.
[[File:Caches exclusifs.png|centre|vignette|upright=2|Caches exclusifs]]
Dans le cas des '''caches inclusifs''', le contenu d'un cache est recopié dans les caches de niveau inférieur. Par exemple, le cache L1 est recopié dans le cache L2 et éventuellement dans le cache L3. Ce genre de cache a un avantage : le temps d'accès à une donnée est plus faible. La raison est qu'il ne faut pas vérifier tout un cache, mais seulement la partie qui ne contient pas de donnée en doublon. Par exemple, si la donnée voulue n'est pas dans le cache L1, on n'est pas obligé de vérifier la partie du cache L2 qui contient la copie du L1. Ainsi, pas besoin de vérifier certaines portions du cache, ce qui est plus rapide et permet de simplifier les circuits de vérification. En contrepartie, l'inclusion fait que qu'une partie du cache contient des copies inutiles, comme si le cache était plus petit. De plus, maintenir l'inclusion est compliqué et demande des circuits en plus et/ou des échanges de données entre caches.
[[File:Caches inclusifs.png|centre|vignette|upright=2|Caches inclusifs]]
Maintenir l'inclusion demande de respecter des contraintes assez fortes, ce qui ne se fait pas facilement. Premièrement, toute donnée chargée dans un cache doit aussi l'être dans les caches de niveau inférieur. Ensuite, quand une donnée est présente dans un cache, elle doit être maintenue dans les niveaux de cache inférieurs. De plus, toute donnée effacée d'un cache doit être effacée des niveaux de cache supérieurs : si une donnée quitte le cache L2, elle doit être effacée du L1. Ces trois contraintes posent des problèmes si chaque cache décide du remplacement des lignes de cache en utilisant un algorithme comme LRU, LFU, MRU, ou autre, qui utilise l'historique des accès. En effet, dans ce cas, le cache décide de remplacer les lignes de cache selon l'historique des accès, historique qui varie suivant chaque niveau de cache. Par exemple, une donnée rarement utilisée dans le L2 peut parfaitement être très fréquemment utilisée dans le L1 : la donnée sera alors remplacée dans le L2, mais sera maintenue dans le L1. On observe aussi des problèmes quand il existe plusieurs caches à un seul niveau : chaque cache peut remplacer les lignes de cache d'une manière indépendante des autres caches du même niveau, donnant lieu au même type de problème.
Pour maintenir l'inclusion, les caches doivent se transmettre des informations qui permettent de maintenir l'inclusion. Par exemple, les caches de niveaux inférieurs doivent prévenir les niveaux de cache supérieurs quand ils remplacent une ligne de cache. De plus, toute mise à jour dans un cache doit être répercutée dans les niveaux de cache inférieurs et/ou supérieurs. On doit donc transférer des informations de mise à jour entre les différents niveaux de cache. Généralement, le contenu des caches d'instruction n'est pas inclus dans les caches de niveau inférieurs, afin d'éviter que les instructions et les données se marchent sur les pieds.
Enfin, il faut aussi savoir que la taille des lignes de cache n'est pas la même suivant les niveaux de cache. Par exemple, le L2 peut avoir des lignes plus grandes que celles du L1. Dans ce cas, l'inclusion est plus difficile à maintenir, pour des raisons assez techniques.
==Le ''cache bypassing'' : contourner le cache==
Dans certaines situations, le cache n'est pas utilisé pour certains accès mémoire. Diverses techniques permettent en effet d'effectuer des accès mémoire qui contournent le cache, qui ne passent pas par le cache. Ils sont utilisés quand l'accès en cache fait que des instructions normales ne fonctionnent pas. Par exemple, de tels accès directs à la RAM sont notamment utilisés pour l'implémentation d'instructions atomiques, une classe d'instructions spécifiques utilisées sur les processeurs multicœurs, dont nous parlerons dans plusieurs chapitres. Mais ils sont aussi utilisés pour l'accès aux périphériques, ce que nous allons voir maintenant.
===Accéder aux périphériques demande de contourner le cache===
Pour rappel, un périphérique (au sens d'entrée-sortie) contient des registres d’interfaçage qui ont une adresse au même titre que les cases mémoire. Un périphérique peut à tout instant modifier ses registres d’interfaçage, ce qui se répercute automatiquement dans l'espace d'adressage, mais rien de tout cela n'est transmis au cache. Si les accès aux périphériques passaient par l'intermédiaire du cache, on aurait droit à des problèmes. On aurait encore une fois droit à des problèmes de cohérence des caches. Le problème est géré différemment suivant que l'on utilise un espace d'adressage séparé ou des entrées-sorties mappées en mémoire.
La solution est que les accès aux périphériques ne doivent pas passer par l’intermédiaire du cache. Cela demande d'adapter le cache et le processeur. L'implémentation exacte dépend de comment sont adressés les périphériques. Pour rappel, il y a deux solutions pour adresser les périphériques : soit les périphériques disposent d'un espace d'adressage séparé de celui de la mémoire, soit il y un espace d'adressage unique partagé entre processeur et mémoire. Les deux cas donnent des solutions différentes.
Avec un espace d'adressage séparé, l'espace d'adressage des périphériques n'est pas caché : aucun accès dans cet espace d'adressage ne passe par le cache. La mémoire cache n'est utilisée que pour l'espace d'adressage des mémoires, rien d'autre. C'est de loin le cas le plus simple : il suffit de concevoir le processeur pour. Il dispose d'instructions séparées pour les accès aux registres d’interfaçage et à la RAM/ROM, les premières ne passent pas par le cache, les autres si.
Avec des entrées-sorties mappées en mémoire, la même solution est utilisée, mais dans une version un peu différente. Là encore, les accès aux périphériques ne doivent pas passer par l’intermédiaire du cache, si on veut qu'ils marchent comme ils le doivent. Cela demande d'adapter le cache et le matériel pour que accès aux périphériques mappés en mémoire contournent le cache. Des adresses, voire des zones entières de la mémoire, sont marquées comme étant non-cachables. Toute lecture ou écriture dans ces zones de mémoire ira donc directement dans la mémoire RAM, sans passer par la ou les mémoires caches. Là encore, le processeur doit être prévu pour : on doit pouvoir le configurer de manière à marquer certaines zones de la RAM comme non-cacheable.
Reste qu'il faut marquer des régions de la RAM comme non-cacheable. Pour cela, on améliore les registres de configuration du cache, vus plus haut, afin qu'ils permettent de configurer certaines portions de la RAM pour préciser qu'elles ne doivent pas être mises en cache, qu'il faut activer le contournement de cache pour celles-ci.
===Contourner le cache pour des raisons de performance===
Il arrive que des données avec une faible localité soient chargées dans le cache inutilement. Or, il vaut mieux que ces données transitent directement entre le processeur et la mémoire, sans passer par l'intermédiaire du cache. Pour cela, le processeur peut fournir des instructions d'accès mémoire qui ne passent pas par le cache, à côté d'instructions normales. De telle instructions sont appelées des '''instructions mémoire non-temporelles'''. Non-temporelle, dans le sens : pas de localité temporelle (c.a.d que les données ne seront pas réutilisées plus tard).
Mais il existe aussi des techniques matérielles, où le cache détecte à l'exécution les lectures qui gagnent à contourner le cache. La dernière méthode demande d'identifier les instructions à l'origine des défauts de cache, le processeur accédant directement à la RAM quand une telle instruction est détectée. Si une instruction d'accès mémoire fait trop de défauts de cache, c'est signe qu'elle gagne à contourner le cache. L'idée est de mémoriser, pour chaque instruction d'accès mémoire, un historique de ses défauts de cache. Il existe plusieurs méthodes pour cela, mais toutes demandent d'ajouter de quoi mémoriser l'historique des défauts de cache des instructions. L'historique est mémorisé dans une mémoire appelée la '''table d’historique des défauts de lecture''' (''load miss history table''), qui est souvent un cache.
L'historique en question est, dans sa version la plus simple, un compteur de quelques bits incrémenté à chaque succès de cache et décrémenté à chaque défaut de cache, qui indique si l'instruction a en moyenne fait plus de défauts ou de succès de cache. La table associe le ''program counter'' d'une instruction mémoire à cet historique. À la première exécution d'une instruction d'accès mémoire, une entrée de cette table est réservée pour l'instruction. Lors des accès ultérieurs, le processeur récupérer les informations associées et décide s'il faut contourner le cache ou non.
===Le cas particulier du processeur MIPS R8000===
Le processeur MIPS R8000 intégrait une forme de ''cache bypassing'', qui est, à ma connaissance, totalement inédite. Et pour la comprendre, faisons un léger rappel. Les processeurs qui supportent les nombres flottants disposent d'instructions de lecture/écriture spécialisées pour les nombres flottants, séparées des instructions LOAD et STORE classiques. Elles sont souvent appelées FLOAD et STORE. Les fait de séparer les instructions LOAD/STORE des instructions FLOAD/FSTORE permet d'implémenter des optimisations, ce qui est le cas ici.
Sur le MIPS R8000, les instructions FLOAD et FSTORE contournaient le cache, à savoir que les flottants étaient lus/écrits sans passer par la mémoire cache. La raison à cela est que les applications de l'époque avaient une bonne localité spatiale et temporlle pour les instructions LOAD et STORE classiques, mais une très mauvaise localité spatiale et temporelle pour leurs équivalents flottant. Concrètement, les applications faisant beaucoup de calculs flottants profitaient peu de la présence de mémoire cache. Si les flottants passaient dans le cache, ils pollueraient le cache, à savoir qu'ils remplaceraient des données bien plus utiles.
Les choses sont cependant compliquées par la hiérarchie de cache un peu bizarre de ce processeur. Le processeur MIPS R8000 avait deux caches L1, un pour les données et un pour les instructions. De plus, il pouvait utiliser un cache L2 externe, placé sur la carte mère. Les instructions LOAD et STORE ne contournaient pas les caches L1 et L2, ce qui fait que les nombres entiers et adresses pouvaient sans problème être copiés dans le cache L1 de données. Les instructions FLOAD et FSTORE ne passaient pas par le cache L1, mais atterrissaient dans le cache L2. En clair, le cache L1 de données était contourné, mais pas le cache L2. Toute lecture/écriture flottante se faisait dans le cache L2 externe, elle contournait automatiquement le cache L1.
Comme toute forme de ''cache bypassing'', le MIPS R8000 devait faire face à des problèmes de cohérence des caches, qui apparaissaient des des situations bien spécifiques. Les problèmes survenaient quand des entiers et des flottants étaient mixés entre dans dans une même structure de donnée (voire quand un mot contenait indifféremment entier et flottant, grâce à l'usage d'unions). Une écriture flottante pouvait modifier un mot mémoire, sans que la copie dans le cache L1 soit modifiée. Idem avec une écriture entière, qui pouvait modifier un mot dans le cache L1, sans que le cache L2 soit au courant.
Pour résoudre le problème, les écritures flottants étaient partiellement prises en compte par le cache L1. Le flottant écrit n'était pas écrit dans le cache L1, mais l'adresse de l'écriture était envoyée au cache L1, pour que celui-ci vérifie s'il détient une copie de cette adresse. Si c'est le cas, la ligne de cache correspondante était invalidée. Pour gérer ces invalidations, chaque ligne de cache était associée à un bit de validité, qui était mis à 1 lorsque la donnée était chargée depuis la mémoire RAM. Les écritures flottantes mettaient à 0 ce bit de validité, les écritures entières le remettaient à 1.
==Les caches splittés (''phased caches'')==
Dans cette section, nous allons voir les '''caches splittés''' (''phased caches''), dans lequel le cache est accédé en deux étapes consécutives. Il ne s'agit pas des caches pipelinés, que nous verrons dans le chapitre sur les processeurs pipélinés, mais laissons cela à plus tard. Nous allons partir du principe que ce sont des caches ''direct-mapped'', mais l'optimisation peut être utilisée sur un cache associatif par voie.
L'idée est de scinder le cache en deux : une mémoire pour les tags, une autre pour les données de la ligne de cache. Les bits de contrôle peuvent être mis dans l'une ou l'autre SRAM, mais ils sont souvent mis dans la RAM pour les tags. En faisant cela, quelques optimisations deviennent possibles, afin de réduire la consommation énergétique en contrepartie d'une perte de performance. La technique s'implémente différemment pour les caches totalement associatifs et partiellement associatifs.
Les caches totalement associatifs splittés sont ceux formés en combinant un cache associatif avec une CAM et une RAM combinée. On envoie l'adresse à lire/écrire à la mémoire associative, elle répond en envoyant une adresse à la mémoire RAM. L'accès se fait donc en deux temps, avec l'adresse dans la RAM comme intermédiaire. Il est possible de séparer physiquement les deux étapes en insérant un registre entre la CAM et la RAM, ce qui permet aussi de pipeliner l'accès. Mais c'est rarement fait en pratique, car le cout en circuit d'une mémoire CAM est trop important. L'équivalent pour un cache totalement associatif optimisé, sans CAM et RAM séparée, est trop gourmande en interconnexions pour être implémentée. Les caches totalement associatifs splittés sont donc très rares, l'auteur ne connait aucun exemple de processeur avec un tel cache.
Il existe une technique équivalente pour les caches ''direct-mapped'', mais elle demande une certaine modification du cache. Dans les caches ''direct-mapped'' non-splittés, on trouve une mémoire SRAM dont chaque mot mémoire contient une ligne de cache entière, tag inclus. Dans leurs versions splittés, la SRAM est séparée en deux : une pour les tags, une autre pour les données. Précisons qu'il s'agit bien de deux mémoires SRAM adressables. L'adresse à laquelle accéder est envoyée à la SRAM des tags, puis ensuite à la SRAM des données si besoin.
L'idée est d’accéder aux tags pour déterminer s'il y a un succès de cache ou un défaut, et ensuite d'accéder aux données. On n’accède pas aux données en parallèle des tags. Faire cela est évidemment plus lent. En cas de défaut de cache, le temps d'accès est similaire : le tag ne correspond pas, on n'accède pas à la SRAM pour les données. Par contre, vu qu'on n'a pas activé la SRAM pour les données, on économise un peu d'énergie, ce qui réduit la consommation d'énergie. En cas de succès de cache, on accède à la SRAM pour les tags, puis à celle pour les données. Pas d'économie d'énergie à l'horizon, sans compter que le temps d'accès augmente : on accède au cache en deux étapes au lieu de faire les deux accès en parallèle.
[[File:Phased cache.png|centre|vignette|upright=1.5|Phased cache]]
Précisons cependant que ce design peut avoir deux avantages en termes de performance. Premièrement, le temps d'accès au cache est légèrement amélioré en cas de défaut de cache. En effet, la SRAM des tags est assez petite, idem pour celle des données. Leur temps d'accès est donc plus faible que pour une grosse SRAM contenant données et tags. Le gain en temps d'accès est donc un avantage, qui ne se manifeste surtout en cas de défaut de cache. Un autre avantage est que l'accès au cache se pipeline plus facilement, ce qui fait qu'on peut effectuer plusieurs accès simultanés au cache. Mais nous verrons cela dans quelques chapitres.
Un autre avantage est que les caches splittés se marient asse bien avec les caches externes, et cela mérite d'en parler plus en détail.
===Les caches splités externes===
Les caches splittés sont surtout utilisés par des caches externes, situé en-dehors du processeur. Intuitivement, on se dit que les ''tags'' et les données sont tous deux placés en dehors du processeur. Un exemple est celui du Pentium 2 pour ordinateurs mobiles, illustré ci-dessous, qui avait un cache L2 splitté, totalement en dehors du processeur, ''tags'' comme données. Et c'est paradoxalement une minorité, car elle ne profite pas vraiment de la séparation ''tags''/données.
[[File:Intel MMC1 arch.svg|centre|vignette|upright=2|Intel MMC1 architecture.]]
Une optimisation place les ''tags'' dans le processeur, alors que les données sont dans un cache externe. Un exemple est celui du cache L2 du processeur UltraSPARC III. Son cache L1 était un cache normal, non-splitté. Le cache était splitté : les ''tags'' étaient dans le processeur, alors que les données étaient dans un cache situé en-dehors du processeur, sur la carte mère. Le fait d'intégrer les ''tags'' dans le processeur faisait que consulter les ''tags'' était très rapide, accéder aux données était plus lent. En contrepartie, la SRAM des données était bien plus grosse.
Intégrer les ''tags'' dans le CPU et les données dans un demi-cache externe permet de profiter de la séparation entre ''tags'' et données. Un cache de dernier niveau a un budget en transistors limité. Un processeur normal va l'utiliser pour les ''tags'' et les données. Mais avec un cache splitté, on peut l'utiliser totalement pour les ''tags'', alors que les données sont déportées en dehors du processeur. Le cache de dernier niveau gagne donc fortement en capacité, au prix d'un déficit au niveau du temps d'accès, vu que les données sont lues depuis l'extérieur du processeur.
===Le contrôleur de cache 82385 pour les CPU Intel 386===
Il est important de noter que la séparation entre tags et RAM peut être telle que les deux ne sont pas sur la même puce de silicium ! Voire que les deux sont séparés du processeur ! C'était le cas quand les mémoires caches ont été introduites sur les processeurs grand public, notamment sur les premiers processeurs Intel. La miniaturisation n'avait pas avancé au point où placer un cache dans le processeur était possible.
Sur le processeur 386 d'Intel, le cache était un cache splitté, séparé du processeur. Concrètement, le processeur i386 était couplé à un contrôleur de cache Intel 82385 et une mémoire SRAM. Le 82385 contenait les ''tags'' et les bits de contrôle, la SRAM contenait les données, les lignes de cache. Un point important est que les lignes de cache faisaient seulement 32 bits/4 octets, pas plus ! On était loin des lignes de cache actuelles, faisant 64 octets/512 bits. Mais c'était beaucoup plus pratique, vu que le bus système faisait 32 bits de large, idem pour l'interface avec le processeur.
Le schéma ci-dessous montre comment le cache s'intégrait avec le bus système. Pour le bus de commande, le cache servait d'intermédiaire : il recevait les commandes et les filtrait suivant les succès/défauts de cache. En cas de succès de cache, les commandes de lecture n'étaient pas envoyées à la mémoire RAM. Les adresses étaient transmises à la fois au cache et au bus système (avec un registre entre le bus système et le processeur). Le bus de donnée était lui connecté à la mémoire SRAM et au processeur, avec des MUX/DEMUX pour faire le choix de la source des lectures.
[[File:Controleur de cache 82385 pour l'Intel 386.png|centre|vignette|upright=2.5|Contrôleur de cache 82385 pour l'Intel 386]]
Le 82385 surveillait ce qui se passait sur le bus et répondait à la place de la RAM pour certaines lectures. C'était un intermédiaire assez passif, qui se contenait de répondre aux succès et défauts en lecture. Le cache était un cache ''write through'' un peu particulier. En cas de succès de cache pour une écriture, le cache met à jour sa ligne de cache et propage l'écriture en mémoire RAM. Par contre, si une écriture fait un défaut de cache, la donnée n'est pas écrite dans le cache. Le seul moyen pour copier une donnée dans le cache était un défaut pour une lecture.
Le 82385 pouvait commander soit un cache ''direct mapped'', soit associatif à deux voies. Le choix entre les deux était le fait d'une entrée : la mettre à 0 indiquait un cache ''direct mapped'', la mettre à 1 forçait un cache à deux voies. La différence entre les deux est que le 82385 était relié à une mémoire SRAM avec un cache ''direct mapped'', deux SRAM pour deux voies. Pour avoir un cache associatif à deux voies, le 82385 devrait gérer deux signaux ''chip select'' pour activer chaque SRAM/voie suivant les besoins. Il avait précisément quatre signaux CS : deux par SRAM, un pour les lectures, un pour les écritures. Notons que les lignes de cache faisaient 32 bits, ce qui pouvait d'obtenir soit avec une SRAM 32 bits, soit avec deux SRAM 16 bits, soit avec 4 SRAM 8 bits. Le 82385 rajoutait 4 sorties, pour masquer chaque octet dans ces 32 bits, qui sont techniquement des signaux ''Output Enable'' pour 4 SRAM 8 bits.
[[File:Interface entre le 82385 et la SRAM du cache.png|centre|vignette|upright=2|Interface entre le 82385 et la SRAM du cache. Beaucoup d'entrées et de sorties liées au bus d'adresse ne sont pas représentées.]]
Il gérait aussi les accès mémoire non-cacheable, à savoir des accès mémoire qui ne doivent pas être pris en compte par le cache. Il considérait certains accès mémoire comme "à ne pas cacher". Notamment, les accès mémoire à une entrée-sortie ne sont pas cachés. Pour rappel, le processeur utilisait un espace d'adressage séparé pour les entrées-sorties, et utilisait donc un bit IO, qui était utilisé par le 82385 pour savoir si l'accès mémoire doit être caché ou non. Il en est de même pour les accès ayant lieu lors d'une interruption, qui ne passent pas par le cache.
Mais au-delà de cette inhibition automatique du cache, le 82385 avait une entrée NCA (''Non Cacheable Access'') : le cache était "désactivé" quand cette entrée était à 1. C'est un peu une sorte de ''chip select'' pour le 82385, limitée aux accès mémoire. Cette entrée permettait de programmer des intervalles d'adresse auxquels ne pas répondre, en utilisant des circuits de décodage d'adresse adaptés. Il avait aussi une entrée X16, qui permettait d'identifier les accès soit à un composant 16 bits. De tels accès ne doivent pas être mis en cache, sans doute parce que cela ne collait pas avec la taille des lignes de cache (32 bits). Et cette entrée permettait d'inhiber ces accès 16 bits d'agir sur le cache, en utilisant le bit du bus de commande adéquat.
Le 82385 pouvait être intégré dans un système à deux processeurs, voire plus. Pour cela, chaque processeur avait son propre 82385 et sa SRAM rien qu'à lui. Il n'y avait pas de cache partagé entre les deux processeurs. Par contre, les deux caches étaient reliés au même bus système. Pour qu'ils ne se marchent pas sur les pieds, il y avait des circuits d'arbitrage pour gérer l'accès au bus. Un des deux 82385 était mis en mode maitre, l'autre était en mode esclave. Le 82385 maitre pouvait prendre le contrôle du bus, le 82385 esclave devait demander l'autorisation au premier pour accéder au bus système.
Le 82385 gérait une forme limitée de cohérence des caches par invalidation. Dès que le 82385 détectait une prise de contrôle du bus par autre chose que le processeur, il surveillait les adresses transmises sur le bus. En cas de succès de cache, la ligne de cache associée était invalidée. Au-delà de ça, le 82385 avait une entrée FLUSH, qui ordonnait une invalidation totale du cache. Si cette entrée est mise à 1, toutes les lignes de cache sont invalidées. Les ''tags'' sont marqués comme invalides, mais les lignes de cache elles-mêmes ne sont pas touchées.
===L'exemple des processeurs Intel des microarchitecture ''Broadwell'' et ''Skylake''===
Un autre exemple est celui du cache L4 des processeurs Broadwell. Ces processeurs ont une organisation en ''chiplet'' où le processeur incorpore plusieurs puces séparées :
* une puce pour le processeur proprement dit ;
* une puce nommée ''Crystal Well'' contenant 128 mébioctets de mémoire eDRAM ;
* et une puce IO pour la communication avec la RAM et la carte mère.
Le cache L4 du processeur était un cache splitté : les données du cache L4 étaient dans ''Crystal Well'', alors que les Tags étaient soit dans le processeur lui-même, soit dans la puce IO ! La puce ''Crystal Well'' contenait quelques circuits pour gérer son rôle de mémoire cache, mais rien en ce qui concerne la gestion des tags eux-mêmes.
Sur les processeurs de microarchitecture ''Broadwell'', le cache L4 était un cache de victime, donc non-inclusif. Les ''tags'' du cache L4 étaient placés dans le CPU. À chaque accès mémoire au cache L3, les tags du cache L4 étaient consultés en parallèle. Vu que l'accès au L4 commençait en parallèle de l'accès au L3, l'accès au cache L4 était assez rapide, malgré le fait que les données étaient dans une puce à part.
Par la suite, dans certains CPU de microarchitecture ''skylake'', les tags ont été déplacés en-dehors du processeur, dans le contrôleur mémoire. En faisant cela, le cache L4 pouvait être utilisé plus efficacement par la carte graphique intégrée au CPU. Par contre, le temps d'accès augmente comparé à la solution précédente. On n'accède pas aux tags du L4 en parallèle du L3 : à la place, il faut consulter les tags du L3, détecter un défaut de cache L3, et ensuite accèder aux tags.
===Les caches RAM-configurables===
Un autre avantage des caches splittés est qu'on peut les modifier pour servir à la fois de mémoire cache, mais aussi de ''local store'', de mémoire RAM de petite taille. Le fonctionnement est assez simple à comprendre. Lors d'un accès au cache, on accède aux tags, puis à la RAM interne au cache. Lors d'un accès au ''local store'', on contourne l'accès au tags et on accède à la RAM interne au cache directement. Il s'agit de la technique du '''cache RAM-configurable''. L'usage de cache RAM-configurable est fréquent sur les cartes graphiques récentes, qui incorporent un ou plusieurs processeurs multicoeurs, dont le cache L1 de données est un cache RAM-configurable.
[[File:Hydride cache - local store.png|centre|vignette|upright=2.0|Hydride cache - local store]]
===La compression de cache===
Une autre optimisation permise par les ''phased caches'' est l'implémentation de techniques de '''compression de cache''', qui visent à compresser des lignes de cache. L'intérêt est qu'on peut stocker plus de données dans le cache, à capacité égale. L'inconvénient est qu'on doit compresser/décompresser les lignes de cache, ce qui demande un circuit en plus et allonge les temps d'accès. En effet, le temps mis pour compresser/décompresser une ligne de cache s'ajoute au temps d'accès. Aussi, la compression de cache sert surtout pour les caches de bas niveau dans la hiérarchie mémoire, les gros caches aux temps d'accès assez longs.
Une première technique, assez simple à implémenter et peu couteuse en circuit, est celle de la '''compression des lignes de cache nulles'''. Elle compresse uniquement les lignes de cache qui ne contiennent que des zéros. L'idée est qu'on ajoute, dans la mémoire des tags, un bit de contrôle pour chaque ligne de cache appelé le bit ''null''. Il indique si la ligne de cache ne contient que des zéros. Quand on lit une ligne de cache, la mémoire des tags est accédée et on vérifie le bit ''null'' : s'il vaut 1, on n'accède pas à la mémoire cache de données et un multiplexeur envoie un zéro sur le port de lecture. Le bit ''null'' est fixé lors de l'écriture d'une ligne de cache : elle passe dans un comparateur avec zéro relié à la mémoire des tags. La comparaison avec zéro peut se faire en parallèle de l'écriture ou avant (dans ce cas, on n'écrit pas la ligne de cache dans le cache).
Les autres techniques de compression de cache permettent de compresser autre chose que des lignes de cache nulles. L'idée est qu'une ligne de cache physique peut par moment mémoriser plusieurs lignes de caches compressées. Par exemple, prenons un cache dont les lignes de cache font 64 octets. Il est possible de compresser deux lignes de cache pour qu'elles fassent chacune 32 octets, et les stocker dans une seule ligne de cache. Les deux lignes de cache auront des tags différents, mais pointeront sur la même ligne de cache physique. Et cela demande d'utiliser un ''phased cache'' dont la mémoire pour les tags est plus grande que la mémoire pour les données. Il n'y a donc plus une bijection entre tags et ligne de cache, mais une relation surjective. Chose qui n'est possible qu'avec un ''phased cache''. De plus, des bits de contrôles associés à chaque ''tag'' indiquent où se trouvent les lignes de cache compressées dans la ligne de cache : est-ce que c'est les 32 octets de poids fort ou de poids faible ?
[[File:Compression de cache.png|centre|vignette|upright=2|Compression de cache]]
Il ne semble pas que les techniques de compression de cache soient implémentées sur les processeurs modernes. Aucun n'utilise de compression de cache, à ma connaissance. Il faut dire que les techniques connues sont de mauvais compromis : le temps d'accès du cache augmente beaucoup, le cout en circuit pourrait être utilisé pour un cache non-compressé mais plus grand. Et notons que la compression de cache ne marche que si les données peuvent se compresser. Si ce n'est pas le cas, une partie de la mémoire des tags est inutilisée.
Une revue de la littérature académique sur la compression de cache est disponible via ce lien, pour les curieux :
* [https://inria.hal.science/hal-03285041 Understanding Cache Compression, par Carvalho et Seznec].
==Les caches adressés par somme et hashés==
Les caches adressés par somme sont optimisés pour incorporer certains calculs d'adresse directement dans le cache lui-même. Pour rappel, certains modes d'adressage impliquent un calcul d'adresse, qui ajoute une constante à une adresse de base. Généralement, l'adresse de base est l'adresse d'un tableau ou d'une structure, et la constante ajoutée indique la position de la donnée dans le tableau/la structure. Les caches hashés et les caches adressés par somme permettent de faire l'addition directement dans la mémoire cache. Voyons d'abord les caches hashés, avant de passer aux caches adressés par somme.
Sur les '''caches hashés''', l'addition est remplacée par une autre opération, par exemple des opérations bit à bit du style XOR, AND ou OR, etc. Seulement, utiliser des opérations bit à bit pose un problème : il arrive que deux couples Adresse/décalage donnent le même résultat. Par exemple, le couple Adresse/décalage 11101111/0001 donnera la même adresse que le couple 11110000/0000. Dit autrement, deux adresses censées être différentes (après application du décalage) sont en réalité attribuées à la même ligne de cache. Il est toutefois possible de gérer ces situations, mais cela demande des astuces de haute volée pour faire fonctionner la mémoire cache correctement.
Sur les '''caches adressés par somme''', le décodeur est modifié pour se passer de l'addition. Pour comprendre comment, il faut rappeler qu'un décodeur normal est composé de comparateurs, qui vérifient si l'entrée est égale à une constante bien précise. Sur un cache ordinaire, l'addition est faite séparément du décodage des adresses par le cache, dans l'unité de calcul ou dans l'unité de génération d'adresse.
[[File:Non sum adressed cache.png|centre|vignette|upright=2|Cache normal.]]
Mais les caches adressés par somme modifient le décodeur, qui est alors composé de comparateurs qui testent si la somme adresse + décalage est égale à une constante.
[[File:Cache adressé par somme.png|centre|vignette|upright=2|Cache adressé par somme.]]
Chaque circuit du décodeur fait le test suivant, avec K une constante qui dépend du circuit :
: <math>A + B = K</math>
Ce qui est équivalent à faire le test suivant :
: <math>A + B - K = 0</math>
En complément à deux, on a <math>- K = \overline{K} + 1</math>. En injectant dans l'équation précédente, on a :
: <math>A + B + \overline{K} + 1 = 0</math>
En réorganisant les termes, on a :
: <math>A + B + \overline{K} = - 1</math>
Il suffit d'utiliser un additionneur ''carry-save'' pour faire l'addition des trois termes. Rappelons qu'un tel additionneur fournit deux résultats en sortie : une somme calculée sans propager les retenues et les retenues en question. Notons que les retenues sont à décaler d'un cran, vu qu'elles sont censées s'appliquer à la colonne suivante. En notant la somme S et les retenues R, on a:
: <math>S + (R << 1) = - 1 </math>, le décalage d'un cran à gauche étant noté <math><< 1</math>.
Ensuite, -1 est codé avec un nombre dont tous les bits sont à 1 en complément à un/deux.
: <math>S + (R << 1) = 111 \cdots 111111</math>
[[File:Sum + retenue add.png|centre|vignette|upright=2|Sum + retenue add]]
Un simple raisonnement nous permet de savoir si le résultat est bien -1, sans faire l'addition <math>S + (R << 1)</math>. En effet, on ne peut obtenir -1 que si la somme est l'inverse des retenues : un 0 dans le premier nombre correspond à un 1 dans l'autre, et réciproquement. En clair, on doit avoir <math>\overline{S} = R << 1</math>. Pour vérifier cela, il suffit de faire un simple XOR entre la somme et les retenues décalées d'un cran. On a alors :
: <math>S \oplus (R << 1) = 111 \cdots 111111</math>
La comparaison avec -1 se fait avec une porte ET à plusieurs entrées. En effet, la porte donnera un 1 seulement si tous les bits d'entrée sont à 1, ce qui est ce qu'on veut tester.
Au final, l'additionneur pour l'addition adresse + décalage est remplacé par un additionneur carry-save suivi d'une couche de portes XOR et d'un comparateur avec une constante, ce qui économise de circuits et améliore les performances.
[[File:Final circuit of sum addressed cache.png|centre|vignette|upright=2|Cache adressé par somme.]]
En prenant en compte que la constante K est justement une constante, certaines entrées de l'additionneur carry-save sont toujours à 0 ou à 1, ce qui permet quelques simplifications à grand coup d’algèbre de Boole. Chaque additionneur complet qui compose l’additionneur carry-save est remplacée par des demi-additionneurs (ou par un circuit similaire). Autant dire que l'on gagne tout de même un petit peu en rapidité, en supprimant une couche de portes logiques. Le circuit de décodage économise aussi des portes logiques, ce qui est appréciable.
==Les caches à accès uniforme et non-uniforme==
Intuitivement, le temps d'accès au cache est le même pour toutes les lignes de cache. Il s'agit de cache appelés '''caches à accès uniforme''', sous-entendu à temps d'accès uniforme. Mais sur les caches de grande capacité, il arrive souvent que le temps de propagation des signaux varie fortement suivant la ligne de cache à lire. D'ordinaire, on se cale sur la ligne de cache la plus lente pour caler la fréquence d'horloge du cache, même si on pourrait faire mieux. Cependant, les '''caches à accès non uniforme''' ont une latence différente pour chaque ligne d'un même cache. Certaines lignes de cache sont plus rapides que d'autres.
Niveau terminologie, nous allons parler de caches UCA et NUCA : ''Uniform Access Cache'' pour les caches à accès uniforme, ''Non-Uniform Access Cache'' pour les caches à accès non-uniforme.
[[File:Caches UCA et NUCA.png|vignette|Caches UCA et NUCA.]]
Les caches NUCA et UCA sont souvent composés de plusieurs banques séparées, typiquement une par voie. Sur les caches UCA, les banques sont interconnectées avec le processeur de manière à ce que toutes les interconnexions ont la même longueur pour toutes les banques. Typiquement, les banques sont organisées en carré, avec les interconnexions qui partent du centre, avec une disposition en H, illustrée ci-contre
Mais avec les caches NUCA, ce n'est pas le cas. Les interconnexions sont simplifiées et ont des longueurs différentes. Les caches NUCA n'ont pas tous le même genre d'interconnexions, qui dépendent du cache NUCA. En général, les interconnexion forme un réseau avec des sortes de routeurs qui redirigent les données/commandes vers la bonne destination : cache ou processeur. Les banques plus proches du processeur sont accessibles plus rapidement que celles éloignées, même si la différence n'est pas énorme.
Les caches NUCA sont généralement associatifs par voie. Les plus simples utilisent une banque par voie pour le cache, ce qui fait que certaines voies répondent plus vite que les autres. La détection des succès de cache est alors plus rapide si la donnée lue/écrite est dans une voie/banque rapide. En théorie, les défauts de cache demandent de vérifier toutes les banques, et se calent donc sur la pire latence. Mais divers caches se débrouillent pour que ce ne soit pas le cas, soit en vérifiant les banquyes unes par une, soit par un mécanisme de recherche plus complexe.
Les caches NUCA sont surtout utilisés pour les caches L3 et L4, éventuellement les caches L2. Les caches L1 sont systématiquement des caches UCA, car la latence de l'accès au cache L1 est utilisée par le processeur pour décider quand lancer les instructions. Pour simplifier, le processeur peut démarrer en avance une instruction avant qu'une opérande soit lue dans le cache L1, de manière à ce que la donnée arrive en entrée de l'ALU pile en même temps que l'instruction. Une histoire d'exécution dans le désordre et d'émission anticipée des instructions qu'on détaillera dans une bonne dizaine de chapitres. Toujours est-il que tout est plus simple pour le processeur si le cache L1 a un temps d'accès fixe. Par contre, les caches L3 et L4 sont traités en attendant que les données arrivent, le processeur reprend l'exécution des instructions quand les caches L3 et L4 ont terminé de répondre, pas avant.
Avec l'association une banque = une voie, la correspondance ligne de cache → bloc de mémoire qui est statique : on ne peut pas déplacer le contenu d'une ligne de cache dans une autre portion de mémoire plus rapide suivant les besoins. Mais la recherche académique a étudié le cas où la correspondance entre une ligne de cache et une banque varie à l’exécution. Pour nommer cette distinction, on parle de caches S-NUCA (''Static NUCA'') et D-NUCA (''Dynamic NUCA'').
Intuitivement, on s'attend à ce que les caches D-NUCA soient plus performants que les caches S-NUCA. Les lignes de cache les plus utilisées peuvent migrer dans une banque rapide, alors que les lignes de cache moins utilisées vont dans une banque éloignée. Les lignes de cache se répartissent dans le cache dynamiquement dans les banques où elles sont le plus adaptées. Mais paradoxalement, le gain des caches D-NUCA est presque nul, voire insignifiant. La raison est que les caches D-NUCA doivent incorporer un système pour déterminer dans quelle banque se situe la donnée pour détecter les succès/défauts de cache, ainsi qu'un système pour migrer les données entre banques. Et ce système augmente le temps d'accès au cache, réduisant à néant l'intérêt d'un cache D-NUCA. Si on économise quelques microsecondes de temps d'accès en passant d'un cache UCA à un cache S-NUCA, ce n'est pas pour les perdre en passant à un D-NUCA. La majorité des caches D-NUCA sont donc en cours de recherche, mais ne sont pas utilisés en pratique.
==La tolérance aux erreurs des caches==
Une mémoire cache reste avant tout une mémoire RAM, bien que ce soit de la SRAM. Elle n'est pas parfaite et est donc sujette à des erreurs, qui peuvent inverser un bit ou l'effacer. De telles erreurs sont liées à des rayons cosmiques très énergétiques, à des particules alpha produites par le packaging ou le métal deu circuit intégré, peu importe : l'essentiel est qu'ils inversent parfois un bit. Les mémoires modernes savent se protéger contre de telles erreurs, en utilisant trois moyens.
===Les mémoires caches ECC et à bit de parité===
Le premier moyen est l'usage de codes correcteurs d'erreurs, qui ajoutent un ou plusieurs bits à la ligne de cache, dans les bits de contrôle. Les bits ajoutés dépendent de la donnée mémorisée dans le byte, et servent à détecter une erreur, éventuellement à la corriger. Le cas le plus simple ajoute un simple bit de parité pour chaque byte et se contente de détecter les erreurs dans les corriger. Les autres codes ECC permettent eux de corriger des erreurs, mais ils demandent d'ajouter au moins deux bits par byte, ce qui a un cout en circuit plus élevé.
Un simple bit de parité permet de détecter qu'un bit a été inversé, mais ne permet pas de corriger l'erreur. En soi, ce n'est pas un problème. Si une erreur est détectée, on considère que la ligne de cache est invalide. Le cache gère la situation comme un défaut de cache et va chercher la donnée valide en mémoire RAM. Le cout en circuits est donc faible, mais les défauts de cache sont plus nombreux. Les codes ECC sont eux capables de corriger les erreurs, si elles ne modifient pas trop de bits d'un coup. Par contre, ils utilisent deux à trois bits par octet, ce qui a un cout en circuits loin d'être négligeable. Il y a donc un compromis entre défauts de cache et cout en circuits.
La gestion de l'ECC est différente suivant le niveau de cache. Par exemple, il y a une différence entre cache d'instruction et de données. Les caches d'instruction utilisent un bit de parité, alors que les caches de données utilisent l'ECC. La raison est que si une instruction est corrompue par un ''bitflip'', on peut juste la relire depuis le cache L2, voire la mémoire RAM. Pour les données, les choses sont plus compliquées, il n'y a pas forcément de copie à jour de la donnée dans les niveaux de cache inférieurs. Et les caches ''Write-Through'' et ''Write-Back'' ne sont pas égaux du point de vue de l'ECC.
Avec les caches ''write-back'' et/ou exclusifs, quand une donnée est modifiée dans le cache, seul le cache a une copie de la donnée valide. Les niveaux en-dessous n'ont pas de copie de sauvegarde de la donnée, seul le cache L1 a la donnée à jour. Ils ont donc intérêt à protéger cette donnée contre les erreurs, ce qui implique l'usage de l'ECC au minimum.
A l'opposé, les caches ''Write-Through'' n'ont pas ce problème : ils garantissent que toute donnée dans le cache est aussi recopiée ailleurs, que ce soit en mémoire RAM, dans le niveau de cache inférieur, ou dans un ''write buffer''/tampon d'écriture. En conséquence, le cache L1 n'utilise pas l'ECC mais se contente d'un simple bit de parité pour éviter la corruption de ses données. Si une ligne de cache L1 est corrompue, il a juste à aller lire la ligne depuis le cache L2, ou un niveau de cache inférieur. Le cache étant petit, les corruptions de données sont assez rares et les défauts de cache induits le sont aussi. De plus, cela entraine des économies substantielles de circuits.
Par contre, le niveau de cache L2 et ceux en-dessous utilisent presque systématiquement une mémoire SRAM ECC. La raison principale étant que ce sont des caches assez gros, pour lesquels la probabilité d'une erreur est assez élevée. Plus une mémoire a de bits et prend de la place, plus il y a une chance élevée qu'un bit s'inverse. Et vu que les caches L2/L3/L4 sont par nature plus lents et plus gros, ils peuvent se permettre le cout en performance lié à l'ECC, idem pour le cout en circuit. Sans compter qu'en cas d'erreur, ils doivent aller lire la ligne de cache originelle en mémoire RAM, ce qui est très lent ! Mieux vaut corriger l'erreur sur place en utilisant l'ECC.
En général, les processeurs préfèrent utiliser des caches ''Write-Back'' pour tous les niveaux, L1, L2 et L3, voire L4. Mais quelques rares processeurs préféraient utiliser des ''Write-Through'' pour le niveau L1, et seulement celui-ci. Un exemple est le Pentium 4 d'Intel, qui se débrouillait avec un L1 ''Write-Through'', sans tampon d'écriture. Les performances en écritures étaient de fait très mauvaises, du fait de l'absence de tampon d'ériture. Les processeurs AMD de microarchitecture Bulldozer avaient eu aussi un cache L1 ''Write-Through'', mais combinés avec un tampon d'écriture, pour conserver des performances acceptables. Le tampon d'écriture en question était un cache de 4 kibioctets, à 4 voies. Les performances du cache en écriture étaient cependant inférieures à celles des processeurs concurrents, qui utailisaient des caches ''Write-Back''
===L'usage du ''memory scrubbing'' sur les caches===
La plupart des erreurs ne changent qu'un seul bit dans un byte, mais le problème est que ces erreurs s'accumulent. Entre deux accès à une ligne de cache, il se peut que plusieurs erreurs se soient accumulées, ce qui dépasse les capacités de correction de l'ECC. Dans ce cas, il existe une solution appelée le ''memory scrubbing'', qui permet de résoudre le problème au prix d'un certain cout en performance.
Pour rappel, l'idée est de vérifier les lignes de caches régulièrement, pour éviter que les erreurs s'accumulent. Par exemple, on peut vérifier chaque ligne de cache toutes les N millisecondes, et corriger une éventuelle erreur lors de cette vérification. En faisant des vérifications régulières, on garantir que les erreurs n'ont pas le temps de s'accumuler, sauf en cas de malchance avec des erreurs très proches dans le temps. Il ne s'agit pas d'un rafraichissement mémoire, car les SRAM ne s'effacent pas), mais ça a un effet similaire.
Et évidemment, le ''memory scrubbing'' a un cout en performance. On peut faire une comparaison avec le rafraichissement mémoire : les rafraichissement réguliers réduisent les performances, car cela fait des accès en plus. Des accès qui sont de plus timés à des instants bien précis qui ne sont pas forcément les plus adéquats. Il est possible qu'un rafraichissement ait lieu en même temps qu'un accès mémoire et le rafraichissement a la priorité, ce qui réduit les performances. La même chose arrive avec les vérifications du ''memory scrubbing''. Malgré tout, la technique a été utilisée sur les caches de certains processeurs commerciaux, dont des processeurs AMD Athlon et Athlon 64. Elle est surtout utilisable sur les caches L2/L3, pour lesquels le cout du pseudo-rafraichissement est acceptable.
==Un exemple de cache : le cache d'instruction==
[[File:Separate unified.png|thumb|Cache d'instruction séparé du cache de données.]]
La grande majorité des processeurs utilise deux caches L1 séparés : un '''cache d'instructions''' dédié aux instructions, et un autre pour les données. Une telle organisation permet de charger une instruction tout en lisant une donnée en même temps. Notons que seul le cache L1 est ainsi séparé entre cache de données et d'instructions.
Les deux caches sont reliés au processeur par des bus séparés, l'ensemble ressemble à une architecture Harvard, mais où les caches remplacent les mémoires RAM/ROM. Le cache d'instruction prend la place de la mémoire ROM et le cache de données prend la place de la mémoire RAM. Évidemment, il y a des niveaux de caches en dessous des caches de données/instruction, et ceux-ci contiennent à la fois données et instructions, les deux ne sont pas séparées dans des mémoires/caches séparés. Raison pour laquelle l'ensemble est appelé une '''architecture Harvard modifiée'''. Architecture Harvard, car l'accès aux données et instructions se font par des voies séparées pour le processeur, modifiée car la séparation n'est effective que pour le cache L1 et pas les autres niveaux de cache, et encore moins la RAM.
Sur les processeurs modernes, il arrive très souvent que le processeur doive charger une instruction et lire/écrire une donnée en même temps. Et à vrai dire, c'est la règle plus que l'exception. L'usage d'une architecture Harvard modifiée permet cela très facilement : on peut accéder au cache d'instruction via un bus, et au cache de donnée avec l'autre.
Le cache d’instruction se situe en théorie entre l'unité de chargement et l'unité de décodage. En effet, ce cache prend en entrée une adresse et fournit une instruction. L'adresse est fournie par le ''program counter'', l'instruction est envoyée dans l'unité de décodage. Le cache se situe donc entre les deux. Le cache de données L1 est connecté au chemin de données, et notamment aux unités de communication avec la mémoire, pas au séquenceur.
[[File:Caches L1 et positions dans le processeur.png|centre|vignette|upright=2.5|Caches L1 et positions dans le processeur]]
===Pourquoi scinder le cache L1 en cache d'instruction et de données===
L'usage d'un cache d’instruction séparé du cache de données est à contraster avec l'usage d'un cache L1 multiport unique, capable de mémoriser à la fois instructions et données. Les deux solutions sont possibles ont été utilisées. Les premiers processeurs avaient un cache L1 unique et multiport, mais ce n'est plus le cas sur les processeurs modernes, car les contraintes ne sont pas les mêmes.
Le compromis à faire est celui entre deux petits caches rapides et un gros cache plus lent. Pour rappel, plus un cache est petit, plus il est rapide et chauffe moins. Donc au lieu d'utiliser, par exemple, un gros cache lent de 64 Kibioctets, on utilise deux caches de 32 kibioctets, plus rapides. La capacité totale est la même, mais le temps d'accès plus faible. En termes de temps d'accès, la meilleure solution est celle des deux caches simple port. Mais pour ce qui est de l'économie de circuits, c'est moins évident. Entre deux mémoires simple port et une mémoire multiport, la différence en termes de transistors est ambigüe et dépend de la capacité des caches. La différence est surtout notable pour les gros caches, moins pour les petits caches.
Il faut aussi tenir compte de la capacité effective. Avec deux caches séparés, la répartition de la capacité du cache L1 est fixée une bonne fois pour toutes. Par exemple, avec un cache d'instruction de 32 KB et un cache de données de 32 KB, impossible d'allouer 40 KB aux données et 20 aux instructions. Alors qu'avec un cache L1 unique de 64 KB, on pourrait le faire sans soucis. La répartition se fait naturellement, en fonction de la politique de remplacement du cache et est proche de l'optimal. C'est là un désavantage des caches d'instructions/données séparés : une capacité effective moindre.
Tout cela explique pourquoi le cache L1 est le seul à être ainsi scindé en deux, avec une séparation entre instructions et données : les contraintes au niveau du cache L1 et L2 ne sont pas les mêmes. Pour les caches L1, le temps d'accès est plus important que la capacité, ce qui favorise les caches séparés. Par contre, pour les caches L2/L3/L4, le temps d'accès n'est pas déterminant, alors que la capacité effective et l'économie en circuits sont significatives.
===La connexion des caches L1 avec le cache L2===
Pour les connexions avec le cache L2, tout dépend du processeur. Certains utilisent un cache L2 multiport, qui permet aux deux caches L1 de lire ou écrire dans le cache L2 simultanément.
[[File:Cache d'instructions.png|centre|vignette|upright=1.5|Cache d'instructions.]]
Si le cache L2 ne gère pas les accès simultanés, il n'y a qu'un seul bus relié aux caches L1 et au cache L2. On doit effectuer un arbitrage pour décider quel cache a la priorité, chose qui est réalisé par un circuit d'arbitrage spécialisé.
[[File:Circuit d'arbitrage du cache.png|centre|vignette|upright=1.5|Circuit d'arbitrage du cache.]]
Généralement, les caches d'instructions peuvent se permettre d'être plus petits que les caches de données, car les programmes sont souvent plus petits que les données manipulées. Songez que des programmes de quelques mébioctets peuvent parfois remplir la RAM avec plusieurs gibioctets de données. Lancez votre navigateur internet et ouvrez une page web un peu chargée, pour vous en convaincre !
===Les spécificités du cache d'instruction : lecture seule, bloquant, etc===
Les instructions sont rarement modifiées ou accédées en écritures, contrairement aux données. Et cela permet d'utiliser un cache simplifié pour les instructions. Autant un cache généraliste doit permettre les lectures et écritures depuis le processeur (avec les échanges avec la RAM), autant un cache d'instruction peut se contenter des lectures provenant du CPU et des échanges avec la RAM. Le cache d'instructions est donc très souvent en « lecture seule » : le processeur ne peut pas écrire dedans, mais juste le lire ou charger des instructions dedans.
Un cache d'instruction est donc plus simple qu'un cache pour les données : on peut retirer les circuits en charge de l'écriture (mais on doit laisser un port d'écriture pour charger les instructions dedans). Le gain en circuits permet d'utiliser un cache d'instruction plus gros ou au contraire de laisser de la place pour le cache de données. Le gain en termes de capacité compense alors un peu les inconvénients des caches séparés.
Par contre, cela complique la gestion du code automodifiant, c'est-à-dire des programmes dont certaines instructions vont aller en modifier d'autres, ce qui sert pour faire de l'optimisation ou est utilisé pour compresser ou cacher un programme (les virus informatiques utilisent beaucoup de genre de procédés). Quand le processeur exécute ce genre de code, il ne peut pas écrire dans ce cache L1 d'instructions, mais doit écrire dans le cache L2 ou en RAM, avant de recharger les instructions modifiées dans le cache L1. Cela qui prend du temps et peut parfois donner lieu à des erreurs si le cache L1 n'est pas mis à jour.
Les algorithmes de remplacement des lignes de cache optimaux pour les données ne le sont pas pour les instructions, de même que la taille optimale du cache, la taille des lignes de cache optimale, ou même les algorithmes de préchargement. Par exemple, pour le remplacement des lignes de cache, un simple algorithme LRU est presque optimal pour les instructions, autant il peut donner de mauvaises performances quand on manipule beaucoup de tableaux. Cela justifie d'utiliser des caches spécialisés pour chacune. On peut adapter le cache d'instruction à son contenu, ce qui le rend plus rapide ou plus petit à performance égale.
Les caches d'instructions sont généralement des caches bloquants. Il ne servirait à rien de rendre un cache d'instruction non-bloquant, le cout en circuits ne se traduirait pas par une augmentation significative des performances. À l'opposé, les caches de données sont non-bloquants sur les architectures modernes, pour des raisons de performance. Ce qui rend la séparation assez intéressante, les deux caches ayant des besoins différents et des implémentations différentes, cela permet d'optimiser le cout en transistors des caches.
===L'impact du cache d'instruction sur les performances===
Sur les architectures conventionnelles, le cache d'instruction a plus d'impact sur les performances que le cache de données. La raison principale est que les instructions ont une meilleure localité spatiale et temporelle que pour les données. Pour la localité spatiale, les instructions consécutives se suivent en mémoire, alors que rien ne garantit que des données utilisées ensemble soient regroupées en mémoire. Pour localité temporelle, elle est très variable pour les données, mais très courante pour les instructions du fait de l'usage fréquent des boucles et des fonctions.
: La présence de branchements atténue la localité temporelle des instruction, sauf que la majorité des branchements sautent à un endroit très proche, seuls les appels de fonction brisent la localité spatiale.
La conséquence est qu'il arrive que certains CPU aient un cache L1 d'instruction plus gros que celui pour les données. On parle alors de '''cache L1 asymétriques'''. Un exemple est celui des processeurs AMD de microarchitecture Zen, dont le cache d'instruction était deux fois plus gros que le cache de données. Leur cache d'instruction faisait 64 kibioctets, contre seulement 32 pour le cache de données.
D'ailleurs, il existe des processeurs assez extrêmes qui se contentent d'un cache d'instruction unique, sans cache de données. C'est le cas sur les processeurs vectoriels ou les GPU que nous verrons dans les chapitres de fin de ce wikilivres. De tels processeurs sont spécialisés dans la manipulation de tableaux de données, traitement qui a une faible localité temporelle. En conséquence, utiliser un cache de données n'est pas vraiment utile, voire peu être contreproductif, alors qu'un cache d’instruction fonctionne parfaitement.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Compléments sur les mémoires de masse
| prevText=Compléments sur les mémoires de masse
| next=Le préchargement
| nextText=Le préchargement
}}
</noinclude>
655majoe9u7sdtm45nvkcehmpr5bg1o
Les cartes graphiques/Les cartes accélératrices 2D
0
67390
775711
774451
2026-11-06T11:46:34Z
Mewtow
31375
/* L'implémentation matérielle et le cas particulier de la SNES */
775711
wikitext
text/x-wiki
Dans le chapitre précédent, nous avons vu les CRTC. Il est maintenant temps de voir les '''''Video Interface Controlers''''', des VDC qui gèrent des fonctionnalités de rendu 2D avancées, voire plus. Avec l'arrivée des interfaces graphiques (celles des systèmes d'exploitation, notamment) et des jeux vidéo 2D, les cartes graphiques ont pu s'adapter. Les cartes graphiques 2D ont d'abord commencé par accélérer le tracé et coloriage de figures géométriques simples, tels les lignes, segments, cercles et ellipses, afin d’accélérer les premières interfaces graphiques. Par la suite, diverses techniques d'accélération de rendu 2D se sont fait jour.
La base d'un rendu en 2D est de superposer des images 2D pré-calculées les unes au-dessus des autres. Par exemple, on peut avoir une image pour l’arrière-plan (le décor), une image pour le monstre qui vous fonce dessus, une image pour le dessin de votre personnage, etc. On distingue généralement l'image pour l'arrière-plan, qui prend tout l'écran, des images plus petites qu'on superpose dessus et qui sont appelées des '''sprites'''. Le rendu des ''sprites'' doit s'effectuer de l'image la plus profonde (l'arrière-plan), vers les plus proches (les ''sprites'' qui se superposent sur les autres) : on parle d''''algorithme du peintre'''.
[[File:Painter's algorithm.svg|centre|vignette|upright=2.0|Exemple de rendu 2D utilisant l'algorithme du peintre.]]
Il existe plusieurs techniques d'accélération graphique pour le rendu en 2D :
* L'accélération des copies dans la mémoire vidéo grâce à un circuit dédié. Elle aide à implémenter de manière rapide le défilement ou les ''sprites'', ou encore le tracé de certaines figures géométriques. Mais elle est moins performante que les trois suivantes, bien qu'elle lui soit complémentaire.
* L'accélération matérielle des ''sprites'', où les ''sprites'' sont stockés dans des registres dédiés et où la carte graphique les gère séparément de l'arrière-plan.
* L'accélération matérielle du défilement, une opération très couteuse.
* L'accélération matérielle du tracé de lignes/segments/figures géométriques simples.
Les quatre techniques ne sont pas exclusives, mais complémentaires. Elles ne sont pas utiles que pour les jeux vidéo, mais peuvent aussi servir à accélérer le rendu d'une interface graphique. Après tout, les lettres, les fenêtres d'une application ou le curseur de souris sont techniquement du rendu 2D. C'est ainsi que les cartes graphiques actuelles supportent des techniques d’accélération du rendu des polices d'écriture, une accélération du défilement ou encore un support matériel du curseur de la souris, toutes dérivées des techniques d'accélération de rendu 2D.
==Le circuit de ''Blitter'' : les copies en mémoire==
Les cartes 2D ont introduit un circuit pour accélérer les copies d'images en mémoire, appelé le '''blitter'''. Les copies de données en mémoire vidéo sont nécessaires pour ajouter les ''sprites'' sur l'arrière-plan, mais aussi lorsqu'un objet 2D se déplace sur l'écran. Déplacer une fenêtre sur votre bureau est un bon exemple : le contenu de ce qui était présent sur l'écran doit être déplacé vers le haut ou vers le bas. Dans la mémoire vidéo, cela correspond à une copie des pixels correspondant de leur ancienne position vers la nouvelle.
Sans ''blitter'', les copies étaient donc à la charge du processeur, qui devait déplacer lui-même les données en mémoire. Le ''blitter'' est conçu pour ce genre de tâches, sauf qu'il n'utilise pas le processeur. Pour ceux qui ont quelques connaissances avancées en architecture des ordinateurs, on peut le voir comme une sorte de contrôleur DMA amélioré. D'ailleurs, il est souvent combiné à un contrôleur DMA, voire fusionné avec lui. Il pouvait non seulement faire des copies, mais aussi appliquer des opérations bit à bit sur les données copiées.
===La superposition des ''sprites'' sur l'arrière-plan===
Les cartes 2D sans ''sprites'' matériels effectuent leur rendu en deux étapes : elles copient l'image d'arrière-plan dans le ''framebuffer'', puis chaque ''sprite'' est copié à la bonne place en mémoire pour le placer au bon endroit sur l'écran. Les copies de ''sprites'' sont généralement prises en charge par le ''blitter'', qui est spécialement optimisé pour cela. L'optimisation principale est le fait que le ''blitter'' peut effectuer une opération bit à bit entre les données à copier et une donnée fournie par le programmeur appelé un masque.
Pour voir à quoi cela peut servir, rappelons que les ''sprites'' sont souvent des images rectangulaires sans transparence ! Le sans transparence est très important pour ce qui va suivre. Idéalement, les ''sprites'' devraient contenir des zones transparentes pour laisser la place à l'arrière-plan, mais le hardware ne gère pas forcément des pixels transparents à l'intérieur des ''sprites''.
La transparence peut s'émuler facilement en utilisant un '''masque''', une donnée qui indique quelles parties de l'image sont censées être transparentes. Par exemple, prenons l'image ci-dessous à gauche et son masque à droite. Les parties blanches du masque sont censées être transparentes et ne pas être copiées au-dessus de l'arrière-plan, il ne faut le faire que pour les pixels noirs. Le masque indique quels pixels sont à copier ou non, ce qui demande simplement 1 bit par pixel. Le pixel est associé dans le masque à une couleur noire ou blanche, pas de niveaux de gris permis.
{|
|[[File:Pacman--------2.gif|vignette|Image de Pacman.]]
|[[File:Pacman mask.gif|vignette|Masque de Pacman.]]
|}
Le ''blitter'' combine le ''sprite'', l'arrière-plan et le masque. Pour chaque pixel, il effectue l'opération suivante : ((arrière-plan) AND (masque)) OR (image de pacman).
[[File:Sprite rendering by binary image mask.png|centre|vignette|upright=2|Sprite rendering by binary image mask]]
Imaginons qu'on veut placer l'image ci-dessus (le point vert), en plusieurs endroits de l'arrière-plan.
[[File:XBlit dot.png|centre|vignette|upright=3|Image et masque.]]
L'application d'un ET logique entre masque et arrière-plan met à zéro les pixels modifiés par le ''sprite'' et uniquement ceux-ci, ils sont mis à la couleur noire. Le OU copie le ''sprite'' dans le vide laissé, les parties noires sont ignorées. Au final, l'image finale est bel et bien celle qu'on attend.
{|
|[[File:Blit back.png|vignette|upright=3|Arrière-plan de l'exemple.]]
|[[File:XBlit and.png|vignette|upright=3|Application du masque - ET.]]
|[[File:XBlit final.png|vignette|upright=3|Application des ''sprites'' - OU.]]
|}
==Les ''sprites'' matériels==
Il existe des cartes 2D sur lesquelles les ''sprites'' sont gérés directement en matériel, sans passer par un ''blitter'', sans être copiés sur un arrière-plan préexistant. À la place, l'image est rendue pixel par pixel, à la volée. La carte graphique décide, à chaque envoi de pixel, s'il faut afficher les pixels de l’arrière-plan ou du ''sprite'' pendant l'accès au ''framebuffer'' par le CRTC.
Il faut noter que les ''sprites'' matériel ont une taille assez petite. Ils sont typiquement des carrés de 8 pixels de côté, rarement plus. Par contre, les ''sprites'' utilisés dans les jeux vidéos sont souvent plus grands, certains font 16 pixels de côtés, parfois plus. Aussi, les ''sprites'' d'un jeu vidéo sont parfois composés de plusieurs ''sprites'' matériels placés les uns à côté des autres. Par exemple, un ''sprite'' de 16 pixels de hauteur et de 8 pixels de largeur est composé de deux ''sprites'' 8 par 8, placés l'un au-dessus de l'autre.
Le support des ''sprites'' est parfois utilisé dans un cadre particulièrement spécialisé : la prise en charge du curseur de la souris, ou le rendu de certaines polices d'écritures ! Le curseur de souris est alors traité comme un ''sprite'' spécialisé, surimposé au-dessus de tout le reste. Les cartes graphiques modernes gèrent un ou plusieurs ''sprites'', qui représentent chacun un curseur de souris, et deux registres pour respectivement les coordonnées x et y du curseur. Ainsi, pas besoin de redessiner l'image à envoyer à l'écran à chaque fois que l'on bouge la souris : il suffit de modifier le contenu des deux registres, la carte graphique place le curseur sur l'écran automatiquement. Pour en avoir la preuve, testez une nouvelle machine sur laquelle les drivers ne sont pas installés, et bougez le curseur : ''lag'' garantit !
===Les circuits d'accélération matérielle des ''sprites''===
Avec une implémentation très simple, les ''sprites'' sont stockés dans des registres, alors que l'image d'arrière-plan est stockée dans un ''framebuffer'', dans une mémoire RAM. La RAM pour l'arrière-plan est généralement assez grosse, car l'arrière-plan a la même résolution que l'écran. Pour les ''sprites'', la mémoire est généralement très petite, ce qui fait que les ''sprites'' ont une taille limitée.
Pour chaque ''sprite'', on trouve deux registres permettant de mémoriser la position du sprite à l'écran : un pour sa coordonnée X, un autre pour sa coordonnée Y. Lorsque le CRTC demande à afficher le pixel à la position (X , Y), chaque triplet de registres de position est comparé à la position X,Y fournie par le CRTC. Si aucun ''sprite'' ne correspond, les mémoires des sprites sont déconnectées du bus et le pixel affiché est celui de l'arrière-plan. Dans le cas contraire, la RAM du ''sprite'' est connectée sur le bus et son contenu est envoyé au RAMDAC.
[[File:Hardware sprites.png|centre|vignette|upright=2.0|Sprites matériels.]]
Les jeux vidéos des consoles 8 ou 16 bits ne mémorisaient pas les ''sprites'' directement dans des registres. Les ''sprites'' étaient dans la cartouche de jeu, donc dans une mémoire ROM. Les registres de ''sprites'' mémorisaient l'adresse du ''sprite'', donc sa position dans la mémoire ROM. Les ''sprites'' étaient lus depuis la cartouche en cas de ''match'' avec les registres X et Y.
Les ''sprites'' allaient presque toujours de pair avec une gestion de la transparence. Dans le cas le plus simple, la transparence permet de ne pas afficher certaines portions d'un ''sprite''. Certains pixels d'un ''sprite'' sont marqués comme transparents, et à ces endroits, c'est l'arrière-plan qui doit s'afficher. Cela permet d'afficher des personnages ou objets complexes alors que l'image du ''sprite'' est rectangulaire. Cette gestion basique de la transparence ne permet pas de gérer des effets trop complexe, où on mélange la couleur du ''sprite'' avec celle de l'arrière-plan.
Les VDC avaient des limitations en termes de ''sprites'' matériels supportés. Notamment, ils géraient un nombre maximal de ''sprites'' par image. Cette limitation par image était secondée par une limitation du nombre de ''sprites'' par ligne. Par exemple, la NES et la Master Sytem géraient 64 ''sprites'' par image, avec maximum 8 ''sprites'' par ligne. Cependant, ces limitations pouvaient être contournées par l'usage de ''raster interrupts'', et précisément l'''horizontal blank interrupt'' qui précise quand l'affichage d'une ligne précise est terminée. L'idée est de changer les ''sprites'' d'une image et de les repositionner, pendant le tracé de l'image, entre l'affichage de deux lignes. Les ''sprites'' qui ont déjà été affichés en haut de l'écran sont remplacés par des ''sprites'' à afficher plus bas. Les programmeurs utilisaient ce genre de ruses pour afficher plus de ''sprites'' à l'écran que ne peut en supporter la console.
Les cartes 2D les plus simples ne géraient que deux niveaux : soit l'arrière-plan, soit un ''sprite'' devant l'arrière-plan. Il n'est donc pas possible que deux ''sprites'' se superposent, partiellement ou totalement. Dans ce cas, l'image n'a que deux niveaux de profondeur. C'était le cas sur les consoles de seconde et troisième génération, comme la NES ou la Sega Saturn. Par la suite, une gestion des ''sprites'' superposés est apparue. Pour cela, il fallait stocker la profondeur de chaque ''sprite'', pour savoir celui qui est superposé au-dessus de tous les autres. Cela demandait d'ajouter un registre pour chaque ''sprite'', qui mémorisait la profondeur. Le circuit devait donc être modifié de manière à gérer la profondeur, en gérant la priorité des ''sprites''.
Il faut noter que certaines consoles géraient des ''sprites'' situés sous l'arrière-plan. Quelques effets graphiques le requéraient. Par exemple, imaginez un personnage qui passe derrière un arbre. L'arbre est dessiné dans l'arrière-plan, afin d'économiser des ''sprites'', alors que le personage est composé de plusieurs ''sprites''. Avec des ''sprites'' pouvant passer derrière l'arrière-plan, on peut simuler cet effet de personnage qui passe derrière l'arbre, donc sous l'arrière-plan.
===La palette indicée des ''sprites''===
Certaines consoles de jeux utilisaient à la fois des ''sprites'' et une palette indicée. En soi, rien d'incompatible, les deux techniques sont totalement orthogonales. Mais il y a des consoles qui utilisaient deux palettes séparées : une pour les ''sprites'', l'autre pour l'arrière-plan. En général, les deux palettes ont une couleur commune : la couleur transparente. Elle est codée deux fois, une fois dans chaque palette. Mais les autres couleurs des palettes sont potentiellement différentes dans les deux palettes. L'usage de deux palettes indicées séparées est assez commun sur les consoles 8 bits.
L'utilité de ce système est de gérer deux fois plus de couleurs, tout en réduisant les besoins en mémoire. En théorie, on pourrait gérer deux fois plus de couleurs en utilisant une palette unique deux fois plus grande, ce qui serait plus flexible. Mais en utilisant une palette deux fois plus grande, on doit ajouter un bit en plus par pixel, pour encoder deux fois plus de couleurs. Avec deux palettes séparées pour les ''sprites'' et l'arrière-plan, pas besoin : le bit est implicite, il vaut 0 pour les ''sprites'' et 1 pour l'arrière-plan.
La Master System a deux palettes : une réservée à l'arrière-plan, l'autre servant à la fois pour les ''sprites'' et le décor. Les ''sprites'' ont à disposition 16 couleurs qu'ils peuvent configurer comme ils le souhaitent. La couleur de transparence n'est pas obligatoire. À l'inverse, la palette pour l'arrière-plan dispose de 15 couleurs configurables, et une couleur de transparence fixe. L'arrière-plan a donc à sa disposition 31 couleurs configurables : 16 provenant de la palette des ''sprites'', 15 provenant de l'autre palette, la 32ème couleur fixe étant la couleur de transparence.
La NES utilise un système de palette indicé assez complexe pour réduire encore plus le nombre de bits utilisé pour encoder un ''sprite''. Pour simplifier, elle dispose de 4 palettes pour les ''sprites''. Chaque palette gère 4 couleurs chacune, dont l'une est la couleur transparente, ce qui fait 3 couleurs configurables. Chaque ''sprite'' précise quelle palette utiliser avec deux bits de configuration précisés dans le registre associé au ''sprite''. L'avantage est que cela réduit grandement la quantité de mémoire utilisée pour stocker un ''sprite'' : deux bits par pixel du motif, deux pixels pour préciser la palette utilisée pour le ''sprite''. Au total, cela fait maximum 13 couleurs différentes : 3 couleurs fois 4 palettes plus la couleur de transparence. Même principe pour la palette de l'arrière-plan, qui est elle aussi découpée en 4 sous-palettes avec chacune ayant sa propre copie de la couleur de transparence.
De rares consoles 8 bits disposent de plus de deux palettes. Par exemple, la PC-Engine a 32 palettes indicées de 16 couleurs chacune. La première palette est toujours consacrée à l'arrière-plan, la dernière est toujours réservée aux ''sprites'', les 30 palettes restantes sont utilisables à volonté par le programmeur. L'avantage est que l'on peut utiliser une palette différente par ''sprite'', au lieu d'avoir une palette indicée partagée par tous les ''sprites''. Mine de rien, trouver un ensemble de couleur partagé par plus d'une dizaine de ''sprite'' est assez compliqué. Les graphismes sont donc plus colorés, sans que cela demande d'utiliser une palette trop large. Et quand on veut modifier la palette à la volée pour un seul ''sprite'', cette implémentation avec des palettes séparées est bien plus simple.
Les consoles comme la NES n'avaient que 4 couleurs par ''sprite''. Mais il y avait moyen de contourner ces limitations en superposant plusieurs ''sprites'' de couleurs différentes. Par exemple, on peut simuler un ''sprite'' de 8 couleurs avec deux ''sprites'' de 4 couleurs chacun. Quelques consoles avaient même des fonctionnalités matérielles pour faciliter cette superposition. Par exemple, la MSX 2 fait automatiquement un OU entre deux ''sprites'' superposés.
===Le zoom et la rotation des ''sprites''===
Il a existé des VDC qui pouvaient zoomer sur des ''sprites'', voire les faire tourner. Le ZOOM des sprites permet de faire grossir ou de réduire la taille d'un sprite dynamiquement. L'effet de zoom pouvait servir pour générer des effets de profondeur. Par exemple, quand on veut simuler un personnage qui se rapproche de l'écran en marchant/courant, il suffit de prendre son sprite et de grossir le zoom progressivement pour donner l'illusion d'un personnage qui se rapproche. Idem pour n'importe quel sprite : plus le sprite est loin, plus on en réduit la taille. L'idée est de gérer la taille des sprites en fonction de la profondeur du sprite. L'effet donnait un rendu en pseudo-3D. On parle alors de '''''Sprite Scaling'''''.
Les implémentations les plus simples permettaient de faire multiplier les dimensions d'un sprite par 2, 4, 8 fois. En clair, la largeur et la longueur du sprite étaient multipliés par 2, 4, 8, etc. Il y avait possibilité de séparer zoom vertical et horizontal. Quelques VDC ne supportaient que le zoom horizontal, d'autre que en vertical, mais la plupart de ceux qui supportaient le zoom supportaient les deux.
[[File:IllustrationOfAPixelReplicationProcess.svg|centre|vignette|upright=2|ZOOM Entier sur un "sprite".]]
Les implémentations plus complexes supportaient un zoom plus fluide, avec tous les intermédiaires possibles entre *1 et *X. Pour cela, le sprite devait subir des opérations d'interpolation pour avoir un rendu agréable à l'écran. Pour comprendre ce que cela veut dire : imaginez que vous souhaitez multiplier la taille d'un sprite par X. Pour multiplier par 2, 3, 4 ou tout autre entier, cela demande juste de dupliquer chaque pixel. Mais pour les valeurs fractionnaires, les choses sont plus compliquées. Vous devrez appliquer un filtre pour faire le zoom, filtre qui prend les valeurs des pixels et les mélange pour calculer les pixels finaux. Nous reviendrons sur les filtres possibles dans le chapitre sur le filtrage de texture. Vous avez bien lu : le zoom des sprites n'est pas si différent du filtrage de texture, les algorithmes utilisés pour zoomer sur les sprites et filtrer des textures sont d'ailleurs très similaires, voire identiques.
===L'effet miroir ou ''flipping''===
Une autre possibilité est de faire tourner les sprites. La technique la plus simple est un '''effet de miroir''', à savoir que le sprite est inversé horizontalement, il est tourné dans l'autre sens. Pour vous donner une idée de l'utilité de cette technique, imaginez que vous jouez à Mario : si vous allez à droite, Mario sera tourné vers la droite. Mais si vous allez à gauche, le sprite sera tourné à gauche. Mais il s'agit d'un seul sprite, qui est tourné dans un sens ou l'autre avec un effet de miroir.
Il est aussi possible d'inverser le sprite verticalement, pour le retourner. Mais cette possibilité est plus rarement utilisée. La raison est que les rares jeux où cela pourrait être utile sont des jeux en vue de dessus, par exemple les Zelda, les Pokemon, et d'autres jeux dans le genre. Mais ils utilisent souvent un effet de perspective qui fait que la caméra n'est pas placée exactement à la verticale, ce qui fait qu'inverser un sprite verticalement ne respecte pas la perspective.
Toutes les consoles 8 bits supportaient l'effet de miroir directement en matériel, celui-ci étant très utile. Une des rares exceptions était la Master System de Sega. Sur cette dernière, le GPU était un VDC TMS9918 de Texas Instrument qui ne gérait pas l'effet miroir. Deux autres consoles utilisaient ce VDC : la colevision et la Sega SG-1000. Elles avaient le même problème. Cependant, il était possible de gérer l'effet miroir en utilisant le CPU.
L'avantage de la technique est qu'elle réduit le nombre de ''sprites'' nécessaires, ce qui entraine un gain en mémoire ROM. Les concepteurs peuvent ainsi faire rentrer un jeu sur une cartouche plus facilement, voire peuvent en profiter pour rajouter des ''sprites''. Mais un défaut de cette méthode est que les personnages donnent l'impression d'être ambidextres ! Au passage, sur la Master System, les concepteurs de jeu n'avaient pas d'autre choix que d'utiliser des ''sprites'' séparés pour les personnages/ennemis vus de gauche et vu de droite. Et on peut le remarquer au fait que les ennemis/personnages ne sont pas ambidextres, les artistes ayant souvent pris en compte de détail.
<noinclude>Au passage, j'en profite pour vous renvoyer vers ce lien, qui détaille l'utilisation de l'effet de miroir dans plusieurs jeux :
* [https://upsilandre.over-blog.com/2019/09/asymetrie-ou-ambidextrie-il-faut-choisir.html ASYMÉTRIE OU AMBIDEXTRIE, IL FAUT CHOISIR], du blog "Upsilandre Retrogaming".</noinclude>
===La rotation des ''sprites''===
La '''rotation des ''sprites''''' regroupe plusieurs techniques diverses, qui vont de simples effets de miroir à des techniques de rotation complexes. L'effet miroir est techniquement une rotation de ''sprite'' particulière, mais ce n'est pas la seule. Les techniques plus évoluées permettent de faire tourner un sprite, pour faire comme si on voyait un objet de biais. Un sprite rectangulaire représente un objet vu soit de profil, soit de face. Mais si on veut donner l'illusion d'un objet faisant un angle différent, il faut modifier la forme du sprite. Le sprite rectangulaire est transformé en trapèze, qui est d'autant moins proche d'un rectangle que l'angle est important. Déformer un sprite rectangulaire en trapèze est un effet de rotation général. Le tout donne un '''effet de perspective'''.
[[File:Mode 7 Test-0000.png|centre|vignette|Mode 7, test.]]
[[File:Mode 7 process.svg|vignette|upright=1|Mode 7.]]
L'implémentation de la perspective est assez simple. Le sprite est une image formée de plusieurs lignes de pixels. L'idée est que la taille des lignes est d'autant plus réduite que la ligne est censée être loin. Les portions proches du sprite seront de taille normale, les autres sont réduites. Mais la technique demande cependant de multiplier la taille de chaque ligne par un coefficient, qui n'est pas forcément entier. Là encore, des algorithmes permettent de lisser les images des sprites pour les mettre à l'échelle. L'algorithme peut faire à la fois la gestion de la perspective et le zoom des sprites, et utiliser des algorithmes proches de ceux du filtrage de textures. Une implémentation complexe est celle du ''mode 7'' de la Super Nintendo, qui effectuait des rotations sur l'arrière-plan (pas les ''sprites'').
L'implémentation matérielle est paradoxalement assez simple. Mais la comprendre demande de faire la distinction entre les pixels du ''framebuffer'' et les pixels du ''sprite''. Le ''sprite'' est une image qui est composée de pixels. Pour faire la distinction avec les pixels du ''framebuffer'', nous allons appeler les pixels du ''sprite'' des '''texels'''. Terme qui est normalement utilisé pour les textures, mais il y a un lien qui sera fait dans quelques chapitres.
Placer le ''sprite'' sur l'arrière-plan demande de prendre les coordonnées de chaque ''texel'' et de faire un calcul qui donne les coordonnées finales x,Y dans le ''framebuffer''. Sans rotation et sans zoom, le calcul est simple : on additionne la position x,y du sprite et la coordonnée du texel dans le sprite. Pour faire tourner les sprites, il faut faire des calculs impliquant des matrices (des objets mathématiques en forme de tableaux de nombre), que je ne détaillerais pas du tout. Pour le dire très rapidement, il faut juste multiplier les coordonnées du texel par une matrice qui encode à la fois la rotation et le zoom, mais aussi le placement au bon endroit sur l'écran (la translation). La matrice est calculée par le processeur, le VDC ne fait que faire la multiplication matricielle.
==L'accélération matérielle du défilement==
[[File:Parallax scroll.gif|vignette|Exemple de ''scrolling''.]]
Le défilement permet de faire défiler l'environnement sur l'écran, spécialement quand le joueur se déplace. Les jeux de plateforme rétro utilisaient énormément le défilement, le joueur se déplaçait généralement de gauche à droite, ce qui fait que l'on parle de défilement horizontal. Mais il y avait aussi le défilement vertical, utilisé dans d'autres situations. Peu utilisé dans les jeux de plateforme, le défilement vertical est absolument essentiel pour les ''Shoot 'em up'' !
Les cartes accélératrices intégraient souvent des techniques pour accélérer le défilement. La première optimisation est l'usage du ''blitter''. En effet, défiler ne demande pas de régénérer toute l'image à afficher à partir de zéro. L'idéal est de déplacer l'image de quelques pixels vers la gauche, puis de dessiner ce qui manque. Pour cela, on peut utiliser le ''blitter'' pour déplacer l'image dans le ''framebuffer''. L'optimisation est souvent très intéressante, mais elle est imparfaite et n'était pas suffisante sur les toutes premières consoles de jeu. Elle l'était sur les consoles plus récentes, ou disons plutôt : moins rétro. Les consoles moins rétros avaient des mémoires RAM plus rapides, ce qui rendait l'usage du ''blitter'' suffisante.
Mais certains VDC implémentaient une forme de défilement accéléré en matériel totalement différent. Les implémentations sont multiples, mais elles ajoutaient toutes des registres de défilement dans le VDC, qui permettaient de défiler facilement l'écran. Il faut noter que l'implémentation du défilement vertical est bien plus simple que pour le défilement horizontal. En effet, les images sont stockées dans le ''framebuffer'' ligne par ligne ! Et le défilement vertical demande de déplacer l'écran d'une ou plusieurs lignes. Les deux vont donc bien ensemble.
===Le défilement vertical implémenté dans le CRTC===
Une technique utilise le fonctionnement d'un CRTC, couplé avec un ''framebuffer'' amélioré. Nous l’appellerons la technique du ''framebuffer'' étendu, terme de mon invention qui aide à comprendre en quoi consiste cette technique. Elle utilise cependant plus de mémoire vidéo qu'un ''framebuffer'' normal. Elle fonctionne très bien pour le défilement vertical, elle demande quelques adaptations pour le défilement horizontal.
[[File:Implémentation du défilement vertical accéléré en hardware via un pointeur de framebuffer.png|vignette|Implémentation du défilement vertical accéléré en hardware via un pointeur de framebuffer]]
La méthode demande d'utiliser un ''framebuffer'' beaucoup plus grand que l'image à afficher. Par exemple, imaginez qu'une console ait une résolution de 640*480, avec des couleurs sur 16 bits. L'image à afficher prend donc 640*480*2 = 600 Kilooctets. Maintenant, imaginez que la mémoire vidéo pour l'arrière-plan fasse 2 mégaoctets. On peut y stocker l’image à rendre, et ce qu'il y a hors de l'écran. Si une scène est assez petite, l'arrière-plan tient entièrement dans la mémoire vidéo, changer l'adresse de base permet de défiler l'écran sur une distance assez longue, voire pour toute la scène. L'idée est de tout simplement dire au CRTC de demander à afficher l'image à partir de la ligne numéro X !
Avec cette technique, il faut faire la différence entre le ''framebuffer'' et le '''''viewport'''''. Le ''viewport'' est la portion du ''framebuffer'' qui mémorise l'image à afficher à l'écran. Le ''framebuffer'', lui, mémorise plus que ce qu'il faut afficher à l'écran, il mémorise quelques lignes en plus, voire un niveau entier ! Le pointeur de ''framebuffer'' et la résolution indiquent la position du ''viewport'' dans le ''framebuffer'', qui monte ou descend en fonction du sens de défilement.
Pour la comprendre, prenez le cas où on souhaite défiler d'un pixel, verticalement vers le bas. La première ligne de l'image disparait, une nouvelle apparait en bas de l'image. Cas simple, un peu irréaliste, mais qui permet de bien comprendre l'idée. Pour rappel, un CRTC incorpore deux compteurs de ligne et de colonne, ainsi qu'un registre pour l'adresse de départ de l'image dans le ''framebuffer''. L'idée est que l'adresse de départ de l'image est augmentée de manière à pointer sur la ligne suivante, en l'augmentant de la taille d'une ligne. Il ne reste plus qu'à remplir la ligne suivante, pas besoin de faire la moindre copie en mémoire vidéo ! Et défiler vers le haut demande au contraire de retrancher la taille d'une ligne de l'adresse. On peut généraliser le tout pour du défilement vertical.
L'implémentation la plus complexe demande d'ajouter un '''registre de défilement vertical''', dans lequel on place le numéro de ligne à partir de laquelle il faut dessiner l'image. L'image en mémoire vidéo a plus de lignes que l'écran peut en afficher, le CRTC parcourt autant de ligne que ce que demande la résolution, le registre de défilement vertical indique à partir de quelle ligne commencer l'affichage. Le calcul de l'adresse prend en compte le contenu de ce registre pour parcourir le ''framebuffer''.
===Le défilement vertical infini : le ''warp-around'' des adresses===
La technique précédente fonctionne bien, mais elle ne permet pas d'avoir du défilement infini, à savoir avec des maps dont la longueur n'est pas limitée par la mémoire vidéo. Mais on peut l'adapter pour obtenir du défilement vertical, en utilisant un comportement particulier du calcul des adresses. Le comportement en question est le ''warp-around''.
Pour le comprendre, prenons l'exemple suivant. La mémoire vidéo peut contenir 1000 lignes, la résolution verticale est de 300 lignes. Si on démarre l'affichage à la 700ème ligne, tout va bien, on n'a pas besoin de ''warp-around''. Mais maintenant, imaginons que le défilement vertical fasse démarrer l'affichage à partir de la 900ème ligne. L'affichage se fera normalement pour 100 lignes, mais la 101ème débordera hors du ''framebuffer'', il n'y aura pas d'adresse associée. Le ''warp-around'' fait repartir les adresses à zéro lors d'un tel débordement. Ainsi, la 101ème adresse sera en fait l'adresse 0, la 102ème sera l'adresse 1, etc. En clair, si on commence à afficher l'image à la 900ème ligne, les 100 premières seront prises dans les 100 lignes à la fin du ''framebuffer'', alors que les 200 suivantes seront les 200 lignes au début du ''framebuffer''.
En faisant cela, on peut avoir un défilement vertical infini. Quand l'image affichée est démarrée assez loin, le début du ''framebuffer'' est libre, il contient des lignes qui ne seront sans doute pas affichées par la suite. Dans ce cas, on écrit dedans la suite du niveau, celle située après la ligne à la fin du ''framebuffer''. Il suffit que le programmeur se charge de modifier le ''framebuffer'' de cette manière et on garantit que tout va bien se passer.
Avec cette technique, on peut avoir un défilement infini en utilisant seulement deux fois plus de mémoire vidéo que ce qui est nécessaire pour stocker une image à l'écran. Il est même possible de tricher pour utiliser moins de mémoire vidéo. Mais laissons cela de côté, tout cela est laissé à l’appréciation du programmeur.
===Le défilement horizontal et vertical implémenté par le CRTC===
Pour le défilement horizontal, il faut procéder de la même manière, mais en trichant un peu. Là encore, il y a une différence entre ''viewport'' et ''framebuffer'', et les deux n'ont pas la même résolution. Mais cette fois-ci, outre la résolution verticale qui est plus grande, la résolution horizontale l'est aussi. Par exemple, si je prends la console de jeux NES, elle a une résolution pour l'écran de 256 par 240, alors que l'arrière-plan a une résolution de 512 par 480.
L'implémentation utilise des compteurs de ligne et de colonne séparés. L'idée est d'avoir des lignes plus longues dans le ''framebuffer'' que ce qui est indiqué dans le registre de résolution. On peut alors mémoriser une ligne plus longue que ce qui est affiché à l'écran, avec des portions non-affichées à l'écran.
L'idée est là encore d'initialiser le compteur de colonne avec une valeur qui est incrémentée d'un pixel à chaque fois qu'on défile vers la droite, décrémentée quand on va vers la gauche. Le registre pour la résolution horizontale, qui vérifie si la fin de la ligne/colonne est atteinte, est lui aussi incrémenté. La même méthode peut être utilisée pour le défilement horizontal en faisant la même chose pour le compteur de ligne. L'implémentation demande d'ajouter un registre de défilement horizontal, en plus du registre de défilement vertical, le principe derrière est le même mais pour le numéro de colonne et non de ligne.
[[File:Implémentation du défilement horizontal avec in viewport.png|centre|vignette|upright=2|Implémentation du défilement horizontal avec in viewport]]
Notons que le comportement de ''warp-around'' peut aussi être implémenté pour les adresses et compteurs de colonne. Cela permet d'avoir du défilement horizontal infini.
La fonctionnalité était disponible sur les cartes EGA, les toutes premières cartes d'affichage datant d'avant même le standard VGA. Tout était en place sur ces cartes graphiques pour implémenter la technique : une mémoire vidéo assez grande, un ''framebuffer'' potentiellement plus grand que ce qui est affiché à l'écran, une adresse de départ qu'on peut incrémenter ligne par ligne, par incréments de 1 pixel. Le logiciel devait cependant utiliser cette faculté adéquatement pour implémenter le défilement. Malheureusement, le BIOS des cartes VGA n'implémentait pas les optimisations du défilement, et les programmeurs devaient tout coder à la main dans leurs applications pour les utiliser.
==Les ''raster effects'' : défilement partiel et ''sprites'' supplémentaires==
Les '''''raster effects''''' sont des effets graphiques qui sont implémentés en modifiant le VDC pendant l'affichage de l'image. Par exemple, il est possible de changer la couleur de l'arrière-plan à partir d'une certaine ligne, afin de séparer le ciel du sol. Un exemple classique est celui qui permet de contourner le nombre maximal de ''sprites'' à l'écran.
===La limite de ''sprites'' par écran===
Un VDC normal ne peut gérer qu'un nombre maximal de ''sprites'' par image/écran. Mais grâce aux ''raster effects'', il est possible de dépasser cette limite, en changeant les ''sprites'' à la volée, pendant que l'image s'affiche. Par exemple, les ''sprites'' déjà affichés sont recyclés et remplacés par d'autres ''sprites''. Leur coordonnée passe d'une portion affichée de l'image (typiquement en haut de l'écran) à une portion pas encore affichée (typiquement plus bas).
En faisant cela, on peut afficher plus de ''sprites'' que ce que gére le VDC. Par contre, on ne peut pas dépasser la limite de ''sprite'' par ''scanline''. Par exemple, si un VDC gère maximum 64 ''sprites'' par imaeg et 8 ''sprites'' par ligne, la première limite est facilement contournée via les ''raster effects'', mais pas la seconde. Autant changer des ''sprites'' entre l'affichage de deux lignes est possible, autant le faire pendant l'affichage d'une ligne ne l'est pas. En effet, le VDC n'est souvent pas reconfigurable par le processeur pendant l'affichage d'une ligne. Il l'est entre l'affichage de deux lignes, pas pendant.
===Le défilement partiel===
De nombreux effets graphiques demandent de ne faire défiler qu'une partie de l'écran, le reste de l'écran reste en place. Dans ce cas, nous parlerons de '''défilement partiel''', le terme partiel indiquant qu'il ne touche qu'une portion de l'image. De tels effets sont généralement implémentés avec des ''raster effect'', mais il faut que le matériel le supporte pleinement.
Pour donner un exemple, prenez les phases d’ascenseur dans les jeux de type ''beat'them up'', où votre personnage est sur une plateforme qui monte/descend, les ennemis arrivant dessus par vagues successives. Dans ce cas, la plateforme est immobile et le reste de l'image défile verticalement vers le haut (ascenseur descend) ou vers le bas (ascenseur monte).
Un cas particulier de défilement partiel est celui utilisé pour le HUD : les compteurs de vie, score, et autres. Il arrive que le HUD soit dessiné avec des ''sprites'', mais ce n'est pas la majorité des cas. En réalité, le HUD est placé dans l'arrière-plan directement. Et il ne doit pas être défilé, pour rester en place. par exemple, si le HUD est placé au sommet de l'écran, il doit y rester et ne pas subir de défilement vertical ou horizontal.
D'autres effets demandent de changer le défilement ligne par ligne : des effets de vagues, d'ondulation, ou autre. Par exemple, c'est ce qui permet de créer des virages sur les jeux de course ! Il n'y a qu'une seule image de route en ligne droite, qu'on décale à chaque ligne pour simuler un virage !
D'autres effets demandent un défilement partiel à la verticale. Il a été utilisé pour le HUD, les Boss de grande taille de certains jeux, des effets d'eau qui monte et bien d'autres encore. Voici un article qui explique le tout en détail :
* [https://upsilandre.over-blog.com/2019/07/les-arcanes-du-scrolling-vertical.html LES ARCANES DU SCROLLING VERTICAL SUR NES]
Un problème est que le défilement doit être reconfigurable lors de l'affichage de l'image. La quasi-totalité des consoles permettait cela, avec cependant quelques exceptions. Par exemple, la Master System permettait de changer les ''sprites'' à la volée, idem pour le défilement horizontal, mais ne permettait pas de changer le défilement vertical pendant l'affichage d'une image. Sur Master System, le registre de défilement vertical était pris en compte uniquement au début de l'affichage, le modifier en cours d'affichage n'avait pas le moindre effet sur l'affichage. On parle alors de '''''Vlock'''''. Il était possible de contourner le problème avec des solutions logicielles, avec un cout en performance et quelques limitations quant au résultat.
===L'implémentation des ''raster effects''===
Les VDC étaient souvent conçus avec les ''raster effects'' en tête. Ils supportent souvent des fonctionnalités qui facilitent l'implémentation des ''raster effects'' : compteurs de ligne, interruptions horizontales, et autres que nous allons voir dans ce qui suit. En théorie, les ''raster effects'' peuvent se faire même si le VDC ne supporte pas ces fonctionnalités. Mais cela demande de synchroniser le processeur et le VDC au cycle près, ou presque. Les programmeurs de l'Atari 2600 faisaient ainsi, mais il faut avouer que ce n'était pas pratique.
La première fonctionnalité est le '''compteur de ligne'''. Le nom est assez transparent : il s'agit d'un registre qui contient le numéro de la dernière ligne affichée. Par exemple, si le VDC a affiché la 20ème ligne et se prépare à afficher la 21ème, alors ce compteur contient le numéro 20. Le compteur de ligne permet au processeur/logiciel de savoir où il en est lors de l'affichage de l'écran. Il peut regarder régulièrement ce compteur et changer le défilement et/ou les ''sprites'' quand un certain numéro apparait dans ce compteur de ligne.
Le compteur de ligne en question existe déjà dans la plupart des VDC, vu qu'il s'agit de celui vu dans les chapitres précédents, qui sert pour l'adressage de la mémoire vidéo et quelques autres fonctionnalités. Mais il n'est pas forcément accesible par le processeur. Les VDC anciens ont un compteur de ligne interne, qui n'est accesible que par les circuits du VDC, mais le processeur n'y a pas accès. La fonctionnalité dont on parle ici rend ce registre visible par le processeur, un peu comme l'est le registre d'état.
Une seconde fonctionnalité, très liée au compteur de ligne, est l''''''horizontal blank interrupt''''', une cousine de l'interruption de ''vertical blank interrupt'' qui indique qu'une image complète a été affichée à l'écran. L'''horizontal blank interrupt'' fait la même chose, mais au niveau des lignes et d'une manière configurable. L'idée est que l'on peut demander au VDC de déclencher une interruption quand il atteint la ligne numéro X, par exemple quand il a fini d'afficher la 20ème ligne, la 50ème, etc. Le programmeur peut précise à quelle ligne se déclenche l'interruption. Pour le dire autrement, cette interruption se déclenche quand le compteur de ligne atteint une valeur bien précise, configurable par le programmeur.
Prenons l'exemple où programmeur veut afficher un HUD de 30 pixels de hauteur au-dessus d'un arrière-plan qui défile horizontalement. L'image ne défile pas initialement et le jeu affiche d'abord le HUD. Mais le programmeur a configuré l'interruption pour se déclencher à la 30ème ligne. L'interruption réactive le défilement de l'arrière-plan et change l'affichage pour basculer du HUD vers l'arrière-plan.
Une autre fonctionnalité, spécifique à la SNES, est le '''HDMA''', une amélioration de la fonctionnalité DMA (''Direct Memory Access''). Le DMA normal permet de faire des copies de la RAM vers la RAM, parfois de la RAM vers la mémoire vidéo (et inversement). Le '''HDMA''' de la SNES étend le comportement du DMA. Elle permet de faire copies RAM -> VDC, pour reconfigurer le VDC. De plus, les copies sont programmées à l'avance, elles ne se font pas en réaction à une interruption de ''blanking'' horizontal. Précisément, le VDC est reconfiguré à chaque période de ''blanking'' horizontal, entre l'affichage de deux lignes.
Pour cela, le processeur prépare une table HDMA qui précise comment configurer le VDC pour chaque ligne à l'écran. Pour simplifier, la table HDMA contient des entrées, chacune correspondant à une ligne de l'écran, qui indique quoi envoyer dans les registres de configuration du VDC. Le VDC lit les entrées de la première à la dernière, ligne par ligne. Le fonctionnement réel est un peu plus complexe. La table permet de conserver la même configuration pour N lignes consécutives, N allant de 1 à 128. Quand le VDC voit une de ces entrées, les données de configuration sont recopiées à l'identique pour N lignes consécutives.
==L'usage de plusieurs arrière-plans et d'avant-plans==
Une carte graphique 2D basique gére un arrière-plan et un avant-plan contenant plusieurs ''sprites'', avec éventuellement un avant-plan pour le HUD ou une interface sur laquelle afficher les vies, et d'autres informations. En tout, cela fait trois plans aux usages bien précis. Mais il est possible d'ajouter plusieurs arrière-plans, voir plusieurs avant-plans. L'utilité n'est pas évidente, mais cela sert pour de nombreux effets graphiques. Voyons lesquels.
===Les décors à l'avant-plan===
Il faut noter que les cartes graphiques peuvent aussi gérer des avant-plans, à savoir des décors qui passent devant les ''sprites''. Une forme d'avant-plan très utile est celui pour le HUD, les compteurs de vie, mana, munitions et autres. Implémenter un HUD avec du défilement est compliqué, car le HUD ne doit pas défiler : il doit rester à la même place sur l'écran, alors que le reste de l'écran défile.
Il faut noter que les avant-plans ne sont pas forcément séparés des arrière-plans. La seule différence entre les deux est la profondeur ! Et précisément la profondeur comparée à la couche pour les ''sprites''. Plus profond que les ''sprites'' : c'est un arrière-plan. Moins profond, c'est un avant-plan. Les cartes graphiques gèrent souvent des "couches" (''layers'') qui se superposent, avec une couche spécialisée pour les ''sprites'', et d'autres couches qu'on peut configurer à volonté comme arrière- ou avant-plan.
Les avant-plans sont aussi utilisés dans quelques jeux pour un effet purement esthétique, pour mettre un décor ou des objets devant les ''sprites''. De plus, ils sont occasionnellement nécessaires pour rendre certains effets graphiques, ou pour ajouter de la profondeur à une scène. Les avant-plans défilent à une vitesse différente des arrière-plans, sans quoi le résultat est absolument affreux. Aussi, l'usage d'avant-plans est très fortement corrélé à l'usage du défilement à parallaxe qu'on va voir dans ce qui suit.
===Le défilement horizontal à parallaxe===
[[File:Parallax-scroll-example-2.png|vignette|Défilement avec parallaxe.]]
[[File:Parallax-scroll-example.gif|vignette|Défilement avec parallaxe : illustration des plans.]]
Le '''défilement à parallaxe''' donne une illusion de profondeur dans l'environnement? Pour cela, il utilise plusieurs arrière-plans superposés qui défilent à des vitesses différentes. Le défilement à parallaxe demande que les éléments à l'arrière-plan bougent à des vitesses différentes, mais pas les sprites à l'avant-plan. Le défilement sans parallaxe fait bouger le ''framebuffer'' en bloc, ce qui fait bouger tout l'arrière-plan tout d'un coup.
Pour implémenter la technique, il est possible d'utiliser un défilement partiel basé sur des ''raster effects''. L'idée est de changer le défilement horizontal ou vertical pendant l'affichage. En général, l'écran est découpé en bandes qui défilent à des vitesses différentes, pour donner des effets parallaxe, parfois des effets de rouleau (le sol forme un tore) ou d'autres effets graphiques.
Une autre solution utilise des arrière-plans partiellement transparents qui se superposent. Les différents arrière-plans ont chacun une profondeur qui dit quel arrière-plan passe devant les autres. Il s'agit de l'implémentation la plus simple, mais elle demande que la carte graphique gère la transparence. Ce n'est cependant pas la seule option et quelques consoles de jeu se débrouillaient pour mélanger plusieurs arrière-plans sans pour autant gérer directement la transparence. Mais nous verrons cela plus tard.
===L'émulation de la transparence, des ombres et lumières===
L'usage de plusieurs arrière-plans marche bien si la carte graphique gère la transparence. C’est-à-dire que chaque pixel indique s'il est totalement opaque, totalement transparent, ou partiellement opaque. En faisant cela, déterminer quel pixel afficher est simple : on prend en compte la profondeur de chaque arrière-plan, et on détermine quel est le premier pixel visible. Par un exemple, si un pixel transparent est situé devant un pixel opaque, c'est ce dernier qui s'affiche. Pour les pixels partiellement transparents, il faut mélanger les couleurs des pixels en faisant une simple moyenne.
Mais cela implique que la carte graphique gère la transparence, que chaque pixel contienne une couleur alpha qui indique son niveau de transparence, couleur ajoutée aux couleurs RGB existantes. Des consoles comme la SNES utilisaient un système totalement différent. Elles utilisaient des arrière-plans dont les pixels étaient codés en RGB, sans composante de transparence alpha. Mais elles arrivaient à combiner plusieurs arrière-plans entre eux sans problèmes.
Les arrière-plans étaient combinés entre eux, ce qui donnait l'image finale à afficher. La combinaison pouvait utiliser plusieurs opérations, qui étaient appliquées pixel par pixel. Les opérations de combinaison sont : l'addition, la soustraction, la moyenne additive, et une soustraction suivie d'une division par deux. Pour résumer, on peut additionner/soustraire des pixels à la même place dans les différents arrière-plans, puis éventuellement diviser par deux le résultat. Précisons que les additions/soustractions sont dites saturées : elles n'ont pas de débordements d'entiers.
Les différentes opérations permettaient surtout d'implémenter des effets d'éclairage, d'ombrage, de transparence, voire de masquage (n'afficher qu'une partie de l'écran). L'addition ne peut qu'augmenter la couleur du pixel final, en augmenter la luminosité, ce qui la rend idéale pour appliquer des effets de lumière. À l'inverse, la soustraction ne peut que réduire la couleur finale d'un pixel, ce qui permet d'appliquer des ombres. La moyenne mélange deux pixels entre eux, qui sont à la même place à l'écran, mais n'ont pas la même profondeur, vu qu'ils sont dans des arrière-plans différents. En clair, elle applique des effets de transparences assez limités. Les pixels de deux arrière-plans sont mélangés avec une proportion fixe de 50-50. Ce qui permet d'appliquer des effets de transparence très limités.
Avec l'addition, il suffit de calculer les lumières à appliquer dans un arrière-plan, qui est additionné avec le reste de l'image. Pour appliquer des ombres, il faut faire la même chose mais avec la soustraction. Les ombres sont calculées dans un arrière-plan à part, qui est soustrait du résultat du reste. Pour être plus précis, l'arrière-plan contenait une image d'ombrage, qui indique quelles sont les parties de l'image dans l'ombre et l'intensité de l'ombre pour chaque pixel. Plus un pixel est dans l'ombre, plus sa couleur est proche du blanc (en RGB) : la palette de couleur est inversée. En soustrayant cette seconde image d'ombrage à l'image du ''framebuffer'' principal, on ombre les pixels.
Il faut noter que certaines consoles, comme la NES, permettaient en plus d'additionner une couleur fixe pour tous les pixels de l'écran, voire de la soustraire, voire de soustraire le pixel à cette couleur fixe. Cela permettait de biaiser les couleurs de base avec une couleur de base. Là encore, l'utilité était une question d'ombrage, d'éclairage, de transparence, ou autre. Cela permettait d'affiner les couleurs finales. La couleur de base était mémorisée dans un registre. Notons que le registre pouvait être changé entre l'affichage de deux lignes, via des ''raster interrupts'', ce qui permettait d'appliquer des dégradés de lumière verticaux, d'appliquer un effet d'horizon, d'ajouter du brouillard de distance.
===L'implémentation matérielle et le cas particulier de la SNES===
Utiliser plusieurs arrière-plans demande que le matériel soit adapté. Il faut typiquement ajouter de quoi gérer et mémoriser plusieurs arrière-plans et ajouter des circuits pour les combiner entre eux. Le hardware pour faire cette combinaison détermine quel pixel passe devant les autres, il peut gérer de la transparence, etc. Les ''sprites'' sont souvent gérés par un système de ''sprite'' matériel, ce qui fait que le défilement n'est pas tellement un problème pour eux.
Les arrières/avant-plans sont typiquement dans des mémoires séparées afin de faciliter la gestion du défilement . Avec plusieurs mémoires, la technique précédente (le ''framebuffer'' étendu et un viewport rectangulaire) peut s'appliquer à chaque arrière-plan. Et on peut les faire défiler à des vitesses différentes. Il est aussi possible d'utiliser une seule mémoire pour cela, qui mémorise plusieurs arrière-plans, c'est tout à fait possible.
La console de jeu SNES gérait 4 arrière-plans différents, mais elle n'utilisait pas plusieurs mémoires. Les 4 arrière-plans étaient combinés entre eux, ce qui donnait l'image finale à afficher. Il était possible d'activer ou de désactiver les arrière-plans si besoin. Il était par exemple possible de n'utiliser que 2 arrière-plans, ou 3 arrière-plans dont un soustrait de l'addition des deux autres, etc.
Elle disposait de plusieurs modes, appelés mode 1, mode 2, ..., mode 7. Le mode 7 est un mode de rendu avec un seul arrière-plan, mais où les techniques des sections précédentes sont utilisables. Les optimisations pour le défilement horizontal et vertical sont présentes, et le ''viewport'' peut même être déformé, tourné, etc. Il peut utiliser un second arrière-plan très particulier, dérivé du premier. Il utilise les mêmes tiles, avec cependant la possibilité de se retrouver devant les ''sprites'' ou les autres arrière-plans. Il était utilisé pour gérer des tunnels vus de dessus, ou pour quelques effets graphiques où des élèments de décor se retrouvaient à l'avant-plan.
{|class="wikitable"
|-
! Mode vidéo
! BG 1
! BG 2
! BG 3
! BG 4
|-
! 0
| 4 couleurs (2 bits) || 4 couleurs (2 bits) || 4 couleurs (2 bits) || 4 couleurs (2 bits)
|-
! 1
| 16 couleurs (4 bits) || 16 couleurs (4 bits) || 4 couleurs (2 bits) ||
|-
! 2
| 16 couleurs (4 bits) || 16 couleurs (4 bits) || ||
|-
! 3
| 256 couleurs (8 bits) || 16 couleurs (4 bits) || ||
|-
! 4
| 256 couleurs (8 bits) || 4 couleurs (2 bits) || ||
|-
! 5
| 16 couleurs (4 bits) || 4 couleurs (2 bits) || ||
|-
! 6
| 16 couleurs (4 bits) || || ||
|-
! 7
| 256 couleurs (8 bits) || EXTBG || ||
|}
===Le ''Multiplane Overlay'' (MPO) de Windows/linux===
Nous venons de décrire l'usage d'un arrière-plan et de ''sprites'' comme étant l'apanage des consoles et des jeux vidéos. Mais il se trouve que les systèmes d'exploitation modernes utilisent quelque chose de similaire pour leur interface. Lorsque vous utilisez un ordinateur, vous allez ouvrir plusieurs fenêtres, qui vont être à l'avant-plan, avec le Bureau de Windows en arrière-plan, avec la barre des tâches, un menu démarrer, et d'autres éléments d'interface (ou leur équivalent sous Linux ou MacOS). Il se trouve que l'on peut considérer ces éléments d'interface de Windows comme un arrière-plan, avec les fenêtre comme des éléments d'avant-plan.
Sans optimisations particulières, c'est le gestionnaire de fenêtre qui s'occupe de calculer l'image finale. Plus précisément, chaque logiciel calcule ce qu'il veut afficher dans sa propre fenêtre, dans uyn ''framebuffer'' qui lui est dédié. Un morceau de logiciel appelé le '''compositeur''' prend chaque fenêtre/''framebuffer'', dont celui pour l'interface de Windows, et mélange ces images/''framebuffer'' pour obtenir l'image finale à afficher à l'écran. Le compositeur effectue des mélanges ''alpha'' pour gérer la transparence des fenêtres, et il prend en compte la profondeur des fenêtres (laquelle est devant telle autre).
L'optimisation du '''''Multiplane Overlay''''' (MPO) délégue une partie du travail du compositeur à la carte graphique. La carte d'affichage peut mélanger plusieurs ''framebuffers'' entre eux, pour obtenir l'image finale. Un ''framebuffer'' sert d'arrière-plan, et contient généralement l'interface de Windows/linux, les autres ''framebuffers'' servent pour les fenêtres.
==L'accélération matérielle du tracé de ligne et de figures géométriques==
<noinclude>[[File:Bresenham.svg|vignette|Tracé d'une ligne sur un écran.]]</noinclude>
La dernière optimisation du rendu 2D est le '''tracé de lignes et de figures géométriques''' accéléré en matériel. Quelques VDC incorporent cette optimisation, dont le nom est assez clair sur ce qu'elle fait. Tracer une ligne, un segment, est l'opération la plus courante sur de tels VDC, le tracé de cercles est déjà plus rare. Tracer des polygones est entre les deux, : plus rare que le tracé de ligne pur, moins que le tracé de cercles.
===Les circuits de tracé de ligne===
L'algorithme le plus utilisé par le matériel pour tracer des lignes est l''''algorithme de Bresenham'''. Il est très simple et s'implémente très facilement dans un circuit électronique. Il fut dit que cet algorithme utilise seulement des additions, des soustractions et des décalages, opérations très simples à implémenter en hardware. Il est de plus un des tout premiers algorithmes découvert dans le domaine du graphisme sur ordinateur. Il existe de nombreuses modifications de cet algorithme, qui vont de mineures à assez profondes. Et certaines d'entre elles sont plus faciles à implémenter en hardware que d'autres.
[[File:Bresenham line.png|vignette|Coordonnées du pixel de départ et d'arrivée.]]
[[File:LineBresenham.gif|vignette|Tracé d'une ligne sur un écran, pixel par pixel.]]
Le fonctionnement du circuit de tracé de ligne est le suivant. Premièrement, on précise le pixel de départ et le pixel d'arrivée en configurant des registres à l'intérieur du circuit, avec une paire de registre pour les coordonnées du pixel de départ, une autre parie pour les coordonnées du pixel d'arrivée. Le circuit dessine la ligne pixel par pixel, avec un pixel dessiné par cycle d'horloge.
===Le tracé de figures géométriques===
Passons maintenant au tracé de figures géométrique. Le tracé se fait là encore pixel par pixel, sur le principe. Généralement, le tracé est limité à des figures géométriques simples, que vous avez tous vu quand vous étiez au collège, en cours de maths. Tracer des carrés/rectangles/pentagones/trapèzes ou autres polygone est très simple : il suffit de tracer plusieurs lignes les unes à la suite des autres.
La vraie utilité est l'implémentation de courbes, comme des cercles, des ellipses, ou autres. L'algorithme de Bressenham peut être modifié pour implémenter des cercles, ce qui donne le '''''Midpoint circle algorithm'''''. D'autres extensions permettent de dessiner des ellipses, et même des courbes plus complexes comme des courbes de Bezier ou d'autres courbes assez complexes à expliquer.
===Le tracé et le remplissage de figures géométriques par le ''blitter''===
Outre le tracé des figures géométriques, il est aussi possible de gérer en hardware les opérations de '''remplissage'''. Cela veut dire dessiner l'intérieur d'une figure géométrique, comme remplir un carré ou un rectangle, avec une couleur uniforme. Par exemple : dessiner un carré en rouge, remplir un rectangle existant de bleu clair, etc. Le remplissage est souvent disponible pour certaines formes géométriques simples, comme des carrés ou rectangles, rarement plus. Pour le remplissage des triangles ou d'autres figures géométriques, le support matériel est encore plus rare, ne parlons même pas des cercles.
Le remplissage de rectangles est souvent réalisé par le ''blitter''. Pour faire une comparaison, la méthode utilisée est globalement la même que celle utilisée pour lire le ''viewport'' dans le ''framebuffer'', mais cette fois-ci réalisé par le ''blitter''. Le ''viewport'' est remplacé par le rectangle à remplir, et la lecture du pixel à envoyer à l'écran est remplacée par l'écriture d'une couleur précisée dans un registre.
Pour cela, on précise la couleur, la coordonnée X,Y et la largeur et la hauteur du rectangle dans des registres dédiés. Le remplissage commence à la coordonnée X,Y. L'adresse mémoire est alors incrémentée jusqu'à ce que la largeur voulue soit atteinte. On incrémente alors le compteur de ligne pour passer à la suivante, le compteur de colonne est réinitialisé avec la coordonnée X de la première colonne. Le remplissage s’arrête une fois que la hauteur voulue est atteinte.
Un exemple est le ''blitter'' des anciennes consoles Amiga, qui gère nativement des blocs en forme de rectangles, et de trapèzes dessinés à l'horizontale. Ils sont remplis en fournissant plusieurs informations : la position de leur premier pixel, une largeur qui est un multiple de 16 bits, une hauteur mesurée en nombre de lignes, un décalage qui indique de combien de pixels sont décalées deux lignes consécutives. Le décalage est ajouté une fois le compteur de colonne réinitialisé à sa valeur précédente (au démarrage de la ligne précédente).
{{NavChapitre | book=Les cartes graphiques
| prev=Les systèmes à framebuffer
| prevText=Les systèmes à framebuffer
| next=Le mode texte et le rendu en tiles
| nextText=Le mode texte et le rendu en tiles
}}
{{autocat}}
bfvygxa9stid2lpn5v1ogcrmebnb1dt
Fonctionnement d'un ordinateur/Les ordinateurs de première génération : tubes à vide et mémoires
0
69063
775708
765833
2026-11-05T19:33:05Z
Cephas
10884
/* Les bandes magnétiques */ 331-6-005 n'est que l'identifiant unique pour la photographie, ce n'est pas un format de ruban magnétique
775708
wikitext
text/x-wiki
Dans les années 50-60, les transistors n'existaient pas. Mais cela n'a pas empêché l'informatique d'exister. À la place des transistors, les ordinateurs de l'époque utilisaient des technologies aujourd'hui abandonnées. Ce chapitre se propose de décrire les technologies de l'époque, à savoir les tubes à vide et les mémoires de l'époque. Ces technologies sont aujourd'hui obsolètes et la plupart ne sont même plus produites du tout. On peut encore en trouver dans des musées, mais leur utilisation réelle est réduite à peau de chagrin. Aussi, nous allons décrire les technologies de l'époque dans ce chapitre, séparé des autres.
==Les tubes à vide==
Les processeurs utilisaient des tubes à vide, une sorte d'ancêtre des transistors. Ils fonctionnaient eux aussi comme des interrupteurs commandées par une tension, ou encore comme des amplificateurs rudimentaires. Mais les comparaisons s'arrêtent là. Les tubes à vides n'étaient pas conçu avec des semi-conducteurs, au contraire.
[[File:Diode vacuum tube.svg|vignette|Diode avec un tube à vide.]]
Les tubes à vide étaient en réalité des ampoules à filament améliorées. Pour rappel, les ampoules à filament étaient des ampoules en verre dans lesquelles on plaçait un filament métallique. Le filament chauffait quand on envoyait du courant dedans et émettait de la lumière.
Dans les tubes à vides, le filament n'émet pas de lumière quand on le chauffe : il émet des électrons, de l'électricité. De plus, on ajoute une plaque métalliques appelée l'anode, qui capte des électrons émis par le filament. Le résultat est un circuit qui laisse passer le courant, mais seulement dans un sens : du filament vers l'anode, l'autre sens n'est pas possible vu que l'anode ne peut pas émettre d'électrons. Un tel circuit est appelé une '''diode'''.
[[File:Triode vacuum tube FR.png|vignette|Triode.]]
Les tubes à vide précédents peuvent être modifiés en ajoutant une grille métallique entre la cathode et l'anode. La grille est alimentée avec une tension électrique, ce qui la charge électriquement. Suivant sa charge, elle laisse plus ou moins passer les électrons de la cathode vers l'anode. Si elle n'est pas chargée, que la tension est de 0 volt, elle ne fera pas obstacle aux électrons et le tube à vide fonctionnera comme une diode basique. Mais si la grille est chargée avec une tension négative, sa charge électrique va repousser les électrons et les empêcher de passer de la cathode vers l'anode.
Le tube à vide se comporte alors comme un interrupteur : fermé ou ouvert suivant ce qu'on met sur la grille. Un tel tube à vide est appelée une '''triode''', car c'est une diode à laquelle on a ajouté une entrée pour charger la grille. De tels interrupteurs commandables électriquement sont combinés pour fabriquer des circuits plus élaborés, comme les portes logiques qu'on verra d'ici quelques chapitres.
Au vu de ce qu'on vient de dire, on peut facilement deviner que les tubes à vide avaient beaucoup de défauts. Ils étaient assez encombrants, dans le sens où une ampoule prend beaucoup de place. Et il est difficile de miniaturiser une ampoule, personne n'imagine une ampoule de quelques microns de côté, alors que les transistors actuels sont plus petits que ça. De plus, ils consommaient beaucoup de courant et chauffaient. Faire chauffer un filament demande un courant important et une bonne partie de ce courant part en chaleur. De plus, ils étaient assez peu fiables et tombaient en panne assez souvent. Et s'ils étaient assez simples à fabriquer, ils restaient malgré tout chers. Pas étonnant donc qu'ils ait laissé la place aux transistors à semi-conducteurs.
[[File:Elektronenroehren-auswahl.jpg|centre|vignette|upright=2|Tubes à vides.]]
==Les mémoires de masse/secondaires==
Les tubes à vides étaient surtout utilisés pour fabriquer des processeurs et d'autres circuits annexes, mais les mémoires avaient des technologies séparées du reste, encore plus qu'aujourd'hui. Il n'y avait pas de semi-conducteurs, ce qui fait que l'électronique était alors très différente. Il n'y avait pas de mémoire ROM, de mémoire RAM, ou quoique ce soit d'autres. À la place, les mémoires étaient fabriquées avec des dispositifs magnétiques, mécaniques, acoustiques, et plein d'autres.
Il existait déjà des ancêtres des disques durs, à savoir des mémoires magnétiques appelées tambours magnétiques, bandes magnétiques, mémoires à tore de ferrite, etc. Les mémoires RAM, quant à elles, utilisaient des technologies totalement abandonnées : les mémoires à lignes de délai étaient des mémoires acoustiques, les tubes Williams étaient des écrans CRT modifiés, les mémoires à tore de ferrite étaient magnétiques, etc. Le reste du chapitre va développer les technologies mémoire de l’époque.
Dans cette section, nous allons nous concentrer sur les mémoires de stockage, qui remplacent ROM et disques durs/SSD. Les mémoires vives, qui remplacent la RAM, aura chacune droit à leur propre section. Les mémoires de masse sont surtout des mémoires magnétiques, comme les tambours magnétiques ou les bandes magnétiques. La seule exception sera celle des cartes perforées.
===Les cartes et rubans perforés===
Les toutes premières mémoires informatiques étaient des mémoires mécaniques. Les mémoires mécaniques les plus connues étaient basées sur du papier : je veux parler des '''cartes et rubans perforés'''. Il s'agit de cartes ou de rubans de papier, parfois de carton ou de plastiques. Les données sont stockées sous la forme de trous dans le ruban ou la carte : un trou code un 1, tandis que l'absence d'un trou code un 0.
[[File:2punchCards.jpg|centre|vignette|Carte perforée.]]
Les cartes perforées pouvaient contenir assez peu de données, vu qu'il n'y a pas beaucoup de place sur une carte perforée. Elles étaient surtout utilisées pour stocker des programmes, comme le ferait une mémoire ROM de nos jours. De nombreux ordinateurs bootaient depuis une carte perforée, de la même manière que les ordinateurs bootent depuis le BIOS. Par exemple, l'IBM 1401 lisait les 80 premiers caractères d'une carte perforée et les copiait en mémoire, avant de démarrer le programme copié. Si un programme faisait plus de 80 caractères, les 80 premiers caractères contenaient un programme spécialisé, appelé le chargeur d’amorçage, qui s'occupait de charger le reste.
[[File:Harvard Mark I program tape.agr.jpg|vignette|Harvard Mark I program tape.agr]]
Il a aussi existé des '''rubans perforés''', qui étaient des rouleaux de "papier/carton", perforés de la même manière que les cartes perforées. Ils avaient une capacité mémoire bien plus importante et servaient de mémoire de stockage long-terme. Les rubans perforés et cartes perforées existaient avant l'invention de l'informatique, on en retrouve des utilisations dans les télégraphes, les Téléscripteur, les Fax et d'autres systèmes de communication antérieurs. Des systèmes industriels utilisaient aussi ces technologies. De tels systèmes avaient déjà un clavier, des cartes/rubans perforés et d'autres fonctionnalités qui ont été réutilisés au début de l'informatique.
[[File:Papertape2.jpg|centre|vignette|Harvard Mark I program tape.agr]]
===Les tambours magnétiques===
[[File:ERA Magnetic Drum, US, c. 1951 - Computer History Museum - Mountain View, California.jpg|vignette|ERA Magnetic Drum, US, c. 1951 - Computer History Museum - Mountain View, California]]
Les '''tambours magnétiques''' sont les ancêtres du disque durs, les deux ayant un fonctionnement assez similaire. La différence principale est que les plateaux sont remplacés par un tube cylindrique, dont la surface est couverte d'un matériau magnétique. L'organisation en pistes est toujours présente, chaque piste étant une ligne horizontale sur le tube central. Par contre, il n'y a pas de tête de lecture/écriture qui se déplace de piste en piste. Les têtes de lecture/écriture sont immobiles, mais il y en a une par piste pour compenser. Le temps de latence d'un tel disque dépend donc uniquement de la vitesse de rotation et de la densité surfacique.
Les tambours magnétiques avaient une méthode d'adressage différente selon qu'ils étaient utilisées comme mémoire de masse ou primaire. Les tambours utilisées comme mémoire primaire avaient une adresse par mot mémoire, alors que celles utilisées comme mémoire de masse avaient une adresse par secteur ou par piste. La méthode d'adressage variait suivant le tambour.
* Sur certains tambours, chaque piste avait sa propre adresse mémoire. Les pistes étaient de taille variable suivant la marque du tambour magnétique utilisé, mais chacune avait sa propre adresse.
* Sur d'autres, chaque piste était découpée en secteurs de taille fixe, comme sur les disques durs, et chaque secteur était adressé en précisant le numéro de piste et un numéro de secteur (similaire à l'adressage CHS des disques durs, en enlevant les plateaux).
* Sur d'autres, les secteurs avaient une taille variable, l'adressage se faisait en indiquant le numéro de la piste et la position du secteur dans la piste.
* D'autres mémoires utilisaient des systèmes d'adressages différents.
Fait surprenant, les tambours magnétiques étaient utilisés comme mémoire de masse, mais aussi comme mémoire primaire, c'est à dire qu'elles avaient la même fonction que la mémoire RAM des PC actuels, malgré leur caractère non-volatile ! Les deux utilisations étaient possibles, tout dépendait de l'ordinateur.
===Les bandes magnétiques===
[[File:Tape Cartridge Detail.jpg|vignette|Cassette audio, bande magnétique.]]
Les personnes nées entre les années 80 et 2000 seront sans doute familières avec les cassettes audio, autrefois utilisées pour enregistrer de la musique avant l'apparition du CD. Et celles nées avant savent que ces cassettes audio étaient utilisée sur d'anciens micro-ordinateurs comme support de stockage. Par exemple, les micro-ordinateurs Commodore ou Amiga avaient pour certains un lecteur de cassette, qui permettait de lire des programmes enregistrés sur une "cassette audio".
[[File:472 es.jpg|centre|vignette|upright=2|Micro-ordinateur Amstrad CPC 472.]]
Les cassettes audio sont un exemple de '''mémoire à bandes magnétiques''', à savoir des mémoires de masse composées d'un long ruban magnétisable. Il en existe plusieurs types, allant des grosses bandes magnétiques utilisées sur les mainframes aux vielles cassettes audio. Elles se distinguent surtout par les dimensions du ruban magnétique, à savoir sa longueur et sa largeur. Les bandes magnétiques étaient utilisées comme mémoire de masse sur les anciens ''mainframes'' au tout début de l'informatique, avant que celle-ci ne devienne grand public. Les bandes étaient alors de grande taille, très large, mais aussi très longues.
{|
|[[File:Ruban magnétique grand format 331-6-005.jpg|vignette|Ruban magnétique grand format]]
|[[File:AstrotypeTapes.jpg|vignette|Ruban magnétique petit format.]]]]
|}
[[File:PDP-8 Tape Drives (16324176653).jpg|vignette|upright=1|Bande magnétique d'un ordinateur Robotron PDP-8.]]
Les bandes magnétiques sont lues/écrites comme le serait un parchemin, à savoir qu'elles sont déroulées à une extrémité et ré-enroulées sur l'autre. Le ruban magnétique est lu par un '''lecteur de bande magnétique''', aussi appelé le lecteur, qui est composé d'une tête de lecture et de bobines. Le ruban magnétique est déroulé/enroulé par un système contenant au moins deux bobines, entrainées par des moteurs, avec des systèmes pour étirer et stabiliser le ruban magnétique. Le ruban défile sous un système comprenant une ou plusieurs têtes de lecture, qui mesure le magnétisme de la bande qui défile et en déduit les données stockées dessus.
Le ruban est lu du début vers la fin et on doit dérouler le ruban magnétique jusqu'à tomber sur la donnée voulue. La conséquence est que les bandes magnétiques sont des mémoires séquentielles. Le lecteur peut faire des retours arrière, en rembobinant le ruban magnétique, en le faisant tourner en sens inverse. L'avance rapide est aussi possible, elle demande juste de dérouler le ruban plus vite.
[[File:Esquema de funcionamento de um cartucho de áudio.png|centre|vignette|upright=2|Lecteur de bande magnétique. 1, 5 et 6 sont les bobines d'entrainement, qui font défiler la bande magnétique. 3 est la tête de lecture, 2 et 4 aplatissent la bande magnétique lors de sa lecture.]]
Pour comprendre comment sont stockées les données sur une bande magnétique, nous allons prendre l'exemple le plus simple, celui d'un ruban magnétique à 8 pistes. Comme pour un disque dur, un bit est codé en magnétisant une partie de la bande magnétique d'une certaine manière. Reste à voir comment sont répartis les bits sur la bande magnétique.
Les bandes magnétiques sont organisées en blocs, comme toutes les mémoires de masse. Les blocs sont séparés par des ''inter-blocs'', les deux prenant une certaine longueur sur la bande. Les inter-blocs sont très courts, comparé aux blocs eux-mêmes. Le début de la bande et sa toute fin n'encodent aucune données.
Sur les anciennes bandes magnétiques, la taille des inter-blocs était fixe, mais celle des blocs était décidée par le logiciel qui écrivait sur la bande. Par exemple, si le système d'exploitation utilisait des blocs de 4 kibioctets, la bande magnétique était découpée en blocs de 4 kibioctets séparés par des inter-blocs de taille fixe. De nos jours, la taille des blocs est décidée par la mémoire de masse et le système d'exploitation doit faire avec, comme c'est le cas pour toute les mémoires de masse modernes.
[[File:Bandemaglogic.png|centre|vignette|upright=2|Données sur une bande magnétique.]]
Reste à voir comment sont encodées les données dans un bloc. Et nous devons préciser que l'encodage utilisé dépend de si on encode de l'audio, de la vidéo, ou des données arbitraires. Les cassettes audio et vidéo utilisaient des encodages spécialisés, analogiques par nature, fort différents des encodages numériques utilisés pour des données arbitraires. Mais nous n'en parlerons pas ici.
Pour les données numériques, la solution la plus simple code les octets sur la largeur de la bande. Si on suit la bande magnétique sur sa longueur, on passe d'un octet à l'autre, dans leur ordre de stockage. Un point important est qu'un bit correspond à une portion allongée de la bande magnétique, c'est un petit rectangle orienté sur la longueur. Cela facilite le travail de la tête de lecture, vu que la bande défile sous la tête de lecture.
[[File:Esquema da leitura da fita magnética de um cartucho áudio.png|centre|vignette|upright=2|Octet encodé sur une bande magnétique à 8 pistes. L'octet est le rectangle/encadré, un bit est la portion de la piste en gras.]]
Une solution alternative, la plus utilisée de nos jours, encode les octets non pas à la perpendiculaire, en largeur, mais en biais, en diagonale. C'est la solution dite de l''''enregistrement hélicoïdal''', où les octets sont placés comme illustré ci-dessous.
: L'idée marche aussi en mettant plusieurs octets sur la largeur, ou même un nombre arbitraire de bits, tant que le nombre de tête de lecture est adapté en conséquence.
[[File:Bandelinvshel.png|centre|vignette|upright=2|Comparaison entre enregistrement linéaire et hélicoïdal.]]
==Les mémoires à tore de ferrite==
Les premières mémoires de masse magnétiques sont sans conteste les '''mémoires à tores de ferrites'''. Ce sont des mémoires magnétiques, un peu comme les disques durs, même si les différences sont nombreuses. Elles sont donc naturellement non-volatiles. Pourtant, elles étaient surtout utilisées comme mémoire principale, comme un équivalent de la RAM. Elles sont formées d'une matrice de tores fabriqués dans un matériau magnétique (ferromagnétique pour être précis), le plus souvent de la ferrite. Ces tores peuvent être magnétisés dans deux sens différents, ce qui leur permet de coder un bit.
[[File:KL CoreMemory Macro.jpg|centre|vignette|Mémoire à tores de ferrite réelle (avec les fils).]]
===Le fonctionnement d'une mémoire à tore de ferrite===
L'ensemble formait une sorte de tableau où chaque tore a deux positions : une position X et une autre position Y. Deux fils servent pour l'adressage : le fil Y traverse tous les tores d'une ligne, alors que le fil X traverse tous les tores placés sur la même colonne. Quand une tension est envoyée sur un fil Y et un fil X, le tore à l'intersection des deux fils est activé : il peut alors être lu ou écrit. Plus précisément, chaque fil est parcouru par une tension légèrement supérieure à la moitié de la tension nécessaire pour aimanter le tore : ainsi, la somme des deux tensions est supérieure à la tension d'aimantation, mais seulement à l'intersection des deux fils, sur le tore à aimanter. Selon la tension envoyée (plus précisément, son signe), le tore sera mis à 0 ou à 1.
[[File:Coincident-current magnetic core.svg|centre|vignette|Schéma de la matrice de tores (avec les fils).]]
Pour lire ou écrire un bit dans un tore (en changer l'aimantation), il faut que celui-ci soit soumis à un champ magnétique supérieur à une valeur déterminée. pour cela, chaque tore est parcouru par quatre fils : le fil X et Y servent pour l'adressage, comme dit plus haut, un fil S (''Sense'') pour les lectures, et un fil Z pour les écritures. En faisant passer un courant ou une tension dans ces fils, un champ magnétique se forme autour d'eux, ce qui agit sur les tores de ferrites ce qui permet de les aimanter (écriture) ou de lire leur contenu.
[[File:Single coincident-current magnetic core.svg|centre|vignette|Un tore de ferrite.]]
La lecture s'effectue via le fil nommé ''Sense''. Toute lecture est destructrice : le bit stocké dans le tore est effacé après chaque lecture. En effet, chaque lecture commence par mettre à zéro le bit à lire. Cette mise à zéro va ou non, faire changer le champ magnétique dans le fil ''Sense'', entrainant l'apparition d'un courant et d'une tension. Suite à cette mise à zéro, la mémoire regarde ce qui se passe sur ce fil. Si le bit était déjà à zéro avant la lecture, aucun champ magnétique ne sera créé : il ne se passe rien sur le fil ''Sense''. Mais si ce bit était à 1, le tore va changer de polarité, entrainant l'apparition d'une tension sur ce fil, durant un temps très bref (le temps de changement de polarité du tore). La lecture s'effectue donc via le fil ''Sense'', suivant ce qui s'y passe lors d'une mise à zéro d'un bit.
L'écriture s'effectue d'une manière différente, quoique similaire, en utilisant le fil ''Z''. Lors d'une écriture d'un tore, les fils X et Y qui correspondent sont alimentés en tension, de telle manière qu'un 1 soit écrit dans le tore. Pour écrire un 1, cela suffit largement. Mais pour écrire un zéro, il faut que quelque chose annule cette écriture, en compensant le champ magnétique créé par ces deux fils. Pour cela, on fait passer un courant dans le fil ''Inhibit'', afin de créer un champ magnétique contraire dans le tore. Cela annule l'écriture du 1 en inhibant le champ crée par les fils X et Y. La plupart des mémoires de ce type utilisaient deux fils ''Sense'' et ''Inhibit'' séparés. Mais vu que le fil ''Inhibit'' et ''Sense'' ne sont jamais utilisés en même temps, certaines mémoires à tore ont fusionné ces deux fils en un seul.
===Une mémoire très fiable===
Les mémoires à tore de ferrite sont des mémoires non-volatiles très fiables. Elles ne s'effacent pas dans le temps et peuvent supporter des conditions très dures sans perdre de données. Par exemple, elles peuvent résister à des radiations extrêmes , voire à une EMP, sans perdre de données. C'est pour cette raison qu'elles ont beaucoup été utilisées dans des applications aérospatiales, dans l'industrie, voire dans les applications militaires. Elles étaient encore utilisées dans ces applications bien après l'apparition des premières mémoires à semi-conducteurs.
Par contre, ces mémoires étaient très sensibles à la température. Les tensions à envoyer aux tores devaient avoir une valeur bien précise, qui dépend énormément de la température ambiante. Sur les premières mémoires à tore de ferrite, les circuits de contrôle de la mémoire contenaient un senseur de température et ajustaient les tensions appliquées en fonction des mesures. Une autre solution consistait à placer la mémoire dans une petite boite dont la température était maintenue stable. Généralement, la boite était chauffée au-dessus de la température ambiante, car maintenir une température constante est facile quand celle-ci est plus élevée que la normale. Chauffer une petite chambre est plus simple que de la refroidir, surtout pour une petite boite. Autant une simple résistance permet de chauffer la boite, autant utiliser un réfrigérateur pour une mémoire de ce type était clairement une mauvaise solution.
Le défaut principal de ces mémoires est que leur processus de fabrication est difficile à industrialiser. La fabrication de ces mémoires s'est surtout fait de main d'homme, sans machines ou du moins avec peu d'outils. Le fait que ces mémoires ne puisse pas facilement être fabriquées par des machines fait que ces mémoires sont difficiles à miniaturiser : la miniaturisation ne va pas aussi loin que pour les mémoires à semi-conducteurs et on peut tout au plus stocker quelques centaines de bits sur une puce, voire quelques milliers. La capacité de telles mémoire est généralement assez faible. Par contre, leurs performances étaient assez honorables. On estime que les premières mémoires de ce type avaient un temps d'accès mémoire d'environ 6 µs, ce qui fait une fréquence d'environ 166.7 kilohertz. Le temps d'accès est ensuite descendu à 0.6 µs durant les années 70, ce qui faisait une fréquence proche du mégahertz.
[[File:Ferrite core memory.jpg|centre|vignette|upright=1.5|Mémoire à tore Ferrite miniaturisée. La puce fait 10 centimètres de coté et contient 64 mots de 64 bits, soit 4 kikioctets.]]
==Les mémoires à ligne de délai==
Les '''mémoires à ligne de délai''' sont des mémoires volatiles mécaniques, séquentielles, qui ont une capacité extrêmement faible (quelques centaines de bits). Elles ont été inventées suite à des technologies liées aux radars, dans les laboratoires militaires. Elles sont basées sur un tube de matière, dans lequel se propage une onde sonore : celui-ci sert de support de mémorisation. Les premières mémoires de ce type utilisaient des tubes de mercure, d'où leur nom de '''lignes à délai de mercure'''. Mais les inconvénients du mercure (toxicité, notamment) ont mené au remplacement du mercure par des tubes de cuivre ou d'autre matériaux magnétiques : ce sont des '''lignes de délai à torsion de fil'''.
{|
|[[File:Mercury memory.jpg|vignette|SEAC Computer, avec une mémoire à ligne de Mercure.]]
|[[File:Torsion wire delay line.jpg|vignette|Exemple de ligne de délai à torsion de fil.]]
|}
Un bit est codé par l'absence ou la présence d'une onde sonore dans le tube de matière. Au bout de ce tube, on trouve un microphone et un haut-parleur. Le haut-parleur génère une onde sonore d'un côté du tube, onde qui est reçue de l'autre côté du tube par le microphone. De plus, le haut-parleur et le microphone sont reliés entre eux : le signal capté sur le microphone est envoyé sur le haut-parleur d'entrée. Ce faisant, l'onde sonore circule en boucle dans le circuit : elle est rafraichie sans cesse, à chaque passage.
[[File:Delay line memory fr.svg|centre|vignette|upright=2.0|Mémoire à ligne de délai.]]
Divers circuits sont présents entre le microphone et le haut-parleur. On trouve notamment des amplificateurs, histoire que les ondes sonores captées ne s'amenuisent pas à force de reparcourir le tube.
[[File:SEACComputer 010.jpg|centre|vignette|upright=2.0|Mémoire à tube de mercure.]]
Il existe naturellement un petit délai de transmission entre le microphone et le haut-parleur, ainsi qu'un autre délai de propagation dans le tube. Ces délais limitent la capacité de la mémoire, qui dépend du nombre d'ondes sonores qui peuvent parcourir le tube. Chaque bit est codée exactement par une impulsion sonore, qui a une forme et une durée très précise, qui dépend de la qualité du circuit (microphone, haut-parleur, et autres) : notons ce temps <math>\Tau</math>. La capacité totale est, par définition, égale au nombre d'impulsions qui se trouvent en même temps dans le tube de matière (les unes à la suite des autres). Pour la calculer, on peut diviser le temps que met une impulsion à se propager dans le tube, par la durée d'une impulsion.
==Les tubes Williams et Selectron==
Les '''tubes ''Williams''''' et '''Selectron''' sont basés sur un écran CRT modifié. Il s'agissait de mémoires de type mémoires vives volatiles qui devaient être rafraichies régulièrement. En clair, ce sont l'ancêtre des mémoires DRAM ! Les ''tubes Williams'' étaient utilisés sur les tout premiers ordinateurs, au tout début de l'histoire de l'informatique, dans les années 50, à une époque où les ordinateurs étaient des monstres qui occupaient une pièce entière et étaient plus proches de petites usines à calcul qu'autre chose. Une technologie alternative basée sur un principe simialire est le ''Tube Selectron''. D'une capacité de 256 bits, il n'a été utilisé que sur un seul ordinateur : le JOHNNIAC de la RAND Corporation. Ils ont tous deux était rapidement remplacé par les mémoires à ligne de délai, plus simples et moins chères.
[[File:Williams-tube.jpg|centre|vignette|upright=2|Williams-tube]]
===Les écrans CRT (''Cathode Ray Tube'')===
Tubes Williams et Selectron se basent sur la même technologie : celle des écrans CRT. Un écran CRT est composé de plusieurs composants, qui marchent de concert : un canon à électron, des bobines de contrôle et la surface de l'écran proprement dite. Le canon à électron émet un faisceau d'électron concentré, qui touche la surface de l'écran. Cette dernière, du moins derrière la vitre transparente, est d'une composition chimique particulière et est notamment riche en phosphore. Elle est souvent appelée ''surface phosphorescente''. Quand elle est touchée par le faisceau d’électron, le phosphore s'illumine pendant quelques millisecondes. Les bobines visent à détourner le faisceau d'électron de manière à ce qu'il balaye tout l'écran de gauche à droite et de haut en bas.
[[File:Cathode ray tube fr.svg|centre|vignette|upright=2|Cathode ray tube.]]
La surface de l'écran est découpée en pixels, et l'intensité du canon varie pour chaque pixel lorsque le faisceau passe sur ce pixelde l'écran. En commandant l'intensité du canon d'électron, on arrive à afficher des images en noir et blanc ainsi. Un canon intense pendant x millisecondes donnera un point blanc sur l'écran, là où tombe de faisceau. un canon éteint donnera un point noir à l'écran. Il est possible de gérer la couleurs avec des écrans CRT plus complexes, mais ce n'est pas le sujet et nous n'en avons pas besoin pour les explications qui vont suivre.
====La physique de la surface phosphorescente : émission secondaire et puits de potentiels====
Un point important est que la physique de la surface phosphorescente n'est pas intuitive et peu donner lieu à des phénomènes assez importants pour ce qui va suivre. Deux d'entre eu vont nous intéresser.
Le premier est que les électrons émis par le canaux à électrons frappent la surface phosphorescente, l'illuminent, mais qu'il arrive que des électrons soient piégés dans la surface, à l'endroit de l'impact. En conséquence, une petite charge électrique s'accumule progressivement à chaque passage du faisceau, dans chaque pixel. Les électrons ne restent pas en place de manière permanente, ils finissent par s'échapper après un certain temps, ce qui fait que la charge finit par s'atténuer, mais elle peut durer quelques secondes sur les CRT conçus pour exploiter cet effet au mieux.
Le second phénomène est l''''émission secondaire'''. Quand l'énergie du faisceau à électron est trop forte, les électrons naturellement présents dans les atomes du matériau phosphorescent sont dégagés. Les électrons éjectés deviennent alors des électrons libres qui vont allumer les zones alentours, ce qui perturbe l'affichage. Et cela arrive lors que la zone frappée par le faisceau a perdu des électrons et ne s'allume plus. Le résultat est que si une image était affichée sur l'écran auparavant, utiliser un faisceau trop fort l'efface totalement via émission secondaire. Il s'agit là d'un défaut à éviter sur les écrans d'affichage, mais c'est ce phénomène qui est utilisé sur les mémoires à tubes de stockage.
====Les CRT rémanents====
Il existe des écrans CRT conçus pour afficher des images sur une longue durée de temps, et pas seulement pour un 50ème ou 60ème de seconde. Ils sont appelés des '''écrans rémanents''' ou encore '''''storage tubes''''', ou tubes de stockage. Avec eux, l'image affichée s'efface progressivement et lentement, mais reste visible durant quelques secondes. Pour cela, les écran de stockage sont fabriqués en utilisant un matériau phosphorescent spécial, différent de celui des autres CRT, mais le reste du CRT fonctionne de la même manière. La rémanence est liée au premier phénomène mentionné plus haut, à savoir la capture d'électrons par la surface, mais ce phénoméne est maximisé par l'usage du matériau adéquat. Cette rémanence de quelques secondes fait que l'image a besoin d'être rafraichie moins souvent, comparée à un écran CRT normal. Et les mémoires Selectron et de Williams sont basées sur de tels tubes de stockage.
La rémanence de l'image a de nombreuses applications et est utile quand on n'a pas besoin d'une réactivité importante. Elle était utile dans les radars, dans certains oscilloscopes qui demandent de capturer des évènements très brefs, etc. Quelques écrans d'ordinateur ont tenté d'utiliser ce système, notamment les écrans de la marque Textronix. Ils portent le nom de '''''Direct-view bistable storage tube'''''. L'idée est d'utiliser un écran CRT rémanent pour afficher une image pour éviter de rafraichir l'écran souvent. Mais pour quel l'écran soit réactif et éviter des artefacts graphiques liés à la rémanence, on est obligé d'effacer l'écran avant d'afficher une nouvelle image. Et l'effacement se fait grâce à l'émission secondaire. Pour cela, de tels écrans contenaient deu faisceaux : un faisceau normal pour afficher une image, un autre faisceau très puissant qui déclenche une émission secondaire pour effacer l'écran.
===Les tubes Williams===
[[File:SWAC 003.jpg|vignette|Image affichée par un tube Williams en fonctionnement, sur l'ordinateur SWAC.]]
L'idée derrière les tubes tubes Williams et Selectron est de mémoriser les données sous la forme d'images à l'écran. Un bit à 1 correspond à un pixel allumé/lumineux, un bit à 0 à un pixel éteint/noir. Les écrans de l'époque ne géraient pas la couleur, aussi seul le noir et blanc était disponible (avec les niveaux de gris), ce qui est parfait pour un stockage en binaire. L'image affichée par un écran CRT est affichée ligne par ligne, avec un petit temps de pause entre l'affichage de deux lignes pour repositionner le canon à électron sur le début de la ligne suivante. Par simplicité, sur les tubes Williams, chaque ligne correspond à un mot mémoire, une case mémoire. La taille d'un mot mémoire et le nombre d'adresse dépend donc de la résolution utilisée.
Un tube Williams est composé d'un tube CRT rémanent et d'une plaque de métal placée devant l'écran, et de circuits électroniques annexes. La plaque de métal est collée à l'écran, ce qui fait qu'on ne peut pas voir l'écran proprement dit. Elle sert uniquement lors des lectures et pas pour les écritures. Lors d'une lecture, on mesure la tension sur la plaque, qui dépendra du bit stocké au moment de la lecture. La lecture se fait bit par bit, un par un. Elle est reliée à un circuit amplificateur de tension, qui amplifie la tension mesurée par la plaque. On trouve aussi des circuits pour le contrôle de l'écran CRT, à savoir des registres X et Y pour commander les bobines de défléction, de quoi générer un signal d'horloge, et des circuits électroniques pour gérer les lectures/écritures.
[[File:WilliamsTubeFigure1.tiff|centre|vignette|upright=2|WilliamsTubeFigure1]]
L'écriture et l’effacement de l'image est ce qu'il y a de plus facile : écrire une image utilise un faisceau d’électrons normal qu'on allume ou éteint convenablement lors du balayage de l'écran, l'effacer demande de faire la même chose en utilisant un faisceau très puissant. Un faisceau normal allume le phosphore et le charge pendant un certain temps, alors que l'émission secondaire efface ce qui a été enregistré sur le phosphore.
Pour lire un bit, on envoie un faisceau d'électron sur sa position sur l'écran, dont l'intensité est situé juste en-dessous du seuil pour l'émission secondaire. Si le bit stocké est à 0, l'intensité ne sera pas suffisante pour générer une émission secondaire. Mais si cil stocke un 1, la charge électrique stockée sur la surface phosphorescente va s'additionner à l’intensité du faisceau et déclencher une émission secondaire. L’émission secondaire a déclencher une augmentation local de la tension électrique, que la plaque de métal va capter. Un amplifieur amplifie la tension mesurée sur la plaque, pour en faire une tension capable de coder un 0 ou un 1. Vous remarquerez que la lecture est destructrice, ce qui fait que toute lecture de l'écran est suivie par une écriture pour compenser, comme sur les DRAM.
[[File:Williams tube timing.jpg|centre|vignette|upright=2|Williams tube timing]]
Passons maintenant au rafraichissement mémoire. Il faut rafraichir l'écran pour une raison simple : l'image affichée par l'écran s'efface au bout de quelques millisecondes, quelques secondes, tout dépend du type d'écran utilisé. Le rafraichissement se fait en effectuant une lecture suivie d'une écriture : on récupère le contenu de la mémoire/tube, avant de le réécrire.
Autour de la plaque de métal et du tube CRT, on trouve divers circuits qui gèrent les lectures et écritures. Les lectures et écritures se font bit par bit, on peut masquer certains bits lors des écritures, autoriser ou interdire les lectures/écritures durant un temps, etc.
[[File:SEACComputer 004.jpg|centre|vignette|upright=2|Fonctionnement d'un tube Williams, avec les circuits associés]]
==Les ordinateurs de première génération : exemples notables==
Les ordinateurs de première génération étaient assez rudimentaires, la technologie ne permettait pas de faire des miracles. Ils avaient un processeur contenait quelques milliers de tubes à vide. Le processeur était presque systématiquement une architecture à accumulateur. Ils géraient des opérations simples : addition, soustraction, mais la multiplication et la division sont arrivées assez tard. Ils avaient un jeu d'instruction très limité, atteignant rarement la centaine d'instructions. La mémoire RAM était souvent limitée, de faible capacité.
===L'apparition des programmes stockés en mémoire : le Manchester Baby===
[[File:BabyArchitecture.png|vignette|Architecture de la Manchester Baby.]]
Le tout premier ordinateur à programme enregistré en mémoire, le ''Manchester Baby'', était une architecture à accumulateur. Niveau interface, l'ordinateur avait une console avec 32 boutons, des interrupteurs et un écran de sortie sur lequel afficher les résultats. À l'intérieur, il y avait un processeur et une RAM de 32 adresses, fabriquée avec des tubes Williams (abordés dans une annexe à la fin du cours). Chaque adresse mémorisait 32 bits, qui pouvaient encoder soit un nombre, soit une instruction.
Le programme devait tenir dans la RAM, avec une instruction par adresse maximum, ce qui limitait les programmes à 32 instructions maximum. Une instruction prenait donc 32 bits, 3 indiquaient quelle opération utiliser, 12 bits d'adresse servait à indiquer où se trouvent la seconde opérande en RAM, les 16 restants sont inutilisés. En théorie, les 12 bits d'adresse permettaient d'adresser 4096 adresses, mais seules 32 étaient réellement présentes.
Le processeur avait un registre accumulateur de 32 bits, un ''program counter'' et un registre d'instruction. Il intégrait un additionneur dédié au ''program counter'', mais l'ALU n'avait pas d'additionneur. En conséquence, il ne gérait pas l'addition. À la place, il gérait la soustraction. Il pouvait cependant émuler l'addition à partir d'une soustraction. La soustraction était utilisée pour calculer le complément d'une opérande, et soustraire le complément revient à additionner. L'ALU était une ALU sérielle, à savoir qu'elle faisait les soustractions bit par bit.
Le processeur supportait 7 instructions au total : la soustraction, des instructions de branchement et d'accès mémoire, rien d'autre. Les instructions de branchement utilisaient des modes d'adressage très particuliers, qu'on ne retrouve pas sur les ordinateurs modernes. Les branchements inconditionnels utilisaient une forme d'adressage mémoire indirect, pas les adressages usuels pour les branchements. Il n'y avait pas de branchements conditionnels, mais une ''SKIP instruction''.
{|class="wikitable"
|-
! SUB
| Soustrait l'opérande mémoire de l'accumulateur.
|-
! CMP
| Skippe l'instruction suivante si l'accumulateur a une valeur négative.
|-
! JMP
| Branchement indirect mémoire. :
* L'adresse de destination est lue depuis la mémoire.
* L'adresse lue est intégrée dans l'instruction via adressage absolu.
|-
! JRP
| Branchement relatif indirect.
* Lit une opérande depuis la mémoire, l'adresse est intégrée dans l'instruction via adressage absolu.
* Additionne l'opérande lue au ''program counter''.
|-
! LDN
| Instruction LOAD. La donnée lue est inversée lors de la lecture, l'accumulateur contient le complément à deux de la donnée lue après la lecture.
|-
! STO
| Instruction STORE
|-
! STOP
| Éteint l'ordinateur.
|}
===L'apparition des registres d'indice : le Manchester Mark 1===
Le Manchester Mark 1 était une amélioration du Manchester Baby. Il utilisait 4500 tubes à vide. Le Manchester Baby était un prototype, mais il avait été pensé pour être étendu, notamment afin d'avoir plus de mémoire. C'est pour cela que ses adresses étaient codées sur 12 bits, malgré sa mémoire de seulement 32 mots. Le plan initial, à savoir utiliser une RAM de 4096 mots, a cependant été abandonné pour la Manchester Mark 1. À la place, la RAM a gardé la même taille, à savoir 32 nombres, mais a été complémentée par l’ancêtre du disque dur magnétique, à savoir un tambour magnétique. Le tambour magnétique contenait 40 pages, chacune ayant la même taille que la RAM.
L'ordinateur gérait des nombres de 40 bits, mais les instructions étaient codées sur 20 bits. Le processeur gérait maintenant l'addition et quelques opérations logiques (ET et OU), en plus de la soustraction et de la comparaison. De plus, il intégrait deux registres dédiés aux multiplications : un pour le multiplicande, un autre pour le multiplieur. Ils étaient nommés D et R et étaient regroupés dans un seul tube Williams noté M. Cependant, les multiplications étaient réalisées en enchainant une série d'additions, dans l'additionneur-soustracteur.
C'était là encore une architecture à accumulateur, sauf qu'elle intégrait aussi des registres d'indice. Les registres d'indices étaient au nom de deux et étaient notés B0 et B1. Lors du chargement d'une instruction, un registre d'indice était sélectionné grâce à un bit de l'instruction. Le contenu de ce registre d'indice était additionné à l'instruction , l'adresse encodée dedans pour être précis, et le résultat était envoyé sur le bus mémoire.
La microarchitecture de la machine est illustrée ci-dessous. Elle a une ALU unique capable de faire plusieurs opérations, qui sont représentées dans des rectangles séparés. Les cercles dans le schéma suivant sont des tubes Williams, des écrans CRT modifiés de manière à servir de mémoire DRAM, dont le fonctionnement est détaillée dans le chapitre sur les mémoires historiques. Un tube Williams implémente un banc de registre complet, c'est à dire un groupe de 2 à 10, registres. L'accumulateur est noté A, les deux registres de multiplication sont regroupés dans le tube Williams M, les registres d'indice sont dans le tube noté B. Le tube Williams C regroupe le ''program counter'' et le registre d'instruction. L'additionneur sert à incrémenter le ''program counter'', mais aussi pour les branchements relatifs. La statistation est le nom donné au séquenceur, à l'unité de contrôle, décodeur d'instruction inclus.
[[File:MM1Schematic French.svg|centre|vignette|upright=2.5|Architecture de la Manchester Mark 1.]]
===L'introduction des tambours magnétiques===
Le Manchester Mark 1 a introduit l'usage des tambours magnétiques dans un ordinateur, et cet usage a perduré par la suite. Fait surprenant, les tambours magnétiques n'étaient pas utilisés comme mémoire de masse, mais servaient de mémoire primaire, c'est à dire qu'elles avaient la même fonction que la mémoire RAM des PC actuels. Et ce alors que c'était des mémoires magnétiques et avec un caractère non-volatile !
De nombreux ordinateurs de l'époque exécutaient des programmes directement depuis le tambour magnétique. Les instructions étaient mémorisées sur le tambour magnétique, étaient copiées dans un registre d'instruction, puis exécutées. Pour garder des performances correctes, la répartition des instructions dans les secteurs devait être optimisée. Les programmeurs ayant travaillé, par exemple sur l'IBM 650, devaient prendre en compte la manière dont les instructions étaient placées dans et entre les secteurs pour éviter des pertes de performance.
L'ordinateur Bull Gamma 3 intégrait une sorte de cache d'instruction pour accélérer l'exécution des programmes depuis le tambour magnétique. Pour l'expliquer avec des termes modernes, le processeur intégrait un ''local store'' dédié aux instructions. Les instructions étaient exécutées depuis ce ''local store'', pas depuis le tambour magnétique. Les échanges entre le ''local store'' et le tambour magnétique se faisaient par groupes de 48 instructions. Le ''local store'' était composé de 8 banques, chacune contenant un groupe de 48 instructions complet.
Dans le détail, le Bull Gamma 3 intégrait en réalité 8 ''local store'', appelés des ''Circulating Memories'', chacun pouvant mémoriser un groupe de 48 instructions. Pour exécuter une instruction, le groupe de 48 instructions complet était copié dans une ''Circulating Memory'', puis l'instruction voulue était copiée dans le registre d'instruction. Les ''Circulating Memories'' étaient implémentées avec des mémoires magnéto-résistives à ligne de mercure, qu'on détaillera dans la suite de ce chapitre.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=La tolérance aux pannes
| prevText=La tolérance aux pannes
| next=Les ordinateurs à encodages non-binaires
| nextText=Les ordinateurs à encodages non-binaires
}}
</noinclude>
6mpcvgqmvt5b7t9q20c9sbm8d0xmv9r
Mathc initiation/a08
0
76336
775692
771902
2026-11-05T15:11:22Z
Xhungab
23827
775692
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
:
.
:
[[Mathc initiation/a557| Sommaire]]
:
.
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
:
.
:
{{Partie{{{type|}}}|'''Fonction :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
:
.
:
{{Partie{{{type|}}}|'''Limite :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
:
.
:
{{Partie{{{type|}}}|'''Dérivé :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
:
.
:
== '''Intégrale''' ==
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
{{Partie{{{type|}}}|.}}
:
== '''Quelques applications pour les intégrales''' ==
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
:
.
:
{{Partie{{{type|}}}|'''Personnaliser la fonction simpson();'''}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
cm7mlrcseoxkplhymxtc3fu9dv459f6
775693
775692
2026-11-05T15:20:23Z
Xhungab
23827
775693
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
:
.
:
[[Mathc initiation/a557| Sommaire]]
:
.
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
:
.
:
{{Partie{{{type|}}}|'''Fonction :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
:
.
:
{{Partie{{{type|}}}|'''Limite :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
:
.
:
{{Partie{{{type|}}}|'''Dérivé :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
:
.
:
== '''Intégrale''' ==
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
{{Partie{{{type|}}}|.}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
:
.
:
{{Partie{{{type|}}}|'''Personnaliser la fonction simpson();'''}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
3t3ufw1c8d2enca2de2ggoion9sps0k
775694
775693
2026-11-05T15:28:51Z
Xhungab
23827
775694
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
:
.
:
[[Mathc initiation/a557| Sommaire]]
:
.
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
:
.
:
{{Partie{{{type|}}}|'''Fonction :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
:
.
:
{{Partie{{{type|}}}|'''Limite :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
:
.
:
{{Partie{{{type|}}}|'''Dérivé :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
:
.
:
== '''Intégrale''' ==
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
:
== '''Quelques méthodes pour les intégrales''' ==
:
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
{{Partie{{{type|}}}|.}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
:
.
:
{{Partie{{{type|}}}|'''Personnaliser la fonction simpson();'''}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
sxy9tn6jx5lnqja35d5ec7waxul501n
775695
775694
2026-11-05T15:34:07Z
Xhungab
23827
775695
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
:
.
:
[[Mathc initiation/a557| Sommaire]]
:
.
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
:
.
:
{{Partie{{{type|}}}|'''Fonction :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
:
.
:
{{Partie{{{type|}}}|'''Limite :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
:
.
:
{{Partie{{{type|}}}|'''Dérivé :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
:
.
:
== '''Intégrale''' ==
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
:
== '''Quelques méthodes pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLP0eWb5NsJJo&si=PHZjnQ4-3D80xXTI Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
:
== '''Quelques méthodes trigonométriques pour les intégrales''' ==
:
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
{{Partie{{{type|}}}|.}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
:
.
:
{{Partie{{{type|}}}|'''Personnaliser la fonction simpson();'''}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
smnebiz9b0t04j49tedvzm20ada0lwv
775696
775695
2026-11-05T15:53:23Z
Xhungab
23827
775696
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
:
.
:
[[Mathc initiation/a557| Sommaire]]
:
.
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
:
.
:
{{Partie{{{type|}}}|'''Fonction :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
:
.
:
{{Partie{{{type|}}}|'''Limite :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
:
.
:
{{Partie{{{type|}}}|'''Dérivé :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
:
.
:
== '''Intégrale''' ==
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
:
== '''Quelques méthodes pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLP0eWb5NsJJo&si=PHZjnQ4-3D80xXTI Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
:
== '''Quelques méthodes trigonométriques pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLbEr5zLOlnVk&si=y2ibRK-OfMAHAaeH Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
{{Partie{{{type|}}}|.}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
:
.
:
{{Partie{{{type|}}}|'''Personnaliser la fonction simpson();'''}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
p2z6nwqouix30bfnvo4ezf5pidzdo8e
775697
775696
2026-11-05T16:01:49Z
Xhungab
23827
775697
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
:
.
:
[[Mathc initiation/a557| Sommaire]]
:
.
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
:
.
:
{{Partie{{{type|}}}|'''Fonction :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
:
.
:
{{Partie{{{type|}}}|'''Limite :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
:
.
:
{{Partie{{{type|}}}|'''Dérivé :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
:
.
:
== '''Intégrale''' ==
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
== '''Intégrer les fonctions élémentaires''' ==
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
:
== '''Quelques méthodes pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLP0eWb5NsJJo&si=PHZjnQ4-3D80xXTI Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
:
== '''Quelques méthodes trigonométriques pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLbEr5zLOlnVk&si=y2ibRK-OfMAHAaeH Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
{{Partie{{{type|}}}|.}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
:
.
:
{{Partie{{{type|}}}|'''Personnaliser la fonction simpson();'''}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
5kqvw90aogrnvklkzw0050w6z9j7p2f
775698
775697
2026-11-05T16:04:11Z
Xhungab
23827
775698
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
:
.
:
[[Mathc initiation/a557| Sommaire]]
:
.
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
:
.
:
{{Partie{{{type|}}}|'''Fonction :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
:
.
:
{{Partie{{{type|}}}|'''Limite :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
:
.
:
{{Partie{{{type|}}}|'''Dérivé :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
:
.
:
== '''Intégrale''' ==
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
== '''Intégrer les fonctions élémentaires''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLccO3NMEmcao&si=kaED6qx-1nEjxZok Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
:
== '''Quelques méthodes pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLP0eWb5NsJJo&si=PHZjnQ4-3D80xXTI Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
:
== '''Quelques méthodes trigonométriques pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLbEr5zLOlnVk&si=y2ibRK-OfMAHAaeH Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
{{Partie{{{type|}}}|.}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
:
.
:
{{Partie{{{type|}}}|'''Personnaliser la fonction simpson();'''}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
a1ne3gfkfcqbmln6i0icc4vdl0sfm04
775699
775698
2026-11-05T16:17:26Z
Xhungab
23827
775699
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
:
.
:
[[Mathc initiation/a557| Sommaire]]
:
.
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
:
.
:
{{Partie{{{type|}}}|'''Fonction :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
:
.
:
{{Partie{{{type|}}}|'''Limite :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLU6YllYgnP4o&si=bsxblHyhrXroaO0b Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
:
.
:
{{Partie{{{type|}}}|'''Dérivé :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
:
.
:
== '''Intégrale''' ==
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
== '''Intégrer les fonctions élémentaires''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLccO3NMEmcao&si=kaED6qx-1nEjxZok Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
:
== '''Quelques méthodes pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLP0eWb5NsJJo&si=PHZjnQ4-3D80xXTI Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
:
== '''Quelques méthodes trigonométriques pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLbEr5zLOlnVk&si=y2ibRK-OfMAHAaeH Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
{{Partie{{{type|}}}|.}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
{{Partie{{{type|}}}|.}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
:
.
:
{{Partie{{{type|}}}|'''Personnaliser la fonction simpson();'''}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
ngfua6ilbiiaw4habph6i4hrvgtwf8w
775700
775699
2026-11-05T16:20:40Z
Xhungab
23827
775700
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
:
.
:
[[Mathc initiation/a557| Sommaire]]
:
.
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
:
.
:
{{Partie{{{type|}}}|'''Fonction :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
:
.
:
{{Partie{{{type|}}}|'''Limite :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLU6YllYgnP4o&si=bsxblHyhrXroaO0b Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
:
.
:
{{Partie{{{type|}}}|'''Dérivé :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
:
.
:
== '''Intégrale''' ==
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
== '''Intégrer les fonctions élémentaires''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLccO3NMEmcao&si=kaED6qx-1nEjxZok Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
:
== '''Quelques méthodes pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLP0eWb5NsJJo&si=PHZjnQ4-3D80xXTI Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
:
== '''Quelques méthodes trigonométriques pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLbEr5zLOlnVk&si=y2ibRK-OfMAHAaeH Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
== '''Intégrales impropres''' ==
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLckkkHgbrn5g&si=G1i4twshJIOV97yN Playlist].'''
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
{{Partie{{{type|}}}|.}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
:
.
:
{{Partie{{{type|}}}|'''Personnaliser la fonction simpson();'''}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
tdkwdu3d8qz77itcc3mitmu86bqg8kd
775701
775700
2026-11-05T16:24:21Z
Xhungab
23827
775701
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
:
.
:
[[Mathc initiation/a557| Sommaire]]
:
.
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
:
.
:
{{Partie{{{type|}}}|'''Fonction :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
:
.
:
{{Partie{{{type|}}}|'''Limite :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLU6YllYgnP4o&si=bsxblHyhrXroaO0b Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
:
.
:
{{Partie{{{type|}}}|'''Dérivé :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
:
.
:
== '''Intégrale''' ==
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
== '''Intégrer les fonctions élémentaires''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLccO3NMEmcao&si=kaED6qx-1nEjxZok Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
:
== '''Quelques méthodes pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLP0eWb5NsJJo&si=PHZjnQ4-3D80xXTI Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
:
== '''Quelques méthodes trigonométriques pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLbEr5zLOlnVk&si=y2ibRK-OfMAHAaeH Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
== '''Intégrales impropres''' ==
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLckkkHgbrn5g&si=G1i4twshJIOV97yN Playlist].'''
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
{{Partie{{{type|}}}|.}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
:
.
:
=='''Personnaliser la fonction simpson'''==
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLDhvtNTcnaQI&si=m2awdjjErWwARj_3 Playlist].'''
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
3xwsr0mute36efx94z5mb477bg4kna1
775702
775701
2026-11-05T16:27:32Z
Xhungab
23827
775702
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
:
.
:
[[Mathc initiation/a557| Sommaire]]
:
.
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
:
.
:
{{Partie{{{type|}}}|'''Fonction :'''}}
:
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
:
.
:
{{Partie{{{type|}}}|'''Limite :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLU6YllYgnP4o&si=bsxblHyhrXroaO0b Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
:
.
:
{{Partie{{{type|}}}|'''Dérivé :'''}}
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
:
.
:
== '''Intégrale''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLKuRcOMsneyk&si=6foM77aMMdZ0bAJL Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
== '''Intégrer les fonctions élémentaires''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLccO3NMEmcao&si=kaED6qx-1nEjxZok Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
:
== '''Quelques méthodes pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLP0eWb5NsJJo&si=PHZjnQ4-3D80xXTI Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
:
== '''Quelques méthodes trigonométriques pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLbEr5zLOlnVk&si=y2ibRK-OfMAHAaeH Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
== '''Intégrales impropres''' ==
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLckkkHgbrn5g&si=G1i4twshJIOV97yN Playlist].'''
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
{{Partie{{{type|}}}|.}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
:
.
:
=='''Personnaliser la fonction simpson'''==
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLDhvtNTcnaQI&si=m2awdjjErWwARj_3 Playlist].'''
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
pl6h70oxh2o8vyer4ovu98y5kae0z5l
775703
775702
2026-11-05T16:29:39Z
Xhungab
23827
775703
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
[[Mathc initiation/a557| Sommaire]]
=='''Fonction :'''==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
;
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
:
.
:
=='''Limite :'''==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLU6YllYgnP4o&si=bsxblHyhrXroaO0b Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
:
.
:
=='''Dérivé :'''==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
.
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
:
.
:
== '''Intégrale''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLKuRcOMsneyk&si=6foM77aMMdZ0bAJL Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
== '''Intégrer les fonctions élémentaires''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLccO3NMEmcao&si=kaED6qx-1nEjxZok Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
:
== '''Quelques méthodes pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLP0eWb5NsJJo&si=PHZjnQ4-3D80xXTI Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
:
== '''Quelques méthodes trigonométriques pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLbEr5zLOlnVk&si=y2ibRK-OfMAHAaeH Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
== '''Intégrales impropres''' ==
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLckkkHgbrn5g&si=G1i4twshJIOV97yN Playlist].'''
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
{{Partie{{{type|}}}|.}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
:
.
:
=='''Personnaliser la fonction simpson'''==
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLDhvtNTcnaQI&si=m2awdjjErWwARj_3 Playlist].'''
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
21083utbeze2svsf2se97f6gd2zqhvp
775704
775703
2026-11-05T16:34:25Z
Xhungab
23827
775704
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
[[Mathc initiation/a557| Sommaire]]
=='''Fonction :'''==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
;
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
=='''Limite :'''==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLU6YllYgnP4o&si=bsxblHyhrXroaO0b Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
=='''Dérivé :'''==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
== '''Intégrale''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLKuRcOMsneyk&si=6foM77aMMdZ0bAJL Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
== '''Intégrer les fonctions élémentaires''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLccO3NMEmcao&si=kaED6qx-1nEjxZok Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
:
== '''Quelques méthodes pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLP0eWb5NsJJo&si=PHZjnQ4-3D80xXTI Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
:
== '''Quelques méthodes trigonométriques pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLbEr5zLOlnVk&si=y2ibRK-OfMAHAaeH Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
== '''Intégrales impropres''' ==
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLckkkHgbrn5g&si=G1i4twshJIOV97yN Playlist].'''
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
=='''Personnaliser la fonction simpson'''==
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLDhvtNTcnaQI&si=m2awdjjErWwARj_3 Playlist].'''
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
7pyrh7um7ciej3cca1q1rc9pl7n2mt1
775705
775704
2026-11-05T16:41:14Z
Xhungab
23827
775705
wikitext
text/x-wiki
__NOTOC__
[[Catégorie:Mathc initiation (livre)]]
[[Mathc initiation/a557| Sommaire]]
=='''Fonctions :'''==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [[https://youtube.com/playlist?list=PLi6peGpf8EPOauB80fuxHOgDdtJjEEkGB&feature=shared Playlist]].'''
;
{{Partie{{{type|}}}|[[Mathc initiation/000b|* Dessiner une fonction]]}}
{{Partie{{{type|}}}|[[Mathc initiation/000k|* Dessiner une fonction et son inverse]]}}
:
=='''Fonctions trigonométriques et trigonométriques hyperboliques :'''==
:
{{Partie{{{type|}}}|[[Mathc initiation/a77|* Trigonométrie]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78|* Trigonométrie hyperbolique]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a78a|* Comparons les équations Trigonométrie et les Trigonométrie hyperbolique]]}}
:
=='''Fonctions logarithmiques exponentielles :'''==
:
{{Partie{{{type|}}}|[[Mathc initiation/a81|* Logarithmes Exponentielles]]}}
=='''Limite :'''==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLU6YllYgnP4o&si=bsxblHyhrXroaO0b Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c30|* Forme indéterminée (Règle de L'Hôpital)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a238|* Forme indéterminée 2 (La fonction exponentielle)]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c75|* Asymptotes et Branches Paraboliques]]}}
=='''Dérivé :'''==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLHi3MlHIPjb0&si=ot4-Y86rbo5o56wb Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c22|* La méthode de Newton (en x)]]}}
{{Partie{{{type|}}}|[[Mathc initiation/a355|* Variations sur la tangente]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c23|* Dérivé première et seconde]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c53fb|* Vérifions si f(x) et f(x)+C ont bien des dérivées égales]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c76|* Dériver des fonctions élémentaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001K|* Dérivation logarithmique]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41fd|* Calculer la courbure pour une fonction f(x)]]}}
== '''Intégrale''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLKuRcOMsneyk&si=6foM77aMMdZ0bAJL Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c14|* Intégrale]]}}
{{Partie{{{type|}}}|[[Mathc initiation/0029|* Intégrale : Fonctions impaires]]}}
{{Partie{{{type|}}}|[[Mathc initiation/001W|* Intégrale : Propriétés linéaires]]}}
:
== '''Intégrer les fonctions élémentaires''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLccO3NMEmcao&si=kaED6qx-1nEjxZok Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c74|* Intégrer les fonctions élémentaires ]]}}
:
== '''Quelques méthodes pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLP0eWb5NsJJo&si=PHZjnQ4-3D80xXTI Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a569|* Fractions partielles]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c72|* Changement de variables ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c73|* La méthode du tableur ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c71|* L'intégration par partie ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c79|* La méthode des conjugués ]]}}
:
== '''Quelques méthodes trigonométriques pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLbEr5zLOlnVk&si=y2ibRK-OfMAHAaeH Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/a89|* Méthodes trigonométriques]]}}
:
== '''Intégrales impropres''' ==
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLckkkHgbrn5g&si=G1i4twshJIOV97yN Playlist].'''
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c81|* Intégrales impropres]]}}
:
== '''Quelques applications pour les intégrales''' ==
:
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLRE-GVc5VmsI&si=76kYI3vcLHZUTsxN Playlist].'''
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c37|* Calculer l'aire sous la courbe ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c38|* Calculer l'aire entre deux courbes ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c42|* Volume d'un solide entre une fonction et l'axe des x par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c41|* Volume d'un solide entre deux fonctions par la méthode des disques ]]}}
:
{{Partie{{{type|}}}|[[Mathc initiation/a101|* Volume d'un solide entre une fonction et l'axe des x par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/a22|* Volume d'un solide entre deux fonction par la méthode des cylindres creux ]]}}
:
:
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c39|* Calculer la longueur d'un arc ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c40|* Calculer la surface de révolution autour de l'axe des x ]]}}
=='''Personnaliser la fonction simpson'''==
'''L'étude de ce chapitre peut ce faire à l'aide de cette [https://youtube.com/playlist?list=PLDhvtNTcnaQI&si=m2awdjjErWwARj_3 Playlist].'''
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c43|* La fonction int_ds(); ]]}}
{{Partie{{{type|}}}|[[Mathc initiation/Fichiers h : c44|* La fonction surfacearea_ds(); ]]}}
'''[[Mathc initiation/a362|.]]'''
{{AutoCat}}
f9e5f6lay9xgr1fk22v6w0cevdvbq4q
Vocabulaire anglais-français à l'intention des apprenants avancés/D
0
78009
775709
767919
2026-11-06T06:32:28Z
Elnon
41284
/* D */ Complément
775709
wikitext
text/x-wiki
{{../Index}}
=== D ===
* D : (note scolaire) insuffisant
* dab (v) (tr.) : tamponner
* dabble (v) (intr.) : s’occuper (in sth, de qch), se mêler un peu (in sth, de qch) - to dabble on the stock exchange : boursicoter
* dace (n) : vandoise (poisson d’élevage)
* daffy (a) (fam.) : farfelu(e), loufoque - How daffy you can get! : Ce que tu peux être idiot !
* daft (a) : un peu fou/folle, timbré (fam.), toqué (fam.), cinglé (fam.) - to go daft : perdre la boule
* dafty (n) (pl. dafties) : cinglé (n)
* dagger (n) : poignard
* daily (a) : journalier/-ière, quotidien(ne) - daily benefit : indemnité journalière - the regional daily press : la presse quotidienne régionale
* daily (n) (pl. dailies) : (Presse) quotidien (n)
* dairy (n) (pl. dairies) : laiterie (f)
* daisy (n) (pl. daisies) : pâquerette (f) - to be pushing up the daisies : manger les pissenlits par la racine
* dale (lit.) (n) : vallée (f)
* dalliance (n) : flirtage
* dally (v) (intr.) : lambiner, traîner, lanterner
* dam (n) : barrage - arch dam : barrage-voûte - check dam : barrage de retenue, restanque (f) (dans le lit d’un torrent) - rock check dam : barrage de retenue en pierre - dam spillway : déversoir de barrage
* damage (n) (fa p) : 1/ (ind. sing.) dégâts (pl.), dommages subis (pl.) - to minimise damage : limiter les dégâts - criminal damage : dégradation de biens, dégradation volontaire - serious damage : graves dégâts - damage control : limitation des dégâts, atténuation des dégats, réparation des dégâts, sauvetage des meubles (fam.) - damage limitation : limitation des dégâts ; 2/ (ind. sing.) pertes (humaines) (f pl.) - collateral damage : pertes civiles (pl.) ; 3/ (pl. damages) dommages-intérêts (pl.)
* damage (v) (tr.) : endommager, abîmer, détériorer
* damage-resistant (ac) : résistant aux détériorations - damage-resistant coating : revêtement résistant aux agressions
* damaging (a) : préjudiciable, dommageable - damaging charges : accusations préjudiciables
* dame (n) : 1/ dame (f) ; 2/ (brit.) (titre) dame - Dame Maggie Smith : Dame Maggie Smith ; 3/ (amér.) (péj.) bonne femme (f)
* damn (n) : juron
* damn (a) : satané, fichu(e), maudit(e)
* damn (adv.) : vachement (arg.)
* damn ! (interj.) : zut ! (fam.), mince ! (fam.), merde ! (vulg.), bordel ! (vulg.)
* damn (v) (tr.) : 1/ damner ; 2/ condamner
* damnable (a) : maudit(e), satané
* damned (a) : 1/ (Rel.) damné ; 2/ maudit(e), foutu(e) (fam.) - Stop being such a damned nuisance! : Arrête d’enquiquiner le monde !
* dammit! (interj.) (forme faible de damn it!) : mince !
* damning (a) : accablant(e) - damning evidence : éléments de preuve accablants, indices accablants
* damp (a) : humide, moite - damp location : endroit humide
* damp (v) (tr.) : amortir
* dampen (v) : (tr.) rendre humide, rendre moite ; (intr.) devenir humide, devenir moite
* dampness (n) : humidité (f), moiteur (f)
* damp-proof (vc) (tr.) : isoler contre l'humidité, hydrofuger
* Dane (n pr.) : Danois (le ressortissant)
* dancing (n) : (la) dance - pole dancing : danse à la barre verticale - tap dancing : (les) claquettes
* danger (n) : danger
* dangerous (a) : dangereux/-euse
* dangerousness (n) : caractère dangereux, nature dangereuse (f), dangerosité (f)
* dangle (n) : chose qu’on fait miroiter (f), carotte (f), appât, leurre, piège
* dangle (v) : (tr.) laisser pendre, suspendre, agiter (before sb, devant qn) ; (intr.) [clés, etc.] se balancer, pendiller, pendouiller
* Danish (a) : danois(e) (sans maj.)
* dank (a) : humide (et froid(e))
* dankness (n) : (un) froid humide
* D&T (n) (G.-B.) (init. de design and technology : conception et fabrication (de produits industriels)) (var. DT)
* dapper (a) : fringant(e)
* dare (v) (tr.) : 1/ oser - I dare say : probablement ; 2/ mettre au défi - to dare sb to do sth : mettre qn au défi de faire qch
* daredevil (n) : casse-cou
* daring (a) : audacieux/-euse
* daring (n) : audace (f)
* dark (a) : 1/ sombre, noir(e) - dark light : lumière sombre (f) - dark room (Photog.) : chambre noire (f) ; 2/ [couleur] foncé
* dark (n) : - the dark : a/ l’obscurité (f), le noir ; b/ (fig.) l’ignorance (f) - to keep sb in the dark : maintenir qn dans l’ignorance, cacher la vérité à qn, cacher qch à qn
* darken (v) : (tr.) obscurcir ; (intr.) s’obscurcir
* darkness (n) : obscurité (f)
* darling (n) : 1/ chéri, chérie (en s’adressant à qn) ; 2/ bien-aimé, amour, favori(e) - a newfound darling of the media : la toute nouvelle coqueluche des médias
* darling (a) : 1/ chéri(e), adoré ; 2/ bien-aimé
* darn (a) (amér.) (= damn) : satané, fichu(e), maudit(e)
* darn (adv.) (amér.) (= damn) : drôlement, vachement - It’s a darn good job… : C’est une drôlement bonne chose que…
* darn (v) (tr.) : repriser
* dart (n) (fa) : fléchette (f)
* dart (v) (intr.) : filer comme une flèche
* dart-like (ac) : ressemblant à une fléchette
* dart out (v) (intr.) : surgir comme une flèche
* dash (n) : (Ponct.) tiret - em dash : tiret cadratin, tiret long (syn. long dash) - en dash : tiret demi-cadratin / semi-cadratin, demi-tiret, tiret moyen (syn. middle dash) - short dash : tiret court (syn. hyphen)
* dastard (a) : poltron(ne)
* dastardly (a) : infâme
* data (n ind. sg.) : 1/ données (f pl.) - to triangulate data : recouper des données - a piece of data : une donnée - empirical data : données empiriques - personal data : données personnelles, informations nominatives (f pl.) - raw data : données brutes - data item : donnée ; 2/ (Inf.) données (informatiques) - big data : gros corpus de données - data acquisition : saisie automatique de données - data centre (brit.) / data center (amér.) : centre de traitement de données, centre informatique, infocentre - data collection : collecte de données - data file : fichier de données - data mart : dépôt de données - data medium : support de données - data mining : exploitation de gisements d’informations, pêche aux renseignements (fam.) - data network : réseau de communication de données - data sheet : fiche technique, feuille de programmation (Inf.) (aussi datasheet) ; 3/ données numériques (pl.), données statistiques (pl.), statistiques (pl.) - data journalism : journalisme de données numériques, journalisme de statistiques
* database (n) : base de données - to access a database : consulter une base de données
* database-centric (ac) : centré (sur les) bases de données - database-centric architecture : architecture centrée sur les bases de données, architecture centrée bases de données
* data-driven (ac) : piloté par les données, guidé par les données - data-driven compendium : recueil construit à partir de données réelles - data-driven learning : apprentissage piloté par les données
* date (n) (fa p) : 1/ date (f) - to bring up to date : mettre à jour - to date : à ce jour - To date, nothing has been heard from them : Jusque ici, on n’a pas eu de nouvelles d’eux - to be out of date : être démodé, être dépassé, être obsolète, être caduc/caduque, être périmé, être suranné - Baby, you’re out of date! : Ma petite, t’es plus dans le coup ! - That info is out of date : Cette info n’est plus d’actualité - effective date : date d’effet ; 2/ rendez-vous (souvent amoureux) - to make a date with sb : prendre rendez-vous avec qn
* date (v): 1/ (tr.) dater ; 2/ (tr.) to date sb : sortir avec (a boyfriend, un petit ami, a girlfriend, une petite amie) ; (intr.) sortir - Bill and I dated the next night : Bill et moi sommes sortis ensemble le lendemain soir
* dateless (a) : sans date
* dating (n) : 1/ datation (f) ; 2/ rendez-vous (pl.) (avec une(e) petit(e) ami(e) - dating agency : agence de rencontres
* daub (v) (tr.) : barbouiller (with, de) - to daub with graffiti : barbouiller de graffitis
* daughter (n) : fille (f)
* daughter-in-law (n) : belle-fille (f)
* daughterboard (n) : (Inf.) carte-fille (f)
* daunt (v) (tr.) : décourager, intimider, abattre
* daunting (a) : décourageant(e)
* daw (n) (abr. de jackdaw) : choucas
* dawdle (n) : flâneur
* dawdle (v) (intr.) : 1/ traîner, traînasser, lambiner ; 2/ flâner, musarder
* dawdle away (v) (tr.) : gaspiller - to dawdle one’s time away : gaspiller son temps
* dawn (n) : aube - by dawn’s early light : dès les premières lueurs de l’aube
* day (n) : 1/ jour, journée (f) - Make my day! : Fais-moi plaisir ! - You’ve made my day : Rien ne saurait me faire plus plaisir - business day : jour ouvrable, jour ouvré - full-on day : journée bien chargée - working day : a/ jour ouvrable ; b/ journée de travail - day trader : courtier réalisant ses opérations sur une journée, négociateur sur séance - day tripper : touriste d’un jour ; 2/ journée, fête - field day a/ journée champêtre ; b/ grand jour, jour faste - to have a field day : s’en donner à cœur joie, se régaler - flag day : journée de quête (pour une œuvre de bienfaisance) - national day : journée nationale - to hold a national day of courtesy : organiser la journée nationale de la courtoisie - Speech Day : (Éduc.) journée de distribution des prix - sports day : fête des sports - day return ticket (brit.) : billet aller-retour dans la journée ; 3/ bataille - to win the day : gagner la bataille - to lose the day : perdre la bataille - It saves the day : Cela limite les dégâts ; 4/ (pl. days) jours (pl.), période, époque - (in) these days : de nos jours - in those days : à cette époque, en ce temps-là
* daybreak (n) : aurore, point du jour
* day-for-night (ac) : - day-for-night shooting : prises de vues en nuit américaine (f pl.)
* daylight (n) : lumière du jour - in broad daylight : en plein jour
* daymare (n) : cauchemar diurne
* daytime (n) : (le) jour (par oppo. à la nuit) - daytime crew : équipe de jour
* daze (n) : hébétement, confusion - to be in a daze : être hébété, être étourdi(e)
* dazed (a) : stupéfait(e), abasourdi(e), hébété
* dazzle (v) (tr.) : éblouir
* dazzling (a) : éblouissant(e)
* DC : abr. de District of Columbia, (le) District de Columbia
* DDL (n) (init. de data-driven learning : apprentissage piloté par les données)
* deacon (n) : diacre
* deactivate (v) (tr.) : 1/ désactiver, mettre hors service, mettre hors fonction, mettre en sommeil ; 2/ mettre hors tension (un appareil, une ligne)
* deactuate (v) (tr.) : mettre hors service, mettre hors fonction
* dead (a) : 1/ mort(e) - dead and buried : mort et enterré, morte et enterrée - a dead man walking : un mort en sursis - dead language : langue morte (f) - dead zone : zone morte (f) (zone marine déficitaire en oxygène) ; 2/ (fig.) mort(e), où il ne se passe rien - This place is as dead as a graveyard : C’est mort ici dedans ce soir, On se croirait dans un cimetière ; 2/ calme - dead hours : heures creuses (f pl.) ; 3/ absolu(e) - a dead cert : une certitude absolue
* dead (a. subst. sing.) : - in the dead of night : au beau milieu de la nuit - in the dead of winter : au cœur de l'hiver
* dead (a. subst. pl.) : - the dead : les morts
* dead (adv.) : absolument, à fond - to be dead against sth : être à fond contre qch
* dead and buried (paire adj .) : mort et enterré, morte et enterrée, six pieds sous terre - She wants to see me dead and buried : Elle veut me voir six pieds sous terre - Our old ideals are now dead and buried : Nos anciens idéaux sont désormais morts et enterrés
* dead and gone (paire adj.) : qui est disparu(e), qui s’est évanoui(e), qui est définitivement révolu(e), qui n’est plus, qui n’est plus de ce monde - Her childhood’s dreams are dead and gone : Ses rêves d’enfant se sont évanouis - The old barn is dead and gone : La vieille grange n’est plus
* deadbeat (a) (fam.) : épuisé, vanné (fam.)
* deaden (v) : (tr.) amortir, assourdir ; (intr.) s’amortir, s’assourdir
* dead-end (ac) : 1/ sans issue - dead-end street (amér.) : voie sans issue, impasse (f) ; 2/ sans avenir, sans aucune perspective - dead-end job : boulot sans avenir
* deadfall (n) : 1/ piège à assommoir, assommoir ; 2/ (ind. sing.) arbres abattus (pl.), arbres morts (pl.) ; 3/ (amér.) bar ouvert toute la nuit, tripot
* deadlock (n) : impasse (f) (la situation)
* deadly (a) : mortel(le) (syn. lethal)
* deaf (a) : sourd(e) - the deaf (adj. subst. pl.) les sourds - a deaf aid (brit.) : un appareil auditif
* deafen (v) (tr.) : 1/ rendre sourd(e) ; 2/ assourdir
* deafening (a) : assourdissant(e)
* deal (n) : 1/ accord, affaire conclue (f), marché - We have a deal! : Affaire conclue ! - under the deal : selon cet accord - one-shot deal : mesure ponctuelle (f), cas unique ; 2/ contrat ; 3/ opération (boursière) (f) ; 4/ - a great deal of : une grande quantité de
* deal (v) (dealt, dealt) : 1/ (tr.) porter, asséner (un coup) - to deal a serious blow : porter un rude coup (to, à) ; 2/ (intr.) to deal with sb : se comporter envers qn, traiter qn - to deal with sth : s’occuper de qch, traiter de qch - to deal with a challenge : relever un défi, être à la hauteur d’un défi ; 3/ (intr.) - to deal in sth : faire commerce de qch
* dealer (n) : 1/ marchand, négociant - antique dealer : antiquaire - arms dealer : trafiquant d’armes ; 2/ (Fin.) intermédiaire financier - primary dealer : courtier opérant sur le marché primaire, négociant principal (d’obligations) ; 3/ distributeur, revendeur, concessionnaire - authorised dealer : concessionnaire agréé ; 4/ croupier, croupière
* dealership (n) : place de concessionnaire
* dealing (n) : 1/ (Bourse) commerce, transactions (f pl.), opérations (f pl.) - Dealing resumed this morning (brit.) : Les transactions ont repris ce matin - share dealing : commerce des actions, transactions (f pl.) sur titres - dealing room : salle des opérations ; 2/ trafic - arms dealing : trafic d’armes
* dealt (prét. de to deal)
* dealt (pp de to deal)
* dean (n) : doyen
* deanship (n) : 1/ décanat (la charge mais aussi la durée) ; 2/ doyenné (la charge mais aussi la demeure et la circonscription)
* dear (a) : cher/-ère
* dearth (n) : 1/ disette, famine ; 2/ manque (of sth, de qch)
* dearly (adv.) : 1/ chèrement, très cher ; 2/ énormément, beaucoup, de tout son cœur
* death (n) : 1/ mort (f) - if death supervenes : si la mort survient - to predict one’s own death : prédire sa propre mort - death by misadventure : mort accidentelle - life after death : la vie après la mort - pangs of death : affres de la mort - grim death : mort sinistre, mort horrible - sudden death : mort subite - wrongful death : mort causée par la faute d’autrui - death duties : droits de succession - the death penalty : la peine de mort, la peine capitale (syn. the death sentence : la peine de mort) - death rate : taux de mortalité - death row (amér.) : couloir de la mort - death throes : (l’)agonie de la mort ; 2/ (expressions diverses) - to beat sb to death : rosser qn jusqu’à ce que mort s’ensuive - to chop to death : tuer à coups de hache - to fall to one’s death : faire une chute mortelle - [patient] to be snatched from the jaws of death : [malade] être arraché aux griffes de la mort
* deathly (a) : 1/ mortel(le) ; 2/ de mort, cadavérique - to look deathly : avoir une pâleur cadavérique
* deb (n) (fam.) (tronc. de debutante : débutante) : débutante (f)
* debacle (n) : débâcle (f) - economic debacle : débâcle économique
* de-ball / deball (v) (tr.) : (prop. et fig.) couper les couilles à (vulg.)
* debar (v) (tr.) : - to debar sb from sth : exclure qn de qch, interdire qch à qn
* debase (v) (tr.) : 1/ avilir, rabaisser ; 2/ altérer (une monnaie)
* debasement (n) : 1/ avilissement, rabaissement ; 2/ altération (f) (d’une monnaie)
* debasing (n) : altération (f), dégradation (f) - the debasing of English : la dégradation de l’anglais
* debate (n) : débat - to be up for debate : être à débattre, faire l’objet d’un débat - That’s not up for debate : Ce n‘est pas négociable - There is no debate that… : Il est incontestable que… - face-to-face debate : face à face - illuminating debate : débat éclairant
* debate (v) (tr.) : débattre de
* debit (n) : débit - credit/debit card : carte de crédit et de débit
* debenture (n) : obligation (f) (sans garantie) - debenture holder : obligataire (n)
* debonair (a) (fa) : raffiné, élégant(e), d’une élégance nonchalante
* debond (v) : (tr.) déliaisonner, décoller ; (intr .) se déliaisonner, se décoller
* debone (v) (tr.) : désosser
* deboned (ppa) : désossé - deboned meat : viande sans os
* debris (n ind. sing.) : débris (pl.), décombres (pl.) - debris build-up : accumulation de débris
* debt (n) : dette (f) - gambling debt : dette de jeu - the debt burden : le fardeau de la dette
* debt-laden (ac) : criblé de dettes, croulant sous les dettes, surendetté - debt-laden airline : compagnie aérienne criblée de dettes - debt-laden country : pays croulant sous les dettes
* debug (v) (tr.) : (Inf.) corriger les erreurs de, mettre au point, déboguer (un programme)
* debunk (v) (tr.) : 1/ discréditer (une théorie), tordre le coup à (une idée reçue) (fam.), faire un sort à (une théorie), déboulonner (un mythe) (fig.), briser (un mythe), démystifier - to debunk a case : éclaircir une affaire ; 2/ tourner (une chose) en ridicule
* debunker (n) : déboulonneur, déboulonneuse (fig.), démystificateur, démystificatrice - a UFO debunker : un déboulonneur d’ovnis
* debunking (n) : déboulonnage, démystification (f) - debunking piece : article de démystification
* debut (n) : 1/ entrée dans le monde, baptême social ; 2/ débuts (pl.) - she made her debut as one of Madonna's dancers : Elle fit ses premiers pas en tant que danseuse de Madonna - debut album : premier album
* debut (v) : (tr.) présenter pour la première fois au public ; (intr.) faire ses débuts
* decade (n) (fa p) : 1/ décennie (f) (10 ans) ; 2/ (Maths, Phys.) décade (groupe de dix)
* decade-old (ac) : vieux/vieille de plusieurs décennies
* decadence (n) : décadence (f)
* decadent (a) : décadent(e)
* decaffeinated (ppa) : décaféiné - decaffeinated coffee : café décaféiné
* decagon (n) : décagone
* decanter (n) : carafe (f)
* decapitalisation (brit.) / decapitalisation (amér.) (n) : décapitalisation (f)
* decapitalise (brit.) / decapitalize (amér.) (n) : décapitaliser
* decarbonisation (brit.) / decarbonization (amér.) (n) : 1/ décalaminage ; 2/ décarbonisation (f), décarbonation (f)
* decarbonise (brit.) / decarbonize (amér.) (v) (tr.) : 1/ décalaminer ; 2/ décarboniser, décarboner
* decay (n) : 1/ décomposition (f), pourrissement, carie (f) ; 2/ (fig.) décadence (f), déclin, décrépitude (f)
* decay (v) : (tr.) décomposer, faire pourrir, carier (une dent) ; (intr.) se décomposer, pourrir, [dent] se carier
* decaying (a) : 1/ en décomposition ; 2/ (fig.) en décadence, en déclin, décrépit(e)
* deceit (n) : tromperie (f), fraude (f), duperie (f)
* deceitful (a) : trompeur/-euse, mensonger/-ère - deceitful words : paroles mensongères (f pl.)
* deceive (v) (tr.) (fa) : (tr.) tromper, duper, leurrer ; (intr.) être trompeur - Appearances deceive : Les apparences sont trompeuses
* deceived (ppa) (fa) : trompé, leurré - Youth is easily deceived, because it is quick to hope (Aristotle) : La jeunesse est facile à abuser car elle est prompte à espérer (Aristote).
* deceiver (n) : imposteur, escroc, arnaqueur - media deceivers : escrocs des médias
* decel (n) (pl. decels) (tronc. de deceleration)
* decelerate (v) (tr. et intr.) : décélérer
* deceleration (n) : décélération (f)
* decency (n) (fa) : 1/ décence (f) (= honnêteté morale) ; 2/ politesse (f), correction (f), bonnes manières (f pl.)
* decent (a) (fa) : convenable, honnête, acceptable - a decent education : une éducation convenable - a decent family : une famille respectable - a decent fellow : un brave type - decent people : honnêtes gens (m pl.)
* deception (n) (fa) : tromperie (f), duperie (f)
* deceptive (a) : trompeur/-euse - Appearances are deceptive : Les apparences sont trompeuses
* decide (v) (tr.) : décider - to decide whether… : décider si oui ou non…
* decidedly (adv.) : 1/ résolument, fermement, décidément (syn. definitely) ; 2/ vraiment, franchement
* decimal (a) : décimal(e) - the decimal point : (équivalent anglais de) la virgule décimale
* decipher (v) (tr.) : déchiffrer
* decision (n) : décision (f) - to make a bold decision : prendre une décision hardie - to make shitty decisions : prendre des décisions merdiques - difficult, time-sensitive decisions : décisions difficiles, urgentes - short-sighted decision : décision à courte vuen- decision maker : décideur, décisionnaire - decision making : prise de décisions
* deck (n) : 1/ pont (de navire, de plateforme pétrolière) - on deck : sur le pont ; 2/ (Aéro.) flight deck : cabine de pilotage ; 3/ - record deck : tourne-disque (masc.)
* declaration (n) : déclaration (f) - declaration of war : déclaration de guerre
* declare (v) (tr.) : 1/ déclarer ; 2/ (diverses expressions) - to declare a state of emergency : déclarer l’état d’urgence
* declassified (ppa) : rendu(e) public/-ique
* declassify (v) (tr.) : rendre public, lever le secret sur, mettre à la disposition du public, rendre public, déconfidentialiser - to declassify government records about UFOs : rendre publiques les archives gouvernementales sur les ovnis
* declination (n) : refus
* decline (n) : déclin (f), baisse (f), diminution (f) - to be in decline : être en déclin (syn. to be on the wane) - a decline in enrolment (brit.) / enrollment (amér.) : a/ une baisse du recrutement ; b/ une baisse de l’effectif - precipitous decline : déclin vertigineux ; 2/ pente (f), déclivité (f), inclinaison (f)
* decline (v) : 1/ (tr.) décliner ; (intr.) refuser (de faire qch) ; 2/ (intr.) décliner, diminuer, baisser
* declining (a) : en baisse - declining sales : ventes en baisse
* declinism (n) : déclinisme
* declinist (n) : décliniste (m/f), déclinologue (m/f)
* declog (v) (tr.) : décolmater, déboucher
* decode (v) (tr.) : décoder
* decoder (n) : décodeur
* decolonise (brit.) / decolonize (amér.) (v) (tr.) : décoloniser
* decom (v) (tr.) (tronc. de to decommission) : 1/ déclasser, désactiver, mettre hors service (une installation), désarmer (un navire) ; 2/ démanteler
* decommission (v) (tr.) : 1/ déclasser, désactiver, mettre hors service (une installation), désarmer (un navire) ; 2/ démanteler
* decommissioned (ppa) : [navire] désarmé ; [installation] mis(e) hors service
* decompile (v) (tr.) : (Inf.) décompiler
* decompo (n) (tronc. de decomposition) : décomposition (f) (d’un cadavre)
* decompose (v) : (tr.) décomposer ; (intr.) se décomposer
* decomposition (n) : décomposition (f) (d’un cadavre)
* decompress (v) (tr.) : (Inf.) décompresser (un programme)
* deconfliction (n) : déconfliction (f)
* decon (v) (tr.) (tronc. de to decontaminate)
* deconstruction (n) : démontage (d’un bâtiment)
* decontaminate (v) (tr.) : décontaminer
* decontamination (n) : décontamination (f)
* decontextualise (brit.) / decontextualize (amér.) (v) (tr.) : contextualiser
* decorn (v) (tr.) : décorner (un animal à corne(s))
* decorous (a) : convenable, comme il faut
* decoupage (n) (fa) : collage - the art of decoupage : l’art du collage
* decouple (v) (tr.) : découpler, désaccoupler
* decrease (n) : baisse (f), diminution (f)
* decrease (v) : (tr.) baisser, réduire, diminuer ; (intr.) baisser, décroître, diminuer
* decree (n) : décret, arrêt
* decree (v) (tr.) : décréter, arrêter
* decry (v) (tr.) : dénoncer, contester
* decuple (v) : (tr.) décupler ; (intr.) décupler
* dedicate (v) (tr.) : 1/ dédier (to, à) ; 2/ spécialiser (to, dans)
* dedicated (a) : 1/ passionné ; 2/ spécialisé, spécialement conçu(e) - dedicated production line : ligne de production spécialisée
* dedication (n) : spécialisation (f)
* de-dollarisation (brit.) / de-dollarization (amér.) (v) (tr.) : dé-dollarisation
* de-dollarise (brit.) / de-dollarize (amér.) (v) (tr.) : dé-dollariser
* deduce (v) (tr.) : déduire (une conclusion) - to deduce sth from sth : déduire qch de qch - to deduce that… : (en) déduire que… - I deduced from it that I was wrong : J'en ai déduit que j'avais tort
* deducible (a) : que l'on peut déduire, déduisible - to be deducible from sth : être déduisible de qch
* de-dust (v) (tr.) : dépoussiérer (de l’air, des fumées) (aussi to dedust)
* deed (n) : 1/ acte - foul deed : acte crapuleux ; 2/ acte (notarié) - to draw up a deed : rédiger un acte
* deed poll (n) (brit.) : (Droit) acte unilatéral, acte à titre gratuit
* de-embrittle (v) (tr.) : défragiliser (du métal)
* de-energise (brit.) / de-energize (amér.) (v) (tr.) : (Élect.) mettre hors tension, couper le courant à
* deep (a) : 1/ profond(e) - the Deep State : l’État profond ; 2/ intersidéral(e) - deep space : espace intersidéral
* deep (adv.) : profondément - to dig deep in the ground : creuser orofondément dans le sol
* deep down (adv.) : au fond de soi-même - deep down in his heart : en son for intérieur - deep down inside : tout au fond de soi
* deepen (v) : (tr.) approfondir ; (intr.) s’approfondir
* deep end (n) : (dans une piscine) grand bain - to go off the deep end (fig.) : piquer une crise, se mettre dans tous ses états
* deepfake (n) (tronc. de deep learning fake) : vidéo truquée (f), hypertrucage (Q) (aussi deep fake)
* deep-felt (ac) : sincère
* deep-laid (ac) : [plan] secret/-ète
* deeply (adv.) : profondément
* deep-lying (ac) : profond(e) - deep-lying crack : fissure profonde
* deep-rooted (ac) : profondément enraciné, profondément ancré - deep-rooted problems : problèmes profondément ancrés - deep-rooted trend : tendance de fond
* deep-seated (ac) : (fig.) profondément ancré - deep-rooted belief : croyance profondément ancrée
* deep-set (ac) : enfoncé - deep-set eyes : yeux enfoncés
* deep stater (n) (amér.) : membre de l’État profond
* deep-water (ac) : en eaux profondes - deep-water port : port en eaux profondes
* deescalate (v) (tr.) : désamorcer - to deescalate a tense situation : désamorcer une situation tendue
* deface (v) (tr.) : 1/ défigurer ; 2/ mutiler, dégrader
* de facto (a) : de fait (anton. de jure : de droit)
* de facto (adv) : de fait, dans les faits (anton. de jure : de droit)
* defamatory (a) : diffamatoire - defamatory statement : propos diffamatoire
* defamer (n) : diffamateur/-trice
* de-fang / defang (v) (tr.) : 1/ couper les griffes à (un chat), limer les crocs d’(un chien) ; 2/ (fig.) rendre inoffensif, neutraliser (un adversaire)
* defanging / defanging (n) : 1/ (le) fait de couper les griffes, (le) fait de limer les crocs ; 2/ (fig.) neutralisation (f)
* defatted (a) : dégraissé - defatted meat : viande sans gras, viande dégraissée
* default (n) : 1/ défectuosité (f) ; 2/ carence (f) - default of contractor : carence de l’entrepreneur - default settngs : paramètres par défaut, paramètres implicites
* default (v) (intr.) : 1/ ne pas s’acquitter d’une dette ; 2/ to default on sth : ne pas rembourser qch - to default on a house loan : ne plus rembourser un crédit immobilier
* defeat (n) : défaite (f) - to head for defeat : se diriger vers la défaite, aller tout droit vers la défaite - the defeat of Nazism : la défaite du nazisme - resounding defeat : défaite retentissante
* defeat (v) (tr.) : défaire, vaincre
* defecate (v) (intr.) : déféquer - to defecate in one’s pants (fig.) : faire dans son froc
* defect (n) : défaut, défectuosité (f), imperfection (f), vice (de construction) - to eliminate all defects : éliminer tous les défauts - latent defect : défaut caché, vice caché - nil defect : (le) zéro défaut (jarg.), (le) zéro défectuosité (jarg.) - zero defects : (le) zéro défaut (jarg.), (le) zéro défectuosité (jarg.) - to achieve zero defects : atteindre une qualité parfaite
* defective (a) : défectueux/-euse, en mauvais état - defective returns : articles défectueux renvoyés
* defector (n) : transfuge (m/f)
* defence (brit.) / defense (amér.) (n) : 1/ (Milit.) (la) défense - defense contractor : entreprise travaillant pour la Défense (nationale) ; 2/ (au pl. defences) ouvrages défensifs, défenses (f pl.) ; 3/ défense (f), justification (f) - defence of the indefensible : défense de l’indéfendable, justification de l’injustifiable ; 4/ (Sport) (la) défense ; 5/ (Droit) (la) défense, (les) avocats ; 6/ defense (amér.) soutenance de rapport devant un jury
* defend (v) (tr.) : défendre - Defending the indefensible : Défendre l'indéfendable
* defender (n) : (Droit) défendeur/défenderesse
* defender (n) : défenseur
* defenestrate (v) (tr.) : défenestrer
* defenestration (n) : défenestration (f)
* defer (v) (tr.) : ajourner, différer, reporter à plus tard, remettre à plus tard
* deferred (ppa) : ajourné, différé, reporté à plus tard, remis(e) à plus tard
* deferment (n) : ajournement, report
* defiance (n) (fa) : défi
* defiant (a) : rebelle
* deficiency (n) : déficience (f)
* deficient (a) : déficient(e)
* defile (v) (tr.) : souiller, salir
* define (v) (tr.) : définir, déterminer
* defined (pp de to define) : (en compo.) défini(e) par, déterminé par
* definite (a) : 1/ défini(e), clair(e), précis(e), net(te) - definite article : (Gram.) article défini ; 2/ formel(le) - definite promise : promesse formelle ; 3/ certain(e)
* definiteness (n) : 1/ caractère défini, caractère précis, précision (f), caractère net, netteté (f) ; 2/ caractère formel ; 3/ certitude (f)
* definitely (adv.) : décidément, à coup sûr, sans aucun doute
* definitive (a) : définitif/-ive
* deflate (v) : 1/ (tr.) dégonfler (un pneu, un ballon) ; (intr.) [pneu, ballon, bulle] se dégonfler, désenfler - Deflate the tyre by pressing on the valve : Dégonfler le pneu en appuyant sur valve - The bond bubble is doomed to deflate : La bulle obligataire est condamnée à se dégonfler ; 2/ (tr.) faire baisser (les prix, ls coûts), faire tomber, faire chuter, provoquer la baisse de ; (intr.) [actifs] perdre de la valeur - This measure is intended to deflate the economy : Cette mesure est destinée à relancer l'activité économique ; 3/ (tr.) faire retomber (des espoirs) - The news is sure to deflate the hopes of climate activists : Ces nouvelles vont certainement faire retomber les espoirs des militants du climat ; 4/ (tr.) rabattre le caquet à (qn), démonter (qn), décontenancer (qn), désemparer (qn), décourager (qn) - I think I have worked out how to deflate him : Je pense avoir trouvé le moyen de lui rabattre le caquet
* deflation (n) : 1/ dégonflage (volontaire), dégonflement (involontaire), désenflement, crevaison (f) - [tyre] to be prone to deflation : [pneu] avoir tendance à se dégonfler ; 2/ déflation (en économie) - to fight off deflation : lutter contre la déflation
* deflator (n) : 1/ dégonfleur - tyre deflator : dégonfle-pneu, dégonfleur de pneus ; 2/ déflateur (en économie) - GDP deflator : déflateur du PIB (indicateur économique)
* deflect (v) (tr.) : défléchir, dévier, faire dévier (a bullet, une balle)
* deflection (n) : déviation (f), déformation (f), flexion (f)
* deforest (v) (tr.) : déboiser, détruire la forêt de
* deforestation (n) : déboisement, destruction de la forêt
* deforester (n) : déboiseur, destructeur de la forêt
* deformation (n) : déformation (f) - shear deformation : déformation par cisaillement - deformation resistance : résistance à la déformation
* defrag (v) (tronc. de to defragment)
* defragment (v) (tr.) : (Inf.) défragmenter, défractionner, remembrer (a file, un fichier)
* defraud (v) (tr.) : escroquer (qn), frauder (le fisc) - to defraud the treasury : frauder le fisc
* defrost (v) (tr.) : 1/ dégivrer ; 2/ décongeler
* defrosting (n) : 1/ dégivrage - defrosting operation : dégivrage ; 2/ décongélation (f)
* deft (a) : adroit(e) (with, de), preste
* deftly (adv.) : adroitement, prestement
*defunct (a) : 1/ défunt(e), disparu(e) ; 2/ désaffecté, abandonné ; 3/ (fig.) [projet] mort(e), enterré, mort(e), mort(e) et enterré
* defund (v) (tr.) : couper le financement de
* defy (v) (tr.) : défier - to defy explanation : défier l'entendement - to defy the doomsayers : défier les pronostics des Cassandre
* degauss (v) (tr.) : démagnétiser
* degenerate (a) : dégénéré
* degenerate (n) : dégénéré (n)
* degenerate (v) (intr.) : dégénérer (into, en)
* degeneration (n) : dégénérescence (f) - macular degeneration : dégénérescence maculaire
* deglitch (v) (tr.) : 1/ (Élect.) supprimer les pointes de, dépointer ; 2/ supprimer les défauts de (fichiers audio-numériques) ; 3/ (Inf.) supprimer les bogues de
* degrease (v) (tr.) : dégraisser
* degree (n) (fa p) : 1/ degré, niveau - degree of finish : degré de finition ; 2/ degré (de température) - a full 360-degree turn : un tour complet; 3/ diplôme - to earn a degree : décrocher (fam.) une licence - a degree from Tokyo University : un diplôme obtenu à l’université de Tokyo - a bachelor’s degree : une licence - a bachelor of science degree : une licence ès sciences - a junk degree : un diplôme sans valeur - a master’s degree : un diplôme de maîtrise ; un master - an honours degree : un diplôme (avec mention bien) (amér. honors degree)
* degree-laden (ac) : bardé de diplômes - degree-laden denizen : habitant bardé de diplômes
* degrowth (n) : décroissance (f)
* dehighlight (v) (tr.) : (Inf.) supprimer la mise en surbrillance, désélectionner
* dehumidify (v) (tr.) : déshumidifier, assécher
* de-ice (v) (tr.) : dégivrer (un pare-brise, un avion) (aussi to deice)
* de-icer (n) : 1/ (l’appareil) dégivreur ; 2/ (la subststance) antigel - runway de-icer : (Av.) produit de dégivrage des pistes (aussi deicer)
* deign (v) (tr.) : deigner, condescendre à
* de-industrialise (brit.) / de-industrialize (amér.) (v) (tr.) : désindustrialiser
* deionise (brit.) / deionize (amér.) (v) (tr.) : déminéraliser
* de-install (v) (tr.) : désinstaller, démonter (aussi to deinstall)
* dejag (v) (tr.) : (CAO-DAO) lisser
* de-jam / dejam (v) (tr.) : débloquer, dégripper, décoincer (Méca.)
* de-jamming / dejamming (n) : décoincement, dégagement - dejamming bar : barre de décoincemnt - dejamming wrench : clé de décoincement
* dejected (a) : abattu(e), découragé, qui fait grise mine
* dejectedly (adv .) : d’un air abattu, d’un air découragé
* Del. : abr. de Delaware, (le) Delaware
* delaminate (v) : 1/ (tr.) délaminer ; (intr.) se délaminer ; 2/ (tr.) décoller (from, de)
* Delaware (n pr.) : (le) Delaware
* delay (n) (fa) : perte de temps (f), retard, lenteur (f), contretemps, empêchement - to eliminate the delays along the supply chain : éliminer les lenteurs affectant la chaîne d'approvisionnement - repeated delays : retards à répétition
* delay (v) : 1/ (tr.) différer, reporter, remettre à plus tard - to be repeatedly delayed : être différé à plusieurs reprises ; 2/ (tr.) retarder ; (intr.) tarder - The plane was delayed by fog : L’avion a été retardé par du brouillard - Don’t delay! : Ne tarde pas / Ne tardez pas !, Dépêche-toi / Dépêchez-vous !
* delayed (ppa) : remis(e) à plus tard, retardé, différé, reporté
* delayer (v) (tr.) : déstratifier la pyramide hiérarchique de, éliminer des échelons hiérarchiques de, aplatir la structure hiérarchique de
* delayering (n) : déstratification de la pyramide hiérarchique, élimination d’échelons hiérarchiques intermédiaires, aplatissement de la structure hiérarchique - the delayering of hierarchies : (l’)effeuillage des structures hiérarchiques
* delegation (n) : délégation (f)
* delegitimise (brit.) / delegitimize (amér.) (v) (tr.) : délégitimer
* delete (v) (tr.) : effacer, oblitérer
* deleterious (a) : délétère
* deletion (n) : 1/ effacement ; 2/ suppression (f)
* deliberate (a) : délibéré, intentionnel(le), mûrement réfléchi(e), bien pesé
* deliberately (adv.) : délibérément, intentionnellement, exprès (fam.)
* deliberately provocative (ac) : volontairement provocateur, donnant dans la provocation - deliberately provocative opinion piece : article d’opinion donnant délibérément dans la provocation
* delicate (a) : délicat(e)
* delight (v) : (tr.) ravir (with, de) ; (intr.) trouver son bonheur (in, à, dans)
* delighted (a) : ravi(e) - I’m delighted with (var. at) your remarks : Je suis ravi de vos remarques
* delightful (a) : délicieux/-euse, charmant(e)
* delinquent (a) : 1/ délinquant(e) ; 2/ négligent(e) ; 3/ défaillant(e), en défaut - delinquent home owner : propriétaire en défaut
* delinquency (n) : délinquance (f)
* delinquent (n) : délinquant (n) - juvenile delinquent : jeune délinquant (éviter le calque « délinquant juvénile ») (syn. teenage delinquent)
* delish (a) (tronc. fam. de delicious) : délicieux/-euse
* de-list (v) (tr.) : retirer d’une liste, radier d’une liste
* deliver (v) (fa) : 1/ (tr.) acheminer ; distribuer, remettre - to deliver mail : remettre du courrier ; 2/ (tr.) fournir, apporter, procurer, livrer - to deliver urgent cargo : livrer des cargaisons en urgence ; 3/ (intr.) [pompe] débiter ; 3/ (tr.) prononcer - to deliver a sermon : prononcer un sermon ; 4/ (intr.) tenir ses promesses, « assurer » - to have to deliver all the time : devoir « assurer » tout le temps
* delivery (n) (pl. deliveries) : 1/ mise à disposition, livraison (f) - We do deliveries : Nous livrons à domicile - to take delivery of : prendre livraison de - delivery of information : fourniture d’informations - curbside delivery : livraison porte-à-porte - fast-tracked delivery : livraison accélérée - guaranteed delivery : livraison garantie - just-in-time delivery : livraison juste-à-temps, (le) zéro délai à la livraison (jarg.) - delivery date : date de livraison - delivery lead time : délai de livraison - delivery man : livreur - delivery time : délai de livraison, délai de mise à disposition - delivery van : camionnette de livraison ; 2/ sortie (f), expulsion (f) - delivery rate : débit d’expulsion ; 3/ accouchement
* delouse (v) (tr.) : épouiller
* delousing (n) : épouillage - delousing agent : produit anti-poux
* delta-shaped (ac) : en forme de delta
* delta-winged (ac) : (Av.) à aile en delta
* delude (v) (tr.) : 1/ tromper, leurrer ; 2/ - to delude oneself : se leurrer, se faire des illusions, se faire des idées
* delurk (v) (intr.) : sortir de l’anonymat
* delusion (n) : illusion (f)
* delusional (a) : délirant(e) - delusional megalomania : délire mégalomane (f)
* de-luxe (a) : de luxe - de-luxe funeral : funérailles de luxe
* delve (v) (intr.) : fouiller (into, dans)
* demagogue (n) : démagogue (m/f)
* demagoguery (n) : démagogie (f)
* demagogy (n) : démagogie (f)
* demake (n) : version rétro (d’un jeu vidéo)
* demake up (mod.) : à démaquiller - demake-up milk : lait à démaquiller, lait démaquillant
* demand (n) (fa p) : 1/ exigence (f) - to meet the demands of… : satisfaire aux exigences de… - market demands : exigences du marché ; 2/ (la) demande (anton. supply : (l’)offre) - fluctuating demand : demande fluctuante - strong demand : (une) forte demande (for sth, de qch) - demand fluctuations : fluctuations de la demande
* demand (v) (tr.) (fa) : 1/ exiger - to be demanded by law : être exigé par la loi ; 2/ réclamer
* demand-driven (ac) : impulsé par la demande, répondant à la demande - demand-driven agricultural research : recherches agricoles impulsées par la demande - demand-driven policy : politique des besoins (des clients)
* demanding (a) (fa) : exigeant(e)
* demanning (n) : dégraissage(s) (f) (des effectifs)
* demean (v) (tr.) : rabaisser, avilir - to demean oneself : s’abaisser, s’avilir - Would you demean yourself so far? : Vous iriez vous abaisser à ce point ?
* demeanour (n) : comportement, conduite (f), tenue (f), maintien (syn. behaviour)
* dementia (n) : démence (f) - early-onset dementia : démence précoce (f), début précoce de démence
* demerit (n) : démérite - the merits and demerits of… : les mérites et démérites de…, les avantages et les inconvénients de…
* demesh (v) (tr.) : désengrener
*demigod (n) : demi-dieu
* demijhon (n) : dame-jeanne (pl. dames-jeannes) (f), bombonne / bonbonne (f)
* de-mine / demine (v) (tr.) : déminer
* deminer (n) : démineur/-euse
* demineralise (brit.) / demineralize (amér.) (tr.) : 1/ déminéraliser ; 2/ distiller (de l’eau)
* demineralised (brit.) / demineralized (amér.) (ppa) : 1/ démineralisé ; 2/ distillé - demineralised water : eau distillée
* de-mining / demining (n) : déminage - demining operations : opérations de déminage - demining plough : charrue de déminage, charrue à déminer
* demise (n) : 1/ décès, trépas, mort (f), disparition (f) (d’une personne) ; 2/ chute (f), fin (f), disparition (f) (d’un empire)
* demist (v) (tr.) : désembuer
* demister (n) (brit.) : dispositif anti-buée
* demisting (n) : désembuage
* demo (n) (tronc. de demonstration) : démo (f) - air demo : démo aérienne (syn. aerial demo)
* demobilise (brit.) / demobilize (amér.) (v) (tr.) : démobiliser
* democracy (n) (pl. democracies) : démocratie (f) - direct democracy : démocratie directe - representative democracy : démocratie représentative
* democrat (n) : démocrate (m/f)
* democratic (a) : démocratique
* democratically (a) : démocratiquement
* demographic (a) : démographique - demographic research : études démographiques (pl.)
* demolish (v) (tr.) : démolir, abattre (au prop. comme au fig.)
* demolition (n) : démolition (f) - controlled demolition : démolition télécommandée, démolition par implosion
* demon (n) : démon
* demoness (n) : démonesse (f) - supine demoness : une démonesse terrassée
* demoniacal (a) : démoniaque
* demonisation (brit.) / demonization (amér.) (n) : diabolisation (f)
* demonise (brit.) / demonize (amér.) (v) (tr.) : diaboliser, noircir - to get demonised/-ized: se faire diaboliser
* demon-possessed (ac) : possédé du démon, démoniaque
* demonstrable (a) : 1/ démontrable ; 2/ patent(e) - demonstrable lie : mensonge patent
* demonstrably (adv.) : manifestement, visiblement - demonstrably false : manifestement faux/fausse
* demonstrate (v) (tr.) (fa p) : 1/ manifester (sur la voie publique) ; 2/ faire la démonstration de, faire l'essai de ; 3/ démontrer, prouver - to demonstrate that… : faire la preuve que…
* demonstration (n) (fa p) : 1/ manifestation (f) (sur la voie publique) ; 2/ (Aéro.) démonstration - aerobatics demonstration : démonstration d’acrobaties aériennes - air demonstration : démonstration aérienne - demonstration flight : vol de démonstration
* demonstrative (a) : 1/ (Gram.) démonstratif/-ive - demonstrative adjective : adjectif démonstratif - demonstrative pronoun : pronom démonstratif ; 2/ - to be demonstrative of sth : montrer qch, témoigner de qch
* demonstrator (n) (fa) : manifestant(e)
* demoralising (brit.) / demoralizing (amér.) (a) : démoralisant(e)
* demothball (v) (tr.) : 1/ sortir de la naphtaline (une installation) ; 2/ faire redémarrer (une centrale)
* de-mould / demould (v) (tr.) : décoffrer, démouler
* demount (v) (tr.) : démonter, désassembler (anton. to mount)
* demountable (a) : démontable
* demountability (n) : facilité de démontage (f), démontabilité (f) - quick demountability : rapidité de démontage
* demur (n) : objection (f)
* demur (v) (intr.) : objecter, faire une objection
* demure (a) : 1/ discret/-ète, réservé et modeste ; 2/ qui affecte la réserve, qui affecte la modestie, qui a un air de Sainte Nitouche
* demurely (adv.) : 1/ avec réserve, avec modestie ; 2/ d’un air faussement modeste, d’un air de Sainte Nitouche
* demureness (n) : 1/ modestie (f) ; 2/ fausse modestie
* demystification (n) : démystification (f) (syn. debunking)
* demystify (v) (tr.) : démystifier (syn. to debunk)
* den (n) : antre - dope den : fumerie d’opium
* dengue (n) : dengue (f) (fièvre tropicale)
* denial (n) : refus, dénégation (f) - Holocaust denial : négation de l’Holocauste
* denialism (n) : négationnisme
* denialist (a) : négationniste
* denialist (n) : négationniste (n)
* denier (n) : négationniste (n), sceptique (n) - climate change denier : climato-sceptique (n) (syn. global warming denier) - heliocentric denier : partisan de la Terre plate
* denigrate (v) (tr.) : dénigrer
* denigration (n) : dénigrement
* denizen (n) : habitant(e) (n)
* Denmark (n pr.) : (le) Danemark
* dense (a) : 1/ dense, compact(e) ; 2/ opaque ; 3/ bête, débile, bouché (à l’émeri) - the most dense viewer : le spectateur le plus abruti
* dent (n) (fa) : 1/ bosse (f), bosselure (f) (dans du métal), pet (fam.) (dans une carrosserie) ; 2/ entaille (f) (dans du bois)
* dent (v) (tr.) : cabosser
* dental (a) dentaire - dental calculus : (le) tartre dentaire - dental plaque : (la) plaque dentaire
* dent-resistant (ac) : insensible aux chocs - dent-resistant steel : acier anti-chocs, anti-bosses
* denture (n) (fa) : dentier, prothèse dentaire (f)
* denturist (n) : denturologue, prothésiste dentaire
* denuclearisation (brit.) / denuclearization (amér.) (n) : dénucléarisation (f)
* denuclearise (brit.) / denuclearize (amér.) (n) : dénucléariser
* deny (v) (tr.) (fa) : 1/ nier - Nobody can deny that… : Personne ne peut nier que… ; 2/ démentir ; 3/ refuser d’admettre, s’opposer à
* de-orbit (v) : (tr.) désorbiter - to de-orbit a space station : désorbiter une stations patiale ; (intr.) désorbiter
* de-orbiting (n) : désorbitation (f), désorbitage
* depalletise (brit .) / depalletize (amér.) (v) (tr.) : dépallétiser
* depart (v) : 1/ (tr.) quitter (pour de bon) (un endroit) ; (intr.) [personne, train] partir, [avion] décoller - to depart for (a place) : partir pour (un endroit) - to depart from (a place) : partir pour (un endroit) ; 2/ - to depart from sth : s’écarter de qch, dévier de qch
* department (n) (fa p) : 1/ département (la zone administrative française) ; 2/ département (d’entreprise) - accounting department : service de la comptabilité, (la) Comptabilité ; 3/ section (f) (d’une faculté), département (d’une faculté) (anglic.), service (d'un bureau) - (the) design department : (le) bureau d’études, (les) Études (f pl.) (syn. (the) design bureau) - the forensic medicine department : le service de médecine légale - the procurement department : le service des approvisionnements, le service des fournitures - the social science department : la section des sciences sociales ; 4/ rayon (d'un magasin) ; 5/ (amér.) ministère - (the) Department of Labor : (le) ministère du travail - (the) Department of Trade and Industry : (le) ministère du Commerce et de l’Industrie - (the) Justice Department : (le) ministère de la Justice - (the) State Department : (le) ministère des Affaires étrangères
* departmental (a) (fa) : à l’échelle d'un bureau / d'un service
* departure (n) : 1/ départ (for, pour ; from, de) ; 2/ rupture (from, avec), entorse (from, à)
* depend (v) (intr.) : 1/ dépendre (upon / on, de) ; 2/ compter (upon / on, sur) - to depend on + prop. inf. s’attendre à ce que
* dependability (n) : sûreté (f), fiabilité (f)
* dependable (a) : de confiance, sûr/sure, fiable
* dependably (adv.) : de manière sure, de manière fiable
* dependence (n) : 1/ dépendance (on, à) ; 2/ subordination (on, à)
* dependent (a) : 1/ dépendant (on, à) ; 2/ subordonné (on, à), tributaire (on, de) - dependent clause (Gram.) : proposition subordonnée
* depending on / upon (loc. prép.) : selon, en fonction de
* depict (v) (tr.) : dépeindre, représenter, figurer
* depiction (n) : portrait, peinture (f), représentation (f), figuration (f)
* deplane (v) (intr.) : descendre d’un avion, quitter l’avion
* deplatform (v) (tr.) : (Toile) exclure d’une plate-forme
* deplete (v) (tr.) : épuiser (les ressources, etc.)
* depletion (n) : épuisement - depletion of resources : épuisement des ressources - ozone depletion : réduction de la couche d'ozone
* depoint (v) (tr.) : déjointoyer - to depoint a wall : déjointoyer un mur
* depopulate (v) (tr.) : dépeupler
* depopulation (n) : dépeuplement
* deport (v) (tr.) : déporter
* deportation (n) : déportation (f)
* deportee (n) : déporté
* depose (v) (tr.) : destituer (un souverain)
* deposit (n) : 1/ dépôt - wine deposits (pl.) : lie (f) (de vin) ; 2/ versement initial, premier acompte - to put down a deposit : verser un premier acompte ; 3/ caution (f) (en argent) - damage deposit : (Immo.) caution
* deposit (v) : (tr.) déposer : (intr.) se déposer
* deposition (n) : formation (f) de dépôts
* deposition-prone (ac) : sujet(te) à la formation de dépôts - deposition-prone surface : surface sujette à la formation de dépôts
* depot (n) : dépôt, entrepôt - ammo depot : dépôt de munitions - storage depot : lieu d'entreposage, installation d'entreposage, dépôt
* deprave (v) (tr.) : dépraver, corrompre, pervertir
* depraved (a) (fa) : dépravé, corrompu(e), perverti(e), pervers(e)
* depravity (n) : dépravation (f), corruption (f), perversion (f)
* deprecate (v) (tr.) : 1/ dénigrer, critiquer (qch, qn) ; 2/ rabaisser (qn) ; 3/ marquer comme obsolète ; 4/ désapprouver, déconseiller
* deprecated (ppa) 1/ obsolète ; 2/ déconseillé
* depreciation (n) (fa p) : 1/ dépréciation (f), dévalorisation (f) ; 2/ amortissement (d'un bien)
* depress (v) (tr.) : 1/ faire baisser - to depress sales : faire baisser les ventes ; 2/ appuyer sur (un bouton), abaisser (une manette) ; 3/ (fig.) déprimer, attrister
* depressed (a) : en crise (économique), sinistré (économiquement) - depressed region : région en crise (économique)
* depression (n) : 1/ dépression (f), déprime (f) (fam.) ; 2/ - the Depression (amér.) : la grande crise de 1929 ; 3/ dépression, creux ; 4/ dépression (météorologique)
* deprioritise (brit.) / deprioritize (amér.) (v) (tr.) : rendre non prioritaire
* deprive (v) (tr.) : priver (of, de), déposséder (of, de)
* depth (n) : profondeur (f)
* deputy (n ou a) (pl. deputies) (fa p) : 1/ député (n) ; 2/ adjoint (n ou a), suppléant (n ou a) - deputy general director : directeur général adjoint
* derail (v) : (tr.) faire dérailler ; (intr.) dérailler
* derailed (ppa) : qui a déraillé - derailed train : train ayant déraillé
* derailment (n) : déraillement
* derange (v) (tr.) : 1/ déranger - This letter deranged all my projects : Celle lettre dérangea tous mes projets ; 2/ rendre fou
* deranged (a) : à l’esprit dérangé - deranged person : personne au cerveau atteint, personne dérangée du cerveau
* derangement (n) : 1/ désordre, chaos ; 2/ folie (f), démence (f)
* derby (n) : 1/ derby (course de chevaux) ; 2/ (Sport) derby, rencontre entre voisins ; 3/ concours (de pêche), course (f) ; 4/ chapeau melon
* derelict (a) : [navire, bâtiment, etc.] abandonné
* derelict (n) : 1/ navire abandonné en mer, épave (f) ; 2/ objet abandonné, épave
* dereliction (n) : abandon
* de-restriction (n) : fin d’interdiction - de-restriction sign : panneau de fin d’interdiction
* deride (v) (tr.) (fa) : tourner en dérision, tourner en ridicule, ridiculiser
* derisive (a) : moqueur/-euse, railleur/-euse
* derivative (a) : dérivé - derivative form : forme dérivée (f)
* derivative (n) : (Fin.) dérivé (financier) (m) - [bank] to hold a large amount of derivatives : [banque] détenir une quantité importante de dérivés - weather derivatives : dérivés climatiques
* derogation (n) : dérogation (f) - by derogation : à titre dérogatoire
* derogatory (a) (fa p) : 1/ dérogatoire ; 2/ péjoratif/-ive, dépréciatif/-ive, peu flatteur/-euse, désobligeant(e)
* deromanticise (brit.) / deromanticize (amér.) (v) (tr.) : déromanticiser, démystifier, cesser d'idéaliser, cesser d'enjoliver (anton. romanticise/-ize)
* desalinate (v) (tr.) : désaliniser, dessaler
* desalphat (v) (tr.) : désalphater
* desalphalting (n) : désalphatage
* desalt (v) (tr.) : dessaler
* desalting (n) : 1/ dessalage (de la nourriture) ; 2/ dessalement (de l’eau de mer)
* de-scale / descale (v) (tr.) : 1/ détartrer (une chaudière) ; 2/ décaper (une surface métallique) ; 3/ décalaminer (un moteur)
* descending (a) : descendant(e) - descending order : ordre descendant (anton. ascending)
* descent (n) : 1/ descente (f) - descent into madness : descente dans la folie ; 2/ extraction (f), origine (f) - of Tibetan descent : d’origine tibétaine
* deschedule (v) (tr.) : déplanifier, déprogrammer
* describe (v) (tr.) : 1/ (tr.) décrire, tracer - Describe an arc using the protractor : Tracez un arc à l'aide du rapporteur ; 2/ (tr.) décrire, rendre compte de - Can you describe it to me? : Pouvez-vous me décrire la chose ? ; 3/ (tr) décrire (as, comme étant), qualifier (as, de) - I wouldn't describe him as an idiot : Je ne le qualifierais pas d'idiot - to be described as... : être décrit(e) comme étant…
* description (n) : 1/ description (f) (of sth, de qch), signalement (of sb, de qn) ; 2/ sorte (f), genre - no one of that description : personne de ce genre
* desecrate (v) (tr.) : profaner
* desecration (n) : profanation (f)
* desecrator (n) : profanateur/-trice m/f)
* desert (n) : désert
* desertification (n) : désertification (f)
* desertification-prone (ac) : tendant à se désertifier - desertification-prone area : zone sujette à la désertification
* desertify (v) (tr.) : désertifier
* deserts (n pl.) : ce qu’on mérite - They will get their just deserts when the time is right : Ils auront ce qu’ils méritent lorsque le moment viendra
* desert-wise (ac) : - desert-wise living : mode de vie adapté au désert
* deserve (v) (tr.) : mériter
* deserving (a) : 1/ méritant(e) ; 2/ méritoire (anton. undeserving)
* design (n) : 1/ dessein, intention (f), projet ; 2/ croquis, dessin ; 3/ motif ; 4/ profil - aerodynamic design : profil aérodynamique (d’un avion) ; 5/ étude (f), études (f pl.), conception (f) - crossover design (Pharma.) : plan d’étude croisé - engine designs : études de moteur - faulty design : défaut de conception, défaut dans le plan - plant design : conception d'équipements - product design : conception de produits, étude de produits - (the) design bureau : (le) bureau d’études, (les) Études (f pl.) (syn. (the) design department) - design basis : (Nucl.) : base d’études, hypothèse de calcul - design change : modification d’études - design engineer : ingénieur d’études - design life : durée de vie théorique, durée de vie de calcul, durée de vie objective ; 6/ (l’activité) (la) création (f), (la) conception (f), (le) design (anglic.) - fashion design : création textile - web design : création numérique ; 7/ (selon le contexte) architecture (f), allure (f), style, plastique (visuelle) (f), esthétique (f), forme (f), ligne (f), lignes (f pl.), grandes lignes, présentation (f), habillage, carénage - aerodynamic design : ligne aérodynamique
* design (v) (tr.) : 1/ dessiner ; 2/ concevoir, étudier - to be designed by… être issu de la planche à dessin de… - to be designed for + gér. : être conçu / étudié pour + inf.
* designate (v) (tr.) : 1/ désigner, nommer ; 2/ indiquer, dénoter
* designer (n) : 1/ concepteur/-trice - game level designer : concepteur de niveaux de jeux - mechanical designer : concepteur de véhicules, d’armes et d’objets ; 2/ créateur/-trice, styliste (m/f) - fashion designer : styliste de mode, créateur/-trice de mode - hair designer : coiffeur, coiffeuse (syn. hair stylist) - designer bag : sac de style, sac de créateur
* design in (v) (tr.) : concevoir dès le départ, intégrer dès la conception
* designing (n) : conception (f), création (f)
* desired (ppa) : voulu(e), désiré, souhaité - (the) desired level : (le) niveau voulu
* desist (v) (intr.) : cesser - to desist from political activism : cesser toute activité politique - to desist from doing sth : cesser de faire qch
* desk (n) : 1/ bureau (le meuble) - the teacher's desk : le bureau du professeur / de l’instituteur (selon le cas) - desk jockey : gratte-papier - desk lamp : lampe de bureau ; 2/ bureau (le service) - help desk : a / bureau d’accueil, accueil ; b/ (Inf.) service d’assistance - desk job : travail de bureau - desk man : réceptionniste (masc.) ; 3/ (Fin.) (salle des marchés) service
* desk-bound (ac) : rivé au bureau, fixe, non transportable - desk-bound personal computer : ordinateur individuel non transportable
* deskew (v) (tr.) : supprimer le défaut d’alignement de (une image), redresser (une image)
* deskill (v) (tr.) : déqualifier
* deskilled (a) : déqualifié - deskilled worker : travailleur déqualifié
* desktop (a) : de bureau, de table - desktop computer : ordinateur de bureau, ordinateur de table - desktop publishing : micro-édition (f), édition assistée par ordinateur
* despair (n) : désespoir - to be in dispair : désespérer
* despairing (a) : désespéré - despairing glance : regard désespéré
* desperate (a) (fa) : prêt(e) à tout - Desperate times call for desperate measures : Aux grand maux, les grands remèdes (var. Desperate situations call for desperate remedies : Aux grands maux les grands remèdes)
* desperately (adv.) (fa) : avec acharnement, avec l'énergie du désespoir, frénétiquement, éperdument, à tout prix
* despicable (a) : méprisable
* despise (v) (tr.) : mépriser
* despite (prép.) : en dépit de, malgré (syn. in spite of) - despite + gér. : malgré le fait de + inf. – despite this : malgré cela
* despoil (v) (tr.) : souiller
* despondency (n) : abattement, découragement
* despondent (a) : abattu(e), découragé
* despot (n) : despote
* despotic (a) : despotique, tyrannique
* despotism (n) : despotisme
* destabilise (brit.) / destabilize (amér.) (v) (tr.) : déstabiliser
* destiny (n) (pl. destinies) : destinée (f)
* destitute (a) (fa) : sans ressources, indigent(e), démuni(e)
* destitution (n) (fa) : dénuement, indigence (f), misère (f)
* destroy (v) (tr.) : détruire, casser - to be destroying the planet : être en train de détruire la planète
*destroyer (n) : 1/ destructeur/-trice ; 2/ (Marine) contre-torpilleur, destroyer
* destruction (n) destruction (f) - environmental destruction : destruction du milieu
* desultory (a) : décousu(e) (au fig.)
* detach (v) (tr.) : détacher
* detached (ppa) : 1/ détaché, indifférent(e) - to remain detached : rester indifférent(e) (from, à) ; 2/ individuel(le) - detached house : maison individuelle
* detachment (n) : détachement, indifférence (f) - journalism of detachment : journalisme non émotionnel
* detail (n) : 1/ (le) détail - attention to detail : (le) souci du détail ; 2/ (a detail, au pl., details) coordonnées (f pl.) - personal details (brit.) : état civil - your postal contact details : vos coordonnées postales ; 3/ (au pl., details) - dimensional details : cotes (f pl.) ; 4/ (Milit., Police) détachement, brigade (f) - security detail : gardes du corps (pl.), équipe de protection rapprochée - to get security detail : recevoir des gardes du corps, obtenir une protection rapprochée - the homicide detail : la brigade des homicides
* detail (v) (tr.) : exposer en détail, indiquer de façon détaillée
* detailed (a) : détaillé, dans le moindre détail
* detail-oriented (ac) : soucieux/-euse du détail
* detain (v) (tr.) : retenir
* detect (v) (tr.) : déceler, détecter - to detect a maladjustment : déceler un dérèglement - to detect wear : déceler des traces d'usure
* detectable (a) : décelable, détectable
* detecting (n) : détection (f) - metal detecting : (la) détection de métaux
* detection (n) : détection (f) - threat detection : (la) détection de menaces
* detective (n) : 1/ inspecteur - homicide detective : inspecteur à la brigade criminelle, imspecteur à la criminelle, inspecteur à la crim’ (fam.) (syn. homicide investigator) ; 2/ détective - detective film : film policier (syn. crime film)
* detector (n) : détecteur - lie detector : détecteur de mensonge, polygraphe (syn. polygraph) - to be given a lie detector test : être soumis(e) au détecteur de mensonges
* detectorist (n) : détectoriste (néol.) (utilisateur de détecteur de métaux)
* detention (n) (fa p) : 1/ détention (f) - to be held in detention : être en détention ; 2/ (Éduc.) retenue (f), colle (f) - to be given detention for wagging off : avoir une retenue pour avoir séché les cours - to get a detention : se retrouver collé ; 3/ retenue - rock detention structure : barrage de rochers
* deter (v) (tr.) : dissuader, décourager (sb from doing sth, qn de faire qch)
* deteriorate (v) : (intr.) se détériorer, se dégrader
* determine (v) (tr.) : déterminer, établir, décider, fixer, régler
* deterrence (n) : dissuasion (f) - weapon of deterrence : arme de dissuasion
* deterrent (n) : moyen de dissuasion
* deterrent (a) : dissuasif/-ive, de dissuasion
* dethrone (v) (tr.) : détrôner
* detoxify (v) : (tr.) détoxifier, désintoxiquer ; (intr.) [individu] se désintoxiquer
* detune (v) (tr.) : désaccorder
* detract (v) (intr.) : porter atteinte, nuire - to detract from sth : nuire à la qualité de qch, amoindrir qch
* detractor (n) : détracteur, détractrice
* devastate (v) (tr.) (fa p) : 1/ dévaster ; 2/ (fig.) accabler, bouleverser
* devastated (ppa) (fa p) : 1/ [bâtiment, lieu] dévasté, ravagé ; 2/ [individu] effondré, accablé de chagrn - to be devastated : [personne] être effondré
* devastating (a) (fa p) : 1/ dévastateur/-trice ; 2/ accablant(e), bouleversant(e) ; 3/ [(texte, discours] extrêmement critique, au vitriol
* develop (v) (tr.) (fa) : 1/ élaborer, mettre au point, réaliser, travailler sur - to develop models : mettre au point des simulations - to develop biotech products : mettre au point des produits de biotechnologie ; 2/ mettre en valeur, aménager, exploiter ; 3/ commencer à faire, contracter - to develop an embolism : être victime d’une embolie
* developed (a) (fa) : évolué
* developer (n) (fa) : 1/ constructeur, créateur ; 2/ - land developer : promoteur (immobilier)
* developing (a) : en développement
* development (n) (fa) : 1/ a/ élaboration, mise au point, réalisation - under development : en cours de réalisation, en cours d’élaboration - program development : mise au point de logiciels ; b/ chose mise au point - the new development : le nouveau système mis au point ; 2/ mise en valeur, aménagement, exploitation ; 3/ évolution - a worrying development : une évolution inquiétante ; 4/ péripétie - a new development : un rebondissement - news developments : péripéties de l’actualité
* device (n) : 1/ dispositif, appareil (syn. contrivance) - answering device : répondeur automatique - cloaking device : (Star Trek) bouclier occulteur - electrically operated device : appareil électrique - positioning device : dispositif de positionnement, positionneur ; 2/ (Inf.) périphérique (n) - device list : liste des périphériques - device manager : gestionnaire de périphérique ; 3/ procédé - stylistic devices : procédés stylistiques
* devil (n) : 1/ diable, démon ; 2/ the devil / the Devil : le Diable - the Devil Incarnate : le Diable incarné ; 3/ - to be a lucky devil : être un sacré veinard ; 4/ petit monstre ; 5/ tourbillon - dust devil : tourbillon de poussière ; 6/ (Imprim.) arpète - a printer’s devil : un apprenti imprimeur, un arpète
* devious (a) : [esprit] tortueux/-euse
* deviousness (n) : sournoiserie, perfidie
* devise (v) (tr.) (fa) : imaginer, concevoir, échafauder, inventer (syn. to invent, to contrive) – to devise an algoritnm : concevoir un algorithme
* devoid (a) (tjrs attribut) : dénué (of, de), dépourvu(de) (of, de)
* devolve (v) : 1/ (tr.) déléguer - to devolve sth to sb : déléguer qch à qn ; 2/ (intr.) to devolve on/upon : retomber sur, échoir à ; 3/ (intr.) to devolve into : dégénérer en
* devote (v) (tr.) : consacrer (to, à)
* devoted (a) : dévoué (to, à)
* devotee (n) : adepte, fidèle, fervent admirateur - music devotee : amoureux de la musique - UFO devotee : amateur d’ovnis
* devotion (n) (fa) : dévouement, (profond) attachement, amour - devotion to duty : amour du travail
* devotional (a) : 1/ de dévotion, de piété ; 2/ pieux/-euse, dévôt(e) - devotional painting : peinture pieuse (f)
* devout (a) (fa) : fervent(e), pieux/-euse
* dew (n) : rosée (f) - the morning dew : la rosée du matin
* dewater (v) (tr.) : 1/ dénoyer (une mine) ; 2/ assécher (un marais) ; 3/ essorer (du linge)
* dewax (v) (tr.) : déparafiner (des huiles)
* dewaxing (n) : déparafinage (des huiles)
* de-worm / deworm (v) (tr.) : vermifuger
* de-worming / deworming (n) : vermifugation - to give a cat a deworming shot : injecter du vermifuge à un chat
* dhow (n) : boutre
* diacritical (a) : diacritique - diacritical mark : signe diacritique
* diagnose (v) (tr.) : diagnostiquer
* diagnostics (n pl.) : possibilités de diagnostic, moyens de diagnostic - fault diagnostics : moyens de diagnostic d’erreurs
* diagram (n) : schéma - wiring diagram : schéma de câblage
* dial (n) : cadran
* dial (v) (tr.) : composer (un numéro) - to dial a phone number : composer un numéro de téléphone
* dialect (n) : dialecte - A language is a dialect with an army and a navy : Une langue est un dialecte doté d'une armée et d'une marine (Max Weinreich)
* dialer (amér.) / dialler (brit.) : - speed dialer : touche d’appel de numéro pré-enregistré, touche d’appel automatique
* dialing (amér.) / dialling (brit.) (n) : composition de numéros, appel de numéros - dialling tone : tonalité d’appel
* dialog (amér.) / dialogue (brit.) : dialogue - dialogue box (Inf.) : boîte de dialogue, case à dialogue
* dial up (v) (intr.) : se connecter - to dial up to the Internet : se connecter à l'Internet (par modem classique)
* dial-up (ac) : - dial-up modem : modem pour accès commuté, modem classique - dial-up internet connections : connexions Internet par ligne commutée / par téléphone
* dialyse (brit.) / dialyze (amér.) (v) (tr.) : dialyser
* dialysis (n) : dialyse
* diamond (n) : 1/ diamant - diamond ring : bague avec diamant ; 2/ losange
* diamond-shaped (ac) : en forme de losange
* diaper (n) : couche (pour bébé), couche-culotte - diaper changing : (le) changement des couches(-culottes) - diaper fetishism : fétichisme des couches (syn. nappy fetishism)
* diaperism (n) : fétichisme des couches
* diarch (n) : diarque, dyarque
* diarchy (n) : diarchie / dyarchie (f)
* diaeresis / dieresis (n) : tréma
* diary (n) (pl. diaries) : 1/ journal intime ; 2/ (brit.) agenda, calendrier - to check one’s diary : vérifier son agenda
* diaspora (n) : diaspora (f)
* diasporic (a) : relatif à la diaspora / aux diasporas, diasporique - diasporic organisation : organisation diasporique
* diatribe (n) : pamphlet
* dibs (interj.) (arg. amér.) : prems, preums
* dibs (n) (arg. amér.) : - to have first dibs on sth : être le premier / la première à faire qch, avoir la priorité, être prems / preums pour qch - to call dibs on sth : dire prems / preums pour qch
* dice (n pl.) : voir die (n)
* dice (v) (tr.) : couper en petits carrés - I’ll dice the preserved fruit : Je coupe en petits carrés le fruit confit
* dick (n) (vulg.) : 1/ bite (f) (vulg.), queue (f) - limp dick : bite molle - dick pic : photo de bite, photo de queue, photo de pénis ; 2/ (fig.) couille molle, mollasson ; 3/ con, conne (vulg.), connard, connasse (vulg.)
* dickens (the) (n) ( mis pour the devil : diable) : - What the dickens did you go there for? : Pourquoi diable y êtes-vous allé ?
* dictation (n) : dictée (f)
* dictator (n) : dictateur
* dictionary (n) (pl. dictionaries) : dictionnaire - dictionary maker : auteur de dictionnaire(s)
* dictum (n) (pl. dicta) : 1/ affirmation (f) ; 2/ dicton
* did (prét. de to do)
* diddle (v) (tr.) (arg.) : tromper (qn), mettre (qn) dedans
* diddler (n) : tricheur/-euse
* die (n) (pl. dice) : 1/ dé (à jouer) ; 2/ matrice (f)
* die (v) (intr.) : mourir, trépasser (fam.) - to die in childbirth : mourir lors de l’accouchement - to die from hypothermia : mourir d’hypothermie
* diemaker (n) : mouliste (m/f)
* die-off (n) (pl. die-offs) : épisode de mortalité massive, hécatombe (f) - fish die-off : hécatombe de poissons
* diesel (n) : diesel
* diesel-driven (ac) : à moteur diesel - diesel-driven water pump : pompe à eau marchant au diesel
* diesel-powered (ac) : à propulsion diesel - diesel-powered vehicle : véhicule à propulsion diesel
* diet (n) : régime (alimentaire) - to go on a diet : se mettre à suivre un régime - the Paleolitic diet : le régime paléolithique - starvation diet : diète (f) - well-balanced diet : régime bien équilibré
* difference (n) : 1/ différence (f) - to make a difference : a/ avoir plus de poids, faire pencher la balance de son côté, faire bouger les choses en sa faveur, changer la donne ; b/ se démarquer ; 2/ différend
* different (a) : différent(e)
* differently (adv.) : différemment - to word sth differently : formuler qch différemment
* difficult (a) : 1/ difficile ; 2/ délicat(e)
* difficulty (n) (pl. difficulties) : difficulté (f) - to overcome a difficulty : surmonter une difficulté - breathing difficulties : ennuis respiratoires - Therein is the difficulty : Là est la difficulté
* diffident (a) : [individu] qui manque d’assurance
* dig (n) : 1/ coup de coude ; 2/ pique (f), critique (f), coup de griffe (syn. remark) ; 3/ coup de bêche ; 4/ chantier de fouilles ; 5/ pl. digs : chambre meublée (f), piaule (f) - to get digs : se trouver une piaule
* dig (v) (dug, dug) (tr.) : 1/ creuser - to dig a furrow : (Agric.) creuser un sillon ; 2/ bêcher ; 3/ fouiller ; 4/ (arg.) aimer, kiffer (arg.)
* dig and delve (v coord.) : (au fig.) (tr.) creuser et fouiller (sth, qch) ; (intr.) creuser et fouiller (into sth, dans qch)
* digest (n) : résumé (n)
* digger (n) : fouilleur
* digging (n) : creusement - digging stick : bâton à fouir
* digit (n) : chiffre
* digital (a) (fa p) : numérique - digital copy : copie numérique - digital morphing : morphose numérique - digital multimeter : multimètre numérique - digital television : télévision numérique - digital watch : montre à affichage numérique
* digitalise (brit.) / digitalize (amér.) (v) (tr.) : numériser (syn. to digitise/ize)
* digitally-controlled (ac) : [machine] à commande numérique - digitally-controlled machine : (Usin.) machine à commande numérique
* digitisation (brit.) / digitization (amér.) (n) : numérisation (f)
* digitise (brit.) / digitize (amér.) (v) (tr.) : numériser (syn. to digitalise/ize)
* digitiser (brit.) / digitizer (amér.) (n) : tablette à numériser
* digitising (brit.) / digitizing (amér.) (n) : numérisation (f) - digitizing tablet : tablette graphique (Inf.)
* dignified (a) : plein(e) de dignité
* dig out (v) (dug, dug) (tr.) : creuser - to dig out a trench down to 1.5 meters deep : creuser une tranchée jusqu’à 1, 5 m de profondeur
* dig up (v) (dug, dug) (tr.) : arracher (à la terre), déterrer
* dike (n) (brit.) : voir dyke (n)
* dilapidated (a) (fa) : délabré, en ruine
* dilation (n) : dilatation (f) - anal dilatation : dilatation anale - time dilation : dilatation temporelle
* dilatory (a) : 1/ lent(e) ; 2/ dilatoire
* dildo (n) : (Sex.) godemiché, gode (fam.) - realistic dildo : godemiché réaliste - rubber dildo : godemichet en caoutchouc
* dilemma (n) : dilemme - to be caught in a dilemma : être pris dans un dilemme - to face a dilemma : être confronté à un dilemme
* dilettante (n) : 1/ enthousiaste (n m/f) ; 2/ dilettante (m/f)
* dilettantish (a) : de dilettante, d’amateur - dilettantish attempt : tentative d’amateur
* dilute (v) (tr.) : diluer (de la peinture)
* dim (a) : 1/ [lumière] faible, pâle, diffus(e) - dim light : lumière diffuse (f) - dim lights (amér.) : codes ; 2/ [room, pièce] sombre ; 3/ [colour, couleur] terne ; 4/ [view, vue, noise, bruit] vague, imprécis(e), indistinct(e) - to grow increasingly dim : s'estomper de plus en plus ; 4/ (expressions) - to take a dim view of sth : voir qch d’un mauvais œil
* dim (v) (tr.) : atténuer, réduire (la lumière), mettre en veilleuse (une lampe)
* dime (n) : (amér.) pièce de dix cents - to stop on a dime : s’arrêter pile
* dimension (n) : 1/ dimension (f) (parmi les quatre) ; 2/ dimension, cote (f), mesure(f) - dimensions (pl.) : encombrement (sing.) - actual dimensions : dimensions réelles ; 3/ taille (f), ampleur (f)
* dimensional (a) : dimensionnel(le) - dimensional details : cotes - dimensional drawing : dessin coté
* dimensionally stable (ac) : aux cotes stables, stable sur le plan des dimensions - dimensionally stable material : matériau à invariance dimensionnelle
* diminutive (a) (fa) : minuscule, exigu/-üe
* dimly lit (ac) : peu éclair(e), mal éclairé, faiblement éclairé - dimly lit area : zone sombre
* dimness (n) : obscurité (f)
* dimple (n) : fossette (f) - chin dimple : fossette au menton
* din (n) : vacarme
* din (v) (tr.) : rabâcher (into sb that…, à qn que…)
* dine (v) (intr.) : dîner
* dine and dash (v coor. par and) : déjeûner et détaler (à midi), dîner et détaler (le soir), partir en courant sans payer
* diner (n) (amér.) : petit restaurant
* ding (n) : 1/ dring (bruit d’une sonnerie) ; 2/ pèt / pète (masc.), coup, bosse (sur une carrosserie)
* ding (v) : 1/ (intr.) faire dring ; 2/ (tr.) cabosser (une voiture)
* ding-a-ling (n) : 1/ digue dindon (onomatopée des cloches) ; 2/ (amér., fam.) cloche (f) (en parlant d’une personne) ; 3/ (amér., fam.) maboul (n), toqué (n) ; 4/ (fam.) pénis
* dingbat (n) : 1/ idiot(e), crétin(e) ; 2/ (Typo.) rébus graphique, dingbat (anglic.)
* dingus (n) (amér.) : 1/ truc, machin, chose (f) ; 2/ abruti (n), crétin (n) - I’m such a dingus! : Quel abruti je fais !
* dingy (a) : [couleur] terne
* dining (n) : (le fait de) dîner - dining cabin : cabine de restauration (dans un avion de ligne) - dining hall : réfectoire (dans un établissement scolaire)
* dinky (a) : 1/ tout(e) petit(e) ; 2/ mignon(ne) ; 3/ ordinaire, quelconque
* dinner (n) : 1/ dîner - dinner jacket : smoking - dinner party : dîner par invitations ; 2/ (expressions diverses) - You talk to me as if I was the dog’s dinner : Tu me parles comme à un chien
* dint (n) (arch.) : force (f) - by dint of : à force de
* diocese (n) : diocèse
* dip (v) (tr.) : 1/ enfoncer ; 2/ tremper, plonger - I dip the chips in the runny yolk : Je trempe les frites dans le jaune d’œuf qui coule
* diphtheria (n) : (la) diphthérie
* diplo (a) (tronc. de diplomatic : diplomatique) : - in diplo speak : en langage diplomatique - That’s diplo speak for “You’re on your own, mate !” : En langage diplomatique, cela veut dire que personne ne va venir te défendre
* diplomacy (n) : diplomatie (f) - gunboat diplomacy : diplomatie de la canonnière
* diplomat (n) : diplomate
* diplomatic (a) : 1/ diplomatique - diplomatic gaffe : gaffe diplomatique (f) - in diplomatic parlance : en langage diplomatique ; 2/ diplomate
* dire (a) : 1/ [besoin] pressant(e), urgent(e) - to be in dire need of sth : avoir un beoin urgent de qch ; 2/ [nouvelles, menaces] affreux/-euse, terrible, désastreux/-euse, dramatique, catastrophique - dire situation : situation catastrophique
* direct (a) : direct(e) - direct democracy : démocratie directe (f) - indirect speech : (Gram.) discours indirect
* direct (v) (tr.) : 1/ diriger (les acteurs) ; 2/ réaliser (un film)
* direction (n) : 1/ consigne (f) - stage directions : indications scéniques (f pl.) ; 2/ (Cin.) mise en scène - film/movie direction : réalisation de films, mise en scène de films
* directive (n) : directive (f), consigne (f) - to put out a directive : émettre une consigne (syn. to issue a directive) - airworthiness directive : consigne de navigabilité - non-interference directive : directive de non-ingérence, principe de non-ingérence
* directly (adv.) : sur le champ - He’ll be here directly : Il sera là sur le champ
* director (n) (fa p) : 1/ directeur, directrice - art director (Cin.) : directeur artistique - editorial director (Presse) : directeur de la rédaction - executive director : directeur-en-chef - managerial director : directeur général ; 2/ (Cin.) film/movie director : réalisateur, réalisatrice, metteur en scène - the director’s cut : le montage du réalisateur - assistant film director : assistant(e) de réalisation - feature film director : réalisateur de longs métrages ; 3/ administrateur, administratrice - board of directors : conseil d'administration
* directorship (n) : 1/ poste de directeur, fonctions (f pl.) de directeur ; 2/ (la) direction, (les) directeurs (pl.)
* directory (n) (pl. directories) (fa) : 1/ annuaire, répertoire - the telephone directory : l’annuaire téléphonique ; 2/ (Inf.) répertoire - to browse through a directory : parcourir un répertoire
* dirge (n) : 1/ chant funèbre ; 2/ musique triste (f)
* dirt (n) : saleté (f), crasse (f) - ingrained dirt : crasse bien incrustée
* dirt bag / dirtbag (n) (amér.) (vulg.) : ordure, fumier, salaud, salopard - He’s a real dirtbag ! : C’est un vrai salopard !
* dirt-poor (ac) : très pauvre, miséreux/-euse ; 2/ fauché, sans le sou
* dirt-proof (ac) : à l’abri de l’encrassement, insalissable
* dirty (a) : 1/ sale ; 2/ méchant(e), déloyal(e) - dirty trick : coup tordu, sale tour, coup en vache (fam.) ; 3/ cochon(ne), obscène - dirty mags (pl.) : (la) presse du cul - dirty movie : film cochon - dirty pictures : photos obscènes (f pl.)
* dis (n) (tronc. de disrespect) : (arg.) insultes (f pl.) (aussi diss) - dis song : (Mus., rap) chanson d’insultes (syn. dis track)
* dis (v) (tr.) (tronc. de to disrespect) : manquer de respect à (qn), mal parler à (qn), offenser (à), traiter qn (arg.) (aussi to diss)
* disability (n) (pl. disabilities) : infirmité (f)
* disable (v) (tr.) : 1/ estropier ; 2/ mettre hors de combat (a soldier, un soldat) ; 3/ désactiver
* disabled (a) : infirme, invalide, handicapé - disabled ex-service men : mutilés de guerre
* disadvantaged (a) : désavantagé, défavorisé - disadvantaged children : enfants défavorisés - the nation’s disadvantaged (a. subst. pl.) : les défavorisés du pays
* disaffected (fa) : mécontent(e), insatisfait(e)
* disagree (v) (intr.) : ne pas être d'accord (with, avec)
* disagreement (n) (fa) : désaccord
* disambiguate (v) (tr.) : désambiguïser
* disappear (v) (intr.) : disparaître
* disappearance (n) : disparition (f)
* disappoint (v) (tr.) (fa) : décevoir
* disappointment (n) (fa) : déception (f)
* disapprove (v) (tr.) : 1/ ne pas voir d’un bon œil, voir d’un mauvais œil, être opposé à ; 2/ refuser, rejter
* disarm (v) : (tr.) désarmer ; (intr.) désarmer
* disarmament (n) : désarmement - Campaign for Nuclear Disarmament (CND) : Campagne pour le désarmement nucléaire (l’organisation)
* disarmer (n) : partisan du désarmement, militant pour le désarmement - nuclear disarmer : partisan du désarmement nucléaire
* disarray (n) (fa) : confusion (f), désordre
* disassemble (v) (tr.) : démonter
* disassembly (n) : démontage
* disaster (n) (fa p) : 1/ désastre ; 2/ catastrophe (f), sinistre - at the scene of the disaster : sur les lieux du sinistre - to court disaster : jouer avec le feu - air disaster : catastrophe aérienne - disaster film : film catastrophe - Chernobyl-like disaster : catastrophe du type Tchernobyl
* disaster-prone (ac) : ayant tendance à susciter des catastrophes
* disaster-proneness (nc) : tendance à susciter des catastrophes
* disaster-proof (ac) : qui résiste à toutes les catastropes - disaster-proof government : gouvernement qui résiste à toutes les catastrophes
* disband (v) : 1/ (tr.) disperser ; 2/ (tr.) congédier, licencier ; (intr.) [troupes] se débander
* disbandment (n) : licenciement
* disbar (v) (disbarred2) (tr.) : (Just.) radier du barreau
* disbarrable (a) : [acte] qui peut entraîner la radiation (du bureau) - disbarrable offence (brit.) / offense (amér.) : délit susceptible d’entraîner la radiation (du bureau)
* disbarred (ppa) : (Just.) radié du barreau
* disbelief (n) : incrédulité (f), septicisme, doute - willing suspension of disbelief : suspension volontaire de l’incrédulité, (litt.) foi poétique (f)
* disbelieve (v) (tr.) : ne pas croire
* disc (n) : 1/ disque - flying disc : disque volant ; 2/ (Mus.) disque
* discard (v) (tr.) : se débarrasser de, mettre au rebut, jeter (syn. to throw away, to reject)
* discharge (n) : 1/ renvoi, licenciement ; 2/ destitution
* discharge (v) (tr.) (fa) : 1/ renvoyer (qn), licencier (qn) ; 2/ destituer
* disciple (n) : disciple (m/f)
* discipline (n) : discipline (f)
* disciplinary (a) : disciplinaire - disciplinary problems (Éduc.) : problèmes de discipline
* disc jockey (brit.) / disk jockey (amér.) (n) : 1/ (Radio) présentateur de disques, animateur de radio ; 2/ (en discothèque) préposé aux manettes
* disclaimer (n) : 1/ démenti, désaveu ; 2/ désistement, renonciation (f)
* disco (n) (tronc. de discotheque) (fa) : discothèque (f)
* discoidal (a) : discoïdal(e) - discoidal object : objet discoïdal
* discombobulated (ppa) : déconcerté, décontenancé, désorienté, en désarroi
* discommode (v) (tr.) : incommoder, gêner
* discourage (v) (tr.) : décourager
* discouragement (n) : découragement
* discourteous (a) : discourteois(e), peu courteois(e) - discourteous refusal : refus peu courtois
* discontent (n) : mécontentement
* discount (n) : rabais, remise (f), ristourne (f)
* discount (v) : (tr.) (+ somme d’argent) faire un rabais de ; (intr.) (+ un article) solder
* discounting (n) : rabais (pl.), remises (f pl.) - to do some discounting : faire des rabais, des remises
* discover (v) (tr.) : 1/ découvrir, trouver (des erreurs) - to discover bugs in a program : découvrir des bogues dans un programme ; 2/ découvrir, dénicher (de jeunes talents) - to discover talent : découvrir de nouveaux talents ; 3/ to discover that… : se rendre compte que…, s’apercevoir que…
* discovery (n) : découverte (f), trouvaille (f)
* discredit (n) : discrédit
* discredit (v) (tr.) : discréditer, déconsidérer
* discredited (ppa) : discrédité
* discreet (a) (fa p) : 1/ judicieux/-euse, prudent(e), avisé ; 2/ discret/-ète, réservé dans ses paroles
* discreetly (adv.) (fa p) : 1/ de façon judicieuse ; 2/ discrètement
* discrete (a) (fa) : (Électron.) séparé, isolé, individualisé
* discretion (n) (fa p) : 1/ réserve (f), retenue (f), discrétion (f)- duty of discretion devoir de réserve ; 2/ (fa p) jugement - to use one's discretion : s'en remettre à son propre jugement - Your own discretion : À vous de juger
* discretional (a) : discrétionnaire (syn. discretionary)
* discretionary (a) : discrétionnaire (syn. discretional)
* discriminate (v) (intr.) : faire une distinction - to discriminate between… : faire la distinction entre…
* disc-shaped (ac) : en forme de disque - disc-shaped object : objet en forme de disque
* discus (n) : 1/ disque (l'objet) ; 2/ - the discus (le sport) : le lancer du disque, le lancer de disque, le disque
* discuss (v) (tr.) : aborder, traiter
* discussant (n) : participant (à une discussion)
* discussion (n) : discussion (f)
* disdain (n) : dédain - to be held in disdain by sb : avoir droit au mépris deqn, être tenu en peu d’estime par qn
* disdainful (a) : dédaigneux/-euse
* disease (n) : maladie (f) - Mad Cow disease : maladie de la vache folle - pandemic disease : maladie pandémique - preventable disease : maladie pouvant être évitée
* disempower (v) (tr.) : ébranler le pouvoir de, priver de ses/leurs moyens, rogner les ailes de, affaiblir le pouvoir d’action de, affaiblir, fragiliser, marginaliser
* disenfranchised (a) : exclu(e), laissé-pour-compte - the disenfranchised (a. subst. pl.) : les exclus de la société
* disengage (v) : (tr.) dégager, libérer, relâcher, enlever - to disengage oneself : se dépêtrer (from sth, de qch) ; (intr.) se désengager (from sth, de qch), se retirer (from sth, de qch)
* disenrollment (amér.) / disenrolment (brit.) (n) : désinscription (f) ( à une université, etc.) (anton. enrollment / enrolment : inscription (f))
* disfigure (v) (tr.) : défigurer
* disgrace (n) (fa p) : 1/ honte (f), déshonneur ; 2/ disgrâce (f)
* disgraceful (a) : honteux/-euse, scandaleux/-euse
* disgracefully (adv.) : de manière honteuse, de façon scandaleuse
* disgruntled (a) : mécontent(e) - to be disgrunted with sth : être mécontent de qch
* disguise (n) : déguisement - in disguise : a/ déguisé ; b/ incognito - a blessing in disguise : un mal pour un bien
* disguise (v) (tr.) déguiser - to be disguised in drag : être déguisé en femme
* disgust (n) (fa) : dégoût
* disgust (v) (tr.) (fa) : dégoûter
* disgusting (a) (fa) : dégoûtant(e)
* disgustingly (adv.) : 1/ affreusement, épouvantablement, atrocement - disgustingly fat : effroyablement obèse ; 2/ (ironique) - [man] to be disgustingly gorgeous : [homme] être un si beau mec que c’en est écœurant
* dish (n) (pl. dishes) : 1/ plat (n) - meat dish : plat de viande, de la viande - ready-made dish : plat cuisiné ; 2/ - the dishes : la vaisselle (sing.) - to do the dishes : faire la vaisselle - to dry the dishes : sécher la vaisselle - to put away the dishes : ranger la vaisselle - dish towel : torchon - dish washer : lave-vaisselle (masc.) (voir aussi dishwasher) ; 3/ boîte (f) (de culture) - culture dish : boîte de culture - petri dish : boîte de Petri ; 4/ - soap dish : porte-savon (masc.) (syn. soap holder)
* dish (n) (abr. de dish antenna : antenne parabolique) : parabole (f)
* dishcloth (n) : torchon à vaisselle, lavette (f)
* dishearten (v) (tr.) : décourager, démoraliser
* disheartening (a) : décourageant(e), démoralisant(e)
* dishevelled (a) : [personne, chevelure] hirsute, ébouriffé
* dishonest (a) : malhonnête
* dish up (v) (tr.) : 1/ servir (un plat) ; 2/ (fig.) sortir, ressortir, présenter (des explications, justifications, etc.)
* dishwasher (n) : 1/ (la machine) lave-vaisselle (masc.) (autre ortho. dish washer) (syn. dishwashing machine) ; 2/ (la personne) plongeur, plongeuse
* dishwashing (n) : (la) vaisselle (l’opération)
* dishy (a) (brit.) : 1/ appétissant(e) ; 2/ séduisant(e), attirant(e) - He is so dishy! : Je me le taperais bien !
* disincentive (n) : 1/ effet dissuasif - to be a disincentive : avoir un effet dissuasif ; 2/ frein (to sth, à qch), obstacle (to sth, à qch) - to be a disincentive to do sth : ne pas inciter à faire qch
* disincentivise/-ize (v) (tr.) : dissuader (sb from doing sth, qn de faire qch)
* disinclination (n) : manque d’enthousiasme (to + inf., pour + inf.)
* disinfect (v) (tr.) : désinfecter
* disinfo (n) (tronc. de disinformation, désinformation) : désinfo (f) - disinfo op : opération de désinfo, entreprise de désinfo
* disinformation (n) : désinformation (f) - a piece of disinformation : un article de désinformation, un article mensonger - to fight disinformation : lutter contre la désinformation - disinformation expert : expert en désinformation
* disinformationist (n) : désinformateur, désinformatrice, source de désinformation (syn. disinformer)
* disinformer (n) : désinformateur/-trice, source de désinformation (f) (syn. disinformationist)
* disintegrate (v) : (tr.) désintégrer ; (intr.) se désintégrer
* disintegration (n) : désintégration (f)
* disintegrator (n) : désintégrateur - disintegrator gun : pistolet désintégrant
* disintermediation (n) : suppression des intermédiaires (f)
* dismal (a) : épouvantable - dismal failure : échec épouvantable
* dismally (adv.) : 1/ sombrement, lugubrement ; 2/ lamentablement
* dismantle (v) (tr.) : démanteler
* dismantlement (n) : démantèlement
* dismantler (n) : démolisseur - car dismantler : casse autos
* dismantling (n) : démantèlement
* dismay (n) : désarroi, consternation (f) - to one’s dismay : à son grand effroi, non sans effroi
* dismay (v) (tr.) : consterner
* dismember (v) (tr.) : démembrer
* dismemberment (n) : démembrement
* dismiss (v) : 1/ (tr.) congédier, renvoyer (from a job, du boulot), licencier, révoquer, destituer (an official, un responsable) ; 2/ (intr.) (Milit.) rompre les rangs - Dismiss ! : Rompez ! - Permission to be dismissed, sir : Permission de me retirer, monsieur ; 2/ (tr.) écarter (a thought, une pensée), rejeter - to dismiss sb as being… : rejeter qn comme étant…
* dismissal (n) : 1/ congédiement, renvoi, licenciement, révocation (f), destitution (f) ; 2/ (Éduc.) fin des cours - dismissal at 12 : fin des cours à midi
* dismissive (a) : dédaigneux/-euse, méprisant(e) - a dismissive term : un terme méprisant
* dismissively (adv.) : dédaigneusement, avec dédain, d’un ton méprisant, avec mépris
* disobedience (n) : désobéissance (f) (to, à)
* disobedient (a) : désobéissant(e), rétif/-ive
* disorder (n) (fa p) 1/ trouble, maladie (f), dérèglement - alcohol-related disorders : troubles liés à l’alcool - eating disorder : trouble du comportement alimentaire ; 2/ ennui - mechanical disorder : ennui mécanique
* disorderly (a) : turbulent(e)
* disown (v) (tr.) : renier
* disparage (v) (tr.) : dénigrer, décrier
* disparaging (a) : critique, méprisant(e)
* dispatch (v) (tr.) : envoyer, expédier
* dispatcher (n) : 1/ (Transports) régulateur, régulatrice ; 2/ expéditeur, expéditrice ; 3/ répartiteur, répartitrice, aiguilleur/-euse
* dispel (v) (prét. et pp -lled) (tr.) : 1/ (au sens propre) dissiper (l'obscurité, la brume) - The darkness was soon dispelled : L'obscurité eut tôt fait de se dissiper ; 2/ chasser (une idée), dissiper (une crainte, un doute, une illusion, un mythe), faire taire (la rumeur) - His appearance dispelled rumours that he had died : Son apparition dissipa la rumeur de sa mort
* dispensatory (a) : dérogatoire
* dispenser (n) : distributeur (la chose) - desktop dispenser : dévidoir de bureau - soap dispenser : distributeur de savon
* disperse (v) (tr.) : diffuser, répandre, disséminer
* dispirited (a) : découragé
* displace (v) (tr.) : déplacer
* displacement (n) : 1/ déplacement - rate of displacement : vitesse de déplacement ; 2/ échange - engine displacement : échange standard de moteur
* display (n) : 1/ étalage, manifestation (f) - to make a display of … : faire montre de… - display advertisement : (Presse) annonce grand format (f), annonce de grande surface (f), grande annonce (f), annonce presse (f), pavé publicitaire (aussi display ad) ; 2/ exposition (f) - to be on display : être en évidence, être exposé à la vue de tous - [object] to be put on display (Muséologie) : [objet] être mis(e) en montre, être exposé ; 3/ (Inf.) a/ affichage - display quality : qualité d’affichage ; b/ écran - computer display : écran d’ordinateur ; 3/ (Av.) spectacle, démonstration (f) - air display : spectacle aérien, démonstration aérienne (syn. flying display)
* display (v) (tr.) : 1/ montrer, témoigner de ; 2/ afficher - to display sth on screen : afficher qch à l’écran
* displeasure (n) : 1/ mécontentement, insatisfaction (f) ; 2/ désapprobation (f)
* disposable (a) : jetable, à jeter - disposable camera : appareil photo jetable
* disposal (n) : 1/ disposition (f) - to have at one’s disposal : avoir à sa disposition ; 2/ rejet, élimination (f), évacuation (f) - chip disposal : (Usin.) évacuation des copeaux - waste disposal : élimination des déchets ; 3/ enlèvement, ramassage (des ordures) - garbage disposal enlèvement des ordures ; 4/ traitement (des déchets) - disposal facilities installations de traitement
* dispose (v) (fa) : 1/ (tr.) se défaire de, jeter ; (intr.) to dispose of : se débarrasser de - [ship] to be disposed of : [bateau] être réformé ; 2/ faire un sort à (a dish, un plat, a bottle, une bouteille)
* disproof (n) : réfutation (f) - burden of disproof : obligation de réfuter
* disproven (a) : [théorie, etc.] réfuté
* dispute (n) (fa) : controverse (f), débat, conflit, désaccord, contentieux - to mediate a dispute : arbitrer un conflit
* dispute (v) (tr.) : contester - He doesn’t dispute the facts : Il ne conteste pas les faits
* disputed (a) : litigieux/-euse
* disregard (v) (tr.) : ne pas tenir compte, ne pas respecter, ignorer - Disregard my previous instructions : Ne tenez pas compte de mes instructions précédentes
* disrespect (n) : irrespect, manque de respect
* disrespect (v) (tr.) : manquer de respect à
* disrespectful (a) : irrespectueux/-euse
* disrespectfully (adv.) : irrespectueusement, de manière irrespectueuse
* disrupt (v) (tr.) : perturber (traffic, la circulation), déranger - to disrupt a class : perturber un cours - to disrupt public order : troubler l’ordre public
* disruption (n) : perturbation (f) - supply chain disruption : perturbation(s) de la chaîne d’approvisionnement
* disruptive (a) : 1/ [individu] perturbateur/-trice, turbulent(e), [comportement] dérangeant(e) - disruptive behaviour : comportement de perturbateur ; 2/ [facteur, élément] de perturbation - disruptive factor : élément de perturbation
* disruptor (n) : perturbateur/-trice
* dis / diss (v) (tr.) (tronc. de (to) disrespect : manquer de respect à) (arg.) : 1/ manquer de respect à (qn), mal parler à (qn), faire un affront à (qn) - You should not have dissed me : Tu aurais dû m’épargner cet affront ; 2/ rejeter les avances de - She dissed him : Elle a rejeté ses avances, Il s’est pris un râteau avec elle (fam.) ; 3/ critiquer (qn), débiner (qn) (fam.), démolir (qn), casser (qn) - Laptops are often dissed as being overweight, unattractive, and pricey : On débine souvent les ordinateurs portables en disant qu’ils sont lourds, laids et chers
* dissatisfied (a) : insatisfait(e), mécontent(e)
* dissect (v) (tr.) : 1/ disséquer ; 2/ (fig.) décortiquer, éplucher
* dissector (n) : dissecteur/-trice (m/f)
* dissed and dismissed (ppa coord.) (arg.) : dénigré et rejeté - to get dissed ans dismissed : se faire larguer (pas son petit ami / sa petite amie)
* dissed and pissed (ppa coord.) (arg.) : humilié et furieux/-euse
* dissent (n) : désaccord, différence d’opinion
* dissent (v) (intr.) : 1/ être en dissidence ; 2/ diverger (from, de)
* dissenter (n) : dissident(e) (m/f) (syn. dissident)
* dissenting (a) : dissident(e)
* dissertation (n) (fa) : mémoire (masc.) - I've got a 50-page dissertation to write : J'ai un mémoire de 50 pages à rédiger
* disserve (v) (tr.) : desservir, nuire à
* disservice (n) : mauvais service - to do a disservice to… : desservir, nuire à…, faire du tort à…
* dissident (a) : dissident(e) (syn. dissenter)
* dissident (n) : contestataire, dissident
* dissonant (a) : 1/ dissonant(e) ; 2/ (fig.) discordant(e)
* dissonantly (adv.) : 1/ de façon dissonante ; 2/ de façon discordante
* dissymmetric (a) : dissymétrique
* dissymmetrical (a) : dissymétrique
* distance (n) : 1/ distance (f) - flight distance (Aéro.) : distance de vol - stopping distance : distance d’arrêt - (a) distance shot (Cadrage ciné.) : (un) lointain ; 2/ (expressions) - to go the distance : aller jusqu’au bout (syn. amér. to go the route)
* distance (v) (tr.) : distancer, laisser loin derrière - to distance oneself from sth/sb : a/ (au propre) se tenir à distance de qch/qn, se tenir à l’écart de qch/qn ; b/ (au fig.) prendre ses distances vis à vis de qch/qn, s’éloigner de qch/qn
* distancing (n) : tenue à distance - physical distancing : (respect de) la distance physique - social distancing : (respect de) la distance sanitaire
* distant (a) (fa p) : 1/ [individu] distant(e) ; 2/ éloigné (dans l'espace et dans le temps) - to take place in a distant future : avoir lieu dans un futur éloigné
* distaste (n) : dégoût, répugnance (f) (for, de)
* distasteful (a) : 1/ de mauvais goût ; 2/ déplaisant(e), désagréable
* distemper (n) : détrempe (f) - to paint in distemper : peindre à la détrempe
* distemper (v) (tr. et intr.) : peindre à la détempre
* distend (v) : (tr.) distendre ; (intr.) se distendre
* distended (a) : distendu(e), gonflé - distended belly : ventre distendu, ventre gonflé
* distil (brit.) / distill (amér.) (v) (tr.) : distiller
* distiller (n) : distillateur (l’appareil) - water distiller : distillateur d’eau
* distillery (n) : distillerie (f)
* distinct (a) : 1/ distinct(e), différent(e) (from, de) - as distinct from : par opposition à, contrairement à ; 2/ distinct(e), visible ; 3/ net(te), marqué
* distinctive (a) : caractéristique
* distinctively (adv.) : de facon caractéristique, typiquement
* distinctly (adv.) : 1/ de façon distincte ; 2/ nettement
* distort (v) (tr.) : déformer, dénaturer - to distort facts : déformer les faits - to distort information : déformer l’information - to distort the truth : travestir la vérité
* distorted (a) : déformé
* distracted (a) : 1/ distrait(e) ; 2/ préoccupé
* distraction (n) (fa) : 1/ détournement d'attention, manque d'attention, inattention (f) - distraction story : (Presse) nouvelle destinée à détourner l’attention ; 2/ ce qui détourne l'attention, sujet de distraction ; 3/ confusion (f), égarement, démence (f), folie (f) (syn. madness) - to distraction : à la folie - His attitude is driving me to distraction : Son attitude me rend fou
* distress (n) : 1/ désarroi ; 2/ détresse (f)
* distress (v) (tr.) : 1/ bouleverser, désoler, affliger ; 2/ donner un aspect vieilli à (un meuble)
* distressing (a) : 1/ désolant(e), éprouvant(e), bouleversant(e) ; 2/ inquiétant(e)
* distribute (v) (tr.) : 1/ distribuer (to, à) - to distribute press releases via newswire : diffuser des communiqués sur le fil de presse ; 2/ répartir
* distribution (n) (fa) : 1/ distribution (f) - distribution manifold : collecteur de distribution ; 2/ diffusion (f) (de journaux, de revues) - distribution agency : agence de diffusion
* distributor (n) (fa p) : 1/ distributeur - authorised distributor : distributeur agréé - wholesale distributor : distributeur en gros ; 2/ diffuseur (de presse)
* distributorship (n) : 1/ place de distributeur ; 2/ place de diffuseur
* district (n) : quartier (d’une ville) - business district : quartier d’affaires, quartier commercial
* distrust (n) : méfiance (f)
* distrust (v) (tr.) : se méfier de
* distrusted (ppa) : dont on se méfie, qui suscite la méfiance
* distrustful (a) : méfiant(e)
* disturb (v) (tr.) : troubler - to disturb the peace : troubler l’ordre public
* disturbance (n) : 1/ dérangement ; 2/ (pl. disturbances) troubles (pl.), émeutes (f pl.) ; 3/ bruit, vacarme, tapage
* disturbing (a) : troublant(e), inquiétant(e), perturbant(e)
* disturbingly (adv.) : de façon inquiétante
* disuse (n) : désuétude (f), abandon - to fall into disuse : tomber en désuétude
* disused (a) : désaffecté
* ditch (n) (pl. ditches) : fossé
* ditch (v) (tr.) : se débarrasser de (syn. to dump) - to ditch the dollar for oil payments : laisser tomber le dollar pour les achats de pétrole
* dither (n) : tremblement, frémissement, frisson
* dither (v) (intr.) : 1/ trembler, frémir ; 2/ hésiter, tergiverser
* dithery (a) : pris(e) de frisson, tout chose
* ditty (n) : chansonnette (f), petite chanson (f) - to hum a ditty : fredonner une chansonnette
* dive (n) : 1/ plongeon - to take a dive : plonger ; 2/ plongée (f) ; 3/ piqué (d’un avion) ; 4/ tripot
* dive (v) (intr.) : 1/ plonger ; 2/ faire de la plongée
* diver (n) : plongeur - skin diver : plongeur sous-marin, adepte de plongée sous-marine
* diverse (a) : divers(e)
* diversion (n) (fa p) : 1/ diversion (f) - to create a diversion : faire diversion ; 2/ déviation (routière) (f) ; 3/ détournement (de route) ; 4/ distraction (f), divertissement
* diversity (n) : diversité (f) - linguistic diversity : diversité linguistique
* divert (v) (tr.) (fa) : dévier, détourner
* divest (v) (tr.) : 1/ - to divest sb of sth : débarrasser qn de qch, prendre qch à qn ; 2/ priver qn de qch
* divide (v) (tr.) : diviser - to be divided into… : se diviser en…, se répartir en…
* divided (ppa) : divisé - A house divided against itself cannot stand : Maison divisée en son sein ne saurait se défendre
* dividend (n) : dividende - It could pay dividends : Ça pourrait rapporter gros - fluctuating dividend : dividende variable
* divider (n) (amér.) : (Voirie) terre-plein central
* dividing (a) : - dividing line : ligne de partage, ligne de démarcation
* divination (n) : divination (f), prédiction de l’avenir, pratiques divinatoires (f pl.)
* divine (v) (tr.) (fa p) : 1/ rechercher (with a rod, avec une baguette de sourcier) ; 2/ prédire (l’avenir) - to devine that… : prédire que… ; 3/ deviner - to devine that… : deviner que…
* diving (n) : plongée (f) - diving board : plongeoir - dumpster diving (amér.) : fouiller dans les bennes, faire les poubelles - skin diving : (la) plongée sous-marine
* division (n) : 1/ division (f), partition (f) ; 2/ direction (f) - the aircraft division : la direction avions - the equipment division : la direction du matériel ; 3/ (Milit.) division
* divorce (n) : divorce
* divorce (v) : (tr.) divorcer de ; (intr.) divorcer
* dizziness (n) : sensation de vertige
* dizzy (a) : qui a le vertige
* DJ (n) (init. de disc jockey) (pron. « deejay ») : (Mus.) disquaire (années 1960), programmateur audio, animateur musical, maestro des platines/manettes, monsieur platines, platineur (hum.), platinicien
* DMM (n) (init. de digital multimeter : multimètre numérique)
* DNC (n) (init. de direct numerical control : commande numérique directe (f))
* do (v) (did, done) : 1/ (tr.) faire - to do a favour : faire une faveur, rendre service - to do one’s duty : faire son devoir ; 2/ (intr.) réussir - to do well in school : réussir à l’école - He is doing well : Il se débrouille bien ; 3/ (intr.) faire l’affaire, suffire, aller bien - That place will do nicely : Cet endroit fera très bien l’affaire, Cet endroit ira très bien ; 4/ (tr.) (arg .) refaire, rouler - He did me out of ten shillings : Il m’a refait de dix shillings - They shan’t do me twice : Ils ne me rouleront pas une deuxième fois - Wasn’t he done! : Il a été bien attrapé !, Il s’est bien fait avoir ; 5/ (expressions) to do bodywork : travailler comme carrossier, travailler comme tôlier - to do business : faire des affaires - to do evil : faire le mal - to do good : faire du bien - to do it (amér.) : faire l’amour, baiser (vulg.) - to do wrong : faire du mal - to do the dishes faire la vaisselle
* do (n) (fam.) : fête - There is a do on at the town hall tonight : Il y a une fête ce soir à la mairie
* do away (v) (intr.) : - to do away with… : se débarrasser de…
* doc (n) (tronc. de doctor) : - the doc (fam.) : le toubib
* doc (n) (pl. docs) (tronc. de document) : document, doc (fam.)
* docile (a) : docile
* docilely (adv.) : docilement
* dock (n) : 1/ bassin (portuaire), cale (f) - dry dock : cale sèche, bassin de radoub - space dock : cale sèche spatiale (aussi spacedock) ; 2/ banc des accusés
* doctor (n) : 1/ détenteur d’un doctorat, docteur ; 2/ docteur (en médecine), médecin - to visit a doctor : aller chez le docteur - medical doctor : docteur en médecine, médecin ; 3/ - spin doctor (péj.) : docteur en manipulation, responsable de la propagande ; 4/ Doctor Jones : a/ (adresse directe) docteur Jones, b/ tierce personne) le docteur
* doctor (v) (tr.) : arranger, trafiquer, tripatouiller (un texte, une image), caviarder (un article) - to doctor an article : caviarder un article - to doctor images : trafiquer des images
* docudrama (n) (contr. de documentary drama) : fiction reposant sur des faits réels (syn. dramadoc)
* document (n) : document - document shredder : broyeur de documents
* document (v) (tr.) (fa) : 1/ décrire de façon détaillée, fournir de la documentation sur ; 2/ fournir des preuves à l'appui de, appuyer avec des documents, étayer avec des documents
* documentarian (n) : documentariste
* documentary (a) : documentaire - documentary drama : fiction reposant sur des faits réels (abr. docudrama) - documentary photographer : photographe documentaire
* documentary (n) (pl. documentaries) : documentaire
* documentation (n) : documentation (f) - aircraft-related documentation : documentation relative aux avions
* documented (ppa) : sur lequel des données existent
* docuseries (n) : série documentaire (g), docu-série (f)
* dodge (v) (tr.) : 1/ esquiver, éviter (un adversaire, une obligation) - to dodge the draft : ne pas répondre à l’appel sous les drapeaux, se soustraire à la conscription ; 2/ éluder, éviter (une question) ; 3/ frauder
* dodgems (n pl.) : autos tamponneuses (f pl.)
* dodger (n) : 1/ tire-au-flanc (masc.) ; 2/ réfractaire (n), insoumis (n) - draft dodger : insoumis, objecteur de conscience - lockdown dodger : réfractaire au confinement ; 3/ fraudeur, resquilleur
* dodgey (a) : dangereux/-euse, risqué - The roads are dodgey : Les routes ne sont pas sures
* doff (v) (tr.) : enlever, retirer - to doff one’s hat : se découvrir
* dog (n) : chien - cadaver dog : chien renifleur (de cadavres) - herding dog : chien de berger - rescue dog : chien abandonné, chien de la SPA (Fr.) - sled dog : chien de traîneau - stray dog : chien errant - the dogs (brit.) : les courses de lévriers - to go to the dogs : aller aux courses de lévriers - dog cart : charrette anglaise (f) - dog racing : courses de lévriers - dog shelter : refuge pour chiens - dog shit : (de la) merde de chien - dog walker : promeneur de chiens
* dog (v) (tr.) : s’attacher aux pas de, suivre à la piste, poursuivre ; 2/ harceler
* dog cart / dogcart (n) : 1/ (Hist.) charrette anglaise (f) (voiture hippomobile découverte ; 2/ charrette à chien
* dog-centric (ac) : centré sur les chiens / sur le chien - dog-centric magazine : revue canine (f)
* dogged (a) : obstiné
* doggie (a) : de chien, de toutou (aussi doggy)
* doggie (n) (fam.) : petit chien, toutou (fam.) (aussi doggy)
* doggiestyle (mod.) : (Sex.) en levrette - the doggiestyle position : la levrette
* do-gooder (nc) : bonne âme (f)
* dogma (n) : dogme
* dogmatic (a) : dogmatique
* dogpile (n) : empilement de personnes, joyeuse mêlée (f) - A dogpile formed : Une joyeuse mêlée se forma - to join in a dogpile : se joindre à une joyeuse mêlée (syn. pigpile)
* dogpile (v) (intr.) : s'entasser les uns sur les autres dans une joyeuse mêlée - to dogpile on sb : s'affaler en masse sur qn
* dog-sit (v) : (intr) : garder des chiens - Can you dog-sit for me? : Peux-tu me garder le chien ?
* dog-sitter (nc) : garde-chien (masc.), garde-toutou (masc.) (fam.)
* dog-sitting (nc) : (la) garde de chiens, (la) garde de toutous - dog-sitting service : service de garde de chiens
* do-it-yourself (ac) : à faire soi-même, de bricolage, d’amateur- a do-it-yourself job : un bricolage, un travail d’amateur - do-it-yourself store : magasin de bricolage
* do-it-yourself (nc) : (le) bricolage, (le) système D
* do-it-yourselfer (nc) : adepte du bricolage, adepte du système D
* doldrums (n pl.) : abattement, dépression (f) - to be in the doldrums : broyer du noir, avoir le cafard
* dole (n) : (brit.) allocation de chômage (syn. unemployment benefit) - to be on the dole : être au chômage
* doleful (a) : morne, triste
* dole out (v) (tr.) : distribuer au compte-gouttes
* dollar (n) : dollar - It earned him 1000 dollars : Cela lui rapporta 1000 dollars - tens of millions of dollars : des dizaines de millions de dollars
* dollar-based (ac) : 1/ fondé sur le dollar ; 2/ exprimé en dollars, libellé en dollars - dollar-based trade : commerce en dollars
* dollop (n) : gros morceau (of food, de nourriture)
* dolmen (n) : dolmen
* dolt (n) (arg.) : idiot (n), abruti (n)
* doltish (a) (arg.) : idiot(e), stupide, abruti(e)
* domain (n) : domaine - (the) public domain : (le) domaine public - to be in the public domain due to copyright expiration : être dans le domaine public du fait de l’expiration de la protection du droit d’auteur
* dome (n) : (Arch.) dôme - earth masonry dome : dôme en maçonnerie de terre - heat dome : dôme de chaleur - [town] to be under a heat dome : [ville] être sous un dôme de chaleur
* domestic (a) (fa p) : 1/ [animal] domestique ; 2/ familial(e) - domestic violence : violence familiale ; 3/ interne, national(e), du pays - domestic law : droit interne, droit national - domestic media (sing.) : médias nationaux (pl.) - domestic users : utilisateurs nationaux ; 4/ [vol] intérieur (Aéro.)
* domestically (adv.) : 1/ au niveau national ; 2/ dans le pays (anton. internationally)
* domestically developed (ac) : conçu(e) dans le pays - domestically developed technology : technique conçue au niveau national
* domestically manufactured (ac) : fabriqué dans le pays, de fabrication nationale
* domestically produced (ac) : produit(e) au pays, produit(e) localement - domestically-produced parts : pièces d’origine locale
* domestically-made (ac) : fait(e) au pays, fait(e) localement - domestically-made plane : avion fait localement
* domicile (n) : domicile, lieu de résidence - change of domicile : changement de domicile
* domicile (v) (tr.) : domicilier
* domiciliation (n) : domiciliation (f) - bank domiciliation : domiciliation bancaire
* dominance (n) : prédominance (f)
* dominant (a) : dominant(e) - dominant language : langue dominante - (the) dominant narrative (le) discours dominant
* dominate (v) (tr.) : dominer
* domineering (a) : autoritaire, qui aime dominer les autres
* domino (n) (pl. dominoes) : domino - to play dominoes : jouer aux dominos - the domino effect : l’effet domino - to create a domino effect : créer un effet domino
* don (n) (fa) : professeur d'université (à Oxford) - He's now an Oxford don : Il est professeur de l’Université d’Oxford maintenant
* don (v) (tr.) (lit.) : revêtir
* donate (v) (tr.) : donner (sth to sb, qch à qn), faire don de (sth to sb, qch à qn)
* donation (n) : don - to make a donation : faire un don - organ donation : (le) don d’organes
* done (p. passé de to do) : fait(e) - Done that? : C’est fait ?
* done (a) : 1/ (qui est) fini(e) ; 2/ (qui a) fini - Are you done yet? : Tu as fini ? - Are you done with the translation? : Tu as fini de traduire ? ; 3/ qui se fait - That’s not done! : Ça ne se fait pas !
* donnybrook (n) (arg.) : bagarre
* donor (n) : 1/ donneur/-euse (de sang, d’organes) - organ donor : donneur d’organes - parts donor : donneur de pièces, source de pièces - [aircraft] to be used as a parts donor : [avion] servir de donneur de pièces - spare parts donor : source de pièces de rechange - donor aicraft : avion à cannibaliser ; 2/ donateur, donatrice
* donor-funded (ac) : [programe] financé par des donateurs
* do-nothing (n) : personne qui agit peu, personne portée à l’inaction
* donut (n) (amér.) : voir doughnut (n)
* doodle (v) (intr.) : gribouiller
* doodlebug (n) (amér.) : 1/ fourmilion ; 2/ baguette de sourcier
* doodling (n) : (l’action) gribouillage, (le résultat) gribouillis (pl.) - doodling during classes : dessiner des gribouillis pendant les cours
* doofus (n) (amér.) : andouille, idiot
* doom (n) : destin - to preach doom and gloom : jouer les Cassandre - doom monger : prophète de malheur, Cassandre (fém.) - doom mongering : catastrophisme - a portent of doom : un présage de malheur
* doom (v) (tr.) : condamner - to be doomed to + inf. : être condamné à + inf., être voué à + inf.
* doomish (a) : funeste, fatal(e)
* doom-laden (ac) : - doom-laden estimate : estimation alarmiste - doom-laden strategy : stratégie condamnée à l’échec
* doomsayer (n) : prophète de malheur, Cassandre (fém.) (syn. doom monger, doomster) - to defy the doomsayers : défier les pronostics des Cassandre
* doomster (n) : prophète de malheur (syn. doomsayer, doom monger)
* doona (n) (austr.) : 1/ couette (f) ; 2/ édredon
* door (n) : porte (f) - to slam the door : faire claquer la porte, claquer la porte - glass door : porte vitrée, porte-fenêtre - glazed door : porte vitrée - screen door : porte moustiquaire - trap door : trappe (f) - door furniture (sing.) : ferrures de porte (f pl.) - door handle : poignée de porte - door jamb : jambage de porte ; 2/ portière (f) (de voiture) - door compartment : vide-poche (masc.) (dans une portière)
* door keeper / doorkeeper (n) : 1/ portier (d’hôtel) ; 2/ concierge
* doormat (n) : 1/ paillasson ; 2/ (fig.) carpette (f), chiffe molle (f)
* doorphone (n) : parlophone, portier de rue - audio doorphone : portier audio - video doorphone : portier vidéo
* dope (n) : 1/ marijuana (f), drogue (f), dope (f) (fam.) - dope fiend : drogué (n) ; 2/ (Sport) (n ind. sing.) produits dopants (pl.) ; 3/ gros bêta, andouille (f), nouille (f) - That’s not how you do it, you dope! : C’est pas comme ça qu’on procède, gros bêta !
* doppelganger (n) : double, sosie (f)
* dork (n) (arg. amér.) : 1/ bite (f), queue (f) (vulg.) ; 2/ pauvre type, blaireau (péj.)
* dorky (a) (arg. amér.) : 1/ ridicule, grotesque ; 2/ ringard(e) - dorky round sunglasses : lunettes de soleil rondes ringardes
* dorm (n) (tronc. de dormitory : dortoir) : dorto (fam.)
* dormant (a) : endormi(e), au repos, en veilleuse - to remain dormant : rester en sommeil
* dormer (n) : lucarne (f) - dormer window : lucarne
* dormitory (n) (pl. dormitories) : 1/ (brit.) dortoir ; 2/ (amér.) résidence secondaire (f)
* dose oneself (up) (v) : se bourrer de médicaments
* doss (n) : dans l’expression It’s a doss! : Fastoche !
* doss down (v) (intr.) : se pieuter (fam.)
* dossier (n) : dossier - to publish a dossier : publier un dossier
* dot (n) : point - on the dot of 5.30 : à 5 h 30 précises
* dotage (n) : sénilité (f), gâtisme
* dotard (n) : gâteux/-euse (n)
* dote (v) (intr.) : être gaga (on, de), raffoler (on, de)
* doth (v. aux.) (arch.) = does
* doting (a) : affectueux/-euse, excessivement tendre, qui a une affection excessive et ridicule
* dotterel (n) : pluvier-guignard (aussi dottrel)
* double (a) : 1/ double - double agent (Intel.) : agent double - double consonant : consonne double ; 2/ deux fois - double the number of / the value of / the amount of / the length of : le double du nombre de / de la valeur de / du montant de / de la longueur de
* double (n) : (Cin.) doublure (f) - body double : doublure physique (dans les scènes chaudes) - butt double : doublure des fesses - stunt double : doublure (pour les) cascades
* double (v) : (tr.) doubler ; (intr.) doubler
* double-acting (ac) : à double effet
* double back (v) (intr.) : faire demi-tour, rebrousser chemin
* double-blind (ac) : en double aveugle, à double insu (Q) - double-blind study : étude en double aveugle
* double check / double-check (v) (tr.) : vérifier deux fois
* double-click (vc) : (Inf.) (tr.) cliquer deux fois sur - to double-click a file : cliquer deux fois sur un fichier ; (intr.) cliquer deux fois (on, sur)
* double-cross (v) (tr.) : tromper (qn), trahir (qn)
* double-crosser (n) : traître, traîtresse
* double-decker (nc) : autobus à étage
* double down (v) (tr.) (amér.) : 1/ doubler la mise ; 2/ (fig.) surenchérir, persister et signer
* double Dutch (n) : 1/ charabia, paroles incompréhensibles (f pl.) ; 2/ (fig.) (du) chinois, (de l’)hébreu - That’s all double Dutch to me! : Tout ça, c’est du chinois pour moi !
* double-edged (ac) : à double tranchant - double-edged sword : épée à double tranchant
* double-faced (ac) : [mur] à deux parements, [marteau] à double tête - double-faced hammer : marteau à double tête
* double-flush (v) : (tr.) - to double-flush the toilet : tirer deux fois la chasse d’eau ; (intr.) - to double-flush : tirer la chasse d’eau deux fois de suite
* double-jabbed (ac) (brit.) (fam.) : doublement vacciné, vacciné deux fois (syn. double-vaxxed)
* double-quick (a) : - in double-quick time : en quatrième vitesse (fam.), dare-dare (fam.)
* double-quick (adv.) (fam.) : 1/ au pas de gymnastique ; 2/ en quatrième vitesse (fam.), dare-dare (fam.)
* double-slope (ac) : à deux pentes, à deux versants - double-slope roof : toit à deux pentes, toit à deux versants
* doublespeak (n) : double langage, double discours
* doublet (n) : pourpoint
* doubloon (n) : doublon (monnaie espagnole)
* doubt (n) : doute - to have doubts : avoir des doutes (about, sur)
* doubt (v) (tr.) : douter de
* doubter (n) : sceptique (n) - climate change doubter : personne ayant des doutes quant aux changements climatiques, sceptique en matière de changement climatique
* doubtful (a) : douteux/-euse - It is doubtful whether… : Il est peu probable que…
* douchebag (amér.) : 1/ poire vaginale (f) ; 2/ (vulg.) gros con, connard, trou-du-cul, trouduc
* dough (n) : 1/ pâte à beignet ; 2/ (fig.) (arg.) galette (f), fric
* doughnut (n) : 1/ beignet ; 2/ anneau (var. ortho. amér. donut)
* do up (v) (tr.) : redécorer, refaire, retaper (fam.) - to do up a rom : retaper une pièce
* dour (a) : austère
* douse (v) (tr.) (fam.) : 1/ éteindre (la lumière, la bougie, la camoufle) - to douse the glim : souffler la camoufle (fig), rendre le dernier soupir ; 2/ fermer - Douse that! : Ferme ça ! ; 3/ tremper, arroser ; 4/ ôter, enlever (ses souliers)
* dovecot (n) : colombier - dovecot associated with beehives : colombier-rucher
* dovetail (n) : (Menuiserie, Charpenterie) queue d’aronde - dovetail joint : assemblage en queue d’aronde
* dovetail (v) : (intr.) s’assembler, s’imbriquer (with, avec), s’unir solidement (with, à) ; (tr.) assembler, imbriquer, unir solidement
* Dow-Jones industrial average (the) (abr. : the DJ) : (l')indice industriel Dow-Jones (moyenne des prix d'une sélection d'actions américaines)
* down (prép.) : 1/ en aval de - down river : en aval du fleuve ; 2/ au fil de - down the ages : au fil des siècles
* down (postp. adj.) : [machine, ordinateur, etc.] en panne, arrêté, [ligne électrique] abattu(e) - The up escalator is down! (hum.) : L’escalier mécanique montant ne monte plus ! - [electric lines] to be down : [lignes électriques] être abattues - [machine] to be down : [machine] être en panne, être arrêtée - down state : (état d’)indisponibilité - to be in the down state : être indisponible
* down (n) (pl. downs) : bas - my ups and downs : mes hauts et mes bas
* down (v) (tr.) : 1/ avaler (une bière) ; 2/ descendre (un avion) ; 3/ mettre à terre
* downblouse (a) : - downblouse photography : (la) photographie de décolletés
* downcast (a) : découragé
* downed (ppa) : tombé au sol, abattu(e)
* downfall (n) : chute (f)
* downgrade (v) (tr.) : dévaluer, déprécier, dévaloriser
* downhearted (a) : abattu(e), découragé
* downing (n) : (le) fait d’abattre (un avion)
* download (v) (tr.) : (Inf.) transférer (d’un système central à un périphérique, depuis un serveur), télédécharger, télécharger en aval, rapatrier (sur sa machine)
* downloading (n) : (Inf.) transfert (d’un système central à un périphérique), télédéchargement
* downpayment (n) : versement initial
* downright (a) : véritable, fieffé - a downright rogue : un fieffé coquin
* downright (adv.) : carrément, franchement, complètement, purement et simplement
* downsize (v) (tr.) : réduire la taille de
* downsized (ppa) : de taille réduite
* downstairs (adv.) : au rez-de-chaussée, en bas (anton. upstairs : à l’étage, en haut) - to go downstairs : descendre au rez-de-chaussée
* downstream (a) : situé en aval (anton. upstream)
* downstream (adv.) : en aval (anton. upstream)
* downstream from / of (loc. prép.) : en aval de - downstream from station 40 : en aval du poste de montage 40 (anton. upstream of)
* down to (loc. prép.) : jusqu'à (+ limite inférieure) (anton up to jusqu'à + limite supérieure)
* downtown (a) (amér.) : de centre-ville (syn. brit. central) - His office is in downtown Boston : Son bureau est dans le centre de Boston - downtown department store : grand magasin du centre-ville
* downtown (adv.) : en plein centre-ville - They set up their business downtown : Ils ont monté leur affaire dans le centre-ville
* downturn (n) : (Écon.) ralentissement
* downvote (v) : (tr.) retrancher un point à, enlever un point à ; (intr.) retrancher un point, enlever un point, donner un avis négatif (anton. to upvote) - downvote button : bouton contre
* dowry (n) : dot (f)
* dowse (v) (tr.) : [sourcier] chercher de l’eau
* dowsing (n) : radiesthésie (f) - dowsing rod : baguette de sourcier
* doxing / doxxing (n) (de docs, abr. pl. de doc, tronc. de document) : recherche et mise en ligne d’infos sur la vie privée d’une personne
* doze (n) : petit somme, petite sieste (f)
* doze (v) (intr.) : sommeiller, faire la sieste
* doze off (v) (intr.) : s’assoupir
* Dr (brit.) / Dr. (amér.) (abr. de Doctor) : Dr.
* drab (a) : terne, monotone
* drabness (n) : caractère terne, caractère monotone, caractère monotone
* draft (brit.) / draught (amér.) (n) : 1/ courant d’air - to go in out of the draught : rentrer se mettre à l’abri des courants d’air - draught excluder : bourrelet (de porte, de fenêtre) ; 2/ tirant (d’eau) - [ship] to have a draft of 5 metres : [navire] avoir un tirant d’eau de cinq mètres ; 3/ brouillon (de lettre), ébauche, esquisse, avant-projet - to type a first draft : taper un premier jet - initial draft : première ébauche, première version, première esquisse, texte initial, premier projet, avant-projet ; 4/ (amér.) conscription (militaire) (f), appel sous les drapeaux - to dodge the draft : ne pas répondre à l’appel sous les drapeaux, se soustraire à la conscription - draft dodger : insoumis (n), objecteur de conscience ; 5/ (Milit.) enrôlement ; 6/ (Sport, Amér. du Nord) sélection (f), repêchage - dispersal draft : repêchage de dispersion - expansion draft : repêchage d’expansion
* draft (brit.) / draught (amér.) (v) (tr.) : 1/ faire au brouillon - dans l’expression to draft and redraft work : rédiger et remanier son travail, mettre et remettre son ouvrage sur le métier ; 2/ (Sport, Amér. du Nord) repêcher (un joueur), sélectionner (un joueur)
* drafty (brit.) / draughty (amér.) (a) : plein(e) de courants d’air, venté
* drag (n) : 1/ habits féminins (pl.) - to be disguised in drag : être déguisé en femme ; 2/ (fam.) chose pénible, corvée - What a drag it is getting old! : Quelle barbe de vieillir !
* drag (v) (tr.) : traîner - to drag one’s feet : traîner des pieds, faire traîner les choses (over/on sth, à propos de qch)
* drag and drop (v coord.) : (Inf.) faire glisser et déposer, faire glisser et lâcher, déplacer et déposer, tirer-lâcher (into, dans…, from, depuis)
* drag-and-drop (ac) : (Inf.) - drag-and-drop clipart items : éléments iconographiques déposables - drag-and-drop icons : icônes à déplacer et déposer
* dig and delve (v coord.) : (au fig.) (tr.) creuser et fouiller (sth, qch) ; (intr.) creuser et fouiller (into sth, dans qch)
* draggable (a) : déplaçable - draggable menu : menu déplaçable
* dragnet (n) : filet à la traîne
* drag on (v) (intr.) : se prolonger, s’éterniser
* dragon (n) : dragon - dragon slayer : tueur de dragons
* dragonfly (n) : libellule (f)
* dragoon (n) : (Milit.) dragon
* dragoon (v) (tr.) : 1/ embrigader ; 2/ forcer (qn), contraindre (qn) - to dragoon sb into doing sth : forcer / contraindre qn à faire qch
* dragooning (n) : embrigadement
* drain (n) : 1/ canalisation (f), tuyau d’évacuation, (Agri.) drain - rubble trench drain : drain rempli de pierraille - to throw money down the drain : jeter l’argent par les fenêtres - drain unclogging : débouchage de drains ; 2/ fuite (f), perte (f) - a brain drain of experts : une fuite de cerveaux
* drain (v) : 1/ (tr.) drainer, assécher ; (intr.) s’évacuer, se vidanger ; 2/ purger
* drainage (n) : 1/ drainage (l’activité) - drainage basin : (Hydro.) bassin versant ; 2/ tout-à-l’égout
* draining (n) : 1/ égouttement - draining board : égouttoir ; 2/ évacuation (f)
* drain off (v) (tr.) : laisser s’égoutter
* drama (n) : 1/ drame, (Télé) dramatique (n) (f) - documentary drama : fiction reposant sur des faits réels ; 2/ (Éduc.) (le) théâtre - drama lessons : cours d’art dramatique, cours de théâtre
* dramatic (a) (fa) : spectaculaire (syn. spectacular) - dramatic increase : augmentation spectaculaire (f)
* dramatically (adv.) (fa) : de façon spectaculaire
* dramatist (n) : auteur dramatique
* drank (prét. de to drink)
* drape (n) : 1/ (amér.) rideau - to close one’s drapes : fermer ses rideaux ; 2/ drap - surgical drape : drap chirurgical
* drape (v) (tr.) : draper - to drape oneself in the toga of pacifism : se draper de la toge du pacifisme
* draperies (n pl.) : tentures (f pl.)
* drastic (a) : draconien/-ienne, radical(e)
* drastically (adv.) : de façon draconienne, de façon radicale, radicalement
* draught (n) : voir draft (n)
* draught-proof (vc) (tr.) : isoler contre les courants d'air
* draughts (n pl.) (brit.) : (le) jeu de dames - to play draughts : jouer aux dames - game of draughts : (une) partie de dames - draughts piece : pion
* draughty (a) : voir drafty (a)
* draw (n) : 1/ prise (de sang) - blood draw : prise de sang ; 2/ tirage (au sort) ; 3/ match nul ; 4/ (Cin.) film qui déplace les foules - to be a big draw : avoir beaucoup de succès - a box office draw : un succès dans les salles obscures (syn. a box office hit)
* draw (v) (drew, drawn) : 1/ (tr.) tirer - to draw the curtains : tirer les rideaux - to draw conclusions : tirer des conclusions ; (intr.) avancer - to draw closer : s’approcher ; 2/ (tr.) étirer - to draw wire : étirer du fil ; 3/ (tr.) attirer ; 4/ (tr. et intr.) dessiner
* drawback (n) : inconvénient, désavantage (syn. disadvantage) - to suffer some drawbacks : présenter certains inconvénients
* drawee (n) : (Banq.) tiré (n)
* drawer (n) : tiroir - chest of drawers : commode (n) - drawer runner : glissière de tiroir (syn. drawer slide)
* drawing (n) : dessin - dimensional drawing : dessin côté (syn. - measured drawing) - exploded drawing : dessin éclaté - drawing pin (brit.) : punaise (f)
* drawn (pp de to draw)
* drawn (ppa) : [visage] tiré, crispé
* draw out (v) (drew, drawn) (tr.) : étirer
* drawstring (n) : cordon, cordonnet - drawstring bag : sac à cordon coulissant, sac à cordonnet
* draw up (v) (tr.) : rédiger - to draw up a deed : rédiger un acte
* dread (n) : crainte (f), peur (f), effroi (syn. fear)
* dread (v) (tr.) : redouter
* dreadful (a) : horrible, terrible, affreux/-euse
* dreadfully (adv.) : affreusement
* dreadnought (n) : (Marine) cuirassé
* dream (n) : rêve - Have golden dreams! : Fais de beaux rêves !, Faites de beaux rêves ! - wet dream : a/ éjaculation nocturne (f) - I’ve had a wet dream : j’ai eu une pollution nocturne ; b/ fantasme - my dream girl : la fille de mes rêves
* dream (v) (dreamt, dreamt, aussi rég.) : rêver
* dreaming (n) : (le) fait de rêver, (le) rêve - lucid dreaming : (le) rêve éveillé
* dreamt (prét. de to dream)
* dreamt (pp de to dream)
* dreamworld (n) : monde onirique, monde imaginaire, monde fictif
* dreariness (n) : tristesse (f)
* dreary (a) : monotone, triste, morne, lugubre
* dredge (n) : drague (f)
* dredge (v) (tr.) : draguer
* dredger (n) : 1/ (le bateau) dragueur ; 2/ ouvrier dragueur
* dregs (n pl.) : lie (f) (de vin) - wine dregs : lie de vin
* dress (n) : 1/ robe (f) ; 2/ tenue (f) - fancy dress : déguisement - fancy dress party (brit.) : bal costumé, soirée costumée (f), soirée déguisée
* dress (v) (fa) : (tr.) habiller ; (intr.) s'habiller
* dresser (n) : 1/ vaisselier ; 2/ habilleuse (fém.) ; 3/ personne qui s’habille (de telle ou telle manière) - cross dresser : travesti (m)
* dressing (n) : 1/ assaisonnement ; 2/ pansement, bandage ; 3/ habillage (l’action) - dressing gown (brit.) : a/ robe de chambre, b/ peignoir (de bain) - dressing room : a/ vestiaire ; b/ loge (f) (de théâtre) - dressing table (brit.) : coiffeuse (f) ; 4/ décoration (f) - window dressing : a/ décoration de vitrines ; b/ (de la) poudre aux yeux, (une) façade - This is nothing but window dressing : Ce n’est là que de la poudre aux yeux, Ce n’est là qu’une façade
* dressmaker (n) : couturière (f)
* dress up (v) : 1/ (tr.) bien habiller - all dressed up : sur son trente-et-un - to dress oneself up : se saper ; (intr.) bien s’habiller, se mettre sur son trente-et-un ; 2/ (tr.) déguiser ; (intr.) se déguiser
* dressed up (pp) : - to be all dressed up : être sur son 31 (syn. brit. fam. to be all poshed up)
* drew (prét. de to draw)
* dribble (v) (intr.) : tomber goutte à goutte
* dried (ppa) : séché - dried prune : pruneau séché (syn. dried plum)
* drier (n) (brit.) / dryer (amér .) : - hair drier : sèche-cheveu (masc.)
* drift (v) (intr.) : 1/ dériver ; 2/ (fig.) to drift into sth : se laisser entraîner dans qch, plonger dans qch ; 3/ [snow, neige] s’amonceler
* drifter (n) : vagabond(e) (n)
* driftnet (n) : filet dérivant, traîne (f) (var. drif net)
* drill (n) : 1/ perceuse (f) - bench drill : perceuse d'établi - hand drill : perceuse à main, chignole - pillar drill : perceuse à colonne, perceuse sur colonne - drill chuck : porte-foret (masc.) - hammer drill : perceuse à percussion ; 2/ foret, roulette de dentiste (f) ; 3/ exercice(s) (syn. exercise) - fire drill : exercice d’alerte à l’incendie - drill sergeant : sergent instructeur
* drill (v) (tr.) : 1/ percer ; 2/ forer
* driller (n) : 1/ (la machine) perceuse (f) ; 2/ (la personne) foreur - offshore driller : foreur en mer, foreur sur plate-forme
* drilling (n) : 1/ perçage ; 2/ travaux (pl.) de forage - drilling rig : plateforme de forage
* drink (n) : boisson (f) - to refresh oneself with drinks : se rafraîchir - fancy drink : boisson chic, boisson branchée - fizzy drink : boisson gazeuse - soft drink : boisson non alcoolisée - spirits drink : boisson spiritueuse - drinks tray : plateau à boissons (d’un garçon de café)
* drink (v) (drank, drunk) (tr.) : boire
* drinking (n) : - binge drinking : beuverie (f), beuveries (pl.)
* drinking up (n) : (le fait de) vider son verre, (le fait) de finir sa boisson - drinking-up time (brit.) : (dans un pub) (l’) heure de finir son verre - to exceed drinking-up time : dépasser l’heure du dernier verre
* drink up (v) (intr.) : vider son verre, finir sa boisson
* drip (n) : 1/ goutte à goutte - drip pan : lèche-frite (masc.) (syn. drip tray) ; 2/ perfusion (f) - to be on a drip : être sous perfusion
* drip (v) : (intr.) a/ goutter, tomber goutte à goutte ; b/ s’égoutter
* drip-dry (v) : (tr.) égoutter, laisser s’égoutter ; (intr.) s’égoutter
* drip-dry (a) : ne nécessitant aucun repassage
* drip-drying (n) : séchage par égouttage
* dripping (n) : 1/ égouttement, goutte à goutte - dripping pan : lèche-frite ; 2/ drippings (pl.) : gouttes (f pl.), gouttelettes (f pl.)
* drive (n) : 1/ tour (en voiture) ; 2/ allée (f) ; 3/ campagne vigoureuse (f), collecte (f) - to run a fundraising drive : organiser une campagne de collecte de fonds - blood drive : collecte de sang - unionising drive : campagne de syndicalisation ; 4/ force, dynamisme ; 5/ entraînement - sprocket drive : entraînement par roues dentées - four-wheel drive : (les) quatre roues motrices ; 6/ (Inf.) lecteur (de disque) - hard drive (abr. de hard-disk drive, drive signifiant moteur) : lecteur de disque dur
* drive (v) (drove, driven) : 1/ (tr. et intr.) conduire, piloter - Drive safe! : Conduis / Conduisez prudemment, Sois / Soyez prudent (au volant) - Drive with caution! : Sois / Soyez prudent en conduisant ; 2/ (tr.) pousser, contraindre - to drive sb frantic : mettre qn hors de lui - His attitude is driving me to distraction : Son attitude me rend fou ; 3/ (tr.) enfoncer (into, dans) - to drive a wedge : enfoncer un coin ; 4/ (tr.) actionner, entraîner
* drive back (v) (tr.) : repousser - to drive back an assault : repousser un assaut
* drive by (v) (intr.) : passer (en voiture)
* drive-by (a) : [coup de feu] tiré d’une voiture en marche - drive-by shooting : coups de feu tirés d’une voiture en marche
* drive-in (ac) (amér.) : [restaurant, cinéma] où l’on pénètre en voiture - drive-in theater (amér.) : cinéma en plein air, ciné-parc (Can.) - drive-in restaurant (amér.) : resto avec service au volant
* drivel (n) : bêtises (f pl.), idioties (f pl.), balivernes (f pl.)
* drivel (v) (intr.) : radoter
* driven (pp de to drive) : 1/ - Half of teens’ activities are driven by technology : La moitié des activités des ados sont impulsées par la technique ; 2/ (en compo., à droite) ayant pour moteur
* driver (n) : 1/ conducteur/-trice, pilote (m/f) - a driver’s license (amér.) : un permis de conduire - engine driver : conducteur de train - hit-and-run driver : chauffard coupable de délit de fuite - train driver : conducteur de train - young driver : jeune conducteur (moins de 25 ans) ; 2/ (Inf.) pilote
* driverless (a) : sans conducteur, sans pilote, automatique - driverless train : train automatique
* driving (a) : 1/ moteur/-trice - driving force : force motrice ; 2/ qui tombe avec force, battant(e) - driving rain : pluie battante
* driving (n) : conduite (d’un véhicule) - driving licence (brit.) : permis de conduire
* droll (a) (fa) : drôle (dit de façon ironique, quand on n'apprécie pas) - Oh, very droll! : Ah, que c'est drôle!
* drone (n) : 1/ ronronnement (syn. purr) - the drone of an engine : le ronronnement d'un moteur ; 2/ bourdon (l'insecte) ; 3/ drone - stealth drone : drone furtif - drone pilot : pilote de drone (syn. drone operator)
* drone (on) (v) (intr.) : parler d’une voix monotone
* drool (n) : bave (f)
* drool (v) (intr.) : baver - to drool over sb/sth : s’extasier devant qn/qch
* droop (v) (intr.) : s’affaisser
* drop (n) : 1/ chute (f) - drop curtain : (Théât.) rideau d’entracte ; 2/ diminution (f), baisse (f) ; 3/ goutte (f) - a drop in a bucket (amér.) : une goutte d’eau dans l’océan - nose drops : gouttes pour le nez - tear drop : larme (f) ; 4/ cachette (f), magasin secret, lieu sûr (pour marchandises volées, alcools clandestins ou prohibés) ; 5/ client d’un taxi ; 6/ bébé trouvé ; 7/ coup violent qui met ko ; 8/ livraison (f) - the drop is supposed to take place before three o’clock ; 9/ largage - drop zone : zone de largage ; 10/ saut en parachute - to have a drop : faire un saut
* drop (v) (intr.) : 1/ (tr.) faire chuter, faire tomber, laisser choir ; (intr.) tomber, chuter - to drop to the floor : tomber par terre ; 2/ (intr.) descendre, tomber - The curtain drops : Le rideau tombe ; 3/ (fig.) laisser tomber - to drop the subject : parler d’autre chose ; 4/ (tr.) déposer (qn) (au travail, chez lui) - to drop a passenger : déposer un voyageur (var. to drop a passenger off) ; 5/ (tr.) larguer, parachuter (depuis un avion) ; 6/ (tr.) vendre, liquider
* drop in (v) (intr.) : faire une visite rapide, entrer en passant
* droplet (n) : gouttelette (f), fine goutte (f)
* drop off (v) : 1/ (intr.) baisser - to drop off to sleep : s’endormir d’un coup ; 2/ (tr.) déposer (qn) (chez lui, au travail, etc.)
* drop-out (n) (pl. drop-outs) : élève qui abandonne ses études, décrocheur scolaire
* drop out (v) (intr.) : abandonner, laisser tomber (ses études)
* dropper (n) : 1/ compe-goutte (masc.) ; 2/ personne qui fait étalage de ses connaissances, de ses fréquentations, de ses amis - name dropper : adepte du lâcher de noms
* dropping (n) : étalage - brand-name dropping : étalage de noms de marques - name dropping : étalage de noms, lâcher de noms, bourrage de noms - title dropping : étalage de titres
* droppings (n pl.) : fiente (f)
* drop round (v) (intr.) : passer (chez qn), faire un saut (chez qn) - Drop round to my place : Faites un saut chez moi (amér. drop around)
* drop ship (v double) (tr.) : - [product] to be drop shipped : [produit] être envoyé directement par le grossiste
* drop shipment (n) : livraison directe au client (par le grossiste), expédition directe au client (sans passer par le vendeur)
* drop shipper (n) : grossiste (expédiant directement le produit commandé par un client à la place du vendeur)
* dross (n) : 1/ crasse (f), laitier ; 2/ rebut
* drought (n) : sécheresse (f) - drought preparedness : préparation au risque de sécheresse
* drought-parched (ac) : ravagé par la sécheresse
* drove (n) : 1/ horde (f), troupeau ; 2/ foule (f), multitude (f) - in droves : par milliers ; 3/ boucharde (f)
* drove (prét. de to drive)
* drove (v) (tr.) : 1/ conduire (du bétail), conduire (des troupeaux) ; 2/ boucharder
* droving (n) : conduite de troupeaux - sheep droving : conduite de moutons
* drown (v) (intr.) : se noyer
* drowsy (a) : somnolent(e)
* drudge (n) : 1/ bête de somme ; 2/ (la) bonne, (l')esclave
* drudge (v) (intr.) : besogner, trimer
* drudgery (n) : corvées (f pl.)
* drug (n) : 1/ - medical drug : produit pharmaceutique - drug maker : laboratoire pharmaceutique, labo pharmaceutique (syn. drug manufacturer) - drug repurposing : repositionnemnet de médicaments (syn. drug repositioning) ; 2/ drogue, stupéfiant - narcotic drug : drogue - drug addiction : toxicomanie (f) - the drug scene : l’univers de la drogue, le monde des drogués - drug sting : opération anti-drogue - drug supplier : fournisseur de drogue - drug trafficking : trafic de drogues ; 3/ sérum - truth drug : sérum de vérité
* drug (v) (tr.) : droguer
* druggist (n) : pharmacien(ne)
* drum (n) : 1/ cylindre, tambour, rouleau, bobine (f) ; 2/ fût, baril - oil drum : fût à pétrole ; 3/ (Mus.) tambour - drums (pl.) : a/ tambours (pl.) ; b/ batterie (f) - on drums : à la batterie - drum roll : roulement de tambour (var. drumroll)
* drummer (n) : batteur
* drumming (n) : prestation à la batterie, jeu à la batterie - bucket drumming : percussion de seaux
* drumroll (n) : voir drum roll - en incise : (drumroll please) : (roulement de tambour, s’il vous plaît)
* drunk (pp de to drink)
* drunk (a) : saoul(e) / soûl(e), ivre
* drunk (n) : 1/ ivrogne, ivrognesse (fém.) ; 2/ (arg. amér.) période d’ivresse
* drunkard (n) : ivrogne
* drunken (a) : 1/ saoul(e) / soûl(e), ivre ; 2/ d’ivrogne
* drunkenness (n) : 1/ ivresse (f), ébriété (f) ; 2/ ivrognerie (f), alcoolisme
* dry (a) : sec/-èche - dry mortar : mortier sec
* dry (v) : (tr.) sécher - to dry the dishes : sécher la vaisselle
* dryer (n) (amér.) : appareil à sécher - clothes dryer : sèche-linge, sécheuse (f) (Q) (le cintre) - hair dryer : sèche-cheveu - hand dryer : sèche-main - spin dryer : essoreuse (f)
* dry-laid (ac) : posé à sec - dry-laid bricks : briques posées à sec (pl.)
* dry up (v) : (tr.) tarir - to dry up the market : tarir le marché ; (intr.) se tarir
* DT (n) (G.-B.) (init. de design and technology : conception et fabrication (de produits industriels) (var. D&T)
* DTP (n) (init. de desktop publishing : micro-édition, édition assistée par ordinateur)
* dual (a) : double - dual citizenship : double nationalité (f)
* dual-engine (ac) : 1/ à deux moteurs, bimoteur ; 2/ à deux réacteurs - dual-engine airliner : avion de ligne à deux réacteurs
* dub (v) (tr.) : 1/ adouber ; 2/ surnommer, appeler, baptiser (au fig.) ; 3/ doubler (un film)
* dubbed (a) : 1/ adoubé ; 2/ [film] doublé
* dubbing (n) : 1/ adoubement ; 2/ doublage (de films)
* dubious (a) : 1/ douteux/-euse ; 2/ dubitatif/-ive - to be dubious about sth : avoir des doutes sur qch
* duchess (n) : duchesse (f)
* duck (n) : canard - duck breast : magret de canard - to be as tight as a duck’s arse : être on ne peut plus radin - duck fat : gras de canard
* duck (v) (tr.) : 1/ (intr.) baisser la tête - to duck under… : plonger sous… ; 2/ (tr.) se dérober à, esquiver, éluder, éviter - to duck a question : éluder une question (syn. to dodge a question)
* duck dive (v) (intr.) : plonger pour esquiver
* duckling (n) : caneton
* duct (n) : 1/ (Corps humain) canal, conduit ; 2/ (Constr.) conduit - duct tape : ruban adhésif en toile, chatterton - a piece of duct tape : un bout de ruban adhésif
* dud (a) (amér.) : 1/ [dispositif] qui ne fonctionne pas, détraqué ; 2/ (Cin.) qui est un navet - a dud movie : un navet
* dud (n) (amér.) : 1/ [ personne] zéro, nullard ; 2/ qch qui ne fonctionne pas, qch qui est détraqué ; 3/ raté ; 4/ (Cin.) navet - [film] to turn out to be a dud : [film] s’avérer un navet ; 5/ duds, pl. : voir infra
* dude (n) (amér.) : mec
* dude (up) (amér.) (tr.) : fringuer
* dudgeon (n) : irritation (f), ressentiment, rancune (f), indignation (f) - in high dudgeon : vexé et furieux/-euse, fort en colère
* duds (n pl.) (arg.) : fringues (f pl.), frusques (f pl.), nippes (f pl.), hardes (f pl.) (syn. brit. togs)
* due (a) : 1/ requis(e), voulu(e) - with due account for… : en tenant compte de… ; 2/ - to be due to + inf. : devoir (sens de prévision)
* due (n) : - dues (pl.) : droits, taxes (f pl.), redevances (f pl.) - harbour dues : droits de port
* due to (loc. prép.) (amér.) : en raison de, du fait de, à la suite de, de par
* duffel (n) : tissu de laine - duffel bag : sac de marin
* duffer (n) : 1/ cancre (syn. dunce) ; 2/ tocard, nul / nulle (n) - He is a duffer with his hands : Il ne sait rien faire de ses dix doigts
* duke (n) : duc
* dull (a) : terne
* duly (adv.) : 1/ dûment, comme il se doit, comme convenu - Duly noted! : C’est noté !, J’ai pris bonne note ! ; 2/ à l’heure, comme prévu
* dumb (a) : 1/ muet / muette - dumb waiter : monte-plat (aussi dumbwaiter) ; 2/ bête, idiot(e), stupide - dumb blonde : jolie idiote (f) - our dumb friends : nos frères inférieurs, nos amies les bêtes (f pl.)
* dumbbell (n) : haltère (aussi dumb bell)
* dumbbell-like (ac) : en forme d'haltère
* dumb down (v) (tr.) : (tr.) abaisser le niveau (intellectuel) de, niveler par le bas ; (intr.) [élève doué] éviter de briller
* dumbfound (v) (tr.) : sidérer, ahurir
* dumbification (n) : nivellement par le bas
* dumbing down (n) : nivellement par le bas
* dumbstruck (a) : muet de stupeur
* dumbwaiter (n) : monte-plat (masc.) (aussi dumb waiter)
* dummy (n) (pl. dummies) : mannequin, bonhomme en mousse
* dump (n) : 1/ dépotoir, décharge (f) - the city dump : la décharge municipale - rubbish dump : décharge à ordures ; 2/ dépôt, entrepôt - ammo dump : dépôt de munitions - weapons dump : dépôt d’armes ; 3/ (en parlant d’une petite ville, d’un village) trou perdu, trou ; 4/ (expressions) - to be down in the dumps : avoir le moral au plus bas, avoir ses humeurs noires, être déprimé, avoir le cafard, broyer du noir
* dump (v) (tr.) : 1/ décharger, déverser, rejeter - to dump untreated waste into the sea rejeter des déchets non retraités à la mer ; 2/ vider - to dump the garbage can (amér.) : vider la poubelle ; 2/ se débarrasser de
* dumper (n) : tombereau
* dumping (n) : 1/ (l’activité) dépôt (d’ordures, etc.) - the dumping of untreated hazardous chemicals : le dépôt de produits chimiques non traités - No dumping : Dépôt d’ordures interdit, Décharge interdite - dumping ground : (le lieu) dépôt d’ordures ; 2/ déversement (de liquides) - oil dumping : dégazage ; 3/ vidange (f) ; 4/ (Inf.) vidage (de la mémoire), vidage mémoire ; 5/ (Commerce) vente à bas prix (sur le marché extérieur), vente à perte, vente à prix bradés, braderie (f) ; 6/ social dumping : transfert d’industries dans des pays aux salaires inférieurs
* dumpling (n) : ravioli - meat dumpling : ravioli à la viande
* dumpster (n) (amér.) : benne (f) (à ordures) - dumpster diving : fouiller dans les bennes, faire les poubelles
* dun (a) : foncé
* dunce (n) : cancre (syn. duffer) - the Dunce and the Beauty : la belle et la bête
* dune (n) : dune (f)
* dung (n) : 1/ excrément, crotte (f) - cow dung : bouse de vache ; 2/ fumier - a pile of dung : un tas de fumier
* dungaree (n) : 1/ cotonnade grossière (f) (de l’Inde) ; 2/ - dungarees (pl.) : treillis, combinaison (f) (de mécanicien)
* dunno (fam.) (contr. de don’t / doesn’t know)
* dungeon (n) (fa) : basse-fosse (f), cachot, oubliettes (f pl.)
* duopoly (n) : duopole
* duplicate (n) : 1/ copie (f), photocopie (f) ; 2/ double, duplicata
* durability (n) : 1/ longévité (f), durée (f) ; 2/ résistance (f), solidité (f)
* durable (a) : 1/ à longue durée de vie, durable ; 2/ inaltérable, inusable, résistant(e)
* durables (n pl.) : biens durables - consumer durables : biens de consommation durables
* duration (n) : durée (f) - All lessons are of one hour’s duration : Toutes les leçons ont une durée d’une heure
* duress (n) : contrainte (f) - under duress : sous la contrainte
* during (prép.) : durant, lors de, au cours de, à l'occasion de - during cranking : lors du démarrage à la manivelle (d’un moteur) - during program execution : au cours de l'exécution des programmes - during school hours : durant les heures de cours
* duroplastic (a) : thermodurcissable
* duroplastics ( n pl.) : matières thermodurcissables (f pl.)
* dusk (n) : crépuscule
* dusky (a) : foncé
* dust (n) : poussière (f) - to bite the dust (fig.) : mordre la poussière (fig.) - speck of dust : grain de poussière - dust devil : tourbillon de poussière - dust mask : masque anti-poussière, masque à poussière
* dust (v) (tr.) 1/ épousseter, passer un chiffon sur ; 2/ saupoudrer (with, avec)
* dustbin (n) : poubelle (f) (syn. amér. garbage can)
* dustpan (n) : ramasse-poussière (masc.) - duspan and brush : ramasse-poussière et balayette
* duster (n) : chiffon à poussière
* dustup (n) (brit.) : accrochage - local dustup : querelle de clocher
* dusty (a) : poussiéreux/-euse
* Dutch (a) : néerlandais(e), hollandais(e) - Let’s go Dutch : Chacun paye sa part - the Dutch (a. subst. pl.) : les Néerlandais, les Hollandais
* Dutch (n) : néerlandais (la langue) - double Dutch : a/ (du) charabia ; b/ (du) chinois, (de l’)hébreu
* duty (n) (pl. duties) : 1/ devoir (moral) - to do one’s duty : faire son devoir ; 2/ taxe (f) - death duties : droits de succession
* duty-free (ac) : hors taxes, détaxé - duty-free items : articles détaxés - duty-free shop : boutique hors taxes
* dwarf (n) : nain, naine
* dwarf (v) (tr.) : faire paraître tout petit
* dweller (n) : habitant(e) (n) - city dweller : citadin(e) - slum dweller : habitant d’un taudis
* dwelling (n) : demeure (f) - slum dwelling : taudis
* dwindle (v) (intr.) : se réduire, diminuer, décroître
* dwindling (a) : en baisse, décroissant(e)
* dye (n) : teinture (f)
* dye (v) (prét. et pp dyed) (tr.) : teindre
* dyed-in-the-wool (ac) : bon teint, invétéré, pur et dur / pure et dure - dyed-in-the wool communist : communiste pur et dur - dyed-in-the-wool ideologue : idéologue bon teint
* dyeing (p prés. et gér. de to dye)
* dyke (n) (brit.) (aussi dike) : 1/ fossé ; 2/ digue (f) ; 3/ (Écosse) mur (champêtre) - single dyke : mur à une seule épaisseur ; 4/ gouine (f) (péj.), lesbienne (f)
* dyke (brit.) / dike (amér.) (v) (tr.) : endiguer (a river, un fleuve)
* dynamic (a) : dynamique
* dynamically (adv.) : dynamiquement, de façon dynamique, avec dynamisme
* dynast (n) : membre d’une dynastie, héritier d’une dynastie, souverain
* dynastic (a) : dynastique (f)
* dynastically (adv.) : 1/ de façon dynastique ; 2/ sur le plan dynastique
* dynasty (n) : dynastie
* dysfunction (n) : dysfonctionnement, troubles (pl.) - erectile dysfunction : dysfonctionnement érectile, troubles de l’érection
* dysfunctional (a) : 1/ dysfonctionnel(le) ; 2/ [famille] à problèmes ; 3/ [comportement] anormal(e)
* dystopia (n) : dystopie (f) - an Orwellian dystopia : une dystopie orwellienne
* dystopian (a) : dystopien(ne)
i26zqeseewidgi9u2dmrl4dlxe52igu
Mathc initiation/008b
0
84609
775686
2026-11-05T12:11:19Z
Xhungab
23827
news
775686
wikitext
text/x-wiki
[[Catégorie:Mathc initiation (livre)]]
[[Mathc initiation/000b| Sommaire]]
Installer et compiler ces fichiers dans votre répertoire de travail.
{{Fichier|c01a.c|largeur=70%|info=|icon=Crystal128-source-c.svg}}
<syntaxhighlight lang="c">
/* --------------------------------- */
/* save as c01a.c */
/* --------------------------------- */
#include "x_hfile.h"
#include "fa.h"
/* --------------------------------- */
int main(void)
{
CTRL_splot w;
w.xmin = -PI; w.xmax = +PI;
w.ymin = -1.0; w.ymax = +1.0;
tvalue p;
p.value = 0.; /* not used in this example */
p.min = -PI/2.;
p.max = +PI/2.;
p.step = .1;
G_f0ab9p_2d( w,
f,
p);
clrscrn();
printf(" The sine function is odd. \n\n"
" sin(-x) = -sin(x) \n\n\n\n");
printf(" Draw the function y = %s \n\n"
" ... load \"a_main.plt\" ... with gnuplot.\n\n\n",feq);
stop();
return 0;
}
/* --------------------------------- */
/* --------------------------------- */
</syntaxhighlight>
'''Nous pouvons observer que la surface positive dessinée entre 0 et PI/2 est l'opposée de la surface négative dessinée entre ... -PI/2 et 0. Leur somme est nulle.'''
'''Si nous utilisons une intégrale pour calculer cette surface elle sera égale à zéro.'''
'''Si cette surface est au sol et que le but est de calculer la surface pour acheter des carrelages, il faut calculer la surface entre 0 et PI/2 et la multiplier par deux.'''
'''Exemple de sortie écran :'''
<syntaxhighlight lang="C">
The sine function is odd.
sin(-x) = -sin(x)
Draw the function y = sin(x)
... load "a_main.plt" ... with gnuplot.
Press return to continue.
</syntaxhighlight>
{{AutoCat}}
3mzqu55a69pvijnpevbo1k410vv1c7s
775688
775686
2026-11-05T12:33:34Z
Xhungab
23827
775688
wikitext
text/x-wiki
[[Catégorie:Mathc initiation (livre)]]
[[Mathc initiation/000b| Sommaire]]
Installer et compiler ces fichiers dans votre répertoire de travail.
{{Fichier|c01a.c|largeur=70%|info=|icon=Crystal128-source-c.svg}}
<syntaxhighlight lang="c">
/* --------------------------------- */
/* save as c01a.c */
/* --------------------------------- */
#include "x_hfile.h"
#include "fa.h"
/* --------------------------------- */
int main(void)
{
CTRL_splot w;
w.xmin = -PI; w.xmax = +PI;
w.ymin = -1.0; w.ymax = +1.0;
tvalue p;
p.value = 0.; /* not used in this example */
p.min = -PI/2.;
p.max = +PI/2.;
p.step = .1;
G_f0ab9p_2d( w,
f,
p);
clrscrn();
printf(" The sine function is odd. \n\n"
" sin(-x) = -sin(x) \n\n\n\n");
printf(" Draw the function y = %s \n\n"
" ... load \"a_main.plt\" ... with gnuplot.\n\n\n",feq);
stop();
return 0;
}
/* --------------------------------- */
/* --------------------------------- */
</syntaxhighlight>
'''Nous pouvons observer que la surface positive dessinée entre 0 et PI/2 est l'opposée de la surface négative dessinée entre ... -PI/2 et 0. Leur somme est nulle.'''
'''Si nous utilisons une intégrale pour calculer cette surface elle sera égale à zéro.'''
'''Si cette surface est au sol et que le but est de calculer la surface pour acheter des carrelages, il faut calculer la surface entre 0 et PI/2 et la multiplier par deux.'''
[[File:La fonction sinus entre -pi et pi.png|thumb|Dessiner la fonction sinus entre -pi et pi pour montrer qu'elle est impaire]]
'''Exemple de sortie écran :'''
<syntaxhighlight lang="C">
The sine function is odd.
sin(-x) = -sin(x)
Draw the function y = sin(x)
... load "a_main.plt" ... with gnuplot.
Press return to continue.
</syntaxhighlight>
{{AutoCat}}
rskjshuxb2pt3251igywxqbxtll0lz6
775689
775688
2026-11-05T12:34:19Z
Xhungab
23827
775689
wikitext
text/x-wiki
[[Catégorie:Mathc initiation (livre)]]
[[Mathc initiation/000b| Sommaire]]
Installer et compiler ces fichiers dans votre répertoire de travail.
{{Fichier|c01a.c|largeur=70%|info=|icon=Crystal128-source-c.svg}}
<syntaxhighlight lang="c">
/* --------------------------------- */
/* save as c01a.c */
/* --------------------------------- */
#include "x_hfile.h"
#include "fa.h"
/* --------------------------------- */
int main(void)
{
CTRL_splot w;
w.xmin = -PI; w.xmax = +PI;
w.ymin = -1.0; w.ymax = +1.0;
tvalue p;
p.value = 0.; /* not used in this example */
p.min = -PI/2.;
p.max = +PI/2.;
p.step = .1;
G_f0ab9p_2d( w,
f,
p);
clrscrn();
printf(" The sine function is odd. \n\n"
" sin(-x) = -sin(x) \n\n\n\n");
printf(" Draw the function y = %s \n\n"
" ... load \"a_main.plt\" ... with gnuplot.\n\n\n",feq);
stop();
return 0;
}
/* --------------------------------- */
/* --------------------------------- */
</syntaxhighlight>
'''Nous pouvons observer que la surface positive dessinée entre 0 et PI/2 est l'opposée de la surface négative dessinée entre ... -PI/2 et 0. Leur somme est nulle.'''
'''Si nous utilisons une intégrale pour calculer cette surface elle sera égale à zéro.'''
'''Si cette surface est au sol et que le but est de calculer la surface pour acheter des carrelages, il faut calculer la surface entre 0 et PI/2 et la multiplier par deux.'''
[[File:La fonction sinus entre -pi et pi.png|thumb| ]]
'''Exemple de sortie écran :'''
<syntaxhighlight lang="C">
The sine function is odd.
sin(-x) = -sin(x)
Draw the function y = sin(x)
... load "a_main.plt" ... with gnuplot.
Press return to continue.
</syntaxhighlight>
{{AutoCat}}
n3ts9bur0q35s60xazs6i68tmoet74n
Mathc initiation/008c
0
84610
775687
2026-11-05T12:19:50Z
Xhungab
23827
news
775687
wikitext
text/x-wiki
[[Catégorie:Mathc initiation (livre)]]
[[Mathc initiation/000b| Sommaire]]
Installer et compiler ces fichiers dans votre répertoire de travail.
{{Fichier|c01a.c|largeur=70%|info=|icon=Crystal128-source-c.svg}}
<syntaxhighlight lang="c">
/* --------------------------------- */
/* save as c01b.c */
/* --------------------------------- */
#include "x_hfile.h"
#include "fb.h"
/* --------------------------------- */
int main(void)
{
CTRL_splot w;
w.xmin = -PI; w.xmax = +PI;
w.ymin = -1.0; w.ymax = +1.0;
tvalue p;
p.value = 0.; /* not used in this example */
p.min = -PI/2.;
p.max = +PI/2.;
p.step = .1;
G_f0ab9p_2d( w,
f,
p);
clrscrn();
printf(" The cosine function is even.\n\n"
" cos(-x) = cos(x) \n\n\n\n");
printf(" Draw the function y = %s \n\n"
" ... load \"a_main.plt\" ... with gnuplot.\n\n\n",feq);
stop();
return 0;
}
/* --------------------------------- */
/* --------------------------------- */
</syntaxhighlight>
'''Nous pouvons observer que la surface dessinée entre 0 et PI/2 est identique à la surface dessinée entre -PI/2 et 0.'''
'''Si nous utilisons une intégrale pour calculer la surface entre -PI/2 et PI/2 , on pourra la calculer entre 0 et PI/2 et simplement la multiplier par deux.'''
'''Exemple de sortie écran :'''
<syntaxhighlight lang="C">
The cosine function is even.
cos(-x) = cos(x)
Draw the function y = cos(x)
... load "a_main.plt" ... with gnuplot.
Press return to continue.
</syntaxhighlight>
{{AutoCat}}
iw4qqd28q0lt9b3r9cx0evn9dhm57s3
775690
775687
2026-11-05T12:35:22Z
Xhungab
23827
775690
wikitext
text/x-wiki
[[Catégorie:Mathc initiation (livre)]]
[[Mathc initiation/000b| Sommaire]]
Installer et compiler ces fichiers dans votre répertoire de travail.
{{Fichier|c01a.c|largeur=70%|info=|icon=Crystal128-source-c.svg}}
<syntaxhighlight lang="c">
/* --------------------------------- */
/* save as c01b.c */
/* --------------------------------- */
#include "x_hfile.h"
#include "fb.h"
/* --------------------------------- */
int main(void)
{
CTRL_splot w;
w.xmin = -PI; w.xmax = +PI;
w.ymin = -1.0; w.ymax = +1.0;
tvalue p;
p.value = 0.; /* not used in this example */
p.min = -PI/2.;
p.max = +PI/2.;
p.step = .1;
G_f0ab9p_2d( w,
f,
p);
clrscrn();
printf(" The cosine function is even.\n\n"
" cos(-x) = cos(x) \n\n\n\n");
printf(" Draw the function y = %s \n\n"
" ... load \"a_main.plt\" ... with gnuplot.\n\n\n",feq);
stop();
return 0;
}
/* --------------------------------- */
/* --------------------------------- */
</syntaxhighlight>
'''Nous pouvons observer que la surface dessinée entre 0 et PI/2 est identique à la surface dessinée entre -PI/2 et 0.'''
'''Si nous utilisons une intégrale pour calculer la surface entre -PI/2 et PI/2 , on pourra la calculer entre 0 et PI/2 et simplement la multiplier par deux.'''
[[File:La fonction cosinus entre -pi et pi.png|thumb|Dessiner la fonction cosinus entre -pi et pi pour montrer qu'elle est paire]]
'''Exemple de sortie écran :'''
<syntaxhighlight lang="C">
The cosine function is even.
cos(-x) = cos(x)
Draw the function y = cos(x)
... load "a_main.plt" ... with gnuplot.
Press return to continue.
</syntaxhighlight>
{{AutoCat}}
qxjewj86nv3y7tzrilh5dv0pb40fo6q
775691
775690
2026-11-05T12:35:50Z
Xhungab
23827
775691
wikitext
text/x-wiki
[[Catégorie:Mathc initiation (livre)]]
[[Mathc initiation/000b| Sommaire]]
Installer et compiler ces fichiers dans votre répertoire de travail.
{{Fichier|c01a.c|largeur=70%|info=|icon=Crystal128-source-c.svg}}
<syntaxhighlight lang="c">
/* --------------------------------- */
/* save as c01b.c */
/* --------------------------------- */
#include "x_hfile.h"
#include "fb.h"
/* --------------------------------- */
int main(void)
{
CTRL_splot w;
w.xmin = -PI; w.xmax = +PI;
w.ymin = -1.0; w.ymax = +1.0;
tvalue p;
p.value = 0.; /* not used in this example */
p.min = -PI/2.;
p.max = +PI/2.;
p.step = .1;
G_f0ab9p_2d( w,
f,
p);
clrscrn();
printf(" The cosine function is even.\n\n"
" cos(-x) = cos(x) \n\n\n\n");
printf(" Draw the function y = %s \n\n"
" ... load \"a_main.plt\" ... with gnuplot.\n\n\n",feq);
stop();
return 0;
}
/* --------------------------------- */
/* --------------------------------- */
</syntaxhighlight>
'''Nous pouvons observer que la surface dessinée entre 0 et PI/2 est identique à la surface dessinée entre -PI/2 et 0.'''
'''Si nous utilisons une intégrale pour calculer la surface entre -PI/2 et PI/2 , on pourra la calculer entre 0 et PI/2 et simplement la multiplier par deux.'''
[[File:La fonction cosinus entre -pi et pi.png|thumb|]]
'''Exemple de sortie écran :'''
<syntaxhighlight lang="C">
The cosine function is even.
cos(-x) = cos(x)
Draw the function y = cos(x)
... load "a_main.plt" ... with gnuplot.
Press return to continue.
</syntaxhighlight>
{{AutoCat}}
l7txx4ulz3aickx2idroc71cscneelb