Các loại vi xử lý: CPU, MCU, SoC, GPU, NPU, FPGA khác nhau thế nào, kiến trúc và cách chọn
Tổng quan các loại vi xử lý: khác gì vi điều khiển, phân loại theo công dụng, kiến trúc tập lệnh x86, ARM, RISC-V, độ rộng bit, bộ nhớ và cách chọn cho dự án.
Khi đọc về điện tử, bạn sẽ gặp rất nhiều tên gọi: CPU, MCU, SoC, GPU, NPU, FPGA, rồi ARM, RISC-V, x86. Bài này giải thích các loại vi xử lý theo hai cách phân loại: theo công dụng và theo kiến trúc tập lệnh, kèm khác biệt giữa vi xử lý và vi điều khiển, cùng gợi ý chọn loại phù hợp cho dự án. Nếu đã biết các khái niệm và chỉ muốn chọn bo mạch, xem thêm bài chọn Arduino, ESP32, STM32 hay Raspberry Pi.
1. Vi xử lý là gì
Vi xử lý là con chip đọc lệnh từ bộ nhớ rồi thực hiện từng lệnh một. Bên trong có khối tính toán (ALU), các thanh ghi để giữ số đang dùng và khối điều khiển điều phối các bước. Dù là chip 8 bit trong đồ chơi hay chip trong máy chủ, vòng làm việc đều như nhau.

2. Vi xử lý khác gì vi điều khiển

Vi xử lý (MPU) chỉ lo tính toán, cần thêm RAM, bộ nhớ lưu trữ và các chip ngoại vi. Đổi lại nó rất mạnh và chạy được hệ điều hành như Windows, Linux. Vi điều khiển (MCU) gói sẵn CPU, RAM, flash, chân vào ra, ADC và các chuẩn giao tiếp trong một chip, nên rẻ, ít tốn điện và phù hợp để điều khiển thiết bị. Vì không phải chờ hệ điều hành, MCU có thể phản ứng với tín hiệu trong vài micro giây.
3. Các loại theo công dụng

- CPU có ít nhân nhưng mỗi nhân rất linh hoạt, hợp với việc tuần tự và nhiều nhánh rẽ.
- SoC (System on Chip) gộp CPU, GPU, bộ nhớ đệm, kết nối vào một chip. Điện thoại và Raspberry Pi đều dùng SoC. ESP32 cũng thường được gọi là SoC vì có thêm Wi-Fi và Bluetooth.
- DSP được thiết kế để làm thật nhanh phép nhân cộng lặp lại trong bộ lọc số, FFT.
- GPU có hàng nghìn lõi nhỏ, tính song song cùng một phép trên nhiều số. Vì vậy GPU được dùng để huấn luyện mô hình AI.
- NPU chuyên chạy mạng nơ-ron với ít điện năng, có trong nhiều chip điện thoại và laptop mới.
- FPGA không chạy chương trình theo từng lệnh. Bạn mô tả mạch logic bằng Verilog hoặc VHDL, chip tự nối lại thành mạch đó, nhờ vậy nhiều việc chạy song song thật sự.
- ASIC là chip làm riêng cho một việc. Hiệu quả cao nhất nhưng chi phí thiết kế rất lớn và không sửa được sau khi sản xuất.
4. Các loại kiến trúc tập lệnh
Tập lệnh là bộ lệnh mà chip hiểu được, giống như ngôn ngữ của nó. Hai trường phái lớn là CISC, có nhiều lệnh phức tạp, và RISC, có ít lệnh đơn giản. Ngày nay ranh giới này đã mờ: chip x86 hiện đại bên trong cũng tách lệnh phức tạp thành các bước nhỏ.

Hai cái tên đáng chú ý là ARM và RISC-V. ARM chia dòng Cortex thành ba nhóm: Cortex-A cho thiết bị chạy hệ điều hành, Cortex-R cho hệ thống thời gian thực, Cortex-M cho vi điều khiển. RISC-V là tập lệnh mở, ai cũng có thể làm chip mà không trả phí bản quyền, nên đang xuất hiện ngày càng nhiều trong vi điều khiển giá rẻ. Khác biệt giữa các chip ESP32 xem ở bài ESP32, S3, C3, C6 khác nhau thế nào.
5. Độ rộng bit nói lên điều gì
Chip 8 bit xử lý mỗi lần 8 bit, chip 32 bit xử lý mỗi lần 32 bit. Điều này thấy rõ khi dịch cùng một đoạn C sang mã máy:

AVR phải cộng từng byte rồi mang số nhớ sang byte sau, còn phép nhân phải gọi một hàm phần mềm. Với chip 32 bit, cả hai chỉ cần một lệnh. Vì vậy trên Arduino Nano nên dùng kiểu dữ liệu nhỏ nhất đủ dùng, chi tiết ở bài C cho vi điều khiển. Máy tính 64 bit thì lợi ở chỗ quản lý được nhiều RAM hơn.
6. Hai kiểu kiến trúc bộ nhớ
Kiến trúc Von Neumann dùng chung một đường cho lệnh và dữ liệu, đơn giản nhưng lệnh và dữ liệu phải chờ nhau. Kiến trúc Harvard tách riêng hai đường nên đọc lệnh và dữ liệu được cùng lúc. AVR là ví dụ rõ: chương trình nằm trong flash, biến nằm trong RAM, hai không gian địa chỉ riêng. Chip hiện đại thường lai cả hai: bộ nhớ đệm lệnh và dữ liệu tách riêng, phía sau dùng chung bộ nhớ chính.
7. Đọc thông số chip

Xung nhịp chỉ là một phần của hiệu năng. Số lệnh chạy được mỗi xung, số nhân, bộ nhớ đệm đều ảnh hưởng, nên chip 2,4 GHz và chip 240 MHz không đơn thuần chênh 10 lần. Với vi điều khiển, RAM, số chân, số timer và ngoại vi thường quan trọng hơn xung nhịp.
8. Chọn loại nào

Với người mới, Arduino Nano hoặc ESP32 DevKit là điểm khởi đầu hợp lý. Khi cần điều khiển chính xác hơn, có thể chuyển sang STM32. Muốn thử AI trên vi điều khiển, xem bài Edge Impulse.
9. Câu hỏi thường gặp
Arduino có phải vi xử lý không? Không. Arduino là tên một nền tảng gồm bo mạch và phần mềm; bo Arduino Nano dùng vi điều khiển ATmega328P.
ESP32 là vi xử lý hay vi điều khiển? Nó được dùng như vi điều khiển, và vì có thêm Wi-Fi, Bluetooth nên hãng gọi là SoC. Khác với nhiều vi điều khiển khác, chương trình của ESP32 thường nằm trong một chip flash riêng đặt trong module.
Raspberry Pi có phải vi điều khiển không? Các bản Pi 4, Pi 5 là máy tính nhỏ dùng SoC và chạy Linux. Riêng Raspberry Pi Pico lại là bo vi điều khiển.
Nhiều nhân có luôn nhanh hơn không? Không. Chương trình phải được viết để chạy song song mới tận dụng được các nhân.
Xem thêm