it-swarm-vi.com

Hệ thống 32 bit so với 64 bit

Sự khác biệt giữa các hệ thống 32 bit và 64 bit là gì?

Nếu bạn đã sử dụng cả hai, bạn đã trải nghiệm loại khác biệt sắc nét nào?

Sẽ có vấn đề khi sử dụng các chương trình 32 bit trên hệ thống 64 bit trong một số trường hợp?

219
Mehper C. Palavuzlar

Lưu ý: Những câu trả lời này áp dụng cho CPU PC dựa trên x86 tiêu chuẩn (Intel và AMD) và Windows (như được định cấu hình thông thường cho người dùng cuối). Các chip 32 bit hoặc 64 bit khác, các HĐH khác và các cấu hình HĐH khác có thể có sự đánh đổi khác nhau.

Từ góc độ kỹ thuật, HĐH 64 bit mang đến cho bạn :

  • Cho phép các tiến trình riêng lẻ xử lý hơn 4 GB RAM mỗi (trong thực tế, hầu hết nhưng không phải tất cả các hệ điều hành 32 bit cũng giới hạn tổng hệ thống có thể sử dụng RAM xuống dưới 4 GB, không chỉ tối đa cho mỗi ứng dụng).

  • Tất cả các con trỏ mất 8 byte thay vì 4 byte. Hiệu quả đối với việc sử dụng RAM là tối thiểu (vì bạn không có khả năng có một ứng dụng chứa đầy gigabyte con trỏ), nhưng trong trường hợp lý thuyết tồi tệ nhất, điều này có thể khiến bộ đệm CPU có thể giữ 1/2 con trỏ nhiều (làm cho nó có hiệu quả bằng 1/2 kích thước). Đối với hầu hết các ứng dụng, đây không phải là một vấn đề lớn.

  • Có nhiều thanh ghi CPU đa năng hơn ở chế độ 64 bit. Các thanh ghi là bộ nhớ nhanh nhất trong toàn bộ hệ thống của bạn. Chỉ có 8 ở chế độ 32 bit và 16 thanh ghi mục đích chung ở chế độ 64 bit. Trong các ứng dụng máy tính khoa học tôi đã viết, tôi đã thấy hiệu suất tăng tới 30% bằng cách biên dịch lại ở chế độ 64 bit (ứng dụng của tôi thực sự có thể sử dụng các thanh ghi phụ).

  • Hầu hết các hệ điều hành 32 bit thực sự chỉ cho phép các ứng dụng riêng lẻ sử dụng 2 GB RAM, ngay cả khi bạn đã cài đặt 4 GB. Điều này là do 2 GB không gian địa chỉ khác được dành riêng để chia sẻ dữ liệu giữa các ứng dụng, với HĐH và để liên lạc với trình điều khiển. Windows và Linux sẽ cho phép bạn điều chỉnh sự đánh đổi này thành 3 GB cho các ứng dụng và 1 GB được chia sẻ, nhưng điều này có thể gây ra sự cố cho một số ứng dụng không mong đợi sự thay đổi. Tôi cũng đoán nó có thể làm tê liệt một card đồ họa có 1 GB RAM (nhưng tôi không chắc). HĐH 64 bit có thể cung cấp cho các ứng dụng 32 bit riêng lẻ gần hơn với 4 GB đầy đủ để chơi.

Từ góc nhìn của người dùng :

  • Tốc độ ứng dụng thường nhanh hơn đối với ứng dụng 64 bit trong HĐH 64 bit so với phiên bản ứng dụng 32 bit trên HĐH 32 bit, nhưng hầu hết người dùng sẽ không thấy tốc độ này. Hầu hết các ứng dụng cho người dùng bình thường không thực sự tận dụng các thanh ghi bổ sung hoặc lợi ích được cân bằng bởi các con trỏ lớn hơn lấp đầy bộ đệm.

  • Nếu bạn có bất kỳ ứng dụng hog bộ nhớ nào (như trình chỉnh sửa ảnh, xử lý video, tính toán khoa học, v.v.), nếu bạn có (hoặc có thể mua) hơn 3 GB RAM và bạn có thể có phiên bản ứng dụng 64 bit, sự lựa chọn rất dễ dàng: sử dụng HĐH 64 bit.

  • Một số phần cứng không có trình điều khiển 64 bit. Kiểm tra bo mạch chủ của bạn, tất cả các thẻ cắm và tất cả các thiết bị USB trước khi thực hiện chuyển đổi. Lưu ý rằng trong những ngày đầu của Windows Vista, có rất nhiều vấn đề với trình điều khiển. Những ngày này mọi thứ nói chung là tốt hơn.

  • Nếu bạn chạy quá nhiều ứng dụng cùng một lúc mà bạn sắp hết RAM (thông thường bạn có thể nói điều này vì máy tính của bạn bắt đầu hoạt động rất chậm và bạn nghe thấy tiếng ổ cứng đang kêu lách tách), thì bạn sẽ muốn có hệ điều hành 64 bit (và đủ RAM).

  • Bạn có thể chạy các ứng dụng 32 bit (nhưng không phải trình điều khiển) trong Windows 64 bit mà không gặp vấn đề gì. Sự chậm chạp tồi tệ nhất mà tôi đã đo được cho một ứng dụng 32 bit trong Windows 64 bit là khoảng 5% (có nghĩa là nếu mất 60 giây để làm điều gì đó trong Windows 32 bit, thì mất tối đa 60 * 1.05 = 65 giây với cùng một ứng dụng 32 bit trong Windows 64 bit).

Điều gì 32-bit so với 64-bit không không ngụ ý :

Trên các hệ thống x86, 32 bit so với 64 bit trực tiếp đề cập đến kích thước của con trỏ. Đó là tất cả.

  • Nó không đề cập đến kích thước của loại C int. Điều đó được quyết định bởi việc triển khai trình biên dịch cụ thể và hầu hết các trình biên dịch phổ biến chọn int 32 bit trên các hệ thống 64 bit.

  • Nó không trực tiếp đề cập đến kích thước của các thanh ghi không con trỏ bình thường. Tuy nhiên, việc sử dụng các thanh ghi số học 64 bit xảy ra để yêu cầu ứng dụng và HĐH cũng chạy ở chế độ con trỏ 64 bit.

  • Nó không trực tiếp đề cập đến kích thước của bus địa chỉ vật lý. Ví dụ: một hệ thống có các dòng bộ đệm rộng 64 bit và bộ nhớ tối đa 512GiB chỉ cần 33 bit trong bus địa chỉ của nó (tức là log2(512*1024**3) - log2(64) = 33).

  • Nó không đề cập đến kích thước của bus dữ liệu vật lý: liên quan nhiều hơn đến chi phí sản xuất (số lượng chân trong ổ cắm CPU) và kích thước dòng bộ đệm.

261
Mr Fooz

Về cơ bản, bạn có thể làm mọi thứ với quy mô lớn hơn:

  1. RAM trên mỗi hệ điều hành: RAM giới hạn 4GB trên x86 cho hệ điều hành (hầu hết thời gian)
  2. RAM trên mỗi quy trình: RAM giới hạn 4GB trên x86 cho các quy trình (luôn luôn). Nếu bạn nghĩ rằng điều này không quan trọng, hãy thử chạy một ứng dụng chuyên sâu về cơ sở dữ liệu MSSQL. Nó sẽ sử dụng> 4GB nếu bạn có sẵn và chạy tốt hơn nhiều.
  3. Địa chỉ: Địa chỉ là 64 bit thay vì 32 bit cho phép bạn có các chương trình "lớn hơn" sử dụng nhiều bộ nhớ hơn.
  4. Xử lý có sẵn cho các chương trình: Bạn có thể tạo thêm xử lý tệp, quy trình, ... Ví dụ trên Windows x64, bạn có thể tạo> 2000 luồng trên mỗi quy trình x86 gần hơn vài trăm.
  5. Các chương trình rộng hơn có sẵn: Từ x64, bạn có thể chạy cả hai chương trình x86 và x64. (Ví dụ: windows64, windows32 trên Windows64 giả lập)
  6. Tùy chọn mô phỏng: Từ x64, bạn có thể chạy cả máy ảo x86 và x64.
  7. Nhanh hơn: Một số tính toán nhanh hơn trên CPU 64 bit
  8. Phân chia nhiều tài nguyên hệ thống: Rất nhiều bộ nhớ RAM rất quan trọng khi bạn muốn chạy ít nhất một VM phân chia tài nguyên hệ thống của bạn.
  9. Các chương trình độc quyền có sẵn: Một số chương trình mới chỉ hỗ trợ x64. Trao đổi ví dụ 2007.
  10. X86 lỗi thời trong tương lai ?: Theo thời gian, ngày càng nhiều 64 bit sẽ được sử dụng và càng nhiều x86 sẽ không được sử dụng. Vì vậy, các nhà cung cấp sẽ chỉ hỗ trợ 64-bit nhiều hơn nữa.

Hai loại kiến ​​trúc 64 bit lớn là kiến ​​trúc x64 và IA64. Nhưng x64 là phổ biến nhất cho đến nay.

x64 có thể chạy các lệnh x86 cũng như các lệnh x64. IA64 cũng chạy các lệnh x86, nhưng nó không thực hiện các phần mở rộng SSE. Có phần cứng dành riêng cho Itanium để chạy các hướng dẫn x86; nó là một trình giả lập, nhưng trong phần cứng.

Như @Phil đã đề cập, bạn có thể có cái nhìn sâu hơn về cách thức hoạt động ở đây .

106
Brian R. Bondy

Tác động lớn nhất mà mọi người sẽ nhận thấy vào lúc này là một PC 32 bit chỉ có thể giải quyết tối đa 4GB bộ nhớ. Khi bạn tắt bộ nhớ được phân bổ cho các mục đích sử dụng khác của hệ điều hành, PC của bạn có thể sẽ chỉ hiển thị khoảng 3,25GB bộ nhớ có thể sử dụng. Di chuyển đến 64 bit và giới hạn này biến mất.

Nếu bạn làm phát triển nghiêm túc thì điều này có thể rất quan trọng. Hãy thử chạy một số máy ảo và bạn sẽ sớm hết bộ nhớ. Máy chủ có nhiều khả năng cần thêm bộ nhớ và vì vậy bạn sẽ thấy rằng việc sử dụng 64 bit trên máy chủ lớn hơn nhiều so với máy tính để bàn. Định luật Moore đảm bảo rằng chúng ta sẽ có nhiều bộ nhớ hơn trên các máy và vì vậy tại một số điểm, máy tính để bàn cũng sẽ chuyển sang 64 bit làm tiêu chuẩn.

Để biết mô tả chi tiết hơn về sự khác biệt của bộ xử lý, hãy xem bài viết xuất sắc này từ ArsTechnica .

46
Phil Wright

Không có gì là miễn phí: mặc dù các ứng dụng 64 bit có thể truy cập nhiều bộ nhớ hơn các ứng dụng 32 bit, nhưng nhược điểm là chúng cần bộ nhớ nhiều hơn. Tất cả những con trỏ trước đây cần 4 byte, giờ chúng cần 8. Ví dụ, yêu cầu mặc định trong Emacs là bộ nhớ nhiều hơn 60% khi được xây dựng cho kiến ​​trúc 64 bit. Dấu chân thêm này làm tổn thương hiệu năng ở mọi cấp của hệ thống phân cấp bộ nhớ: các tệp thực thi lớn hơn mất nhiều thời gian hơn để tải từ đĩa, các bộ làm việc lớn hơn gây ra nhiều phân trang hơn và các đối tượng lớn hơn có nghĩa là ít bộ đệm hơn trong bộ xử lý. Nếu bạn nghĩ về CPU có bộ đệm L1 16K, ứng dụng 32 bit có thể hoạt động với 4096 con trỏ trước khi nó bỏ lỡ và chuyển đến bộ đệm L2 nhưng ứng dụng 64 bit phải tiếp cận bộ đệm L2 chỉ sau 2048 con trỏ.

Trên x64, điều này được giảm bớt bởi các cải tiến kiến ​​trúc khác như nhiều thanh ghi hơn, nhưng trên PowerPC nếu ứng dụng của bạn không thể sử dụng> 4G, nó có khả năng chạy nhanh hơn trên "ppc" so với "ppc64". Ngay cả trên Intel cũng có khối lượng công việc chạy nhanh hơn trên x86 và một số ít chạy nhanh hơn 5% trên x64 so với x86.

31
James

Một hệ điều hành 64 bit có thể sử dụng nhiều RAM hơn. Đó là về nó, trong thực tế. Vista/7 64 bit sử dụng các tính năng an toàn dễ hiểu hơn cho vị trí chúng đặt các thành phần quan trọng trong RAM, nhưng điều đó không thực sự "đáng chú ý" như vậy.

