В контексте руководств разработчика программного обеспечения для архитектур Intel® 64 и IA-32 я хотел бы знать, что означает слово «подсказка»?
Я вижу это в нескольких разделах:
В описании
PREFETCHWT1
- Prefetch подсказка T1 с целью записи.Во введении SSE4 говорится: «Эта технология также дает подсказку, которая может улучшить пропускную способность памяти при чтении из некэшируемого типа памяти WC». Это привело меня к этому хорошо написанному ответу относительно памяти WC.
Затем я прочитал, что одна из инструкций SSE4 может выполнять загрузку с «потоковой» подсказкой. Это привело меня к Справочник по программированию SSE4, где я обнаружил, что подсказки могут быть временными или невременными.
Сама инструкция подсказки потоковой загрузки
MOVNTDQA
«предоставляет не временную подсказку»Далее в руководстве я обнаружил, что расширения синхронизации транзакций (TSX) используют «подсказку префикса» в
XACQUIRE
иXRELEASE
.В разделе AVX 512 бит при описании
VGATHERPF0DPD
и компании (есть еще 7 таких типов инструкций, все с опцией /PS). В этих ситуациях у нас есть подсказка T0 или T1 с использованием индексов dword или qword.Самый проницательный момент, когда я видел подсказку, используемую в руководстве (этот список в порядке), пришелся на раздел 10.4.6.1, где он читается
«Невременная подсказка указывает процессору сохранять данные в памяти, не записывая данные в иерархию кэша».
Это находится в разделе «Инструкции по управлению кэшированием», включающем MOVNTQ
, MOVNTPS
, MASKMOVQ
, поэтому будет ли временная подсказка записываться в строку кэша?
Итак, в это время я начал чувствовать, что понимаю намеки, может быть, они были «специальными указателями»? Но тогда они будут просто называться указателями, так что, может быть, они являются частью указателя? Но потом я начал даже сомневаться, что, когда я прочитал этот ответ Stack Overflow на то, что противоположно подсказке есть. Это слово «подсказка», кажется, используется на более высоких уровнях абстракции, как я видел в этот ответ с помощью справочной страницы FreeBSD.
страница Википедии о строках кеша только усилила мои сомнения, потому что там говорится, что подсказки могут готовиться, отбрасываться, или удалить строки кэша (также называемые буферами?). Так являются ли подсказки просто инструкциями, относящимися к строкам кэша?
Как видите, я сбит с толку, потерян и напуган. За бонусные баллы может кто-нибудь объяснить подсказки, используя аналогию?
Спасибо
MOVNTDQA
совпадает сMOVDQA
, за исключением того, что он сообщает процессору, что вы не будете повторно использовать это значение. Это вневременной намек. Затем процессор может избежать загрузки данных в кеш. (Но вы это уже выяснили.) Были также подсказки предсказания ветвления, которые сообщали процессору, ожидается ли прыжок или нет. - person Jester   schedule 30.07.2019MOVNTDQA
сам по себе не намек. У него есть надлежащая функция: он выполняет передачу данных. Подсказка просто предоставляет дополнительную информацию о том, как вы собираетесь использовать данные.XACQUIRE/XRELEASE
— это подсказки, это префиксы, применяемые к какой-то другой инструкции. Также подсказки не должны иметь дело с кешем.XACQUIRE
не работает с кешем. Подсказки ветвей не имеют отношения к кешу. Подсказки — это любая общая информация, которую вы можете передать процессору, чтобы он мог лучше выполнять свою работу. Он по-прежнему должен выполнять ту же работу без подсказок, но, возможно, медленнее. - person Jester   schedule 30.07.2019