Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Митряев лекции / РИС гр.446зс 2015 / РИС Л.9. гр.445 (2015).docx
Скачиваний:
940
Добавлен:
25.03.2016
Размер:
7.11 Mб
Скачать
  1. Многопроцессорные компьютеры

Многопроцессорный компьютер это вычислительная система, состоящая из нескольких процессоров в маленьком масштабе, обычно внутри одной большой коробки.

Этот тип компьютерной системы отличается от локальных сетей по следующим показателям:

1. Его процессоры гомогенны, т.е. они идентичны по аппаратуре.

2. Географический масштаб машины очень маленький, обычно порядка метра или менее.

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

Если основное назначение многопроцессорного компьютера это повышение скорости вычислений, то он часто называется параллельным компьютером.

Если его основное назначение – повышение надежности, то он часто называется система репликации.

Параллельные компьютеры подразделяются на:

  • одно-командные много-поточные по данным (или SIMD);

  • много-командные много-поточные по данным (или MIMD) машины.

SIMD машины имеют один интерпретатор инструкций, но команды выполняются большим числом арифметических блоков.

Ясно, что эти блоки имеют недостаток автономности, которая требуется в определении распределенных систем, и поэтому SIMD компьютеры не используются в РИС.

MIMD машины состоят из нескольких независимых процессоров и они классифицируются как распределенные системы.

Процессоры обычно оборудуются специальной аппаратурой для коммуникации с другими процессорами.

Коммуникация между процессорами может иметь место либо через шину, либо через соединения точка-точка. Если выбрана шинная организация, то архитектура масштабируема только до определенного уровня.

Очень популярным процессором для разработки многопроцессорных компьютеров является транспьютер, разработанный Inmos; см. рис.7.

Транспьютер состоит из:

  • центрального процессора (CPU),

  • специального блока с плавающей точкой (FPU),

  • локальной памяти,

  • и четырех специальных процессоров.

Чипы очень хорошо подходят для построения сетей степени 4 (т.е. каждый узел соединен с четырьмя другими узлами).

Inmos также производит специальные чипы для коммуникации, называемые маршрутизаторами.

Каждый маршрутизатор может одновременно обрабатывать трафик 32 транспьютерных соединений.

Каждое входящее сообщение просматривается на предмет того, по какой связи оно может быть перенаправлено; затем оно направляется по этой связи.

F

P

U

C P U

П а м я т ь

Процессор

связи

Шина

Рис. 7. Транспьютер и микросхема маршрутизатора

Другой пример параллельного компьютера это система Connection Machine CM-5, разработанная Thinking Machines Corporation.

Каждый узел машины состоит из быстрого процессора и обрабатывающих блоков, таким образом, предлагая внутренний параллелизм в добавление параллелизму, происходящему благодаря наличию нескольких узлов.

Так как каждый узел имеет потенциальную производительность 128 миллионов операций в секунду, и одна машина может содержать 16384 узлов, полная машина может выполнять свыше 1012 операций в секунду. (Максимальная машина из 16384 процессоров занимает комнату 900 м2 и скорее всего очень дорогая.)

Узлы СМ-5 соединены тремя точка-точка коммуникационными сетями.

Сеть данных, с топологией толстого дерева, используется для обмена данными по технологии точка-точка между процессорами.

Сеть управления, с технологией бинарного дерева, осуществляет специальные операции, такие как глобальная синхронизация и комбинирование ввода.

Диагностическая сеть невидима для программиста и используется для распространения информации о вышедших из строя компонентах..

Компьютер может быть запрограммирован как в режиме SIMD, так и в (синхронном) MIMD режиме.

В параллельном компьютере вычисления поделены на подвычисления, каждое осуществляется одним из узлов.

В репликационной системе каждый узел проводит вычисление целиком, после чего результаты сравниваются для того, чтобы обнаружить и скорректировать ошибки.

Построение многопроцессорных компьютеров требует решения нескольких алгоритмических проблем, некоторые из которых подобны проблемам в компьютерных сетях:

  1. Разработка системы передачи сообщений.

Если многопроцессорный компьютер организован как сеть точка-точка, то должна быть разработана коммуникационная система. Это обладает проблемами подобными тем, которые возникают в разработке компьютерных сетей, таким как управление передачей, маршрутизация, и предотвращение тупиков и перегрузок. Решения этих проблем часто проще, чем в общем случае компьютерных сетей. Проблема маршрутизации, например, очень упрощена регулярностью сетевой топологии (например, кольцо или сетка) и надежностью узлов.

Inmos С104 маршрутизаторы используют очень простой алгоритм маршрутизации, называемый внутренней маршрутизацией он не может быть использован в сетях с произвольной топологией. Это поднимает вопрос могут ли использоваться решения для проблем, например, предотвращение тупиков, в комбинации с механизмом маршрутизации.

  1. Разработка виртуальной разделяемой памяти.

Многие параллельные алгоритмы разработаны для так называемой модели параллельной памяти с произвольным доступом (PRAM), в которой каждый процессор имеет доступ к разделяемой памяти.

Архитектуры с памятью, которая разделяется физически, не масштабируются; здесь имеет место жесткий предел числа процессоров, которые могут быть обслужены одним чипом памяти.

Поэтому исследования направлены на архитектуры, которые имеют несколько узлов памяти, подсоединенных к процессорам через интерсеть. Такая интерсеть может быть построена, например, из траспьютеров.

  1. Балансировка загрузки.

Вычислительная мощь параллельного компьютера эксплуатируется только, если рабочая нагрузка вычислений распределена равномерно по процессорам. Концентрация работы на одном узле понижает производительность до производительности одного узла.

Если все шаги вычислений могут быть определены во время компиляции, то возможно распределить их статически. Более трудный случай возникает, когда блоки работы создаются динамически во время вычисления; в этом случае требуются сложные методы. Очереди задач процессоров должны регулярно сравниваться, после чего задачи должны мигрировать от одной к другой.

Компиля́тор— Компьютерная программа, выполняющаякомпиляцию.

Компиля́циятрансляция программы, составленной на исходномязыке высокого уровняв эквивалентную программу нанизкоуровневом языке, близкоммашинному коду(абсолютный код,объектный модуль, иногда наязык ассемблера). Входной информацией для компилятора (исходный код) является описание алгоритма или программа наобъектно-ориентированном языке, а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код).

Компили́ровать— проводить трансляцию машинной программы с любого языка программирования на машинно-ориентированный язык.

  1. Робастость против необнаруживаемых сбоев.

В репликационной системе должен быть механизм для преодоления сбоев в одном или нескольких процессорах.

Конечно, компьютерные сети должны также продолжать функционирование, несмотря на сбои узла, но обычно предполагается, что такой сбой может быть обнаружен другими узлами.

Предположения, при которых репликационные системы должны оставаться правильными, более строгие, т.к. процессор может производить ошибочный ответ, и в то же время кооперироваться с другими при помощи протоколов как правильно работающий процессор. Должен быть внедрен механизм голосования, чтобы отфильтровывать результаты процессоров, так, что только правильные ответы передаются во все время, пока большинство процессоров работает правильно.