Wikilivres frwikibooks https://fr.wikibooks.org/wiki/Accueil MediaWiki 1.47.0-wmf.24 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 Introduction à LilyPond/Notation spécifique à certains instruments 0 11457 775578 760076 2026-10-23T11:14:02Z Cdang 1202 /* Vents */ 775578 wikitext text/x-wiki <noinclude>{{lilypond}}</noinclude> <div style="font-size: 170%; margin: 1em 0 0 0; border-bottom: 1px solid #aaa; padding: 0.2em 0;">9. Notation spécifique à certains instruments</div> == Instruments à corde == Avec un instrument à corde, il est possible de laisser sonner une note pendant que l'on joue la suivante. Pour cela, on ajoute la commande <code><span id="lassezvibrer1">\laissezVibrer</span></code> après la note. == Vents == Pour indiquer une respiration (avec une apostrophe), on utilise la commande <code>\breathe</code>. On peut indiquer les doigtés, les tablatures, avec la commande <code>\woodwind-diagram</code> (depuis la v2.13) ; celle-ci est alors dans un environnement <code>\markup</code>. Voir {{lien web |url=https://lilypond.org/doc/v2.26/Documentation/notation/woodwind-diagrams |titre=Diagrammes pour bois |site=LilyPond |consulté le=2026-10-23}}. == Piano == La partie de <span id="piano_instrument1">piano</span> se compose de <span id="portees_groupees2">deux portées</span>, une en clef de sol (en haut) et une en clef de fa. Les deux portées, créées comme à l'habitude par <code>\new Staff</code>, sont introduites la commande <code>\new <span id="pianostaff1">PianoStaff</span></code> : les deux portées sont alors reliées par une accolades, et l'on n'indique le chiffrage de la mesure que pour la première portée (par contre, les altérations à la clef doivent être indiquées pour chaque portée). ; Exemple <span style="color: #AA0000;">\new PianoStaff <<</span> <span style="color: #00AA00;">\new Staff \relative c' {</span> \key g \major \time 3/4 c4 e g <span style="color: #00AA00;">}</span> <span style="color: #00AA00;">\new Staff \relative c {</span> \clef bass \key g \major \repeat "unfold" 3 { \times 2/3 { c8[ e g] } } <span style="color: #00AA00;">}</span> <span style="color: #AA0000;">>></span> Si l'on n'a qu'une seule mélodie, on peut aussi laisser LilyPond placer les notes sur la portée du haut ou du bas : les notes plus aiguës que le do médium sont placées en haut, et les notes plus graves en bas. On n'a plus donc qu'une seule voix. Pour cela, on utilise la commande <code><span id="autochange1">\autochange</span></code>. ; Exemple <span style="color: #AA0000;">\new PianoStaff</span> <span style="color: #00AA00;">\autochange \relative c {</span> c4 e g c e g <span style="color: #00AA00;">}</span> Pour indiquer les actions sur les <span id="pedal1">pédales</span>, on met les commandes suivantes après la note à laquelle on effectue l'action : * <code><span id="sustain1">\sustainOn</span></code> : on appuie sur la pédale forte (celle qui prolonge le son) ; * <code>\sustainOff</code> : on relâche la pédale forte ; * <code><span id="unacorda1">\unaCorda</span></code> : on appuie sur la pédale douce ; * <code><span id="trecorde1">\treCorde</span></code> : on relâche la pédale douce ; * <code><span id="sostenuto1">\sostenutoOn</span></code> : on appuie sur la pédale de soutien ; * <code>\sostenutoOff</code> : on relâche la pédale de soutien. Par défaut, l'appuie sur la pédale forte est indiqué par la mention « Ped. » en écriture cursive, et le relâchement est indiqué par une étoile. On peut remplacer ceci par un crochet placé sous les notes à laisser sonner, en indiquant la commande : : <code>\set Staff.pedalSustainStyle = #'bracket</code> On peut indiquer la mention « Ped. » et mettre des crochets avec la commande : : <code>\set Staff.pedalSustainStyle = #'mixed</code> == Guitare == <span id="guitare1"> </span> === Notation classique === Habituellement, on utilise la clef de sol une octave en dessous de son niveau normal ; on utilise donc <code>\clef "G_8"</code>. Pour entrer le doigté utilisé, on peut utiliser les indications habituelles (cf. ''[[Introduction à LilyPond/Une ligne mélodique complète#Indications supplémentaires|Une ligne mélodique complète > Indications supplémentaires]]''). Dans le cas d'un accord, on peut indiquer le <span id="numero_corde1">numéro de corde</span>, on ajoute simplement le numéro de la corde précédé d'une barre de fraction inversée : * <code>\1</code> pour la ''mi'' aigu ; * <code>\2</code> pour la ''si'' ; * <code>\3</code> pour la ''sol'' ; * <code>\4</code> pour la ''ré'' ; * <code>\5</code> pour la ''la'' ; * <code>\6</code> pour la ''mi'' grave. On utilise les mêmes conventions pour les autres instruments de la famille, comme le banjo ou la guitare basse. Notons que comme pour la guitare, on écrit les notes une octave au dessus de leur hauteur réelle avec la guitare basse ; on utilise donc <code>\clef "F_8"</code>. === Tablature === Pour mettre des <span id="tablature1">tablatures</span>, on crée une portée spécifique avec la commande <code>\new <span id="tabstaff1">TabStaff</span></code>. La corde est indiquée comme ci-dessus, et la frette est déterminée automatiquement. Au lieu d'indiquer la corde, on peut indiquer la position, c'est-à-dire la frette sous l'index (la frette plus basse jouée). Pour cela, on définit la variable <code>\set TabStaff.minimumFret = #''n°_de_frette''</code> ; il est alors inutile d'indiquer le numéro de corde après. ; Exemple : gamme pentatonique de ''la'' mineur avec indication des cordes <span style="color: #AA0000;">gammeLaMinPenta = {</span> a8\6[ c\6 d\5 e\5] g\4[ a\4 c\3 d\3] e\2[ g\2 a\1 c\1] c\1[ a\1 g\2 e\2] d\3[ c\3 a\4 g\4] e\5[ d\5 c\6 a\6] <span style="color: #AA0000;">}</span> <span style="color: #AA0000;"><<</span> <span style="color: #00AA00;">\new Staff \relative c {</span> \clef "G_8" \gammeLaMinPenta \bar "|" <span style="color: #00AA00;">}</span> <span style="color: #00AA00;">\new TabStaff \relative c {</span> \gammeLaMinPenta \bar "|" <span style="color: #00AA00;">}</span> <span style="color: #AA0000;">>></span> : gamme pentatonique de ''la'' mineur avec indication de la position <span style="color: #AA0000;">gammeLaMinPenta = {</span> a8[ c d e] g[ a c d] e[ g a c] c[ a g e] d[ c a g] e[ d c a] <span style="color: #AA0000;">}</span> <span style="color: #AA0000;"><<</span> <span style="color: #00AA00;">\new Staff \relative c {</span> \clef "G_8" \gammeLaMinPenta \bar "|" <span style="color: #00AA00;">}</span> <span style="color: #00AA00;">\new TabStaff \relative c {</span> \set TabStaff.minimumFret = #5 \gammeLaMinPenta \bar "|" <span style="color: #00AA00;">}</span> <span style="color: #AA0000;">>></span> : les deux donnent le même résultat : : [[Image:Guitare exemple tablature la mineur pentatonique.png]] Si l'on écrit en parallèle la musique sur une <span id="portees_groupees3">portée</span> et sur une tablature, on peut mettre en évidence l'association des deux en les plaçant dans un groupe de portées (<code>\new StaffGroup</code>), notamment lorsque d'autres voix sont portées sur la partition. Si l'on change l'accordage de la guitare (par exemple jeu en accordage « à vide », ''« open chords »''), il faut indiquer la note à vide de chaque corde. Cela s'indique sous la forme d'un entier positif ou négatif qui correspond au nombre de demi-tons par rapport au do médium. Par exemple, pour un accordage ouvert en ré ''(D open tuning)'', les cordes suivant la progression ré-la-ré-fa♯-la-ré (DADF♯AD) : <span style="color: #AA0000;">\new TabStaff <<</span> \set TabStaff.stringTunings = #'(+2 -3 -6 -10 -15 -22) <span style="color: #00AA00;">{</span> ''musique'' <span style="color: #00AA00;">}</span> <span style="color: #AA0000;">>></span> Il existe aussi des modes prédéfinis, par exemple \set TabStaff.stringTunings = #guitar-open-d-tuning On utilise aussi cette technique pour créer les tablatures d'une <span id="basse1">guitare basse</span>, mais Lilypond dispose d'un mode prédéfini : \set TabStaff.stringTunings = #bass-tuning En guise de référence, voici les accordages habituels de la guitare et de la basse : : guitare : <code>(+4 -1 -5 -10 -15 -20)</code> ; : basse : <code>(-17 -22 -27 -32)</code>. === Diagramme d'accord === On peut placer un <span id="diagramme_d_accord1">diagramme</span> d'<span id="accord2">accord</span>. C'est une chaîne de caractère <code><span id="markup5">\markup</span></code> placée au-dessus de la <span id="portee7">portée</span>, donc avec l'accent circonflexe « <code>^</code> ». Ce diagramme est introduit par <code><span id="fret_diagram1">\fret-diagram-terse</span> #"''diagramme''"</code> et est une succession de codes séparés par un point virgule ; le code peut être : * <code>x</code> (petit X) : la corde n'est pas jouée ; * <code>o</code> (petit O) : la corde est jouée à vide ; * un numéro : la frette correspondante. L'ordre des cordes est de la plus grave à la plus aiguë (de gauche à droite sur le diagramme). ; Exemple : accord de ré majeur d'4^\markup \fret-diagram-terse #"x;x;o;2;3;2;" ; Exemple : accord de la mineur <span style="color: #AA0000;"><<</span> <span style="color: #00AA00;">\new Staff {</span> \clef "G_8" <span style="color: #0000AA;"><</span>e, a, e a c' e'<span style="color: #0000AA;">></span>1^\markup \fret-diagram-terse #"o;o;2;2;1;o;" \bar "|" <span style="color: #00AA00;">}</span> <span style="color: #00AA00;">\new TabStaff {</span> <span style="color: #0000AA;"><</span>e, a, e a c' e'<span style="color: #0000AA;">></span>1 \bar "|" <span style="color: #00AA00;">}</span> <span style="color: #AA0000;">>></span> : [[Image:Accord guitare 3 notations la mineur.png]] Pour faire un <span id="barre_1">barré</span>, il faut : * pour la première corde concernée, que la frette soit suivie d'un tiret puis d'une parenthèse ouvrante, avant le point-virgule ; * pour la dernière corde concernée, que la frette soit suivie d'un tiret puis d'une parenthèse fermante, avant le point-virgule. ; Exemple : accord de sol majeur en barré sur la troisième case \relative c' { g ^\markup \fret-diagram-terse #"<span style="color: #AA0000;">3-(;</span>5;5;4;3;<span style="color: #AA0000;">3-);</span>" } On peut faire figurer plusieurs doigtés sur une même corde (par exemple pour indiquer deux accords proches avec un seul diagramme, ou encore une alternative à un accord). Pour cela, il suffit de mettre les indications de frette séparées par un espace, avant le point-virgule qui conclut la corde. Si l'on utilise <code>\fret-diagram #"''diagramme''"</code> à la place, il faut indiquer le numéro de corde devant, le mi grave étant la corde 6 et le mi aigu la corde 1. Le diagramme est une succession de <code>''n° de corde''-''frette'';</code>. Dans ce cas-là, le barré n'est pas figuré par un trait. ; Exemple \relative c' { d4^\markup \fret-diagram #"6-x;5-x;4-o;3-2;2-3;1-2;" g ^\markup \fret-diagram #"<span style="color: #AA0000;">6-3-(;</span>5-5;4-5;3-4;2-3;<span style="color: #AA0000;">1-3-);</span>" } === Autres notations === Les notes étouffées se notent avec un croix. Pour ce faire, on introduit le passage par <code>\override NoteHead #'style = #'cross</code> et on le termine par <code>\revert NoteHead #'style</code>. == Chant == Nous avons déjà vu comment faire figurer des paroles (voir ''[[Introduction à LilyPond/Partition de chant et grille d'accords#Paroles|Partition de chant et grille d'accords > Paroles]]''). Il existe d'autres manières de faire, qui donnent des possibilités supplémentaires. Par ailleurs, pour être aussi rigoureux que les portées, les paroles devraient être introduites par <code>\new Lyrics</code>. Les voix chantées peuvent être regroupées dans un ensemble <code>\new ChoirStaff <<…>></code>. Si les paroles sont trop resserrées, on peut augmenter l'espacement avec <code>\override Lyrics.LyricSpace #'minimum-distance = #''valeur''</code>, par exemple <code>\override Lyrics.LyricSpace #'minimum-distance = #''valeur''</code>. Cette commande prend effet pour les paroles qui suivent. On peut le généraliser en le mettant dans le bloc <code>\layout</code> (voir ''[[Introduction à LilyPond/Mise en forme d'une partition|Mise en forme d'une partition]]''. === Mode <code>\lyricmode</code> === Si l'on utilise le mode <span id="lyricmode1"><code>\lyricmode</code></span>, il est possible d'indiquer la durée de chaque syllabe ; si la durée est omise, LyliPond la détermine de manière automatique comme avec <code>\addlyrics</code>. ; Exemple <span style="color: #AA0000;">\score {</span> <span style="color: #00AA00;"><<</span> <span style="color: #0000AA;">\new Staff \relative c' {</span> \clef treble \time 4/4 \tempo 4=80 c8 c c d e4 d <span style="color: #0000AA;">}</span> <span style="color: #0000AA;">\new Lyrics \lyricmode {</span> \set stanza = "1. " Au8 clair de la Lu-4 ne <span style="color: #0000AA;">}</span> <span style="color: #00AA00;">>></span> <span style="color: #AA0000;">}</span> Ce mode permet de placer des paroles dans une variable. === Mode <code>\lyricsto</code> === Le mode <span id="lyricsto1"><code>\lyricsto</code></span> permet de travailler avec des portées ayant plusieurs voix. En effet, si l'on donne un nom à une voix, on peut alors associer explicitement les paroles à une voix. ; Exemple <span style="color: #AA0000;">\score {</span> <span style="color: #00AA00;"><<</span> <span style="color: #0000AA;">\new Staff \relative c' {</span> \clef treble \time 4/4 <span style="color: #AAAA00;"><<</span> <span style="color: #AA00AA;">\new Voice = "voixUn" \relative c' {</span> e4 f g2 <span style="color: #AA00AA;">}</span> \\ <span style="color: #AA00AA;">\new Voice = "voixDeux" \relative c' {</span> c4 d e c <span style="color: #AA00AA;">}</span> <span style="color: #AAAA00;">>></span> <span style="color: #0000AA;">}</span> <span style="color: #0000AA;">\new Lyrics \lyricsto "voixUn" {</span> dor -- mez vous <span style="color: #0000AA;">}</span> <span style="color: #0000AA;">\new Lyrics \lyricsto "voixDeux" {</span> frè -- re Jac -- ques <span style="color: #0000AA;">}</span> <span style="color: #00AA00;">>></span> <span style="color: #AA0000;">}</span> Dans ce mode, le placement des syllabes est déterminé de manière automatique, comme avec <code>\addlyrics</code>. Par ailleurs, lorsque des notes sont liées par un ''legato'', cela est automatiquement considéré comme un <span id="melisme2">mélisme</span>. Pour qu'un groupe non lié soit considéré comme un mélisme, il faut placer <code>\melisma</code> ''après'' la première note et <code>\melismaEnd</code> après la dernière note du groupe. == Instruments transpositeurs == Dans le cas d'un instrument transpositeur, comme une clarinette ou une trompette en ''si'' ♭, on écrit la hauteur des notes que doit lire l'instrumentiste. Si l'on veut générer un fichier midi, on indique à LilyPond qu'il faut décaler les notes par l'instruction : \transposition bes Voir l'exemple dans ''[[../Association de plusieurs voix#Voix_sur_plusieurs_portées_différentes|Association de plusieurs voix &gt; Voix sur plusieurs portées différentes]]''. == Batterie == Pour entrer une partie de batterie, on utilise la commande <code>\drums</code> à la place de <code>\new Staff</code>. À la place des noms des notes, on utilise les noms des accessoires (en anglais), ou bien leur abréviation. Les durées sont indiquées comme à l'habitude. Par exemple, pour un coup de grosse caisse sonnant durant une noire, on peut entrer <code>bassdrum4</code> ou bien <code>bd4</code>. ; Exemple <span style="color: #AA0000;"><<</span> <span style="color: #00AA00;">\new StaffGroup { <<</span> <span style="color: #0000AA;">\new Staff \relative c, {</span> \clef "F_8" \partial 8 d16 c a4 a a r8. a16 a8 a c a16 d~ d2 <span style="color: #0000AA;">}</span> <span style="color: #0000AA;">\new TabStaff \relative c, {</span> \set TabStaff.stringTunings = #bass-tuning \partial 8 d16 c a4 a a r8. a16 a8 a c a16 d~ d2 <span style="color: #0000AA;">}</span> <span style="color: #00AA00;">>>}</span> <span style="color: #00AA00;">\drums {</span> \partial 8 r8 <span style="color: #0000AA;"><<</span> <span style="color: #555500;">{</span> \repeat "unfold" 2 {hhc8 hhc hhc hhc hhc hhc hhc hho} <span style="color: #555500;">}</span> <span style="color: #555500;">{</span> \repeat "unfold" 2 {bd4 sn bd sn} <span style="color: #555500;">}</span> <span style="color: #0000AA;">>></span> <span style="color: #00AA00;">}</span> <span style="color: #AA0000;">>></span> : donne : [[Image:Ly intro queen another one bites the dust.png|500px]] : [[Média:Ly intro queen another one bites the dust.mid|écouter l'extrait]] {| border="1" |+ Nom et abréviations des accessoires |- ! Accessoire !! Nom LilyPond !! Abréviation |- | frappe de baguettes || <code>sidestick</code> || <code>ss</code> |- | grosse caisse || <code>bassdrum</code> || <code>bd</code> |- | caisse claire || <code>snare</code> || <code>sn</code> |- | tom aigu || <code>hightom</code> || <code>tomh</code> |- | tom moyen aigu || <code>himidtom</code> || <code>tommh</code> |- | tom moyen grave || <code>lowmidtom</code> || <code>tomml</code> |- | tom grave || <code>lowtom</code> || <code>toml</code> |- | charleston || <code>hihat</code> || <code>hh</code> |- | charleston ouvert || <code>hihatopen</code> || <code>hho</code> |- | charleston semi-ouvert || <code>halfopenhihat</code> || <code>hhho</code> |- | charleston fermé || <code>closedhihat</code> || <code>hhc</code> |- | pédale de charleston || <code>pedalhihat</code> || <code>hhp</code> |- | crash || <code>crashcymbal</code> || <code>cymc</code> |- | splash || <code>splashcymbal</code> || <code>cyms</code> |- | ride || <code>ridecymbal</code> || <code>cymr</code> |- | cloche du ride || <code>ridebell</code> || <code>rb</code> |- | frappe de main || <code>handclap</code> || <code>hc</code> |} La liste des accessoires se trouve dans le fichier <code>drumpitch-init.LY</code> situé dans un dossier <code>ly</code> (par exemple <code>LiLypond\ usr\ share\ lilypond\ current\ ly\</code>). == Notes == <references /> == Voir aussi == ; Dans Wikipédia ---- ''[[Introduction à LilyPond/Gestion de partitions volumineuses|Gestion de partitions volumineuses]]'' &lt; [[Introduction à LilyPond|↑]] &gt; ''[[Introduction à LilyPond/Mise en forme d'une partition|Mise en forme d'une partition]]'' {{AutoCat}} alckqabdumcrwrd14utlwow9jzlabe2 775579 775578 2026-10-23T11:30:04Z Cdang 1202 /* Vents */ exemple 775579 wikitext text/x-wiki <noinclude>{{lilypond}}</noinclude> <div style="font-size: 170%; margin: 1em 0 0 0; border-bottom: 1px solid #aaa; padding: 0.2em 0;">9. Notation spécifique à certains instruments</div> == Instruments à corde == Avec un instrument à corde, il est possible de laisser sonner une note pendant que l'on joue la suivante. Pour cela, on ajoute la commande <code><span id="lassezvibrer1">\laissezVibrer</span></code> après la note. == Vents == Pour indiquer une respiration (avec une apostrophe), on utilise la commande <code>\breathe</code>. On peut indiquer les doigtés, les tablatures, avec la commande <code>\woodwind-diagram</code> (depuis la v2.13) ; celle-ci est alors dans un environnement <code>\markup</code>. Par exemple : [[Fichier:Exemple tablature hautbois lilypond do.svg|vignette|redresse=0.5|Doigté du ''do'' aigu au hautbois.]] <syntaxhighlight lang="lilypond"> \score { \relative c''{ c1^\markup{\woodwind-diagram #'oboe #'( (lh . ()) (cc . (one four)) (rh . ()) ) } } \layout {} \midi {} } </syntaxhighlight> Voir {{lien web |url=https://lilypond.org/doc/v2.26/Documentation/notation/woodwind-diagrams |titre=Diagrammes pour bois |site=LilyPond |consulté le=2026-10-23}}. == Piano == La partie de <span id="piano_instrument1">piano</span> se compose de <span id="portees_groupees2">deux portées</span>, une en clef de sol (en haut) et une en clef de fa. Les deux portées, créées comme à l'habitude par <code>\new Staff</code>, sont introduites la commande <code>\new <span id="pianostaff1">PianoStaff</span></code> : les deux portées sont alors reliées par une accolades, et l'on n'indique le chiffrage de la mesure que pour la première portée (par contre, les altérations à la clef doivent être indiquées pour chaque portée). ; Exemple <span style="color: #AA0000;">\new PianoStaff <<</span> <span style="color: #00AA00;">\new Staff \relative c' {</span> \key g \major \time 3/4 c4 e g <span style="color: #00AA00;">}</span> <span style="color: #00AA00;">\new Staff \relative c {</span> \clef bass \key g \major \repeat "unfold" 3 { \times 2/3 { c8[ e g] } } <span style="color: #00AA00;">}</span> <span style="color: #AA0000;">>></span> Si l'on n'a qu'une seule mélodie, on peut aussi laisser LilyPond placer les notes sur la portée du haut ou du bas : les notes plus aiguës que le do médium sont placées en haut, et les notes plus graves en bas. On n'a plus donc qu'une seule voix. Pour cela, on utilise la commande <code><span id="autochange1">\autochange</span></code>. ; Exemple <span style="color: #AA0000;">\new PianoStaff</span> <span style="color: #00AA00;">\autochange \relative c {</span> c4 e g c e g <span style="color: #00AA00;">}</span> Pour indiquer les actions sur les <span id="pedal1">pédales</span>, on met les commandes suivantes après la note à laquelle on effectue l'action : * <code><span id="sustain1">\sustainOn</span></code> : on appuie sur la pédale forte (celle qui prolonge le son) ; * <code>\sustainOff</code> : on relâche la pédale forte ; * <code><span id="unacorda1">\unaCorda</span></code> : on appuie sur la pédale douce ; * <code><span id="trecorde1">\treCorde</span></code> : on relâche la pédale douce ; * <code><span id="sostenuto1">\sostenutoOn</span></code> : on appuie sur la pédale de soutien ; * <code>\sostenutoOff</code> : on relâche la pédale de soutien. Par défaut, l'appuie sur la pédale forte est indiqué par la mention « Ped. » en écriture cursive, et le relâchement est indiqué par une étoile. On peut remplacer ceci par un crochet placé sous les notes à laisser sonner, en indiquant la commande : : <code>\set Staff.pedalSustainStyle = #'bracket</code> On peut indiquer la mention « Ped. » et mettre des crochets avec la commande : : <code>\set Staff.pedalSustainStyle = #'mixed</code> == Guitare == <span id="guitare1"> </span> === Notation classique === Habituellement, on utilise la clef de sol une octave en dessous de son niveau normal ; on utilise donc <code>\clef "G_8"</code>. Pour entrer le doigté utilisé, on peut utiliser les indications habituelles (cf. ''[[Introduction à LilyPond/Une ligne mélodique complète#Indications supplémentaires|Une ligne mélodique complète > Indications supplémentaires]]''). Dans le cas d'un accord, on peut indiquer le <span id="numero_corde1">numéro de corde</span>, on ajoute simplement le numéro de la corde précédé d'une barre de fraction inversée : * <code>\1</code> pour la ''mi'' aigu ; * <code>\2</code> pour la ''si'' ; * <code>\3</code> pour la ''sol'' ; * <code>\4</code> pour la ''ré'' ; * <code>\5</code> pour la ''la'' ; * <code>\6</code> pour la ''mi'' grave. On utilise les mêmes conventions pour les autres instruments de la famille, comme le banjo ou la guitare basse. Notons que comme pour la guitare, on écrit les notes une octave au dessus de leur hauteur réelle avec la guitare basse ; on utilise donc <code>\clef "F_8"</code>. === Tablature === Pour mettre des <span id="tablature1">tablatures</span>, on crée une portée spécifique avec la commande <code>\new <span id="tabstaff1">TabStaff</span></code>. La corde est indiquée comme ci-dessus, et la frette est déterminée automatiquement. Au lieu d'indiquer la corde, on peut indiquer la position, c'est-à-dire la frette sous l'index (la frette plus basse jouée). Pour cela, on définit la variable <code>\set TabStaff.minimumFret = #''n°_de_frette''</code> ; il est alors inutile d'indiquer le numéro de corde après. ; Exemple : gamme pentatonique de ''la'' mineur avec indication des cordes <span style="color: #AA0000;">gammeLaMinPenta = {</span> a8\6[ c\6 d\5 e\5] g\4[ a\4 c\3 d\3] e\2[ g\2 a\1 c\1] c\1[ a\1 g\2 e\2] d\3[ c\3 a\4 g\4] e\5[ d\5 c\6 a\6] <span style="color: #AA0000;">}</span> <span style="color: #AA0000;"><<</span> <span style="color: #00AA00;">\new Staff \relative c {</span> \clef "G_8" \gammeLaMinPenta \bar "|" <span style="color: #00AA00;">}</span> <span style="color: #00AA00;">\new TabStaff \relative c {</span> \gammeLaMinPenta \bar "|" <span style="color: #00AA00;">}</span> <span style="color: #AA0000;">>></span> : gamme pentatonique de ''la'' mineur avec indication de la position <span style="color: #AA0000;">gammeLaMinPenta = {</span> a8[ c d e] g[ a c d] e[ g a c] c[ a g e] d[ c a g] e[ d c a] <span style="color: #AA0000;">}</span> <span style="color: #AA0000;"><<</span> <span style="color: #00AA00;">\new Staff \relative c {</span> \clef "G_8" \gammeLaMinPenta \bar "|" <span style="color: #00AA00;">}</span> <span style="color: #00AA00;">\new TabStaff \relative c {</span> \set TabStaff.minimumFret = #5 \gammeLaMinPenta \bar "|" <span style="color: #00AA00;">}</span> <span style="color: #AA0000;">>></span> : les deux donnent le même résultat : : [[Image:Guitare exemple tablature la mineur pentatonique.png]] Si l'on écrit en parallèle la musique sur une <span id="portees_groupees3">portée</span> et sur une tablature, on peut mettre en évidence l'association des deux en les plaçant dans un groupe de portées (<code>\new StaffGroup</code>), notamment lorsque d'autres voix sont portées sur la partition. Si l'on change l'accordage de la guitare (par exemple jeu en accordage « à vide », ''« open chords »''), il faut indiquer la note à vide de chaque corde. Cela s'indique sous la forme d'un entier positif ou négatif qui correspond au nombre de demi-tons par rapport au do médium. Par exemple, pour un accordage ouvert en ré ''(D open tuning)'', les cordes suivant la progression ré-la-ré-fa♯-la-ré (DADF♯AD) : <span style="color: #AA0000;">\new TabStaff <<</span> \set TabStaff.stringTunings = #'(+2 -3 -6 -10 -15 -22) <span style="color: #00AA00;">{</span> ''musique'' <span style="color: #00AA00;">}</span> <span style="color: #AA0000;">>></span> Il existe aussi des modes prédéfinis, par exemple \set TabStaff.stringTunings = #guitar-open-d-tuning On utilise aussi cette technique pour créer les tablatures d'une <span id="basse1">guitare basse</span>, mais Lilypond dispose d'un mode prédéfini : \set TabStaff.stringTunings = #bass-tuning En guise de référence, voici les accordages habituels de la guitare et de la basse : : guitare : <code>(+4 -1 -5 -10 -15 -20)</code> ; : basse : <code>(-17 -22 -27 -32)</code>. === Diagramme d'accord === On peut placer un <span id="diagramme_d_accord1">diagramme</span> d'<span id="accord2">accord</span>. C'est une chaîne de caractère <code><span id="markup5">\markup</span></code> placée au-dessus de la <span id="portee7">portée</span>, donc avec l'accent circonflexe « <code>^</code> ». Ce diagramme est introduit par <code><span id="fret_diagram1">\fret-diagram-terse</span> #"''diagramme''"</code> et est une succession de codes séparés par un point virgule ; le code peut être : * <code>x</code> (petit X) : la corde n'est pas jouée ; * <code>o</code> (petit O) : la corde est jouée à vide ; * un numéro : la frette correspondante. L'ordre des cordes est de la plus grave à la plus aiguë (de gauche à droite sur le diagramme). ; Exemple : accord de ré majeur d'4^\markup \fret-diagram-terse #"x;x;o;2;3;2;" ; Exemple : accord de la mineur <span style="color: #AA0000;"><<</span> <span style="color: #00AA00;">\new Staff {</span> \clef "G_8" <span style="color: #0000AA;"><</span>e, a, e a c' e'<span style="color: #0000AA;">></span>1^\markup \fret-diagram-terse #"o;o;2;2;1;o;" \bar "|" <span style="color: #00AA00;">}</span> <span style="color: #00AA00;">\new TabStaff {</span> <span style="color: #0000AA;"><</span>e, a, e a c' e'<span style="color: #0000AA;">></span>1 \bar "|" <span style="color: #00AA00;">}</span> <span style="color: #AA0000;">>></span> : [[Image:Accord guitare 3 notations la mineur.png]] Pour faire un <span id="barre_1">barré</span>, il faut : * pour la première corde concernée, que la frette soit suivie d'un tiret puis d'une parenthèse ouvrante, avant le point-virgule ; * pour la dernière corde concernée, que la frette soit suivie d'un tiret puis d'une parenthèse fermante, avant le point-virgule. ; Exemple : accord de sol majeur en barré sur la troisième case \relative c' { g ^\markup \fret-diagram-terse #"<span style="color: #AA0000;">3-(;</span>5;5;4;3;<span style="color: #AA0000;">3-);</span>" } On peut faire figurer plusieurs doigtés sur une même corde (par exemple pour indiquer deux accords proches avec un seul diagramme, ou encore une alternative à un accord). Pour cela, il suffit de mettre les indications de frette séparées par un espace, avant le point-virgule qui conclut la corde. Si l'on utilise <code>\fret-diagram #"''diagramme''"</code> à la place, il faut indiquer le numéro de corde devant, le mi grave étant la corde 6 et le mi aigu la corde 1. Le diagramme est une succession de <code>''n° de corde''-''frette'';</code>. Dans ce cas-là, le barré n'est pas figuré par un trait. ; Exemple \relative c' { d4^\markup \fret-diagram #"6-x;5-x;4-o;3-2;2-3;1-2;" g ^\markup \fret-diagram #"<span style="color: #AA0000;">6-3-(;</span>5-5;4-5;3-4;2-3;<span style="color: #AA0000;">1-3-);</span>" } === Autres notations === Les notes étouffées se notent avec un croix. Pour ce faire, on introduit le passage par <code>\override NoteHead #'style = #'cross</code> et on le termine par <code>\revert NoteHead #'style</code>. == Chant == Nous avons déjà vu comment faire figurer des paroles (voir ''[[Introduction à LilyPond/Partition de chant et grille d'accords#Paroles|Partition de chant et grille d'accords > Paroles]]''). Il existe d'autres manières de faire, qui donnent des possibilités supplémentaires. Par ailleurs, pour être aussi rigoureux que les portées, les paroles devraient être introduites par <code>\new Lyrics</code>. Les voix chantées peuvent être regroupées dans un ensemble <code>\new ChoirStaff <<…>></code>. Si les paroles sont trop resserrées, on peut augmenter l'espacement avec <code>\override Lyrics.LyricSpace #'minimum-distance = #''valeur''</code>, par exemple <code>\override Lyrics.LyricSpace #'minimum-distance = #''valeur''</code>. Cette commande prend effet pour les paroles qui suivent. On peut le généraliser en le mettant dans le bloc <code>\layout</code> (voir ''[[Introduction à LilyPond/Mise en forme d'une partition|Mise en forme d'une partition]]''. === Mode <code>\lyricmode</code> === Si l'on utilise le mode <span id="lyricmode1"><code>\lyricmode</code></span>, il est possible d'indiquer la durée de chaque syllabe ; si la durée est omise, LyliPond la détermine de manière automatique comme avec <code>\addlyrics</code>. ; Exemple <span style="color: #AA0000;">\score {</span> <span style="color: #00AA00;"><<</span> <span style="color: #0000AA;">\new Staff \relative c' {</span> \clef treble \time 4/4 \tempo 4=80 c8 c c d e4 d <span style="color: #0000AA;">}</span> <span style="color: #0000AA;">\new Lyrics \lyricmode {</span> \set stanza = "1. " Au8 clair de la Lu-4 ne <span style="color: #0000AA;">}</span> <span style="color: #00AA00;">>></span> <span style="color: #AA0000;">}</span> Ce mode permet de placer des paroles dans une variable. === Mode <code>\lyricsto</code> === Le mode <span id="lyricsto1"><code>\lyricsto</code></span> permet de travailler avec des portées ayant plusieurs voix. En effet, si l'on donne un nom à une voix, on peut alors associer explicitement les paroles à une voix. ; Exemple <span style="color: #AA0000;">\score {</span> <span style="color: #00AA00;"><<</span> <span style="color: #0000AA;">\new Staff \relative c' {</span> \clef treble \time 4/4 <span style="color: #AAAA00;"><<</span> <span style="color: #AA00AA;">\new Voice = "voixUn" \relative c' {</span> e4 f g2 <span style="color: #AA00AA;">}</span> \\ <span style="color: #AA00AA;">\new Voice = "voixDeux" \relative c' {</span> c4 d e c <span style="color: #AA00AA;">}</span> <span style="color: #AAAA00;">>></span> <span style="color: #0000AA;">}</span> <span style="color: #0000AA;">\new Lyrics \lyricsto "voixUn" {</span> dor -- mez vous <span style="color: #0000AA;">}</span> <span style="color: #0000AA;">\new Lyrics \lyricsto "voixDeux" {</span> frè -- re Jac -- ques <span style="color: #0000AA;">}</span> <span style="color: #00AA00;">>></span> <span style="color: #AA0000;">}</span> Dans ce mode, le placement des syllabes est déterminé de manière automatique, comme avec <code>\addlyrics</code>. Par ailleurs, lorsque des notes sont liées par un ''legato'', cela est automatiquement considéré comme un <span id="melisme2">mélisme</span>. Pour qu'un groupe non lié soit considéré comme un mélisme, il faut placer <code>\melisma</code> ''après'' la première note et <code>\melismaEnd</code> après la dernière note du groupe. == Instruments transpositeurs == Dans le cas d'un instrument transpositeur, comme une clarinette ou une trompette en ''si'' ♭, on écrit la hauteur des notes que doit lire l'instrumentiste. Si l'on veut générer un fichier midi, on indique à LilyPond qu'il faut décaler les notes par l'instruction : \transposition bes Voir l'exemple dans ''[[../Association de plusieurs voix#Voix_sur_plusieurs_portées_différentes|Association de plusieurs voix &gt; Voix sur plusieurs portées différentes]]''. == Batterie == Pour entrer une partie de batterie, on utilise la commande <code>\drums</code> à la place de <code>\new Staff</code>. À la place des noms des notes, on utilise les noms des accessoires (en anglais), ou bien leur abréviation. Les durées sont indiquées comme à l'habitude. Par exemple, pour un coup de grosse caisse sonnant durant une noire, on peut entrer <code>bassdrum4</code> ou bien <code>bd4</code>. ; Exemple <span style="color: #AA0000;"><<</span> <span style="color: #00AA00;">\new StaffGroup { <<</span> <span style="color: #0000AA;">\new Staff \relative c, {</span> \clef "F_8" \partial 8 d16 c a4 a a r8. a16 a8 a c a16 d~ d2 <span style="color: #0000AA;">}</span> <span style="color: #0000AA;">\new TabStaff \relative c, {</span> \set TabStaff.stringTunings = #bass-tuning \partial 8 d16 c a4 a a r8. a16 a8 a c a16 d~ d2 <span style="color: #0000AA;">}</span> <span style="color: #00AA00;">>>}</span> <span style="color: #00AA00;">\drums {</span> \partial 8 r8 <span style="color: #0000AA;"><<</span> <span style="color: #555500;">{</span> \repeat "unfold" 2 {hhc8 hhc hhc hhc hhc hhc hhc hho} <span style="color: #555500;">}</span> <span style="color: #555500;">{</span> \repeat "unfold" 2 {bd4 sn bd sn} <span style="color: #555500;">}</span> <span style="color: #0000AA;">>></span> <span style="color: #00AA00;">}</span> <span style="color: #AA0000;">>></span> : donne : [[Image:Ly intro queen another one bites the dust.png|500px]] : [[Média:Ly intro queen another one bites the dust.mid|écouter l'extrait]] {| border="1" |+ Nom et abréviations des accessoires |- ! Accessoire !! Nom LilyPond !! Abréviation |- | frappe de baguettes || <code>sidestick</code> || <code>ss</code> |- | grosse caisse || <code>bassdrum</code> || <code>bd</code> |- | caisse claire || <code>snare</code> || <code>sn</code> |- | tom aigu || <code>hightom</code> || <code>tomh</code> |- | tom moyen aigu || <code>himidtom</code> || <code>tommh</code> |- | tom moyen grave || <code>lowmidtom</code> || <code>tomml</code> |- | tom grave || <code>lowtom</code> || <code>toml</code> |- | charleston || <code>hihat</code> || <code>hh</code> |- | charleston ouvert || <code>hihatopen</code> || <code>hho</code> |- | charleston semi-ouvert || <code>halfopenhihat</code> || <code>hhho</code> |- | charleston fermé || <code>closedhihat</code> || <code>hhc</code> |- | pédale de charleston || <code>pedalhihat</code> || <code>hhp</code> |- | crash || <code>crashcymbal</code> || <code>cymc</code> |- | splash || <code>splashcymbal</code> || <code>cyms</code> |- | ride || <code>ridecymbal</code> || <code>cymr</code> |- | cloche du ride || <code>ridebell</code> || <code>rb</code> |- | frappe de main || <code>handclap</code> || <code>hc</code> |} La liste des accessoires se trouve dans le fichier <code>drumpitch-init.LY</code> situé dans un dossier <code>ly</code> (par exemple <code>LiLypond\ usr\ share\ lilypond\ current\ ly\</code>). == Notes == <references /> == Voir aussi == ; Dans Wikipédia ---- ''[[Introduction à LilyPond/Gestion de partitions volumineuses|Gestion de partitions volumineuses]]'' &lt; [[Introduction à LilyPond|↑]] &gt; ''[[Introduction à LilyPond/Mise en forme d'une partition|Mise en forme d'une partition]]'' {{AutoCat}} stk7ne6aiplntgdyynljwuucnze292w Programmation JavaScript/Outils de développement 0 18403 775566 703095 2026-10-22T14:08:09Z JackPotte 5426 /* {{w|npm}} */ 775566 wikitext text/x-wiki <noinclude>{{Programmation JavaScript}}</noinclude> == Gestionnaires de paquets == Pour installer des bibliothèques, il existe plusieurs {{w|gestionnaire de paquets|gestionnaires de paquets}}. === {{w|npm}} === Gestionnaire de paquets. ==== Installation ==== Sur Windows, le télécharger de : https://nodejs.org/en/download/ Sur Linux : <pre> curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt install -y nodejs </pre> ==== Utilisation ==== ===== Ajout / suppression ===== Par exemple pour une installation en environnement de développement uniquement : <pre> npm install mon_package --save-dev </pre> Pour l'utiliser, il faut le construire : <pre> npm run build </pre> Pour le mettre à jour : <pre> npm update mon_package </pre> Pour le supprimer : <pre> npm uninstall mon_package </pre> Pour visualiser les failles de sécurité des paquets installés (dans package.json) : <pre> npm audit </pre> === {{w|yarn}} === ==== Installation ==== Réputé plus rapide que le précédent, il s'installe à partir de ce dernier : npm install -g yarn ==== Utilisation ==== Par exemple pour une installation en environnement de développement uniquement : yarn add mon_package --dev NB : dans les premières versions, c'était : yarn install mon_package --save-dev Pour lancer le processus en tâche de fond qui compile et minifie le code dans node_modules : yarn watch == IDE == Un [[w:Environnement_de_développement_intégré|environnement de développement intégré]] (EDI ou IDE en anglais pour Integrated Development Environment) est un programme regroupant un éditeur de texte, des outils automatiques de fabrication, et souvent un débogueur. Il en existe pour pratiquement tous les langages informatique et le Javascript n'échappe pas à la règle. Les IDE pour javascript sont souvent pourvus de fonctionnalité pour écrire en HTML. ---- Les utilités principales des IDE sont : * '''L'analyse du code (Syntaxique, fonctionnel, objet...)''' :Permet d'éviter de faire des erreurs et de parcourir rapidement les différentes parties du code. * '''Le débogueur''' :Indique où se trouve les erreurs et de quel type d'erreur il s'agit. * '''L'auto complétion''' :Permet de visionner les méthodes et paramètres des objets javascript que vous utilisez. * '''La documentation''' :L'aide de chaque fonction est accessible rapidement. * '''Les générateurs de code''' :Des exemples de code permettent d'obtenir des programmes très rapidement. === Libre === * [[Programmation/Visual Studio Code|Visual Studio Code]] * [[Programmation/NetBeans|NetBeans]] * {{w|Aptana}} (Basé sur Eclipse) === Propriétaire === * [[Programmation/PhpStorm|PhpStorm]] (ou WebStorm) * {{w|Dreamweaver}} == En ligne == * https://jsfiddle.net/ : un interpréteur en ligne, pratique pour tester des commandes. * http://jsbin.com/#javascript,html : interpréteur en ligne. * https://www.htmlstrip.com/javascript-validator : validateur en ligne. === Plugins de navigateur === Il existe des plugins de navigateurs comme {{w|Greasemonkey}} ou Tampermonkey permettant de stocker des javascripts à exécuter sur certains sites (auquel on n'a pas forcément accès au code). Cela permet par exemple de préremplir des formulaires ou d'ajouter des hyperliens sur des mots reconnus par regex. miu685q0tvgw5da7tabdnda7vz3noyi 775567 775566 2026-10-22T14:08:17Z JackPotte 5426 /* {{w|npm}} */ 775567 wikitext text/x-wiki <noinclude>{{Programmation JavaScript}}</noinclude> == Gestionnaires de paquets == Pour installer des bibliothèques, il existe plusieurs {{w|gestionnaire de paquets|gestionnaires de paquets}}. === {{w|npm}} === Gestionnaire de paquets. ==== Installation ==== Sur Windows, le télécharger de : https://nodejs.org/en/download/ Sur Linux : <pre> curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt install -y nodejs </pre> ==== Utilisation ==== Par exemple pour une installation en environnement de développement uniquement : <pre> npm install mon_package --save-dev </pre> Pour l'utiliser, il faut le construire : <pre> npm run build </pre> Pour le mettre à jour : <pre> npm update mon_package </pre> Pour le supprimer : <pre> npm uninstall mon_package </pre> Pour visualiser les failles de sécurité des paquets installés (dans package.json) : <pre> npm audit </pre> === {{w|yarn}} === ==== Installation ==== Réputé plus rapide que le précédent, il s'installe à partir de ce dernier : npm install -g yarn ==== Utilisation ==== Par exemple pour une installation en environnement de développement uniquement : yarn add mon_package --dev NB : dans les premières versions, c'était : yarn install mon_package --save-dev Pour lancer le processus en tâche de fond qui compile et minifie le code dans node_modules : yarn watch == IDE == Un [[w:Environnement_de_développement_intégré|environnement de développement intégré]] (EDI ou IDE en anglais pour Integrated Development Environment) est un programme regroupant un éditeur de texte, des outils automatiques de fabrication, et souvent un débogueur. Il en existe pour pratiquement tous les langages informatique et le Javascript n'échappe pas à la règle. Les IDE pour javascript sont souvent pourvus de fonctionnalité pour écrire en HTML. ---- Les utilités principales des IDE sont : * '''L'analyse du code (Syntaxique, fonctionnel, objet...)''' :Permet d'éviter de faire des erreurs et de parcourir rapidement les différentes parties du code. * '''Le débogueur''' :Indique où se trouve les erreurs et de quel type d'erreur il s'agit. * '''L'auto complétion''' :Permet de visionner les méthodes et paramètres des objets javascript que vous utilisez. * '''La documentation''' :L'aide de chaque fonction est accessible rapidement. * '''Les générateurs de code''' :Des exemples de code permettent d'obtenir des programmes très rapidement. === Libre === * [[Programmation/Visual Studio Code|Visual Studio Code]] * [[Programmation/NetBeans|NetBeans]] * {{w|Aptana}} (Basé sur Eclipse) === Propriétaire === * [[Programmation/PhpStorm|PhpStorm]] (ou WebStorm) * {{w|Dreamweaver}} == En ligne == * https://jsfiddle.net/ : un interpréteur en ligne, pratique pour tester des commandes. * http://jsbin.com/#javascript,html : interpréteur en ligne. * https://www.htmlstrip.com/javascript-validator : validateur en ligne. === Plugins de navigateur === Il existe des plugins de navigateurs comme {{w|Greasemonkey}} ou Tampermonkey permettant de stocker des javascripts à exécuter sur certains sites (auquel on n'a pas forcément accès au code). Cela permet par exemple de préremplir des formulaires ou d'ajouter des hyperliens sur des mots reconnus par regex. egnww4hineoaelo38mgnba1m8w3hah4 Guide d'utilisation de l'IRC/Se connecter à IRC 0 20245 775571 762477 2026-10-22T18:20:50Z ~2026-56484-96 124769 Ajoute lien site récent 775571 wikitext text/x-wiki <noinclude>{{Guide d'utilisation de l'IRC}}</noinclude> Un réseau irc est constitué d'au moins un serveur. Comme par exemple EasyTchat.fr Lorsqu'il y a plus d'un serveur, il se forme une structure où chaque serveur est lié aux autres et où les paquets circulent par le chemin le plus rapide. Les paquets en question circulent en suivant le protocole irc ; de la même manière que les pages web sont généralement communiqués avec le protocole http. Se connecter à l'irc revient donc à se connecter à l'un de ces serveurs, ce qui nécessite des programmes taillés sur mesure. Pour communiquer en http on utilise un programme de la famille des navigateurs internet tel que [[firefox]] ou [[internet explorer]]. Pour l'irc on utilise des programmes de la famille des « clients irc ». Seul [[Opera]] gère le protocole irc en natif pour le moment. Sur [[firefox]] vous pouvez utiliser le greffon [[Chatzilla]]. Avec internet explorer (ou windows explorer) rien n'est prévu et vous devrez obligatoirement utiliser un programme externe dédié au protocole tel que [[mIRC]] ou [[XChat]]. Pour [[Macintosh]] vous trouverez une liste de client sur [http://www.irchelp.org/irchelp/mac/ irchelp]. Avec firefox ou opera il suffit d'entrer irc://freenode par exemple dans l'url de son navigateur pour se connecter au serveur en question, sinon il faut se connecter au serveur manuellement, une fois le client irc démarré avec la commande <code>/server nomDuServeur</code> par exemple. Une fois connecté à un serveur il ne reste plus qu'à accéder à l'un des nombreux salons (''channel'' ou ''chan'' en anglais) qu'il est censé accueillir. Si vous connaissez son nom il vous suffit d'entrer <code>/join #nomDuSalon</code> (ne pas oublier de précéder le nom du salon par un dièze #, irc distingue les salons des utilisateurs par ce moyen, c'est à dire que pour lui <code>#toto</code> est le salon appellé toto et <code>toto</code> est la personne dont le pseudonyme est toto). Si on ne connait pas le nom du salon il est possible de lister les salons hébergés sur le réseau avec la commande /list et des jokers : « * ». Par exemple /list #*fr* vous donnera la liste de tous les salons francophones (du moins ceux contenant « fr » dans leur nom). == Liste des serveurs les plus connus == ; ;Chatnova.fr ;Le tchat où on se parle vraiment ; ;Shatteurs.com :Dédié a tous ceux qui souhaitent simplement passer un bon moment, en toute simplicité. :Partenaire radio de RadioFretoise.fr qui anime des Blindtests tous les Jeudis soirs, ainsi que des soirées de concours Quizz tous les Mardis soirs, reliés sur plusieurs serveurs simultanément. ;EasyTchat.fr :Un serveur dédié au tchat en général et à la libre expression ;zeolia.chat :Réseau francophone respectueux axé sur la détente et les discussions amicales ;freenode :Un serveur dédié au monde du libre ;quakenet :Le plus gros. on y discute de tout ;poursuivre la liste : == Salons fréquentés == Sur Shatteurs , le salon principal #Cafe est un salon adulte, #Soda pour les -25ans, #Quizz vous offre une expérience unique du Multiserveurs , et vous y trouverez d'autres salons thématiques comme #Biere ou #Monopoly qui proposent des jeux inédits. Sur EasyTchat les salons principaux de référence sont #!Informatique! - #!Pages_Perso! - #!voyages! Sur freenode on trouvera les salons de référence pour les langages de programmation, généralement en anglais : * irc://irc.freenode.org/html * irc://irc.freenode.org/css * irc://irc.freenode.org/javascript * irc://irc.freenode.org/C * irc://irc.freenode.org/C++ * irc://irc.freenode.org/python-fr (un des rares salons francophones relativement fréquentés) * irc://irc.freenode.org/ubuntu-fr (un autre salon francophone très fréquenté) * irc://irc.freenode.org/openweb (salon francophone sur les langages du web en général) * ... Essayez généralement d'ajouter « -fr » après ou « fr. » avant le nom du langage ou du thème pour avoir l'équivalent francophone. Freenode héberge également les salons des projets wikimedia. Pour le salon germanophone de wikipedia on se connectera à wikipedia-de, pour le salon francophone de wikilivres, on se connectera à wikibooks-fr, et ainsi de suite. On trouvera des réseaux sociaux plutôt sur les serveurs de irc.quakenet.org, irc.epiknet.org (exclusivement francophone), etc. Une recherche sur google commençant par « serveur irc » devrait vous aider à trouver votre bonheur. Par exemple le salon de bashfr, le célèbre recueil de citations provenant d'irc se trouve à irc://irc.langochat.net/bashfr {{todo|rajouter des salons littéraires, scientifiques, artistiques (quelques-uns sur epiknet)}} 6a7zofztj1hmz3um6ufqtxaxdrmako3 Fonctionnement d'un ordinateur/Le pipeline 0 65892 775568 775180 2026-10-22T14:08:24Z Mewtow 31375 775568 wikitext text/x-wiki Dans ce chapitre, nous allons voir la technique du '''pipeline d'instruction''', qui est utilisée sur tous les processeurs modernes. L'introduction du pipeline a eu lieu sur les premiers ''mainframes'' et les supercalculateurs, dans les années 60-70. Elle a ensuite été reprise pour les premiers processeurs RISC commerciaux et s'est démocratisée au point d'être présente sur tous les processeurs CISC modernes. C'est donc un incontournable pour tout cours d'architecture des ordinateurs et il est enfin temps d'en parler. Introduire un pipeline entraine une modification profonde de la microarchitecture du processeur, ainsi que l'ajout de nombreuses optimisations qui ne seraient pas possibles dans pipeline : exécution superscalaire, exécution dans le désordre, prédiction de branchements, etc. Nous passerons une dizaine de chapitre à parler du pipeline des processeurs modernes, ainsi que toutes les techniques qui vont avec. ==Le pipeline : rien à voir avec un quelconque tuyau à pétrole !== Pour expliquer ce qu'est un pipeline d'instructions, il faut faire un rappel sur les différentes étapes d'une instruction. Dans le chapitre sur la micro-architecture d'un processeur, on a vu qu'une instruction est exécutée en plusieurs étapes bien distinctes : le chargement, le décodage, et diverses étapes pour exécuter l'instruction. Ces dernières dépendant du processeur, de l'instruction, du mode d'adressage, etc. Pour comprendre ce que fait le pipeline, comparons l’exécution de cette instruction sans et avec pipeline. Dans les exemples qui vont suivre, nous allons supposer que les instructions se font toutes en 5 étapes, qu'on ne détaillera pas, car ce n'est pas important à ce stade du chapitre. L'essentiel est qu'une instruction se fasse en plusieurs étapes, point. Sans pipeline, ces étapes sont réalisées les unes après les autres, la précédente doit être terminée avant de démarrer la suivante. De plus, on doit attendre qu'une instruction soit finie pour exécuter la suivante. L'instruction exécute toutes ses étapes, avant que l'instruction suivante démarre à l'étape 1. [[File:Nopipeline.png|centre|vignette|upright=2.0|Exécution de trois instructions sans pipeline.]] Avec un pipeline, on exécute plusieurs instructions différentes, chacune étant à une étape différente des autres. Pour cela, on démarre une nouvelle instruction par cycle (dans des conditions optimales). Une instruction passe d'une étape à la suivante à chaque cycle d'horloge. A chaque instant, toutes les étapes travaillent sur une instruction différente. [[File:Fivestagespipeline.svg|centre|vignette|upright=2.0|Exécution de trois instructions avec pipeline.]] Pour comprendre le diagramme précédent, il faut comprendre à un instant t, il y a plusieurs instructions, chacune à une étape différente. Un instant t correspond à une colonne dans le diagramme précédent. Le diagramme suivant le montre bien. La colonne rouge correspond à un cycle d'horloge, la jaune immédiatement suivant est le cycle d'horloge suivant, idem pour le bleu. [[File:Pipeline chaîne de traitement.png|centre|vignette|upright=2.0|Pipeline : principe.]] Une illustration plus intuitive est la suivante. Chaque instruction correspond à une couleur : [[File:Pipleine-3.png|centre|vignette|upright=2.0|Pipeline à 5 étages.]] Le pipeline contient donc plusieurs instructions, qui sont à des étapes différentes de leur exécution. Les instructions en question sont appelées des '''instructions en vol''', terme de mon cru que vous ne trouverez ''a priori'' que dans ce cours. ===Les étages du pipeline=== Mettre en œuvre un pipeline nécessite des modifications profondes de la micro-architecture du processeur. En général, le découpage en étage suit une certaine logique. Il y a un étage pour l'unité de chargement, un étage pour le décodage de l'instruction, un étage pour lire les opérandes d'une instruction, un étage pour l'unité de calcul/unité mémoire, et un étage pour enregistre le résultat dans les registres. La séparation des étages se fait donc en utilisant les séparations existantes. Il n'y a pas besoin de refaire tout le processeur de zéro. Le tout parait donc être très simple : séparer l'unité de chargement, le décodeur et le chemin de données a l'air assez facile. Cependant, ce découpage simple achopper sur quelques points de détail. Tout d'abord, chaque étape d'une instruction doit s'exécuter indépendamment des autres, ce qui signifie utiliser des circuits indépendants pour chaque étape. Or, un processeur sans pipeline tend à mutualiser certains circuits entre différentes étapes. Par exemple, sur un processeur 16 bits sans pipeline, l'additionneur de l'ALU peut être utilisé pour incrémenter le ''program counter'', calculer des adresses lors d'un accès mémoire, exécuter les instructions d'addition, etc. Mais avec un pipeline, on ne peut pas se le permettre, chaque étape doit utiliser son propre additionneur. En général, il est impossible de réutiliser un circuit dans plusieurs étapes, comme on le fait dans certains processeurs sans pipeline. Chaque circuit dédié à une étape est appelé un '''étage du pipeline'''. Le nombre d'étapes par instruction, et donc le nombre d'étages du pipeline, est appelé la '''profondeur du pipeline'''. Il correspond au nombre maximal théorique d'instructions en vol, au nombre d'instructions exécutées en même temps dans le pipeline. Et j'ai bien dit maximal théorique : ce maximum n'est pas toujours atteint, comme on le verra plus tard. Pour les curieux, voici les longueurs de pipeline de certains processeurs plus ou moins connus. {|class="wikitable" |- ! Processeur !! Longueur du pipeline |- | Motorola PowerPC G4 || 7 |- | MIPS R4400 || 8 |- | Intel Itanium || 10 |- | Intel Pentium II || 14 |- | Intel Pentium 3 || 10 |- | Intel Pentium 4 ||20 |- | Intel Pentium 4 Prescott ||31 |- | AMD Athlon ||12 |- | AMD Athlon 64 ||16 |- | IBM PowerPC 970 ||16 |- | Sun UltraSPARC IV ||14 |} Plus haut, il a été dit que les étages du pipeline sont censés être totalement séparés, mais la réalité est beaucoup plus complexe. Dans la réalité, il existe quelques circuits qui sont partagés entre plusieurs étages, car on n'a pas le choix. En conséquence, deux instructions peuvent accéder à la mémoire simultanément, exécuter une micro-opération dans la même unité de calcul, lire le même registre en même temps, etc. De telles '''dépendances structurelles''' surviennent quand plusieurs instructions veulent accéder à un circuit du processeur en même temps. Les processeurs modernes incorporent de nombreux circuits capables de gérer les dépendances structurelles, qu'on abordera au fur et à mesure que les occasions se présentent. Cependant, même si un circuit est partagé par un même étage, cela ne signifie pas que tout est perdu. Prenons par exemple le cas du banc de registres. Il est fréquent qu'un registre soit lu dans un étage et écrit dans un autre, comme on le verra dans ce qui suit. Heureusement, le banc de registre est conçu pour gérer la situation, car il a des ports de lecture séparés des ports d'écriture. Il y aura donc un étage pour lire dans les registres, un étage pour écrire dedans. Et ces deux étages utilisent des ports séparés, ce qui fait qu'il n'y a pas de dépendances structurelles. ===Les pipelines fixes et variables=== Les pipelines peuvent se classer en deux types, suivant leur "nombre d'étage global". La distinction sépare les pipelines de longueur fixe des pipelines de longueur variable. Les pipeline de longueur fixe ont un nombre d'étages fixe, qui est le même pour toutes les instructions. De tels pipelines sont aussi appelés des '''pipelines fixes'''. Ce sont les pipelines les plus intuitifs, mais ils ont un gros défaut : la gestion des instructions multi-cycles. Le problème est qu'il y a des instructions plus rapides que d'autres, les plus rapides mettant un cycle pour s’exécuter, d'autres mettant plusieurs cycles. Or, on voit mal comment un pipeline fixe pourrait gérer des instructions qui s'exécutent en un cycle d'un côté, et des instructions qui s’exécutent en plusieurs cycles de l'autre, avec le même nombre d'étages (et donc de cycles) pour toutes. Mais non seulement c'est possible, mais en plus, cela peut se faire de deux manières. En pratique, il y a deux solutions, pour les pipelines fixes. Avec la première, toutes les instructions s'exécutent en un cycle d'horloge, pas un de plus, pas un de moins. Les opérations arithmétiques sont exécutées en un seul cycle d'horloge dans l'ALU entière, y compris les instructions "complexes" comme les multiplications ou divisions. Les accès mémoire aussi se font aussi en un seul cycle d'horloge, sauf en cas de défaut de cache. les pipelines de ce type seront appelés des '''pipelines 1-cycle'''. Il s'agit d'un cas fortement irréaliste, aucun processeur avec un pipeline ne fait dans le monde réel. Une autre solution accepte les instructions multi-cycles. Et parmi ces instructions, l'une d'entre elle sera la plus lente de toute. Le processeur va se caler sur celle-ci. Par exemple, imaginons que l'instruction la plus lente prenne 15 cycles d'horloge, pour s'exécuter dans l'ALU entière. Son exécution sera pipelinée, de manière à se faire sur 15 étages. De plus, toutes les instructions feront 15 cycles pour s'exécuter, elles prendront 15 étages pour. Quitte à ce que certains étages ne fassent rien. Par exemple, l'addition pourra se faire en deux cycles d'horloge, mais les 13 restants ne feront rien. Nous verrons plus loin dans ce chapitre comment cette solution s'implémente, elle est surprenamment utile. [[File:Processeur à pipeline fixe qui gére des instructions multicycles.png|centre|vignette|upright=2.5|Processeur à pipeline fixe qui gére des instructions multicycles]] Enfin, il existe des '''pipelines de longueur variables''', qui utilisent un nombre d'étages différents selon l'instruction. Avec un pipeline variable, certaines instructions peuvent prendre 1 cycle, d'autres 7 cycles, d'autres 9, d'autres 25, etc. Les instructions rapides prennent moins de cycles que les autres. Typiquement, toutes les instructions partagent lse premiers étages, qui chargent et décodent les instructions, mais le chemin de donnée est lui segmenté en plusieurs pipelines distincts, un par unité de calcul. Il y a ainsi un pipeline pour l'ALU entière, un autre pour le multiplieur entier, un autre pour la FPU, un autre pour l'unité mémoire, etc. [[File:Pipeline avec un nomrbe variable d'étages par instructions.png|centre|vignette|upright=2.5|Pipeline avec un nomrbe variable d'étages par instructions]] Nous les appellerons des '''pipelines variables''', pour simplifier les explications. Ils ont l'air plus intuitifs que les pipelines fixes, sont aussi plus flexibles, mais ils sont nettement plus complexes que les pipelines fixes. De nombreuses subtilités surviennent sur ces pipelines variables, et c'est ce qui explique que nous ne les verrons pas avant facilement trois-quatre chapitres. Nous allons d'abord voir le fonctionnement des pipelines de longueur fixe, avant d'étudier les pipelines variables. ===Les pipelines synchrones et asynchrones=== Il faut que les instructions progressent d'un étage à un autre au rythme adéquat. Pour cela, la plupart des pipelines intercalent des registres entre les étages, pour les isoler mais aussi pour synchroniser leurs échanges. Les registres en question seront appelés des '''registres de pipeline''' dans ce qui suit. Un registre de pipeline s'intercale entre deux étages consécutifs. L'étage précédant ce registre écrit son résultat dedans, l'étage suivant lit son contenu quand c'est son tour, généralement au cycle d'horloge suivant. La présence de registres aide grandement à implémenter de quoi commander le pipeline. Les transferts entre étages du pipeline peuvent être synchronisés par une horloge, ou de manière asynchrone. [[File:Pipeline sync-async.svg|centre|vignette|upright=1.5|Pipeline synchrone et asynchrone.]] Si le pipeline est synchronisé sur l'horloge du processeur, on parle de '''pipeline synchrone'''. Chaque étage met un cycle d'horloge pour effectuer son travail, à savoir, lire le contenu du registre qui le relie à l'étape précédente et déduire le résultat à écrire dans le registre suivant. Ce sont ces pipelines que l'on trouve dans les processeurs Intel et AMD les plus récents. [[File:Pipeline buffered synchrone.png|centre|vignette|upright=2.0|Pipeline buffered synchrone]] Sur d'autres pipelines, il n'y a pas d'horloge pour synchroniser les transferts entre étages, qui se font via un « bus » asynchrone. On parle de '''pipeline asynchrone'''. La synchronisation des échanges entre deux étages se fait grâce à un signal de requête et un signal acquittement. Le signal de requête REQ indique que l'étage précédent a terminé son travail et qu'on peut lire son résultat. Le signal d'acquittement signifie que l'étage destinataire a pris en compte la donnée transmise. Les signaux de commande de ces pipelines asynchrones peuvent se créer facilement avec des portes C. [[File:Micropipeline-structure.svg|centre|vignette|upright=2.0|Micropipeline-structure]] Les pipelines n'utilisant pas de registres sont assez rares, mais ils existent, ce sont les ''pipelines à vague''. Ils se contentent d'enchainer des étages les uns à la suite des autres, et laissent les données se propager librement d'un étage à l'autre. Ils jouent sur un timing très précis pour propager les données entre étages au bon timing, de manière à ce que le tout fonctionne comme un pipeline. Leur conception est cependant très complexe, ce qui fait qu'ils ne sont jamais utilisés en pratique. La règle est clairement de séparer les étages dans des circuits séparés, interfacés par des registres. ==La séparation des étages de pipeline== Découper un processeur en pipeline peut se faire de différentes manières, le nombre et la fonction des étages variant fortement d'un processeur à l'autre. Dans ce qui suit, nous allons voir quelques pipelines simples, faciles à étudier. Nous allons partir d'un processeur sans pipeline, et allons séparer les unités dans plusieurs étages. Le processeur de départ est très simple, nous allons supposer que son chemin de données contient une ALU entière, une unité mémoire et le banc de registres. Nous ajouterons d'autres unités de calcul, comme une FPU ou un multiplieur entier, plus tard. ===Le pipeline Fetch-Exec=== En guise de premier exemple, nous allons prendre le '''pipeline ''Fetch-Execute'''''. IL a seulement deux étages : un qui charge et décode l'instruction, l'autre qui exécute l'instruction. En clair, il sépare le séquenceur et le chemin de données dans deux étages séparés. Il s'implémente en séparant les deux étages par un registre, qui mémorise les signaux de commande en sortie du décodeur d'instruction. Les deux étages sont respectivement nommés ''Fetch'' et ''Exec'', ce qui donne son nom au pipeline. Il s'agit du pipeline le plus simple qui soit, mais il a pourtant été utilisé sur les processeurs Atmel AVR, ainsi que les processeurs PIC. [[File:The Fetch-Execute Cycle.svg|centre|vignette|upright=2|The Fetch-Execute Cycle]] Un problème avec ce pipeline est que les deux étages peuvent parfois faire un accès mémoire en même temps. Le pipeline doit lire une instruction à chaque cycle d'horloge, quelle que soit l'instruction. Si l'étape d'''Exec'' exécute un accès mémoire pour lire/écrire une donnée, le processeur fait deux accès concurrents : un pour charger l'instruction, un autre pour lire/écrire la donnée. Il s'agit techniquement d'une situation de dépendance structurelle, mais passons. La solution simple la plus simple est de passer à une architecture Harvard, avec deux mémoires séparées. Pour un processeur avec un cache, cela revient à utiliser un cache d'instruction séparé du cache de données, ce qui garantit que les deux étages ne se marcheront plus dessus et accéderont chacun à leur cache dédié. Une solution alternative utiliser un cache unique multiport, mais l'essentiel est qu'on puisse lire une instruction et accéder à une donnée en même temps. Précisons que tous les pipelines ont ce problème, sans exception ! Tous les pipelines que nous verrons dans ce cours font face au même problème et la même solution est appliquée. Le pipeline précédent est de loin le plus simple. Tous les pipelines qui existent ne sont qu'une amélioration de celui-ci. Par amélioration, on veut dire que l'étage de ''Fetch'' est découpé en plusieurs sous-étages, idem avec l'étage d'''Exec''. Concrètement, le processeur est découpé en deux : un '''''front-end''''' qui charge et décode les instructions, un '''''back-end''''' qui exécute les micro-opérations. La séparation entre ''front-end'' et ''back-end'' colle presque parfaitement à la séparation entre séquenceur et chemin de données, et ce n'est pas un hasard. Elle est cruciale, et elle sera la ligne rouge des 10 chapitres qui vont suivre. Découper le séquenceur ne se fait pas de la même manière que le découpage du chemin de données. Nous allons voir les deux séparément, en commençant par le découpage du séquenceur. ===Le pipelining du séquenceur=== Le '''pipeline ''Fetch-Decode-Exec''''' sépare l'unité de chargement de l'unité de décodage d'instruction dans deux étages séparés. Le résultat est un pipeline à trois étages : le premier étage correspond au calcul du ''program counter'' et à l'accès au cache, le second au décodage de l’instruction, le troisième à l’exécution de l'instruction par le chemin de données. Ces trois étapes sont souvent désignées sous les noms de ''Fetch'', ''Decode'' et ''Exec'', termes que nous utiliserons dans la suite de ce cours. Encore une fois, ils donnent leur nom au pipeline. Le pipeline est donc le suivant : * ''Fetch'' : chargement de l'instruction ; * ''Decode'' : décodage de l'instruction ; * ''Exec'' : exécute l'instruction. Bien que très simple, le pipeline ''Fetch-Decode-Exec'' a été utilisé dans des processeurs commerciaux grand public. Par exemple, les tout premiers processeurs ARM jusqu'aux processeurs ARM7 utilisaient un pipeline ''Fetch-Decode-Exec''. L’implémentation sépare l'unité de chargement et le décodeur d'instruction avec un registre. Pour cela, on profite du registre d'instruction, qui était déjà entre l'étage de chargement et l'étage de décodage. L'implémentation est donc terriblement simple. [[File:Pipeline à trois étages.png|centre|vignette|upright=2|Pipeline à trois étages]] Il est possible de scinder l'étape de chargement en deux étapes séparées : la mise à jour du ''program counter'' et l'accès au cache d'instruction. La première étape ne fait pas que calculer le ''program counter'', mais gère aussi les branchements au sens large. Elle incorpore des techniques de prédictions de branchement que nous verrons dans le chapitre suivant. En tout cas, elle fait suffisamment de travail pour avoir un étage dédié, le travail prenant facilement un cycle d'horloge complet. Le pipeline devient alors le suivant : * ''PC Update'' : mise à jour du ''program counter'' ; * ''Fetch'' : accès au cache d'instruction ; * ''Decode'' : décodage de l'instruction ; * ''Exec'' : exécute l'instruction. Précisons cependant une chose importante : la gestion des branchements se fait dans plusieurs étages. Le calcul des conditions est réalisé dans l'unité de calcul, donc dans l'étage d'''Exec''. Mais une fois l'adresse de destination connue, celle-ci doit être écrite dans le ''program counter'' , qui est lui dans l'étage de ''PC Update''. [[File:Pipeline PC-Fetch-Decode-Exec.png|centre|vignette|upright=2.5|Pipeline PC-Fetch-Decode-Exec]] Les processeurs modernes implémentent de nombreuses optimisations, qui partent du principe que le calcul du ''program counter'', l'accès au cache d'instruction, et le décodage sont trois étapes séparées. Mais nous verrons cela en temps voulu, dans le chapitre nommé "Les optimisations du chargement des instructions". Pour le moment, retenez que le début du pipeline peut être scindé en trois étapes nommées PC, ''Fetch'' et ''Decode'', qui peuvent elles-mêmes être séparées en sous-étapes pipelinées. ===Le pipelining du chemin de données=== Les pipelines précédents sont très simples à comprendre, car ils collent avec la séparation entre ''Program counter'', unité de chargement, décodage et chemin de données, qui nous est familière. Les pipelines qui vont suivre pipelinent leur chemin de données, d'une manière qui est moins intuitive. Autant découper le séquenceur en plusieurs circuits séparés est simple, autant découper le chemin de données ne l'est pas. Le chemin de données contient au minimum une unité de calcul, un banc de registres et l'unité mémoire (et un paquet d'interconnexion qu'on met sous le tapis). Reste à voir comment les pipeliner. Pour simplifier, nous allons prendre le cas d'un processeur RISC, pour éliminer les instructions ''load-op'', qui sont particulièrement problématiques avec un pipeline. Vu que le processeur a une architecture LOAD/STORE, les instructions d'accès mémoire vont dans l'unité mémoire, les instructions de calcul vont dans l'ALU entière. Il parait donc naturel de mettre les deux dans un même étage de pipeline, qu'on appellera l''''étage d’exécution'''. L'étage d'exécution utilise donc soit l'une, soit l'autre, pas les deux. L'étage d'exécution communique avec le banc de registre : pour récupérer les opérandes lues, pour enregistrer le résultat d'un calcul, ou la donnée lue par une lecture. Intuitivement, on se dit qu'il faudrait un étage pour lire dans le banc de registre et un autre pour écrire dedans. Et cela implique que le banc de registre est multiport, avec des ports de lecture et d'écriture séparés. Le résultat est une organisation en trois étages : * Chargement d’opérandes : lecture des opérandes depuis les registres. * Exécution : exécution de l'instruction dans l'unité de calcul ou l'unité mémoire. * Enregistrement : écriture du résultat dans les registres. [[File:Pipeline à 7 étages, avec mode d'adressae immédiat et absolu gérés.png|centre|vignette|upright=2.0|Pipeline à 7 étages naïf.]] Le pipeline précédent met l'unité mémoire et l'ALU entière en parallèle dans l'étage d'exécution. Soit l'une est utilisée, soit c'est l'autre. En clair, on met plusieurs unités en parallèle dans le même étage d'exécution. Et il est possible de faire pareil avec d'autres unités. Par exemple, on peut mettre le ''barrel shifter'' en parallèle de l'ALU entière et de l'unité mémoire. Les décalages iront dans le ''barrel shifter'', les autres opérations entières dans l'ALU entière, et les instructions LOAD/STORE dans l'unité mémoire. Une autre possibilité, complémentaire des précédentes, est d'utiliser une unité de calcul dédiée aux branchements, qui est placée dans l'étage d'exécution. L''''unité de branchements''' est la seule à être reliée au séquenceur, l'unité de calcul normale ne l'est pas. Cela simplifie grandement la conception du processeur, sans impact sur les performances. [[File:Pipeline de longueur fixe avec unités de calcul en parallèle.png|centre|vignette|upright=2|Pipeline de longueur fixe avec unités de calcul en parallèle]] Une subtilité avec un pipeline de ce genre est que les instructions ont des besoins différents, mais qu'on les force à rentrer dans un pipeline qui a exactement N étages. La conséquence inévitable est que certains étages de pipeline leurs sont inutiles. Et le mieux, pour s'en rendre compte, et de regarder quelques exemples. Les instructions MOV de copie entre registre n'utilisent ni l'unité de calcul ni l'unité mémoire. Elles lisent un registre et le recopient directement dans le registre destination? Seul le banc de registre est utilisé, l'étage d’exécution ne sert pour ainsi dire à rien. Une solution pour implémenter ces instructions est que l'ALU entière incorpore l'opération ''pass through'' qui recopie une entrée sur sa sortie. Les instructions MOV de copie inter-registres passent donc par l'ALU entière, mais celle-ci effectue donc un "NOP", elle ne fait rien. La conséquence est que l'étage d'exécution ne fait rien, mais l'instruction MOV quand même à travers celui-ci. [[File:Inactivation d'un étage de pipeline avec des multiplexeurs.png|centre|vignette|upright=1.5|Inactivation d'un étage de pipeline avec des multiplexeurs]] Le dernier étage enregistre quelque chose dans les registres : soit la donnée lue en mémoire, soit le résultat fournit par l'ALU. Il regroupe le port d'écriture du banc de registre, et quelques MUX. Et l'instruction STORE ne l'utilise pas, vu qu'elle n'a rien à enregistrer dans les registres. Pareil avec les branchements : ils n'enregistrent rien dans les registres, ils altèrent uniquement le ''program counter''. Cependant, les branchements et STORE passent quand même par cet étage, elles n'ont pas le choix. Simplement, elles ne font rien lors de cet étage. Les branchements inconditionnels directs sont eux encore plus problématiques : ils sont exécutés par le décodeur d'instruction. Qui dit branchement inconditionnel dit que l'on n'a pas besoin de tester de conditions, donc pas besoin d'utiliser l'ALU entière, ni l'unité de branchement. De plus, qui dit direct dit que l'adresse de destination est encodée dans le branchement, le décodeur peut l'extraire sans lire les registres. Et évidemment, pas besoin d'enregistrer quoique ce soit dans les registres. Les étages du chemin de données sont totalement inutilisés. Pour exécuter un tel branchement, l'unité de décodage envoie un NOP dans le chemin de données. En clair : elle dit aux étages de ne rien faire pendant un cycle d'horloge. Un tel NOP n'est cependant pas une instruction, mais une micro-opération NOP, interne au pipeline, qui a été générée lors du décodage. Nous verrons que de tels NOP sont utilisés pour bien d'autres choses. Aussi, je leur donner le nom de '''NOP de pipeline''', terme de mon invention. Ceci étant dit, passons à tout autre chose. Le pipeline précédent met en parallèle ALU entière et unité mémoire. Et cela pose un problème pour gérer certains modes d'adressages, qui demandent de faire des calculs d'adresse. Les calculs d'adresse ne peuvent pas être fait dans l'ALU entière, vu qu'elle est en parallèle de l'unité mémoire, pas avant elle. La seule solution est d'utiliser une unité de calcul d'adresse dédiée, placée avant l'unité mémoire. L'unité de calcul d'adresse est très simple, plus économe en circuit et plus rapide qu'une ALU entière vraie. Il y a donc une petite duplication de circuit, mais elle est nécessaire. Une solution alternative fait faire les calcul d'adresse dans l'ALU entière. Le chemin de données est alors découpé en quatre étapes : * ''Read Operands'' (RO) : lecture des opérandes dans les registres ; * ''Execution'' (EXEC) : exécution d'un calcul dans l'unité de calcul ; * ''Memory'' (MEM) : accès mémoire dans l'unité mémoire, facultatif ; * ''Writeback'' (WB) : enregistrement d'une donnée dans les registres. [[File:Pipeline à 7 étages naïf.png|centre|vignette|upright=2|Pipeline à 7 étages naïf]] Un problème est que l'étage ''Memory'' (MEM) n'est pas utilisé pour les instructions de calcul, les branchements et toutes les instructions à l'exception de LOAD et STORE. Le problème précédent, à savoir des étages qui ne font rien, est là bien plus visible, plus fréquent et donc plus génant. Et au-delà de ça, même pour les instructions LOAD et STORE, il y a des étages inutilisés. Par exemple, avec le mode d'adressage indirect à registre, il n'y a pas de calcul d'adresse, l'étage d'exécution est inutilisé. Et c'est encore pire avec le mode d'adressage absolu, vu que l'adresse est fournie par le séquenceur. Le banc de registre n'est pas utilisé non plus, l'étage ''Read Operands'' est donc inutile ! Et pourtant, malgré ses défauts, nous verrons qu'une variante de ce pipeline a été utilisée sur des processeurs commerciaux. ===La propagation des signaux de commande dans le pipeline=== Découper le chemin de données demande de placer des registres de pipeline au bon endroit. Les registres propagent les données adéquates, mais aussi les signaux de commande générés par le décodeur, qui configurent le chemin de données. En effet, relier l'unité de décodage aux circuits incriminés directement ne marcherait pas. Les signaux de commande arriveraient immédiatement aux circuits, alors que l'instruction n'a pas encore atteint ces étages ! Les signaux de commande doivent traverser le pipeline et être consommés par les étages adéquats, et doivent donc être propagé d'étage en étage, via les registres de pipeline. Cette méthode sera utilisée sur tous les pipelines où le chemin de données contient plusieurs étages. [[File:Propagation des signaux de commande dans un pipeline à 7 étages.png|centre|vignette|upright=2.0|Propagation des signaux de commande dans un pipeline à 7 étages.]] Il faut noter que quand on parle de signaux de commande, on parle dans un sens très large. Et cela inclus les constantes immédiates du mode d'adressage immédiat. les constantes sont fournies par le séquenceur et sont propagées d'étage en étage jusqu'à atteindre l'étage avec l'unité de calcul. Il en est de même pour le mode d'adressage absolu, qui fournit une adresse mémoire dans l'instruction. L'adresse est extraite par le décodeur d'instruction, propagée dans le pipeline jusqu'à atteindre l'unité mémoire. [[File:Modes d'adressages absoluss et immédiats avec un pipeline.png|centre|vignette|upright=2.0|Modes d'adressages absoluss et immédiats avec un pipeline]] ==Les ''super-pipelines'' : des pipelines subdivisés== Le pipeline vu juste avant est conçu pour être logiques, avec une séparation entre chargement/décodage/exécution/accès au registre qui est relativement intuitive. Le pipeline précédent est un bon point de départ, qu'on peut améliorer. Cependant, cette implémentation réelle n'aurait pas des performances optimales en situation réelle. La raison est que les étages du pipeline ne sont pas équilibrés. Voyons ce que ça veut dire. Les étages de pipeline ne font pas la même chose. Prenons par exemple un pipeline basique, de type ''Fetch-Decode-Exec''. Les trois étages ne mettent pas le même temps pour faire leur travail. Pour donner un exemple pas fait pour être réaliste, charger une instruction depuis le cache prend 16 µs, la décoder prend 12 µs pour le décodeur, et l'exécuter prend 8 µs. Sans optimisations, la durée d'un cycle d'horloge devra se caler sur l'étage le plus lent. Nous l'appellerons l''''étage limitant''', terme qui est assez parlent. Les étages limitants sont souvent ceux qui demandent de faire des accès mémoire. Ils sont exactement deux : l'étage MEM qui accède au cache de données, mais aussi l'étage ''Fetch'' qui charge une instruction depuis le cache d'instruction. Les deux caches L1 ont un temps d'accès similaire, ce qui fait qu'ils sont tous deux des étages limitants. Cependant, ce n'est pas toujours le cas, il arrive aussi que les étages limitants soient l'étage de décodage, ou l'étage d'exécution. La solution la plus simple est de '''se caler sur l'étage limitant''', quitte à réorganiser le pipeline. Pour se caler sur l'étage limitant, il est possible de fusionner des étages vraiment rapides. Par exemple, imaginons que l'étage limitant fait 50 µs, qu'un calcul dans l'ALU fait 10 µs, et lire/écrire les registres en fait 15. Il est possible de fusionner lecture des opérandes et exécution dans un seul étage. Et l'exemple se généralise assez bien : il est intéressant de fusionner deux étages consécutifs pour obtenir un étage aussi rapide que l'étage limitant. L'inconvénient est que cela réduit le nombre d'étages, et donc le nombre d'instructions en vol. [[File:Pipeline à 6 étages simplifié.png|centre|vignette|upright=2|Pipeline à 5 étages naïf]] Mais il est possible de pipeliner encore plus le processeur, sans se caler sur l'étage limitant. L'idée est de subdiviser l'étage d'accès au cache, l'étage de décodage, voire l'étage d’exécution. Par exemple, l'étage de décodage devient alors deux étages séparés, voire trois. La technique porte le nom de '''super-pipeline'''. Elle permet d'augmenter le nombre d'étages, sans foncièrement changer les circuits du processeur. Il suffit de mettre des registres de pipeline au bon endroit dans le décodeur, l'ALU entière, les caches L1. En général, un super-pipeline a environ une dizaine d'étages, parfois plus, alors qu'un pipeline "classique" a moins de 7-8 étages. ===L'accès aux caches L1 est lent, mais se pipeline=== Dans l'exemple précédent, l'accès au cache d'instruction ne prend qu'un seul cycle d'horloge. Mais sur les processeurs modernes, l'accès au cache d'instruction prend deux à trois cycles. Et ce n'est pas incompatible avec la présence d'un pipeline, à condition que le cache lui aussi soit pipeliné. En clair, la solution est de '''pipeliner les caches L1'''. Lire une instruction se fait alors en plusieurs étapes. Nous verrons comment pipeliner le cache dans un chapitre dédié nommé "Le parallélisme mémoire au niveau du cache". Mais pour le moment, nous allons donner un exemple assez basique. On suppose que le cache est un ''phased'' cache, où les ''tags'' et les données sont dans deux SRAM séparées. Un tel cache peut être pipeliné pour avoir un accès en deux cycles : le premier cycle vérifie les ''tags'', le second accède aux données. [[File:Phased cache.png|centre|vignette|upright=1.5|Phased cache]] Un exemple classique est celui des premiers processeurs MIPS, précisément le MIPS R4000. Son pipeline était un pipeline RISC classique, dans lequel les étages FETCH et MEM étaient pipelinés. Concrétement, le pipeline du MIPS R4000 utilisait deux étages pour lire une instruction dans le cache d’instruction, trois pour lire dans le cache L1 de données. le résultat était un pipeline à 8 étages, qui est décrit dans le tableau ci-dessous. {|class="wikitable" |- ! colspan="2" | Instruction fetch !! Decocage !! Execution !! colspan="2" | Accès cache L1 !! Vérification TLB !! ''Writeback'' |- | ''Fetch'' 1 || ''Fetch'' 2 || ''Decode'' + ''Read Operands'' || ''Exec'' || ''Data Fetch'' 1 || ''Data Fetch'' 1 || ''Tag Check'' || ''Writeback'' |} Les premiers processeurs RISC faisaient en sorte qu'un accès aux caches L1 se fasse en un cycle d'horloge. Les premiers processeurs x86 étaient de ce type, les derniers étant la micro-architectures K5 d'AMD et le premier Pentium. La microarchitecture K6 d'AMD a pipeliné son cache, idem pour la microarchitectire P6 du Pentium 2 et 3. Utiliser un cache 1-cycle est donc une solution parfaitement viable, qui n'est abandonnée que quand le besoin de performance se fait sentir. ===Les décodeurs sont lents sur les CPU CISC, mais ils se pipelinent=== L'accès au cache est l'étage limitant sur les processeurs RISC. Pour les processeurs CISC, les choses sont parfois différentes. L'étage de décodage est lui aussi assez complexe, vu qu'il doit gérer des instructions de taille variable. Un décodeur CISC devient rapidement l'étage limitant, surtout si les caches L1 sont pipelinés. A problème similaire, solution similaire. Il est possible de '''pipeliner le décodeur d'instruction''', à savoir le scinder en plusieurs circuits consécutifs, séparés par des registres de pipeline. La scission peut se faire à des "moments de décodage" différents,. Une scission assez logique sépare la gestion des instructions de taille variable du décodage lui-même. La gestion des instructions de taille variable implique d'utiliser des ''barrel shifter'' et des opérations de masquage, qui sont couteux en circuits et assez "lents". Le décodage proprement dit vient après. Et les deux peuvent être séparées. Un premier étage de décodage transforme les instructions de taille variable en "instructions de taille fixe", le second étage décode ces dernières. les deux étages de décodage sont souvent appelés les '''étages de pré-décodage''' et l''''étage de décodage''' proprement dit. : Le terme pré-décodage ne doit pas être confondu avec le pré-décodage dans le cache d’instruction, qu'on verra dans quelques chapitres. Mais la scission peut être encore plus profonde. Le décodage lui-même peut être découpés en plusieurs étapes, qui sont elles-mêmes pipelinées. Mais nous ne pouvons pas vraiment en dire plus, je ne peux pas donner de généralités là-dessus, les détails dépendent vraiment du jeu d'instruction et de l'implémentation du décodeur d'instructions. Les processeurs modernes ont un pipeline de 8-20 étages, dont au moins un étage pour le calcul du ''program counter'' et 2 à 4 cycles pour l'accès au cache d'instruction, et tout autant de cycles pour le décodage. Et il est même possible de pipeliner l'étape de calcul du ''program counter''. Pour donner un exemple, le processeur Pentium Pro avait un pipeline de 14 étages, dont 7 étaient liés au décodage/chargement : deux étages pour le calcul du ''program counter'', trois pour l'accès au cache d'instruction, deux pour le décodage des instructions. ===Les instructions multi-cycles et l'ALU entière=== Enfin, il est possible de pipeliner l'unité de calcul. Mais nous n'allons pas le faire de façon naïve, nous allons ruser pour gérer des instructions comme les multiplications et les divisions assez simplement. Et comprendre pourquoi, faisons une remarque : les pipelines précédents ont un étage d'exécution unique, ce qui implique que toutes les instructions se font en un seul cycle d'horloge. Plus précisément, un calcul dans l'ALU se fait en un cycle d’horloge, on ne compte pas la lecture et l’écriture des registres. Mais autant c'est bien adapté pour les additions/soustractions, décalages et comparaisons, autant ce n'est pas le cas pour les multiplications et les divisions. Idéalement, il faudrait ajouter de quoi supporter des '''instructions multi-cycles''' au pipeline, à savoir des instructions qui mettent plusieurs cycles pour s'exécuter. Et justement, pipeliner l'unité de calcul permet de supporter ces instructions très facilement. Les instructions multi-cycles sont le plus souvent des multiplications entières, des divisions, ou des opérations flottantes. En conséquence, nous allons ajouter un multiplieur entier et une FPU dans le pipeline, dans l'étage d'exécution. Mais cela ne suffit pas, il faut modifier plus profondément le pipeline processeur. Il y a plusieurs implémentations possibles, mais nous n'allons pas toutes les voir. Deux chapitres entiers seront dédiés à cette problématique des instructions multi-cycles. L'implémentation la plus simple utilise plusieurs étages d'exécution consécutifs. Toutes les instructions mettent alors le même nombre de cycles pour s’exécuter. Et là, pas le choix : on doit se caler sur l'instruction la plus lente. Par exemple, si le processeur a des additions qui se font en un cycle, des décalages qui se font en deux, et des multiplications qui se font en 8 cycles, alors il y aura 8 étages d’exécution. En conséquence, les instructions plus rapides auront donc des étages qui ne font rien. L'instruction doit passer par ces étages, mais ceux-ci ne doivent rien faire. [[File:Processeur à pipeline fixe qui gére des instructions multicycles.png|centre|vignette|upright=3|Processeur à pipeline fixe qui gére des instructions multi-cycles]] Pour cela, on insère des registres entre la sortie de l'ALU et le banc de registre. Les registres en question sont appelés des ''staggering registers'', mais nous préférerons la traduction '''registres d'échelonnage'''. Il y a autant de registres d'échelonnage que cycles de retard à ajouter, car chacun retarde le résultat d'un cycle d’horloge. Pendant les cycles de retard, le résultat sera passé d'un registre d'échelonnage à l'autre, sans que rien ne se passe. [[File:Regsitres d'échelonnage.png|centre|vignette|upright=2|Registres d'échelonnage]] De plus, pour avoir un fonctionnement en pipeline, les multiplieurs et FPU doivent être pipelinés. Par exemple, si une multiplication fait 4 cycles, le multiplieur doit être segmenté en 4 étages, chacun effectuant une partie de la multiplication. Rien de compliqué à cela. Par exemple, prenons un multiplieur 32 bits. Il effectue 32 additions successives, on peut le découper en quatre circuits qui font chacun 32/4 = 8 additions. Pipeliner la FPU est un peu plus compliqué, mais rien d'insurmontable. [[File:Exemple avec une unité de multiplication totalement échelonnée.png|centre|vignette|upright=2|Multiplieur échelonné.]] L'implémentation en question donne un pipeline simple. Mais il y a d'autres implémentations bien plus complexes, qui ont des couts en hardware différents. Pour les prochains chapitres, on va supposer que le processeur utilise un pipeline de ce type. Mais une fois dans le chapitre sur les pipelines ''in-order'', nous verrons que certains processeurs ne pipelinent pas les unités de multiplication, ni la FPU. Nous verrons aussi que qu'il y a des pipelines de longueur variables, où le nombre d'étages change suivant l'instruction. Mais laissons cela pour plus tard. ==Le pipeline RISC classique et ses variantes== Les pipelines précédents sont conçus pour être relativement simples et pédagogiques. Mais la plupart des ''textbooks'' américains préfèrent utiliser un pipeline appelé le '''pipeline RISC classique'''. Il a été utilisé sur les premiers processeurs RISC : les CPU MIPS, SPARC, le 88000 et quelques autres. Des processeurs très influents et très populaires à leur époque. Le pipeline RISC est présent dans presque tous les cours qui abordent le sujet du pipeline, que ce soit pour son intérêt historique, pour son apparente simplicité, ou par habitude pédagogique. Il est cependant loin d'être idéal au niveau pédagogique. Sa simplicité apparente est trompeuse et il a de nombreuses particularités qui ne sont pas évidentes à comprendre. Il a beau avoir un nombre limité d'étages, il est en réalité optimisé d'une manière assez subtiles, et ces optimisations ne sont pas intuitives. Je vais cependant aborder ce pipeline RISC classique rapidement, ce qui vous sera utile si jamais vous souhaitez consulter d'autres sources, des cours, des articles wiki ou autres. Il s'agit d'un pipeline à 5 étages, qui met l'ALU et l'unité mémoire dans deux étages consécutifs. Les 5 étages sont les suivants : * ''Instruction Fetch'' (IF) pour l'étage de ''Fetch'' ; * ''Instruction Decode'' (ID) pour l'étage de décodage ; * ''Execution'' (EXEC) pour l'étage d’exécution ; * ''Memory'' (MEM) pour l'étage d'accès mémoire ; * ''Writeback'' (WB) pour l'étage d'enregistrement dans les registres ; Il est conçu pour une architecture RISC, avec un jeu d'instruction adapté pour simplifier le pipeline. Déjà, le processeur ne supporte pas les instructions multi-cycles, ce qui signifie que toutes les instructions se font en un cycle d'horloge. Exit donc les multiplications et divisions, qui sont absentes de ce processeur. Et c'est une simplification appréciable, car supporter des instructions multi-cycles complexifie grandement le pipelines. D'ailleurs, dans les deux-trois chapitres qui vont suivre, on mettra les instructions multi-cycles sous le tapis, par souci pédagogique. Par contre, malgré ses simplifications, il gère les modes d'adressage indicés, et d'autres modes d'adressages qui demandent de faire des calculs d'adresse. Les calculs d'adresse ne sont pas réalisé dans une unité de calcul d'adresse séparée, mais dans l'ALU entière. Et c'est pour cela qu'il utilise un étage d'exécution et un étage mémoire séparé. Quelques cours utilisent parfois une version simplifiée à 4 étages, qui fusionne l'étage d'exécution et d'accès mémoire, qui est nettement plus simple à comprendre. Bizarrement, ce pipeline n'utilise pas l'ALU entière pour faire les branchements. Elle utilise à la place des additionneurs séparés de l'ALU. Le principe est que cela permet d'exécuter les branchements en avance, ce qui a des avantages qui deviendront évident au chapitre suivant, quand nous parlerons des problèmes que causent les branchements pour un pipeline. Disons que pour une utilisation optimale du pipeline, les branchements doivent être exécutés le plus tôt possible. ===La lecture des opérandes se fait en parallèle du décodage=== L'unité de décodage est très simple, elle n'a pas de microcode. C'est nécessaire pour que le décodage se fasse en un seul cycle d'horloge. De plus, les processeurs RISC utilisent des encodages simples, faciles à décoder. Leurs instructions sont de taille fixes, elles étaient toutes codées sur 32 bits sur les processeurs avec ce pipeline. Une subtilité est que la lecture des opérandes se fait en parallèle du décodage, et non après. C'est étrange, pas intuitif, et cela complexifie le pipeline. Les raisons derrière ce choix sont multiples. La première est que cela permet d'exécuter les branchements conditionnels en avance. La seconde est une histoire de dépendances structurelles que nous ne pouvons pas aborder ici. Avec ce choix, l'équilibrage du pipeline n'est pas parfait, vu que l'étage de décodage fait beaucoup de choses. Il faut dire qu'on a fusionné l'étage de décodage avec l'étage ''Read Operand''. Le décodage devient donc beaucoup plus compliqué, car il faut extraire des numéros/noms de registre précocement lors du décodage. Heureusement, le pipeline RISC classique était prévu initialement pour des processeurs MIPS, des processeurs RISC avec un encodage très simple. Le décodage des instructions était très simple, les opcodes étaient tous à la même place, les noms/numéros de registres aussi, on pouvait extraire l'opcode et le noms/numéros de registre au tout début du décodage. Les noms/numéros de registre étaient extraits simplement avec quelques multiplexeurs, puis envoyés au banc de registre pendant que l'unité de décodage finissait son travail. Mais notons que cela ne fonctionne que sur des processeurs RISC, et encore : il faut que l'encodage des instructions soit assez simple pour le permettre. C'est un détail qui ne se généralise pas. ===Les branchements, leur exécution et leur décodage=== L'étage de chargement dispose d'une première optimisation assez intéressante : il effectue la mise à jour du program counter en parallèle de l'accès mémoire. Le ''program counter'' est directement relié à l'entrée d'adresse du cache ou de la mémoire, son incrémenteur et les MUX pour les branchements sont situés après. Par contre, la gestion des branchements est assez complexe. Les architectures MIPS peuvent faire un branchement qui s'exécute si deux registres sont égaux. Le calcul d'un branchement demande donc de comparer deux registres, puis de décider s'il faut brancher selon le résultat. Une première possibilité, la plus intuitive, place le comparateur dans l'étage d'exécution. D'autres implémentations utilisent l'unité de calcul entière pour faire la comparaison, ce qui est équivalent. [[File:MIPS Architecture (Pipelined).svg|centre|vignette|upright=2.5|MIPS Architecture (Pipelinée)]] Mais le pipeline RISC classique exécute la comparaison dans l'unité de décodage, juste après la lecture des registres ! L'avantage de faire ainsi n'est pas évident, mais le deviendra dans le chapitre suivant. Mais cela se fait au prix d'un étage de décodage bien chargé, le pipeline est très déséquilibré. LLe schéma précédent montre un exemple, mais sur une variante 4 étages du pipeline RISC classique. [[File:Conditional Microprocessor 2.0 Pipeline Design 1.1.png|centre|vignette|upright=2.0|Le circuit noté JUMP est le comparateur qui sert à comparer deux registres. CF est un bit du registre d'état utilisé pour les branchements.]] Un autre détail est que le calcul des branchements relatifs est réalisé dans l'unité de calcul. Quelques processeurs exécutaient les branchements conditionnels dans l'ALU entière. Pour rappel, les branchements relatifs ajoutent une constante au contenu du ''program counter'', afin de brancher X adresses après/avant l’instruction courante. Il y a donc une addition à faire, qui est réalisée par un additionneur dédié dans l'unité de chargement, du moins dans la majorité des cas. Mais le pipeline RISC préfère utiliser l'additionneur de l'ALU entière pour cela, pour diverses raisons. Le ''program counter'' est donc propagé dans le pipeline, et est connecté à un multiplexeur en entrée de l'ALU entière. ==La performance d'un pipeline== Revenons un peu sur les pipelines synchrones. L'usage d'un pipeline augmente les performances, mais essayons de comprendre pourquoi. La raison est que l'on peut exécuter plusieurs instructions en même temps. Mais il se pourrait que cela aie d'autres effets, par exemple sur le temps d’exécution des instructions ou la fréquence. Pour comprendre toutes les conséquences de l'usage d'un pipeline, le mieux est d'étudier l'impact du pipeline sur divers paramètres du processeur : fréquence, temps d’exécution, parallélisme d'instruction, et autres. Nous allons nous focaliser sur la fréquence, le temps d’exécution d'une instruction et le nombre d'instructions exécutées en parallèle. ===La performance théorique d'un pipeline idéal (approche simplifiée)=== Pour commencer, nous allons voir cas d'un pipeline idéal, c'est à dire que nous allons négliger le fait qu'il y a des registres entre les étages du pipeline. Ils ont un temps de propagation non-nul, et ont donc un effet sur la fréquence et sur la latence des instructions. Mais pour simplifier les calculs, nous allons négliger le temps de propagation des registres inter-étages. Sur les processeurs réels, certains étages possèdent un chemin critique plus long que d'autres. On est alors obligé de se caler sur l'étage le plus lent, ce qui réduit quelque peu le gain. La durée d'un cycle d'horloge doit être supérieure au temps de propagation de l'étage le plus lent. [[File:Pipelining réel d'un circuit.png|centre|vignette|upright=2.5|Pipelining hétérogène d'un circuit]] Cependant, nous allons supposer que les étages sont assez bien équilibrés, de manière à avoir le même temps de propagation. Le pipeline qu'on va étudier est donc un cas irréaliste de pipeline, idéal. Prenons un processeur qui exécute toutes ses instructions en un seul cycle sur un processeur et découpons ce processeur en 5 étages équilibrés. Voici ce que l'on obtient : [[File:Effet de l'usage d'un pipeline sur la fréquence d'un processeur.png|centre|vignette|upright=2.0|Effet de l'usage d'un pipeline sur la fréquence d'un processeur.]] Le schéma précédent montre que la fréquence change entre les deux situations car le cycle d'horloge n'est pas déterminé par l'instruction entière, mais par le temps de propagation d'un étage. Et cette durée correspond à la durée d'un cycle, divisée par le nombre d'étages. On passe donc c'un processeur dont la fréquence est de : : <math>f = {1 \over t}</math>, avec t le temps d’exécution d'une instruction (sans pipeline). à un processeur de fréquence : : <math>f_\text{pipeline} = \frac{1}{t \over N} = N \times f</math>, avec N le nombre d'étages. On voit que la fréquence a été multipliée par le nombre d'étages avec un pipeline ! En clair, l'usage d'un pipeline permet donc de multiplier la fréquence par un coefficient plus ou moins proportionnel aux nombres d'étages. Par contre, le temps d’exécution d'une instruction ne change pas avec ou sans pipeline ! Certes, la fréquence est multipliée par N. Mais une instruction qui mettait un cycle d'horloge pour s'exécuter en prend maintenant N. Les deux phénomènes se compensent exactement, le temps d'exécution d'une instruction reste le même. Si la fréquence est multipliée par N, c'est compensée par le fait que l'instruction prend maintenant N étages pour s’exécuter, et donc N cycles d'horloge. Le gain en performance vient du fait que le pipeline exécute plusieurs instructions simultanées, au lieu d'une seule sans pipeline. Il y a précisément une instruction dans chaque étage maximum, ce qui multiple la puissance de calcul maximale par le nombre d'étages du pipeline. En clair, le pipeline ne réduit pas le temps d’exécution d'une instruction, mais augmente les performances en en exécutant plusieurs presque simultanément. Si la latence reste la même, le débit du processeur augmente. Au passage, peut-être avez-vous pensé à utiliser l'équation vue dans le chapitre sur la performance d'un ordinateur : : <math>\text{Temps d’exécution d'un programme} = N_{instructions} \times \frac{CPI}{f}</math>, avec f la fréquence, CPI le nombre de cycles moyen par instruction, et <math>N_{instructions}</math> le nombre d'instructions à exécuter. Mais l'équation en question ne fonctionne que si on suppose que les instructions sont exécutées l'une après l'autre. ===La performance théorique d'un pipeline avec des registres inter-étages=== En théorie, le raisonnement précédent nous dit que le temps d’exécution d'une instruction est le même sans ou avec un pipeline. Cependant, il faut prendre en compte les registres intercalés entre étages du pipeline, qui ajoutent un petit peu de latence. Nous allons noter <math>\tau</math> le temps de propagation d'un de ces registres et refaire les calculs précédents, en tenant compte de ce terme. Le temps de parcours d'un étage devient : : <math>t_\text{étage} = \frac{t}{N} + \tau</math> La fréquence du processeur est l'inverse de <math>t_\text{étage}</math>, ce qui donne : : <math>f = \frac{1}{\frac{t}{N} + \tau} = \frac{N}{t + \tau \times N}</math> L'équation précédente nous dit que la fréquence du processeur avec un pipeline augmente, comparé à un processeur sans pipeline, mais pas autant que dans le cas idéal précédent. Elle n'est pas multipliée par le nombre d'étages, mais un peu en-dessous. Passer de 1 étage à 2 donne un gain en fréquence, mais passer de 20 à 40 aura un effet beaucoup plus faible. Les rendements sont rapidement décroissants, la durée d'un étage étant de plus en plus dominée par la latence des registres. On peut calculer le gain en comparant la fréquence avec un pipeline "parfait", où les registres sont négligeables : : <math>\frac{f_\text{Pipeline avec registres}}{f_\text{Pipeline sans registres}} = \frac{1}{{N \tau \over t} + 1}</math> Le résultat est inférieur à 1 du fait de l'influence des registres de pipeline. Le terme <math>{N \tau \over t}</math> correspond au pourcentage de temps passé à traverser les registres par rapport au temps de propagation sans les registres. Par exemple, si le temps de propagation des registres prend la moitié du temps de propagation, alors ce terme vaut 1 et la fréquence est divisée par deux. ===Le monde réel : l'exemple des processeurs Intel=== Les développements précédents sont très intéressants, mais il reste à voir ce que cela donne dans le monde réel. Pour cela, il faut prendre un échantillon de processeurs et comparer leur fréquence en fonction de la longueur de leur pipeline. Mais il faut tenir compte de la finesse de gravure, qui impacte fortement la fréquence du processeur et fausse les comparaisons. Il est possible de déterminer une une ''fréquence relative'', à savoir la fréquence à finesse de gravure égale, par rapport à un processeur de référence. Et on s’aperçoit que cette fréquence relative est fortement reliée aux nombres d'étages du pipeline. Un processeur à haute fréquence relative a un pipeline plus long que ses concurrents de fréquence relative plus basse. La relation n'est pas proportionnelle, du fait des registres inter-étages et de l’hétérogénéité des latences intra-étage. Par exemple, regardons la fréquence relative des processeurs Intel d'avant le Pentium 4 (les seuls pour lesquels j'ai les données). Voici ce qu'on obtient : [[File:Fréquences relatives processeurs Intel pré-Pentium 4.png|centre|vignette|upright=2|Fréquences relatives processeurs Intel pré-Pentium 4]] Et comparons la longueur de leur pipeline : {|class="wikitable" |- ! Processeur ! Longueur du pipeline |- | 286 | rowspan="4" | 5 |- | 386 |- | 486 |- | Pentium |- | Pentium 2/3 | 14 |- | Pentium 4 | 31 à 20 selon les modèles |} On s’aperçoit qu'il n'y a pas proportionnalité exacte, mais que la tendance est bonne. La profondeur du pipeline a presque triplé au passage au Pentium 2/3, mais cela s'est traduit par une hausse de fréquence de seulement 50%. Pour le Pentium 4, sa fréquence a sextuplé par rapport aux premiers CPU Intel, mais la fréquence a été multipliée par seulement 2,5. Avant les années 2000, la fréquence était un argument marketing puissant. Ce qui a poussé certains fabricants de processeurs à créer des processeurs avec un nombre d'étages élevé pour les faire fonctionner à très haute fréquence. C'est ce qu'a fait Intel avec le Pentium 4, dont le pipeline faisait 20 étages pour les Pentium 4 basés sur les architectures Willamette et Northwood, 31 étages pour ceux basés sur les architectures Prescott et Cedar Mill. L'approche a rapidement montré ces limites, poussant Intel à revenir à un nombre d'étages raisonnables pour les processeurs Core 2 Duo. ==Les exceptions précises== Les processeurs avec un pipeline ont un petit problème avec des exceptions matérielles. Les exceptions stoppent l’exécution du programme en cours et effectuent un branchement vers une routine d'interruption. Mais avant que l'exception n'ait été détectée, le processeur a chargé des instructions dans le pipeline en avance. Lorsque l'exception est détectée, elle mémorise le ''program counter'' de la dernière instruction chargée, et reprendre à cet endroit là. La conséquence est que les exceptions sont décalées de quelques cycles par rapport à un processeur sans pipeline. On dit que les exceptions sont ''imprécises''. [[File:Exception et pipeline.png|centre|vignette|upright=2|Exception détectée au 3ème étage d'un pipeline à 4 étage : deux instructions ont été chargées en avance.]] Et ce décalage de quelques cycles d'horloge est problématique. La majeure partie des exceptions sont traitées comme suit : la routine de l'exception traite la situation, puis le processeur redémarre l'instruction fautive. Un exemple est le cas d'une instruction d'accès mémoire qui déclenche un défaut de page : le défaut de page déclenche une exception, la routine d'exception traite le problème en chargeant la page voulue en RAM, puis re-démarre l'instruction mémoire. Mais re-démarrer l'instruction fautive implique de reprendre l'exécution du programme juste après l'instruction qui a déclenché l'exception. Si des instructions ont été chargées/exécutées en avance, ce n'est pas le cas : on reprend plusieurs instructions après. En soi, le processeur peut très bien ne rien faire contre ce problème, et utiliser des exceptions imprécises. Le problème peut être géré de manière purement logicielle. Au pire, cela peut poser quelques problèmes à quelques programmes comme les débuggers, même si les cas sont rares. Par contre, cela implique que l'on ne peut pas traiter les exceptions en re-démarrant l'instruction fautive. Et cela complexifie grandement la gestion des exceptions, le système d'exploitation est plus complexe, le cout logiciel est là. Pour régler ce petit problème, les concepteurs de processeur ont fait en sorte que le processeur gère lui-même exceptions et interruptions correctement. Ils permettent une gestion des '''exceptions précises'''. ===Le hardware pour les exceptions précises=== Supporter les exceptions précises demande des modifications assez mineures du processeur. L'idée est que les instructions chargées en avance sont juste annulées, elles n'enregistrent pas leur résultat dans les registres et n’accèdent pas à la mémoire. En effet, si une instruction n'enregistre pas son résultat, que ce soit dans les registres ou la RAM, c'est comme si elle n'avait rien fait. Si une exception a lieu, il suffit de ne pas enregistrer les résultats des instructions suivantes dans les registres, jusqu’à ce que toutes les instructions fautives aient quitté le pipeline. Les exceptions précises sont gérées dans le dernier étage du pipeline, l'étage de ''writeback'', celui d'écriture dans les registres. Pour cela, tout étage fournit à chaque cycle un '''indicateur d'exception''', un groupe de quelques bits qui indiquent si une exception a eu lieu et laquelle le cas échéant. Ces indicateurs sont propagés dans le pipeline, ils passent à l'étage suivant à chaque cycle. Une fois arrivé à l'étage d’enregistrement, un circuit combinatoire vérifie ces bits pour détecter si une exception a été levée, et interdit l'écriture dans les registres en cas d'exception. Si les écritures sont interdites, elles le sont durant un certain nombre de cycles, dépendant de l'exception levée. On dit qu'on '''vide le pipeline''' des instructions fautives. [[File:Propagation de l'indicateur d'exception.png|centre|vignette|upright=2|Propagation de l'indicateur d'exception.]] Il faut aussi qu'une fois l'exception terminée, le programme reprenne là où il faut. Pour cela, il faut restaurer le ''program counter'' pour qu'il pointe vers l’instruction adéquate. Il s'agit de l'instruction qui a déclenché l'exception. Pour cela, même solution : le ''program counter'' est propagé dans le pipeline et est restauré en cas d'exception en prenant le ''program counter'' disponible à l'étage d'enregistrement. Une utilisation "détournée" du système d'exceptions précise est la gestion des défauts de cache. Elle permet de ne pas bloquer le pipeline au moment même où un défaut de cache a lieu, mais retarde le blocage. L'idée est qu'un défaut de cache lève une exception matérielle, nommée ''cache fault''. Les instructions qui suivent la lecture/écriture fautive sont alors propagées dans le pipeline et sont annulées à la toute fin. Une fois le pipeline vidé, l'instruction fautive est re-exécutée une fois que le défaut de cache est terminé. En clair, on vide le pipeline avant de le re-démarrer. Un simple compteur est utilisé pour temporiser le re-démarrage du pipeline. Les exceptions précises sont aussi utilisées pour corriger des problèmes liés aux branchements, comme on le verra dans le chapitre suivant. ===Les écritures mémoire sont retardées avec des exceptions précises=== Il faut préciser une chose importante : toutes les écritures sont annulées, y compris les écritures en mémoire RAM, y compris celles dans le cache de données. Mais cela pose un problème : les instructions STORE sont censées être exécutées dans l'étage MEM ou Exec, soit avant l'étage de ''Writeback''. Notez bien le censé : ce n'est pas le cas avec les exceptions précises. En réalité, avec des exceptions précises, les instructions STORE font leur écriture dans l'étage de ''Writeback'', l'étage final. Les écritures mémoire sont donc retardées jusqu'à l'étage de ''Writeback''. La mise en attente se fait grâce à une mémoire spécialisée, appelée la '''file d'écriture'''. Le terme "file" trahit le fait que c'est une mémoire FIFO, le caractère FIFO permettant de conserver l'ordre des écritures. L'idée est la suivante : l'étage MEM fait l'écriture dans la file d'écriture, puis l'étage de ''Writeback'' la met en attente. A l'étage de ''Writeback'', la file d'écriture exécute l'écriture dsans le cache. L'écriture est mise en attente dans l'étage MEM, et est finalisée dans l'étage de ''Writeback''. Si une exception est détectée, l'étage de ''Writeback'' vide la file d'écriture, ce qui annule les écritures mises en attente. Les écritures faites à tord sont donc annulées. [[File:Store Queue sur un pipeline fixe.png|centre|vignette|upright=2|File d'écriture sur un pipeline fixe]] Avec une file d'écriture, l'étage MEM s'occupe des lectures, et l'étage ''Writeback'' des écritures proprement dit. Ils font tous deux un accès au cache, ce qui est une dépendance structurelle. Une solution intuitive, utilise un cache de données multiport, avec un port de lecture séparé du port d'écriture. Le port de lecture est utilisé par l'étage MEM, alors que le port d'écriture est utilisé par l'étage de ''Writeback''. : La file d'écriture font nous parlons ici ne doit pas être confondue avec le ''Write buffer'' présent dans la hiérarchie mémoire. Les deux sont traduit dans ce cours avec le terme file d'écriture, mais il s'agit de deux choses différentes. La file d'écriture peut mettre en attente plusieurs écritures. Le nombre d'écriture à mettre en attente dépend du pipeline. Le nombre exact est égal au nombre d'étages situés entre l'étage MEM et l'étage ''Writeback'', plus 1. Par exemple, les pipelines précédents n'ont pas d'étages entre MEM et ''Writeback'', ce qui fait que la ''Write Queue'' n'a qu'une seule entrée. Il peut être remplacé par un simple registre, mais ce n'est que rarement fait. Mais de nombreux pipelines ont des étages entre les étages MEM et ''Writeback''. Par exemple, s'il y a 4 étages entre les deux, il faut que la file d'écriture puisse mettre en attente 5 écritures. Un autre point est que l'étage MEM peut lui-même prendre plusieurs cycles d'horloge, ce qui est possible si le cache est pipeliné. Dans ce cas, ce nombre de cycle s'ajoute au nombre d'entrées. {|class="wikitable" |- ! colspan="3" | Étages MEM !! colspan="4" | Étages autres !! Étage de ''Writeback'' |- | MEM 1 || MEM 2 || MEM 3 || X || X || X || X || ''Writeback'' |- ! colspan="8" | File d'écriture |- | Entrée 1 || Entrée 2 || Entrée 3 || Entrée 4 || Entrée 5 || Entrée 6 || Entrée 7 || Entrée 8 |} Pour résumer, : <math>\text{Capacité de la file d'écriture} = \text{Nombre d'étages MEM} + \text{Nombre d'étages entre MEM et WB} + 1</math> ===Le contournement de la file d'écriture=== Les écritures sont donc retardées de plusieurs cycles, pour s'exécuter en fin de pipeline. Et il se peut que la donnée écrite soit lue pendant ce laps de temps. Il s'agit du cas où une instruction STORE est suivie par une instruction LOAD, et que les deux accèdent à la même adresse. Lire une donnée qu'on vient d'écrire n'est pas si rare, surtout sur les processeurs x86, qui ont peu de registres, et doivent parfois faire de la place pendant quelques cycles, avant de rapatrier des données dans les registres. Vu que la lecture a lieu pendant la mise en attente, la donnée n'a pas été écrite dans le cache. Toute lecture dans le cache lira une donnée invalide. Mais il y a une solution assez évidente. L'idée est que les lectures consultent à la fois le cache et la file d'écriture. La file d'écriture doit cependant être modifiée pour fonctionner comme un mélange entre mémoire cache et mémoire FIFO. Le cache envoie l'adresse à lire à la file d'écriture, et celle-ci vérifie si une écriture est en attente à cette adresse. Si c'est le cas, c'est un ''succès de file d'écriture'', et celle-ci envoie alors la donnée associée à l'étage d'accès mémoire. Sinon, la lecture accède au cache, là où se trouve la donnée à lire. La solution porte le nom de ''Store to load Forwarding'' ou encore de '''réacheminement écriture-vers-lecture'''. [[File:Store to load forwarding sur un pipeline simple.png|centre|vignette|upright=2|Store to load forwarding sur un pipeline simple]] <noinclude> {{NavChapitre | book=Fonctionnement d'un ordinateur | prev=Le Translation Lookaside Buffer | prevText=Le Translation Lookaside Buffer | next=La prédiction de branchement | nextText=La prédiction de branchement }} </noinclude> 4g75n963nmt3c7csju6dzsdrispcttk 775569 775568 2026-10-22T14:11:01Z Mewtow 31375 /* Les étages du pipeline */ 775569 wikitext text/x-wiki Dans ce chapitre, nous allons voir la technique du '''pipeline d'instruction''', qui est utilisée sur tous les processeurs modernes. L'introduction du pipeline a eu lieu sur les premiers ''mainframes'' et les supercalculateurs, dans les années 60-70. Elle a ensuite été reprise pour les premiers processeurs RISC commerciaux et s'est démocratisée au point d'être présente sur tous les processeurs CISC modernes. C'est donc un incontournable pour tout cours d'architecture des ordinateurs et il est enfin temps d'en parler. Introduire un pipeline entraine une modification profonde de la microarchitecture du processeur, ainsi que l'ajout de nombreuses optimisations qui ne seraient pas possibles dans pipeline : exécution superscalaire, exécution dans le désordre, prédiction de branchements, etc. Nous passerons une dizaine de chapitre à parler du pipeline des processeurs modernes, ainsi que toutes les techniques qui vont avec. ==Le pipeline : rien à voir avec un quelconque tuyau à pétrole !== Pour expliquer ce qu'est un pipeline d'instructions, il faut faire un rappel sur les différentes étapes d'une instruction. Dans le chapitre sur la micro-architecture d'un processeur, on a vu qu'une instruction est exécutée en plusieurs étapes bien distinctes : le chargement, le décodage, et diverses étapes pour exécuter l'instruction. Ces dernières dépendant du processeur, de l'instruction, du mode d'adressage, etc. Pour comprendre ce que fait le pipeline, comparons l’exécution de cette instruction sans et avec pipeline. Dans les exemples qui vont suivre, nous allons supposer que les instructions se font toutes en 5 étapes, qu'on ne détaillera pas, car ce n'est pas important à ce stade du chapitre. L'essentiel est qu'une instruction se fasse en plusieurs étapes, point. Sans pipeline, ces étapes sont réalisées les unes après les autres, la précédente doit être terminée avant de démarrer la suivante. De plus, on doit attendre qu'une instruction soit finie pour exécuter la suivante. L'instruction exécute toutes ses étapes, avant que l'instruction suivante démarre à l'étape 1. [[File:Nopipeline.png|centre|vignette|upright=2.0|Exécution de trois instructions sans pipeline.]] Avec un pipeline, on exécute plusieurs instructions différentes, chacune étant à une étape différente des autres. Pour cela, on démarre une nouvelle instruction par cycle (dans des conditions optimales). Une instruction passe d'une étape à la suivante à chaque cycle d'horloge. A chaque instant, toutes les étapes travaillent sur une instruction différente. [[File:Fivestagespipeline.svg|centre|vignette|upright=2.0|Exécution de trois instructions avec pipeline.]] Pour comprendre le diagramme précédent, il faut comprendre à un instant t, il y a plusieurs instructions, chacune à une étape différente. Un instant t correspond à une colonne dans le diagramme précédent. Le diagramme suivant le montre bien. La colonne rouge correspond à un cycle d'horloge, la jaune immédiatement suivant est le cycle d'horloge suivant, idem pour le bleu. [[File:Pipeline chaîne de traitement.png|centre|vignette|upright=2.0|Pipeline : principe.]] Une illustration plus intuitive est la suivante. Chaque instruction correspond à une couleur : [[File:Pipleine-3.png|centre|vignette|upright=2.0|Pipeline à 5 étages.]] Le pipeline contient donc plusieurs instructions, qui sont à des étapes différentes de leur exécution. Les instructions en question sont appelées des '''instructions en vol''', terme de mon cru que vous ne trouverez ''a priori'' que dans ce cours. ===Les étages du pipeline=== En général, découper une instruction en plusieurs étapes suit une certaine logique. Il y a une étape pour l'unité de chargement, une pour le décodage de l'instruction, une pour lire les opérandes d'une instruction, une pour l'unité de calcul/unité mémoire, et une pour enregistrer le résultat dans les registres. Il n'y a pas besoin de refaire tout le processeur de zéro. Le tout parait donc être très simple : séparer l'unité de chargement, le décodeur et le chemin de données a l'air assez facile. Cependant, ce découpage simple achoppe sur quelques points de détail. Tout d'abord, chaque étape d'une instruction doit s'exécuter indépendamment des autres, ce qui signifie utiliser des circuits indépendants pour chaque étape. Or, un processeur sans pipeline tend à mutualiser certains circuits. Par exemple, sur un processeur 16 bits sans pipeline, l'ALU peut être utilisée pour exécuter les instructions d'addition/soustraction, mais aussi pour incrémenter le ''program counter'', calculer des adresses lors d'un accès mémoire, etc. Avec un pipeline, on ne peut pas se le permettre, chaque étape doit utiliser son propre additionneur. En général, il est impossible de réutiliser un circuit dans plusieurs étapes, comme on le fait dans certains processeurs sans pipeline. Chaque circuit dédié à une étape est appelé un '''étage du pipeline'''. Le nombre d'étapes par instruction, et donc le nombre d'étages du pipeline, est appelé la '''profondeur du pipeline'''. Il correspond au nombre maximal théorique d'instructions en vol, au nombre d'instructions exécutées en même temps dans le pipeline. Et j'ai bien dit maximal théorique : ce maximum n'est pas toujours atteint, comme on le verra plus tard. Pour les curieux, voici les longueurs de pipeline de certains processeurs plus ou moins connus. {|class="wikitable" |- ! Processeur !! Longueur du pipeline |- | Motorola PowerPC G4 || 7 |- | MIPS R4400 || 8 |- | Intel Itanium || 10 |- | Intel Pentium II || 14 |- | Intel Pentium 3 || 10 |- | Intel Pentium 4 ||20 |- | Intel Pentium 4 Prescott ||31 |- | AMD Athlon ||12 |- | AMD Athlon 64 ||16 |- | IBM PowerPC 970 ||16 |- | Sun UltraSPARC IV ||14 |} Plus haut, il a été dit que les étages du pipeline sont censés être totalement séparés, mais la réalité est beaucoup plus complexe. Dans la réalité, il existe quelques circuits qui sont partagés entre plusieurs étages, car on n'a pas le choix. En conséquence, deux instructions peuvent accéder à la mémoire simultanément, exécuter une micro-opération dans la même unité de calcul, lire le même registre en même temps, etc. De telles '''dépendances structurelles''' surviennent quand plusieurs instructions veulent accéder à un circuit du processeur en même temps. Les processeurs modernes incorporent de nombreux circuits capables de gérer les dépendances structurelles, qu'on abordera au fur et à mesure que les occasions se présentent. Cependant, même si un circuit est partagé par un même étage, cela ne signifie pas que tout est perdu. Prenons par exemple le cas du banc de registres. Il est fréquent qu'un registre soit lu dans un étage et écrit dans un autre, comme on le verra dans ce qui suit. Heureusement, le banc de registre est conçu pour gérer la situation, car il a des ports de lecture séparés des ports d'écriture. Il y aura donc un étage pour lire dans les registres, un étage pour écrire dedans. Et ces deux étages utilisent des ports séparés, ce qui fait qu'il n'y a pas de dépendances structurelles. ===Les pipelines fixes et variables=== Les pipelines peuvent se classer en deux types, suivant leur "nombre d'étage global". La distinction sépare les pipelines de longueur fixe des pipelines de longueur variable. Les pipeline de longueur fixe ont un nombre d'étages fixe, qui est le même pour toutes les instructions. De tels pipelines sont aussi appelés des '''pipelines fixes'''. Ce sont les pipelines les plus intuitifs, mais ils ont un gros défaut : la gestion des instructions multi-cycles. Le problème est qu'il y a des instructions plus rapides que d'autres, les plus rapides mettant un cycle pour s’exécuter, d'autres mettant plusieurs cycles. Or, on voit mal comment un pipeline fixe pourrait gérer des instructions qui s'exécutent en un cycle d'un côté, et des instructions qui s’exécutent en plusieurs cycles de l'autre, avec le même nombre d'étages (et donc de cycles) pour toutes. Mais non seulement c'est possible, mais en plus, cela peut se faire de deux manières. En pratique, il y a deux solutions, pour les pipelines fixes. Avec la première, toutes les instructions s'exécutent en un cycle d'horloge, pas un de plus, pas un de moins. Les opérations arithmétiques sont exécutées en un seul cycle d'horloge dans l'ALU entière, y compris les instructions "complexes" comme les multiplications ou divisions. Les accès mémoire aussi se font aussi en un seul cycle d'horloge, sauf en cas de défaut de cache. les pipelines de ce type seront appelés des '''pipelines 1-cycle'''. Il s'agit d'un cas fortement irréaliste, aucun processeur avec un pipeline ne fait dans le monde réel. Une autre solution accepte les instructions multi-cycles. Et parmi ces instructions, l'une d'entre elle sera la plus lente de toute. Le processeur va se caler sur celle-ci. Par exemple, imaginons que l'instruction la plus lente prenne 15 cycles d'horloge, pour s'exécuter dans l'ALU entière. Son exécution sera pipelinée, de manière à se faire sur 15 étages. De plus, toutes les instructions feront 15 cycles pour s'exécuter, elles prendront 15 étages pour. Quitte à ce que certains étages ne fassent rien. Par exemple, l'addition pourra se faire en deux cycles d'horloge, mais les 13 restants ne feront rien. Nous verrons plus loin dans ce chapitre comment cette solution s'implémente, elle est surprenamment utile. [[File:Processeur à pipeline fixe qui gére des instructions multicycles.png|centre|vignette|upright=2.5|Processeur à pipeline fixe qui gére des instructions multicycles]] Enfin, il existe des '''pipelines de longueur variables''', qui utilisent un nombre d'étages différents selon l'instruction. Avec un pipeline variable, certaines instructions peuvent prendre 1 cycle, d'autres 7 cycles, d'autres 9, d'autres 25, etc. Les instructions rapides prennent moins de cycles que les autres. Typiquement, toutes les instructions partagent lse premiers étages, qui chargent et décodent les instructions, mais le chemin de donnée est lui segmenté en plusieurs pipelines distincts, un par unité de calcul. Il y a ainsi un pipeline pour l'ALU entière, un autre pour le multiplieur entier, un autre pour la FPU, un autre pour l'unité mémoire, etc. [[File:Pipeline avec un nomrbe variable d'étages par instructions.png|centre|vignette|upright=2.5|Pipeline avec un nomrbe variable d'étages par instructions]] Nous les appellerons des '''pipelines variables''', pour simplifier les explications. Ils ont l'air plus intuitifs que les pipelines fixes, sont aussi plus flexibles, mais ils sont nettement plus complexes que les pipelines fixes. De nombreuses subtilités surviennent sur ces pipelines variables, et c'est ce qui explique que nous ne les verrons pas avant facilement trois-quatre chapitres. Nous allons d'abord voir le fonctionnement des pipelines de longueur fixe, avant d'étudier les pipelines variables. ===Les pipelines synchrones et asynchrones=== Il faut que les instructions progressent d'un étage à un autre au rythme adéquat. Pour cela, la plupart des pipelines intercalent des registres entre les étages, pour les isoler mais aussi pour synchroniser leurs échanges. Les registres en question seront appelés des '''registres de pipeline''' dans ce qui suit. Un registre de pipeline s'intercale entre deux étages consécutifs. L'étage précédant ce registre écrit son résultat dedans, l'étage suivant lit son contenu quand c'est son tour, généralement au cycle d'horloge suivant. La présence de registres aide grandement à implémenter de quoi commander le pipeline. Les transferts entre étages du pipeline peuvent être synchronisés par une horloge, ou de manière asynchrone. [[File:Pipeline sync-async.svg|centre|vignette|upright=1.5|Pipeline synchrone et asynchrone.]] Si le pipeline est synchronisé sur l'horloge du processeur, on parle de '''pipeline synchrone'''. Chaque étage met un cycle d'horloge pour effectuer son travail, à savoir, lire le contenu du registre qui le relie à l'étape précédente et déduire le résultat à écrire dans le registre suivant. Ce sont ces pipelines que l'on trouve dans les processeurs Intel et AMD les plus récents. [[File:Pipeline buffered synchrone.png|centre|vignette|upright=2.0|Pipeline buffered synchrone]] Sur d'autres pipelines, il n'y a pas d'horloge pour synchroniser les transferts entre étages, qui se font via un « bus » asynchrone. On parle de '''pipeline asynchrone'''. La synchronisation des échanges entre deux étages se fait grâce à un signal de requête et un signal acquittement. Le signal de requête REQ indique que l'étage précédent a terminé son travail et qu'on peut lire son résultat. Le signal d'acquittement signifie que l'étage destinataire a pris en compte la donnée transmise. Les signaux de commande de ces pipelines asynchrones peuvent se créer facilement avec des portes C. [[File:Micropipeline-structure.svg|centre|vignette|upright=2.0|Micropipeline-structure]] Les pipelines n'utilisant pas de registres sont assez rares, mais ils existent, ce sont les ''pipelines à vague''. Ils se contentent d'enchainer des étages les uns à la suite des autres, et laissent les données se propager librement d'un étage à l'autre. Ils jouent sur un timing très précis pour propager les données entre étages au bon timing, de manière à ce que le tout fonctionne comme un pipeline. Leur conception est cependant très complexe, ce qui fait qu'ils ne sont jamais utilisés en pratique. La règle est clairement de séparer les étages dans des circuits séparés, interfacés par des registres. ==La séparation des étages de pipeline== Découper un processeur en pipeline peut se faire de différentes manières, le nombre et la fonction des étages variant fortement d'un processeur à l'autre. Dans ce qui suit, nous allons voir quelques pipelines simples, faciles à étudier. Nous allons partir d'un processeur sans pipeline, et allons séparer les unités dans plusieurs étages. Le processeur de départ est très simple, nous allons supposer que son chemin de données contient une ALU entière, une unité mémoire et le banc de registres. Nous ajouterons d'autres unités de calcul, comme une FPU ou un multiplieur entier, plus tard. ===Le pipeline Fetch-Exec=== En guise de premier exemple, nous allons prendre le '''pipeline ''Fetch-Execute'''''. IL a seulement deux étages : un qui charge et décode l'instruction, l'autre qui exécute l'instruction. En clair, il sépare le séquenceur et le chemin de données dans deux étages séparés. Il s'implémente en séparant les deux étages par un registre, qui mémorise les signaux de commande en sortie du décodeur d'instruction. Les deux étages sont respectivement nommés ''Fetch'' et ''Exec'', ce qui donne son nom au pipeline. Il s'agit du pipeline le plus simple qui soit, mais il a pourtant été utilisé sur les processeurs Atmel AVR, ainsi que les processeurs PIC. [[File:The Fetch-Execute Cycle.svg|centre|vignette|upright=2|The Fetch-Execute Cycle]] Un problème avec ce pipeline est que les deux étages peuvent parfois faire un accès mémoire en même temps. Le pipeline doit lire une instruction à chaque cycle d'horloge, quelle que soit l'instruction. Si l'étape d'''Exec'' exécute un accès mémoire pour lire/écrire une donnée, le processeur fait deux accès concurrents : un pour charger l'instruction, un autre pour lire/écrire la donnée. Il s'agit techniquement d'une situation de dépendance structurelle, mais passons. La solution simple la plus simple est de passer à une architecture Harvard, avec deux mémoires séparées. Pour un processeur avec un cache, cela revient à utiliser un cache d'instruction séparé du cache de données, ce qui garantit que les deux étages ne se marcheront plus dessus et accéderont chacun à leur cache dédié. Une solution alternative utiliser un cache unique multiport, mais l'essentiel est qu'on puisse lire une instruction et accéder à une donnée en même temps. Précisons que tous les pipelines ont ce problème, sans exception ! Tous les pipelines que nous verrons dans ce cours font face au même problème et la même solution est appliquée. Le pipeline précédent est de loin le plus simple. Tous les pipelines qui existent ne sont qu'une amélioration de celui-ci. Par amélioration, on veut dire que l'étage de ''Fetch'' est découpé en plusieurs sous-étages, idem avec l'étage d'''Exec''. Concrètement, le processeur est découpé en deux : un '''''front-end''''' qui charge et décode les instructions, un '''''back-end''''' qui exécute les micro-opérations. La séparation entre ''front-end'' et ''back-end'' colle presque parfaitement à la séparation entre séquenceur et chemin de données, et ce n'est pas un hasard. Elle est cruciale, et elle sera la ligne rouge des 10 chapitres qui vont suivre. Découper le séquenceur ne se fait pas de la même manière que le découpage du chemin de données. Nous allons voir les deux séparément, en commençant par le découpage du séquenceur. ===Le pipelining du séquenceur=== Le '''pipeline ''Fetch-Decode-Exec''''' sépare l'unité de chargement de l'unité de décodage d'instruction dans deux étages séparés. Le résultat est un pipeline à trois étages : le premier étage correspond au calcul du ''program counter'' et à l'accès au cache, le second au décodage de l’instruction, le troisième à l’exécution de l'instruction par le chemin de données. Ces trois étapes sont souvent désignées sous les noms de ''Fetch'', ''Decode'' et ''Exec'', termes que nous utiliserons dans la suite de ce cours. Encore une fois, ils donnent leur nom au pipeline. Le pipeline est donc le suivant : * ''Fetch'' : chargement de l'instruction ; * ''Decode'' : décodage de l'instruction ; * ''Exec'' : exécute l'instruction. Bien que très simple, le pipeline ''Fetch-Decode-Exec'' a été utilisé dans des processeurs commerciaux grand public. Par exemple, les tout premiers processeurs ARM jusqu'aux processeurs ARM7 utilisaient un pipeline ''Fetch-Decode-Exec''. L’implémentation sépare l'unité de chargement et le décodeur d'instruction avec un registre. Pour cela, on profite du registre d'instruction, qui était déjà entre l'étage de chargement et l'étage de décodage. L'implémentation est donc terriblement simple. [[File:Pipeline à trois étages.png|centre|vignette|upright=2|Pipeline à trois étages]] Il est possible de scinder l'étape de chargement en deux étapes séparées : la mise à jour du ''program counter'' et l'accès au cache d'instruction. La première étape ne fait pas que calculer le ''program counter'', mais gère aussi les branchements au sens large. Elle incorpore des techniques de prédictions de branchement que nous verrons dans le chapitre suivant. En tout cas, elle fait suffisamment de travail pour avoir un étage dédié, le travail prenant facilement un cycle d'horloge complet. Le pipeline devient alors le suivant : * ''PC Update'' : mise à jour du ''program counter'' ; * ''Fetch'' : accès au cache d'instruction ; * ''Decode'' : décodage de l'instruction ; * ''Exec'' : exécute l'instruction. Précisons cependant une chose importante : la gestion des branchements se fait dans plusieurs étages. Le calcul des conditions est réalisé dans l'unité de calcul, donc dans l'étage d'''Exec''. Mais une fois l'adresse de destination connue, celle-ci doit être écrite dans le ''program counter'' , qui est lui dans l'étage de ''PC Update''. [[File:Pipeline PC-Fetch-Decode-Exec.png|centre|vignette|upright=2.5|Pipeline PC-Fetch-Decode-Exec]] Les processeurs modernes implémentent de nombreuses optimisations, qui partent du principe que le calcul du ''program counter'', l'accès au cache d'instruction, et le décodage sont trois étapes séparées. Mais nous verrons cela en temps voulu, dans le chapitre nommé "Les optimisations du chargement des instructions". Pour le moment, retenez que le début du pipeline peut être scindé en trois étapes nommées PC, ''Fetch'' et ''Decode'', qui peuvent elles-mêmes être séparées en sous-étapes pipelinées. ===Le pipelining du chemin de données=== Les pipelines précédents sont très simples à comprendre, car ils collent avec la séparation entre ''Program counter'', unité de chargement, décodage et chemin de données, qui nous est familière. Les pipelines qui vont suivre pipelinent leur chemin de données, d'une manière qui est moins intuitive. Autant découper le séquenceur en plusieurs circuits séparés est simple, autant découper le chemin de données ne l'est pas. Le chemin de données contient au minimum une unité de calcul, un banc de registres et l'unité mémoire (et un paquet d'interconnexion qu'on met sous le tapis). Reste à voir comment les pipeliner. Pour simplifier, nous allons prendre le cas d'un processeur RISC, pour éliminer les instructions ''load-op'', qui sont particulièrement problématiques avec un pipeline. Vu que le processeur a une architecture LOAD/STORE, les instructions d'accès mémoire vont dans l'unité mémoire, les instructions de calcul vont dans l'ALU entière. Il parait donc naturel de mettre les deux dans un même étage de pipeline, qu'on appellera l''''étage d’exécution'''. L'étage d'exécution utilise donc soit l'une, soit l'autre, pas les deux. L'étage d'exécution communique avec le banc de registre : pour récupérer les opérandes lues, pour enregistrer le résultat d'un calcul, ou la donnée lue par une lecture. Intuitivement, on se dit qu'il faudrait un étage pour lire dans le banc de registre et un autre pour écrire dedans. Et cela implique que le banc de registre est multiport, avec des ports de lecture et d'écriture séparés. Le résultat est une organisation en trois étages : * Chargement d’opérandes : lecture des opérandes depuis les registres. * Exécution : exécution de l'instruction dans l'unité de calcul ou l'unité mémoire. * Enregistrement : écriture du résultat dans les registres. [[File:Pipeline à 7 étages, avec mode d'adressae immédiat et absolu gérés.png|centre|vignette|upright=2.0|Pipeline à 7 étages naïf.]] Le pipeline précédent met l'unité mémoire et l'ALU entière en parallèle dans l'étage d'exécution. Soit l'une est utilisée, soit c'est l'autre. En clair, on met plusieurs unités en parallèle dans le même étage d'exécution. Et il est possible de faire pareil avec d'autres unités. Par exemple, on peut mettre le ''barrel shifter'' en parallèle de l'ALU entière et de l'unité mémoire. Les décalages iront dans le ''barrel shifter'', les autres opérations entières dans l'ALU entière, et les instructions LOAD/STORE dans l'unité mémoire. Une autre possibilité, complémentaire des précédentes, est d'utiliser une unité de calcul dédiée aux branchements, qui est placée dans l'étage d'exécution. L''''unité de branchements''' est la seule à être reliée au séquenceur, l'unité de calcul normale ne l'est pas. Cela simplifie grandement la conception du processeur, sans impact sur les performances. [[File:Pipeline de longueur fixe avec unités de calcul en parallèle.png|centre|vignette|upright=2|Pipeline de longueur fixe avec unités de calcul en parallèle]] Une subtilité avec un pipeline de ce genre est que les instructions ont des besoins différents, mais qu'on les force à rentrer dans un pipeline qui a exactement N étages. La conséquence inévitable est que certains étages de pipeline leurs sont inutiles. Et le mieux, pour s'en rendre compte, et de regarder quelques exemples. Les instructions MOV de copie entre registre n'utilisent ni l'unité de calcul ni l'unité mémoire. Elles lisent un registre et le recopient directement dans le registre destination? Seul le banc de registre est utilisé, l'étage d’exécution ne sert pour ainsi dire à rien. Une solution pour implémenter ces instructions est que l'ALU entière incorpore l'opération ''pass through'' qui recopie une entrée sur sa sortie. Les instructions MOV de copie inter-registres passent donc par l'ALU entière, mais celle-ci effectue donc un "NOP", elle ne fait rien. La conséquence est que l'étage d'exécution ne fait rien, mais l'instruction MOV quand même à travers celui-ci. [[File:Inactivation d'un étage de pipeline avec des multiplexeurs.png|centre|vignette|upright=1.5|Inactivation d'un étage de pipeline avec des multiplexeurs]] Le dernier étage enregistre quelque chose dans les registres : soit la donnée lue en mémoire, soit le résultat fournit par l'ALU. Il regroupe le port d'écriture du banc de registre, et quelques MUX. Et l'instruction STORE ne l'utilise pas, vu qu'elle n'a rien à enregistrer dans les registres. Pareil avec les branchements : ils n'enregistrent rien dans les registres, ils altèrent uniquement le ''program counter''. Cependant, les branchements et STORE passent quand même par cet étage, elles n'ont pas le choix. Simplement, elles ne font rien lors de cet étage. Les branchements inconditionnels directs sont eux encore plus problématiques : ils sont exécutés par le décodeur d'instruction. Qui dit branchement inconditionnel dit que l'on n'a pas besoin de tester de conditions, donc pas besoin d'utiliser l'ALU entière, ni l'unité de branchement. De plus, qui dit direct dit que l'adresse de destination est encodée dans le branchement, le décodeur peut l'extraire sans lire les registres. Et évidemment, pas besoin d'enregistrer quoique ce soit dans les registres. Les étages du chemin de données sont totalement inutilisés. Pour exécuter un tel branchement, l'unité de décodage envoie un NOP dans le chemin de données. En clair : elle dit aux étages de ne rien faire pendant un cycle d'horloge. Un tel NOP n'est cependant pas une instruction, mais une micro-opération NOP, interne au pipeline, qui a été générée lors du décodage. Nous verrons que de tels NOP sont utilisés pour bien d'autres choses. Aussi, je leur donner le nom de '''NOP de pipeline''', terme de mon invention. Ceci étant dit, passons à tout autre chose. Le pipeline précédent met en parallèle ALU entière et unité mémoire. Et cela pose un problème pour gérer certains modes d'adressages, qui demandent de faire des calculs d'adresse. Les calculs d'adresse ne peuvent pas être fait dans l'ALU entière, vu qu'elle est en parallèle de l'unité mémoire, pas avant elle. La seule solution est d'utiliser une unité de calcul d'adresse dédiée, placée avant l'unité mémoire. L'unité de calcul d'adresse est très simple, plus économe en circuit et plus rapide qu'une ALU entière vraie. Il y a donc une petite duplication de circuit, mais elle est nécessaire. Une solution alternative fait faire les calcul d'adresse dans l'ALU entière. Le chemin de données est alors découpé en quatre étapes : * ''Read Operands'' (RO) : lecture des opérandes dans les registres ; * ''Execution'' (EXEC) : exécution d'un calcul dans l'unité de calcul ; * ''Memory'' (MEM) : accès mémoire dans l'unité mémoire, facultatif ; * ''Writeback'' (WB) : enregistrement d'une donnée dans les registres. [[File:Pipeline à 7 étages naïf.png|centre|vignette|upright=2|Pipeline à 7 étages naïf]] Un problème est que l'étage ''Memory'' (MEM) n'est pas utilisé pour les instructions de calcul, les branchements et toutes les instructions à l'exception de LOAD et STORE. Le problème précédent, à savoir des étages qui ne font rien, est là bien plus visible, plus fréquent et donc plus génant. Et au-delà de ça, même pour les instructions LOAD et STORE, il y a des étages inutilisés. Par exemple, avec le mode d'adressage indirect à registre, il n'y a pas de calcul d'adresse, l'étage d'exécution est inutilisé. Et c'est encore pire avec le mode d'adressage absolu, vu que l'adresse est fournie par le séquenceur. Le banc de registre n'est pas utilisé non plus, l'étage ''Read Operands'' est donc inutile ! Et pourtant, malgré ses défauts, nous verrons qu'une variante de ce pipeline a été utilisée sur des processeurs commerciaux. ===La propagation des signaux de commande dans le pipeline=== Découper le chemin de données demande de placer des registres de pipeline au bon endroit. Les registres propagent les données adéquates, mais aussi les signaux de commande générés par le décodeur, qui configurent le chemin de données. En effet, relier l'unité de décodage aux circuits incriminés directement ne marcherait pas. Les signaux de commande arriveraient immédiatement aux circuits, alors que l'instruction n'a pas encore atteint ces étages ! Les signaux de commande doivent traverser le pipeline et être consommés par les étages adéquats, et doivent donc être propagé d'étage en étage, via les registres de pipeline. Cette méthode sera utilisée sur tous les pipelines où le chemin de données contient plusieurs étages. [[File:Propagation des signaux de commande dans un pipeline à 7 étages.png|centre|vignette|upright=2.0|Propagation des signaux de commande dans un pipeline à 7 étages.]] Il faut noter que quand on parle de signaux de commande, on parle dans un sens très large. Et cela inclus les constantes immédiates du mode d'adressage immédiat. les constantes sont fournies par le séquenceur et sont propagées d'étage en étage jusqu'à atteindre l'étage avec l'unité de calcul. Il en est de même pour le mode d'adressage absolu, qui fournit une adresse mémoire dans l'instruction. L'adresse est extraite par le décodeur d'instruction, propagée dans le pipeline jusqu'à atteindre l'unité mémoire. [[File:Modes d'adressages absoluss et immédiats avec un pipeline.png|centre|vignette|upright=2.0|Modes d'adressages absoluss et immédiats avec un pipeline]] ==Les ''super-pipelines'' : des pipelines subdivisés== Le pipeline vu juste avant est conçu pour être logiques, avec une séparation entre chargement/décodage/exécution/accès au registre qui est relativement intuitive. Le pipeline précédent est un bon point de départ, qu'on peut améliorer. Cependant, cette implémentation réelle n'aurait pas des performances optimales en situation réelle. La raison est que les étages du pipeline ne sont pas équilibrés. Voyons ce que ça veut dire. Les étages de pipeline ne font pas la même chose. Prenons par exemple un pipeline basique, de type ''Fetch-Decode-Exec''. Les trois étages ne mettent pas le même temps pour faire leur travail. Pour donner un exemple pas fait pour être réaliste, charger une instruction depuis le cache prend 16 µs, la décoder prend 12 µs pour le décodeur, et l'exécuter prend 8 µs. Sans optimisations, la durée d'un cycle d'horloge devra se caler sur l'étage le plus lent. Nous l'appellerons l''''étage limitant''', terme qui est assez parlent. Les étages limitants sont souvent ceux qui demandent de faire des accès mémoire. Ils sont exactement deux : l'étage MEM qui accède au cache de données, mais aussi l'étage ''Fetch'' qui charge une instruction depuis le cache d'instruction. Les deux caches L1 ont un temps d'accès similaire, ce qui fait qu'ils sont tous deux des étages limitants. Cependant, ce n'est pas toujours le cas, il arrive aussi que les étages limitants soient l'étage de décodage, ou l'étage d'exécution. La solution la plus simple est de '''se caler sur l'étage limitant''', quitte à réorganiser le pipeline. Pour se caler sur l'étage limitant, il est possible de fusionner des étages vraiment rapides. Par exemple, imaginons que l'étage limitant fait 50 µs, qu'un calcul dans l'ALU fait 10 µs, et lire/écrire les registres en fait 15. Il est possible de fusionner lecture des opérandes et exécution dans un seul étage. Et l'exemple se généralise assez bien : il est intéressant de fusionner deux étages consécutifs pour obtenir un étage aussi rapide que l'étage limitant. L'inconvénient est que cela réduit le nombre d'étages, et donc le nombre d'instructions en vol. [[File:Pipeline à 6 étages simplifié.png|centre|vignette|upright=2|Pipeline à 5 étages naïf]] Mais il est possible de pipeliner encore plus le processeur, sans se caler sur l'étage limitant. L'idée est de subdiviser l'étage d'accès au cache, l'étage de décodage, voire l'étage d’exécution. Par exemple, l'étage de décodage devient alors deux étages séparés, voire trois. La technique porte le nom de '''super-pipeline'''. Elle permet d'augmenter le nombre d'étages, sans foncièrement changer les circuits du processeur. Il suffit de mettre des registres de pipeline au bon endroit dans le décodeur, l'ALU entière, les caches L1. En général, un super-pipeline a environ une dizaine d'étages, parfois plus, alors qu'un pipeline "classique" a moins de 7-8 étages. ===L'accès aux caches L1 est lent, mais se pipeline=== Dans l'exemple précédent, l'accès au cache d'instruction ne prend qu'un seul cycle d'horloge. Mais sur les processeurs modernes, l'accès au cache d'instruction prend deux à trois cycles. Et ce n'est pas incompatible avec la présence d'un pipeline, à condition que le cache lui aussi soit pipeliné. En clair, la solution est de '''pipeliner les caches L1'''. Lire une instruction se fait alors en plusieurs étapes. Nous verrons comment pipeliner le cache dans un chapitre dédié nommé "Le parallélisme mémoire au niveau du cache". Mais pour le moment, nous allons donner un exemple assez basique. On suppose que le cache est un ''phased'' cache, où les ''tags'' et les données sont dans deux SRAM séparées. Un tel cache peut être pipeliné pour avoir un accès en deux cycles : le premier cycle vérifie les ''tags'', le second accède aux données. [[File:Phased cache.png|centre|vignette|upright=1.5|Phased cache]] Un exemple classique est celui des premiers processeurs MIPS, précisément le MIPS R4000. Son pipeline était un pipeline RISC classique, dans lequel les étages FETCH et MEM étaient pipelinés. Concrétement, le pipeline du MIPS R4000 utilisait deux étages pour lire une instruction dans le cache d’instruction, trois pour lire dans le cache L1 de données. le résultat était un pipeline à 8 étages, qui est décrit dans le tableau ci-dessous. {|class="wikitable" |- ! colspan="2" | Instruction fetch !! Decocage !! Execution !! colspan="2" | Accès cache L1 !! Vérification TLB !! ''Writeback'' |- | ''Fetch'' 1 || ''Fetch'' 2 || ''Decode'' + ''Read Operands'' || ''Exec'' || ''Data Fetch'' 1 || ''Data Fetch'' 1 || ''Tag Check'' || ''Writeback'' |} Les premiers processeurs RISC faisaient en sorte qu'un accès aux caches L1 se fasse en un cycle d'horloge. Les premiers processeurs x86 étaient de ce type, les derniers étant la micro-architectures K5 d'AMD et le premier Pentium. La microarchitecture K6 d'AMD a pipeliné son cache, idem pour la microarchitectire P6 du Pentium 2 et 3. Utiliser un cache 1-cycle est donc une solution parfaitement viable, qui n'est abandonnée que quand le besoin de performance se fait sentir. ===Les décodeurs sont lents sur les CPU CISC, mais ils se pipelinent=== L'accès au cache est l'étage limitant sur les processeurs RISC. Pour les processeurs CISC, les choses sont parfois différentes. L'étage de décodage est lui aussi assez complexe, vu qu'il doit gérer des instructions de taille variable. Un décodeur CISC devient rapidement l'étage limitant, surtout si les caches L1 sont pipelinés. A problème similaire, solution similaire. Il est possible de '''pipeliner le décodeur d'instruction''', à savoir le scinder en plusieurs circuits consécutifs, séparés par des registres de pipeline. La scission peut se faire à des "moments de décodage" différents,. Une scission assez logique sépare la gestion des instructions de taille variable du décodage lui-même. La gestion des instructions de taille variable implique d'utiliser des ''barrel shifter'' et des opérations de masquage, qui sont couteux en circuits et assez "lents". Le décodage proprement dit vient après. Et les deux peuvent être séparées. Un premier étage de décodage transforme les instructions de taille variable en "instructions de taille fixe", le second étage décode ces dernières. les deux étages de décodage sont souvent appelés les '''étages de pré-décodage''' et l''''étage de décodage''' proprement dit. : Le terme pré-décodage ne doit pas être confondu avec le pré-décodage dans le cache d’instruction, qu'on verra dans quelques chapitres. Mais la scission peut être encore plus profonde. Le décodage lui-même peut être découpés en plusieurs étapes, qui sont elles-mêmes pipelinées. Mais nous ne pouvons pas vraiment en dire plus, je ne peux pas donner de généralités là-dessus, les détails dépendent vraiment du jeu d'instruction et de l'implémentation du décodeur d'instructions. Les processeurs modernes ont un pipeline de 8-20 étages, dont au moins un étage pour le calcul du ''program counter'' et 2 à 4 cycles pour l'accès au cache d'instruction, et tout autant de cycles pour le décodage. Et il est même possible de pipeliner l'étape de calcul du ''program counter''. Pour donner un exemple, le processeur Pentium Pro avait un pipeline de 14 étages, dont 7 étaient liés au décodage/chargement : deux étages pour le calcul du ''program counter'', trois pour l'accès au cache d'instruction, deux pour le décodage des instructions. ===Les instructions multi-cycles et l'ALU entière=== Enfin, il est possible de pipeliner l'unité de calcul. Mais nous n'allons pas le faire de façon naïve, nous allons ruser pour gérer des instructions comme les multiplications et les divisions assez simplement. Et comprendre pourquoi, faisons une remarque : les pipelines précédents ont un étage d'exécution unique, ce qui implique que toutes les instructions se font en un seul cycle d'horloge. Plus précisément, un calcul dans l'ALU se fait en un cycle d’horloge, on ne compte pas la lecture et l’écriture des registres. Mais autant c'est bien adapté pour les additions/soustractions, décalages et comparaisons, autant ce n'est pas le cas pour les multiplications et les divisions. Idéalement, il faudrait ajouter de quoi supporter des '''instructions multi-cycles''' au pipeline, à savoir des instructions qui mettent plusieurs cycles pour s'exécuter. Et justement, pipeliner l'unité de calcul permet de supporter ces instructions très facilement. Les instructions multi-cycles sont le plus souvent des multiplications entières, des divisions, ou des opérations flottantes. En conséquence, nous allons ajouter un multiplieur entier et une FPU dans le pipeline, dans l'étage d'exécution. Mais cela ne suffit pas, il faut modifier plus profondément le pipeline processeur. Il y a plusieurs implémentations possibles, mais nous n'allons pas toutes les voir. Deux chapitres entiers seront dédiés à cette problématique des instructions multi-cycles. L'implémentation la plus simple utilise plusieurs étages d'exécution consécutifs. Toutes les instructions mettent alors le même nombre de cycles pour s’exécuter. Et là, pas le choix : on doit se caler sur l'instruction la plus lente. Par exemple, si le processeur a des additions qui se font en un cycle, des décalages qui se font en deux, et des multiplications qui se font en 8 cycles, alors il y aura 8 étages d’exécution. En conséquence, les instructions plus rapides auront donc des étages qui ne font rien. L'instruction doit passer par ces étages, mais ceux-ci ne doivent rien faire. [[File:Processeur à pipeline fixe qui gére des instructions multicycles.png|centre|vignette|upright=3|Processeur à pipeline fixe qui gére des instructions multi-cycles]] Pour cela, on insère des registres entre la sortie de l'ALU et le banc de registre. Les registres en question sont appelés des ''staggering registers'', mais nous préférerons la traduction '''registres d'échelonnage'''. Il y a autant de registres d'échelonnage que cycles de retard à ajouter, car chacun retarde le résultat d'un cycle d’horloge. Pendant les cycles de retard, le résultat sera passé d'un registre d'échelonnage à l'autre, sans que rien ne se passe. [[File:Regsitres d'échelonnage.png|centre|vignette|upright=2|Registres d'échelonnage]] De plus, pour avoir un fonctionnement en pipeline, les multiplieurs et FPU doivent être pipelinés. Par exemple, si une multiplication fait 4 cycles, le multiplieur doit être segmenté en 4 étages, chacun effectuant une partie de la multiplication. Rien de compliqué à cela. Par exemple, prenons un multiplieur 32 bits. Il effectue 32 additions successives, on peut le découper en quatre circuits qui font chacun 32/4 = 8 additions. Pipeliner la FPU est un peu plus compliqué, mais rien d'insurmontable. [[File:Exemple avec une unité de multiplication totalement échelonnée.png|centre|vignette|upright=2|Multiplieur échelonné.]] L'implémentation en question donne un pipeline simple. Mais il y a d'autres implémentations bien plus complexes, qui ont des couts en hardware différents. Pour les prochains chapitres, on va supposer que le processeur utilise un pipeline de ce type. Mais une fois dans le chapitre sur les pipelines ''in-order'', nous verrons que certains processeurs ne pipelinent pas les unités de multiplication, ni la FPU. Nous verrons aussi que qu'il y a des pipelines de longueur variables, où le nombre d'étages change suivant l'instruction. Mais laissons cela pour plus tard. ==Le pipeline RISC classique et ses variantes== Les pipelines précédents sont conçus pour être relativement simples et pédagogiques. Mais la plupart des ''textbooks'' américains préfèrent utiliser un pipeline appelé le '''pipeline RISC classique'''. Il a été utilisé sur les premiers processeurs RISC : les CPU MIPS, SPARC, le 88000 et quelques autres. Des processeurs très influents et très populaires à leur époque. Le pipeline RISC est présent dans presque tous les cours qui abordent le sujet du pipeline, que ce soit pour son intérêt historique, pour son apparente simplicité, ou par habitude pédagogique. Il est cependant loin d'être idéal au niveau pédagogique. Sa simplicité apparente est trompeuse et il a de nombreuses particularités qui ne sont pas évidentes à comprendre. Il a beau avoir un nombre limité d'étages, il est en réalité optimisé d'une manière assez subtiles, et ces optimisations ne sont pas intuitives. Je vais cependant aborder ce pipeline RISC classique rapidement, ce qui vous sera utile si jamais vous souhaitez consulter d'autres sources, des cours, des articles wiki ou autres. Il s'agit d'un pipeline à 5 étages, qui met l'ALU et l'unité mémoire dans deux étages consécutifs. Les 5 étages sont les suivants : * ''Instruction Fetch'' (IF) pour l'étage de ''Fetch'' ; * ''Instruction Decode'' (ID) pour l'étage de décodage ; * ''Execution'' (EXEC) pour l'étage d’exécution ; * ''Memory'' (MEM) pour l'étage d'accès mémoire ; * ''Writeback'' (WB) pour l'étage d'enregistrement dans les registres ; Il est conçu pour une architecture RISC, avec un jeu d'instruction adapté pour simplifier le pipeline. Déjà, le processeur ne supporte pas les instructions multi-cycles, ce qui signifie que toutes les instructions se font en un cycle d'horloge. Exit donc les multiplications et divisions, qui sont absentes de ce processeur. Et c'est une simplification appréciable, car supporter des instructions multi-cycles complexifie grandement le pipelines. D'ailleurs, dans les deux-trois chapitres qui vont suivre, on mettra les instructions multi-cycles sous le tapis, par souci pédagogique. Par contre, malgré ses simplifications, il gère les modes d'adressage indicés, et d'autres modes d'adressages qui demandent de faire des calculs d'adresse. Les calculs d'adresse ne sont pas réalisé dans une unité de calcul d'adresse séparée, mais dans l'ALU entière. Et c'est pour cela qu'il utilise un étage d'exécution et un étage mémoire séparé. Quelques cours utilisent parfois une version simplifiée à 4 étages, qui fusionne l'étage d'exécution et d'accès mémoire, qui est nettement plus simple à comprendre. Bizarrement, ce pipeline n'utilise pas l'ALU entière pour faire les branchements. Elle utilise à la place des additionneurs séparés de l'ALU. Le principe est que cela permet d'exécuter les branchements en avance, ce qui a des avantages qui deviendront évident au chapitre suivant, quand nous parlerons des problèmes que causent les branchements pour un pipeline. Disons que pour une utilisation optimale du pipeline, les branchements doivent être exécutés le plus tôt possible. ===La lecture des opérandes se fait en parallèle du décodage=== L'unité de décodage est très simple, elle n'a pas de microcode. C'est nécessaire pour que le décodage se fasse en un seul cycle d'horloge. De plus, les processeurs RISC utilisent des encodages simples, faciles à décoder. Leurs instructions sont de taille fixes, elles étaient toutes codées sur 32 bits sur les processeurs avec ce pipeline. Une subtilité est que la lecture des opérandes se fait en parallèle du décodage, et non après. C'est étrange, pas intuitif, et cela complexifie le pipeline. Les raisons derrière ce choix sont multiples. La première est que cela permet d'exécuter les branchements conditionnels en avance. La seconde est une histoire de dépendances structurelles que nous ne pouvons pas aborder ici. Avec ce choix, l'équilibrage du pipeline n'est pas parfait, vu que l'étage de décodage fait beaucoup de choses. Il faut dire qu'on a fusionné l'étage de décodage avec l'étage ''Read Operand''. Le décodage devient donc beaucoup plus compliqué, car il faut extraire des numéros/noms de registre précocement lors du décodage. Heureusement, le pipeline RISC classique était prévu initialement pour des processeurs MIPS, des processeurs RISC avec un encodage très simple. Le décodage des instructions était très simple, les opcodes étaient tous à la même place, les noms/numéros de registres aussi, on pouvait extraire l'opcode et le noms/numéros de registre au tout début du décodage. Les noms/numéros de registre étaient extraits simplement avec quelques multiplexeurs, puis envoyés au banc de registre pendant que l'unité de décodage finissait son travail. Mais notons que cela ne fonctionne que sur des processeurs RISC, et encore : il faut que l'encodage des instructions soit assez simple pour le permettre. C'est un détail qui ne se généralise pas. ===Les branchements, leur exécution et leur décodage=== L'étage de chargement dispose d'une première optimisation assez intéressante : il effectue la mise à jour du program counter en parallèle de l'accès mémoire. Le ''program counter'' est directement relié à l'entrée d'adresse du cache ou de la mémoire, son incrémenteur et les MUX pour les branchements sont situés après. Par contre, la gestion des branchements est assez complexe. Les architectures MIPS peuvent faire un branchement qui s'exécute si deux registres sont égaux. Le calcul d'un branchement demande donc de comparer deux registres, puis de décider s'il faut brancher selon le résultat. Une première possibilité, la plus intuitive, place le comparateur dans l'étage d'exécution. D'autres implémentations utilisent l'unité de calcul entière pour faire la comparaison, ce qui est équivalent. [[File:MIPS Architecture (Pipelined).svg|centre|vignette|upright=2.5|MIPS Architecture (Pipelinée)]] Mais le pipeline RISC classique exécute la comparaison dans l'unité de décodage, juste après la lecture des registres ! L'avantage de faire ainsi n'est pas évident, mais le deviendra dans le chapitre suivant. Mais cela se fait au prix d'un étage de décodage bien chargé, le pipeline est très déséquilibré. LLe schéma précédent montre un exemple, mais sur une variante 4 étages du pipeline RISC classique. [[File:Conditional Microprocessor 2.0 Pipeline Design 1.1.png|centre|vignette|upright=2.0|Le circuit noté JUMP est le comparateur qui sert à comparer deux registres. CF est un bit du registre d'état utilisé pour les branchements.]] Un autre détail est que le calcul des branchements relatifs est réalisé dans l'unité de calcul. Quelques processeurs exécutaient les branchements conditionnels dans l'ALU entière. Pour rappel, les branchements relatifs ajoutent une constante au contenu du ''program counter'', afin de brancher X adresses après/avant l’instruction courante. Il y a donc une addition à faire, qui est réalisée par un additionneur dédié dans l'unité de chargement, du moins dans la majorité des cas. Mais le pipeline RISC préfère utiliser l'additionneur de l'ALU entière pour cela, pour diverses raisons. Le ''program counter'' est donc propagé dans le pipeline, et est connecté à un multiplexeur en entrée de l'ALU entière. ==La performance d'un pipeline== Revenons un peu sur les pipelines synchrones. L'usage d'un pipeline augmente les performances, mais essayons de comprendre pourquoi. La raison est que l'on peut exécuter plusieurs instructions en même temps. Mais il se pourrait que cela aie d'autres effets, par exemple sur le temps d’exécution des instructions ou la fréquence. Pour comprendre toutes les conséquences de l'usage d'un pipeline, le mieux est d'étudier l'impact du pipeline sur divers paramètres du processeur : fréquence, temps d’exécution, parallélisme d'instruction, et autres. Nous allons nous focaliser sur la fréquence, le temps d’exécution d'une instruction et le nombre d'instructions exécutées en parallèle. ===La performance théorique d'un pipeline idéal (approche simplifiée)=== Pour commencer, nous allons voir cas d'un pipeline idéal, c'est à dire que nous allons négliger le fait qu'il y a des registres entre les étages du pipeline. Ils ont un temps de propagation non-nul, et ont donc un effet sur la fréquence et sur la latence des instructions. Mais pour simplifier les calculs, nous allons négliger le temps de propagation des registres inter-étages. Sur les processeurs réels, certains étages possèdent un chemin critique plus long que d'autres. On est alors obligé de se caler sur l'étage le plus lent, ce qui réduit quelque peu le gain. La durée d'un cycle d'horloge doit être supérieure au temps de propagation de l'étage le plus lent. [[File:Pipelining réel d'un circuit.png|centre|vignette|upright=2.5|Pipelining hétérogène d'un circuit]] Cependant, nous allons supposer que les étages sont assez bien équilibrés, de manière à avoir le même temps de propagation. Le pipeline qu'on va étudier est donc un cas irréaliste de pipeline, idéal. Prenons un processeur qui exécute toutes ses instructions en un seul cycle sur un processeur et découpons ce processeur en 5 étages équilibrés. Voici ce que l'on obtient : [[File:Effet de l'usage d'un pipeline sur la fréquence d'un processeur.png|centre|vignette|upright=2.0|Effet de l'usage d'un pipeline sur la fréquence d'un processeur.]] Le schéma précédent montre que la fréquence change entre les deux situations car le cycle d'horloge n'est pas déterminé par l'instruction entière, mais par le temps de propagation d'un étage. Et cette durée correspond à la durée d'un cycle, divisée par le nombre d'étages. On passe donc c'un processeur dont la fréquence est de : : <math>f = {1 \over t}</math>, avec t le temps d’exécution d'une instruction (sans pipeline). à un processeur de fréquence : : <math>f_\text{pipeline} = \frac{1}{t \over N} = N \times f</math>, avec N le nombre d'étages. On voit que la fréquence a été multipliée par le nombre d'étages avec un pipeline ! En clair, l'usage d'un pipeline permet donc de multiplier la fréquence par un coefficient plus ou moins proportionnel aux nombres d'étages. Par contre, le temps d’exécution d'une instruction ne change pas avec ou sans pipeline ! Certes, la fréquence est multipliée par N. Mais une instruction qui mettait un cycle d'horloge pour s'exécuter en prend maintenant N. Les deux phénomènes se compensent exactement, le temps d'exécution d'une instruction reste le même. Si la fréquence est multipliée par N, c'est compensée par le fait que l'instruction prend maintenant N étages pour s’exécuter, et donc N cycles d'horloge. Le gain en performance vient du fait que le pipeline exécute plusieurs instructions simultanées, au lieu d'une seule sans pipeline. Il y a précisément une instruction dans chaque étage maximum, ce qui multiple la puissance de calcul maximale par le nombre d'étages du pipeline. En clair, le pipeline ne réduit pas le temps d’exécution d'une instruction, mais augmente les performances en en exécutant plusieurs presque simultanément. Si la latence reste la même, le débit du processeur augmente. Au passage, peut-être avez-vous pensé à utiliser l'équation vue dans le chapitre sur la performance d'un ordinateur : : <math>\text{Temps d’exécution d'un programme} = N_{instructions} \times \frac{CPI}{f}</math>, avec f la fréquence, CPI le nombre de cycles moyen par instruction, et <math>N_{instructions}</math> le nombre d'instructions à exécuter. Mais l'équation en question ne fonctionne que si on suppose que les instructions sont exécutées l'une après l'autre. ===La performance théorique d'un pipeline avec des registres inter-étages=== En théorie, le raisonnement précédent nous dit que le temps d’exécution d'une instruction est le même sans ou avec un pipeline. Cependant, il faut prendre en compte les registres intercalés entre étages du pipeline, qui ajoutent un petit peu de latence. Nous allons noter <math>\tau</math> le temps de propagation d'un de ces registres et refaire les calculs précédents, en tenant compte de ce terme. Le temps de parcours d'un étage devient : : <math>t_\text{étage} = \frac{t}{N} + \tau</math> La fréquence du processeur est l'inverse de <math>t_\text{étage}</math>, ce qui donne : : <math>f = \frac{1}{\frac{t}{N} + \tau} = \frac{N}{t + \tau \times N}</math> L'équation précédente nous dit que la fréquence du processeur avec un pipeline augmente, comparé à un processeur sans pipeline, mais pas autant que dans le cas idéal précédent. Elle n'est pas multipliée par le nombre d'étages, mais un peu en-dessous. Passer de 1 étage à 2 donne un gain en fréquence, mais passer de 20 à 40 aura un effet beaucoup plus faible. Les rendements sont rapidement décroissants, la durée d'un étage étant de plus en plus dominée par la latence des registres. On peut calculer le gain en comparant la fréquence avec un pipeline "parfait", où les registres sont négligeables : : <math>\frac{f_\text{Pipeline avec registres}}{f_\text{Pipeline sans registres}} = \frac{1}{{N \tau \over t} + 1}</math> Le résultat est inférieur à 1 du fait de l'influence des registres de pipeline. Le terme <math>{N \tau \over t}</math> correspond au pourcentage de temps passé à traverser les registres par rapport au temps de propagation sans les registres. Par exemple, si le temps de propagation des registres prend la moitié du temps de propagation, alors ce terme vaut 1 et la fréquence est divisée par deux. ===Le monde réel : l'exemple des processeurs Intel=== Les développements précédents sont très intéressants, mais il reste à voir ce que cela donne dans le monde réel. Pour cela, il faut prendre un échantillon de processeurs et comparer leur fréquence en fonction de la longueur de leur pipeline. Mais il faut tenir compte de la finesse de gravure, qui impacte fortement la fréquence du processeur et fausse les comparaisons. Il est possible de déterminer une une ''fréquence relative'', à savoir la fréquence à finesse de gravure égale, par rapport à un processeur de référence. Et on s’aperçoit que cette fréquence relative est fortement reliée aux nombres d'étages du pipeline. Un processeur à haute fréquence relative a un pipeline plus long que ses concurrents de fréquence relative plus basse. La relation n'est pas proportionnelle, du fait des registres inter-étages et de l’hétérogénéité des latences intra-étage. Par exemple, regardons la fréquence relative des processeurs Intel d'avant le Pentium 4 (les seuls pour lesquels j'ai les données). Voici ce qu'on obtient : [[File:Fréquences relatives processeurs Intel pré-Pentium 4.png|centre|vignette|upright=2|Fréquences relatives processeurs Intel pré-Pentium 4]] Et comparons la longueur de leur pipeline : {|class="wikitable" |- ! Processeur ! Longueur du pipeline |- | 286 | rowspan="4" | 5 |- | 386 |- | 486 |- | Pentium |- | Pentium 2/3 | 14 |- | Pentium 4 | 31 à 20 selon les modèles |} On s’aperçoit qu'il n'y a pas proportionnalité exacte, mais que la tendance est bonne. La profondeur du pipeline a presque triplé au passage au Pentium 2/3, mais cela s'est traduit par une hausse de fréquence de seulement 50%. Pour le Pentium 4, sa fréquence a sextuplé par rapport aux premiers CPU Intel, mais la fréquence a été multipliée par seulement 2,5. Avant les années 2000, la fréquence était un argument marketing puissant. Ce qui a poussé certains fabricants de processeurs à créer des processeurs avec un nombre d'étages élevé pour les faire fonctionner à très haute fréquence. C'est ce qu'a fait Intel avec le Pentium 4, dont le pipeline faisait 20 étages pour les Pentium 4 basés sur les architectures Willamette et Northwood, 31 étages pour ceux basés sur les architectures Prescott et Cedar Mill. L'approche a rapidement montré ces limites, poussant Intel à revenir à un nombre d'étages raisonnables pour les processeurs Core 2 Duo. ==Les exceptions précises== Les processeurs avec un pipeline ont un petit problème avec des exceptions matérielles. Les exceptions stoppent l’exécution du programme en cours et effectuent un branchement vers une routine d'interruption. Mais avant que l'exception n'ait été détectée, le processeur a chargé des instructions dans le pipeline en avance. Lorsque l'exception est détectée, elle mémorise le ''program counter'' de la dernière instruction chargée, et reprendre à cet endroit là. La conséquence est que les exceptions sont décalées de quelques cycles par rapport à un processeur sans pipeline. On dit que les exceptions sont ''imprécises''. [[File:Exception et pipeline.png|centre|vignette|upright=2|Exception détectée au 3ème étage d'un pipeline à 4 étage : deux instructions ont été chargées en avance.]] Et ce décalage de quelques cycles d'horloge est problématique. La majeure partie des exceptions sont traitées comme suit : la routine de l'exception traite la situation, puis le processeur redémarre l'instruction fautive. Un exemple est le cas d'une instruction d'accès mémoire qui déclenche un défaut de page : le défaut de page déclenche une exception, la routine d'exception traite le problème en chargeant la page voulue en RAM, puis re-démarre l'instruction mémoire. Mais re-démarrer l'instruction fautive implique de reprendre l'exécution du programme juste après l'instruction qui a déclenché l'exception. Si des instructions ont été chargées/exécutées en avance, ce n'est pas le cas : on reprend plusieurs instructions après. En soi, le processeur peut très bien ne rien faire contre ce problème, et utiliser des exceptions imprécises. Le problème peut être géré de manière purement logicielle. Au pire, cela peut poser quelques problèmes à quelques programmes comme les débuggers, même si les cas sont rares. Par contre, cela implique que l'on ne peut pas traiter les exceptions en re-démarrant l'instruction fautive. Et cela complexifie grandement la gestion des exceptions, le système d'exploitation est plus complexe, le cout logiciel est là. Pour régler ce petit problème, les concepteurs de processeur ont fait en sorte que le processeur gère lui-même exceptions et interruptions correctement. Ils permettent une gestion des '''exceptions précises'''. ===Le hardware pour les exceptions précises=== Supporter les exceptions précises demande des modifications assez mineures du processeur. L'idée est que les instructions chargées en avance sont juste annulées, elles n'enregistrent pas leur résultat dans les registres et n’accèdent pas à la mémoire. En effet, si une instruction n'enregistre pas son résultat, que ce soit dans les registres ou la RAM, c'est comme si elle n'avait rien fait. Si une exception a lieu, il suffit de ne pas enregistrer les résultats des instructions suivantes dans les registres, jusqu’à ce que toutes les instructions fautives aient quitté le pipeline. Les exceptions précises sont gérées dans le dernier étage du pipeline, l'étage de ''writeback'', celui d'écriture dans les registres. Pour cela, tout étage fournit à chaque cycle un '''indicateur d'exception''', un groupe de quelques bits qui indiquent si une exception a eu lieu et laquelle le cas échéant. Ces indicateurs sont propagés dans le pipeline, ils passent à l'étage suivant à chaque cycle. Une fois arrivé à l'étage d’enregistrement, un circuit combinatoire vérifie ces bits pour détecter si une exception a été levée, et interdit l'écriture dans les registres en cas d'exception. Si les écritures sont interdites, elles le sont durant un certain nombre de cycles, dépendant de l'exception levée. On dit qu'on '''vide le pipeline''' des instructions fautives. [[File:Propagation de l'indicateur d'exception.png|centre|vignette|upright=2|Propagation de l'indicateur d'exception.]] Il faut aussi qu'une fois l'exception terminée, le programme reprenne là où il faut. Pour cela, il faut restaurer le ''program counter'' pour qu'il pointe vers l’instruction adéquate. Il s'agit de l'instruction qui a déclenché l'exception. Pour cela, même solution : le ''program counter'' est propagé dans le pipeline et est restauré en cas d'exception en prenant le ''program counter'' disponible à l'étage d'enregistrement. Une utilisation "détournée" du système d'exceptions précise est la gestion des défauts de cache. Elle permet de ne pas bloquer le pipeline au moment même où un défaut de cache a lieu, mais retarde le blocage. L'idée est qu'un défaut de cache lève une exception matérielle, nommée ''cache fault''. Les instructions qui suivent la lecture/écriture fautive sont alors propagées dans le pipeline et sont annulées à la toute fin. Une fois le pipeline vidé, l'instruction fautive est re-exécutée une fois que le défaut de cache est terminé. En clair, on vide le pipeline avant de le re-démarrer. Un simple compteur est utilisé pour temporiser le re-démarrage du pipeline. Les exceptions précises sont aussi utilisées pour corriger des problèmes liés aux branchements, comme on le verra dans le chapitre suivant. ===Les écritures mémoire sont retardées avec des exceptions précises=== Il faut préciser une chose importante : toutes les écritures sont annulées, y compris les écritures en mémoire RAM, y compris celles dans le cache de données. Mais cela pose un problème : les instructions STORE sont censées être exécutées dans l'étage MEM ou Exec, soit avant l'étage de ''Writeback''. Notez bien le censé : ce n'est pas le cas avec les exceptions précises. En réalité, avec des exceptions précises, les instructions STORE font leur écriture dans l'étage de ''Writeback'', l'étage final. Les écritures mémoire sont donc retardées jusqu'à l'étage de ''Writeback''. La mise en attente se fait grâce à une mémoire spécialisée, appelée la '''file d'écriture'''. Le terme "file" trahit le fait que c'est une mémoire FIFO, le caractère FIFO permettant de conserver l'ordre des écritures. L'idée est la suivante : l'étage MEM fait l'écriture dans la file d'écriture, puis l'étage de ''Writeback'' la met en attente. A l'étage de ''Writeback'', la file d'écriture exécute l'écriture dsans le cache. L'écriture est mise en attente dans l'étage MEM, et est finalisée dans l'étage de ''Writeback''. Si une exception est détectée, l'étage de ''Writeback'' vide la file d'écriture, ce qui annule les écritures mises en attente. Les écritures faites à tord sont donc annulées. [[File:Store Queue sur un pipeline fixe.png|centre|vignette|upright=2|File d'écriture sur un pipeline fixe]] Avec une file d'écriture, l'étage MEM s'occupe des lectures, et l'étage ''Writeback'' des écritures proprement dit. Ils font tous deux un accès au cache, ce qui est une dépendance structurelle. Une solution intuitive, utilise un cache de données multiport, avec un port de lecture séparé du port d'écriture. Le port de lecture est utilisé par l'étage MEM, alors que le port d'écriture est utilisé par l'étage de ''Writeback''. : La file d'écriture font nous parlons ici ne doit pas être confondue avec le ''Write buffer'' présent dans la hiérarchie mémoire. Les deux sont traduit dans ce cours avec le terme file d'écriture, mais il s'agit de deux choses différentes. La file d'écriture peut mettre en attente plusieurs écritures. Le nombre d'écriture à mettre en attente dépend du pipeline. Le nombre exact est égal au nombre d'étages situés entre l'étage MEM et l'étage ''Writeback'', plus 1. Par exemple, les pipelines précédents n'ont pas d'étages entre MEM et ''Writeback'', ce qui fait que la ''Write Queue'' n'a qu'une seule entrée. Il peut être remplacé par un simple registre, mais ce n'est que rarement fait. Mais de nombreux pipelines ont des étages entre les étages MEM et ''Writeback''. Par exemple, s'il y a 4 étages entre les deux, il faut que la file d'écriture puisse mettre en attente 5 écritures. Un autre point est que l'étage MEM peut lui-même prendre plusieurs cycles d'horloge, ce qui est possible si le cache est pipeliné. Dans ce cas, ce nombre de cycle s'ajoute au nombre d'entrées. {|class="wikitable" |- ! colspan="3" | Étages MEM !! colspan="4" | Étages autres !! Étage de ''Writeback'' |- | MEM 1 || MEM 2 || MEM 3 || X || X || X || X || ''Writeback'' |- ! colspan="8" | File d'écriture |- | Entrée 1 || Entrée 2 || Entrée 3 || Entrée 4 || Entrée 5 || Entrée 6 || Entrée 7 || Entrée 8 |} Pour résumer, : <math>\text{Capacité de la file d'écriture} = \text{Nombre d'étages MEM} + \text{Nombre d'étages entre MEM et WB} + 1</math> ===Le contournement de la file d'écriture=== Les écritures sont donc retardées de plusieurs cycles, pour s'exécuter en fin de pipeline. Et il se peut que la donnée écrite soit lue pendant ce laps de temps. Il s'agit du cas où une instruction STORE est suivie par une instruction LOAD, et que les deux accèdent à la même adresse. Lire une donnée qu'on vient d'écrire n'est pas si rare, surtout sur les processeurs x86, qui ont peu de registres, et doivent parfois faire de la place pendant quelques cycles, avant de rapatrier des données dans les registres. Vu que la lecture a lieu pendant la mise en attente, la donnée n'a pas été écrite dans le cache. Toute lecture dans le cache lira une donnée invalide. Mais il y a une solution assez évidente. L'idée est que les lectures consultent à la fois le cache et la file d'écriture. La file d'écriture doit cependant être modifiée pour fonctionner comme un mélange entre mémoire cache et mémoire FIFO. Le cache envoie l'adresse à lire à la file d'écriture, et celle-ci vérifie si une écriture est en attente à cette adresse. Si c'est le cas, c'est un ''succès de file d'écriture'', et celle-ci envoie alors la donnée associée à l'étage d'accès mémoire. Sinon, la lecture accède au cache, là où se trouve la donnée à lire. La solution porte le nom de ''Store to load Forwarding'' ou encore de '''réacheminement écriture-vers-lecture'''. [[File:Store to load forwarding sur un pipeline simple.png|centre|vignette|upright=2|Store to load forwarding sur un pipeline simple]] <noinclude> {{NavChapitre | book=Fonctionnement d'un ordinateur | prev=Le Translation Lookaside Buffer | prevText=Le Translation Lookaside Buffer | next=La prédiction de branchement | nextText=La prédiction de branchement }} </noinclude> 8ci8dzpaax39kcw4swdlljc13aafvux 775570 775569 2026-10-22T14:13:40Z Mewtow 31375 /* Les pipelines fixes et variables */ 775570 wikitext text/x-wiki Dans ce chapitre, nous allons voir la technique du '''pipeline d'instruction''', qui est utilisée sur tous les processeurs modernes. L'introduction du pipeline a eu lieu sur les premiers ''mainframes'' et les supercalculateurs, dans les années 60-70. Elle a ensuite été reprise pour les premiers processeurs RISC commerciaux et s'est démocratisée au point d'être présente sur tous les processeurs CISC modernes. C'est donc un incontournable pour tout cours d'architecture des ordinateurs et il est enfin temps d'en parler. Introduire un pipeline entraine une modification profonde de la microarchitecture du processeur, ainsi que l'ajout de nombreuses optimisations qui ne seraient pas possibles dans pipeline : exécution superscalaire, exécution dans le désordre, prédiction de branchements, etc. Nous passerons une dizaine de chapitre à parler du pipeline des processeurs modernes, ainsi que toutes les techniques qui vont avec. ==Le pipeline : rien à voir avec un quelconque tuyau à pétrole !== Pour expliquer ce qu'est un pipeline d'instructions, il faut faire un rappel sur les différentes étapes d'une instruction. Dans le chapitre sur la micro-architecture d'un processeur, on a vu qu'une instruction est exécutée en plusieurs étapes bien distinctes : le chargement, le décodage, et diverses étapes pour exécuter l'instruction. Ces dernières dépendant du processeur, de l'instruction, du mode d'adressage, etc. Pour comprendre ce que fait le pipeline, comparons l’exécution de cette instruction sans et avec pipeline. Dans les exemples qui vont suivre, nous allons supposer que les instructions se font toutes en 5 étapes, qu'on ne détaillera pas, car ce n'est pas important à ce stade du chapitre. L'essentiel est qu'une instruction se fasse en plusieurs étapes, point. Sans pipeline, ces étapes sont réalisées les unes après les autres, la précédente doit être terminée avant de démarrer la suivante. De plus, on doit attendre qu'une instruction soit finie pour exécuter la suivante. L'instruction exécute toutes ses étapes, avant que l'instruction suivante démarre à l'étape 1. [[File:Nopipeline.png|centre|vignette|upright=2.0|Exécution de trois instructions sans pipeline.]] Avec un pipeline, on exécute plusieurs instructions différentes, chacune étant à une étape différente des autres. Pour cela, on démarre une nouvelle instruction par cycle (dans des conditions optimales). Une instruction passe d'une étape à la suivante à chaque cycle d'horloge. A chaque instant, toutes les étapes travaillent sur une instruction différente. [[File:Fivestagespipeline.svg|centre|vignette|upright=2.0|Exécution de trois instructions avec pipeline.]] Pour comprendre le diagramme précédent, il faut comprendre à un instant t, il y a plusieurs instructions, chacune à une étape différente. Un instant t correspond à une colonne dans le diagramme précédent. Le diagramme suivant le montre bien. La colonne rouge correspond à un cycle d'horloge, la jaune immédiatement suivant est le cycle d'horloge suivant, idem pour le bleu. [[File:Pipeline chaîne de traitement.png|centre|vignette|upright=2.0|Pipeline : principe.]] Une illustration plus intuitive est la suivante. Chaque instruction correspond à une couleur : [[File:Pipleine-3.png|centre|vignette|upright=2.0|Pipeline à 5 étages.]] Le pipeline contient donc plusieurs instructions, qui sont à des étapes différentes de leur exécution. Les instructions en question sont appelées des '''instructions en vol''', terme de mon cru que vous ne trouverez ''a priori'' que dans ce cours. ===Les étages du pipeline=== En général, découper une instruction en plusieurs étapes suit une certaine logique. Il y a une étape pour l'unité de chargement, une pour le décodage de l'instruction, une pour lire les opérandes d'une instruction, une pour l'unité de calcul/unité mémoire, et une pour enregistrer le résultat dans les registres. Il n'y a pas besoin de refaire tout le processeur de zéro. Le tout parait donc être très simple : séparer l'unité de chargement, le décodeur et le chemin de données a l'air assez facile. Cependant, ce découpage simple achoppe sur quelques points de détail. Tout d'abord, chaque étape d'une instruction doit s'exécuter indépendamment des autres, ce qui signifie utiliser des circuits indépendants pour chaque étape. Or, un processeur sans pipeline tend à mutualiser certains circuits. Par exemple, sur un processeur 16 bits sans pipeline, l'ALU peut être utilisée pour exécuter les instructions d'addition/soustraction, mais aussi pour incrémenter le ''program counter'', calculer des adresses lors d'un accès mémoire, etc. Avec un pipeline, on ne peut pas se le permettre, chaque étape doit utiliser son propre additionneur. En général, il est impossible de réutiliser un circuit dans plusieurs étapes, comme on le fait dans certains processeurs sans pipeline. Chaque circuit dédié à une étape est appelé un '''étage du pipeline'''. Le nombre d'étapes par instruction, et donc le nombre d'étages du pipeline, est appelé la '''profondeur du pipeline'''. Il correspond au nombre maximal théorique d'instructions en vol, au nombre d'instructions exécutées en même temps dans le pipeline. Et j'ai bien dit maximal théorique : ce maximum n'est pas toujours atteint, comme on le verra plus tard. Pour les curieux, voici les longueurs de pipeline de certains processeurs plus ou moins connus. {|class="wikitable" |- ! Processeur !! Longueur du pipeline |- | Motorola PowerPC G4 || 7 |- | MIPS R4400 || 8 |- | Intel Itanium || 10 |- | Intel Pentium II || 14 |- | Intel Pentium 3 || 10 |- | Intel Pentium 4 ||20 |- | Intel Pentium 4 Prescott ||31 |- | AMD Athlon ||12 |- | AMD Athlon 64 ||16 |- | IBM PowerPC 970 ||16 |- | Sun UltraSPARC IV ||14 |} Plus haut, il a été dit que les étages du pipeline sont censés être totalement séparés, mais la réalité est beaucoup plus complexe. Dans la réalité, il existe quelques circuits qui sont partagés entre plusieurs étages, car on n'a pas le choix. En conséquence, deux instructions peuvent accéder à la mémoire simultanément, exécuter une micro-opération dans la même unité de calcul, lire le même registre en même temps, etc. De telles '''dépendances structurelles''' surviennent quand plusieurs instructions veulent accéder à un circuit du processeur en même temps. Les processeurs modernes incorporent de nombreux circuits capables de gérer les dépendances structurelles, qu'on abordera au fur et à mesure que les occasions se présentent. Cependant, même si un circuit est partagé par un même étage, cela ne signifie pas que tout est perdu. Prenons par exemple le cas du banc de registres. Il est fréquent qu'un registre soit lu dans un étage et écrit dans un autre, comme on le verra dans ce qui suit. Heureusement, le banc de registre est conçu pour gérer la situation, car il a des ports de lecture séparés des ports d'écriture. Il y aura donc un étage pour lire dans les registres, un étage pour écrire dedans. Et ces deux étages utilisent des ports séparés, ce qui fait qu'il n'y a pas de dépendances structurelles. ===Les pipelines fixes et variables=== Les pipelines peuvent se classer en deux types, suivant leur "nombre d'étages global". La distinction sépare les pipelines de longueur fixe des pipelines de longueur variable. Les pipelines de longueur fixe ont un nombre d'étages fixe, qui est le même pour toutes les instructions. De tels pipelines sont aussi appelés des '''pipelines fixes'''. Ce sont les pipelines les plus intuitifs, mais ils ont un gros défaut : la gestion des instructions multi-cycles, qui mettent plusieurs cycles pour s'exécuter. On voit mal comment un pipeline fixe pourrait gérer des instructions qui s'exécutent en un cycle d'un côté, et des instructions qui s’exécutent en plusieurs cycles de l'autre, avec le même nombre d'étages (et donc de cycles) pour toutes. Mais non seulement c'est possible, mais en plus, cela peut se faire de deux manières. Avec la première, toutes les instructions s'exécutent en un cycle d'horloge, pas un de plus, pas un de moins. Les opérations arithmétiques sont exécutées en un seul cycle d'horloge dans l'ALU entière, y compris les instructions "complexes" comme les multiplications ou divisions. Les accès mémoire aussi se font aussi en un seul cycle d'horloge, sauf en cas de défaut de cache. les pipelines de ce type seront appelés des '''pipelines 1-cycle'''. Il s'agit d'un cas fortement irréaliste, aucun processeur avec un pipeline ne fait dans le monde réel. Il faut dire que se caler sur l’instruction la plus lente ne donne pas de bons résultats, cela implique que le processeur va à une fréquence assez basse. Une autre solution accepte les instructions multi-cycles. Et parmi ces instructions, l'une d'entre elle sera la plus lente. Le processeur va se caler sur celle-ci. Par exemple, imaginons que l'instruction la plus lente prenne 15 cycles d'horloge, pour s'exécuter dans l'ALU entière. Son exécution sera pipelinée, de manière à se faire sur 15 étages. De plus, toutes les instructions feront 15 cycles pour s'exécuter, elles prendront 15 étages pour. Quitte à ce que certains étages ne fassent rien. Par exemple, l'addition pourra se faire en deux cycles d'horloge, mais les 13 restants ne feront rien. Nous verrons plus loin dans ce chapitre comment cette solution s'implémente, elle est surprenamment utile. [[File:Processeur à pipeline fixe qui gére des instructions multicycles.png|centre|vignette|upright=2.5|Processeur à pipeline fixe qui gére des instructions multicycles]] Enfin, il existe des '''pipelines de longueur variables''', qui utilisent un nombre d'étages différents selon l'instruction. Avec un pipeline variable, certaines instructions peuvent prendre 1 cycle, d'autres 7 cycles, d'autres 9, d'autres 25, etc. Les instructions rapides prennent moins de cycles que les autres. Typiquement, toutes les instructions partagent lse premiers étages, qui chargent et décodent les instructions, mais le chemin de donnée est lui segmenté en plusieurs pipelines distincts, un par unité de calcul. Il y a ainsi un pipeline pour l'ALU entière, un autre pour le multiplieur entier, un autre pour la FPU, un autre pour l'unité mémoire, etc. [[File:Pipeline avec un nomrbe variable d'étages par instructions.png|centre|vignette|upright=2.5|Pipeline avec un nomrbe variable d'étages par instructions]] Nous les appellerons des '''pipelines variables''', pour simplifier les explications. Ils ont l'air plus intuitifs que les pipelines fixes, sont aussi plus flexibles, mais ils sont nettement plus complexes que les pipelines fixes. De nombreuses subtilités surviennent sur ces pipelines variables, et c'est ce qui explique que nous ne les verrons pas avant facilement trois-quatre chapitres. Nous allons d'abord voir le fonctionnement des pipelines de longueur fixe, avant d'étudier les pipelines variables. ===Les pipelines synchrones et asynchrones=== Il faut que les instructions progressent d'un étage à un autre au rythme adéquat. Pour cela, la plupart des pipelines intercalent des registres entre les étages, pour les isoler mais aussi pour synchroniser leurs échanges. Les registres en question seront appelés des '''registres de pipeline''' dans ce qui suit. Un registre de pipeline s'intercale entre deux étages consécutifs. L'étage précédant ce registre écrit son résultat dedans, l'étage suivant lit son contenu quand c'est son tour, généralement au cycle d'horloge suivant. La présence de registres aide grandement à implémenter de quoi commander le pipeline. Les transferts entre étages du pipeline peuvent être synchronisés par une horloge, ou de manière asynchrone. [[File:Pipeline sync-async.svg|centre|vignette|upright=1.5|Pipeline synchrone et asynchrone.]] Si le pipeline est synchronisé sur l'horloge du processeur, on parle de '''pipeline synchrone'''. Chaque étage met un cycle d'horloge pour effectuer son travail, à savoir, lire le contenu du registre qui le relie à l'étape précédente et déduire le résultat à écrire dans le registre suivant. Ce sont ces pipelines que l'on trouve dans les processeurs Intel et AMD les plus récents. [[File:Pipeline buffered synchrone.png|centre|vignette|upright=2.0|Pipeline buffered synchrone]] Sur d'autres pipelines, il n'y a pas d'horloge pour synchroniser les transferts entre étages, qui se font via un « bus » asynchrone. On parle de '''pipeline asynchrone'''. La synchronisation des échanges entre deux étages se fait grâce à un signal de requête et un signal acquittement. Le signal de requête REQ indique que l'étage précédent a terminé son travail et qu'on peut lire son résultat. Le signal d'acquittement signifie que l'étage destinataire a pris en compte la donnée transmise. Les signaux de commande de ces pipelines asynchrones peuvent se créer facilement avec des portes C. [[File:Micropipeline-structure.svg|centre|vignette|upright=2.0|Micropipeline-structure]] Les pipelines n'utilisant pas de registres sont assez rares, mais ils existent, ce sont les ''pipelines à vague''. Ils se contentent d'enchainer des étages les uns à la suite des autres, et laissent les données se propager librement d'un étage à l'autre. Ils jouent sur un timing très précis pour propager les données entre étages au bon timing, de manière à ce que le tout fonctionne comme un pipeline. Leur conception est cependant très complexe, ce qui fait qu'ils ne sont jamais utilisés en pratique. La règle est clairement de séparer les étages dans des circuits séparés, interfacés par des registres. ==La séparation des étages de pipeline== Découper un processeur en pipeline peut se faire de différentes manières, le nombre et la fonction des étages variant fortement d'un processeur à l'autre. Dans ce qui suit, nous allons voir quelques pipelines simples, faciles à étudier. Nous allons partir d'un processeur sans pipeline, et allons séparer les unités dans plusieurs étages. Le processeur de départ est très simple, nous allons supposer que son chemin de données contient une ALU entière, une unité mémoire et le banc de registres. Nous ajouterons d'autres unités de calcul, comme une FPU ou un multiplieur entier, plus tard. ===Le pipeline Fetch-Exec=== En guise de premier exemple, nous allons prendre le '''pipeline ''Fetch-Execute'''''. IL a seulement deux étages : un qui charge et décode l'instruction, l'autre qui exécute l'instruction. En clair, il sépare le séquenceur et le chemin de données dans deux étages séparés. Il s'implémente en séparant les deux étages par un registre, qui mémorise les signaux de commande en sortie du décodeur d'instruction. Les deux étages sont respectivement nommés ''Fetch'' et ''Exec'', ce qui donne son nom au pipeline. Il s'agit du pipeline le plus simple qui soit, mais il a pourtant été utilisé sur les processeurs Atmel AVR, ainsi que les processeurs PIC. [[File:The Fetch-Execute Cycle.svg|centre|vignette|upright=2|The Fetch-Execute Cycle]] Un problème avec ce pipeline est que les deux étages peuvent parfois faire un accès mémoire en même temps. Le pipeline doit lire une instruction à chaque cycle d'horloge, quelle que soit l'instruction. Si l'étape d'''Exec'' exécute un accès mémoire pour lire/écrire une donnée, le processeur fait deux accès concurrents : un pour charger l'instruction, un autre pour lire/écrire la donnée. Il s'agit techniquement d'une situation de dépendance structurelle, mais passons. La solution simple la plus simple est de passer à une architecture Harvard, avec deux mémoires séparées. Pour un processeur avec un cache, cela revient à utiliser un cache d'instruction séparé du cache de données, ce qui garantit que les deux étages ne se marcheront plus dessus et accéderont chacun à leur cache dédié. Une solution alternative utiliser un cache unique multiport, mais l'essentiel est qu'on puisse lire une instruction et accéder à une donnée en même temps. Précisons que tous les pipelines ont ce problème, sans exception ! Tous les pipelines que nous verrons dans ce cours font face au même problème et la même solution est appliquée. Le pipeline précédent est de loin le plus simple. Tous les pipelines qui existent ne sont qu'une amélioration de celui-ci. Par amélioration, on veut dire que l'étage de ''Fetch'' est découpé en plusieurs sous-étages, idem avec l'étage d'''Exec''. Concrètement, le processeur est découpé en deux : un '''''front-end''''' qui charge et décode les instructions, un '''''back-end''''' qui exécute les micro-opérations. La séparation entre ''front-end'' et ''back-end'' colle presque parfaitement à la séparation entre séquenceur et chemin de données, et ce n'est pas un hasard. Elle est cruciale, et elle sera la ligne rouge des 10 chapitres qui vont suivre. Découper le séquenceur ne se fait pas de la même manière que le découpage du chemin de données. Nous allons voir les deux séparément, en commençant par le découpage du séquenceur. ===Le pipelining du séquenceur=== Le '''pipeline ''Fetch-Decode-Exec''''' sépare l'unité de chargement de l'unité de décodage d'instruction dans deux étages séparés. Le résultat est un pipeline à trois étages : le premier étage correspond au calcul du ''program counter'' et à l'accès au cache, le second au décodage de l’instruction, le troisième à l’exécution de l'instruction par le chemin de données. Ces trois étapes sont souvent désignées sous les noms de ''Fetch'', ''Decode'' et ''Exec'', termes que nous utiliserons dans la suite de ce cours. Encore une fois, ils donnent leur nom au pipeline. Le pipeline est donc le suivant : * ''Fetch'' : chargement de l'instruction ; * ''Decode'' : décodage de l'instruction ; * ''Exec'' : exécute l'instruction. Bien que très simple, le pipeline ''Fetch-Decode-Exec'' a été utilisé dans des processeurs commerciaux grand public. Par exemple, les tout premiers processeurs ARM jusqu'aux processeurs ARM7 utilisaient un pipeline ''Fetch-Decode-Exec''. L’implémentation sépare l'unité de chargement et le décodeur d'instruction avec un registre. Pour cela, on profite du registre d'instruction, qui était déjà entre l'étage de chargement et l'étage de décodage. L'implémentation est donc terriblement simple. [[File:Pipeline à trois étages.png|centre|vignette|upright=2|Pipeline à trois étages]] Il est possible de scinder l'étape de chargement en deux étapes séparées : la mise à jour du ''program counter'' et l'accès au cache d'instruction. La première étape ne fait pas que calculer le ''program counter'', mais gère aussi les branchements au sens large. Elle incorpore des techniques de prédictions de branchement que nous verrons dans le chapitre suivant. En tout cas, elle fait suffisamment de travail pour avoir un étage dédié, le travail prenant facilement un cycle d'horloge complet. Le pipeline devient alors le suivant : * ''PC Update'' : mise à jour du ''program counter'' ; * ''Fetch'' : accès au cache d'instruction ; * ''Decode'' : décodage de l'instruction ; * ''Exec'' : exécute l'instruction. Précisons cependant une chose importante : la gestion des branchements se fait dans plusieurs étages. Le calcul des conditions est réalisé dans l'unité de calcul, donc dans l'étage d'''Exec''. Mais une fois l'adresse de destination connue, celle-ci doit être écrite dans le ''program counter'' , qui est lui dans l'étage de ''PC Update''. [[File:Pipeline PC-Fetch-Decode-Exec.png|centre|vignette|upright=2.5|Pipeline PC-Fetch-Decode-Exec]] Les processeurs modernes implémentent de nombreuses optimisations, qui partent du principe que le calcul du ''program counter'', l'accès au cache d'instruction, et le décodage sont trois étapes séparées. Mais nous verrons cela en temps voulu, dans le chapitre nommé "Les optimisations du chargement des instructions". Pour le moment, retenez que le début du pipeline peut être scindé en trois étapes nommées PC, ''Fetch'' et ''Decode'', qui peuvent elles-mêmes être séparées en sous-étapes pipelinées. ===Le pipelining du chemin de données=== Les pipelines précédents sont très simples à comprendre, car ils collent avec la séparation entre ''Program counter'', unité de chargement, décodage et chemin de données, qui nous est familière. Les pipelines qui vont suivre pipelinent leur chemin de données, d'une manière qui est moins intuitive. Autant découper le séquenceur en plusieurs circuits séparés est simple, autant découper le chemin de données ne l'est pas. Le chemin de données contient au minimum une unité de calcul, un banc de registres et l'unité mémoire (et un paquet d'interconnexion qu'on met sous le tapis). Reste à voir comment les pipeliner. Pour simplifier, nous allons prendre le cas d'un processeur RISC, pour éliminer les instructions ''load-op'', qui sont particulièrement problématiques avec un pipeline. Vu que le processeur a une architecture LOAD/STORE, les instructions d'accès mémoire vont dans l'unité mémoire, les instructions de calcul vont dans l'ALU entière. Il parait donc naturel de mettre les deux dans un même étage de pipeline, qu'on appellera l''''étage d’exécution'''. L'étage d'exécution utilise donc soit l'une, soit l'autre, pas les deux. L'étage d'exécution communique avec le banc de registre : pour récupérer les opérandes lues, pour enregistrer le résultat d'un calcul, ou la donnée lue par une lecture. Intuitivement, on se dit qu'il faudrait un étage pour lire dans le banc de registre et un autre pour écrire dedans. Et cela implique que le banc de registre est multiport, avec des ports de lecture et d'écriture séparés. Le résultat est une organisation en trois étages : * Chargement d’opérandes : lecture des opérandes depuis les registres. * Exécution : exécution de l'instruction dans l'unité de calcul ou l'unité mémoire. * Enregistrement : écriture du résultat dans les registres. [[File:Pipeline à 7 étages, avec mode d'adressae immédiat et absolu gérés.png|centre|vignette|upright=2.0|Pipeline à 7 étages naïf.]] Le pipeline précédent met l'unité mémoire et l'ALU entière en parallèle dans l'étage d'exécution. Soit l'une est utilisée, soit c'est l'autre. En clair, on met plusieurs unités en parallèle dans le même étage d'exécution. Et il est possible de faire pareil avec d'autres unités. Par exemple, on peut mettre le ''barrel shifter'' en parallèle de l'ALU entière et de l'unité mémoire. Les décalages iront dans le ''barrel shifter'', les autres opérations entières dans l'ALU entière, et les instructions LOAD/STORE dans l'unité mémoire. Une autre possibilité, complémentaire des précédentes, est d'utiliser une unité de calcul dédiée aux branchements, qui est placée dans l'étage d'exécution. L''''unité de branchements''' est la seule à être reliée au séquenceur, l'unité de calcul normale ne l'est pas. Cela simplifie grandement la conception du processeur, sans impact sur les performances. [[File:Pipeline de longueur fixe avec unités de calcul en parallèle.png|centre|vignette|upright=2|Pipeline de longueur fixe avec unités de calcul en parallèle]] Une subtilité avec un pipeline de ce genre est que les instructions ont des besoins différents, mais qu'on les force à rentrer dans un pipeline qui a exactement N étages. La conséquence inévitable est que certains étages de pipeline leurs sont inutiles. Et le mieux, pour s'en rendre compte, et de regarder quelques exemples. Les instructions MOV de copie entre registre n'utilisent ni l'unité de calcul ni l'unité mémoire. Elles lisent un registre et le recopient directement dans le registre destination? Seul le banc de registre est utilisé, l'étage d’exécution ne sert pour ainsi dire à rien. Une solution pour implémenter ces instructions est que l'ALU entière incorpore l'opération ''pass through'' qui recopie une entrée sur sa sortie. Les instructions MOV de copie inter-registres passent donc par l'ALU entière, mais celle-ci effectue donc un "NOP", elle ne fait rien. La conséquence est que l'étage d'exécution ne fait rien, mais l'instruction MOV quand même à travers celui-ci. [[File:Inactivation d'un étage de pipeline avec des multiplexeurs.png|centre|vignette|upright=1.5|Inactivation d'un étage de pipeline avec des multiplexeurs]] Le dernier étage enregistre quelque chose dans les registres : soit la donnée lue en mémoire, soit le résultat fournit par l'ALU. Il regroupe le port d'écriture du banc de registre, et quelques MUX. Et l'instruction STORE ne l'utilise pas, vu qu'elle n'a rien à enregistrer dans les registres. Pareil avec les branchements : ils n'enregistrent rien dans les registres, ils altèrent uniquement le ''program counter''. Cependant, les branchements et STORE passent quand même par cet étage, elles n'ont pas le choix. Simplement, elles ne font rien lors de cet étage. Les branchements inconditionnels directs sont eux encore plus problématiques : ils sont exécutés par le décodeur d'instruction. Qui dit branchement inconditionnel dit que l'on n'a pas besoin de tester de conditions, donc pas besoin d'utiliser l'ALU entière, ni l'unité de branchement. De plus, qui dit direct dit que l'adresse de destination est encodée dans le branchement, le décodeur peut l'extraire sans lire les registres. Et évidemment, pas besoin d'enregistrer quoique ce soit dans les registres. Les étages du chemin de données sont totalement inutilisés. Pour exécuter un tel branchement, l'unité de décodage envoie un NOP dans le chemin de données. En clair : elle dit aux étages de ne rien faire pendant un cycle d'horloge. Un tel NOP n'est cependant pas une instruction, mais une micro-opération NOP, interne au pipeline, qui a été générée lors du décodage. Nous verrons que de tels NOP sont utilisés pour bien d'autres choses. Aussi, je leur donner le nom de '''NOP de pipeline''', terme de mon invention. Ceci étant dit, passons à tout autre chose. Le pipeline précédent met en parallèle ALU entière et unité mémoire. Et cela pose un problème pour gérer certains modes d'adressages, qui demandent de faire des calculs d'adresse. Les calculs d'adresse ne peuvent pas être fait dans l'ALU entière, vu qu'elle est en parallèle de l'unité mémoire, pas avant elle. La seule solution est d'utiliser une unité de calcul d'adresse dédiée, placée avant l'unité mémoire. L'unité de calcul d'adresse est très simple, plus économe en circuit et plus rapide qu'une ALU entière vraie. Il y a donc une petite duplication de circuit, mais elle est nécessaire. Une solution alternative fait faire les calcul d'adresse dans l'ALU entière. Le chemin de données est alors découpé en quatre étapes : * ''Read Operands'' (RO) : lecture des opérandes dans les registres ; * ''Execution'' (EXEC) : exécution d'un calcul dans l'unité de calcul ; * ''Memory'' (MEM) : accès mémoire dans l'unité mémoire, facultatif ; * ''Writeback'' (WB) : enregistrement d'une donnée dans les registres. [[File:Pipeline à 7 étages naïf.png|centre|vignette|upright=2|Pipeline à 7 étages naïf]] Un problème est que l'étage ''Memory'' (MEM) n'est pas utilisé pour les instructions de calcul, les branchements et toutes les instructions à l'exception de LOAD et STORE. Le problème précédent, à savoir des étages qui ne font rien, est là bien plus visible, plus fréquent et donc plus génant. Et au-delà de ça, même pour les instructions LOAD et STORE, il y a des étages inutilisés. Par exemple, avec le mode d'adressage indirect à registre, il n'y a pas de calcul d'adresse, l'étage d'exécution est inutilisé. Et c'est encore pire avec le mode d'adressage absolu, vu que l'adresse est fournie par le séquenceur. Le banc de registre n'est pas utilisé non plus, l'étage ''Read Operands'' est donc inutile ! Et pourtant, malgré ses défauts, nous verrons qu'une variante de ce pipeline a été utilisée sur des processeurs commerciaux. ===La propagation des signaux de commande dans le pipeline=== Découper le chemin de données demande de placer des registres de pipeline au bon endroit. Les registres propagent les données adéquates, mais aussi les signaux de commande générés par le décodeur, qui configurent le chemin de données. En effet, relier l'unité de décodage aux circuits incriminés directement ne marcherait pas. Les signaux de commande arriveraient immédiatement aux circuits, alors que l'instruction n'a pas encore atteint ces étages ! Les signaux de commande doivent traverser le pipeline et être consommés par les étages adéquats, et doivent donc être propagé d'étage en étage, via les registres de pipeline. Cette méthode sera utilisée sur tous les pipelines où le chemin de données contient plusieurs étages. [[File:Propagation des signaux de commande dans un pipeline à 7 étages.png|centre|vignette|upright=2.0|Propagation des signaux de commande dans un pipeline à 7 étages.]] Il faut noter que quand on parle de signaux de commande, on parle dans un sens très large. Et cela inclus les constantes immédiates du mode d'adressage immédiat. les constantes sont fournies par le séquenceur et sont propagées d'étage en étage jusqu'à atteindre l'étage avec l'unité de calcul. Il en est de même pour le mode d'adressage absolu, qui fournit une adresse mémoire dans l'instruction. L'adresse est extraite par le décodeur d'instruction, propagée dans le pipeline jusqu'à atteindre l'unité mémoire. [[File:Modes d'adressages absoluss et immédiats avec un pipeline.png|centre|vignette|upright=2.0|Modes d'adressages absoluss et immédiats avec un pipeline]] ==Les ''super-pipelines'' : des pipelines subdivisés== Le pipeline vu juste avant est conçu pour être logiques, avec une séparation entre chargement/décodage/exécution/accès au registre qui est relativement intuitive. Le pipeline précédent est un bon point de départ, qu'on peut améliorer. Cependant, cette implémentation réelle n'aurait pas des performances optimales en situation réelle. La raison est que les étages du pipeline ne sont pas équilibrés. Voyons ce que ça veut dire. Les étages de pipeline ne font pas la même chose. Prenons par exemple un pipeline basique, de type ''Fetch-Decode-Exec''. Les trois étages ne mettent pas le même temps pour faire leur travail. Pour donner un exemple pas fait pour être réaliste, charger une instruction depuis le cache prend 16 µs, la décoder prend 12 µs pour le décodeur, et l'exécuter prend 8 µs. Sans optimisations, la durée d'un cycle d'horloge devra se caler sur l'étage le plus lent. Nous l'appellerons l''''étage limitant''', terme qui est assez parlent. Les étages limitants sont souvent ceux qui demandent de faire des accès mémoire. Ils sont exactement deux : l'étage MEM qui accède au cache de données, mais aussi l'étage ''Fetch'' qui charge une instruction depuis le cache d'instruction. Les deux caches L1 ont un temps d'accès similaire, ce qui fait qu'ils sont tous deux des étages limitants. Cependant, ce n'est pas toujours le cas, il arrive aussi que les étages limitants soient l'étage de décodage, ou l'étage d'exécution. La solution la plus simple est de '''se caler sur l'étage limitant''', quitte à réorganiser le pipeline. Pour se caler sur l'étage limitant, il est possible de fusionner des étages vraiment rapides. Par exemple, imaginons que l'étage limitant fait 50 µs, qu'un calcul dans l'ALU fait 10 µs, et lire/écrire les registres en fait 15. Il est possible de fusionner lecture des opérandes et exécution dans un seul étage. Et l'exemple se généralise assez bien : il est intéressant de fusionner deux étages consécutifs pour obtenir un étage aussi rapide que l'étage limitant. L'inconvénient est que cela réduit le nombre d'étages, et donc le nombre d'instructions en vol. [[File:Pipeline à 6 étages simplifié.png|centre|vignette|upright=2|Pipeline à 5 étages naïf]] Mais il est possible de pipeliner encore plus le processeur, sans se caler sur l'étage limitant. L'idée est de subdiviser l'étage d'accès au cache, l'étage de décodage, voire l'étage d’exécution. Par exemple, l'étage de décodage devient alors deux étages séparés, voire trois. La technique porte le nom de '''super-pipeline'''. Elle permet d'augmenter le nombre d'étages, sans foncièrement changer les circuits du processeur. Il suffit de mettre des registres de pipeline au bon endroit dans le décodeur, l'ALU entière, les caches L1. En général, un super-pipeline a environ une dizaine d'étages, parfois plus, alors qu'un pipeline "classique" a moins de 7-8 étages. ===L'accès aux caches L1 est lent, mais se pipeline=== Dans l'exemple précédent, l'accès au cache d'instruction ne prend qu'un seul cycle d'horloge. Mais sur les processeurs modernes, l'accès au cache d'instruction prend deux à trois cycles. Et ce n'est pas incompatible avec la présence d'un pipeline, à condition que le cache lui aussi soit pipeliné. En clair, la solution est de '''pipeliner les caches L1'''. Lire une instruction se fait alors en plusieurs étapes. Nous verrons comment pipeliner le cache dans un chapitre dédié nommé "Le parallélisme mémoire au niveau du cache". Mais pour le moment, nous allons donner un exemple assez basique. On suppose que le cache est un ''phased'' cache, où les ''tags'' et les données sont dans deux SRAM séparées. Un tel cache peut être pipeliné pour avoir un accès en deux cycles : le premier cycle vérifie les ''tags'', le second accède aux données. [[File:Phased cache.png|centre|vignette|upright=1.5|Phased cache]] Un exemple classique est celui des premiers processeurs MIPS, précisément le MIPS R4000. Son pipeline était un pipeline RISC classique, dans lequel les étages FETCH et MEM étaient pipelinés. Concrétement, le pipeline du MIPS R4000 utilisait deux étages pour lire une instruction dans le cache d’instruction, trois pour lire dans le cache L1 de données. le résultat était un pipeline à 8 étages, qui est décrit dans le tableau ci-dessous. {|class="wikitable" |- ! colspan="2" | Instruction fetch !! Decocage !! Execution !! colspan="2" | Accès cache L1 !! Vérification TLB !! ''Writeback'' |- | ''Fetch'' 1 || ''Fetch'' 2 || ''Decode'' + ''Read Operands'' || ''Exec'' || ''Data Fetch'' 1 || ''Data Fetch'' 1 || ''Tag Check'' || ''Writeback'' |} Les premiers processeurs RISC faisaient en sorte qu'un accès aux caches L1 se fasse en un cycle d'horloge. Les premiers processeurs x86 étaient de ce type, les derniers étant la micro-architectures K5 d'AMD et le premier Pentium. La microarchitecture K6 d'AMD a pipeliné son cache, idem pour la microarchitectire P6 du Pentium 2 et 3. Utiliser un cache 1-cycle est donc une solution parfaitement viable, qui n'est abandonnée que quand le besoin de performance se fait sentir. ===Les décodeurs sont lents sur les CPU CISC, mais ils se pipelinent=== L'accès au cache est l'étage limitant sur les processeurs RISC. Pour les processeurs CISC, les choses sont parfois différentes. L'étage de décodage est lui aussi assez complexe, vu qu'il doit gérer des instructions de taille variable. Un décodeur CISC devient rapidement l'étage limitant, surtout si les caches L1 sont pipelinés. A problème similaire, solution similaire. Il est possible de '''pipeliner le décodeur d'instruction''', à savoir le scinder en plusieurs circuits consécutifs, séparés par des registres de pipeline. La scission peut se faire à des "moments de décodage" différents,. Une scission assez logique sépare la gestion des instructions de taille variable du décodage lui-même. La gestion des instructions de taille variable implique d'utiliser des ''barrel shifter'' et des opérations de masquage, qui sont couteux en circuits et assez "lents". Le décodage proprement dit vient après. Et les deux peuvent être séparées. Un premier étage de décodage transforme les instructions de taille variable en "instructions de taille fixe", le second étage décode ces dernières. les deux étages de décodage sont souvent appelés les '''étages de pré-décodage''' et l''''étage de décodage''' proprement dit. : Le terme pré-décodage ne doit pas être confondu avec le pré-décodage dans le cache d’instruction, qu'on verra dans quelques chapitres. Mais la scission peut être encore plus profonde. Le décodage lui-même peut être découpés en plusieurs étapes, qui sont elles-mêmes pipelinées. Mais nous ne pouvons pas vraiment en dire plus, je ne peux pas donner de généralités là-dessus, les détails dépendent vraiment du jeu d'instruction et de l'implémentation du décodeur d'instructions. Les processeurs modernes ont un pipeline de 8-20 étages, dont au moins un étage pour le calcul du ''program counter'' et 2 à 4 cycles pour l'accès au cache d'instruction, et tout autant de cycles pour le décodage. Et il est même possible de pipeliner l'étape de calcul du ''program counter''. Pour donner un exemple, le processeur Pentium Pro avait un pipeline de 14 étages, dont 7 étaient liés au décodage/chargement : deux étages pour le calcul du ''program counter'', trois pour l'accès au cache d'instruction, deux pour le décodage des instructions. ===Les instructions multi-cycles et l'ALU entière=== Enfin, il est possible de pipeliner l'unité de calcul. Mais nous n'allons pas le faire de façon naïve, nous allons ruser pour gérer des instructions comme les multiplications et les divisions assez simplement. Et comprendre pourquoi, faisons une remarque : les pipelines précédents ont un étage d'exécution unique, ce qui implique que toutes les instructions se font en un seul cycle d'horloge. Plus précisément, un calcul dans l'ALU se fait en un cycle d’horloge, on ne compte pas la lecture et l’écriture des registres. Mais autant c'est bien adapté pour les additions/soustractions, décalages et comparaisons, autant ce n'est pas le cas pour les multiplications et les divisions. Idéalement, il faudrait ajouter de quoi supporter des '''instructions multi-cycles''' au pipeline, à savoir des instructions qui mettent plusieurs cycles pour s'exécuter. Et justement, pipeliner l'unité de calcul permet de supporter ces instructions très facilement. Les instructions multi-cycles sont le plus souvent des multiplications entières, des divisions, ou des opérations flottantes. En conséquence, nous allons ajouter un multiplieur entier et une FPU dans le pipeline, dans l'étage d'exécution. Mais cela ne suffit pas, il faut modifier plus profondément le pipeline processeur. Il y a plusieurs implémentations possibles, mais nous n'allons pas toutes les voir. Deux chapitres entiers seront dédiés à cette problématique des instructions multi-cycles. L'implémentation la plus simple utilise plusieurs étages d'exécution consécutifs. Toutes les instructions mettent alors le même nombre de cycles pour s’exécuter. Et là, pas le choix : on doit se caler sur l'instruction la plus lente. Par exemple, si le processeur a des additions qui se font en un cycle, des décalages qui se font en deux, et des multiplications qui se font en 8 cycles, alors il y aura 8 étages d’exécution. En conséquence, les instructions plus rapides auront donc des étages qui ne font rien. L'instruction doit passer par ces étages, mais ceux-ci ne doivent rien faire. [[File:Processeur à pipeline fixe qui gére des instructions multicycles.png|centre|vignette|upright=3|Processeur à pipeline fixe qui gére des instructions multi-cycles]] Pour cela, on insère des registres entre la sortie de l'ALU et le banc de registre. Les registres en question sont appelés des ''staggering registers'', mais nous préférerons la traduction '''registres d'échelonnage'''. Il y a autant de registres d'échelonnage que cycles de retard à ajouter, car chacun retarde le résultat d'un cycle d’horloge. Pendant les cycles de retard, le résultat sera passé d'un registre d'échelonnage à l'autre, sans que rien ne se passe. [[File:Regsitres d'échelonnage.png|centre|vignette|upright=2|Registres d'échelonnage]] De plus, pour avoir un fonctionnement en pipeline, les multiplieurs et FPU doivent être pipelinés. Par exemple, si une multiplication fait 4 cycles, le multiplieur doit être segmenté en 4 étages, chacun effectuant une partie de la multiplication. Rien de compliqué à cela. Par exemple, prenons un multiplieur 32 bits. Il effectue 32 additions successives, on peut le découper en quatre circuits qui font chacun 32/4 = 8 additions. Pipeliner la FPU est un peu plus compliqué, mais rien d'insurmontable. [[File:Exemple avec une unité de multiplication totalement échelonnée.png|centre|vignette|upright=2|Multiplieur échelonné.]] L'implémentation en question donne un pipeline simple. Mais il y a d'autres implémentations bien plus complexes, qui ont des couts en hardware différents. Pour les prochains chapitres, on va supposer que le processeur utilise un pipeline de ce type. Mais une fois dans le chapitre sur les pipelines ''in-order'', nous verrons que certains processeurs ne pipelinent pas les unités de multiplication, ni la FPU. Nous verrons aussi que qu'il y a des pipelines de longueur variables, où le nombre d'étages change suivant l'instruction. Mais laissons cela pour plus tard. ==Le pipeline RISC classique et ses variantes== Les pipelines précédents sont conçus pour être relativement simples et pédagogiques. Mais la plupart des ''textbooks'' américains préfèrent utiliser un pipeline appelé le '''pipeline RISC classique'''. Il a été utilisé sur les premiers processeurs RISC : les CPU MIPS, SPARC, le 88000 et quelques autres. Des processeurs très influents et très populaires à leur époque. Le pipeline RISC est présent dans presque tous les cours qui abordent le sujet du pipeline, que ce soit pour son intérêt historique, pour son apparente simplicité, ou par habitude pédagogique. Il est cependant loin d'être idéal au niveau pédagogique. Sa simplicité apparente est trompeuse et il a de nombreuses particularités qui ne sont pas évidentes à comprendre. Il a beau avoir un nombre limité d'étages, il est en réalité optimisé d'une manière assez subtiles, et ces optimisations ne sont pas intuitives. Je vais cependant aborder ce pipeline RISC classique rapidement, ce qui vous sera utile si jamais vous souhaitez consulter d'autres sources, des cours, des articles wiki ou autres. Il s'agit d'un pipeline à 5 étages, qui met l'ALU et l'unité mémoire dans deux étages consécutifs. Les 5 étages sont les suivants : * ''Instruction Fetch'' (IF) pour l'étage de ''Fetch'' ; * ''Instruction Decode'' (ID) pour l'étage de décodage ; * ''Execution'' (EXEC) pour l'étage d’exécution ; * ''Memory'' (MEM) pour l'étage d'accès mémoire ; * ''Writeback'' (WB) pour l'étage d'enregistrement dans les registres ; Il est conçu pour une architecture RISC, avec un jeu d'instruction adapté pour simplifier le pipeline. Déjà, le processeur ne supporte pas les instructions multi-cycles, ce qui signifie que toutes les instructions se font en un cycle d'horloge. Exit donc les multiplications et divisions, qui sont absentes de ce processeur. Et c'est une simplification appréciable, car supporter des instructions multi-cycles complexifie grandement le pipelines. D'ailleurs, dans les deux-trois chapitres qui vont suivre, on mettra les instructions multi-cycles sous le tapis, par souci pédagogique. Par contre, malgré ses simplifications, il gère les modes d'adressage indicés, et d'autres modes d'adressages qui demandent de faire des calculs d'adresse. Les calculs d'adresse ne sont pas réalisé dans une unité de calcul d'adresse séparée, mais dans l'ALU entière. Et c'est pour cela qu'il utilise un étage d'exécution et un étage mémoire séparé. Quelques cours utilisent parfois une version simplifiée à 4 étages, qui fusionne l'étage d'exécution et d'accès mémoire, qui est nettement plus simple à comprendre. Bizarrement, ce pipeline n'utilise pas l'ALU entière pour faire les branchements. Elle utilise à la place des additionneurs séparés de l'ALU. Le principe est que cela permet d'exécuter les branchements en avance, ce qui a des avantages qui deviendront évident au chapitre suivant, quand nous parlerons des problèmes que causent les branchements pour un pipeline. Disons que pour une utilisation optimale du pipeline, les branchements doivent être exécutés le plus tôt possible. ===La lecture des opérandes se fait en parallèle du décodage=== L'unité de décodage est très simple, elle n'a pas de microcode. C'est nécessaire pour que le décodage se fasse en un seul cycle d'horloge. De plus, les processeurs RISC utilisent des encodages simples, faciles à décoder. Leurs instructions sont de taille fixes, elles étaient toutes codées sur 32 bits sur les processeurs avec ce pipeline. Une subtilité est que la lecture des opérandes se fait en parallèle du décodage, et non après. C'est étrange, pas intuitif, et cela complexifie le pipeline. Les raisons derrière ce choix sont multiples. La première est que cela permet d'exécuter les branchements conditionnels en avance. La seconde est une histoire de dépendances structurelles que nous ne pouvons pas aborder ici. Avec ce choix, l'équilibrage du pipeline n'est pas parfait, vu que l'étage de décodage fait beaucoup de choses. Il faut dire qu'on a fusionné l'étage de décodage avec l'étage ''Read Operand''. Le décodage devient donc beaucoup plus compliqué, car il faut extraire des numéros/noms de registre précocement lors du décodage. Heureusement, le pipeline RISC classique était prévu initialement pour des processeurs MIPS, des processeurs RISC avec un encodage très simple. Le décodage des instructions était très simple, les opcodes étaient tous à la même place, les noms/numéros de registres aussi, on pouvait extraire l'opcode et le noms/numéros de registre au tout début du décodage. Les noms/numéros de registre étaient extraits simplement avec quelques multiplexeurs, puis envoyés au banc de registre pendant que l'unité de décodage finissait son travail. Mais notons que cela ne fonctionne que sur des processeurs RISC, et encore : il faut que l'encodage des instructions soit assez simple pour le permettre. C'est un détail qui ne se généralise pas. ===Les branchements, leur exécution et leur décodage=== L'étage de chargement dispose d'une première optimisation assez intéressante : il effectue la mise à jour du program counter en parallèle de l'accès mémoire. Le ''program counter'' est directement relié à l'entrée d'adresse du cache ou de la mémoire, son incrémenteur et les MUX pour les branchements sont situés après. Par contre, la gestion des branchements est assez complexe. Les architectures MIPS peuvent faire un branchement qui s'exécute si deux registres sont égaux. Le calcul d'un branchement demande donc de comparer deux registres, puis de décider s'il faut brancher selon le résultat. Une première possibilité, la plus intuitive, place le comparateur dans l'étage d'exécution. D'autres implémentations utilisent l'unité de calcul entière pour faire la comparaison, ce qui est équivalent. [[File:MIPS Architecture (Pipelined).svg|centre|vignette|upright=2.5|MIPS Architecture (Pipelinée)]] Mais le pipeline RISC classique exécute la comparaison dans l'unité de décodage, juste après la lecture des registres ! L'avantage de faire ainsi n'est pas évident, mais le deviendra dans le chapitre suivant. Mais cela se fait au prix d'un étage de décodage bien chargé, le pipeline est très déséquilibré. LLe schéma précédent montre un exemple, mais sur une variante 4 étages du pipeline RISC classique. [[File:Conditional Microprocessor 2.0 Pipeline Design 1.1.png|centre|vignette|upright=2.0|Le circuit noté JUMP est le comparateur qui sert à comparer deux registres. CF est un bit du registre d'état utilisé pour les branchements.]] Un autre détail est que le calcul des branchements relatifs est réalisé dans l'unité de calcul. Quelques processeurs exécutaient les branchements conditionnels dans l'ALU entière. Pour rappel, les branchements relatifs ajoutent une constante au contenu du ''program counter'', afin de brancher X adresses après/avant l’instruction courante. Il y a donc une addition à faire, qui est réalisée par un additionneur dédié dans l'unité de chargement, du moins dans la majorité des cas. Mais le pipeline RISC préfère utiliser l'additionneur de l'ALU entière pour cela, pour diverses raisons. Le ''program counter'' est donc propagé dans le pipeline, et est connecté à un multiplexeur en entrée de l'ALU entière. ==La performance d'un pipeline== Revenons un peu sur les pipelines synchrones. L'usage d'un pipeline augmente les performances, mais essayons de comprendre pourquoi. La raison est que l'on peut exécuter plusieurs instructions en même temps. Mais il se pourrait que cela aie d'autres effets, par exemple sur le temps d’exécution des instructions ou la fréquence. Pour comprendre toutes les conséquences de l'usage d'un pipeline, le mieux est d'étudier l'impact du pipeline sur divers paramètres du processeur : fréquence, temps d’exécution, parallélisme d'instruction, et autres. Nous allons nous focaliser sur la fréquence, le temps d’exécution d'une instruction et le nombre d'instructions exécutées en parallèle. ===La performance théorique d'un pipeline idéal (approche simplifiée)=== Pour commencer, nous allons voir cas d'un pipeline idéal, c'est à dire que nous allons négliger le fait qu'il y a des registres entre les étages du pipeline. Ils ont un temps de propagation non-nul, et ont donc un effet sur la fréquence et sur la latence des instructions. Mais pour simplifier les calculs, nous allons négliger le temps de propagation des registres inter-étages. Sur les processeurs réels, certains étages possèdent un chemin critique plus long que d'autres. On est alors obligé de se caler sur l'étage le plus lent, ce qui réduit quelque peu le gain. La durée d'un cycle d'horloge doit être supérieure au temps de propagation de l'étage le plus lent. [[File:Pipelining réel d'un circuit.png|centre|vignette|upright=2.5|Pipelining hétérogène d'un circuit]] Cependant, nous allons supposer que les étages sont assez bien équilibrés, de manière à avoir le même temps de propagation. Le pipeline qu'on va étudier est donc un cas irréaliste de pipeline, idéal. Prenons un processeur qui exécute toutes ses instructions en un seul cycle sur un processeur et découpons ce processeur en 5 étages équilibrés. Voici ce que l'on obtient : [[File:Effet de l'usage d'un pipeline sur la fréquence d'un processeur.png|centre|vignette|upright=2.0|Effet de l'usage d'un pipeline sur la fréquence d'un processeur.]] Le schéma précédent montre que la fréquence change entre les deux situations car le cycle d'horloge n'est pas déterminé par l'instruction entière, mais par le temps de propagation d'un étage. Et cette durée correspond à la durée d'un cycle, divisée par le nombre d'étages. On passe donc c'un processeur dont la fréquence est de : : <math>f = {1 \over t}</math>, avec t le temps d’exécution d'une instruction (sans pipeline). à un processeur de fréquence : : <math>f_\text{pipeline} = \frac{1}{t \over N} = N \times f</math>, avec N le nombre d'étages. On voit que la fréquence a été multipliée par le nombre d'étages avec un pipeline ! En clair, l'usage d'un pipeline permet donc de multiplier la fréquence par un coefficient plus ou moins proportionnel aux nombres d'étages. Par contre, le temps d’exécution d'une instruction ne change pas avec ou sans pipeline ! Certes, la fréquence est multipliée par N. Mais une instruction qui mettait un cycle d'horloge pour s'exécuter en prend maintenant N. Les deux phénomènes se compensent exactement, le temps d'exécution d'une instruction reste le même. Si la fréquence est multipliée par N, c'est compensée par le fait que l'instruction prend maintenant N étages pour s’exécuter, et donc N cycles d'horloge. Le gain en performance vient du fait que le pipeline exécute plusieurs instructions simultanées, au lieu d'une seule sans pipeline. Il y a précisément une instruction dans chaque étage maximum, ce qui multiple la puissance de calcul maximale par le nombre d'étages du pipeline. En clair, le pipeline ne réduit pas le temps d’exécution d'une instruction, mais augmente les performances en en exécutant plusieurs presque simultanément. Si la latence reste la même, le débit du processeur augmente. Au passage, peut-être avez-vous pensé à utiliser l'équation vue dans le chapitre sur la performance d'un ordinateur : : <math>\text{Temps d’exécution d'un programme} = N_{instructions} \times \frac{CPI}{f}</math>, avec f la fréquence, CPI le nombre de cycles moyen par instruction, et <math>N_{instructions}</math> le nombre d'instructions à exécuter. Mais l'équation en question ne fonctionne que si on suppose que les instructions sont exécutées l'une après l'autre. ===La performance théorique d'un pipeline avec des registres inter-étages=== En théorie, le raisonnement précédent nous dit que le temps d’exécution d'une instruction est le même sans ou avec un pipeline. Cependant, il faut prendre en compte les registres intercalés entre étages du pipeline, qui ajoutent un petit peu de latence. Nous allons noter <math>\tau</math> le temps de propagation d'un de ces registres et refaire les calculs précédents, en tenant compte de ce terme. Le temps de parcours d'un étage devient : : <math>t_\text{étage} = \frac{t}{N} + \tau</math> La fréquence du processeur est l'inverse de <math>t_\text{étage}</math>, ce qui donne : : <math>f = \frac{1}{\frac{t}{N} + \tau} = \frac{N}{t + \tau \times N}</math> L'équation précédente nous dit que la fréquence du processeur avec un pipeline augmente, comparé à un processeur sans pipeline, mais pas autant que dans le cas idéal précédent. Elle n'est pas multipliée par le nombre d'étages, mais un peu en-dessous. Passer de 1 étage à 2 donne un gain en fréquence, mais passer de 20 à 40 aura un effet beaucoup plus faible. Les rendements sont rapidement décroissants, la durée d'un étage étant de plus en plus dominée par la latence des registres. On peut calculer le gain en comparant la fréquence avec un pipeline "parfait", où les registres sont négligeables : : <math>\frac{f_\text{Pipeline avec registres}}{f_\text{Pipeline sans registres}} = \frac{1}{{N \tau \over t} + 1}</math> Le résultat est inférieur à 1 du fait de l'influence des registres de pipeline. Le terme <math>{N \tau \over t}</math> correspond au pourcentage de temps passé à traverser les registres par rapport au temps de propagation sans les registres. Par exemple, si le temps de propagation des registres prend la moitié du temps de propagation, alors ce terme vaut 1 et la fréquence est divisée par deux. ===Le monde réel : l'exemple des processeurs Intel=== Les développements précédents sont très intéressants, mais il reste à voir ce que cela donne dans le monde réel. Pour cela, il faut prendre un échantillon de processeurs et comparer leur fréquence en fonction de la longueur de leur pipeline. Mais il faut tenir compte de la finesse de gravure, qui impacte fortement la fréquence du processeur et fausse les comparaisons. Il est possible de déterminer une une ''fréquence relative'', à savoir la fréquence à finesse de gravure égale, par rapport à un processeur de référence. Et on s’aperçoit que cette fréquence relative est fortement reliée aux nombres d'étages du pipeline. Un processeur à haute fréquence relative a un pipeline plus long que ses concurrents de fréquence relative plus basse. La relation n'est pas proportionnelle, du fait des registres inter-étages et de l’hétérogénéité des latences intra-étage. Par exemple, regardons la fréquence relative des processeurs Intel d'avant le Pentium 4 (les seuls pour lesquels j'ai les données). Voici ce qu'on obtient : [[File:Fréquences relatives processeurs Intel pré-Pentium 4.png|centre|vignette|upright=2|Fréquences relatives processeurs Intel pré-Pentium 4]] Et comparons la longueur de leur pipeline : {|class="wikitable" |- ! Processeur ! Longueur du pipeline |- | 286 | rowspan="4" | 5 |- | 386 |- | 486 |- | Pentium |- | Pentium 2/3 | 14 |- | Pentium 4 | 31 à 20 selon les modèles |} On s’aperçoit qu'il n'y a pas proportionnalité exacte, mais que la tendance est bonne. La profondeur du pipeline a presque triplé au passage au Pentium 2/3, mais cela s'est traduit par une hausse de fréquence de seulement 50%. Pour le Pentium 4, sa fréquence a sextuplé par rapport aux premiers CPU Intel, mais la fréquence a été multipliée par seulement 2,5. Avant les années 2000, la fréquence était un argument marketing puissant. Ce qui a poussé certains fabricants de processeurs à créer des processeurs avec un nombre d'étages élevé pour les faire fonctionner à très haute fréquence. C'est ce qu'a fait Intel avec le Pentium 4, dont le pipeline faisait 20 étages pour les Pentium 4 basés sur les architectures Willamette et Northwood, 31 étages pour ceux basés sur les architectures Prescott et Cedar Mill. L'approche a rapidement montré ces limites, poussant Intel à revenir à un nombre d'étages raisonnables pour les processeurs Core 2 Duo. ==Les exceptions précises== Les processeurs avec un pipeline ont un petit problème avec des exceptions matérielles. Les exceptions stoppent l’exécution du programme en cours et effectuent un branchement vers une routine d'interruption. Mais avant que l'exception n'ait été détectée, le processeur a chargé des instructions dans le pipeline en avance. Lorsque l'exception est détectée, elle mémorise le ''program counter'' de la dernière instruction chargée, et reprendre à cet endroit là. La conséquence est que les exceptions sont décalées de quelques cycles par rapport à un processeur sans pipeline. On dit que les exceptions sont ''imprécises''. [[File:Exception et pipeline.png|centre|vignette|upright=2|Exception détectée au 3ème étage d'un pipeline à 4 étage : deux instructions ont été chargées en avance.]] Et ce décalage de quelques cycles d'horloge est problématique. La majeure partie des exceptions sont traitées comme suit : la routine de l'exception traite la situation, puis le processeur redémarre l'instruction fautive. Un exemple est le cas d'une instruction d'accès mémoire qui déclenche un défaut de page : le défaut de page déclenche une exception, la routine d'exception traite le problème en chargeant la page voulue en RAM, puis re-démarre l'instruction mémoire. Mais re-démarrer l'instruction fautive implique de reprendre l'exécution du programme juste après l'instruction qui a déclenché l'exception. Si des instructions ont été chargées/exécutées en avance, ce n'est pas le cas : on reprend plusieurs instructions après. En soi, le processeur peut très bien ne rien faire contre ce problème, et utiliser des exceptions imprécises. Le problème peut être géré de manière purement logicielle. Au pire, cela peut poser quelques problèmes à quelques programmes comme les débuggers, même si les cas sont rares. Par contre, cela implique que l'on ne peut pas traiter les exceptions en re-démarrant l'instruction fautive. Et cela complexifie grandement la gestion des exceptions, le système d'exploitation est plus complexe, le cout logiciel est là. Pour régler ce petit problème, les concepteurs de processeur ont fait en sorte que le processeur gère lui-même exceptions et interruptions correctement. Ils permettent une gestion des '''exceptions précises'''. ===Le hardware pour les exceptions précises=== Supporter les exceptions précises demande des modifications assez mineures du processeur. L'idée est que les instructions chargées en avance sont juste annulées, elles n'enregistrent pas leur résultat dans les registres et n’accèdent pas à la mémoire. En effet, si une instruction n'enregistre pas son résultat, que ce soit dans les registres ou la RAM, c'est comme si elle n'avait rien fait. Si une exception a lieu, il suffit de ne pas enregistrer les résultats des instructions suivantes dans les registres, jusqu’à ce que toutes les instructions fautives aient quitté le pipeline. Les exceptions précises sont gérées dans le dernier étage du pipeline, l'étage de ''writeback'', celui d'écriture dans les registres. Pour cela, tout étage fournit à chaque cycle un '''indicateur d'exception''', un groupe de quelques bits qui indiquent si une exception a eu lieu et laquelle le cas échéant. Ces indicateurs sont propagés dans le pipeline, ils passent à l'étage suivant à chaque cycle. Une fois arrivé à l'étage d’enregistrement, un circuit combinatoire vérifie ces bits pour détecter si une exception a été levée, et interdit l'écriture dans les registres en cas d'exception. Si les écritures sont interdites, elles le sont durant un certain nombre de cycles, dépendant de l'exception levée. On dit qu'on '''vide le pipeline''' des instructions fautives. [[File:Propagation de l'indicateur d'exception.png|centre|vignette|upright=2|Propagation de l'indicateur d'exception.]] Il faut aussi qu'une fois l'exception terminée, le programme reprenne là où il faut. Pour cela, il faut restaurer le ''program counter'' pour qu'il pointe vers l’instruction adéquate. Il s'agit de l'instruction qui a déclenché l'exception. Pour cela, même solution : le ''program counter'' est propagé dans le pipeline et est restauré en cas d'exception en prenant le ''program counter'' disponible à l'étage d'enregistrement. Une utilisation "détournée" du système d'exceptions précise est la gestion des défauts de cache. Elle permet de ne pas bloquer le pipeline au moment même où un défaut de cache a lieu, mais retarde le blocage. L'idée est qu'un défaut de cache lève une exception matérielle, nommée ''cache fault''. Les instructions qui suivent la lecture/écriture fautive sont alors propagées dans le pipeline et sont annulées à la toute fin. Une fois le pipeline vidé, l'instruction fautive est re-exécutée une fois que le défaut de cache est terminé. En clair, on vide le pipeline avant de le re-démarrer. Un simple compteur est utilisé pour temporiser le re-démarrage du pipeline. Les exceptions précises sont aussi utilisées pour corriger des problèmes liés aux branchements, comme on le verra dans le chapitre suivant. ===Les écritures mémoire sont retardées avec des exceptions précises=== Il faut préciser une chose importante : toutes les écritures sont annulées, y compris les écritures en mémoire RAM, y compris celles dans le cache de données. Mais cela pose un problème : les instructions STORE sont censées être exécutées dans l'étage MEM ou Exec, soit avant l'étage de ''Writeback''. Notez bien le censé : ce n'est pas le cas avec les exceptions précises. En réalité, avec des exceptions précises, les instructions STORE font leur écriture dans l'étage de ''Writeback'', l'étage final. Les écritures mémoire sont donc retardées jusqu'à l'étage de ''Writeback''. La mise en attente se fait grâce à une mémoire spécialisée, appelée la '''file d'écriture'''. Le terme "file" trahit le fait que c'est une mémoire FIFO, le caractère FIFO permettant de conserver l'ordre des écritures. L'idée est la suivante : l'étage MEM fait l'écriture dans la file d'écriture, puis l'étage de ''Writeback'' la met en attente. A l'étage de ''Writeback'', la file d'écriture exécute l'écriture dsans le cache. L'écriture est mise en attente dans l'étage MEM, et est finalisée dans l'étage de ''Writeback''. Si une exception est détectée, l'étage de ''Writeback'' vide la file d'écriture, ce qui annule les écritures mises en attente. Les écritures faites à tord sont donc annulées. [[File:Store Queue sur un pipeline fixe.png|centre|vignette|upright=2|File d'écriture sur un pipeline fixe]] Avec une file d'écriture, l'étage MEM s'occupe des lectures, et l'étage ''Writeback'' des écritures proprement dit. Ils font tous deux un accès au cache, ce qui est une dépendance structurelle. Une solution intuitive, utilise un cache de données multiport, avec un port de lecture séparé du port d'écriture. Le port de lecture est utilisé par l'étage MEM, alors que le port d'écriture est utilisé par l'étage de ''Writeback''. : La file d'écriture font nous parlons ici ne doit pas être confondue avec le ''Write buffer'' présent dans la hiérarchie mémoire. Les deux sont traduit dans ce cours avec le terme file d'écriture, mais il s'agit de deux choses différentes. La file d'écriture peut mettre en attente plusieurs écritures. Le nombre d'écriture à mettre en attente dépend du pipeline. Le nombre exact est égal au nombre d'étages situés entre l'étage MEM et l'étage ''Writeback'', plus 1. Par exemple, les pipelines précédents n'ont pas d'étages entre MEM et ''Writeback'', ce qui fait que la ''Write Queue'' n'a qu'une seule entrée. Il peut être remplacé par un simple registre, mais ce n'est que rarement fait. Mais de nombreux pipelines ont des étages entre les étages MEM et ''Writeback''. Par exemple, s'il y a 4 étages entre les deux, il faut que la file d'écriture puisse mettre en attente 5 écritures. Un autre point est que l'étage MEM peut lui-même prendre plusieurs cycles d'horloge, ce qui est possible si le cache est pipeliné. Dans ce cas, ce nombre de cycle s'ajoute au nombre d'entrées. {|class="wikitable" |- ! colspan="3" | Étages MEM !! colspan="4" | Étages autres !! Étage de ''Writeback'' |- | MEM 1 || MEM 2 || MEM 3 || X || X || X || X || ''Writeback'' |- ! colspan="8" | File d'écriture |- | Entrée 1 || Entrée 2 || Entrée 3 || Entrée 4 || Entrée 5 || Entrée 6 || Entrée 7 || Entrée 8 |} Pour résumer, : <math>\text{Capacité de la file d'écriture} = \text{Nombre d'étages MEM} + \text{Nombre d'étages entre MEM et WB} + 1</math> ===Le contournement de la file d'écriture=== Les écritures sont donc retardées de plusieurs cycles, pour s'exécuter en fin de pipeline. Et il se peut que la donnée écrite soit lue pendant ce laps de temps. Il s'agit du cas où une instruction STORE est suivie par une instruction LOAD, et que les deux accèdent à la même adresse. Lire une donnée qu'on vient d'écrire n'est pas si rare, surtout sur les processeurs x86, qui ont peu de registres, et doivent parfois faire de la place pendant quelques cycles, avant de rapatrier des données dans les registres. Vu que la lecture a lieu pendant la mise en attente, la donnée n'a pas été écrite dans le cache. Toute lecture dans le cache lira une donnée invalide. Mais il y a une solution assez évidente. L'idée est que les lectures consultent à la fois le cache et la file d'écriture. La file d'écriture doit cependant être modifiée pour fonctionner comme un mélange entre mémoire cache et mémoire FIFO. Le cache envoie l'adresse à lire à la file d'écriture, et celle-ci vérifie si une écriture est en attente à cette adresse. Si c'est le cas, c'est un ''succès de file d'écriture'', et celle-ci envoie alors la donnée associée à l'étage d'accès mémoire. Sinon, la lecture accède au cache, là où se trouve la donnée à lire. La solution porte le nom de ''Store to load Forwarding'' ou encore de '''réacheminement écriture-vers-lecture'''. [[File:Store to load forwarding sur un pipeline simple.png|centre|vignette|upright=2|Store to load forwarding sur un pipeline simple]] <noinclude> {{NavChapitre | book=Fonctionnement d'un ordinateur | prev=Le Translation Lookaside Buffer | prevText=Le Translation Lookaside Buffer | next=La prédiction de branchement | nextText=La prédiction de branchement }} </noinclude> nu25r0yjr7ak0r2404ei9u52xiupgtt Univers-Enfants 0 77815 775577 775525 2026-10-23T01:00:37Z JackBot 14683 Formatage, [[Spécial:Pages non catégorisées]] 775577 wikitext text/x-wiki <center> Matthieu GIROUX '''L’Univers pour les Enfants''' [http://www.archive.org/details/UniversEnfants archive.org/details/UniversEnfants] Éditions LIBERLOG<br>Éditeur n° 978-2-9531251 {{ISBN|9791092732801}} Droits d'auteur 2021-2022 Creative Common by SA Matthieu GIROUX 13 Rue François Tanguy PRIGENT 35000 RENNES 02 23 46 06 54 Dépôt légal PARIS FRANCE – Septembre 2021 </center> = Notes de l'auteur = Ce livre s’adresse aux enfants qui connaissent leur environnement et qui veulent aller au-delà. == Du même auteur == * La Restauration * La Bataille (publication 2022) * L’Univers est Vivant ! * L’Univers pour les Enfants * L'Économie pour les Petits * L'Économie pour les Enfants * Pourquoi un Dieu ? * Conseils pour les Chrétiens * Dieu pour les Enfants * Devenir un Génie * Simplifier l'école * Favoriser la Créativité, Coaching de coach * Expliquer sa Religion Catholique * Morale Économique des Métiers * L'Économie est Physique * La généalogie c'est gratuit, avec les logiciels libres * Les Deux France * France – Fonctionnement de notre société * LAZARUS FREE PASCAL NE * LAZARUS FREE PASCAL * L'astucieux GNU LINUX (wikilivre Ubuntu) * Nos Nouvelles Nos Vies * Poèmes et Sketchs – De 2003 à 2008 * Nouvelles Courtes Visibles sur livrels.fr, en wikilivres, les sources sur archive.org/details/Scribels. À [http://liberlog.fr/ liberlog.fr], [http://www.comment-ecrire.fr/ comment-][http://www.comment-ecrire.fr/ ecrire.fr], [http://www.favorisercreativite.fr/ favorisercreativite.fr], [http://www.simplifierlecole.com/ simplifierlecole][http://www.simplifierlecole.com/ .com], [http://www.universvivant.com/ universvivant.][http://www.universvivant.com/ com], [http://www.conseilschretiens.fr/ conseilschretiens.fr], [http://www.quiestdieu.net/ pourquoidieu.fr], [http://www.etrechrist.com/ etrechrist.com], [http://www.lazarus-components.org/ lazarus][http://www.lazarus-components.org/ -][http://www.lazarus-components.org/ components.org], [http://www.devenirgenial.fr/ devenirgenial.fr], [http://www.ecoreel.fr/ ecoreel.fr], [http://courseconomie.com/ course][http://courseconomie.com/ conomie.com], [http://www.economiepetits.com/ ecopetits.fr], [http://www.france-analyse.com/ france-analyse.com], [http://www.ethiquetravail.com/ ethiquetravail.com], [http://www.programmationinfos.com/ informalibre.com], [http://www.histoire.ovh/ histoire.ovh]. == Du même Éditeur == * Alors vous voulez tout savoir sur l'économie&nbsp;? Lyndon Larouche * Mon Père m'a Dit<br/>Elliott Roosevelt * Les Principes de la Science SocialeHenry Charles Carey * Le Droit Des GensEmer De Vattel = 1) Comment c’est fait ? = == Qu’est-ce que la Terre ? == Samedi 2 octobre 2021 [[Image:The Earth seen from Apollo 17.jpg|alt=|droite|vignette|upright|<center>La terre</center>]] La terre est le sol où tu marches. C’est une boule que tu peux distinguer quand tu vois partir un bateau très loin ou quand tu vois son ombre sur la lune qui tourne autour de la terre. La terre est une planète froide parce que son sol est froid. Mais au début, la terre était chaude. On dit qu’elle était magmatique, parce que le sol chaud d’une planète est appelé magma. Maintenant, le magma se cache sous le sol et fait bouger le sol. En effet, le magma n’est pas solide et bouge. Cela donne les tremblements de terre. La France a peu de tremblements de terre. On sépare la terre en deux. Il y a le nord et le sud. L’équateur sépare le nord et le sud. L’équateur est une ligne imaginaire qui coupe la terre en deux de façon toujours imaginaire. Le nord est situé au dessus de l’équateur et le sud en dessous de façon imaginaire. La terre émet un champ magnétique. Un champ magnétique c’est une force invisible, c’est à dire quelque chose qui fait bouger les boussoles. Une boussole contient une aiguille qui bouge entre le nord et le sud. L’aiguille d’une boussole indique le nord pour son aiguille du haut. On met un N sur l’aiguille du haut et un S sur l’aiguille du bas. La boussole émet elle aussi un champ magnétique qui s’aligne sur le champ magnétique terrestre. La terre possède des mers et des terres. Il y a plus de mer que de terre sur la terre. Les terres sont organisées en continents. Un continent est une terre entourée d’eau. Il y a 4 ou 5 continents. Les continents englobent leurs pays, c’est à dire des frontières contenant des nations, des gens ayant les mêmes préoccupations. [[Image:World Map (political).svg|alt=|droite|vignette|upright|<center>On peut représenter la terre à plat.</center>]] L’Afrique est un continent. L’Amérique est un continent qui contient les pays comme les États-Unis, le Canada, le Mexique au Nord, Le Vénézuela, le Brésil, l’Équateur et d’autres pays d’Amérique du Sud au sud. Oui l’équateur en minuscules est une ligne imaginaire et aussi un pays en majuscule. L’Eurasie contient les continents Europe et Asie. L’Europe a voulu se démarquer de l’Asie. L’Eurasie contient par exemple les pays France, Russie et Chine. On a créé le continent Océanie qui contient les îles de la mer pacifique. L’Océanie contient le pays Australie par exemple. La terre est donc une planète que l’humain se partage. Mais on ne connaît pas tous les êtres vivants qu’il y a sur terre. Par exemple, on ne connaît qu’une infime partie de la mer, qui se cache dans ses profondeurs. Les mers sont très profondes. C’est comme des montagnes inversées. '''Mes Notes''' Enquêter sur le pays où tu vies. == Pourquoi il y a la Nature ? == Mercredi 22 décembre 2021 La vie est un miracle. La nature est donc un miracle. Il y a la nature parce que l’humain était un animal au début, un descendant du singe. La nature évolue pour faire naître des êtres avec des esprits. L’esprit est l’aboutissement ultime de la nature. L’humain a un esprit créatif, aboutissement de la nature. Seul Jésus a indiqué pourquoi il y avait la nature. Il y a la nature pour que l’humain puisse rejoindre Dieu. Les plantes permettent d’apporter à nourrir pour les animaux et les humains. En effet, nous n’acceptons pas n’importe quelle matière dans notre corps. Notre corps est très perfectible. '''Mes Notes''' Écrire sur ce que tu observes dans la nature. == Qu’est-ce que la Lune ? == Samedi 13 novembre 2021 [[Image:Friedrich - Two Men Contemplating the Moon.jpg|alt=|droite|vignette|upright|<center>Caspar Friedrich – Contemplation de la Lune</center>]] On voit la lune la nuit. Mais elle est cachée par le soleil le jour. La lune est une planète qui tourne autour de notre terre. C’est pour cela qu’on la voit grosse. La lune est tellement proche qu’elle crée les marées, avec aussi le soleil un peu. Ainsi, quand on ne voit pas la lune, il peut y avoir une marée basse. Tout cela est dû à la gravité. Les corps s’attirent. Ton corps est attiré par la terre juste sous toi. Dans l’espace, l’eau s’agglutine sur les corps. Le croissant de lune est dû à la réverbération du soleil sur la lune. Mais toute la lune est quand même là. '''Mes Notes''' Comparer les marées aux vues de la lune. == Pourquoi le Soleil se Cache ? == Mercredi 29 septembre 2021 [[Image:Systeme solaire fr.jpg|alt=|droite|vignette|upright|<center>Les planètes sont plus éloignées que ça.</center>]] Le soleil se cache parce que la terre tourne sur elle-même et autour du soleil. Cela donne le jour et la nuit. Oui ça n’est pas le soleil qui se déplace mais bien la terre où tu te situes. En plus, la terre tourne autour d’un axe courbé autour du soleil. Cela donne les saisons. Mais il n’y a pas que la terre qui tourne autour du soleil. Il y a Mercure, Vénus et Mars par exemple. Au total il y a 9 planètes qui tournent autour du soleil. Mais on ne connaît pas que ces planètes. On découvre plein d’exoplanètes, des planètes très très éloignées, autour des étoiles autres que le soleil. '''Mes Notes''' Enquêter sur le culte de Ra des égyptiens. == Le Vide c’est Quoi ? == Dimanche 2 janvier 2022 Le vide devrait être le néant, c’est à dire rien du tout. Seulement, on sait que des ondes traversent le vide. On a du mal à comprendre cela. En effet, on ne sait pas d’où viennent ces ondes. Elles viennent probablement des âmes. Donc le vide n’est pas le néant. C’est possible que le néant existe, mais pas dans notre univers. Le vide est donc l’absence de matière pouvant malgré tout être traversé par des ondes ne se matérialisant pas. '''Mes Notes''' Écrire un poème sur les ondes qui se propagent dans le vide. == Qu’est-ce que l’Esprit ? == Mardi 19 octobre 2021 [[Image:2 pictures brain.jpg|alt=|droite|vignette|upright|<center>Voici un esprit matérialisé, le cerveau</center>]] Chaque être vivant a un esprit. Les plantes n’ont pas d’esprit. Mais chaque espèce animale a aussi un esprit commun pour se comprendre. L’esprit, c’est ce qui fait qu’on comprend quelqu’un de la même espèce. L’esprit ne peut aller que vers un seul objectif. C’est ce qui unifie le corps et l’esprit. Chaque être réalise un objectif dans le temps imparti pour le réaliser. Donc tu as un esprit qui est inclus dans l’esprit humain. On comprend ce que tu dis par l’esprit humain. Nous sommes un peu télépathes pour nous comprendre. Il y a aussi un esprit qui modifie la matière vivante. On l’appelle l’esprit saint. Cet esprit agit pour changer le monde s’il va mal. On pense qu’il a permis aux animaux d’évoluer. L’esprit et l’âme sont liés tant qu’on est vivant. Quand on mourra, notre esprit sera transporté à côté de notre âme si nous sommes justes. Notre esprit humain sera abandonné pour aller dans le monde de Dieu. Nous renaîtrons dans une nouvelle vie auprès de Dieu. '''Mes Notes''' Écrire à propos de la façon dont tu vois le monde. == Qu’est-ce que l’Âme ? == Vendredi 26 novembre 2021 [[Image:Death Mask of Psusennes I (2012).jpg|alt=|droite|vignette|upright|<center>Les égyptiens croyaient en une vie après la mort.</center>]] Notre corps ne peut fonctionner tout seul avec la matière qui le fait. La matière ne peut s’organiser à elle seule. Il n’y a rien dans la matière qui puisse l’organiser. C’est ce qu’on se dit quand on étudie le fonctionnement du corps globalement. Donc si notre corps ne peut fonctionner tout seul, il doit bien y avoir quelque chose qui le fait vivre. Ce qui fait fonctionner le corps c’est l’âme. On ne sait pas de quoi elle est constituée, comment elle est faite. Mais on sait qu’un autre univers totalement différent fait fonctionner le nôtre. Tu verras des preuves de cela dans le chapitre suivant. Les Expériences de Mort Imminente montrent cette âme qu’on ne voit pas. Tu auras toute l’éternité pour voir cela si tu es juste. Pour l’instant, il s’agit pour toi de devenir sage et libre. '''Mes Notes''' Écrire sur un autre univers après avoir regardé David ELBAZ. == La Vie c’est Quoi ? == Vendredi 26 novembre 2021 [[Image:Fruit Still Life by Severin Roesen.jpg|alt=|droite|vignette|upright|<center>Severin Roesen – Tout ça pour nous !</center>]] Seul Jésus a dit pourquoi il y avait la vie. Il a dit qu’on sera dans le monde de Dieu après la mort si on est juste. C’est parce qu’on ne sait pas exactement pourquoi on est là que certains disent que la vie serait un hasard. C’est une vision à court terme qui ne prend pas en compte la beauté de notre univers. Seulement la vie a été un hasard pour le premier Dieu uniquement, puisque l’univers est tellement ordonné que quelqu’un ou quelque chose l’organise. La vie est de plus en plus lente plus on va vers le petit. Donc il y aurait une vitesse infinie dans les zones éloignées. C’est pour réguler la vitesse infinie que la vie est née par hasard. Le premier Dieu est effectivement né par hasard, sans doute à cause d’une vitesse infinie de l’univers. La vie est un miracle et permet de contempler enfin l’univers. La vie ce sont des âmes qui font bouger notre monde pour l’animer. L’univers est vivant aussi tout comme les plantes. L’esprit est l’aboutissement de la vie. Il permet de prendre conscience du monde. Dieu a un esprit aussi. Mais il est possible qu’il y ait eu des plantes en même temps que le premier Dieu ait été créé. '''Mes Notes''' Écrire sur la création de la vie. == Être c’est Quoi ? == Vendredi 26 Novembre 2021 Si on se dit qu’on existe c’est qu’on existe, puisque sinon nous n’existerions pas. Être ne se conçoit pas forcément. On est parce qu’on a été créé de rien du tout. Tout vient de rien. La vie est un miracle. On voit les autres êtres. Donc si on les voit et qu’on se dit qu’on existe, ce serait égoïste de dire qu’on est le seul à exister, d’autant plus que les autres réagissent à nous. On a été créé de rien et on voit plein d’autres êtres comme nous ou pas, donc tout ce que nous voyons existe réellement. On saura encore plus cela quand nous irons dans l’univers avec les moteurs nucléaires. '''Mes Notes''' Écrire sur les autres. == Un Vaisseau Spatial c’est Quoi ? == Mardi 14 décembre 2021 [[Image:Expedition 51 Rollout (NHQ201704170026).jpg|alt=|droite|vignette|upright|<center>Le Soyouz est un vaisseau spatial.</center>]] Lors de la seconde guerre mondiale, les allemands ont créé des fusées appelées V2 pour bombarder Londres. Après la guerre, les chercheurs allemands ont été répartis dans le monde pour créer les premières fusées, les premiers vaisseaux spatiaux humains. Aujourd’hui, les russes, les chinois et les coréens du nord peuvent créer des fusées à moteurs nucléaires capables d’aller sur Mars. En effet, le soleil émet des radiations, des ondes, qui peuvent tuer les êtres vivants. Seulement, le champ magnétique terrestre, c’est à dire un champ d’onde créé par le noyau en fer de la terre, arrête ces radiations. Donc les moteurs nucléaires permettent de créer un champ d’ondes pour arrêter les radiations du soleil. Ainsi les voyages spatiaux sont possibles. L’armée des États-Unis a déjà détecté des vaisseaux spatiaux extraterrestre sur terre. Ces vaisseaux allaient très vite, avant qu’on puisse créer des moteurs nucléaires. '''Mes Notes''' Écrire sur les voyages vers Mars. == Le Nucléaire c’est Quoi ? == Vendredi 26 novembre 2021 [[Image:Tableau périodique des éléments simplifié.png|alt=|droite|vignette|upright|<center>Tableau périodique des éléments ou atomes</center>]] Au début on a irrigué les champs et on a utilisé les animaux. Puis on a construit des villes parce que l’irrigation permettait cela. En effet, les champs donnaient suffisamment pour que des villes naissent. Puis on s’est intéressé au fonctionnement de la nature, parce qu’on avait le temps de faire cela dans les villes. On a mis longtemps à s’intéresser au fonctionnement du tout petit, parce qu’il était très mystérieux pour nous. On s’intéressa au tout petit au moment où on a créé les premières manufactures, des industries fonctionnant à la main. En effet, maîtriser le tout petit permettait d’avoir les meilleures industries. Alors on a découvert le fonctionnement microscopique de la nature sans la voir. On sait maintenant que les atomes ont une énergie immense quand on les casse. Un atome possède un noyau. C’est sa partie nucléaire. Casser le noyau d’un atome demande des gros atomes instables, des déchets nucléaires de la nature comme l’uranium et le thorium. Mais il faut encore plus d’énergie pour réunir des petits atomes, l’hydrogène et l’hélium. Ça procure encore plus d’énergie. On aurait une énergie sans limite avec cette fusion nucléaire. '''Mes Notes''' Regarder un documentaire sur la fusion nucléaire. == La Conscience c’est Quoi? == Jeudi 9 décembre 2021 La conscience c’est la mémoire de l’esprit et son activité. On peut voir l’activité de la conscience avec un scanner, mais on ne peut pas matérialiser la conscience. Il semble donc qu’elle soit dans un autre univers. De la même manière, le corps s’ordonne on ne sait comment et pourquoi. On voit des ondes ordonner le corps mais on ne sait pas d’où elles viennent. L’ADN et l’eau produisent des ondes. Seulement il s’agit de matière qui devrait être inerte, parce qu’il n’y a pas de producteur d’ondes dans la matière. Donc, comme l’univers, une âme s’occupe de notre corps. Notre conscience est dans un autre univers et on verra notre conscience à notre mort, après avoir gagné en sagesse durant notre vie. '''Mes Notes''' Chercher des découvertes récentes sur le cerveau. = 2) L’Univers = Il y a ici nécessité d'avoir vu des photos de l'univers en regardant l’échelle. == L’Espace c’est Quoi ? == Vendredi 31 décembre 2021 [[Image:NGC2207+IC2163.jpg|alt=|droite|vignette|upright|<center>Heureusement que notre espace n’est pas vide.</center>]] L’espace est un endroit où on peut se déplacer. Sinon ça serait le néant. Cela peut paraître tout à fait normal que l’on puisse se déplacer dans l’espace. Seulement, le fait qu’il y ait du vide dans l’univers ne voudrait pas forcément dire qu’on peut se déplacer. Pour se déplacer il faut vivre donc être conscient qu’on se déplace. Donc l’espace existe parce que la vie existe. Il existe peut-être un univers où l’espace n’est pas composé de vide. Ainsi l’espace où la vie est née est sans doute composé de matière pour que la vie naisse. La vie est miraculeuse et rare dans l’univers primordial. Je pense que seul Dieu peut créer des âmes. Ainsi la vie a besoin d’un espace pour vivre. Notre espace a besoin d’air pour que l’on puisse l’utiliser sans difficulté. L’espace c’est aussi le vide de l’univers. Le vide donne place à un espace infini permettant à la vie de se déployer. L’humain est fait pour aller dans l’espace. '''Mes Notes''' Écrire un poème sur l’espace infini. == Un Satellite c’est Quoi ? == Mardi 14 décembre 2021 Un satellite est un objet ou une planète qui tourne autour d’une planète plus grosse. On a placé beaucoup de satellites de communication et de cartographie autour de la terre. Ces satellites permettent pour certains d’aider à lutter contre les cyclones, pour peu qu’on veuille bien ralentir les cyclones. Des sondes qui parcourent le système solaire peuvent aussi se transformer temporairement en satellites pour cartographier des nouvelles planètes. Une lune d’une planète est considérée aussi comme le satellite d’une planète. Une lune est une petite planète tournant autour d’une plus grosse planète. '''Mes Notes''' Écrire sur un satellite de la terre. == Le Ciel Étoilé, c’est Quoi ? == Samedi 23 octobre 2021 Quand il fait nuit noire on peut voir le ciel étoilé. Sinon, on ne voit que l’étoile la plus lumineuse, s’il n’y a pas de nuage. [[Image:Star location map-2014 sept.jpg|alt=|droite|vignette|upright|<center>Carte du ciel</center>]] Le ciel étoilé, c’est l’univers que tu vois la nuit. Mais on sait aussi qu’il y a un univers que l’on ne voit pas. En effet, les étoiles cachent d’autres étoiles. En réalité l’univers est infini. Il y a notre univers qu’on ne voit pas entièrement et l’univers qu’on ne connaît pas. On pense qu’il y a même des univers multiples, des multivers donc. Notre univers a besoin d’un autre univers pour s’ordonner. Donc un univers agit sur notre univers pour organiser la gravité, la force qui fait qu’on est attiré par la terre. Notre univers possède des multitudes de galaxies. Nous sommes dans la galaxie voie lactée, parce que quand on regarde le ciel la nuit noire, on voit une trace blanche dans le ciel. Cette trace blanche ce sont des étoiles. Il y a une multitude d’étoiles dans une galaxie. Les lumières blanches et la trace blanche que tu vois dans la nuit sont donc des étoiles. On regroupe les étoiles en des entités virtuelles, parce que ces étoiles sont ensembles. Il y a des planètes autour des étoiles. Donc ça fait beaucoup de planètes. On pense qu’il y a la vie sur certaines planètes. On ne peut voir les planètes des autres étoiles à l’œil nu. Seulement, il y a moins d’étoiles blanches, ou naines blanches, comme la nôtre que d’étoiles rouges, ou naines rouges. Or les naines rouges sont instables et empêchent la vie comme celle que nous connaissons. '''Mes Notes''' Créer sa carte du ciel avec une imprimante ou grâce à un club d’astronomie. == Utiliser un Télescope == Samedi 27 Novembre On peut grossir la lumière qui arrive de l’univers la nuit. On peut même avec certains télescopes regarder les contours du soleil en le cachant. Mais il ne faut pas regarder le soleil avec le télescope parce que la lumière aveuglerait, plutôt mettre une feuille à l’extérieur du télescope. Attention aux yeux ! Le soleil peut les détruire. Le télescope est à utiliser la nuit. La Chaîne Astro permet de choisir un télescope permettant d’observer les planètes. Un ordinateur relié au moteur du télescope permet d’orienter le télescope. Des logiciels libres permettent de faire bouger le moteur en fonction de l’endroit où on est. Ainsi, on peut voir une planète bouger dans la nuit. '''Mes Notes''' Regarder la Chaîne Astro. == Le Système Solaire c’est Quoi ? == Lundi 13 décembre 2021 Le système solaire, ce sont les neuf planètes et leurs lunes qui tournent autour du soleil. On ne sait pas comment s’est formé notre système solaire. La terre est la troisième planète du système solaire. Comme on le voit sur la photo, elle est petite. [[Image:Systeme solaire fr.jpg|alt=|droite|vignette|upright|<center>Le système solaire</center>]] On croyait que les planètes ne pouvaient pas tenir autour des étoiles. En effet, il faut une organisation de l’étoile pour créer un système de planètes. Mercure est la planète la plus proche du soleil. La température y est insoutenable, tellement insoutenable qu’on pense qu’il n’y a pas de vie sur Mercure. Vénus est entre Mercure et la Terre. On pense qu’elle abritait la vie. Seulement les sondes durent peu de temps dessus parce que l’atmosphère est très lourde. Vénus tourne très lentement. Ça serait très difficile d’y habiter parce qu’on passerait longtemps du très chaud à du très froid. Mars est entre la Terre et Jupiter. On pense que Mars abritait la vie. Beaucoup de rovers sont sur Mars. Donc tu peux trouver plein de photos de Mars, mais aussi d’autres planètes du système solaire. Jupiter est entre Mars et Saturne. Jupiter est une géante gazeuse. C’est à dire qu’elle contient beaucoup de gaz et qu’on ne peut pas avoir pied sans s’enfoncer dans la planète. On pense que certains de ses satellites pourraient abriter de la vie. Saturne est aussi une géante gazeuse. On pense aussi que certains de ses satellites pourraient abriter la vie. Uranus est entre Saturne et Neptune. C’est une géante gazeuse gelée. C’est à dire que les gaz sont glacés et peuvent casser sous la pression des pieds. Il y a une dizaine de lunes autour d’Uranus. On pense qu’il peut y avoir la vie. Neptune est aussi une géante gazeuse gelée. Elle est avant la neuvième planète qu’on voit exister par les déplacements des planètes mais qu’on n’a pas encore trouvé. Neptune fait quatre fois la taille de la terre mais elle la plus petite planète gazeuse. '''Mes Notes''' Écrire sur une planète du système solaire. == La Mort d’Une Étoile c’est Quoi ? == Dimanche 2 janvier 2022 Une étoile produit de la lumière. Donc quelque chose s’échappe de l’étoile. Donc à la fin l’étoile ne peut plus produire de lumière. Elle meurt. Le soleil mourra dans des milliards d’années. Il se transformera en géante rouge et avalera les planètes. Cela fera longtemps qu’il n’y aura plus de vie sur Terre. Ensuite la géante rouge s’effondrera sur elle-même en naine blanche. Elle émettra peu de lumière. '''Mes Notes''' Écrire sur les voyages dans l’univers quand on ne pourra plus habiter la Terre. == Un Trou Noir c’est Quoi ? == Dimanche 2 janvier 2022 La lumière est à la fois une particule et une onde. Donc la lumière est attirée par la gravité. Un trou noir est tellement massif qu’il attire même la lumière. Ainsi on ne voit rien sortir du trou noir. C’est pour cela qu’on voit un trou noir par rapport à son environnement. Il y a un trou noir au centre de chaque galaxie. Seulement le trou noir n’est qu’une partie infime de la matière de la galaxie. Comme la matière se crée, il est possible que les trous noirs explosent. En effet, la matière accumulée créerait des étoiles. '''Mes Notes''' Écrire sur le trou noir de la Voie Lactée. == Une Galaxie c’est Quoi ? == Samedi 13 octobre 2021 [[Image:NGC2207+IC2163.jpg|alt=|droite|vignette|upright|<center>Deux galaxies en train de s’unir.</center>]] Au départ, on pensait que notre galaxie était l’univers. Puis avec les télescopes on a vu des galaxies. Une galaxie ce sont des étoiles qui tournent autour d’un trou noir, c’est à dire un gigantesque amas de matière, tellement lourd que la lumière n’en sort pas. Le trou noir d’une galaxie est cependant une très faible partie de la matière galactique. Donc la galaxie tourne très vite autour du trou noir, tellement vite qu’elle est plate. Normalement les étoiles devraient être éjectées de la galaxie comme le ferait une toupie. Mais ça n’est pas le cas. On pense donc qu’il y a une âme qui maintient la galaxie. '''Mes Notes''' Se renseigner sur les logiciels qui permettent d’émuler une galaxie. Jean-Pierre Petit en a fait un. == Une Exoplanète c’est Quoi ? == Mardi 9 novembre 2021 On peut maintenant détecter les planètes qui tournent autour des étoiles, parce que nos instruments peuvent séparer la lumière reçue des étoiles. [[Image:Artist’s impression of the deep blue planet HD 189733b.jpg|alt=|droite|vignette|upright|<center>Simulation de la vue d’une exoplanète</center>]] On entend souvent parler de nouvelles exoplanètes découvertes. Notre soleil est une étoile et notre planète tourne autour d’elle. Donc une exoplanète tourne autour d’une étoile autre que le soleil. Exo signifie exotique. On pensait que notre planète était la seule à tourner autour du soleil parce que la terre devrait être éjectée de son attraction du soleil normalement. Seulement, on avait oublié que les galaxies devraient être elles aussi éjectées les étoiles sur leurs bords. Il semble donc que notre système solaire vive tout comme les galaxies vivent. Pour aller vers une exoplanète, on peut utiliser un moteur nucléaire qui nous protégera alors du soleil. En effet, le soleil émet un rayonnement qui peut tuer le vivant. Nous sommes protégés du soleil parce que la terre est un aimant qui repousse le rayonnement électromagnétique du soleil, électromagnétique parce qu’il est chargé de courant. L’aimantation de la terre permet aussi d’avoir beaucoup d’air à sa surface. Cet air s’appelle l’atmosphère. Le nucléaire permet donc d’aimanter le vaisseau spatial pour repousser les rayonnements du soleil. Il permet aussi de protéger le vaisseau spatial de son environnement. Le moteur nucléaire permet aussi d’aller vite. On peut aussi gagner de la vitesse en passant par une étoile à masse négative. En effet, les électrons ont une valeur négative. Tout comme les électrons peuvent avoir une valeur négative, la masse peut elle aussi être négative. C’est Jean-Pierre Petit qui peut parler de cela scientifiquement. '''Mes Notes''' Se renseigner sur une exoplanète habitable. En combien de temps peut-on y aller actuellement ? == L’Univers se Crée == dimanche 5 décembre 2021 Si la vie existe, c’est que l’univers que l’on connaît possède la faculté de créer la vie. Non seulement la vie est une création de l’univers, mais en plus on découvre qu’il y a de plus en plus de galaxies surtout parmi les plus petites. L’univers est en train de s’étendre en s’organisant, car les grosses galaxies créent de l’instabilité dans l’univers. Les grandes étoiles ont une vie courte et créent facilement des trous noirs. Si vous rencontrez des scientifiques, certains vous diront que l’univers va vers une mort où il n’y aurait plus d’énergie, alors que, pourtant, il est possible d’engendrer de l’énergie avec n’importe quel atome, selon Einstein. Si on regarde dans l’histoire de la science, on s’aperçoit que même Pasteur, scientifique croyant profondément dans l’humain, ne croyait pas suffisamment dans les capacités créatrices de l’univers. Il avait ainsi oublié qu’il était lui-même une création de l’univers. Le courant entropique français se base sur une citation de Lavoisier&nbsp;: "Rien ne se perd, rien ne se crée, tout se transforme". Ce dogme encore appris à l’école peut se contredire très facilement&nbsp;: Si rien ne se crée comment se fait-il que quelque chose existe&nbsp;? Aussi on sait que, s’il n’y avait plus du tout d’énergie, les atomes ne devraient donc plus bouger. Or il est très difficile de rendre les atomes statiques en les amenant au 0 ° Kelvin. On serait donc dans un univers sans énergie, où l’énergie agirait. Le courant entropique consiste à dire que l’univers est le chaos, régi par des lois de transformations, qui ont amenées la vie par hasard. Pourtant des scientifiques vous disent que la probabilité de créer la vie par hasard ne tient pas debout. C’est comme si l’homme avait fait ses découvertes comme Newton, avec une pomme sur la tête. Pourtant il a copié Kepler. Beaucoup de scientifiques se trompent en se fiant à leurs sens. Pourtant, avec les capacités d’abstraction de l'esprit, on peut s'élever par des expériences et des hypothèses. Pour être un bon scientifique, il faut faire de la politique et y être impliqué. Cela permet de ne pas être orienté par les autres. On utilise alors sa recherche de vérité, qui demande à trouver des réponses, consciemment ou inconsciemment. Beaucoup de mauvais scientifiques captent les budgets de la finance, car elle veut démontrer que les ressources se raréfient. Ainsi elles cachent la découverte du thorium, énergie abondante, très stable et écologique grâce au projet MYRRHA et aux lasers des prix Nobel de physique 2018. Cela fait croire au peuple qu’on va manquer d’énergie. Cela aboutit à le rendre pessimiste pour mieux le déposséder. Quelqu’un, qui croit que l’homme ne peut pas se développer, est un pigeon potentiel de la finance, car il ne se rebellera même pas, croyant à la sélection naturelle animale, promue elle aussi par la finance. Maintenant, notre raison créatrice devrait être transmise par l’éducation. En effet, elle nous sépare de l’animal. Elle nous permet aussi l’économie de travail, pour nous élever en scientifiques. La réflexion scientifique consiste à vérifier des hypothèses, par la recherche de la vérité, pour l’épanouissement par l’intérêt général, selon Confucius. '''Mes Notes''' Pourquoi l'univers se développe-t-il&nbsp;? = 3) Pour aller plus Loin = == L’Économie c’est comme la Nature == mercredi 5 janvier 2022 La nature utilise de plus en plus d’énergie. On est passé des résineux, les sapins, aux arbres à feuille et à fleur parce que les feuilles captent plus d’énergie. Aussi, les poissons, consommant peu d’énergie, sont devenus des amphibiens pouvant aller à l’air libre. Puis les amphibiens sont devenus des reptiles pour rester sur terre. Maintenant les mammifères consomment beaucoup d’énergie et peuvent ainsi aller dans le froid. Notre économie fonctionne de la même manière. Au début on a utilisé l’énergie de la biomasse, le feu. Avec le feu, on peut garder les aliments plus longtemps. Puis on a utilisé l’élevage, puis l’énergie de l’eau et du vent. Puis on a utilisé l’énergie du charbon consommant plus d’énergie que le feu. Avec le charbon on a créé les premiers trains. Puis on a utilisé celle du pétrole permettant les grands travaux. Avec le nucléaire du thorium créant énormément d’énergie on pourrait verdir les déserts. L’énergie ne sert pas qu’à consommer. Elle sert surtout à développer le pays. Quand on utilise une énergie dense, il s’agit de savoir ce qu’elle peut faire. La Chine place ses centrales au thorium dans les déserts pour les verdir. Les centrales au thorium permettront de rediriger les fleuves de l’équateur et des pôles vers l’intérieur des terres. '''Mes Notes''' Écrire sur un projet de développement mondial après avoir regardé le projet NAWAPA. == C’est Quoi la Matière ? == Mardi 28 septembre 2021 [[Image:Tableau périodique des éléments simplifié.png|alt=|droite|vignette|upright|<center>Ce tableau périodique des éléments est à agrandir.</center>]] La matière c’est tout ce qu’il y a dans l’univers. L’univers c’est ce que tu vois dans le ciel la nuit. Donc c’est beaucoup de matière. La matière compose toute chose de notre univers. On sait que la matière est essentiellement composée de vide, même la matière lourde. C’est le Boson de Higgs qui crée un champ et une gravité empêchant la matière de se superposer. On sait qu’il y a beaucoup de vide depuis le XXe siècle. Donc c’est récent. L’univers est lui aussi dans le vide. On se demande comment ça peut tenir. L’univers permet de savoir comment on est fait par la lumière qui vient des étoiles du ciel et de notre soleil, le soleil qui est une étoile. Les matérialistes pensent que tout ce qui compose notre univers est dans la matière. Seulement, si tel était le cas, l’univers se serait disloqué pour ne rien donner. '''Mes Notes''' Regarder un tableau périodique des éléments. == Qu’est-ce qu’une Onde ? == Samedi 27 novembre 2021 [[Image:Polarization change in uniaxial crystal.gif|alt=|droite|vignette|upright|<center>Une onde qui passe dans un crystal.</center>]] Une onde c’est comme une vague qui se propage dans le vide. Une onde est une propagation régulière d’un changement dans un milieu. Les ondes font partie d’un champ, c’est à dire d’une zone courbée d’influence. Il y a du vide partout. Dans ce vide des ondes qu’on ne voit pas changent le comportement de la matière. On pense que ces ondes viennent d’un autre univers. Au début on pensait que les ondes se propageaient dans la matière, parce que les ondes qu’on observaient montraient cela. Ainsi on pensait que l’univers était dans de la matière, ce qui n’était pas le cas. Au cours du XIXe siècle, on a déterminé que la lumière était à la fois une onde et une particule, ce qui veut dire qu’une onde peut être une particule. Ainsi l’onde est le plus petit élément qui puisse exister. L’onde ne se matérialise que quand elle devient particule. On ne comprend pas suffisamment ce phénomène. EINSTEIN a déterminé qu’il n’y avait pas de matière dans le noir de l’univers. Ainsi la gravité, qui n’est pas onde, se propage autrement que par la matière, par un autre univers par exemple. '''Mes Notes''' Comparer les vagues aux ondes-particules. == L’Énergie c’est Quoi ? == Dimanche 2 janvier 2022 Tout est énergie. Les atomes sont de l’énergie inerte. Les ondes ont de l’énergie en elles. L’énergie permet de créer de la chaleur qui se répartit ensuite. L’énergie peut prendre différentes formes. Ça peut être un feu de bois. Ça peut être l’électricité qui active les ampoules. Ça peut être un barrage d’eau qui crée de l’électricité. Ça peut être un atome qui se fend pour libérer beaucoup de chaleur. On a du mal à comprendre le phénomène de transformation d’énergie en chaleur. On sait que c’est un frottement qui libère l’énergie en chaleur. Il est possible que l’énergie crée des particules dans le soleil. Il faut donc revoir la durabilité du soleil en fonction. '''Mes Notes''' Écrire sur l’électricité créant de la chaleur. == La Matière se Crée == dimanche 21 novembre 2021 [[Image:Átomo de Oro.gif|alt=|droite|vignette|upright|<center>Un atome ou peut-être un boson de Higgs et ses particules</center>]] Les ondes composent les particules de la matière. Ainsi, plusieurs ondes fusionnent pour former une particule. On ne voit toujours pas la particule à l’œil nu. Plusieurs particules fusionnent pour donner le boson de Higgs qui crée la masse de l’atome et l’atome. Le boson de Higgs qui est un ensemble de particules crée un champ, c’est à dire un ensemble cohérent d’ondes. Cela crée l’atome, parce que le champ ordonne l’atome. On ne voit toujours pas l’atome. Un atome peut être léger comme l’hydrogène ou lourd comme le thorium. Il est alors composé de particules nommés électrons et protons plus ou moins nombreux. Les électrons naviguent autour des protons. Comme les électrons sont sur le bord d’un atome, ils peuvent changer d’atome avec l’électricité. L’électricité est un mouvement d’électrons sur des atomes conducteurs, c’est à dire pouvant échanger leurs électrons. Un atome se regroupe avec d’autres atomes en fonction de ce qui le fait. Cela donne une molécule. On ne voit toujours pas la molécule. Il y a des molécules dans l’air. Tu les sens quand tu bouges rapidement ta main dans l’air. Une molécule est très stable. Ainsi une molécule peut durer longtemps. Des formules existent pour transformer des molécules en nouvelles molécules. Alors on peut voir des changements de couleurs lors des expériences chimiques. La chimie consiste à étudier l’extérieur des atomes pour transformer les molécules. Ainsi l’univers se crée. Dans les étoiles, de la matière se crée par des ondes très proches. Sinon les galaxies auraient dû mourir il y a longtemps. '''Mes Notes''' Écrire le chemin de création de la matière. == Pourquoi Aller sur la Lune ? == Mercredi 22 décembre 2021 [[Image:NASA Apollo 17 Lunar Roving Vehicle.jpg|alt=|droite|vignette|upright|<center>Les premiers sur la lune étaient les États-Unis.</center>]] Les États-Unis sont allés sur la lune parce que les russes sont allés dans l’espace. Ils ont récolté des pierres et du sable lunaire. Ils ont surtout voulu planter un drapeau étasunien. On peut aller sur la lune pour y établir une base lunaire afin de récolter l’hélium 3 de la lune. En effet, l’hélium 3 s’est déposé sur la lune par les dégagements du soleil. L’hélium 3 permettra la fusion thermonucléaire contrôlée. Cela apportera de l’énergie pour aller sur Mars. Une base sur Mars permettra de repousser les astéroïdes allant vers la Terre. Pour réaliser cela, il faudra créer des moteurs nucléaires permettant de créer un champ repoussant les rayonnements du soleil. En effet, les rayonnements du soleil peuvent tuer les astronautes allant sur Mars et au-delà. '''Mes Notes''' Écrire sur les voyages martiens. == Qu’est-ce qui est le plus Petit ? == Samedi 23 octobre 2021 [[Image:Electron shell 090 thorium.png|alt=|droite|vignette|upright|<center>On peut produire beaucoup d’énergie avec le thorium.</center>]] Les grecs croyaient qu’il n’y avait pas plus petit que la matière. Seulement on peut casser ce qui constitue la matière&nbsp;: Les atomes. Les atomes sont composés d’un noyau autour duquel tournent des électrons. Ces électrons peuvent changer de noyau d’atome par un phénomène électrique. L’électricité est née de cela. On fait bouger les électrons des atomes pour créer de l’électricité. Seulement, on peut aussi casser le noyau des atomes. Cela crée beaucoup d’énergie. On voit alors des quarks qui se détruisent en ondes. Donc l’onde est ce qu’il y a de plus petit. Les ondes ne se voient pas et nous traversent. Les ondes se transforment en particules on ne sait comment exactement. On sait maintenant qu’elles organisent la matière par un autre univers. '''Mes Notes''' Se renseigner sur les ondes de la matière. == L’Égypte Antique == samedi 23 octobre 2021 [[Image:Hieroglyphs from the tomb of Seti I.jpg|alt=|droite|vignette|upright|<center>Des Hiéroglyphes</center>]] Le dieu Ra est à la fois le Dieu égyptien, venant de l’Égypte antique donc, mais aussi le soleil. Étudier la vieille Égypte permet de mieux comprendre comment l’humain comprend le ciel. Les égyptiens de l’Égypte antique bénissaient le soleil. Mais ils écrivaient surtout des hiéroglyphes, c’est à dire des images faisant des mots. Seulement les anciens égyptiens voyaient la matière comme étant de l’énergie. La matière est effectivement de l’énergie. Alors que l’occident a découvert cela au XIXe siècle, les égyptiens avaient dit cela il y a 20000 ans. On pense que c’est la compréhension des hiéroglyphes qui a permis cette découverte occidentale. Donc s’intéresser à l’Afrique permet de mieux comprendre comment notre monde fonctionne. Comprendre les hiéroglyphes est un atout majeur. '''Mes Notes''' Regarder des vidéos de Tamery Sematawy Maât. == L’Univers est Beau == Vendredi 26 novembre 2021 [[Image:NASA-HS201427a-HubbleUltraDeepField2014-20140603.jpg|alt=|droite|vignette|upright|<center>Des galaxies</center>]] Il y a de plus en plus la possibilité pour l’univers de diffuser la lumière. L’univers se propage sans se dissoudre. L’univers ne s’engloutit pas en perdant sa lumière. L’univers s’étend comme le ferait une plante. Il est impossible de créer l’univers au hasard. Il y a trop de constantes à respecter pour que la matière ne s’atrophie pas, pour que l’univers reste et s’étende. Les égyptiens avaient compris cela. Donc l’univers est créé grâce à un autre univers qui manipule la matière de notre univers. Nous sommes dans un monde test qui sera recréé plus tard, selon Saint-Jean. En effet, notre univers se dirige vers un autre univers qui pourrait le remodeler. '''Mes Notes''' Écrire sur l’univers qu’on ne voit pas. == Qu’est-ce que l’Intrication ? == Vendredi 31 Décembre 2021 L’intrication c’est le fait que deux particules s’ordonnent entre elles. Elles peuvent le faire à de très longues distances. Dans ce cas, on appelle cela la non-localité. Il est possible que l’univers s’ordonne par la non-localité. Pour que les galaxies tiennent et ne perdent pas leurs étoiles sur leurs contours, il faut bien une force qui attire les étoiles. L’intrication sert à créer des ordinateurs quantiques. Il s’agit de pouvoir récupérer le résultat des atomes qui s’ordonnent entre eux. On affecte une valeur numérique ou alphabétique par particule intriquée. L’intrication fait le reste. '''Mes Notes''' Chercher des conférences sur l’ordinateur quantique. == Du Petit au Très Grand == dimanche 2 janvier 2022 Les ondes constituent ce qu’il y a de plus petit. Elles créent des particules en fusionnant. Ces particules fusionnent en un Boson de Higgs pour créer un atome. Des atomes s’associent en molécules. Vient le vivant. L’ADN est créé par les ondes de l’âme et agit par les ondes de l’âme pour créer les tissus et les organes. Chaque organe a une âme. Notre corps a une durée de vie courte. Donc sa vitesse est lente. La terre a une durée de vie plus longue. Donc sa vitesse est plus rapide. Une âme fait tenir les planètes autour du soleil. Notre galaxie, la Voie Lactée, a une durée de vie plus longue. Les galaxies tiennent grâce à une âme. La vitesse d’une galaxie est encore plus rapide. L’univers a encore une vitesse plus rapide. Ainsi la vie a pu naître avec une vitesse infinie. La vie permet de réguler le temps. '''Mes Notes''' Écrire sur la matière et la vie. {{AutoCat}} 9u6au80qtinhlk7jiogc1ho4hzwq80g Recherches sur les naissances "physiologique" et "naturelle"/Sommaire/Questions sur les hormones 0 81159 775572 775530 2026-10-23T01:00:34Z JackBot 14683 Formatage, [[Spécial:Pages non catégorisées]] 775572 wikitext text/x-wiki == Les œstrogènes == En 1929, Adolf Butenandt et le duo Edgar Allen-Edward A. Doisy ont indépendamment isolé et purifié l'œstrone, le premier œstrogène découvert. Si Doisy recevra le Nobel, Butenandt non, possiblement dû au fait de son implication dans le régime Nazi. Ensuite, l'estriol et l'estradiol ont été découverts respectivement en 1930 par l’équipe de Marrian, et 1933 par Schwenk and Hildebrant. Les œstrogènes ou estrogènes, lipides complexes, constituent un sous-groupe d’hormones stéroïdiennes dérivées du choléstérol <span style="color:#000000;">dont l'abondance augmente à la fin de la gestation chez la plupart des espèces. </span> <span style="color:#000000;">Ils augmentent la contraction utérine en induisant l'expression de gènes dans les cellules musculaires lisses utérines codant pour des facteurs qui augmentent contractilité et excitabilité.</span> Les trois principaux œstrogènes endogènes sont l'estone (E1), l'estriol (E3) et l’oestradiol ou estradiol (E2), le plus puissant et le plus répandu. E4, l’estérol, est produit uniquement durant la grossesse. Il semble que la plupart des vertébrés en fabriquent, de même que quelques insectes, ce qui semble témoigner d’une histoire évolutive ancienne. Ils sont produits en premier lieu par le développement des follicules des ovaires et par le placenta. Certains œstrogènes sont également produits en petites quantités par d'autres tissus tels le foie, la surrénale, les seins et le tissu adipeux. Leur fonction de base est d'être une hormone sexuelle femelle primaire, même s’ils ont des fonctions également chez les mâles. Ils sont également impliqués dans le développement du système nerveux central, dans l'homéostasie du squelette et du système cardiovasculaire, et ont également des effets sur le foie et le tissu adipeux. La quantité présente est significativement plus importante chez les femmes que chez les hommes. Ils favorisent le développement des caractères sexuels secondaires féminins, comme les seins, le vagin, l’utérus et sont également impliqués dans la maturation des follicules ovariens, donc dans le cycle menstruel, ce qui explique pourquoi la plupart des contraceptifs hormonaux comme les pilules contraceptives en contiennent. Les œstrogènes amènent les mammifères femelles dotées d’une période d’œstrus à adopter un comportement réflexe moteur de de lordose, nécessaire pour la réceptivité sexuelle. Mais à partir des primates et surtout des hominidés (chimpanzés, orangs-outans, gorilles, humains), les réflexes innés deviennent secondaires. Le cycle menstruel rend les femelles actives tout le long du cycle, et non seulement dans la fenêtre des chaleurs. Chez l’être humain, le réflexe de lordose n'est pas fonctionnel, même s’il semble exister (c’est encore âprement discuté) une certaine réceptivité, peut être vestigiale à la cambrure accrue, comme l’a envisagé en 2017 Pazhooni<ref name="ftn159">Pazhoohi, F. ''et al'' (2017). Arching the back (lumbar curvature) as a female sexual proceptivity signal: An eyetracking study, ''Evolutionary Psychological Science'' DOI 10.1007/s40806-017-0123-7.</ref>. Les œstrogènes sont avec la <span style="color:#000000;">progestérone sont les principales hormones de la grossesse. Une femme produira plus d'œstrogènes pendant une grossesse que pendant toute sa vie sans être enceinte. Ils augmentent la contraction utérine en induisant l'expression de gènes dans les cellules musculaires lisses utérines codant pour des facteurs qui augmentent contractilité et excitabilité. </span> Quand je lis dans Davis et Pascali-B que l’œstrogène (au singulier, c’est mauvais signe) est l’hormone de l’ovulation, qu’elle provoquerait «&nbsp;élans sexuels doux&nbsp;», sensibilité et flexibilité du vagin, sensibilité des seins, c’est au mieux inexact et très imprécis. Pour que les follicules ovariens se rompent et libèrent les cellules ovariennes (ovulation) il faut un contrôle de l'hypothalamus et la libération d'hormones sécrétées dans le lobe antérieur de l' hypophyse, l'hormone lutéinisante (LH ou lutropine) et l'hormone folliculo-stimulante (FSH), toutes deux des glycoprotéines. L'ovulation est déclenchée par un pic de la quantité de FSH et de LH libérée par l'hypophyse. == La relaxine == La relaxine a été décrite en 1926 par Frederick Hisaw. C’est une hormone peptidique de la grande famille des insulines. Elle sécrétée par le corps jaune de l’ovaire, le tissu mammaire, le placenta, le chorion et la caduque. Elle provoque l'assouplissement et le relâchement de l'utérus, la maturation cervicale, la relaxation/élongation des ligaments pelviens et de la symphyse pubienne, ce qui facilite l'expulsion du bébé. Elle est présente également dans le sperme (secrétée par la prostate)&nbsp;: elle favorise la progression des spermatozoïdes dans les voies génitales de la femme. Contrairement à la ratte par exemple, chez les femmes la relaxine n’exerce aucune activité sur la relaxation du col de l’utérus pendant l’accouchement. En revanche, dans l’espèce humaine, un pic de relaxine circulante est observé en début de grossesse, au moment de la nidification de l’embryon, et il a été montré que la protéine joue un rôle crucial dans l’induction de la phase de décidualisation<ref name="ftn1602">Tellgmann R, Gellersen B. Marker genes of decidualization : activation of the decidual prolactin gene. Hum Reprod 1998; 4 : 472–9.</ref>. Qu’est-ce que la phase de décidualisation&nbsp;? Certaines cellules de l’endomètre de l’utérus peuvent se transformer, entre autres sous l’action de la progestérone en cellules déciduales arrondies, productrices d’hormones (prolactine) et d’une protéine de liaison du facteur de croissance insulinique (IGF, ''insulin growth factor''). Cette transformation survient lors de la nidation de l’œuf fécondé. Toutes les femelles de mammifères voient leur muqueuse utérine ou endomètre se préparer en vue de l'implantation de l'embryon, à la différence près que la plupart des mammifères manifestent une décidualisation déclenchée, où l'œuf fécondé lui-même est l'instigateur de cet épaississement, alors que chez les femmes, il s’agit d’une décidualisation spontanée, qui se produit même en l'absence d'œuf fécondé. Note&nbsp;: j’ai lu avec surprise ceci<blockquote>« L’humain est l'une des rares espèces de mammifères vivipares chez qui la grossesse se prolonge au-delà de la phase lutéale, phase au cours de laquelle la progestérone est synthétisée par l'ovaire maternel. Au lieu de cela, c'est le placenta fœtal qui produit la progestérone tout au long des 2 derniers trimestres de la grossesse humaine. Le placenta est crucial sur le plan du développement pour le succès de la reproduction et constitue la nouveauté anatomique la plus remarquable des mammifères placentaires. Cependant, avant qu'il puisse exercer sa double fonction d'organe endocrinien et d'organe capable de faciliter les échanges de gaz et de nutriments, d'énormes changements doivent avoir lieu dans l'utérus non seulement pour tolérer la présence de ce tissu hémiallogénique, mais aussi pour accueillir et soutenir le placenta. développement. Le plus dramatique de ces changements est la décidualisation de l'endomètre, dont l'origine coïncide dans l'histoire évolutive avec la placentation invasive. Cet article s'appuie sur l'observation que les changements physiologiques qui se produisent pendant la phase sécrétoire non enceinte du cycle utérin chez les femmes sont remarquablement similaires à ceux observés pendant la grossesse. Les caractéristiques fondamentales de la grossesse humaine (y compris la décidualisation de l'endomètre suivie plusieurs mois plus tard d'une inflammation intra-utérine, de contractions utérines et d'un écoulement de la muqueuse déciduale de la cavité utérine) sont déjà présentes dans le cycle menstruel non enceinte et sont donc indépendantes du fœtus. Nous émettons l'hypothèse que de nombreux défauts physiologiques qui entraînent des complications pendant la grossesse et l'accouchement sont déjà détectables lors de la décidualisation spontanée à l'état non enceinte et au début des menstruations, et peuvent donc être déterminés avant le début de la grossesse »<ref>Pavlicev M, Norwitz ER. Human Parturition: Nothing More Than a Delayed Menstruation. Reprod Sci. 2018 Feb;25(2):166-173. doi: 10.1177/1933719117725830. Epub 2017 Aug 22. {{PMID|28826363}}.</ref>.</blockquote>La relaxine est également impliquée dans le développement de nouveaux vaisseaux sanguins indispensables à la croissance de l’embryon<ref name="ftn1612">Unemori EN, Erikson ME, Rocco SE, et al. Relaxin stimulates expression of vascular endothelial growth factor in normal human endometrial cells in vitro and is associated with menometrorrhagia in women. Hum Reprod 1999; 14 : 800–6.</ref>. Par ailleurs, elle n’est pas uniquement une hormone de la grossesse&nbsp;: elle est notamment responsable de la néoangiogenèse après un infarctus ou pendant une cicatrisation, elle prévient l’apparition de fibrose, elle affecte le métabolisme du collagène, est un puissant vasodilatateur sanguin<ref name="ftn1622">Conrad KP (August 2011). "Maternal vasodilation in pregnancy: the emerging role of relaxin". American Journal of Physiology. Regulatory, Integrative and Comparative Physiology. 301 (2): R267-75. doi:10.1152/ajpregu.00156.2011. PMC&nbsp;3154715. {{PMID|21613576}}.</ref> ''Anecdote''&nbsp;: il faudra attendre 76 ans pour qu’on mette le doigt sur les récepteurs de la relaxine, avec les travaux de Hsu ''& al.''<ref name="ftn1632">Hsu SY, Nakabayashi K, Nishi S, ''et al.'' Activation of orphan receptors by the hormone relaxin. ''Science'' 2002; 295 : 671–4.</ref> en 2002. Il semble que qu’une faiblesse en relaxine soit un trait commun possible des femmes atteintes d'endométriose<ref name="ftn1642">Marshall SA, Senadheera SN, Parry LJ, Girling JE (March 2017). "The Role of Relaxin in Normal and Abnormal Uterine Function During the Menstrual Cycle and Early Pregnancy". Reproductive Sciences. 24 (3): 342–354. doi:10.1177/1933719116657189. {{PMID|27365367}}. S2CID&nbsp;22443796.</ref>. Est-ce une voie à explorer ? Une autre question en suspens : la relaxine joue-t-elle un rôle dans la fertilité ? == La mélatonine == <div style="color:#000000;">La mélatonine ou N-acétyl-5-méthoxytryptamine, souvent dénommée hormone du sommeil, est la molécule principale de la glande pinéale surtout connue comme étant l'hormone centrale de régulation des rythmes chronobiologiques en étant synthétisée surtout la nuit. Elle régule de nombreuses sécrétions hormonales, chez l'humain et les autres mammifères. Cette neurohormone est synthétisée à partir d'un neurotransmetteur, la sérotonine, qui dérive elle-même du tryptophane, un acide alpha-aminé. La sérotonine est synthétisée jour et nuit en réponse à l'absence de lumière et stockée dans la glande pinéale, mais la nuit sa concentration baisse car elle sert de substrat à la synthèse de la mélatonine. La rétine, mais aussi les mitochondries de la moelle osseuses et d’autres cellules en produisent. Les noix et les noisettes sont des sources importantes de mélatonine biodisponible, c'est-à-dire facilement absorbable par l'organisme. C’est Julius Axelrod (1912-2004) qui découvre le rôle de la mélatonine et de la glande pinéale sur le cycle du sommeil et les autres rythmes circadiens.</div><span style="color:#000000;">La présence d'horloges circadiennes dans les tissus périphériques des mammifères n'a été acceptée qu'au XXIe siècle (Yamazaki & al., 2000, Reppert et Weaver, 2002, Abe & al., 2002). </span>Chez les mammifères, les rythmes circadiens sont contrôlés par le stimulateur circadien principal, le noyau suprachiasmatique.<div style="color:#000000;">'''Points critiques'''</div><span style="color:#000000;">Les personnes qui défendent la Naissance naturelle pensent que la mélatonine expliquerait pourquoi les femmes accouchent plus souvent la nuit et plus facilement dans la pénombre. Il y aurait des récepteurs à mélatonine dans l’utérus.</span><div style="color:#21409a;"><span style="color:#000000;">Dans un papier d’une revue certes secondaire, cosigné par Michel Odent, on lit : </span><blockquote><span style="color:#000000;">«&nbsp;La littérature démontre l’importance des caractéristiques de la lumière (spectre, intensité, durée d’exposition) et l’action des conditions lumineuses antérieures et du moment d’exposition, sur l’inhibition de sécrétion de mélatonine. La présence de récepteurs utérins à la mélatonine, l’augmentation de la concentration sanguine en mélatonine au cours du travail et l’action synergique de la mélatonine et de l’ocytocine sont également démontrées par les auteurs. Les taux d’éclairement mesurés en salles d’accouchement peuvent aller jusqu’à 5000&nbsp;lux. Les effets de ces taux retrouvés dans la littérature semblent diminuer significativement les concentrations en mélatonine chez la parturiente&nbsp;»<ref name="ftn165">Influence de la lumière sur le processus de parturition humaine, La Revue Sage-Femme Volume 16, Issue 5, November 2017, pp. 303-323.</ref>. </span></blockquote></div>Tentons d’approfondir un peu.<div style="color:#000000;"> Effectivement la mélatonine remplit de nombreux critères attendus pour servir de signal circadien dans l'initiation de la parturition humaine<ref name="ftn166">Olcese J, Lozier S, Paradise C. Melatonin and the circadian timing of human parturition. Reprod Sci. 2013 Feb;20(2):168-74. doi: 10.1177/1933719112442244. Epub 2012 May 3. {{PMID|22556015}}. et Olcese J. Circadian aspects of mammalian parturition: a review. Mol Cell Endocrinol. 2012 Feb 5;349(1):62-7. doi: 10.1016/j.mce.2011.06.041. Epub 2011 Jul 14. {{PMID|21777654}}.</ref>. On dit un peu partout que la mélatonine serait une hormone importante pendant l’accouchement, qui expliquerait pourquoi les femmes accouchent plus souvent la nuit et plus facilement dans la pénombre. Il y aurait des récepteurs à mélatonine dans l’utérus. Olcese ''& al.'' écrivent&nbsp;: <blockquote>«&nbsp;Bien que l'on sache depuis longtemps que le début de la parturition humaine spontanée se produit préférentiellement pendant la nuit et tôt le matin, aucune explication physiologique convaincante de ce schéma n'a encore été proposée&nbsp;». </blockquote>Ce n’est pas encore bien démontré, mais il semble bien que les différences dans le phasage de la parturition entre les différentes espèces soient probablement fonction de réponses utérines opposées aux signaux humoraux, en particulier ceux codant pour l'heure de la journée. L'hormone cérébrale mélatonine remplit de nombreuses conditions pour servir de signal circadien en vue de déclencher les contractions utérines qui conduisent à la parturition humaine. Par exemple, il y a action directe de la mélatonine sur les cellules musculaires lisses du myomètre, et qui, en synergie avec l'ocytocine vont occasionner de plus grandes contractions utérines la nuit<ref name="ftn167">Olcese J, Lozier S, Paradise C. Melatonin and the circadian timing of human parturition. Reprod Sci. 2013 Feb;20(2):168-74. doi: 10.1177/1933719112442244. Epub 2012 May 3. <span style="color:#000000;">{{PMID|22556015}}. et Olcese&nbsp;:Circadian aspects of mammalian parturition: A review (2012)</span></ref>. Cornélia Gwinner a fait une revue de littérature en 2016<ref name="ftn168">Influence de la lumière sur le processus de parturitionhumaine Revue de la littérature, 2016 HAL Id: dumas-01412390https://dumas.ccsd.cnrs.fr/dumas-01412390</ref> sur les effets de la mélatonine sur la contractilité, et sur la machinerie contractile des cellules hTERT. Elle a mobilisé plusieurs études, dont Sharkey ''& al.'' 2009<ref name="ftn169">J T Sharkey et al., Melatonin synergizes with oxytocin to enhance contractility of human myometrial smooth muscle cells », The Journal of clinical endocrinology and metabolism, 2009.</ref> qui montre que : <span style="color:#000000;">–</span> le myomètre humain est une cible pour la mélatonine.</div><span style="color:#000000;">– La mélatonine augmente la sensibilité à l'ocytocine et la contractilité du myomètre in vitro, via la voie de signalisation MT2R (</span>récepteur 2 à la mélatonine) <span style="color:#000000;">/ phospholipase C / protéine kinase C.</span> <span style="color:#000000;">– La mélatonine augmente l'expression de la protéine connexine 43 des jonctions gap in vitro, via une voie dépendant de la </span>protéine kinase C<span style="color:#000000;">.</span><div style="color:#000000;">– La mélatonine augmente la connectivité intercellulaire ''in vitro''. Mais mes compétences en biochimie sont trop limitées pour voir les éventuelles failles chez Sharkley. De fait, Sharkey conclue&nbsp;: <blockquote>«&nbsp;La mélatonine agit en synergie avec l'ocytocine pour stimuler les contractions des cellules myométriales et pour faciliter l'activité des jonctions gap ''in vitro''&nbsp;». </blockquote>Gwinner concluait ainsi&nbsp;: <blockquote>«&nbsp;À ce jour, l'action inhibitrice de la lumière sur le processus de parturition n'est pas formellement établie. Cependant, les données actuelles de la littérature sont en faveur de cette hypothèse : au cours de la nuit, la lumière inhibe la sécrétion physiologique de mélatonine par la glande pinéale. La mélatonine ne stimule plus la sécrétion d'ocytocine au niveau hypophysaire et n'agit plus en synergie avec l'ocytocine au niveau utérin pour augmenter les contractions&nbsp;».</blockquote>Parmi les derniers papiers&nbsp;:</div><span style="color:#000000;">McCarthy ''& al.'' 2019<ref name="ftn170">McCarthy R, Jungheim ES, Fay JC, Bates K, Herzog ED, England SK. Riding the Rhythm of Melatonin Through Pregnancy to Deliver on Time. Front Endocrinol (Lausanne). 2019 Sep 13;10:616. doi: 10.3389/fendo.2019.00616. {{PMID|31572299}}; PMCID: PMC6753220.</ref> : </span><blockquote><span style="color:#000000;">«&nbsp;Le désaligne</span>ment circadien provoque des perturbations maternelles dans l'organisation temporelle de nombreux processus physiologiques, y compris la synthèse de la mélatonine, et ces perturbations du système circadien ont été associées à un risque accru de complications de la grossesse&nbsp;»</blockquote>présentant un certain nombre d’éléments montrant que la mélatonine aide à réguler les systèmes circadiens maternel et fœtal et le moment de la naissance. Un article très technique de Hsu ''& al.''<ref name="ftn171">Hsu CN, Tain YL. Light and Circadian Signaling Pathway in Pregnancy: Programming of Adult Health and Disease. Int J Mol Sci. 2020 Mar 23;21(6):2232. doi: 10.3390/ijms21062232. {{PMID|32210175}}; PMCID: PMC7139376.</ref>, que j’ai essayé de décrypter, montre également cela, et appelle à une attention accrue sur la chronoperturbation des parturientes. Donc le pressentiment de Michel Odent s’avère justifié.<div style="color:#000000;">''Note''&nbsp;: Il n’est pas du tout clair que donner de la mélatonine à la mère protège le cerveau du bébé<ref name="ftn172">Wilkinson D, Shepherd E, Wallace EM. Melatonin for women in pregnancy for neuroprotection of the fetus. Cochrane Database of Systematic Reviews 2016, Issue 3. Art. No.: CD010527. DOI: 10.1002/14651858.CD010527.pub2.</ref>.</div>Une des questions posées est le rôle de la lumière dans le processus, et pourquoi pas, le rôle de la Lune (bien que J. Balleyer ait déjà fait une synthèse sur le sujet). J’ai trouvé cet article de Matsumoto ''& al.'' (2020) bizarre&nbsp;:<div style="color:#000000;"><blockquote>«&nbsp;Nous avons examiné les actes de naissance du 1er janvier 1996 au 16 mars 2007 du service d'obstétrique de notre hôpital, qui était alors situé dans une zone relativement peu développée de la ville de Fukutsu dans la préfecture de Fukuoka au sud du Japon. Un total de 1507 naissances ont satisfait à tous les critères d'inclusion, entre autres, être à terme et suite à un travail déclenché spontanément. Lorsque les données sur les naissances ont été analysées comme par d'autres enquêteurs, c'est-à-dire le nombre total de naissances par jour lunaire, la phase lunaire n'a pas été jugée influente. Cependant, des analyses plus détaillées sur le sous-ensemble de bébés nés spécifiquement pendant les heures nocturnes (N = 362) ont révélé que le nombre de naissances variait spécifiquement en fonction de la quantité changeante de clair de lune pendant la nuit à différents stades du cycle lunaire, avec le nombre le plus élevé des naissances à ou autour de la pleine lune. En revanche, des analyses sur le sous-ensemble de bébés nés spécifiquement pendant les heures diurnes (N = 377) ont révélé que le nombre de naissances variait spécifiquement en fonction de la quantité changeante de clair de lune pendant la journée à différents stades du cycle lunaire, avec le plus grand nombre de naissances à ou autour de la nouvelle lune. L'initiation et le point culminant de la naissance humaine sont généralement un processus nocturne. Les résultats de cette enquête sont cohérents avec l'hypothèse que la parturition nocturne naturelle est influencée par la phase lunaire, en particulier la pleine lune, et, par conséquent, ils sont cohérents avec la croyance que la lune exerce un effet sur le moment de la naissance humaine. Nous supposons que la croyance de longue date de l'association entre la naissance et la phase lunaire peut être basée sur des observations historiques selon lesquelles, en l'absence de lumière artificielle la nuit, les naissances nocturnes se sont produites en nombre élevé lorsque la pleine lune illuminait brillamment le ciel nocturne&nbsp;»<ref>Matsumoto SI, Shirahashi K. Chronobiol Int. 2020 Jul;37(7):1082-1089. doi: 10.1080/07420528.2020.1785485. Epub 2020 Jul 23. {{PMID|32703035}}.</ref>.</blockquote>Chose étrange, si la lumière est en jeu, cela sous-entend a) que les parturientes étaient dehors 2) que la Lune n’était pas voilée de nuages&nbsp;?</div> == La progestérone == La progestérone, <span style="color:#000000;">Comme son nom l'indique, est une hormone pro-gestation, </span>appelée parfois hormone de la grossesse ou P4, (appelée aussi je crois ''lutéine'' fut un temps). C’est une hormone stéroïdienne principalement sécrétée par les cellules du corps jaune des ovaires et le placenta. Comme son nom l’indique, (progestogène : progestatif, supporte la gestation) elle est impliquée dans la grossesse et l'embryogenèse de nombreuses espèces de mammifères, ainsi que dans le cycle menstruel. Elle été découverte simultanément par quatre groupes différentes (l’histoire dit qu’il a fallu 50 000 ovaires de truies pour isoler les premiers milligrammes). C’est Willard Allen qui lui a donné son nom dérivé de l’anglais Progestational Steroidal ketone, entre 1930 et 1935<ref name="ftn173">Allen WM (1930) Physiology of the corpus luteum VI. the production of progestational proliferation of the endometrium of the mature rabbit by progestin (an extract of the corpus luteum) after preliminary treatment with oestrin, ''American Journal of Physiology'' '''92''':612–681. <nowiki>https://doi.org/10.1152/ajplegacy.1930.92.3.612</nowiki>.</ref>. Dans les années 1950, Carl Djerassi et son groupe ont réussi à produire de la progestérone synthétique. La progestérone est synthétisée par modification enzymatique du cholestérol sous l'action de l'hormone lutéinisante (LH). Elle peut ensuite être convertie soit en androstènedione, puis en testostérone, soit en œstradiol (E2) par les cellules de la granulosa qui entourent le follicule ovarien. Dans le cycle ovarien, la progestérone inhibe les contractions rythmiques de la musculature utérine – ce qu’on appelle un effet tocolytique. Cela crée un «&nbsp;silence&nbsp;» utérin sans lequel toute gestation serait impossible. Elle permet le maintien et la densification de la muqueuse utérine, le développement de la vascularisation de l'endomètre, et l'apparition de glandes utérines responsables de l'aspect dentelé de la paroi utérine. La progestérone semble aussi diminuer la réponse immunitaire maternelle pour permettre l'acceptation de la grossesse<ref name="ftn174">Di Renzo GC, Giardina I, Clerici G, Brillo E, Gerli S (July 2016). "Progesterone in normal and pathological pregnancy". Hormone Molecular Biology and Clinical Investigation. 27 (1): 35–48. doi:10.1515/hmbci-2016-0038. {{PMID|27662646}}. S2CID 32239449.</ref>.<div style="color:#000000;">Un trait conservé chez semble-t-il tous les mammifères vivipares examinés jusqu'à présent, y compris les lézards est que l'établissement et le maintien de la grossesse dépendent fortement de la P4, comme l’ont montré Corner & Allen en 1929<ref name="ftn175">Corner GW Allen WM (1929) Physiology of the corpus luteum; production of a special uterine reaction (progestational proliferation) by extracts of corpus luteum The American Journal of Physiology 88:826–839. https://doi.org/10.1152/ajplegacy.1929.88.2.326.</ref>, puis Csapo en 1956<ref name="ftn176">Csapo A (1956) Progesterone ? Block? American Journal of Anatomy 98:273–291. https://doi.org/10.1002/aja.1000980206.</ref>. Elle favorise la quiescence myométriale, la fermeture cervicale, la tolérance immunologique à l'interface materno-fœtale et, surtout, maintient la parturition.</div>Quand Davis et Pascali-Bonaro<ref name=":0">Elizabeth Davis, Debra Pascali-Bonaro, La naissance orgasmique, Guide pour vivre une naissance sûre, satisfaisante et agréable, éd. Du Hêtre (2010).</ref> écrivent que la progestérone s’allie à la relaxine '''''pour''''' assouplir le corps... Je suis dubitatif. D’abord parce qu’il n’y a rien «&nbsp;pour&nbsp;» en biologie, il n’y a pas d’intention&nbsp;: celleux qui éteint dotés de ces capacités ont survécu, les autres non. S'il n'y a pas fécondation, la concentration de progestérone revient à un niveau normal car les cellules du corps jaune dans lequel elle est produite vont aussitôt régresser puis disparaître. En gros, la progestérone effectue un rétrocontrôle négatif sur le complexe hypothalamo-hypophysaire lors de la phase lutéale, phase qui suit l'ovulation et qui constitue les quatorze derniers jours du cycle. En effet, elle inhibe, de la même façon que l'estradiol, la sécrétion des hormones (FSH et LH) qui stimulent sa propre sécrétion par le corps jaune. Ce système est une sorte de système de régulation qui maintient par ces deux actions réciproques un taux sanguin constant d'hormones, ici la progestérone mais c'est aussi le cas de l'estradiol. Quand la progestérone est haute, ces hormones baissent (et par conséquent corrigent la tendance), et quand la progestérone est basse, ces hormones montent (et rétablissent la valeur). Cocasserie, il y a au moins une plante qui en contient, le noyer (''Juglans Regia),'' et d’autres qui contiennent de la diosgénine, qui peut être converti en progestérone (certaines ignams, fenugrec). On l’a vu, chez les rongeurs la production ovarienne de P4 est le facteur déterminant du maintien de la grossesse. Chez d'autres espèces, comme les moutons et les primates, la source de P4 pour le maintien de la grossesse se déplace du corps jaune vers le placenta<ref name="ftn177">Tuckey RC (2005) Progesterone synthesis by the human placenta Placenta 26:273–281. https://doi.org/10.1016/j.placenta.2004.06.012.</ref>.<div style="color:#000000;">Les études pionnières de Liggins ''& al''<ref name="ftn178">Liggins G Fairclough R Frieves S Forster C Knox B (1977) Parturition in the Sheep Amsterdam: Elsevier. https://doi.org/10.1002/9780470720295.ch2.</ref> en 1974 ont démontré que la parturition chez les moutons est déclenchée par une activité accrue de l'axe hypothalamo-hypophyso-surrénalien fœtal pour produire une poussée de cortisol qui diminue la production de P4 par le placenta, entraînant un retrait systémique de P4 qui déclenche la parturition. le mécanisme ovin pour le moment de la naissance est uniquement contrôlé par le cortisol produit par l'axe HPA fœtal qui coordonne le moment de la naissance avec la maturation fœtale et la préparation à exister en tant que nouveau-né. Mais il semble que chez l’humain, ce soit beaucoup moins simple. Pourtant, j’ai cru comprendre que ce sont les travaux de Liggins et de ses collègues sur les moutons ont conduit à l'utilisation clinique généralisée de la corticothérapie synthétique pour favoriser la maturation pulmonaire fœtale chez les femmes qui connaissent un travail prématuré et qui sont à risque d'accouchement prématuré, ce qui a considérablement amélioré la survie des nouveau-nés prématurés.</div>Chez les humains, ce transfert se produit vers la 10e semaine de gestation. Dans les grossesses associées à des déficits fœtaux et à un fonctionnement inadéquat de la signalisation fœto-placentaire-maternelle, une fausse couche survient généralement à ce point de transition ovarien-placentaire de la progestérone, comme l’a montré Baird en 2009<ref name="ftn179">Baird DD (2009) The gestational timing of pregnancy loss: adaptive strategy? American Journal of Human Biology 21:725–727. https://doi.org/10.1002/ajhb.20935.</ref> (mais je n'ai lu que le résumé). Chez les ovins, comme chez les rongeurs, le P4 circulant maternel décline de manière aiguë (en raison de la diminution de la production de P4 par le placenta), et favorise la parturition. Ceci, cependant, ne se produit pas chez les primates. Bien que les niveaux de P4 dans le sang maternel varient considérablement parmi les primates anthropoïdes (singes du Nouveau Monde, singes de l'Ancien Monde et grands singes, dont nous), un trait conservé dans ce groupe est que la parturition se produit sans retrait systémique de P4 (on doit ce résultat à Ratajczak & al., 2010<ref name="ftn180">Ratajczak CK Fay JC Muglia LJ (2010) Preventing preterm birth: the past limitations and new potential of animal models Disease Models & Mechanisms 3:407–414. https://doi.org/10.1242/dmm.001701.</ref>). Néanmoins, la perturbation de la signalisation P4 par un traitement avec l'antagoniste du récepteur P4 (PR), RU486, induit la parturition chez toutes les espèces examinées jusqu'à présent, y compris les humains. Une explication de cette incohérence serait que la parturition des primates implique un retrait fonctionnel de P4 par lequel les cellules cibles de l'utérus deviennent réfractaires au bloc P4 au travail. Des études suggèrent que cela se produit par de multiples mécanismes, y compris le métabolisme local de P4 en une forme inactive (c'est-à-dire le retrait de P4 de tissus ou de cellules cibles) (Nadeem ''& al.'', 2016 ) et altération de l'activité transcriptionnelle PR dans les cellules cibles utérines (Mesiano ''& al.'', 2014 ; Wu & DeMayo, 2017), mais je n’ai pas le niveau de comprendre ces papiers. Le modèle du blocage P4 (abordé en intro) postule que le moment de la naissance est déterminé par des facteurs qui induisent un retrait réel ou fonctionnel de P4. La diversité existe dans les signaux en amont pour induire le retrait du bloc P4. Le bloc P4 au travail peut diminuer avec l'avancement de la gestation sous le contrôle d'un mécanisme d'horloge jusqu'à ce qu'un seuil soit atteint en dessous duquel la cascade de parturition est initiée. Le système peut fonctionner de manière stochastique - la probabilité de parturition augmente avec le déclin progressif du bloc P4. Il est également possible que plusieurs signaux en amont pour la parturition convergent pour induire le retrait de P4. <span style="color:#000000;">Chez la plupart des mammifères euthériens, la parturition est associée à une diminution systémique des taux de P4 maternel due à la régression du CL ou à l'induction d'une activité enzymatique dans les cellules placentaires qui atténue la sécrétion de P4. Ceci, cependant, ne se produit pas chez les humains et les autres primates anthropoïdes; au lieu de cela, la parturition se produit avec les tissus utérins exposés à des niveaux élevés de P4 (Ratajczak ''& al.'', 2010). L'état ancestral original suggéré pour la modulation de la signalisation P4 maternelle circulante menant à la parturition est celui d'une diminution systémique de P4 circulant (retrait) tel que révélé dans les analyses phylogénétiques basées sur la comparaison des groupes externes avec des animaux à sabots et des carnivores (Nnamani ''& al.'', 2013). Cela suggère que la parturition humaine et primate implique une certaine forme de neutralisation du bloc P4. En effet, la perturbation de la signalisation P4 via les récepteurs nucléaires P4 (PR), augmente la contractilité utérine, favorise le ramollissement cervical et, dans la plupart des cas, induit la cascade complète de la parturition. Cela fait valoir que le bloc P4 au travail est médié par les récepteurs nucléaires P4 (PR) et que la modulation de la signalisation PR peut être un mécanisme alternatif pour le retrait de P4 lorsque les niveaux de P4 circulants ne sont pas réduits. </span> Dans Ratajczak, je lis :<blockquote>«&nbsp;Le rôle de la progestérone est connu pour changer pendant la gestation humaine en raison de la présence des isoformes des récepteurs de la progestérone PR-A et PR-B, dont les niveaux relatifs fluctuent pendant la grossesse et l'accouchement. Les récepteurs ont des fonctions uniques. PR-B induit des gènes sensibles à la progestérone. PRA réprime l'activité transcriptionnelle de PR-B. Il est encore difficile d'identifier des isoformes spécifiques, et on sait peu de choses sur l'expression relative de ces isoformes de récepteurs de la progestérone dans le myomètre humain en travail et non en travail. Une étude prometteuse de Merlino & al<ref name="ftn181">Merlino AA, Welsh TN, Tan H, Yi LJ, Cannon V, Mercer BM, Mesiano S (2007). Nuclear progesterone receptors in the human pregnancy myometrium: evidence that parturition involves functional progesterone withdrawal mediated by increased expression of progesterone receptor-A . J Clin Endocrinol Metab . 92, 1927 –1933.</ref> a identifié une augmentation du rapport PRA: PR-B, au niveau des protéines, dans le myomètre humain en travail à l'aide de deux anticorps spécifiques à l'isoforme &nbsp;».</blockquote>'''Je n’ai pas compris ceci&nbsp;:''' <blockquote>«&nbsp;L'inflammation au niveau des tissus utérins est associée à une parturition à terme normale chez les mammifères. Cependant, il est moins clair si les signaux pro-inflammatoires sont impliqués dans le processus d'initiation de la parturition chez les espèces qui ne subissent pas de lutéolyse et de retrait systémique de la progestérone ou agissent pour faciliter ou accélérer le processus une fois initié. Chez les primates, la cascade inflammatoire est apparente mais peut survenir après l'initiateur proximal de la parturition. Par exemple, des découvertes récentes d'association à l'échelle du génome chez l'homme identifient le locus pro-inflammatoire fœtal englobant la famille IL-1 sur le chromosome deux comme significativement associé à la durée de la gestation. Fait intéressant, l'association avec une gestation prolongée, et non avec une naissance prématurée, suggère que le locus contribue à favoriser le processus de naissance en aval des signaux initiateurs&nbsp;; ainsi, les signaux d'initiation et de facilitation peuvent être distincts &nbsp;». (Liu ''& al.'', 2019<ref name="ftn182">Liu X & al, (2019) Variants in the fetal genome near pro-inflammatory cytokine genes on 2q13 associate with gestational duration Nature Communications 10:3927. https://doi.org/10.1038/s41467-019-11881-8.</ref>).</blockquote> == L’ocytocine « naturelle&nbsp;» == Souvent appelée hormone du plaisir, de l’attachement<ref name="ftn183">Le rôle de l'ocytocine dans les comportements maternels de ''caregiving'' auprès de très jeunes enfants, Anne-Lise Saive, Nicole Guédeney Dans Devenir 2010/4 (Vol. 22), pp. 321 à 338. Grant AD, Erickson EN. Birth, love, and fear: Physiological networks from pregnancy to parenthood. Compr Psychoneuroendocrinol. 2022 Apr 26;11:100138. doi: 10.1016/j.cpnec.2022.100138. {{PMID|35757173}}; PMCID: PMC9227990.</ref>, ou du bonheur, c'est le pharmacologue Henry Hallett Dale qui le premier démontre en 1906 les propriétés contractiles chez la chatte enceinte d'une substance produite par l'hypophyse et lui donne son nom (mots grecs ''ôkus'' et ''tokos'', signifiant littéralement «&nbsp;accouchement rapide&nbsp;») du fait qu’elle contracte les muscles lisses de l’utérus chez les mammifères (Dale 1906&nbsp;; Dale 1909). C’est ce qu’on appelle une neurohormone. Sa propriété d'éjection du lait a été décrite par Ott et Scott en 1910 et par Schafer et Mackenzie en 1911. La molécule est isolée et commercialisée en 1927 sous le nom d'''Oxytocin'', de ''oxus'', pointu et ''tokos'', accouchement. Il faut attendre 1953 pour que l’étasunien Vincent du Vigneaud la synthétise (ce qui lui vaut le prix Nobel 1955). On a ainsi découvert que l’utérus possède des récepteurs d’ocytocine qui se développent au fur et à mesure de l’avancement de la grossesse (le médecin Claude-Émile Tourné utilisait l’expression «'' imbibition gravidique'' » ou « ''imprégnation hormonale de la grossesse'' »). Dans l’histoire évolutive on estime que l’ocytocine (OT) est apparue il y a environ 700 millions d’années. Elle existe chez la plupart des vertébrés et la totalité des mammifères sous une forme identique. L’OT est un neuropeptide de 9 acides aminés synthétisés par les cellules du contingent magnocellulaire du noyau paraventriculaire (NPV) et du noyau supra-optique (NSO) de l’hypothalamus. Les terminaisons de ces neurones se joignent aux parois des capillaires sanguins de la neurohypophyse, permettant ainsi à l’OT d’être libérée dans la circulation sanguine et d’agir en tant qu’hormone. D’autres structures que l’hypothalamus synthétisent de l’OT. Des neurones ocytocinergiques ont pu être identifiés dans différentes régions du cerveau comme le système limbique, le système olfactif, les noyaux gris centraux et le thalamus<ref name="ftn184">Synthèse et voies de libération de l’ocytocine (Lee & al., 2009 ; Boutet & al., 2004 ; Buchheim & al., 2009 ; Arpaillange, 2009 ; Matthiesen & al., 2001 ; Brett, 2001).</ref>. La synthèse de l’OT et l’excitabilité des neurones ocytocinergiques sont régulées en partie par des stéroïdes sexuels, dont la progestérone et les œstrogènes. Je dois beaucoup à Anthony Lane ''& al.'' (2013) pour la synthèse qui suit. En tant que neurohormone, elle dispose également d’une fonction de neurotransmetteur. Elle est en effet transmise dans d’autres structures du système nerveux central via le liquide céphalo-rachidien ainsi que par les projections axoniques des neurones du noyau paraventriculaire de l’hypothalamus Ces derniers envoient leurs projections vers les centres végétatifs de la formation réticulée, vers les aires cérébrales extrahypothalamiques (comme l’amygdale, l’hippocampe, le septum, le noyau acumbens, l’aire ventrale tegmale et le cortex frontal)<ref name="ftn185">Argiolas & Gessa 1990.</ref>, ainsi que vers des neurones de la moelle épinière et du tronc cérébral<ref name="ftn186">Purves, Augustine, Fitzpatrick, Hall, LaMantia, McNamara & Williams, 2005.</ref>. L’ocytocine est une hormone stockée mais pas produite, dans l'hypophyse postérieure. Les récepteurs de l'ocytocine sont présents dès les premiers mois de grossesse au niveau des cellules du myomètre mais sont inhibés. La levée de l'inhibition des récepteurs fait partie des mécanismes du déclenchement spontané de l'accouchement. Le myomètre est aussi sous l'effet utero-relaxant de la progestérone. Une baisse du taux sanguin de progestérone survient quelques jours avant le début de la parturition. L’OT entraîne au niveau des cellules musculaires de l’utérus la production de prostaglandines qui déclenche les mécanismes cellulaires de la contraction notamment par transfert calcique. Les prostaglandines sont aussi responsables du ramollissement du tissu conjonctif cervical rendant efficaces les contractions utérines au niveau du col. La connaissance de ces mécanismes a une conséquence pratique&nbsp;: l'utilisation de prostaglandines et non pas d'ocytocine pour les interruptions volontaires médicamenteuses de grossesse et les interruptions médicales de grossesse. La libération d’OT dans le système nerveux central et l’activation neuronale, ainsi que sa libération dans la circulation sanguine, peut être provoquée par des stimuli sexuels ou liés à la reproduction tels que le coït, la stimulation génitale et de la poitrine, des stimuli olfactifs, l’allaitement ou encore la parturition. Cette libération se produit également lors de stimulations non sexuelles tels le toilettage, les contacts avec la progéniture et les contacts tactiles (par exemple, les massages) (Campbell, 2008). Une fois libérée, l’OT se fixe sur des récepteurs qui lui sont propres. À l’heure actuelle, un seul type de récepteur spécifique à l’OT a pu être découvert. Il s’agit des récepteurs ocytocinergiques (OTR, récpeteurs d’OT). Ces OTR sont distribués dans des aires cérébrales variées (par exemple, l’amygdale, l’hippocampe, le septum, le noyau accumbens, l’aire ventrale tegmale …) (Landgraff & Neumann, 2004). Toutefois, la distribution et la régulation des OTR dans le cerveau varient fortement selon les espèces (Insel, Young, & Wang, 1997). Ceci explique pourquoi, malgré de nombreuses similitudes observées, il est hasardeux d’inférer que l’effet observé dans une espèce (c’est-à-dire le rat) se retrouvera dans une autre (c’est-à-dire l’humain). Chez l’être humain, au niveau périphérique, ces OTR se retrouvent principalement dans les voies digestives (Monstein, Grahn, Truedsson, & Ohlsson, 2004), les reins, le cœur, le thymus et le pancréas (Kiss & Mikkelsen, 2005). Il existe cependant une différence entre les sexes. En effet, chez les «&nbsp;femmes&nbsp;», les OTR sont distribués principalement sur les parois musculaires lisses de l’utérus ainsi qu’au niveau des mamelons (Kimura, Tanizawa, Mori, Brownstein & Okayama, 1992). Chez les «&nbsp;hommes&nbsp;», nous retrouvons des OTR dans le corps caverneux et dans l’épididyme du pénis (Vignozzi ''& al.'', 2004). Depuis maintenant plus de deux décennies, de nombreux psychologues et psychiatres se sont intéressés à l’OT, faisant de celle-ci l’hormone dont les effets psychologiques sont les mieux connus. Ces recherches ont permis de mettre en avant l’implication de l’OT dans les processus d’attachement (reste à regarder de près les critères de jugement utilisés pour jauger l'attachement<ref>Ditzen ''& al.'', 2009&nbsp;; De Dreu''& al.'', 2010&nbsp;; Feldman, Weller, Zagoory-Sharon, & Levine, 2007&nbsp;; Gordon, Zagoory-Sharon, Leckman, & Feldman, 2010&nbsp;; Van Ijzendoorn & Bakermans-Kranenburg, 2011</ref>). * La recherche de contact social&nbsp;: es études menées chez les non-humains (Insel & Shapiro, 1992 ; Carter, Grippo, Pournajafi-Nazarloo, Ruscio, & Porges 2008) et chez les humains (Taylor ''& al.'', 2006) montrent que l’ocytocine augmente la recherche de contact social, facilitant par là même l’initiation de la relation. Chez l’humain, cet effet passe par un double processus : l’OT augmente la confiance en soi (Cardoso et ses collaborateurs (2011) Guastella, Howard, Dadds, Mitchell et Carson (2009)), tout en augmentant parallèlement l’attractivité et la confiance inspirée par autrui. De récentes études (Kéri & Benedek, 2009 ; Perry''& al.'', 2010) montrent que l’OT permet à l’individu de mieux discriminer les mouvements typiquement humains (c’est-à-dire une silhouette humaine en mouvement). En effet, les participants qui ont reçu de l’OT (par rapport à un groupe contrôle) parviennent à repérer avec plus de précision les stimuli pictographiques représentant un mouvement biologique parmi une série de stimuli neutres (cercles, formes abstraites…). Ces études suggèrent donc que l’OT orienterait spécifiquement la perception de l’individu vers des stimuli socialement pertinents et faciliterait la reconnaissance des membres de notre espèce. * Les comportements tendres et de support social / le stress. Le taux d’OT est positivement corrélé avec le nombre de contacts physiques (du type «&nbsp;câlin&nbsp;») reçus (Light, Grewen, & Amico, 2004) ainsi qu’avec la qualité du support social en général (Grewen, Girdler, Amico, & Light, 2005). Lorsqu’une personne se retrouve face à une situation socialement stressante, telle une présentation en public, l’administration exogène d’OT ou, de manière plus écologique, l’augmentation du taux d’OT résultant du support social ou du comportement tendre dispensé par le partenaire ou par un proche inhibera l’axe hypothalamo-hypophysosurrénalien, bien connu pour son implication dans le stress. L’individu ressentira donc moins d’anxiété et aura une meilleure auto-évaluation de sa performance (Heinrichs, Baumgartner, Kirschbaum, & Ehlert, 2003). <span style="color:#000000;">suppression des stéroïdes sexuels et le potentiel de provoquer des symptômes dépressifs ou anxieux<ref name="ftn187">Ebner N.C., Horta M., Lin T., Feifel D., Fischer H., Cohen R.A. Oxytocin modulates meta-mood as a function of age and sex. Front. Aging Neurosci. Sep. 2015;7:175. doi:&nbsp;10.3389/fnagi.2015.00175 Becker M., Weinberger T., Chandy A., Schmukler S. Depression during pregnancy and postpartum. Curr. Psychiatr. Rep. Mar. 2016;18(3):32. doi:&nbsp;10.1007/s11920-016-0664-7. Cardaillac C., Rua C., Simon E.G., El-Hage W. [Oxytocin and postpartum depression] J. Gynecol. Obstet. Biol. Reprod. Oct. 2016;45(8):786–795. doi:&nbsp;10.1016/j.jgyn.2016.05.002</ref>. </span>Le comportement du partenaire ayant stimulé la production et la libération de l’OT sera vécu comme positif par l’individu-cible car il sera assimilé à l’effet anxiolytique ressenti. Ceci augmente la probabilité que le précédent comportement du partenaire soit de nouveau sollicité par l’individu-cible, favorisant ainsi la consolidation de la relation. * La relation de couple&nbsp;: l’OT favorise les interactions positives entre partenaires, et en particulier lors de conflits (Ditzen ''& al.'', 2009). En effet, lorsque l’on induit expérimentalement un conflit de couple (en leur demander de discuter de leurs divergences en matière d’éducation, de finances, ou de sorties par exemple), les couples ayant reçu de l’OT exogène présentent un ratio de comportements positifs/négatifs plus favorable durant la discussion que les couples ayant reçu un placebo. Augmentation des comportements positifs et une diminution des comportements négatifs chez les sujets sous OT. Cet effet est particulièrement remarquable car on sait par ailleurs que le ratio comportements positifs/comportements négatifs est un prédicteur de la qualité et de la longévité des relations (Gottman, 1994). Dès lors, les comportements tendres entre partenaires, producteurs d’OT endogène, favorisent les comportements positifs au sein du couple et, par la même occasion, maintiennent la relation entre les partenaires (Holt-Lunstad, Birmingham, & Light, 2008). * La reconnaissance de visages (Savaskan, Ehrhard, Schultz, Walter, & Schachinger, 2008&nbsp;; Rimmele, Hediger, Heinrichs, & Klaver, 2009, Guastella, Mitchell & Matthews, 2008), * La discrimination et la reconnaissance des émotions (c’est-à-dire Shamay-Tsoory ''& al.'', 2009&nbsp;; Van Ijzendoorn & Bakermans-Kranenburg, 2011) Domes et ses collaborateurs (Domes, Heinrichs, Michel & Herpertz, 2007) ont montré que les individus sous OT lisaient mieux les émotions dans le regard de leur interlocuteur que les individus sous placebo. * L’inférence de l’état mental d’autrui (Domes, Heinrichs, Michel, Berger & Herpertz, 2007). * Le traitement des indices sociaux positifs (Guastella, Mitchell & Dadds, 2008). * La confiance (Zak PJ ''& al.'' 2004<ref name="ftn188">Kurzban R, Matzner WT. “The Neurobiology of Trust,” Annals of the New York Academy of Sciences. 2004;1032:224–227.</ref> Kosfeld, Heinrichs, Zak, Fischbacher, & Fehr, 2005&nbsp;; Zak PJ & al. 2005<ref name="ftn189">Zak PJ, Kurzban R, Matzner WT. “Oxytocin is Associated with Human Trustworthiness,” Hormones and Behavior. 2005;48:522–527.</ref> Morhenn VB & al. 2008<ref name="ftn190">Morhenn VB, Park JW, Piper E, Zak PJ. “Monetary Sacrifice Among Strangers is Mediated by Endogenous Oxytocin Release after Physical Contact” Evolution and Human Behavior. 2008;29:375–383.</ref> Baumgartner, Heinrichs, Volanthen, Fischbacher, & Fehr, 2008, Mikolajczak, Pinon, Lane, de Timary, & Luminet, 2010&nbsp;; Mikolajczak, Gross ''& al.,'' 2010). La molécule semble activer la réciprocité, et la générosité (Zak, Stanton, & Ahmadi, 2007). * La régulation des relations intergroupes (De Dreu ''& al.'', 2010&nbsp;; De Dreu, Greer, Van Kleef, Shalvi, & Handgraaf, 2011). Les recherches tendent à montrer que l’OT jouerait un rôle prépondérant dans son inscription dans le monde social, tant en facilitant l’initiation des relations qu’en consolidant celles-ci (Kendrick, 2000). Les espèces grégaires ont d’ailleurs plus de récepteurs à l’ocytocine que les espèces solitaires (Insel & Shapiro, 1992). * L’apparition du comportement « maternel&nbsp;» (Pedersen & ''al.'' 1979)<ref name="ftn191">Pedersen C.A., Prange A.J. Induction of maternal behavior in virgin rats after intracerebroventricular administration of oxytocin. Proc. Natl. Acad. Sci. Unit. States Am. Dec. 1979;76(12):6661–6665. doi:&nbsp;10.1073/pnas.76.12.6661.</ref>. * Augmenter l'activité parasympathique<ref name="ftn192">Washio H., Takeshita D., Sakata S. Parasympathetic nervous activity is associated with oxytocin in multiparous, but not primiparous, women during the perinatal period. Clin. Exp. Pharmacol. Physiol. Jun. 2020;47(6):955–965. doi:&nbsp;10.1111/1440-1681.13267. Gamer M., Büchel C. Oxytocin specifically enhances valence-dependent parasympathetic responses. Psychoneuroendocrinology. Jan. 2012;37(1):87–93. doi:&nbsp;10.1016/j.psyneuen.2011.05.007.</ref> * Coordonner les réponses adaptatives à la peur et au stress, à l’instar de l’agressivité envers les intrus<ref name="ftn193">Les références principales sont&nbsp;: - McQuaid R.J., McInnis O.A., Paric A., Al-Yawer F., Matheson K., Anisman H. Relations between plasma oxytocin and cortisol: the stress buffering role of social support. Neurobiol. Stress. Jun. 2016;3:52–60. doi: 10.1016/j.ynstr.2016.01.001. - Cox E.Q., Stuebe A., Pearson B., Grewen K., Rubinow D., Meltzer-Brody S. Oxytocin and HPA stress axis reactivity in postpartum women. Psychoneuroendocrinology. May 2015;55:164–172. doi: 10.1016/j.psyneuen.2015.02.009 <span style="background-color:transparent;">(je n’ai lu que les résumés).</span> - Janeček M., Dabrowska J. Oxytocin facilitates adaptive fear and attenuates anxiety responses in animal models and human studies - potential interaction with the corticotropin releasing factor (CRF) system in the bed nucleus of the stria terminalis (BNST) Cell Tissue Res. Jan. 2019;375(1):143–172. doi:10.1007/s00441-018-2889-8.92. - Debiec J. Peptides of love and fear: vasopressin and oxytocin modulate the integration of information in the amygdala. BioEssays News Rev. Mol. Cell. Dev. Biol. Sep. 2005;27(9):869–873. doi: 10.1002/bies.20301.</ref>. Je recommande la revue de littérature «&nbsp;''Psychoendocrinologie sociale de l’ocytocine : revue d’une littérature en pleine expansion''&nbsp;» d’Anthony Lane, Olivier Luminet et Moïra Mikolajczak<ref name="ftn194">Dans L’Année psychologique 2013/2 (Vol. 113), pp. 255 à 285.</ref>. Ces études, qui mettent en évidence l’implication de l’OT dans la modulation des processus sociaux, ont rapidement valu à l’OT des appellations telles que «&nbsp;l’hormone de l’amour&nbsp;», «&nbsp;l’hormone de l’attachement&nbsp;», ou encore «&nbsp;la grande facilitatrice de vie&nbsp;» (''Oxytocin, the great facilitator&nbsp;of life'', Lee, Macbeth, Pagani & Young, 2009), ce qui procède d’une simplification grossière tant les choses sont complexes. Cela a abouti à une commercialisation un peu spéciale de l’OT. Bien que l’utilisation de l’OT de synthèse (c’est-à-dire Syntocinon, Novartis, Bâle, Suisse), dans le cadre d’une clinique obstétrique, soit ancienne et courante, certains laboratoires parapharmaceutiques (comme www.verolabs.com) ont développé des produits à base d’OT (par ex., un parfum à l’OT) destinés au grand public, afin qu’il puisse bénéficier de ses «&nbsp;vertus&nbsp;» socialisantes, ce qui n’est pas stupide&nbsp;: Paul Zak a montré qu’en faisant inhaler de l’OT par le nez à des sujets cela augmente leurs comportements sociaux<ref name="ftn195">Trois «&nbsp;gros&nbsp;» articles montrent ça&nbsp;: Zak PJ, Stanton AA, Ahmadi S. Oxytocin increases generosity in humans. Public Library of Science ONE. 2007;2(11) Kosfeld M, Heinrichs M, Zak PJ, Fischbacher U, Fehr E. “Oxytocin Increases Trust in Humans,” Nature. 2005;435(2):673–676. et Zak PJ, Barraza JA. “The Neurobiology of Collective Action,” Frontiers in Neuroscience. 2013;7:211. doi: 10.3389/fnins.2013.00211.</ref>. Mais attention&nbsp;! Comme l’écrit Zak lui-même, c’est plus compliqué que ça : <blockquote>«&nbsp;Les études qui infusent uniquement de l'ocytocine aux participants, puis font des affirmations sur le comportement humain, sont suspectes. Cette approche n'identifie pas ce que le cerveau lui-même fait pendant les interactions sociales, y compris la promotion neurochimique et l'inhibition de la synthèse de l'ocytocine et les relations dose-réponse entre l'ocytocine et le comportement. La question clé est de savoir si le cerveau produit sa propre ocytocine pendant le comportement étudié ; si tel est le cas, la relation causale entre l'ocytocine et un comportement particulier peut être démontrée via une étude de perfusion. Mais l'inverse n'est pas vrai : injecter de l'ocytocine ou n'importe quel médicament dans le cerveau et observer un changement de comportement ne signifie pas que c'est ainsi que fonctionne le cerveau, cela signifie simplement qu'un médicament a changé de comportement, comme le font de nombreux médicaments. Mes études complètent le cercle causal en mesurant ce que le cerveau fait naturellement puis en intervenant pharmacologiquement dans ce système pour montrer que le comportement peut être provoqué.&nbsp;»</blockquote>Zak le résume d’ailleurs par une sorte de règle d’or&nbsp;: <blockquote>«&nbsp;si vous me traitez bien, dans la plupart des cas, mon cerveau synthétisera de l'ocytocine et cela me motivera à bien vous traiter en retour.&nbsp;»</blockquote>Je pense qu’il vaudrait mieux l’appeler l’hormone de l’attachement social que l’hormone de l’amour, ou comme Zak l’a fait, la «&nbsp;molécule morale&nbsp;» car d’autres auteurs (comme Molly Crockett, dans son talk ''Beware of Neuro-bunk'', 2012<ref name="ftn196">https://www.gatescambridge.org/about/news/beware-of-neuro-bunk/.</ref>) ont montré que l’OT induit aussi des préjugés aux dépends d’autres groupes, et même des diminutions de coopération '''''Dans la grossesse&nbsp;proprement dite&nbsp;?''''' Des études ont mis en avant que le lien unissant l’OT durant la grossesse et la qualité du lien d’attachement subséquent opérait par la représentation mentale, chez la mère, de la future relation. Le taux d’OT plasmatique présent durant la grossesse aurait ainsi comme propriété de préparer le comportement maternel après la naissance. Les mères qui présentent un taux d’OT élevé en début de grossesse et/ou une augmentation du taux d’OT entre le premier et le troisième trimestres (Feldman ''& al.,'' 2007&nbsp;; Levine, Zagoory-Sharon, Feldman, & Weller 2007) développeraient des «&nbsp;schèmes cognitifs&nbsp;» facilitant la mise en place de représentations mentales du lien mère-enfant (exemple&nbsp;: projection de la future relation) et des comportements associés (toucher du ventre, vocalisation à l’attention du bébé …). Ces représentations mentales précoces favoriseraient l’émergence de comportements maternels typiques ou adéquats dès le début de la période postpartum (contacts oculaires accrus, vocalisations «&nbsp;maternantes&nbsp;», affects positifs, contacts physiques affectueux, pensées affiliatives, surveillance accrue de l’enfant …) et donc favoriseraient le lien d’attachement. Ces études montrent donc que, durant la grossesse, l’OT induirait un type d’attachement préliminaire à l’attachement mère-enfant&nbsp;: l’attachement fœtal. Sans pour autant prétendre que l’OT déterminerait la qualité et l’adéquation des soins prodigués par la future mère ou du lien d’attachement, ces études suggèrent que l’impact de l’OT durant la grossesse, faciliterait l’initiation de la relation mère-enfant. Des études d’imagerie cérébrale (Bartels & Zeki, 2004) ont permis d’identifier différentes zones cérébrales activées par l’&nbsp;« amour maternel&nbsp;». Les résultats montrent qu’une zone s’active particulièrement chez les mères lorsqu’on leur présente des photographies de leurs enfants. Il s’agit de la substance grise périaqueducale, riche en OTR (Lambert & Lotstra, 2005). Il n’est donc pas surprenant de trouver un lien entre OT et amour maternel. Des études ont montré que le taux d’OT en début de grossesse (Feldman ''& al.'' 2007) ou la variation de taux d’OT entre le premier et le troisième trimestres de la grossesse (augmentation du taux plasmatique d’OT entre le début et la fin de la grossesse) (Levine ''& al.'', 2007) prédisaient la qualité de l’attachement avec le nouveau-né. Certaines études (Heinrichs ''& al.'', 2001 ; Neumann, 2008 ; Riem ''& al.'', 2011) montrent en outre que l’OT libérée par les comportements maternels primaires, tels l’allaitement du nourrisson ou le contact tactile avec la progéniture, inhibe l’axe hypothalamo-hypophyso-surrénal. Cette inhibition a pour effet de réduire le stress, l’anxiété et le dégoût, ce qui place la mère dans un état d’esprit serein et calme, propice au développement de la relation d’attachement avec l’enfant. Lorsque l’on s’intéresse aux premiers mois de la relation parentale, on remarque que l’OT plasmatique reste stable, tant chez la mère que chez le père. Plus le taux plasmatique d’OT est élevé, plus les manifestations d’attachement sont présentes (Gordon & al., 2010). Chez la mère, ces manifestations prendront la forme de contacts « affectueux » (vocalisations maternantes, contacts physiques affectueux …), alors que chez le père, elles seront de type « stimulant » (contacts tactiles, présentation d’objet dans le jeu …) (Feldman, Gordon, Schneiderman, Weisman, & Zagoory-Sharon, 2010). Une étude uniquement basée sur les comportements paternels (Naber, van Ijzendoorn, Deschamps, van Engeland, & Bakermans-Kranenburg, 2010) a permis de montrer que l’administration d’OT de synthèse à de jeunes pères augmente la réactivité et la patience, et diminue l’hostilité durant la période de jeu avec l’enfant. Si le taux d’ocytocine influence la relation parent-enfant, l’inverse est vrai également. Une étude a montré que les interactions parents-enfant augmentent en retour le taux d’OT plasmatique chez les deux parents (Feldman ''& al.'', 2010). Cette élévation se produit uniquement lorsque le parent entre dans une interaction prototypique de son sexe (de type contacts « affectueux » et chez la mère et de type « stimulation » chez le père), et ce, quel que soit le sexe de l’enfant<ref name="ftn197">L’essentiel vient de Psychoendocrinologie sociale de l’ocytocine : revue d’une littérature en pleine expansion, Anthony Lane, Olivier Luminet, Moïra Mikolajczak, Dans L’Année psychologique 2013/2 (Vol. 113), pages 255 à 285 https://www.cairn.info/revue-l-annee-psychologique1-2013-2-page-255.htm#pa38</ref>. A en lire Azure D. Grant, la stimulation du cervix (col de l’utérus) propre à la phase de travail a pour conséquence d’accroître la production d’OT dans l’hypophyse postérieure et de sa libération subséquente (Gimpl & Fahrenholz, 2001&nbsp;; Russell, Leng, & Douglas, 2003). Parallèlement, durant la phase de travail, la sensibilité des récepteurs ocytocinérgiques (OTR) situés dans les muscles lisses de l’utérus (Kimura ''& al.'', 1992) s’accroît et leur densité augmente, pouvant atteindre un nombre 200 fois plus élevé par rapport à celui d’un utérus non gravide (Fuchs & Fuchs, 1984). Ces deux actions combinées permettent * les contract<span style="color:#000000;">ions utérines qui favorisent la sortie du nouveau-né,</span> * <span style="color:#000000;">facilitent l'involution de l'utérus<ref name="ftn198">Sulistiana M.P., Marfuah D., Mutiar A., Nurhayati N. KnE Life Sci.; Mar. 2021. The Effect of Oxytocin and Endorphin Massage to Uterine Involution in Post-Partum Mothers: A Literature Review; pp. 680–688.</ref></span>, * la délivrance du placenta, * et le repositionnement de l’utérus après l’accouchement. <div style="color:#000000;">Ces effets facilitateurs permettent de prévenir et de réguler les hémorragies associées aux parturitions difficiles<ref name="ftn199">Mitchell, Fang, & Wong, 1998. Arrowsmith S., Wray S. Oxytocin: its mechanism of action and receptor signalling in the myometrium. J. Neuroendocrinol. 2014;26(6):356–369. doi:&nbsp;10.1111/jne.12154.<div style="color:#000000;">Et Uvnäs Moberg K., et al. Maternal plasma levels of oxytocin during breastfeeding-A systematic review. PLoS One. 2020;15(8):e0235806. doi:&nbsp;10.1371/journal.pone.0235806.</div></ref>. Azure D. Grant indique que la connexion nerveuse et hormonale du placenta est supprimée et remplacée par des signaux endocriniens, autonomes et émotionnels provenant de l'allaitement intermittent, du toucher et d'autres entrées sensorielles. Malgré la séparation physique, les mères et les nourrissons peuvent maintenir un degré élevé de coordination comportementale, émotionnelle et physiologique, come le montrent les travaux de Bell (2020)<ref name="ftn200">Bell M.A. Mother-child behavioral and physiological synchrony. Adv. Child Dev. Behav. 2020;58:163–188. doi:&nbsp;10.1016/bs.acdb.2020.01.006.</ref>. </div> '''''Ocytocine & allaitement'''''<div style="color:#000000;">Parallèlement à son action utérine, l’OT est également connue pour son effet sur l’allaitement. Bien que n’agissant pas sur la production de lait (qui dépend d’autres hormones&nbsp;: les oestrogènes et la prolactine), l’OT permet l’éjection de celui-ci en favorisant la sécrétion de prolactine,il coordonne la lactation avec l'éjection du lait<ref name="ftn201">Ott & Scott, 1911&nbsp;; Sala, Luther, Arballo, & Cordero Funes, 1974&nbsp;; McNeilly, Robinson, Houston & Howie, 1983&nbsp;; Kent, Kennaugh & Hartmann, 2003, Uvnäs-Moberg & Petersson, 2005.</ref>.</div>La production d’OT étant dépendante, entre autre, de stimuli sensoriels (Campbell, 2008), l’hypophyse postérieure libère cette dernière dans la circulation sanguine lorsque le nourrisson enclenche le processus de tétée en stimulant tactilement le mamelon. L’OT ainsi libérée se fixe sur les OTR, situés dans les glandes mammaires. Cette fixation engendre une contraction des cellules myoépithéliales entourant les acini remplis de lait, provoquant ainsi la propulsion du lait vers les canaux galactophores correspondants. L’OT poursuit son action en permettant, une nouvelle fois, la contraction des fibres musculaires entourant ces canaux, afin d’acheminer le lait jusqu’au mamelon où il sera éjecté (Prime ''& al.'', 2009). Il est à noter que le taux d’OT plasmatique augmenterait uniquement durant la phase de nourrissage. Cette variation serait donc transitoire et disparaîtrait entre deux allaitements (Feldman''& al.'', 2007). Anne-Lise Saive, Nicole Guédeney écrivent&nbsp;: «&nbsp;A la naissance, le nouveau-né adopte un comportement particulier au contact de la poitrine de sa mère. Il l’explore avec ses mains et effectue des mouvements de massage du mamelon et de succion pour préparer la 1re tétée. Ces mouvements augmentent de manière importante le taux d’OT dans le sang chez la mère (Macdonald ''& al.'', 2010). Il a été montré qu’en favorisant les contacts mère-enfant dès la naissance et en continu, on améliore l’attachement mère-enfant (au sens de ''bonding'' ou attachement maternel). Le pic d’OT observé dans le 1er quart d’heure après l’accouchement chez la mère expliquerait la période critique de formation du lien de ''bonding'' (ou attachement maternel) (Insel ''& al.'', 2001 ; Guedeney ''& al.'', 2008). De plus, la succion du mamelon, la parturition, la vue d’un être aimé, le stress, ''etc''. sont autant de signaux déclencheurs de la libération d’OT dans le sang (Matthiesen ''& al.'', 2001 ; Swain ''& al.'', 2007).&nbsp;» Est-il vrai que lorsque le processus de l’accouchement est perturbé, le risque est plus grand que les hormones ne soient pas secrétées de manière optimale et que cela ait un effet sur le sentiment de la mère pour son bébé ? (pense ne pas avoir « d’instinct » maternel, ne ressent pas d’amour immédiat pour ce bébé, ne sait pas comment se comporter avec ce bébé, ne sent pas que c’est le sien). Je ne sais même pas si une étude pourrait permettre d’évaluer correctement ça sans facteurs confondants. Mais le présupposé qu’un accouchement non-perturbé, dont le processus s’est déroulé de manière la moins interventionniste « possible », favorise l’attachement, ne paraît pas hors-sol. D’autant que c’est très prégnant chez pas mal de mammifères : chez les brebis et les primates, l’allaitement augmente la concentration de β-endorphines, ce qui favorise l’acceptation par la mère de son petit. De plus, l’injection d’un antagoniste, la naloxone, altère l’émergence d’un comportement maternant. Il y a une étude, dont j’ai égaré la référence qui a montré les effets de la séparation de poulains et de leur mère à la naissance : ils montraient des signes de mal-être (tremblements, agitation) et à plus long terme étaient moins sociables et plus agressifs. ''Note''&nbsp;: Davis & Pascali-Bonaro (2010) : «&nbsp;''les comportements d’attachement des brebis en travail placées sous péridurale sont considérablement réduits par rapport à la normale, ou même absents''.&nbsp;»<ref name=":0" /> (p. 39, ref donnée&nbsp;: Krehbiel ''& al.,'' Peridural anaesthesia. Physiology and Behaviour 1982). Elles ajoutent que les brebis non gravides préparées avec un cocktail de progestérone et d’œstrogènes avant de recevoir une stimulation vaginale par vibrateur s’occupent d’agneaux nouveaux-nés comme s’ils étaient les leurs. Ceci suggérerait que la stimulation vaginale induit l’attachement<ref>Keverne & al, Vaginal stimulation sheep, Science 219, 1983</ref>. '''''Orgasme&nbsp;?''''' Lisons Davis & Pascali-Bonaro (2010, pp. 39-40) : <blockquote>«&nbsp;Comme le bébé descend, les récepteurs d’étirement du vagin induisent un nouveau flux d’ocytocine dans le corps de la mère. (.) Le plexus nerveux hypogastrique et pelvien, ainsi que le nerf vagal, sont tous trois éminemment stimulés, exactement comme dans la physiologie de l’excitation sexuelle. Ajoutez à cela la bouffée d’ocytocine et le potentiel orgasmique de ce moment devient très clair&nbsp;».</blockquote>Les références données sont : Barry Komisaruk, Giorgio Sansone Neural pathways mediating vaginal function: The vagus nerves and spinal cord oxytocin<ref>Barry Komisaruk, Giorgio Sansone Neural pathways mediating vaginal function: The vagus nerves and spinal cord oxytocin, August 2003 Scandinavian Journal of Psychology 44(3):241-50 DOI: 10.1111/1467-9450.00341.</ref>. Je l'ai lu. on peut y lire que :<blockquote>«&nbsp;L'autostimulation vaginale ou cervicale chez la femme produit une analgésie puissante. Cette analgésie est plus forte si l' autostimulation est agréable, et encore plus forte si elle induit l' orgasme. De ces études chez les femmes, nous concluons définitivement que, contrairement à d'autres formes d'analgésie induite par la stimulation qui sont des réponses compensatoires à une stimulation sensorielle douloureuse, l'analgésie induite par l'autostimulation vaginale ou cervicale est différente - plus la stimulation est agréable. est perçue comme étant, plus l'analgésie est perçue comme telle&nbsp;».</blockquote>Davis & Pascali-Bonaro (2010), toujours, p. 39 :<blockquote>«&nbsp;Selon la sage-femme Jean Sutton, un rôle clef est joué par le losange de Michaelis (…) Cette zone doit s’ouvrir considérablement lors de la 2<sup>e</sup> phase, augmentant les dimensions avant-arrière du pelvis de plusieurs centimètres&nbsp;! Et si la femme se penche en avant, l’arrière de la tête du bébé entre en contact avec son point G, déclenchant non seulement l’ouverture physique, mais aussi le relâchement orgasmique&nbsp;».</blockquote>A l'appui de cela, elles donnent Sutton, J. (2000), ''Birth without active pushing and a physiological second stage of labour''<ref>Sutton, J. (2000), Birth without active pushing and a physiological second stage of labour. The practising midwife, 3 4, 32-4.</ref>. J’ai laissé malheureusement en jachère ce point '''''Les battements de cœur de deux amants durant l’accouchement se synchronisent-ils&nbsp;?''''' '''''Les battements de cœur de deux amants durant l’accouchement se synchronisent-ils&nbsp;?''''' Il est parfois dit que les battements de cœur de deux amants durant l’accouchement se synchronisent à cause d’elle (toujours Davis & Pascali-Bonaro (2010) p. 25) mais j’ai des doutes car je ne trouve pas de preuve. Je pense qu’il s’agit d’une mécompréhension&nbsp;: l’équipe de Marco Thiel a montré que la mère et son bébé à naître synchronisent leurs rythmes cardiaque, mais uniquement lorsque la mère respire de manière rythmique. Il n’est pas impossible, si je comprends bien Ivanov (2009)<ref name="ftn202">Maternal–fetal heartbeat phase synchronization Proc Natl Acad Sci US A. 18 août 2009 ; 106(33): 13641–13642.</ref>, que les stimuli acoustiques de la pulsation des vaisseaux jouent aussi un rôle. Quant aux amants, c’est encore plus douteux&nbsp;: même chez des co-dormeurs, ça ne marche pas tout le temps, et quand ça marche, il semble que ce soit dû aux vibrations balistocardiographiques, en gros les vibrations transmises par le matelas (donc très dépendantes de la qualité du matelas), comme l’ont montré les Coréens Yonn & el 2019<ref name="ftn203">Yonn & al Human Heart Rhythms Synchronize While Co-sleeping, Front. Physiol., Vol 10, 11 March 2019.</ref>. '''''En sécrète-on quand on est amoureux&nbsp;?''''' De ce que j’ai lu, il semble bien que oui, en particulier durant la période «&nbsp;romantique&nbsp;»&nbsp;! (Schneidermann ''& al''. 2012<ref name="ftn204">Schneiderman I, Zagoory-Sharon O, Leckman JF, Feldman R. Oxytocin during the initial stages of romantic attachment: relations to couples' interactive reciprocity. Psychoneuroendocrinology. 2012 Aug;37(8):1277-85. doi: 10.1016/j.psyneuen.2011.12.021. Epub 2012 Jan 26. {{PMID|22281209}}; PMCID: PMC3936960.</ref>) '''''En sécrète-on quand on regarde des scènes impliquant l’&nbsp;« amour&nbsp;» au sens large&nbsp;?''''' De ce que j’ai compulsé, on ne peut pas dire cela. J’ai regardé les études de l’équipe de Zak&nbsp;: dans une série de tests utilisant des vidéos, en particulier des vidéos poignantes avec des enfants mourants, elle a découvert que des récits convaincants provoquent la libération d'ocytocine et ont le pouvoir d'affecter nos attitudes, nos croyances et nos comportements ultérieurs dans une certaine mesure<ref name="ftn205">Zak PJ. Why inspiring stories make us react: the neuroscience of narrative. Cerebrum. 2015 Feb 2;2015:2. {{PMID|26034526}}; PMCID: PMC4445577.</ref>. Dans une expérience de Speck ''& al.,'' 2019, on a constaté que les taux de base d’OT chez des patients atteints de schizophrénie était bas, mais la sécrétion d’OT était bien plus haute devant des films pour enfants émouvants<ref name="ftn206">Speck LG, Schöner J, Bermpohl F, Heinz A, Gallinat J, Majic T, Montag C. Endogenous oxytocin response to film scenes of attachment and loss is pronounced in schizophrenia. Soc Cogn Affect Neurosci. 2019 Jan 4;14(1):109-117. doi: 10.1093/scan/nsy110. {{PMID|30481342}}; PMCID: PMC6318471.</ref> '''''L’ocytocine naturelle est elle pulsatile&nbsp;?''''' Au contraire d'autres hormones, l'ocytocine ne bénéficie pas d'un dispositif régulateur qui permettrait de limiter sa production. Il semble au contraire que l'ocytocine active des processus qui fonctionnent en « cascade », entraînant des pics importants et une production sur un mode « pulsatif ». '''''Est-ce un point de différence notable avec l’OT De synthèse&nbsp;?''''' Prenant en compte le caractère pulsatile de la sécrétion d’ocytocine au cours du travail, des auteurs ont étudié l’action d’une perfusion d’ocytocine administrée de manière pulsatile pour l’augmentation du travail. Tribe & al. ont montré en 2012 dans un essai contrôlé randomisé portant sur 502 patientes en travail spontané, que l’administration pulsatile d’ocytocine (pulses de 2 mUI administrés en 10 secondes toutes les 6 minutes, avec augmentation par deux de la dose toutes les 30 minutes) n’apportait pas de différence, comparée à un protocole classique d’administration de l’ocytocine (débit initial de 2 mUI/min, avec augmentation de 2 mUI/min toutes les 15 minutes)<ref name="ftn207">Tribe RM, Crawshaw SE, Seed P, Shennan AH, Baker PN. Pulsatile versus continuous administration of oxytocin for induction and augmentation of labor: two randomized controlled trials. Am. J. Obstet. Gynecol. Mars 2012;206(3):230.e1‑ 8.</ref>. Une étude récente menée par l'équipe de Kerstin Uvnäs-Moberg, en Suède, montre que la durée moyenne d'allaitement au sein est supérieure chez les femmes qui ont bénéficié de production pulsative d'ocytocine naturelle pendant leur accouchement<ref name="ftn208">Kerstin Uvnäs‐Moberg, Ann-Marie Widström, Sigbritt Werner et Ann-Sofie Matthiesen, « Oxytocin and Prolactin Levels in Breast-Feeding Women. Correlation with milk Yield and Duration of Breast-feeding », Acta Obstetricia et Gynecologica Scandinavica, vol. 69, no 4,‎ 1990, pp. 301–306 ISSN 1600-0412, DOI 10.3109/00016349009036151.</ref>. D’ailleurs, la succion du nourrisson au niveau du mamelon est relayée par les nerfs rachidiens jusqu'à l' hypothalamus, et cette stimulation amène les neurones qui fabriquent l'ocytocine à déclencher des potentiels d'action en rafales intermittentes; ces bouffées entraînent la sécrétion d'impulsions d'ocytocine à partir des terminaisons nerveuses neuro-sécrétoires de l'hypophyse. '''Y a-t-il un lien entre l'ocytocine et les ondes cérébrales ''théta''&nbsp;?''' C'est ce qu'affirment Davis et Pascali-Bonaro (2010) p. 25. J’ai encore des doutes, déjà parce que «&nbsp;ondes ''théta'' », ce n’est pas clair. Dans la littérature sur les EEG, dans les années 1920, des lettres grecques telles que alpha, bêta, thêta et gamma ont été utilisées pour classer les ondes tombant dans des plages de fréquences spécifiques, « ''théta'' » signifiant généralement une plage d'environ 4 à 7 cycles par seconde (Hz). Or, dans les années 1930-1950, un modèle d'oscillation rythmique très fort a été découvert dans l' hippocampe des chats et des lapins (Green & Arduini, 1954). Chez ces espèces, les oscillations de l'hippocampe tombaient principalement dans la gamme de fréquences de 4 à 6 Hz, elles étaient donc appelées oscillations « thêta ». Plus tard, des oscillations hippocampiques du même type ont été observées chez le rat ; cependant, la fréquence des oscillations EEG de l'hippocampe du rat était en moyenne d'environ 8 Hz et tombait rarement en dessous de 6 Hz. Ainsi, l'oscillation EEG de l'hippocampe du rat n'aurait pas dû, à proprement parler, être appelée rythme thêta. Cependant, le terme « thêta » était déjà devenu si fortement associé aux oscillations de l'hippocampe qu'il continuait à être utilisé même pour les rats. Au fil des ans, cette association est devenue plus forte que l'association d'origine avec une gamme de fréquences spécifique, mais la signification d'origine persiste également. Ainsi, « thêta » peut signifier l'une ou l'autre de deux choses&nbsp;: * Un type spécifique d'oscillation régulière observé dans l'hippocampe et plusieurs autres régions cérébrales qui y sont connectées. * Des oscillations EEG dans la gamme de fréquences de 4 à 7 Hz, quel que soit l'endroit du cerveau où elles se produisent ou quelle que soit leur signification fonctionnelle. J’ai demandé au neurologue Laurent Vercueil, qui m’a répondu&nbsp;:<blockquote>«&nbsp;<span style="color:#000000;">A ma connaissance il n'y a pas d’activité cérébrale spécifique de l'accouchement. Ce qui est vrai par contre c'est que l'hyperventilation (qu'on utilise au cours des EEG) provoque un ralentissement de l'électrogenèse, d'abord thêta puis, si on continue malgré l'inconfort (ce qu'on ressent lorsqu'on souffle sans discontinuer sur un foyer, ou en remplissant un ballon), delta. Mais c'est sans rapport avec l'accouchement lui-même&nbsp;».</span></blockquote> == L’ocytocine de synthèse == Davis, Pascali-Bonaro 2010 (pp. 27-28) écrivent de manière très assertive :<blockquote>« Le synto bloque la production d’OT. Il n’engendre ni amour ni réaction d’attachement parce que le cerveau n’aà pas de récepteurs adaptés. La péridurale perturbe aussi la production d’OT (…) en engourdissant les récepteurs d’étirement du vagin qui noirmalement réagissent à la pression de la tête du bébé. Le synto réduit les quantités d’une autre hormone : la prostaglandine F2. Et voilà le cercle vicieux classique : des contractions anormalement fortes, induites par le Syntho causent une douleur exacerbée par les effets anti-extatiques du médicament, menant à une péridurale, une activité utérine amoindrie et la nécessité d’administrer d’avantage [sic] de Syntho ! (..)</blockquote>Après du Vigneaud, on a pensé qu’on allait maintenant détenir la clé du déclenchement opportun du travail et pallier ce qui apparaissait comme l’une des plus grandes problématiques de l’enfantement : son imprévisibilité. il apparut plus avantageux à la majorité des praticiens de déclencher la réaction, et ainsi influer en amont sur le déroulement des événements, que de se laisser surprendre à toute heure du jour ou de la nuit. Le premier obstétricien à envisager l’usage de l’ocytocine aux fins de déclenchement du travail, Charles B. Reed, en 1920, s’exprimait en ces termes :<blockquote>« Whether or not the maturity of the child be generally accepted as a satisfactory and legitimate basis for briging on the labor, at all events our ability to produce the delivery at will is an important addition to our obstetric armamentarium. »<ref>''in'' Block, 2007, p. 39.</ref></blockquote>avec une métaphore guerrière (agressivité, enceinte fortifiée, projectile, ''etc.'') que dénonce à juste titre Stéphanie St-Amant dans sa thèse de doctorat (2013)<ref>St-Amant S., DÉCONSTRUIRE L’ACCOUCHEMENT : ÉPISTÉMOLOGIE DE LA NAISSANCE, ENTRE EXPÉRIENCE FÉMININE, PHÉNOMÈNE BIOLOGIQUE ET PRAXIS TECHNOMÉDICALE <nowiki>https://www.academia.edu/5700272/Th%C3%A8se_de_doctorat_D%C3%89CONSTRUIRE_L_ACCOUCHEMENT_%C3%89PIST%C3%89MOLOGIE_DE_LA_NAISSANCE_ENTRE_EXP%C3%89RIENCE_F%C3%89MININE_PH%C3%89NOM%C3%88NE_BIOLOGIQUE_ET_PRAXIS_TECHNOM%C3%89DICALE</nowiki> fdeL</ref>.<blockquote>« Si l’ocytocine de synthèse a grandement facilité l’entreprise de détermination du moment opportun (aux yeux du praticien) du déclenchement de l’accouchement et propulsé la procédure au rang de routine en raison de son taux élevé de succès, elle ne fut pas la seule méthode employée et encore moins la première. Bien que la connaissance de substances favorables au déclenchement de l’accouchement (ergot de seigle, huile de ricin) remonte à des temps immémoriaux, l’idée de faire naître l’enfant prématurément germa dans les années 1800 pour les cas de bassins difformes, afin d’éviter une symphyséotomie ou la césarienne, ou pour les cas de pré-éclampsie et éclampsie (désordre hypertensif dangereux causé par la grossesse et qui demeure encore largement incompris). Par la suite, toutes sortes d’expérimentations ont été menées aux XIXe et XXe siècles : dilatation mécanique du col utérin avec des objets divers, des ballons ou en y suspendant des poids, dilatation manuelle, lavements, jeûnes, injection de lipides par intraveineuse, d’air ou d’acide carbonique dans l’utérus. On risqua même l’électricité dans les années 1800.. De nos jours, une panoplie de méthodes est à disposition. Bien sûr, en tête de liste figure l’injection d’hormones exogènes par intraveineuse, tentée d’ordinaire sur un « col favorable », c’est-à-dire mou, en partie effacé. Si tel n’est pas le cas, on a d’abord recours aux méthodes de dilatation mécanique ou, plus rarement, manuelle, mais d’ordinaire à l’application locale d’un gel pour faire « mûrir » le col, composé de prostaglandines provenant du sperme porcin. Pour les plus holistiques,on « prescrit » à l’occasion l’activité coïtale en fin de grossesse en raison des propriétés reconnues aux prostaglandines séminales. On a aussi découvert l’action redoutable d’un médicament, le misoprostol (Cytotec), dont l’utilisation reste extrêmement controversée – le produit n’ayant jamais été commercialisé pour cet usage par le fabricant – et qui est associée à de graves complications ». (St Amant 2015<ref>Nait-on encore ? Réflexions sur la production médicale de l’accouchement, Recherches familiales 2015/1 (N°12) pp 9-25</ref>)</blockquote> St-Amant écrit: <blockquote> « On tenta d’abord d’injecter aux femmes des extraits pituitaires animaux, vantant les avantages de la substance sur les forceps en invoquant l’habituel critère de rapidité : « Throw away your forceps and use Pituitrin! », scandait la publicité. Cependant, les premiers résultats demeurèrent hasardeux et plusieurs cas de Pituitrin shock (choc anaphylactique, tétanie puis atonie utérine, rupture utérine, hypoxie fœtale) refroidirent les ardeurs. En 1928, le Pitocin fut commercialisé. Il fallut attendre les années 1950 pour qu’une machine soit inventée permettant un contrôle fiable de l’administration d’ocytocine de synthèse par intraveineuse, invention qui valut à Vincent du Vigneaud le Prix Nobel de chimie en 1955. À l’instar des critiques féministes des années 1980 (Martin, 1987 ; Corea, 1984; Oakley, 1984), Jennifer Block rappelle qu’on peut voir dans cet engouement pour le contrôle du travail une « extension de l’industrialisation » décrite par Barbara Bridgman Perkins : « Il y a un lien direct entre l’essor des chaînes de montage – de production de masse – et celui de la naissance standardisée, mécanisée. La pituitrine elle-même « doit sa disponibilité commerciale à la centralisation de l’industrie de l’abattage. Une livre d’extrait séché devint le lucratif dérivé des hypophyses de douze mille jeunes bovins. La chaîne de production des abattoirs participa ainsi à l’émergence d’une obstétrique à la chaîne ». </blockquote>Ironiquement, même Joseph DeLee (1940) s’était élevé contre l’utilisation routinière des ocytocines de synthèse dans le dernier article publié de son vivant. Il encensait l’avancée scientifique, mais considérait que ces nouveaux outils, tout comme sa méthode, devaient être réservés aux rares spécialistes. Les raisons invoquées : 1) les nombreux effets secondaires et dangers des ocytociques ; 2) la non-approbation par les autorités pharmacologiques des différents dérivés commercialisés70 (il dénonçait au passage l’appétit des manufacturiers ayant flairé la bonne affaire de ce marché de 40 millions de naissances par an dans le monde à l’époque) ; et 3) le dérèglement de l’équilibre hormonal ainsi occasionné : <blockquote>«'' I have observed quite a number of their results, experienced many abnormally rapid labors, and learned that a streamlined labor can be as safe as a streamlined parachute''. »</blockquote>St-Amant (p. 156) : « En partie en contradiction avec ses propos des années 1920 (le ton tranche avec ses écrits des années 1915-1920 cités précédemment), il énonce maintenant que la lenteur garantit la sécurité du moulage habituel du crâne du bébé, allant même jusqu’à préconiser de cesser les usuelles injonctions aux efforts expulsifs (« Poussez! Poussez! Poussez! »<ref>Il évoque ici les expériences faites en ce sens par un certain Rawlins à Londres dans les années 1830, ce qui montre que ne date pas d’hier la construction de l’accouchement comme une épreuve sportive (et non un phénomène involontaire), qui demande force et endurance... et peut être échouée. (note de S. St-Amant).</ref>). Le DeLee tardif est étonnamment en phase avec la compréhension actuelle de la physiologie de la parturition : c’est l’utérus, muscle involontaire, qui expulse le bébé, sans besoin d’y ajouter l’effort volontaire (de Gasquet, Odent, et, bien plus tôt, les travaux à la fin des années 1950 de l’obstétricienne anglaise Constance L. Beynon<ref>Retracés dans Block (2007), pp. 24-25.</ref>). Cependant, il n’hésitait pas à imputer au passage l’engouement pour les stimulants utérins aux demandes déraisonnables des femmes pour un travail expéditif – plus qu’à la convenance des praticiens bien qu’il condamne tout à fait ce motif – vanté dans les journaux et magazines par des « auteures hystériques ».. Encore une fois : la faute des femmes !<blockquote>On sait que dès le milieu des années 1950 dans un hôpital de New York desservant une clientèle aisée, l’ocytocine de synthèse était déjà utilisée chez 50 % des parturientes. Début des années 2000, on estimait (d’après observation directe) que plus de 80 % des femmes au Québec en recevaient à un moment où un autre de l’accouchement (Brabant, 2001, p. 301); quoique les taux « officiels » soient largement inférieurs (40,6 % pour l’année 2006-2007 [Chalmers ''& al.'', 2009]). Listening to Mothers II faisait état d’une stimulation hormonale du travail à hauteur de 57 % (Sakala et Corry, 2008). Cependant, il s’agit d’un sondage effectué auprès des femmes et on sait que l’administration de Pitocin ou de Syntocinon (de ses noms commerciaux) via l’intraveineuse déjà installée de routine aux parturientes (l’exception est très rare) n’est pas toujours explicitement signalée à celles-ci; elles n’ont donc pas toujours conscience d’en avoir reçu. Il est notoire que plusieurs établissements ont des taux de stimulation de l’ordre de 90 %. À titre d’exemple, dans le documentaire de Ricki Lake ''The Business of Being Born'' (2008), des images tournées dans un service d’obstétrique new-yorkais montrent que la quasi-totalité des dossiers de parturientes affiche la mention « Pit » (signifiant « sous Pitocin »), tel qu’on peut le voir sur le tableau de suivi des patientes en travail au poste des infirmières. Ainsi, dès l’administration d’ocytocine de synthèse par perfusion, « le travail n’est alors plus contrôlé en interne par le cerveau reptilien, mais en externe par les soignant3 », ironise l’auteure du blogue BOOB (« Bêtisier officiel de l’obstétrique »). Block, quant à elle, emploie l’image de la chaîne stéréo dont on augmente ou diminue le volume à loisir : médecins et infirmières ont le contrôle du bouton. L’usage de l’ocytocine est de toute façon rendu nécessaire par la péridurale, laquelle ralentit la fréquence ou diminue l’intensité des contractions; et réciproquement, l’ocytocine artificielle rendant les contractions plus fréquentes, longues et douloureuses, son administration va de pair avec une demande accrue de péridurale (Dès les débuts de l’application du premier protocole d’administration routinière d’ocytocine de synthèse (protocole O’Driscoll), la demande de péridurale augmenta rapidement à 12 % (étude citée dans Block, 2007, p. 20)). En outre, selon Katherine Rice Simpson, chercheuse en soins infirmiers agissant comme experte auprès des tribunaux, la mauvaise gestion du Pitocin serait la principale cause des poursuites en responsabilité professionnelle et des dommages-intérêts octroyés (Block, 2007, p. 14). Enfin – soulignons-le –, une importante étude de l’Institut national de la recherche médicale (INSERM) en France vient tout juste de confirmer les doutes de nombreux et nombreuses citoyens-nes et intervenants-es en périnatalité, identifiant l’administration d’ocytocine pendant le travail comme facteur indépendant de risque d’hémorragies postpartum graves, de façon proportionnelle à la dose administrée (Belghiti ''& al.'', 2011). À titre de complément d’information, on pourra lire ce dossier en ligne portant sur l’historique du questionnement et des travaux sur les causes des hémorragies de la délivrance : CIANE.net, « Dossier : Hémorragies du post-partum »<ref>en ligne : <http://ciane.net/Ciane/DossierHPP>.</ref>. Il faut savoir que cette étude de l’INSERM a été commandée pour répondre aux demandes répétées des groupes d’usagers-ères chapeautés par le CIANE qui la réclamait depuis 2004, : en clair, le risque d’hémorragie est presque doublé dès que les ocytociques sont administrés, et multiplié par 5,7 lorsqu’il est injecté à hautes doses (soit 10 % des accouchements). »</blockquote>Je n’ai pas vérifié encore cette partie. Il y a beaucoup de questions à traiter avec cette OT de synthèse – je n’ai pas eu le temps de bien les aborder Odent écrit par exemple (2013) [3] :<blockquote>« Il existe (..) des raisons théoriques pour tester l'hypothèse selon laquelle l'incidence croissante des difficultés d'allaitement et l'arrêt fréquent de l'allaitement plus tôt que souhaité sont liés à l'utilisation d'ocytocine synthétique pendant le travail. Il y a déjà eu quelques études qui tendent à soutenir cette hypothèse ».</blockquote> Mais Odent a la prudence de préciser que dans les panels d’enfants étudiés (à Malaga, Espagne) : <blockquote>« Les effets possibles de l'ocytocine de synthèse sur la qualité et la durée de l'allaitement ne peuvent être facilement dissociés des effets d'autres composants de l'assistance pharmacologique pendant le travail, notamment le fentanyl péridural ».</blockquote>Il recommande, à juste titre à mon avis, de mener de telles études dans les pays émergents (par exemple la Chine et le Brésil) où l'ocytocine synthétique est largement utilisée alors qu'il n'y a pas de services de péridurale. '''''Y a-t-il un lien causal entre OT de synthèse et dépression post-partum ?''''' '''''Y a-t-il un lien causal entre OT de synthèse et dépression post-partum ?''''' Cellui qui affirme ça le fait sans preuve (et cellui qui dit l’inverse aussi) : une récente étude de 2020 a tenté de creuser le sujet et a échoué par manque d’études. « Nous ne sommes pas en mesure de tirer des conclusions concernant la relation entre l'ocytocine synthétique intraveineuse et la dépression post-partum sur la base des preuves actuelles en raison de l'hétérogénéité et du petit nombre d'études »[4] Plus récent encore, le travail de Rashidi ''& al.'' (2022)[5] dont je tire ces passages<blockquote>« Pour l'induction et l'accélération du travail, l’OT de synthèse est généralement administrée de manière continue et progressive jusqu'à l'obtention des contractions souhaitées. La durée totale de la perfusion intraveineuse pourrait prendre environ de 20 min à 48 h. Les régimes OT varient d'un pays à l'autre, même d'un hôpital à l'autre. Un régime typique peut commencer à une dose de 2 mU/minute (milli unités internationales par minute) et la dose augmente toutes les 15 min par paliers de 4 mU/minute jusqu'à ce que les contractions souhaitées soient atteintes ou qu'une dose maximale prédéfinie soit atteinte. (…) L'utilisation d'ocytocine [synthétique] (10 unités internationales [UI], intramusculaire ou intraveineuse) est recommandée pour la prévention de l'hémorragie post-partum pour toutes les naissances (Organisation mondiale de la santé, 2020). Cette nouvelle recommandation de l'OMS signifie que bientôt presque toutes les femmes en travail dans le monde pourraient être exposées à l'une ou l'autre forme de synOT, y compris la carbétocine, un analogue de synOT thermostable et à longue durée d'action qui peut être utilisé lorsque le transport de stockage dans la chaîne du froid pour les analogues synOT sensibles à la chaleur tels que Syntocinon n'est pas réalisable (Widmer ''& al.'', 2018). La teneur totale en OT endogène stockée dans l'hypophyse postérieure chez l’humain est estimée à environ 14 UI (28 µg) (Heller et Zaimis, 1949). Bien que l'administration de synOT puisse réduire le taux d'hémorragie post-partum - malgré plusieurs effets secondaires possibles, notamment l'hypertension post-partum, la douleur et le retour à l'hôpital en raison d'un saignement (Begley ''& al.'', 2019) -, elle pourrait augmenter les niveaux plasmatiques d'OT à des niveaux supraphysiologiques. Les effets des augmentations spectaculaires des niveaux d'OT dans la périphérie sur le système nerveux central sont encore peu étudiés. Comme on le sait, les concentrations endogènes d'OT augmentent à la fois au niveau central et périphérique par le contact peau à peau immédiat et l'allaitement après la naissance. Cette augmentation exogène des niveaux d'OT dans la périphérie pourrait à son tour diminuer la durée de la troisième phase du travail (Karimi ''& al.'', 2019) et réduire le risque d'hémorragie post-partum. En gardant à l'esprit que des contractions utérines insuffisantes (atonie utérine) sont la cause la plus fréquente d'hémorragie post-partum, l'exposition prolongée et continue de l'utérus à la synOT pour l'induction et/ou l'augmentation du travail peut entraîner une atonie utérine (Oyelese et Ananth, 2010) via la désensibilisation des cellules sensibles à l'OT dans le myomètre (Phaneuf ''& al.'', 2000). »</blockquote>A la question de savoir si l’OT de synthèse entraîne des contractions plus violentes : Je dirais oui, puisque c’est justement l’objectif. Mais plus violentes que sans OT de synthèse, donc c’est relatif. Est-ce que ce sont ces pics accrus qui impliquent que les gens demandent la péridurale ? Là encore, dur à dire. Le problème Cité dans McKenzie et Montgommery 2021[6] : Une étude britannique (Farrar & al., 2010 ) a révélé que 93 % des ''obstétriciens'' et 73 % des sages-femmes employaient « toujours ou habituellement » une prise en charge active au troisième stade du travail. Cela soulève des questions sur la fréquence à laquelle les sages-femmes et les étudiants assistent à des troisièmes étapes physiologiques non perturbées. Cette étude a capturé la diversité des expériences des femmes en ce qui concerne l'accouchement de leur placenta. == L’adrénaline == L'adrénaline, également connue sous le nom d'épinéphrine, est une hormone et un médicament qui est impliqué dans la régulation des fonctions viscérales (par exemple, la respiration). Elle fait partie des catécholamines. L'adrénaline est normalement produite par les glandes surrénales et par un petit nombre de neurones du bulbe rachidien. Elle joue un rôle essentiel dans la réponse de combat ou de fuite en augmentant le flux sanguin vers les muscles, le débit cardiaque en agissant sur le nœud sinusal (dans l’atrium droit du coeur), en dilatant des pupilles et en augmentant le niveau de sucre dans le sang. Pour ce faire, il se lie aux récepteurs alpha et bêta. On le trouve chez de nombreux animaux, y compris les humains, et certains organismes unicellulaires. Il a également été isolé de la plante ''Scoparia dulcis'' trouvée dans le nord du Vietnam. Des extraits de la glande surrénale ont été obtenus pour la première fois par le physiologiste polonais Napoléon Cybulski en 1895. Ces extraits, qu'il appelait nadnerczyna (adrénaline &nbsp;»), contenaient de l'adrénaline et d'autres catécholamines<ref name="ftn215">Skalski JH, Kuch J (April 2006). "Polish thread in the history of circulatory physiology". Journal of Physiology and Pharmacology. 57 (Suppl 1): 5–41. {{PMID|16766800}}.</ref>. L'ophtalmologiste américain William H. Bates a découvert l'utilisation de l'adrénaline pour les chirurgies oculaires avant le 20 avril 1896<ref name="ftn216">Bates WH (16 May 1896). "The Use of Extract of Suprarenal Capsule in the Eye". New York Medical Journal: 647–650. Retrieved 7 March 2015. "Read before the Section in Ophthalmology of the New York Academy of Medicine, 20 April 1896".</ref>. C’est en 1901 que le chimiste japonais Jōkichi Takamine a produit un extrait purifié des glandes surrénales de moutons et de bœufs<ref name="ftn217">Takamine J (1901). The isolation of the active principle of the suprarenal gland. The Journal of Physiology. Great Britain: Cambridge University Press. pp. xxix–xxx.</ref>, parallèlement à Thomas Aldrich. Le brevet ont tous les deux obtenu le brevet, qui a été déposé par Parke, Davis & Co aux États-Unis. Le nom britannique approuvé et ''le terme de la pharmacopée européenne'' pour ce médicament est donc ''l'adrénaline''. Cependant, le pharmacologue John Jacob Abel avait déjà préparé un extrait de glandes surrénales dès 1897, en parallèle à Otto von Fürth (ils étaient tous taquet!) et il a inventé le nom ''d'épinéphrine'' pour le décrire (du grec ancien ἐπῐ́ (''epí''), sur, et νεφρός (''nephrós)'', rein ). Pensant à tort que l'extrait d'Abel était le même que celui de Takamine l'épinéphrine est devenue le nom générique aux États-Unis, tandis que les professionnels de santé et scientifiques européens utilisent préférentiellement le terme ''adrénaline.'' L'adrénaline a été synthétisée pour la première fois en laboratoire par Friedrich Stolz et Henry Drysdale Dakin, indépendamment, en 1904. En 1906, Dale (encore lui) émet l'hypothèse de deux types de récepteur cellulaire à l'adrénaline : la stimulation des uns a un effet «&nbsp;excitant&nbsp;» et inversement celle des autres un effet «&nbsp;relaxant&nbsp;». Il faut attendre 1948 pour qu’Alquist confirme l'hypothèse de Dale et nomme ces récepteurs α et β. '''''L’adrénaline bouche-t-elle les récepteurs à ocytocine et diminue l’efficacité des contractions ?''''' '''''L’adrénaline bouche-t-elle les récepteurs à ocytocine et diminue l’efficacité des contractions ?''''' De ce que je comprends, le récepteur à ocytocine, appelé OXTR fait partie de la superfamille des récepteurs couplés à une protéine Gq de classe I (ou A) (de type rhodopsine) est est classé A6. La fixation de l’ocytocine sur ces récepteurs amène l’activation de phospholipase C conduisant à une augmentation de la concentration intracellulaire de calcium. Les récepteurs adrénergiques donc de l’adrénaline sont aussi couplés aux protéines G. Mais il y a maints sous-types de récepteurs. L’adrénaline a une affinité égale pour les deux groupes de récepteurs α et β, qui ont 9 sous-types. Faute de temps et de compétence, je ne parviens pas à savoir si l’adrénaline peut venir «&nbsp;boucher&nbsp;» les récepteurs à ocytocine. Je présume que ce sont deux sollicitations qui n’ont pas besoin des mêmes récepteurs pour entrer en compétition. '''''Est-il exact que l’adrénaline est secrétée quand on a peur et qu’on est stressé·e&nbsp;?''''' Oui, par réponse surrénomédullaire. Faire de l’exercice aussi stimule la sécrétion d’adrénaline. Avoir froid, ou rencontrer des inconnus, de ce que je comprends, ne fait pas secréter en soi de l’adrénaline, mais déclenche une inquiétude qui elle, la provoque. '''''Secrète-t-on de l’adrénaline si quelqu’un·e d’autre dans la pièce secrète de l’adrénaline&nbsp;?''''' Je ne trouve pas de papier sur ça, mais il me semble bien plus plausible que, quelqu’un secrétant de l’adrénaline ayant des comportements assez typiques, nous y soyons non-consciemment sensibles, et donc recevions notre lot d’inquiétude, qui … ''etc''. St Amant résume ainsi (j’indique des&nbsp;? quand ça me parait fumeux ou douteux) :<blockquote>«&nbsp;On sait que (?) chez toutes les femelles mammifères, la stimulation de l’activité néocorticale (?) est antagoniste des fonctions réflexes dont fait partie l’accouchement (?) (le phénomène d’inhibition est encore plus important chez les grandes primates et chez l’humaine étant donné la grosseur et le développement de leur néocortex).&nbsp;»</blockquote>Ca ne commence pas très bien (''cf''. précédemment)<blockquote>«&nbsp;Ceux et celles qui assistent la femme en travail devraient donc s’assurer de préserver celle-ci des principaux stimuli de l’activité néocorticale qui sont : le langage, la lumière vive, la sensation d’être observée, le stress et la peur. Le seul fait d’être observée suscite la gêne, laquelle déclenche une réaction de type « fight or flight » et la production de catécholamines (?) ce qui empêche le relâchement et la dilatation du col utérin (un sphincter), un acquis de l’évolution qui permet de fuir un éventuel danger (Buckley, 2004a, 2004b; Odent, 2001b; Uvnäs Moberg, 2003). Comme le dit la sage-femme Ina May Gaskin : « ''Our sphincters are shy!'' » (Citation tirée du documentaire ''Orgasmic Birth'' (2009), réalisé par Debra Pascali-Bonaro)&nbsp;». (pp. 144-145).</blockquote>Quand la mère ou ceux qui l’assistent ont peur, décharge de catécholamines, dont la plus connue est l’adrénaline, qui contracte les muscles circulaires de l’utérus : douleur + circulation diminuée (Davis & Pascali-Bonaro, 2010, p. 26). Je ne reviens pas sur sur la question des sphincters qui n’en sont pas. Walter 2021 écrit&nbsp;:<blockquote>«&nbsp;Il a été démontré que le stress et la libération d'hormones qui en résulte, par exemple le cortisol, sont un facteur majeur affectant tous les aspects de l'accouchement, de la lactation et du développement du lien mère-enfant, mais le lien direct entre ces observations comportementales et leurs bases hormonales est majoritairement méconnu.&nbsp;»</blockquote> '''Quelques questions à traiter en suspens, posées par Sarah Duflon'''<blockquote>« Il y a une importante sécrétion d’adrénaline juste avant l’expulsion, quand le col est dilaté, qui correspond à la phase dite « de désespérance » ou la « putain de phase » au Québec, phase pendant laquelle les femmes ont souvent un comportement surprenant, de cris, de pleurs, disant qu’elles n’y arriveront pas, qu’elles vont mourir, etc… certaines mordent même la sage-femme ou tapent dans un mur. C’est le plus souvent à ce moment-là que les femmes ou les personnes qui les accompagnent vont demander une péridurale. Ce shoot d’adrénaline est un choc pour la femme et la sensation de peur due à l’adrénaline se traduit en une trop forte douleur, mais ce comportement est de bon présage, il indique l’arrivée soudaine du bébé. Ce shoot d’adrénaline est là pour (''note : rien n’est « pour » en biologie'') faciliter une expulsion rapide et donner l’énergie à la femme de pouvoir se lever et fuir avec son bébé si besoin ». </blockquote>Dans une étude, il a été montré qu’un taux plasmatique élevé d’épinéphrine était associé avec une diminution de l’activité utérine et un allongement de la durée du travail. De plus, la durée du travail serait corrélée à l’échelle d’anxiété utilisée dans cette étude de Lederman ''& al.'' "''Anxiety and epinephrine in multiparous women in labor: Relationship to duration of labor and fetal heart rate pattern"''<ref>Lederman RP, Lederman E, Work B Jr, McCann DS. Anxiety and epinephrine in multiparous women in labor: relationship to duration of labor and fetal heart rate pattern. Am J Obstet Gynecol. 1985 Dec 15;153(8):870-7. doi: 10.1016/0002-9378(85)90692-1. {{PMID|4073158}}.</ref>. L’utérus serait sensible aux agonistes bêta-adrénergiques comme l’épinéphrine. On retrouve également dans cette étude l’association entre taux plasmatique d’épinéphrine et activité utérine / durée du travail.<div style="color:#000000;">Voici un bloc que je lis qui me parait regorger de documentation, des mêmes auteurices : Lederman, R. P., Lederman, E., Work, B. A., & McCann, D. S. (1978)<ref>Lederman, R. P., Lederman, E., Work, B. A., & McCann, D. S. (1978).&nbsp;The relationship of maternal anxiety, plasma catecholamines, and plasma cortisol to progress in labor. American Journal of Obstetrics and Gynecology, 132(5), 495–500.&nbsp;doi:10.1016/0002-9378(78)90742-1.</ref>. Je n'ai même pas dépouillé les refs indiquées, par manque de temps.</div><blockquote>«&nbsp;Vannuccini ''& al.''<ref>https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B18</ref> ont postulé que l'ocytocine joue un rôle important mais non critique au début de l'accouchement. Néanmoins, il a été démontré que le nombre de récepteurs utérins à l'ocytocine augmente jusqu'à 200 fois vers la fin de la gestation ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B5 5,] [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B27 27] ), en raison de l'augmentation du rapport œstrogène/progestérone, qui neutralise l'inhibition de l'OXTR médiée par la progestérone. production dans le myomètre. La densité des récepteurs aux prostaglandines augmente parallèlement à la densité d'OXTR ainsi qu'à la synthèse d'enzymes responsables de la contraction du myomètre ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B28 28] ). Au début du travail, les œstrogènes synthétisés dans le placenta stimulent la synthèse locale d'ocytocine dans l'amnios, le chorion et la caduque ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B26 26] ), mise en évidence par la présence d'ARNm d'ocytocine ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B10 10] ). Cette synthèse locale est indépendante de la sécrétion endocrine dans l'hypothalamus, ce qui explique pourquoi l'ocytocine a été détectée localement dans les cellules mais pas dans les échantillons sanguins (29) [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B29 et] pourquoi aucune augmentation de la concentration plasmatique sanguine de l'ocytocine pendant la grossesse et le début de l'accouchement chez la femme a été signalé ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B30 30] ). Cette paracrine produite par l'ocytocine dans l'amnios agit ''via'' un mécanisme direct et indirect pour médier les contractions utérines. Indirectement, il stimule la synthèse des prostaglandines E 2 et F 2α, qui à leur tour déclenchent des contractions utérines, entraînant une augmentation de la densité d'OXTR et contribuant à la formation de jonctions lacunaires entre les cellules musculaires lisses de l'utérus (18 [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B18 )]. Directement, il active les canaux Ca 2+ dans les cellules musculaires lisses, entraînant une libération de Ca 2+ du réticulum sarcoplasmique qui initie le cycle de contraction musculaire ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B20 20] ). Avant le début des contractions utérines, un processus de type inflammation de l'amnios et du chorion, caractérisé par une augmentation des cytokines, des chimiokines, ainsi que des prostaglandines E 2 et F 2α, a été observé. Ces processus provoquent des modifications biochimiques des membranes fœtales et la maturation du col de l'utérus, déclenchant la parturition ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B31 31] ). L'activation inflammatoire est également causée par l'action directe de l'ocytocine sur la libération de cytokines ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B32 32] ). Au cours de la parturition humaine, la quantité mesurable d'ocytocine dans le plasma sanguin augmente&nbsp;: elle double pendant la phase latente de dilatation et augmente encore jusqu'au deuxième stade du travail ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B33 33] ). La sécrétion pulsatile d'ocytocine par la neurohypophyse augmente en amplitude et en fréquence pendant l'accouchement, atteignant un maximum de trois impulsions dans les dix minutes peu avant l'accouchement ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B34 34] ). Ces impulsions d'ocytocine sont déclenchées par des signaux dans le SNC et par la pression exercée par le fœtus sur les mécanorécepteurs du col de l'utérus et des parois vaginales ''via'' une boucle de rétroaction positive, appelée réflexe de Ferguson. D'après des recherches sur des rongeurs, nous savons que des signaux neuronaux intenses et apparaissant rythmiquement ont été enregistrés dans le PVN et le SON dans l'hypothalamus, qui reçoivent leur entrée des neurones sensoriels du col de l'utérus et du vagin (35 [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B35 )]. Cette activité rythmique dans l'hypothalamus conduit à la libération pulsatoire d'ocytocine dans le cerveau et dans la circulation sanguine ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/figure/f1/ Figure 1] ) ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B36 36,] [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B37 37] ). Lorsque la pression exercée sur le col de l'utérus par le fœtus atteint un maximum, c'est-à-dire pendant la phase d'expulsion fœtale et peu après la naissance, la concentration d'ocytocine augmente de 3 à 4 fois par rapport au début du travail ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B33 33,] [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B34 34] ). Chez le rat, il a été démontré qu'un circuit neuronal hypothalamique dépendant des opioïdes empêche un dépassement des niveaux d'ocytocine ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B38 38] ). Une étude de Goodfellow et al. ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8578887/#B39 39] ) ont constaté que chez les femmes recevant une analgésie péridurale, la concentration sanguine d'ocytocine est réduite, probablement parce que les anesthésiques et les opioïdes administrés empêchent la transmission des signaux neuronaux afférents. On discute actuellement du fait que c'est la raison pour laquelle plus l'analgésie péridurale est administrée longtemps, plus le taux d'accouchements non spontanés et l'utilisation d'ocytocine synthétique sont élevés&nbsp;».</blockquote>J'aurais aimé également compulser l'étude de 2016-17 de Garcia-Lausin ''& al.''<ref name="ftn218"><div style="margin-left:0.598cm;margin-right:0cm;">Garcia-Lausin L, Perez-Botella M, Duran X, Mamblona-Vicente MF, Gutierrez-Martin MJ, Gómez de Enterria-Cuesta E, Escuriet R. Relation between Length of Exposure to Epidural Analgesia during Labour and Birth Mode. Int J Environ Res Public Health. 2019 Aug 15;16(16):2928. doi: 10.3390/ijerph16162928. {{PMID|31443209}}; PMCID: PMC6720813.</div></ref>, de même que Walter ''& al.'' (2021)<ref>Walter MH, Abele H, Plappert CF. The Role of Oxytocin and the Effect of Stress During Childbirth: Neurobiological Basics and Implications for Mother and Child. Front Endocrinol (Lausanne). 2021 Oct 27;12:742236. doi: 10.3389/fendo.2021.742236. {{PMID|34777247}}; PMCID: PMC8578887.</ref>, où j'ai cru lire que l'intervention médicale pendant l'accouchement au moyen d'une césarienne d'urgence et/ou d'une analgésie péridurale a également un effet négatif sur l'initiation de l'allaitement après la naissance en réduisant les taux d'ocytocine et de prolactine. {{Références}} {{AutoCat}} elacvtbv8rh99lgtss1sm22htx31900 Theorie ouvertures echecs/1. d4/1...f5 0 82973 775573 775521 2026-10-23T01:00:34Z JackBot 14683 Formatage, [[Spécial:Pages non catégorisées]] 775573 wikitext text/x-wiki {{Diagramme d'échecs | tleft | '''Défense Hollandaise''' <!-- 8 -->|rd|nd|bd|qd|kd|bd|nd|rd<!-- 7 -->|pd|pd|pd|pd|pd|__|pd|pd<!-- 6 -->|__|__|__|__|__|__|__|__<!-- 5 -->|__|__|__|__|__|pd|__|__<!-- 4 -->|__|__|__|pl|xx|__|__|__<!-- 3 -->|__|__|__|__|__|__|__|__<!-- 2 -->|pl|pl|pl|__|pL|pl|pl|pl<!-- 1 -->|rl|nl|bl|ql|kl|bl|nl|rl<!-- a b c d e f g h -->| '''style: ''' ouverture semi-fermée : une défense '''agressive''' <br> '''ECO: ''' A80 - A99 <br> '''après: ''' 1. d4 f5 <br> '''le parent: ''' ouverture de la dame }} == 1...f5 - Défense Hollandaise == La défense hollandaise a un caractère qui lui est propre, contrairement aux autres ouvertures 1.d4, qui partagent souvent des thèmes similaires. Les Noirs jouent généralement de différentes manières pour : * Une configuration classique avec 2...e6 3...d6 4...Be7, * Un Stonewall avec 2...e6 3...d5 4...c6, ou * Le Leningrad avec 2...g6 3...Bg7 4...d6. Les blancs jouent généralement 2. g3 ou 2. c4 ici, bien que de nombreux coups soient possibles. Une option intéressante, mais souvent considérée comme douteuse, est le gambit Staunton avec 2. e4, qui conduit à des positions plus tactiques que les luttes positionnelles et les attaques directes que la défense hollandaise offre généralement. Comme les Noirs répondent à 1.d4 par f5, rompant ainsi la symétrie, la défense hollandaise est un exemple de jeu semi-fermé. Cela signifie qu'un joueur, mais pas les deux, a un pion fixe au centre, ce qui implique que le centre sera quelque peu (mais pas complètement) fermé. L'objectif principal du coup f5 est de prendre le contrôle de la case e4. L'idée derrière f5, généralement suivi de Nf6, est d'empêcher les blancs de jouer e4. Cependant, les blancs ont plusieurs options qui leur permettent de jouer e4 quand même. Une façon d'y parvenir est le gambit Staunton, où le coup est simplement joué immédiatement. La variante '''Bladel''' et la variante '''Raphaël''' sont des façons plus sophistiquées de jouer '''e4'''. Dans la plupart de ces lignes, les blancs jouent Nc3 suivi de e4. == Praticiens == Le Stonewall Hollandaise a connu un regain d'intérêt dans les années 1980 et 1990, lorsque les grands maîtres (GM) Artur Yusupov<ref>Montpellier Candidates (1985), chessgames.com</ref>, Sergey Dolmatov<ref>Hooper, David; Whyld, Kenneth (1984). The Oxford Companion to Chess. Oxford: Oxford University Press. {{ISBN|0-19-217540-8}}.</ref> , Nigel Short<ref>Short, Nigel (1993). Chess Basics. Sterling Publishing. {{ISBN|0-8069-0798-3}}.</ref> et Simen Agdestein<ref>Regionalt samarbeid versus apartheid : SADCC-landenes bestrebelser på å redusere transportavhengigheten til Sør-Afrika på 1980-tallet (1995) (Master thesis, University of Oslo)</ref><ref>GATT, u-landene og miljøet : rapport fra en konferanse i Oslo 20. og 21. oktober 1994 (1994)</ref> ont contribué à développer le système dans lequel les Noirs jouent plus tôt ...d5 et placent leur fou noir sur d6. <ref>Arne Danielsen, Bjarte Leer-Salvesen, Bjarke Sahl, Atle Grønn. Simen Agdestein (2008)</ref> Cette configuration, appelée Stonewall moderne, est restée plus populaire que la traditionnelle ...Be7 précoce. Magnus Carlsen<ref>Wonderboy : how Magnus Carlsen became the youngest chess grandmaster in the world : the story and the games (2004)</ref> a utilisé le Stonewall pour remporter des victoires contre Viswanathan Anand<ref>(en) Viswanathan Anand, John Nunn et Sean Marsh (contribution), Vishy Anand : world chess champion : life and games, Londres, Gambit, 2012, 544 p. ({{ISBN|978-1-906454-32-6}}, OCLC 745978937)</ref> et Fabiano Caruana<ref>Caruana: Move by Move – Cyrus Lakdawala {{ISBN|978-1-78194-479-0}}</ref>. Simon Williams est l'un des principaux praticiens du néerlandais classique et a écrit plusieurs ouvrages sur cette ouverture<ref>Palliser, Richard; Williams, Simon; Vigus, James (2010). Dangerous Weapons: The Dutch. Everyman Chess. {{ISBN|978-1-85744-624-1}}.</ref><ref>Williams, Simon (2013). Killer Dutch - The Book. GingerGM and EPlus Books. {{ISBN|978-1-927179-15-4}}.</ref>. == l'histoire de la Défense Hollandaise : == Version courte : Dans le Nouvel essai sur le jeu des échecs d'Elias Stein, publié en 1789, la Défense Hollandaise<ref>Dans le Nouvel essai sur le jeu des échecs d'Elias Stein, publié en 1789, la Défense Hollandaise </ref> est explicitement recommandée comme la meilleure réponse des Noirs à 1.d4. Il la présente comme le choix « pour le joueur qui ne veut pas accepter le Gambit de la Dame », et donne les coups initiaux 1.d4 f5 avec des notes expliquant l'idée et les suites typiques. Ce que Stein écrit réellement : Il introduit la ligne sous « Dix-huitième Partie. Celui qui n’a pas le Trait ne veut pas recevoir le Gambit de la Dame » et commence : <br> B. Le P. de la D. 2 pas (1.d4) — N. Le P. du F. du R. 2 pas (…f5) ; <br> B. Le P. du F. de la D. 2 pas (2.c4) — N. Le C. du R. à la 3e case de son F. (…Nf6) ; <br> B. Le C. de la D. à la 3e case de son F. (Nc3) — N. Le P. de la D. 1 pas (…d6) ; etc. <br> <br> Dans sa note (a), il énonce la recommandation centrale (en gras) : « … vous ne pouvez mieux faire que de pousser le pion du Fou du Roi de deux pas. » (c'est-à-dire jouer …f5). Dans la note (c), il explique un plan courant : placer la dame de manière à ce que les Noirs puissent avancer le pion du roi de deux cases ensuite (…e5), précisant que le placement de la dame ne doit pas gêner les pièces/pions. <br><br> Pourquoi cela compte : Parce que Stein écrivait à La Haye et promouvait …f5 contre 1.d4 comme réponse, son livre est largement cité comme l'origine historique du nom et du concept de la Défense Hollandaise. Si vous avez besoin de plus de détails ou d'autres traductions, n'hésitez pas à demander ! == ECO == L'Encyclopédie des ouvertures d'échecs<ref>L'Encyclopédie des Ouvertures d'Echecs (Encyclopaedia of Chess Openings, ECO) est une publication en cinq volumes de la maison d'édition serbe l'informateur d'échecs qui reprend les principales ouvertures connues dans le jeu. Elle utilise un code de classification des ouvertures, appelé code ECO, qui a été repris par d'autres publications et fait aujourd'hui figure de standard, Volume A - 2ème édition (1996)</ref> comporte vingt codes pour la défense hollandaise, de A80 à A99. Cela montre bien que la défense hollandaise est très théorique. * A80: 1.d4 f5 * A81: 1.d4 f5 2.g3 (Attaque en fianchetto) * A82: 1.d4 f5 2.e4 (Gambit Staunton) * A83: 1.d4 f5 2.e4 fxe4 3.Nc3 Nf6 4.Bg5 (Gambit Staunton) * A84: 1.d4 f5 2.c4 * A85: 1.d4 f5 2.c4 Nf6 3.Nc3 (Variation Rubinstein) * A86: 1.d4 f5 2.c4 Nf6 3.g3 (la Variation en fianchetto) * A87: 1.d4 f5 2.c4 Nf6 3.g3 g6 4.Bg2 Bg7 5.Nf3 (défense hollandaise de Leningrad) * A88: 1.d4 f5 2.c4 Nf6 3.g3 g6 4.Bg2 Bg7 5.Nf3 0-0 6.0-0 d6 7.Nc3 c6 (défense hollandaise, Variation de Varsovie) * A89: 1.d4 f5 2.c4 Nf6 3.g3 g6 4.Bg2 Bg7 5.Nf3 0-0 6.0-0 d6 7.Nc3 Nc6 (défense hollandaise de Leningrad, Matulovich) * A90: 1.d4 f5 2.c4 Nf6 3.g3 e6 4.Bg2 (Variation classique) * A91: 1.d4 f5 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 * A92: 1.d4 f5 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 0-0 * A93: 1.d4 f5 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 0-0 6.0-0 d5 7.b3 (Variation Botvinnik) * A94: 1.d4 f5 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 0-0 6.0-0 d5 7.b3 c6 8.Ba3 (Stonewall) * A95: 1.d4 f5 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 0-0 6.0-0 d5 7.Nc3 c6 (Stonewall) * A96: 1.d4 f5 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 0-0 6.0-0 d6 * A97: 1.d4 f5 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 0-0 6.0-0 d6 7.Nc3 Qe8 (Variation Ilyin–Genevsky) * A98: 1.d4 f5 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 0-0 6.0-0 d6 7.Nc3 Qe8 8.Qc2 (Variation Ilyin–Genevsky) * A99: 1.d4 f5 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 0-0 6.0-0 d6 7.Nc3 Qe8 8.b3 (Variation Ilyin–Genevsky) == Statistiques == ;Chances approximatives : Victoire des blancs 36 %, match nul 42,1 %, victoire des noirs 29,1 %.<ref>365chess.com</ref> == Tableau théorique == '''1. d4 f5''' {| class="wikitable" |- ! &nbsp; !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! Evaluation !! Notes |- ! la variante Stonewall | [[/2. c4|c4]] <br /> Nf6 | g3 <br /> e6 | Bg2 <br /> Be7 | Nf3 <br /> O-O | O-O <br /> d6 | Nc3 <br /> Qe8 | = | Le Stonewall lutte pour le contrôle central en prenant le contrôle des cases claires. Les Blancs cherchent à exploiter les faiblesses parmi les cases foncées. |- ! [[/2. c4/2...g6|Défense Leningrad]] | c4 <br /> Nf6 | g3 <br /> g6 | Bg2 <br /> Bg7 | Nf3 <br /> O-O | O-O <br /> d6 | Nc3 <br /> Qe8 | = | Un choix très dynamique de la part des Noirs pour lutter contre la poussée e5. Si les Blancs le permettent, une attaque des Noirs sur l'aile roi est possible. |- ! | [[/2. g3|g3]] <br /> Nf6 | Bg2 <br /> g6 | Nf3 <br /> Bg7 | O-O <br /> O-O | b3 <br /> d6 | Bb2 <br /> Ne4 | = | |- ! [[/2. Bg5|Attaque Hopton]] | [[/2. Bg5|Bg5]] <br /> g6 | Nc3 <br /> d5 | h4 <br /> Bg7 | e3 <br /> c6 | e4 <br /> O-O | Nf3 <br /> Be6 | +/= | Une attaque très agressive de la part des blancs. Mais les noirs pourront égaliser plus tard. |- ! [[/2. e4|Gambit Staunton]] | [[/2. e4|e4]] <br /> fxe4 | Nc3 <br /> Nf6 | Bg5 <br /> Nc6 | d5 <br /> Ne5 | Qd4 <br /> Nf7 | Bxf6 <br /> exf6 | +/= | C'est de loin le choix le plus populaire et le plus douteux pour les blancs. Les noirs devront connaître beaucoup de théorie pour égaliser. Mais avec un jeu correct, les noirs gagnent. |- ! La variation d'échange | [[/2. Nf3|Nf3]] <br /> Nf6 | Bg5 <br /> e6 | Nbd2 <br /> Be7 | Bxf6 <br /> Bxf6 | e4 <br /> d5 | exd5 <br /> exd5 | +/= | La variation d'échange conduit à des parties semi-ouvertes. Il existe des opportunités tactiques pour les deux camps. |- ! Gambit Krejcik | g4 <br /> fxg5 | h3 <br /> d5 | hxg4 <br /> Bxg4 | Bg2 <br /> Nf6 | Bg5 <br /> Qd7 | | +/= | Le gambit Krejcik conduit à des positions aiguës. La plupart du temps, les deux camps effectuent un roque long. |- ! Gambit Krejcik, Contre-Gambit Hevendehl | g4 <br /> e5 | | | | | | +/= | Une contre-manœuvre unique. Les blancs ont deux façons de l'accepter. |- ! Gambit Krejcik, Contre-Gambit Hevendehl, Ligne belge<ref>Club d'échecs Gambit Bonnevoie 42, rue Jean-François Gangler, L-1613 Luxembourg</ref> | g4 <br /> e5 | gxf5 <br /> ... | | | | | +/= | aiguë et tactique |- ! Gambit Krejcik, Contre-Gambit Hevendehl, Ligne hollandaise <ref>schaakopeningessenties.nl, Hevendehl gambiet</ref> | g4 <br /> e5 | dxf5 <br /> ... | | | | | +/= | aiguë et tactique |- ! [[/2. h3|Attaque Korchnoi]] | [[/2. h3|h3]] <br /> ... | | | | | | +/= | Conduit à un mélange entre lignes positionnelles et tactiques. |- ! [[/2. h3|Attaque Korchnoi, fermée]] | [[/2. h3|h3]] <br /> e5 | | | | | | +/= | Conduit à davantage de lignes positionnelles. |- ! [[/2. h3|Attaque Korchnoi, semi-fermée]] | [[/2. h3|h3]] <br /> e6 | | | | | | +/= | Conduit à des lignes plus tactiques. |- ! [[/2. c4/2...g6/3. Nc3/3...Nh6|Défense Bladel]] | c4 <br /> g6 | Nc3 <br /> [[/2. c4/2...g6/3. Nc3/3...Nh6|Nh6]] | | | | | +/= | Conduit à des positions riches qui sont également très théoriques. |- ! la Variation Raphaël | Nc3 | | | | | | +/= | aiguë et tactique |} {{Wikipedia|Défense hollandaise}} == Références == * Lichess.com * Chess.com [[fi:Shakkiaapinen/Peli/1. d4/1...f5]] [[en:Chess_Opening_Theory/1._d4/1...f5]] {{AutoCat}} sh3d9d5crf2y5db2zyhen2pxs1vqgjq Theorie ouvertures echecs/1. d4/1...f5/2. c4/2...g6/3. Nc3/3...Nh6 0 82974 775574 775522 2026-10-23T01:00:35Z JackBot 14683 Formatage, [[Spécial:Pages non catégorisées]] 775574 wikitext text/x-wiki =Bladel=__NOTOC__ {{Diagramme d'échecs | tright | '''Défense Bladel''' <!-- 8 -->|rd|nd|bd|qd|kd|bd|__|rd<!-- 7 -->|pd|pd|pd|pd|pd|__|__|pd<!-- 6 -->|__|__|__|__|__|__|pd|nd<!-- 5 -->|__|__|__|__|__|pd|__|__<!-- 4 -->|__|__|pl|pl|__|__|__|__<!-- 3 -->|__|__|nl|__|__|__|__|__<!-- 2 -->|pl|pl|__|__|pl|pl|pl|pl<!-- 1 -->|rl|__|bl|ql|kl|bl|nl|rl<!-- a b c d e f g h -->| '''style: ''' ouverture semi-fermée : une défense '''agressive''' <br> ''' ECO : ''' A84 <br> ''' après : ''' 1. d4 f5 2. c4 g6 3. Nc3 Nh6 }} == 2.c4 g6, 3.Nc3 Nh6 - Defénse Hollandaise, Defénse Bladel == Bienvenue à la défense Bladel. Le Bladel vient d'une province néerlandaise, le Brabant-Septentrional.<ref>Nieuwe burgemeester in Bladel. In: Rijksoverheid.nl. Ministerie van Algemene Zaken</ref> Il était pratiqué autrefois, mais est tombé en désuétude à l'époque moderne. Il comporte une quantité surprenante de théorie<ref>schachzeit.com/bn/openings/dutch-defense/bladel-variation</ref><ref>Dutch Defense Family Part I-III: Dutch Defense Bladel Modern Variations</ref><ref>chess.com, study, Theory Dutch Defense Bladel, Modern Variations</ref><ref>365chess.com, Dutch Defence Family, Theory Bladel Hyper Modern Variations</ref><ref>gameknot.com/annotation.pl: dutch-defense family, bladel modern variations</ref>. La question est : pourquoi les Noirs placent-ils leur cavalier sur le bord de l'échiquier ? <br> Le terme « partisan du Bladel néerlandais » désigne un joueur qui préconise ou utilise la variante Bladel aux échecs, une ligne spécifique dans l'ouverture de la défense hollandaise. Cette variante survient après les coups 1.d4 f5 2.c4 g6 3.Nc3 Nh6. La défense Bladel se caractérise par le développement précoce du cavalier noir en h6, ce qui est considéré comme une approche non conventionnelle et hypermoderne. La stratégie des Noirs consiste à laisser les Blancs établir initialement une solide structure de pions au centre, dans le but de contrôler le centre à distance à l'aide de pièces mineures. Cette approche vise à créer une position flexible, pouvant mener à un contre-jeu sur l'aile dame ou le long de la colonne f après le roque. La variante est considérée comme vive et tactique, impliquant une bataille d'idées entre les joueurs. Les Blancs répondent souvent par 4.e4, ce qui les engage dans un sacrifice de pion central en échange d'un développement rapide et de chances d'attaque, dans le but de mener une attaque décisive en milieu de partie. Si les Blancs jouent de cette manière, les Noirs peuvent riposter avec une configuration solide, impliquant souvent ...c6 et ...d5, dans le but d'égaliser et éventuellement de gagner un avantage en fin de partie grâce au pion central supplémentaire. La variante Bladel n'est pas un choix courant dans les échecs modernes, mais elle conserve une quantité surprenante de théorie et est considérée comme une ligne difficile à gérer pour les Blancs. Nf6 semble beaucoup plus naturel. Les Noirs enfreignent dès le début certaines règles fondamentales du développement : placer ses pions au centre, développer ses pièces sans les déplacer deux fois. Mais le fait est que les Blancs vont jouer h4 suivi de h5 ou e4 suivi de exf5. Dans les deux cas, les Noirs seront tôt ou tard obligés de déplacer leur cavalier une deuxième fois. Le noir a 5 idées derrière Nh6 : * La première idée est d'être flexible. En fonction de l'attaque du blanc, le noir peut placer le cavalier soit en f5, soit en g4. * La deuxième idée derrière Nh6 est de ne pas gêner le fou noir sur la longue diagonale. * La troisième idée est de ne pas bloquer la tour. Les Noirs anticipent le coup le plus courant des Blancs dans cette ligne, à savoir e4, forçant ainsi un échange, auquel cas les Noirs perdraient le contrôle de la case e4. L'intérêt de jouer la défense hollandaise est justement d'empêcher les Blancs de jouer e4 dès le début. Dans ce cas, les Noirs veulent créer la colonne f semi-ouverte pour la tour, après le roque bien sûr. * La quatrième idée, et la plus importante, derrière Nh6 est une approche hypermoderne. Les Noirs permettent aux Blancs d'avoir un centre fort au début, mais cherchent à contrôler le centre à distance avec les pièces mineures. * Si les blancs jouent e4, ils s'engagent à long terme pour la fin de partie. Les blancs abandonnent un pion central pour un pion latéral. Les blancs s'engagent alors à jouer de manière agressive et à faire échec et mat. Si les blancs ne parviennent pas à faire échec et mat au milieu de la partie, les noirs auront un avantage significatif en fin de partie grâce à leur pion central supplémentaire. Les Blancs ont le choix entre différentes lignes d'attaque. * les variantes ouvertes, qui mènent aux variantes modernes avec 4.e4 fxe4 5.Nxe4 Bg7 6.Ng3, * les variantes fermées avec 4.Nf3 ... 5.e3 ... 6.Bd7 ..., * les variantes classiques avec une poussée précoce du pion h qui peut mener à l'attaque de Pékin 4.h4 Bg7 5.h5 c5 6.d5 ... La Bladel est une variante tactique et incisive de la défense hollandaise pour les Noirs. Ce n'est pas seulement une bataille entre les Blancs et les Noirs, c'est aussi une bataille d'idées. Dans le cas des variantes modernes de la Bladel, les Blancs cherchent à faire échec et mat au milieu de la partie. Les Noirs veulent remporter la fin de partie grâce à un pion supplémentaire au centre. == Résponses blanches == {{Clr}} === les Variations fermées === {{Diagramme d'échecs | tleft | '''Défense Bladel, la variation fermée''' <!-- 8 -->|rd|nd|bd|qd|kd|__|__|rd<!-- 7 -->|pd|pd|pd|pd|pd|__|bd|pd<!-- 6 -->|__|__|__|__|__|__|pd|nd<!-- 5 -->|__|__|__|__|__|pd|__|__<!-- 4 -->|__|__|pl|pl|__|__|__|__<!-- 3 -->|__|__|nl|__|pl|nl|__|__<!-- 2 -->|pl|pl|__|__|bl|pl|pl|pl<!-- 1 -->|rl|__|bl|ql|kl|bl|__|rl<!-- a b c d e f g h -->| '''style: ''' ouverture semi-fermée : une défense '''agressive''' <br> ''' ECO : ''' A84 <br> ''' après : ''' 4.Nf3 c6 5.e3 d6 6.Be2 Bg7 }} Les variantes fermées<ref>Шахматы: энциклопедический словарь / гл. ред. А. Е. Карпов. — М.: Советская энциклопедия, 1990. — С. 516—517. — 621 с. — 100 000 экз. — {{ISBN|5-85270-005-3}}.</ref> constituent une approche plus positionnelle de la part des blancs, qui peut mener à des positions complexes mais tactiques lorsque les positions<ref>Атаров Е. «Цена успеха разною бывает…» (интервью с А. Юсуповым) // «64 — Шахматное обозрение». — 1995. — № 1—2. — С. 24—25.</ref><ref>Линдер И. М. Юсупов Артур Маякович // Шахматная энциклопедия / И. М. Линдер, В. И. Линдер. — М. : ООО «Издательство АСТ» : ООО «Издательство Астрель», 2004. — С. 314—315. — 320 с. — {{ISBN|5-17-006939-1}}. — {{ISBN|5-271-06492-1}}.</ref> s'ouvrent plus tard. Les blancs vont s'étendre du côté de la reine et conserver un avantage spatial. Les noirs peuvent soit décider de roquer long et lancer une attaque du côté du roi, soit, comme c'est généralement le cas, roquer court et essayer de se préparer à la poussée e5. Les blancs peuvent toutefois décider de pousser le pion h et de lancer une attaque plus tard. {{Clr}} === l'Attaque de Pékin === {{Diagramme d'échecs | tleft | '''Défense Bladel, l'Attaque de Pékin''' <!-- 8 -->|rd|nd|bd|qd|kd|__|__|rd<!-- 7 -->|pd|pd|__|__|pd|__|bd|pd<!-- 6 -->|__|__|__|pd|__|__|pd|nd<!-- 5 -->|__|__|pd|pl|__|pd|__|pL<!-- 4 -->|__|__|pl|__|__|__|__|__<!-- 3 -->|__|__|__|__|__|nl|__|__<!-- 2 -->|pl|pl|__|__|pl|pl|pl|__<!-- 1 -->|rl|nl|bl|ql|kl|bl|__|rl<!-- a b c d e f g h -->| '''style: ''' ouverture ouverte : une défense '''agressive''' <br> ''' ECO : ''' A84 <br> ''' après : ''' 4.h4 Bg7 5.h5 c5 6.d5 d6. 7.Nf3 }} L'attaque de Pékin<ref>"'The H Bomb' explodes". www.telegraph.co.uk. October 24, 2007. Archived from the original on January 12, 2022.</ref><ref>Jeff Pearlman (2001年12月17日). “Only 14, Hikaru Nakamura is the best young U.S. player - 12.17.01 - SI Vault”. Sportsillustrated.cnn.com. 2014年2月2日閲覧。</ref><ref>West, Debra (1998年4月11日). “Pawns With King-Size Dreams; Boy, 10, Is Youngest Master, Vaulting Past His Brother” (英語). The New York Times. ISSN 0362-4331 2020年6月30日閲覧。</ref> est une approche très agressive de la part des blancs. Cependant, les blancs ne pourront pas assurer la sécurité de leur roi à long terme. Avec un jeu correct, les noirs peuvent non seulement égaliser, mais aussi créer un contre-jeu sérieux sur l'aile dame. Mais si les noirs ne sont pas préparés, ils peuvent perdre la partie très rapidement. Cela s'est avéré peu judicieux pour les blancs. Elle n'est donc pas considérée comme la ligne principale. {{Clr}} === les Variations Modernes === {{Diagramme d'échecs | tleft | '''Défense Bladel, les Variations Modernes''' <!-- 8 -->|rd|nd|bd|qd|kd|__|__|rd<!-- 7 -->|pd|pd|pd|pd|pd|__|bd|pd<!-- 6 -->|__|__|__|__|__|__|pd|nd<!-- 5 -->|__|__|__|__|__|__|__|__<!-- 4 -->|__|__|pl|pl|nL|__|__|__<!-- 3 -->|__|__|__|__|__|nL|__|__<!-- 2 -->|pl|pl|__|__|__|pl|pl|pl<!-- 1 -->|rl|__|bl|ql|kl|bl|__|rl<!-- a b c d e f g h -->| '''style: ''' ouverture ouverte : une défense '''agressive''' <br> ''' ECO : ''' A84 <br> ''' après : '''4.e4 fxe4 5.Nxe4 Bg7 6.Nf3 <br> }} Les variantes modernes<ref>(en) Viswanathan Anand, John Nunn et Sean Marsh (contribution), Vishy Anand : world chess champion : life and games, Londres, Gambit, 2012, 544 p. ({{ISBN|978-1-906454-32-6}}, OCLC 745978937)</ref><ref>Bent Larsen i samarbejde med Bjarne Tønnies og Jørn Lorenzen, Vi spiller mere skak, {{ISBN|9788787800013}}</ref><ref>/gameknot.com/annotation.pl/dutch-defense-family-dutch-defense-bladel-modern-variations-isouard-defense-https-lichess-org-study-x3fnwasz-zocwedv8</ref><ref>Bent Larsen, Åbningsspillet i skak, {{ISBN|9788763840866}}</ref> constituent un moyen solide et agressif pour les blancs de contrer le Bladel. Elles engagent les blancs dans cette ligne. Les blancs ont sacrifié un pion central pour un pion latéral. Les blancs devront réaliser un mat au milieu de la partie. Les Noirs tenteront de tenir jusqu'à la fin de la partie. En fin de partie, les Noirs disposent d'un pion central supplémentaire, ce qui s'est avéré être un avantage en fin de partie. Dans l'immédiat, les Noirs riposteront au centre avec c6 suivi de d5 avec tempo. Le cavalier finira par se déplacer. Cependant, les Blancs ont ici un plan solide. Les Blancs échangeront le fou clair contre un cavalier afin de créer un avant-poste c5 pour le cavalier. Cela se produit dans la ligne principale<ref>Club d'échecs Gambit Bonnevoie 42, rue Jean-François Gangler, L-1613 Luxembourg</ref><ref>Harell, Ebden (11. januar 2010). "A Bold Opening for Chess Player Magnus Carlsen". Time. Arkiveret fra originalen 5. januar 2010. Hentet 31. januar 2012.</ref><ref>Mieczysław Najdorf, Wolsza T., Najdorf: Od Warszawy do Buenos Aires, Warszawa: Wydawnictwo Penelopa, 2010, {{ISBN|978-83-931264-0-8}}, OCLC 750907515.</ref><ref>chessmatenok.ru, Обучение, решение задач, разбор партий, игра с компьютером и живыми соперниками онлайн</ref> avec: <br> 6. ... c6 7.Bd3 d5 8.cxd5 cxd5 9.Bb5+ Nc6 10.Bxc6+ bxc6 11.Nc5 {{Diagramme d'échecs | tright | '''Défense Bladel, les Variations modernes ''' <!-- 8 -->|rd|__|bd|qd|kd|__|__|rd<!-- 7 -->|pd|oo|__|oo|pd|__|bd|pd<!-- 6 -->|oo|__|pd|__|oo|__|pd|nd<!-- 5 -->|__|__|nL|pd|__|__|__|__<!-- 4 -->|oo|__|__|pl|oo|__|__|__<!-- 3 -->|__|oo|__|oo|__|nl|__|__<!-- 2 -->|pl|pl|__|__|__|pl|pl|pl<!-- 1 -->|rl|__|bl|ql|kl|__|__|rl<!-- a b c d e f g h -->| '''style: ''' ouverture semi-ouverte : une défense '''agressive''' <br> ''' ECO : ''' A84 <br> ''' après : ''' 6. ... c6 7.Bd3 d5 8.cxd5 cxd5 9.Bb5+ Nc6 10.Bxc6+ bxc6 11.Nc5 }} Les Blancs obtiennent un soi-disant "cavalier-poulpe"<ref>"Magnus Carlsen took the honorary kick off for the Real Madrid-Valladolid match". Real Madrid. 30. november 2013.</ref><ref>chess.fandom.com/wiki/Octopus_Knight</ref><ref>Garry Kasparow, Безлимитный поединок. Москва : Физкультура и спорт, 1989. 190, [2] с., [24] л. ил. {{ISBN|5-278-00297-2}}. (2-е изд.: Москва : Интербук, 1990. 189, [3] с., [8] л. ил. {{ISBN|5-7664-0144-2}}.)</ref><ref>Garry Kasparow, Von der Zeit geprüft. Partien bis zur Weltmeisterschaft 1984/85. Rau, Düsseldorf 1986, {{ISBN|3-7919-0251-2}}.</ref><ref>Mikhail Tal, Ландау С. (лит. запись Аркадия Арканова). Элегия Михаила Таля. — М.: Наука, 1998. — 215 с. — {{ISBN|5-784-60012-5}}.</ref> sur le territoire des Noirs. Les Noirs n'ont aucun moyen efficace de l'éliminer. En conséquence, les Blancs ont atteint une domination complète au centre. Cette ligne s'est avérée être la plus contestée contre le Bladel. Si les Noirs ne sont pas prudents, ils peuvent perdre la partie très rapidement. Les Blancs créent des menaces tactiques ET positionnelles. La plupart des gens peuvent gérer une menace à la fois. Néanmoins, avec deux menaces, c'est une toute autre histoire. Cependant, les Noirs obtiennent un contre-jeu dans chaque ligne, comme l'ont prouvé le joueur néerlandais Max Euwe<ref>Oom Jan leert zijn neefje schaken, samen met Albert Loon, 1936. Digitale versie bij dbnl.</ref><ref>Max Euwe: Mengentheoretische Betrachtungen über das Schachspiel. Proc. Koninklijke Nederlandse Akademie van Wetenschappen, Band 32, 1929, S. 633–642 (online).</ref><ref>De bouwstenen van de schaakkunst, 1947. 3e herziene druk van De fundamenten van het schaakspel</ref>, le joueur danois Bent Larsen<ref>Løfberg, Jan (2014). Larsen. 1935-1965. (Bind I). Løfbergs Forlag. {{ISBN|9788792772039}}.</ref><ref>Jan Løfberg:"Larsens jubelår" i:Skakbladet nr. 3, 2017, s. 32</ref> et le joueur russe Mikhail Tal<ref>В Комитете по физкультуре и спорту // Советский спорт (газета). — 30 сентября 1954, № 117. — с. 2.</ref><ref> Указ Президиума Верховного Совета СССР от 16.09.1960 «О награждении орденами и медалями СССР спортсменов и тренеров» // Советский спорт (газета). — 17 сентября 1960, № 225. — с. 1-3.</ref><ref>Глигорич, Светозар. турнир претендентов на матч с чемпионом мира. — Белград : Шахматный союз Югославии, 1960.</ref>, ainsi que plus récemment Hikaru Nakamura<ref>Tim Pommerenke, Florian Pütz: Schach-Boom auf Twitch: Wie ein 1500 Jahre alter Sport zum Streaming-Hit wurde. In: Der Spiegel. 10. Juli 2020, ISSN 2195-1349 (spiegel.de [abgerufen am 8. Mai 2024]).</ref><ref>Brookwell, Ilya. "Chess is taking over the online video game world — and both are changing from this unlikely pairing". Salon.com. Archived from the original on December 2, 2024. Retrieved December 1, 2024.</ref>, Jan-Krzysztof Duda<ref>"Finał Mistrzostw Polski Juniorów do 12 lat, Puchar Polski do lat 10" [The Final of the Polish Junior Championships U12, the Polish Cup U10]. ozszach.pl (in Polish). Opolski Związek Szachowy. 11 March 2007. Archived from the original on 22 November 2022. Retrieved 13 August 2021.</ref><ref>"Poznajemy bliżej brązowych medalistów Drużynowych Mistrzostw Świata - cz. VI - Jan Krzysztof Duda" [We get to know the bronze medalists of the World Team Championship - part VI - Jan Krzysztof Duda]. Psychologia i Szachy (in Polish). 12 August 2017.</ref><ref>"Speed Chess Championship 2018 - Oficjalne informacje" [Speed Chess Championship 2018 - Official information]. Chess.com (in Polish). Retrieved 1 December 2018.</ref>, Nodirbek Abdusattorov<ref>Doggers (PeterDoggers), Peter (14 June 2024). "Yakubboev Wins UzChess Cup On Tiebreaks Ahead Of Abdusattorov". Chess.com. Retrieved 30 June 2024.</ref><ref>"OP 100 PLAYERS APRIL 2024". fide.com. Retrieved 1 April 2024.</ref>, Alireza Firouzja<ref>«علیرضا فیروزجا نایب قهرمان شطرنج سریع جهان شد». بی‌بی‌سی</ref><ref>«حذف پرچم ایران از مقابل نام علیرضا فیروزجا در فدراسیون جهانی</ref><ref>François-Xavier Rivaud, « Réfugié à Chartres, Alireza Firouza, le prodige des échecs, joue pour la France aux Championnats du monde [archive] », Le Parisien, 17 juillet 2021 (consulté le 3 juillet 2022).</ref>, Ding Liren (Chinese: 丁立人; born 24 October 1992)<ref>Doggers, Peter. BREAKING: Carlsen Not To Defend World Title. Chess.com. 2022-07-20 [2022-07-20]. (原始内容存档于2022-08-07) (美国英语).</ref><ref> 外媒:中国棋手丁立人赢得2023年国际棋联国际象棋世界冠军赛冠军. 参考消息. 2023-04-30 [2023-04-30]. (原始内容存档于2023-06-05).</ref>, y compris, mais non des moindres, Sven Magnus Øen Carlsen<ref>Norsk sjakkblad nr. 1, 2005 s. 4–11</ref><ref> arkivkopi, arkivert frå originalen 16. oktober 2011, henta 8. september 2008</ref><ref> Magnus Carlsen–Michael Adams, Sjakk-OL Dresden 2008 1–0</ref>. {{Clr}} == l'Histoire de Bladel == La Défense Bladel est en réalité plus ancienne que les échecs modernes tels que nous les connaissons aujourd'hui. L'origine des échecs remonte au 6e siècle en Inde. À cette époque, le jeu s'appelait '''Chaturanga'''<ref>by Tagore, Rabindra Nath, chessvariants.org/historic.dir/chaturanga.html</ref><ref>Chaturanga: archive.org/details/in.ernet.dli 600 AD</ref><ref>book, Micro review: 'Chaturanga' by Anand Neelakantan is the secon ..Read more at: timesofindia.indiatimes.com/articleshow/77745607.cms?utm_source=contentofinterest&utm_medium=text&utm_campaign=cppst</ref>. Il comportait des pièces similaires à celles d'un échiquier moderne, mais les règles étaient complètement différentes. Plus tard, au 13e siècle, il est devenu le '''Shantranj'''<ref>Shatranj (Arabic: شطرنج, pronounced [ʃaˈtˤrandʒ]; from Middle Persian chatrang) is an old form of chess, as played in the Sasanian Empire. Its origins lie in the Indian game of chaturanga.[1] Modern chess gradually developed from this game, as it was introduced to Europe by contacts in Muslim Al-Andalus (modern Spain) and in Sicily in the 10th century. In modern Persian, the term is also used as the translation of chess.[2]</ref><ref>Parlett, David (1999). "Shatranj (Islamic Chess)". The Oxford History of Board Games. Oxford University Press Inc. pp. 296–99. {{ISBN|0-19-212998-8}}.</ref><ref>Reference : Sahih Muslim 1300, In-book reference : Book 15, Hadith 347 USC-MSA web (English) reference : Book 7, Hadith 2982 (deprecated numbering scheme)</ref>. Alors que le Shatranj se répandait à travers le monde islamique et en Europe via des routes commerciales comme la Route de la Soie, il a subi des transformations significatives. Au 13e siècle, le pion a acquis la capacité de se déplacer de deux cases lors de son premier coup, bien que cette règle ait mis des siècles à être universellement acceptée. Les changements les plus pivotants ont eu lieu après 1300, lorsque la faible pièce du conseiller a été réimaginée en une puissante reine, capable de se déplacer de n'importe quel nombre de cases verticalement, horizontalement ou en diagonale. Cela, ainsi que l'augmentation de la portée du fou, a considérablement augmenté le rythme et la complexité du jeu. Cependant, le roi et la reine avaient été placés à des côtés opposés. Le roi noir (et non la reine) était positionné sur d8. Inversement, la reine (au lieu du roi) était positionnée sur e8. Par conséquent, jouer f5 en tant que noir n'était pas aussi risqué qu'aujourd'hui, car cela n'exposait pas du tout votre roi. À cette époque, le Bladel était déjà né, car cette position était beaucoup plus sûre. Le dernier changement a été apporté en 1475, lorsque le roi et la reine ont été échangés pour refléter le côté blanc. Cela a rendu la défense Bladel beaucoup plus risquée à jouer car elle exposait encore plus le roi (après h5). Ce n'est que beaucoup plus tard, dans les années 1800, que le Bladel a fait son retour dans les échecs. Ces réformes, probablement originaires d'Espagne, ont marqué la naissance des échecs modernes, rendant le échec et mat beaucoup plus courant et dynamique. Des règles supplémentaires telles que le roque et la prise en passant, connues depuis le 15e siècle, ont été largement adoptées au 18e siècle, standardisant encore davantage le jeu. Les variations régionales ont progressivement cédé la place à un ensemble unifié de règles, aboutissant à la création de compétitions internationales et d'organisations comme la FIDE au 20e siècle. Ainsi, les échecs ont évolué d'un jeu de guerre symbolique dans l'Inde ancienne au sport mondialement standardisé et hautement compétitif joué aujourd'hui. == Tableau théorique == '''1.d4 f5 2.c4 g6 3.Nc3 Nh6''' <table border="0" cellspacing="0" cellpadding="4"> <tr> <th></th> <th align="left">4</th> <th align="left">5</th> <th align="left">6</th> <th align="left">7</th> <th align="left">8</th> <th align="left">9</th> <th align="left">10</th> <th align="left">11</th> <th align="left">12</th> </tr> <tr> <th align="right">Bladel les variations fermées</th> <td>Nf3<br>c6</td> <td>e3<br>d6</td> <td>Be2<br>Bg7</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right">Bladel les variations classiques</th> <td>h4<br>Nf7</td> <td>Nf3<br>Bg7</td> <td>e4<br>fxe4</td> <td>Nxe4<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>h4<br>Bg7</td> <td>e4<br>fxe4</td> <td>Nxe4<br>c6</td> <td>Nf3<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right">l'Attaque de Pékin</th> <td>h4<br>Bg7</td> <td>h5<br>c5</td> <td>d5<br>d6</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>=/+</td> </tr> <tr> <th align="right">Bladel les variations ouvertes</th> <td>[[/4. e4|e4]]<br>fxe4</td> <td>Nxe4<br>Be7</td> <td>[[/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>[[/4. e4|e4]]<br>fxe4</td> <td>Nxe4<br>Be7</td> <td>[[/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>c5<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>[[/4. e4|e4]]<br>fxe4</td> <td>Nxe4<br>Be7</td> <td>[[/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>d5<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>[[/4. e4|e4]]<br>fxe4</td> <td>Nxe4<br>Be7</td> <td>[[/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>[[/4. e4|e4]]<br>fxe4</td> <td>Nxe4<br>Be7</td> <td>[[/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>Ng5<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>[[/4. e4|e4]]<br>fxe4</td> <td>Nxe4<br>Be7</td> <td>[[/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>Bxh6<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>[[/4. e4|e4]]<br>fxe4</td> <td>Nxe4<br>Be7</td> <td>[[/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bxh6<br>Bxh6</td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>[[/4. e4|e4]]<br>fxe4</td> <td>Nxe4<br>Be7</td> <td>[[/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Nc3<br>...</td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>[[/4. e4|e4]]<br>fxe4</td> <td>Nxe4<br>Be7</td> <td>[[/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Bxh6<br>Bxh6</td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>[[/4. e4|e4]]<br>fxe4</td> <td>Nxe4<br>Be7</td> <td>[[/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Nd2<br>...</td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>[[/4. e4|e4]]<br>fxe4</td> <td>Nxe4<br>Be7</td> <td>[[/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Nc3<br>...</td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right">Bladel les principales lignes</th> <td>[[/4. e4|e4]]<br>fxe4</td> <td>Nxe4<br>Be7</td> <td>[[/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Bxc6+<br>bxc6</td> <td>Nc5<br>...</td> <td>+/-</td> </tr> </table> {{Wikipedia|Défense hollandaise}} == Références == {{Références}} * Lichess Studies, Dutch Defence, Bladel Family * Chess.com, Library: Bladel Modern Variations * Gameknot.com, annotated games: Dutch Defence, Beijing Attack [[en:Chess_Opening_Theory/1._d4/1...f5/2._c4/2...g6/3._Nc3/3...Nh6]] {{AutoCat}} pgryd7fqwn8z0wpp4qz0p1hp5blzoo9 Theorie ouvertures echecs/1. d4/1...f5/2. c4/2...g6/3. Nc3/3...Nh6/4. e4 0 82980 775575 775523 2026-10-23T01:00:36Z JackBot 14683 Formatage, [[Spécial:Pages non catégorisées]] 775575 wikitext text/x-wiki =la Variation Bladel Ouverte=__NOTOC__ {{Diagramme d'échecs | tright | '''Bladel Ouverte ''' <!-- 8 -->|rd|nd|bd|qd|kd|bd|__|rd<!-- 7 -->|pd|pd|pd|pd|pd|__|__|pd<!-- 6 -->|__|__|__|__|__|__|pd|nd<!-- 5 -->|__|__|__|__|__|pd|__|__<!-- 4 -->|__|__|pl|pl|pL|__|__|__<!-- 3 -->|__|__|nl|__|__|__|__|__<!-- 2 -->|pl|pl|__|__|__|pl|pl|pl<!-- 1 -->|rl|__|bl|ql|kl|bl|nl|rl<!-- a b c d e f g h -->| '''Style : ''' ouverture semi-fermée, défense agressive <br> '''ECO : ''' A84 <br> '''Après : ''' 1. d4 f5 2. c4 g6 3. Nc3 Nh6 4. e4 }} == 2. c4 g6, 3. Nc3 (Cc3) Nh6 (Ch6), 4. e4 - Défense hollandaise, Variante Bladel Ouverte == Ce guide suit la notation anglaise FEN. Cela permet de le rendre plus facilement transférable vers des plateformes en ligne telles que chess.com ou lichess.org. Le coup **e4** change entièrement le caractère de cette ouverture. Il transforme une partie semi-fermée en une partie ouverte. L’objectif principal de la Défense hollandaise est de prendre le contrôle de la case '''e4'''<ref>Dans le Nouvel essai sur le jeu des échecs d'Elias Stein, publié en 1789, la Défense Hollandaise</ref><ref>Lyudmil Tsvetkov, *The Best Move: Morphy (Chess Legends, Band 2)*, {{ISBN|979-8624883031}}</ref><ref>Boris Verlinsky aka Панов, Василий Николаевич, Панов В. Н. *Малоизвестный вариант защиты Каро — Канн*. — 64: Шахматы и шашки в рабочем клубе. — 1930. — № 19. — С. 291—293.</ref><ref>Gioachino Greco, *Trattato sopra la nobilta del Gioco di Scacchi* (1625)</ref>. L’idée est d’empêcher les Blancs de jouer e4. Typiquement, les Noirs vont suivre avec **Cf6**<ref>Edge, Frederick Milne (1859). *Paul Morphy, the Chess Champion. An Account of His Career in America and Europe*. D. Appleton and Company.</ref><ref>The first Russian book on chess was a translation of Benjamin Franklin’s *Morals of Chess*, published in St. Petersburg in 1791. The Russian title, *Pravila dlia Shashechnoi Igry*, translates to "Rules for Draughts," reflecting that chess was often referred to as draughts in Russia during the late 18th and early 19th centuries</ref><ref>Shakhmatnoy Igrye (*On the Game of Chess*), Ivan Butrimov, 1821</ref> pour renforcer encore ce contrôle sur la case e4. Mais maintenant, les Blancs jouent **e4** malgré tout. Le pion e dispose désormais du soutien du cavalier en c3. Les Noirs ont plusieurs réponses possibles : * Pour les variantes ouvertes, sans entrer dans les lignes modernes avec **4... d6 5. Nf3 (Cf3) Bg7 (Fg7) 6. exf5 Bxf5 (Fxf5)**<ref>Bibliotheca Van der Linde – Niemeijeriana, The Hague 1955</ref><ref>Catalogue of Chess Literature 1791 – 1992, St. Petersburg 1993</ref><ref>Eales R. *Chess: The History of a Game*, London 1985</ref><ref>Forbes D. *The History of Chess*, London 1860</ref><ref>Kotov A. & Yudovich M. *The Soviet School of Chess*, Moscow 1958</ref>, * Ou **4... d6 5. Nf3 (Cf3) Bg7 (Fg7) 6. exf5 Nxg5 (Cxg5)**<ref>Schmid A. *Literature des Schachspiels*, Wien 1847</ref>, * Ou encore **4... d6 5. Nf3 (Cf3) Bg7 (Fg7) 6. exf5 gxf5**<ref>Twiss R. *Chess, Volume I*, London 1787</ref><ref>Wade R.G. *Soviet Chess*, London 1968</ref>, * Pour entrer dans les variantes modernes : **4... fxe4 5. Nxe4 (Cxe4) Bg7 (Fg7) 6. Nf3 (Cf3) c6 7. Bd3 (Fd3) d5**<ref>Gaige J. *Chess Personalia*, Jefferson 1987</ref><ref>Kotov A. & Yudovich M. *The Soviet Chess School*, Moscow 1983</ref><ref>Levy D. & O’Connell K. *Oxford Encyclopedia of Chess Games*, 1981</ref><ref>Linde A. *Van der Geschichte und Literature des Schachspiels*, Olms 1981</ref>. Les Noirs ne doivent pas jouer **d5** immédiatement<ref>Gligorić, Svetozar (1970). *Selected Chess Masterpieces*. Pitman. {{ISBN|978-0-273-40414-9}}.</ref><ref>Eales R. *Chess: The History of a Game*, London 1985</ref>. Le coup **d5** serait contré par **exd4**, ce qui leur ferait perdre le contrôle du centre. En conséquence, leur roque côté roi pourrait s’effondrer. Il est donc préférable de jouer la variante Bladel, en particulier les variantes ouvertes, de manière hypermoderne. Au lieu de pousser aveuglément vers le centre, les Noirs cherchent à contrôler le centre de l’extérieur avec leurs pièces légères<ref>Alekhine, Alexander (1921). *Das Schachleben in Sowiet-Russland* (in German). Kagan.</ref><ref>Alekhine, Alexander (1939). *My Best Games of Chess 1924–1937*. Harcourt (1939 ed.); David McKay (2000 ed.). {{ISBN|978-0679140245}}. (2000 ed.)</ref><ref>Alekhine, Alexander (1924). *Mis mejores partidas 1908–1923* (in Spanish). Afrodisio Aguado (1924 ed.); David McKay (1972 ed.)</ref>. Le fou doit se rendre sur la case **g7** dès que possible pour exercer une influence sur le centre. Si les Noirs veulent jouer **d5**, ils doivent d’abord préparer ce coup avec **c6**. == Tableau théorique == '''1. d4 f5 2.c4 g6 3.Nc3 Nh6 4.e4''' <table border="0" cellspacing="0" cellpadding="4"> <tr> <th></th> <th align="left">4</th> <th align="left">5</th> <th align="left">6</th> <th align="left">7</th> <th align="left">8</th> <th align="left">9</th> <th align="left">10</th> <th align="left">11</th> <th align="left">12</th> </tr> <tr> <th align="right">Bladel, les variations ouvertes </th> <td>..<br>d6</td> <td>Nf3<br>Bg7</td> <td>exf5<br>Bxf5</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>d6</td> <td>Nf3<br>Bg7</td> <td>exf5<br>Nxf5</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>d6</td> <td>Nf3<br>Bg7</td> <td>exf5<br>gxf5</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right">Bladel, les variations modernes </th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>c5<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>d5<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>Ng5<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>Bxh6<br>...</td> <td><br></td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bxh6<br>Bxh6</td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Nc3<br>...</td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Bxh6<br>Bxh6</td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Bxh6<br>Bxh6</td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Nd2<br>...</td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Nc3<br>...</td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right">Bladel, la ligne principale</th> <td>..<br>fxe4</td> <td>Nxe4<br>Bg7</td> <td>[[/4...fxe4/5. Nxe4/5...Bg7/6. Nf3|Nf3]]<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Bxc6+<br>bxc6</td> <td>Nc5<br>...</td> <td>+/-</td> </tr> </table> {{Wikipedia|Défense hollandaise}} == Références == {{Références}} * Lichess Studies, Dutch Defence, Bladel Family * Chess.com, Library: Bladel Modern Variations * Gamenot.com, annotated games: Dutch Defence Bladel Open [[en:Chess_Opening_Theory/1._d4/1...f5/2._c4/2...g6/3._Nc3/3...Nh6/4._e4]] [[fi:Shakkiaapinen/Peli/1. d4/1...f5/2. h3]] {{AutoCat}} gi84f1oj21y04cfzh5d0n7ofahz4yru Theorie ouvertures echecs/1. d4/1...f5/2. c4/2...g6/3. Nc3/3...Nh6/4. e4/4...fxe4/5. Nxe4/5...Bg7/6. Nf3 0 82981 775576 775524 2026-10-23T01:00:37Z JackBot 14683 Formatage, [[Spécial:Pages non catégorisées]] 775576 wikitext text/x-wiki =Bladel, les Variations Modernes=__NOTOC__ {{Diagramme d'échecs | tright | '''la Bladel moderne''' <!-- 8 -->|rd|nd|bd|qd|kd|__|__|rd<!-- 7 -->|pd|pd|pd|pd|pd|__|bd|pd<!-- 6 -->|__|__|__|__|__|__|pd|nd<!-- 5 -->|__|__|__|__|__|__|__|__<!-- 4 -->|__|__|pl|pl|nL|__|__|__<!-- 3 -->|__|__|__|__|__|nL|__|__<!-- 2 -->|pl|pl|__|__|__|pl|pl|pl<!-- 1 -->|rl|__|bl|ql|kl|bl|__|rl<!-- a b c d e f g h -->| '''style: ''' ouverture semi-fermée : une défense '''agressive''' <br> ''' ECO : ''' A84 <br> ''' après : ''' 1. d4 f5, 2. c4 g6 3. Nc3 Nh6 4.e4 fxe4 5.Nxe4 Bg7 6.Nf3 }} == 2.c4 g6, 3.Nc3 Nh6, 4.e4 fxe4, 5.Nxe4 Bg7, 6.Nf3 - Dutch Defence, Bladel Modern Variations == Le coup Nf3 au 6ᵉ coup entre dans '''les variantes modernes de la Bladel'''<ref>Gaige J. Chess Personalia, Jefferson 1987</ref><ref>Kotov A. & Yudovich M. The Soviet Chess School, Moscow 1983</ref><ref>Levy D. & O’Connell K. Oxford Encyclopedia of Chess Games, 1981</ref><ref>Linde A. Van der Geschichte und Literature des Schachspiels, Olms 1981</ref><ref>Gligorić, Svetozar (1970). Selected Chess Masterpieces. Pitman. {{ISBN|978-0-273-40414-9}}.</ref><ref>Alekhine, Alexander (1921). Das Schachleben in Sowiet-Russland (in German). Kagan.</ref>. Les Blancs essaient de gagner autant d’espace au centre que possible. Jusqu’à présent, les Noirs ont retardé l’avancée d’un pion au centre et contrôlent plutôt le centre de manière hypermoderne, avec leurs pièces légères depuis l’extérieur. Habituellement, les Noirs attaquent le centre avec ... c6 suivi de d5. <br> Superficiellement, la disposition des cavaliers blancs rappelle un peu une '''Sicilienne ouverte'''. Dans la Sicilienne, les deux cavaliers sont orientés vers l’aile-dame. Dans la variante '''moderne de la Bladel''', les deux cavaliers blancs sont tournés vers l’aile-roi. De plus, les Blancs ont un pion supplémentaire au centre. <br> Les Blancs ont fait une concession : ils ont échangé un pion central contre un pion latéral. En conséquence, ils devront mater au milieu de jeu. Les Noirs, eux, possèdent un pion central supplémentaire, ce qui constitue un avantage significatif en finale. Si les Noirs survivent à l’attaque, ils joueront pour gagner en finale. Là encore, cela ressemble beaucoup aux Siciliennes ouvertes. == Tableau théorique == '''1. d4 f5 2.c4 c6 3.Nc3 Nh6 4.e4 fxe4 5.Nxe4 Bg7 6.Nf3''' <table border="0" cellspacing="0" cellpadding="4"> <tr> <th></th> <th align="left">6</th> <th align="left">7</th> <th align="left">8</th> <th align="left">9</th> <th align="left">10</th> <th align="left">11</th> <th align="left">12</th> <th align="left">13</th> <th align="left">14</th> </tr> <tr> <th align="right">Bladel, les lignes secondaires</th> <td>..<br>O-O</td> <td>Beg5<br>d5</td> <td>cxd5<br>Qxd5</td> <td>b3<br>Kh8</td> <td>Bxc4<br>Qd6</td> <td>O-O<br>...</td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>d6</td> <td>h4<br>Na6</td> <td>c5<br>dxc5</td> <td>Bxh6<br>Bxh6</td> <td>Bxa6<br>bxa6</td> <td>Qb3<br>...</td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>Nf7</td> <td>h4<br>d5</td> <td>cxd5<br>Qxd5</td> <td>Nc3<br>Qa5</td> <td>Bd2<br>Nc6</td> <td>Bc4<br>...</td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right">Bladel, les lignes principales</th> <td>..<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Bxc6+<br>bxc6</td> <td>[[/6...c6/7. Bd3/7...d5/8. cxd5/8...cxd5/9. Bb5/9...Nc6/10. Bxc6/10...bxc6/11._Nc5|Nc5]]<br>...</td> <td><br></td> <td><br></td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Bxc6+<br>bxc6</td> <td>[[/6...c6/7. Bd3/7...d5/8. cxd5/8...cxd5/9. Bb5/9...Nc6/10. Bxc6/10...bxc6/11._Nc5|Nc5]]<br>O-O</td> <td>Bxh6<br>Bxh6</td> <td>Qb3<br>Qb5+</td> <td>=</td> </tr> <tr> <th align="right"></th> <td>..<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Bxc6+<br>bxc6</td> <td>[[/6...c6/7. Bd3/7...d5/8. cxd5/8...cxd5/9. Bb5/9...Nc6/10. Bxc6/10...bxc6/11._Nc5|Nc5]]<br>O-O</td> <td>O-O<br>Bg4</td> <td>Re1<br>Qc8</td> <td>=</td> </tr> <tr> <th align="right"></th> <td>..<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Bxc6+<br>bxc6</td> <td>[[/6...c6/7. Bd3/7...d5/8. cxd5/8...cxd5/9. Bb5/9...Nc6/10. Bxc6/10...bxc6/11._Nc5|Nc5]]<br>O-O</td> <td>Qc2<br>Bh3</td> <td>Rg1<br>Bf5</td> <td>+/=</td> </tr> <tr> <th align="right"></th> <td>..<br>c6</td> <td>Bd3<br>d5</td> <td>cxd5<br>cxd5</td> <td>Bb5+<br>Nc6</td> <td>Bxc6+<br>bxc6</td> <td>[[/6...c6/7. Bd3/7...d5/8. cxd5/8...cxd5/9. Bb5/9...Nc6/10. Bxc6/10...bxc6/11._Nc5|Nc5]]<br>O-O</td> <td>O-O<br>Rb8</td> <td>Re1<br>Bg4</td> <td>+/=</td> </tr> </table> {{Wikipedia|Défénse hollandaise}} == Références == {{Références}} * Lichess Studies, Dutch Defence, Bladel Family * Chess.com, Library: Bladel Modern Variations * Gamenot.com, annotated games: Dutch Defence Bladel Open [[fi:Shakkiaapinen/Peli/1. d4/1...f5/2. h3]] [[en:Chess_Opening_Theory/1._d4/1...f5/2._c4/2...g6/3._Nc3/3...Nh6/4._e4/4...fxe4/5._Nxe4/5...Bg7/6._Nf3]] {{AutoCat}} n8iil790ssxed578sbidchb37jovxi8