Nền tảng ARM và X86, lựa chọn nào tối ưu cho các thiết bị nhúng

đăng bởi , trong chuyên mục Mini Computer vào . các từ khóa: ,

Nhắc đến nền tảng X86, mọi người đều nghĩ ngay đến Intel, gã khổng lồ trong ngành chip xử lý trung tâm, ngoài ra chúng ta không thể không kể đến AMD, một người luôn đi cùng Intel trong cuộc cạnh tranh về tốc độ và kiến trúc. Còn ARM thì sao, ARM Holding thậm chí không sản xuất ra một con chip nào, mà tập trung vào nghiên cứu và cung cấp bản quyền cấp phép thiết kế chip cho các nhà sản xuất phần cứng khác, sau đó họ tích hợp vi chip bộ xử lý ARM vào thiết kế phần cứng của mình. Chúng ta cùng tìm hiểu thêm trong bài viết sau đây.

CPU – Central Processing Unit

Bộ vi xử lý trung tâm CPU được coi là bộ não của các loại máy tính, máy tính mini. Công việc của CPU là thực thi các chuỗi lệnh điều khiển các thành phần khác như màn hình, input, chip kết nối mạng v.v. Thiết bị hiện đại bây giờ thường rất phức tạp và các CPUs (số nhiều là vì không còn CPU đơn nữa mà thường là dual, lõi tứ, lõi 8 v.v.v) phải đảm đương việc xử lý hàng nghìn lệnh trong cùng một thời điểm. Tốc độ và hiệu năng của CPUs là các tiêu chí cần quan tâm, chúng quyết định mức độ trải nghiệm của người dùng, trong khi lại ảnh hưởng rất lớn đến mức tiêu hao năng lượng. Một CPU hoàn hảo phải có được hai yếu tố: Hiệu suất cao và hao tổn điện năng ở mức thấp.

Đây chính là lý do ta cần phải lựa chọn CPUs. Ở tầng cao nhất, khác biệt đầu tiên giữa một ARM CPUs là RISC (Reduced Instruction Set Computing) và một X86 CPUs là CISC (Complex Instruction Set Computing). Để đơn giản, tập lệnh RISC nhỏ hơn, và linh hoạt trong khi CISC thì nặng và phức tạp. Mỗi lệnh RISC được dịch ra một tác vụ mà CPUs có thể thực hiện được ngay, còn lệnh CISC sau khi được truyền đạt, CPUs sẽ phải thực hiện 3 hay 4 lệnh nhỏ hơn nữa.

Các CPUs hiện đại sử dụng khái niệm microcode, một bộ chỉ lệnh bên trong CPUs, những tác vụ mà CPUs có thể xử lý. Ở CISC, một lập lệnh phải được dịch ra các microcode operations nhỏ hơn bằng nhiều bước phức tạp. Còn ở RISC, microcode operations lại rất gần với với instruction set operations, sự gần gũi này khiến cho RISC có hiệu năng cao và mức độ tiêu hao điện năng ít hơn ở CISC.

Khác biệt lớn nhất là ARM được thiết kế để tiêu hao ít điện năng. Trong khi X86 lại tập trung tạo ra các CPUs có sức mạnh xử lý cao. và đương nhiên tiêu thụ nhiều điện năng hơn. Một bộ vi xử lý core i7 thông thường tỏa ra khoảng 45W nhiệt. Trong khi vi xử lý SoC (System on Chip bao gồm cả  CPU lẫn GPU) nền tảng ARM chỉ tỏa ra tối đa 3W nhiệt, khoảng 15 lần ít hơn so với Intel i7.

Trước đây, Intel có chiến lược phát triển một số dòng chip cho nhu cầu tiêu thụ điện ít như dòng Atom. Tuy nhiên, chip Atom yêu cầu phải được xây dựng trên nền tảng công nghệ bán dẫn 22nm tối tân nhất, trong khi chip ARM chỉ yêu cầu công nghệ sản xuất bán dẫn thấp hơn, ví dụ như chip Allwinner hiện tại yêu cấu tối đa là công nghệ sản xuất 28nm có giá thành sản xuất thấp hơn.

Điện toán 64-bit

