Wykład 5

advertisement
Wykład 5
Architektura ARM
Plan wykładu
• ARM – co to jest?
– od historii od dzisiaj
• Wersje architektury
– ARMv1 – ARMv7
• Rodziny obecnie w użyciu
– ARM7 – Cortex-A9
• Listy instrukcji
– ARM, Thumb, Thumb-2, NEON, Jazelle
ARM - historia
The ARM is a 32-bit reduced instruction set
computer (RISC) instruction set architecture
(ISA) developed by ARM Holdings
ARM - historia
• Architektura ARM powstała w latach 80-tych
ubiegłego wieku
• Została wymyślona przez firmę Acorn RISC
Machine
• Jest „następcą” procesora 6502 znanego z
Commodore 64
• Prawdziwy „rozkwit” zaczął się pod koniec lat
90-tych
ARM - historia
• Dzięki swojej prostocie i wydajności znalazła
„swoje miejsce” w aplikacjach typu telefony
komórkowe
• Obecnie około 90% stosowanych procesorów
32-bitowych typu RISC to procesory z jądrem
ARM
• Procesory ARM stosowane są od mało
wydajnych układów sterujących do
komputerów typu netbook
ARM – główne cechy
• Architektura 32-bitowa
• Procesor o zredukowanej liczbie instrukcji
RISC
• Wspólna magistrala danych i programu (von
Neumana) dla wersji prostszych
• Rozdzielone magistrale dla wersji szybszych
• Dostępny szeroki wachlarz wersji o różnym
stopniu skomplikowania i różnej wydajności
• Kolejka rozkazów
ARM – Warianty architektury
• ARM v1 (rodzina ARM1):
– pierwsza wersja procesora ARM
– adresowanie 26-bitowe
– brak mnożenia/ koprocesora
• ARM v2 (rodzina ARM2):
– pierwsza wersja komercyjna
– dodane instrukcje mnożenia 32-bit
– dodane wsparcie dla koprocesora
ARM – Warianty architektury
• ARM v2a (rodzina ARM3):
– pierwsze użycie pamięci cache (4kB)
– do 12 MIPS przy 25 MHz
• ARM v3 (rodzina ARM6 oraz ARM7):
– adresowanie 32-bit
– dodane magistrale do pamięci cache oraz koprocesora
– dodany kontroler pamięci (ARM7500FE)
– do 40 MIPS przy 56 MHz
ARM – Warianty architektury
• ARM v4 (rodzina ARM7TDMI, ARM8, ARM9):
– 3-stage and 5-stage pipelining
– Instrukcje Thumb
– przewidywanie pętli
– układy kontroli pamięci MPU lub MMU
– duża wydajność przy stosunkowo prostej konstrukcji
– do 200 MIPS przy 200 MHz (StrongARM)
– wariant najpopularniejszy i ciągle wykorzystywany
ARM – Warianty architektury
• ARM v5 (rodzina ARM7TDMI, ARM9, ARM10):
– 6-stage and 7-stage pipelining
– instrukcje Thumb
– instrukcje Jazelle
– instrukcje rozszerzone DSP
– wielopoziomowy cache
– bardzo duża wydajność
– do 1000 MIPS przy 1250 MHz (XScale)
– wariant bardzo popularny i ciągle wykorzystywany
ARM – Warianty architektury
• ARM v6 (rodzina ARM11, Cortex-M0, Cortex-M1):
– 8-stage and 9-stage pipelining
– instrukcje Thumb-2
– instrukcje Jazelle
– instrukcje rozszerzone DSP
– SIMD
– wielopoziomowy cache
– duża wydajność
– optymalizowany pod kątem danych audio i wideo
ARM – Warianty architektury
• ARM v7 (rodzina Cortex z wyłączeniem: Cortex-M0,
Cortex-M1):
– 13-stage pipelining
– instrukcje Thumb-2
– instrukcje Jazelle
– instrukcje rozszerzone DSP
– sprzętowe mnożenie i dzielenie stało i zmiennoprzecinkowe
– MultiCore (1-4 rdzeni)
– SIMD (NEON) – do 16 instrukcji w jednym czasie
– wielopoziomowy cache
– ogromna wydajność (do 10000 MIPS!!!)
– przyszłość architektury ARM dostępna już teraz
ARM 7 TDMI
ARM7TDMI
• Główne cechy:
– Obecnie podstawowa rodzina z grupy ARM
– 32-bitowy RISC o małym poborze mocy
– Architektura von Neumanna
– 3-poziomowa kolejka
– Dwa zbiory instrukcji: 32-bitowy ARM oraz 16-bitowy Thumb
– 7 trybów pracy
– Operacje na danych:
•8-bitowych (byte)
•16-bitowych (halfword)
•32-bitowych (word)
– TDMI jest skrótem od: Thumb, Debug, Multiplier, Interrupts
ARM7TDMI
Architektura
głównego
rdzenia
ARM7TDMI
Diagram
funkcyjny
ARM7TDMI – tryby pracy
• User (usr): normalny tryb pracy
• FIQ (fiq): tryb transmisji danych (fast irq, transfer typu
DMA)
• IRQ (irq): tryb obsługi przerwań
• Supervisor (svc): tryb chroniony dla wsparcia
systemów operacyjnych
• Abort mode (abt): tryb błędu
• System (sys): tryb użytkownika uprzywilejowanego
• Undefined (und): tryb instrukcji niezdefiniowanej
ARM7TDMI – rejestry
• 37 rejestrów
• dostępna ilość
zależy od trybu
pracy
• R15 jest zawsze
licznikiem
programu
• R13 jest zawsze
wskaźnikiem stosu
ARM7TDMI – rozkazy ARM
• Istnieją dwie listy rozkazów: pełna (ARM) i
uproszczona (Thumb)
• Lista ARM jest zbiorem poleceń 32-bitowych – każde
polecenie ma długość 32 bitów
• Polecenia zajmują dużo miejsca w pamięci
• Każde z poleceń może być wykonywane warunkowo
• Wynik operacji może być od razu dostępny z
przesunięciem
• Istnieje 5 trybów adresowania
• Każdy z trybów adresowania posiada kilka opcji
ARM7TDMI – rozkazy ARM
ARM7TDMI –
rozkazy ARM
ARM7TDMI – rozkazy Thumb
• Lista Thumb jest zbiorem poleceń 16-bitowych –
każde polecenie ma długość 16 bitów
• Jest to podzbiór listy ARM
• Polecenia zajmują mało miejsca w pamięci
• Tylko niektóre z poleceń mogą być wykonywane
warunkowo
• Operacje na danych są w dalszym ciągu 32-bitowe
• W liście Thumb wykorzystane są jedynie rejestry R0R7
• Tylko instrukcje specjalne wykorzystują rejestry R8R15
• Każda instrukcja ma odwzorowanie w liście ARM
ARM7TDMI – rozkazy Thumb
ARM7TDMI –
rozkazy Thumb
ARM7TDMI – Virtual Memory System
• Blok VMSA służy do przydzielania rozdzielnych
(wirtualnych) przestrzeni adresowych dla różnych
aplikacji (procesów)
• Procesy mają przydzielaną pamięć z wykorzystaniem
układu MMU (Memory Management Unit)
• W układzie MMU tłumaczenie adresów wirtualnych
na fizyczne odbywa się poprzez tablice TLB
(Translation Lookaside Buffers)
ARM7TDMI – Virtual Memory System
ARM7TDMI – Protected Memory System
• Blok PMSA służy do przydzielania rozdzielnych
(wirtualnych) przestrzeni adresowych dla różnych
aplikacji (procesów)
• Procesy mają przydzielaną pamięć z wykorzystaniem
układu MPU (Memory Protection Unit)
• Efekt działania PMSA podobny do VMSA ale
prostsza konstrukcja sprzętu i oprogramowania
• Brak adresów wirtualnych
• Konkretne procesy mają dostęp tylko do określonych
obszarów pamięci
ARM7TDMI – Protected Memory System
ARM7TDMI – Vector Floating Point
• VFP jest koprocesorem arytmetycznym służącym do
operacji zmiennoprzecinkowych pojedynczej i
podwójnej precyzji
• Istnieje kilka wersji: w ARM7TDMI – VFPv2 (VFP9),
w Cortex’ach – VFPv3 (VFP10, VFP11)
• Pełna kompatybilność z IEEE754
• Zrównoleglenie wykonywania operacji najbardziej
czasochłonnych w celu zwiększenia wydajności
• Trzy oddzielne kolejki instrukcji – więcej niż jedna
instrukcja wykonywana naraz
ARM7TDMI – Vector Floating Point
• VFPv2 wspiera wykonywanie krótkich instrukcji
wektorowych
• Do 8 operacji na danych pojedynczej precyzji na raz
• Do 4 operacji na danych podwójnej precyzji na raz
• Krótkie instrukcje wektorowe są najbardziej
użyteczne w aplikacjach graficznych i przetwarzania
sygnałów
• Pozwalają na zwiększenie wydajności przy
jednoczesnym zmniejszeniu kodu
Cortex-M
Cortex-R
Cortex-A
Rodzina Cortex
• Obecnie korporacja ARM silnie wprowadza na rynek
rodzinę Cortex
• Rodzina ta składa się z trzech podrodzin:
– Cortex-M – rdzenie przewidziane do mikrokontrolerów i
aplikacji typu cost-sensitive; Rdzenie wspierają instrukcje
Thumb-2;
– Cortex-R – rdzenie przewidziane do aplikacji systemów
czasu rzeczywistego real-time systems; Rdzenie wspierają
instrukcje ARM, Thumb oraz Thumb-2
– Cortex-A – rdzenie najbardziej złożone i wydajne,
przewidziane do wydajnych urządzeń multimedialnych;
Rdzenie wspierają instrukcje ARM, Thumb oraz Thumb-2
Cortex-M
Cortex-M
• Główne cechy:
– Procesor 32-bitowy
– Kolejka instrukcji 3 stopniowa
– Lista instrukcji Thumb-2 – bardzo zwarty kod przy dużej
wydajności
– Wiele trybów i domen oszczędzania energii
– Nested Vectored Interrupt Controller – dobrze zdefiniowane
czasy i sposoby wywoływania przerwań
– Wsparcie dla systemów RTOS
– Wsparcie dla debuggerów (JTAG, SWD – Serial Wire
Debug)
Cortex-M0
• Główne cechy:
– Najuboższa wersja procesorów ARM
– Jednocześnie też najbardziej oszczędna – jedynie
85µW/MHz
– Kompatybilność z wersją Cortex-M3
– Struktura składa się z zaledwie 12000 bramek
– Tylko 56 instrukcji optymalizowanych pod kątem języka C
– Wsparcie dla nisko-mocowej komunikacji bezprzewodowej:
Bluetooth Low Energy (BLE), ZigBee, itp.
– Wydajność 0.9 DMIPS/MHz
– Instrukcja mnożenie 32x32 w jednym cyklu
– Opóźnienie wywołania przerwań: 16 cykli
Cortex-M1
• Główne cechy:
– Rdzeń procesora przewidziany do osadzenia w strukturze
FPGA
– Wsparcie dla układów firm Actel, Altera oraz Xilinx
– Łatwa migracja z układów FPGA (development) to ASIC
(production)
Cortex-M3
• Główne cechy:
– Wprowadzony na rynek w 2004 roku
– Przewidziany do najbardziej wydajnych mikrokontrolerów
– Wysoka wydajność i bogactwo cech
– Mały pobór prądu (12.5 DMIPS/mW)
– Do 240 źródeł przerwań!!!
– Wsparcie dla szeregu protokołów szeregowych
– Wydajność 1.25DMIPS/MHz
– Wsparcie dla operacji na bitach
– Mnożenie 32x32 w jednym cyklu, dzielenie w 2-12 cyklach
– Kolejka instrukcji (3 stopnie) plus przewidywanie skoków
– Kontrola pamięci (MPU)
– Prędkość działania: do 275 MHz /340 DMIPS
Cortex-M4
• Główne cechy:
– Najbogatsza wersja rodziny Cortex-M
– Przewidziane do zastosowań nisko-mocowego
przetwarzania sygnałów
– Połączenie 32-bit mikrokontrolera i procesora DSP
– Instrukcje DSP:
• jednocyklowe 16,32-bit MAC
• jednocyklowe 2x16-bit MAC
• 8,16-bit arytmetyka SIMD
• dzielenie sprzętowe (2 – 12 cykli)
– Jednostka FPU o pojedynczej precyzji
– Pozostałe cechy jak w Cortex-M3
– Prędkość działania: do 300 MHz /375 DMIPS
Cortex-A9
Single core Cortex-A9
Cortex-A9
• Główne cechy:
– Najbogatsza wersja rodziny Cortex-A
– Następca wysokowydajnej rodziny ARM11
– Przewidziane do zastosowań w procesorach o dużej i
bardzo dużej mocy obliczeniowej
– Możliwe wersje jedno- i wielordzeniowe
– Praca z zegarem do 2GHz
– Możliwość bloków NEON oraz FPU
– Prędkość działania: do 5000 DMIPS na rdzeń
– Dostępne wersje optymalizowane pod kątem prędkości lub
zużycia energii
Cdn...
Download