Главная arrow Учебники arrow Информатика и ИКТ 10-11 класс Семакин 2012 arrow §21 Развитие архитектуры вычислительных систем

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

Информатика и ИКТ 10-11 класс Семакин, Информатика 10-11 класс Семакин, Развитие архитектуры вычислительных систем, Зачем нужны сверхбыстрые компьютеры, Как можно ускорить работу компьютера, Варианты реализации параллельных вычислительных систем

Продолжим обсуждение того, в каких направлениях развивается архитектура вычислительных систем.
Этот процесс определяется, с одной стороны, требованиями большей эффективности и скорости обработки информации, с другой — появлением новых технических возможностей.
Зачем нужны сверхбыстрые компьютеры
Несмотря на стремительно нарастающую производительность компьютеров, которая каждые 4-5 лет практически по важнейшим показателям удваивается, всегда есть классы задач, для которых даже такой производительности не хватает. Укажем некоторые из них.
1. Математические расчеты, лежащие в основе реализации математических моделей многих процессов. Гигантские вычислительные ресурсы необходимы для более надежного и долгосрочного прогноза погоды, для решения аэрокосмических задач, в том числе и оборонных, для решения многих инженерных задач и т. д.
2. Поиск информации в гигантских базах данных, достигающих по объему хранимой информации нескольких терабайтов (1 терабайт = 1024 Гбайт = 1012байт).
3. Моделирование интеллекта. При всех фантастических показателях объем оперативной памяти современных компьютеров составляет лишь малую долю объема памяти человека.
Как можно ускорить работу компьютера
Вернемся к архитектуре компьютера четвертого поколения, изображенной на рис. 4.1. У компьютера имеется много внешних устройств, но только один, нацеленный непосредственно на выполнение программы, процессор (контроллеры не в счет, у них иные функции), одна шина и одна оперативная память. При решении с помощью такого компьютера любой задачи основной цикл работы состоит из следующих этапов:
1) процессор считывает очередную команду программы;
2) эта команда расшифровывается, из оперативной памяти извлекаются указанные в ней данные, над ними выполняется требуемое действие;
3) результаты действия записываются в оперативную память (если действие того требует) и всё повторяется заново, пока не произойдет остановка по какой-то причине.
Конечно, по мере совершенствования компьютеров в этой схеме появились некоторые дополнительные возможности: небольшая собственная память у процессоров, кэш-память, так называемая конвейерная обработка, когда процессор, выполняя текущую команду, «заглядывает» в следующую и кое-что для ее выполнения делает. Все это важно, но в какой-то момент потребовалось сделать принципиальный шаг и отказаться от единичности главных устройств компьютера: либо процессора, либо оперативной памяти, либо шины, либо всего этого вместе взятого. Так родилась совершенно новая архитектура, с которой в настоящее время связываются, пожалуй, большие надежды в области роста производительности компьютеров, нежели с совершенствованием отдельных узлов.
Чтобы стало более понятным, зачем компьютеру несколько процессоров, обсудим решение простейшей математической задачи. Есть массив из 100 чисел: a1 a2, . . . a100 - Требуется найти их сумму.
Нет ничего проще. И на компьютере, и без него мы, скорее всего, поступим так: сложим первые два числа, обозначим как-то их сумму (например, S), затем прибавим к ней третье число, и будем делать это еще 98 раз. Это пример последовательного вычислительного процесса. Его блок-схема приведена на рис. 4.14.
Алгоритм последовательного решения задачи сложения массива чисел
Поскольку ни у кого из нас нет второй головы, то иначе эту задачу в одиночку не решить. Но представим, что мы решаем ее не в одиночку, а всем классом (25 человек). Тогда возникает возможность совсем иной последовательности действий:
1. Объединить числа в пары — по два на каждого ученика (итого распределим 50 чисел): например, ученик Петя Иванов берет себе a1 и a2, ученик Ваня Петров — a3 и a4, и т. д.
2. Дать команду «Складывай!» — Каждый складывает свои числа.
3. Дать команду «Записывай!» — Каждый записывает мелом на классной доске свой результат.
4. Поскольку у нас осталось еще 50 необработанных чисел (a51 . . . a100)» повторить пункты 1-3. После этого имеем на доске 50 чисел: b1 = a1 + a1, . . . b50 = a99 + a100 — результаты парных сложений.
5. Объединить в пары числа b1 и повторить пункты 2-4, пока не останется одно число.
Первое впечатление — очень сложно, гораздо сложнее, чем на рис. 4.14. Если бы мы захотели записать этот алгоритм в виде блок-схе-мы, то нам бы пришлось, кроме описания порядка действий и объектов действий, сделать то, чего мы никогда при записи алгоритмов еще не делали, — предусмотреть синхронизацию параллельных процессов по времени. Например, выполнение команд 2 и 3 должно завершиться всеми участниками вычислений до нового объединения чисел в пары (перехода к пункту 4), иначе даже при решении этой простой задачи наступит хаос.
Но сложность не есть объективная причина отвергнуть такой путь, особенно если речь идет о возможности значительного ускорения компьютерных вычислений. То, что мы предложили выше, называется на языке программистов распараллеливанием вычислений и вполне поддается формальному описанию. Эффект ускорения вычислений очевиден: пункт 2 в приведенном выше алгоритме ускоряет соответствующий этап работы в 25 раз!
Следующий вопрос: что надо изменить в устройстве компьютера, чтобы он смог так работать? Для реализации подобной схемы вычислений компьютеру потребуется 25 процессоров, объединенных в одну архитектуру и способных работать параллельно. Такие многопроцессорные вычислительные комплексы — реальность сегодняшней вычислительной техники.
Вернемся, однако, к описанной выше последовательности действий — в ней еще есть источники проблем. Представим себе, что в схеме на рис. 4.1 мы дорисовали еще 24 центральных процессора, соединенных с шиной. При реализации в таком компьютере команды 3 из нашего примера произойдет одновременное обращение 25 процессоров к системной шине для пересылки результатов сложения в оперативную память. Но поскольку шина одна, то и числа могут пересылаться в память только по одному. Значит, для выполнения команды 3 придется организовать очередь на передачу чисел в память. Тут же возникает вопрос: не сведет ли к нулю эта очередь все преимущества от параллельности выполнения операций на шаге 2? А если преимущества останутся, то насколько они будут велики? Окупятся ли расходы на 24 дополнительных процессора?
В возникшей ситуации естественен следующий шаг: ввод в архитектуру нескольких системных шин. А если еще подумать над возможными проблемами, то и нескольких устройств оперативной памяти.
Как видите, все это очень непросто. Обсуждаемые изменения в устройстве компьютера приводят к принципиально новым архитектурам, отличным от архитектуры фон Неймана. Изобретателям таких систем приходится искать компромисс между возрастающей сложностью (и, как следствие, — стоимостью) и ускорением их работы.
Варианты реализации параллельных вычислительных систем
В самом общем смысле под параллельными вычислениями понимаются процессы обработки данных, в которых одновременно могут выполняться несколько машинных операций.
Распределенные вычисления — способ реализации параллельных вычислений путем использования множества компьютеров, объединенных в сеть. Такие вычислительные системы еще называют мультикомпьютер-ными системами.
Распределенные вычисления часто реализуются с помощью компьютерных кластеров — нескольких компьютеров, связанных в локальную сеть и объединенных специальным программным обеспечением, реализующим параллельный вычислительный процесс. Распределенные вычисления могут производиться и с помощью многомашинных вычислительных комплексов, образуемых объединением нескольких отдельных компьютеров через глобальные сети.
Мультипроцессорная система реализуется в одном компьютере. Достижение параллелизма в ней происходит благодаря возможности независимой работы отдельных устройств: нескольких процессоров, блоков оперативной памяти, шин и т. д. Мультипроцессорная система может использовать разные способы доступа к общей для всей системы памяти. Все процессоры могут иметь равный (однородный) доступ к единой памяти. К такому типу относятся мощнейшие в мире суперкомпьютеры семейства Cray. Другое решение: для каждого процессора выделяется свой раздел памяти компьютера.
На сегодняшний день кластерные системы — это самый дешевый способ организации параллельных вычислений, поскольку для них можно использовать уже имеющиеся у пользователя компьютеры. Однако возможности реализации взаимодействия отдельных компьютеров по сравнению с организацией узлов в мультипроцессорной системе невелики, равно как и скорость передачи данных, и это налагает ограничения на класс решаемых задач.
Система основных понятий

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

Цель поиска новых принципов архитектуры - повышение производительности компьютеров для решения классов задач, требующих высокопроизводительных вы­числений:

Математическое

моделирование

Работа с терабайтовыми базами данных

Моделирование

интеллекта

Ведущий принцип: отказ от последовательности выполнения операций

Ведущие направления развития архитектуры:

техническое

решение:

программное

решение:

техническое

решение:

программное

решение:

мультипроцессорные

системы:

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

параллельные вычисления: выделение в програм­ме нескольких одно­временно выполняе­мых действий (распа­раллеливание)

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

объединение нескольких ком­пьютеров в локаль­ную сеть для решения одной за­дачи

параллельное

выполнение

однотипных

подпрограмм