Отображение виртуальной памяти в DRAM - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь сопоставить выделенную виртуальную память (shm) U-Space с определенным DIMM.Мне удается получить pfns, используя get_user_pages_remote для начального указателя на vmemory, а затем преобразовать каждую страницу структуру в pfn с page_to_pfn (кстати, эти pfns далее используются длясоздать таблицу рассеяния для проприетарного устройства захвата кадров и отлично справиться с работой).Однако я не могу найти способ узнать, из какого физического DIMM (DRAM) происходит каждый физический адрес (pfn).В результате поиска в Интернете были получены некоторые схемы сопоставления адресов DRAM, но все они сшиты для обработки внутримодульной навигации, то есть: строка, столбец, банк, канал и ранг, и все первые зависят от архитектуры провайдера памяти, например, https://www.betriebssysteme.org/wp-content/uploads/2017/04/Hillenbrand.pdf. Вкл.с другой стороны, копание в спецификации SMBIOS https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_2.7.1.pdf, резидентные свойства модулей DIMM системы могут быть получены из / dev / mem (dmidecode -t memory), однако мне не удается связать эти два информационных источника вместе и, наконец, отобразить страницы.

Любой совет будет оценен.

Спасибо,

Йоэль.

1 Ответ

0 голосов
/ 26 мая 2019

Что вы действительно спрашиваете, так это сопоставление физического адреса с DRAM.Как правило, единого ответа не существует, и в данной системе может не быть определенного бита адреса.Вам нужно будет знать геометрию вашей памяти и то, как сконфигурирован ваш контроллер памяти.В Linux существует decode-dimms , который запрашивает сами микросхемы DRAM по протоколу SPD и может рассказать вам кое-что о геометрии памяти, но не о сопоставлении физического адреса с DRAM или его конфигурации.Ваш контроллер памяти может шифровать биты адреса, чтобы добиться большего параллелизма и избежать перебора банка.Вы должны попасть в сорняки.

Принимая во внимание, что TLB скрывает сложность виртуального сопоставления с физическим, контроллер памяти DRAM скрывает сложность физического сопоставления с DRAM.(И вы, вероятно, подумали, что физический означает физический!) Вам нужно больше узнать о физическом сопоставлении адресов DRAM и вашем контроллере памяти и о том, как BIOS конфигурирует его в частности. Хороший учебник по сопоставлению адресов физических и DRAM . Другой, использующий определенную систему Sandy Bridge. Образец таблицы данных Micron .Вам нужно будет взглянуть на логику загрузки вашей системы, так как она настроит контроллер памяти.Я не знаю, есть ли способ запросить контроллер памяти относительно его конфигурации.ОС, вероятно, не будет касаться этой конфигурации и вместо этого будет полагать, что BIOS сделал все правильно.Может быть возможно определить эти вещи эмпирически.Документы RowHammer были бы хорошим местом для поиска этого.

...