Files
Hardware-architecture/Лекция_01_Показ.md
T

849 lines
32 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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["Какую программу<br/>написать?"]:::old
B["На какой машине<br/>она исполняется?"]:::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<br/>контракт с программой"]
UA["Микроархитектура µarch<br/>конвейер, кэш, OoO"]
CIR["Схемотехника<br/>вентили, техпроцесс"]
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<br/>трансляция"]
```
| Объект | Слой |
| --- | --- |
| 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. Как видит<br/>программа?"]
Q2["2. Как внутри?"]
Q3["3. Как связаны<br/>части?"]
Q4["4. Какие есть<br/>альтернативы?"]
Q5["5. Как<br/>сравнивать?"]
```
| # | Короткий ответ сегодня |
| --- | --- |
| 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<br/>арифметика<br/>ALU"]
CC["CC<br/>управление<br/>CU"]
M["M<br/>память"]
IO["I / O<br/>ввод-вывод"]
R["R<br/>внешний<br/>носитель"]
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<br/>счётчик команд PC"]
ALU["АЛУ · ALU"]
REG["Регистры"]
CU --- ALU --- REG
end
CU <--> MEM["Память M<br/>команды И данные<br/>одно пространство"]
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<br/>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["Процессор<br/>быстрый АЛУ"]
BOT["УЗКОЕ МЕСТО<br/>одна шина<br/>команды + данные"]
MEM["Память<br/>большая и медленная"]
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["Память КОМАНД<br/>шина команд"]
DM["Память ДАННЫХ<br/>шина данных"]
CU <--> IM
CU <--> DM
```
| Свойство | Следствие |
| --- | --- |
| Два тракта | выборка команды **и** доступ к данному **одновременно** |
| Разная ширина слова | PIC: команда 14 бит, данные 8 бит — норма |
| Нет общего пространства | нельзя «записать как данные и выполнить» |
---
# Фон Нейман и Гарвард на одной схеме
```mermaid
flowchart TB
subgraph VN["Фон Нейман"]
CPU1[CPU] <--> BUS1["Одна шина"]
BUS1 <--> M1["Одна память<br/>код + данные"]
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["Программист видит<br/>одно адресное пространство"]
L1["Ядро видит<br/>L1I ‖ L1D"]
DRAM["Промах → общая DRAM<br/>снова фон Нейман"]
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<br/>скаляр, классика"]
SIMD["SIMD<br/>AVX, NEON, GPU lockstep"]
MISD["MISD<br/>редко"]
MIMD["MIMD<br/>много ядер, кластер"]
```
---
# Флинн: примеры в таблицу
| Класс | Потоки | Куда показать пальцем |
| --- | --- | --- |
| **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["Один машинный код<br/>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 КБ<br/>ПРОГРАММА"]
SRAM["SRAM 2 КБ<br/>ДАННЫЕ"]
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