
- •Организация эвм и систем
- •Глава 6 Организация памяти
- •Глава 1. Структура современного компьютера
- •1.1 Основные понятия
- •1.2 Принцип действия компьютера
- •Цикл работы компьютера
- •1.3 Программное обеспечение компьютера
- •1.4 Надежность, производительность и показатели быстродействия
- •Производительность компьютера
- •Технико-эксплуатационные характеристики
- •1.5 Вычислительные системы и сети
- •Вопросы для самопроверки
- •Глава 2 представление информации в компьютере
- •5.2 Система команд. Форматы команд и способы адресации
- •5.3 Система прерываний и приостановок, состояние процессора
- •Характеристики системы прерываний
- •Организация перехода к прерывающей программе
- •5.4 Режимы работы процессора: однопрограммный, пакетный, разделения времени, реального времени
- •5.5 CisCиRisCкомпьютеры
- •Процессоры персональных компьютеров
- •5.6 Устройства управления
- •Устройства управления с хранимой в памяти логикой
- •5.7 Методы и средства повышения производительности процессоров персональных компьютеров
- •Суперскалярная обработка
- •Переименование регистров
- •Динамическое прогнозирование условных переходов
- •Контроллер памяти Контроллер pci
- •Вопросы для самопроверки
- •Глава 6. Организация памяти
- •6.1 Адресное пространство
- •6.2 Виды памяти
- •6.3 Оперативная память
- •Статическая и динамическая память
- •6.5 Внешняя память
- •6.6 Организация виртуальной памяти
- •Страничное, сегментное и странично-сегментное распределение
- •Свопинг
- •6.7 Защита памяти
- •Вопросы для самопроверки
- •Глава 7. Интерфейсы
- •7.1 Понятие интерфейса и его характеристики
- •7.1 Состав линий системной шины
- •Передача данных по проводным линиям связи По линиям связи современных интерфейсов преимущественно передаются низкочастотные дискретные одно - и биполярные сигналы (рисунок 7.Х).
- •Адрес верный
- •7.2 Подключение устройств
- •7.4 Интерфейсы внешней памяти
- •7.5 Малые интерфейсы (usb,ide,rs-232c,scsi)
- •Вопросы для самопроверки
- •Глава 8. Периферийные устройства компьютеров
- •8.1 Организация систем ввода-вывода. Каналы, контроллеры
- •Основные функции свв
- •Программный ввод-вывод
- •Прямой доступ в память
- •8.2 Клавиатура и мышь
- •8.3 Дисплеи
- •8.4 Принтеры
- •8.5 Накопители на магнитных дисках
- •Структура накопителя на жестких дисках
- •Структура и особенности накопителя на гмд
- •8.6 Накопители на компакт-дисках (cd-rom, cd-r, cd-rw, dvd)
- •8.7 Другие виды периферийных устройств
- •Вопросы для самопроверки
- •Какие особенности пу делают возможным организацию параллельной обработки и ввода-вывода?
- •Закон Амдала
- •Совместно используемая и распределенная память
- •Когерентность кэш-памяти
- •Наибольшее распространение получили следующие аппаратные механизмы, реализующие протокол когерентности кэш-памяти: это протоколы наблюдения и на основе справочника.
- •9.2 Конвейерные системы
- •Векторные регистры
- •9.3 Симметричные системы
- •9.4 Вычислительные системы со сверхдлинным командным словом
- •9.5 Другие виды мультипроцессорных систем
- •Машины с массовым параллелизмом
- •Нейрокомпьютеры
- •9.6 Проблемно-ориентированные системы
- •Вопросы для самопроверки
- •Глава 10. Организация вычислительного процесса
- •12.2 Системы автоматического контроля и диагностики
- •Контроль передач информации
- •Контроль арифметических операций
- •12.3 Защита памяти. Raid-массивы
- •12.4 Построение «безотказных» систем питания Вопросы для самопроверки
- •Список литературы
9.5 Другие виды мультипроцессорных систем
В настоящее время существует огромное разнообразие различных структур мультипроцессорных систем. Некоторые их этих структур находят применение в персональных компьютерах, некоторые служат основой для компьютеров сверхвысокого быстродействия, а какие-то пока изучаются на уровне моделей. Некоторые подобные структуры рассмотрены ниже.
Машины с массовым параллелизмом
Обычно машина с массовым параллелизмом состоит из ведущего модуля (ВМ), модулей обработки (МО) и коммутирующей сети (КС), в них часто используется супервизорная магистраль (СМ), рисунок 9.х.
КС
ВМ МО1 МО2 МОN
СМ
Рисунок 9.х. Машина с массовым параллелизмом
В качестве ведущего модуля используют ту или иную «промышленную» ЭВМ, которая служит для управления всеми модулями обработки, загрузки их данными и выдачи результатов. Коммутирующая сеть реализуется различными способами – от двумерной до многомерной сети, дерева, тора и т.п. Супервизорная магистраль служит для передачи команд и приказов. Как правило, разрядность модуля обработки невелика – от 1 до 16 бит. Частота синхронизации ограничена, тем не менее, она достигает 200 - 500 МГц.
К таким машинам предъявляются взаимоисключающие требования. Во-первых, число элементарных процессоров в них может достигать нескольких тысяч и, во-вторых, при таком большом числе ПЭ становятся значительно длиннее цепи управления и передачи данных, т.е. снижается тактовая частота.
Помимо модулей обработки «общего назначения» в состав таких машин могут входить различные специализированные модули. Примерами систем с массовым параллелизмом могут служить T3D фирмы Cray Research, Paragon фирмы Intel, CM5 фирмы Thinking Machines. Нужно отметить, что эти машины были разработаны в середине 90-х годов прошлого столетия и позже.
Матричные системы
Матричные ВС представляют собой синхронные системы ОКМД-типа. В таких ВС используется большое число одинаковых обрабатывающих элементов, выполняющих одну операцию, но над различными данными (рисунок 9.х). Большое количество одинаковых СБИС делает их привлекательными не только с технологических позиций, но и с точки зрения повышения производительности. Так, если производительность одного ПЭ составляет PПЭ, то максимальная производительность всей ВСPВСизnэлементов будет вnраз выше, т.е.
PВС =nPПЭ.
Очевидно, что матричные системы предназначены для обработки векторов и матриц, когда однотипной обработке подвергается большое количество элементов данных. Однако одновременный доступ в память для получения данных и сохранения результатов, а также необходимость выполнения операторов условной обработки приводит к ряду проблем и снижает производительность.
Рисунок 9.х Принцип матричной обработки и обобщенная структура матричной ВС
Управляющий процессор (УП) матричной ВС служит для передачи команд матричной обработки на обрабатывающие ПЭ, организует работу системы ввода-вывода данных и управляет коммуникационной сетью. Каждый ПЭ обладает собственной локальной памятью (ЛП), в которой хранятся соответствующие элементы векторов или матриц. Обрабатывающие ПЭ служат для выполнения арифметических и логических команд, но не выполняют команд условных переходов, которые реализуются в УП.
ПЭ могут быть предназначены для обработки слов или отдельных разрядов; в первом случае матричные системы обычно служат для научно-технических расчетов и управления сложными процессами, а во втором – для обработки изображений.
Коммуникационные сети в матричных ВС должны обладать очень высокой пропускной способностью. В каждом ПЭ должен быть организован буфер команд достаточно большой глубины. Если отказаться от размещения операндов в общей памяти, то выборку команд и операндов можно выполнять параллельно. Все это приводит к тому, что эффективная производительность матричной ВС зависит не только от алгоритма, но и от размещения исходных данных.
Впервые идея матричной ВС нашла воплощение в проекте системы SOLOMON, но из-за конструктивно-технологических причин его реализация оказалась неэффективной. Дальнейшее развитие идея матричной обработки получила в системеILLIAC-IY; был построен только один «квадрант» из 64 ПЭ, но он эксплуатировался для военных целей в США в течение нескольких лет, начиная с 1974 г. В дальнейшем были созданы системыMasParMP-1,ConnectionMachine,MPP,DAP-610 и ряд других. В них использовалась от 1024 до 65536 одноразрядных и четырехразрядных (MP-1) ПЭ, а коммуникационная сеть строилась по принципу организации решетчатых связей с четырьмя ближайшими соседями, Х-связей (MP-1) или по принципу гиперкуба (СМ). Все эти матричные системы можно отнести к архитектурам типа «ПЭ-ПЭ». Но в ряде матричных ВС коммуникационная сеть находится между ПЭ и модулями памяти; это системы типа «ПЭ-память». К ним можно отнестиBSPфирмыBurroughsиTRACфирмыTexasInstruments.
Систолические системы
Проблема повышения производительности ВС связана с большими затратами времени при обращении в память. Для снижения этих затрат в современных ВС память, как описано выше, организуют в виде нескольких уровней. Однако возможен и иной подход, совмещающий преимущества матричной и конвейерной обработки: все стадии обработки каждого элемента данных должны быть выполнены, прежде чем результат будет отправлен в память. Этот принцип реализуется систолической матрицей (рисунок 9.х), в которой все ПЭ объединены прямыми и регулярными связями, образующими конвейеры. По этим конвейерам «прокачиваются» операнды, т.е. каждый элемент данных извлекается из памяти, ритмически продвигается по матрице ПЭ и результат заносится опять в память.
Рисунок 9.х Принцип систолической обработки
Преимущества систолической обработки очевидны:
минимизируется число обращений в память, при обработке каждый элемент данных выбирается и заносится в память однократно крайними ПЭ;
облегчается решение проблем ввода-вывода вследствие уменьшения конфликтов при обращениях в память;
эффективно используются возможности СБИС за счет регулярности структуры систолической матрицы;
минимизируются длины связей между ПЭ за счет регулярности потоков данных и управляющих сигналов;
производительность систолической матрицы можно увеличить, добавляя в нее ПЭ.
Однако для реализации этих преимуществ необходимо найти соответствующие «систолические» алгоритмы. Такие алгоритмы найдены для широкого спектра задач. Большинство этих алгоритмов сводится к рекуррентным соотношениям того или иного вида.
Систолические матрицы могут обладать линейной, прямоугольной, гексагональной и трехмерной конфигурацией. Каждая конфигурация приспособлена для определенных функций: линейная – для реализации алгоритмов фильтрации при обработки сигналов и сравнения цепочек литер при обработке баз данных, прямоугольная – для перемножения матриц и нахождения двумерного преобразования Фурье и т.д.
Для пояснения принципов действия систолической структуры рассмотрим реализацию операции поиска вхождений. Поиск вхождений – это поиск некоторой эталонной последовательности B= (b1,b2,…,bm), гдеbj = 0, 1 или (*) в исходной последовательностиA= (a1,a2,…,an),ai= 0 или 1. Здесь символом (*) обозначено безразличное состояние соответствующего разряда.
Воспользуемся ПЭ, способными выполнять поразрядное сравнение и сохранять его результаты; объединим эти ПЭ в линейную структуру. На входы каждого ПЭ поступают значения ai иbj; каждый ПЭ производит сравнение и запоминает частичный результатr. Кроме того, он передаетai иbj на входы следующих ПЭ. Пусть мы производим поиск вхождений трехразрядного образцаB= (b1,b2,b3) в последовательностиA= (a1,a2,…,a5). На рисунке 9.х показана временная диаграмма выполнения операции цепочек литер. Вначале значенияai иbj загружаются в крайние ПЭ, откуда они начинают последовательно продвигаться по цепочке ПЭ. Элементы каждого потока, т.е.ai иai+1, разделены периодом в один такт. На третьем такте в третий ПЭ попадутa1 иb1, где и произойдет их сравнение и будет выработан и сохранен частичный результат сравненияr11. Первый окончательный результат сравненияr1 будет получен на седьмом такте в третьем ПЭ, второй результат сравнения – на восьмом такте во втором ПЭ и т.д.
Рисунок 9.х Процесс сравнения цепочек литер
Помимо ПЭ с жесткими связями существуют программируемые ПЭ. Однако увеличение набора операций ПЭ приводит к снижению производительности, усложнению соединений и значительным затратам времени на настройку. Кроме того, соединения в систолических матрицах имеют статический характер. Но указанные недостатки практически не проявляются в специализированных ВС.
Машины, управляемые потоком данных
В основе повышения производительности всех ВС лежит принцип совмещения операций и организации параллельной обработки. При этом в традиционных машинах команды выполняются в порядке их расположения в памяти, т.е. в ВС сохраняется последовательный характер командного управления, для чего используют счетчик (или в мультипроцессорных ВС несколько счетчиков) команд. Но наивысшей степени параллелизма можно достичь, если отказаться от дополнительных ограничений, присущих принципу командного управления. Альтернативными принципами является управление потоком данных и запросов.
При управлении потоком данных команда (инструкция) выполняется тогда, когда становятся доступными ее операнды, а при управлении потоком запросов – когда ее результат требуется другим командам.
В машинах, управляемых потоком данных (МПД), отсутствует понятие программы как последовательности команд, т.е. в ней отсутствует счетчик команд. Команда передается на исполнение при создании условий для ее реализации. Одновременно при наличии достаточных аппаратных средств может выполняться произвольное число готовых к исполнению команд. Однако реализация принципа управления потоком данных вызывает ряд трудностей, к числу которых нужно отнести громоздкость программы, обработку итерационных циклов и работу со структурами данных.
Для описания обработки наиболее распространенной формой программы служит граф потока данных (ГПД). Такой граф состоит из вершин (узлов) для обозначения необходимых операций и дуг (ребер), по которым передаются метки, или токены данных. Точка вершины, в которую входит дуга, называется входным портом (или входом), а точка, из которой она выходит, – выходом. «Срабатывание» вершины означает выполнение инструкции; обычно оно происходит при наличии хотя бы одного токена на каждом из ее входов. Срабатывание вершины сопровождается удалением одного токена из каждого входного порта и размещением одного токена в выходном порту. На рисунке 9.х приведен пример простого ГПД для вычисления выражения F = (x + y)2.
xy
x+y
(x+y)2
Рисунок 9.х. Пример ГПД
Но функциональные вершины позволяют строить лишь линейные программы, а в практических задачах возникает потребность в вычислениях при выполнении определенных условий. Для таких операций в ГПД используют вершины ветвления BR и слияния M. Вершина ветвления имеет два входных порта: «c» и «v»; на вход «v» подается токен данных, а на вход «c» - токен управления, в зависимости от значения которого токен данных передается на один из двух выходов вершины «t» или «f»:
если c = 0, то v f,
если c = 1, то v t.
Базовую архитектуру МПДможно представить в виде четырех устройств (рисунок 9.х): устройства обработки (УО), состоящего из множества процессорных элементов, блока управления и памяти инструкций (ПИ), в каждой ячейке которого хранится инструкция и производится ее подготовка к исполнению, распределительной (РС) и селекторной (СС) сетей. Естественно, что кроме этих устройств в системе должны быть предусмотрены средства ввода-вывода. Инструкция для двух операндов имеет следующий вид:
Op LO RO FL FR D,
где Op– код подлежащей выполнению операции,LOиRO– поля операндов,FLиFR– флаги готовности, аD– поле назначения, определяющее инструкцию-получателя результата.
Инструкция передается на выполнение по распределительной сети, когда в ней присутствуют два операнда (об этом говорят флаги готовности). Результат вновь передается в память по селекторной сети в виде значения Val и назначения D и попадает в соответствующую инструкцию. Если этот результат является вторым операндом, то новая инструкция вновь передается на исполнение; но если он служит лишь первым операндом, то происходит лишь установка соответствующего флага готовности операнда. Так продолжается до тех пор, пока не будет получен окончательный результат.
УО
Op LO RO FL FR D Val D
ПИ
Рисунок 9.х. Структура МПД
Рассмотренная МПД относится к статическим. Очевидное достоинство этой машины состоит в отсутствии дополнительных расходов времени на управление и синхронизацию исполнения инструкций; каждая инструкция выполняется, как только в нее поступают операнды. Однако система не обладает свойством повторной входимости, т.е. однократно использованный токен не может быть использован еще раз. Кроме того, каждый элемент данных должен рассматриваться как автономный объект; если же элементы объединить в структуру (например, список), то автономным объектам становится такая структура, т.е. очередная инструкция по ее обработке не может быть начата до завершения предыдущей.
Для построения динамических архитектур МПД, способных выполнять циклические вычисления, используют механизмы копирования и раскраски токенов. Механизм копирования предполагает возможность получения копий исполняемой программы. Из-за значительных затрат времени и объемов памяти при полном копировании предпочтение отдают организации с частным копированием, одним из вариантов которого и является раскраска токенов. При раскраске каждому токену приписывается тег, определяющий номер итерационного цикла. Тогда поступающие во входные порты токены имеют различные теги, но исполнение инструкции происходит только при наличии в этих портах токенов с одинаковыми тегами. Динамические архитектуры значительно сложнее, однако они позволяют добиться более высокого уровня параллелизма при выполнении циклов и обрабатывать структуры данных.
В настоящее время промышленных МПД общего назначения не существует, однако принцип управления потоком данных находит применение в специализированных процессорах для обработки сигналов и изображений, а также для организации суперскалярности в процессорах Intel.
Машины, управляемые потоком запросов
Механизм управления по запросу состоит в исполнении инструкции, только когда для продолжения вычислений требуется ее результат. В основе такой модели лежит представление вычислительного процесса в виде графа, а обработка его вершин «снизу вверх» получила название редукции графа. Поэтому машины, управляемые потоком запросов, называют также редукционными.
Предположим, что необходимо вычислить выражение a = (b + c)2 – d/c. В таком случае необходимо спуститься вниз, породив запрос значений (b + c) 2 и d/c. Затем нужно найти значения (b + c) и d/c и лишь после этого можно подняться на один шаг, т.е. найти значение (b + c)2. Затем можно выполнить внешнюю операцию вычитания. Процесс порождения запросов продолжается до тех пор, пока не будет встречен оператор, готовый к выполнению. Этот процесс сопровождается ростом числа параллельных процессов, но его легко контролировать, т.е. можно задержать формирование запроса. Каждый выполненный оператор заменяется результатом, передаваемым «снизу вверх», давая возможность найти результат предыдущего оператора. Можно сохранить найденный результат, заменив им соответствующую операцию, тогда при последующих обращениях к этому оператору повторного вычисления не потребуется. Известны две модели редукционных систем: строчная и графовая, отличающиеся тем, что передается в запрос – вычисленные значения или указатели на места их хранения. В настоящее время редукционные машины существуют только в виде моделей.