ARM | |
---|---|
A.R.M.-logo | |
Udvikler | ARM Limited |
Lidt dybde | ARMv7 64/32 bit, op til ARMv8 kun 64 bit |
Fremlagde | 1985 |
Arkitektur | RISC |
Type | register-register |
SK kodning |
ARMv8: fast (64 bit), undtagen i ARMv7- kodekompatibilitetstilstand ARMv7/6: blandet (32 og 16 bit justeret) ARMv3/2: fast (32 bit) |
Transition Implementering | ved tilstandsflag |
Byte rækkefølge | Skiftbar (big-endian), normalt fra lav til høj (little-endian) |
Udvidelser |
NEON, Thumb-2 (obligatorisk siden ARMv7), Jazelle, VFPv4-D16, VFPv4 (alle obligatoriske i ARMv8) På mikrocontrollere: FPv4-SP |
Mediefiler på Wikimedia Commons |
ARM-arkitektur (fra engelsk Advanced RISC Machine - en avanceret RISC-maskine; nogle gange - Acorn RISC Machine ) - et system af kommandoer og en familie af beskrivelser og færdiglavede topologier af 32-bit og 64-bit mikroprocessor / mikrocontroller - kerner udviklet af ARM Limited [1] .
Blandt licenstagerne af færdiglavede ARM-kernetopologier er AMD , Apple , Analog Devices , Atmel , Xilinx , Cirrus Logic , Intel (indtil 27. juni 2006), Marvell , NXP , STMicroelectronics , Samsung , LG , MediacommTek , Qual , Sony , Texas Instruments , Nvidia , Freescale , Milandr , ELVIS [2] , HiSilicon , Baikal Electronics .
Væsentlige processorfamilier: ARM7 , ARM9 , ARM11 og Cortex [3] [4] .
Mange licenstagere designer deres egne kernetopologier baseret på ARM-instruktionssættet: DEC StrongARM , Freescale i.MX, Intel XScale , NVIDIA Tegra , ST-Ericsson Nomadik , Krait og Kryo i Qualcomm Snapdragon , Texas Instruments OMAP , Samsung Hummingbird , LG H13 , Apple A6 og HiSilicon K3 .
I 2006 var omkring 98 % af de mere end én milliard mobiltelefoner, der sælges årligt, udstyret med mindst én ARM-processor [5] . Fra 2009 udgjorde ARM-processorer op til 90% af alle indlejrede 32-bit-processorer [6] . ARM-processorer er meget udbredt i forbrugerelektronik, herunder smartphones, mobiltelefoner og afspillere, håndholdte spillekonsoller, lommeregnere, smarture og computerudstyr såsom harddiske eller routere.
Disse processorer har lavt strømforbrug, så de er meget udbredt i indlejrede systemer og dominerer markedet for mobilenheder, hvor denne faktor er kritisk.
Efter at have opnået en vis succes med BBC Micro -computeren, overvejede det britiske firma Acorn Computers at gå fra de relativt svage MOS Technology 6502-processorer til mere kraftfulde løsninger og gå ind på erhvervscomputermarkedet med den samme BBC Micro -platform . Processorer som Motorola 68000 og 32016 fra National Semiconductor var uegnede til dette, og 6502'eren var ikke kraftig nok til at understøtte en grafisk brugergrænseflade [7] .
Virksomheden havde brug for en helt ny arkitektur, efter at den havde testet alle de tilgængelige processorer og fundet dem ineffektive. Acorn var seriøs med at udvikle sin egen processor, og deres ingeniører begyndte at studere dokumentationen af RISC-projektet , udviklet ved University of California i Berkeley . De troede, at siden en gruppe studerende formåede at skabe en fuldstændig konkurrencedygtig processor, så ville deres ingeniører ikke være vanskelige. En tur til Western Design Center (Arizona) viste ingeniørerne Steve Ferber og Sophie Wilson (dengang kendt som Roger [8] ), at de ikke ville have brug for utrolige ressourcer til at udføre denne plan.
Wilson gik i gang med at udvikle instruktionssættet ved at bygge en simulering af den nye processor på en BBC Micro-computer. Hendes succes med dette overbeviste Acorn-ingeniørerne om, at de var på rette vej. Men før de kunne gå længere, havde de brug for flere ressourcer, så det var tid for Wilson at gå til Acorn CEO Herman Hauser og forklare, hvad der foregik. Efter at han gav grønt lys, samledes et lille team for at implementere Wilson-modellen i hardware.
Det officielle Acorn RISC Machine-projekt startede i oktober 1983. VLSI Technology siliciumleverandør, da det allerede havde leveret Acorn med ROM- chips og nogle tilpassede integrerede kredsløb Udviklingen blev ledet af Wilson og Ferber . Deres hovedmål var at opnå den lave latens afbrydelseshåndtering af MOS Technology 6502. Hukommelsesadgangsarkitekturen taget fra 6502 gjorde det muligt for udviklerne at opnå god ydeevne uden den dyre implementering af DMA- modulet . Den første processor blev produceret af VLSI den 26. april 1985 - det var da den først begyndte at virke og fik navnet ARM1. De første masseproducerede processorer, kaldet ARM2, blev tilgængelige året efter.
Dens første brug var som en anden processor hos BBC Micro , hvor den blev brugt i udviklingen af simuleringssoftware, som fuldendte computerens supportchips, samt fremskyndede CAD -softwaren , der blev brugt i udviklingen af ARM2. Wilson optimerede ARM-instruktionssættet til at køre BBC BASIC . Det oprindelige mål med en all-ARM-computer blev opnået i 1987 med udgivelsen af Acorn Archimedes.
Stemningen omkring ARM-projektet var så hemmelighedsfuld, at da Olivetti forhandlede om at købe en majoritetsandel i Acorn i 1985, talte de ikke om udviklingen af projektet før forhandlingernes afslutning. I 1992 vandt Acorn igen Queen's Award for Enterprise for ARM.
ARM2 havde en 32-bit databus, et 26-bit adresserum og 16 32-bit registre. Programkoden skulle ligge i de første 64 megabyte hukommelse, og programtælleren var begrænset til 26 bit, da de øverste 4 og de nederste 2 bits i et 32-bit register fungerede som flag. ARM2 er blevet måske den enkleste af de populære 32-bit processorer i verden med kun 30 tusinde transistorer (til sammenligning havde Motorola 68000 processoren, lavet 6 år tidligere, 68 tusinde transistorer). Meget af denne enkelhed skyldes manglen på mikrokode (som i 68000'eren fylder mellem en fjerdedel og en tredjedel af matricearealet) og manglen på cache , som det var tilfældet med mange datidens processorer. Denne enkelhed førte til lave energiomkostninger, mens ARM var meget mere produktiv end Intel 80286 . Dens efterfølger, ARM3-processoren, havde allerede en 4 KB cache, hvilket øgede ydeevnen endnu mere.
I slutningen af 1980'erne begyndte Apple Computer og VLSI Technology at arbejde med Acorn Computers på nye versioner af ARM-kernen. Arbejdet var så vigtigt, at Acorn i 1990 foldede udviklingsteamet sammen til et nyt firma kaldet Advanced RISC Machines . Af denne grund forkortes ARM nogle gange som Advanced RISC Machines i stedet for Acorn RISC Machine . Advanced RISC Machines blev til ARM, da dets moderselskab ARM Holdings blev noteret på London Stock Exchange og NASDAQ i 1998.
Det nye Apple-ARM-værk udviklede sig til sidst til ARM6, som først blev udgivet i 1992. Apple brugte den ARM6-baserede ARM610-processor som grundlag for sit Apple Newton PDA-produkt. I 1994 begyndte Acorn at bruge ARM610 som hovedprocessor i sine RISC pc-computere . DEC købte også en licens til ARM6- arkitekturen (skabte lidt forvirring, da de også lavede Alpha -processorer ) og begyndte at lave StrongARM. Ved 233 MHz krævede denne processor kun 1 watt strøm (senere versioner krævede meget mindre). Intel fik senere rettighederne til dette værk som følge af en retssag. Intel benyttede lejligheden til at supplere deres gamle I960-serie med StrongARM-processoren og udviklede senere deres version af kernen under mærkenavnet XScale , som de efterfølgende solgte til Marvell .
ARM-kernen holdt den samme størrelse efter alle disse ændringer. ARM2 havde 30.000 transistorer.
Grundlæggende har familiens processorer erobret segmentet af massemobilprodukter (mobiltelefoner, PDA'er) og indlejrede systemer med medium og høj ydeevne (fra netværksroutere og adgangspunkter til tv'er). Nogle virksomheder annoncerer udviklingen af effektive servere baseret på klynger af ARM-processorer [10] , men indtil videre er der kun tale om eksperimentelle projekter med en 32-bit arkitektur [11] .
Den tidligere leder af listen, Summit-supercomputeren (OLCF-4) , udviklet i fællesskab af IBM (serverknudepunkter), Mellanox (sammenkobling) og Nvidia (grafikacceleratorer), og installeret på Oak Ridge National Laboratory , blev den anden og mistede hæderlig førsteplads til det nye japanske topsystem Fugaku ( rus. Fugaku ), som viste et High Performance / Highly Parallel Linpack (HPL) resultat på 415,5 petaflops. Denne indikator overstiger Summits muligheder med 2,8 gange. Fugaku er drevet af Fujitsus 48-core A64FX SoC, hvilket gør det til det første #1-system nogensinde på TOP500-listen med ARM-processorer. Ved enkelt eller lavere præcision, som ofte bruges til maskinlæring og kunstig intelligens opgaver, topper Fugaku med over 1.000 petaflops (1 exaflops). Det nye system er installeret på RIKEN Computational Science Center (R-CCS) i Kobe, Japan.
Flere familier af ARM-processorer er i øjeblikket betydelige:
I 2010 annoncerede producenten Cortex-A15-processorer med kodenavnet Eagle, ARM hævder, at Cortex A15-kernen er 40 procent hurtigere ved samme frekvens end Cortex-A9- kernen med det samme antal kerner pr. chip [12] . Produktet, der er fremstillet ved hjælp af en 28-nm procesteknologi, har 4 kerner, kan fungere ved en frekvens på op til 2,5 GHz og vil blive understøttet af mange moderne operativsystemer [13] [14] .
Marvells populære xScale - familie af mikroprocessorer (indtil 27. juni 2007 - Intel [15] ) er faktisk en udvidelse af ARM9 -arkitekturen , suppleret med det trådløse MMX- instruktionssæt , specielt udviklet af Intel til at understøtte multimedieapplikationer.
ARM-kerneversioner (tabel)Kernel familie | Arkitektur version | Nucleus | Funktioner | Cache (I/D)/ MMU | Typisk MIPS @ MHz | Brug |
---|---|---|---|---|---|---|
ARM1 | ARMv1 (udfaset) | ARM1 | Ikke | ARM Evaluation System BBC Micro processor | ||
ARM2 | ARMv2 (udfaset) | ARM2 | Tilføjet MUL-kommando (multiplicer) | Ikke | 4 MIPS @ 8 MHz 0,33 DMIPS /MHz |
Acorn Archimedes , skakmaskine |
ARMv2a (udfaset) | ARM250 | Integreret MEMC (MMU), GPU, tilføjede SWP og SWPB (swap) kommandoer | Nej, MEMC1a | 7 MIPS @ 12 MHz | Acorn Archimedes | |
ARM3 | ARMv2a (udfaset) | ARM2a | Første brugte cache | 4 KB i alt | 12 MIPS @ 25 MHz 0,50 DMIPS/MHz |
Acorn Archimedes |
ARM6 | ARMv3 (udfaset) | ARM60 | 32-bit (i stedet for 26-bit) hukommelsesadresserum introduceret for første gang | Ikke | 10 MIPS @ 12 MHz | 3DO Interactive Multiplayer , Zarlink GPS-modtager |
ARM600 | Ligesom ARM60, FPA10 matematisk coprocessor med flydende komma | 4 KB i alt | 28 MIPS @ 33 MHz | |||
ARM610 | Ligesom ARM60, cache, ingen coprocessor bus | 4 KB i alt | 17 MIPS @ 20 MHz 0,65 DMIPS/MHz |
Acorn Risc PC 600 , Apple Newton 100-serien | ||
ARM7 | ARMv3 (udfaset) | ARM700 | 8 KB i alt | 40 MHz | Acorn Risc PC Prototype CPU-kort | |
ARM710 | Ligesom ARM700 | 8 KB i alt | 40 MHz | Acorn Risc PC 700 | ||
ARM710a | Ligesom ARM700 | 8 KB i alt | 40 MHz 0,68 DMIPS /MHz |
Acorn Risc PC 700 , Apple eMate 300 | ||
ARM7100 | Ligesom ARM710a, integreret SoC | 8 KB i alt | 18 MHz | Psion Series 5 | ||
ARM7500 | Ligesom ARM710a, integreret SoC. | 4 KB i alt | 40 MHz | Acorn A7000 | ||
ARM7500FE | Ligesom ARM7500 tilføjede "FE" FPA- og EDO-hukommelsescontrollere | 4 KB i alt | 56 MHz 0,73 DMIPS/ MHz |
Acorn A7000+ netværkscomputer | ||
ARM7TDMI | ARMv4T | ARM7TDMI(-S) | 3-trins transportbånd, tommelfinger-tilstand | Ikke | 15 MIPS @ 16,8 MHz 63 DMIPS @ 70 MHz |
Game Boy Advance , Nintendo DS , Apple iPod , Lego NXT , Atmel AT91SAM 7, Juice Box , NXP Semiconductors LPC2000 og LH754xx , Actels CoreMP7 |
ARM710T | Ligesom ARM7TDMI, cache | 8 KB delt, MMU | 36 MIPS @ 40 MHz | Psion Series 5mx , Psion Revo /Revo Plus/Diamond Mako | ||
ARM720T | Ligesom ARM7TDMI, cache | 8 KB delt , MMU med Fast Context Switch Extension | 60 MIPS @ 59,8 MHz | Zipit Wireless Messenger , NXP Semiconductors LH7952x | ||
ARM740T | Ligesom ARM7TDMI, cache | MPU | ||||
ARMv5TEJ | ARM7EJ-S | 5-trins pipeline, Thumb, Jazelle DBX, avancerede DSP-kommandoer | ingen | |||
StærkARM | ARMv4 | SA-110 | 16KB/16KB MMU | 203 MHz 1,0 DMIPS /MHz |
Apple Newton 2x00-serien, Acorn Risc PC , Rebel/Corel Netwinder, Chalice CATS | |
SA-1100 | Ligesom SA-110, integreret SoC | 16KB/8KB MMU | 203MHz | Psion netbook | ||
SA-1110 | Ligesom SA-110, integreret SoC | 16KB/8KB MMU | 206MHz | LART (computer) , Intel Assabet, Ipaq H36x0, Balloon2 , Zaurus SL-5x00, HP Jornada 7xx, Jornada 560 series , Palm Zire 31 | ||
ARM8 | ARMv4 | ARM810 [16] | 5-trins pipeline, statisk gren forudsigelse, dobbelt-båndbredde hukommelse | 8 KB samlet, MMU | 84 MIPS @ 72 MHz 1,16 DMIPS/MHz |
Acorn Risc PC Prototype CPU-kort |
ARM9TDMI | ARMv4T | ARM9TDMI | 5-trins transportbånd, tommelfinger | ingen | ||
ARM920T | Ligesom ARM9TDMI, cache | 16 KB/16 KB, MMU med FCSE (Fast Context Switch Extension) [17] | 200 MIPS @ 180 MHz | Armadillo , Atmel AT91SAM 9, GP32 , GP2X (første kerne), Tapwave Zodiac ( Motorola i. MX1), Hewlett Packard HP-49/50 lommeregnere , Sun SPOT , Cirrus Logic EP9302, EP9307, EP9312, 42 EP9312 , 429 HTCN , FIC Neo FreeRunner [18] ), Samsung S3C2410 ( TomTom navigationsenheder) [19] | ||
ARM922T | Ligesom ARM9TDMI, cache | 8KB/8KB MMU | NXP Semiconductors LH7A40x | |||
ARM940T | Ligesom ARM9TDMI, cache | 4 KB/4 KB MPU | GP2X (anden kerne), Meizu M6 Mini Player [20] [21] | |||
ARM9E | ARMv5TE | ARM946E-S | Tommelfinger, Forbedrede DSP-instruktioner, caches | variable, tæt koblede hukommelser, MPU | Nintendo DS , Nokia N-Gage , Canon PowerShot A470 , Canon EOS 5D Mark II [22] , Conexant 802.11 chips, Samsung S5L2010 | |
ARM966E-S | Tommelfinger, Enhanced DSP instruktioner | ingen cache, TCM'er | STM STR91xF, inklusive Ethernet [23] | |||
ARM968E-S | Ligesom ARM966E-S | ingen cache, TCM'er | NXP Semiconductors LPC2900 | |||
ARMv5TEJ | ARM926EJ-S | Tommelfinger, Jazelle DBX, Enhanced DSP instruktioner | variabler, TCM'er, MMU'er | 220 MIPS @ 200 MHz | Mobiltelefoner: Sony Ericsson (K, W-serien); Siemens og Benq (x65-serien og nyere); LG Arena , LG Cookie Fresh ; TI OMAP1710 ... OMAP1612 , OMAP-L137 , OMAP-L138 ; Qualcomm MSM6100…MSM6800; Freescale i.MX21 , i.MX27, Atmel AT91SAM 9, NXP Semiconductors LPC3000 , GPH Wiz, NEC C10046F5-211-PN2-A SoC — udokumenteret kerne i ATi Hollywood -grafikchippen brugt i Wii, [24] Samsung S23 brugt iC241 Squeezebox Duet 's controller. Squeezebox Radio ; NeoMagic MiMagic Family MM6, MM6+, MM8, MTV; Buffalo TeraStation Live ( NAS ); Telechips TCC7801, TCC7901; ZiiLABS ' ZMS-05 system på en chip; Western Digital MyBook I World Edition | |
ARMv5TE | ARM996HS | Urløs processor som ARM966E-S | ingen caches, TCM'er, MPU'er | |||
ARM10E | ARMv5TE | ARM1020E | 6-trins pipeline, tommelfinger, forbedrede DSP instruktioner, (VFP) | 32KB/32KB MMU | ||
ARM1022E | Ligesom ARM1020E | 16KB/16KB MMU | ||||
ARMv5TEJ | ARM1026EJ-S | Thumb, Jazelle DBX, Enhanced DSP instruktioner, (VFP) | variabel, MMU eller MPU | Western Digital MyBook II World Edition; Conexant so4610 og so4615 ADSL SoCs | ||
Xscale | ARMv5TE | 80200/IOP310/IOP315 | I/O-processor, tommelfinger, forbedret DSP-instruktioner | |||
80219 | 400/600 MHz | Thecus N2100 | ||||
IOP321 | 600 Bogo Mips @ 600 MHz | Iyonix | ||||
IOP33x | ||||||
IOP34x | 1-2 kerner, RAID-acceleration | 32K/32K L1, 512K L2, MMU | ||||
PXA210/PXA250 | Applikationsprocessor, 7-trins pipeline | PXA210: 133 og 200 MHz, PXA250: 200, 300 og 400 MHz | Zaurus SL-5600, iPAQ H3900, Sony CLIÉ NX60, NX70V, NZ90 | |||
PXA255 | 32KB/32KB MMU | 400 Bogo Mips @ 400 MHz; 371-533 MIPS @ 400 MHz [25] | Gumstix basix & connex , Palm Tungsten E2, Zaurus SL-C860, Mentor Ranger & Stryder , iRex ILiad | |||
PXA263 | 200, 300 og 400 MHz | Sony CLIÉ NX73V, NX80V | ||||
PXA26x | standard 400 MHz, op til 624 MHz | Palm Tungsten T3 | ||||
PXA27x | Applikationsbehandler | 32KB/32KB MMU | 800 MIPS @ 624 MHz | Gumstix verdex , "Trizeps-Modules" PXA270 COM, HTC Universal, HP hx4700, Zaurus SL-C1000, 3000, 3100, 3200, Dell Axim x30, x50 og x51 series, Motorola Q, Balloon 3 , Motorola TX Greenphone , Troll Ezx Platform A728, A780, A910, A1200, E680, E680i, E680g, E690, E895, Rokr E2, Rokr E6, Fujitsu Siemens LOOX N560, Toshiba Portégé G500, Toshiba Porté Tregé G900, i-Papit G500, Z-Papit 500, i HP forretningsnavigator | ||
PXA800(E)F | ||||||
PXA3XX (kodenavnet "Monahans") | PXA31x har en hardware-grafikaccelerator | 32KB/32KB L1, TCM, MMU | 800 MIPS @ 624 MHz | highscreen alex | ||
PXA900 | Blackberry 8700, Blackberry Pearl (8100) | |||||
IXC1100 | Control Plane Processor | |||||
IXP2400/IXP2800 | ||||||
IXP2850 | ||||||
IXP2325/IXP2350 | ||||||
IXP42x | NSLU2 IXP460/IXP465 | |||||
ARM11 | ARMv6 | ARM1136J(F)-S [26] | 8-trins pipeline, SIMD , Thumb, Jazelle DBX, (VFP), forbedrede DSP instruktioner | variabel, MMU | 740 @ 532-665 MHz (i.MX31 SoC), 400-528 MHz | TI OMAP2420 ( Nokia E90 , Nokia N93 , Nokia N95 , Nokia N82 ), Zune , BUGbase [1] , Nokia N800 , Nokia N810 , Qualcomm MSM7200 (med integreret ARM926EJ-S Coprocessor@274 MHz, brugt i Eten Glofiish , HTC TyTN IIish , HTC Nike ), Freescale i.MX31 (brugt i den originale Zune 30gb og Toshiba Gigabeat S), Freescale MXC300-30 ( Nokia E63 , Nokia E71 , Nokia E72 , Nokia 5800 , Nokia E51 , Nokia 6700 Classic , Nokia 6120 Classic , Nokia 6120 Classic Qualcomm MSM7201A som set i HTC Dream , HTC Magic , Motorola ZN5 , Motorola E8 , Motorola VE66 , Nokia 6210 Navigator , Nokia 6220 Classic , Nokia 6290 , Nokia 6710 Navigator , Nokia 6720 Classic , Motorola Z6 , HTC SGH - Z6 i627 (Propel Pro) , Qualcomm MSM7227 / MSM7227T, HTC Legend , HTC Wildfire S , LG P500, LG GT540, [27] [28] |
ARMv6T2 | ARM1156T2(F)-S | 9-trins pipeline, SIMD , Thumb-2, (VFP), forbedrede DSP-instruktioner | variabel, MPU | |||
ARMv6KZ | ARM1176JZ(F)-S | Ligesom ARM1136EJ(F)-S | variabel, MMU+TrustZone | Apple iPhone (original og 3G) , Apple iPod touch (1. og 2. generation) , Conexant CX2427X , Motorola RIZR Z8 , Motorola RIZR Z10 , NVIDIA GoForce 6100 [29] ; Mediatek MT6573 [30] ; Telechips TCC9101, TCC9201, TCC8900, Fujitsu MB86H60 , Samsung S3C6410 (f.eks. Samsung Moment ), S3C6430 [31] | ||
ARMv6K | ARM11MPCore | Ligesom ARM1136EJ(F)-S, 1-4 kerne SMP | variabel, MMU | Nvidia APX 2500 | ||
Kernel familie | Arkitektur version | Nucleus | Funktioner | Cache (I/D)/MMU | Typisk MIPS @ MHz | Ansøgninger |
Cortex | ARMv7-A | Cortex-A5 | VFP, NEON, Jazelle RCT og DBX, Thumb-2, 8-trins pipeline, i orden, 1-4 kerne SMP | variabel (L1), MMU+TrustZone | op til 1500 (1,5 DMIPS/MHz) | "Sparrow" (ARM-kodenavn) [32] [33] [34] |
Cortex-A8 | VFP, NEON, Jazelle RCT, Thumb-2; 13-trins pipeline, i orden, 2 dekodere [35] | variabel (L1+L2), MMU+TrustZone | op til 2000 (2,0 DMIPS/MHz i hastighed fra 600 MHz til mere end 1 GHz) | TI OMAP3xxx-serien , SBM7000, Oregon State University OSWALD , Gumstix Overo Earth , Pandora , Apple iPhone 3GS , Apple iPod touch (3. generation) , Apple iPad ( Apple A4- processor), Apple iPhone 4 ( Apple A4- processor), Archos 5 , Archos 101 , FreeScale i.MX51- SOC , BeagleBoard , Motorola Droid , Motorola Droid X , Palm Pre , Samsung Omnia HD , Samsung Wave S8500 , Nexus S , Sony Ericsson Satio , Touch Book , Nokia N900 , Meizu M9 , ZiiLABS ZMS-08 system på en chip, Boxchip A13 | ||
Cortex-A9 | Applikationsprofil, (VFP), (NEON), Jazelle RCT og DBX, Thumb-2, Superskalar for spekulativt spørgsmål uden for orden (2 dekodere); 9-12 [35] rørledningstrin | MMU+TrustZone | 2,5 DMIPS/MHz | Apple iPhone 4S , Apple iPad 2 ( Apple A5 ), MediaTek MT6575/6515M, iconBIT NetTAB SKY 3G | ||
Cortex-A9 MPCore | Ligesom Cortex-A9, 1-4 kerne SMP | MMU+TrustZone | 10.000 DMIPS @ 2 GHz på ydeevneoptimeret TSMC 40G (quad core?) (2,5 DMIPS/MHz pr. kerne) | PlayStation® Vita , TI OMAP4430/4440 , ST-Ericsson U8500 , Nvidia Tegra2 , Samsung Exynos 4210, MediaTek MT6577/6517 | ||
Cortex-A15 MPCore | 1-32 kerne SMP; Ude af drift superskalar (3 dekodere); 15+ transportørtrin [35] ; VFPv4, NEON [36] | MMU, LPAE | 3,5 DMIPS/MHz/kerne; 1,0 GHz - 2,5 GHz (@ 28 nm [35] ) | |||
Cortex-A7 MPCore [37] | FPU,NEON; I rækkefølge (1 dekoder); 8 trins transportør. | MMU, LPAE | 1,9 DMIPS/MHz/CPU; 0,8-1,5 GHz (@28nm) | (Broadcom, Freescale, HiSilicon, LG, Samsung, STERicsson, Texas Instruments, MediaTek) | ||
ARMv7-R | Cortex-R4(F) | Indlejret profil, Thumb-2, (FPU) | variabel cache, valgfri MPU | 600 DMIPS @ 475 MHz | Broadcom er en bruger, TI TMS570 | |
ARMv7-ME | Cortex-M4 (kodenavnet "Merlin") [38] | Mikrocontroller profil, både Thumb og Thumb-2, FPU. Hardware MAC, SIMD og opdeling instruktioner | MPU valgfri | 1,25 DMIPS/MHz | NXP Semiconductors , STM32 , TI Stellaris LM4F | |
ARMv7-M | Cortex-M3 | Mikrocontroller-profil, kun Thumb-2. hardwareopdelingsinstruktioner | ingen cache, valgfri MPU | 125 DMIPS @ 100 MHz | TI Stellaris , STM STM32 , NXP LPC1700 , Toshiba TMPM330FDFG , Ember 's EM3xx Series, Atmel AT91SAM 3, Europe Technologies EasyBCU , Energy Micro 's EFM32 , Actel 's SmartFusion , Milandre 1986 ] | |
ARMv6-M | Cortex-M0 (kodenavnet "Swift") [39] | Mikrocontrollerprofil, Thumb-2-undersæt (16-bit Thumb-instruktioner & BL, MRS, MSR, ISB, DSB og DMB) | Ingen cache | 0,9 DMIPS/MHz | NXP Semiconductors NXP LPC1100 [40] , Triad Semiconductor [41] , Melfas [42] , Chungbuk Technopark [43] , Nuvoton [44] , austriamicrosystems [45] , Milandre K1986BE2T [3] | |
Cortex-M1 | FPGA-målrettet, mikrocontrollerprofil, Thumb-2-undersæt (16-bit tommelfingerinstruktioner & BL, MRS, MSR, ISB, DSB og DMB) | Ingen, tæt koblet hukommelse valgfri | Op til 136 DMIPS @ 170 MHz [46] (0,8 DMIPS/MHz, [47] MHz opnåelig FPGA-afhængig) | Actel ProASIC3, ProASIC3L, IGLOO og Fusion PSC-enheder , Altera Cyclone III , andre FPGA-produkter understøttes også, f.eks. Synplicity | ||
Kernel familie | Arkitektur version | Nucleus | Funktioner | Cache (I/D)/ MMU | Typisk MIPS @ MHz | Ansøgninger |
Der har længe været en ARM-arkitektur-referenceguide, der afgrænser alle de typer interfaces, som ARM understøtter, da implementeringsdetaljerne for hver processortype kan variere. Arkitekturen har udviklet sig over tid, og siden ARMv7 er 3 profiler blevet defineret:
Profiler understøtter muligvis færre kommandoer (kommandoer af en bestemt type).
Processoren kan være i en af følgende driftstilstande:
Skift af processortilstand sker, når der opstår en passende undtagelse eller ved at ændre statusregistret.
For at holde enheden ren, enkel og hurtig blev den originale ARM-fremstilling udført uden mikrokode , ligesom den enklere 8-bit 6502-processor, der blev brugt i tidligere mikrocomputere fra Acorn Computers .
ARM instruktionssætDen tilstand, hvori 32-bit instruktionssættet udføres.
ARM-basisinstruktionssæt: [49]
ADC, ADD, AND, B/BL, BIC, CMN, CMP, EOR, LDM, LDR/LDRB, MLA, MOV, MUL, MVN, ORR, RSB, RSC, SBC, STM, STR/STRB, SUB, SWI, SWP, TEQ, TST
Thumb-kommandosætFor at forbedre kodetætheden er processorer, der starter med ARM7TDMI, udstyret med en "thumb"-tilstand. I denne tilstand udfører processoren et alternativt sæt 16-bit instruktioner. De fleste af disse 16-bit instruktioner er oversat til normale ARM instruktioner. Reduktionen i instruktionslængden opnås ved at skjule nogle operander og begrænse adresserbarheden sammenlignet med fuld ARM-instruktionssættilstand.
I Thumb-tilstand har mindre opkoder mindre funktionalitet. For eksempel kan kun grene være betingede, og mange opkoder er begrænset til kun at få adgang til halvdelen af hovedprocessorregistrene. Kortere opkoder resulterer generelt i større kodetæthed, selvom nogle opkoder kræver yderligere instruktioner. I situationer, hvor hukommelsesporten eller busbredden er begrænset til 16 bit, er de kortere Thumb-tilstand opkoder meget hurtigere end almindelige 32-bit ARM-opkoder, da mindre kode skal indlæses i processoren med begrænset hukommelsesbåndbredde.
Hardware som Game Boy Advance har typisk en lille mængde RAM tilgængelig med en fuld 32-bit datakanal. Men de fleste operationer udføres gennem en 16-bit eller smallere informationskanal. I dette tilfælde giver det mening at bruge Thumb-kode og manuelt optimere nogle tunge kodesektioner ved at skifte til fulde 32-bit ARM-instruktioner.
Den første processor med en Thumb-kommandodekoder var ARM7TDMI. Alle processorer i ARM9 -familien , såvel som XScale , havde en indbygget Thumb-kommando-dekoder.
Thumb-2 instruktionssætThumb-2 er en teknologi introduceret i ARM1156-kernen, som blev annonceret i 2003. Den udvider det begrænsede 16-bit Thumb-instruktionssæt med yderligere 32-bit instruktioner for at give instruktionssættet ekstra bredde. Målet med Thumb-2 er at opnå Thumb-lignende kodetæthed og 32-bit ARM instruktionssæt ydeevne. Vi kan sige, at i ARMv7 blev dette mål nået.
Thumb-2 udvider både ARM- og Thumb-instruktioner med endnu flere instruktioner, inklusive bitfeltmanipulation, tabelforgrening, betinget udførelse. Det nye "Unified Assembly Language" (UAL) understøtter byggekommandoer til både ARM og Thumb fra den samme kildekode. ARMv7-versionerne af Thumb ligner ARM-kode. Dette kræver forsigtighed og brug af den nye if-then-kommando, som understøtter udførelse af op til 4 på hinanden følgende testtilstandskommandoer. Den ignoreres under kompilering til ARM-kode, men genererer kommandoer under kompilering til ARM-kode. For eksempel:
; hvis (r0 == r1) CMP r0 , r1 ITE EQ ; ARM: ingen kode ... Tommelfinger: IT-instruktion ; så er r0 = r2; MOVEQ r0 , r2 ; ARM: betinget; Tommelfinger: tilstand via ITE 'T' (derefter) ; ellers r0 = r3; MOVNE r0 , r3 ; ARM: betinget; Tommelfinger: tilstand via ITE 'E' (andet) ; huske på, at Thumb MOV-instruktionen ikke har nogen bits til at kode "EQ" eller "NE"Alle ARMv7 dies understøtter Thumb-2 instruktionssættet, mens nogle dies, som Cortex-m3, kun understøtter Thumb-2. De resterende Cortex og ARM11 dies understøtter både Thumb-2 og ARM instruktionssæt.
Jazelle kommandosætJazelle er en teknologi, der gør det muligt for Java-bytekode at køre direkte på ARM-arkitekturen som en 3. udførelsestilstand (og instruktionssæt) sammen med almindelige ARM-instruktioner og Thumb-tilstand. Understøttelse af Jazelle-teknologi er angivet med bogstavet "J" i processornavnet - for eksempel ARMv5TEJ. Denne teknologi er blevet understøttet siden ARMv6-arkitekturen, selvom nyere kerner kun indeholder begrænsede implementeringer, der ikke understøtter hardwareacceleration.
ARMv8 og ARM 64-bit instruktionssættetI slutningen af 2011 udkom en ny version af arkitekturen, ARMv8. Det introducerede definitionen af AArch64-arkitekturen, hvor 64-bit A64-instruktionssættet udføres. Understøttelse af 32-bit kommandoer kaldes A32 og udføres på AArch32 arkitekturer. Tommelfingerinstruktioner understøttes i T32-tilstand, kun ved brug af 32-bit arkitekturer. Det er tilladt at køre 32-bit applikationer i et 64-bit OS og køre et virtualiseret 32-bit OS ved hjælp af en 64-bit hypervisor [50] . Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung, STM og andre har annonceret planer om at bruge ARMv8. Cortex-A53- og Cortex-A57-kernerne, der understøtter ARMv8, blev introduceret af ARM den 30. oktober 2012 [51] .
Både AArch32 og AArch64 understøtter VFPv3, VFPv4 og avanceret SIMD (NEON). Også tilføjet kryptografiske instruktioner til at arbejde med AES , SHA-1 og SHA-256 .
AArch64 funktioner:
ARM-arkitekturen har følgende RISC-funktioner:
For at kompensere for det enkle design er nogle designfunktioner blevet brugt i sammenligning med moderne processorer som Intel 80286 eller Motorola 68020:
En af de væsentlige forskelle mellem ARM-arkitekturen (original arkitektur) og andre CPU-arkitekturer er den såkaldte prædikation - evnen til at betinget udføre instruktioner. Med "betinget udførelse" mener vi her, at instruktionen vil blive eksekveret eller ignoreret afhængigt af den aktuelle tilstand af processorstatusflag. I Thumb and Arm 64 bruges forudsigelse ikke - i den første tilstand er der ingen plads til det i kommandoen (kun 16 bit), og i den anden - forudsigelse er meningsløs og vanskelig at implementere på superskalære arkitekturer .
Mens det for andre arkitekturer som regel kun er betingede springinstruktioner, der har denne egenskab, er ARM-arkitekturen designet til betinget at udføre næsten enhver instruktion. Dette blev opnået ved at tilføje et særligt 4-bit felt ( prædikat ) til deres instruktionskoder. En af dens værdier er forbeholdt det faktum, at instruktionen skal udføres ubetinget, og resten koder for en eller anden kombination af betingelser (flag). På den ene side, givet den begrænsede samlede længde af instruktionen, reducerede dette antallet af tilgængelige bits til kodning af forskydninger i hukommelsesadgangskommandoer, men på den anden side gjorde det det muligt at slippe af med forgreningsinstruktioner ved generering af kode til små hvis-blokke.
Et eksempel, der almindeligvis betragtes som illustration, er Euclids subtraktionsbaserede algoritme . I C-sprog ser det sådan ud:
mens ( i != j ) { if ( i > j ) { i -= j ; } andet { j -= i ; } }Og i ARM assembler - sådan her:
loop CMP Ri , Rj ; sæt betingelsen "NE" hvis (i != j), ; "GT" hvis (i > j), ; eller "LT" hvis (i < j) SUBGT Ri , Ri , Rj ; hvis "GT" (større end), i = ij; SUBLT Rj , Rj , Ri ; hvis "LT" (mindre end), j = ji; BNEloop ; _ hvis "NE" (ikke lig), så loopDet kan ses af koden, at brugen af prædikation gjorde det muligt helt at undgå at forgrene sig i else and then statements. Bemærk, at hvis Ri og Rj er ens, vil ingen af SUB-instruktionerne blive eksekveret, hvilket fuldstændigt eliminerer behovet for en gren, der implementerer et mens-tjek ved hver start af sløjfen, som kunne implementeres, for eksempel ved hjælp af SUBLE ( mindre end eller lig med) instruktion.
En måde, hvorpå Thumb-kode opnår større pladsbesparelser, er netop ved at fjerne 4-bit prædikatet fra alle instruktioner undtagen grene.
Et andet træk ved instruktionssættet er evnen til at kombinere forskydninger og rotationer i en "informationsbehandlings"-instruktion (aritmetisk, logisk, register-register-bevægelse), således at for eksempel udtrykket C:
a += ( j << 2 );kan konverteres til et ord og en cyklus instruktion i ARM:
ADD Ra , Ra , Rj , LSL #2Dette får typiske ARM-programmer til at være tættere end normalt med mindre hukommelsesadgang. Dermed bliver rørledningen brugt meget mere effektivt. Selvom ARM kører med hastigheder, som mange ville betragte som langsomme, konkurrerer den forholdsvis let med mange mere sofistikerede CPU-arkitekturer.
ARM-processoren har også nogle funktioner, der sjældent findes i andre RISC-arkitekturer, såsom adressering i forhold til programtælleren (faktisk er ARM-programtælleren en af 16 registre), såvel som før- og post-inkrement-adresseringstilstande.
En anden funktion, der er værd at bemærke, er, at nogle tidlige ARM-processorer (før ARM7TDMI), for eksempel, ikke har instruktioner til lagring af 2-byte-numre. Det er således strengt taget umuligt for dem at generere effektiv kode, der opfører sig som forventet fra C-objekter af typen "volatile int16_t".
ARM7 og tidligere har en tre-trins pipeline. Dette er stadierne af overførsel, afkodning og udførelse. Højere ydeevne arkitekturer som ARM9 har mere komplekse pipelines. Cortex-a8 har en 13-trins pipeline.
Arkitekturen giver mulighed for at udvide instruktionssættet ved hjælp af coprocessorer, der kan adresseres ved hjælp af MCR, MRC, MRRC, MCRR og lignende instruktioner. Coprocessorpladsen er logisk opdelt i 16 coprocessorer nummereret fra 0 til 15, hvor den 15. er reserveret til nogle typiske administrationsfunktioner såsom cache-styring og hukommelsesstyringsenhed ( på processorer, der har dem).
På ARM-baserede maskiner forbindes periferiudstyr typisk til processoren ved at kortlægge deres fysiske registre i ARM-hukommelse eller coprocessor-hukommelse, eller ved at tilslutte dem til busser, som igen er forbundet til processoren. Adgang til coprocessorer har en længere latenstid, så nogle perifere enheder er designet til at blive tilgået i begge retninger. I andre tilfælde bruger chipudviklere kun coprocessorintegrationsmekanismen. For eksempel bør en billedbehandlingsmotor bestå af en lille ARM7TDMI-kerne koblet med en coprocessor, der understøtter primitive operationer til behandling af elementære HDTV-kodninger.
Forbedret SIMD (NEON)En udvidelse af avanceret SIMD, også kaldet NEON-teknologi, er et kombineret 64-bit og 128-bit single instruction multiple data ( SIMD ) instruktionssæt, der giver standardiseret acceleration til medie- og signalbehandlingsapplikationer. NEON kan afkode mp3 -lydformat ved 10 MHz processorfrekvens og kan arbejde med GSM AMR (adaptive multi-rate) tale-codec ved maksimalt 13 MHz. Det har et imponerende sæt instruktioner, separate registerfiler og et uafhængigt eksekveringssystem på hardwareniveau. NEON understøtter 8-, 16-, 32-, 64-bit heltal, enkelt præcision og information om flydende komma og fungerer i SIMD-operationer til lyd- og videobehandling (grafik og spil). I NEON understøtter SIMD op til 16 operationer ad gangen.
En af ulemperne (eller f.eks. en funktion) ved den forbedrede SIMD er, at coprocessoren udfører instruktionerne fra den forbedrede SIMD med en ret betydelig forsinkelse i forhold til hovedprocessorkoden, forsinkelsen når to dusin cyklusser eller mere (afhængigt af arkitekturen og specifikke forhold). Af denne grund, når hovedprocessoren forsøger at bruge resultaterne af coprocessorens beregning, vil udførelsen blive fastfrosset i et betydeligt tidsrum.
VFPVFP (Vector Floating Point) teknologi er en udvidelse af coprocessoren i ARM-arkitekturen. Den udfører lavprisberegninger på enkelt/dobbelt præcision flydende kommatal, der er fuldt kompatible med ANSI/IEEE Std 754-1985 Standard for binær flydende kommaaritmetik . VFP udfører flydende kommaberegninger, der er velegnede til en lang række applikationer såsom PDA'er, smartphones, lydkomprimering, 3D-grafik og digital lyd, samt printere og set-top-bokse. VFP-arkitekturen understøtter også udførelse af korte vektorinstruktioner. Men da processoren udfører operationer sekventielt på hvert element i vektoren, kan VFP ikke kaldes et ægte SIMD-instruktionssæt. Denne tilstand kan være nyttig i grafik- og signalbehandlingsapplikationer, da den reducerer kodestørrelse og instruktionsgenerering.
Andre flydende komma- og/eller SIMD-coprocessorer, der findes på ARM-processorer, omfatter FPA , FPE , iwMMXt . De giver samme funktionalitet som VFP, men er ikke kompatible med det på opcode -niveau .
Sikkerhedsudvidelser markedsført som TrustZone Technology findes i ARMv6KZ og andre nyere applikationsprofilerede arkitekturer. Det giver et billigt alternativ til at tilføje en dedikeret sikkerhedsmotor ved at levere 2 vCPU'er understøttet af hardwareadgangskontrol. Dette gør det muligt for applikationskernen at skifte mellem to tilstande kaldet "verdener" (for at undgå forveksling med mulige domænenavne) for at forhindre information i at lække fra den vigtigere verden til den mindre vigtige. Denne verdensomskifter er normalt ortogonal i forhold til alle andre processorfunktioner. Således kan hver verden køre uafhængigt af andre verdener ved hjælp af den samme kerne. Henholdsvis hukommelse og periferiudstyr er lavet til at passe til kernens verden, og kan bruge dette til at få adgangskontrol til kernehemmeligheder og koder. Typiske TrustZone Technology-applikationer bør køre et komplet operativsystem i den mindre vigtige verden og kompakt, sikkerhedsspecifik kode i den vigtigere verden, hvilket giver Digital Rights Management meget mere kontrol over mediebrug på ARM-baserede enheder og forhindrer uautoriseret adgang til enheden..
I praksis, da de specifikke detaljer om implementeringen af TrustZone forbliver virksomhedens ejendom og ikke afsløres, er det fortsat uklart, hvilket sikkerhedsniveau der er garanteret for denne trusselsmodel.
Alle moderne ARM-processorer har debugging-hardware, for uden dem ville software-debuggere ikke være i stand til at udføre de mest basale operationer såsom stop, indrykning, indstilling af breakpoints efter genstart.
ARMv7-arkitekturen definerer grundlæggende fejlfindingsfunktioner på arkitektonisk niveau. Disse inkluderer pausepunkter, overvågningspunkter og udførelse af kommandoer i fejlretningstilstand. Sådanne værktøjer var også tilgængelige med EmbeddedICE debug-modulet. Begge tilstande understøttes - stop og gennemse. Den faktiske transportmekanisme, der bruges til at få adgang til debugging-værktøjerne, er ikke arkitektonisk specificeret, men implementeringen inkluderer typisk JTAG- understøttelse .
Der er en separat "kerne-visning"-fejlretningsarkitektur, som ikke er arkitektonisk påkrævet af ARMv7-processorer.
ARM leverer 31 32-bit registre til generelle formål . Afhængigt af processorens tilstand og tilstand har brugeren kun adgang til et strengt defineret sæt registre. I ARM-tilstand er 17 registre konstant tilgængelige for udvikleren:
I alle tilstande undtagen brugertilstand og systemtilstand er SPSR (Save Program Status Register) også tilgængelig. Efter en undtagelse opstår, lagres CPSR-registret i SPSR. Processorens tilstand (tilstand, tilstand; aritmetiske flag, logiske operationer, afbrydelsesaktivering) er således fast i øjeblikket umiddelbart før afbrydelsen [52] .
usr | sys | svc | ca | und | irq | fiq |
---|---|---|---|---|---|---|
R0 | ||||||
R1 | ||||||
R2 | ||||||
R3 | ||||||
R4 | ||||||
R5 | ||||||
R6 | ||||||
R7 | ||||||
R8 | R8_fiq | |||||
R9 | R9_fiq | |||||
R10 | R10_fiq | |||||
R11 | R11_fiq | |||||
R12 | R12_fiq | |||||
R13 | R13_svc | R13_abt | R13_und | R13_irq | R13_fiq | |
R14 | R14_svc | R14_abt | R14_und | R14_irq | R14_fiq | |
15 kr | ||||||
CPSR | ||||||
SPSR_svc | SPSR_abt | SPSR_und | SPSR_irq | SPSR_fiq |
Registrer aliaser:
reg. | funkt. | args | vars | GCC | Kommentar |
---|---|---|---|---|---|
R0 | a1 | et N - funktionsargument | |||
R1 | a2 | ||||
R2 | a3 | ||||
R3 | a4 | ||||
R4 | v1 | vN - registervariabel | |||
R5 | v2 | ||||
R6 | v3 | ||||
R7 | v4 | ||||
R8 | v5 | ||||
R9 | SB | v6 | SB - Statisk Basisregister | ||
R10 | v7 | SL | SL-? | ||
R11 | v8 | FP | FP - Stack frame adresse ? | ||
R12 | IP | IP - Intra-procedure call scratch register | |||
R13 | SP | stak pointer | |||
R14 | LR | Link register | |||
15 kr | PC | Program tæller |
ARM-arkitekturen bruger et enkelt adresserum [53] . I praksis betyder dette skema, at en adresse kan pege på hukommelse ( RAM eller ROM ) eller I/O-porte, i modsætning til et skema, hvor I/O-porte har deres eget adresserum.
De fleste af de eksisterende produkter, der anvender ARM-arkitekturen, er komplette systemer på en chip, der har evnen til at arbejde med eksternt dynamisk random access memory ( DRAM ) og indeholder controllere til mange perifere busser, især USB , IIC (I2C), lydenheder, controllere til at arbejde med flash-medier af SD- og MMC -standarder , display-controllere og digitale kameraer (MIPI).
Alle processorer har generelle input/output (GPIO) linjer. I forbrugerenheder kan "hurtig start" og lydstyrkekontrolknapper, signal-LED'er, et tastatur osv. tilsluttes dem.
Efter at have tændt for systemet baseret på ARM-processoren, indlæses bootloaderen og adressen på dets indgangspunkt fra ROM-hukommelsen. Opstartsindlæseren præ-initialiserer systemet og udfylder dermed den samme rolle, som BIOS'en udfører på x86-systemer, hvorefter den kan indlæse enten systemindlæseren eller OS direkte.
Der er ingen enkelt standard for boot-loaderen. En U-Boot bootloader kan bruges , og UEFI bruges ofte til 64-bit ARMv8. Mange applikationer bruger deres egne læssere.
ARM-arkitekturen understøttes af mange operativsystemer. Mest brugt: Linux (inklusive Android ), iOS , Windows Phone .
Forskellige Unix- og Unix-lignende operativsystemer kan arbejde på systemer med en ARM-processor: Linux (mange distributioner), iOS , Android , BSD ( FreeBSD , NetBSD , OpenBSD ), QNX , Plan 9 , Inferno , OpenSolaris (2008—2009 [54) ] ), Firefox OS , macOS Big Sur .
Platformen lancerer også separate varianter af Windows -familien : Windows CE , Windows Phone , Windows RT , Windows 10 .
Derudover understøttes ARM af: A2 , FreeRTOS , Nucleus , Symbian OS , RISC OS , RISC iX .
Mikrocontrollere | ||||||||
---|---|---|---|---|---|---|---|---|
Arkitektur |
| |||||||
Producenter |
| |||||||
Komponenter | ||||||||
Periferi |
| |||||||
Grænseflader | ||||||||
OS | ||||||||
Programmering |
|
processorteknologier | Digitale|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionssæt arkitektur | |||||||||
maskinord | |||||||||
Parallelisme |
| ||||||||
Implementeringer | |||||||||
Komponenter | |||||||||
Strømstyring |
Processorarkitekturer baseret på RISC- teknologier | |
---|---|