web-dev-qa-db-ja.com

DIMMの物理アドレス範囲を見つけることは可能ですか?

ここではSMBios Type 20が役立ちますが、バージョン 2.5(2006-09-05)ではオプションです) 25ページ、L796ページ、131ページ 、タイプ16、17、19は必須ですが、あまり役に立ちません。

物理メモリアレイ(タイプ16)

システム全体でこれらの構造の1つがあり、このボードで可能なことを説明しています。

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ごとに1つのレコードがあり、ボードにインストールされている物理的な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 GBスティック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 * 2GBおよび2 * 4GB:

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

上記の最初の出力例では、2 GB DIMMが2つありますが、3.3 GBと0.7 GBの2つの範囲があることに注意してください。 4 Dimmの場合、システムはメモリアレイのマップされたアドレス領域を2つのチャンクに合体します。これは、e820マップと同じもの、つまり有効なメモリの物理アドレス範囲を表すためです。

1から多くのタイプ20レコードはタイプ17のメモリデバイスに1つだけ関連付けられます。つまり、物理的な範囲全体を把握できます。

$ 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

EDAC-エラー検出と訂正 の目的でアドレスからDIMMに移動することは可能ですが、DIMMから範囲全体に移動することはできません。

mcelog のソースコードを見ると、タイプ20を使用してデコードしています。

17
Alun

複数のDIMMがある場合、BIOSはそれらをいくつかのインターリーブに構成することがあります。したがって、1つの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の物理的な配置は、PCIデバイス、VGAバッファー、クラシック<1M 8086クラップなどのために下位4Gのいくつかを開いたままにする必要があることに関係しています。これはノースブリッジによって行われます。したがって、0-> 640K、1M-> 3.3G、BIOS用の0.7G、PCIなどの4Gまでのマップがあります。そして、ラムの4G-> 4.7G。

1
mcr

どのOSを実行していますか? Linuxの場合、このコマンドはどの程度発生しますか?

grep -i 'System RAM' /proc/iomem    

最初の列は物理アドレスです。

参照: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Reference_Guide/s2-proc-iomem.htmlhttps:// superuser。 com/questions/480451/what-kind-of-memory-addresses-are-the-ones-shown-by-proc-ioports-and-proc-iomem

0
Lan Lin

ブルートフォースの解決策は

  1. 現在の構成のメモリ範囲を記録する
  2. 電源を切り、問題のDIMMとその上のすべてのDIMMを取り外します。
  3. 再起動して、新しい構成を確認します。
0
K7AAY