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

5.3 KiB
Raw Permalink Blame History

Уровни абстракции

Электронно-вычислительные системы очень часто делят на уровни абстракции. Основных причин для такого разделения две: каждый уровень скрывает детали нижележащего, а также навязывает свои ограничения вышележащему.

Один из таких примеров (от низкого к высокому):

  • Физика (Электроны)
  • Устройства (Транзисторы, диоды)
  • Аналоговые схемы (Усилители, фильтры)
  • Цифровые схемы (AND вентили, NOT вентили)
  • Логика (Сумматоры, память)
  • Микро-архитектура (Контроллеры, каналы передачи данных)
  • Архитектура (Регистры, инструкции)
  • Операционные системы (Драйверы устройств)
  • Application Software (Программы)

Любую систему можно разбить на уровни абстракции. Выражаться они будут разным образом: какие-то будут видны только в документации, какие-то будут реализованы в виде программ. Тем не менее, они всегда существуют и связаны друг с другом (настолько, что при необходимости мы всегда можем перемещаться между ними).

Иногда различные уровни могут формировать вокруг себя виды индустрии, об этом можно подробнее почитать в небольшой статье, в которой такое разделение происходит по аналогии с сетевой моделью OSI.

При этом сами уровни абстракции формируются вычислительными платформами. Платформы состоят из трёх основополагающих компонентов: языка, типа и экземпляра. Язык (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 (как сконфигурировать систему)
  • Микросервисы <-> модульные монолиты (маятник архитектурных стилей)