Từ ChrisInEd hôm nay:

Hệ điều hành 32 bit trên hệ thống ix86 với PAE có thể giải quyết tối đa 64 GB RAM. Hệ điều hành 64 bit trên x86-64 có thể truy cập tối đa 256 TB không gian địa chỉ ảo, mặc dù điều này có thể được nâng lên trong các bộ xử lý tiếp theo, lên tới 16 EB. Lưu ý rằng một số hệ điều hành giới hạn không gian địa chỉ hơn nữa và hầu hết các bo mạch chủ sẽ có các hạn chế bổ sung.

19
Phoshi

Không chắc chắn tôi có thể trả lời tất cả các câu hỏi của bạn mà không cần viết toàn bộ bài luận (luôn có Google ...), nhưng bạn không cần thiết kế ứng dụng của mình khác nhau cho 64 bit. Tôi đoán những gì đang được đề cập là bạn phải chú ý đến những thứ như kích thước con trỏ không còn cùng kích thước với ints. Và bạn có toàn bộ các vấn đề tiềm ẩn với các giả định sẵn có trên một số loại dữ liệu nhất định dài bốn byte có thể không còn đúng nữa.

Điều này có khả năng làm tăng tất cả mọi thứ trong ứng dụng của bạn - mọi thứ từ lưu/tải từ tệp, lặp qua dữ liệu, căn chỉnh dữ liệu, tất cả các cách để thao tác bit trên dữ liệu. Nếu bạn có một cơ sở mã hiện tại mà bạn đang cố gắng chuyển hoặc làm việc trên cả hai, có khả năng bạn sẽ có rất nhiều khúc mắc nhỏ để xử lý.

Tôi nghĩ rằng đây là một vấn đề thực hiện, chứ không phải là một thiết kế. I E. Tôi nghĩ rằng "thiết kế" của nói, một gói chỉnh sửa ảnh sẽ giống như bất cứ từ nào. Chúng tôi viết mã biên dịch cho cả hai phiên bản 32 bit và 64 bit, và thiết kế chắc chắn không khác nhau giữa hai phiên bản - đó là cùng một cơ sở mã.

"Vấn đề lớn" cơ bản trên 64 bit là bạn có quyền truy cập vào không gian địa chỉ bộ nhớ lớn hơn nhiều so với 32 bit. Điều này có nghĩa là bạn thực sự có thể chộp được hơn 4Gb bộ nhớ vào máy tính của mình và thực sự nó sẽ tạo ra sự khác biệt.

Tôi chắc chắn rằng các câu trả lời khác sẽ đi vào chi tiết và lợi ích nhiều hơn tôi.

Về mặt phát hiện sự khác biệt sau đó lập trình, bạn chỉ cần kiểm tra kích thước của một con trỏ (ví dụ: sizeof (void *)). Câu trả lời là 4 có nghĩa là 32 bit và 8 có nghĩa là bạn đang chạy trong môi trường 64 bit.

14
Greg Whitfield

Một quá trình 32 Bit có không gian địa chỉ ảo là 4 GB; điều này có thể là quá ít đối với một số ứng dụng. Ứng dụng 64 Bit có không gian địa chỉ hầu như không giới hạn (tất nhiên là có giới hạn, nhưng rất có thể bạn sẽ không đạt giới hạn này).

Trên OSX có những lợi thế khác. Xem bài viết sa , tại sao nhân chạy trong không gian địa chỉ 64 Bit (bất kể ứng dụng của bạn chạy 64 hay 32) hay ứng dụng của bạn chạy trong không gian địa chỉ 64 Bit (trong khi kernel vẫn là 32 Bit ) dẫn đến hiệu suất tốt hơn nhiều. Tóm lại: Nếu một trong hai là 64 Bit (nhân hoặc ứng dụng hoặc cả hai), thì TLB ("bộ đệm tìm dịch") không phải bị xóa bất cứ khi nào bạn chuyển từ kernel sang sử dụng dung lượng và quay lại (sẽ tăng tốc lên RAM truy cập).

Ngoài ra, bạn có hiệu suất tăng khi làm việc với các biến "long long int" (biến 64 bit như uint64_t). CPU 32 Bit có thể cộng/chia/trừ/nhân hai giá trị 64 Bit, nhưng không hoạt động trong một hoạt động phần cứng. Thay vào đó, nó cần chia hoạt động này thành hai (hoặc nhiều hơn) hoạt động 32 Bit. Vì vậy, một ứng dụng hoạt động nhiều với số 64 Bit sẽ tăng tốc độ có thể thực hiện toán 64 bit trực tiếp trong phần cứng.

