Điều gì thực sự khác biệt giữa dòng Cortex-M và dòng Cortex-R?


25

Thật thú vị! Tôi đã tìm kiếm một bài viết rõ ràng, nhưng tôi không thể tìm thấy một bài viết rõ ràng cho điều này. Ngoài ra tôi tìm thấy liên kết này: ARM Cortex-R và liên kết này: Dòng Cortex-R nhưng chúng không chính xác rõ ràng. trong trang wiki đã viết:

Các lõi được dành cho sử dụng thời gian thực mạnh mẽ

và trong trang của Cortex-R đã viết:

Bộ xử lý thời gian thực ARM Cortex®-R cung cấp các giải pháp tính toán hiệu năng cao cho các hệ thống nhúng, trong đó độ tin cậy, tính sẵn sàng cao, khả năng chịu lỗi, khả năng bảo trì và đáp ứng thời gian thực là bắt buộc.

và những điều này:

  1. Hiệu suất cao: Xử lý nhanh kết hợp với tần số xung nhịp cao
  2. Thời gian thực: Xử lý đáp ứng các ràng buộc thời gian thực cứng trong mọi trường hợp
  3. An toàn: Các hệ thống đáng tin cậy, đáng tin cậy với khả năng chống lỗi cao
  4. Chi phí hiệu quả: Các tính năng tối ưu cho hiệu suất, sức mạnh và diện tích

Đối với số một: Ví dụ cho Cortex-M, gần đây NXP đã tạo ra dòng NXP_LPC4XXX có tốc độ xung nhịp 200Mhz và đối với Cortex-R, bạn có thể thấy điều này: TMS570LS ARM Cortex ™ -R4 Vi điều khiển , thật buồn cười vì nó có 180Mhz Tỷ lệ khóa.

Đối với số hai: Nó rõ ràng.

Đối với số ba: Không rõ ràng! câu này có nghĩa là gì? có nghĩa là Cortex-M không an toàn / đáng tin cậy?

Đối với số năm: Chà, tôi nghĩ đó chỉ là một yêu sách!

Ai có kinh nghiệm làm việc trong loạt bài này (Cortex-R)? Ý kiến ​​của bạn về nó là gì? Sự khác biệt sâu sắc và chính xác giữa dòng Cortex-M và dòng Cortex-R là gì?


Những gạch đầu dòng này, giống như các gạch đầu dòng trên đầu trang của bất kỳ bảng dữ liệu nào, phải luôn luôn được xem xét nhiều hơn một chút so với tài liệu tiếp thị.
Scott Seidman

3
re: điểm 1: hoàn toàn có thể Cortex-R mất ít chu kỳ xung nhịp hơn cho (một số) hoạt động, do đó hiệu suất có thể không bị quy định đơn giản bởi tốc độ xung nhịp. Bạn sẽ cần nghiên cứu dữ liệu chi tiết - hoặc điểm chuẩn cả hai hệ thống ...
Brian Drumond

@BrianDrummond tôi không đồng ý
Roh

5
@Roh Cortex-R có thể sử dụng tập lệnh ARM "cổ điển" bao gồm một số hướng dẫn tương đối phức tạp (ví dụ: shift và op) và dự đoán các hướng dẫn riêng lẻ; Cortex-M chỉ cung cấp IS dựa trên Thumb2 sử dụng lệnh If-Then để chỉ dẫn các vị từ. Ngoài ra, ngay cả khi bị giới hạn ở hiệu suất vi kiến ​​trúc tương đối đơn giản, tỷ lệ này không tỷ lệ thuận với tốc độ xung nhịp.
Paul A. Clayton

Câu trả lời:


17

Thật buồn cười, tôi sử dụng cả hai trong công việc :)

Cortex-M3 (chúng tôi sử dụng STM32) là một MCU có mục đích chung, nhanh và lớn (lưu trữ flash) đủ cho hầu hết các ứng dụng nhúng phức tạp.

Tuy nhiên, R4 là một con thú hoàn toàn khác - ít nhất là phiên bản Texas Cụ tôi sử dụng: RM42, tương tự TMS570. RM42 là một Cortex-R4 có hai lõi chạy trong "bước khóa" để dự phòng, điều đó có nghĩa là một lõi đi trước 2 hướng dẫn và được sử dụng để kiểm tra và sửa lỗi. Ngoài ra, một trong số các lõi được nhân đôi / lật và xoay 90 độ để cải thiện khả năng phục hồi bức xạ / tiếng ồn :)

RM42 chạy ở tốc độ xung nhịp cao hơn STM32 (100 MHz so với 72 MHz) và có một bộ hướng dẫn hơi khác và thực hiện một số hướng dẫn nhanh hơn so với M3 (ví dụ: hướng dẫn phân chia thực hiện trong một chu kỳ trên R4, không chắc chúng thực hiện trên M3).

Bộ định thời CT rất RẤT chính xác so với Cortex-M3. Thông thường chúng ta cần một độ lệch tĩnh để điều chỉnh độ lệch trên các M3 - không như vậy với R4 :)

Trong trường hợp tôi gọi Cortex-M3 là MCU cho mục đích chung, tôi sẽ gọi Cortex-R4 là MCU an toàn / thời gian thực phức tạp. Nếu tôi không nhầm, RM42 tương thích với SIL3 ...

IMO R4 là một bước tiến lớn về sự phức tạp ngay cả khi bạn không có kế hoạch thực sự sử dụng các tính năng an toàn / thời gian thực.

Một ví dụ thực sự hay về sự khác biệt phức tạp: Thiết bị ngoại vi SPI có 9 thanh ghi điều khiển và trạng thái trên STM32 trong khi RM42 có 42. Nó giống như thế này với tất cả các thiết bị ngoại vi :)

