Tổng quan về vi xử lý ARM Cortex M3, M4, M7

Arm cortex M

Vi xử lý ARM Cortex M3, M4, M7 thuộc họ lõi Cortex-M do ARM thiết kế dành riêng cho các ứng dụng vi điều khiển: chi phí tiết kiệm, tiêu thụ ít năng lượng nhưng vẫn rất mạnh mẽ.

Kiến trúc ARM là một kiến trúc dạng RISC cho các vi xử lý, được cấu hình cho các môi trường khác nhau. Arm Holdings phát triển kiến ​​trúc, thiết kế lõi xử lý và cấp phép cho các công ty khác. Các công ty này sẽ thiết kế sản phẩm của riêng họ, bao gồm các SoC (System on Chip) và các module hệ thống SoM (System on Module), bằng cách ghép lõi ARM với ngoại vi và bộ nhớ. Ví dụ như hãng STMicroelectronics với dòng STM32 mà chúng ta sử dụng trong series Học Lập Trình STM32.

Có thể hình dung ARM giống như một kiến trúc sư bán bản vẽ “phần lõi ngôi nhà”. ST, NXP, Nordic… mua bản vẽ đó rồi tự xây thêm phòng ốc (ngoại vi UART, ADC, Timer…), nên mỗi hãng có một dòng chip riêng nhưng cùng chung “lõi” Cortex-M.

via GIPHY

ARM Cortex là gì?

Vi xử lý lõi ARM Cortex được chia theo 3 cấu hình (profile) của kiến trúc ARMv7 (và tiếp tục ở ARMv8):

  • Cấu hình A (Application): cho các ứng dụng yêu cầu cao, chạy trên các hệ điều hành phức tạp như Linux, Android…
  • Cấu hình R (Real-time): cho các ứng dụng thời gian thực yêu cầu độ tin cậy cao, ví dụ bộ điều khiển ổ cứng, hệ thống phanh ô tô.
  • Cấu hình M (Microcontroller): cho các ứng dụng vi điều khiển.

Bộ vi xử lý ARM Cortex-M3 là bộ vi xử lý ARM đầu tiên dựa trên kiến trúc ARMv7-M và được thiết kế đặc biệt để đạt hiệu suất cao trong các ứng dụng nhúng cần tiết kiệm năng lượng và chi phí, chẳng hạn như vi điều khiển, hệ thống điện tử thân xe ô tô, hệ thống điều khiển công nghiệp và thiết bị mạng không dây. Thêm vào đó, việc lập trình được đơn giản hóa đáng kể (bảng vector ngắt và trình xử lý ngắt có thể viết hoàn toàn bằng C), giúp kiến trúc ARM trở thành lựa chọn tốt cho cả những ứng dụng đơn giản nhất.

Cấu trúc bộ vi xử lý ARM Cortex M3

Bộ vi xử lý ARM Cortex-M3 dựa trên kiến trúc ARMv7-M có cấu trúc phân cấp. Nó tích hợp lõi xử lý trung tâm với các khối ngoại vi hệ thống như bộ điều khiển ngắt NVIC, bộ bảo vệ bộ nhớ MPU (tùy chọn), SysTick, cùng các khối gỡ lỗi và theo vết hệ thống.

ARM Cortex-M3 dùng kiến trúc bus Harvard: lệnh và dữ liệu được đọc qua hai bus riêng (I-Code và D-Code). Vì có thể đọc cùng lúc lệnh và dữ liệu, bộ vi xử lý Cortex-M3 có thể thực hiện nhiều hoạt động song song, tăng tốc thực thi ứng dụng. Tuy vậy, với lập trình viên thì Flash, SRAM và ngoại vi vẫn nằm chung trong một không gian địa chỉ 4 GB thống nhất.

Arm-Cortex-M3
Cấu Trúc Vi Xử Lý ARM Cortex M3

Cấu trúc lõi ARM Cortex M3

Lõi ARM cortex M3

Lõi ARM Cortex-M3 có cấu trúc đường ống (pipeline) gồm 3 tầng: Instruction Fetch, Instruction Decode và Instruction Execute. Giống như một dây chuyền giặt – sấy – gấp đồ: khi mẻ thứ nhất đang được gấp thì mẻ thứ hai đang sấy và mẻ thứ ba đã vào máy giặt, nên trung bình mỗi chu kỳ đều có một lệnh hoàn thành.

Khi gặp một lệnh rẽ nhánh, tầng Decode sẽ nạp trước (suy đoán) lệnh tại địa chỉ đích rẽ nhánh. Sau đó, ở tầng Execute, điều kiện rẽ nhánh được xác định và bộ vi xử lý biết đâu là lệnh thực thi kế tiếp. Nếu không rẽ nhánh thì lệnh tiếp theo đã sẵn sàng. Còn nếu rẽ nhánh thì lệnh tại đích cũng đã được nạp sẵn, giúp giảm thời gian chờ.

