Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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, а также R-серия и К-серия (с разблокированным множителем) SKUs не поддерживают 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 предоставляет два программных интерфейса для обозначения областей кода для выполнения транзакций. Hardware Lock 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Приставка подсказку можно использовать только со следующими инструкциями с явным LOCKпрефиксом: ADD, ADC, AND, BTC, BTR, BTS, CMPXCHG, CMPXCHG8B, DEC, INC, NEG, NOT, OR, SBB, SUB, XOR, XADD, и XCHG. XCHGИнструкция может быть использована без LOCKпрефикса , а также.

XRELEASEПрефикс намек может быть использован как с инструкциями , перечисленных выше, и с 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 Suspend Load Address Tracking [ править ]

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 Comet Lake и Ice Lake 10-го поколения , выпущенные в 2020 году, не поддерживают TSX / TSX-NI, [25] [26] [27] [28] [29], включая HLE и RTM.

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

См. Также [ править ]

  • Advanced Synchronization Facility ( конкурирующая технология AMD )
  • Транзакционная память

Ссылки [ править ]

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

Дальнейшее чтение [ править ]

  • Afek, Y .; Леви, А .; Моррисон, А. (2014). Материалы симпозиума ACM 2014 г. по принципам распределенных вычислений - PODC '14 . Программно-улучшенная аппаратная блокировка, стр. 212. DOI : 10,1145 / 2611462,2611482 . ISBN 9781450329446. S2CID  16645370 .. Программные улучшения аппаратной блокировки в Intel TSX.

Внешние ссылки [ править ]

  • Презентация IDF 2012 (PDF)
  • Добавление блокировки в Linux , Linux Plumbers Conference 2012 (PDF)
  • Lock 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 г.