Catégories : Tous - алгоритм - синхронизация - процессоры - архитектура

par карина пазий Il y a 3 années

123

развитие архитектуры вычислительных систем

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

развитие архитектуры вычислительных систем

развитие архитектуры вычислительных систем

зачем нужны сверхбыстрые компьютеры

3
Моделирование интеллекта. При всех фантастических показателях объем оперативной памяти современных компьютеров составляет лишь малую долю объема памяти человека.
2
Поиск информации в гигантских базах данных, достигающих по объему хранимой информации нескольких терабайтов (1 терабайт =
1
Математические расчеты, лежащие в основе реализации математических моделей многих процессов. Гигантские вычислительные ресурсы необходимы для более надежного и долгосрочного прогноза погоды, для решения аэрокосмических задач, в том числе и оборонных, для решения многих инженерных задач и т. д.

Варианты реализации параллельных вычислительных систем

мультикомпьютерными системами

Мультипроцессорная система реализуется в одном компьютере. Дос­тижение параллелизма в ней происходит благодаря возможности независимой работы отдельных устройств: нескольких процессоров, блоков оперативной памяти, шин и т. д. Мультипроцессорная система может ис­пользовать разные способы доступа к общей для всей системы памяти. Все процессоры могут иметь равный (однородный) доступ к единой памяти. К такому типу относятся мощнейшие в мире суперкомпьютеры семейства Cray. Другое решение: для каждого процессора выделяется свой раздел памяти компьютера.

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

параллельные вычисления
Распределенные вычисления

Алгоритм последовательного решения задачи сложения массива чисел

Первое впечатление — очень сложно, гораздо сложнее, чем на рис. 4.14. Если бы мы захотели записать этот алгоритм в виде блок-схемы, то нам бы пришлось, кроме описания порядка действий и объектов действий, сделать то, чего мы никогда при записи алгоритмов еще не делали, — предусмотреть синхронизацию параллельных процессов по времени. Например, выполнение команд 2 и 3 должно завершиться всеми участ­ками вычислений до нового объединения чисел в пары (перехода к пункту 4), иначе даже при решении этой простой задачи наступит хаос. Но сложность не есть объективная причина отвергнуть такой путь, особенно если речь идет о возможности значительного ускорения компьютерных вычислений. То, что мы предложили выше, называется на языке программистов распараллеливанием вычислений и вполне поддается формальному описанию. Эффект ускорения вычислений очевиден: пункт 2 в приведенном выше алгоритме ускоряет соответствующий этап работы в раз!

Следующий вопрос: что надо изменить в устройстве компьютера, чтобы он смог так работать? Для реализации подобной схемы вычислений компьютеру потребуется 25 процессоров, объединенных в одну архитектуру и способных работать параллельно. Такие многопроцессорные вычислительные комплексы — реальность сегодняшней вычислительной техники.


Вернемся, однако, к описанной выше последовательности действий — в ней еще есть источники проблем. Представим себе, что в схеме на рис. 4.13 мы дорисовали еще 24 центральных процессора, соединенных с шиной. При реализации в таком компьютере команды 3 из нашего примера произойдет одновременное обращение 25 процессоров к системной не для пересылки результатов сложения в оперативную память. Но поскольку шина одна, то и числа могут пересылаться в память только по одному. Значит, для выполнения команды 3 придется организовать очередь передачу чисел в память. Тут же возникает вопрос: не сведет ли к нулю очередь все преимущества от параллельности выполнения операций на шаге 2? А если преимущества останутся, то насколько они будут велики? Окупятся ли расходы на 24 дополнительных процессора?

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

Как видите, все это очень непросто. Обсуждаемые изменения в устройстве компьютера приводят к принципиально новым архитектурам, отличным от архитектуры фон Неймана. Изобретателям таких систем приходится искать компромисс между возрастающей сложностью (и, как следствие, — стоимостью) и ускорением их работы.

Объединить в пары числа bi и повторить пункты 2-4, пока не останется одно число.
Поскольку у нас осталось еще 50 необработанных чисел (а51, … а100), повторить пункты 1-3. После этого имеем на доске 50 чисел: b1 = а1 + а2, ..., b50 = а99 + а100 — результаты парных сложений.
Дать команду «Записывай!» — Каждый записывает мелом на классной доске свой результат.
Объединить числа в пары — по два на каждого ученика (итого распределим 50 чисел): например, ученик Петя Иванов берет себе ах и а2, ученик Ваня Петров — а 3 и а4, и т. д.
Дать команду «Складывай!» — Каждый складывает свои числа.

Как можно ускорить работу компьютера

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

Чтобы стало более понятным, зачем компьютеру несколько процессоров, обсудим решение простейшей математической задачи. Есть массив из 100 чисел: а1, а2,… а100. Требуется найти их сумму.

Нет ничего проще. И на компьютере, и без него мы, скорее всего, поступим так: сложим первые два числа, обозначим как-то их сумму (например, S), затем прибавим к ней третье число, и будем делать это еще 98 раз. Это пример последовательного вычислительного процесса. Его блок-схема приведена на рис. 4.14.


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