Прежде, чем перейти к изложению основного материала ограничим наше рассмотрение относительно общей, но очень важной моделью современной вычислительной системы, сформулированной в первой половине XX века математиком Фон-Нейманом. Эта модель оказалась базовой при проектировании практически всех современных компьютерных систем, включая суперкомпьютеры.
Модель состоит из четырех ключевых компонентов:
- Система памяти, которая хранит как команды, так и данные. Известна как система с хранимой программой. Доступ к этой памяти осуществляется с помощью регистра адреса, куда подсистема памяти помещает адрес ячейки памяти и регистра данных, куда она помещает данные из ячейки с указанным адресом.
- По крайней мере один блок обработки данных, наиболее известный как арифметико-логическое устройство. Эти блоки чаще называют центральными процессорами (CPU). Этот блок отвечает за выполнение всех команд. Процессор также имеет небольшой объем памяти, называемый набором регистров.
- Блок управления, отвечающий за операции между компонентами модели. Включает в себя счетчик команд, содержащий следующую команду для загрузки, и регистр команд, в котором находится текущая команда.
- Системе необходим энергонезависимый способ хранения данных, а также выдача их пользователю и принятия входных данных. Это осуществляется подсистемой ввода-вывода (I/O)/
Несмотря на существенный прогресс в компьютерной технике за последние 60 лет, устройство компьютера по-прежнему умещается в этих рамках. Основные идеи, заложенные фон Нейманом и его коллегами, среди которых были Алан Тьюринг, Энрико Ферми и другие видные ученые, пригодны и сегодня.
|
|
Итак, основополагающими принципами архитектуры фон Неймана являются:
- принцип программного управления выполнением программы,
- принцип хранимой в памяти программы.
Они легли в основу понятия фон-Неймановской архитектуры, широко использующей счетчик команд.
Счетчик команд отражает "узкое горло", которое ограничивает поток команд, поступающих на исполнение, их последовательным анализом.
Альтернативной архитектурой является "не-фон-Неймановская" архитектура, допускающая одновременный анализ более одной команды. Поиски ее обусловлены необходимостью распараллеливания выполнения программы между несколькими исполнительными устройствами — процессорами. Счетчик команд при этом не нужен. Порядок выполнения команд определяется наличием исходной информации для выполнения каждой из них. Если несколько команд готовы к выполнению, то принципиально возможно их назначение для выполнения таким же количеством свободных процессоров. Говорят, что такие ВС управляются потоком данных (data flow).
|
|
Общая схема потоковых ВС представлена на рисунке.
Рис 1. "Идеальная" потоковая ВС
Программа или ее часть (сегмент) размещается в памяти команд ПК, состоящей из ячеек команд. Команды имеют структуру
{код операции, операнд 1,..., операнд L, адрес результата 1,..., адрес результата M}В командах проверки условия возможно альтернативное задание адреса результата (ИЛИ — ИЛИ). Адреса результатов являются адресами ПК, т.е. результаты выполнения одних команд в качестве операндов могут поступать в текст других команд. Команда не готова к выполнению, если в ее тексте отсутствует хотя бы один операнд. Ячейка, обладающая полным набором операндов, переходит в возбужденное состояние и передает в селекторную сеть информационный пакет (токен), содержащий код операции и необходимую числовую и связную информацию. Он поступает по сети на одно из исполнительных устройств. Там же операция выполняется, и в распределительную сеть выдается результирующий пакет, содержащий результат вычислений и адреса назначения в ПК (возможно, за счет выбора альтернативы, т.е. такой выбор — тоже результат). По этим адресам в ПК результат и поступает, создавая возможность активизации новых ячеек. После выдачи токена в селекторную сеть операнды в тексте команды уничтожаются, что обеспечивает повторное выполнение команды в цикле, если это необходимо.
Селекторная и распределительная сети образуют коммуникационную сеть ВС.
Ожидаемая сверхвысокая производительность такой системы может быть достигнута за счет одновременной и независимой активизации большого числа готовых команд, проблематичном допущении о бесконфликтной передаче пакетов по сетям и параллельной работы многих исполнительных устройств.
Существует ряд трудностей, в силу которых "не-фон-Неймановские" архитектуры не обрели технического воплощения для массового применения в "классическом", отраженном выше, исполнении. Однако многие устройства используют данный принцип, но чаще всего взаимодействие процессоров при совместном решении общей задачи и их синхронизация при использовании общих данных основаны на анализе готовности данных для их обработки. Это дает основание многим конструкторам заявлять, что в своих моделях они реализовали принцип data flow.
С этим принципом тесно связано основные понятия параллелизма и параллельных систем:
Уровни параллельных систем: