Расширения транзакционной синхронизации - 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:24 | XABORT аргумент (действителен, только если установлен бит 0, в противном случае зарезервирован). |
XTEST
инструкция
TSX / TSX-NI предоставляет новый XTEST
инструкция, которая возвращает, выполняет ли процессор транзакционную область. Эта инструкция поддерживается процессором, если он поддерживает HLE, RTM или и то, и другое.
Отслеживание адресов приостановки TSX
TSX / TSX-NI Suspend Load Address Tracking (TSXLDTRK) - это расширение набора инструкций, которое позволяет временно отключить отслеживание загрузок из памяти в разделе кода в транзакционной области. Эта функция расширяет HLE и RTM, и ее поддержка в процессоре должна определяться отдельно.
TSXLDTRK представляет две новые инструкции, XSUSLDTRK
и XRESLDTRK
, для приостановки и возобновления отслеживания адреса загрузки соответственно. Пока отслеживание приостановлено, любые загрузки из памяти не будут добавлены в набор для чтения транзакции. Это означает, что, если эти ячейки памяти не были добавлены к наборам чтения или записи транзакции за пределами области приостановки, запись в эти места другими потоками не вызовет прерывания транзакции. Приостановка отслеживания адреса загрузки для части кода в транзакционной области позволяет уменьшить объем памяти, который необходимо отслеживать на предмет конфликтов чтения-записи, и, следовательно, повысить вероятность успешного принятия транзакции.
Выполнение
Этот раздел должен быть обновлено.Июнь 2017 г.) ( |
Спецификация 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 процессоры.
Приложения
Смотрите также
- Расширенные возможности синхронизации (AMD конкурирующая технология)
- Транзакционная память
Рекомендации
- ^ Ричард М. Ю; Кристофер Дж. Хьюз; Конрад Лай; Рави Раджвар (ноябрь 2013 г.). «Оценка производительности расширений Intel Transactional Synchronization Extensions для высокопроизводительных вычислений» (PDF). intel-research.net. Архивировано из оригинал (PDF) на 2016-10-24. Получено 2013-11-14.
- ^ Томас Карнагель; Роман Дементьев; Рави Раджвар; Конрад Лай; Томас Леглер; Бенджамин Шлегель; Вольфганг Ленер (февраль 2014 г.). «Повышение производительности индекса базы данных в памяти с помощью расширений Intel Transactional Synchronization Extensions» (PDF). software.intel.com. Получено 2014-03-03.
- ^ «Оценка производительности расширений Intel Transactional Synchronization Extensions для высокопроизводительных вычислений». supercomputing.org. Ноябрь 2013. Получено 2013-11-14.
- ^ «Тесты: Haswell TSX и пропускная способность транзакций памяти (HLE и RTM)». sisoftware.co.uk. Получено 2013-11-14.
- ^ «Транзакционная синхронизация в Haswell». Software.intel.com. Получено 2012-02-07.
- ^ «Транзакционная память становится популярной с Intel Haswell». Ars Technica. 2012-02-08. Получено 2012-02-09.
- ^ "Обзор Core i7-4770K". Оборудование Тома. 2013-06-01. Получено 2012-06-03.
- ^ «Сравнительная таблица Intel моделей Haswell Pentium, i3, i5 и i7». intel.com. Получено 2014-02-11.
- ^ а б Скотт Уоссон (2014-08-12). «Ошибка побуждает Intel отключить TSX в Haswell, ранних процессорах Broadwell». techreport.com. Получено 2014-08-12.
- ^ а б «Семейство процессоров Intel Core 4-го поколения для настольных ПК, семейство процессоров Intel Pentium для настольных ПК и семейство процессоров Intel Celeron для настольных ПК: обновление спецификации (версия 014)» (PDF). Intel. Июнь 2014. с. 46. Получено 2014-08-13.
При сложном наборе внутренних временных условий и системных событий программное обеспечение, использующее инструкции Intel TSX / TSX-NI (Transactional Synchronization Extensions), может наблюдать непредсказуемое поведение системы.
- ^ «Нарушение рандомизации адресного пространства ядра с помощью Intel TSX» (PDF). 2016.
- ^ Уён Ким (2013-07-25). «Удовольствие от расширений Intel Transactional Synchronization Extensions». Intel. Получено 2013-11-12.
- ^ Себастьен Дабдоуб; Стивен Ту. «Поддержка расширений Intel Transactional Synchronization Extensions в QEMU» (PDF). mit.edu. Получено 2013-11-12.
- ^ а б Йохан Де Гелас (2012-09-20). «Осмысление расширений для транзакционной синхронизации Intel Haswell». АнандТех. Получено 2013-10-20.
- ^ «Обзор аппаратной блокировки». intel.com. Архивировано из оригинал в 2013-10-29. Получено 2013-10-27.
- ^ а б Дэвид Кантер (21.08.2012). «Анализ транзакционной памяти Haswell». Технологии реального мира. Получено 2013-11-19.
- ^ а б "Объединенные тома руководства разработчика программного обеспечения для архитектур Intel 64 и IA-32: 1, 2A, 2B, 2C, 3A, 3B и 3C" (PDF). Intel. Сентябрь 2013. с. 342. Получено 2013-11-19.
- ^ а б c «Справочное руководство по оптимизации архитектур Intel 64 и IA-32» (PDF). Intel. Сентябрь 2013. с. 446. Получено 2013-11-19.
- ^ «Свойства реализации Intel TSX». Intel. 2013. Получено 2013-11-14.
Процессор отслеживает как адреса установки чтения, так и адреса установки записи в кэше данных первого уровня (кэш L1) процессора.
- ^ Де Гелас, Йохан (20 сентября 2012 г.). «Осмысление расширений для транзакционной синхронизации Intel Haswell». АнандТех. Получено 23 декабря 2013.
«ЦП выполняет мелкозернистую блокировку» основан на маркировке строк кэша L1 (64 Б), и их 512, чтобы быть конкретными (64 x 512 = 32 КБ). Для каждой строки кэша существует только один «тег блокировки».
- ^ Дэвид Кантер (21.08.2012). «Альтернативы транзакционной памяти Haswell». Технологии реального мира. Получено 2013-11-14.
- ^ Ян Катресс (12.08.2014). «Intel отключает инструкции TSX: в Haswell, Haswell-E / EP, Broadwell-Y найдена ошибка». АнандТех. Получено 2014-08-30.
- ^ "Семейство процессоров 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.
- ^ "Информация HiPEAC" (PDF). п. 12. Архивировано из оригинал (PDF) на 2017-03-05.
- ^ «Технические характеристики процессора Intel® Core ™ i9-10900K». Intel. 2020 г.. Получено 2020-10-10.
- ^ «Технические характеристики процессора Intel® Core ™ i9-10980HK». Intel. 2020 г.. Получено 2020-10-10.
- ^ «Технические характеристики процессора Intel® Core ™ i7-10810U». Intel. 2020 г.. Получено 2020-10-10.
- ^ «Технические характеристики процессора Intel® Xeon® W-1290P». Intel. 2020 г.. Получено 2020-10-10.
- ^ «Технические характеристики процессора Intel® Core ™ i7-1068NG7». Intel. 2020 г.. Получено 2020-10-10.
- ^ «Справочник по программированию расширений набора команд архитектуры Intel® (PDF)» (PDF). Intel. 2020 г.. Получено 2020-10-21.
- ^ «Улучшенная поддержка TSX».
дальнейшее чтение
- Afek, Y .; Леви, А .; Моррисон, А. (2014). «Материалы симпозиума ACM 2014 г. по принципам распределенных вычислений - PODC '14». Программно-улучшенная аппаратная блокировка, стр. 212. Дои:10.1145/2611462.2611482. ISBN 9781450329446. Цитировать журнал требует
| журнал =
(помощь). Программные улучшения аппаратной блокировки в Intel TSX.
внешняя ссылка
- Презентация IDF 2012 (PDF)
- Добавление блокировки в Linux, Конференция сантехников Linux 2012 (PDF)
- Блокировка elision в библиотеке GNU C, LWN.net, 30 января 2013 г., Энди Клин
- Руководство по оптимизации TSX, Глава 12 (PDF)
- Руководство разработчика программного обеспечения, Том 1, Глава 2.5 (PDF)
- Интернет-ресурсы о расширениях Intel Transactional Synchronization Extensions
- x86, микрокод: ОШИБКА: обновление микрокода, изменяющее x86_capability, LKML, Сентябрь 2014 г. (есть еще аналогичный отчет об ошибке )
- Микрокод Intel, Gentoo, 19 сентября 2015 г.