Поддержка многозадачности, многоядерность и виртуализация (обзор)

Темы без привязки к практике.

Общий принцип развития компьютерной техники:

  1. Актуальная задача
  2. Решение задачи современными техническими методами
  3. Превращение этого решения в легаси на многие десятилетия

Общая задача масштабирования

Требования:

  1. Простой процессора ⇒ запуск нескольких задач в режиме разделения времени
    • Скорее всего, пакетный вариант (задача или успевает отработать за один запуск, или снимается с выполнения + очередь таких задач)
  2. (условное) Разделение задач на «обменные» и «счётные»: пока обменная задача ждёт конца операции ввода-вывода, счётная может немного посчитать
    • Вытесняющая многозадачность с приоритетом и планировщиком
    • Виртуализация памяти для задач, MMU
  3. Если очередь велика или их несколько (сложные/перегруженные/реалтайм операционные системы и комплексы), возникает необходимость актуально одновременного (а не вытесняющего) выполнения задач
    • ⇒ многоядерность и многопоточность
  4. Простой процессора ⇒ запуск нескольких программных окружений (ядер ОС)
    • Виртуализация ресурсов, в первую очередь внешних устройств, а для памяти — двойная виртуализация (например, виртуальный MMU для ядра)

Вытесняющая многозадачность

Общий алгоритм:

Правила смены контекстов определяет т. н. «планировщик» (scheduler) — часть ядра

Основные проблемы:

Блок управления памятью (MMU):

Менее очевидные проблемы:

Дублирование вычислительных устройств

Причины появления:

Многоядерность

Исторически первое, более «простое» решение (нет)

Проблемы:

Многопоточность (hardware threads, harts)

Вводятся две абстракции:

Модель доступа к ресурсам (в первую очередь памяти, и как следствие MMIO) оперирует понятием hart в качестве субъекта доступа.

Иными словами не «понавтыкали процессоров, а теперь пытаемся понять, как с этим жить», а «разработали модель множественного доступа, и теперь пытаемся понять, как это изваять в кремнии».

(Про execution environment и hart в спецификации, См. также Hyper-threading)

Отличия от многоядерности:

Что произойдёт, если не строить такую модель?

Это было краткое описание семейства атак Spectre

Виртуализация

Задача: равномерная/произвольная загрузка вычислительных мощностей готовыми «appliance»

Условие: «appliance» — это «окружение», операционная система, состоящая из ядра и юзерспейса

Решение: второй уровень косвенности, при котором операционная система запускается под управлением гипервизора.

Аппаратные потребности:

Бонусы:

BTW: RISC-V — 4 уровня

LecturesCMC/ArchitectureAssembler2022/12_ScalingVirtualization (последним исправлял пользователь FrBrGeorge 2022-05-17 11:28:28)