ARM -Architekturfamilie
Designer | |
---|---|
Bits | 32-Bit, 64-Bit |
Eingeführt | 1985 |
Entwurf | RISC |
Typ | Registrieren-Registrieren |
Verzweigung | Bedingungscode, vergleichen und verzweigen |
Offen | Proprietär |
Eingeführt | 2011 |
---|---|
Ausführung | Armv8-A, Armv8.1-A, Armv8.2-A, Armv8.3-A, Armv8.4-A, Armv8.5-A, Armv8.6-A, Armv8-R, Armv9 |
Codierung | Aarch64/A64 und Aarch32/A32 verwenden 32-Bit-Anweisungen, T32 (Thumb-2) verwendet gemischte Anweisungen mit 16- und 32-Bit[1] |
Endiangess | Bi (wenig wie Standard) |
Erweiterungen | Sve, Sve2, Sme, Aes, SHA, TME; Alles obligatorisch: Daumen-2, Neon, VFPV4-D16, VFPV4; obsolet: Jazelle |
Register | |
Allgemeiner Zweck | 31 × 64-Bit-Ganzzahlregister[1] |
Schwimmender Punkt | 32 × 128-Bit Register[1] für Scalar 32- und 64-Bit FP oder Simd FP oder Ganzzahl; oder Kryptographie |
Ausführung | ARMV9-R, ARMV9-M, ARMV8-R, ARMV8-M, ARMV7-A, ARMV7-R, ARMV7E-M, ARMV7-M, ARMV6-M |
---|---|
Codierung | 32-Bit, außer Daumen-2-Erweiterungen verwenden gemischte Anweisungen mit 16- und 32-Bit. |
Endiangess | Bi (wenig wie Standard) |
Erweiterungen | Daumen-2, Neon, Jazelle, AES, SHA, DSP, gesättigt, fpv4-sp, fpv5, helium |
Register | |
Allgemeiner Zweck | 15 × 32-Bit-Ganzzahlregister, einschließlich R14 (Linkregister), jedoch nicht R15 (PC) |
Schwimmender Punkt | Bis zu 32 × 64-Bit-Register,[2] SIMD/Floating-Punkt (optional) |
Ausführung | ARMV6, ARMV5, ARMV4T, ARMV3, ARMV2 |
---|---|
Codierung | 32-Bit, außer in der Daumenverlängerung, verwendet gemischte Anweisungen mit 16- und 32-Bit. |
Endiangess | Bi (wenig wie Standard) in ARMV3 und höher |
Erweiterungen | Daumen, Jazelle |
Register | |
Allgemeiner Zweck | 15 × 32-Bit-Ganzzahlregister, einschließlich R14 (Linkregister), jedoch nicht R15 (PC, 26-Bit-Adressierung in älterer) |
Schwimmender Punkt | Keiner |
ARM (stilisiert in Kleinbuchstaben als Arm, früher ein Akronym für Fortgeschrittene RISC -Maschinen und ursprünglich Acorn Risc -Maschine) ist eine Familie von Reduzierter Befehlssatz Computer (RISC) Anweisungsset Architekturen zum Computerprozessorenfür verschiedene Umgebungen konfiguriert. Arm Ltd. Entwickelt die Architekturen und lizenziert sie an andere Unternehmen, die ihre eigenen Produkte entwerfen, die eine oder mehrere dieser Architekturen implementieren, einschließlich System auf einem Chip (Soc) und System auf Modul (Som) Designs, die verschiedene Komponenten wie Speicher, Schnittstellen und enthalten Funkgeräte. Es entwirft auch Kerne das implementiert diese Anweisungsset Architekturen und lizenziert diese Designs für viele Unternehmen, die diese Kerndesigns in ihre eigenen Produkte einbeziehen.
Es gab mehrere Generationen des Armdesigns. Die ursprüngliche ARM1 verwendete a 32-Bit interne Struktur hatte aber eine 26-Bit Adressraum das beschränkte es auf 64 MB von Haupterinnerung. Diese Einschränkung wurde in der ARMV3-Serie mit einem 32-Bit-Adressraum entfernt, und mehrere weitere Generationen bis ARMV7 blieben 32-Bit. Die im Jahr 2011 veröffentlichte ARMV8-A-Architektur fügte Unterstützung für a hinzu 64-Bit Adressraum und 64-Bit-Arithmetik mit dem neuen Befehlssatz mit 32-Bit-Festlagen.[3] Arm Ltd. hat auch eine Reihe zusätzlicher Anweisungssätze für verschiedene Regeln veröffentlicht. Die Erweiterung "Daumen" fügt sowohl 32- als auch 16-Bit-Anweisungen zur Verbesserung hinzu Codedichte, während Jazelle Anweisungen zum direkten Handling hinzugefügt Java -Bytecode. Neuere Änderungen umfassen die Hinzufügung von Simultanes Multithreading (SMT) für eine verbesserte Leistung oder Fehlertoleranz.[4]
Aufgrund ihrer geringen Kosten, des minimalen Stromverbrauchs und ihrer geringeren Wärmeerzeugung als ihre Konkurrenten sind Armprozessoren für leichte, tragbare und batteriebetriebene Geräte wünschenswert Smartphones, Laptops und Tablet -Computer, und andere eingebettete Systeme.[5][6][7] Armprozessoren werden jedoch auch für verwendet Desktops und Server, einschließlich der schnellsten der Welt Supercomputer im Jahr 2020 (Fugaku).[8] Mit über 200 Milliarden Armchips produziert,[9][10][11] Ab 2021[aktualisieren], Arm ist die am häufigsten verwendete Familie von Anweisungsset Architekturen (ISA) und die ISAs, die in der größten Menge produziert werden.[12][6][13][14][15] Derzeit der weit verbreitete Kortex Kerne, ältere "klassische" Kerne und spezialisiert Securate Kerne Varianten sind für jeden dieser Möglichkeiten verfügbar, um optionale Funktionen einzuschließen oder auszuschließen.
Geschichte
BBC Micro
Eichelcomputer'Erstes weit erfolgreiches Design war das BBC Micro, eingeführt im Dezember 1981. Dies war eine relativ konventionelle Maschine basierend auf dem MOS -Technologie 6502 CPU lief aber ungefähr doppelt so hoch wie die Leistung konkurrierender Designs wie die Apple II Aufgrund seiner Verwendung von schneller Dynamischer Direktzugriffsspeicher (Dram). Typische Dram der Ära lief bei etwa 2 MHz; Acorn arrangierte einen Deal mit Hitachi für eine Versorgung mit schnelleren 4 -MHz -Teilen.[16]
Maschinen der Ära haben im Allgemeinen Speicher zwischen dem Prozessor und dem geteilten Speicher geteilt Bildspeicher, Framebuffer, was es dem Prozessor ermöglichte, den Inhalt des Bildschirms schnell zu aktualisieren, ohne separate Ausführung durchführen zu müssen Input-Output (I/O). Da das Timing der Videoanzeige anspruchsvoll ist, musste die Video -Hardware vorrangig auf diesen Speicher zugreifen. Aufgrund einer Eigenart des Designs des 6502 ließ die CPU den Gedächtnis für die Hälfte der Zeit unberührt. Durch die Ausführung der CPU bei 1 MHz konnte das Videosystem während dieser Ablaufzeiten Daten lesen und die Gesamtbandbreite von 2 MHz des RAM aufnehmen. In der BBC -Mikro ermöglichte die Verwendung von 4 MHz RAM die gleiche Technik, die jedoch doppelt so schnell lief. Dies ermöglichte es ihm, eine ähnliche Maschine auf dem Markt zu übertreffen.[17]
Acorn Business Computer
1981 war auch das Jahr, in dem die IBM PC wurde vorgestellt. Verwenden der kürzlich eingeführten Intel 8088, a 16-Bit CPU im Vergleich zu den 6502 8 Bit Design konnte eine höhere Gesamtleistung bieten. Die Einführung veränderte den Desktop-Computermarkt radikal: Was in den letzten fünf Jahren weitgehend ein Hobby- und Gaming-Markt entstanden war, begann sich zu einem Must-Have-Geschäftstool zu verwandeln, in dem die früheren 8-Bit-Designs einfach nicht konkurrieren konnten. Noch neuer 32-Bit Entwürfe kamen auch auf den Markt, wie die Motorola 68000[18] und Nationaler Halbleiter NS32016.[19]
Acorn begann darüber nachzudenken, wie man in diesem Markt antritt, und produzierte ein neues Papierdesign namens The the Acorn Business Computer. Sie haben sich zum Ziel gesetzt, eine Maschine mit zehnfache Leistung des BBC -Micro zu produzieren, aber zum gleichen Preis.[20] Dies würde den PC übertreffen und unterspannen. Gleichzeitig die jüngste Einführung der Apple Lisa brachte die grafische Benutzeroberfläche (GUI) Konzept an ein breiteres Publikum und schlug vor, dass die Zukunft Maschinen mit einer GUI gehörte.[21] Die Lisa kostete jedoch 9.995 US Festplatte, dann alle sehr teuer.[22]
Die Ingenieure begannen dann, alle verfügbaren CPU -Designs zu studieren. Ihre Schlussfolgerung zu den bestehenden 16-Bit-Designs war, dass sie viel teurer waren und immer noch "ein bisschen Mist" waren,[23] Nur geringfügig höher als ihr BBC -Mikrodesign. Sie forderten auch fast immer eine große Anzahl von Support -Chips, um auch auf diesem Niveau zu operieren, was die Kosten des Computers als Ganzes erhöhte. Diese Systeme würden das Designziel einfach nicht erreichen.[23] Sie betrachteten auch die neuen 32-Bit-Designs, aber diese kosten noch mehr und hatten die gleichen Probleme mit Support-Chips.[24] Entsprechend Sophie WilsonAlle zu diesem Zeitpunkt getesteten Prozessoren traten ungefähr gleich mit einer 4 -Mbit/Second -Bandbreite.[25][a]
Zwei Schlüsselereignisse führten Acorn auf dem Weg zum Arm. Eine war die Veröffentlichung einer Reihe von Berichten aus dem Universität von Kalifornien, Berkeley, was darauf hindeutet, dass ein einfaches Chip-Design dennoch eine extrem hohe Leistung aufweisen könnte, viel höher als die neuesten 32-Bit-Designs auf dem Markt.[26] Der zweite war ein Besuch von Steve Furber und Sophie Wilson zum Western Design Center, eine Firma, die von durchgeführt wird Bill Mensch und seine Schwester, die der logische Nachfolger des MOS -Teams geworden war und neue Versionen wie die anbot WDC 65C02. Das Acorn -Team sah Highschool -Schüler, die Chip -Layouts auf Apple II -Maschinen produzierten, was darauf hindeutete, dass jeder es tun konnte.[27][28] Im Gegensatz dazu enthüllte ein Besuch in einem anderen Designunternehmen, das an der modernen 32-Bit-CPU arbeitete, ein Team mit über einem Dutzend Mitgliedern, die bereits über die Überarbeitung ihres Designs waren und dennoch Fehler enthielt.[b] Dies festigte ihre Entscheidung Ende 1983, ihr eigenes CPU -Design, die Acorn RISC -Maschine, zu beginnen.[29]
Designkonzepte
Das Original Berkeley Risc Entwürfe waren in gewisser Weise Lehrsysteme und nicht speziell für die vollständige Leistung entwickelt. Zu den grundlegenden Konzepten für registrierende Register- und Lade-/Speicherkonzepte des RISC fügte ARM eine Reihe von gut angenommenen Designnoten des 6502 hinzu Interrupts, was es den Maschinen ermöglichte, angemessen anzubieten Input-Output Leistung ohne zusätzliche externe Hardware. Um Interrupts mit einer ähnlichen Leistung wie der 6502 anzubieten, beschränkte das ARM -Design seine physische Adressraum bis 64 MB des gesamten adressierbaren Raums, der 26 Adressen erforderlich ist. Da die Anweisungen 4 Bytes (32 Bit) lang waren und an 4-Byte-Grenzen ausgerichtet werden mussten, waren die unteren 2 Bit einer Anweisungsadresse immer Null. Dies bedeutete das Programm zähler (PC) musste nur 24 Bit betragen, sodass es zusammen mit dem acht Bit gespeichert werden konnte Prozessorflaggen in einem einzigen 32-Bit-Register. Dies bedeutete, dass bei der Rezeption eines Interrupts der gesamte Maschinenstatus in einem einzigen Betrieb gespeichert werden konnte, während der PC einen vollständigen Wert von 32 Bit gewesen wäre und separate Vorgänge zum Speichern des PC und der Statusflags erfordern würde. Diese Entscheidung halbierte den Interrupt -Overhead.[30]
Eine weitere Veränderung und zu den wichtigsten in Bezug auf die praktische praktische Leistung war die Änderung der Befehlssatz ausnutzen Seitenmodus Dram. Kürzlich eingeführt, ermöglichte der Seitenmodus nachfolgende Speicherzugriffe doppelt so schnell, wenn sie ungefähr am selben Ort oder "Seite" im DRAM -Chip waren. Berkeleys Design berücksichtigte den Seitenmodus nicht und behandelte das gesamte Speicher gleichermaßen. Das ARM-Design fügte spezielle vektorähnliche Speicherzugriffsanweisungen hinzu, die "S-Cycles", mit der mehrere Register im Seitenmodus mehrere Register auf einer einzelnen Seite gefüllt oder gespeichert werden können. Diese verdoppelte Speicherleistung, wenn sie verwendet werden konnten, und war besonders wichtig für die Grafikleistung.[31]
Die Berkeley RISC -Designs wurden verwendet Registrieren Sie Windows Um die Anzahl der Registersparen zu verringern und wiederherzustellen, die durchgeführt werden in Verfahrensanrufe; Das Armdesign hat dies nicht übernommen.
Wilson entwickelte den Anweisungssatz und schrieb eine Simulation des Prozessors in BBC Basic Das lief auf einem BBC -Mikro mit a Zweite 6502 Prozessor.[32][33] Dies überzeugte Eichelingenieure, sie waren auf dem richtigen Weg. Wilson näherte sich Acorns CEO, CEO, Hermann Hauserund forderte mehr Ressourcen an. Hauser erteilte seine Zustimmung und stellte ein kleines Team zusammen, um den tatsächlichen Prozessor auf der Grundlage von Wilsons ISA zu entwerfen.[34] Das offizielle Acorn RISC Machine -Projekt begann im Oktober 1983.
ARM1
Acorn wählte VLSI -Technologie Als "Siliziumpartner", wie sie eine Quelle von ROMs und benutzerdefinierten Chips für Eicheln waren. ACORN stellte das Design zur Verfügung und VLSI stellte das Layout und die Produktion zur Verfügung. Die ersten Proben von Arm Silicon funktionierten ordnungsgemäß, als er am 26. April 1985 zum ersten Mal erhalten und getestet wurde.[5] Als ARM1 bezeichnet, verlief diese Versionen bei 6 MHz.[35]
Die erste ARM -Anwendung war als zweiter Prozessor für das BBC Micro, wo sie bei der Entwicklung von Simulationssoftware dazu beitrug CAD -Software verwendet in ARM2 -Entwicklung. Wilson hat anschließend neu geschrieben BBC Basic in Arm Montagesprache. Das eingehende Wissen, das durch das Entwerfen des Befehlssatzes gewonnen wurde, ermöglichte es dem Code, sehr dicht zu sein, so dass Arm BBC grundlegend zu einem extrem guten Test für jeden Armemulator wurde.
ARM2
Das Ergebnis der Simulationen auf den ARM1-Boards führte zur späten 1986er Einführung des ARM2-Designs bei 8 MHz und der Geschwindigkeitsversion von Anfang 1987 bei 10 bis 12 MHz.[c] Eine signifikante Änderung der zugrunde liegenden Architektur war die Zugabe von a Standmultiplikator, während früher eine Multiplikation in Software durchgeführt werden musste.[37] Darüber hinaus ermöglichte ein neuer Fast Interrupt -Anforderungsmodus, kurz FIQ, Registern 8 bis 14 als Teil des Interrupts selbst ersetzt. Dies bedeutete, dass FIQ -Anfragen ihre Register nicht speichern mussten, was die Interrupts weiter beschleunigte.[38]
Die ARM2 war ungefähr siebenmal so hoch wie die Leistung eines typischen 7-MHz-68000-basierten Systems wie das Commodore Amiga oder Macintosh SE. Es war doppelt so schnell wie ein Intel 80386 Laufen bei 16 MHz und ungefähr die gleiche Geschwindigkeit wie ein Mehrprozessor VAX-11/784 Superminicomputer. Die einzigen Systeme, die es schlugen, waren die Sonne Sparc und MIPS R2000 RISC-basiert Arbeitsstationen.[39] Da die CPU für Hochgeschwindigkeits-E/A ausgelegt war, wurde sie mit vielen der in diesen Maschinen beobachteten Stützchips abgegeben. insbesondere fehlte es engagiert direkter Speicherzugriff (DMA) Controller, der häufig auf Workstations gefunden wurde. Das Grafiksystem wurde auch auf der Grundlage derselben Anzahl von zugrunde liegenden Annahmen über Speicher und Timing vereinfacht. Das Ergebnis war ein dramatisch vereinfachtes Design, das eine Leistung mit teuren Workstations bietet, jedoch zu einem Preis ähnlich wie zeitgenössische Desktops.[39]
Die ARM2 zeigte a 32-Bit Datenbus, 26-Bit Adressraum und 27 32-Bit Register, von denen 16 zu jeder Zeit zugänglich sind (einschließlich der PC).[40] Der Arm2 hatte eine Transistorzahl von nur 30.000,[41] Im Vergleich zum sechsjährigen 68000-Modell von Motorola mit rund 68.000. Ein Großteil dieser Einfachheit kam vom Mangel an Mikrocode, was etwa ein Viertel bis ein Drittel der Transistoren des 68000 und das Fehlen von (wie die meisten CPUs des Tages) a darstellt Zwischenspeicher. Diese Einfachheit ermöglichte es dem ARM2, einen geringen Stromverbrauch zu haben, aber eine bessere Leistung als die, als die Intel 80286.[Klarstellung erforderlich]
Ein Nachfolger, ARM3, wurde mit einem 4 -KB -Cache produziert, was die Leistung weiter verbesserte.[42] Der Adressbus wurde auf 32 Bit in der ARM6 erweitert, aber der Programmcode musste im 26-Bit-Kompatibilitätsmodus aufgrund der reservierten Bits für die Statusflags innerhalb der ersten 64 MB des Speichers noch liegen.[43]
Advanced Risc Machines Ltd. - ARM6
In den späten 1980er Jahren, Apple Computer und VLSI -Technologie begann mit Acorn an neueren Versionen des Armkerns zu arbeiten. Im Jahr 1990 drehte Acorn das Designteam in ein neues Unternehmen namens Advanced Risc Machines Ltd. aus.[44][45][46] das wurde Arm Ltd. als seine Muttergesellschaft, Armhoteln plc, schwebte auf der Londoner Börse und Nasdaq In 1998.[47] Die neue Apple-Arm-Arbeit würde sich schließlich zu dem ARM6 entwickeln, der Anfang 1992 erstmals veröffentlicht wurde. Apple verwendete den ARM6-basierten ARM610 als Grundlage für ihre Apple Newton PDA.
Frühe Lizenznehmer
Im Jahr 1994 verwendete ACORN den ARM610 als Haupt Zentrale Verarbeitungseinheit (CPU) in ihrem RISCPC Computers. Dez lizenzierte die ARMV4 -Architektur und produzierte die Starker Arm.[48] Bei 233MHzDiese CPU zog nur einen Watt (neuere Versionen zeichnen weit weniger). Diese Arbeit wurde später als Teil einer Klageerklärung an Intel weitergeleitet, und Intel nutzte die Gelegenheit, um ihre zu ergänzen I960 Linie mit der Strongarm. Intel entwickelte später eine eigene Hochleistungs -Implementierung namens Xscale, an die es seitdem verkauft hat Marvell. Die Transistorzahl des Armkerns blieb während dieser Veränderungen im Wesentlichen gleich. ARM2 hatte 30.000 Transistoren,[49] während ARM6 nur auf 35.000 wuchs.[50]
Im Jahr 2005 verwendeten etwa 98% aller verkauften Mobiltelefone mindestens einen Armprozessor.[51] Im Jahr 2010 meldeten Produzenten von Chips, die auf Armarchitekturen basieren, Sendungen von 6,1 Milliarden ARM-basierte Prozessoren95% von 95% von Smartphones35% von Digitale Fernseher und Set-Top-Boxen und 10% von Mobile Computer. Im Jahr 2011 war die 32-Bit-ARM-Architektur die am häufigsten verwendete Architektur in mobilen Geräten und die beliebteste 32-Bit-in eingebettete Systeme.[52] Im Jahr 2013 wurden 10 Milliarden produziert[53] und "Armbasis-Chips finden sich in fast 60 Prozent der weltweiten mobilen Geräte".[54]
Lizenzierung
Kernlizenz
Das primäre Geschäft von Arm Ltd. ist der Verkauf IP -Kerne, welche Lizenznehmer zum Erstellen verwenden Mikrocontroller (MCUS), CPUs, und Systeme auf Chips Basierend auf diesen Kernen. Das Original -Konstruktionshersteller kombiniert den Armkern mit anderen Teilen, um ein vollständiges Gerät zu erzeugen, in der Regel ein in bestehender Gebäude eingebaut werden kann Halbleiterherstellungsanlagen (Fabs) bei geringen Kosten und liefern dennoch erhebliche Leistung. Die erfolgreichste Implementierung war die ARM7TDMI mit Hunderten von Millionen verkauft. Atmel war ein Vorläufer-Designzentrum im ARM7TDMI-basierten eingebetteten System.
Die Armarchitekturen in Smartphones, PDAs und anderen mobile Geräte reichen von armv5 bis armv8-a.
Im Jahr 2009 stellten einige Hersteller Netbooks basierend auf CPUs mit ARM -Architektur vor, in direktem Wettbewerb mit Netbooks basierend auf Intel Atom.[55]
Arm Ltd. bietet eine Vielzahl von Lizenzbedingungen an, die in Kosten und Leistungen variieren. ARM Ltd. bietet allen Lizenznehmern eine integrierbare Hardware -Beschreibung des ARM -Kerns sowie vollständige Softwareentwicklungs -Tools (Compiler, Debugger, Softwareentwicklungskit) und das Recht zu verkaufen, die hergestellt werden Silizium enthält die Arm -CPU.
SOC-Pakete, die Arm's Core Designs integrieren, umfassen die ersten drei Generationen von Nvidia Tegra, die Quatro-Familie von CSR PLC, ST-Ericssons Nova und Novathor, Silicon Labs's Precision32 MCU, Texas Instruments Omap Produkte, Samsung's Hummingbird und Exynos Produkte, Apple's A4, A5, und A5X, und NXP's i.mx.
Fabeless Lizenznehmer, die einen Armkern in ihr eigenes Chip-Design integrieren möchten, sind normalerweise nur daran interessiert, eine verifizierte Bereitschaft zu erwerben Halbleiter geistiges Eigentumskern. Für diese Kunden liefert Arm Ltd. a Gate Netlist Beschreibung des gewählten Armkerns sowie ein abstrahierter Simulationsmodell und Testprogramme zur Unterstützung der Integration und Überprüfung der Designs. Ehrgeizigere Kunden, einschließlich integrierter Gerätehersteller (IDM) und Foundry -Operatoren, entscheiden sich für den Erwerb des Prozessor -IP in synthetisierbar RTL (Verilog) bilden. Mit dem synthesizbaren RTL kann der Kunde Architektur -Optimierungen und -Ertensionen durchführen. Dies ermöglicht dem Designer, exotische Designziele zu erreichen, die mit einer unmodifizierten Netlist nicht ansonsten möglich sind (hohe Taktgeschwindigkeit, sehr geringer Stromverbrauch, Anweisungssatzerweiterungen usw.). Während Arm Ltd. dem Lizenznehmer nicht das Recht gewährt, die ARM -Architektur selbst weiterzuverkaufen, können Lizenznehmer hergestellte Produkte wie Chip -Geräte, Evaluierungsbretter und vollständige Systeme frei verkaufen. Händlergießereien kann ein Sonderfall sein; Sie dürfen nicht nur das fertige Silizium mit Armkernen verkaufen, sondern auch das Recht, Armkerne für andere Kunden neu herzustellen.
Arm Ltd. Preise seine IP basierend auf dem wahrgenommenen Wert. Niedrigere leistungsstarke Armkerne haben in der Regel niedrigere Lizenzkosten als höher leistungsstarke Kerne. In der Implementierung kostet ein synthesibler Kern mehr als ein Hard -Makro -Kern (Blackbox). Komplizierende Preisangelegenheiten, eine Händler -Gießerei, die eine ARM -Lizenz wie Samsung oder Fujitsu besitzt, kann fabelhafte Kunden liefern, reduzierte Lizenzkosten. Als Gegenleistung für den Erwerb des ARM-Kerns über die internen Designdienste des Foundry kann der Kunde die Zahlung der Vorab-Lizenzgebühr von ARM reduzieren oder beseitigen.
Im Vergleich zu den speziellen Halbleiter -Gießereien (wie z. TSMC und Umc) Ohne interne Designdienstleistungen berechnen Fujitsu/Samsung zwei bis dreimal mehr pro Hersteller Wafer. Für Anwendungen mit niedrigem bis mittlerem Volumen bietet ein Design Service Foundry eine geringere Gesamtpreise (durch Subventionierung der Lizenzgebühr). Bei Teilen mit hohem Volumen, die mit Massenprodukten produziert werden, verringert die durch niedrigere Waferpreisgestaltung erreichbare langfristige Kostenreduzierung die Auswirkungen der NRE-Kosten für ARMs (nicht wiederholende Engineering) und macht die dedizierte Gießerei zu einer besseren Wahl.
Zu den Unternehmen, die Chips mit Kernen entwickelt haben, die von Arm Holdings entworfen wurden Amazon.com's Annapurna Labs Tochtergesellschaft,[56] Analoge Geräte, Apfel, AppliedMicro (jetzt: Macom Technology Solutions[57]), Atmel, Broadcom, Cavium, Cypress Semiconductor, Freescale Semiconductor (jetzt NXP -Halbleiter), Huawei, Intel,[zweifelhaft ] Maxim integriert, Nvidia, NXP, Qualcomm, Renesas, Samsung Electronics, ST Mikroelektronik, Texas Instrumente und Xilinx.
Aufgebaut auf Arm Cortex Technology Lizenz
Im Februar 2016 kündigte ARM die aufgebaute ARM -Cortex -Technologie -Lizenz an, die häufig für die Cortex (BOC) -Lizenz (BOC) verkürzt wurde. Mit dieser Lizenz können Unternehmen mit ARM zusammenarbeiten und Änderungen an ARM Cortex -Designs vornehmen. Diese Designänderungen werden nicht mit anderen Unternehmen geteilt. Diese halbkundenspezifischen Kerndesigns haben zum Beispiel auch Markenfreiheit Kryo 280.
Zu den Unternehmen, die aktuelle Lizenznehmer von aufgebauten ARM -Cortex -Technologie sind Qualcomm.[58]
Architekturlizenz
Unternehmen können auch einen Arm erhalten architectural licence zum Entwerfen ihrer eigenen CPU -Kerne mit den ARM -Anweisungssätzen. Diese Kerne müssen sich vollständig der Armarchitektur entsprechen. Unternehmen, die Kerne entworfen haben, die eine ARM -Architektur implementieren, sind Apple, AppliedMicro (jetzt: Ampere Computing), Broadcom, Cavium (jetzt: Marvell), Digital Equipment Corporation, Intel, Nvidia, Qualcomm, Samsung Electronics, Fujitsuund Nuvia Inc.
Arm flexibler Zugang
Am 16. Juli 2019 kündigte ARM den flexiblen ARM -Zugang an. Arm Flexible Access bietet unbegrenzten Zugang zu inklusiven Arms geistiges Eigentum (IP) für die Entwicklung. Per Produktlizenzgebühren sind erforderlich, sobald ein Kunde Foundry -Band oder Prototyping erreicht hat.[59][60]
75% der jüngsten IPs der Arms in den letzten zwei Jahren sind in den flexiblen ARAF -Zugang enthalten. Ab Oktober 2019:
- CPUs: Cortex-A5, Cortex-A7, Cortex-A32, Cortex-A34, Cortex-A35, Cortex-A53, Cortex-R5, Cortex-R8, Cortex-R52, Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23, Cortex-M33
- GPUs: MALI-G52, Mali-g31. Beinhaltet Mali Triver Development Kits (DDK).
- Interconnect: Corelink NIC-400, Corelink NIC-450, Corelink CCI-400, Corelink CCI-500, Corelink CCI-550, ADB-400 AMBA, XHB-400 AXI-AHB
- Systemcontroller: Corelink GIC-400, Corelink GIC-500, PL192 VIC, BP141 Trustzone Memory Wrapper, Corelink TZC-400, Corelink L2C-310, Corelink MMU-500, BP140-Speicherschnittstelle
- Sicherheits-IP: Cryptocell-312, Cryptocell-712, TrustZone True Random Number Generator
- Periphere Controller: PL011 UART, PL022 SPI, PL031 RTC
- Debug & Trace: Coresight SOC-400, Coresight SDC-600, Coresight STM-500, Coressight-System Trace Macrocell, Coressight Trace Memory Controller
- Design-Kits: Corstone-101, Corstone-20101
- Physische IP: Artisan PIK für Cortex-M33 TSMC 22ULL einschließlich Speicher Compiler, Logikbibliotheken, GPIOs und Dokumentation
- Tools & Materialien: Sokrates IP Toolingarm Design Studio, virtuelle Systemmodelle
- Support: Standard -ARM -technische Support, ARM -Online -Schulungen, Wartungsaktualisierungen, Credits für Schulungen vor Ort und Designbewertungen
Kerne
Die Architektur | Kern Bitbreite | Kerne | Profil | Raffinierte RECEN | |
---|---|---|---|---|---|
Arm Ltd. | Dritte Seite | ||||
ARMV1 | ARM1 | Klassisch | |||
ARMV2 | 32 | ARM2, ARM250, Arm3 | Bernstein, Sturm offener weicher Kern[61] | Klassisch | |
ARMV3 | 32 | ARM6, ARM7 | Klassisch | ||
ARMV4 | 32 | Arm8 | Starker Arm, FA526, Zap Open Source Processor Core | Klassisch | |
ARMV4T | 32 | ARM7TDMI, Arm9tdmi, Securate SC100 | Klassisch | ||
ARMV5TE | 32 | Arm7ej, Arm9e, ARM10E | Xscale, Fa626te, Feroceon, PJ1/Mohawk | Klassisch | |
ARMV6 | 32 | ARM11 | Klassisch | ||
ARMV6-m | 32 | Arm Cortex-M0, Arm Cortex-M0+, Arm Cortex-M1, Securate SC000 | |||
ARMV7-m | 32 | Arm Cortex-M3, Securate SC300 | Apple M7 | Mikrocontroller | |
ARMV7E-M | 32 | Arm Cortex-M4, Arm Cortex-M7 | Mikrocontroller | ||
ARMV8-m | 32 | Arm Cortex-M23,[63] Arm Cortex-M33[64] | Mikrocontroller | ||
ARMV7-R | 32 | Arm Cortex-R4, Arm Cortex-R5, Arm Cortex-R7, Arm Cortex-R8 | |||
ARMV8-R | 32 | Arm Cortex-R52 | Echtzeit | ||
64 | Arm Cortex-R82 | Echtzeit | |||
ARMV7-A | 32 | Arm Cortex-A5, Arm Cortex-A7, Arm Cortex-A8, Arm Cortex-A9, Arm Cortex-A12, Arm Cortex-A15, Arm Cortex-A17 | Qualcomm Skorpion/Krait, PJ4/Sheeva, Apple Swift (A6, A6x) | ||
ARMV8-A | 32 | Arm Cortex-A32[69] | Anwendung | ||
64/32 | Arm Cortex-A35,[70] Arm Cortex-A53, Arm Cortex-A57,[71] Arm Cortex-A72,[72] Arm Cortex-A73[73] | X-Gene, Nvidia Denver 1/2, Cavium Thunderx, AMD K12, Apple Cyclone (A7)/Typhoon (A8, A8X)/Twister (A9, A9X)/Hurrikan+Zephyr (A10, A10x), Qualcomm Kryo, Samsung M1 /M2 ("Mongoose") /M3 ("Meerkat") | Anwendung | ||
Arm Cortex-A34[79] | Anwendung | ||||
ARMV8.1-A | 64/32 | Tba | Cavium Thunderx2 | Anwendung | |
ARMV8.2-A | 64/32 | Arm Cortex-A55,[81] Arm Cortex-A75,[82] Arm Cortex-A76,[83] Arm Cortex-A77, Arm Cortex-A78, Arm Cortex-X1, Arm Neoverse N1 | Nvidia Carmel, Samsung M4 ("Cheetah"), Fujitsu A64FX (ARMV8 SVE 512-Bit) | Anwendung | |
64 | Arm Cortex-A65, Arm Neoverse E1 mit Simultanes Multithreading (SMT), Arm Cortex-A65AE[87] (Auch mit z. B. ARMV8.4 -Punktprodukt; für sicherheitskritische Aufgaben wie z. Fortgeschrittene Fahrerassistanzsysteme (Adas)) | Apple Monsun+Mistral (A11) (September 2017) | Anwendung | ||
ARMV8.3-A | 64/32 | Tba | Anwendung | ||
64 | Tba | Apple Vortex+Sturm (A12, A12X, A12Z), Marvell Thunderx3 (v8.3+)[88] | Anwendung | ||
ARMV8.4-A | 64/32 | Tba | Anwendung | ||
64 | Arm Neoverse v1 | Apfelblitz+Donner (A13), Apfelfeuersturm+Icestorm (A14), Apfelfeuersturm+Icestorm (M1) | Anwendung | ||
ARMV8.5-A | 64/32 | Tba | Anwendung | ||
64 | Tba | Apple Avalanche+Blizzard (A15)) | Anwendung | ||
ARMV8.6-A | 64 | Tba | Anwendung | ||
ARMV8.7-A | 64 | Tba | Anwendung | ||
ARMV9-A | 64 | Arm Cortex-A510, Arm Cortex-A710, Arm Cortex-X2, Arm Neoverse N2 | Anwendung |
- ^ a b Obwohl die meisten Datapaths und CPU -Register In den frühen Armprozessoren waren 32-Bit, Der adressierbare Speicher war auf 26 Bit begrenzt; Mit oberen Bits wird dann für Statusflags im Programmzählerregister verwendet.
- ^ a b c ARMV3 enthielt einen Kompatibilitätsmodus, um die zu unterstützen 26-Bit-Adressen von früheren Versionen der Architektur. Dieser Kompatibilitätsmodus Optional in ARMV4 und vollständig in ARMV5 entfernt.
Arm Holdings bietet eine Liste von Anbietern, die Armkerne in ihrem Design (anwendungsspezifische Standardprodukte (ASSP), Mikroprozessor und Mikrocontroller) implementieren.[92]
Beispielanwendungen von Armkernen
Insbesondere in einer Reihe von Produkten werden Armkerne verwendet, insbesondere in einer Reihe von Produkten PDAs und Smartphones. Etwas Computer Beispiele sind Microsoft's Oberfläche der ersten Generation, Oberfläche 2 und Taschencomputer Geräte (folgende 2002), Apfel's iPads und Asus's Eee Pad Transformator Tablet -Computerund mehrere Chromebook Laptops. Andere schließen Apple's ein iPhone Smartphones und iPod Tragbare Medienspieler, Canon Powershot Digitalkameras, Nintendo Switch Hybrid, die Wii Sicherheitsprozessor und 3DS Handheld -Spielekonsolen, und Tomtom Schritt für Schritt Navigationssysteme.
Im Jahr 2005 nahm Arm Holdings an der Entwicklung von teil Manchester UniversityComputer Spinnaker, die Armkerne verwendeten, um die zu simulieren menschliches Gehirn.[93]
Armchips werden auch in verwendet Raspberry Pi, Beagleboard, Beagle-Knochen, Pandaboard und andere Single-Board-Computer, weil sie sehr klein, kostengünstig sind und sehr wenig Kraft verbrauchen.
32-Bit-Architektur
Die 32-Bit-Armarchitektur (ARM32), wie zum Beispiel ARMV7-A (Implementierung von AArch32; siehe Abschnitt über ARMV8-A für mehr darüber) war die am häufigsten verwendete Architektur in mobilen Geräten ab 2011[aktualisieren].[52]
Seit 1995 verschiedene Versionen der Armarchitekturreferenzhandbuch (sehen § Externe Links) waren die primäre Dokumentationsquelle zur Architektur und den Anweisungssatz von ARM -Prozessor und Unterscheidung von Schnittstellen, die alle ARM -Prozessoren benötigen, um (z. B. Semantik) von Implementierungsdetails zu unterstützen, die variieren können. Die Architektur hat sich im Laufe der Zeit entwickelt, und Version sieben der Architektur ARMV7 definiert drei Architekturprofile:
- A-Profil, das "Anwendungs" -Profil, implementiert von 32-Bit-Kernen in der Cortex-a Serie und durch einige Nicht-Arm-Kerne
- R-Profil, das "Echtzeit" -Profil, implementiert von Kernen in der Cortex-R Serie
- M-Profil, das "Mikrocontroller" -Profil, der von den meisten Kernen in der implementiert ist Cortex-m Serie
Obwohl die Architekturprofile erstmals für ARMV7 definiert wurden M0/M0+/M1) als Teilmenge des ARMV7-M-Profils mit weniger Anweisungen.
CPU -Modi
Mit Ausnahme des M-Profils gibt die 32-Bit-ARM-Architektur je nach den implementierten Architekturmerkmalen mehrere CPU-Modi an. Zu jedem Zeitpunkt kann die CPU nur in einem Modus sein, kann jedoch die Modi aufgrund externer Ereignisse (Interrupts) oder programmatisch wechseln.[94]
- Benutzermodus: Der einzige nicht privilegierte Modus.
- FIQ -Modus: Ein privilegierter Modus, der eingegeben wird, wenn der Prozessor a akzeptiert Schnelle Interrupt -Anfrage.
- IRQ -Modus: Ein privilegierter Modus, der eingegeben wird, wenn der Prozessor einen Interrupt akzeptiert.
- Supervisor (SVC) -Modus: Ein privilegierter Modus, der eingegeben wird, wenn die CPU zurückgesetzt wird oder wenn eine SVC -Anweisung ausgeführt wird.
- Abbruchmodus: Ein privilegierter Modus, der eingegeben wird, wenn eine Ausnahme von Vorabbruch oder Datenabbruch auftritt.
- Undefinierter Modus: Ein privilegierter Modus, der eingegeben wird, wenn eine undefinierte Anweisungsausnahme auftritt.
- Systemmodus (ARMV4 und höher): Der einzige privilegierte Modus, der nicht von einer Ausnahme eingegeben wird. Es kann nur eingegeben werden, indem eine Anweisung ausgeführt wird, die explizit in die Modus -Bits des aktuellen Programmstatusregisters (CPSR) aus einem anderen privilegierten Modus (nicht aus dem Benutzermodus) schreibt.
- Monitor -Modus (ARMV6- und ARMV7 -Sicherheitsverlängerungen, ARMV8 EL3): Ein Monitormodus wird eingeführt, um die Vertrauenszone -Erweiterung in Armkernen zu unterstützen.
- Hyp -Modus (ARMV7 -Virtualisierungserweiterungen, ARMV8 EL2): Ein Hypervisor -Modus, der unterstützt Popek- und Goldberg -Virtualisierungsanforderungen Für den nicht sicheren Betrieb der CPU.[95][96]
- Fadenmodus (ARMV6-M, ARMV7-M, ARMV8-M): Ein Modus, der entweder als privilegiert oder als nicht privilegiert angegeben werden kann. Unabhängig davon, ob der Hauptstapelzeiger (MSP) oder der Prozessstapelzeiger (PSP) verwendet wird, kann auch im Steuerregister mit privilegiertem Zugriff angegeben werden. Dieser Modus ist für Benutzeraufgaben in der RTOS-Umgebung konzipiert, wird jedoch in der Regel in Bare-Metal für Super-Loop verwendet.
- Handlermodus (ARMV6-M, ARMV7-M, ARMV8-M): Ein Modus, der für die Ausnahmebehandlung bestimmt ist (mit Ausnahme des Resets, der im Thread -Modus behandelt wird). Der Handler -Modus verwendet immer MSP und arbeitet in privilegierter Ebene.
Befehlssatz
Die ursprüngliche (und nachfolgende) Arm Implementierung wurde ohne fest verdrahtet Mikrocode, wie das viel einfachere 8 Bit 6502 Prozessor, der in früheren Eichelmikrocomputern verwendet wird.
Die 32-Bit-Armarchitektur (und die 64-Bit-Architektur zum größten Teil) enthält die folgenden RISC-Funktionen:
- Architektur laden/store.
- Keine Unterstützung für Nicht ausgerichtete Speicherzugriffe In der Originalversion der Architektur. ARMV6 und später, mit Ausnahme einiger Mikrocontroller-Versionen, unterstützen Sie nicht ausgerichtete Zugriffe für Anweisungen für Halbwort- und Einzelwörter mit einigen Einschränkungen, wie z. B. ohne Garantie Atomizität.[97][98]
- Gleichmäßige 16 × 32-Bit Datei registrieren (einschließlich des Programmschalters, Stackzeigers und dem Link -Register).
- Feste Befehlsbreite von 32 Bits, um die Dekodierung zu erleichtern und Pipelining, auf Kosten des Rückgangs Codedichte. Später die Daumenanweisungssatz 16-Bit-Anweisungen und erhöhte Codedichte hinzugefügt.
- Meistens einzelne Taktzyklusausführung.
Um das einfachere Design zu kompensieren, im Vergleich zu Prozessoren wie dem Intel 80286 und Motorola 68020Es wurden einige zusätzliche Designmerkmale verwendet:
- Die bedingte Ausführung der meisten Anweisungen reduziert den Zweig -Overhead und kompensiert das Fehlen von a Zweigprädiktor in frühen Chips.
- Arithmetische Anweisungen ändern sich Bedingungscodes Nur wenn gewünscht.
- 32-Bit Fassschieber kann ohne Leistungsstrafe mit den meisten arithmetischen Anweisungen und Adressierungsberechnungen verwendet werden.
- Hat mächtig indexiert Adressierungsmodi.
- A Linkregister Unterstützt schnelle Blattfunktionsaufrufe.
- Ein einfacher, aber schneller 2-Prioritäts-Niveau unterbrechen Das Subsystem hat die Registerbanken gewechselt.
Arithmetische Anweisungen
Arm umfasst ganzzahlige arithmetische Operationen für Add, Subtrahieren und Multiplizieren. Einige Versionen der Architektur unterstützen auch die Kluftoperationen.
ARM unterstützt 32-Bit × 32-Bit-Multiplikationen mit einem 32-Bit-Ergebnis oder einem 64-Bit-Ergebnis, obwohl Cortex-M0 / M0+ / M1-Kerne 64-Bit-Ergebnisse nicht unterstützen.[99] Einige Armkerne unterstützen auch 16-Bit × 16-Bit- und 32-Bit × 16-Bit-Multiplikationen.
Die Divide -Anweisungen sind nur in den folgenden Armarchitekturen enthalten:
- ARMV7-M- und ARMV7E-M-Architekturen enthalten immer Divide-Anweisungen.[100]
- Die ARMV7-R-Architektur enthält immer Divide-Anweisungen im Daumenanweisungssatz, jedoch optional in seinem 32-Bit-Befehlssatz.[101]
- ARMV7-A-Architektur enthält optional die Divide-Anweisungen. Die Anweisungen werden möglicherweise nicht nur im Daumenanweisungssatz oder im Daumenanweisungssatz implementiert oder in den Daumen- und ARM -Anweisungssätzen implementiert oder implementiert, wenn die Virtualisierungserweiterungen enthalten sind.[101]
Register
USR | sys | SVC | Abt | 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 | |
R15 | ||||||
CPSR | ||||||
SPSR_SVC | SPSR_ABT | Spsr_und | SPSR_IRQ | SPSR_FIQ |
Die Register R0 bis R7 sind in allen CPU -Modi gleich; Sie sind nie Banked.
Die Register R8 bis R12 sind in allen CPU -Modi mit Ausnahme des FIQ -Modus gleich. Der FIQ -Modus hat seinen eigenen R8 bis R12 -Register.
R13 und R14 werden über alle privilegierten CPU -Modi mit Ausnahme des Systemmodus gesetzt. Das heißt, jeder Modus, der aufgrund einer Ausnahme eingetragen werden kann, hat seinen eigenen R13 und R14. Diese Register enthalten im Allgemeinen den Stapelzeiger bzw. die Rückgabeadresse von Funktionsaufrufen.
Aliase:
- R13 wird auch als SP bezeichnet, die Stapelzeiger.
- R14 wird auch als LR bezeichnet, die Linkregister.
- R15 wird auch als PC bezeichnet, die Programm zähler.
Das aktuelle Programmstatusregister (CPSR) hat die folgenden 32 Bit.[102]
- M (Bits 0–4) sind die Bits der Prozessormodus.
- T (Bit 5) ist das Daumenzustandsbit.
- F (Bit 6) ist das FIQ -Deaktivierungsbit.
- Ich (Bit 7) ist das IRQ -Deaktivierungsbit.
- A (Bit 8) ist die nicht ungenauen Daten, die bit deaktivieren.
- E (Bit 9) ist das Datenend -Bit.
- Es ist (Bits 10–15 und 25–26) die IF-Then-Staatsbits.
- GE (Bits 16–19) ist die größere Bits.
- DNM (Bits 20–23) ist die nicht modifizierten Bits.
- J (Bit 24) ist das Java -Staat.
- Q (Bit 27) ist das klebrige Überlaufbit.
- V (Bit 28) ist das Überlaufbit.
- C (Bit 29) ist das Trag-/Ausleihen-/Verlängerungsbit.
- Z (Bit 30) ist das Nullbit.
- N (Bit 31) ist das negative/weniger als Bit.
Bedingte Ausführung
Fast jeder Armunterricht hat eine bedingte Ausführungsfunktion genannt Prädikation, das mit einem 4-Bit-Bedingungscode-Selektor implementiert wird (das Prädikat). Um eine bedingungslose Ausführung zu ermöglichen, wird einer der Vier-Bit-Codes dazu führt, dass die Anweisung immer ausgeführt wird. Die meisten anderen CPU -Architekturen haben nur Bedingungscodes für Branch -Anweisungen.[103]
Obwohl das Prädikat vier der 32 Bits in einem Anweisungscode einnimmt und somit die Codierungsbits für Verschiebungen in Anweisungen für Speicherzugriff erheblich senkt wenn
Aussagen. Abgesehen davon, dass die Branch -Anweisungen selbst eliminiert werden, erhalten Sie die Pipeline abrufen/decodieren/ausführen.
Ein Algorithmus, der ein gutes Beispiel für die bedingte Ausführung liefert, ist die subtraktionsbasierte Subtraktionsbasis Euklidischer Algorithmus zum Berechnen der größter gemeinsamer Teiler. In dem C ProgrammierspracheDer Algorithmus kann geschrieben werden als:
int GCD(int a, int b) { während (a ! = b) // Wir geben die Schleife ein, wenn a <b oder a> b, aber nicht, wenn a == b wenn (a > b) // Wenn a> b wir tun a -= b; anders // Wenn a <b wir tun (nein if (a <b), benötigt A! = B im Zustand, während der Zustand) b -= a; Rückkehr a; }
Der gleiche Algorithmus kann in gewisser Weise näher am Zielarm umgeschrieben werden Anweisungen wie:
Schleife: // vergleiche a und b Gt = a > b; Lt = a < b; Ne = a ! = b; // Vorgänge basierend auf den Flag -Ergebnissen durchführen wenn(Gt) a -= b; // Subtrahiere * nur * wenn größer als größer. wenn(Lt) b -= a; // Subtrahiere * nur * wenn weniger als weniger als wenn(Ne) gehe zu Schleife; // Schleife * nur * Wenn verglichene Werte nicht gleich waren Rückkehr a;
und codiert in Montagesprache wie:
; Weisen Sie A zum Registrieren von R0, B bis R1 zu Schleife: CMP R0, R1 ; Setzen Sie den Zustand "ne" if (a! = b), ; "Gt" if (a> b), ; oder "lt" if (a <b) Subgt R0, R0, R1 ; Wenn "gt" (größer als), dann a = a-b Sublt R1, R1, R0 ; Wenn "lt" (weniger als), dann b = b-a BNE Schleife ; Wenn "ne" (nicht gleich), dann Schleife B lr ; Rückkehr
das vermeidet die Zweige um die dann
und anders
Klauseln. Wenn R0
und R1
sind gleich, dann keines der von beiden der Sub
Es werden Anweisungen ausgeführt, wodurch die Notwendigkeit einer bedingten Niederlassung zur Implementierung der erforderlich ist während
Überprüfen Sie beispielsweise oben in der Schleife Untergräben
(weniger oder gleich) verwendet.
Eine der Möglichkeiten, wie Daumencode eine dichtere Codierung bietet, besteht darin, den Vier-Bit-Selektor aus Anweisungen ohne Branch zu entfernen.
Andere Eigenschaften
Ein weiteres Merkmal der Befehlssatz ist die Fähigkeit, Verschiebungen zu falten und in die zu drehen Datenverarbeitung (arithmetische, logische und registrierende Bewegung) Anweisungen, so dass beispielsweise die Anweisung in C Sprache:
a += (j << 2);
Könnte als Ein-Zyklus-Anweisungen mit einem Wort gerendert werden:[104]
HINZUFÜGEN Ra, Ra, Rj, LSL #2
Dies führt dazu, dass das typische ARM -Programm mit weniger Speicherzubehör dichter ist als erwartet. Somit wird die Pipeline effizienter verwendet.
Der Armprozessor verfügt auch über Merkmale, die in anderen RISC -Architekturen selten zu sehen sind, wie z. PC-Relative Adressierung (in der Tat auf dem 32-Bit[1] Arm die PC ist einer seiner 16 Register) und adressierende Modi vor und nach der Inkremente.
Der ARM -Anweisungssatz hat im Laufe der Zeit zugenommen. Einige frühe Armprozessoren (vor ARM7TDMI) haben beispielsweise keine Anweisung, eine Zwei-Byte-Menge zu speichern.
Pipelines und andere Implementierungsprobleme
Die ARM7 und frühere Implementierungen haben dreistufige Pipeline; Die Stufen abrufen, dekodieren und ausführen. Hochleistungsdesigns wie ARM9 haben tiefere Pipelines: Cortex-A8 hat dreizehn Stufen. Zusätzliche Implementierungsänderungen für eine höhere Leistung umfassen eine schnellere Addierer und umfangreicher Zweigvorhersage Logik. Der Unterschied zwischen den ARM7di und den ARM7DMI -Kernen war beispielsweise ein verbesserter Multiplikator; Daher das hinzugefügte "M".
Coprozessoren
Die ARM-Architektur (Pre-Armv8) bietet eine nicht intrusive Möglichkeit, den Befehlssatz mit "Coprozessoren" zu erweitern, die mit MCR, MRC, MRRC, MCRR und ähnlichen Anweisungen behandelt werden können. Der Coprozessorraum ist logisch in 16 Coprozessoren mit Zahlen von 0 bis 15 unterteilt. Der Coprozessor 15 (CP15) wird für einige typische Kontrollfunktionen wie die Verwaltung der Caches und einige typische Kontrollfunktionen reserviert MMU Betrieb auf Prozessoren, die einen haben.
In ARM-basierten Maschinen werden periphere Geräte normalerweise an den Prozessor angeschlossen, indem ihre physischen Register in den Armspeicherraum, in den Coprozessorraum oder durch Anschließen mit einem anderen Gerät (Bus), das sich wiederum an den Prozessor befindet, einbezieht. Coprozessorzugriffe haben eine geringere Latenz, sodass einige Peripheriegeräte - zum Beispiel einen XScale Interrupt -Controller - in beiden Arten zugänglich sind: durch Speicher und durch Coprozessoren.
In anderen Fällen integrieren ChIP -Designer nur Hardware mit dem Coprozessormechanismus. Beispielsweise kann eine Bildverarbeitungsmaschine ein kleiner ARM7TDMI -Kern in Kombination mit einem Koprozessor sein, der spezielle Vorgänge zur Unterstützung eines bestimmten Satzes von HDTV -Transcodierungsprimitiven hat.
Debuggen
Zu allen modernen ARM -Prozessoren gehören Hardware -Debugging -Einrichtungen, mit denen Software -Debugger Operationen wie das Stoppen, Treten und Breakpoining von Code ausführen können, beginnend mit dem Zurücksetzen. Diese Einrichtungen werden gebaut Jtag Unterstützung, obwohl einige neuere Kerne optional den zwei Draht-"SWD" -Protokoll des Arms unterstützen. In den ARM7TDMI -Kernen repräsentierte das "D" JTAG -Debug -Unterstützung und das "I" die Präsenz eines "Embeddedice" -Debugmoduls. Für ARM7- und ARM9 -Kerngenerationen war Embeddedice Over JTAG ein De -facto -Debug -Standard, der jedoch nicht architektonisch garantiert wurde.
Die ARMV7 -Architektur definiert grundlegende Debug -Einrichtungen auf architektonischer Ebene. Dazu gehören Haltepunkte, Wachpoints und Anweisungsausführung in einem "Debug -Modus"; Ähnliche Einrichtungen waren auch mit Embeddedice erhältlich. Sowohl "Halt -Modus" als auch "Monitor" -Modus -Debugging werden unterstützt. Der tatsächliche Transportmechanismus, der für den Zugriff auf die Debug -Einrichtungen verwendet wird, ist nicht architektonisch spezifiziert, aber die Implementierungen umfassen im Allgemeinen die JTAG -Unterstützung.
Es gibt eine separate ARM -Debug -Architektur "Coressight", die von ARMV7 -Prozessoren nicht architektonisch verlangt wird.
Debugug Access Port
Der Debug Access Port (DAP) ist eine Implementierung einer ARM -Debug -Schnittstelle.[105]Es gibt zwei verschiedene unterstützte Implementierungen, das serielle Draht Jtag Debug-Port (SWJ-DP) und der Seriendraht-Debug-Port (SW-DP).[106] CMSIS-DAP ist eine Standardschnittstelle, die beschreibt, wie verschiedene Debugging-Software auf einem Host-PC über USB mit Firmware kommunizieren können, die auf einem Hardware-Debugger ausgeführt werden, was wiederum über SWD oder JTAG zu einer coressight-fähigen ARM-Cortex-CPU spricht.[107][108][109][110]
DSP -Verbesserungsanweisungen
Verbesserung der Armarchitektur für digitale Signalverarbeitung und Multimedia -Anwendungen, DSP -Anweisungen wurden dem Satz hinzugefügt.[111] Diese werden durch ein "e" im Namen der Architekturen der ARMV5TE und ARMV5TEJ gekennzeichnet. E-Varianten implizieren auch T, D, M und I.
Die neuen Anweisungen sind häufig in digitaler Signalprozessor (DSP) Architekturen. Dazu gehören Variationen des signierten Unterschriftens multiplizieren - akkumuliert, gesättigtes Hinzufügen und Subtrahieren und zählen führende Nullen.
SIMD -Erweiterungen für Multimedia
In der ARMV6 -Architektur eingeführt, war dies ein Vorläufer für Advanced SIMD, auch benannt Neon.[112]
Jazelle
Jazelle DBX (Direct Bytecode Execution) ist eine Technik, die es zulässt Java -Bytecode direkt in der ARM-Architektur als dritter Ausführungsstatus (und Anweisungssatz) neben dem vorhandenen Arm und dem Daumenmodus ausgeführt werden. Die Unterstützung für diesen Zustand wird durch die "J" in der ARMV5Tej-Architektur sowie in den Kernnamen arm9ej-s und arm7ej-s signalisiert. Die Unterstützung für diesen Zustand ist ab ARMV6 (mit Ausnahme des ARMV7-M-Profils) erforderlich, obwohl neuere Kerne nur eine triviale Implementierung enthalten, die keine Hardwarebeschleunigung bietet.
Daumen
Verbesserung der kompilierten Codedichte, Prozessoren seit dem ARM7TDMI (veröffentlicht 1994[113]) haben die vorgestellt Daumen Anweisungssatz, die ihren eigenen Zustand haben. (Das "T" in "TDMI" zeigt das Daumenmerkmal an.) In diesem Zustand führt der Prozessor den Daumenanweisungssatz aus, eine kompakte 16-Bit-Codierung für eine Teilmenge des ARM-Befehlssatzes.[114] Die meisten Daumenanweisungen werden direkt den normalen Armanweisungen zugeordnet. Die Raumeinsparung besteht darin, einige der Anweisungen implizit zu machen und die Anzahl der Möglichkeiten zu begrenzen, verglichen mit den ARM -Anweisungen, die im ARM -Anweisungsstatus ausgeführt wurden.
Im Daumen haben die 16-Bit-Opcodes weniger Funktionen. Beispielsweise können nur Zweige bedingt sein, und viele Opcodes sind darauf beschränkt, nur die Hälfte aller allgemeinen Register der CPU zugreifen zu können. Die kürzeren Opcodes bieten insgesamt eine verbesserte Codedichte, obwohl einige Vorgänge zusätzliche Anweisungen erfordern. In Situationen, in denen der Speicheranschluss oder die Busbreite auf weniger als 32 Bit beschränkt ist, ermöglichen die kürzeren Daumen-Opcodes eine erhöhte Leistung im Vergleich zu 32-Bit-ARM-Code, da möglicherweise weniger Programmcode über die eingeschränkte Speicherbandbreite in den Prozessor geladen werden muss.
Im Gegensatz zu Prozessorarchitekturen mit variabler Länge (16- oder 32-Bit) Anweisungen wie Cray-1 und Hitachi SuperhDie Arm- und Daumenanweisungssätze existieren unabhängig voneinander. Eingebettete Hardware wie die Game Boy AdvanceSie haben in der Regel eine kleine Menge RAM, die mit einem vollständigen 32-Bit-Datapath zugänglich sind. Die Mehrheit wird über einen 16-Bit- oder schmaleren Sekundärdatapath zugegriffen. In dieser Situation ist es in der Regel sinnvoll, Daumencode zu kompilieren und einige der CPU-intensivsten Abschnitte mit vollständigen 32-Bit-Armanweisungen mit 32-Bit-Arm-Anweisungen zu erfassen, um diese größeren Anweisungen in den 32-Bit-Bus-Zugriffsspeicher zu geben.
Der erste Prozessor mit einem Daumen Anweisungsdecoder war der Arm7tdmi. Alle ARM9- und späteren Familien, einschließlich Xscale, haben einen Daumenunterrichtsdecoder aufgenommen. Es enthält Anweisungen aus dem Hitachi Superh (1992), das durch Arm lizenziert wurde.[115] Die kleinsten Prozessorfamilien von ARM (Cortex M0 und M1) implementieren nur den 16-Bit-Daumenunterrichtssatz für maximale Leistung in den niedrigsten Kostenanwendungen.
Daumen-2
Daumen-2 Die Technologie wurde in der eingeführt ARM1156 Kern, angekündigt im Jahr 2003. Daumen-2 erweitert den begrenzten 16-Bit-Befehlssatz von Daumen mit zusätzlichen 32-Bit-Anweisungen, um den Anweisungssatz mehr Breite zu geben, wodurch ein Befehlssatz variabler Länge erzeugt wird. Ein angegebenes Ziel für Daumen-2 war es, die Codendichte ähnlich wie Daumen mit einer ähnlichen Leistung wie der ARM-Befehlsanweisung im 32-Bit-Speicher zu erreichen.
Daumen-2 erweitert den Daumenanweisungssatz mit Bitfeldmanipulation, Tabellenzweigen und bedingter Ausführung. Gleichzeitig wurde der ARM -Befehlssatz erweitert, um die äquivalente Funktionalität in beiden Anweisungssätzen aufrechtzuerhalten. Eine neue "Unified Assembly Sprache" (UAL) unterstützt die Erzeugung von Daumen- oder ARM -Anweisungen aus demselben Quellcode. Versionen von Faustern auf ARMV7 -Prozessoren sind im Wesentlichen so fähig wie ARM -Code (einschließlich der Fähigkeit, Interrupt -Handler zu schreiben). Dies erfordert ein wenig Sorgfalt und die Verwendung eines neuen "IT" (if-then) Anweisungen, der bis zu vier aufeinanderfolgende Anweisungen ermöglicht, basierend auf einem getesteten Zustand oder in seiner Umkehrung auszuführen. Beim Kompilieren in den ARM -Code wird dies ignoriert, aber beim Kompilieren in Daumen erzeugt er eine tatsächliche Anweisung. Zum Beispiel:
; if (r0 == r1) CMP R0, R1 Ite Gl ; Arm: Kein Code ... Daumen: IT -Anweisung ; dann r0 = r2; MOVEQ R0, R2 ; Arm: bedingt; Daumen: Zustand über ITE 'T' (dann) ; sonst r0 = r3; Movne R0, R3 ; Arm: bedingt; Daumen: Zustand über ITE 'e' (sonst) ; Erinnern Sie sich daran, dass der Daumenbewegungsanweis nicht "EQ" oder "NE" codiert.
Alle ARMV7 -Chips unterstützen den Daumenanweisungssatz. Alle Chips in der Cortex-A-Serie, der Cortex-R-Serie und der ARM11-Serie unterstützen sowohl "ARM-Befehlssatzstatus" als auch "Thumb Instruction Set Status", während Chips in der Cortex-m Serie unterstützt nur den Daumenanweisungssatz.[116][117][118]
Daumenausführungsumgebung (Thumbee)
Thumbee (fälschlicherweise aufgerufen Daumen-2ee in einigen ARM -Dokumentation), die als Jazelle RCT vermarktet wurde[119] (Laufzeit Compilation -Ziel), wurde 2005 bekannt gegeben und 2011 veraltet. Es erschien erstmals in der Cortex-A8 Prozessor. Thumbee ist ein viertes Anweisungsstatus, der kleine Änderungen am Daumen-2-erweiterten Befehlssatz vornimmt. Diese Änderungen machen den Befehlssatz besonders für den zur Laufzeit generierten Code geeignet (z. B. nach JIT -Zusammenstellung) in verwaltet Ausführungsumgebungen. Thumbee ist ein Ziel für Sprachen wie z. Java, C#, Perl, und Pythonund erlaubt JIT -Compiler Um einen kleineren kompilierten Code auszugeben, ohne die Leistung zu beeinflussen.
Zu den neuen Funktionen von Thumbee gehören automatische Nullzeigerprüfungen für jede Last- und Speicheranweisung, eine Anweisung zur Durchführung einer Array -Grenzen und spezielle Anweisungen, die einen Handler bezeichnen. Da es sich bei der Nutzung der Daumen-2-Technologie befindet, bietet Thumbee den Zugang zu den Registern R8-R15 (wo der Jazelle/DBX Java VM-Staat stattfindet).[120] Handler sind kleine Abschnitte von häufig bezeichnetem Code, die häufig zur Implementierung von Sprachen auf hoher Ebene verwendet werden, z. B. die Zuweisung von Speicher für ein neues Objekt. Diese Veränderungen kommen aus der Wiederverwendung einer Handvoll Opcodes und dem Wissen, dass der Kern im neuen Thumbee -Zustand liegt.
Am 23. November 2011 veraltete Arm Holdings jegliche Verwendung des Thumbee -Anweisungssatzes,[121] und ARMV8 entfernt die Unterstützung für Thumbee.
Schwimmpunkt (VFP)
VFP (Vector Floating Point) -Technologie ist a schwimmende Punkteinheit (FPU) Coprozessor -Erweiterung der Armarchitektur[122] (In ARMV8 unterschiedlich implementiert - Coprozessoren, die dort nicht definiert sind). Es bietet kostengünstige mit einfacher Genauigkeit und Doppelte Genauigkeit Schwimmpunktberechnung vollständig entspricht der ANSI/IEEE STD 754-1985 Standard für binäre schwimmende Punktarithmetik. VFP bietet eine Floating-Point-Berechnung, die für ein breites Spektrum von Anwendungen wie PDAs, Smartphones, Sprachkomprimierung und Dekompression, dreidimensionale Grafiken und digitale Audio, Drucker, Set-Top-Boxen und Automobilanwendungen geeignet ist. Die VFP -Architektur sollte die Ausführung kurzer "Vektormodus" -Berichtungen unterstützen, diese jedoch nacheinander in jedem Vektorelement betrieben und somit nicht die Leistung von True boten Einzelanweisung, mehrere Daten (SIMD) Vektorparallelität. Dieser Vektormodus wurde daher kurz nach seiner Einführung entfernt.[123] Ersetzt durch die viel leistungsstärkere Advanced Simd, auch benannt Neon.
Einige Geräte wie der Arm Cortex-A8 haben einen Abfall Vfplite Modul anstelle eines vollständigen VFP -Moduls und benötigt ungefähr zehnmal mehr Taktzyklen pro Schwimmerbetrieb.[124] Pre-Armv8-Architektur implementiert Floating-Punkt/SIMD mit der Coprozessorschnittstelle. Andere Floating-Punkt- und/oder SIMD-Einheiten, die in ARM-basierten Prozessoren unter Verwendung der Coprozessor-Schnittstelle zu finden sind, umfassen FPA, FPE, iwmmxtEinige davon wurden in Software durch Einfangen implementiert, hätten jedoch in Hardware implementiert werden können. Sie liefern einige der gleichen Funktionen wie VFP, sind aber nicht Opcode-kompatibel damit. FPA10 bietet auch erweiterte Präzision, aber implementiert die korrekte Rundung (erforderlich von IEEE 754) nur in einzelnen Präzision.[125]
- VFPV1
- Obsolet
- VFPV2
- Eine optionale Erweiterung der Architekturen ARMV5TE, ARMV5TEJ und ARMV6. VFPV2 hat 16 64-Bit-FPU-Register.
- VFPV3 oder VFPV3-D32
- Implementiert auf den meisten Cortex-A8- und A9 ARMV7-Prozessoren. Es ist rückwärts kompatibel mit VFPV2, außer dass es keine schwimmenden Punktexempfungen fangen kann. VFPV3 verfügt standardmäßig über 32 64-Bit-FPU-Register, fügt VCVT-Anweisungen hinzu, um zwischen Skalar, Schwimmer und doppelt umzuwandeln, und fügt VMOV einen sofortigen Modus hinzu, so dass Konstanten in FPU-Register geladen werden können.
- VFPV3-D16
- Wie oben, aber mit nur 16 64-Bit-FPU-Registern. Implementiert auf Cortex-R4- und R5-Prozessoren und die Tegra 2 (Cortex-A9).
- VFPV3-F16
- Ungewöhnlich; es unterstützt IEEE754-2008 Halbprezision (16-Bit) Schwimmpunkt als Speicherformat.
- VFPV4 oder VFPV4-D32
- Cortex-A7 implementiert auf Cortex-A12- und A15 ARMV7-Prozessoren und verfügt optional im Fall einer FPU mit Neon VFPV4-D32.[126] VFPV4 verfügt standardmäßig über 32 64-Bit-FPU-Register, fügt sowohl halb-Präzisionsunterstützung als Speicherformat hinzu und fusionsmultiply-akkulatur Anweisungen zu den Merkmalen von VFPV3.
- VFPV4-D16
- Wie oben, aber es hat nur 16 64-Bit-FPU-Register. Implementiert auf Cortex-A5- und A7-Prozessoren im Fall einer FPU ohne Neon.[126]
- VFPV5-D16-m
- Implementiert auf Cortex-M7, wenn eine einzelne und doppelte Precision-Gleitkomma-Kernoption besteht.
Im Debian Linux, und Derivate wie z. Ubuntu und Linux Mint, Armhf (Arm hart schweben) bezieht sich auf die ARMV7-Architektur, einschließlich der zusätzlichen VFP3-D16-Floating-Punkt-Hardware-Erweiterung (und thumb-2) oben. Softwarepakete und Cross-Compiler-Tools verwenden die Suffixe ARMHF vs. Arm/Armel, um zu differenzieren.[127]
Advanced SIMD (Neon)
Das Fortgeschrittene SIMD Erweiterung (AKA Neon oder "MPE" Medienverarbeitungsmaschine) ist eine kombinierte 64- und 128-Bit SIMD -Anweisungssatz, der eine standardisierte Beschleunigung für Medien- und Signalverarbeitungsanwendungen bietet. Neon ist in allen Cortex-A8-Geräten enthalten, ist jedoch in Cortex-A9-Geräten optional.[128] Neon kann MP3 -Audio -Dekodierung auf CPUs mit 10 MHz ausführen und die ausführen GSM Adaptive Multi-Rate (AMR) Sprachcodec bei 13 MHz. Es verfügt über einen umfassenden Befehlssatz, separate Registerdateien und unabhängige Ausführungshardware.[129] Neon unterstützt 8-, 16-, 32- und 64-Bit-Ganzzahl- und Single-Precision-Floating-Punkt-Daten- und SIMD-Operationen für die Behandlung von Audio- und Videoverarbeitung sowie Grafik- und Gaming-Verarbeitung. In Neon unterstützt der SIMD bis zu 16 Operationen gleichzeitig. Die Neonhardware teilt die gleichen Schwimmpunktregister wie in VFP verwendet. Geräte wie die ARM Cortex-A8 und Cortex-A9 unterstützen 128-Bit-Vektoren, werden jedoch mit 64 Bit gleichzeitig ausgeführt.[124] Neuere Cortex-A15-Geräte können jeweils 128 Bit ausführen.[130][131]
Eine Eigenart von Neon in ARMV7 -Geräten ist, dass es alle spült Subnormale Zahlen zu Null und infolgedessen die GCC Compiler wird es nicht verwenden, es sei denn -funsafe-math-optimizations
, was es ermöglicht, Denormalen zu verlieren, wird eingeschaltet. "Enhanced" Neon definiert, da ARMV8 diese Eigenart nicht hat, sondern seitdem GCC 8.2 Die gleiche Flagge ist weiterhin erforderlich, um Neonanweisungen zu aktivieren.[132] Andererseits betrachtet GCC Neon für AARCH64 für ARMV8.
ProjectNe10 ist das erste Open-Source-Projekt von ARM (von Anfang an; während sie ein älteres Projekt erwarb, das jetzt benannt ist Mbed TLS). Die NE10 -Bibliothek ist eine Reihe gemeinsamer, nützlicher Funktionen, die sowohl in Neon als auch in C (für die Kompatibilität) geschrieben wurden. Die Bibliothek wurde erstellt, um Entwicklern die Verwendung von Neonoptimierungen ohne Lernen von Neon zu ermöglichen, aber sie dient auch als Reihe von hochoptimierten Intrinsischen- und Assembler -Code -Beispielen für gemeinsame Routinen für DSP-, Arithmetik- und Bildverarbeitung. Der Quellcode ist auf GitHub verfügbar.[133]
Armheliumtechnologie
Helium ist die M-Profile-Vektorverlängerung (MVE). Es fügt mehr als 150 Skalar- und Vektoranweisungen hinzu.[134]
Sicherheitsverlängerungen
TrustZone (für Cortex-A-Profil)
Die als Trustzone -Technologie vermarkteten Sicherheitsweiterungen sind in ARMV6KZ- und späteren Architekturen des Anwendungsprofils. Es bietet eine kostengünstige Alternative zum Hinzufügen eines weiteren dedizierten Sicherheitskerns zu einem SOC, indem zwei virtuelle Prozessoren bereitgestellt werden, die durch Hardware-basierte Zugriffskontrolle unterstützt werden. Dadurch kann der Anwendungskern zwischen zwei Zuständen wechseln, die als als bezeichnet werden Welten (Um die Verwirrung mit anderen Namen für Fähigkeitsbereiche zu verringern), um zu verhindern, dass Informationen von der vertrauenswürdigeren Welt in die weniger vertrauenswürdige Welt austreten. Dieser Weltschalter ist im Allgemeinen orthogonal gegenüber allen anderen Fähigkeiten des Prozessors, daher kann jede Welt unabhängig voneinander arbeiten und gleichzeitig denselben Kern verwenden. Speicher und Peripheriegeräte werden dann auf die operative Welt des Kerns aufmerksam gemacht und können dies verwenden, um die Zugriffskontrolle für Geheimnisse und Code auf dem Gerät bereitzustellen.[135]
In der Regel wird in der weniger vertrauenswürdigen Welt ein reichhaltiges Betriebssystem mit einem kleineren Sicherheitscode in der vertrauenswürdigeren Welt durchgeführt, um die zu verringern Angriffsfläche. Typische Anwendungen umfassen DRM Funktionalität zur Kontrolle der Verwendung von Medien auf ARM-basierten Geräten,[136] und Verhinderung einer nicht genehmigten Verwendung des Geräts.
In der Praxis wurden in der Praxis nicht erkennen Bedrohungsmodell, aber sie sind nicht immun vor Angriff.[137][138]
Offene Virtualisierung[139] ist eine Open -Source -Implementierung der vertrauenswürdigen Weltarchitektur für Trustzone.
AMD hat die Trustzone Sichern Sie die Prozessortechnologie.[140] In einigen, aber nicht allen Produkten aktiviert, AMDs Apus Fügen Sie einen Cortex-A5-Prozessor zum Umgang mit sicherer Verarbeitung hinzu.[141][142][143] Tatsächlich war der Cortex-A5-Trustzone-Kern in frühere AMD-Produkte aufgenommen worden, wurde jedoch aufgrund zeitlicher Einschränkungen nicht aktiviert.[142]
Samsung Knox Verwendet TrustZone für Zwecke wie das Erkennen von Änderungen am Kernel, das Speichern von Zertifikaten und die Bescheinigung von Schlüssel.[144]
TrustZone für ARMV8-M (für Cortex-M-Profil)
Die Sicherheitsverlängerung, die als Trustzone für die ARMV8-M-Technologie vermarktet wurde, wurde in der ARMV8-M-Architektur eingeführt. Während es ähnliche Konzepte wie TrustZone für ARMV8-A enthält, verfügt es über ein anderes architektonisches Design, da die Weltschaltung unter Verwendung von Zweiganweisungen durchgeführt wird, anstatt Ausnahmen zu verwenden. Es unterstützt auch eine sichere Handhabung der Interrupt -Handhabung der beiden Welt, unabhängig vom aktuellen Sicherheitszustand. Zusammen bieten diese Merkmale geringe Latenzaufrufe in die sichere Welt und die reaktionsschnelle Interrupt -Handhabung. Arm bietet einen Referenzstapel sicherer Weltcode in Form von vertrauenswürdiger Firmware für m und PSA zertifiziert.
Nicht-exezute Seitenschutz
Ab ARMV6 unterstützt die Armarchitektur Nicht-exezute Seitenschutz, was bezeichnet wird als Xn, zum niemals ausführen.[145]
Große physische Adressverlängerung (LPAE)
Die ARMV7-A-Architektur wurde 2011 in die große physische Adressverlängerung (LPAE), die die physische Adressgröße von 32 Bit auf 40 Bit erweitert.[146] Die physische Adressgröße ist größer, 44 Bit, in Cortex-A75 und Cortex-A65AE.[147]
ARMV8-R und ARMV8-M
Das ARMV8-R und ARMV8-m Architekturen, die nach der ARMV8-A-Architektur angekündigt wurden, teilen einige Merkmale mit ARMV8-A. ARMV8-M enthält jedoch keine 64-Bit-AARG64-Anweisungen, und ARMV8-R enthielt ursprünglich keine Anweisungen von AARG64. Diese Anweisungen wurden später zu ARMV8-R hinzugefügt.
ARMV8.1-m
Die im Februar 2019 angekündigte ARMV8.1-M-Architektur ist eine Verbesserung der ARMV8-M-Architektur. Es bringt neue Funktionen mit: darunter:
- Eine neue Erweiterung des Vektoranweisungssatzes. Die M-Profile-Vektorverlängerung (MVE) oder Helium ist für Signalverarbeitung und maschinelle Lernanwendungen gedacht.
- Zusätzliche Anweisungsverbesserungen für Schleifen und Zweige (niedrige Overhead -Zweigweiterung).
- Anweisungen für Halbprezisions-Gleitkomma Unterstützung.
- Anweisungssatzverstärkung für das TrustZone -Management für die Floating Point Unit (FPU).
- Neues Speicherattribut in der Speicherschutzeinheit (MPU).
- Verbesserungen im Debug, einschließlich der Performance Monitoring Unit (PMU), einer nicht privilegierten Debug -Erweiterung und zusätzlichen Debug -Unterstützung auf die Entwicklung von Signalverarbeitungsanwendungen.
- Erweiterung der Zuverlässigkeit, Verfügbarkeit und Wartungsfähigkeit (RAS).
64/32-Bit-Architektur
ARMV8
ARMV8-A
Angekündigt im Oktober 2011,[3] ARMV8-A (oft als ARMV8 bezeichnet, während der ARMV8-R ebenfalls verfügbar ist) stellt eine grundlegende Änderung der Armarchitektur dar. Es fügt eine optionale 64-Bit-Architektur hinzu (z. B. Cortex-A32 ist eine 32-Bit-ARMV8-A-CPU[148] Während die meisten ARMV8-A-CPUs 64-Bit), "AArch64" und den zugehörigen neuen "A64" -Benerkungssatz unterstützen. AArch64 bietet Benutzerraum Kompatibilität mit ARMV7-A, der 32-Bit-Architektur, darin als "AArch32" bezeichnet und der alte 32-Bit-Anweisungssatz, der jetzt "A32" bezeichnet wird. Der Daumenanweisungssatz wird als "T32" bezeichnet und hat kein 64-Bit-Gegenstück. Mit ARMV8-A können 32-Bit-Anwendungen in einem 64-Bit-Betriebssystem und einem 32-Bit Hypervisor.[1] Arm kündigte am 30. Oktober 2012 ihre Cortex-A53- und Cortex-A57-Kerne an.[71] Apple war der erste, der einen ARMV8-A-kompatiblen Kern in einem Verbraucherprodukt veröffentlichte (Apple A7 in iPhone 5s). AppliedMicromit einem FPGAwar der erste, der Armv8-a Demo-ARMV8-A war.[149] Der erste ARMV8-A SOC aus Samsung ist der Exynos 5433 in der verwendet Galaxy Note 4, mit zwei Clustern von vier Cortex-A57- und Cortex-A53-Kernen in einer großen Konfiguration; Aber es wird nur im AARG32 -Modus ausgeführt.[150]
Sowohl an AArch32 als auch an AARG64 stellt ARMV8-A VFPV3/V4 und Advanced SIMD (Neon) Standard her. Es fügt auch Kryptographieanweisungen unterstützt zu werden AES, SHA-1/SHA-256 und Finite -Field -Arithmetik.[151] AARG64 wurde in ARMV8-A und seine anschließende Überarbeitung eingeführt. AARG64 ist nicht in den Architekturen 32-Bit ARMV8-R und ARMV8-M enthalten.
ARMV8-R
Der ARMV8-R-Profil wurde optionales AARCH64-Unterstützung hinzugefügt, wobei der erste ARM-Kern die Cortex-R82 implementiert.[152] Es fügt den A64 -Befehlssatz hinzu.
ARMV9
ARMV9-A
Die aktualisierte Architektur wird im März 2021 angekündigt und konzentriert sich auf sichere Ausführung und Unterteilung.[153][154]
Armsystem
ArmsystemFrüher als ARM ServerReady bezeichnet, ist ein Zertifizierungsprogramm, mit dem die generischen Off-the-Shelf-Betriebssysteme und Hypervisoren auf die ARM-basierten Systeme von Datcenter-Servern bis hin zu Industrie- und IoT-Geräten gelangen können. Die wichtigsten Bausteine des Programms sind die Spezifikationen für minimale Hardware- und Firmware -Anforderungen, auf die sich die Betriebssysteme und Hypervisoren verlassen können. Diese Spezifikationen sind:
- Basissystemarchitektur (BSA) und das Marktsegmentspezifische Ergänzungen (z. B.,, Server BSA -Ergänzung)
- Basisschuhanforderungen (BBR) und Basis -Boot -Sicherheitsanforderungen (BBR)
Diese Spezifikationen werden gemeinsam von entwickelt von Armhoteln und seine Partner im Systemarchitekturberatungsausschuss (Systemarchac).
Architecture Compliance Suite (ACS) sind die Testwerkzeuge, mit denen die Einhaltung dieser Spezifikationen überprüft werden kann. Das ARM Systemready -Anforderungen Spezifikation dokumentiert die Anforderungen der Zertifizierungen.
Dieses Programm wurde von vorgestellt von Armhoteln im Jahr 2020 bei der ersten Devsummit -Veranstaltung. Sein Vorgänger ARM ServerReady wurde 2018 bei der ARM TechCon -Veranstaltung eingeführt. Dieses Programm enthält derzeit vier Bands:
- SystemReady SR: Dieses Band ist für Server gedacht, die Betriebssysteme und Hypervisoren unterstützen, die erwarten Uefi, ACPI und Smbios Schnittstellen. Windows Server, Red Hat Enterprise Linux und VMware ESXi-Arm benötigen diese Schnittstellen, während auch andere Linux- und BSD-Distributionen unterstützen können.[Klarstellung erforderlich]
- SystemReady LS: Dieses Band ist für Server gedacht, mit denen Hyperzaller Linux -Betriebssysteme unterstützen, die erwarten Linuxboot Firmware zusammen mit den Schnittstellen von ACPI und SMBIOS.
- SystemReady ES: Dieses Band ist für die Industrial Edge- und IoT -Geräte, die Betriebssysteme und Hypervisoren unterstützen, die UEFI-, ACPI- und SMBIOS -Schnittstellen erwarten. Windows IoT Enterprise, Red Hat Enterprise Linux und VMware ESXi-Arm benötigen diese Schnittstellen, während auch andere Linux- und BSD-Distributionen unterstützen können.[Klarstellung erforderlich]
- SystemReady IR: Dieses Band ist für die Industrial Edge- und IoT -Geräte, die Betriebssysteme unterstützen, die UEFI erwarten und Devicetree Schnittstellen. Eingebettete Linux (z. B.,, Yocto) und einige Linux/BSD -Distributionen (z. B. Fedora, Ubuntu, Debian und OpenSuse) können ebenfalls unterstützen.[Klarstellung erforderlich]
PSA zertifiziert
PSA zertifiziert, früher als Plattform-Sicherheitsarchitektur ausgezeichnet, ist ein Architektur-agnostisches Sicherheitsrahmen und ein Bewertungsschema. Es soll helfen, sich zu sichern Internet der Dinge (IoT) Geräte, die auf System-on-a-Chip-Prozessoren (SOC) basieren.[155] Es wurde eingeführt, um die Sicherheit zu erhöhen, wo ein volles vertrauenswürdige Ausführungsumgebung ist zu groß oder komplex.[156]
Die Architektur wurde von vorgestellt von Armhoteln 2017 bei der jährlichen TechCon -Veranstaltung.[157][158] Obwohl das Schema agnostisch Architektur ist, wurde es zunächst in ARM-Cortex-M-Prozessorkernen implementiert, die für die Verwendung von Mikrocontroller vorgesehen sind. PSA Certified umfasst frei verfügbare Bedrohungsmodelle und Sicherheitsanalysen, die den Prozess zur Entscheidung über Sicherheitsmerkmale in gemeinsamen IoT -Produkten zeigen.[159] Es bietet außerdem frei heruntergeladenbare Anwendungsprogrammierschnittstellen (API) -Pakete, architektonische Spezifikationen, Open-Source-Firmware-Implementierungen und zugehörige Testsuiten.[160]
Nach der Entwicklung des Architecture Security Framework im Jahr 2017 die PSA zertifiziert Das Versicherungsschema wurde 2019 zwei Jahre später bei Embedded World ins Leben gerufen.[161] PSA Certified bietet ein mehrstufiges Sicherheitsbewertungsschema für ChIP-Anbieter, OS-Anbieter und IoT-Gerätehersteller an.[162] Die eingebettete Weltpräsentation führte Chip -Anbieter in die Zertifizierung der Stufe 1 ein. Gleichzeitig wurde ein Schutz der Stufe 2 vorgestellt.[163] Die Zertifizierung der Stufe 2 wurde im Februar 2020 zu einem verwendbaren Standard.[164]
Die Zertifizierung wurde von PSA-gemeinsamen Stakeholdern erstellt, um einen Sicherheitsansatz für eine Vielzahl von IoT-Produkten zu ermöglichen. PSA -zertifizierte Spezifikationen sind die Implementierung und Architektur agnostisch, dadurch können sie auf Chip, Software oder Gerät angewendet werden.[165][163] Die Zertifizierung beseitigt auch die Branchenfragmentierung für IoT -Produkt Hersteller und Entwickler.[166]
Betriebssystemunterstützung
32-Bit-Betriebssysteme
Historische Betriebssysteme
Der erste 32-Bit-Armbasis-Personal Computer, der Acorn Archimedeswar ursprünglich vorgesehen, ein ehrgeiziges Betriebssystem namens zu führen ARX. Die Maschinen wurden mit verschickt RISC OS Dies wurde auch für spätere Armbasis von Acorn und anderen Anbietern verwendet. Einige frühe Eichelmaschinen konnten auch a laufen Unix Port gerufen Risc ix. (Es ist auch nicht zu verwechseln mit RISC/OS, eine zeitgenössische Unix -Variante für die MIPS -Architektur.)
Eingebettete Betriebssysteme
Die 32-Bit-Armarchitektur wird von einer großen Anzahl von unterstützt eingebettet und Echtzeit-Betriebssysteme, einschließlich:
- A2
- Android
- Chibios/Rt
- Deos
- Dryos
- Ökos
- bos
- Freebsd
- Freertos
- Integrität
- Linux
- Micro-Controller-Betriebssysteme
- Mbed
- Minix 3
- MQX
- Nucleus Plus
- Nuttx
- Betriebssystem eingebettet (OSE)
- OS-9[167]
- Pharos[168]
- Plan 9
- Pikeos[169]
- Qnx
- AUFSTAND
- Rtems
- RTXC Quadros
- Sciopta[170]
- Threadx
- Tizenrt
- T-Kernel
- VxWorks
- Windows eingebettet kompakt
- Windows 10 IoT Core
- Zephyr
Betriebssysteme für mobiles Gerät
Die 32-Bit-ARM-Architektur ist die primäre Hardware-Umgebung für die meisten Betriebssysteme für mobile Geräte wie:
Früher, aber jetzt eingestellt:
- Bada
- Firefox OS
- Meego
- iOS 10 und früher
- Symbian
- Windows 10 Mobile
- Windows Rt
- Windows Phone
- Windows Mobil
Desktop/Server -Betriebssysteme
Die 32-Bit-Armarchitektur wird von RISC OS und von mehreren unterstützt Unix-artig Betriebssysteme einschließlich:
64-Bit-Betriebssysteme
Eingebettete Betriebssysteme
Betriebssysteme für mobiles Gerät
- Android Unterstützt ARMV8-A in Android Lollipop (5.0) und später.
- iOS Unterstützt ARMV8-A in iOS 7 und später 64-Bit Apple Socs. iOS 11 und unterstützt später nur 64-Bit-Armprozessoren und Anwendungen.
- Mobian
- Postmarktos
- Arch Linux Arm
- Manjaro[176]
Desktop/Server -Betriebssysteme
- Die Unterstützung für ARMV8-A wurde in die verschmolzen Linux Kernel Version 3.7 Ende 2012.[177] ARMV8-A wird durch eine Reihe von einer Reihe von unterstützt Linux -Verteilungen, wie zum Beispiel:
- Die Unterstützung für ARMV8-A wurde zusammengeführt Freebsd Ende 2014.[185]
- OpenBSD hat im Jahr 2017 experimentelle ARMV8 -Unterstützung.[186]
- Netbsd Hat ARMV8 -Unterstützung Anfang 2018.[187]
- Windows 10 -Läuft 32-Bit "x86 und 32-Bit-ARM-Anwendungen ",[188] sowie native ARM64 -Desktop -Apps.[189][190] Unterstützung für 64-Bit-ARM-Apps in der Microsoft Store ist seit November 2018 erhältlich.[191]
- Mac OS Hat Armunterstützung beginnt mit Macos Big Sur Ende 2020.[192] Rosetta 2 unterstützt Unterstützung für x86-64 Anwendungen, aber nicht Virtualisierung von X86-64-Computerplattformen.[193]
Portierung auf 32- oder 64-Bit-Armbetriebssysteme
Windows -Anwendungen, die für ARM neu kompiliert und mit Winelib verknüpft sind, von der Wein Projekt kann auf 32-Bit- oder 64-Bit-Arm in Linux, FreeBSD oder anderen kompatiblen Betriebssystemen ausgeführt werden.[194][195] x86 Binärdateien, z. Wenn Sie nicht speziell für den Arm kompiliert werden, wurden am ARM mit dem Nachweis Qemu Mit Wein (unter Linux und mehr), aber nicht mit voller Geschwindigkeit oder gleicher Funktionen wie bei Winelib.
Anmerkungen
- ^ Mit 32-Bit-Wörtern entspricht 4 Mbit/Sekunde 1 MIPS.
- ^ Verfügbare Referenzen erwähnen nicht, welches Designteam dies war, aber angesichts des Zeitpunkts und der bekannten Geschichte der Entwürfe der Ära war es wahrscheinlich das nationale Halbleiterteam, dessen NS32016 unter einer großen Anzahl von Käfern litt.
- ^ Matt Evans merkt an, dass die schnelleren Versionen einfach höher waren und keine zugrunde liegenden Änderungen haben.[36]
Siehe auch
- RISC
- Risc-v
- Apfel Silizium
- Arm Big.Little - Heterogene Computerarchitektur von Arm's
- ARM ARMIDITED -Ingenieur - Zertifizierungsprogramm
- Rüstungen - Ein Befehlssatzsimulator
- Bernstein (Prozessorkern) -Ein Open-Source-Arm-kompatibler Prozessorkern
- Amulett -Mikroprozessor - Eine asynchrone Umsetzung der Armarchitektur
- Vergleich von ARMV7-A-Kernen
- Vergleich von ARMV8-A-Kernen
- Unicore -Eine Architektur mit 32 Register, die stark auf einem 32-Bit-Arm basiert
- Kernschmelze (Sicherheitsanfälligkeit)[196]
- Gespenst (Sicherheitslast)
Verweise
Zitate
- ^ a b c d e f Grisenthwaite, Richard (2011). "ARMV8-A-Technologie-Vorschau" (PDF). Archiviert von das Original (PDF) am 11. November 2011. Abgerufen 31. Oktober 2011.
- ^ "Verfahrensnotstandard für die ARM -Architektur" (PDF). Armhoteln. 30. November 2013. Abgerufen 27. Mai 2013.
- ^ a b "Arm gibt technische Details der nächsten Version der Armarchitektur offen" (Pressemitteilung). Armhoteln. 27. Oktober 2011. archiviert von das Original am 1. Januar 2019. Abgerufen 20. September 2013.
- ^ "Ankündigung der ARM Neoverse N1 -Plattform". Community.arm.com. Abgerufen 8. April 2020.
- ^ a b "Einige Fakten über die Acorn Risc -Maschine" Roger Wilson Posting an Comp.arch, 2. November 1988. Abgerufen am 25. Mai 2007.
- ^ a b Hachman, Mark (14. Oktober 2002). "Armkerne klettern in 3G Territory". Extremetech. Abgerufen 24. Mai 2018.
- ^ Turley, Jim (18. Dezember 2002). "Die zwei Prozent Lösung". Eingebettet. Abgerufen 24. Mai 2018.
- ^ Cutress, Ian (22. Juni 2020). "NEU #1 Supercomputer: Fugaku und A64FX von Fujitsu nehmen mit 415 Petaflops den Arm nach oben". www.anandtech.com. Abgerufen 25. Januar 2021.
- ^ "Armpartner haben 200 Milliarden Chips verschickt". Arm (Pressemitteilung). Abgerufen 3. November 2021.
- ^ "Architekten einer klugen Welt und künstliche Intelligenz: Arm". Die Siliziumbewertung. 2019. Abgerufen 8. April 2020.
- ^ "Aktivieren Sie das Massen -IoT -Konnektivität als ARM -Partner, die 100 Milliarden Chips versenden". Community.arm.com. Abgerufen 8. April 2020.
Der kumulative Einsatz von 100 Milliarden Chips, von denen die Hälfte in den letzten vier Jahren versandt wurde. [..] Warum nicht eine Billion oder mehr? Das ist unser Ziel, in dem in den nächsten zwei Jahrzehnten eine Billionen verbundene Geräte eingesetzt werden.
- ^ "MCU-Markt für Migrationspfad zu 32-Bit- und ARM-basierten Geräten: 32-Bit-Umsatztops; 16-Bit-Leads in Einheitslieferungen". IC -Erkenntnisse. 25. April 2013. Abgerufen 1. Juli 2014.
- ^ Turley, Jim (2002). "Die zwei Prozent Lösung". embedded.com.
- ^ "Armbestände, die nach PC- und Servererweiterung sind". Das Register. 1. Februar 2011.
- ^ McGuire-Balanza, Kerry (11. Mai 2010). "Arm von null auf Milliarden in 25 kurzen Jahren". Armhoteln. Abgerufen 8. November 2012.
- ^ Fairbairn, Douglas (31. Januar 2012). "Orale Geschichte von Sophie Wilson" (PDF). Archiviert (PDF) Aus dem Original am 3. März 2016. Abgerufen 2. Februar 2016.
- ^ Smith, Tony (30. November 2011). "Der BBC Micro wird 30". Die Register -Hardware. Archiviert Aus dem Original am 12. Dezember 2011. Abgerufen 12. Dezember 2011.
- ^ Polsson, Ken. "Chronologie der Mikroprozessoren". Processortimeline.info. Abgerufen 27. September 2013.
- ^ Leedy, Glenn (April 1983). "Die Nationale Halbleiter NS16000 -Mikroprozessorfamilie". Byte. S. 53–66. Abgerufen 22. August 2020.
- ^ Evans 2019, 6:00.
- ^ Manners, David (29. April 1998). "Arm's Way". Elektronik wöchentlich. Archiviert von das Original am 29. Juli 2012. Abgerufen 26. Oktober 2012.
- ^ Evans 2019, halb 6.
- ^ a b Evans 2019, 7:45.
- ^ Evans 2019, 8:30.
- ^ Sophie Wilson bei Alt Party 2009 (Teil 3/8). Archiviert vom Original am 11. Dezember 2021.
- ^ Chisnall, David (23. August 2010). Armarchitekturen verstehen. Abgerufen 26. Mai 2013.
- ^ Evans 2019, 9:00.
- ^ Furber, Stephen B. (2000). ARM-System-on-Chip-Architektur. Boston: Addison-Wesley. ISBN 0-201-67519-6.
- ^ Evans 2019, 9:50.
- ^ Evans 2019, 23:30.
- ^ Evans 2019, 26:00.
- ^ "ARM Instruction Set Design History mit Sophie Wilson (Teil 3)". 10. Mai 2015. Archiviert vom Original am 11. Dezember 2021. Abgerufen 25. Mai 2020 - über YouTube.
- ^ "Orale Geschichte von Sophie Wilson - 2012 Computer History Museum Fellow" (PDF). Computergeschichte Museum. 31. Januar 2012. Abgerufen 25. Mai 2020.
- ^ Harker, T. (Sommer 2009). "ARM wird es ernst mit IP (zweiter in einer zweiteiligen Serie [Associated Editors 'View]". IEEE Solid-State Circuits Magazine. 1 (3): 8–69. doi:10.1109/MSSC.2009.933674. ISSN 1943-0590. S2CID 36567166.
- ^ Evans 2019, 20:30.
- ^ Evans 2019, 22:00.
- ^ Evans 2019, 21:30.
- ^ Evans 2019, 22: 0030.
- ^ a b Evans 2019, 14:00.
- ^ "Von einem Arm zum nächsten! Armprozessoren und Architekturen". Abgerufen 31. Mai 2022.
- ^ Levy, Markus. "Die Geschichte der ARM -Architektur: Vom Beginn bis zum Börsengang" (PDF). Abgerufen 18. Juli 2022.
- ^ Santanu Chattopadhyay (2010). Eingebettetes Systemdesign. PHI -Lernen Pvt. Ltd. p. 9. ISBN 978-81-203-4024-4.
- ^ Richard Murray. "32 -Bit -Betrieb".
- ^ Armmeilensteine, ARM Company -Website. Abgerufen am 8. April 2015
- ^ Andrews, Jason (2005). "3 SOC -Überprüfungsthemen für die Armarchitektur". Koverifizierung von Hardware und Software für ARM SOC-Design. Oxford, Großbritannien: Elsevier. pp.69. ISBN 0-7506-7730-9.
Arm begann als Zweig von Acorn Computer in Cambridge, England, mit der Bildung eines Joint Venture zwischen Acorn-, Apple- und VLSI -Technologie. Ein Team von zwölf Mitarbeitern produzierte zwischen 1983 und 1985 das Design des ersten Armmikroprozessors.
- ^ Weber, Jonathan (28. November 1990). "Apple, um Acorn, VLSI in Chip-Making-Unternehmen beizutreten". Los Angeles Zeiten. Los Angeles. Abgerufen 6. Februar 2012.
Apple hat rund 3 Millionen US -Dollar (rund 1,5 Millionen Pfund) für ein 30% ige Interesse am Unternehmen investiert, das Advanced Risc Machines Ltd. (ARM) genannt [...]
- ^ "ARM -Unternehmenshintergrund" Archiviert 4. Oktober 2006 bei der Wayback -Maschine, Armtechnologie.
- ^ Montanaro, James et al. (1997). "A 160-MHz, 32-B, 0,5-W CMOS RISC-Mikroprozessor". Digital Technical Journal, vol. 9, nein. 1. S. 49–62.
- ^ Dämone, Paul (9. November 2000). "Arm's Rasse zur eingebetteten Weltherrschaft". Technologien der realen Welt. Abgerufen 6. Oktober 2015.
- ^ "Marsch der Maschinen". TechnologyReview.com. MIT Technology Review. 20. April 2010. Abgerufen 6. Oktober 2015.
- ^ Krazit, Tom (3. April 2006). "Bewaffnet für das Wohnzimmer". CNET.
- ^ a b Fitzpatrick, J. (2011). "Ein Interview mit Steve Furber". Kommunikation der ACM. 54 (5): 34–39. doi:10.1145/1941487.1941501.
- ^ Tracy Robinson (12. Februar 2014). "Feier von 50 Milliarden versendeten Pommes mit Armbetrieben".
- ^ Sarah Murry (3. März 2014). "Arm's Reichweite: 50 Milliarden Chip -Meilenstein". Archiviert von das Original am 16. September 2014.
- ^ Brown, Eric (2009). "ARM Netbook wird mit abnehmbarem Tablet geliefert". Archiviert von das Original am 3. Januar 2013. Abgerufen 19. August 2009.
- ^ Peter Clarke (7. Januar 2016). "Amazon verkauft jetzt eigene Arm Chips".
- ^ "Macom vervollständigt erfolgreich die Übernahme von AppliedMicro" (Pressemitteilung). 26. Januar 2017.
- ^ Frumusanu, Andrei. "Armdetails, die auf Arm Cortex Technology Lizenz aufgebaut sind". Anandtech. Abgerufen 26. Mai 2019.
- ^ Cutress, Ian. "Arm Flexibler Zugang: Entwerfen Sie den SoC, bevor Sie Geld ausgeben". Anandtech. Abgerufen 9. Oktober 2019.
- ^ "Arm flexibler Zugang häufig gestellte Fragen". ARM. Abgerufen 9. Oktober 2019.
- ^ Nolting, Stephan. "Storm Core Processor System" (PDF). OpenCores. Abgerufen 1. April 2014.
- ^ Zap an GitHub
- ^ "Cortex-M23-Prozessor". ARM. Abgerufen 27. Oktober 2016.
- ^ "Cortex-M33-Prozessor". ARM. Abgerufen 27. Oktober 2016.
- ^ "ARMV8-M-Architektur vereinfacht die Sicherheit für intelligente eingebettete". ARM. Abgerufen 10. November 2015.
- ^ "ARMV8-R Architektur". Abgerufen 10. Juli 2015.
- ^ CRASSKE, SIMON (Oktober 2013). "Arm Cortex-R Architektur" (PDF). Armhoteln. Archiviert von das Original (PDF) am 6. April 2014. Abgerufen 1. Februar 2014.
- ^ Smith, Ryan (20. September 2016). "ARM kündigt Cortex-R52 CPU an: deterministisch und sicher, für ADAS & More". Anandtech. Abgerufen 20. September 2016.
- ^ "Cortex-A32-Prozessor". ARM. Abgerufen 10. Oktober 2019.
- ^ "Cortex-A35-Prozessor". ARM. Abgerufen 10. November 2015.
- ^ a b "Arm startet die Cortex-A50-Serie, die weltweit energieeffizientesten 64-Bit-Prozessoren" (Pressemitteilung). Armhoteln. Abgerufen 31. Oktober 2012.
- ^ "Cortex-A72-Prozessor". ARM. Abgerufen 10. Juli 2015.
- ^ "Cortex-A73-Prozessor". ARM. Abgerufen 2. Juni 2016.
- ^ "ARMV8-A Architektur". Abgerufen 10. Juli 2015.
- ^ "Cavium Thunder x erhöht den Armkern auf 48 auf einem einzelnen Chip". Semiccurate. 3. Juni 2014.
- ^ "Cavium bei Supercomputing 2014". Yahoo Finance. 17. November 2014. archiviert von das Original am 16. Oktober 2015. Abgerufen 15. Januar 2017.
- ^ Burt, Jeff (17. November 2014). "Cray zur Bewertung von Armchips in seinen Supercomputern". Eweek.
- ^ "Samsung kündigt Exynos 8890 mit Cat.12/13 -Modem und benutzerdefinierter CPU an.". Anandtech.
- ^ "Cortex-A34-Prozessor". ARM. Abgerufen 10. Oktober 2019.
- ^ "D21500 [AARCH64] Fügen Sie Unterstützung für Broadcom Vulcan hinzu". reviews.llvm.org.
- ^ "Cortex-A55-Prozessor". ARM. Abgerufen 29. Mai 2017.
- ^ "Cortex-A75-Prozessor". ARM. Abgerufen 29. Mai 2017.
- ^ "Cortex-A76-Prozessor". ARM. Abgerufen 11. Oktober 2018.
- ^ Berenice Mann (April 2017). "Armarchitektur-ARMV8.2-A Evolution und Entbindung". Community.arm.com.
- ^ Frumusanu, Andrei. "Samsung kündigt den Exynos 9825 SOC an: First 7nm Euv Silicon Chip". Anandtech. Abgerufen 11. Oktober 2019.
- ^ "Fujitsu begann, Japans Milliarden von Superkollegen mit dem stärksten ARM-Prozessor A64FX zu produzieren.". China it News. Archiviert von das Original am 20. Juni 2019. Abgerufen 17. August 2019.
ARMV8 SVE (skalierbarer Vektorverlängerungs -Chip), der 512 -Bit -Schwimmpunkt verwendet.
- ^ "Cortex-A65AE-Arm". ARM. Abgerufen 8. April 2020.
Kann zwei Threads parallel in jedem Zyklus ausführen. Jeder Thread kann unterschiedliche Ausnahmegeles haben und verschiedene Betriebssysteme ausführen.
- ^ Frumusanu, Andrei. "Marvell kündigt Thunderx3: 96 Cores & 384 Thread 3rd Gen Arm Server -Prozessor an". Anandtech. Abgerufen 26. Mai 2020.
- ^ "Neue Funktionen für die ARMV8 -A -Architektur - Architekturen und Prozessoren Blog - ARM Community Blogs - Arm Community". Community.arm.com. Abgerufen 28. Dezember 2021.
- ^ "Die ARM -Lösung für die zukünftigen Bedürfnisse von KI, Sicherheit und spezialisiertem Computing ist V9". Arm. Abgerufen 16. August 2021.
- ^ "Erster ARMV9 -Cortex -CPUs für Verbraucherberechnung". Community.arm.com. Abgerufen 16. August 2021.
- ^ "Linienkarte" (PDF). 2003. Abgerufen 1. Oktober 2012.
- ^ Parrish, Kevin (14. Juli 2011). "Eine Million Armkerne, die zum Simulieren des Gehirns verbunden sind". EE mal. Abgerufen 2. August 2011.
- ^ "Prozessormodus". Armhoteln. Abgerufen 26. März 2013.
- ^ "KVM/Arm" (PDF). Abgerufen 3. April 2013.
- ^ Brash, David (August 2010). Erweiterungen zur ARMV7-A-Architektur (PDF). 2010 IEEE Hot Chips 22 Symposium (HCS). S. 1–21. doi:10.1109/hotchips.2010.7480070. ISBN 978-1-4673-8875-7. S2CID 46339775. Abgerufen 6. Juni 2014.
- ^ "Wie unterstützt der Arm Compiler den unverhüllten Zugriff?". 2011. Abgerufen 5. Oktober 2013.
- ^ "Nicht ausgerichteter Datenzugriff". Abgerufen 5. Oktober 2013.
- ^ Cortex-M0 R0P0 Technisches Referenzhandbuch; Armhoteln.
- ^ "ARMV7-M Architektur Referenzhandbuch". Arm. Abgerufen 18. Juli 2022.
- ^ a b "ARMV7-A und ARMV7-R-Architektur-Referenzhandbuch; Arm Holdings". Arm.com. Abgerufen 19. Januar 2013.
- ^ "Arm Information Center". Abgerufen 10. Juli 2015.
- ^ "Bedingungscodes 1: Bedingungsflags und Codes". Armgemeinschaft. Abgerufen 26. September 2019.
- ^ "9.1.2. Anweisungszyklus zählt".
- ^ "Coresight -Komponenten: Über den Debug -Zugangsport".
- ^ "Der Cortex-M3: Debugg Access Port (DAP)".
- ^ Mike Anderson."ARM HW -Debug -Optionen verstehen".
- ^ "CMSIS-DAP-Debugger-Benutzerhandbuch".
- ^ "CMSIS-DAP".
- ^ "SWDAP gegen CMSIS-DAP gegen DAPLINK".
- ^ "ARM -DSP -Befehlssatzerweiterungen". Arm.com. Archiviert Aus dem Original am 14. April 2009. Abgerufen 18. April 2009.
- ^ "DSP & Simd". Abgerufen 10. Juli 2015.
- ^ ARM7TDMI Technisches Referenzhandbuch Seite II
- ^ Jaggar, Dave (1996). Armarchitekturreferenzhandbuch. Prentice Hall. S. 6–1. ISBN 978-0-13-736299-8.
- ^ Nathan Willis (10. Juni 2015). "Wiederbelebung der Superh -Architektur". Lwn.net.
- ^ "Armprozessor -Anweisung Set Architektur". Arm.com. Archiviert Aus dem Original am 15. April 2009. Abgerufen 18. April 2009.
- ^ "Arm zielt auf den Sohn des Daumens an UCS, Asss, Socs". LinuxDevices.com. Archiviert von das Original am 9. Dezember 2012. Abgerufen 18. April 2009.
- ^ "Arm Information Center". Infocenter.arm.com. Abgerufen 18. April 2009.
- ^ "Jazelle". Arm Ltd. archiviert von das Original am 2. Juni 2017.
- ^ Tom R. Halfhill (2005). "Arm stärkt Java-Compiler: Neue 16-Bit-Daumen-2ee-Anweisungen erhalten das System Speicher" (PDF). Archiviert von das Original (PDF) am 5. Oktober 2007.
- ^ ARM-Architektur-Referenzhandbuch, ARMV7-A und ARMV7-R Edition, Ausgabe C.B., Abschnitt A2.10, 25. Juli 2012.
- ^ "Arm Compiler Toolchain mit dem Assembler - VFP Coprozessor". Arm.com. Abgerufen 20. August 2014.
- ^ "VFP -Richtlinien und Vektornotation". Arm.com. Abgerufen 21. November 2011.
- ^ a b "Unterschiede zwischen Arm Cortex-A8 und Cortex-A9". Shervin Emami. Abgerufen 21. November 2011.
- ^ "FPA10 -Datenblatt" (PDF). chrisacorns.computinghistory.org.uk. Gec Plessey Halbleiter. 11. Juni 1993. Abgerufen 26. November 2020.
In Bezug auf die IEEE 754-1985 erreicht die FPA die Konformität in der einheitlichen Arithmetik [...] gelegentlich können Multiplikationen mit doppelter und erweiterter Präzision mit einem Fehler von 1 oder 2 Einheiten im am wenigsten signifikanten Ort des Mantissa erzeugt werden .
- ^ a b "Cortex-A7 MPCORE Technisches Referenzhandbuch-1.3 Funktionen". ARM. Abgerufen 11. Juli 2014.
- ^ "Armhardfloatport - Debian Wiki". Wiki.debian.org. 20. August 2012. Abgerufen 8. Januar 2014.
- ^ "Cortex-A9-Prozessor". Arm.com. Abgerufen 21. November 2011.
- ^ "Über den Cortex-A9 Neon MPE". Arm.com. Abgerufen 21. November 2011.
- ^ "US20050125476A1".
- ^ "US20080141004A1".
- ^ "Armoptionen". GNU Compiler Collection Manual. Abgerufen 20. September 2019.
- ^ NE10: Ein offenes optimiertes Software -Bibliotheksprojekt für die ARM -Architektur an GitHub
- ^ Joseph Yiu. "Einführung in die ARMV8.1-M-Architektur" (PDF). Abgerufen 18. Juli 2022.
- ^ "Genode - Eine Erforschung der Arm Trustzone -Technologie". Abgerufen 10. Juli 2015.
- ^ "ARM kündigt die Verfügbarkeit mobiler DRM -Software -Lösungen für Verbraucher an, die auf der Arm Trustzone -Technologie basieren." (Pressemitteilung). News.thomasnet.com. Abgerufen 18. April 2009.
- ^ Laginimaineb (8. Oktober 2015). "Bits, bitte !: Voller Vertrauenszone -Exploit für MSM8974". Bits, bitte!. Abgerufen 3. Mai 2016.
- ^ Di Shen. "Angreifen Sie Ihren" vertrauenswürdigen Kern ", der Vertrauenszone auf Android ausnutzt" (PDF). Black Hat -Briefings. Abgerufen 3. Mai 2016.
- ^ "Arm Trustzone und Arm Hypervisor Open Source -Software". Offene Virtualisierung. Archiviert von das Original am 14. Juni 2013. Abgerufen 14. Juni 2013.
- ^ "AMD Secure Technology". AMD. AMD. Archiviert von das Original am 23. Juli 2016. Abgerufen 6. Juli 2016.
- ^ Smith, Ryan (13. Juni 2012). "AMD 2013 -APUS, um den ARM Cortex A5 -Prozessor für TrustZone -Funktionen einzubeziehen". Anandtech. Abgerufen 6. Juli 2016.
- ^ a b Shimpi, Anand Lal (29. April 2014). "AMD Beema Mullins Architektur A10 Micro 6700T Performance Preview". Anandtech. Abgerufen 6. Juli 2016.
- ^ Walton, Jarred (4. Juni 2014). "AMD startet mobile Kaveri -Apus". Anandtech. Abgerufen 6. Juli 2016.
- ^ "Wurzel des Vertrauens" (weißes Papier). Samsung Electronics. April 2016.
- ^ "Armarchitektur Referenzhandbuch" (PDF). p. B4-8. Archiviert von das Original (PDF) am 6. Februar 2009.
APX- und XN -Bits (EXECUTE NEW) wurden in VMSAV6 [Architektur des Virtual Memory Systems] hinzugefügt.
- ^ Armarchitektur Referenzhandbuch, ARMV7-A und ARMV7-R Edition. Arm Limited.
- ^ "Cortex-A65AE". Armentwickler. Abgerufen 26. April 2019.
- ^ "Cortex-A32-Prozessor-Arm". Abgerufen 18. Dezember 2016.
- ^ "AppliedMicro zeigt den ersten 64-Bit-Arm V8 Core der Welt" (Pressemitteilung). AppliedMicro. 28. Oktober 2011. Abgerufen 11. Februar 2014.
- ^ "Samsung's Exynos 5433 ist ein A57/A53 Arm Soc". Anandtech. Abgerufen 17. September 2014.
- ^ "Arm Cortex-A53 MPCORE-Prozessor Technischer Referenzhandbuch: Kryptographieerweiterung". ARM. Abgerufen 11. September 2016.
- ^ Frumusanu, Andrei (3. September 2020). "ARM kündigte Cortex-R82 an: Erster 64-Bit-Echtzeit-Prozessor". Anandtech.
- ^ Frumusanu, Andrei (30. März 2021). "Arm kündigt Armv9 Architecture an: Sve2, Sicherheit und das nächste Jahrzehnt". Anandtech.
- ^ Harrod, Alex (30. März 2021). "Arm startet V9 -Architektur" (Pressemitteilung). Arm Ltd.
- ^ Osborne, Charlie. "Arm kündigt PSA -Sicherheitsarchitektur für IoT -Geräte an". ZDNET.
- ^ Wong, William G. (25. Oktober 2017). "Arm's Platform Security Architecture zielt auf Cortex-M" ab ". Elektronisches Design.
- ^ Wong, William. "Arm's Platform Security Architecture zielt auf Cortex-M" ab ". Elektronisches Design.
- ^ Hoffenberg, Steve. "Arm: Sicherheit ist nicht nur ein technologischer Imperativ, es ist eine soziale Verantwortung.". VDC -Forschung.
- ^ Armasu, Lucian (22. Februar 2018). "ARM enthüllt weitere Details zu seiner IoT -Plattform -Sicherheitsarchitektur". Toms Hardware.
- ^ Williams, Chris. "Arm PSA IoT API? BRB ... Toolbox of Tech zum sicheren Netto-vernetzten Kit öffnet etwas mehr". Das Register.
- ^ Hayes, Caroline (25. Februar 2019). "Embedded World: Arm stellt PSA das vierte Sicherheitselement ein". Elektronik wöchentlich.
- ^ "PSA -zertifiziert: Vertrauen in IoT aufbauen". PSA zertifiziert.
- ^ a b "PSA -zertifiziert - Vertrauensbauer, Wert aufbauen". EE mal. 4. März 2019.
- ^ "Die Wertschöpfungsnormen und Regulierung in der IoT -Ära $ 6TRN.". IoT jetzt. 16. März 2020.
- ^ McGregor, Jim (4. März 2019). "Arm führt Sicherheitstests für IoT ein". Forbes.
- ^ Speed, Richard (26. Februar 2019). "Azure IoT leitet Raum, um die Konnektivität am Rande aufrechtzuerhalten, mit freundlicher Genehmigung von Inmarsat". Das Register.
- ^ "OS-9-Spezifikationen". Mikrokruste.
- ^ a b "Pharos". SourceForge. Abgerufen 24. Mai 2018.
- ^ "Pikeos sicher und sichere Virtualisierung". Abgerufen am 10. Juli 2013.
- ^ a b "Sicherheitsbescheinigte Echtzeit-Betriebssysteme-unterstützte CPUs".
- ^ "Armplattform Port". OpenSolaris.org. Archiviert von das Original am 2. Dezember 2012. Abgerufen 29. Dezember 2012.
- ^ "Der integritätsbasierte Multivisor von Green Hills Software liefert die erste 64-Bit-Virtualisierungslösung der verankerten Branche". ghs.com. Abgerufen 14. März 2018.
- ^ "Enea-Ose-Echtzeit-Betriebssystem für 5G und LTE-A | ENEA". www.enea.com. Abgerufen 17. April 2018.
- ^ "Unterstützte Plattformen". docs.sel4.Systems. Abgerufen 23. November 2018.
- ^ "QNX -Softwareentwicklungsplattform (SDP 7.0) | Blackberry QNX". www.blackberry.qnx.com. Abgerufen 27. Juli 2020.
- ^ "Manjaro-Arm". Manjaro Wiki. 20. Juni 2022.
- ^ Linus Torvalds (1. Oktober 2012). "Re: [Git Pull] Arm64: Linux -Kernel -Port". Linux -Kernel -Mailingliste (Mailingliste). Abgerufen 2. Mai 2019.
- ^ Larabel, Michael (27. Februar 2013). "64-Bit-ARM-Version von Ubuntu/Debian booten". Phoronix. Abgerufen 17. August 2014.
- ^ "Debian Project News - 14. August 2014". Debian. 14. August 2014. Abgerufen 17. August 2014.
- ^ "Ubuntu -Server für Arm". Ubuntu.com.
- ^ "Architekturen/aArch64". Abgerufen 16. Januar 2015.
- ^ "Portal: Arm/aArch64". Abgerufen 16. Januar 2015.
- ^ "Suse Linux Enterprise 12 SP2 -Versionsnotizen". Abgerufen 11. November 2016.
- ^ "Red Hat führt den ARM -Server -Unterstützung für Red Hat Enterprise Linux ein". redhat.com. Abgerufen 18. Januar 2019.
- ^ "64-Bit-ARM-Architektur-Projekt Update". Die FreeBSD Foundation. 24. November 2014.
- ^ "OpenBSD/ARM64". Abgerufen 7. August 2017.
- ^ "Netbsd/arm64". Abgerufen 5. August 2018.
- ^ "HP, ASUS kündigt First Windows 10 Arm PCs an: 20-Stunden-Akkulaufzeit, Gigabit LTE". ARS Technica. Abgerufen 22. Januar 2018.
Diese neue Version von Windows 10 ist das erste 64-Bit-Armbetriebssystem von Microsoft. Es werden X86- und 32-Bit-ARM-Anwendungen aus dem Geschäft und zu gegebener Zeit 64-Bit-ARM-Anwendungen ausgeführt. Microsoft hat jedoch seine 64-Bit-Arm SDK noch nicht abgeschlossen. Viele Teile sind vorhanden (z.
- ^ Hassan, Mehedi (10. Dezember 2016). "Windows 10 auf ARM64 erhält seine ersten kompilierten Apps". Mspoweruser.
- ^ Filippidis, Katrina (1. Juni 2018). "VLC wird zu einer der ersten ARM64 -Windows -Apps". Engadget.
- ^ Sweetgall, Marc (15. November 2018). "Offizielle Unterstützung für Windows 10 bei Armentwicklung". Windows -Entwickler. Windows -Blogs. Microsoft. Abgerufen 17. Dezember 2019.
- ^ Gartenberg, Chaim (12. November 2020). "MacOS Big Sur steht jetzt zum Download zur Verfügung.". Der Verge. Abgerufen 13. November 2020.
- ^ Clover, Juli (23. Juni 2020). "Rosetta unterstützt X86 -Virtualisierungs -Apps, die Windows ausgeführt haben.". Makrumoren. Abgerufen 13. November 2020.
- ^ "Arm - das offizielle Wein Wiki". Abgerufen 10. Juli 2015.
- ^ "ARM64 - Das offizielle Wein Wiki". Abgerufen 10. Juli 2015.
- ^ "ARM -Sicherheits -Updates". Armentwickler. Abgerufen 24. Mai 2018.
Literaturverzeichnis
- Evans, Matt (27. Dezember 2019). Das ultimative Eichel -Archimedes -Gespräch. Archiviert vom Original am 11. Dezember 2021.
Weitere Lektüre
Externe Links
- Offizielle Website , Arm Ltd.
- Architekturhandbücher
- Arm Limited (2005). "Armarchitektur Referenzhandbuch". documentation-service.arm.com. Abgerufen 16. Juli 2021. - Deckt ARMV4, ARMV4T, ARMV5T, (ARMV5TEXP), ARMV5TE, ARMV5TEJ und ARMV6 ab
- Arm Limited (2018). "ARMV6-M-Architekturreferenzhandbuch". Armdokumentation. Abgerufen 17. Juli 2021.
- Arm Limited (2018). "Armarchitektur Referenzhandbuch ARMV7-A und ARMV7-R Edition". Armdokumentation. Abgerufen 17. Juli 2021.
- Arm Limited (2021). "Armarchitektur Referenzhandbuch ARMV8 für ARMV8-A-Architekturprofil". Armdokumentation. Abgerufen 17. Juli 2021.
- Arm Limited (2021). "ARM -Architektur -Referenzhandbuch Supplement - ARMV8, für das ARMV8 -R AArch32 Architekturprofil". Armdokumentation. Abgerufen 17. Juli 2021.
- Arm Limited (2021). "ARM -Architektur -Referenzhandbuch Supplement - ARMV8, für ARMV8 -R AArch64 Architekturprofil". Armdokumentation. Abgerufen 17. Juli 2021.
- Arm Limited (2021). "ARMV8-M-Architekturreferenzhandbuch". Armdokumentation. Abgerufen 17. Juli 2021.
- Arm Limited (2021). "ARM ARMV9-A A64 Anweisungsset Architektur". Armdokumentation. Abgerufen 17. Juli 2021.
- ARM -Virtualisierungsweiterungen
- Schnelle Referenzkarten
- Anweisungen: Daumen, Arm und Daumen-2, Vektor -Schwimmpunkt
- Opcodes: Daumen, Daumen, ARM, ARM, GNU Assembler -Richtlinien