DIMM의 물리적 주소 범위를 찾을 수 있습니까?


17

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도 사용하고 있습니다.


Q를 더 설명해 주시겠습니까? 나는 당신이 요구하는 것을 실제로 따르지 않습니다. 자세한 내용이나 예는 큰 장점입니다. 내가 시작하는 2 가지 도구는 dmidecodelshw이지만 도구가 제공하는 것 이상을 찾고 있다고 생각합니까?
slm

@slm : 코드베이스로 lshw사용 dmidecode되며 dmidecode -t 20원하는 정보를 제공합니다. 그러나, SMBIOS 버전 2.5에서는이 유형의 "메모리 장치 매핑 된 주소" 또는 유형 20 또는 뱅크 위치를 보유하는 구조 는 선택 사항이므로 Q는 동일한 정보를 검색하는 다른 방법이있는 경우 Q입니다. – type 17로케이터 값과 물리적 주소 범위 사이 의 링크 (선택적으로 제공 Type 20).
Runium

@Sukminder-감사합니다. 이 정보는 아마도 Q에 포함되어야합니다.
slm

@Sukminder-샘플 dmidecode -t 20출력을 추가 했습니다. 유형 17의 로케이터 값 대 물리적 주소, 유형 20을 설명 할 수 있습니까?
slm

나는 당신이 3 글자 정부 기관에서 일하지 않거나 그들의 자금 수준이 없다고 가정합니다. 그리고 당신이 거기 있다면, 당신은 여기에 묻지 않습니다. 최신 PC / 서버 / MAC의 경우 실제 메모리 범위는 종종 가상 범위에 매핑 된 다음 OS에 의해 다시 매핑 될 수 있으며이를 파악하지 못할 수 있습니다. 그렇더라도 DOS 시절의 640k + 확장 메모리에 매핑 할 수 있습니다. 32 비트 OS를 사용하면 64 비트 OS와 다른 답변을 얻을 수 있습니다. 최종 목표는 무엇입니까?
MikeP

답변:


1

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.


0

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

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

2
도움이 확실하지 않습니다 ... 즉, 6 개의 2GB DIMM이 있고 페어를 제거하면 최고 범위가 4GB로 줄어들지 만 이전 사례의 위치를 ​​알려주지는 않지만 테스트 할 것입니다. 이것과 업데이트.
Alun

".. 및 그 위의 모든 DIMM"(예 : 해당 DIMM이 슬롯 2에있는 경우) 슬롯 3에서도 DIMM을 제거합니다 ... n
K7AAY


-1

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

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

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


1
그는 물리적 주소 범위 를 원한다고 말했다 .
dirkt

1
인텔은 80286에 MMU를 추가했으며 30 년 이상 전에는 i386에서 완벽하게 작동했습니다. "현재 모든 것이 가상입니다":) 메모리는 거의 항상 가상화되었습니다.
에릭
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.