Apa sebenarnya perbedaan antara seri Cortex-M dan seri Cortex-R?

25

Ini menarik! Saya mencari artikel yang jelas, tetapi saya tidak bisa menemukan artikel yang jelas untuk ini. Saya juga menemukan tautan ini: ARM Cortex-R dan tautan ini: Cortex-R Series tetapi tidak terlalu jelas. di halaman wiki aja:

Inti dimaksudkan untuk penggunaan waktu nyata yang kuat

dan di halaman Cortex-R menulis:

ARM Cortex®-R prosesor real-time menawarkan solusi komputasi kinerja tinggi untuk sistem tertanam di mana keandalan, ketersediaan tinggi, toleransi kesalahan, rawatan dan respons waktu nyata diperlukan.

dan ini:

  1. Kinerja tinggi: Pemrosesan cepat dikombinasikan dengan frekuensi clock tinggi
  2. Real-time: Pemrosesan memenuhi kendala real-time yang sulit di semua kesempatan
  3. Aman: Dapat diandalkan, sistem yang andal dengan resistensi kesalahan tinggi
  4. Hemat biaya: Fitur untuk kinerja, daya, dan area yang optimal

Untuk nomor satu: Misalnya untuk Cortex-M, baru-baru ini NXP membuat seri NXP_LPC4XXX yang memiliki clock rate 200Mhz dan untuk Cortex-R, Anda dapat melihat ini: TMS570LS ARM Cortex ™ -R4 Microcontrollers , itu lucu karena memiliki 180Mhz tingkat jam.

Untuk nomor dua: Sudah jelas.

Untuk nomor tiga: Tidak jelas! apa maksud kalimat ini? berarti bukankah Cortex-M aman / Dapat Diandalkan?

Untuk nomor lima: Ya, saya pikir itu hanya klaim!

Siapa yang punya pengalaman untuk bekerja dengan seri ini (Cortex-R)? Apa pendapat Anda tentang itu? Apa perbedaan yang dalam dan persis antara seri Cortex-M dan seri Cortex-R?

Roh
sumber
Poin-poin ini, seperti poin-poin di atas lembar data apa pun, harus selalu dianggap lebih dari sekadar materi pemasaran.
Scott Seidman
3
re: point 1: sangat mungkin bahwa Cortex-R mengambil siklus clock lebih sedikit untuk (beberapa) operasi, sehingga kinerja mungkin tidak hanya ditentukan oleh laju clock. Anda perlu mempelajari data terperinci - atau membandingkan kedua sistem ...
Brian Drummond
@BrianDrummond saya tidak setuju
Roh
5
@Roh Cortex-R dapat menggunakan set instruksi ARM "klasik" yang mencakup beberapa instruksi yang relatif kompleks (misalnya, shift dan op) dan predikat instruksi individual; Cortex-M hanya menyediakan IS berbasis Thumb2 yang menggunakan instruksi If-Then untuk predikat instruksi. Selain itu, bahkan ketika terbatas pada kinerja mikroarsitektur yang relatif sederhana tidak sebanding dengan clock rate.
Paul A. Clayton

Jawaban:

17

Lucu, saya menggunakan keduanya di tempat kerja :)

Cortex-M3 (kami menggunakan STM32s) adalah MCU serba guna yang cepat dan besar (penyimpanan flash) cukup untuk sebagian besar aplikasi embedded yang kompleks.

Namun, R4 adalah binatang yang sama sekali berbeda - setidaknya versi Texas Instruments yang saya gunakan: RM42, mirip dengan TMS570. RM42 adalah Cortex-R4 dengan dua core berjalan dalam "kunci-langkah" untuk redundansi, yang berarti bahwa satu inti adalah 2 instruksi di depan yang lain dan digunakan untuk beberapa pengecekan dan koreksi kesalahan. Juga, salah satu inti (secara fisik) dicerminkan / dibalik dan diputar 90 derajat untuk meningkatkan ketahanan radiasi / kebisingan :)

RM42 berjalan pada kecepatan clock yang lebih tinggi daripada STM32 (100MHz vs 72MHz) dan memiliki set instruksi yang sedikit berbeda dan melakukan beberapa instruksi lebih cepat dari M3 (mis. Instruksi pembagian dijalankan dalam satu siklus pada R4, tidak yakin mereka lakukan pada M3).

Timer HW sangat tepat dibandingkan dengan Cortex-M3. Biasanya kita membutuhkan offset statis untuk mengoreksi drift pada M3 - tidak demikian dengan R4 :)

Di mana saya menyebut Cortex-M3 sebagai MCU tujuan umum, saya akan menyebut Cortex-R4 MCU real-time / safety yang kompleks. Jika saya tidak salah, RM42 sesuai dengan SIL3 ...

IMO R4 adalah langkah besar dalam kompleksitas bahkan jika Anda tidak berencana untuk benar-benar menggunakan fitur real-time / keselamatan.

Sebuah contoh yang sangat bagus dari perbedaan kompleksitas: Perangkat SPI memiliki 9 kontrol dan register status pada STM32 sedangkan RM42 memiliki 42. Ini seperti ini dengan semua perangkat :)

EDIT:

