• Thứ Năm, 11/12/2014 21:09 (GMT+7)

    Bộ xử lí ARM & Intel: Đâu là sự khác biệt

    Bùi Lê Duy
    (PCWorldVN) Tại sao CPU của ARM lại được nhiều nhà sản xuất chọn dùng hơn CPU của Intel cho các thiết bị dị động? Và CPU đóng vai trò như thế nào trong các thiết bị này.

     Android hỗ trợ 3 kiến trúc bộ xử lý: ARM, Intel và MIPS, trong đó, phổ biến nhất trong cả ba thương hiệu kể trên là ARM. Intel biết tiếng là nhờ có tên tuổi trong thị trường máy tính bàn và máy chủ trong hàng chục năm qua, tuy nhiên về mảng di động, Intel lại ít có tác động. MIPS lại có bề dày lịch sử, đạt nhiều thành công cho cả hai giải pháp 32-bit và 64-bit trong nhiều mảng thị trường nhúng khác nhau. Tuy vậy, MIPS hiện ít phổ biến nhất.

    Tóm lại, chỉ có ARM và Intel đang là tay chơi lớn nhất. Vậy đâu là sự khác biệt giữa bộ xử lý ARM và Intel? Tại sao ARM lại được nhiều nhà sản xuất chọn dùng hơn? Và CPU đóng vai trò như thế nào trong điện thoại thông minh và máy tính bảng?
     
    Bộ xử lí trung tâm

    CPU (central processing unit - Bộ xử lí trung tâm) vẫn giữ nguyên vai trò của nó từ trước tới nay, là “bộ não” của thiết bị điện toán. Nhiệm vụ của nó là thực thi chuỗi các lệnh để điều khiển phần cứng trên thiết bị như màn hình, modem nhận sóng di động,... nhằm làm cho nguyên một khối thiết bị trở thành chiếc điện thoại thông minh, hay máy tính bảng trở nên sống động. Thiết bị di động luôn là vật phức tạp, yêu cầu CPU phải thực thi hàng triệu tập lệnh để có thể vận hành như chúng ta mong muốn. Tốc độ xử lí và mức tiêu thụ điện năng là hai yếu tố cực kỳ quan trọng. Tốc độ ảnh hưởng đến trải nghiệm người dùng trong khi mức tiêu thụ điện năng lại ảnh hưởng đến thời gian dùng pin. Thiết bị di động hoàn hảo phải có được cả về tốc độ lẫn tiêu tốn ít điện năng.

    Đó là lý do tại sao chọn lựa CPU là rất quan trọng. Một CPU ngốn điện sẽ khiến pin mau hết, nhưng một CPU hiệu quả và mạnh mẽ sẽ cho bạn cả hai thứ: tốc độ và thời gian dùng pin lâu.

    Ở mức cao nhất, sự khác biệt đầu tiên giữa CPU của ARM và Intel là ARM dùng RISC (Reduced Instruction Set Computing – tập lệnh rút gọn) và Intel dùng CISC (Complex Instruction Set Computing – tập lệnh đầy đủ). Nói ngắn gọn, RISC gọn hơn, cụ thể hơn trong khi CISC lớn hơn, phức tạp hơn. Điều này có nghĩa là mỗi tập lệnh cần chuyển dịch ra từng lệnh đơn mà CPU có thể thực thi, ví dụ thêm nội dung vào hai thanh ghi (register). CISC diễn đạt một ý tưởng duy nhất nhưng CPU phải cần đến 3 hay 4 lệnh cơ bản hơn nữa thì mới có thể thực thi được. Ví dụ, một CPU CISC nhận được lệnh là cùng lúc thêm vào 2 số lưu trong bộ nhớ chính. Để làm điều này, CPU CISC cần lấy số từ địa chỉ 1 (1 công việc), lấy số từ địa chỉ 2 (công việc thứ 2), thêm hai số vào bộ nhớ (công việc thứ 3) và cứ tiếp tục như thế.

    Mọi CPU hiện đại sử dụng một khái niệm gọi là microcode (vi mã), là một tập lệnh nội hàm của CPU dùng để mô tả các công việc chi tiết như trên mà CPU có thể thực hiện. Đó là những công việc ở cấp thấp nhất, nhỏ nhất mà CPU thực sự phải làm. Trên bộ xử lý RISC, các công việc trong tập lệnh phức tạp và các công việc trong tập lệnh microcode rất gần nhau. Còn trên CISC, các lệnh phức tạp cần phải chia nhỏ thành các lệnh microcode nhỏ hơn. Điều này có nghĩa là bộ giải mã tập lệnh phải làm việc nhiều hơn trên bộ nhớ CISC, còn bộ xử lý RISC thì xử lý đơn giản hơn, cũng có nghĩa là ít tốn điện và hiệu quả cao hơn. 

    bộ xử lý

    Quy trình xử lý

    Sự khác biệt lớn tiếp theo giữa bộ xử lý ARM và Intel là ARM ngay từ ban đầu đã được thiết kế với mục đích hiệu quả về điện năng. Và ARM đã tinh thông về công nghệ hướng đến yếu tố này. Tuy vậy, Intel lại rất “sành” trong việc thiết kế ra những bộ xử lý mạnh mẽ dành cho máy tính bàn và máy chủ. Đến nay, Intel vẫn dẫn đầu ngành trong thị trường máy bàn và máy chủ từ 20 năm qua. Tuy vậy, khi đến với di động, Intel lại tiếp tục sử dụng cùng cấu trúc tập lệnh CISC mà họ dùng cho máy bàn và chỉnh sửa cấu trúc ấy cho hợp với thiết bị di động.

    Bộ xử lý Intel i7 trung bình sản sinh nhiệt lượng khoảng 45W. Một chip SoC của điện thoại thông minh chạy nền ARM (gồm cả GPU) có ngưỡng nhiệt lượng tối đa khoảng 3W, ít hơn 15 lần so với Intel i7. Intel hiện nay có được đội ngũ kỹ sư giỏi, hùng hậu. Bộ xử lý Atom mới nhất của họ có thiết kế nhiệt tương tự với bộ xử lý nền ARM, nhưng để làm được điều đó thì họ phải sử dụng quy trình sản xuất 22 nm mới nhất. Theo hướng này, chỉ số nanomet càng thấp thì càng hiệu quả về điện năng. Bộ xử lý ARM cũng có những đặc tính nhiệt lượng tương tự nhưng ở quy trình xử lý nanomet lớn hơn. Ví dụ, Qualcomm Snapdragon 805 sử dụng quy trình 28 nm.

    Điện toán 64-bit

    Khi nói đến điện toán 64-bit, cũng có vài khác biệt quan trọng giữa ARM và Intel. Bạn cần biết Intel thậm chí không phải là công ty phát minh ra bản 64-bit của tập lệnh x86 của họ. Trước đây còn có tên là x86-64 (hoặc đôi khi chỉ vắn tắt là x64), tập lệnh này thực chất do AMD thiết kế. Câu chuyện là Intel muốn đi lên điện toán 64-bit nhưng nếu sử dụng kiến trúc 32-bit x86 để tạo ra bản 64-bit là không hiệu quả. Vì vậy, Intel khởi động một dự án bộ xử lý 64-bit mới tên là IA64. Và kết quả là dòng bộ xử lý Itanium ra đời. Trong khi đó, AMD biết họ không thể sản xuất được bộ xử lý tương thích IA64 nên AMD đi trước một bước khi mở rộng thiết kế x86 để có thể tương thích được với bộ định địa chỉ và thanh ghi 64-bit. Kết quả là kiến trúc mang tên AMD64 ra đời, trở thành chuẩn 64-bit không chính thức dành cho bộ xử lý x86.

    Dự án IA64 chưa bao giờ đạt được thành công mỹ mãn và đến nay đã đi vào ngõ cụt. Cuối cùng, Intel cũng phải chấp nhận AMD64. Các sản phẩm di động hiện thời của Intel là bộ xử lý 64-bit sử dụng tập lệnh 64-bit do AMD thiết kế nhưng có vài khác biệt nhỏ.

    Còn với ARM, câu chuyện lại khác đi. Nhận thấy nhu cầu điện toán 64-bit cho di động, ARM công bố kiến trúc ARMv8 64-bit hồi năm 2011. Đây là kết quả của quá trình nhiều năm nghiên cứu về kiến trúc tập lệnh (ISA, instruction set architecture) ARM thế hệ tiếp theo. Kiến trúc ARMv8 sử dụng hai trạng thái thực thi, AArch32 và AArch64.

    Giống như tên của hai trạng thái này, ARMv8 chạy mã 32-bit bằng AArch32 và mã 64-bit bằng AArch64. Điểm nhấn của thiết kế ARM là bộ xử lý có thể chuyển đổi qua lại giữa hai trạng thái rất mượt trong suốt quá trình vận hành. Bộ giải mã cho các lệnh 64-bit hoàn toàn mới, không cần tương thích với bộ giải mã 32-bit. Tuy vậy, bộ xử lý này lại có vấn đề về khả năng tương thích ngược.

    AMD64 trở thành chuẩn 64-bit không chính thức dành cho bộ xử lý x86
    AMD64 trở thành chuẩn 64-bit không chính thức dành cho bộ xử lý x86

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

    Kiến trúc big.LITTLE (kiểu chơi chữ: ý nói nhỏ nhưng lớn, lớn nhưng nhỏ) của ARM là một cải tiến mà Intel không thể bắt kịp. Trong big.LITTLE, các nhân CPU không cần cùng loại. Trước nay, một bộ xử lý nhân đôi hay nhân tứ có 2 hoặc 4 nhân cùng loại. Vì vậy, bộ xử lý Atom nhân đôi có hai nhân x86-64 giống nhau, đều có tốc độ xử lý như nhau và sử dụng cùng mức năng lượng. Nhưng với big.LITTLE, ARM đưa ra khái niệm điện toán không đồng nhất (heterogeneous computing) cho thiết bị di động. Điều này có nghĩa là các nhân có thể khác nhau về tốc độ xử lý lẫn điện năng tiêu thụ. Khi thiết bị di động không phải làm nhiều việc thì nhân điện năng thấp chạy, nhưng khi tải các ứng dụng nặng như game thì nhân tốc độ cao sẽ vào cuộc.

    Nhưng đây mới là điều kỳ diệu. Khi nói về thiết kế CPU, có một loạt quyết định quan trọng về mặt thiết kế ảnh hưởng trực tiếp đến tốc độ xử lý và lượng điện năng tiêu tốn của bộ xử lý. Khi một lệnh được giải mã và chuẩn bị được đưa vào thực thi thì CPU (cả ARM lẫn Intel) sử dụng luồng pipeline, điều này nghĩa là mỗi một phần của quy trình giải mã lệnh ấy đều đang được xử lý song song. Nên giai đoạn 1 là CPU đi lấy lệnh từ bộ nhớ, sau đó giai đoạn 2 là lọc ra loại lệnh nào cần được kiểm tra và giải mã, giai đoạn 3 là lệnh đó sẽ được thực thi, và cứ tiếp tục vòng lặp như vậy. Điểm hay của luồng xử lý pipeline là trong khi lệnh đầu tiên đang ở giai đoạn 2 thì lệnh tiếp theo đã nằm ở giai đoạn 1. Khi lệnh đầu tiên đang ở giai đoạn 3 thì lệnh thứ 2 đã đến giai đoạn 2 và lệnh thứ 3 đang ở giai đoạn 1, liên tục như vậy.

    Để đẩy nhanh tiến độ thì luồng pipeline này được chỉnh sửa để lệnh có thể được thực thi theo một trật tự khác một chương trình thông thường. Có một nguyên tắc logic để quy định lệnh tiếp theo là gì dựa trên nội dung của lệnh trước đó. Cả Intel và ARM đều đưa ra nguyên tắc logic riêng nhưng đó là công nghệ phức tạp. Phức tạp ở đây có ý là tốn nhiều điện năng để xử lý. Trên bộ xử lý Intel, các nhà thiết kế chọn cách áp dụng một lệnh nào đó có cần được sắp xếp để thực thi hay không. Nhưng với điện toán bất đồng thì không là vấn đề. Nhân ARM Cortex-A53 đưa hết các lệnh vào thực thi mà không cần sắp xếp, nghĩa là ít tốn điện năng hơn; còn nhân Cortex-A57 thì sắp xếp lệnh đầu vào, nghĩa là chạy nhanh hơn nhưng tốn nhiều điện năng hơn. Trong bộ xử lý big.LITTLE, có cả hai nhân Cortex-A53 và Cortex-A57 và hai nhân này được sử dụng tuỳ vào nhu cầu. Bạn không cần đến một lệnh thực thi cực nhanh nào chỉ để âm thầm đồng bộ email nhưng bạn lại cần lệnh đó khi chơi game. Vậy nhân thích hợp cần dùng đúng thời điểm.

    Nguyên tắc sử dụng logic phức tạp trong bộ xử lý để tăng tốc độ xử lý và logic đơn giản để tiết kiệm điện không chỉ đơn thuần là áp dụng cho dòng lệnh pipeline. Nguyên tắc này cũng áp dụng cho các đơn vị tính toán dấu chấm động cho đến logic SIMD (như NEON trên ARM và SSE/MMX trên Intel) và cách mà bộ đệm cache L1 và L2 chạy. Intel đưa ra một giải pháp cho mỗi chip Atom SoC, còn ARM thông qua đối tác của họ, đưa ra được nhiều cấu hình nhân xử lý, nhiều nhân trong số này có thể đặt đồng thời trên một tấm silicon.
     
    Tính tương thích

    ARM hiện dẫn đầu thị trường về bộ xử lý di động. Các đối tác của ARM đã xuất khoảng 50 tỉ chip dựa trên thiết kế của ARM cho mọi thiết bị di động và thiết bị nhúng trên thị trường. Đối với Android, ARM là chuẩn không chính thức và hiện thực này đang tạo ra vấn đề đối với Intel và MIPS. Mặc dù Android sử dụng Java là ngôn ngữ lập trình chủ đạo nhưng nó cũng cho phép các nhà lập trình tận dụng mã nguồn (như C, C++) hiện thời để tạo ứng dụng. Nhưng nhìn chung, những ứng dụng được thiết kế riêng (native) đều được biên dịch cho bộ xử lý ARM, còn với Intel và MIPS thì không. Để giải quyết điều này, Intel và MIPS cần dùng một phần mềm chuyển dịch chuyên biệt để chuyển đổi các lệnh ARM thành mã nguồn cho bộ xử lý của họ. Điều này lại tác động đến hiệu năng. Tính đến nay, MIPS và Intel có thể khẳng định tính tương thích chip của họ với các app trên Play Store đạt khoảng 90%. Con số này đạt gần đến 100% đối với 150 app nằm trong top đầu. Một mặt, đây có thể là dấu hiệu tốt nhưng mặt khác, nó lại cho thấy sự thống trị của ARM mà các nhà thiết kế bộ xử lý khác cần phải tạo thêm một lớp tương thích nữa.
     
    Kết luận

    Tạo một CPU là ngành kinh doanh phức tạp. ARM, Intel và MIPS đều đang nỗ lực hết mình để mang ra thị trường công nghệ tốt nhất cho thiết bị di động. Tuy nhiên, rõ ràng ARM đang đi đầu. Họ tập trung tốt và điện năng tiêu tốn của bộ xử lý, thiết lập 64-bit gọn đẹp, điện toán không đồng nhất và họ gần như trở thành chuẩn trong ngành điện toán di động.

    Khi chuyển sang điện toán 64-bit, có nhiều khác biệt lớn giữa ARM và Intel

    PC World VN, 12/2014

    ID: A0412_53