von карина пазий Vor 2 Jahren
119
Mehr dazu
Мультипроцессорная система реализуется в одном компьютере. Достижение параллелизма в ней происходит благодаря возможности независимой работы отдельных устройств: нескольких процессоров, блоков оперативной памяти, шин и т. д. Мультипроцессорная система может использовать разные способы доступа к общей для всей системы памяти. Все процессоры могут иметь равный (однородный) доступ к единой памяти. К такому типу относятся мощнейшие в мире суперкомпьютеры семейства Cray. Другое решение: для каждого процессора выделяется свой раздел памяти компьютера.
На сегодняшний день кластерные системы — это самый дешевый способ организации параллельных вычислений, поскольку для них можно использовать уже имеющиеся у пользователя компьютеры. Однако возможности реализации взаимодействия отдельных компьютеров по сравнению с организацией узлов в мультипроцессорной системе невелики, равно как и скорость передачи данных, и это налагает ограничения на класс решаемых задач.
Первое впечатление — очень сложно, гораздо сложнее, чем на рис. 4.14. Если бы мы захотели записать этот алгоритм в виде блок-схемы, то нам бы пришлось, кроме описания порядка действий и объектов действий, сделать то, чего мы никогда при записи алгоритмов еще не делали, — предусмотреть синхронизацию параллельных процессов по времени. Например, выполнение команд 2 и 3 должно завершиться всеми участками вычислений до нового объединения чисел в пары (перехода к пункту 4), иначе даже при решении этой простой задачи наступит хаос. Но сложность не есть объективная причина отвергнуть такой путь, особенно если речь идет о возможности значительного ускорения компьютерных вычислений. То, что мы предложили выше, называется на языке программистов распараллеливанием вычислений и вполне поддается формальному описанию. Эффект ускорения вычислений очевиден: пункт 2 в приведенном выше алгоритме ускоряет соответствующий этап работы в раз!
Следующий вопрос: что надо изменить в устройстве компьютера, чтобы он смог так работать? Для реализации подобной схемы вычислений компьютеру потребуется 25 процессоров, объединенных в одну архитектуру и способных работать параллельно. Такие многопроцессорные вычислительные комплексы — реальность сегодняшней вычислительной техники.
Вернемся, однако, к описанной выше последовательности действий — в ней еще есть источники проблем. Представим себе, что в схеме на рис. 4.13 мы дорисовали еще 24 центральных процессора, соединенных с шиной. При реализации в таком компьютере команды 3 из нашего примера произойдет одновременное обращение 25 процессоров к системной не для пересылки результатов сложения в оперативную память. Но поскольку шина одна, то и числа могут пересылаться в память только по одному. Значит, для выполнения команды 3 придется организовать очередь передачу чисел в память. Тут же возникает вопрос: не сведет ли к нулю очередь все преимущества от параллельности выполнения операций на шаге 2? А если преимущества останутся, то насколько они будут велики? Окупятся ли расходы на 24 дополнительных процессора?
В возникшей ситуации естественен следующий шаг: ввод в архитектуру нескольких системных шин. А если еще подумать над возможными проблемами, то и нескольких устройств оперативной памяти.
Как видите, все это очень непросто. Обсуждаемые изменения в устройстве компьютера приводят к принципиально новым архитектурам, отличным от архитектуры фон Неймана. Изобретателям таких систем приходится искать компромисс между возрастающей сложностью (и, как следствие, — стоимостью) и ускорением их работы.
Конечно, по мере совершенствования компьютеров в этой схеме появились некоторые дополнительные возможности: небольшая собственная память у процессоров, кэш-память, так называемая конвейерная обработка, когда процессор, выполняя текущую команду, «заглядывает» в следующую и кое-что для ее выполнения делает. Все это важно, но в какой-то момент потребовалось сделать принципиальный шаг и отказаться от единичности главных устройств компьютера: либо процессора, либо оперативной памяти, либо шины, либо всего этого вместе взятого. Так родилась совершенно новая архитектура, с которой в настоящее время связываются, пожалуй, большие надежды в области роста производительности компьютеров, нежели с совершенствованием отдельных узлов.
Чтобы стало более понятным, зачем компьютеру несколько процессоров, обсудим решение простейшей математической задачи. Есть массив из 100 чисел: а1, а2,… а100. Требуется найти их сумму.
Нет ничего проще. И на компьютере, и без него мы, скорее всего, поступим так: сложим первые два числа, обозначим как-то их сумму (например, S), затем прибавим к ней третье число, и будем делать это еще 98 раз. Это пример последовательного вычислительного процесса. Его блок-схема приведена на рис. 4.14.