Хранит ли буфер хранилища физические или виртуальные адреса на современных x86?

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

Что касается адресной части, содержат ли эти записи буфера виртуальные или физические адреса или оба?


person BeeOnRope    schedule 13.04.2020    source источник
comment
Я думаю, что магазин должен проверять юридический адрес во время оформления; это означает чтение TLB. Кажется безумием отбросить это и заставить буфер хранилища повторять виртуальную физику, когда она фиксируется в кэше L1d. Поэтому я думаю, что мы можем исключить хранение только виртуальных файлов.   -  person Peter Cordes    schedule 13.04.2020
comment
Кроме того, это затрудняет правильную переадресацию магазина в тех случаях, когда доступ к одной и той же физической странице осуществляется через два виртуальных адреса. Я думаю, что x86 гарантирует, что вы увидите, что ваши перезагрузки увидят ваши собственные недавние магазины даже в этом случае. Я не уверен, почему было бы полезно сохранить виртуальное, если у вас есть физическое; Я не думаю, что переадресация хранилища может проверять только виртуальный адрес, хотя проверка сначала на virt, а затем снова на физическом, чтобы сохранить задержку, правдоподобна.   -  person Peter Cordes    schedule 13.04.2020
comment
@PeterCordes Я думаю, вы правы: и PA, и VA хранятся в SB. Это изображение, похоже, подтвердите это. PA заполняется после поиска TLB, который выполняется параллельно, среди прочего, с поиском пересылки в хранилище по младшим 12 битам адреса (проверка свободной сети). Вот почему у нас есть алиасинг 4K. Я только что вспомнил свой вопрос о радиоактивных осадках в этих деталях.   -  person Margaret Bloom    schedule 13.04.2020
comment
@MargaretBloom: обратите внимание, что младшие 12 бит физического адреса также младшие 12 бит виртуального. Вам не нужно отдельно хранить виртуальный младший 12 в SB, просто проверьте младшие биты нагрузки по физическим адресам в SB. Но хороший момент в отношении алиасинга 4k и проверки отсутствия связи, происходящей параллельно с доступом TLB для нагрузок.   -  person Peter Cordes    schedule 13.04.2020
comment
@PeterCordes Я думаю, что VA хранится в полном объеме, а в PA отсутствуют младшие 12 бит (вероятно, TLB никогда не обрабатывает эти биты). Но это то же самое, просто они дважды не хранятся.   -  person Margaret Bloom    schedule 13.04.2020
comment
@MargaretBloom: Есть идеи, почему биты страницы VA вообще будут храниться? Может, я чего-то упускаю, но очевидной пользы от них в СБ не вижу.   -  person Peter Cordes    schedule 13.04.2020
comment
@PeterCordes - патент, на который ссылается Маргарет, довольно ясно показывает, что сохраняется вся виртуальная реальность, но не совсем понятно почему. Одна вещь, которую он упоминает, заключается в том, что VA доступен и хранится на 2 цикла раньше, чем PA, поэтому, возможно, он позволяет включить быструю пересылку хранилища (т. Случаи совмещения имен VA. Есть еще один патент, в котором говорится о мелкой и грубой сетке (а также о бумагах для пересылки в магазины), что, вероятно, проясняет.   -  person BeeOnRope    schedule 14.04.2020
comment
В этом патенте также упоминается один механизм для хранения разделенных строк: Кроме того, если инструкция сохранения включает в себя сохранение данных в ячейках памяти, охватывающих две строки кэша, MEU сигнализирует кэш-памяти данных, и операции STD и STA приводятся к данным. кэш-память дважды, при этом размер данных и физический адрес корректируются соответствующим образом во второй раз. FWIW: этот патент довольно старый (1997 г.) и относится к старому 32-битному uarch с 12 записями буфера хранилища, поэтому все может иметь за это время многое изменилось.   -  person BeeOnRope    schedule 14.04.2020
comment
@PeterCordes Я думаю, что он обеспечивает быструю пересылку хранилища, он используется в алгоритме проверки в моем вопросе о последствиях (где проверка выполняется в три этапа: нижние 12 бит, верхний VA, верхний PA).   -  person Margaret Bloom    schedule 14.04.2020
comment
@Margaret: Хорошо, invlpg сериализуется, так что да, я думаю, VA может быть достаточно для обнаружения переадресации хранилища, если мы потребуем, чтобы операционные системы использовали его осторожно. (Предположительно x86 не гарантирует, что произойдет, если вы измените PTE, не выполняя invlpg. Запись TLB может быть удалена и заменена, пока магазин все еще находится в полете, что приведет к ложной пересылке магазина для загрузки, что позволит эффективно получить доступ к старому физическому страницу, даже если она запускается после загрузок, которые обращаются к непересылаемым данным с новой физической страницы.)   -  person Peter Cordes    schedule 14.04.2020
comment
Я задавался вопросом, не работает ли ошибка в Core 2 TLB с ошибками (realworldtech.com/forum/? threadid = 78469 & curpostid = 78455 / zdnet.com/article/) было связано с этим, возможно, неожиданным эффектом, но узнайте подробности этого.   -  person Peter Cordes    schedule 14.04.2020