Lõi Cortex-M3 thực thi tập lệnh Thumb-2 (bao gồm các lệnh Thumb 16 bit truyền thống và các lệnh 32 bit mới), có bộ ALU (Arithmetic Logic Unit) hỗ trợ nhân 32 bit trong 1 chu kỳ và chia bằng phần cứng, cùng khối điều khiển logic và các giao tiếp với những thành phần khác của bộ xử lý.

Bộ vi xử lý Cortex-M3 là bộ vi xử lý 32 bit, với đường dữ liệu, dải thanh ghi và giao tiếp bộ nhớ đều rộng 32 bit. Có 13 thanh ghi đa dụng (R0–R12), hai con trỏ ngăn xếp (MSP và PSP), một thanh ghi liên kết (LR), một bộ đếm chương trình (PC) và một số thanh ghi đặc biệt, trong đó có thanh ghi trạng thái chương trình xPSR.

Lưu ý: Cortex-M3 (STM32F1) không có bộ tính toán dấu phẩy động FPU. Mọi phép tính với float trên STM32F103 đều được trình biên dịch giả lập bằng phần mềm, chậm hơn hàng chục lần so với số nguyên. Nếu bài toán cần tính toán số thực nhiều (lọc số, PID, FFT), hãy chọn chip Cortex-M4F/M7 như STM32F4, STM32F7 và bật FPU trong cấu hình project.

STM32 với ARM Cortex M3, M4, M7, M9

Trước hết cần làm rõ: không có lõi “Cortex-M9”. Các dòng STM32 hiện nay dùng các lõi Cortex-M0/M0+, M3, M4, M7 và M33. Tên ARM7, ARM9 là các thế hệ lõi cũ hơn (ST từng dùng chúng cho dòng STR7, STR9), không phải lõi của STM32. Có thể chia các dòng STM32 theo lõi như sau:

  • Cortex-M0/M0+: STM32F0, STM32G0, STM32L0 – dòng giá rẻ, tiết kiệm năng lượng.
  • Cortex-M3: STM32F1, STM32F2, STM32L1 – ví dụ STM32F103C8T6 trên kit Blue Pill.
  • Cortex-M4 (có FPU, lệnh DSP): STM32F3, STM32F4, STM32G4, STM32L4.
  • Cortex-M7: STM32F7, STM32H7 – hiệu năng cao, tần số tới hàng trăm MHz.
  • Cortex-M33: STM32L5, STM32U5, STM32H5 – bổ sung tính năng bảo mật TrustZone.

Các dòng này có tốc độ xử lý, hiệu năng cao nhưng giá thành rẻ (low price, high performance). Những dòng giá rẻ nhất chỉ khoảng 1 USD khi mua số lượng lớn, trở thành thách thức lớn đối với các dòng vi điều khiển 8 bit và 16 bit truyền thống như AVR, PIC, 8051…

Khi ra mắt năm 2007, dòng STM32F1 được chia thành hai nhóm: nhóm Performance (STM32F103) có tần số CPU lên tới 72 MHz và nhóm Access (STM32F101) có tần số lên tới 36 MHz. Các biến thể trong hai nhóm này tương thích về cách bố trí chân (pin) và phần mềm, bộ nhớ Flash khi đó lên tới 512 KB và SRAM lên tới 64 KB (các phiên bản sau còn lớn hơn).

Khi phát triển dòng chip STM32 ARM Cortex-Mx, ST cũng đã phát triển hầu hết các công cụ và thư viện xung quanh dòng chip này. Có thể kể đến hệ sinh thái STM32Cube giúp lập trình viên dễ dàng phát triển ứng dụng từ đơn giản đến phức tạp, giảm bớt việc phải tự viết code cấu hình từ đầu.

ARM Cortex ngày nay

Ngày 13/09/2020, Nvidia công bố thỏa thuận mua lại ARM từ SoftBank với giá 40 tỷ USD (gồm 21,5 tỷ USD cổ phiếu và 12 tỷ USD tiền mặt, phần còn lại tùy hiệu quả kinh doanh). Tuy nhiên, thương vụ này đã gặp sự phản đối từ cơ quan quản lý cạnh tranh tại Mỹ, Anh, EU và bị hủy bỏ vào tháng 02/2022. Sau đó, ARM được SoftBank đưa lên sàn Nasdaq vào tháng 09/2023 và vẫn tiếp tục mô hình cấp phép lõi cho các hãng chip trên toàn thế giới.

Liệu rằng tương lai của ARM nói chung và dòng vi điều khiển ARM Cortex-Mx nói riêng sẽ như thế nào? Để lại ý kiến của bạn tại phần bình luận nhé!

4.2/5 - (17 bình chọn)

5 những suy nghĩ trên “Tổng quan về vi xử lý ARM Cortex M3, M4, M7”

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *