From d2aad2fe4a9250784b132188761bb9d224013068 Mon Sep 17 00:00:00 2001 From: ElectronixTM Date: Mon, 9 Jun 2025 16:26:44 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=BA=D0=BE=D0=BD=D1=84=D0=BB=D0=B8=D0=BA=D1=82=D1=8B?= =?UTF-8?q?=20=D0=BF=D0=BE=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83?= =?UTF-8?q?=D1=80=D0=B5=20=D0=B8=20=D1=87=D0=B0=D1=81=D1=82=D1=8C=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D1=84=D0=BB=D0=B8=D0=BA=D1=82=D0=BE=D0=B2=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π½ΠΈΡ зависимостСй. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ статичСской ΠΈ динамичСской трассы исполнСния ΠΊΠΎΠΌΠ°Π½Π΄.md | 85 +++++++++++++++++++ assets/Pasted image 20250609000344.png | 3 + assets/Pasted image 20250609133114.png | 3 + assets/Pasted image 20250609133320.png | 3 + assets/Pasted image 20250609134742.png | 3 + assets/Pasted image 20250609153524.png | 3 + assets/Pasted image 20250609162101.png | 3 + assets/buble_demo.gif | 3 + assets/buble_demo.mp4 | 3 + assets/conveyor_example_1.gif | 3 + assets/conveyor_example_1.mp4 | 3 + assets/data_conflict.gif | 3 + assets/short_circuit.mp4 | 3 + 13 files changed, 121 insertions(+) create mode 100644 01 - Зависимости структурныС, ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ. Бпособы прСодолСния зависимостСй. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ статичСской ΠΈ динамичСской трассы исполнСния ΠΊΠΎΠΌΠ°Π½Π΄.md create mode 100644 assets/Pasted image 20250609000344.png create mode 100644 assets/Pasted image 20250609133114.png create mode 100644 assets/Pasted image 20250609133320.png create mode 100644 assets/Pasted image 20250609134742.png create mode 100644 assets/Pasted image 20250609153524.png create mode 100644 assets/Pasted image 20250609162101.png create mode 100644 assets/buble_demo.gif create mode 100644 assets/buble_demo.mp4 create mode 100644 assets/conveyor_example_1.gif create mode 100644 assets/conveyor_example_1.mp4 create mode 100644 assets/data_conflict.gif create mode 100644 assets/short_circuit.mp4 diff --git a/01 - Зависимости структурныС, ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ. Бпособы прСодолСния зависимостСй. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ статичСской ΠΈ динамичСской трассы исполнСния ΠΊΠΎΠΌΠ°Π½Π΄.md b/01 - Зависимости структурныС, ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ. Бпособы прСодолСния зависимостСй. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ статичСской ΠΈ динамичСской трассы исполнСния ΠΊΠΎΠΌΠ°Π½Π΄.md new file mode 100644 index 0000000..c88fa6a --- /dev/null +++ b/01 - Зависимости структурныС, ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ. Бпособы прСодолСния зависимостСй. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ статичСской ΠΈ динамичСской трассы исполнСния ΠΊΠΎΠΌΠ°Π½Π΄.md @@ -0,0 +1,85 @@ +--- +Бтатус: Π² Ρ€Π°Π±ΠΎΡ‚Π΅ +БоотвСтствуСт: "2" +--- +*Π”Π»ΠΈΠ½Π½ΡŽΡ‰ΠΈΠΉ Π±ΠΈΠ»Π΅Ρ‚* + +> [!info]+ ΠžΡ‚ΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ +> Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ процСссоров сСйчас ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½Ρ‹Π΅. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ инструкции разбиваСтся Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ этапы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ +- ΠΏΠ°Ρ€Π°Π»Π΅Π»Π»ΡŒΠ½ΠΎ. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡ΠΊΠΈ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ стадии ΠΊΠΎΠ½Π²Π΅Π΅Ρ€Π° +> - Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ - IF (ΠΏΠΎ адрСсу, Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ счСтчиком ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΠ· памяти извлСкаСтся ΠΊΠΎΠΌΠ°Π½Π΄Π°); +> - Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ / Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈΠ· рСгистров - ID; +> - Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ / вычислСниС эффСктивного адрСса памяти - EX; +> - ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ памяти - MEM; +> - Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° - WB. +> +> ![[conveyor_example_1.gif]] +> *ΠšΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Π΅ΡΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ, которая Π½Π΅ учитываСтся. ΠŸΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅* +> +> ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ этом возрастаСт благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ступСнях ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄. Она Π½Π΅ сокращаСт врСмя выполнСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ нСсбалансированности Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΅Π³ΠΎ ступСни. Частота синхронизации (Ρ‚Π°ΠΊΡ‚ синхронизации) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ступСни ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° + +# Зависимости структурныС, ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ + +На ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½Ρ‹Π΅ ситуации, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ WB ΠΏΠΈΡˆΠ΅Ρ‚ Π² рСгистр R1, Π° ID ΠΈΠ· Π½Π΅Π³ΠΎ ΠΆΠ΅ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Они Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ сопряТСно с замСдлСниями ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° + +**Π’Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ 3 класса ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²**: + +1. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΈΠ·-Π·Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΠΎ рСсурсам, ΠΊΠΎΠ³Π΄Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ срСдства Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ выполнСния с совмСщСниСм. +2. ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π² случаС, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ зависит ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполнСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. +3. ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика ΠΊΠΎΠΌΠ°Π½Π΄ + +## Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ зависимости ΠΈ способы ΠΈΡ… прСодолСния + +*ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… срСдств ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ количСство ядСр, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ количСство ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ², ΠΊΠΎΠ½Π΅Ρ‡Π½Π° пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈΠ»ΠΈ Π½Π΅ поддСрТиваСтся одноврСмСнная запись ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅* + +%% +ΠœΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ³Π΄Π° нСскольким ступСням ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ памяти, Π° Ρƒ ΠžΠ—Π£ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ€Ρ‚ ΠΈ ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ просто ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΊΡ‚, ΠΊΠΎΠ³Π΄Π° происходит ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ памяти Π·Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Подобная приостановка часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ "ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½Ρ‹ΠΌ ΠΏΡƒΠ·Ρ‹Ρ€Π΅ΠΌ" (pipeline bubble) ΠΈΠ»ΠΈ просто ΠΏΡƒΠ·Ρ‹Ρ€Π΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ, занимая мСсто, Π½ΠΎ Π½Π΅ выполняя Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ +%% + +ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ структурныС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅: "ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° содСрТит ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ памяти Π·Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ с Π²Ρ‹Π±ΠΎΡ€ΠΊΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· памяти" +### РСшСниС + +**Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ просто ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΊΡ‚, ΠΊΠΎΠ³Π΄Π° происходит ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ памяти Π·Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.** + +*ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡ΠΊΠΈ:* +![[Pasted image 20250609133320.png]] + +> [!tip]- Анимация для удобства восприятия: +> ![[buble_demo.gif]] +> *ВСроятно Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° 1 Π½Π° этапС MEM выполняСт ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Π½Π΅ получаСтся Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€* + +Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΡƒΡ€Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΏΠΎΠ»Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сопряТСно с ΠΎΡ‡Π΅Π½ΡŒ большими Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ всСго процСссора ΠΈ Π΅Π³ΠΎ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ +## Зависимости ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡ… прСодолСния + +Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ продСмонстрирована Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅: + +![[Pasted image 20250609134742.png]] + +> [!tip]- Анимация для дСмонстрации +> ![[data_conflict.gif]] + +Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ADD, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π΅ выполнСния. Если Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎ SUB ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ + +*Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистра R1 Π½Π΅ являСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ, Π΄Π°ΠΆΠ΅ Ссли ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ прСрывания, измСнившиС R1* + +### РСшСниС + +Π Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ **ΠΎΠ±Ρ…ΠΎΠ΄Π° (data bypassing)** ΠΈΠ»ΠΈ **Π·Π°ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈ (short-circuiting)** - Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ АЛУ с Π΅Π³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ рСгистра всСгда снова подаСтся Π½Π°Π·Π°Π΄ Π½Π° Π²Ρ…ΠΎΠ΄Ρ‹ АЛУ. Если Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ прСдыдущая опСрация АЛУ записываСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² рСгистр, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ источнику ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ АЛУ, Ρ‚ΠΎ логичСскиС схСмы управлСния Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Π² качСствС Π²Ρ…ΠΎΠ΄Π° для АЛУ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎ Ρ†Π΅ΠΏΠΈ "ΠΎΠ±Ρ…ΠΎΠ΄Π°" , Π° Π½Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½ΠΎΠ΅ ΠΈΠ· рСгистрового Ρ„Π°ΠΉΠ»Π° + +> [!tip]- Анимация для удобства восприятия +> *Анимация довольно слоТная ΠΈ комплСксная, Ρ‚Π°ΠΊ Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ Π² качСствС mp4* +> +> ![[short_circuit.mp4]] +> +> Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΡƒΡ€Π° Π·Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡƒ Π΅Ρ‰Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ex ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ADD, ΡƒΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½Π° Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ рСгистр, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ. Но ΡΡƒΡ‚ΡŒ Π² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° + +Зависимости ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ + +![[Pasted image 20250609153524.png]] + +Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: сначала Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° A, ΠΏΠΎΡ‚ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° B +- RAW - B пытаСтся Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ рСгистр, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ Π½Π΅ успСла Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ A. Π•ΡΡ‚ΡŒ риск ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ староС ΠΈΠ»ΠΈ вовсС мусорноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ +- WAR - A пытаСтся ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· ячСйки, ΠΊΡƒΠ΄Π° ΠΏΠΈΡˆΠ΅Ρ‚ B. ЀактичСски это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ B ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‡Π΅ΠΌ A Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ, Ссли A ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Ρ€Π°Π½ΡŒΡˆΠ΅ B. Однако Π² процСссорах 6 поколСния допускаСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π΅ Π² порядкС ΠΈΡ… слСдования Π² ΠΊΠΎΠ΄Π΅ +- WAW - B пытаСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‡Π΅ΠΌ А Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ свой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ записи происходят Π² Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС. *Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°Ρ…, Π³Π΄Π΅ запись ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ступСнях* + +*схСма Π½Π° рисункС* +![[Pasted image 20250609162101.png]] diff --git a/assets/Pasted image 20250609000344.png b/assets/Pasted image 20250609000344.png new file mode 100644 index 0000000..4471ede --- /dev/null +++ b/assets/Pasted image 20250609000344.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d629cc60b7f25cf8d5d0c0cb05ed73777892f5fcc1eb05aba7398324e126baee +size 1096 diff --git a/assets/Pasted image 20250609133114.png b/assets/Pasted image 20250609133114.png new file mode 100644 index 0000000..1249731 --- /dev/null +++ b/assets/Pasted image 20250609133114.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c305699c422b60af624d5ad6e1735b347c68d209c0575aec68f6cd0942be2d1 +size 1203 diff --git a/assets/Pasted image 20250609133320.png b/assets/Pasted image 20250609133320.png new file mode 100644 index 0000000..fca9eb5 --- /dev/null +++ b/assets/Pasted image 20250609133320.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10d069c219c45fb75c6a6687c084cd013a8e16d57e25ea44cfc3897cf9544dd0 +size 19340 diff --git a/assets/Pasted image 20250609134742.png b/assets/Pasted image 20250609134742.png new file mode 100644 index 0000000..e3371c3 --- /dev/null +++ b/assets/Pasted image 20250609134742.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a946c3d895afeee20ac95cc7bdab1f825068e930ce253201b8c2b4e771181e09 +size 11095 diff --git a/assets/Pasted image 20250609153524.png b/assets/Pasted image 20250609153524.png new file mode 100644 index 0000000..6776776 --- /dev/null +++ b/assets/Pasted image 20250609153524.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7ba72f2ac0fb6a8812822b5a6c68bdeafc95b7d3d03b42546368fb4105b35ef +size 12303 diff --git a/assets/Pasted image 20250609162101.png b/assets/Pasted image 20250609162101.png new file mode 100644 index 0000000..fb78922 --- /dev/null +++ b/assets/Pasted image 20250609162101.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5aee2f67a8d2bdb094ee96a9c8d6c0ba548de1805ea6d583452b26996254cf3 +size 17410 diff --git a/assets/buble_demo.gif b/assets/buble_demo.gif new file mode 100644 index 0000000..f0e3b9a --- /dev/null +++ b/assets/buble_demo.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38f1f18f49355e36c1d1a39278226f11ed589babaee787275558f6b0cee85a6d +size 615749 diff --git a/assets/buble_demo.mp4 b/assets/buble_demo.mp4 new file mode 100644 index 0000000..3f9d5b8 --- /dev/null +++ b/assets/buble_demo.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37df6585f5ee584afaf811ba08092f3553ee886196f90628e15a550a1773ae7e +size 912670 diff --git a/assets/conveyor_example_1.gif b/assets/conveyor_example_1.gif new file mode 100644 index 0000000..8cfae3e --- /dev/null +++ b/assets/conveyor_example_1.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:163516c12f48d30a268c55991b33b79fcfbde294f6cf11ba7fc922fde26e98e5 +size 609755 diff --git a/assets/conveyor_example_1.mp4 b/assets/conveyor_example_1.mp4 new file mode 100644 index 0000000..f20bd5e --- /dev/null +++ b/assets/conveyor_example_1.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6887f3aa7affcd104f5b87545e55156e81a09581c7a0519492005fe15e6612b1 +size 582884 diff --git a/assets/data_conflict.gif b/assets/data_conflict.gif new file mode 100644 index 0000000..0ae8449 --- /dev/null +++ b/assets/data_conflict.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99ff92c2316883a7918fee54d194c85ee5ac731e754ce5a5471d27a8eaf62533 +size 318654 diff --git a/assets/short_circuit.mp4 b/assets/short_circuit.mp4 new file mode 100644 index 0000000..95775be --- /dev/null +++ b/assets/short_circuit.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c40fca77145c6342a56b0ec607eaf32ebcb56b4797dabd5d0bd0b0d1a2a243c7 +size 2390444