ARM Cortex-M

ARM Cortex-M on 32-bitiste RISC ARM-i protsessorituumade grupp, mille litsentsi haldab ARM Holdings. ARM Cortex-M koosneb Cortex-M0, M0+, M1, M3, M4, M7, M23, M33 ja M35A tuumadest, mida kasutatakse mikrokontrollerites.
Ülevaade.
ARM-i litsents.
Arm Holdings ei tooda ega müü enda väljatöötatud protsessoreid, vaid müüb protsessorite arhitektuure. Kõikidele litsentseeritutele tagab ARM integreeritava riistvarakirjelduse ARM-i tuumast, kogu tarkvaraarenduse tööriistakomplekti ja õiguse müüa ARM-i tuumadel põhinevaid mikrokiipe.
Mikrokiipide kohandatavus.
Mikrokiipide tootjad saavad sünteesitava ARM-i protsessori riistvarakirjelduse (kirjutatud Verilogis). Sel kujul on neil võimalik rakendada arhitektuurilisi optimeeringuid ja laiendusi, tänu millele saavad tootjad pakkuda kohandatud omadustega mikrokiipe, näiteks suure taktsagedusega, väga väikese voolutarbega, laiendatud käsustikuga, optimeeritud füüsilise suuruse, silumistoega jne. Tootja andmeleht ja dokumentatsioon annavad infot, millised komponendid on mingis ARM-i CPU-s seadmestatud.
Tähtsaimad Cortex-M tuuma valikulised moodulid, mis on enamikul protsessoritel esindatud:
Märkus: Enamik Cortex-M3 ja M4 kiipe on varustatud mälukaitse mooduli ja bit-bandingu toega. Bit-bandingu tuge on võimalik seadmestada Cortex-M0 ja M0+ tuumadesse, kasutades Cortex-M-i süsteemidisaini vahendeid.
Märkus: Tarkvaraliselt tuleks enne kasutamist kontrollida, kas moodul on kindlas protsessoris olemas.
Käsustik.
Cortex-M0, M0+ ja M1 kasutavad ARMv6-M-i arhitektuuri, Cortex-M3 kasutab ARMv7-M-i arhitektuuri.
Cortex-M4 ja M7 tuumad rakendavad ARMv7E-M-i arhitektuuri. Arhitektuurid on binaarselt ülespoole ühilduvad, alatest ARMv6-M-ist kuni ARMv7E-M-i arhitektuurini. Binaarsed käsud, mis on olemas Cortex-M0, M0+,M1 tuumadele, on modifikatsioonideta täidetavad Cortex-M3, M4, M7 tuumadel. Cortex-M3 binaarseid käske on võimalik muudatusteta täita Cortex-M4, M7 tuumadel. Cortex-M-i arhitektuuris on toetatud vaid Thumbi ja Thumb-2 käsud, toetatud ei ole eelnevad ARM-i 32-bitised käsustikud.
Kõik kuus Cortex-M-i tuuma seadmestavad ühise alamosa käskudest, mis on pärit enamik Thumbi, osa Thumb-2 käsustikust, sisaldades ka 32-bitist korrutamist. Cortex-M0, M0+ ja M1 tuumad on disainitud pidades silmas väikseimat ränikristalli ning seetõttu toetavad ka Cortex-M-i perekonnas kõige vähem käske.
Cortex-M0, M0+ ja M1 tuumade puhul on esindatud kõik Thumbi käsud, välja arvatud käsud CBZ, CBNZ, IT mis lisati ARMv7-M-i arhitektuuris. Esindatud on ka väike alamosa Thumb-2 käske (BL, DMB, DSB, ISB, MRS, MSR). Cortex-M3-s, M4-s ja M7-s on esindatud kõik Thumbi ja Thumb-2 baaskäsud. Cortex-M3 lisab 3 Thumbi käsku ja kõik Thumb-2 käsud, riistvaralise jagamise ja saturatsioonaritmeetika käsud. Cortex-M4 lisab juurde digitaalse signaalitöötluse käsud (DSP) ja valikulise ühekordse täpsusega ujukomaarvude mooduli (FPU). Cortex-M7 lisab valikulise kahekordse täpsusega ujukomaarvu mooduli.
Vananenud omadused.
ARM-i arhitektuur ARM Cortex-M seeria jaoks eemaldas mõningaid omadusi, võrreldes eelnevate tuumadega.
32-bitise ARM-i käsustiku funktsionaalsus dubleerib mitmel moel Thumbi ja Thumb-2 käsustikke, kuid mõnele 32-bitisele ARM-i käsule ei ole siiski vastet:
16-bitine Thumbi käsustik on palju arenenud, kuna see avaldati esimest korda ARM7T tuumades ARMv4T arhitektuuriga. Uusi Thumb käsustiku käske lisati järjest koos ARMv5, ARMv6, ARMv6T2 arhitektuuride avaldamisega. Cortex-M tuumadest on eemaldatud järgmised käsud:
Cortex-M0.
Cortex-M0 tuumad on optimeeritud väikese ränikristalli saavutamiseks ja mõeldud kasutamiseks odavaimates kiipides.
Cortex-M0-i peamised tunnused on:
Kiibid.
Cortex-M0 tuumal põhinevad mikrokontrollerid:
Mikrokiibid, kus Cortex-M0 on teine tuum:
Cortex-M0+.
Cortex M0+ on Cortex-M0 tuuma optimeeritud täiendus ning seega on need kaks protsessorit käsustikult teineteisega täiel määral ühilduvad ning on võimalik kasutada samu arendustööriistu. Cortex-M0+-i käsukonveier muudeti kolmeastmeliselt kaheastmeliseks, et vähendada voolutarvet. Lisaks olemasolevale silumisfunktsioonile lisati Cortex-M0+-le valikuline ränimoodul Micro Trace Buffer (MTB), mis võimaldab lihtsat instruktsioonijälgimise puhvrit. Cortex-M0+-le lisati ka M3 ja M4 omadusi, mis on võimalik rakendada arhitektuuriliselt ränimoodulina, nagu näiteks MPU ja katkestusvektorite tabeli nihe.
Cortex-M0+ tuuma peamised tunnused on:
Kiibid.
Cortex-M0+ tuumal põhinevad mikrokontrollerid:
Väikseimad ARM-i mikrokontrollerid põhinevad Cortex-M0+ tuumal. 2014. aasta seisuga on väikseim Kinetisi KL03, mille mõõdud on vaid 1,6 mm × 2 mm.
Cortex-M1.
Cortex-M1 kiibid on optimeeritud FPGA kiipide sees kasutamiseks.
Cortex-M1 peamised tunnused on:
Kiibid.
Cortex-M1 tuuma kasutavad järgmised FPGA tootjad:
Cortex-M3.
Cortex-M3 peamised tunnused on:
Kiibid.
Cortex-M3 tuumal põhinevad mikrokontrollerid:
Järgmistel tuumadel on Cortex-M3 teine tuum:
Cortex-M4.
Cortex-M4 on peaaegu võrdväärne Cortex-M3-ga. Vahe seisneb Cortex-M4-le lisatud signaalitöötlusinstruktsioonides ja valikuliselt on võimalik lisada ka ujukomamoodul (FPU). Kui tuum sisaldab ujukomamoodulit, nimetatakse seda Cortex-M4F-ks, muidu Cortex-M4-ks.
Cortex-M4 peamised tunnused on:
Kiibid.
Cortex-M4 tuumal põhinevad mikrokontrollerid:
Cortex-M4F tuumal põhinevad mikrokontrollerid:
Järgmistel tuumadel on Cortex-M4 või Cortex-M4F teine tuum:
Cortex-M7.
Cortex-M7 on suure jõudlusega tuum, millel on pea kaks korda nii palju arvutusvõimsust kui vanematel Cortex-M4 tuumadel. Cortex-M7-l on kuueastmeline superskalaarne käsukonveier haruennustusega ning valikuline ujukomamoodul, mis on suutlik ühekordse täpsusega ja valikuliselt ka kahekordse täpsusega ujukomaoperatsioonideks. Instruktsiooni- ja andmesiinid on laiendatud 64-bitise laiuseni võrreldes eelmiste tuumade 32-bitiste siinidega. Kui tuumas on esindatud FPU, nimetatakse tuuma Cortex-M7F, vastasel juhul Cortex-M7.
Cortex-M7 peamised tunnused on: 
Kiibid.
Cortex-M7 tuumal põhinevad mikrokontrollerid:
Dokumentatsioon.
Kõikide ARM-i kiipide kohta on dokumentatsiooni väga palju, eriti algajatest kasutajata jaoks. Eelmise kümnendi mikrokontrollerite dokumentatsioon mahtus vabalt ühte dokumenti, kuid koos kiipide arenguga on kasvanud ka dokumentatsiooni hulk. ARM-i mikrokontrollerite dokumentatsiooni on raske hoomata, sest see koosneb nii mikrokontrollerite disainerite dokumentatsioonist kui ka ARM-i tuumade disaineri ARM Holdingsi dokumentatsioonist.
Tüüpilise dokumentatsioonipuu näidis, kus kõige kõrgemal on kõige üldisema sisuga allikas:
Mikrokontrollerite tootjatel on tihti ka lisadokumente, nagu prototüüpimisplaatide kasutusjuhised, juhendid algajatele, tarkvarateegid, tarkvaranäited jpm.