Чи можливо знайти діапазон фізичної адреси DIMM?


17

Я зауважу, що SMBios Type 20 допоможе тут, але це необов'язково, як у версії 2.5 (2006-09-05), с. 25, L796 та стор. 131 , тоді як типи 16, 17 і 19 є обов'язковими, але не зовсім допомогу.

Масив фізичної пам'яті (тип 16)

Існує одна з цих структур для всієї системи, що пояснює, що можливо на цій дошці.

Handle 0x1000, DMI type 16, 23 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: Multi-bit ECC
    Maximum Capacity: 768 GB
    Error Information Handle: Not Provided
    Number Of Devices: 24

Пристрій пам'яті (тип 17)

Існує один запис на кожен Dimm, який повідомляє вам про фізичні димми, встановлені на дошці.

Handle 0x1100, DMI type 17, 34 bytes
Memory Device
    Array Handle: 0x1000
    Error Information Handle: Not Provided
    Total Width: 72 bits
    Data Width: 64 bits
    Size: 2048 MB
    Form Factor: DIMM
    Set: 1
    Locator: DIMM_A1 
    Bank Locator: Not Specified
    Type: DDR3
    Type Detail: Synchronous Registered (Buffered)
    Speed: 1600 MHz
    Manufacturer: XXXX
    Serial Number: XXXX
    Asset Tag: XXXX
    Part Number: XXXX 
    Rank: 1
    Configured Clock Speed: 1333 MHz

Картована адреса масиву пам'яті (тип 19)

Таких записів може бути кілька, і кожен запис містить список фізичних адрес.

Ось вихід з двома паличками 2 Гб:

Handle 0x1300, DMI type 19, 31 bytes
Memory Array Mapped Address
    Starting Address: 0x00000000000
    Ending Address: 0x000CFFFFFFF
    Range Size: 3328 MB
    Physical Array Handle: 0x1000
    Partition Width: 2

Handle 0x1301, DMI type 19, 31 bytes
Memory Array Mapped Address
    Starting Address: 0x00100000000
    Ending Address: 0x0012FFFFFFF
    Range Size: 768 MB
    Physical Array Handle: 0x1000
    Partition Width: 2

А ось вихід з 4-ма паличками; 2 * 2 ГБ і 2 * 4 ГБ:

Handle 0x1300, DMI type 19, 31 bytes
Memory Array Mapped Address
    Starting Address: 0x00000000000
    Ending Address: 0x000CFFFFFFF
    Range Size: 3328 MB
    Physical Array Handle: 0x1000
    Partition Width: 2

Handle 0x1301, DMI type 19, 31 bytes
Memory Array Mapped Address
    Starting Address: 0x00100000000
    Ending Address: 0x0032FFFFFFF
    Range Size: 8960 MB
    Physical Array Handle: 0x1000
    Partition Width: 2

Зауважте, що у першому вихідному зразку вище було два DIMM 2 Гб, але два діапазони 3,3 ГБ та 0,7 ГБ. За допомогою 4-х димів система також поєднує область адресного масиву пам'яті, відображену в два фрагменти, оскільки вона просто представляє те саме, що і карта e820, тобто допустимі діапазони фізичної адреси пам'яті.

Від 1 до багатьох записів типу 20 прив’язано саме до одного пристрою пам'яті типу 17, що означає, що може бути відомий весь фізичний діапазон:

Приклад

$ sudo dmidecode -t 20
# dmidecode 2.12
SMBIOS 2.6 present.

Handle 0x002F, DMI type 20, 19 bytes
Memory Device Mapped Address
    Starting Address: 0x00000000000
    Ending Address: 0x000FFFFFFFF
    Range Size: 4 GB
    Physical Device Handle: 0x002B
    Memory Array Mapped Address Handle: 0x002E
    Partition Row Position: 1

Handle 0x0030, DMI type 20, 19 bytes
Memory Device Mapped Address
    Starting Address: 0x00100000000
    Ending Address: 0x001FFFFFFFF
    Range Size: 4 GB
    Physical Device Handle: 0x002C
    Memory Array Mapped Address Handle: 0x002E
    Partition Row Position: 1

Здається, можна перейти від адреси до DIMM для цілей EDAC - виявлення та виправлення помилок , але не від DIMM до всього діапазону.

Дивлячись на вихідний код mcelog , він також використовує тип 20 для його декодування.


