Bao nhiêu bộ nhớ một địa chỉ máy 64 bit mỗi lần?


32

Nếu bộ nhớ là địa chỉ byte, không nên

2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB ?

Một tìm kiếm chung của Google cho biết tối đa 8GB hoặc 16GB.

Điều đó đúng như thế nào? Ngoài ra, nó phụ thuộc vào Hệ điều hành như thế nào?


8 GB rõ ràng là không phù hợp vì máy công việc của tôi có 12 GB và có thể giải quyết tất cả, cộng với một GB RAM video, cộng với tất cả phần cứng của tôi cộng với tất cả bộ nhớ ảo của tôi đều ổn.

Newegg bán gói ram 32 GB, dành cho một máy tính. 32-bit được hỗ trợ 3,2 GB và 128-bit sẽ hỗ trợ hàng triệu terabyte, vì vậy tôi nghĩ rằng 64-bit nhiều hơn gấp đôi so với 32-bit.
tkbx

Câu trả lời:


53

Có nhiều yếu tố đan xen.

Trước hết, bạn sẽ không bao giờ có thể lắp ráp một hệ thống có 2 64 byte (16 exibytes) RAM vật lý.

Thứ hai, chỉ vì một kiến ​​trúc sử dụng các con trỏ 64 bit, không có nghĩa là tất cả các bit của các con trỏ đó thực sự được sử dụng. Đáng chú ý, các CPU x86-64 hiện tại (còn gọi là chip 64 bit hiện tại của AMD64 và Intel) thực sự sử dụng các dòng địa chỉ 48 bit (AMD64) và các dòng địa chỉ 42 bit (Intel) (xem http://en.wikipedia.org/wiki / X86_64 # Virtual_address_space_details ), về mặt lý thuyết cho phép 256 terabyte RAM vật lý.

Thứ hai, bo mạch chủ có giới hạn riêng về dung lượng RAM chúng có thể hỗ trợ, cả về mặt vật lý và logic. Về mặt vật lý, sẽ chỉ có rất nhiều khe cắm có sẵn cho RAM. Đối với các giới hạn "logic", tôi không hiểu đầy đủ lý do tại sao đây vẫn là trường hợp của x86-64 (bộ điều khiển bộ nhớ từ lâu đã được di chuyển vào CPU), nhưng vẫn có. Có lẽ các góc đang được cắt trên các dòng địa chỉ để tiết kiệm một vài đô la trong thiết kế và sản xuất.

Thứ ba, một hệ điều hành có thể có những hạn chế bên trong về việc nó có thể hỗ trợ hiệu quả bao nhiêu RAM. Một phần, điều này thực sự là để ngăn chặn việc cần các cấu trúc dữ liệu quá lớn để theo dõi việc sử dụng cho bộ nhớ không thực sự ở đó. Tôi đã kiểm tra lần cuối, Linux cho phép 128TB không gian địa chỉ ảo trên mỗi tiến trình trên x86-64 và về mặt lý thuyết có thể hỗ trợ 64TB RAM vật lý.

Thứ tư, một số hệ điều hành (ví dụ Windows) sẽ giới hạn một cách giả tạo số lượng RAM có thể được sử dụng như một chiến thuật để khiến người dùng nâng cấp lên các phiên bản đắt hơn nếu muốn có thêm RAM (Windows 7 Starter bị giới hạn ở mức 2GB, Home Basic thành 8, Home Premium đến 16 và Chuyên nghiệp trở lên là 192GB và các bản phát hành Windows Server có giới hạn cao hơn nhiều).


1
+1 để đề cập đến các dòng địa chỉ vật lý thường là << số bit trong thanh ghi địa chỉ trên các kiến ​​trúc 64 bit
Paul R

3
Một nguồn cho các dòng địa chỉ 42 bit (được thêm vào bởi chỉnh sửa ẩn danh) sẽ được đánh giá cao. Cho đến lúc đó, cá nhân tôi không coi thông tin đó là đáng tin cậy.
Bob

21
Không bao giờ nói không bao giờ. Định luật Moore vẫn còn hiệu lực, lần cuối tôi nghe thấy, vì vậy các hệ thống có 16 exabyte RAM có thể sẽ xuất hiện trong vòng đời của chúng ta. Sau đó, tất cả chúng ta sẽ phải chuyển sang hệ điều hành 128 bit ...
Michael Hampton

Địa chỉ vật lý cũng bị giới hạn bởi số lượng bit được cung cấp cho địa chỉ vật lý trong TLB (và theo kích thước của thẻ bộ đệm được gắn thẻ địa chỉ vật lý) và bởi các bit có sẵn cho địa chỉ vật lý trong các mục trong bảng trang (nếu được xác định bởi kiến trúc như trong x86-64 hỗ trợ không gian địa chỉ vật lý 52 bit với các trang 4KiB). Cái sau là một giới hạn vững chắc hơn (kiến trúc không dựa trên triển khai), mặc dù các kiến ​​trúc thậm chí có thể được thay đổi.
Paul A. Clayton

2
@MichaelHampton - NecroReply, nhưng không thể cưỡng lại :) Nhân đôi sau mỗi 2 năm (nhanh hơn các xu hướng gần đây) vẫn sẽ mất 60 năm để có được từ 16GB đến 16EB. Đến lúc đó tôi nghi ngờ "luật" về bóng bán dẫn silicon sẽ có bất kỳ sự liên quan nào;)
MatBailie

