Přednáška - A3B38MMP Procesory s jádrem ARM. A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 1
ARM - historie ARM - RISC procesory (původ britská firma Acorn, procesory - stolní počítače později vývoj vlastního procesoru ARM1 v r. 1985) ARM1-25 000 tranzistorů, 3 um technologie 4 MHz hod. sig. ARM2, ARM 3 Založena nová firma - Advaced RISC Machines Ltd. (majet. účast Apple, Acorn a VLSI) změna názvu architektury Acorn RISC Machine na Advaced RISC Machine ARM 6, procesor ARM610 pro PDA (Personal Digital Assistent) firmy Apple ARM7 v r. 1993, používán v PDA PSION firmy Acorn ARM7 TDMI doplnění ladicí rozhraní (D debug. interface) rozšířené možnosti násobičky (M) instrukce typu MAC (multiply and accumulate) pro číslicové zpracování signálu - Thumb instrukční sada (T) - navíc 16- bitové instrukce Thumb ARM7 TDMI do té doby nejlépe prodávaný procesor (jádro) u ARM ARM9 TDMI následovník ARM7, úpravy pipeline, ARM orientace na přenosná zařízení, mobilní telefony, rozvoj A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 2
ARM historie ARMv4 ARM7 TDMI architektura ARM v 4T ( pozor, trochu se plete) ARM7TDMI používán i ve formě microcontroller jednočipový mikropočítač Firma Philips (nyní navazující NXP) první implementovala ARM7TDMI do formy mikrořadiče LPC 2105, doplněním pamětí FLASH, SRAM, periferie, řadič přerušení vlastní varianta další firmy využívající ARM7TDMI: ATMEL, STMicroelectronics, Texas Instruments, Analog Devices,,. (Lego Mind Storm používá varinatu ARM7TDMI v provedení firmy Atmel) u ARM7TDMI v jádře - pouze dvě přerušení, firmy- vlastní implementace řadiče přerušení chybí dobrá podpora a spolupráce - řadič přerušení jádro Problém v jádře procesoru ARM7TDMI chybí komplexní řešení přerušovacího systému, řadič přerušení ARM7TDMI stále hromadně vyráběné a používané (např. WIFI router, ) A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 3
ARM, typ, ISA,- architektura ARM - RISC procesory (pojem RISC) ARM7TDMI 32- bitový procesor, data 32 bitová, (tedy registry 32 bitů) adresa 32 bitů, adresní prostor 2 32 = 4 GByte ARM instrukční kód konstantní délky 32 bitů v těchto 32 bitech uložen: kód vlastní instrukce, případně - registr, přímá data, adresa architektura typu Load, Store v instrukci jeden přenos dat mezi CPU a pamětí není operace typu read, modify, write A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 4
ARM7 TDMI, instrukce ARM a THUMB ARM7TDMI instrukční sada ARM - 32 bitů instrukční sada THUMB 16 bitů (úsporný kód, větší omezení na přímá data či adresy) procesory ARM: 16 bitové instrukce Thumb 32 bitové instrukce ARM (Přepínání v programu, jaká sada instrukcí se používá, procesor běží: v módu ARM (vykonává instrukce ARM 32 - bitové) v módu THUMB (vykonává instrukce THUMB 16 - bitové) Instrukce ARM a THUMB není možno míchat, Přechod do THUMB - skok na adresu, kde nejnižší bit adresy je A 0 = 1 (kód instrukce je 16- bitový, tak reálná adresa má A 0 =0, ale právě požadavek skoku na adresu s A 0 =1 signalizuje požadavek na skok s přepnutím do režimu THUMB používají se instrukce BX Rn, kde registr Rn obsahuje požadovanou adresu s příslušně nastaveným bitem D 0 = 0, nebo D 0 =1 odpovídajícímu adresovému bitu A 0 A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 5
Instrukční sada THUMB-2 v návaznosti na inst. ARM ARM Cortex-M3 - instrukční sada Thumb 2 Instrukce Thumb (16- bitové) jsou doplněny 32- bitovými instrukcemi sada označená jako Thumb - 2, (jedna společná sada dohromady 16- i 32- bitové instrukce, obsahuje všechny instrukce Thumb a některé ARM), procesor je stále v režimu THUMB ARM Cortex M3 používá sadu Thumb 2 bez přepínání, je tedy stále v režimu Thumb- 2 a případný pokus o přepnutí do režimu instrukcí ARM (32 bitových) vyvolá chybu, proto musí být při požadavku skoku vždy nejnižší bit adresy A 0 = 1 16 bitové instrukce Thumb omezené možnosti např. ve vzdálenosti adresy pro skok,. možnost Unified Assembler Language (UAL) společná syntaxe pro ARM a Thumb instrukce. Kód psaný s použitím UAL může být přeložen do ARM nebo Thumb instrukcí. A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 6
ARM historie, Cortex M- 3 Firma ARM úprava architektury pro potřeby embedded microcontrolérů Architektura v7m, z ní vychází jádro ARM Cortex M3 Instrukční sada ARM v7m využívá instrukce THUMB a část instrukcí ARM zakódované do jediné sady instrukcí - THUMB-2 obsahuje instrukce zakódované do 16 i do 32 bitů Heslo ISA Instruction Set Architecture architektura mající danou sadu instrukcí - obecnější pojem - poněkud širší rozsah míněných procesorů Architektura ARM v7m Cortex, (M značí microcontroller) Doplněn řadič přerušení NVIC Nested Vectored Interrupt Controller () A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 7
Instrukční sada THUMB-2 ARM CORTEX- M3, instrukční sada pouze Thumb- 2 obsahuje původní Thumb 16 bitové, doplněné 32 bitovými inst. nepodporuje sadu ARM Thumb efektivnější využití pam. programu, (také zrychlení při čtení z FLASH, čtení 32 bitů dvě instrukce, vysvětlení později) Srovnání uložení instrukčních kódů ARM, THUMB a THUMB- 2 A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 8
Cortex-M3 ARMv7-M Architecture Thumb-2 only Fully programmable in C 3-stage pipeline von Neumann architecture (z hlediska log. členění adr. prostoru) Optional MPU AHB-Lite bus interface Fixed memory map 1-240 interrupts Configurable priority levels Non-Maskable Interrupt support Debug and Sleep control Serial wire or JTAG debug Optional ETM Cortex M3 Total 60k* Gates A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 9
Jádro ARM Cortex M3 Firma ARM - nevyrábí vlastní procesory, pouze návrh jádra, ARM Cortex- M3 - definováno: vlastní jádro CPU řadič přerušení rozložení v adresním prostoru (kde je SRAM interní, externí, kde vnitřní sběrnice) spolupráce s rozhraním pro ladění (debug) JTAG, SWD Výrobci individuálně doplňují paměti a různé periferie přístupné v daném adresním prostoru více na www.arm.com A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 10
Procesory s jádrem ARM, kódování instrukce Architektura ARM, postupný vývoj ARMv x Architektura ARM instrukce kódování 32 bitové Kódování instrukcí ve strojovém kódu ARM je pouze v jednom slovu 32 bitů, procesor načte kompletní kód instrukce naráz Za kódem instrukce ARM nenásledují další informace o datech či adrese skoku (jako to je např. u procesoru 8051 jedno, dvou, tří bajtové instrukce,signálových procesorů ADSP Blackfin a dalších) Všechny informace jsou součástí instrukčního kódu Instrukce operuje s jedním nebo více registry, V jedné instrukci je pouze jediný přístup k datům v paměti (není instrukce, kde by se dva operandy načítaly z paměti, nebo kde by se operand četl z paměti a do paměti by se ukládal) A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 11
Registry ARM Cortex M3 - R0 R12 obecné,32 - bitové registry Dolní registry (low reg.) R0 R7 přístupné všemi instrucemi s přístupem k registrům. Horní registry (high reg.) R8 R12 přístup pouze 32 bitovými instrukcemi s přístupem k registrům R13 ukazatel zásobníku R14 Link registr (uložení návrat. adresy) R15- čítač adres A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 12
Registry R13 až R15 u ARM Cortex-M3 Stack pointer Registr R13 -Stack Pointer (SP) ukazatel zásobníku. R13 dvě formy: hlavní SP (SP main) procesní SR (SP_process) Link register Registr R14 je užíván při volání podprogramů (subroutine Link Register - LR). Do LR se uloží návratová adresa z PC při instrukci při vykonání instrukcí Branch an Link (BL) or Branch and Link with Exchange (BLX). LR je využit také při návratu z obsluhy výjimky (exception return). R14 možno obsluhovat jako obecný registr Programový čítač (Program counter - PC) registr R15 Bit [0] je vždy, takže instrukce jsou zarovnány na hranice slova (4 Byte) nebo poloviční slova (2 Byte). Stavový reg. programu (Program Status Registers xpsr) stavových registr příznaků (Flags) A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 13
Adresní prostor ARM- CORTEX M3. A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 14
Procesory s jádrem ARM, instrukce skoku Dotaz? jak se řeší skoky, když adresní prostor je 32- bitový a současně se má celá instrukce kompletně zakódovat do 32 bitů? Skoky (kde je informace o cíli skoku součástí instrukčního kódu) jsou relativní (skok o danou vzdálenost dopředu, či dozadu tato vzdálenost je součástí instruk. kódu) vzhledem k aktuální adrese právě čteného instrukčního kódu Relativní skoky omezený rozsah skoku ( omezená vzdálenost ) Dotaz? jak se řeší delší skoky, když adresní prostor je 32- bitový a současně se má celá instrukce kompletně zakódovat do 32 bitů? Skok s větším rozsahem adresy (na větší vzdálenost ) s využitím adresy předem uložené v registru (32 bitů) (Pozn.: u ARM Cortex M3 musí být nejnižší bit adr. skoku uložené v registru = 1) Důvod nejnižší bit adresy A0 = 1 signalizuje činnost v režimu Thumb) A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 15
Využití bloku Barrel shifter V instrukcích ARM možno pro zadání přímé konstanty (, která je součástí instrukce) využít její posunutí blokem Barrel shifter Operand 1 Operand 2 Barrel shifter 8 bit. hodnota 5 bit. hod. posunu (příp. reg.) ALU 5 bity posun doprava až 0x11111 (31 dec) nejvyšší bit výsledek A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 16
Příklad použití systému sběrnic AMBA, firmy ARM AHB High performance Bus- rychlá sběrnice, přenos paměť- procesor APB Heripheral Bus pomalejší sběrnice pro přenos- procesor periferie (pomalejší, ale nižší odběr, možnost dalšího zpomalení použitím nižší frekvence hod. signálu pro APB Prostřednictvím sběrnic připojeny další bloky mikrořadiče v konkrétní implementaci High Bandwidth External Memory Interface High Performance ARM processor High-bandwidth on-chip RAM AHB DMA Bus Master High Performance Pipelined Burst Support Multiple Bus Masters APB Bridge APB UART Timer Keypad PIO Low Power Non-pipelined Simple Interface A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 17
Příklad mikrořadiče s jádrem ARM Cortex-M3 Mikrořadičmicrocontroller STM32F103 jádro ARM Cortex-M3 Sběrnice AHB, APB dle standardu ARM Firemní implementace doplnění pamětí SRAM, FLASH řadič přímého přístupu do paměti -DMA (Direc Memory Access) perieferie, brány, čítače,.. A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 18
STM32F10x s jádrem ARM Cortex-M3, vnitřní sběrnice I- bus čtení instrukční kód D - bus čtení Data Harwardská architektura - načítání kódu instrukce I (FLASH) a dat D (SRAM) Možnost čtení dat z paměti FLASH- můstek D- bus- Flash Bus Matrix - přepínání sběrnic, možnost několika současně běžících přenosů ( analogie mimoúrovňová křižovaka víceůrovńová Např. čtení instrukce z FLASH do proc., současně přenos z GPIO přes APB na AHP s pomocí řadiče DMA do SRAM) Řadič DMA (Direct Memory Access) pro rychlé přenosy dat bez účasti procesoru A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 19
Paměť FLASH v mikrořadičích s jádrem ARM Paměti FLASH omezená rychlost přístupu (např. doba v STM32F10x - 35 ns) Běh procesorového jádra STM32F10x až na 72 MHz (perioda cca 14 ns) Doba přístupu k FLASH delší, než perioda hod. signálu procesoru (Vyšší typy STM32F407 až 168 MHz) Jádro - rychlejší než paměť FLASH Jak řešit rozpor? Řešení - zařazení wait cyklů počkat ječte jeden cyklus hod. sig. - zpomalení běhu Zvýšení toku paralelní čtení inst. kódu a konstant z FLASH Načtení 2x 64 bitů = 128 bitů (obdobně např. i implementace jádra ARM7TDMI v LPC2148 firma NXP) - akcelerace prefetch,). Důsledek program běží nejrychleji bez skokův přímé linii. Skoky zpomalují běh programu. 64 bit Použití par.načítání z pam. FLASH (Analogie nestačím podávat kostky (po jedné kostce) z jedné palety Řešení naberu najednou a podávám po dvou? Ale- požadavek podávat nejednou z jiné palety ( skok ) to nachystané zahodím - časová ztráta než naberu první nové dvě z jiné palety) čtení 32 bit čtení 32 bit 32 bit A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 20
Akcelerátor pro čtení paměti FLASH, STM32F10x Jádro - rychlejší než paměť FLASH Akcelerace prefetch, načítání z FLASH paralelně). (Inst. kód Thumb - 2 je 32 bitů, Thumb je 16 bitů), obdobné řešení i ostatní výrobci implementace jádra ARM7, ARM. Cortex-M3 Skokem- ztrácí se výhoda tohoto řešení, A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 21
ARM Cortex Processors (v7) ARM Cortex-A family (v7-a): Applications processors for full OS and 3 rd party applications ARM Cortex-R family (v7-r): Embedded processors for real-time signal processing, control applications ARM Cortex-M family (v7-m): Microcontroller-oriented processors for MCU and SoC applications (MCU Microcontroller unit- mikrořadič) (SoC System on a Chip) Pozn. ARM Cortex M0 - je architektura ARM V6M Cortex-A8 Cortex-R4 Cortex -M3 x1-4 Cortex-M1...2.5GHz x1-4 Cortex-A9 Cortex-A15 x1-4 Cortex-A5 1-2 R Heron Cortex-M4 SC300 Cortex-M0 12k gates... A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 22
Srovnání jader architektury ARM Cortex v7a, v7r a v7m A- Aplikační, R Real time, M - Microcontroller Cortex-A8 Architecture v7a MMU AXI VFP & NEON support Cortex-R4 Architecture v7r MPU (optional) AXI Dual Issue Cortex-M3 Architecture v7m MPU (optional) AHB Lite & APB A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 23
Procesory ARM Cortex - M0 Pro další zjednodušení procesorového jádra vyvinuta architektura ARM V6M, Procesor ARM Cortex M0 Snaha (z hlediska ceny) pokrýt aplikační oblasti, kde se zatím používají 8- bit. up Využívá 16 bitové instrukce THUMB (kódování instrukcí je pouze do 16 bitů) Procesor je 32- bitový, data a všechny registry jsou 32 bitové Zjednodušený návrh (15 000 hradel), jednodušší řešení sběrnic, V jádře definován řadič přerušení Doplnění jádra ARM Cortex M0 pamětí FLASH, pamětí RAM, periferiemi mikrořadič Trend- integrovat mikrořadič s jádrem ARM Cortex M0 do system on chip MEMS senzory, akcelerometr, gyroskop,.. ARM Cortex M0, doplnění pro zpracování dat, nadřazenému systému předávání pouze výsledků Očekávání bude řada čipů s Cortex M0 v automotive aplikacích Opět- implementace jádra Cortex-M0 v mikrořadičích řadou výrobců (Ti, Freescale, NXP, ST,..) Levné procesory, ceny i pod 1 Euro (podle velikosti paměti a obsahu periferií) A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 24
Architektura ARM v6m, ARM v7m Architektura ARM V7 obecně, V7M- úprava M značí Microcontroller instrukční sada THUMB -2 A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 25
Přehled architektur ARM Cortex A. aplikační, práce typicky s vnější pamětí programu, obvykle SDRAM s kapacitou 0,5 Gbyte, 1 GByte a větší (viz. tabledy, mobilní telefony,..) Použití operačního systému, Linux, Android,.. A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 26
Perspektivy práce a použití procesorů s jádrem ARM Procesory- mikrořadiče s jádrem ARM Cortex Výhoda- použití jádra řadou výrobců, široké spektrum variant podle velikosti paměti FLADF, SRAM, Varianty s podporou připojení externí dynamické paměti SDRAM, možnost operačního systému Možnost přechodu z procesoru na procesor- přenos SW- s jistými modifikacemi Možnost škálování- podle rostoucího nároku, volit v aplikaci procesor. Nástroj- IDE firmy Keil Překladač, simulátor, testovací- volná (a omezená) verze Vývojové kity STM32 xdiscovery ceny 200 až 500 Kč, podle varianty více na www.st.com Obsahují i ladicí rozhraní s SWD A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 27