Вычислительные системы
Вычислительная система выполняет программы, хранит состояние и обменивается данными с внешней средой.
Состав
- процессор выполняет инструкции;
- регистры и кэши держат данные рядом с ядром;
- оперативная память хранит рабочее состояние процессов;
- постоянное хранилище переживает выключение;
- устройства ввода-вывода связывают систему с сетью, дисками и пользователем;
- интерконнекты передают адреса, данные и управляющие сигналы;
- операционная система распределяет ресурсы и изолирует процессы.
flowchart LR CPU["CPU / кэши"] <--> RAM["Оперативная память"] CPU <--> IO["Контроллеры I/O"] IO <--> NET["Сеть"] IO <--> DISK["Хранилище"] IO <--> UI["Устройства ввода-вывода"]
Современная система не сводится к одной общей шине: используются иерархии кэшей, контроллеры памяти и разные высокоскоростные соединения. Но логические роли адресации, передачи данных и управления сохраняются.
Иерархия памяти
Чем ближе уровень к CPU, тем обычно меньше ёмкость и задержка:
регистры -> L1/L2/L3 -> RAM -> SSD -> удалённое хранилищеПоэтому локальность доступа влияет на производительность. Последовательный обход массива обычно дружелюбнее к кэшу, чем случайные обращения по большому графу объектов.
Централизованная система
Вычисления и основное состояние сосредоточены в одном узле или тесно связанном компьютере.
Плюсы: проще согласованность, диагностика и транзакции. Минусы: вертикальный предел ресурсов и крупная область отказа.
Распределённая система
Автономные узлы взаимодействуют по сети. Это даёт горизонтальное масштабирование и изоляцию части отказов, но добавляет задержку, частичные отказы, повторную доставку, рассинхронизацию часов и необходимость согласования состояния.
Сеть нельзя считать «медленной функцией»: ответ может потеряться после успешной обработки, поэтому клиент не знает, можно ли безопасно повторить запрос.
Что важно Java-инженеру
- CPU-bound и I/O-bound нагрузка требуют разных моделей параллелизма;
- выделение памяти и локальность отражаются на GC и кэшах;
- системный вызов и сеть гораздо дороже операции в регистре;
- увеличение числа потоков не создаёт дополнительные ядра;
- в распределённой системе отказ бывает частичным.
Связано: Сети передачи данных, Системы отображения информации.
Самопроверка
- Почему кэш процессора влияет на структуру данных?
- Чем частичный отказ отличается от падения процесса?
- Когда централизованное решение предпочтительнее распределённого?