
- •Оглавление
- •Глава 1. Архитектура вычислительных систем 11
- •Глава 2. Реализация параллельных алгоритмов 63
- •Глава 3. Надежность и живучесть вычислительных систем 96
- •Глава 4. Библиотека параллельных программ 120
- •Глава 5. Граф-схемы параллельных алгоритмов 150
- •Глава 6. Исследование информационных граф-схем со скалярными весами для планирования параллельных вычислений 182
- •Глава 7. Исследование информационных граф-схем решаемых задач с векторными весами для планирования параллельных вычислений 204
- •Глава 1. Архитектура вычислительных систем
- •1.Количественные характеристики, применяемые для оценок параметров вычислительных систем
- •Для случая неоднородной системы номинальное быстродействие выразится как
- •Здесь – вероятность выбора j-й операции, , . Для однородной вс её быстродействие по Гибсону выразится соотношением
- •Для неоднородной вс это быстродействие может быть определено, как
- •1.1.1. Вопросы к разделу 1.1.
- •2.Понятие о современных вычислительных системах
- •Пример графа регулярной вычислительной системы представлен на рисунке 1.2.1.
- •Примечание: Для регулярной вычислительной системы
- •2.1. Вопросы к разделу 1.2.
- •3.Структура современных вычислительных систем
- •3.1.Схема обмена с помощью структуры «Общая шина»
- •3.2.Схема обмена с помощью структуры «Линейка»
- •3.3.Вычислительная система, имеющая структуру типа «Кольцо»
- •3.4.Схема обмена с помощью структуры типа «Решётка»
- •1.3.5. Схема обмена с помощью структуры типа «Двумерный тор»
- •3.1.Схема обмена с помощью структуры типа «n-мерный двоичный гиперкуб» или «nD-куб»
- •3.2.Реализация обмена с помощью структуры типа «Обобщенный nD-куб»
- •3.3.Структура вс типа «n-мерный обобщённый тор»
- •3.4.Структура вс с сетью типа «Циркулянт»
- •1.3.10. Вычислительная система «Максимальный обхват»
- •1.3.11. Вычислительные системы со структурой сетей типа «Симметричные графы»
- •На рисунке 1.3.11. Представлена вс с симметричным графом.
- •1.3.12. Вычислительные системы с сетью связей типа «Гомоморфные графы»
- •1.3.13. Вычислительные системы с сетью связей типа «Граф л(n,V,g)»
- •1.3.14. Структура вычислительной системы типа «Бинарное дерево t0(n) глубины n»
- •1.3.15. Структура вычислительной системы типа «Мультидерево глубины n и ширины k t1(n,k)»
- •3.5. Вопросы к разделу 1.3
- •4.Коммуникационные среды вычислительных систем
- •Коммуникационная среда должна удовлетворять следующим требованиям:
- •4.1.Коммуникационная среда на основе масштабируемого когерентного интерфейса sci
- •4.2.Коммуникационная среда на основе технологии Myrinet
- •1.4.3. Краткая характеристика коммуникационной среды QsNet II
- •4.3. Вопросы к разделу 1.4
- •5.Коммутаторы вычислительных систем
- •1.5.1. Типы коммутаторов
- •5.1. Управление коммутаторами
- •5.2. Алгоритмы определения маршрутов
- •5.3. Дедлоки в составных коммутаторах
- •5.4.Вопросы к разделу 1.5
- •6.Процесс функционирования вычислительных систем
- •6.1. Вопросы к разделу 1.6.
- •7.Принципы технической реализации вс
- •1.7.1. Вопросы к разделу 1.7
- •1.8. Архитектурные особенности вс
- •1.8.1. Архитектурные свойства вс
- •1.8.2. Схема обмена информацией между ветвями параллельных алгоритмов
- •7.1.Опыт применения методики крупноблочного распараллеливания сложных задач
- •7.2.Архитектурные аспекты при создании ос вс
- •7.3.Структурные характеристики вс
- •7.4.Классификация структур вс
- •7.5.Вопросы к разделу 1.8.
- •Глава 2. Реализация параллельных алгоритмов
- •2.1. Реализация параллельных алгоритмов
- •2.1.1. Определение параллельного алгоритма
- •7.6.Организация динамического распараллеливания в суперскалярных микропроцессорах
- •2.1.3. Предварительная выборка команд и предсказание переходов
- •7.7.Декодирование команд, переименование ресурсов и диспетчеризация
- •7.8.Исполнение команд
- •2.1.6. Работа с памятью
- •2.1.7. Завершение выполнение команды
- •2.1.8. Направления развития суперскалярной архитектуры
- •7.9.Мультитредовая модель выполнения программы
- •7.10.Аппаратные и программные средства, необходимые для мультитредовой архитектуры
- •2.1.11. Специфика мультитредовых моделей распараллеливания
- •2.1.12. Вопросы к разделу 2.1
- •2.2.Организация распараллеливания на уровне программных модулей
- •2.2.1. Примеры организации вычислений на уровне программных модулей
- •2.2.2. Решение системы линейных уравнений методом Гаусса с помощью вс типов «решётка» и «линейка»
- •2.2.3. Исполнение алгоритма Гаусса на «решётке» n*n вm
- •2.2.4. Исполнение алгоритма Гаусса на «линейке», состоящей из n вм
- •2.2.5. Показатели эффективности параллельных алгоритмов
- •2.2.6. Понятие о сложных задачах
- •2.2.7. Вопросы к разделу 2.2
- •Глава 3. Надежность и живучесть вычислительных систем
- •8.Основные задачи создания отказоустойчивых систем
- •8.1.Вопросы к разделу 3.1
- •9.Классификация типов отказоустойчивости сложных систем и ее критерии
- •9.1.Вопросы к разделу 3.2
- •10.Способы обеспечения отказоустойчивого функционирования вс
- •3.3.1. Диагностическое тестирование вс
- •3.3.3. Способы восстановления отказоустойчивых вс
- •10.1.Вопросы к разделу 3.3
- •3.4. Построение живучих вс на основе экспоненциально- надежностного подхода
- •3.4.1. Показатели надежности вс
- •10.2. Методика расчета показателей надежности вс
- •3.4.3. Живучесть вс
- •3.4.4. Вопросы к разделу 3.4
- •11.Построение живучих вс, работоспособных в расчетном диапазоне кратностей отказов
- •3.5.1. Вопросы к разделу 3.5
- •3.6. Реализация модели отказоустойчивых систем
- •3.6.1. Горячий резерв
- •3.6.2. Репликация
- •3.6.3. Кластеры высокой готовности
- •4.1.2. Принципиальная схема программирования в OpenMp
- •11.2. Описание основных конструкций open mp
- •4.1.4. Способы построения параллельных программ
- •4.1.6. Вопросы к разделу 4.1
- •4.2. Основы построения библиотеки mpi
- •4.2.1. Основные понятия
- •4.2.2. Структура программ в mpi
- •4.2.3. Определение структуры приходящего сообщения
- •4.2.4. Определение базовых характеристик коммуникационной сети
- •11.4.Анализ тупиковых ситуаций при обмене
- •4.2.6. Организация передачи-приёма сообщений без блокировки
- •4.2.7. Реализация отложенных запросов на взаимодействие
- •4.2.8. Сравнительная оценка различных способов обмена данными
- •4.2.9. Использование глобальных операций в mpi
- •4.2.10. Взаимодействие процессов в mpi
- •4.2.11. Вопросы к раделу 4.2
- •Глава 5. Граф-схемы параллельных алгоритмов
- •5.1. Представление параллельных алгоритмов в виде граф-схем
- •5.1.1. Преобразование последовательных алгоритмов в параллельные
- •5.1.2.Использование граф-схем для представления параллельных алгоритмов
- •5.1.3. Вопросы к разделу 5.1
- •5.2.1. Вычисление матриц следования, расширенных матриц следования и матриц следования с транзитивными связями
- •5.2.2. Вопросы к разделу 5.2
- •11.5.Построение матрицы логической несовместимости.
- •5.3.2. Построение матрицы логической несовместимости операторов
- •5.3.3. Вопросы к разделу 5.3
- •5.4.1. Построение множеств взаимно независимых операторов.
- •5.4.2. Вопросы к разделу 5.4
- •Глава 6. Исследование информационных граф-схем со скалярными весами для планирования параллельных вычислений
- •6.1. Численные характеристики информационных граф-схем со скалярными весами
- •6.1.1 Определение ранних и поздних сроков окончания выполнения операторов.
- •11.6.Определение функций плотности загрузки, и минимальной загрузки для информационных граф-схем
- •6.1.3. Вопросы к разделу 6.1
- •6.2.1. Распределение операторов по вм вычислительной системы с общим полем памяти для информационной граф-схемы
- •6.2.2. Распределение операторов по вм вычислительной системы с общим полем памяти для информационно-логической граф-схемы
- •При срабатывании условного оператора «один», дуги 1.1 требуется 10 вм. Время решения задачи составит 22 условные единицы.
- •6.2.3. Распределение операторов по вм вычислительной системы с распределённой памятью для информационной граф-схемы
- •6.2.4. Реализация диаграмм для общепринятых способов обмена данными между вм вычислительной системы с распределённой памятью для информационной граф-схемы
- •6.2.5. Вопросы к разделу 6.2
- •Глава 7. Исследование информационных граф-схем решаемых задач с векторными весами для планирования параллельных вычислений
- •7.1 Информационная граф-схема решаемых задач с векторными весами вершин
- •7.1.1 Понятие об неоднородных системах
- •7.1.2. Основные определения, используемые для неоднородных вс
- •7.1.3. Вопросы к разделу 7.1
- •Литература
2.1.7. Завершение выполнение команды
Цель этого этапа заключается в сохранении последовательного алгоритма программы при распараллеливании отдельных команд и условном выполнении команд ветвленияю Выполнение команды заканчивается при изменении состояния процессора, для этого есть 2 способа:
состояние процессора хранится в буфере истории вычислений или в наборе контрольных точек, которые можно использовать для восстановления состояния, когда это необходимо;
используется переупорядочивающийся буфер, в котором для всех команд хранятся специальные значения счетчика команд и остальных регистров, необходимых для обработки прерываний. При этом у процессора подразумевается два состояния: логическое (зависит от результата условно выполненных команд) и физическое (изменяется при завершении текущей команды).
2.1.8. Направления развития суперскалярной архитектуры
В настоящее время принимаются попытки реализовать механизм параллельного исполнения команд в суперскалярных процессорах. При этом необходимо учитывать зависимость по данным между этими командами.
В суперскалярном процессоре команды исследуются по мере выполнения. Эти исследования связаны с выявлением и обработкой команд переходов, их прогнозированием, идентификацией типа команды и направлением команды на соответствующее функциональное устройство. Также выполняется переименование регистров для смягчения зависимостей по данным.
Существуют некоторые ограничения эффективности, накладываемые на суперскалярные архитектуры. Первое ограничение связано с условными переходами, их предсказанием. Второе ограничение вытекает из размера окна исполнения, от размера которого зависит количество параллельно выполняемых команд.
Теперь рассмотрим процессоры с длинным командным словом(VLIW). Они имеют ряд достоинств. По сравнению с суперскалярными архитектурами VLIW-процессор более эффективно исследует зависимости между командами и имеет более простое устройство управления, и имеет более высокую тактовую частоту.
Но у VLIW-процессора есть серьезный недостаток. Это команды ветвления, зависящие от данных, значения которых становятся известны только в процессе работы программы. VLIW-процессор требует большого размера памяти имен, многовходовых регистровых файлов. Также VLIW-процессор имеет сравнительно небольшое окно исполнения из-за отсутствия у компилятора информации о зависимостях, формируемых в процессе выполнения.
Ввиду всех недостатков VLIW-процессоров, суперскалярные процессоры преобладают на рынке микроэлектроники, и постоянно совершенствуются и развиваются. При этом необходимо исследовать производительность и адекватность используемой архитектуры для решения определенных задач.
Дальнейшие исследования и развитие суперскалярной архитектуры привели к разработке мультитредовой архитектуры процессоров, которые имеют более высокую производительность [17].
Микропроцессоры Alpha 21264 и PentiumIII имеют однотредовую архитектуру с использованием параллелизма уровня команд, выявляемый либо компилятором, либо аппаратурой микропроцессора, либо их комбинацией. В этих микропроцессорах параллелизм уровня тредов выявляется только статически – компилятором, динамически это следать невозможно, так как необходимо просматривать большое количество команд, а это ведёт к увеличению окна исполнения., что усложняет логические схемы управления исполнением команд. А это может уменьшает тактовую частоту работы процессора. Мультитредовые и мультискалярные процессоры решают эту проблему.
Главное отличие мультитредовой архитектуры в использовании совокупности регистровых файлов процессора, для формирования которой используются транзисторы. Эти регистры включают в себя счетчик команд, регистры состояния и рабочие регистры. Эта архитектура избавляет от простоев процессора, возникающих из-за невозможности выполнения следующей команды. В случае задержки происходит переключение на другой регистровый файл, тем самым процессор продолжает вычисления с другим контекстом, переходя к выполнению другого треда (процесса). Для каждого процесса(треда) есть свой набор регистров. Процессор переключается на другой регистровый файл при наступлении некоторого события(прерывания, обращение к оперативной памяти), либо принудительно.
Процессор использует n наборов регистров, поэтому при задержке первого из процессов ему придётся ждать пока процессор снова переключится на тот же набор регистров через n-1 тактов. Поэтому исполнение команд каждого треда замедляется в n раз.
Формирования n тредов происходит на уровне компилятора при анализе исходного кода на языке высокого уровня или исполняемого кода программы. Однако некоторые зависимости при использовании регистров и ячеек памяти между тредами не определяются компилятором, что требует разрешения этих зависимостей уже в ходе исполнения тредов. Для этого в микропроцессоре есть специальная аппаратура условного исполнения тредов, которая выполняет возврат с удалением полученных результатов в случае обнаружения нарушения зависимостей между тредами, такими как запись по вычисляемому адресу в одном треде в ту же самую ячейку памяти, из которой выполняется чтение, которое должно следовать раньше записи, в другом треде.
Интерфейс между аппаратурой выполняющей исполнение отдельного треда мультитредового процессора и общей для всех тредов аппаратурой может устанавливаться по-разному:
после устройств выборки команд треда (каждый тред использует собственные функциональные устройства, например, АЛУ, и ряд общих для всех тредов функциональных устройств, например, для выполнения арифметических);
на уровне доступа к разделяемой памяти (для исполнения каждого треда фактически выделяется функционально законченный процессор, для исполнения независимых и слабо зависимых тредов, порождаемых либо одной программой, либо их совокупностью).
Если мультитредовый процессор выполняет треды, порождённые одной программой, то оценивают его производительность, если несколькими программи – о пропускную способность.
В отличие от ветвей параллельной программы треды, найденные на основе потоков управления, не имеют операторов взаимодействия между собой. В зависимых тредах обмен осуществляется через доступ к разделяемым переменным аппаратными средствами.