Files
Info/2 курс/Архитектура компьютера/Вычислительные платформы.md
T
LeterZP 1d8c819656 init
2026-09-17 22:04:07 +03:00

42 lines
5.3 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.
## Уровни абстракции
Электронно-вычислительные системы очень часто делят на уровни абстракции. Основных причин для такого разделения две: каждый уровень скрывает детали нижележащего, а также навязывает свои ограничения вышележащему.
Один из таких примеров (от низкого к высокому):
- Физика (Электроны)
- Устройства (Транзисторы, диоды)
- Аналоговые схемы (Усилители, фильтры)
- Цифровые схемы (AND вентили, NOT вентили)
- Логика (Сумматоры, память)
- Микро-архитектура (Контроллеры, каналы передачи данных)
- Архитектура (Регистры, инструкции)
- Операционные системы (Драйверы устройств)
- Application Software (Программы)
Любую систему можно разбить на уровни абстракции. Выражаться они будут разным образом: какие-то будут видны только в документации, какие-то будут реализованы в виде программ. Тем не менее, они всегда существуют и связаны друг с другом (настолько, что при необходимости мы всегда можем перемещаться между ними).
Иногда различные уровни могут формировать вокруг себя виды индустрии, об этом можно подробнее почитать в небольшой [статье](https://swyx.io/osi-layers-coding-careers), в которой такое разделение происходит по аналогии с сетевой моделью [OSI](https://en.wikipedia.org/wiki/OSI_model).
При этом сами уровни абстракции формируются вычислительными платформами. Платформы состоят из трёх основополагающих компонентов: языка, типа и экземпляра. Язык (Language) - собственно, язык, на котором мы пишем или описываем. Тип (Type) - предопределенные платформой абстракции и структуры данных. Экземпляр (Instance) - готовые, предопределённые платформой объекты и компоненты. С использованием трёх этих компонентов чаще всего появляется и еще один - шаблон. Шаблон (Pattern) задает повторяемые решения.
Одни и те же шаблоны могут повторяться на разных уровнях абстракции. К примеру: сторожевые таймеры появляются в микроконтроллерах, ОС/гипервизорах и оркестраторах; кеши и когерентность актуальны для CPU, ОС (page cache), дисков, CDN и браузеров; прерывания и события используются в аппаратных IRQ, сигналах ОС, event loop и message queue; системы команд часто встречаются в ISA процессора, байткодах виртуальных машин (JVM, CLR), API/протоколах (у которых свой Language на каждом уровне), а также в DSL.
## Тенденции
Внутри компьютера:
- смена процессорной архитектуры (уход от x86 в пользу ARM и RISC-V)
- появление разнообразия (или гетерогенности) вычислений (GPU, NPU, TPU)
- чиплеты и продвинутая упаковка кристаллов вместо монолитных SoC (нужно учитывать, под какое железо делается программа)
- реконфигурируемые вычислители (FPGA, CGRA).
За пределами компьютера:
- облачные вычисления (server-less)
- распределённые системы, системы систем, IoT, edge/fog computing
- вычисление вне доверенного окружения (confidential computing (TEE), Blockchain, Smart Contract)
В разработке:
- AI-ассистированная разработка - копайлоты, агенты, генерация и ревью кода (к слову, уровни абстракции - слабое место ИИ)
- Low-code или no-code решения - смещение программирования к верхним уровням индустрии
- Platform Engineering, IaC, GitOps (как сконфигурировать систему)
- Микросервисы <-> модульные монолиты (маятник архитектурных стилей)