Оптимизм системного арбитра в реализации Intel TSX

27 Ноя 2012

Умные алгоритмы шинного арбитража

Атомарные операции, призванные устранить возможные коллизии в SMP-системах, — простое и надежное ле­кар­ство от головной боли, вызванной столкновением лбами конкурирующих за ресурсы процессов. И не важно, что на время выполнения атомарной операции одним из них, до­ступ к сис­тем­ной шине запрещен для всех остальных, в том числе и для bus-mast­er устройств. Используя бок­сер­скую терминологию, можно сказать, что пока одному хорошо, все остальные сцепились в клинче. Оп­ти­ми­зи­ро­вать про­из­во­ди­тельность системы можно только поменяв подходы и только с помощью хитрых и умных алгоритмов шинного арбитража.

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

Продолжение.
Начало — в статьях « История вопроса» и «Современный тренд».

Психологический триллер коллизии

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

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

Данное обстоятельство стало причиной появления технологии Intel TSX (Transactional Synchronization Extensions), описанной в документе Intel Architecture Instruction Set Extensions Programming Reference.

          

Происхождение транзакционных моделей управления доступом уходит корнями в работы Тома Найта (Tom Knight), датированный 1986 годом. Вместе с тем, прикладная ценность идей почти тридцатилетней давности мизерна, если рассматривать возможность их реализации на современных вычислительных платформах. Значительный вклад в разработку теории разрешения конфликтов внесли работы лаборатории системного программирования (Intel Programming Systems Lab). Основополагающим в этом деле стал цикл исследований, защищенный патентом №8140773, «Использование элементов кратковременного хранения для достоверной детализации конфликтов на аппаратных платформах, оснащенных программной транзакционной памятью».

Патент, призванный улучшить производительность SMP-системы за счет использования новых подходов, разработан авторским коллективом в таком составе: Братин Саха (Bratin Saha), США, Али-Реза Адл-Табатабаи (Ali-Reza Adl-Tabatabai), США, Гад Шиффер (Gad Sheaffer), Израиль, и Куинн Якобс (Quinn Jacobson), США. Фото с сайта Intel Technology Journal:

Братин Саха (Bratin Saha)Али-Реза Адл-Табатабаи (Ali-Reza Adl-Tabatabai)

Реализация

Intel TSX использует два механизма Hardware Lock Elision (HLE) и Restricted Transactional Memory (RTM).

Механизм Hardware Lock Elision (HLE) использует инструкции-префиксы XACQUIRE и XRELEASE. Префикс XACQUIRE (start lock elision), размещенный перед инструкцией, предписывающей выполнить блокированную атомарную операцию, выключает механизм блокировки. Префикс XRELEASE (end lock elision), размещаемый перед такой инструкцией, отменяет режим HLE, возвращая процессор в “обычный” режим. Очевидно, выполнение атомарных операций без блокировки, связано с риском считывания недостоверных данных. Управляющая логика обнаруживает такие ошибки и исправляет их путем повторного выполнения секции кода, начиная с инструкции, перед которой был указан префикс XACQUIRE, но уже с включенной блокировкой.

Коды префиксов XACQUIRE и XRELEASE совпадают с кодами префиксов REPNE/REPE (0F2h, 0F3h). Поэтому, программа, содержащая такие префиксы, может быть выполнена на процессоре, не поддерживающем HLE, без генерации ошибок Illegal Opcode. Механизм блокировки при этом будет функционировать обычным образом.

Альтернативный механизм - Restricted Transactional Memory (RTM) использует инструкции XBEGIN, XEND и XABORT

Инструкция XBEGIN (transaction begin) информирует процессор о начале выполнения секции кода, работающей с регионом памяти, совместно используемом несколькими программными потоками (Transactional Memory). При возникновении ошибок вследствие неблокированного выполнения атомарных операций, они выявляются аппаратно, и управление передается по адресу, заданному в инструкции (fallback instruction address). При этом автоматически восстанавливается состояние процессора, имевшее место на момент начала выполнения инструкции XBEGIN. Процедура обработки ошибок должна быть подготовлена программистом.

Инструкция XEND (transaction end) информирует процессор о завершении выполнения секции кода, работающей с Transactional Memory.

Инструкция XABORT (transaction abort) позволяет явно инициировать переход на процедуру обработки ошибки. Используется, если ошибка выполнения обнаружена программно.

          

Новшества планируется внедрить в семейство процессоров Intel четвертого поколения, презентация которых состоялась осенью с.г. на форуме IDF в Сaн-Фрaнциско. Носителем транзакционной технологии стaнут процессоры с микроaрхитектурой Haswell.