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

Расширения транзакционной синхронизации (TSX), также называемый Расширения транзакционной синхронизации Новые инструкции (TSX-NI), является продолжением x86 архитектура набора команд (ISA), который добавляет оборудование транзакционная память поддержка, ускоряющая выполнение многопоточного программного обеспечения за счет исключения блокировок. Согласно различным тестам, TSX / TSX-NI может обеспечить примерно на 40% более быстрое выполнение приложений при определенных рабочих нагрузках и в 4–5 раз больше базы данных. транзакций в секунду (TPS).[1][2][3][4]

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

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

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

Функции

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

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

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

Аппаратный замок Elision

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

В XACQUIRE подсказка префикса может использоваться только со следующими инструкциями с явным ЗАМОК префикс: ДОБАВИТЬ, АЦП, И, BTC, БТР, BTS, CMPXCHG, CMPXCHG8B, DEC, INC, NEG, НЕТ, ИЛИ ЖЕ, SBB, SUB, XOR, XADD, и XCHG. В XCHG инструкцию можно использовать без ЗАМОК префикс.

В 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:24XABORT аргумент (действителен, только если установлен бит 0, в противном случае зарезервирован).

XTEST инструкция

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

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

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

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

Выполнение

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

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

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

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

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

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

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

Приложения

Смотрите также

