Download - ARM Cortex magú mikrovezérlők
© BME-MIT 2021Budapest University of Technology and EconomicsDepartment of Measurement and Information Systems
ARM Cortex magú mikrovezérlők
3. Cortex-M0, M4, M7
Scherer Balázs
© BME-MIT 2021 2.
ARM Cortex-M (Mikrovezérlő) magok
o M0, M0+: Ultra low power
• Nagyon egyszerű
o M3: Általános mikrovezérlő
o M4: DSP utasításokkal kibővített verzió
o M7: M4 továbbfejlesztés superscalar, cache
© BME-MIT 2021 3.
32 bites trendek 2003-2016
Flash [kbyte]
lábszám
M0 M3M0,M0+ M4, M3M3, M0
10245122561286432168421
0,58 14-16 20 28-32-36 40-44-48 64 80-100 144 208 256
© BME-MIT 2021 4.
ARM Cortex-M0
© BME-MIT 2021 5.
A Cortex-M0 mag
32 bites mag, 3 elemű pipeline
Neumann architektúrao Nagyon egyszerű
ARMv6-M arhitektúrao 16 bit Thumb utasításkészlet kiegészítve a Thumb-2 technológiával.
© BME-MIT 2021 6.
ARM7, Cortex-M3, M0 összehasonlítás:memória-hozzáférés
ARM7TDMI Cortex-M3 Cortex-M0
© BME-MIT 2021 7.
Regiszterek
Mint minden ARM architektúránál
o R0 – R3: C szubrutinhívás-paraméterek
o R0 ( R1 ) visszatérési értékek
o R4 – R11 lokális regiszter változók
o R12 Intra-Procedure-Call
o R13 Stack Pointer
o R14 Link Register
o R15 Program Counter
© BME-MIT 2021 8.
Memóriatérkép (Map)
Kompatibilis az M3-mal
© BME-MIT 2021 9.
Működési módok
Kompatibilis az M3-mal
oHandler és Thread mód
© BME-MIT 2021 10.
Utasításkészlet
Thumb-2
o A régi Thumb utasításkészlet modernizált verziója, kevés utasítás: 56 db, de garantált idő alatt.
o Minden Cortex processzor támogatja, biztosítva van a felfelé kompatibilitás.
o 0,9 DMIPS/MHz
© BME-MIT 2021 11.
Cortex-M0 és M3 utasításkészlet összehasonlítása
© BME-MIT 2021 12.
Cortex-M0 mag számítási képességei
© BME-MIT 2021 13.
NVIC, Nested Vector Interrupt Controller
Hasonlóan integrálva, mint az M3 esetében
Max 32 külső vektor támogatása
Az induló stack pointer a 0x0-án
4 prioritási szint
© BME-MIT 2021 14.
NVIC, Nested Vector Interrupt Controller
Automatikus hardveres stackelés
Az induló stack pointer a 0x0-án
© BME-MIT 2021 15.
Cortex-M0, mag szintű energiatakarékosság
Nagyon alacsony lábszámú WIC blocko Lehetővé teszi a Deep sleep-ből
való felébredést.
Sleepo A CPU órajele leállítható, az
NVIC aktív marad.
Deep sleepo Csak a WIC marad aktív,
az NVIC és a mag leáll.
WIC ébreszti a rendszert PMU-n (Power Management Unit) keresztül
© BME-MIT 2021 16.
ARM7, Cortex-M3, M0 összehasonlítás:architektúra
© BME-MIT 2021 17.
ARM7, Cortex-M3, M0 összehasonlítás:pipeline
© BME-MIT 2021 18.
ARM7, Cortex-M3, M0 összehasonlítás:működési módok
© BME-MIT 2021 19.
ARM7, Cortex-M3, M0 összehasonlítás:megszakítás
© BME-MIT 2021 20.
Miért használjunk 32 bites uc-t kis energiájú alkalmazásokban?
Pointerméret = regiszterméreto Nincsenek memóriabankok: egyszerűbb programozás.
o Minden memóriarégió egyetlen regiszterrel címezhető.
Nagyszámú regiszterkészlet (15 darab + PC, mindegyik 32 bites)o Mindegyik használható cím- és adat tárolásra is.
o Sok, nagy regiszter, ki tudja használni a fordító szubrutinhívásnál, nem kell feltétlenül stack műveletet csinálni.
Nincsenek beépített limitek a címtérben.
Nagy kódsűrűségo 16 bites utasítások 32 bites adatokon
16/32 bites timer-ek
© BME-MIT 2021 21.
8 bit, 16 bit, 32 bit összehasonlítás:32 bites egész szám szorzása
© BME-MIT 2021 22.
Számítási teljesítmény és fogyasztás kapcsolata
Gyorsabban végez: többet aludhat.
© BME-MIT 2021 23.
Cotex M0+
Optimalizált verziója az M0-nak
o Pipeline 3-ról 2 eleművé redukálva
o Micro Trace Buffer hozzáadási lehetőség (egyszerű utasítás trace)
o Opcionális memory protection unit
o Opcionális vector table relocation
o Egy ciklusú I/O port kezelés
o 13,3 µW/MHz (M0) -> 11,2 µW/MHz (M0+)
• (32 µW/MHz (M3))
© BME-MIT 2021 24.
ARM Cortex-M4
© BME-MIT 2021 25.
Cortex-M4 Cortex-M4 processzor
o Thumb-2 utasításkészleto DSP és SIMD utasításoko Egyciklusú MAC (32 x 32 + 64 -> 64)o Opcionális single precision FPU o Code compatibilis az M3-mal
1,27 / 1,55 / 1,95 DMIPS/MHz Architektúra
o 3 fázisú pipeline elágazás-becslésselo 3x AHB-Lite Bus Interface
Energiatakarékos módoko Deep Sleep Mode, Wakeup ITo Power down opciók az FPU számára
NVIC (1-240 IT és prioritás) Memory Protection Unit Debug & Trace
© BME-MIT 2021 26.
Cortex-M4 utasításkészlet bővülés
© BME-MIT 2021 27.
SIMD (Single Instruction Multiple Data)
Több adaton ugyanaz az utasítás egy ciklus alatt
Tömörített adathasználati lehetőség
© BME-MIT 2021 28.
Egyciklusú MAC utasítások
© BME-MIT 2021 29.
Cortex-M4 utasításkészlet
© BME-MIT 2021 30.
Cortex-M4 FIR szűrő
DSP-n assembly kódban 1 ciklus
Cortex-M4 standard C kóddal 12 ciklus
Cirkuláris címzés használatával ugrások számának csökkentésével assembly-ben kb. 6 ciklus
SIMD utasítások használatával kb. 2-3 ciklus (16-bit-esadaton)
Köztes változók cash-elésével 1,5-2 ciklus
Hasonló hatékonyságú mint egy normál DSP.
© BME-MIT 2021 31.
Cortex-M3, M4 összehasonlítás:16 bites funkciók
© BME-MIT 2021 32.
Cortex-M3, M4 összehasonlítás:32 bites funkciók
© BME-MIT 2021 33.
Lebegőpontos egység képességei
IEEE 754 standard kompatibilis
Képességek
– Összeadás, kivonás, szorzás, osztás, MAC, gyökvonás
© BME-MIT 2021 34.
DSP Library támogatás
CMSIS DSP library
o Alap matematikai műveletek: vektorműveletek
o Gyors matematikai műveletek: sin, cos, sqrt stb.
o Interpoláció: linear, bilinear
o Complex math:
• Statisztikák: max, min, RMS stb.
• Szűrés: IIR, FIR, LMS stb.
• Transzformációk: FFT
• Mátrixműveletek
• PID szabályozás
© BME-MIT 2021 35.
ARM Cortex-M7
© BME-MIT 2021 36.
Cortex-M7 ARMv7-M architektúra Beépített lebegőpontos
egység 6 állapotú pipeline
o superscalaro branch prediction
2,14 – 3,23 DMIPS/MHz 0 – 64 kB 2 utas
utasítás-cache 0 – 64 kB 4 utas adat-cache 8 vagy 16 tartományú MPU ECC Error Correcting Code Lock-step lehetőség
© BME-MIT 2021 37.
M7 Célok
© BME-MIT 2021 38.
M7 utasításkészlet
© BME-MIT 2021 39.
M7 pipeline
6 állapotú superscalar pipelineo duplázott shifter, ALUo Egy MACo Egy floating point pipe
© BME-MIT 2021 40.
Tightly-coupled memory (TCM)
Kis késleltetésű memória, amit a cache kiszámíthatatlansága nélkül lehet használni.
16 Mbyte-nyi memóriát támogat mind az utasítás-, mind az adatoldalon (utasítás 64 bites, adat 2x32 bites).
© BME-MIT 2021 41.
Teljesítmény-összehasonlítás
© BME-MIT 2021 42.
DSP funkcionalitás Kétszeres átlagos teljesítmény a Cortex-M4-hez képest CMSIS library támogatás
© BME-MIT 2021 43.
Új Cortex M23, M33sorozatok
© BME-MIT 2021 44.
Összehasonlítás
© BME-MIT 2021 45.
Cortex-M33 ARMv8-M architektúra Beépített lebegőpontos
egység 3 állapotú pipeline
o Floating pointo SIMD utasítások
Memória protectiono Security Arbitration Unito 2 Memory protection
unit
© BME-MIT 2021 46.
Cortex-M33 vs M4
© BME-MIT 2021 47.
Trust Zone
© BME-MIT 2021 48.
Trust Zone
© BME-MIT 2021 49.
Piacon kapható mikrovezérlők
© BME-MIT 2021 50.
NXP portfolió
© BME-MIT 2021 51.
ST portfolió
© BME-MIT 2021 52.
NXP portfolió
© BME-MIT 2021 53.
Érdekesség
© BME-MIT 2021 54.
Az LPC4300 család Cortex-M4 alapú Digital Signal Controller Cortex-M0 alrendszer a perifériafunkciókra Max. 1 MB Flash
o Kétbankos Flash
Max. 200 kbyte SRAM High speed USB Pin kompatibilis az M3 sorozattal További tulajdonságok
o 10/100 Ethernet MACo LCD panel controller (max. 1024H × 768V)o 2x10-bit ADC és 10-bit DAC at 400 kspso 8 csatornás DMA vezérlőo Motor Control PWM, Quadrature Encodero 4x UARTs, 2x I2C, I2S, CAN 2.0B, 2x SSP/SPI
© BME-MIT 2021 55.
LPC4300 belső felépítése
© BME-MIT 2021 56.
Cortex-M4, Cortex-M0 együtt
Szeparálható a feldolgozás és a real-time vezérlés
Külön NVIC
Osztott memóriarendszeren keresztüli kommunikáció
© BME-MIT 2021 57.
Cortex-M0, M4 együttes használata; példa: audiofeldolgozás
Cortex-M0: perifériakezelés: I2S, USB
Cortex-M4: teljes teljesítménnyel feldolgozás
© BME-MIT 2021 58.
Motorvezérlés példa
Cortex-M4: motor control Field Oriented Control (FOC)
Cortex-M0: CAN parancsok feldolgozása
© BME-MIT 2021 59.
LPC4300 memóriaFlash
Két 512K byte-os flash memóriablokk
o Lehet összefüggő 1 Mbyte-os blokként használni.
256 bites memóriavezérlő
o 150 MHz
© BME-MIT 2021 60.
LPC4300 memóriaSRAM
Max. 256 KB SRAM
Sok blokkra osztva
o Párhuzamos DMA
o Két core működés