Что означает «операция сериализации» в документации sfence? - PullRequest
0 голосов
/ 23 мая 2018

Документация для sfence гласит:

Выполняет сериализацию для всех инструкций хранения в памяти, которые были выполнены до инструкции SFENCE.

Что означает «операция сериализации»?

Означает ли , что все инструкции по сохранению в памяти, которые были выполнены до инструкции sfence, выполнены, прежде чем продолжить выполнениеинструкции после sfence?

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

Английское слово Серийный - прилагательное :

происходит в серии, а не одновременно

Компьютеры.
a) или относящиеся к кажущемуся или фактическому выполнению операций по обработке данных по одному (отличается от параллельных).

b) или относящиеся к передаче или обработке каждой части целого в последовательности, как каждый бит байта или каждый байт компьютерного слова (отличается от параллельного).

( Сериализация также может означать преобразование представления объекта в поток битов или поток байтов, который можно сохранить на диск или отправить по сети вне программы. Ноэто не значение, которое применяется в контексте sfence).

База данных https://en.wikipedia.org/wiki/Serializability является более тесно связанной концепцией.


SFENCE заказывает глобальную видимость более ранних магазинов относительно самой SFENCE, а затем более поздних магазинов. Сериализация = наложение порядка на вещи, предотвращение их наложения или параллельного выполнения.


Обратите внимание, что в терминологии Intel «инструкция сериализации» имеет особое значение: инструкция, котораяочищает буфер хранилища и конвейер инструкций, вышедших из строя, прежде чем любые последующие инструкции смогут выполнить .(Они могут декодировать и, возможно, даже выдавать ядро ​​из строя, но не выполнять). Сколько инструкций по барьерам памяти имеет процессор x86?

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

"сериализация" в определении Intel sfence - это просто простое английское значение термина, а не специальное значение "инструкция по сериализации" x86.


Текущая формулировка Ручной ввод Intel ISA для sfence:

Intel переписала вступительный абзац, чтобы сказать «заказы» вместо «сериализовать»,кроме краткого описания: Сериализует операции хранилища.

Основное описание:

Заказывает выполнение процессора относительно всех хранилищ памяти перед инструкцией SFENCE.Процессор гарантирует, что каждый магазин до SFENCE будет виден глобально, прежде чем любой магазин после SFENCE станет глобально видимым.Инструкция SFENCE упорядочена относительно хранилищ памяти, других инструкций SFENCE, инструкций MFENCE и любых команд сериализации (таких как инструкция CPUID).Он не упорядочен в отношении загрузок памяти или инструкции LFENCE.

Первое предложение, тем не менее, по-прежнему неестественно. Выполнение не упорядочено, только фиксация в кэш L1d.

0 голосов
/ 24 мая 2018

sfence предотвращает повторный заказ магазинов до забора в отношении магазинов после забора.Вот и все.Не зацикливайтесь на части «сериализации»: Intel удалила текст, который вы цитировали, из текущей версии руководства (вы связали устаревший источник).

В новом тексте написано 1 (выделено мной):

Заказывает выполнение процессора относительно всех хранилищ памяти перед инструкцией SFENCE, Процессор гарантирует, что каждое хранилище до SFENCE является глобально видимым, прежде чем любое хранилище после того, как SFENCE станет глобально видимым. Команда SFENCE упорядочена относительно хранилищ памяти, других инструкций SFENCE, инструкций MFENCE и любых инструкций сериализации (такой как инструкция CPUID).Он не упорядочен в отношении загрузок памяти или инструкции LFENCE.

Слабо упорядоченные типы памяти могут использоваться для достижения более высокой производительности процессора с помощью таких методов, как неупорядоченная проблема, объединение при записи и запись при записи.рушится.Степень, в которой потребитель данных распознает или знает, что данные слабо упорядочены, варьируется в зависимости от приложений и может быть неизвестна производителю этих данных.Инструкция SFENCE обеспечивает эффективный способ обеспечения порядка хранения между подпрограммами, которые производят слабо упорядоченные результаты, и подпрограммами, которые используют эти данные.

Вторая (подчеркнутая) строка - это ключ:там для магазинов заказов.

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

Вот секрет, хотя: эта инструкция в коде x86 в основном бесполезна.Модель памяти x86 уже гарантирует , что обычные хранилища уже точно упорядочены по отношению друг к другу: хранилища с данного ЦП становятся видимыми в программном порядке для всех остальных ЦП, поэтому sfence ничего не добавляет.Единственное исключение, где sfence может быть полезным, это относительно неясные вещи, такие как невременные хранилища или действительно неясные вещи, такие как типы памяти WC.Если вы не используете это, вам не нужна эта инструкция.


1 Я также связал неофициальный источник, так как нет официального источника HTML, который я 'Мне известно - но я проверил, что оно актуально на sfence по состоянию на май 2018 года.

0 голосов
/ 24 мая 2018

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

. Вы цитировали только первое предложение из документации, но каждое предложение имеет значение.

...