Расширения транзакционной синхронизации

редактировать

Расширения транзакционной синхронизации ( TSX ), также называемый Transactional Synchronization Extensions New Instructions (TSX-NI ), является расширением инструкции x86 установить архитектуру (ISA), которая добавляет аппаратную поддержку транзакционной памяти, ускоряя выполнение многопоточного программного обеспечения за счет исключения блокировок. Согласно различным тестам, TSX / TSX-NI может обеспечить примерно на 40% более быстрое выполнение приложений при определенных рабочих нагрузках и в 4–5 раз больше транзакций базы данных в секунду (TPS).

TSX / TSX-NI был задокументирован Intel в феврале 2012 года и дебютировал в июне 2013 года на некоторых микропроцессорах Intel на основе микроархитектуры Haswell. Процессоры Haswell ниже 45xx, а также серии R и K (с разблокированным множителем) SKU не поддерживают TSX / TSX-NI. В августе 2014 года Intel объявила об ошибке в реализации TSX / TSX-NI на текущих степпингах процессоров Haswell, Haswell-E, Haswell-EP и ранних Broadwell, что привело к отключению TSX / TSX-NI. функция на затронутых процессорах с помощью обновления микрокода.

В 2016 году была обнаружена боковая ссылка временная атака путем злоупотребления способом TSX / TSX-NI обрабатывает транзакционные ошибки (т. Е. ошибки страницы ), чтобы нарушить KASLR во всех основных операционных системах.

Поддержка эмуляции TSX / TSX-NI предоставляется как часть эмулятора разработки программного обеспечения Intel. Также имеется экспериментальная поддержка эмуляции TSX / TSX-NI в вилке QEMU.

Содержание
  • 1 Функции
    • 1.1 Удаление аппаратной блокировки
    • 1.2 Ограниченная транзакционная память
    • 1.3 Инструкция XTEST
    • 1.4 TSX Suspend Load Address Tracking
  • 2 Реализация
  • 3 Приложения
  • 4 См. Также
  • 5 Ссылки
  • 6 Дополнительная литература
  • 7 Внешние ссылки
Характеристики

TSX / TSX-NI предоставляет два программных интерфейса для обозначения областей кода для выполнения транзакций. Hardware Lock Elision (HLE) - это интерфейс на основе префиксов команд, предназначенный для обратной совместимости с процессорами без поддержки TSX / TSX-NI. Ограниченная транзакционная память (RTM) - это новый интерфейс набора команд, который обеспечивает большую гибкость для программистов.

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

Другими словами, снятие блокировки посредством выполнения транзакции использует транзакции памяти как быстрый путь, где это возможно, в то время как медленный (резервный) путь по-прежнему является нормальной блокировкой.

Аппаратная блокировка Elision

Аппаратная блокировка Elision (HLE) добавляет два новых префикса инструкций, XACQUIREи XRELEASE. Эти два префикса повторно используют коды операций существующих префиксов REPNE/ REPE(F2H/ F3H). На процессорах, не поддерживающих HLE, префиксы REPNE/ REPEигнорируются в инструкциях, для которых действительны XACQUIRE/ XRELEASE, поэтому включение обратной совместимости.

Подсказка префикса XACQUIREможет использоваться только со следующими инструкциями с явным префиксом LOCK: ADD, АЦП, И, BTC, BTR, BTS, CMPXCHG, CMPXCHG8B, DEC, INC, NEG, NOT, OR, SBB, SUB, XOR, XADDи XCHG. Инструкцию XCHGможно также использовать без префикса LOCK.

Подсказка префикса XRELEASEможет использоваться как с инструкциями, перечисленными выше, так и с MOV mem, regи MOV mem, immинструкции.

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

Ограниченная транзакционная память

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

RTM добавляет три новые инструкции: XBEGIN, XENDи XABORT. Инструкции XBEGINи XENDотмечают начало и конец области кода транзакции; инструкция XABORTявно прерывает транзакцию. Ошибка транзакции перенаправляет процессор на путь резервного кода, указанный инструкцией XBEGIN, со статусом прерывания, возвращаемым в регистре EAX.

Регистр EAX. позиция битаЗначение
0Устанавливается, если прерывание вызвано инструкцией XABORT.
1Если установлено, транзакция может быть успешной при повторной попытке. Этот бит всегда сброшен, если установлен бит 0.
2Устанавливается, если другой логический процессор вступил в конфликт с адресом памяти, который был частью прерванной транзакции.
3Устанавливается, если внутренний буфер переполнен.
4Устанавливается, если сработала точка останова отладки.
5Устанавливается, если во время выполнения вложенной транзакции произошло прерывание.
23:6Зарезервировано.
31:24аргумент XABORT(действителен, только если установлен бит 0, в противном случае зарезервирован).

