Jump to content

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

(Перенаправлено с Intel TSX )

Расширения транзакционной синхронизации ( 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 года.

См. также

[ редактировать ]
  1. ^ Ричард М. Ю; Кристофер Дж. Хьюз; Конрад Лай; Рави Раджвар (ноябрь 2013 г.). «Оценка производительности расширений синхронизации транзакций Intel для высокопроизводительных вычислений» (PDF) . intel-research.net . Архивировано из оригинала (PDF) 24 октября 2016 г. Проверено 14 ноября 2013 г.
  2. ^ Томас Карнагель; Роман Дементьев; Рави Раджвар; Конрад Лай; Томас Леглер; Бенджамин Шлегель; Вольфганг Ленер (февраль 2014 г.). «Повышение производительности индекса базы данных в памяти с помощью расширений синхронизации транзакций Intel» (PDF) . программное обеспечение.intel.com . Проверено 03 марта 2014 г.
  3. ^ «Оценка производительности расширений синхронизации транзакций Intel для высокопроизводительных вычислений» . supercomputing.org . Ноябрь 2013 г. Архивировано из оригинала 29 октября 2013 г. Проверено 14 ноября 2013 г.
  4. ^ «Бенч-тесты: Haswell TSX и пропускная способность транзакций с памятью (HLE и RTM)» . sisoftware.co.uk . Проверено 14 ноября 2013 г.
  5. ^ «Транзакционная синхронизация в Haswell» . Software.intel.com . Проверено 7 февраля 2012 г.
  6. ^ «Транзакционная память становится массовой с Intel Haswell» . Арс Техника . 08 февраля 2012 г. Проверено 9 февраля 2012 г.
  7. ^ «Обзор Core i7-4770K» . Аппаратное обеспечение Тома. 01.06.2013 . Проверено 3 июня 2012 г.
  8. ^ «Сравнительная таблица Intel моделей Haswell Pentium, i3, i5 и i7» . intel.com . Проверено 11 февраля 2014 г.
  9. ^ Jump up to: а б Скотт Уоссон (12 августа 2014 г.). «Ошибка побуждает Intel отключить TSX в процессорах Haswell и ранних версиях Broadwell» . techreport.com . Проверено 12 августа 2014 г.
  10. ^ Jump up to: а б «Семейство процессоров Intel Core 4-го поколения для настольных ПК, семейство процессоров Intel Pentium для настольных ПК и семейство процессоров Intel Celeron для настольных ПК: обновление спецификаций (редакция 014)» (PDF) . Интел . Июнь 2014. с. 46 . Проверено 13 августа 2014 г. При сложном наборе внутренних условий синхронизации и системных событий программное обеспечение, использующее инструкции Intel TSX/TSX-NI (расширения синхронизации транзакций), может наблюдать непредсказуемое поведение системы.
  11. ^ «Нарушение рандомизации макета адресного пространства ядра с помощью Intel TSX» (PDF) . 2016.
  12. ^ Гарет Халфакри (29 июня 2021 г.). «Intel забивает еще один гвоздь в гроб TSX обновлением микрокода, отключающим функции» . Регистр . Проверено 17 октября 2012 г.
  13. ^ Уён Ким (25 июля 2013 г.). «Удовольствие от расширений синхронизации транзакций Intel» . Интел . Проверено 12 ноября 2013 г.
  14. ^ Себастьян Дабдуб; Стивен Ту. «Поддержка расширений синхронизации транзакций Intel в QEMU» (PDF) . mit.edu . Проверено 12 ноября 2013 г.
  15. ^ Jump up to: а б Йохан Де Гелас (20 сентября 2012 г.). «Осмысление расширений транзакционной синхронизации Intel Haswell» . АнандТех . Проверено 20 октября 2013 г.
  16. ^ «Обзор устранения аппаратной блокировки» . intel.com. Архивировано из оригинала 29 октября 2013 г. Проверено 27 октября 2013 г.
  17. ^ Jump up to: а б Дэвид Кантер (21 августа 2012 г.). «Анализ транзакционной памяти Хасуэлла» . Реальные мировые технологии . Проверено 19 ноября 2013 г.
  18. ^ Jump up to: а б «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, комбинированные тома: 1, 2A, 2B, 2C, 3A, 3B и 3C» (PDF) . Интел. Сентябрь 2013. с. 342 . Проверено 19 ноября 2013 г.
  19. ^ Jump up to: а б с «Справочное руководство по оптимизации архитектур Intel 64 и IA-32» (PDF) . Интел. Сентябрь 2013. с. 446 . Проверено 19 ноября 2013 г.
  20. ^ «Свойства реализации Intel TSX» . Интел. 2013 . Проверено 14 ноября 2013 г. Процессор отслеживает как адреса набора для чтения, так и адреса набора для записи в кэше данных первого уровня (кэш L1) процессора.
  21. ^ Де Гелас, Йохан (20 сентября 2012 г.). «Осмысление расширений транзакционной синхронизации Intel Haswell» . АнандТех . Проверено 23 декабря 2013 г. Весь «ЦП выполняет мелкозернистые блокировки» основан на маркировке строк кэша L1 (64 Б), а если быть точным, их 512 (64 x 512 = 32 КБ). В каждой строке кэша имеется только один «тег блокировки».
  22. ^ Дэвид Кантер (21 августа 2012 г.). «Альтернативы транзакционной памяти Haswell» . Реальные мировые технологии . Проверено 14 ноября 2013 г.
  23. ^ Ян Катресс (12 августа 2014 г.). «Intel отключает инструкции TSX: ошибка обнаружена в Haswell, Haswell-E/EP, Broadwell-Y» . АнандТех . Проверено 30 августа 2014 г.
  24. ^ «Семейство процессоров 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 не поддерживается другими моделями процессоров.
  25. ^ «Информация о HiPEAC» (PDF) . п. 12. Архивировано из оригинала (PDF) 5 марта 2017 г.
  26. ^ «Информационный документ о проблеме заказа памяти расширения Intel® Transactional Synchronization Extension на мониторинг производительности, июнь 2021 г., версия 1.4» (PDF) . Интел. 2021-06-12. п. 5. Обновление микрокода за октябрь 2018 года также отключило префикс инструкций HLE Intel TSX и принудительно прерывало все транзакции RTM при работе в режиме Intel SGX или режиме управления системой (SMM).
  27. ^ «Расширения синхронизации транзакций Intel® (Intel® TSX) — обновление мониторинга памяти и производительности для процессоров Intel®» . Интел. 2021-06-12.
  28. ^ «Технические характеристики процессора Intel® Core™ i9-10900K» . Интел. 2020 . Проверено 10 октября 2020 г.
  29. ^ «Технические характеристики процессора Intel® Core™ i9-10980HK» . Интел. 2020 . Проверено 10 октября 2020 г.
  30. ^ «Технические характеристики процессора Intel® Core™ i7-10810U» . Интел. 2020 . Проверено 10 октября 2020 г.
  31. ^ «Технические характеристики процессора Intel® Xeon® W-1290P» . Интел. 2020 . Проверено 10 октября 2020 г.
  32. ^ «Технические характеристики процессора Intel® Core™ i7-1068NG7» . Интел. 2020 . Проверено 10 октября 2020 г.
  33. ^ «Справочник по программированию расширений набора команд архитектуры Intel®» (PDF) . Интел. 2020 . Проверено 21 октября 2020 г.

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

[ редактировать ]
  • Афек, Ю.; Леви, А.; Моррисон, А. (2014). Материалы симпозиума ACM 2014 года по принципам распределенных вычислений — PODC '14 . Программно-улучшенное устранение аппаратной блокировки, стр. 212. дои : 10.1145/2611462.2611482 . ISBN  9781450329446 . S2CID   16645370 . . Программные улучшения устранения аппаратной блокировки в Intel TSX.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 272f137def76e53c336a56cd27a63496__1685431980
URL1:https://arc.ask3.ru/arc/aa/27/96/272f137def76e53c336a56cd27a63496.html
Заголовок, (Title) документа по адресу, URL1:
Transactional Synchronization Extensions - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)