2008-09-17 1 views
6

Я проверил сайт «whatif» Intel и их компилятор Transactional Memory (каждый поток должен совершать атомные коммиты или откатывать память системы, например, базу данных).Кто-нибудь пробовал транзакционную память для C++?

Это похоже на перспективный способ замены замков и мьютексов, но я не могу найти много отзывов. Кто-нибудь здесь имеет какой-либо вклад?

+0

Этот вопрос и его ответы по-прежнему актуальны? – 2017-06-13 11:46:13

+0

@JanusTroelsen проверяет доступные реализации в https://en.m.wikipedia.org/wiki/Transactional_memory – 2017-06-13 11:53:05

+0

Связанный: https://www.realworldtech.com/haswell-tm/ для записи Дэвидом Кантером некоторых из них -добавить информацию о том, как это реализовано на процессорах Intel. А также некоторые аккуратные вещи о транзакционной памяти в целом. – 2017-11-22 11:03:51

ответ

7

Я не использовал компилятор Intel, однако, Herb Sutter были некоторые интересные замечания по нему ...

От Sutter Speaks: The Future of Concurrency

Вы видите много интереса и использование транзакционной памяти, или это слишком сложная для большинства разработчиков концепция?

Невозможно ответить, кто его использует, потому что он еще не выведен на рынок. У Intel есть прототип компилятора программной транзакционной памяти. Но если вопрос: «Слишком сложно для разработчиков использовать?» ответ в том, что я, конечно, надеюсь, что нет. Все дело в том, что это проще, чем блокировки. Это единственное важное событие на горизонте исследований, которое дает надежду на значительное сокращение использования замков. Он никогда не заменит замки полностью, но наша единственная большая надежда на их замену частично.

Есть некоторые ограничения. В частности, некоторые операции ввода-вывода по сути не транзакционны - вы не можете взять атомный блок, который запрашивает у пользователя его имя и читает имя с консоли, и просто автоматически прерывает и повторяет блок, если он конфликтует с другой транзакцией; пользователь может сказать разницу, если вы попросите его дважды. Транзакционная память отлично подходит для вещей, которые только касаются памяти.

Каждый крупный поставщик аппаратного и программного обеспечения, о котором я знаю, имеет несколько инструментов транзакционной памяти в R & D. Существуют конференции и научные статьи по теоретическим ответам на основные вопросы. Мы еще не на этапе Model T, где мы можем отправить его. Вероятно, вы увидите ранние, ограниченные прототипы, где вы не можете делать неограниченную транзакционную память, где вы можете читать и писать, скажем, 100 мест памяти. Тем не менее, это все еще очень полезно для создания дополнительных алгоритмов блокировки.

-1

В некоторых случаях я вижу это полезным и даже необходимым.

Однако, даже если процессор имеет специальные инструкции, облегчающие этот процесс, все еще существуют большие накладные расходы по сравнению с мьютексом или семафором. В зависимости от того, как это реализовано, это может также повлиять на производительность в реальном времени (нужно либо остановить прерывания, либо не допустить их записи в ваши общие области).

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

-Adam

4

Доктор Добба была статья о концепции в прошлом году: транзакционный Программирование на Calum Грант - http://www.ddj.com/cpp/202802978

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

1

Sun Microsystems объявили о выпуске нового процессора в следующем году под кодовым названием Rock, который имеет аппаратную поддержку транзакционной памяти.У него будут некоторые ограничения, но это хороший первый шаг, который должен облегчить для программистов замену блокировок/мьютексов транзакциями и ожидать хорошей производительности.

Для интересной беседы на эту тему, предоставленной Марк Моиром, одним из исследователей из Sun, работающих над Transactional Memory and Rock, проверьте это link.

Для получения дополнительной информации и объявлений от Sun о Rock and Transactional Memory в целом, это link.

Обязательным wikipedia entry :)

Наконец, this link, в университете Висконсин-Мэдисон, содержит библиографию большинства исследований, который был и делается о транзакционной памяти, будь то аппаратные средства, связанные или программное обеспечение Связанный.

Смежные вопросы