9

Nếu bạn sử dụng MS Windows, bộ nhớ tối đa bị hạn chế bởi hệ điều hành.

Đối với Windows 7, mức tối đa là:

  • Người khởi xướng: 2GB
  • Trang chủ cơ bản: 8GB
  • Phí bảo hiểm tại nhà: 16 GB
  • Chuyên nghiệp: 192GB
  • Doanh nghiệp: 192GB
  • Tối đa: 192GB

Windows Server 2008 dao động từ 8GB cho cấp nhập cảnh đến 2TB cho đầu dòng.

Xem http://msdn.microsoft.com/en-us/l Library / aa366778% 28VS85% 29.aspx để biết danh sách đầy đủ.

Những giới hạn này chủ yếu là vì lý do tiếp thị. Bằng cách hạn chế các phiên bản rẻ hơn, họ làm cho các phiên bản cao cấp (tương đối) hấp dẫn hơn.

Tôi nghĩ rằng các bản dựng Linux gần đây hoạt động với khoảng 32TB RAM, mặc dù không phải tất cả phần cứng đều có thể hỗ trợ điều đó.


4
Đó không phải là giới hạn kỹ thuật thực sự. Đó là những giới hạn nhân tạo được giới thiệu vì lý do kinh doanh.
kasperd

8

Một máy 64 bit có thể xử lý tối đa 2 64 đơn vị địa chỉ (trong các kiến ​​trúc được thiết kế trong vài thập kỷ qua, các đơn vị có thể định địa chỉ là các byte, hay còn gọi là octet). Nếu bạn xác định "gigabyte" là 2 30 đơn vị địa chỉ, thì có, 2 34 gigabyte sẽ là một cách khác để thể hiện cùng một số lượng.

Những gì Google tìm kiếm tạo ra những kết quả nhỏ bé vô lý? Có thể trang bạn tìm thấy đang nói về số lượng RAM bạn có thể mua trong các hộp giá rẻ hợp lý của một kiểu máy nào đó - chắc chắn bạn có thể có nhiều RAM hơn (tất nhiên là có thể đánh địa chỉ) ngay cả trong các hộp cách xa rất tốn kém .

Các hệ điều hành chắc chắn có thể và hạn chế số lượng bộ nhớ có thể đánh địa chỉ (ví dụ: chúng có thể làm như vậy bằng cách giới hạn kích thước của các bảng trang, có thể ở mức tối đa có thể định cấu hình có thể được đặt bằng cách biên dịch lại hoặc cấu hình lại hệ điều hành - thật khó để cụ thể hơn mà không tập trung vào một số nhóm HĐH cụ thể ).


Tại sao 2 ^ 30 đơn vị địa chỉ 1 GB? Mỗi đơn vị địa chỉ lưu trữ 1 bit, vì vậy, 2 ^ 30 đơn vị địa chỉ lưu trữ nhiều bit đó lên tới 0,134217728 gigabyte. Tôi đang thiếu gì?
Darshan Chaudhary

1
@DarshanChaudhary 2 ^ 30 là số lượng địa chỉ riêng biệt. Mỗi địa chỉ xác định một byte bộ nhớ, không phải một bit.
David Moles

3

Bạn có thể có nhiều RAM như bạn muốn nhưng tất cả phụ thuộc vào hệ điều hành và ứng dụng bạn đang chạy - như một người khác đã nêu.

Nếu bạn đang chạy một ứng dụng chuyên sâu về CPU mà cũng chuyên sâu về phần cứng khác như đĩa cứng thì tốt nhất bạn nên xem xét nghiêm túc một CPU thứ hai, trong một máy hoàn toàn riêng biệt. Ví dụ: chạy một ứng dụng cơ sở dữ liệu và máy chủ email cả trên các máy riêng biệt.

Không quan trọng bạn có bao nhiêu bộ nhớ - trong thị trường ngày nay, toàn bộ hệ thống sẽ ngừng hoạt động. Các CPU đơn giản không thể xử lý đa nhiệm theo cách bạn mong đợi.

Đối với một máy có nhiều bộ nhớ, sẽ tốt hơn nhưng không xuất sắc nếu bạn có nhiều ứng dụng chạy trên cùng một hệ thống - bất kể dung lượng bộ nhớ được cài đặt. Đây là lý do tại sao các công ty lớn không chỉ sử dụng kiến ​​trúc 64 bit để giải quyết nhiều bộ nhớ hơn mà họ còn tải cân bằng toàn bộ lô với hai hoặc nhiều máy chủ.

