From 725efd714223d3cc25813adbb4c08201f1766280 Mon Sep 17 00:00:00 2001 From: spirik Date: Fri, 11 Sep 2026 09:51:45 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?/=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Лекция_01_Показ.md | 849 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 849 insertions(+) create mode 100644 Лекция_01_Показ.md diff --git a/Лекция_01_Показ.md b/Лекция_01_Показ.md new file mode 100644 index 0000000..4d4fdc8 --- /dev/null +++ b/Лекция_01_Показ.md @@ -0,0 +1,849 @@ +--- +marp: true +theme: default +paginate: true +headingDivider: 2 +style: | + section { font-size: 26px; } + h1 { font-size: 40px; } + h2 { font-size: 34px; } + table { font-size: 20px; } + code { font-size: 18px; } +--- + +# Архитектура аппаратных средств + +# Тема занятия + +**Введение в архитектуру аппаратных средств** + +| Блок | На экране | +| --- | --- | +| 1 | Архитектура ≠ микроархитектура | +| 2 | Принципы фон Неймана | +| 3 | Цикл команды и узкое место | +| 4 | Гарвард и модифицированный Гарвард | +| 5 | Классификация компьютеров | + +**90 минут · 2 академических часа** + +--- + +# Предмет дисциплины + +```mermaid +flowchart LR + A["Какую программу
написать?"]:::old + B["На какой машине
она исполняется?"]:::new + A -.-> B + classDef old fill:#eee,stroke:#999 + classDef new fill:#dbeafe,stroke:#1d4ed8 +``` + +**Архитектура аппаратных средств** — из каких частей состоит машина, что видно программе, как устроено внутри, как машины классифицируют. + +--- + +# Цель и задачи (шпаргалка) + +| # | Задача лекции | +| --- | --- | +| 1 | Уровни абстракции вычислительной системы | +| 2 | Архитектура (ISA) ≠ микроархитектура ≠ вентили | +| 3 | Принципы фон Неймана + цикл команды | +| 4 | Гарвард и почему у PC два кэша, но одна память | +| 5 | Фасеты классификации (Флинн, RISC/CISC, класс машины) | + +**После пары:** про любое устройство — ISA, фон Нейман/Гарвард *на каком уровне*, класс. + +--- + +# Зачем это не только схемотехнику + +```mermaid +mindmap + root((Зачем архитектура)) + Скорость + кэш + CPI + узкое место памяти + Совместимость + одна ISA + разные µarch + Встроенные системы + не маленький ПК + Flash ≠ SRAM + Выбор железа + сервер + АРМ + ПЛК / MCU + Безопасность + Spectre + W^X / NX +``` + +--- + +# Три смысла слова «архитектура» + +| Смысл | Что имеется в виду | Пример | +| --- | --- | --- | +| **1. Вид для программиста** (Amdahl, Blaauw, Brooks, 1964) | команды, регистры, адреса, прерывания | почти = **ISA** | +| **2. Организация системы** | CPU + память + ввод-вывод + связи | computer organization | +| **3. Уровень в стеке** | слой между ОС и цифровой логикой | «архитектурный уровень» | + +**На этой лекции «архитектура» без уточнения = смысл 1 (ISA), «организация» = смысл 2.** + +--- + +# Формула процессора + +$$ +\textbf{процессор} \;=\; \textbf{ISA} \;+\; \textbf{микроархитектура} \;+\; \textbf{схемотехника} +$$ + +```mermaid +flowchart TB + ISA["ISA
контракт с программой"] + UA["Микроархитектура µarch
конвейер, кэш, OoO"] + CIR["Схемотехника
вентили, техпроцесс"] + ISA --> UA --> CIR +``` + +| Слой | Видно программе? | Можно менять, не ломая бинарник? | +| --- | --- | --- | +| ISA | да | нет (другой код) | +| µarch | нет для корректности | да | +| вентили | нет | да (другой чип той же µarch) | + +--- + +# Одна ISA — много микроархитектур + +```mermaid +flowchart TB + ISA["ISA: x86-64"] + ISA --> I1["Intel Skylake"] + ISA --> I2["Intel Golden Cove"] + ISA --> A1["AMD Zen 3"] + ISA --> A2["AMD Zen 4"] + ISA --> R["Rosetta 2 на Apple Silicon
трансляция"] +``` + +| Объект | Слой | +| --- | --- | +| x86-64, AArch64, RISC-V, AVR | **архитектура (ISA)** | +| Zen 4, Golden Cove, Cortex-A76 | **микроархитектура** | +| 5 нм / 7 нм, библиотека ячеек | **реализация** | + +--- + +# Многоуровневая машина (Таненбаум) + +```mermaid +flowchart TB + L6["6. Прикладной · Python, 1С, браузер"] + L5["5. ОС / VM · процессы, файлы, syscall"] + L4["4. ISA · команды, регистры, адреса"] + L3["3. Микроархитектура · конвейер, кэш"] + L2["2. Цифровая логика · вентили, автоматы"] + L1["1. Физический · транзисторы"] + L6 --> L5 --> L4 --> L3 --> L2 --> L1 +``` + +**Наш курс:** уровни 4, 3 и организация «процессор — память — ввод-вывод». + +--- + +# Кто на каком уровне «программирует» + +| Уровень | Что видно | Кто работает | +| --- | --- | --- | +| Прикладной | языки, API | прикладной разработчик | +| ОС | процессы, файлы | системный программист | +| **ISA** | команды, регистры | компилятор, ассемблер | +| **µarch** | конвейер, кэши | архитектор процессора | +| Логика | вентили, триггеры | логический проектировщик | +| Физика | транзисторы | технолог | + +--- + +# Пять вопросов курса + +```mermaid +flowchart LR + Q1["1. Как видит
программа?"] + Q2["2. Как внутри?"] + Q3["3. Как связаны
части?"] + Q4["4. Какие есть
альтернативы?"] + Q5["5. Как
сравнивать?"] +``` + +| # | Короткий ответ сегодня | +| --- | --- | +| 1 | ISA, модель памяти | +| 2 | микроархитектура | +| 3 | шины, DMA, SoC | +| 4 | фон Нейман / Гарвард, RISC / CISC | +| 5 | фасеты + формула времени | + +--- + +# Формула времени выполнения + +$$ +T \;=\; N_{\text{команд}} \;\times\; \text{CPI} \;\times\; t_{\text{такта}} +$$ + +| Символ | Кто определяет | Не путать с | +| --- | --- | --- | +| \(N\) число команд | алгоритм + **ISA** + компилятор | «объём программы в МБ» | +| **CPI** тактов на команду | **микроархитектура** + кэш + ветвления | «архитектура Intel» | +| \(t\) длительность такта | частота, техпроцесс, µarch | единственная метрика | + +```text +Частота ↑ не значит программа быстрее. +Упёрлись в память → узкое место фон Неймана. +``` + +--- + +# Что входит в ISA (паспорт) + +```mermaid +mindmap + root((ISA)) + Типы данных + int / float / SIMD + Регистры + число и ширина + флаги + Адресация + регистровая + косвенная + PC-relative + Команды + формат и кодирование + арифметика + load/store + переходы + Система + прерывания + привилегии + модель памяти +``` + +--- + +# Примеры ISA + +| ISA | Семейство | Где встретите | +| --- | --- | --- | +| IA-32 / **x86-64** | CISC | PC, серверы | +| **AArch64** (ARMv8-A) | RISC | смартфоны, Apple, серверы | +| **RISC-V** RV64I | RISC | учебные SoC, открытое железо | +| IBM System/360 | CISC | мейнфреймы, история совместимости | +| AVR, PIC16 | RISC / гарвард | микроконтроллеры | +| Thumb-2 (Cortex-M) | RISC | STM32, встраиваемые | + +**Бинарник Linux x86-64 ≠ «голый» ARMv8.** Это другая архитектура, не «другая микросхема». + +--- + +# Что прячется в микроархитектуре + +| Механизм | Зачем | +| --- | --- | +| Конвейер, число стадий | совмещать шаги цикла команды | +| In-order / **out-of-order** | не ждать длинную команду | +| Суперскаляр | несколько команд за такт | +| SMT / Hyper-Threading | два потока на ядро | +| Кэши L1I / L1D / L2 / L3 | прятать задержку памяти | +| Предсказатель переходов | не останавливать конвейер | +| Микрокод CISC | сложная команда → простые µop | +| DVFS | частота и напряжение «на лету» | + +**Правило Хеннесси–Паттерсона:** внутри любой порядок, **наружу** — семантика ISA. + +--- + +# ISA vs микроархитектура: таблица-гвоздь + +| Вопрос | ISA | Микроархитектура | +| --- | --- | --- | +| Видно в учебнике ассемблера? | да | нет | +| Ломает старые программы при смене? | да | нет | +| Влияет на CPI и тепло? | слабо / косвенно | да | +| Влияет на Spectre? | почти нет | да | +| Пример имени | x86-64 | Zen 4 | + +```text +Нельзя говорить: «у меня архитектура Skylake». +Skylake — это µarch. Архитектура — x86-64. +``` + +--- + +# Фон Нейман, 1945 + +**Источник:** *First Draft of a Report on the EDVAC* +(идеи Эккерта, Мокли и группы Муровской школы) + +```mermaid +flowchart LR + CA["CA
арифметика
ALU"] + CC["CC
управление
CU"] + M["M
память"] + IO["I / O
ввод-вывод"] + R["R
внешний
носитель"] + CC --- CA + CC --- M + CC --- IO + M --- R +``` + +**Скачок:** программа хранится в памяти, как данные +(*stored-program computer*, «принстонская» архитектура). + +--- + +# Пять принципов — учебная реконструкция + +> В *First Draft* нет пронумерованных «заповедей». +> Список — дидактика российских учебников. + +| № | Принцип | По-английски | Суть | +| --- | --- | --- | --- | +| 1 | Двоичное кодирование | binary representation | команды и данные — двоичные слова | +| 2 | Программное управление | stored-program | поведение задаёт программа, не проводка | +| 3 | **Однородность памяти** | unified memory | код и данные в одном пространстве | +| 4 | Адресность | addressable cells | ячейки пронумерованы | +| 5 | Последовательность + переходы | sequential + control flow | PC++, пока нет jump | + +**Принцип 3 — водораздел с Гарвардом.** + +--- + +# Схема машины фон Неймана + +```mermaid +flowchart TB + I["Ввод I"] --> CU + subgraph CPU["Процессор"] + CU["УУ · CU
счётчик команд PC"] + ALU["АЛУ · ALU"] + REG["Регистры"] + CU --- ALU --- REG + end + CU <--> MEM["Память M
команды И данные
одно пространство"] + CU --> O["Вывод O"] +``` + +**Одна память · один тракт · смысл ячейки = как к ней обратились** + +--- + +# Что лежит в памяти + +```text +Адрес Содержимое Как интерпретировать +───────────────────────────────────────────── +0x100 83 C1 05 команда ADD CX, 5 +0x103 00 2A данное 42 +0x105 E3 00 команда JCXZ … +``` + +| Обращение | Ячейка 0x103 | +| --- | --- | +| как к команде | процессор пытается декодировать `00 2A` | +| как к данному | число 42 | + +Однородность памяти = загрузчик, компилятор, вирус, JIT. + +--- + +# Цикл команды + +```mermaid +stateDiagram-v2 + [*] --> Fetch + Fetch --> Decode: команда из памяти по PC
PC ← PC+длина + Decode --> Execute: код операции, регистры + Execute --> Memory: адрес / АЛУ + Memory --> Writeback: чтение/запись данного + Writeback --> Fetch: результат в регистр +``` + +| Шаг | Имя | Что делает | +| --- | --- | --- | +| 1 | **Fetch** | выборка команды | +| 2 | **Decode** | декодирование | +| 3 | **Execute** | операция / адрес | +| 4 | **Memory** | данное из *той же* памяти | +| 5 | **Write-back** | запись результата | + +На шагах 1 и 4 **конфликт одного тракта**. + +--- + +# Численный пример: `ADD R1, [100]` + +**Условия учебной машины:** шина 16 бит · АЛУ = 1 такт · память = 3 такта · декод = 1 такт + +| Шаг | Действие | Такты | Кто работает | +| --- | --- | --- | --- | +| Fetch | прочитать команду | **3** | память | +| Decode | это ADD, нужен [100] | 1 | УУ | +| Memory | прочитать ячейку 100 | **3** | память снова | +| Execute | сложить | 1 | АЛУ | +| Write-back | в R1 | 1 | регистры | +| | **Итого** | **~9** | из них **6 — память** | + +```text +Fetch следующей команды НЕЛЬЗЯ совместить с Memory текущей: +один порт к одной памяти. +``` + +--- + +# Тот же пример: фон Нейман vs Гарвард + +```mermaid +gantt + title Занятость тракта памяти (учебные такты) + dateFormat X + axisFormat %s + section Фон Нейман + Fetch команды :a1, 0, 3 + Memory данного :a2, 4, 3 + section Гарвард + Fetch команды :b1, 0, 3 + Memory данного :b2, 0, 3 +``` + +| Организация | Fetch ∥ чтение данного | Итог для ADD | +| --- | --- | --- | +| Фон Нейман | нет | ~9 тактов | +| Гарвард (два порта) | да | память перекрыта, АЛУ не ждёт выборку | +| Модиф. Гарвард (оба в L1) | да | как Гарвард | +| Модиф. Гарвард (промах в DRAM) | нет | снова фон Нейман | + +--- + +# Узкое место фон Неймана (Backus, 1977) + +```mermaid +flowchart LR + CPU["Процессор
быстрый АЛУ"] + BOT["УЗКОЕ МЕСТО
одна шина
команды + данные"] + MEM["Память
большая и медленная"] + CPU <--> BOT <--> MEM +``` + +| Как маскируют, не меняя модель программиста | Слой | +| --- | --- | +| Кэш, часто **раздельный L1I / L1D** | шаг к Гарварду | +| Иерархия L1–L2–L3–RAM–диск | организация памяти | +| Prefetch, предвыборка команд | µarch | +| Конвейер, суперскаляр | µarch | +| Несколько контроллеров памяти, много ядер | система | +| GPU / NPU «у данных» | другая организация | + +--- + +# Миф и норма + +| Миф | Норма | +| --- | --- | +| «Есть конвейер — уже не фон Нейман» | конвейер = **µarch** | +| «Два кэша — чистый Гарвард» | это **модифицированный** Гарвард | +| «Современный CPU не фоннеймановский» | **по ISA** — почти всегда да | + +```text +Смотрите на МОДЕЛЬ ПАМЯТИ программиста, +а не на фотографию кристалла. +``` + +--- + +# Гарвардская архитектура + +**Имя:** Harvard Mark I (Эйкен, IBM, 1940-е) +Программа — на ленте, данные — на других носителях. + +```mermaid +flowchart TB + CU["УУ + АЛУ"] + IM["Память КОМАНД
шина команд"] + DM["Память ДАННЫХ
шина данных"] + CU <--> IM + CU <--> DM +``` + +| Свойство | Следствие | +| --- | --- | +| Два тракта | выборка команды **и** доступ к данному **одновременно** | +| Разная ширина слова | PIC: команда 14 бит, данные 8 бит — норма | +| Нет общего пространства | нельзя «записать как данные и выполнить» | + +--- + +# Фон Нейман и Гарвард на одной схеме + +```mermaid +flowchart TB + subgraph VN["Фон Нейман"] + CPU1[CPU] <--> BUS1["Одна шина"] + BUS1 <--> M1["Одна память
код + данные"] + end + subgraph HV["Гарвард"] + CPU2[CPU] <--> IB["Шина команд"] + CPU2 <--> DB["Шина данных"] + IB <--> IM["Память команд"] + DB <--> DM["Память данных"] + end +``` + +--- + +# Сравнительная таблица трёх канонов + +| Свойство | Фон Нейман | Классический Гарвард | Модифицированный Гарвард | +| --- | --- | --- | --- | +| Памяти | 1 | 2 физические | кэши 2, DRAM 1 | +| Команда ∥ данное | нет (без кэша) | да | да, если оба в кэше | +| Программа как данные | да | трудно / спец. команды | да | +| Ширина слов | обычно одна | может быть разной | обычно одна в RAM | +| Типичные машины | модель PC/сервера | PIC, часть AVR, DSP | x86, Cortex-A, RISC-V | +| Риск | узкая шина | два контроллера, загрузка ПО | когерентность кэша | +| Выигрыш | простой загрузчик | предсказуемый поток | скорость + удобство ОС | + +--- + +# Формула, которую прошу выучить + +> Универсальные процессоры +> **фоннеймановские по ISA** +> и **модифицированно-гарвардские +> по микроархитектуре кэш-уровня**. + +```mermaid +flowchart TB + PROG["Программист видит
одно адресное пространство"] + L1["Ядро видит
L1I ‖ L1D"] + DRAM["Промах → общая DRAM
снова фон Нейман"] + PROG --> L1 --> DRAM +``` + +--- + +# Безопасность: искусственный запрет однородности + +```mermaid +flowchart LR + W["Страница WRITE"] + X["Страница EXECUTE"] + W -.->|W^X / NX / XN| X +``` + +| Механизм | Что делает | +| --- | --- | +| Бит **NX / XN** | «сюда нельзя передавать управление» | +| Политика **W^X** в ОС | страница либо пишется, либо исполняется | +| DEP | данные стека/кучи не как код | + +Аппаратура *умеет* исполнить только что записанное. ОС и MMU **запрещают** — из-за вирусов и эксплойтов, не из-за Гарварда. + +--- + +# Где какой канон в железе + +```mermaid +flowchart TB + H["Классический Гарвард"] --> H1["PIC"] + H --> H2["AVR Flash / SRAM"] + H --> H3["DSP: TI C55x, ADI"] + M["Модифицированный Гарвард"] --> M1["x86-64 + L1I/L1D"] + M --> M2["ARM Cortex-A"] + M --> M3["прикладной RISC-V"] + V["Фон Нейман как ISA"] --> V1["PC, сервер, смартфон · главные ядра"] +``` + +--- + +# Классификация — фасетная, не одна полка + +```text +Нельзя: «это современный процессор». +Можно: встроенный · MCU · Thumb-2 · Гарвард Flash/SRAM · SISD · RISC. +``` + +```mermaid +mindmap + root((Фасеты машины)) + Назначение + Форм-фактор + Поколение ЭБ + ISA + Память: фон Нейман / Гарвард + Флинн + RISC / CISC +``` + +--- + +# По назначению + +| Класс | English | Примеры | Акцент | +| --- | --- | --- | --- | +| Универсальные | general-purpose | PC, сервер, смартфон | богатая ISA, MMU, ОС | +| Специализированные | special-purpose | DSP, GPU, NPU | узкий алгоритм | +| Встроенные | embedded | ЭБУ, бытовая техника | энергия, реальное время | +| Промышленные | industrial control | ПЛК, промПК | детерминизм, УСО | + +Смартфон = универсальный компьютер *в роли* коммуникатора. + +--- + +# Линейка форм-факторов + +```mermaid +flowchart TB + S["Суперкомпьютер"] --> MF["Мейнфрейм"] + MF --> SV["Сервер / midrange"] + SV --> PC["PC / workstation"] + PC --> MOB["Мобильные / wearable"] + MOB --> SBC["Одноплатные · Pi, Jetson"] + SBC --> MCU["Микроконтроллер"] + MCU --> SOC["SoC пересекает нижние уровни"] +``` + +| Не путать | С чем путают | +| --- | --- | +| мини-ЭВМ 1970-х (PDP-11, VAX) | «мини-ПК» из магазина | +| MCU | «слабый смартфон» | +| SoC | отдельный класс *организации*, не вместо PC | + +--- + +# Поколения элементной базы + +| Пок. | База | Годы | Пример | +| --- | --- | --- | --- | +| 1 | лампы | 1940–50 | ENIAC, EDSAC, МЭСМ | +| 2 | транзисторы | 1950–60 | IBM 7090, БЭСМ-6 | +| 3 | ИС | 1960–70 | IBM/360, ЕС ЭВМ | +| 4 | БИС, микропроцессоры | 1970–90 | 8086, персоналки | +| 5+ | СБИС, многоядерность, SoC | 1990–н.в. | GPU, NPU, смартфоны | + +**Поколение ≠ качество и ≠ «поколение Windows».** + +--- + +# Таксономия Флинна, 1966 / 1972 + +$$ +\begin{array}{c|c|c} + & \textbf{1 поток данных} & \textbf{много данных} \\ \hline +\textbf{1 поток команд} & \textbf{SISD} & \textbf{SIMD} \\ \hline +\textbf{много команд} & \textbf{MISD} & \textbf{MIMD} +\end{array} +$$ + +```mermaid +flowchart LR + SISD["SISD
скаляр, классика"] + SIMD["SIMD
AVX, NEON, GPU lockstep"] + MISD["MISD
редко"] + MIMD["MIMD
много ядер, кластер"] +``` + +--- + +# Флинн: примеры в таблицу + +| Класс | Потоки | Куда показать пальцем | +| --- | --- | --- | +| **SISD** | 1 команда, 1 данное | учебная фоннеймановская машина | +| **SIMD** | 1 команда, много данных | SSE/AVX, NEON, Cray-1 | +| **MISD** | много команд, 1 данное | редкие конвейеры / отказоустойчивость | +| **MIMD** | много и того и другого | 4 ядра CPU, кластер | + +**Уточнения:** SPMD — модель кластеров; SIMT — GPU NVIDIA. + +Ноутбук = **гибрид**: суперскаляр внутри ядра + SIMD + MIMD по ядрам. + +--- + +# RISC и CISC + +| | **CISC** | **RISC** | +| --- | --- | --- | +| Идея | богатые команды, память как операнд | мало команд, только load/store | +| Длина команды | переменная | чаще фиксированная | +| Примеры ISA | x86, S/360, VAX | ARM, RISC-V, MIPS, Power | +| Сегодня внутри | CISC → RISC-подобные **µop** | тот же конвейер и OoO | + +```text +Классификация ISA, не «кто быстрее в 2026 году». +Микроархитектуры семейств сошлись. +``` + +--- + +# Карточка машины — заполнять так + +| Фасет | Ноутбук | STM32 / Arduino | +| --- | --- | --- | +| Назначение | универсальный | встроенный | +| Форм-фактор | PC + SoC | MCU | +| ISA | x86-64 | Cortex-M / AVR | +| Память | модиф. Гарвард, ISA фон Нейман | Flash/SRAM ≈ Гарвард | +| Флинн | MIMD + SIMD | в основном SISD | +| Команды | CISC | RISC | +| Объект | общее назначение | контур датчик–актюатор | + +--- + +# Кейс 1. Intel vs AMD + +```mermaid +flowchart TB + CODE["Один машинный код
gcc -O2 → x86-64"] + CODE --> I["Intel · свой CPI"] + CODE --> A["AMD · свой CPI"] +``` + +| Одинаково | Различно | +| --- | --- | +| ISA x86-64 | декодер, µop-кэш, L3, предсказатель | +| корректность программы | тепло, IPC, цена | + +**Вывод на экран:** совместимость держит ISA, гонку держит µarch. + +--- + +# Кейс 2. AVR — честный Гарвард + +```mermaid +flowchart LR + CORE["Ядро AVR"] + FLASH["Flash 32 КБ
ПРОГРАММА"] + SRAM["SRAM 2 КБ
ДАННЫЕ"] + CORE --> FLASH + CORE --> SRAM +``` + +| Привычка с ПК | На ATmega328 | +| --- | --- | +| строка в «обычной» памяти | **PROGMEM**, `pgm_read_byte` | +| `malloc` как стиль жизни | кучи может не быть | +| исполнить данные из RAM | не модель по умолчанию | + +Спец. мост: команда **LPM** — прочитать прошивку *как данные*. + +--- + +# Кейс 3. Смартфон = все классы сразу + +```mermaid +flowchart TB + SOC["SoC смартфона"] + SOC --> A["Cortex-A · ОС · модиф. Гарвард · MIMD"] + SOC --> M["Cortex-M / сенсоры · ближе к Гарварду"] + SOC --> G["GPU · SIMT / SIMD"] + SOC --> N["NPU · тензоры"] + SOC --> D["DRAM · общее пространство для A-ядер"] +``` + +| Неверно | Верно | +| --- | --- | +| «это не компьютер» | гетерогенная вычислительная система | +| «это SISD-ПК» | несколько классов на одном кристалле | + +--- + +# 12 ошибок — плакат + +| # | Не говорить | Говорить | +| --- | --- | --- | +| 1 | «архитектура Skylake» | µarch Skylake, ISA x86-64 | +| 2 | «больше ГГц — быстрее» | смотри CPI и память | +| 3 | «конвейер отменил фон Неймана» | смотри модель памяти | +| 4 | «два кэша = чистый Гарвард» | модифицированный | +| 5 | «МК — маленький Windows» | другая память и ОС может не быть | +| 6 | «RISC всегда быстрее CISC» | смотри µarch | +| 7 | один ярлык Флинна на SoC | гибрид | +| 8 | ускорять только ядро | бывает узкое место шины | +| 9 | поколение ЭВМ = поколение ОС | разный фасет | +| 10 | безопасность = свойство ISA | Spectre — про µarch | +| 11 | жёсткая проводка = фон Нейман | нет хранимой программы | +| 12 | ISA = ABI | ABI надстроен (Linux ≠ Windows) | + +--- + +# Три фразы на вынос + +```text +1. Сначала — что видно программе (ISA). +2. Потом — как сделано внутри (µarch). +3. Затем — сравнивайте машины по фасетам. +``` + +| Канон | Для программиста | Рядом с ядром | +| --- | --- | --- | +| Фон Нейман | общая память | узкая шина | +| Гарвард | два мира | два порта | +| Модиф. Гарвард | как фон Нейман | как Гарвард, пока кэш попал | + +--- + +# Вопросы с экрана (самопроверка) + +| # | Короткий вопрос | +| --- | --- | +| 1 | ISA vs µarch: пара «одна ISA — две реализации» | +| 2 | Что компилятор *не* обязан знать о конвейере? | +| 3 | Почему мало сравнивать ГГц? | +| 4 | Какой принцип фон Неймана отделяет его от Гарварда? | +| 5 | На каком шаге цикла команды конфликт тракта? | +| 6 | Что такое bottleneck по Backus? | +| 7 | Почему L1I+L1D ≠ чистый Гарвард? | +| 8 | Чем Flash/SRAM AVR отличается от Linux x86? | +| 9 | AVX — какой класс Флинна? Четыре ядра? | +| 10 | RISC/CISC — про скорость или про ISA? | +| 11 | Фасеты: суперкомпьютер vs STM32 | +| 12 | Spectre: какой слой виноват? | + +--- + +# Задание на семинар (с экрана) + +**Два устройства:** ноутбук/SBC **и** MCU (Arduino / STM32 / ESP32) + +| Шаг | Сдать | +| --- | --- | +| 1 | карточка фасетов (таблица 4.5.7 из текста лекции) | +| 2 | что ISA, что µarch — по datasheet | +| 3 | две схемы трактов память команд / память данных | +| 4 | где опаснее bottleneck, где теснота SRAM | +| 5 | три следствия для программиста | + +`Фамилия_Архитектура_введение.pdf` · 6–8 стр. + 4 слайда + +--- + +# Хронометраж пары + +| Мин | Читаете раздел | На экране слайды | +| --- | --- | --- | +| 0–12 | §§ 1–3 начало | тема, зачем, формула процессора | +| 12–30 | §§ 3.4–4.2 | уровни, ISA vs µarch | +| 30–48 | § 4.3 | фон Нейман, цикл, 9 тактов | +| 48–60 | § 4.4 | Гарвард, сравнительная таблица | +| 60–74 | § 4.5 | Флинн, RISC/CISC, карточка | +| 74–90 | §§ 5–10 | кейсы, ошибки, задание | + +--- + +# Конец показа · лекция 1 \ No newline at end of file