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?
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?
Câu trả lời:
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).
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à:
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 đó.
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ể ).
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ó.
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ó.
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.