Trên kiến ​​trúc x86, tại sao có ít bit cho không gian địa chỉ ảo hơn vật lý?


11

Tôi đang đọc này bài viết về máy tính 64 bit, và nó đề cập đến:

Ví dụ, kiến ​​trúc AMD64 tính đến năm 2011 cho phép 52 bit cho bộ nhớ vật lý và 48 bit cho bộ nhớ ảo

Tôi nghĩ rằng sẽ có ý nghĩa hơn khi cho phép nhiều bộ nhớ ảo hơn bộ nhớ vật lý, vậy tại sao nó thực sự lại khác?

Câu hỏi phần thưởng: "Cho phép" đối với 52 hoặc 48 bit trên kiến ​​trúc 64 bit có nghĩa là gì? Các bit khác được sử dụng để làm gì?


Đối với x86, các bit VA không được sử dụng phải là phần mở rộng dấu của MSbit của VA. . Trong bảng trang, các bit PA dành riêng phải bằng 0 (chủ yếu để đảm bảo phần mềm không cố sử dụng chúng và phá vỡ tính tương thích với phần cứng sau này).
Paul A. Clayton

Câu trả lời:


11

Dưới đây là hình ảnh của bảng trang AMD64 (từ Hướng dẫn của Lập trình viên Kiến trúc AMD, Tập 2, Rev 3.23, 2013, trang 132).

Bảng trang AMD64 Longmode

Kích thước "tự nhiên" của một trang trong kiến ​​trúc AMD64 là 2 12 = 4096 byte. (Có các chế độ mà bạn có thể có 2 trang 21 = 2Mbyte, nhưng hiện tại chúng tôi sẽ bỏ qua chúng.)

Mỗi mục nhập bảng trang (PTE) (hoặc, tùy thuộc vào mức được gọi là PDE, PDPE hoặc PML4E) là 64 bit = 2 3 byte. Vì vậy, có 2 9 mục trên mỗi trang. Vì vậy, 4 cấp độ của bảng trang giúp bạn có được 4x9 + 12 = 48 bit địa chỉ ảo trên mỗi quy trình. Đi bộ bảng trang rất tốn kém, vì vậy họ sẽ không mở rộng lên 5 hoặc 6 cấp trừ khi / cho đến khi có nhu cầu của người tiêu dùng.

Tôi không chắc tại sao họ quyết định giới hạn địa chỉ vật lý 52 bit. Điều này có thể được mở rộng lên tới 63 bit trong tương lai. Ở mức giá tháng 10 năm 2013 (khoảng 1US $ / Gigabit cho chip 4Gbit), sẽ tốn hơn 32.000.000,00 đô la Mỹ để xây dựng bộ nhớ 2 52 byte, do đó sẽ mất một thời gian trước khi có bất kỳ nhu cầu đáng kể nào để tăng giới hạn địa chỉ vật lý. Có tất cả các loại lý do tại sao bạn muốn giữ địa chỉ vật lý càng nhỏ càng tốt: ví dụ: thẻ TLB và bộ đệm phải giữ địa chỉ vật lý.

Không nhất thiết phải ngược lại rằng có nhiều bộ nhớ vật lý hơn ảo. Bộ nhớ ảo là trên mỗi tiến trình trong khi bộ nhớ vật lý được chia sẻ bởi tất cả các quy trình. Vì vậy, một máy chủ có địa chỉ ảo 48 bit và 2 52 byte bộ nhớ có thể hỗ trợ 16 quy trình đồng thời và vẫn đảm bảo không cần phải trao đổi.


Có thể đáng chú ý rằng các kiến ​​trúc sư máy tính đã học cách yêu cầu các bit trên được sử dụng bởi phần cứng, thường là bằng cách mở rộng ký hiệu để phù hợp với việc sử dụng phổ biến các địa chỉ âm cho HĐH ("Các bit khác được sử dụng để làm gì?"). Ngoài ra, với bộ nhớ đệm mục nhập thư mục Ln, bảng 5 cấp không cần phải được di chuyển hoàn toàn trong hầu hết thời gian. Các bit PTE 52:62 được dành riêng cho phần mềm, do đó không thể được sử dụng cho các địa chỉ vật lý mà không phá vỡ tính tương thích, giới hạn các trang 4KiB ở mức 52 bit PA. Ngoài ra, Linus Torvalds nổi tiếng chống lại PAE (VA> PA dường như đơn giản hóa thiết kế hệ điều hành "truyền thống").
Paul A. Clayton

"Điều này có thể được mở rộng lên tới 63 bit trong tương lai." Vâng, không, không phải không thay đổi cấu trúc bảng trang. Như vậy, các bit 52 đến 62 của PxE được dành riêng cho sử dụng hệ điều hành. Và các HĐH đang sử dụng chúng (Windows sử dụng trường đó cho "chỉ mục danh sách nhóm làm việc"), vì vậy các kiến ​​trúc sư bộ xử lý không được tự do mở rộng trường PFN vào chúng. Tất nhiên có thể có một tùy chọn giống PAE trong tương lai sẽ thay đổi cấu trúc PT để cho phép nhiều bit PFN hơn, nhưng đó sẽ là một thay đổi kiến ​​trúc quan trọng.
Jamie Hanrahan

3

Một vài điểm để xem xét, RAM vật lý là đắt tiền. Chắc chắn 16 GB bây giờ rẻ hơn khi 4GB chỉ cách đây vài năm, nhưng 2 ^ 64 (16 exabyte) lớn một cách lố bịch.

Vì vậy, các phần mở rộng của AMD cho x86 cho x64 "được phép" lên tới 2 ^ 52 bằng cách giới hạn các thanh ghi . Điều này thực hiện hai điều, giảm chi phí cho bộ xử lý và cải thiện hiệu suất. Nhiều thanh ghi không được sử dụng có nghĩa là có rất nhiều không gian trống vẫn phải được tính đến trong quá trình hoạt động.

Và, trong trường hợp bạn không phải là một người toán học ... Sự khác biệt giữa ba kích cỡ là rất lớn! Tôi không phải là chuyên gia toán học, nhưng với số thập phân 52 bit là khoảng 0,02% của 64 bit. 48 bit là 6% của 52. (ai đó kiểm tra toán của tôi?)

Về lý do AMD cho phép nhiều RAM vật lý hơn là ảo, bài báo nói rằng đó là do AMD đã nghĩ đến các máy chủ. Máy chủ cần một lượng lớn RAM vật lý. RAM ảo quá chậm để hỗ trợ các ứng dụng máy chủ trung bình cho hàng trăm hoặc hàng nghìn nhân viên.

Suy nghĩ của riêng tôi: Chúng tôi đã để lại thời gian khi RAM còn nhỏ và ổ cứng phải hỗ trợ RAM. Giá trong RAM đã giảm xuống mức mà một người bình thường có thể đặt vào quá nhiều RAM. Sử dụng các ứng dụng thông thường, như Office cần 1-2 GB RAM. Máy tính của tôi 7 năm trước có thể xử lý điều đó. Mặc dù với tốc độ đọc và ghi vào đĩa, tôi hy vọng tôi sẽ không bao giờ phải truy xuất tệp 7GB từ bộ nhớ ảo (sử dụng triết lý PM * 2.5 cũ).

Tôi cũng chỉ có thể giả sử AMD muốn chừa chỗ cho các thanh ghi sử dụng các thanh ghi RAM vật lý, như RAM trên các GPU tích hợp.

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.