Cuối cùng nhưng không kém phần quan trọng, kiến ​​trúc x86-64 cung cấp nhiều thanh ghi hơn kiến ​​trúc x86 cổ điển. Làm việc với các thanh ghi nhanh hơn nhiều so với làm việc với RAM và CPU càng có nhiều thanh ghi thì càng cần thường xuyên trao đổi các giá trị thanh ghi thành RAM và quay lại các thanh ghi.

Để tìm hiểu xem CPU của bạn có thể chạy ở chế độ 64 Bit hay không, bạn có thể xem xét các biến sysctl khác nhau. Ví dụ. mở một thiết bị đầu cuối và gõ

sysctl machdep.cpu.extfeatures

Nếu nó liệt kê EM64T, CPU của bạn hỗ trợ không gian địa chỉ 64 Bit theo tiêu chuẩn x86-64. Bạn cũng có thể tìm kiếm

sysctl hw.optional.x86_64

Nếu nó nói 1 (đúng/được bật), CPU của bạn hỗ trợ chế độ x86-64 Bit, nếu nó nói 0 (sai/bị vô hiệu hóa) thì không. Nếu hoàn toàn không tìm thấy cài đặt, hãy xem nó là sai.

Lưu ý: Bạn cũng có thể tìm nạp các biến sysctl từ trong ứng dụng C gốc, không cần sử dụng công cụ dòng lệnh. Xem

man 3 sysctl
10
Mecki

Lưu ý rằng không gian địa chỉ có thể được sử dụng cho nhiều hơn bộ nhớ (thực). Người ta cũng có thể ánh xạ các tệp lớn, có thể cải thiện hiệu suất trong các mẫu truy cập kỳ quặc hơn vì bộ nhớ đệm cấp độ VM cấp độ mạnh hơn và hiệu quả hơn. Việc phân bổ các khối bộ nhớ lớn trên 64- bit vì heapmanager ít gặp phải sự phân mảnh không gian địa chỉ sẽ không cho phép nó phân bổ một khối lớn.

