Расширения транзакционной синхронизации
Расширения транзакционной синхронизации ( 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, а также SKU серий R и K (с разблокированным множителем) не поддерживают 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 ] В 2021 году Intel выпустила обновление микрокода, которое отключило функцию TSX/TSX-NI на процессорах поколений от Skylake до Coffee Lake в качестве меры по устранению обнаруженных проблем безопасности. [ 12 ]
Поддержка эмуляции TSX/TSX-NI предоставляется как часть эмулятора разработки программного обеспечения Intel. [ 13 ] Существует также экспериментальная поддержка эмуляции TSX/TSX-NI в вилке QEMU . [ 14 ]
Функции
[ редактировать ]TSX/TSX-NI предоставляет два программных интерфейса для обозначения областей кода для выполнения транзакций. Hardware Lock Elision (HLE) — это интерфейс на основе префиксов инструкций, разработанный для обратной совместимости с процессорами без поддержки TSX/TSX-NI. Ограниченная транзакционная память (RTM) — это новый интерфейс набора команд, обеспечивающий большую гибкость для программистов. [ 15 ]
TSX/TSX-NI обеспечивает оптимистичное выполнение областей транзакционного кода. Аппаратное обеспечение отслеживает несколько потоков на предмет конфликтного доступа к памяти, одновременно прерывая и откатывая транзакции, которые не могут быть успешно завершены. Для программного обеспечения предусмотрены механизмы обнаружения и обработки неудачных транзакций. [ 15 ]
Другими словами, устранение блокировки посредством выполнения транзакций использует транзакции памяти как быстрый путь, где это возможно, в то время как медленный (резервный) путь по-прежнему остается обычной блокировкой.
Аппаратная блокировка
[ редактировать ]Hardware Lock Elision (HLE) добавляет два новых префикса инструкций: XACQUIRE
и XRELEASE
. Эти два префикса повторно используют коды операций существующих REPNE
/ REPE
префиксы ( F2H
/ F3H
). На процессорах, не поддерживающих HLE, REPNE
/ REPE
префиксы игнорируются в инструкциях, для которых XACQUIRE
/ XRELEASE
действительны, что обеспечивает обратную совместимость. [ 16 ]
The XACQUIRE
префиксную подсказку можно использовать только со следующими инструкциями с явным LOCK
префикс: ADD
, ADC
, AND
, BTC
, BTR
, BTS
, CMPXCHG
, CMPXCHG8B
, DEC
, INC
, NEG
, NOT
, OR
, SBB
, SUB
, XOR
, XADD
, и XCHG
. XCHG
инструкцию можно использовать без LOCK
префикс тоже.
The 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
, для приостановки и возобновления отслеживания адреса загрузки соответственно. Пока отслеживание приостановлено, любые загрузки из памяти не будут добавлены в набор чтения транзакций. Это означает, что, если эти ячейки памяти не были добавлены в наборы чтения или записи транзакций за пределами области приостановки, запись в этих ячейках другими потоками не приведет к прерыванию транзакции. Приостановка отслеживания адреса загрузки для части кода в пределах транзакционной области позволяет уменьшить объем памяти, который необходимо отслеживать на предмет конфликтов чтения и записи, и, следовательно, повысить вероятность успешной фиксации транзакции.
Выполнение
[ редактировать ]Спецификация Intel TSX/TSX-NI описывает, как транзакционная память предоставляется программистам, но не содержит подробностей о фактической реализации транзакционной памяти. [ 17 ] В своих руководствах для разработчиков и по оптимизации Intel указывает, что Haswell поддерживает как наборы чтения, так и наборы записи с точностью до строки кэша, отслеживая адреса в кэше данных L1 процессора. [ 18 ] [ 19 ] [ 20 ] [ 21 ] Intel также заявляет, что конфликты данных обнаруживаются с помощью протокола когерентности кэша . [ 19 ]
Кэш данных L1 Haswell имеет ассоциативность восемь. Это означает, что в этой реализации выполнение транзакций, которые записывают в девять различных мест, сопоставленных с одним и тем же набором кэша, будет прервано. Однако из-за микроархитектурных реализаций это не означает, что меньшее количество обращений к одному и тому же набору гарантированно никогда не прервется. Кроме того, в конфигурациях ЦП с технологией Hyper-Threading кэш L1 используется совместно двумя потоками одного ядра, поэтому операции в родственном логическом процессоре того же ядра могут привести к вытеснению. [ 19 ]
Независимые исследования указывают на то, что транзакционная память Haswell, скорее всего, представляет собой систему отложенного обновления, использующую поядерные кэши для транзакционных данных и контрольных точек регистров. [ 17 ] Другими словами, Haswell с большей вероятностью будет использовать систему транзакционной памяти на основе кэша, поскольку это гораздо менее рискованный выбор реализации. С другой стороны, Intel Skylake или более поздние версии могут сочетать этот подход на основе кэша с буфером упорядочения памяти (MOB) для той же цели, возможно, также предоставляя многоверсионную транзакционную память, которая более поддается спекулятивной многопоточности . [ 22 ]
История и ошибки
[ редактировать ]В августе 2014 года Intel объявила о существовании ошибки в реализации TSX/TSX-NI на процессорах Haswell, Haswell-E, Haswell-EP и ранних версиях Broadwell, что привело к отключению функции TSX/TSX-NI на затронутых процессорах с помощью микрокода. обновлять. [ 9 ] [ 10 ] [ 23 ] Ошибка была исправлена в степпинге F-0 процессора Core M-5Y70 Broadwell с поддержкой vPro в ноябре 2014 года. [ 24 ]
Ошибка была обнаружена, а затем о ней сообщили во время написания дипломной работы в Школе электротехники и вычислительной техники Афинского национального технического университета . [ 25 ]
В октябре 2018 года Intel сообщила о проблеме с порядком памяти TSX/TSX-NI, обнаруженной в некоторых Skylake . процессорах [ 26 ] В результате обновления микрокода поддержка HLE была отключена в затронутых процессорах, а RTM был смягчен за счет принесения в жертву одного счетчика производительности при использовании вне режима Intel SGX или режима управления системой ( SMM ). Системному программному обеспечению придется либо эффективно отключить RTM, либо обновить инструменты мониторинга производительности, чтобы не использовать затронутый счетчик производительности.
В июне 2021 года Intel опубликовала обновление микрокода, которое дополнительно отключает TSX/TSX-NI на различных моделях процессоров Xeon и Core, от Skylake до Coffee Lake и Whiskey Lake, в качестве меры по устранению уязвимости асинхронного прерывания TSX (TAA). Ранее устранение проблемы с упорядочением памяти было удалено. [ 27 ] По умолчанию с обновленным микрокодом процессор по-прежнему будет указывать поддержку RTM, но всегда будет прерывать транзакцию. Системное программное обеспечение способно обнаружить этот режим работы и замаскировать поддержку TSX/TSX-NI со стороны CPUID
инструкция, предотвращающая обнаружение TSX/TSX-NI приложениями. Системное программное обеспечение также может включать «Режим разработки неподдерживаемого программного обеспечения», в котором RTM полностью активен, но в этом случае при использовании RTM могут возникнуть проблемы, описанные ранее, и поэтому этот режим не следует включать в производственных системах. В некоторых системах RTM невозможно повторно включить, когда SGX активен. HLE всегда отключен.
Согласно Руководству разработчика программного обеспечения для архитектур Intel 64 и IA-32 от мая 2020 года, том 1, глава 2.5. Архитектура и функции набора инструкций Intel удалены, [ 18 ] HLE был удален из продуктов Intel, выпущенных в 2019 году и позднее. RTM не задокументирован как удаленный. Однако клиентские процессоры Intel Comet Lake и Ice Lake 10-го поколения , выпущенные в 2020 году, не поддерживают TSX/TSX-NI. [ 28 ] [ 29 ] [ 30 ] [ 31 ] [ 32 ] включая HLE и RTM. Инженерные версии процессоров Comet Lake по-прежнему сохраняли поддержку TSX/TSX-NI.
В Справочнике по программированию расширений набора команд архитектуры Intel, версия 41 от октября 2020 г.: [ 33 ] было задокументировано новое расширение набора команд TSXLDTRK. Впервые он был включен в процессоры Sapphire Rapids , выпущенные в январе 2023 года.
См. также
[ редактировать ]- Advanced Synchronization Facility – конкурирующая технология AMD
Ссылки
[ редактировать ]- ^ Ричард М. Ю; Кристофер Дж. Хьюз; Конрад Лай; Рави Раджвар (ноябрь 2013 г.). «Оценка производительности расширений синхронизации транзакций Intel для высокопроизводительных вычислений» (PDF) . intel-research.net . Архивировано из оригинала (PDF) 24 октября 2016 г. Проверено 14 ноября 2013 г.
- ^ Томас Карнагель; Роман Дементьев; Рави Раджвар; Конрад Лай; Томас Леглер; Бенджамин Шлегель; Вольфганг Ленер (февраль 2014 г.). «Повышение производительности индекса базы данных в памяти с помощью расширений синхронизации транзакций Intel» (PDF) . программное обеспечение.intel.com . Проверено 03 марта 2014 г.
- ^ «Оценка производительности расширений синхронизации транзакций Intel для высокопроизводительных вычислений» . supercomputing.org . Ноябрь 2013 г. Архивировано из оригинала 29 октября 2013 г. Проверено 14 ноября 2013 г.
- ^ «Бенч-тесты: Haswell TSX и пропускная способность транзакций с памятью (HLE и RTM)» . sisoftware.co.uk . Проверено 14 ноября 2013 г.
- ^ «Транзакционная синхронизация в Haswell» . Software.intel.com . Проверено 7 февраля 2012 г.
- ^ «Транзакционная память становится массовой с Intel Haswell» . Арс Техника . 08 февраля 2012 г. Проверено 9 февраля 2012 г.
- ^ «Обзор Core i7-4770K» . Аппаратное обеспечение Тома. 01.06.2013 . Проверено 3 июня 2012 г.
- ^ «Сравнительная таблица Intel моделей Haswell Pentium, i3, i5 и i7» . intel.com . Проверено 11 февраля 2014 г.
- ^ Jump up to: а б Скотт Уоссон (12 августа 2014 г.). «Ошибка побуждает Intel отключить TSX в процессорах Haswell и ранних версиях Broadwell» . techreport.com . Проверено 12 августа 2014 г.
- ^ Jump up to: а б «Семейство процессоров Intel Core 4-го поколения для настольных ПК, семейство процессоров Intel Pentium для настольных ПК и семейство процессоров Intel Celeron для настольных ПК: обновление спецификаций (редакция 014)» (PDF) . Интел . Июнь 2014. с. 46 . Проверено 13 августа 2014 г.
При сложном наборе внутренних условий синхронизации и системных событий программное обеспечение, использующее инструкции Intel TSX/TSX-NI (расширения синхронизации транзакций), может наблюдать непредсказуемое поведение системы.
- ^ «Нарушение рандомизации макета адресного пространства ядра с помощью Intel TSX» (PDF) . 2016.
- ^ Гарет Халфакри (29 июня 2021 г.). «Intel забивает еще один гвоздь в гроб TSX обновлением микрокода, отключающим функции» . Регистр . Проверено 17 октября 2012 г.
- ^ Уён Ким (25 июля 2013 г.). «Удовольствие от расширений синхронизации транзакций Intel» . Интел . Проверено 12 ноября 2013 г.
- ^ Себастьян Дабдуб; Стивен Ту. «Поддержка расширений синхронизации транзакций Intel в QEMU» (PDF) . mit.edu . Проверено 12 ноября 2013 г.
- ^ Jump up to: а б Йохан Де Гелас (20 сентября 2012 г.). «Осмысление расширений транзакционной синхронизации Intel Haswell» . АнандТех . Проверено 20 октября 2013 г.
- ^ «Обзор устранения аппаратной блокировки» . intel.com. Архивировано из оригинала 29 октября 2013 г. Проверено 27 октября 2013 г.
- ^ Jump up to: а б Дэвид Кантер (21 августа 2012 г.). «Анализ транзакционной памяти Хасуэлла» . Реальные мировые технологии . Проверено 19 ноября 2013 г.
- ^ Jump up to: а б «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, комбинированные тома: 1, 2A, 2B, 2C, 3A, 3B и 3C» (PDF) . Интел. Сентябрь 2013. с. 342 . Проверено 19 ноября 2013 г.
- ^ Jump up to: а б с «Справочное руководство по оптимизации архитектур Intel 64 и IA-32» (PDF) . Интел. Сентябрь 2013. с. 446 . Проверено 19 ноября 2013 г.
- ^ «Свойства реализации Intel TSX» . Интел. 2013 . Проверено 14 ноября 2013 г.
Процессор отслеживает как адреса набора для чтения, так и адреса набора для записи в кэше данных первого уровня (кэш L1) процессора.
- ^ Де Гелас, Йохан (20 сентября 2012 г.). «Осмысление расширений транзакционной синхронизации Intel Haswell» . АнандТех . Проверено 23 декабря 2013 г.
Весь «ЦП выполняет мелкозернистые блокировки» основан на маркировке строк кэша L1 (64 Б), а если быть точным, их 512 (64 x 512 = 32 КБ). В каждой строке кэша имеется только один «тег блокировки».
- ^ Дэвид Кантер (21 августа 2012 г.). «Альтернативы транзакционной памяти Haswell» . Реальные мировые технологии . Проверено 14 ноября 2013 г.
- ^ Ян Катресс (12 августа 2014 г.). «Intel отключает инструкции TSX: ошибка обнаружена в Haswell, Haswell-E/EP, Broadwell-Y» . АнандТех . Проверено 30 августа 2014 г.
- ^ «Семейство процессоров Intel Core M. Обновление спецификаций. Декабрь 2014 г. Редакция 003. 330836-003» (PDF) . Интел . Декабрь 2014. с. 10 . Проверено 28 декабря 2014 г.
БДМ53 1 E-0: X, F-0:, Статус: Исправлено. ОШИБКА: Инструкции Intel TSX недоступны. 1. Применяется к процессору Intel Core M-5Y70. Intel TSX поддерживается процессором Intel Core M-5Y70 с технологией Intel vPro. Intel TSX не поддерживается другими моделями процессоров.
- ^ «Информация о HiPEAC» (PDF) . п. 12. Архивировано из оригинала (PDF) 5 марта 2017 г.
- ^ «Информационный документ о проблеме заказа памяти расширения Intel® Transactional Synchronization Extension на мониторинг производительности, июнь 2021 г., версия 1.4» (PDF) . Интел. 2021-06-12. п. 5.
Обновление микрокода за октябрь 2018 года также отключило префикс инструкций HLE Intel TSX и принудительно прерывало все транзакции RTM при работе в режиме Intel SGX или режиме управления системой (SMM).
- ^ «Расширения синхронизации транзакций Intel® (Intel® TSX) — обновление мониторинга памяти и производительности для процессоров Intel®» . Интел. 2021-06-12.
- ^ «Технические характеристики процессора Intel® Core™ i9-10900K» . Интел. 2020 . Проверено 10 октября 2020 г.
- ^ «Технические характеристики процессора Intel® Core™ i9-10980HK» . Интел. 2020 . Проверено 10 октября 2020 г.
- ^ «Технические характеристики процессора Intel® Core™ i7-10810U» . Интел. 2020 . Проверено 10 октября 2020 г.
- ^ «Технические характеристики процессора Intel® Xeon® W-1290P» . Интел. 2020 . Проверено 10 октября 2020 г.
- ^ «Технические характеристики процессора Intel® Core™ i7-1068NG7» . Интел. 2020 . Проверено 10 октября 2020 г.
- ^ «Справочник по программированию расширений набора команд архитектуры Intel®» (PDF) . Интел. 2020 . Проверено 21 октября 2020 г.
Дальнейшее чтение
[ редактировать ]- Афек, Ю.; Леви, А.; Моррисон, А. (2014). Материалы симпозиума ACM 2014 года по принципам распределенных вычислений — PODC '14 . Программно-улучшенное устранение аппаратной блокировки, стр. 212. дои : 10.1145/2611462.2611482 . ISBN 9781450329446 . S2CID 16645370 . . Программные улучшения устранения аппаратной блокировки в Intel TSX.
Внешние ссылки
[ редактировать ]- Презентация с IDF 2012 (PDF)
- Добавление исключения блокировки в Linux , Конференция Linux Plumbers Conference 2012 (PDF)
- Блокировка Elision в библиотеке GNU C , LWN.net , 30 января 2013 г., Энди Клин
- Руководство по оптимизации TSX , глава 12 (PDF)
- Руководство разработчика программного обеспечения , том 1, глава 2.5 (PDF)
- Веб-ресурсы о расширениях синхронизации транзакций Intel
- x86, микрокод: BUG: обновление микрокода, изменяющее x86_capability , LKML , сентябрь 2014 г. (есть также еще один подобный отчет об ошибке )
- Микрокод Intel , Gentoo, 19 сентября 2015 г.