Отличается ли Intel® Transactional Synchronization Extensions New Instruction (TSX-NI) от Intel TSX?

Я нашел на странице Intel

https://ark.intel.com/products/97123/Intel-Core-i5-7500-Processor-6M-Cache-up-to-3_80-GHz

что этот процессор поддерживает технологию TSX-NI, но я не могу найти информацию об этом в Google. Это так же, как Intel TSX. Если это разница, то как я могу это использовать.

Извините за мой плохой английский! 🙂

6

Решение

Кажется, это просто маркетинговое украшение.

Я не нашел ссылок на «TSX-NI» ни в Интернете, ни в руководствах Intel, ни в руководстве по расширениям Intel ISA.

Цитата Intel [1]

Расширения Intel Transactional Synchronization (Intel TSX) выпускаются в двух вариантах: HLE и RTM.

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

Я считаю, что HLE был представлен первым, и должны быть процессоры, которые поддерживают HLE, но не RTM (обратное, хотя и возможно, кажется неправдоподобным).

Так что, может быть, это просто маркетинговый способ сказать: «Этот процессор поддерживает наши новейшие функции TSX!».


Для справки я написал краткое введение в две части Intel TSX в предположении, что «TSX-NI» относится к «TSX RTM».
Полная ссылка может быть найдена на Руководство Intel 1 — Глава 15.

HLE

Часть HLE (Hardware Lock Elision) обратно совместима.
Мы все еще можем проверить его доступность с CPUID.07H.EBX.HLE [бит 4] но это реализуется путем изменения семантики префиксов repne/repe для инструкций.

Эта функция состоит из двух «новых» префиксов: xacquire а также xrelease,
Процессор теперь способен входить в транзакционное состояние, когда каждое чтение добавляется к чтения набор транзакции и каждая запись добавляется в написать набор транзакции и не осуществляется в память.
Гранулярность — это размер строки кэша.

Если поток выполняет чтение из набора для чтения или пишет либо в набор для чтения, либо в набор для записи другого потока, то транзакция прерывается.
Процессор восстанавливает архитектурное состояние, как оно было в начале транзакции, и повторно выполняет инструкции без транзакций.
Если транзакция завершена успешно, вся записанная память фиксируется атомарно.

Транзакции ограничиваются xacquire а также xrelease,
Они могут быть вложенными, но есть ограничение на глубину (выше которой транзакция отменяется) и на количество различных блокировок, которые могут быть исключены (превышено из-за того, что ЦП не исключит новые блокировки, но не прервет транзакцию).
Когда вложенная транзакция прерывается, ЦП перезапускает выполнение самый дальний сделка.

xacquire (опкод F2, такой же как repne) используется перед инструкцией, которая получит блокировку (т.е. запись в блокировку) и отмечает начало транзакции.
Это чтение не добавлен в набор записи (или не может произойти параллелизма, поскольку каждый поток записывает в блокировку и это немедленно прервет любую последующую транзакцию).
Вместо этого он добавляется в набор для чтения.

xrelease (опкод F3) используется перед инструкцией, которая снимет блокировку и помечает окончание транзакции.
xrelease должен использоваться на том же замке, который используется с xacquire соединиться с ним и завершить транзакцию.

xacquire может использоваться только с lockд версия этих инструкций: ADD, ADC, AND, BTC, BTR, BTS, CMPXCHG, CMPXCHG8B, DEC, INC, NEG, NOT, OR, SBB, SUB, XOR, XADD, XCHG,
xrelease с теми же инструкциями плюс MOV mem, reg а также MOV mem, imm без lock префикс.

Новая инструкция xtest доступно, если присутствует HLE (или RTM), устанавливает ZF это процессор не внутри транзакции.

RTM

RTM (ограниченная транзакционная память) не имеет обратной совместимости.
Это можно проверить с CPUID.07H.EBX.RTM [бит 11].

Он вводит три новые инструкции: xbegin, xend а также xabort,
Они представляют собой просто новый интерфейс к уже указанной и общей возможности выполнения транзакций.

xbegin должен предоставить в качестве относительного смещения указатель на запасной путь кода.
Этот код выполняется всякий раз, когда транзакция не может быть зафиксирована.
В таких случаях eax держит причину прерывания.
xend завершает транзакцию и дает команду процессору зафиксировать ее.
xabort позволяет программисту явно прервать транзакцию с помощью специального кода ошибки.

Intel не дает никаких гарантий относительно способности процессора успешно совершать транзакции.
В то время как HLE имеет ряд очень специфических условий, RTM — это функция «наилучшего усилия» — таким образом, требуется резервный код.

RTM более низкоуровневый, чем HLE, он позволяет программисту использовать транзакционную память с использованием или без использования блокировок.

Смешивание HLE и RTM

Цитируя Intel:

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

5

Другие решения

TSX-NI является расширением (RTM) предыдущего набора команд (HLE).

Со страницы Intel

Аппаратный замок Elision (HLE)

HLE — это устаревшее совместимое расширение набора команд (содержащее
Префиксы XACQUIRE и XRELEASE) для указания транзакционных регионов. HLE
для программистов, которые предпочитают обратную совместимость
традиционная модель программирования взаимного исключения и хотел бы запустить
HLE-совместимое программное обеспечение на устаревшем оборудовании, но хотелось бы взять
Преимущество новых возможностей блокировки доступа на оборудовании с HLE
служба поддержки.

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

RTM — это новый интерфейс набора команд (включающий в себя XBEGIN, XEND,
и инструкции XABORT) для программистов, чтобы определить транзакционный
регионы более гибким способом, чем это возможно с HLE.

RTM для программистов, которые предпочитают гибкий интерфейс
аппаратное обеспечение для транзакционного исполнения.

Итак, новый набор состоит из:

XACQUIRE    Prefix hint to the beginning of an HLE transaction region

XRELEASE    Prefix hint to the end of an HLE transaction region

XBEGIN  Transaction begin of an RTM transaction region

XEND    Transaction end of an RTM transaction region

XABORT  Abort an RTM transaction execution

XTEST   Test if executing in a transactional region
4

По вопросам рекламы [email protected]