- •Высокопроизводительные вычислительные системы
- •Лекция № 2 (1.03.12)
- •Лекция № 3 (15.03.12)
- •Лекция № 4 (22.03.12)
- •Лекция № 5 (29.03.12)
- •Лекция № 6 (.12) Классификация параллельных компьютеров и систем Классификация Флинна
- •Классификация Хокни
- •Классификация Фекта
- •Векторно – конвейерные компьютеры
- •Лекция № 7 (12.04.12)
- •Лекция № 8 (26.04.12)
- •Лекция № 9 (03.05.12)
- •Вычислительные системы с распределенной памятью.
- •Кластерные вс
- •Метакомпьютер
- •Лекция № 10 (10.05.12) Функционирование процессора. Исполнение команд.
- •Трассировка
- •Регистрация программных событий
- •Милликод (millicode) в процессорах z/series
- •Организация внутренней памяти. Уровни процессорной памяти.
- •Лекция № 11 (17.05.12) Адресация внутренней памяти.
- •Динамическая трансляция адреса
- •Подсистемы ввода/вывода Назначение и компоненты системы в/в
- •Лекция № 12 (24.05.12)
- •Множественная подканальная система mcss.
- •Лекция № 13 (12)
Лекция № 8 (26.04.12)
Существует закон Андыла, который гласит, что время работы программы определяется ее самой медленной частью. Все множество операций программы можно разбить на множество последовательных операций и множество векторных операций. Если доля велика то большого ускорения работы программы не будет и необходимо менять алгоритм. Кроме того надо учитывать особенность компилятора, который может не распознать векторизуемость отдельных конструкций и сгенерировать для них скалярный код.
Существует 2 фактора снижающих производительность компьютера относительно ее пикового значения:
время разгона векторной команды;
секционирование длинных векторов.
Для инициализации векторной команды требуется несколько тактов, после чего начинается заполнение конвейера и лишь через некоторое время появляются результаты. Вектор-регистр содержит 128 элементов, т.е. для запуска векторной команды длинный вектор необходимо разбить на секции по 128 элементов.
Секцию вектора, расположенную в регистре можно обрабатывать с помощью векторных команд. Т.е. существует 2 цикла:
внешний – по секциям;
внутренний – внутри секции.
На переход от одной секции к другой потребуется некоторое незначительное время, однако оно тоже приводит к некоторому падению производительности.
for (i=0; i<n; i++)
A[i]=B[i]*S+C[1]
Производительность Cray C 90 на этом фрагменте в зависимости от длинны вектора n указано в таблице.
n |
МФлопс |
1 |
7 |
2 |
14 |
4 |
27,6 |
16 |
105,5 |
32 |
181,9 |
128 |
433,7 |
150 |
413,2 |
256 |
548,0 |
257 |
491,0 |
512 |
659,2 |
1024 |
720,4 |
2048 |
768,0 |
8192 |
802,0 |
Из таблицы видно, что с ростом длины вектора доля накладных расходов на инициализацию векторных операций и секционирования падает. Очень короткие циклы выгоднее выполнять не в векторных, а в скалярных режимах, т.к. не надо будет тратить дополнительное время на инициализацию векторных команд.
Следующие факторы, снижающие производительность, заключаются в том, что перед началом выполнения любой операции данные должны быть занесены в регистры. Для этого имеется 3 независимых канала передачи данных, 2 из которых работают на чтение из памяти, а третий на запись. Такая структура хорошо работает для операций требующих не более двух входных векторов.
Например, на котором компьютер может работать в режиме с зацеплением. Операции с 3-мя векторными аргументами не могут быть реализованы столь же эффективно из-за ограниченной пропускной способности тракта процессор – память.
В набор векторных регистров входят 8 регистров по 128 слов в каждом. Другой фактор снижения производительности заключается в том, что часто бывает, что в программе постоянно происходит передача управления из одной части в другую (например, частое обращение к небольшим подпрограммам). Следствием такой структуры является частая перезагрузка буферов команд и следовательно возникнут дополнительные накладные расходы. Для того, чтобы приблизиться к пиковой производительности компьютера надо учитывать при программировании все эти факторы, в том числе и при разработке компиляторов.
Компьютеры ссNUMA (cache coherent Non Uniform Memory Access).
Когерентность КЭШей и неоднородный доступ к общей памяти должен учитываться. Время обращения к памяти зависит от того является ли это обращение к локальной или удаленной памяти. Рассмотрим на примере системы HPS, выпущен в начале 21 века. Может объединять от 2х до 64х процессоров. Все процессоры имеют доступ к общей памяти, организованной с архитектурой ссNUMA. т.е. все процессоры работают в едином адресном пространстве, адресуя любой байт памяти посредством обычных операций чтения – записи. Доступ к локальной памяти идет значительно быстрее, чем к удаленной памяти. Проблемы соответствия данных к КЭШ памяти процессоров решены аппаратным путем. Объем ОП 256 Гб, с возможным наращиванием до 1 Тбайта. Могут использоваться различные типы микропроцессоров (PA-8700, PA-8600, IA-64). Рассмотрим систему на базе процессора PA-8700 (фирма HP). Основу архитектуры составляют вычислительные ячейки, связанные иерархической системой переключателей.
Каждая ячейка является симметричным мультипроцессором, реализованным на одной плате, где есть все необходимые компоненты:
процессоры (до 4-х);
ОП (до 16 Гб);
контроллер ячейку (УУ);
Контроллер ввода/вывода (может быть).
Пример используемой ячейки
Центральное место в архитектуре ячейки занимает контроле ячейки состоящий, примерно, из 24 миллионов транзисторов в микросхемном исполнении. Для каждого процессора ячейки есть собственный порт в контролере. Обмен данными между каждым процессором и контроллером идет со скоростью 2 Гб/с. Память ячейки от 2 до 16 Гб. Конструктивно она разделена на 2 блока, каждый из них имеет свой порт в контроллере ячейки (суммарная пропускная способность УУ – М будет 4 Гб/с). Один порт контроллера ячейки всегда связан с внешним коммутатором. Скорость работы порта 8 Гб/с. Он предназначен для связи ячейки с другими ячейками системы. Контроллер ячейки (СС) отвечает из когерентность КЭШ памяти процессоров. В 64-х процессорной конфигурации состоит из 2-х стоек по 32 процессора.
К каждому коммутатору подключается 4 ячейки. Коммутатор содержит 8 портов со скоростью работы 8 Гб/с каждый. Один порт зарезервирован для связи с другими системами.
В суперкомпьютере возможны 3 вида задержек при обращении процессора к памяти:
программа и данные в одной ячейке – задержка минимальная;
программа и данные в разных ячейках, но обе ячейки подключены к одному коммутатору – задержка имеет среднее значение;
программа и данные в разных ячейках, которые подключены к разным коммутаторам. В этом случае запрос идет через 2 коммутатора и задержка максимальная.
Очевидно, что задержка зависит от числа процессоров и числа одновременно работающих приложений. Например, при равномерном распределении запросов задержки будут следующими.
Количество процессоров |
1 приложение |
Много приложений |
4 |
174 |
235 |
8 |
208 |
266 |
16 |
228 |
296 |
32 |
261 |
336 |
64 |
275 |
360 |