XTESTинструкция

TSX / TSX-NI предоставляет новую инструкцию XTEST, которая возвращает, выполняет ли процессор транзакционную область. Эта инструкция поддерживается процессором, если он поддерживает HLE, RTM или и то, и другое.

Отслеживание адреса приостановки загрузки TSX

Отслеживание адреса приостановки загрузки TSX / TSX-NI (TSXLDTRK) - это расширение набора команд, которое позволяет временно отключить отслеживание нагрузок из памяти в разделе кода внутри транзакционный регион. Эта функция расширяет HLE и RTM, и ее поддержка в процессоре должна определяться отдельно.

TSXLDTRK представляет две новые инструкции, XSUSLDTRKи XRESLDTRK, для приостановки и возобновления отслеживания адреса загрузки соответственно. Пока отслеживание приостановлено, любые загрузки из памяти не будут добавлены к набору чтения транзакции. Это означает, что, если эти ячейки памяти не были добавлены к наборам чтения или записи транзакции за пределами области приостановки, запись в эти места другими потоками не вызовет прерывания транзакции. Приостановка отслеживания адреса загрузки для части кода в транзакционной области позволяет уменьшить объем памяти, который необходимо отслеживать на предмет конфликтов чтения-записи, и, следовательно, повысить вероятность успешного принятия транзакции.

Реализация

Спецификация Intel TSX / TSX-NI описывает, как транзакционная память предоставляется программистам, но не раскрывает подробностей о фактической реализации транзакционной памяти. Intel указывает в своих руководствах для разработчиков и по оптимизации, что Haswell поддерживает наборы для чтения и записи с детализацией строки кэша, отслеживая адреса в кэше данных L1 процессора. Intel также заявляет, что конфликты данных обнаруживаются с помощью протокола согласованности кэша.

Кэш данных L1 Haswell имеет ассоциативность восемь. Это означает, что в этой реализации транзакционное выполнение, которое записывает в девять различных местоположений, отображаемых в один и тот же набор кешей, будет прервано. Однако из-за реализации микроархитектуры это не означает, что меньшее количество обращений к одному и тому же набору гарантированно никогда не прервется. Кроме того, в конфигурациях ЦП с технологией Hyper-Threading кэш L1 используется совместно двумя потоками в одном ядре, поэтому операции в логическом процессоре одного и того же ядра могут вызывать вытеснение.

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

В августе 2014 г. корпорация Intel объявила об ошибке в реализации TSX / TSX-NI на процессорах Haswell, Haswell-E, Haswell-EP и ранних процессорах Broadwell, что привело к отключению функции TSX / TSX-NI на затронутые процессоры через обновление микрокода. Ошибка была исправлена ​​в степпингах F-0 процессора Core M-5Y70 Broadwell с поддержкой vPro в ноябре 2014 года.

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

Согласно Справочному руководству по оптимизации архитектур Intel 64 и IA-32 от мая 2020 г., том 1, глава 2.5. Архитектура набора команд Intel и функции удалены, HLE удалена из продуктов Intel, выпущенных в 2019 г. и позже. RTM не документируется как удаленная. Однако процессоры Intel 10-го поколения Comet Lake и Ice Lake, выпущенные в 2020 году, не поддерживают TSX / TSX-NI, включая HLE и RTM.

В версии 41 справочника по программированию расширений набора команд архитектуры Intel от октября 2020 года было задокументировано новое расширение набора команд TSXLDTRK, которое планируется включить в будущие процессоры Sapphire Rapids.

Приложения
  • RPCS3 (эмулятор PlayStation 3)
См. Также
Ссылки
Дополнительная литература
  • Afek, Y.; Леви, А.; Моррисон, А. (2014). «Материалы симпозиума ACM 2014 г. по принципам распределенных вычислений - PODC '14». Программно-улучшенная аппаратная блокировка, стр. 212. doi : 10.1145 / 2611462.2611482. ISBN 9781450329446. Журнал цитирования требует | journal =(). Программные улучшения аппаратного исключения блокировки в Intel TSX.
Внешние ссылки
Последняя правка сделана 2021-06-11 09:41:17
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте