Компьютерные системы

Автор работы: Пользователь скрыл имя, 31 Января 2013 в 00:00, контрольная работа

Краткое описание

Ответы на вопросы:
Что такое многоядерность?
Что такое векторизация?
Основные особенности несимметричных мультипроцессорных систем.
Проблема миграции.
Структуры мультипроцессорных систем с современными процессорами Оpteron.
Требования, которые предъявляются к кластерам високой готовности.

Вложенные файлы: 1 файл

Компьютерные системы.doc

— 534.00 Кб (Скачать файл)

 

10. Реализация принципов векторной обработки в универсальных компьютерах:

          Рассмотрим механику векторной обработки на примере  сложения двух одномерных массивов A(NDIM) и B(NDIM) размерности NDIM и запись результата в C(NDIM):   C=A+B

         Данной операции присущ параллелизм - сложение элементов массивов Ai и Bi есть независимые процессы, которые могут исполняться параллельно. В алгоритмических языках высокого уровня (C, Fortran, Pascal и т.п.) существуют специальные операторы цикла, необходимые для исполнения данного суммирования:

do i=1, NDIM

Ci=Ai+Bi

end do

         В вычислительной системе с последовательной  (скалярной) обработкой данный цикл будет исполняться последовательно: приращение индекса цикла, загрузка операндов Ai и Bi, выполнение сложения, запись результата и т.д. При выполнении каждой итерации цикла из оперативной памяти считываются последовательно команды, дешифрируются и выполняются. Результаты выполнения команд записываются в заданные места строго в порядке, предусмотренном программой. Плавному течению конвейера в вычислительной системе мешает много явлений, в частности: зависимости по данным; условные переходы. В рассмотренном простом цикле нельзя выполнять операцию сложения пока не будут получены из оперативной памяти оба операнда; нельзя выполнять запись результата (очередного элемента массива С) до завершения операции сложения.

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

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

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

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

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

      Эффект параллельности будет достигнут если вычислительная система  будет оперировать с векторными командами. В зависимости от типа векторной вычислительной системы  возможны различные варианты. Например, в векторной вычислительной системе   операции обработки выполняются только при условии, что операнды находятся в  векторных регистрах и результат тоже заносится в один из векторных регистров. Тогда в  рассмотренном примере, при условии, что размерность векторных регистров равна или больше размерности векторных операндов, нам необходимы всего 4 векторные команды: 2 команды засылки операндов в векторные регистры, одна команда сложения и одна команда записи результата  в оперативную память. Конечно, кроме этих четырех векторных команд необходимы и скалярные команды, которые подготовят начальные адреса векторов, шаги – при необходимости. Однако, даже с учетом этих вспомогательных скалярных команд, производительность вычислительной системы   с векторными командами будет существенно выше обычной последовательной (скалярной) вычислительной системы, так как после начала выполнения векторной команды нет необходимости считывать из оперативной памяти очередные команды последовательного цикла,  дешифрировать их, заниматься преодолением конфликтных ситуаций, препятствующих работе конвейера.

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

 

 

Рис.8. - Вычисление суммы двух векторов на скалярном и векторном процессоре.

 

         Итак, изучение искусства оптимизации скалярных программ показывает, что первым ограничивающим повышение скорости счета фактором является время, необходимое на реализацию отдельной команды. Исполнение даже одной арифметической операции требует исполнения еще нескольких команд. Время, затрачиваемое именно на эти последние команды, становится критическим фактором. Чем больше арифметических операций, тем данная проблема становится острее. Если бы вычислительная система могла «знать», что, например, существует множество арифметических операций, которые нужно выполнять, то появилась бы возможность исполнять отдельные действия параллельно: передавать операнды из оперативной памяти в функциональные устройства; выполнять отдельные этапы арифметических операций; возвращать результаты в оперативную память; вести счетчик требуемого числа повторений операций и др. Этот конвейерный процесс в точности есть именно то, из чего состоит векторная обработка. Руководствуясь одной командой, векторный процессор как бы создает конвейерную линию, исполняющую операцию, заданную в команде без прерываний и без необходимости готовить и исполнять для каждой пары операндов дополнительные команды. Работа векторного процессора в таком режиме требует координации его различных стадий. Для этого структура вычислительной системы должна иметь более высокий уровень логических возможностей. Необходимо также, чтобы структура данных была достаточно регулярной, чтобы эти логические возможности и оборудование векторного процессора могли быть использованы в полной мере. Назовем эти структурированные данные векторами. К другим характеристикам векторов относятся:   для векторов, длина которых меньше максимальной, установочное  (стартовое время) является одинаковым и не зависящим от длины. Следовательно, чем длиннее векторы, тем выше производительность.  Поскольку элементы одного вектора обрабатываются параллельно разными устройствами, между ними не может  быть взаимодействия на протяжении всего времени выполнения векторной операции. Это означает, что между элементами вектора при выполнении векторной операции не может быть никаких рекурсивных связей.

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

 

    1. Основні області застосування серверів:

 

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

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

Сегодня во всем мире работает огромное количество серверов. С развитием информационных технологий и ростом рынка все отчетливее наблюдается строгая дифференциация серверных решений.

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

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

Требования  к серверам:

К настоящему времени  серверные решения достигли степени  зрелости. Имеются  общепринятые открытые стандарты на отдельные серверные  подсистемы: IPMI (удаленное управление), SSI (блоки питания и корпуса), DMI (управление и инвентаризация системы).

Основные требования, предъявляемые к серверу:

а) надежность

Надежность в серверах достигается за счет:

- использования специальных серверных компонентов, которые проходят более тщательное тестирование;

- резервирования компонентов: дублированные блоки питания, вентиляторы, жесткие диски;

- использования памяти с контролем четности (ECC), что  позволяет автоматически исправлять однобитовые ошибки;

- удаленного управления и диагностики сервера (возможности просмотра температуры, скорости вращения вентиляторов, оповещения о критических сбоях).

б) производительность

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

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

Типичные роли серверов

Дисковая система

Процессоры

Память

Шины ввода-вывода

Сервер баз данных (SQL)

3

3

3

3

Файл-сервер

3

1

2

3

Брандмауэр (файрвол), почтовый сервер

1

2

1

1

VPN сервер

1

2

1

1

Терминал-сервер

3

3

3

3

Web-сервер

2

3

3

2


 

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

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

Пропускная способность  шины PCI персонального компьютера  – 266 Mбайт/c., что легко «съедается»  устройствами ввода-вывода. Гигабитная сетевая карта имеет максимальную пропускную способность в 125 Мбайт/c., соответственно, две гигабитных карты, работающие одновременно, дадут уже 250 Мбайт/c. Сюда необходимо приплюсовать еще и трафик от винчестеров – не менее  50-70 Мбайт/c. Если используется RAID контроллер с несколькими дисками в массиве, то трафик по шине увеличится пропорционально их количеству. Причем сервер должен обслуживать весь этот трафик одновременно. В персональном компьютере, как правило,  одна общая шина ввода-вывода, таким образом, картам расширения приходится конкурировать за пропускную способность этой шины, которая становится «узким» местом. В свою очередь для сервера характерно наличие нескольких независимых «широких» шин ввода-вывода, (это шина PCI-X  или  PCI Express).

Производительность в  настоящем сервере обеспечивается следующим образом:

- использованием многих процессоров  (не менее 4, 6 8 ядер) с большими  кэш-памятями;

- наличием нескольких независимых шин PCI Express;

- возможностью использования больших объемов ( десятки Гбайт) оперативной памяти.

в) управляемость

Под управляемостью сервера  подразумевается:

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

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

Информация о работе Компьютерные системы