Архитектура аппаратных средств
Лекция · 4 академических часа
Тема: «Классификация архитектур вычислительных систем. Классификация Флинна». Сегодня мы шаг за шагом разберём, как классифицируют вычислительные системы. Сначала — базовые понятия, потом — классы SISD, SIMD, MISD, MIMD.
Мы будем идти от простого к сложному. Сначала разберём базовые понятия, без которых классификация Флинна непонятна. Потом — саму классификацию.
Цель лекции: понять, что стоит за аббревиатурами SISD, SIMD, MISD, MIMD, и научиться определять класс архитектуры для реальных устройств.
Архитектура вычислительной системы — это совокупность принципов организации, определяющих состав, взаимодействие и функционирование компонентов системы.
Важно: архитектура — это не конкретная реализация, а принцип. Одна и та же архитектура может быть реализована в разных процессорах.
Вычислительные системы очень разные: от калькулятора до суперкомпьютера. Классификация помогает в них разобраться.
Классификация Флинна — самая известная. Она делит системы по тому, сколько команд и данных они могут обрабатывать одновременно. Но чтобы её понять, нужно сначала разобраться, что такое команда, данные и поток.
Мы подробно разберём классификацию Флинна — она самая распространённая и лежит в основе понимания параллельных вычислений.
Все три классификации дополняют друг друга. Флинн отвечает на вопрос «что делают», Хокни — «как соединены», Скилликорн — «как обращаются к памяти».
Архитектура фон Неймана — принцип организации, при котором команды и данные хранятся в одной памяти и передаются по одной шине.
В классической архитектуре выделяют три основных блока.
Ключевая идея: программа хранится в той же памяти, что и данные. Это делает компьютер универсальным — меняется программа, а не «железо».
Гарвардская архитектура — альтернатива фон Нейману: команды и данные хранятся в разных памятях и передаются по разным шинам.
Современность: ПК используют фон Неймана, но с раздельными кэшами команд и данных — гибридный подход. Это позволяет совместить гибкость с производительностью.
Современные процессоры используют гибридный подход: снаружи — фон Неймана, внутри — гарвардская.
Пример: процессор Intel Core имеет кэш L1, разделённый на кэш команд (32 КБ) и кэш данных (32 КБ). Это элементы гарвардской архитектуры внутри машины фон Неймана.
SMP (Symmetric Multiprocessing) — архитектура, в которой несколько процессоров имеют равный доступ к общей памяти.
Кластер — группа компьютеров, соединённых сетью и работающих как единая система. У каждого — своя память.
NUMA (Non-Uniform Memory Access) — архитектура, в которой время доступа к памяти зависит от того, какой процессор обращается.
Прежде чем говорить о классификации Флинна, нужно понять, что такое команда. Без этого аббревиатуры SISD, SIMD и другие будут непонятны.
Команда — это элементарное указание процессору, что нужно сделать. Например: «сложи два числа», «скопируй данные», «сравни значения».
a = 2 + 3 превращается в несколько команд процессора: «загрузи 2», «загрузи 3», «сложи», «сохрани результат». Каждая из них — отдельная команда.
Теперь разберёмся, что такое данные. Команды говорят «что делать», а данные — это то, с чем нужно что-то делать.
Данные — это информация, которую процессор обрабатывает: числа, текст, изображения, звук. Данные — это «материал» для работы команд.
Мы знаем, что такое команда. Но процессор выполняет не одну команду, а последовательность команд. Эта последовательность называется потоком команд.
Поток команд — это последовательность команд, которые выполняет процессор. Одна команда за другой, как очередь.
Аналогично командам, данные тоже могут образовывать поток. Это последовательность данных, которые обрабатываются.
Поток данных — это последовательность данных, которые обрабатываются командами. Одно значение за другим.
Теперь у нас есть два ключевых понятия: поток команд и поток данных. У каждого потока может быть два варианта: один (Single) или много (Multiple).
Комбинируя «один» и «много» для команд и данных, мы получаем четыре класса. Именно это и сделал Майкл Флинн в 1966 году.
В 1966 году Майкл Флинн предложил простую, но гениальную идею: классифицировать компьютеры по тому, сколько потоков команд и потоков данных они могут обрабатывать одновременно.
У каждого потока есть два варианта: один (Single) или много (Multiple). Комбинируя их, получаем четыре класса.
Флинн не говорил, какой класс «лучше». Он просто показал, что все компьютеры можно разложить по этим четырём полочкам. Это и есть классификация.
Расшифровка: Single — один, Instruction — команда, Single — один, Data — данные. То есть одна команда обрабатывает одни данные за раз.
Как это работает: процессор выбирает одну команду из памяти, выполняет её над одними данными, записывает результат. Потом берёт следующую команду. И так далее — последовательно, шаг за шагом.
SISD — самый простой и самый распространённый класс. Почти все обычные компьютеры работают именно так.
Расшифровка: Single — одна, Instruction — команда, Multiple — много, Data — данных. То есть одна команда применяется сразу к многим данным.
Как это работает: процессор имеет несколько исполнительных блоков. Одна команда «увеличь на 1» применяется ко всем элементам массива одновременно. Результат — за один такт, а не за 100 тактов.
SIMD — основа современных вычислений. Без него не было бы ни игр, ни ИИ, ни научных симуляций.
SIMD в обычном CPU: современные процессоры имеют векторные расширения (SSE, AVX, NEON). Они позволяют выполнять одну команду над 4–16 элементами одновременно. Это как «турбо-режим» для массивов данных.
Вывод: SIMD — самый эффективный способ обработки больших массивов однотипных данных. Если задачу можно разбить на много одинаковых операций — SIMD справится лучше всего.
Расшифровка: Multiple — много, Instruction — команд, Single — одни, Data — данные. То есть много разных команд обрабатывают одни и те же данные.
Как это работает: несколько процессоров получают одни и те же данные, но обрабатывают их разными командами. Результаты сравниваются — обычно голосованием. Если один процессор дал сбой, два других «переголосуют» его.
MISD используется там, где надёжность важнее скорости. Если один процессор ошибётся — система не должна упасть.
Принцип: если один процессор ошибётся, два других дадут правильный результат. Голосование большинством отбрасывает ошибку. Это как три врача ставят диагноз независимо — если двое согласны, это верный диагноз.
Расшифровка: Multiple — много, Instruction — команд, Multiple — много, Data — данных. То есть много команд обрабатывают много данных. Каждый процессор делает своё дело.
Как это работает: каждый процессор (или ядро) выполняет свою программу над своими данными. Процессоры могут обмениваться данными, но работают независимо.
MIMD — самый мощный класс. Он позволяет решать задачи, которые невозможно решить на одном процессоре.
MIMD — основа современной IT-инфраструктуры. Облачные серверы, дата-центры, суперкомпьютеры — всё это MIMD. Каждый процессор работает независимо, но вместе они решают одну большую задачу.
MIMD — самый универсальный класс. Он подходит для любых задач, которые можно разбить на независимые части.
Современные устройства часто совмещают классы. Смартфон: CPU — MIMD, GPU — SIMD, NPU — SIMD. Это гетерогенные вычисления.
Что даёт классификация Флинна:
Хокни (1978) предложил классифицировать системы по способу соединения процессоров.
Хокни учитывает топологию соединения: шина, звезда, кольцо, сетка, гиперкуб. Это важно для оценки задержек и масштабируемости.
Скилликорн (1989) предложил классифицировать системы по способу доступа к памяти.
Скилликорн — самый современный подход. Он учитывает, как процессоры обращаются к памяти, что важно для программистов.
Выбор типа памяти влияет на сложность программирования и масштабируемость. Общая память проще для программиста, распределённая — масштабируемее.
Специализированные системы (GPU, NPU) эффективнее универсальных в своих задачах, но не могут решать всё подряд.
Все классификации дополняют друг друга. Для полного описания системы используют несколько подходов.
Гетерогенные вычисления — совместное использование разных типов процессоров. Каждый решает свою задачу лучше остальных.
Цель: научиться определять класс архитектуры по Флинну для реальных устройств.
Задание: заполните таблицу.
Ответьте на вопросы:
Мы рассмотрели:
Понимание классификации архитектур позволяет понять, почему одни устройства быстрее других в определённых задачах, и как выбирать систему под конкретные нужды.
Вопросы?
Следующая тема — итоговое занятие и дифференцированный зачёт.