Căn bản giữa X86 và ARM
Bộ xử lý x86 quen thuộc với nhiều người trong lĩnh vực Công nghệ thông tin vì đây là loại bộ xử lý được sử dụng trong hầu hết phần cứng máy tính và máy chủ. Về mặt kiến trúc, các thành phần phần cứng trong hệ thống x86 – như card âm thanh và đồ họa, bộ nhớ, bộ nhớ lưu trữ và CPU – đều hoạt động độc lập với nhau. Hầu hết các thành phần đều có các chip điều khiển riêng gọi là bộ điều khiển. Các thành phần có thể được thay đổi hoặc mở rộng mà không ảnh hưởng đến kết nối hay nền tảng phần cứng tổng thể.
Bộ xử lý ARM không có CPU riêng biệt. Thay vào đó, đơn vị xử lý nằm trên cùng một lớp nền vật lý với các bộ điều khiển phần cứng khác; đây là một mạch tích hợp. Ngoài ra, khác với CPU Intel hay AMD, không có nhà sản xuất bộ xử lý ARM. Thay vào đó, Arm Holdings 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. Khác với máy tính truyền thống dựa trên x86, các chip ARM không thể thay thế được và có tính ứng dụng cụ thể cao. Những bộ xử lý này được sản xuất cùng nhau trong một mạch tích hợp trên một chip gọi là hệ thống trên một chip – System on a Chip (SoC).
Tại sao lại có sự khác biệt?
Một cuộc tranh luận từ xưa giữa các lập trình viên sớm là những gì dẫn đến sự khác biệt giữa hai triết lý chính trong khoa học máy tính: đơn giản hóa công việc của lập trình viên hoặc đơn giản hóa công việc của vi xử lý.
Để làm bất cứ điều gì hữu ích với máy tính, hệ điều hành và các chương trình mà nó thực thi cần tương tác với Đơn vị Xử lý Trung tâm (CPU), cũng như phần cứng khác như bộ nhớ, bộ nhớ lưu trữ và card mạng. CPU đóng vai trò trung gian giữa hệ điều hành (và các chương trình đang chạy) và các thành phần phần cứng này. Để đơn giản hóa công việc của lập trình viên, CPU có một tập hành động và tính toán được xác định trước gọi là tập lệnh hoặc ISA (kiến trúc tập lệnh). Hệ điều hành và các chương trình nó thực thi (được viết bởi các lập trình viên) phụ thuộc vào các hướng dẫn này để thực hiện các chức năng cấp thấp như:
– Tương tác giữa CPU và phần cứng (bộ nhớ, bộ nhớ lưu trữ, mạng, v.v.)
– Các chức năng toán học (cộng, trừ, v.v.)
– Xử lý dữ liệu (dịch mã, v.v.)
Các CPU x86 gốc đã (và vẫn) có một tập lệnh rất phong phú. Một hướng dẫn duy nhất có thể hoàn thành một phép tính toán hoàn chỉnh (như nhân) hoặc di chuyển một đoạn dữ liệu trực tiếp từ một vị trí trong bộ nhớ đến vị trí khác. Điều này có thể không nghe có vẻ quan trọng, nhưng việc nhân và di chuyển dữ liệu giữa các vị trí trong bộ nhớ yêu cầu rất nhiều hướng dẫn ở mức độ thấp này. Với máy tính x86, chuỗi phức tạp này có thể được thực thi trong một chu kỳ duy nhất. Các đơn vị xử lý với loại tập lệnh như vậy được gọi là máy tính tập lệnh phức tạp (CISC).
Tuy nhiên, các hướng dẫn mạnh mẽ trong máy tính CISC có nghĩa là nó cần nhiều transistor hơn, tiêu tốn không gian và năng lượng.
Điều này đã dẫn đến một số dự án vào đầu những năm 1980, nghiên cứu về hiệu suất năng lượng và các cách đơn giản hóa tập lệnh trong kiến trúc CPU. Các nhà nghiên cứu phát hiện rằng trong thực tế, hầu hết máy tính chỉ sử dụng một tập hợp nhỏ của tập lệnh rất lớn được cung cấp trong máy tính CISC. Điều này cuối cùng đã dẫn đến thiết kế bộ xử lý máy tính tập lệnh giảm thiểu (RISC). Bộ xử lý RISC có một tập lệnh trong đó mỗi hướng dẫn chỉ đại diện cho một phép tính đơn giản sử dụng công suất thấp hơn. Điều này làm cho công việc của ngôn ngữ lắp ráp trở nên phức tạp hơn, nhưng đơn giản hóa công việc của bộ xử lý. Với bộ xử lý RISC và các máy RISC tiên tiến, các phép tính phức tạp được thực hiện bằng cách chạy nhiều hướng dẫn hoặc chuyển phức tạp đến trình biên dịch thay vì trực tiếp trên lõi CPU.
Ở đây có các sự đánh đổi. CPU x86 có xu hướng có sức mạnh tính toán rất nhanh và cho phép sự rõ ràng hoặc đơn giản hóa trong lập trình và số lượng hướng dẫn, nhưng điều này đi đôi với một chip lớn hơn, đắt hơn với rất nhiều transistor. Bộ xử lý ARM có thể rất nhanh đối với một số loại hoạt động, nhưng các chu kỳ lặp lại cho từng hướng dẫn cụ thể có thể làm chậm nó lại vì các hoạt động phức tạp hơn và sự cố gắng xác định và thực thi các hoạt động được đẩy sang phần mềm (và người lập trình) thay vì tập lệnh.
Ngoài ra, do sự khác biệt này, việc tính toán MIPS (triệu hướng dẫn mỗi giây) – một đo lường xấp xỉ về sức mạnh tương đối của máy tính – có thể khó tính toán vì các loại bộ xử lý khác nhau yêu cầu các tập lệnh khác nhau để thực hiện cùng một hoạt động.
X86 và ARM, cái nào hiệu quả hơn?
Kiến trúc RISC được truyền cảm hứng bởi nhu cầu tạo ra các chip nhỏ hơn với hiệu suất tốt hơn cho các máy tính nhỏ hơn – hoặc máy tính vi mô – cuối cùng trở thành máy tính cá nhân (PC). Điều này đã đưa ra một câu hỏi thiết kế cơ bản thứ hai: Tập trung vào hiệu suất của chip (tốc độ xử lý hoặc tốc độ đồng hồ) hoặc tiêu thụ năng lượng (hiệu suất điện).
Vì bộ xử lý ARM được tích hợp như một SoC, sự tập trung đã lâu đối với quản lý tài nguyên tổng thể, bao gồm tiêu thụ năng lượng thấp và sản xuất nhiệt thấp. Ví dụ, các kiến trúc ARM (như ARMv8) thường không có hệ thống làm mát đơn giản (không có quạt trên điện thoại di động). Tuy nhiên, các CPU x86 thường ưa chuộng tốc độ xử lý cao hơn tiêu thụ năng lượng thấp.
Mặc dù cả hai kiến trúc CPU vẫn có thể có hiệu suất cao (cả máy tính siêu vi xử lý ARM và x86 cạnh tranh để trở thành nhanh nhất trên thế giới), thiết kế ARM thường tập trung vào các yếu tố hình dạng nhỏ hơn, tuổi thọ pin, kích thước, loại bỏ yêu cầu làm mát và – có thể quan trọng nhất – chi phí. Đây là lý do tại sao bộ xử lý ARM chiếm ưu thế trong các thiết bị điện tử nhỏ và thiết bị di động như điện thoại thông minh, máy tính bảng, máy tính mini và thậm chí cả hệ thống máy tính Pi như Orange Pi hoặc Banana Pi. Kiến trúc x86 phổ biến hơn trong các máy chủ, máy tính cá nhân và thậm chí máy tính xách tay nơi có sự ưu tiên về tốc độ và tính linh hoạt trong thời gian thực và ít hạn chế về làm mát và kích thước.
Nguồn: https://www.redhat.com/en/topics/linux/ARM-vs-x86
Biên dịch bởi ChatGPT