Jaka jest naprawdę różnica między serią Cortex-M a serią Cortex-R?

25

To interesujące! Szukałem jasnego artykułu, ale nie mogłem znaleźć jasnego artykułu na ten temat. Znalazłem również ten link: ARM Cortex-R i ten link: Cortex-R Series, ale nie są one dokładnie jasne. na stronie wiki napisał:

Rdzenie są przeznaczone do niezawodnego użytkowania w czasie rzeczywistym

a na stronie Cortex-R napisał:

Procesory czasu rzeczywistego ARM Cortex®-R oferują wysokowydajne rozwiązania obliczeniowe dla systemów wbudowanych, w których wymagana jest niezawodność, wysoka dostępność, odporność na uszkodzenia, łatwość konserwacji i reakcje w czasie rzeczywistym.

i tamte:

  1. Wysoka wydajność: Szybkie przetwarzanie w połączeniu z wysoką częstotliwością taktowania
  2. W czasie rzeczywistym: Przetwarzanie spełnia twarde ograniczenia w czasie rzeczywistym za każdym razem
  3. Bezpieczeństwo: niezawodne, niezawodne systemy o wysokiej odporności na błędy
  4. Opłacalność: funkcje zapewniające optymalną wydajność, moc i powierzchnię

Po pierwsze: na przykład dla Cortex-M, ostatnio NXP stworzył serię NXP_LPC4XXX, która ma taktowanie 200 MHz, a dla Cortex-R widać to: Mikrokontrolery TMS570LS ARM Cortex ™ -R4 , to zabawne, ponieważ ma 180 MHz Częstotliwość zegara.

Po drugie: to jasne.

Po trzecie: nie jest jasne! co znaczy to zdanie? oznacza, że ​​Cortex-M nie jest bezpieczny / niezawodny?

W przypadku numeru piątego: myślę, że to tylko roszczenie!

Kto ma doświadczenie w pracy z tą serią (Cortex-R)? Co o tym sądzisz? Jaka jest dokładnie i dokładnie różnica między serią Cortex-M a serią Cortex-R?

Roh
źródło
Te wypunktowania, podobnie jak wypunktowania na górze dowolnego arkusza danych, należy zawsze traktować jedynie jako materiał marketingowy.
Scott Seidman
3
do: punkt 1: jest całkowicie możliwe, że Cortex-R zajmuje mniej cykli zegara dla (niektórych) operacji, więc wydajność nie może być po prostu podyktowana częstotliwością taktowania. Będziesz musiał przestudiować szczegółowe dane - lub porównać oba systemy ...
Brian Drummond,
@BrianDrummond Nie zgadzam się
Roh
5
@Roh Cortex-R może korzystać z „klasycznego” zestawu instrukcji ARM, który zawiera niektóre stosunkowo złożone instrukcje (np. Shift i op) i przewiduje indywidualne instrukcje; Cortex-M zapewnia tylko IS oparte na Thumb2, które wykorzystuje instrukcje If-Then do predykowania instrukcji. Ponadto, nawet jeśli ogranicza się to do stosunkowo prostych mikroarchitektur, wydajność nie jest proporcjonalna do częstotliwości taktowania.
Paul A. Clayton,

Odpowiedzi:

17

Zabawne, używam obu w pracy :)

Cortex-M3 (używamy STM32) to MCU ogólnego przeznaczenia, który jest szybki i duży (pamięć flash) wystarczająca do większości złożonych aplikacji osadzonych.

Jednak R4 jest zupełnie inną bestią - przynajmniej używam wersji Texas Instruments: RM42, podobnej do TMS570. RM42 to Cortex-R4 z dwoma rdzeniami działającymi w „kroku blokady” w celu zapewnienia nadmiarowości, co oznacza, że ​​jeden rdzeń ma 2 instrukcje przed drugim i jest wykorzystywany do sprawdzania i korekcji błędów. Ponadto jeden z rdzeni jest (fizycznie) odbity / obrócony i obrócony o 90 stopni, aby poprawić odporność na promieniowanie / hałas :)

RM42 działa z wyższą częstotliwością zegara niż STM32 (100 MHz vs 72 MHz) i ma nieco inny zestaw instrukcji i wykonuje niektóre instrukcje szybciej niż M3 (np. Instrukcje podziału są wykonywane w jednym cyklu na R4, nie jestem pewien, czy działają na M3).

Zegary HW są BARDZO precyzyjne w porównaniu do Cortex-M3. Zwykle potrzebujemy statycznego przesunięcia, aby skorygować dryf na M3s - nie w przypadku R4 :)

Gdybym nazwał Cortex-M3 uniwersalnym MCU, nazwałbym Cortex-R4 złożonym MCU w czasie rzeczywistym / bezpieczeństwa. Jeśli się nie mylę, RM42 jest zgodny z SIL3 ...

IMO R4 jest dużym krokiem w złożoności, nawet jeśli nie planujesz korzystać z funkcji bezpieczeństwa w czasie rzeczywistym.

Naprawdę ładny przykład różnicy złożoności: urządzenie peryferyjne SPI ma 9 rejestrów kontrolnych i statusowych na STM32, a RM42 ma 42. Tak jest ze wszystkimi urządzeniami peryferyjnymi :)

EDYTOWAĆ:

Jeśli chodzi o wartość, w moich przypadkach użycia Cortex-R4 @ 100MHz jest zwykle o 50-100% szybszy niż Cortex-M3 @ 72MHz podczas wykonywania dokładnie tych samych zadań. Może dlatego, że R4 ma pamięć podręczną danych i instrukcji?

Kolejne porównanie: kilka tysięcy wierszy kodu C i ASM jest wykonywanych po zresetowaniu przed nawiązaniem połączenia main()z podzbiorem funkcji bezpieczeństwa, z których obecnie korzystam: D, a nie inicjalizacja urządzeń peryferyjnych lub cokolwiek innego, po prostu uruchomienie i autotest (procesor, pamięć RAM, Flash ECC itp.).

Ta strona ma więcej szczegółów

Morten Jensen
źródło
Np. R4 kontrolowałby układ hamulcowy ABS lub maszynę przemysłową, podczas gdy M3 kontrolowałby coś, co nie jest tak ważne z punktu
widzenia
Świetna odpowiedź, ale tylko jedna rzecz do skomentowania. Wszystkie urządzenia R4 w Teksasie nie mają pamięci podręcznej, wykorzystują ściśle sprzężoną pamięć RAM, która jest w zasadzie pamięcią RAM, która poza tym, że jest szybka, jest naprawdę blisko rdzeni. Myślę, że zrobili to ze względu na fakt, że pamięci podręczne nie są dobre dla tego typu systemów (potrzebują bardzo deterministycznego systemu, aby mieć opisaną w czasie rzeczywistym funkcję… lub coś w tym stylu)
morcillo
@morcillo dzięki za komentarz. Ten schemat z ARM doprowadził mnie do wniosku, że wszystkie R4 mają bufory danych + instrukcji: arm.com/assets/images/Cortex-R4-chip-diagram-LG.png - czy wiesz, co z tym zrobić? Zakładałem D cachei I cachebyły skrótami do pamięci podręcznej danych i instrukcji.
Morten Jensen,
Mówiąc prawdę nie wiem. Jedyne, co wiem, to to, że urządzenia Cort4 R4 MADE BY TEXAS INSTRUMENTS nie mają pamięci podręcznej z powodu podobnego do tego, który ci powiedziałem. Czytałem to dawno temu. Może zmienili to, a może mieszam 2 różne potwory, ale o ile pamiętam, urządzenia R4 nie mają pamięci podręcznej (HALcogen nie generuje inicjalizacji pamięci podręcznej). Mogę się całkowicie mylić ... jeśli tak, proszę dać mi znać ... zawsze dobrze jest nauczyć się czegoś nowego :)
Morcillo
3

Rodzina ARM Cortex-R (v7-R)

  • Wyjątkowa wydajność w zastosowaniach w czasie rzeczywistym.
  • Procesory zostały opracowane z myślą o głęboko osadzonych aplikacjach czasu rzeczywistego, w których zapotrzebowanie na małą moc i dobre zachowanie podczas przerwania jest zrównoważone z wyjątkową wydajnością i silną kompatybilnością z istniejącymi platformami.
  • Procesory czasu rzeczywistego ARM Cortex®-R oferują wysokowydajne rozwiązania obliczeniowe dla systemów wbudowanych, w których wymagana jest niezawodność, wysoka dostępność, odporność na uszkodzenia, łatwość konserwacji i reakcje w czasie rzeczywistym.

Rodzina ARM Cortex-M (v7-M)

  • Rozwiązania wrażliwe na koszty dla deterministycznych aplikacji mikrokontrolerów.
  • Zostały opracowane przede wszystkim z myślą o domenie mikrokontrolerów, w której potrzeba szybkiego, wysoce deterministycznego zarządzania przerwaniami jest połączona z pragnieniem wyjątkowo niskiej liczby bramek i możliwie najniższego zużycia energii.
  • Rodzina procesorów ARM Cortex ™ -M to kompatybilny w górę asortyment energooszczędnych, łatwych w użyciu procesorów zaprojektowanych, aby pomóc programistom w zaspokojeniu potrzeb przyszłych aplikacji wbudowanych. Wymagania te obejmują dostarczanie większej liczby funkcji przy niższym koszcie, zwiększenie łączności, lepsze ponowne wykorzystanie kodu i lepszą efektywność energetyczną.
Giovani Mendes
źródło
Innym rozróżnieniem wydaje się to, że Cortex-M obsługuje tylko zestaw instrukcji oparty na Thumb2, podczas gdy Cortex-R może również używać zestawu instrukcji podstawowego / klasycznego o stałej długości (32-bit). To, że -R i -A dzielą Podręcznik Architektoniczny (dla v7), podczas gdy M ma oddzielny ARManual, może mieć pewne znaczenie.
Paul A. Clayton,
2

Mieć dobry artykuł na temat tutaj .

Seria Cortex-R i cortex-M jest przeznaczona do różnych wymagań i do różnych zastosowań. Ważne jest, aby znać parametry i funkcje, które je oddzielają, ponieważ mogą istnieć aplikacje, w których oba mogą się zmieścić. Ten dokument jest przeznaczony do takiego scenariusza i pomaga Projektantom w wyborze. Ostatecznym celem jest pomoc Projektantom lub Deweloperom w zrozumieniu Architektury ARM.

Butzke
źródło
Chociaż dobrze jest mieć link do tego interesującego artykułu, powinieneś przynajmniej spróbować streścić ten artykuł w swojej odpowiedzi.
AndrejaKo