Cuprins 1. Introducere 2. Modele și limbaje pentru specificația sistemelor 3. Interfețe de comunicație 4. Periferice pentru sisteme dedicate 5. Microcontrolere 6. Procesoare dedicate 7. Dezvoltarea programelor 8. Implementarea sistemelor dedicate Sisteme de calcul dedicate (06-1) 11.12.2018 1
Procesoare dedicate Procesoare ARM Procesoare Intel Procesoare AMD Sisteme de calcul dedicate (06-1) 11.12.2018 2
Procesoare ARM Prezentare generală Arhitecturile ARMv1.. ARMv6 Arhitectura ARMv7 Arhitectura ARMv8 Sisteme de calcul dedicate (06-1) 11.12.2018 3
Prezentare generală (1) ARM Advanced RISC Machine Denumirea inițială: Acorn RISC Machine Arhitectura a fost proiectată la firma Acorn Computers (UK) Primul procesor ARM comercial: ARM1 (1985) utilizat în calculatorul personal BBC Micro Bazat pe procesorul Motorola 6502 (8 biți) Modificări: arhitectură RISC de 32 de biți; lungime fixă a instrucțiunilor; arhitectură load/store Sisteme de calcul dedicate (06-1) 11.12.2018 4
Prezentare generală (2) ARM2 (8 MHz) s-a utilizat în calculatorul personal Archimedes (1987) ARM3 (24.. 33 MHz) conținea o memorie cache de instrucțiuni și de date (1989) Dezvoltarea procesoarelor ARM a continuat în cadrul firmei Advanced RISC Machines Ltd. (1990) Acorn Computers VLSI Technology Inc. Apple Computer Sisteme de calcul dedicate (06-1) 11.12.2018 5
Prezentare generală (3) Primul procesor dezvoltat de ARM Ltd.: ARM6 (1992) Au fost licențiate diferite versiuni ARM6: ARM610 (Apple), StrongARM (DEC), XScale (Intel) În 1998, ARM Ltd. a devenit ARM Holdings A fost achiziționat de SoftBank Group (2016) Dezvoltarea procesoarelor ARM a continuat cu seriile ARM7.. ARM11, iar apoi cu seriile ARM Cortex-M, Cortex-R, Cortex-A Sisteme de calcul dedicate (06-1) 11.12.2018 6
Prezentare generală (4) ARM Holdings: Proiectează arhitectura procesoarelor ARM Licențiază proiectele către partenerii care fabrică procesoarele Dezvoltă tehnologii pentru asistarea proiectării Magistrale, periferice, instrumente software, plăci de dezvoltare, depanatoare Procesoarele ARM se utilizează pe scară largă în: dispozitive mobile, sisteme înglobate, calculatoare portabile Sisteme de calcul dedicate (06-1) 11.12.2018 7
Prezentare generală (5) Nucleele ARM pot fi integrate în circuite SoC (System-on-Chip) ale diferiților producători nvidia: Tegra (de ex., Tegra X2) Apple: A4, A5, A6 etc. (de ex., Apple A11) Samsung Electronics: Exynos (de ex., Exynos 9810) Qualcomm: Snapdragon (de ex., Snapdragon 845) Sisteme de calcul dedicate (06-1) 11.12.2018 8
Prezentare generală (6) Magistrale bazate pe standardul ARM AMBA (Advanced Microcontroller Bus Architecture) AMBA 2 definește: Magistrala AHB (Advanced High-performance Bus) Vers. 2 a magistralei APB (Advanced Peripheral Bus) accesul la registrele de control al perifericelor AMBA 3 definește: Magistrala AHB-Lite: magistrală AHB simplificată pentru sisteme cu un singur dispozitiv master Sisteme de calcul dedicate (06-1) 11.12.2018 9
Prezentare generală (7) Interfața AXI3 (Advanced extensible Interface 3): interconexiune de viteză ridicată AMBA 4 definește: Vers. 4 a interfeței AXI (AXI4): îmbunătățește utilizarea magistralei la sistemele multi-master Varianta AXI4-Lite a interfeței AXI4: interfață simplificată pentru perifericele din circuit Extensia AXI Coherency Extensions (ACE): se extinde interfața AXI cu trei canale pentru partajarea memoriilor cache între procesoare Sisteme de calcul dedicate (06-1) 11.12.2018 10
Prezentare generală (8) Arhitectura ARM definește: O mașină abstractă EP (element de procesare) Reguli de utilizare a EP Modelul de programare ARM Registre de uz general Moduri ale procesorului Fiecare mod poate oferi diferite tipuri de accese la memorie și poate avea un subset propriu de registre Sisteme de calcul dedicate (06-1) 11.12.2018 11
Procesoare ARM Prezentare generală Arhitecturile ARMv1.. ARMv6 Arhitectura ARMv7 Arhitectura ARMv8 Sisteme de calcul dedicate (06-1) 11.12.2018 12
Arhitecturile ARMv1.. ARMv6 (1) Nu trebuie confundată vers. arhitecturii cu procesorul având același număr Ex.: ARMv3 (arhitectură); ARM3 (procesor) Arhitectura ARMv1 Adresare pe 26 de biți a memoriei de program Adresare pe 32 de biți a memoriei de date Fără instrucțiuni de înmulțire Instrucțiuni de salt și apel (BL) Instrucțiune de întrerupere software pentru apelul funcțiilor SO Sisteme de calcul dedicate (06-1) 11.12.2018 13
Arhitecturile ARMv1.. ARMv6 (2) Moduri ale EP User (USR): mod neprivilegiat Interrupt Request (IRQ): întreruperi normale Fast Interrupt Request (FIQ): întreruperi rapide Supervisor (SVC): după resetare sau o instrucțiune de întrerupere software Registre vizibile în modurile USR, SVC: R0..R15 R13: Stack Pointer (SP) R14: Link Register (LR) R15: Program Counter (PC), registru al indicatorilor de stare și de mod Sisteme de calcul dedicate (06-1) 11.12.2018 14
Arhitecturile ARMv1.. ARMv6 (3) În modurile IRQ și FIQ există copii private ale anumitor registre Crește viteza tratării întreruperilor Modul IRQ: copii ale registrelor R13 și R14 R13_irq, R14_irq Modul FIQ: copii ale registrelor R10.. R14 R10_fiq.. R14_fiq Singura implementare: procesorul ARM1 Sisteme de calcul dedicate (06-1) 11.12.2018 15
Arhitecturile ARMv1.. ARMv6 (4) Arhitectura ARMv2 S-a păstrat adresarea pe 26 de biți Instrucțiuni de înmulțire și înmulțire cu acumulare (MAC) Interfață pentru până la 16 coprocesoare logice, CP0.. CP15 Două registre suplimentare vizibile în modul FIQ, R8_fiq și R9_fiq Instrucțiuni Load/Store atomice (SWP, SWPB) Implementări: ARM2, ARM3, ARM250 Sisteme de calcul dedicate (06-1) 11.12.2018 16
Arhitecturile ARMv1.. ARMv6 (5) Arhitectura ARMv3 Adresare pe 32 de biți a memoriei de program Informația din registrul R15 a fost mutată în registrul CPSR (Current Program Status Reg.) Pentru fiecare mod de excepție există un registru SPSR (Saved Program Status Reg.) S-au introdus modurile Abort și Undefined Abort: acces ilegal la memoria de date (Data Abort) sau la memoria de program (Prefetch Abort) Undefined: excepție de instrucțiune nedefinită Sisteme de calcul dedicate (06-1) 11.12.2018 17
Arhitecturile ARMv1.. ARMv6 (6) Variantele M: înmulțire și operații MAC de 32 x 32 biți, cu rezultat pe 64 biți Posibilitatea de a schimba ordinea octeților (little-endian sau big-endian) Implementări: ARM6, ARM7 Arhitectura ARMv4 Instrucțiuni Load/Store pentru semicuvinte Instrucțiuni Load cu extensie de semn pentru octeți și semicuvinte Sisteme de calcul dedicate (06-1) 11.12.2018 18
Arhitecturile ARMv1.. ARMv6 (7) S-a introdus modul privilegiat System Acces la aceleași registre ca și modul User Variantele T: extensia Thumb Subset al instrucțiunilor ARM Instrucțiunile sunt comprimate pe 16 biți Instrucțiunile Thumb sunt decomprimate pe 32 de biți înainte de execuție Există limitări ale setului de instrucțiuni Thumb Comutarea între starea ARM și starea Thumb: cu instrucțiunea BX (Branch and exchange) Implementări: StrongARM, ARM8, ARM9 Sisteme de calcul dedicate (06-1) 11.12.2018 19
Arhitecturile ARMv1.. ARMv6 (8) Arhitectura ARMv5 Instrucțiune Count Leading Zeros (CLZ) Instrucțiune de suspendare a execuției pentru depanare (breakpoint) Extensia VFP (Vector Floating Point), vers. 2 (VFPv2): instrucțiuni în virgulă mobilă cu precizie simplă și precizie dublă Variantele E: extensia DSP Adunarea și scăderea utilizează aritmetica saturată cu semn Sisteme de calcul dedicate (06-1) 11.12.2018 20
Arhitecturile ARMv1.. ARMv6 (9) Variantele J: extensia Jazelle DBX (Direct Bytecode Execution) O nouă stare de execuție, Java instrucțiunea BXJ (Branch and Exchange Jazelle) Implementează execuția codului Java prin hardware S-a adăugat un nou registru CPSR Întreruperile apărute în starea Java sunt tratate imediat Unor registre li se asignează funcții specifice stării Java: SP, variabile locale Implementări: ARM7EJ, ARM9E, ARM10E Sisteme de calcul dedicate (06-1) 11.12.2018 21
Arhitecturile ARMv1.. ARMv6 (10) Arhitectura ARMv6 Îmbunătățirea sistemului de gestiune a memoriei Reducerea timpului de încărcare pentru instrucțiuni și date Creșterea performanțelor cu până la 30% Suport pentru sisteme multiprocesor Instrucțiuni Load/Store Exclusive Posibilitatea unor metode mai complexe de sincronizare pentru memoria partajată Sisteme de calcul dedicate (06-1) 11.12.2018 22
Arhitecturile ARMv1.. ARMv6 (11) Instrucțiuni pentru aplicații multimedia Set de instrucțiuni SIMD de 32 de biți Implementarea mai eficientă a aplicațiilor audio, video, grafică 3D Gestiunea mai eficientă a datelor Suport îmbunătățit pentru subsisteme cu ordinea diferită a octeților Gestiunea unor date nealiniate Gestiunea mai eficientă a întreruperilor și a excepțiilor Sisteme de calcul dedicate (06-1) 11.12.2018 23
Arhitecturile ARMv1.. ARMv6 (12) Extensia Thumb-2 Noi instrucțiuni de 32 de biți Set de instrucțiuni extins: operații pe câmpuri de biți, execuție condițională Se pot genera instrucțiuni Thumb sau ARM din același cod sursă limbaj de asamblare unificat (UAL Unified Assembly Language) Performanțe superioare față de setul Thumb: dimensiunea memoriei redusă cu 30%; performanța îmbunătățită cu până la 38% Implementare: ARM11 Sisteme de calcul dedicate (06-1) 11.12.2018 24
Procesoare ARM Prezentare generală Arhitecturile ARMv1.. ARMv6 Arhitectura ARMv7 Arhitectura ARMv8 Sisteme de calcul dedicate (06-1) 11.12.2018 25
Arhitectura ARMv7 Arhitectura ARMv7 Prezentare generală Extensia ARM NEON Extensia ARM TrustZone Tehnologia ARM MPCore Tehnologia ARM big.little Sisteme de calcul dedicate (06-1) 11.12.2018 26
Prezentare generală (1) Sunt definite trei profiluri arhitecturale Profilul A (Application): Cortex-A Pentru sisteme care necesită performanțe ridicate: tablete, telefoane, aparate TV Implementări: Cortex-A7, Cortex-A8, Cortex-A9, Cortex-A12, Cortex-A15 Profilul R (Real-time): Cortex-R Pentru sisteme înglobate cu performanțe ridicate: sisteme pentru automobile, medicale, industriale Implementări: Cortex-R4, Cortex-R5, Cortex-R7 Sisteme de calcul dedicate (06-1) 11.12.2018 27
Prezentare generală (2) Profilul M (Microcontroller): Cortex-M Pentru sisteme înglobate cu consum și cost redus: electronica de consum, instrumente medicale Implementări: Cortex-M3, Cortex-M4 Extensia arhitecturală VFP, vers. 3 (VFP3) sau vers. 4 (VFPv4) Definită pentru profilurile ARMv7-A și ARMv7-R Vers. 4: date de 16 biți; instrucțiuni MAC fuzionate 32 registre de 64 de biți (VFPvx-D32), sau 16 registre de 64 de biți (VFPvx-D16) Sisteme de calcul dedicate (06-1) 11.12.2018 28
Prezentare generală (3) În general, implementările ARMv7-A și ARMv7-R includ extensiile: Thumb; Thumb-2; DSP; Jazelle DBX Alte extensii și tehnologii: Extensia NEON: instrucțiuni SIMD avansate Extensia TrustZone: extensie de securitate Extensia de virtualizare: suport hardware Tehnologia MPCore: implementarea unor nuclee multiple într-un circuit SoC Tehnologia big.little: optimizarea consumului Sisteme de calcul dedicate (06-1) 11.12.2018 29
Arhitectura ARMv7 Arhitectura ARMv7 Prezentare generală Extensia ARM NEON Extensia ARM TrustZone Tehnologia ARM MPCore Tehnologia ARM big.little Sisteme de calcul dedicate (06-1) 11.12.2018 30
Extensia ARM NEON (1) Extensie SIMD avansată Set de instrucțiuni SIMD de 64 și 128 de biți Accelerare pentru aplicații multimedia și de prelucrare a semnalelor Codificare/decodificare video și audio, grafică 2D/3D, sinteza vocii, prelucrarea imaginilor 32 de registre x 64 de biți Pot fi utilizate ca 16 registre x 128 de biți Registrele sunt considerate ca vectori sau elemente de același tip Sisteme de calcul dedicate (06-1) 11.12.2018 31
Extensia ARM NEON (2) Tipuri de date: Întregi de 8, 16, 32 sau 64 de biți, cu/fără semn În VM cu precizie simplă (32 de biți) Se pot executa până la 16 operații simultan Avantaje: Suport pentru diferite standarde: MPEG-4, H.264, Real, AVS Se poate utiliza pentru prelucrare vectorială Performanță crescută cu 60..150% pentru codecuri video și de 4..8 ori pentru algoritmi DSP simpli Sisteme de calcul dedicate (06-1) 11.12.2018 32
Arhitectura ARMv7 Arhitectura ARMv7 Prezentare generală Extensia ARM NEON Extensia ARM TrustZone Tehnologia ARM MPCore Tehnologia ARM big.little Sisteme de calcul dedicate (06-1) 11.12.2018 33
Extensia ARM TrustZone (1) Extensie de securitate Arhitectură hardware care permite rularea unui kernel considerat sigur TEE (Trusted Execution Environment) Se poate utiliza pentru rularea unor aplicații de încredere Avantaje: performanță ridicată; acces la o memorie cu dimensiune mai ridicată Alternativă la adăugarea unui nucleu de securitate dedicat la un circuit SoC Sisteme de calcul dedicate (06-1) 11.12.2018 34
Extensia ARM TrustZone (2) Resursele hardware și software se pot afla într-una din două stări (domenii): Starea sigură: subsistemul de securitate Starea normală: restul sistemului Procesoarele TrustZone conțin două nuclee virtuale pentru cele două stări Comutarea contextului între nuclee: printr-un nou mod al procesorului, Monitor Intrarea în modul Monitor: instrucțiunea SMC (Secure Monitor Call) sau printr-o excepție hardware Sisteme de calcul dedicate (06-1) 11.12.2018 35
Arhitectura ARMv7 Arhitectura ARMv7 Prezentare generală Extensia ARM NEON Extensia ARM TrustZone Tehnologia ARM MPCore Tehnologia ARM big.little Sisteme de calcul dedicate (06-1) 11.12.2018 36
Tehnologia ARM MPCore (1) Permite implementarea a până la 4 nuclee de procesoare într-un circuit SoC Utilizează un protocol MESI modificat pentru coerența memoriilor cache MESI Modified, Exclusive, Shared, Invalid Permite transferul datelor între memoriile cache, fără scrierea în memoria principală Port opțional ACP (Accelerator Coherency Port) Permite unor controlere și acceleratoare fără memorii cache să acceseze ierarhia memoriilor cache din nucleele de procesoare Sisteme de calcul dedicate (06-1) 11.12.2018 37
Tehnologia ARM MPCore (2) Moduri de operare: cu memorie distribuită sau cu memorie partajată Cu memorie distribuită Nucleele comunică prin transmitere de mesaje AMP Asymmetric Multi-Processing Unele nuclee pot fi dedicate unor taskuri Cu memorie partajată Nucleele au acces la toate perifericele de I/E SMP Symmetric Multi-Processing Niciun nucleu nu este rezervat pentru funcții speciale Sisteme de calcul dedicate (06-1) 11.12.2018 38
Arhitectura ARMv7 Arhitectura ARMv7 Prezentare generală Extensia ARM NEON Extensia ARM TrustZone Tehnologia ARM MPCore Tehnologia ARM big.little Sisteme de calcul dedicate (06-1) 11.12.2018 39
Tehnologia ARM big.little (1) Tehnologie de optimizare a consumului de energie pentru platformele mobile Combinarea într-un circuit SoC a unor nuclee cu performanțe ridicate ( big ) cu nuclee eficiente ca și consum de energie ( LITTLE ) Exemplu: 2 x Cortex-A17 și 2 x Cortex-A7 Taskurile sunt alocate în mod dinamic unuia din cele două tipuri de nuclee Se poate obține o reducere a consumului de energie cu până la 75% Sisteme de calcul dedicate (06-1) 11.12.2018 40
Tehnologia ARM big.little (2) Pentru conectarea nucleelor se utilizează o interconexiune care asigură coerența între memoriile cache Exemplu de interconexiune: CoreLink Cache Coherent Interconnect (CCI) Asigură coerența memoriilor cache între nuclee, GPU și alte interfețe sau acceleratoare Alocarea taskurilor la nuclee: cu modelul software Global Task Scheduling (GTS) Se anticipează cerințele de performanță ale firelor de execuție Sisteme de calcul dedicate (06-1) 11.12.2018 41
Procesoare ARM Prezentare generală Arhitecturile ARMv1.. ARMv6 Arhitectura ARMv7 Arhitectura ARMv8 Sisteme de calcul dedicate (06-1) 11.12.2018 42
Arhitectura ARMv8 Arhitectura ARMv8 Prezentare generală Starea de execuție AArch32 Starea de execuție AArch64 Sisteme de calcul dedicate (06-1) 11.12.2018 43
Prezentare generală (1) Se păstrează profilurile arhitecturale introduse în versiunea ARMv7: A, R, M Se va descrie doar profilul ARMv8-A S-au păstrat majoritatea extensiilor din versiunile precedente, cu excepția Jazelle DBX Extensia NEON și arhitectura VFP fac parte din arhitectura ARMv8-A de bază Extensie criptografică opțională: pentru algoritmul de criptare AES și funcțiile SHA-1, SHA-256 Sisteme de calcul dedicate (06-1) 11.12.2018 44
Prezentare generală (2) Stare de execuție: definește mediul de execuție pentru un EP Registre, seturi de instrucțiuni, modelul excepțiilor Două stări de execuție, AArch32 și AArch64 AArch32: stare de execuție de 32 de biți Compatibilă cu versiunile precedente ale arhitecturii Setul de instrucțiuni A32 (ARM) Setul de instrucțiuni T32 (Thumb-2) AArch64: stare de execuție de 64 de biți Adrese de 64 de biți, operanzi de 32 sau 64 de biți Nou set de instrucțiuni, A64 Sisteme de calcul dedicate (06-1) 11.12.2018 45
Prezentare generală (3) Modelul excepțiilor AArch32 Același model ca și în arhitectura ARMv7 Bazat pe modurile EP AArch64 Bazat pe patru nivele de excepție, EL0.. EL3 Nivelul EL0: neprivilegiat Nivelele EL1, EL2, EL3: privilegiate Execuția poate trece de la un nivel la altul doar la apariția unei excepții sau la revenirea dintr-o excepție Implementări: Cortex-A5x, Cortex-A7x, Apple Ax, Qualcomm Snapdragon 83x/84x/85x Sisteme de calcul dedicate (06-1) 11.12.2018 46
Arhitectura ARMv8 Arhitectura ARMv8 Prezentare generală Starea de execuție AArch32 Starea de execuție AArch64 Sisteme de calcul dedicate (06-1) 11.12.2018 47
Starea de execuție AArch32 (1) Moduri ale EP Sunt prevăzute pentru execuția normală a programelor și pentru tratarea excepțiilor Fiecare mod este implementat la un anumit nivel de excepție User (usr): execuție neprivilegiată (EL0) Programele executate în acest mod nu pot accesa resurse sau zone de memorie protejate FIQ (fiq): tratarea unei cereri de întrerupere rapidă (EL1 sau EL3) IRQ (irq): tratarea unei cereri de întrerupere normală (EL1 sau EL3) Sisteme de calcul dedicate (06-1) 11.12.2018 48
Starea de execuție AArch32 (2) Supervisor (svc): tratarea excepției Supervisor Call instrucțiunea SVC (EL1 sau EL3) Monitor (mon): tratarea excepției Secure Monitor Call instrucțiunea SMC (EL3) Abort (abt): tratarea excepției Data Abort sau Prefetch Abort (EL1 sau EL3) Hyp (hyp): tratarea excepției Hypervisor Call instrucțiunea HVC (EL2) Undefined (und): tratarea excepției de instrucțiune nedefinită (EL1 sau EL3) System (sys): nu apare în urma unei excepții, ci prin scrierea biților de mod din registrul CPSR Sisteme de calcul dedicate (06-1) 11.12.2018 49
Starea de execuție AArch32 (3) Registre disponibile Pentru aplicații Registrele generale R0.. R14 R13: SP (Stack Pointer) R14: LR (Link Register) Registre speciale: R15 (PC Program Counter); APSR (Application Program Status Register) Pentru sistem Copii ale unor registre: SP (de ex., SP_svc), LR (de ex., LR_fiq), CPSR (de ex., SPSR_irq) Sisteme de calcul dedicate (06-1) 11.12.2018 50
Starea de execuție AArch32 (4) Sisteme de calcul dedicate (06-1) 11.12.2018 51
Starea de execuție AArch32 (5) Registre pentru instrucțiuni SIMD și în VM Set de registre separat de registrele generale Instrucțiuni SIMD avansate: operații asupra elementelor vectorilor Un registru poate conține elemente de același tip Elementele pot fi întregi sau valori în VM cu precizie simplă Numărul de elemente depinde de tipul lor și dimensiunea registrului Instrucțiuni în VM: operații scalare în VM cu precizie simplă sau dublă Sisteme de calcul dedicate (06-1) 11.12.2018 52
Starea de execuție AArch32 (6) Set comun de registre (SIMD și VM): 32 registre de 64 biți Vederi diferite ale registrelor pentru instrucțiunile SIMD avansate și cele în VM Instrucțiuni SIMD avansate: 32 registre de 64 biți, D0.. D31, sau 16 registre de 128 biți, Q0.. Q15 Instrucțiuni în VM: 32 registre de 32 biți, S0.. S31, sau 32 registre de 64 biți, D0.. D31 Sisteme de calcul dedicate (06-1) 11.12.2018 53
Starea de execuție AArch32 (7) Sisteme de calcul dedicate (06-1) 11.12.2018 54
Arhitectura ARMv8 Arhitectura ARMv8 Prezentare generală Starea de execuție AArch32 Starea de execuție AArch64 Sisteme de calcul dedicate (06-1) 11.12.2018 55
Starea de execuție AArch64 (1) 31 registre generale: R0.. R30 Pot fi accesate ca registre de 64 biți (X0.. X30) sau ca registre de 32 de biți (W0.. W30) X30: registru de legătură ZR: registru zero nu este un registru fizic SP: indicator de stivă dedicat (64 biți) Cuvântul inferior poate fi accesat prin numele WSP PC: contor de program (64 biți) Nu poate fi înscris prin program Sisteme de calcul dedicate (06-1) 11.12.2018 56
Starea de execuție AArch64 (2) Set comun de registre pentru instrucțiuni SIMD avansate și în VM 32 registre de 128 biți, V0.. V31 Registrele pot fi accesate ca și: Cuvinte cvadruple (128 biți), Q0.. Q31 Cuvinte duble (64 biți), D0.. D31 Cuvinte (32 biți), S0.. S31 Semi-cuvinte (16 biți), H0.. H31 Octeți, B0.. B31 Sisteme de calcul dedicate (06-1) 11.12.2018 57