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에서 전체 범위 로 이동할 수는 없습니다.
답변
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 솔루션은 다음과 같습니다.
- 현재 구성의 메모리 범위를 기록
- 전원을 끄고 문제가있는 DIMM과 그 위에있는 모든 DIMM을 제거하십시오.
- 재부팅하면 새 구성을 검토하십시오.
답변
어떤 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 은 좋은 설명입니다.