CHỈNH SỬA:

Đối với giá trị của nó, trong các trường hợp sử dụng của tôi, Cortex-R4 @ 100MHz thường nhanh hơn 50-100% so với Cortex-M3 @ 72MHz khi thực hiện các tác vụ chính xác. Có lẽ bởi vì R4 có bộ nhớ dữ liệu và hướng dẫn?

Một so sánh khác, một vài 1000 dòng mã C và ASM được thực thi khi thiết lập lại trước khi thực hiện cuộc gọi đến main() với tập hợp các tính năng an toàn tôi hiện đang sử dụng: D và không khởi tạo ngoại vi hoặc bất cứ thứ gì, chỉ cần khởi động và tự kiểm tra (CPU, RAM, Flash ECC, v.v.).

Trang này có nhiều chi tiết hơn


Ví dụ, anh ấy sẽ điều khiển hệ thống phanh ABS hoặc máy công nghiệp, trong khi đó, M3 sẽ điều khiển một thứ không an toàn hoặc nhiệm vụ quan trọng
Morten Jensen

Câu trả lời tuyệt vời, nhưng chỉ có một điều để bình luận. Tất cả các thiết bị R4 của Texas không có bộ nhớ cache, việc sử dụng RAM được kết hợp chặt chẽ, về cơ bản là RAM, được bao quanh là rất nhanh, thực sự gần với lõi. Tôi nghĩ rằng họ đã làm điều đó do thực tế là bộ nhớ cache không tốt cho loại hệ thống này (họ cần một hệ thống rất xác định để có tính năng thời gian thực mà bạn mô tả .. hoặc đại loại như thế)
morcillo

@morcillo cảm ơn bình luận của bạn. Tôi đã được tin rằng tất cả các R4 đều có dữ liệu + bộ đệm hướng dẫn theo sơ đồ này từ ARM: arm.com/assets/images/Cortex-R4-chip-diagram-LG.png - bạn có biết phải làm gì với nó không? Tôi đã giả sử D cacheI cacheđược viết tắt cho bộ đệm dữ liệu và hướng dẫn.
Morten Jensen

Nói thật với bạn tôi không biết. Điều duy nhất tôi biết là các thiết bị R4 vỏ não MADE BY TEXAS INSTRUMENT không có bộ đệm vì một lý do tương tự như tôi đã nói với bạn. Tôi đọc nó một thời gian dài trước đây. Có thể họ đã thay đổi điều đó hoặc có thể tôi đang trộn lẫn 2 quái vật khác nhau, nhưng theo tôi nhớ thì các thiết bị R4 không có bộ đệm (HALcogen không tạo khởi tạo bộ đệm). Tôi có thể hoàn toàn sai ... nếu tôi vui lòng cho tôi biết .. luôn luôn tốt để học một cái gì đó mới :)
morcillo

3

Họ ARM Cortex-R (v7-R)

  • Hiệu suất vượt trội cho các ứng dụng thời gian thực.
  • Bộ xử lý đã được phát triển cho các ứng dụng thời gian thực được nhúng sâu, trong đó nhu cầu về công suất thấp và hành vi ngắt tốt được cân bằng với hiệu suất vượt trội và khả năng tương thích mạnh mẽ với các nền tảng hiện có.
  • Bộ xử lý thời gian thực ARM Cortex®-R cung cấp các giải pháp điện toán hiệu năng cao cho các hệ thống nhúng, trong đó độ tin cậy, tính sẵn sàng cao, khả năng chịu lỗi, khả năng bảo trì và đáp ứng thời gian thực là bắt buộc.

Họ ARM Cortex-M (v7-M)

  • Các giải pháp nhạy cảm với chi phí ứng dụng vi điều khiển fordeterministic.
  • Đã được phát triển chủ yếu cho miền vi điều khiển, nơi nhu cầu quản lý ngắt nhanh, có tính quyết định cao được kết hợp với mong muốn số lượng cổng cực thấp và mức tiêu thụ điện năng thấp nhất có thể.
  • Họ bộ xử lý ARM Cortex ™ -M là một bộ xử lý tương thích tiết kiệm năng lượng, dễ sử dụng được thiết kế để giúp các nhà phát triển đáp ứng nhu cầu của các ứng dụng nhúng ngày mai. Những nhu cầu đó bao gồm cung cấp nhiều tính năng hơn với chi phí thấp hơn, tăng kết nối, tái sử dụng mã tốt hơn và cải thiện hiệu quả năng lượng.

Một điểm khác biệt nữa là Cortex-M chỉ hỗ trợ tập lệnh dựa trên Thumb2 trong khi Cortex-R cũng có thể sử dụng tập lệnh có độ dài cố định cơ bản / cổ điển (32 bit). Điều đó -R và -A chia sẻ Hướng dẫn tham khảo kiến ​​trúc (cho v7), trong khi M có ARManual riêng, có thể có một số ý nghĩa.
Paul A. Clayton

2

Có một bài viết tốt về đây .

Dòng Cortex-R và cortex-M được nhắm mục tiêu cho các yêu cầu khác nhau và cho các ứng dụng khác nhau. Điều quan trọng là phải biết các tham số và tính năng phân tách chúng vì có thể có các ứng dụng mà cả hai đều có thể phù hợp. Bài viết này được nhắm mục tiêu cho một kịch bản như vậy và giúp Nhà thiết kế lựa chọn. Mục tiêu cuối cùng là giúp các Nhà thiết kế hoặc Nhà phát triển hiểu biết về Kiến trúc của ARM.


Mặc dù thật tốt khi có một liên kết đến bài viết thú vị đó, ít nhất bạn nên cố gắng tóm tắt bài viết trong câu trả lời của bạn.
AndrejaKo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.