View
223
Download
0
Category
Preview:
Citation preview
Architektura ARM
Wykład 5
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
– SIMDSIMD– 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)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
ARM7TDMIArchitektura głównego rdzenia
ARM7TDMIDiagram 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 R0-R7 • Tylko instrukcje specjalne wykorzystują rejestry R8-R15 • 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-MCortex-RCortex-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 WireDebug)
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-mocowegoprzetwarzania 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...
Recommended