[{"data":1,"prerenderedAt":428},["ShallowReactive",2],{"navigation":3,"\u002F2026-02-voyage-programme-cpu":84,"\u002F2026-02-voyage-programme-cpu-surround":421},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80],{"title":5,"path":6,"stem":7},"Découvrir le Markdown — la syntaxe qui vous suivra partout","\u002F2025-09-decouvrir-markdown","2025-09-decouvrir-markdown",{"title":9,"path":10,"stem":11},"Le logiciel libre, en quelques idées simples","\u002F2025-09-logiciel-libre-open-source","2025-09-logiciel-libre-open-source",{"title":13,"path":14,"stem":15},"Utiliser l'ENT et Capytale au quotidien","\u002F2025-09-utiliser-ent-capytale","2025-09-utiliser-ent-capytale",{"title":17,"path":18,"stem":19},"Excalidraw — dessiner des schémas qu'on ose montrer","\u002F2025-10-excalidraw-schemas","2025-10-excalidraw-schemas",{"title":21,"path":22,"stem":23},"Concours Castor — l'informatique en 45 minutes","\u002F2025-11-concours-castor","2025-11-concours-castor",{"title":25,"path":26,"stem":27},"Godot, un moteur de jeu libre pour démarrer sérieusement","\u002F2026-01-godot-moteur-jeu","2026-01-godot-moteur-jeu",{"title":29,"path":30,"stem":31},"Prologin — s'entraîner toute l'année à l'algorithmique","\u002F2026-01-prologin-entrainement","2026-01-prologin-entrainement",{"title":33,"path":34,"stem":35},"Le voyage d'un programme à travers le CPU","\u002F2026-02-voyage-programme-cpu","2026-02-voyage-programme-cpu",{"title":37,"path":38,"stem":39},"Coloration syntaxique côté serveur avec Shiki","\u002F2026-03-tuto-shiki","2026-03-tuto-shiki",{"title":41,"path":42,"stem":43},"Bun 1.2 — où en est-on ?","\u002F2026-03-veille-bun","2026-03-veille-bun",{"title":45,"path":46,"stem":47},"Club prologin — bilan de la session","\u002F2026-04-club-prologin","2026-04-club-prologin",{"title":49,"path":50,"stem":51},"L'IA dans nos cours, sans s'y noyer","\u002F2026-04-edito-ia-cours","2026-04-edito-ia-cours",{"title":53,"path":54,"stem":55},"Semaine des langues — quand Python lit nos textes","\u002F2026-04-semaine-langues-nlp","2026-04-semaine-langues-nlp",{"title":57,"path":58,"stem":59},"Sous le capot de nsi.rocks","\u002F2026-05-coulisses-nsi-rocks","2026-05-coulisses-nsi-rocks",{"title":61,"path":62,"stem":63},"Créer votre premier jeu vidéo — le guide pragmatique","\u002F2026-05-creer-jeu-video-debutant","2026-05-creer-jeu-video-debutant",{"title":65,"path":66,"stem":67},"Le tableau de bord élève — mode d'emploi","\u002F2026-05-dashboard-eleve-mode-emploi","2026-05-dashboard-eleve-mode-emploi",{"title":69,"path":70,"stem":71},"Évaluations notées, auto-évaluations — qui sert à quoi","\u002F2026-05-evaluations-et-auto-eval","2026-05-evaluations-et-auto-eval",{"title":73,"path":74,"stem":75},"La Nuit du Code 2026 — coder en équipe, manette en main","\u002F2026-05-nuit-du-code-2026","2026-05-nuit-du-code-2026",{"title":77,"path":78,"stem":79},"Pourquoi LLVM ?","\u002F2026-05-pourquoi-llvm","2026-05-pourquoi-llvm",{"title":81,"path":82,"stem":83},"git bisect : trouver un bug en log(n) étapes","\u002F2026-05-tuto-git-bisect","2026-05-tuto-git-bisect",{"id":85,"title":33,"authors":86,"body":89,"category":412,"date":413,"description":414,"extension":415,"featured":416,"image":417,"meta":418,"navigation":272,"path":34,"readingTime":263,"seo":419,"stem":35,"__hash__":420},"posts\u002F2026-02-voyage-programme-cpu.md",[87],{"name":88},"Mathieu N.",{"type":90,"value":91,"toc":406},"minimark",[92,106,120,125,128,170,175,179,182,242,245,249,298,301,351,354,358,395,402],[93,94,95,96,100,101,105],"p",{},"Le processeur (",[97,98,99],"strong",{},"CPU",", ",[102,103,104],"em",{},"Central Processing Unit",") est le moteur qui anime\nl'ordinateur. Comprendre son fonctionnement éclaire à la fois la programmation\net l'architecture matérielle. Voici une vue d'ensemble du chemin parcouru par\nun programme avant qu'il ne produise un résultat à l'écran.",[107,108,109],"note",{},[93,110,111,112,119],{},"Cet article s'inspire d'un texte de Mohit publié sur\n",[113,114,118],"a",{"href":115,"rel":116},"https:\u002F\u002Fchessman7.substack.com\u002Fp\u002Fhow-your-code-runs-the-journey-of",[117],"nofollow","chessman7.substack.com","\n— traduit, condensé et adapté pour des lycéens.",[121,122,124],"h2",{"id":123},"les-éléments-clés-du-cpu","Les éléments-clés du CPU",[93,126,127],{},"Un CPU rassemble plusieurs unités spécialisées qui collaborent :",[129,130,131,138,144,158,164],"ol",{},[132,133,134,137],"li",{},[97,135,136],{},"Unité de contrôle (CU)"," — le « chef d'orchestre » : elle séquence le\nchargement, le décodage et l'exécution des instructions.",[132,139,140,143],{},[97,141,142],{},"Unité arithmétique et logique (ALU)"," — réalise les additions, les\nsoustractions, les comparaisons et les opérations logiques (ET, OU, NON).",[132,145,146,149,150,153,154,157],{},[97,147,148],{},"Registres"," — petites mémoires ultra-rapides intégrées au processeur.\nLe ",[97,151,152],{},"compteur ordinal"," pointe vers la prochaine instruction, le\n",[97,155,156],{},"registre d'instruction"," contient l'instruction en cours.",[132,159,160,163],{},[97,161,162],{},"Mémoire"," — RAM, ROM et caches. Le cache fait le pont entre la rapidité\ndu CPU et la lenteur relative de la RAM.",[132,165,166,169],{},[97,167,168],{},"Logique combinatoire"," — réseau de portes qui transforme les signaux\nd'entrée en signaux de sortie pour piloter les autres composants.",[171,172],"illustration",{"kind":173,"prompt":174},"schema","Schéma d'architecture CPU : CU, ALU, registres (PC, IR), mémoire cache, RAM, bus de communication",[121,176,178],{"id":177},"le-cycle-fondamental-fetch-decode-execute","Le cycle fondamental : Fetch — Decode — Execute",[93,180,181],{},"Le CPU répète sans relâche un cycle en trois (parfois quatre) temps.",[183,184,185,198],"table",{},[186,187,188],"thead",{},[189,190,191,195],"tr",{},[192,193,194],"th",{},"Phase",[192,196,197],{},"Action",[199,200,201,212,222,232],"tbody",{},[189,202,203,209],{},[204,205,206],"td",{},[97,207,208],{},"Fetch",[204,210,211],{},"Récupérer l'instruction pointée par le compteur ordinal.",[189,213,214,219],{},[204,215,216],{},[97,217,218],{},"Decode",[204,220,221],{},"Interpréter l'instruction (opcode + opérandes).",[189,223,224,229],{},[204,225,226],{},[97,227,228],{},"Execute",[204,230,231],{},"Réaliser l'opération via l'ALU ou un transfert mémoire.",[189,233,234,239],{},[204,235,236],{},[97,237,238],{},"Write back",[204,240,241],{},"Stocker le résultat dans un registre ou en mémoire.",[93,243,244],{},"À chaque tour, le compteur ordinal avance — sauf en cas de saut, d'appel de\nfonction ou de retour.",[121,246,248],{"id":247},"exemple-un-simple-programme-c","Exemple : un simple programme C",[250,251,256],"pre",{"className":252,"code":253,"language":254,"meta":255,"style":255},"language-c shiki shiki-themes github-light github-light github-dark","#include \u003Cstdio.h>\n\nint main() {\n    printf(\"Hello, World!\\n\");\n    return 0;\n}\n","c","",[257,258,259,267,274,280,286,292],"code",{"__ignoreMap":255},[260,261,264],"span",{"class":262,"line":263},"line",1,[260,265,266],{},"#include \u003Cstdio.h>\n",[260,268,270],{"class":262,"line":269},2,[260,271,273],{"emptyLinePlaceholder":272},true,"\n",[260,275,277],{"class":262,"line":276},3,[260,278,279],{},"int main() {\n",[260,281,283],{"class":262,"line":282},4,[260,284,285],{},"    printf(\"Hello, World!\\n\");\n",[260,287,289],{"class":262,"line":288},5,[260,290,291],{},"    return 0;\n",[260,293,295],{"class":262,"line":294},6,[260,296,297],{},"}\n",[93,299,300],{},"Entre la frappe au clavier et l'affichage à l'écran, ce code traverse\nplusieurs étapes invisibles :",[129,302,303,313,319,325,339,345],{},[132,304,305,308,309,312],{},[97,306,307],{},"Prétraitement"," — résolution des ",[257,310,311],{},"#include",", expansion des macros.",[132,314,315,318],{},[97,316,317],{},"Compilation"," — traduction du C vers l'assembleur.",[132,320,321,324],{},[97,322,323],{},"Assemblage"," — conversion de l'assembleur en code machine binaire.",[132,326,327,330,331,334,335,338],{},[97,328,329],{},"Édition de liens"," — assemblage des morceaux et création de\nl'exécutable (par exemple ",[257,332,333],{},"hello.exe"," ou ",[257,336,337],{},".\u002Fhello",").",[132,340,341,344],{},[97,342,343],{},"Chargement"," — l'exécutable est copié en RAM.",[132,346,347,350],{},[97,348,349],{},"Exécution"," — le CPU démarre le cycle Fetch–Decode–Execute sur les\ninstructions chargées.",[171,352],{"kind":173,"prompt":353},"Pipeline de compilation : .c → préprocesseur → compilateur → assembleur → linker → exécutable, puis loader vers la RAM",[121,355,357],{"id":356},"quelques-notions-pour-aller-plus-loin","Quelques notions pour aller plus loin",[359,360,361,383,389],"ul",{},[132,362,363,366,367,370,371,374,375,378,379,382],{},[97,364,365],{},"Segments mémoire"," : un programme en exécution occupe plusieurs zones —\nle segment ",[97,368,369],{},"texte"," (le code), les ",[97,372,373],{},"données"," (variables globales), la\n",[97,376,377],{},"pile"," (variables locales et appels de fonctions), le ",[97,380,381],{},"tas"," (allocation\ndynamique).",[132,384,385,388],{},[97,386,387],{},"Pipeline"," : les CPU modernes traitent plusieurs instructions en\nparallèle, comme une chaîne de montage.",[132,390,391,394],{},[97,392,393],{},"Cache"," : sans cache L1\u002FL2\u002FL3, votre processeur passerait l'essentiel de\nson temps à attendre la RAM.",[93,396,397,398,401],{},"Vous retrouverez ces notions de manière plus approfondie dans le chapitre\n",[97,399,400],{},"Architectures matérielles et systèmes d'exploitation"," en NSI Première et\nTerminale.",[403,404,405],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":255,"searchDepth":269,"depth":269,"links":407},[408,409,410,411],{"id":123,"depth":269,"text":124},{"id":177,"depth":269,"text":178},{"id":247,"depth":269,"text":248},{"id":356,"depth":269,"text":357},"veille","2026-02-04","Du fichier source au \"Hello, World!\" qui s'affiche — comprendre les étapes que franchit un programme avant son exécution.","md",false,null,{},{"title":33,"description":414},"y3Mgp-Z230pN0VUbFUtT71zYH2CA7ydNp3rbTNuPl18",[422,425],{"title":29,"path":30,"stem":31,"description":423,"category":424,"readingTime":263,"children":-1},"Le concours national d'informatique des moins de 21 ans propose un fonds d'exercices ouvert à tous, gradué de 0 à 9. Visite guidée.","actus",{"title":37,"path":38,"stem":39,"description":426,"category":427,"readingTime":263,"children":-1},"Comment je rends des blocs de code en SSR sans charger un seul ko de JS supplémentaire côté client.","tuto",1788015772046]