Sau khi ra mắt con chip A7 với kiến trúc 64-bit vào năm 2013, dường như Apple đang có ý định xóa sổ kiến trúc 32-bit bắt đầu từ hệ điều hành iOS 11 phát hành vào thời gian tới.
Động thái muốn xóa sổ kiến trúc 32-bit của Apple được phát hiện khi phiên bản iOS 10.3 beta xuất hiện dòng thông báo lỗi khi người dùng chạy một ứng dụng 32-bit. Điều này cho thấy, những ứng dụng 32-bit sẽ không thể hoạt động trên phiên bản tương lai của hệ điều hành iOS.
Đây không phải là lần đầu tiên Apple ưu tiên hỗ trợ các ứng dụng 64-bit. Cuối năm ngoái, hãng này đã mạnh tay gỡ bỏ 43.300 ứng dụng khỏi AppStore. “Táo khuyết” cũng gửi một email nhắc nhở các lập trình viên phải phát triển các ứng dụng 64-bit.
Các fan của Android thường không quan tâm đến việc Apple làm gì với iOS, nhưng vì Android cũng đang có những máy điện thoại hỗ trợ 32-bit và 64-bit nên động thái của Apple cũng có thể gây ảnh hưởng đến hệ sinh thái Android. Vì thế chúng ta cùng khám phá xem tại sao Apple lại hành động như vậy và liệu Android có nên học hỏi Apple hay không.
32-bit và 64-bit
Chúng ta cùng tìm hiểu một chút về kiến trúc 32-bit và 64-bit. Về cơ bản con số này xác định kích thước của các thanh ghi dữ liệu (register) gắn với bộ vi xử lý. Một CPU 64-bit có số lượng thanh ghi lớn gấp đôi CPU 32-bit, cho phép nó xử lý dữ liệu với độ chính xác cao hơn, cũng như xử lý được nhiều loại dữ liệu khác nhau với tốc độ nhanh hơn.
Để yêu cầu CPU làm việc với các thanh ghi chúng ta có danh sách lệnh. Để chuyển đổi từ kiến trúc ARMv7-A (32-bit) sang kiến trúc ARMv8-A (hỗ trợ cả 32-bit và 64-bit), hãng ARM đã cung cấp một danh sách các lệnh mới gọi là tập lệnh AArch64.
Để đảm bảo việc tương thích với kiến trúc cũ, ARMv8 đã được thiết kế để hỗ trợ tập lệnh AArch32 và Thumb-32. Điều này cũng đồng nghĩa với phần không gian silicon và các thành phần hỗ trợ tính toán song song (pipeline) của CPU vẫn phải được dành riêng để đảm bảo cho các tập lệnh cũ vẫn có thể thực hiện được trên nền tảng phần cứng mới.
Điều quan trọng là, trong một ứng dụng di động, không thể sử dụng một mã lệnh cho cả hai trạng thái ARMv7 và ARMv8. Không có mối liên kết nào giữa tập lệnh AArch64 với AArch32 hoặc Thumb-32. Vì thế, mã lệnh được viết trong AArch64 dành cho vi xử lý ARMv8 không thể thực thi trên các dòng vi xử lý ARMv7 Cortex-A.
Tuy nhiên, mã lệnh viết cho các dòng vi xử lý ARMv7-A có thể chạy trên vi xử lý ARMv8 ở trạng thái thực thi AArch32. Các máy iPhone đời cũ có vi xử lý dựa trên kiến trúc ARMv7 cũ sẽ không hoạt động được trên iOS 11.
Apple sẽ làm gì với kiến trúc 64-bit
Việc Apple “khai tử” 32-bit cho thấy hãng này muốn chuyển hoàn toàn sang trạng thái thực thi AArch64. Điều này sẽ đảm bảo cho tất cả các phiên bản iOS tương lai cũng như các ứng dụng sẽ chỉ hoạt động với AArch64.
AArch64 sẽ bao gồm các con trỏ địa chỉ (address pointer) lớn hơn, tiếp cận được với nhiều khối nhớ (memory pool) hơn, ngôn ngữ biên dịch (assembler) đơn giản hơn, tự động truyền tín hiệu, số chấm động (float point) chính xác gấp đôi, phương pháp xử lý thông tin SIMD tiên tiến. Tuy nhiên, lập trình viên sẽ không thể sử dụng các tập lệnh AArch32 và Thumb-32 trong tiến trình này nữa, vì vậy họ cần phải cập nhật ứng dụng.
Bên cạnh việc buộc các nhà lập trình phải chạy theo kiến trúc mới, có một vài khía cạnh thú vị trong thiết kế CPU mới của Apple.
Trong khi chúng ta chưa biết chính xác Apple sẽ làm gì với kiến trúc mới, có thể dự đoán rằng Táo khuyết đang muốn giải phóng không gian silicon của con chip bằng cách không hỗ trợ kiến trúc cũ. Điều này có thể làm giảm chi phí sản xuất silicon, hoặc có thể tạo ra những không gian để bổ sung thêm các thành phần CPU, GPU, hoặc để dành cho một số tính năng khác.
Có thể Apple sẽ tối ưu hóa hơn nữa các thiết kế CPU để hỗ trợ 64-bit bằng cách bỏ đi một phần hoặc toàn bộ phần cứng cũ hỗ trợ 32-bit. Việc làm này không vi phạm thỏa thuận mà Apple đã ký với ARM.
Thông thường, hãng ARM thiết kế kiến trúc CPU hỗ trợ cả hai tập lệnh, vì vậy khi sửa đổi kiến trúc của ARM để tạo ra một con chip mới, Apple vẫn sẽ phải có sự hỗ trợ tối thiểu cho tập lệnh AArch32 và Thumb-32 để có thể vượt qua được các bài test phù hợp của ARM. Tuy nhiên dòng vi xử lý Cortex-A32 của ARM lại là phiên bản 32-bit duy nhất của kiến trúc ARMv8, vì thế việc sử dụng các tập lệnh ở đây sẽ phải linh hoạt.
Android có nên học hỏi theo?
Do Apple kiểm soát cả phần cứng, phần mềm và kho ứng dụng nên việc chuyển đổi hoàn toàn sang 64-bit không mấy khó khăn. Đối với Google và các công ty chế tạo vi xử lý như Qualcomm và MediaTek, việc chuyển đổi không phải là bất khả thi.
Tất nhiên hệ sinh thái của Google lớn hơn Apple nhiều lần nên số lượng các thiết bị phần cứng khi chuyển đổi sang 64-bit sẽ phức tạp hơn, có thể gây ra một vài trục trặc hoặc gián đoạn. Tuy nhiên, trên lý thuyết, Google có thể thực hiện giống với Apple là bắt buộc tất cả các ứng dụng trên kho Google Play chuyển sang 64-bit.
Đó có thể là một hướng đi đúng nếu chúng ta biết rằng ngày nay một số máy tính bảng và điện thoại thông minh Android phân khúc giá rẻ (entry level) đã được trang bị chip 64-bit. Tuy nhiên, vẫn còn rất nhiều thiết bị trên thị trường sử dụng các bộ vi xử lý có sức mạnh trung bình, không tương thích 64-bit và phụ thuộc vào sự tối ưu hóa có sẵn trong tập lệnh Thumb-32.
Một số hệ thống giải trí Android trang bị trên xe hơi được xây dựng dựa trên các bộ vi xử lý ARMv7 lạc hậu. Thậm chí một số dòng đồng hồ thông minh đầu bảng như Huawei Watch, Smartwatch 3 của Sony hay Urbane thế hệ 2 của LG cũng dùng chip 32-bit Cortex-A7. Google gần đây cũng công bố nền tảng Android Things trong đó một số thiết bị cũng được phát triển dựa trên các con chip không hoạt động với ứng dụng 64-bit.
Không thể nói rằng Google đã không thúc đẩy điện thoại thông minh hướng đến kiến trúc 64-bit. Những dòng điện thoại Android không hỗ trợ chuẩn mã hóa mới của Google sẽ không thể cài đặt hệ điều hành Android 7 (Nougat).
Có lẽ vừa hỗ trợ toàn diện cho những công nghệ cũ, đồng thời khuyến khích các lập trình viên cải tiến và chuyển đổi ứng dụng sang kiến trúc mới sẽ là giải pháp tốt nhất vào lúc này để không làm gián đoạn các thiết bị và ứng dụng đang có trên thị trường. Trong tương lai gần, Android sẽ vẫn gắn bó với kiến trúc 32-bit.
Đăng Khoa