stringtranslate.com

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

Transactional Synchronization Extensions ( TSX ), также называемые Transactional Synchronization Extensions New Instructions ( 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 Software Development Emulator. [13] Также существует экспериментальная поддержка эмуляции TSX/TSX-NI в форке QEMU . [14]

Функции

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

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

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

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

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

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

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

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

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

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

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

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, скорее всего, будет использовать систему транзакционной памяти на основе кэша, поскольку это гораздо менее рискованный выбор реализации. С другой стороны, Skylake от Intel или более поздние версии могут объединить этот подход на основе кэша с буфером упорядочения памяти (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 Asynchronous Abort (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 10-го поколения Comet Lake и Ice Lake , выпущенные в 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 Transactional Synchronization Extensions для высокопроизводительных вычислений» (PDF) . intel-research.net . Архивировано из оригинала (PDF) 2016-10-24 . Получено 2013-11-14 .
  2. ^ Томас Карнагель; Роман Дементьев; Рави Раджвар; Конрад Лай; Томас Леглер; Бенджамин Шлегель; Вольфганг Ленер (февраль 2014 г.). «Улучшение производительности индекса базы данных в памяти с помощью расширений Intel Transactional Synchronization Extensions» (PDF) . software.intel.com . Получено 03.03.2014 .
  3. ^ "Оценка производительности расширений Intel Transactional Synchronization Extensions для высокопроизводительных вычислений". supercomputing.org . Ноябрь 2013 г. Архивировано из оригинала 29-10-2013 . Получено 14-11-2013 .
  4. ^ "Тесты: TSX и пропускная способность транзакций памяти (HLE и RTM) в Haswell". sisoftware.co.uk . Получено 14.11.2013 .
  5. ^ "Транзакционная синхронизация в Haswell". Software.intel.com . Получено 2012-02-07 .
  6. ^ "Транзакционная память становится мейнстримом с Intel Haswell". Ars Technica . 2012-02-08 . Получено 2012-02-09 .
  7. ^ "Обзор Core i7-4770K". Tom's Hardware. 2013-06-01 . Получено 2012-06-03 .
  8. ^ "Сравнительная таблица моделей Intel Haswell Pentium, i3, i5 и i7". intel.com . Получено 11.02.2014 .
  9. ^ Скотт Уоссон (2014-08-12). "Errata побуждает Intel отключить TSX в процессорах Haswell и ранних Broadwell". techreport.com . Получено 2014-08-12 .
  10. ^ ab "Desktop 4th Generation Intel Core Processor Family, Desktop Intel Pentium Processor Family и Desktop Intel Celeron Processor Family: Specification Update (Revision 014)" (PDF) . Intel . June 2014. p. 46 . Retrieved 2014-08-13 . В условиях сложного набора внутренних условий синхронизации и системных событий программное обеспечение, использующее инструкции Intel TSX/TSX-NI (Transactional Synchronization Extensions), может наблюдать непредсказуемое поведение системы.
  11. ^ «Нарушение рандомизации компоновки адресного пространства ядра с помощью Intel TSX» (PDF) . 2016.
  12. ^ Гарет Халфакри (29.06.2021). «Intel вбивает еще один гвоздь в гроб TSX с помощью обновления микрокода, отключающего функции». The Register . Получено 17.10.2012 .
  13. ^ Wooyoung Kim (2013-07-25). "Веселье с расширениями Intel Transactional Synchronization". Intel . Получено 2013-11-12 .
  14. ^ Себастьен Дабдуб; Стивен Ту. «Поддержка расширений транзакционной синхронизации Intel в QEMU» (PDF) . mit.edu . Получено 12 ноября 2013 г.
  15. ^ ab Johan De Gelas (2012-09-20). "Making Sense of the Intel Haswell Transactional Synchronization eXtensions". AnandTech . Получено 2013-10-20 .
  16. ^ "Обзор Hardware Lock Elision". intel.com. Архивировано из оригинала 29-10-2013 . Получено 27-10-2013 .
  17. ^ ab Дэвид Кантер (2012-08-21). "Анализ транзакционной памяти Haswell". Real World Technologies . Получено 2013-11-19 .
  18. ^ ab "Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. Объединенные тома: 1, 2A, 2B, 2C, 3A, 3B и 3C" (PDF) . Intel. Сентябрь 2013 г. стр. 342. Получено 19 ноября 2013 г.
  19. ^ abc "Справочное руководство по оптимизации архитектур Intel 64 и IA-32" (PDF) . Intel. Сентябрь 2013 г. стр. 446 . Получено 19 ноября 2013 г. .
  20. ^ "Свойства реализации Intel TSX". Intel. 2013. Получено 14.11.2013 . Процессор отслеживает как адреса чтения, так и адреса записи в кэше данных первого уровня (кэш L1) процессора.
  21. ^ Де Гелас, Йохан (20 сентября 2012 г.). "Making Sense of the Intel Haswell Transactional Synchronization eXtensions". AnandTech . Получено 23 декабря 2013 г. Весь "CPU выполняет мелкозернистые блокировки" основан на маркировке строк кэша L1 (64 Б), а их, если быть точным, 512 (64 x 512 = 32 КБ). На каждую строку кэша приходится только один "тег блокировки".
  22. ^ Дэвид Кантер (2012-08-21). "Альтернативы транзакционной памяти Haswell". Real World Technologies . Получено 2013-11-14 .
  23. ^ Ян Катресс (2014-08-12). "Intel отключает инструкции TSX: ошибка обнаружена в Haswell, Haswell-E/EP, Broadwell-Y". AnandTech . Получено 2014-08-30 .
  24. ^ "Семейство процессоров Intel Core M. Обновление спецификаций. Декабрь 2014 г. Версия 003. 330836-003" (PDF) . Intel . Декабрь 2014 г. стр. 10 . Получено 28.12.2014 . BDM53 1 E-0: X, F-0:, Статус: Исправлено ERRATA: Инструкции Intel TSX недоступны. 1. Применимо к процессору Intel Core M-5Y70. Intel TSX поддерживается на процессоре Intel Core M-5Y70 с технологией Intel vPro. Intel TSX не поддерживается на других процессорах SKU.
  25. ^ "HiPEAC info" (PDF) . стр. 12. Архивировано из оригинала (PDF) 2017-03-05.
  26. ^ «Влияние мониторинга производительности Intel® Transactional Synchronization Extension Memory Ordering Issue White Paper, июнь 2021 г., редакция 1.4» (PDF) . Intel. 2021-06-12. стр. 5. Обновление микрокода от октября 2018 г. также отключило префикс инструкций HLE Intel TSX и принудительно отменило все транзакции RTM при работе в режиме Intel SGX или режиме управления системой (SMM).
  27. ^ "Обновление памяти и мониторинга производительности Intel® Transactional Synchronization Extensions (Intel® TSX) для процессоров Intel®". Intel. 2021-06-12.
  28. ^ "Характеристики процессора Intel® Core™ i9-10900K". Intel. 2020 . Получено 2020-10-10 .
  29. ^ "Характеристики процессора Intel® Core™ i9-10980HK". Intel. 2020 . Получено 2020-10-10 .
  30. ^ "Характеристики процессора Intel® Core™ i7-10810U". Intel. 2020 . Получено 2020-10-10 .
  31. ^ "Характеристики процессора Intel® Xeon® W-1290P". Intel. 2020 . Получено 2020-10-10 .
  32. ^ "Характеристики процессора Intel® Core™ i7-1068NG7". Intel. 2020 . Получено 2020-10-10 .
  33. ^ "Справочник по программированию расширений набора инструкций архитектуры Intel®" (PDF) . Intel. 2020 . Получено 21.10.2020 .

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

Внешние ссылки