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 232 = 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 A0 = 1 (kód instrukce je 16- bitový, tak reálná adresa má A0 =0 , ale právě požadavek skoku na adresu s A0=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 D0 = 0, nebo D0=1 odpovídajícímu adresovému bitu A0
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 32bitové 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 A0= 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
8 bit. hodnota
Barrel shifter
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 Performance ARM processor High Bandwidth External Memory Interface
AHB
High-bandwidth DMA on-chip RAM Bus Master High Performance Pipelined Burst Support Multiple Bus Masters A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha
APB
APB Bridge
UART Timer Keypad PIO Low Power Non-pipelined Simple Interface
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. (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) A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha
čtení
čtení
Použití par.načítání z pam. FLASH –
64 bit
32 bit
32 bit
32 bit
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 3rd party applications x1-4
ARM Cortex-R family (v7-R): Embedded processors for real-time signal processing, control applications
Cortex-A15 ...2.5GHz
x1-4
Cortex-A9 Cortex-A8 x1-4
Cortex-A5
ARM Cortex-M family (v7-M): Microcontroller-oriented processors for MCU and SoC applications
1-2
R Heron
Cortex-R4 Cortex-M4
(MCU – Microcontroller unit- mikrořadič) (SoC System on a Chip) Pozn. ARM – Cortex M0 - je architektura ARM V6M A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha
SC300™ Cortex™-M3 Cortex-M1 Cortex-M0 12k gates...
22
Srovnání jader architektury ARM Cortex v7A, v7R a v7M A- Aplikační, R – Real time, M - Microcontroller Cortex-A8
Cortex-R4
Cortex-M3
Architecture v7A MMU AXI VFP & NEON support
Architecture v7R MPU (optional) AXI
Architecture v7M MPU (optional) AHB Lite & APB
Dual Issue
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