Nếu bạn thực sự nghiêm túc về hiệu suất thì chắc chắn sẽ đi 64 bit, nhưng cũng nên xem xét cân bằng tải với máy chủ thứ hai.

Tôi đã đi trên con đường đó - cấu hình một máy duy nhất có RAM tối đa. Tuy nhiên, khi chạy nhiều ứng dụng, nó vẫn chạy như một con chó. Đó là vì CPU không thể xử lý được.

Lời khuyên của tôi là hãy tiết kiệm tiền của bạn vào bộ nhớ và mua một máy chủ thứ hai và sau đó tải số dư của hai. Điều đó đơn giản hơn rất nhiều - một khi bạn đã hiểu rõ về nó - thật dễ dàng để mở rộng khi bạn cần nhiều sức mạnh xử lý và tốc độ.

Ngoài ra, máy kiến ​​trúc 64 bit có thể đối phó với phần mềm 32 bit nhưng với máy 32 bit, bạn bị giới hạn chỉ với các ứng dụng 32 bit trở xuống - bao gồm cả hệ điều hành.

Vì toàn bộ thị trường sẽ tăng 64 bit về cả phần cứng và phần mềm, tôi sẽ khuyên bạn nên sử dụng 64bit trong thời gian dài, nhưng hãy quên ý tưởng đè bẹp tất cả lên một máy với vô số bộ nhớ vì bạn sẽ thất vọng.

Nếu bạn không chắc chắn "cân bằng tải" là gì thì hãy google nó.


2

Tôi nghĩ rằng nó có thể mất nhiều hơn một "EB" exabyte.

Nhìn vào bộ xử lý 32 bit này có thể mất 2 32 B = 4 GB, nhưng nhiều nhất phải mất 3 GB "vì chúng là 1 GB cho các địa chỉ đảo ngược"

Điều đó có nghĩa là bộ xử lý 64 bit có thể mất 2 64 B = 16 EB, nhưng tôi không thể sử dụng các địa chỉ bị khóa để đảo ngược được sử dụng như thế nào. vì vậy chúng ta có thể nói bộ xử lý 64 bit mất hơn 1 EB. và thông số kỹ thuật này không phụ thuộc vào hệ điều hành mà PC đã sử dụng hoặc mô hình của nó.


1
Trong thực tế, bộ xử lý 64 bit thường có không gian địa chỉ 48 bit, đủ cho 256 terabyte bộ nhớ.
465544

Tôi nghĩ bạn có nghĩa là exbibyte , không phải exabyte .
martineau

1

Lấy CPU Intel hoặc AMD làm ví dụ, có một số hạn chế đối với cả bộ nhớ vật lý và bộ nhớ ảo. Những người khác đã nói về những hạn chế về phần cứng và bo mạch chủ, nhưng cũng có những hạn chế bên trong.

Một mục nhập bảng trang đầu cuối trong MMU chứa 52 bit địa chỉ vật lý quan trọng và về mặt lý thuyết có thể ánh xạ tới 4096 TB RAM vật lý.

MMU thực hiện bảng trang 4 cấp có cấp cao nhất bao gồm các mục 512 × 512 GB. Vì vậy, bộ nhớ ảo bị giới hạn ở 256 TB.

Trong chừng mực mà tôi biết, tất cả các hệ điều hành 64 bit đều thực hiện DMAP (bản đồ trực tiếp), cực kỳ tiện lợi. Tuy nhiên, vì bộ nhớ ảo bị giới hạn ở 256 TB, kích thước của DMAP cũng bị giới hạn. Thông thường, 128 TB được dành riêng cho chế độ người dùng và 128 TB cho kernel. Trong số 128 TB cho kernel, có thể dành tới một nửa cho DMAP. Do tính hữu ích của DMAP, các hệ điều hành thường sẽ giới hạn bộ nhớ vật lý ở những gì DMAP có thể xử lý.

Vì vậy, hầu hết (tất cả?) Hệ điều hành 64 bit cho Intel / AMD, bộ nhớ vật lý được hỗ trợ bị giới hạn ở đâu đó khoảng 64 TB, để lại 64 TB cho bộ nhớ ảo nhân chung và 128 TB cho bộ nhớ ảo người dùng.

-

Bên trong CPU, bộ đệm CPU cũng có một giới hạn về số lượng bit địa chỉ vật lý mà chúng lưu trữ, vì mỗi bit địa chỉ bổ sung sẽ ăn nhiều bóng bán dẫn hơn vào thẻ bộ đệm. Giới hạn chân của bộ điều khiển DRAM không nhất thiết là từ cuối cùng, vì bộ nhớ cũng có thể được xử lý thông qua các liên kết DMI.

Các kiến ​​trúc CPU khác nhau (ví dụ: ARM, PowerPC, v.v.) sẽ có những hạn chế khác nhau.

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.