Чи можете ви пояснити свій Q далі? Я насправді не стежу за тим, що ви просите. Більше деталей або прикладів буде величезним плюсом. 2 інструментів , які я хотів би почати з / в dmidecodeі lshw, але я думаю , що ви шукаєте більше , ніж вони дають?
slm

@slm: lshwвикористовує dmidecodeяк кодову базу та dmidecode -t 20надає потрібну інформацію. Але, як зазначалося, у версії 2.5 SMBIOS структура, що містить цю інформацію, "Мапірована адреса пристрою пам'яті" aka тип 20 або місцезнаходження банку , необов'язкова - таким чином, Q - якщо є інший спосіб отримати ту саму інформацію. - Посилання між значенням type 17' Locator ' та фізичним діапазоном адреси (як необов'язково передбачено Type 20).
Руніум

@Sukminder - спасибі Ця інформація, ймовірно, повинна бути просто включена до запитання. Оскільки ви маєте це на увазі, чи не заперечуєте?
slm

@Sukminder - я додав деякий зразок dmidecode -t 20виводу, чи можете ви пояснити значення локатора типу 17 порівняно з фізичною добавкою, тип 20?
slm

Я припускаю, що ви не працюєте в урядовому відомстві, яке має три листи, або не маєте рівня фінансування. І якщо ви там, то вас тут не просять. Для сучасних ПК / сервера / MAC діапазони фізичної пам’яті часто відображаються у віртуальних діапазонах, а потім може переглядатись ОС за допомогою операційної системи, можливо, ви не зможете це зрозуміти. Вже тоді це може відобразити його на 640k + розширену пам'ять днів DOS. Використання 32-бітної ОС, швидше за все, дасть відповідь, ніж 64-бітна ОС. Яка ваша кінцева мета?
MikeP

Відповіді:


1

Якщо у вас кілька DIMMS, BIOS може налаштувати їх на деяке переплетення. Тож у вас може бути один 2G DIMM фізичний 0G-> 4G, байти 0-7, пропускаючи 8-15. (тобто з низьким рівнем 64 біта) Інший 2G DIMM має фізичну величину 0G-> 4G, байти 8-15, пропускаючи 0-7. (високий 64 біт). Зауважте, що я думаю, що перемежування насправді більше, ніж це, тому що я думаю, що якщо у вас є пам'ять QDR, система може робити 1 адресу, 8x 64-бітні цикли даних, тож переплетення по одиницях 64-байт було б краще.

Фізичні умови 0.7G та 3.3G, які ви бачите, пов'язані з необхідністю тримати деякі нижчі 4G відкритими для пристроїв PCI, VGA буфери, класичні <1M 8086 лайно тощо. Це робиться на північному мосту. Отже, у вас є карта на зразок: 0-> 640K, 1M-> 3.3G, 0.7G для BIOS, PCI тощо до 4G. А потім 4G-> 4.7G для барана.


0

Здається, рішення Brute Force є

  1. журнал діапазону пам'яті поточної конфігурації
  2. вимкніть живлення, видаліть відповідний DIMM і всі DIMM над ним
  3. перезавантажте систему, перегляньте нову конфігурацію.

2
Не впевнений, що це допомагає ... тобто, якщо у вас було 6 DGB-дисків 2 Гб і видалити пару, то ваш верхній діапазон, швидше за все, скоротиться на 4 Гб, але це не говорить вам, де вони були в попередньому випадку, але я перевірю це і оновлення.
Алун

".. і всі DIMM над ним", наприклад, якщо DIMM, про який йде мова, знаходиться в слоті 2, також видаліть DIMM в слотах 3 ... n
K7AAY


-1

Все сьогодні віртуальне.

У апаратному забезпеченні є щось, що називається MMU, яке вже переводить адреси для ОС в реальні фізичні адреси. Він також може розподіляти навантаження між DIMM і відображати інші частини обладнання в адресний простір. Те, що називається фізичним адресним простором на рівні ОС - це вже через переклад TLB .

/programming/36639607/how-exact-do-kernel-virtual-addresses-get-translated-to-physical-ram - приємне пояснення.


1
Він сказав, що хоче діапазон фізичної адреси.
dirkt

1
Intel додала MMU до 80286, і він повністю функціонував на i386 ... це було 30+ років тому ... настільки багато для "в наш час все віртуально" :) пам'ять майже завжди була віртуалізована.
Ерік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.