Có thể tìm thấy phạm vi địa chỉ vật lý của DIMM không?


17

Tôi lưu ý rằng SMBios Loại 20 sẽ giúp ích ở đây, nhưng nó là tùy chọn như phiên bản 2.5 (2006-09-05) trang 25, L796 và trang 131 , trong khi loại 16, 17 và 19 là bắt buộc, nhưng không hoàn toàn Cứu giúp.

Mảng bộ nhớ vật lý (Loại 16)

Có một trong những cấu trúc này cho toàn bộ hệ thống, giải thích những gì có thể trên bảng này.

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

Thiết bị nhớ (Loại 17)

Có một bản ghi cho mỗi Dimm, cho bạn biết các Dimms vật lý được cài đặt trên bảng.

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

Địa chỉ đã ánh xạ mảng bộ nhớ (Loại 19)

Có thể có nhiều bản ghi này và mỗi bản ghi liệt kê một loạt các địa chỉ vật lý.

Đây là đầu ra với hai thanh 2GB:

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

Và đây là đầu ra với 4 gậy; 2 * 2GB và 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

Lưu ý rằng trong đầu ra mẫu đầu tiên ở trên, có hai DIMM 2 GB, nhưng hai phạm vi 3,3 GB và 0,7 GB. Với 4 Dimms, hệ thống cũng sẽ kết hợp vùng địa chỉ được ánh xạ mảng bộ nhớ thành hai khối, vì nó chỉ đại diện giống như bản đồ e820, tức là phạm vi địa chỉ vật lý của bộ nhớ hợp lệ.

1 đến nhiều bản ghi Loại 20 được gắn với chính xác một thiết bị bộ nhớ loại 17, có nghĩa là có thể biết toàn bộ phạm vi vật lý:

Thí dụ

$ 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

Dường như có thể đi từ địa chỉ đến DIMM cho EDAC - Mục đích phát hiện và sửa lỗi , nhưng không phải từ DIMM đến toàn bộ phạm vi.

Nhìn vào mã nguồn của mcelog , nó cũng đang sử dụng loại 20 để giải mã.


Bạn có thể giải thích Q của bạn hơn nữa? Tôi không thực sự làm theo những gì bạn yêu cầu. Thêm chi tiết hoặc ví dụ sẽ là một điểm cộng rất lớn. 2 công cụ mà tôi sẽ bắt đầu w / đang dmidecodelshw, nhưng tôi nghĩ rằng bạn đang tìm kiếm nhiều hơn những gì những cung cấp?
slm

@slm: lshwsử dụng dmidecodelàm cơ sở mã và dmidecode -t 20cung cấp thông tin mong muốn. Nhưng, như đã lưu ý, bởi phiên bản 2.5 của SMBIOS, cấu trúc lưu giữ thông tin này "Địa chỉ được gắn thiết bị bộ nhớ" hay còn gọi là Loại 20 hoặc vị trí ngân hàng là tùy chọn - do đó, Q là nếu có một cách khác để lấy thông tin tương tự. - Mối liên hệ giữa type 17's Locator giá trị và dải địa chỉ vật lý (như tùy chọn được cung cấp bởi Type 20).
Runium

@Sukminder - cảm ơn. Thông tin này có lẽ chỉ nên được tích hợp vào Q. Vì bạn có nắm được không?
slm

@Sukminder - Tôi đã thêm một số dmidecode -t 20đầu ra mẫu , bạn có thể giải thích giá trị định vị của loại 17 so với bổ sung vật lý, loại 20 không?
slm

Tôi sẽ cho rằng bạn không làm việc cho một cơ quan chính phủ gồm 3 chữ cái hoặc có mức tài trợ của họ. Và, nếu bạn ở đó, thì bạn sẽ không hỏi ở đây. Đối với PC / Server / MAC hiện đại, phạm vi bộ nhớ vật lý thường được ánh xạ tới Phạm vi ảo, sau đó có thể được HĐH ánh xạ lại, bạn có thể không thể tìm ra. Thậm chí sau đó, nó có thể ánh xạ nó vào 640k + Bộ nhớ mở rộng của những ngày DOS. Sử dụng HĐH 32 bit có thể sẽ cho bạn một câu trả lời khác với HĐH 64 bit. Mục tiêu cuối cùng của bạn là gì?
MikeP

Câu trả lời:


1

Khi bạn có nhiều DIMMS, BIOS có thể cấu hình chúng thành một số xen kẽ. Vì vậy, bạn có thể có một DIMM 2G là 0G-> 4G, byte 0-7, bỏ qua 8-15. (tức là 64 bit thấp) DIMM 2G khác là 0G-> 4G vật lý, byte 8-15, bỏ qua 0-7. (cao 64 bit). Lưu ý rằng tôi nghĩ rằng xen kẽ thực sự lớn hơn thế, bởi vì tôi nghĩ rằng nếu bạn có bộ nhớ QĐR, hệ thống có thể thực hiện 1 địa chỉ, chu kỳ dữ liệu 8 bit 64 bit, do đó xen kẽ bởi các đơn vị 64 byte sẽ tốt hơn.

Các sắp xếp vật lý 0,7G và 3,3G mà bạn thấy phải thực hiện khi cần giữ một số 4G thấp hơn cho các thiết bị PCI, bộ đệm VGA, crap cổ điển <1M 8086, v.v. Điều này được thực hiện bởi cầu bắc. Vì vậy, bạn có một bản đồ như: 0-> 640K, 1M-> 3.3G, 0.7G cho BIOS, PCI, v.v ... lên đến 4G. Và sau đó là 4G-> 4.7G cho ram.


0

Giải pháp Brute Force dường như là

  1. ghi lại phạm vi bộ nhớ của cấu hình hiện tại
  2. tắt nguồn, loại bỏ DIMM trong câu hỏi và tất cả các DIMM ở trên nó
  3. khởi động lại, xem lại cấu hình mới.

2
Không chắc chắn điều đó có ích ... tức là nếu bạn có 6 DIMM 2 GB và xóa một cặp, phạm vi hàng đầu của bạn có thể chỉ bị thu hẹp thêm 4GB, nhưng điều đó không cho bạn biết họ đã ở đâu trong trường hợp trước, nhưng tôi sẽ kiểm tra này và cập nhật.
Alun

".. và tất cả các DIMM ở trên nó", ví dụ: nếu DIMM đang được đề cập nằm ở vị trí 2, cũng xóa DIMM trong các vị trí 3 ... n
K7AAY


-1

Mọi thứ ngày nay đều là ảo.

Có một thứ gọi là MMU trong phần cứng đã dịch địa chỉ cho HĐH thành địa chỉ vật lý thực. Nó cũng có thể phân phối tải giữa các DIMM và ánh xạ các phần khác của phần cứng vào không gian địa chỉ. Cái được gọi là không gian địa chỉ vật lý ở cấp hệ điều hành đã là thông qua chế độ xem dịch TLB .

/programming/36639607/how-exactly-do-kernel-virtual-addresses-get-translated-to-physical-ram là một lời giải thích hay.


1
Ông nói rằng ông muốn phạm vi địa chỉ vật lý .
dirkt

1
Intel đã thêm MMU vào 80286 và nó có đầy đủ chức năng trên i386 ... cách đây hơn 30 năm ... rất nhiều cho "ngày nay mọi thứ đều là ảo" :) bộ nhớ gần như luôn được ảo hóa.
Eric
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.