Untuk apa nilainya, dalam kasus penggunaan saya Cortex-R4 @ 100MHz biasanya 50-100% lebih cepat daripada Cortex-M3 @ 72MHz saat melakukan tugas yang sama persis. Mungkin karena R4 memiliki cache data dan instruksi?

Perbandingan lain, beberapa 1000 baris kode C dan ASM dieksekusi pada reset sebelum mencapai panggilan main()dengan subset dari fitur keamanan yang saya gunakan saat ini: D dan bukan inisialisasi periferal atau apa pun, hanya startup dan swa uji (CPU, RAM, Flash ECC dll.).

Halaman ini memiliki lebih banyak detail

Morten Jensen
sumber
Misalnya dia R4 akan mengendalikan sistem pengereman ABS atau mesin industri, sedangkan M3 akan mengontrol sesuatu yang tidak kritis terhadap keselamatan atau misi
Morten Jensen
Jawaban yang bagus, tetapi hanya satu hal yang perlu dikomentari. Semua perangkat R4 Texas tidak memiliki cache, penggunaan RAM yang erat, yang pada dasarnya adalah RAM yang, karena cepat, sangat dekat dengan core. Saya pikir mereka melakukan itu karena fakta bahwa cache tidak baik untuk sistem jenis ini (mereka membutuhkan sistem yang sangat deterministik untuk memiliki fitur real-time yang Anda jelaskan .. atau sesuatu seperti itu)
morcillo
@morcillo terima kasih atas komentar Anda. Saya dituntun untuk percaya bahwa semua R4 memiliki cache data + instruksi oleh diagram ini dari ARM: arm.com/assets/images/Cortex-R4-chip-diagram-LG.png - Anda tahu apa yang harus dilakukan? Saya berasumsi D cachedan I cachemerupakan singkatan untuk cache data dan instruksi.
Morten Jensen
Sejujurnya aku tidak tahu. Satu-satunya hal yang saya tahu adalah bahwa perangkat korteks R4 DIBUAT OLEH INSTRUMEN TEXAS tidak memiliki cache karena alasan yang mirip dengan yang saya katakan. Saya membacanya sejak lama di suatu tempat. Mungkin mereka mengubah itu atau mungkin saya mencampur 2 monster yang berbeda, tetapi sejauh yang saya ingat perangkat R4 tidak memiliki cache (HALcogen tidak menghasilkan inisialisasi cache). Saya mungkin benar-benar salah ... jika saya harap beri tahu saya .. selalu baik untuk mempelajari sesuatu yang baru :)
morcillo
3

Keluarga ARM Cortex-R (v7-R)

  • Kinerja luar biasa untuk aplikasi waktu nyata.
  • Prosesor telah dikembangkan untuk aplikasi real-time tertanam yang mendalam di mana kebutuhan daya rendah dan perilaku interupsi yang baik diseimbangkan dengan kinerja luar biasa dan kompatibilitas yang kuat dengan platform yang ada.
  • ARM Cortex®-R prosesor real-time menawarkan solusi komputasi kinerja tinggi untuk sistem tertanam di mana keandalan, ketersediaan tinggi, toleransi kesalahan, rawatan dan respons waktu nyata diperlukan.

Keluarga ARM Cortex-M (v7-M)

  • Solusi sensitif biaya untuk aplikasi mikrokontroler deterministik.
  • Telah dikembangkan terutama untuk domain mikrokontroler di mana kebutuhan untuk manajemen interupsi cepat, sangat deterministik, digabungkan dengan keinginan untuk menghitung gerbang sangat rendah dan konsumsi daya serendah mungkin.
  • Rangkaian prosesor ARM Cortex ™ -M adalah rangkaian prosesor hemat energi, mudah digunakan yang dirancang ke atas yang dirancang untuk membantu pengembang memenuhi kebutuhan aplikasi tertanam masa depan. Tuntutan tersebut termasuk memberikan lebih banyak fitur atau biaya lebih rendah, peningkatan konektivitas, penggunaan kembali kode yang lebih baik dan peningkatan efisiensi energi.
Giovani Mendes
sumber
Perbedaan lain tampaknya adalah bahwa Cortex-M hanya mendukung set instruksi berbasis Thumb2 sementara Cortex-R dapat menggunakan set instruksi dasar / klasik tetap-panjang (32-bit) juga. Itu -R dan -A berbagi Manual Referensi Arsitektur (untuk v7), sementara M memiliki ARManual terpisah, mungkin memiliki beberapa signifikansi.
Paul A. Clayton
2

Punya artikel bagus tentang di sini .

Seri Cortex-R dan cortex-M ditargetkan untuk kebutuhan yang berbeda dan untuk aplikasi yang berbeda. Penting untuk mengetahui parameter dan fitur yang memisahkan mereka karena mungkin ada aplikasi di mana keduanya bisa masuk. Makalah ini ditargetkan untuk skenario seperti itu dan membantu Desainer untuk pemilihan. Tujuan akhir adalah untuk membantu Desainer atau Pengembang untuk memiliki pemahaman tentang Arsitektur ARM.

Butzke
sumber
Meskipun ada baiknya memiliki tautan ke artikel yang menarik itu, Anda setidaknya harus mencoba merangkum artikel tersebut dalam jawaban Anda.
AndrejaKo