Một số điều được nói trong luồng này (như nhân đôi số thanh ghi #) chỉ áp dụng cho x86-> x86_64, không áp dụng cho 64-bit nói chung. Giống như thực tế là dưới x86_64, một người được bảo đảm có SSE2, 686 opcodes và một cách rẻ tiền để làm PIC. Các tính năng này hoàn toàn không phải là về 64 bit, mà là về việc cắt giảm di sản và khắc phục các hạn chế x86 đã biết

Ngoài ra, mọi người thường chỉ ra việc nhân đôi các thanh ghi là nguyên nhân của việc tăng tốc, trong khi nhiều khả năng SSE2 mặc định sử dụng để thực hiện thủ thuật (tăng tốc memcpy và các chức năng tương tự). Nếu bạn bật cùng một bộ cho x86, sự khác biệt sẽ nhỏ hơn. (*) (***)

Ngoài ra, hãy nhớ rằng thường có hình phạt ban đầu liên quan vì cấu trúc dữ liệu trung bình sẽ tăng đơn giản vì kích thước của một con trỏ lớn hơn. Điều này cũng có hiệu ứng bộ đệm, nhưng đáng chú ý hơn trong thực tế là memcpy trung bình () (hoặc bất cứ điều gì tương đương với bản sao bộ nhớ trong ngôn ngữ của bạn) sẽ mất nhiều thời gian hơn. Đây chỉ là độ lớn của một vài phần trăm btw, nhưng các tốc độ được đặt tên ở trên cũng nằm trong độ lớn đó.

Thông thường chi phí căn chỉnh cũng lớn hơn trên các kiến ​​trúc 64 bit (các bản ghi 32 bit trước đây thường chỉ trở thành hỗn hợp của các giá trị 32 bit và 64 bit), làm nổ tung các cấu trúc thậm chí nhiều hơn.

Nhìn chung, các thử nghiệm đơn giản của tôi cho thấy chúng sẽ triệt tiêu lẫn nhau, nếu trình điều khiển và thư viện thời gian chạy hoàn toàn thích nghi, không tạo ra sự khác biệt đáng kể về tốc độ cho ứng dụng trung bình. Tuy nhiên, một số ứng dụng có thể đột nhiên nhanh hơn (ví dụ: khi phụ thuộc vào AES) hoặc chậm hơn (cơ sở hạ tầng quan trọng liên tục được di chuyển xung quanh/quét/đi bộ và chứa rất nhiều con trỏ). Các thử nghiệm đã có trên Windows, và do đó tối ưu hóa PIC không được điểm chuẩn.

Lưu ý rằng hầu hết các ngôn ngữ JIT-VM (Java, .NET) sử dụng con trỏ trung bình nhiều hơn đáng kể (bên trong) so với ví dụ: C++. Có lẽ việc sử dụng bộ nhớ của họ tăng hơn so với chương trình trung bình, nhưng tôi không dám đánh đồng điều đó trực tiếp với các hiệu ứng làm chậm (vì đây là những con thú thực sự phức tạp và vui nhộn và thường khó dự đoán mà không đo lường được)

Windows 64-bit mặc định sử dụng SSE2 cho điểm nổi dường như tăng tốc các hoạt động đơn giản và làm chậm các hoạt động phức tạp (sin, cos, v.v.).

(*) một thực tế ít được biết đến là số lượng thanh ghi SSE cũng tăng gấp đôi trong chế độ 64 bit

(**) Tiến sĩ Dobbs đã có một bài viết hay về nó vài năm trước.

9
Marco van de Voort

Bên cạnh các vấn đề về bộ nhớ rõ ràng mà hầu hết mọi người đang đề cập ở đây, tôi nghĩ rằng đáng để xem xét khái niệm "tính toán từ rộng" mà Knuth (trong số những người khác) đã nói gần đây. Có rất nhiều hiệu quả đạt được thông qua thao tác bit và các thao tác bit trên Word 64 bit đi xa hơn nhiều so với Word 32 bit. Nói tóm lại, bạn có thể thực hiện nhiều thao tác hơn trong các thanh ghi mà không phải nhấn bộ nhớ và từ góc độ hiệu suất, đó là một chiến thắng khá lớn.

Hãy xem Tập 4, trước Fascicle 1A để biết một số ví dụ về các thủ thuật hay mà tôi đang nói đến.

8
Michael Dorfman

Ngoài khả năng giải quyết nhiều bộ nhớ hơn x86_64 còn có nhiều thanh ghi hơn cho phép trình biên dịch tạo mã hiệu quả hơn. Sự cải thiện hiệu suất thường sẽ khá nhỏ mặc dù.

Kiến trúc x86_64 tương thích ngược với x86. Có thể chạy các hệ điều hành 32 bit chưa sửa đổi. Cũng có thể chạy phần mềm 32 bit chưa sửa đổi từ HĐH 64 bit. Điều đó sẽ yêu cầu tất cả các thư viện 32 bit thông thường mặc dù. Họ có thể cần phải được cài đặt riêng.

7
Kristof Provost

Chủ đề này đã quá dài rồi, nhưng ...

Hầu hết các câu trả lời tập trung vào thực tế là bạn có không gian địa chỉ 64 bit lớn hơn, do đó bạn có thể giải quyết nhiều bộ nhớ hơn. Đối với khoảng 99% tất cả các ứng dụng, điều này là hoàn toàn không liên quan. Whoop lớn.

thực tế lý do 64-bit là tốt không rằng các thanh ghi lớn hơn, nhưng có gấp đôi số đó! Điều đó có nghĩa là trình biên dịch có thể giữ nhiều giá trị của bạn trong thanh ghi thay vì đổ chúng vào bộ nhớ và tải lại chúng trong một vài hướng dẫn sau. Nếu và khi một trình biên dịch tối ưu hóa đang hủy kiểm soát các vòng lặp cho bạn, thì nó có thể hủy kiểm soát chúng khoảng gấp đôi, điều này thực sự có thể giúp hiệu suất.

Ngoài ra, các quy ước của người gọi/callee chương trình con cho 64-bit đã được xác định để giữ hầu hết các tham số đã truyền trong các thanh ghi thay vì người gọi đẩy chúng lên ngăn xếp và callee bật chúng ra.

Vì vậy, một ứng dụng C/C++ "điển hình" sẽ nhận được sự cải thiện hiệu suất 10% hoặc 15% chỉ bằng cách biên dịch lại cho 64 bit. (Giả sử một số phần của ứng dụng đã được tính toán ràng buộc. Tất nhiên, đây không phải là bảo đảm; Tất cả các máy tính đều có tốc độ như nhau. Mileage May Vary.)

6
Die in Sente

Báo giá từ Microsoft.com:

Trong bảng sau, tài nguyên tối đa tăng của máy tính dựa trên các phiên bản Windows 64 bit và bộ xử lý Intel 64 bit được so sánh với mức tối đa tài nguyên 32 bit hiện có.

MS-Table

5
Mehper C. Palavuzlar

Với máy 32 bit, bạn chỉ có 4.294.967.295 byte bộ nhớ để giải quyết. Với máy 64 bit, bạn có bộ nhớ 1.84467441 × 10 ^ 19 byte.

Wikipedia nói điều này

Bộ xử lý 64 bit tính toán các tác vụ cụ thể (chẳng hạn như giai thừa của các số liệu lớn) nhanh gấp đôi so với làm việc trong môi trường 32 bit (ví dụ cụ thể được lấy từ so sánh giữa Máy tính Windows 32 bit và 64 bit; ). Điều này mang lại cảm giác chung về khả năng lý thuyết của các ứng dụng được tối ưu hóa 64 bit.

Trong khi các kiến ​​trúc 64 bit không thể chối cãi làm việc với các tập dữ liệu lớn trong các ứng dụng như video kỹ thuật số, máy tính khoa học và cơ sở dữ liệu lớn dễ dàng hơn, đã có tranh luận đáng kể về việc liệu chúng hoặc các chế độ tương thích 32 bit của chúng sẽ nhanh hơn giá tương đương Hệ thống 32 bit cho các nhiệm vụ khác. Trong kiến ​​trúc x86-64 (AMD64), phần lớn các hệ điều hành và ứng dụng 32 bit có thể chạy trơn tru trên phần cứng 64 bit.

Các máy ảo Java 64 bit của Sun khởi động chậm hơn các máy ảo 32 bit của họ vì Sun chỉ triển khai trình biên dịch JIT "máy chủ" (C2) cho các nền tảng 64 bit. [9] Trình biên dịch JIT "client" (C1), tạo mã kém hiệu quả hơn nhưng biên dịch nhanh hơn nhiều, không khả dụng trên nền tảng 64 bit.

Cần lưu ý rằng tốc độ không phải là yếu tố duy nhất để xem xét khi so sánh bộ xử lý 32 bit và 64 bit. Các ứng dụng như đa tác vụ, kiểm tra căng thẳng và phân cụm (cho tính toán hiệu năng cao), HPC, có thể phù hợp hơn với kiến ​​trúc 64 bit được triển khai chính xác. Vì lý do cụm 64 bit đã được triển khai rộng rãi trong các tổ chức lớn như IBM, HP và Microsoft, vì lý do này.

5
Mark Cidade

Ngoài những lợi thế đã được đề cập ở đây, một số chi tiết khác liên quan đến bảo mật:

  • x86_64 cpus có bit không thực thi trong bảng trang của chúng. I E. điều này có thể ngăn chặn việc khai thác bí mật gây ra bởi lỗi tràn bộ đệm. 32 bit x86 cpus chỉ hỗ trợ tính năng này trong chế độ PAE.
  • Không gian địa chỉ lớn hơn cho phép ngẫu nhiên bố trí không gian địa chỉ (ASLR) tốt hơn, khiến cho việc khai thác bộ đệm tràn ngập khó khăn hơn.
  • x86_64 cpus có mã độc lập với vị trí, tức là truy cập dữ liệu liên quan đến thanh ghi con trỏ lệnh (RIP).

Một ưu điểm khác xuất hiện là số lượng bộ nhớ liền kề ảo được phân bổ với vmalloc() trong nhân Linux có thể lớn hơn ở chế độ 64 bit.

5
knweiss

Kristof và Poshi đã tuyên bố sự khác biệt kỹ thuật chính giữa HĐH 32 và 64 bit ', trải nghiệm người dùng thường khác nhiều so với lý thuyết. Các phiên bản dành cho người dùng 64 bit của Windows cho đến nay (XP và Vista) có lỗ hổng lớn trong hỗ trợ trình điều khiển của họ. Tôi đã có nhiều máy in, máy quét và các thiết bị bên ngoài khác không hoạt động với các phiên bản 64 bit hoạt động tốt với các phiên bản 32 bit. Đây là những thiết bị có trình điều khiển 64 bit và chúng vẫn không hoạt động. Tại thời điểm này, tôi khuyên bạn nên tránh xa mọi thứ mà người tiêu dùng dựa trên 64 bit từ Microsoft cho đến khi bạn nghe về cách Windows 7 xử lý việc này, từ người dùng cuối thực sự, không chỉ những người yêu thích hiện đang truy cập vào nó. Cho nó ít nhất 6 tháng và xem những gì mọi người đang trải qua. Cá nhân tôi sẽ cài đặt hương vị 32 bit của Windows 7 vì các phiên bản Vista 64 bit của tôi là một trọng lượng giấy đắt tiền mà tôi đã ngừng sử dụng các eons trước đây và quay lại XP 32 bit.

4
Kevin K

Một số chương trình chơi trò chơi sử dụng đại diện bit-board . Ví dụ, cờ, cờ và othello có một bảng 8 x 8, tức là 64 ô vuông, do đó, có ít nhất 64 bit trong một máy Word giúp hiệu suất đáng kể.

Tôi nhớ đã đọc về một chương trình cờ vua có bản dựng 64 bit nhanh gần gấp đôi so với phiên bản 32 bit.

2
Hugh Allen

Thuật ngữ 32 bit và 64 bit dùng để chỉ cách bộ xử lý máy tính (còn gọi là CPU), xử lý thông tin. Các phiên bản Windows 64 bit xử lý một lượng lớn bộ nhớ truy cập ngẫu nhiên (RAM) hiệu quả hơn các hệ thống 32 bit.

tốc độ có thể khác nhau theo ý kiến ​​của tôi

2
LestiWulan

Đối với hầu hết các mục đích thực tế, bạn có thể sẽ không nhận thấy một sự khác biệt.

Bạn phải có CPU 64 bit (hầu hết các CPU trong vài năm qua) để cài đặt hệ điều hành 64 bit.

Có một vài lợi thế cho hệ điều hành 64 bit:

  • Nó sẽ cho phép bạn chạy hơn 4GB RAM (số lượng tối đa bạn có thể xử lý trong HĐH 32 bit là 2 ^ 32 = 4GB)
  • Nó rất hữu ích khi làm việc với các tập dữ liệu lớn (ví dụ: trong Excel) và một số tác vụ chuyên sâu tính toán nhất định (ví dụ: Photoshop và các tệp lớn)
  • Bạn chỉ có thể chạy chương trình 64 bit trên HĐH 64 bit, nhưng bạn có thể chạy chương trình 32 bit trên cả hai (hãy nhớ rằng có rất nhiều chương trình đến như cả hai, vì vậy không có quá nhiều 64 bit chương trình).

Trong hầu hết các kịch bản, các chương trình 64 bit sử dụng bộ nhớ nhiều hơn một chút, nhưng đối với máy tính cá nhân, điều này thường không được chú ý.

1
cyberx86

Một điểm khác liên quan đến Microsoft Windows là trong nhiều năm qua đã có API Win32 dành cho hệ điều hành 32 bit và không được tối ưu hóa cho việc biên dịch 64 bit. Khi tôi viết một số DLL cho các ứng dụng của mình, tôi thường biên dịch trong Win32 không phải là phiên bản 64 bit. Trước Vista, chưa có nhiều phiên bản Windows 64 bit thành công mà tôi tin là nơi tôi làm việc, máy mới của tôi có 4 GB RAM nhưng tôi vẫn đang sử dụng Windows 32 bit XP Pro vì nó là một O/S ổn định đã biết so với XP64 hoặc Vista.

Tôi nghĩ rằng bạn cũng có thể muốn nhìn lại khi có sự thay đổi từ 16 bit sang 32 bit để biết thêm chi tiết về lý do tại sao sự thay đổi có thể là một vấn đề lớn đối với một số người. Các ứng dụng quan trọng mà một công ty có thể chạy trên máy tính để bàn, ví dụ: các gói kế toán nhỏ, có thể không chạy trên hệ điều hành 64 bit và do đó cần phải giữ một máy kế thừa, ảo hoặc thực.

Thay đổi kích thước của một địa chỉ có thể có một số phân nhánh và hậu quả lớn.

1
JB King