• Thứ Ba, 28/06/2005 09:24 (GMT+7)

    64-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. Chúng ta sẽ xem xét những thành phần có thể sẽ đóng vai trò quan trọng trong thế giới phần mềm 64-bit – Windows và môi trường ứng dụng.

    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 trọ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 đươ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/trial/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 chung 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 Windows\System32 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 Windows\SysWow64 (hình 1). Nếu lời gọi từ ứng dụng 64-bit thì sẽ được chuyển đến folder Windows\System32 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 chụ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 HKLM\Software sẽ bị WOW64 chặn lại và được chuyển đến khoá HLKM\Software\Wow6432Node, còn lời gọi hàm từ ứng dụng 64-bit thì sẽ được chuyển đến khoá HKLM\Software.

    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 triể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/downloads/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 \Windows\Microsoft.NET\Framework, còn bản 64-bit nằm trong folder \Windows\Microsoft.NET\Framework64 (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 (hình 5).
    Môi trường thực thi cho nền .NET (Common Language 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 để phá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 bả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.
    - 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ệ thố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 chủ 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 hiệ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 và 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.

    Phương Uyên

    Từ khóa: Phương Uyên
    ID: A0506_112