Khi đề cập đến điện toán 64-bit, lại có một số khác biệt giữa ARM và X86. Sự thực là Intel không thiết kế phiên bản 64-bit cho tập chỉ lệnh x86. Các tập lệnh này được thiết kế bởi AMD. Intel muốn hướng đến điện toán 64-bit, nhưng biết rằng nếu lấy kiến trúc 32-bit là x86 và tạo ra phiên bản 64-bit thì sẽ không hiệu quả. Vì thế họ bắt đầu dự án với bộ vi xử lý 64-bit tên là IA64. Cùng thời gian đó, AMD đã đi trước một bước và mở rộng thiết kế x86 để tích hợp thêm bộ định vị và thanh ghi 64-bit. Kiến trúc mở rộng đó, được biết đến là AMD64, sau đó rất thành công và trở thành chuẩn chung 64-bit cho vi xử lý x86.

Dự án IA64 đến thời điểm hiện tại đã gần như chấm dứt. Cuối cùng Intel đã  đành phải áp dụng kiến trúc AMD64 vào các sản phẩm của mình, sử dụng tập lệnh điều khiển thiết kể bởi AMD (với một số tùy chỉnh). Cho nên giờ nếu nói đến X86_64 là chủ yếu sẽ gọi bằng cái tên AMD64, và nó phân biệt với ARM64. Cái tên AMD64 áp dụng cho cả chip của Intel sản xuất chứ không phải chỉ là chip của AMD

Đối với ARM, câu chuyện lại hoàn toàn khác. Nhận thấy nhu cầu điện toán 64-bit đang phát triển, ARM đã chủ động công bố kiến trúc ARMv8 64-bit vào năm 2011. Đây là kết quả của vài năm làm việc trên các thế hệ ARM ISA tiếp theo. Để tạo ra các thế hệ 64-bit dựa trên các khái niệm và tập lệnh cũ, kiến trúc ARMv8 sử dụng AArch32 và Aarch64. Về hiệu năng xử lý tích hợp ARMv8-A Aarch64, một dùng để chạy mã 32-bit và một chạy mã 64-bit. Điểm tuyệt vời của thiết kế ARM này là có thể hoán đổi giữa hai chế độ một cách nhanh chóng ngay trong quá trình xử lý tác vụ. Cho phép bộ vi xử lý mới tương thích hoàn toàn với các thế hệ ứng dụng cũ.

Điện toán không đồng nhất

Đây mới là điều tuyệt vời nhất của ARM. Đó là kiến trúc không đồng nhất ARM big.LITTLE.

Kiến trúc ARM big.LITTLE là một cải tiến lớn mà Intel gần như không thể sao chép. Trong một CPU big.LITTLE, các nhân trong CPU không cần phải cùng loại. Thông thường, một vi xử lý Intel 2 nhân hay 4 nhân có 2 hay 4 nhân cùng loại. Ví dụ, một vi xử lý dual-core Atom có hai nhân x86-64 giống hệt nhau, cả hai có hiệu suất và tiêu tốn điện năng như nhau. Nhưng với big.LITTLE ARM đưa ra khái niệm điện toán không đồng nhất cho các chip SOC. Nghĩa là các nhân có thể khác biệt với nhau. Khi máy tính ở trạng thái nghỉ hoặc tác vụ đơn giản các nhân tiêu hao năng lượng thấp được sử dụng – tiêu tốn điện năng thấp, nhưng khi gặp một tác vụ nặng, các nhân hiệu suất cao sẽ được sử dụng bổ sung.

Ví dụ như ở sản phẩm Orange Pi 5, máy tính bo mạch đơn (Single Board Computer) này sử dụng chip Rockchip RK3588, một chip sử dụng công nghệ ARM 8 lõi big.LITTLE mới nhất hiện nay; trong đó có 4 lõi là chip Cortex-A76 và 4 lõi là chip Cortex-A55, 2 nhóm lõi này cùng chia sẻ với nhau 1 bộ 3MB L3 cache, trong khi đó sẽ có 128K L1 cache + 512KB L2 cache cho mỗi lõi Cortex-A76 và 64KB L1 cache + 128KB L2 cache cho mỗi lõi Cortex-A55.