ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ Тема 3 Система команд, атомарность и порядок Д. ф.- м. н., профессор А. Г. Тормасов Кафедра информатики.

Slides:



Advertisements
Similar presentations
Мультиплексирование ввода/вывода Программирование с использованием POSIX thread library.
Advertisements

Астрометрические каталоги К.В.Куимов, ГАИШ МГУ. Определение астрометрического каталога Астрометрический каталог – понятие неопределённое. Например, это.
Схема распределения грантов городам-участникам программы Тасис (TCAS) Экологические гранты для муниципалитетов.
Антон Жбанков Старший администратор инфраструктуры ИБС Центральный филиал ОАО « МегаФон » MCSA, MCTS, VCP, VMware vExpert.
Системы с наследованием. Если систему можно представить в виде : Где - непрерывные функции, то такая система называется системой с наследованием. Математическое.
Системы отбора. Условные обозначения (1) (2) (3) (4) (5) (6) (7) Математическое моделирование процессов отбора2.
Использование пальцев рук в качестве вспомогательного инструмента при умножении чисел от 1 до 100.
Подготовила: Колегова Ю. С. Группа: ЭБ Б “ЧЕРНОБЫЛЬ И ЕГО ЖЕРТВЫ”
R1R2R3R4R5R6R7R1R2R3R4R5R6R7. Аксиома R 1. В пространстве существуют плоскости. В каждой плоскости пространства выполняются все аксиомы планиметрии.
Тел. (495) Москва, а/я 212 Рабочая группа по реформе МВД Москва, 2010 Новикова Асмик, Фонд «Общественный вердикт»
Назначение и сущность перестрахования Выполнили: Низовцова Катя и Королева Валя ФК-07-1.
Некомпенсаторное агрегирование и рейтингование студентов Авторы: Гончаров Алексей Александрович, Чистяков Вячеслав Васильевич. НФ ГУ ВШЭ 2010 год.
ПРИНЦИПЫ РАЗРАБОТКИ СИСТЕМЫ КЛАССА LEARNING MANAGEMENT SYSTEM И ОПЫТ ЕЕ ИСПОЛЬЗОВАНИЯ НА ФАКУЛЬТЕТЕ МЕНЕДЖМЕНТА Афанасьева С.В. Кафедра бизнес-информатики.
Всевоволод Головизнин, MVC – паттерн проектирование, в котором бизнес - логика, управляющая логика и интерфейс разделены на три отдельных компонента.
Стресс и здоровье Презентация Нефёдовой Евгении Николаевны, классного руководителя 9 «Б» класса МОУ СОШ № 30 города Энгельса Саратовской области 2010 год.
Bank ownership and lending behavior Alejandro Micco, Ugo Panizza Politicians and banks: Political influences on government-owned banks in emerging markets.
АВДАШЕВА СВЕТЛАНА КАФЕДРА ЭКОНОМИЧЕСКОГО АНАЛИЗА ОРГАНИЗАЦИЙ И РЫНКОВ 2011/2012 УЧЕБНЫЙ ГОД Теория отраслевых рынков (по выбору для 3 курса факультета.
Учитель математики Кулакова Т.М. МОУ ООШ №15 г.о Новокуйбышевск Самарской области Сентябрь 2011г.
Сохранение суммы фазовых координат. Важный частный случай представляют системы, в которых в течение всего процесса сохраняется постоянной сумма значений.
Что за хулиган толкает пассажиров автобуса то вперед, то назад? Этот хулиган, вернее, хулиганка -
Создание сервиса синхронизации разнородных баз данных Допущена к защите зав. кафедрой: д.ф.м.н., профессор Терехов А.Н. Научный руководитель: доцент Графеева.
Частное равновесие на конкурентном рынке Частное равновесие: последствия государственного регулирования конкурентного рынка Распределение налогового бремени.
ООП Классы – 2. Ссылки Ссылка – еще одно имя объекта. Используйте ссылки вместо указателя. Это более безопасно. Complex c(10,10); Complex c2& = c; c2+=10;
Блок 3. Семейства белков I. Множественное выравнивание Первый курс, весна 2008, А.Б.Рахманинова.
Другие примитивы синхронизации Программирование с использованием POSIX thread library.
Ответы на вопросы 7 июля « Подготовка паспортов безопасности» тел: (495) Экологический Синтезирующий.
Демидов А.В г. Операционные системы Лекция 3 Процессы.
1 Генерация контекстных ограничений для баз данных Выполнил: Жолудев В. Научный руководитель: Терехов А.Н. Рецензент: Иванов А.Н.
Введение в параллельные вычисления. Технология программирования MPI (день седьмой) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Введение в параллельные вычисления. Технология программирования MPI (день третий) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
1 Организация вычислительной системы ЛЕКЦИЯ №2 Калинина А.П.
Основы операционных систем
Growing Neural Gas Method Нейросетевой метод построения неструктурированных адаптивных сеток.
Магистерская программа двойных дипломов. Эта программа даёт вам возможность получить два диплома учебных заведений Великобритании и России: Диплом магистра.
Apache Harmony или как сделать курсовую работу в рамках этого проекта Фурсов Михаил.
Сравнение различных методов хранения XML в реляционных базах данных и в разных системах. Нгуен Тхань Хуен- 545 группа Руководитель : Б.А. Новиков Рецензент:
1 Ребенок в Сети. Ребенок играет?
Кафедра ЮНЕСКО по НИТ1 Принципы построения и архитектура ЭВМ Информатика.
 Нужно много различных протоколов связи  Каждый из них может реализовываться на разных платформах Современные сети Много устройств, компьютеров и сетей.
Software & Services Group, Developer Products Division Copyright© 2010, Intel Corporation. All rights reserved. *Other brands and names are the property.
"The European Molecular Biology Open Software Suite"
МОБИЛЬНЫЙ ИНТЕРНЕТ: КУДА КАТИТСЯ МИР?. ВЫ СЕБЯ ПРЕДСТАВЛЯЕТЕ СЕГОДНЯ БЕЗ МОБИЛЬНОГО ИНТЕРНЕТА?
Ряды и произведения sum(expr, n=a..b), где expr – выражение, зависящее от индекса суммирования, a..b – пределы индекса суммирования, Если требуется вычислить.
Кураева Екатерина Анатольевна, заместитель директора по УВР, учитель математики сш № 29.
Семинар “Machine Learning” рук. проф.: Е.Л. Столов, В.Д. Соловьев Учебник Бишопа us/um/people/cmbishop/prml/
ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ Тема 5 Некоторые понятия, используемые при разработке параллельных программ Д. ф.- м. н., профессор А.
Обзор архитектуры IA32/EM64T Юрий Долгов, Дмитрий Шкурко.
Объектно-ориентированное проектирование DSP-систем в телекоммуникациях Подготовил: Сергеев Виктор Николаевич СПбГУ, математико-механический Факультет,
Демидов А.В г. Операционные системы Лекция 4 Работа с файлами.
Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
Optimization of applications for Intel* platforms 1 IA64. Архитектура и обзор системы команд Юрий Долгов, Дмитрий Шкурко.
Семафоры-счетчики POSIX Программирование с использованием POSIX thread library.
XML - расширенный язык разметки Моисеевой О. Макушиной Д. (eXtensible Markup Language)
TMG Tel: 8 (495) Fax: 8 (477) Technology Management Group ООО «TMG» PayKeeper.
XML Схемы XML документов. XML Schema созданая Microsoft позволяет избавиться от DTD блоков. Основа – использование пространств имен и очень точная типизация.
Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.
Microsoft TechDayshttp:// Александр Шаповал Эксперт по стратегическим технологиям
Writing Friendly Letters A Write On Activity. Friendly letters have five parts: 1. The Heading 2. The Salutation (greeting) 3. The Body (some paragraphs)
КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ Metro приложения: работа с данными Краковецкий Александр, MVP/RD/PhD. DevRain Solutions.
Алгебра логики это раздел математики, изучающий высказывания, рассматриваемые со стороны их логических значений (истинности или ложности) и логических.
1 Организация подсистемы ввода-вывода CSS (Channel Subsystem) Лекция № 9.
Рассмотрим более подробно работу управляющей компоненты. В ЭС используются нетрадиционные методы управления. Это вызвано неформализованностью решаемых.
What do you think of popular thing?
FAMILIES AND FRIENDS: ARE WE HAPPY TOGETHER?. HOLIDAYS ARE A TIME FOR ADVENTURES AND DISCOVERIES.
‘For and Against’ Essays Useful tips. Plan Introduction - Paragraph 1 (state topic – summary of the topic without giving your opinion) Main Body – Paragraph.
Подготовила студентка 1 курса, группы БЭСО-02-17, Власова Софья.
ADO.NET Data Services (codename Astoria)
* Любой табак кроме WTO Депозит берется в течение 20 мин, как подошли все гости* В депозит входят все позиции в меню* Депозит не возвращается*
Presentation transcript:

ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ Тема 3 Система команд, атомарность и порядок Д. ф.- м. н., профессор А. Г. Тормасов Кафедра информатики МФТИ

Тема Краткий обзор специфики выполнения системы команд Intel x86 Видимость результатов работы команды Модель упорядоченности ( непротиворечивости ) доступа к памяти, Атомарность, атомарные примитивы 2 Кафедра информатики МФТИ

Система команд x86/x64 Многие операции модификации памяти проводятся через регистры ( за некоторыми исключениями ), в несколько стадий Большинство команд будут выполнены « целиком » или не выполнены вовсе ( не путать с атомарностью !) Черный ящик - автомат : есть вход, и есть выход, причем выход принимает конечное число значений. Нельзя ни подсмотреть что там делается, ни разобрать процесс на стадии ( а что такое 50% записи одного байта ? Биты по одному « переползают » в результат ?) Наблюдаемость результатов работы одной инструкции только путем выполнения других инструкций ( результат неизвестен до момента выполнения другой инструкции ). Кафедра информатики МФТИ 3

Упорядоченность Когда оператор или инструкция « заканчиваются »? 2 должно быть перед 3 Это гарантируется платформой и компилятором Порядок 5 и 6 не важен, компилятор и / или платформа может переставить местами Промежуточное значение после 5 может быть ненаблюдаемо вторым потоком ( например, в регистре ) Неявно возникает « наблюдатель »? … 1int a=2,b; 2a++; 3b = a+1; … 4int a=1,b=2; 5a++;// a == 2 6b++;// b == 3 7a += b;// a == 5 … Кафедра информатики МФТИ 4

Упорядоченность Как заставить « соблюдать условия »? Компилятор : volatile? Если значение нужно, никогда не буферизовать в регистре, а читать из памяти Никак не помогает синхронизации ( хотя, казалось бы...) И даже может быть компилятором проигнорировано ( см пример ) – практически все его указания не обязательны void myFunction(void) { int b; extern volatile int a; … b = a; return; } Кафедра информатики МФТИ 5

Упорядоченность Если заставили компилятор работать как захотели, уже все хорошо ? Обращение к памяти : широковещательный запрос к шине Write Combining буфер (x86) Записи : всегда в порядке выполнения команд Чтение : может быть переставлено Гарантия порядка – барьер явный или неявный чтение - запись Часть команд пишут « мимо кеша », SSE Примеры x86 барьеров Встроенный : XCHG Префикс lock где разрешен, LOCK CMPXCHG Явный : SFENCE/LFENCE/MFENCE/CPUID sfence: store, sfence, mfence, serialization (cpuid) Через настройку типа памяти через PAT/MTRR (WB mode – тогда xcgh будет блокировать только свою линию кеша ) Кафедра информатики МФТИ 6

Упрощенно, x86 Чтение : в любом порядке, может быть умозрительными Чтение может « обойти » ( закончиться позже ) буферизованную запись ( из не одной и той же памяти ) Запись : почти всегда в порядке программы Запись может быть буферизована Запись : не умозрительно – только для реально исполненых инструкций Данные из буфера записи могут быть переданы инструкции чтения напрямик внутри процессора И чтение, и запись не могут « обойти » любых инструкций ввода - вывода, инструкций с префиксом LOCK или сериализующих инструкций Чтение не может « обойти » MFENCE/LFENCE. Запись не может « обойти » MFENCE/SFENCE. Для SMP системы Отдельные процессоры используют правила, приведенные выше Записи одного процессора наблюдаются в том же порядке всеми остальными Записи отдельных процессоров на системную шину не упорядочены по отношению к друг другу. PREFETCH ( предварительная загрузка ) никак не упорядочивается MFENCE/LFENCE/SFENCE Кафедра информатики МФТИ 7

Влияние порядка Поток 1 Поток 2 Кафедра информатики МФТИ 8 threadTwo = 1; // место для барьера victim = 2; // место для барьера while (threadOne && victim == 2) ; // critical section threadTwo = 0; // то, что мы ожидаем [threadTwo] <- 1 [victim] <- 2 reg0 <- [threadOne] reg1 <- [victim] // то, что мы можем получить reg0 <- [threadOne] [threadTwo] <- 1 [victim] <- 2 reg1 <- [victim] // в критическую секцию! threadOne = 1;// место для барьера victim = 1;// место для барьера while (threadTwo && victim == 1) ; // critical section threadOne = 0; // то, что мы ожидаем [threadOne] <- 1 [victim] <- 1 reg0 <- [threadTwo] reg1 <- [victim] // то, что мы можем получить reg0 <- [threadTwo] [threadOne] <- 1 [victim] <- 1 reg1 <- [victim] // в критическую секцию!

эффекты архитектуры Пример : Write Combining buffer Является « выделенными » линиями « рядом » с кэшом Слабая упорядоченность ( не кэширована, протокол когерентности не работает, возможны умозрительные чтения, записи могут быть задержаны на шине ) Формируется по ходу записи и буферизует их до некоторых событий Если хотя бы байт не записан из процессора, то переписывание в память будет выполняться « частичными » транзакциями, отрезками по 8 байт Если WC 64 байта, то 16 записей по 4 байта ( слову ) запишутся в память единой транзакцией ! Но, если мы пишем 63 байта ? До 8 (!) частичных транзакций ! В произвольном порядке ( и между разными WC так же порядок произвольный ). Пример – « невыровненная » запись RMW инструкциями. Кафедра информатики МФТИ 9

Атомарность Набор действий, которые могут комбинироваться только так, что для всех наблюдателей они представляют собой единую операцию с двумя возможными результатами – успехом или неудачей Ключевое понятие – « видимость » ( и « невидимость ») Условия атомарности : Невидимость - до момента завершения всех операций никто в системе ( никакой процесс ) не может наблюдать факт произведения изменений Восстановимость - если операция по какой либо причине не завершилась успешно, то состояние системы должно быть полностью восстановлено к моменту до начала работы атомарной операции Атомарность, видимость и упорядоченность – разные понятия ( см volatile и порядок ) Кафедра информатики МФТИ 10

Атомарность в х 86 Аппаратно гарантируется атомарность ≥ 486: Чтение или запись байта Чтение или запись слова, выровненного на 16- битовую границу Чтение или письмо двойного слова, выровненного на 32- битовой границе. Аппаратно гарантируется атомарность ≥ Pentium: Чтение или запись четверного слова, выровненного на 64- битовую границу 16- битовый доступ к не кэшированным участкам памяти, которые входят целиком в 32- битовую шину данных. Аппаратно гарантируется атомарность ≥ P6: Не выровненный 16-, 32-, и 64- битовые доступ к кэшированным участкам памяти, которые помещаются целиком в линию кэша Аппаратно НЕ гарантируется атомарность по умолчанию ( только специальными средствами ) Доступ к кэшированной памяти, которая пересекает границы шины, линий кэша или страницы Кафедра информатики МФТИ 11

Атомарные примитивы Чтение и запись Mov Проверить - и - установить (test-and-set) Xchg ( встроенный lock) Извлечь - и - добавить (fetch-and-add или read-modfy-write) Xadd Сравнить - и - поменять - местами (compare-and-swap) CMPXCHG Загрузить - и - зарезервировать / условно - сохранить (load-link/store-conditional) Отсутствует в х 86 Кафедра информатики МФТИ 12

Скорость примитивов Если форсируют блокировку шины, то... Если форсируют упорядоченность операций (fence), то... Если используют WC буфер, то... Лучше всего – если ничего не используют Кафедра информатики МФТИ 13

Выводы Есть много сложных понятий – упорядоченность операций, атомарность, видимость результатов для процессора и т. д. Большинство этих понятий практически независимы друг от друга, их нельзя путать ( атомарность например не влечет упорядоченности ) Есть « потаенные » устройства, работа с которыми влияет на поведение программ, в первую очередь с точки зрения производительности Неучет порядка операций в памяти может привести к неправильной работе внешне корректного алгоритма ( один и тот же код может работать по разному на разных платформах – например, x86 & Sparc!) Все платформы, в том числе и х 86, содержат аппаратно поддерживаемые атомарные примитивы синхронизации, на основании которых строятся более сложные примитивы ( и технологии ). 14 Кафедра информатики МФТИ

(с) А. Тормасов, 2010 г. Кафедра информатики МФТИ crec.mipt.ru_ crec.mipt.ru_ Для коммерческого использования курса просьба связаться с автором. Кафедра информатики МФТИ 15