Набор инструкций TSX в Intel Haswell повысит эффективность многоядерной работы
Продолжает стекаться информация о будущих процессорах Intel Haswell, чей дебют по последним данным может состояться в марте-июне 2013 года. Судя по сведениям, опубликованным в корпоративном блоге Intel, эти CPU станут обладателями нового набора инструкций Transactional Synchronization Extensions (TSX), что должно повысить эффективность взаимодействия нескольких x86-ядер при работе с различными программными приложениями и, в конечном счете, увеличить производительность чипов.
Если вкратце, набор инструкций TSX позволяет перенести большую часть работы по распределению ресурсов между вычислительными ядрами на аппаратный уровень, тогда как сейчас данная опция реализуется в основном на программном уровне операционной системы и приложений. Таким образом, новая функциональность в чипах Intel Haswell даст возможность снять часть обременительной ноши с плеч программистов, которые смогут перенаправить свои силы на другие аспекты деятельности.
При этом появление поддержки TSX позволит оптимизировать работу процессоров с несколькими вычислительными потоками, что, как уже было указано выше, должно привести к росту быстродействия, а сам данный механизм базируется на принципе, если так можно выразиться, взаимной ответственности каждого из x86-ядер за свой участок деятельности. Напомним, процессоры Intel Haswell будут производиться согласно 22-нм технологическим нормам и должны стать обладателями улучшенной встроенной графики.
Источник
Intel отключает расширения TSX в процессорах «Haswell»
13.08.2014 в 18:13
С первыми процессорами «Haswell» Intel представила расширения Transactional Synchronization Extensions (TSX). Они представляют собой расширения для инструкций x86, включающие поддержку транзакционной памяти (TM). Но Intel после старта процессоров «Haswell» столкнулась с проблемами, которые могли приводить к краху всей системы. Теперь решение проблемы было найдено, оно заключается в полном отключении TSX. Осуществляться отключение может через обновление BIOS, поскольку инструкции TSX могут просто отключаться или включаться через микрокод.
Проблемы наблюдаются у всех процессоров «Haswell», «Haswell EP» и ожидаемых вскоре «Broadwell». Впрочем, для «Broadwell» Intel планирует новый степпинг, у которого данной ошибки нет. Что касается процессоров «Haswell», то вряд ли для них появится обновление. Данное решение больше всего актуально для серверных процессоров «Haswell EP», поскольку в них чаще всего используются расширения TSX. Решение здесь появится через несколько недель. Скорее всего, как и для процессоров «Broadwell», для них будет предложен новый степпинг. Потенциальным покупателям процессоров следует ознакомиться с тем, какой степпинг CPU они приобретают, если расширения TSX нужны.
Описание проблемы Intel с TSX
Судя по имеющейся информации, Intel продолжит поддерживать расширения TSX, поскольку проблема признана несущественной. Отзыва процессоров не предполагается. Разработчики получат обновленное окружение разработки, которое позволит продолжить работу над реализацией TSX.
Intel опубликовала сообщение о проблеме. Однако оно не раскрывает причин появления проблемы. Чтобы система потеряла стабильность, должно произойти несколько событий через определенные промежутки. В реальных условиях повторяемость ошибки очень низка, но если покупатели хотят гарантировать полностью стабильную систему, то поддержку TSX лучше отключить.
Источник
Является ли Intel® Transactional Synchronization Extensions новой инструкцией (TSX-NI) отличной от Intel TSX?
Я нашел на странице Intel
что этот процессор поддерживает технологию TSX-NI, но я не могу найти никакой информации об этом в google. Это то же самое, что и Intel TSX. Если это разница, то как я могу ее использовать.
Извините за мой плохой английский!:)
Это просто маркетинговое украшение.
Я не нашел ссылок на «TSX-NI», ни в Интернете, ни в руководствах Intel, ни в руководстве по расширению ISA для Intel.
Расширения синхронизации транзакций Intel (Intel TSX) поставляются в двух вариантах: HLE и RTM.
Благодаря их реализации эти два аспекта отделены друг от друга (или могут поддерживаться отдельно от другого), и только RTM вводит новые инструкции.
Поэтому они, вероятно, относятся к RTM.
Я считаю, что сначала был представлен HLE, и должны быть процессоры, поддерживающие HLE, но не RTM (обратное, хотя и возможно, кажется неправдоподобным).
Итак, возможно, это правильный маркетинговый способ сказать: «Этот процессор поддерживает наши новейшие функции TSX!».
Для справки я написал краткое введение в две части Intel TSX, исходя из предположения, что «TSX-NI» относится к «TSX RTM».
Полную ссылку можно найти в Руководстве Intel 1 — Глава 15.
Часть HLE (Hardware Lock Elision) обратно совместима.
Мы все еще можем проверить его доступность с CPUID.07H.EBX.HLE [бит 4], но он реализуется путем изменения семантики префиксов repne / repe для инструкций.
Эта функция состоит из двух «новых» префиксов: xacquire и xrelease .
Теперь CPU может войти в транзакционное состояние, когда каждое чтение добавляется в считываемый набор транзакций, и каждая запись добавляется к набору записей транзакции и не выполняется в памяти.
Гранулярность — это размер строки кэша.
Если поток читает из набора read-set или записывает либо в набор для чтения, либо из набора записей другого потока, транзакция прерывается.
CPU восстанавливает архитектурное состояние, как это было в начале транзакции, и повторно выполняет инструкции без транзакций.
Если транзакция завершится успешно, вся записанная память будет совершена атомарно.
Транзакции разделены на xacquire и xrelease .
Они могут входить, но есть ограничение на глубину (выше которой транзакция прерывается) и количество различных блокировок, которые могут быть отменены (превышено, что ЦП не будет преодолевать новые блокировки, но не прекратит транзакцию).
Когда вложенная транзакция прерывается, CPU перезапускает выполнение самой внешней транзакции.
xacquire (код операции F2 , то же, что и repne ) используется перед инструкцией, которая будет получать блокировку (то есть запись в блокировку) и отмечает начало транзакции.
Это чтение не добавляется к набору записей (или не может быть concurrency, поскольку каждый поток записывает блокировку и который немедленно прервет последующую транзакцию).
Вместо этого он добавляется к считываемому набору.
xrelease (opcode F3 ) используется перед инструкцией, которая освободит блокировку и отметит окончание транзакции.
xrelease должен использоваться с одним и тем же замком, используемым с xacquire , для сопряжения с ним и завершения транзакции.
xacquire может использоваться только с версией lock d этих инструкций: 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 (ограниченная транзакционная память) не поддерживает обратную совместимость.
Он может быть протестирован с CPUID.07H.EBX.RTM [бит 11].
В нем представлены три новые инструкции: xbegin , xend и xabort .
Это просто новый интерфейс к уже заданной и общей возможности транзакционного выполнения.
xbegin должен указывать в качестве относительного смещения указатель на резервный код.
Этот код выполняется всякий раз, когда транзакция не выполняется.
В таких случаях eax содержит причину прерывания.
xend завершает транзакцию и инструктирует CPU выполнить ее.
xabort позволяет программисту явно отказаться от транзакции с помощью специального кода ошибки.
Intel не дает никаких гарантий относительно способности процессора успешно совершать транзакцию.
В то время как HLE имеет множество очень специфических условий, RTM — это функция «наилучшего усилия», поэтому требование для резервного кода.
RTM более низкоуровневый, чем HLE, он позволяет программисту использовать транзакционную память с использованием или без использования блокировок.
Смешивание HLE и RTM
Поведение, когда HLE и RTM вложены вместе — HLE внутри RTM или RTM внутри HLE — это конкретная реализация. Однако во всех случаях реализация будет поддерживать семантику HLE и RTM. Реализация может выберите игнорировать подсказки HLE, когда они используются в регионах RTM, и могут привести к прерыванию транзакции, когда инструкции RTM используются внутри областей HLE. В последнем случае, переход от транзакционного к не-транзакционному исполнению происходит плавно так как процессор будет повторно выполнять область HLE, не выполняя фактически эликсирования, и затем выполните инструкции RTM.
Источник
Ошибка в реализации TSX-инструкций затрагивает серверные чипы Intel Xeon E5 v3
В августе появилась информация, что в ряде процессоров Intel допущена ошибка в реализации набора инструкций Transactional Synchronized eXtensions (TSX). Тогда сообщалось, что баг присутствует в ряде процессоров поколения Haswell и в первых чипах Broadwell. Как теперь сообщается, ошибка может затронуть значительно большее количество пользователей, нежели предполагалось ранее.
Напомним суть проблемы. Инструкции TSX нацелены на повышение производительности при выполнении определённых многопоточных приложений. В частности, они позволяют увеличить быстродействие и улучшить масштабируемость для бизнес-анализа и приложений, работающих с большими объёмами данных. Ошибка же в реализации TSX может приводить к непредсказуемому поведению системы, критическим сбоям и повреждению данных в памяти.
Intel предлагает решить проблему путём обновления микрокода, но этот способ попросту отключает TSX, а не устраняет ошибку как таковую. В результате пользователи лишаются части заявленной производителем функциональности. И если рядовым потребителям инструкции TSX в большинстве случаев не требуются, то корпоративным заказчикам они могли бы помочь повысить эффективность работы бизнес-систем.
Как теперь сообщается, ошибка в реализации TSX-инструкций, похоже, затрагивает новые серверные чипы Intel Xeon E5 v3 на архитектуре Haswell-EP, которые были представлены в сентябре. У администраторов систем на основе этих процессоров есть выбор: применить обновление микрокода и отключить TSX или продолжить эксплуатировать чипы в первоначальном состоянии, рискуя столкнуться со сбоями и нестабильностью.
Полностью проблема, вероятно, будет устранена лишь с приходом будущих процессоров поколения Broadwell.
Добавим, что ошибки в аппаратной реализации продуктов Intel обнаруживались и раньше. К примеру, в 2011 году корпорация была вынуждена остановить поставки чипсетов серии 6 (Cougar Point) из-за проблемы, касающейся дизайна контроллера SATA. В результате недоработки порты могли со временем деградировать, провоцируя ухудшение производительности ввода-вывода.
Источник
Расширения транзакционной синхронизации — Transactional Synchronization Extensions
Transactional Synchronization Extensions ( TSX ), также называемые Transactional Synchronization Extensions New Instructions ( TSX-NI ), являются расширением архитектуры набора инструкций x86 (ISA), которое добавляет аппаратную поддержку транзакционной памяти , ускоряя выполнение многопоточного программного обеспечения за счет исключения блокировки. . Согласно различным тестам, TSX / TSX-NI может обеспечить примерно на 40% более быстрое выполнение приложений при определенных рабочих нагрузках и в 4–5 раз больше транзакций базы данных в секунду (TPS).
TSX / TSX-NI был задокументирован Intel в феврале 2012 года и дебютировал в июне 2013 года на некоторых микропроцессорах Intel на основе микроархитектуры Haswell . Процессоры Haswell ниже 45xx, а также R-серия и K-серия (с разблокированным множителем) SKUs не поддерживает TSX / TSX-NI. В августе 2014 года Intel объявила об ошибке в реализации TSX / TSX-NI на текущих степпингах процессоров Haswell, Haswell-E, Haswell-EP и ранних процессоров Broadwell , что привело к отключению функции TSX / TSX-NI на затронутых процессорах через обновление микрокода .
В 2016 году была обнаружена временная атака по побочному каналу путем злоупотребления способом TSX / TSX-NI обрабатывать транзакционные ошибки (то есть ошибки страниц ) для взлома KASLR во всех основных операционных системах.
Поддержка эмуляции TSX / TSX-NI предоставляется как часть эмулятора разработки программного обеспечения Intel. Также имеется экспериментальная поддержка эмуляции TSX / TSX-NI в форке QEMU .
СОДЕРЖАНИЕ
- 1 Особенности
- 1.1 Удаление аппаратной блокировки
- 1.2 Ограниченная транзакционная память
- 1.3 Инструкция XTEST
- 1.4 Отслеживание адреса приостановки нагрузки TSX
- 2 Реализация
- 3 См. Также
- 4 ссылки
- 5 Дальнейшее чтение
- 6 Внешние ссылки
Функции
TSX / TSX-NI предоставляет два программных интерфейса для обозначения областей кода для выполнения транзакций. Hardware Lock Elision (HLE) — это интерфейс на основе префиксов инструкций, предназначенный для обратной совместимости с процессорами без поддержки TSX / TSX-NI. Ограниченная транзакционная память (RTM) — это новый интерфейс набора команд, который обеспечивает большую гибкость для программистов.
TSX / TSX-NI обеспечивает оптимистичное выполнение областей транзакционного кода. Оборудование отслеживает несколько потоков на предмет конфликтующих обращений к памяти, при этом прерывая и откатывая транзакции, которые не могут быть успешно завершены. Для программного обеспечения предусмотрены механизмы обнаружения и обработки неудачных транзакций.
Другими словами, снятие блокировки посредством выполнения транзакции использует транзакции памяти как быстрый путь, где это возможно, в то время как медленный (резервный) путь по-прежнему является нормальной блокировкой.
Аппаратный замок Elision
Hardware Lock Elision (HLE) добавляет два новых префикса инструкций XACQUIRE и XRELEASE . Эти два префиксы повторного использования опкодов существующих REPNE / REPE префиксов ( F2H / F3H ). На процессорах , которые не поддерживают HLE, REPNE / REPE префиксы игнорируются по инструкции , для которых XACQUIRE / XRELEASE справедливы, что позволяет обратную совместимость.
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 регистре.
Положение бита регистра EAX | Смысл |
---|---|
Устанавливается, если прерывание вызвано 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 описывает, как транзакционная память предоставляется программистам, но не содержит подробностей о фактической реализации транзакционной памяти. Intel указывает в своих руководствах для разработчиков и по оптимизации, что Haswell поддерживает наборы для чтения и записи с детализацией строки кэша, отслеживая адреса в кэше данных L1 процессора. Intel также заявляет, что конфликты данных обнаруживаются с помощью протокола согласования кэша .
Кэш данных L1 Haswell имеет ассоциативность восемь. Это означает, что в этой реализации транзакционное выполнение, которое записывает в девять различных местоположений, отображаемых в один и тот же набор кеша, будет прервано. Однако из-за микроархитектурных реализаций это не означает, что меньшее количество обращений к одному и тому же набору гарантированно никогда не прервется. Кроме того, в конфигурациях ЦП с технологией Hyper-Threading кэш L1 совместно используется двумя потоками в одном ядре, поэтому операции в логическом процессоре одного уровня с одним и тем же ядром могут вызывать вытеснение.
Независимые исследования указывают на то, что транзакционная память Haswell, скорее всего, является системой отложенного обновления, использующей кеши для каждого ядра для транзакционных данных и контрольных точек регистрации. Другими словами, Haswell с большей вероятностью будет использовать систему транзакционной памяти на основе кеша, поскольку это гораздо менее рискованный вариант реализации. С другой стороны, Intel Skylake или более поздние версии могут комбинировать этот подход на основе кеширования с буфером упорядочения памяти (MOB) для той же цели, возможно, также обеспечивая многоверсионную транзакционную память, которая более поддается спекулятивной многопоточности .
В августе 2014 года Intel объявила об ошибке в реализации TSX / TSX-NI на процессорах Haswell, Haswell-E, Haswell-EP и ранних процессорах Broadwell, что привело к отключению функции TSX / TSX-NI на затронутых процессорах с помощью микрокода. Обновить. Ошибка была исправлена в степпингах F-0 процессора Core M-5Y70 Broadwell с поддержкой vPro в ноябре 2014 года.
Ошибка была обнаружена, и о ней было сообщено во время дипломной работы в Школе электротехники и вычислительной техники Афинского национального технического университета .
Согласно Справочному руководству по оптимизации архитектур Intel 64 и IA-32 от мая 2020 г., том 1, глава 2.5 Архитектура набора команд Intel и удаленные функции, HLE был удален из продуктов Intel, выпущенных в 2019 г. и позже. RTM не документируется как удаленная. Однако процессоры Intel Comet Lake и Ice Lake 10-го поколения , выпущенные в 2020 году, не поддерживают TSX / TSX-NI, включая HLE и RTM.
В справочнике по программированию расширений набора инструкций архитектуры Intel, редакция 41 от октября 2020 года, новое расширение набора инструкций TSXLDTRK было задокументировано и намечено для включения в грядущие процессоры Sapphire Rapids .
Источник