Sự chuyển đổi này sẽ có tác động lớn đến lĩnh vực phần mềm, chẳng hạn như cần phải chuyển ứng dụng sang môi trường mới và xây dựng lại phần mềm hệ thống, bao gồm cả hệ điều hành.. Để k
Trang 164-Bit trong thế giới Windows
Môi trường tính toán 64-bit đang trở thành xu thế tất yếu và sẽ dần thay thế môi trường tính toán 32-bit Sự chuyển đổi này sẽ có tác động lớn đến lĩnh vực phần mềm, chẳng hạn như cần phải
chuyển ứng dụng sang môi trường mới và xây
dựng lại phần mềm hệ thống, bao gồm cả hệ điều hành Trong bài viết này, chúng ta sẽ xem xét
những thành phần có thể sẽ đóng vai trò quan
Trang 2trọng trong thế giới phần mềm 64-bit – Windows
và môi trường ứng dụng
Tuy các bộ xử lý (BXL) 64-bit đã hiện diện một thời gian nhưng việc chấp nhận chúng diễn ra khá chậm chủ yếu do thiếu phần mềm chạy trên nền 64-bit Để khai thác hết khả năng của BXL 64-bit, phần mềm cần được xây dựng trên nền tảng 64-bit, điều này không thể diễn ra trong
ngày một ngày hai, tuy nhiên nền tảng 64-bit
đang có được lực đẩy nhờ nỗ lực kết hợp của
cả các công ty phần cứng và phần mềm
Chúng ta đã chứng kiến sự xuất hiện các BXL 64-bit của AMD và Intel – AMD Opteron và
Athlon64 dựa trên kiến trúc x86-64, Intel Itanium dựa trên kiến trúc IA-64 và kiến trúc Intel EM64T (Extended Memory 64 Technology) tương
Trang 3đương x86-64
Về phía phần mềm, Microsoft đã ra mắt các
phiên bản 64-bit của Windows – Windows XP Professional x64 Edition
(www.microsoft.com/windowsxp/64bit/evaluation /upgrade.mspx), và Windows Server 2003 x64 Edition
(www.microsoft.com/windowsserver2003/64bit/tr ial/default.mspx)
Windows 64-bit có ưu điểm so với Windows 32-bit về tốc độ và khả năng mở rộng: tốc độ nhanh hơn (BXL 64-bit có khả năng xử lý nhiều dữ liệu hơn trong mỗi xung nhịp), tính toán chính xác hơn và khả năng quản lý bộ nhớ lớn hơn
Tuy nhiên, do việc chuyển đổi từ nền tảng 32-bit sang 64-bit mất nhiều thời gian, trong thời gian
đó cả ứng dụng 32-bit và 64-bit cần làm việc
Trang 4chung với nhau Để hỗ trợ sự chuyển đổi này, Windows 64-bit Edition có một hệ thống con
được biết đến với tên “WOW64”
WOW64
WOW64, viết tắt của “Windows-32-on-Windows-64”, đưa ra 2 cấp hỗ trợ ứng dụng 32-bit Thứ nhất, các tập tin (file) hệ thống trong Windows x64 Edition không tập trung trong folder
WindowsSystem32 mà được tách thành 2 folder
để phân biệt ứng dụng 32-bit với ứng dụng 64-bit WOW64 chặn lời gọi hàm từ ứng dụng 32-bit và chuyển đến folder WindowsSysWow64 (hình 1) Nếu lời gọi từ ứng dụng 64-bit thì sẽ được chuyển đến folder WindowsSystem32 và không thông qua WOW64 Điều đáng lưu ý ở đây là Microsoft giữ lại tên folder System32 để chứa các file hệ thống 64-bit Hình 2 là “ảnh
Trang 5chụp” thư mục hệ thống Windows Server 2003 x64 Edition, lưu ý phân biệt folder Program Files chứa các ứng dụng 64-bit và Program Files
(x86) chứa các ứng dụng 32-bit
Thứ hai, WOW64 cũng cung cấp sự điều phối tương tự ở mức Registry (hình 3) Lời gọi hàm
từ ứng dụng 32-bit truy cập khoá registry
HKLMSoftware sẽ bị WOW64 chặn lại và được chuyển đến khoá
HLKMSoftwareWow6432Node, còn lời gọi hàm
từ ứng dụng 64-bit thì sẽ được chuyển đến khoá HKLMSoftware
Môi trường NET
Để phổ biến nền tảng 64-bit, cần có công cụ và nền tảng phát triển ứng dụng Microsoft đưa ra giải pháp thêm hỗ trợ 64-bit cho nền tảng phát
Trang 6triển then chốt của mình - NET Framework
Hiện bản Beta 1 NET Framework 2.0 (tên mã
“Whidbey”) có 2 phiên bản: một cho ứng dụng 32-bit và một cho ứng dụng 64-bit
(http://msdn.microsoft.com/netframework/downlo ads/updates/default.aspx), điều này có nghĩa bản Windows 64-bit sẽ có 2 bản thực thi
.NET Framework 2.0 kết hợp với Visual Studio
2005 cung cấp nền tảng phát triển ứng dụng 64-bit Bản NET Framework 32-bit sẽ nằm trong folder WindowsMicrosoft.NETFramework, còn bản 64-bit nằm trong folder
WindowsMicrosoft.NETFramework64 (xem hình 4) Cấu hình cho 2 bản Framework này cũng
được liệt kê riêng biệt trong menu Administrative Tools
Môi trường thực thi cho nền NET (Common
Trang 7Language Runtime) cũng có những thay đổi bên trong hỗ trợ sự chuyển đổi sang môi trường 64-bit, liên quan đến việc sinh mã, thu rác, kiểm
soát “ngoại lệ” (exception) và bẫy lỗi Ví dụ, trình biên dịch mới được xây dựng để sinh mã máy cho từng nền tảng phần cứng (platform), cụ thể
là IA64 và x64
Visual Studio 2005 hỗ trợ phát triển ứng dụng 64-bit dùng Visual C++ NET, Visual C# và
Visual Basic NET Visual J# không hỗ trợ phát triển ứng dụng 64-bit Hình 6 và bảng 1 mô tả các ngôn ngữ và nền tảng được hỗ trợ trong
Visual Studio 2005 Visual Studio 2005 là ứng dụng 32-bit dùng WOW64, hầu hết các tính
năng có trên nền 32-bit đều có trên nền 64-bit Ngoài Visual Studio 2005, Windows Platform SDK còn cung cấp bộ công cụ biên dịch 64-bit, bao gồm trình biên dịch Visual C++ dùng để
Trang 8phát triển ứng dụng 64-bit
32 tương thích 64
Một điều đáng quan tâm là “làm thế nào đảm bảo ứng dụng hiện nay có thể chuyển sang môi trường 64-bit trong tương lai?”
Có một số vấn đề cần lưu ý và công cụ phát
triển cũng có thể hỗ trợ trong chừng mực nhất định Ví dụ, trình biên dịch VC++ hỗ trợ tham số /Wp64 để phát hiện các vấn đề về tính tương thích có thể phát sinh trong mã nguồn khi bi ên dịch Tính năng tương tự đang được xây dựng cho Visual Studio 2005 có khả năng phát hiện những vấn đề về tính tương thích ở cấp biên dịch với các quy tắc bổ sung cho FxCop
(http://www.gotdotnet.com/team/fxcop/) sẽ được tích hợp trong bản chính thức (không có trong
Trang 9bản Visual Studio 2005 Beta 1)
Dưới đây là một số đặc tính cơ bản của các
ngôn ngữ có thể gây vấn đề tương thích
- Các ứng dụng thuần 64-bit không thể nạp thư viện COM 32-bit (DLL), nghĩa là một tiến trình 64-bit không thể chuyển sang lệnh 32-bit và gọi DLL 32-bit trong cùng tiến trình Do đó, khi ứng dụng 64-bit cần dùng thư viện COM bất kỳ, phải cần đến phiên bản 64-bit của thư viện COM này Tuy nhiên, trong trường hợp thư viện COM
thuộc hãng thứ ba và bạn không thể có được phiên bản 64-bit của nó, khi đó ứng dụng cần được xây dựng theo kiến trúc x86 để chạy với WOW64 Một lựa chọn khác là gọi DLL 32-bit trong một tiến trình 32-bit riêng và thực hiện gọi hàm từ xa RPC (Remote Procedure Call) từ ứng dụng 64-bit
Trang 10- Không nên thực hiện trực tiếp phép so sánh với số thực vì kết quả có thể khác nhau trên nền 32-bit và 64-bit Thể hiện dấu chấm động trên
hệ thống 64-bit theo chuẩn IEEE-754 có thể có
sự khác biệt Việc này có ảnh hưởng quan trọng đến các ứng dụng tài chính và đồ hoạ vốn yêu cầu độ chính xác cao
- Toán tử bit trên kiểu dữ liệu có khác biệt giữa
hệ thống 32-bit và 64-bit vì thể hiện bên trong của các kiểu dữ liệu khác nhau Dĩ nhiên, cũng
có lúc ứng dụng phải cần đến những đặc tính trên Trong trường hợp đó, bạn cần tạo và kiểm tra phiên bản 32-bit và 64-bit riêng biệt
64 nhanh hơn 32?
Một câu hỏi phổ biến: “Ứng dụng chạy trên hệ
Trang 11thống 64-bit có nhanh hơn so với hệ thống 32-bit?” Câu trả lời là: “Có thể” Tốc độ ứng dụng phụ thuộc nhiều yếu tố Công nghệ 64-bit cho phép các thiết kế phần mềm mới hơn để khai thác bộ nhớ lớn hơn mà BXL 64-bit hỗ trợ Ứng dụng được thiết kế tận dụng bộ nhớ lớn hơn này sẽ có thể chạy nhanh hơn ứng dụng 32-bit
Tuy nhiên một bất lợi của 64-bit đó là file
chương trình 64-bit thường có kích thước lớn hơn người anh em 32-bit của nó Do đó,
chương trình 64-bit có thể vượt quá dung lượng
bộ nhớ đệm dùng cho việc dịch trước mã máy (lệnh tác động trực tiếp đến phần cứng) và dẫn đến kết quả làm giảm tốc độ thực thi chương trình
Ưu điểm của 64-bit thể hiện rõ ở một số ứng dụng Những hệ thống database server (máy
Trang 12chủ cơ sở dữ liệu) sử dụng không gian địa chỉ lớn nhằm đảm bảo khả năng mở rộng, duy trì bộ nhớ đệm lớn để đảm bảo tốc độ truy xuất dữ liệu Chúng cũng có thể cấp phát nhiều bộ nhớ hơn cho mỗi người dùng, hỗ trợ nhiều người dùng hơn và làm việc với các file lớn hơn Các ứng dụng mô phỏng và tính toán nhiều cũng
được lợi với việc lưu giữ khối dữ liệu lớn hơn trong bộ nhớ
64-bit và thế giới ngoài Windows
Bốn ngày sau khi Microsoft công bố phiên bản Windows 64-bit, ngày 29/4 Apple cũng chính
thức đưa ra phiên bản 64- bit Mac OS X 10.4 (tên mã Tiger) chạy trên BXL 64-bit PowerPC G5 BXL PowerPC được thiết kế hỗ trợ cả ứng ứng dụng 32-bit và ứng dụng 64-bit, điều này có nghĩa các ứng dụng 32-bit chạy trên Mac OS X
Trang 13hiện tại có thể làm việc trên nền 64-bit mà không cần chuyển đổi hay biên dịch lại Tiger có sẵn công cụ phát triển 64-bit Xcode, cho phép bạn khai thác hết khả năng của 64-bit trong cùng gói sản phẩm
Thế còn đối thủ số 1 hiện nay của Windows - Linux? Linux đã chạy 64-bit từ năm 1994 khi
Linus Torvalds chuyển Linux sang nền Alpha Hiện Linux 64-bit đang chạy trên AMD Athlon 64
và Opteron, IBM POWER và Intel EM64T và họ Itanium Thậm chí, bạn còn có thể chạy Yellow Dog Linux 64-bit trên máy Apple G5 Power Mac thay cho Tiger
Các phiên bản Linux 64-bit xuất thân từ các
hãng Linux hàng đầu như Red Hat và
Novell/SuSE và đã được cung cấp cho các công
ty máy tính hàng đầu như Hewlett-Packard, IBM
Trang 14và NEC
Về phía ứng dụng, đối thủ đáng gờm của NET
là Java 2 Platform Standard Edition 5.0 (cũng có tên mã Tiger như Mac OS X 10.4, ra mắt vào tháng 9/2004) cung cấp môi trường phát triển ứng dụng 64-bit cho cả Mac OS X và Linux Môi trường thực thi Java Virtual Machine (JVM) nói chung độc lập với phần cứng hay hệ điều hành, JVM có phiên bản 32-bit và 64-bit