DIMM의 물리적 주소 범위를 찾을 수 있습니까? Ending Address: 0x0012FFFFFFF

SMBios Type 20이 여기에 도움이되지만 버전 2.5 (2006-09-05) pp. 25, L796 및 pp. 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 당 하나의 레코드가 있으며, 보드에 설치된 실제 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)

이러한 레코드는 여러 개가있을 수 있으며 각 레코드에는 실제 주소 범위가 나열됩니다.

다음은 2GB 스틱 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

위의 첫 번째 샘플 출력에는 2GB DIMM이 두 개 있지만 3.3GB와 0.7GB의 두 가지 범위가 있습니다. 4 Dimm을 사용하면 시스템은 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

EDAC-오류 감지 및 수정 목적으로 주소에서 DIMM으로 이동할 수 있지만 DIMM에서 전체 범위 로 이동할 수는 없습니다.

mcelog 의 소스 코드를 살펴보면 디코딩에 유형 20도 사용하고 있습니다.



답변

DIMM이 여러 개인 경우 BIOS가 일부 인터리브로 구성 할 수 있습니다. 따라서 물리적 0G-> 4G, 바이트 0-7 인 2G DIMM 하나가 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, PCI의 경우 0.7G, 최대 4G와 같은 맵이 있습니다. 그리고 램을 위해 4G-> 4.7G.


답변

Brute Force 솔루션은 다음과 같습니다.

  1. 현재 구성의 메모리 범위를 기록
  2. 전원을 끄고 문제가있는 DIMM과 그 위에있는 모든 DIMM을 제거하십시오.
  3. 재부팅하면 새 구성을 검토하십시오.

답변

어떤 OS를 실행하고 있습니까? 리눅스라면 어떻게이 명령을 폐지합니까?

grep -i 'System RAM' /proc/iomem

첫 번째 열은 물리적 주소입니다.

참조 :
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Reference_Guide/s2-proc-iomem.html
/superuser/480451/what-kind-of -메모리-주소-는-하나-프로 시저 -ioports-와-프로시오 -iomem


답변

오늘날 모든 것이 가상입니다.

하드웨어 에는 MMU 라는 것이 있는데, 이미 OS의 주소를 실제 물리적 주소로 변환합니다. 또한 DIMM 사이의로드를 분산시키고 하드웨어의 다른 부분을 주소 공간에 맵핑 할 수 있습니다. OS 수준에서 물리적 주소 공간이라고하는 것은 이미 TLB 변환보기 를 통한 것 입니다.

https : //.com/questions/36639607/how-exactly-do-kernel-virtual-addresses-get-translated-to-physical-ram 은 좋은 설명입니다.


답변