Рекомендации

  1. ^ Ричард М. Ю; Кристофер Дж. Хьюз; Конрад Лай; Рави Раджвар (ноябрь 2013 г.). «Оценка производительности расширений Intel Transactional Synchronization Extensions для высокопроизводительных вычислений» (PDF). intel-research.net. Архивировано из оригинал (PDF) на 2016-10-24. Получено 2013-11-14.
  2. ^ Томас Карнагель; Роман Дементьев; Рави Раджвар; Конрад Лай; Томас Леглер; Бенджамин Шлегель; Вольфганг Ленер (февраль 2014 г.). «Повышение производительности индекса базы данных в памяти с помощью расширений Intel Transactional Synchronization Extensions» (PDF). software.intel.com. Получено 2014-03-03.
  3. ^ «Оценка производительности расширений Intel Transactional Synchronization Extensions для высокопроизводительных вычислений». supercomputing.org. Ноябрь 2013. Получено 2013-11-14.
  4. ^ «Тесты: Haswell TSX и пропускная способность транзакций памяти (HLE и RTM)». sisoftware.co.uk. Получено 2013-11-14.
  5. ^ «Транзакционная синхронизация в Haswell». Software.intel.com. Получено 2012-02-07.
  6. ^ «Транзакционная память становится популярной с Intel Haswell». Ars Technica. 2012-02-08. Получено 2012-02-09.
  7. ^ "Обзор Core i7-4770K". Оборудование Тома. 2013-06-01. Получено 2012-06-03.
  8. ^ «Сравнительная таблица Intel моделей Haswell Pentium, i3, i5 и i7». intel.com. Получено 2014-02-11.
  9. ^ а б Скотт Уоссон (2014-08-12). «Ошибка побуждает Intel отключить TSX в Haswell, ранних процессорах Broadwell». techreport.com. Получено 2014-08-12.
  10. ^ а б «Семейство процессоров Intel Core 4-го поколения для настольных ПК, семейство процессоров Intel Pentium для настольных ПК и семейство процессоров Intel Celeron для настольных ПК: обновление спецификации (версия 014)» (PDF). Intel. Июнь 2014. с. 46. Получено 2014-08-13. При сложном наборе внутренних временных условий и системных событий программное обеспечение, использующее инструкции Intel TSX / TSX-NI (Transactional Synchronization Extensions), может наблюдать непредсказуемое поведение системы.
  11. ^ «Нарушение рандомизации адресного пространства ядра с помощью Intel TSX» (PDF). 2016.
  12. ^ Уён Ким (2013-07-25). «Удовольствие от расширений Intel Transactional Synchronization Extensions». Intel. Получено 2013-11-12.
  13. ^ Себастьен Дабдоуб; Стивен Ту. «Поддержка расширений Intel Transactional Synchronization Extensions в QEMU» (PDF). mit.edu. Получено 2013-11-12.
  14. ^ а б Йохан Де Гелас (2012-09-20). «Осмысление расширений для транзакционной синхронизации Intel Haswell». АнандТех. Получено 2013-10-20.
  15. ^ «Обзор аппаратной блокировки». intel.com. Архивировано из оригинал в 2013-10-29. Получено 2013-10-27.
  16. ^ а б Дэвид Кантер (21.08.2012). «Анализ транзакционной памяти Haswell». Технологии реального мира. Получено 2013-11-19.
  17. ^ а б "Объединенные тома руководства разработчика программного обеспечения для архитектур Intel 64 и IA-32: 1, 2A, 2B, 2C, 3A, 3B и 3C" (PDF). Intel. Сентябрь 2013. с. 342. Получено 2013-11-19.
  18. ^ а б c «Справочное руководство по оптимизации архитектур Intel 64 и IA-32» (PDF). Intel. Сентябрь 2013. с. 446. Получено 2013-11-19.
  19. ^ «Свойства реализации Intel TSX». Intel. 2013. Получено 2013-11-14. Процессор отслеживает как адреса установки чтения, так и адреса установки записи в кэше данных первого уровня (кэш L1) процессора.
  20. ^ Де Гелас, Йохан (20 сентября 2012 г.). «Осмысление расширений для транзакционной синхронизации Intel Haswell». АнандТех. Получено 23 декабря 2013. «ЦП выполняет мелкозернистую блокировку» основан на маркировке строк кэша L1 (64 Б), и их 512, чтобы быть конкретными (64 x 512 = 32 КБ). Для каждой строки кэша существует только один «тег блокировки».
  21. ^ Дэвид Кантер (21.08.2012). «Альтернативы транзакционной памяти Haswell». Технологии реального мира. Получено 2013-11-14.
  22. ^ Ян Катресс (12.08.2014). «Intel отключает инструкции TSX: в Haswell, Haswell-E / EP, Broadwell-Y найдена ошибка». АнандТех. Получено 2014-08-30.
  23. ^ "Семейство процессоров Intel Core M. Обновление спецификации. Декабрь 2014 г. Версия 003. 330836-003" (PDF). Intel. Декабрь 2014. с. 10. Получено 2014-12-28. BDM53 1 E-0: X, F-0 :, Статус: исправлено. ОШИБКА: инструкции Intel TSX недоступны. 1. Относится к процессору Intel Core M-5Y70. Intel TSX поддерживается процессором Intel Core M-5Y70 с технологией Intel vPro. Intel TSX не поддерживается на процессорах других SKU.
  24. ^ "Информация HiPEAC" (PDF). п. 12. Архивировано из оригинал (PDF) на 2017-03-05.
  25. ^ «Технические характеристики процессора Intel® Core ™ i9-10900K». Intel. 2020 г.. Получено 2020-10-10.
  26. ^ «Технические характеристики процессора Intel® Core ™ i9-10980HK». Intel. 2020 г.. Получено 2020-10-10.
  27. ^ «Технические характеристики процессора Intel® Core ™ i7-10810U». Intel. 2020 г.. Получено 2020-10-10.
  28. ^ «Технические характеристики процессора Intel® Xeon® W-1290P». Intel. 2020 г.. Получено 2020-10-10.
  29. ^ «Технические характеристики процессора Intel® Core ™ i7-1068NG7». Intel. 2020 г.. Получено 2020-10-10.
  30. ^ «Справочник по программированию расширений набора команд архитектуры Intel® (PDF)» (PDF). Intel. 2020 г.. Получено 2020-10-21.
  31. ^ «Улучшенная поддержка TSX».

дальнейшее чтение

  • Afek, Y .; Леви, А .; Моррисон, А. (2014). «Материалы симпозиума ACM 2014 г. по принципам распределенных вычислений - PODC '14». Программно-улучшенная аппаратная блокировка, стр. 212. Дои:10.1145/2611462.2611482. ISBN  9781450329446. Цитировать журнал требует | журнал = (помощь). Программные улучшения аппаратной блокировки в Intel TSX.

внешняя ссылка