Sie sind hier : Homepage →  > Linux (12) Technik des NAS-540→  > Hintergrund von Embedded Linux→  Internes Wissen um ARM CPUs

Diese Seiten sind unsere internen Protokolle aus dem Labor.

Aufgrund der fortlaufenden Protokollierung der Ergänzungen sowie der Verbesserungen ist die Reihenfolge / Chronologie der Seiten aus dem Ruder gelaufen - leicht durcheinander geraten.

.

Die ARM-Cortex-A-Serie - Ein Vorwort (aus 2013)

Einschätzung der Zukunft der ARM Technologie : (aus dem Englischen - 420 Seiten)

Es wird geschätzt, dass die Zahl der Mobiltelefone auf der Welt irgendwann im Jahr 2014 die menschliche Bevölkerung übersteigen wird. Es wird auch geschätzt, dass über 90 % aller dieser Mobilgeräte einen ARM-Prozessor enthalten.

Dieses Buch bietet eine Einführung in die ARM-Technologie für Programmierer, die Prozessoren der ARM-Cortex-A-Serie verwenden, die der ARMv7-A-Architektur entsprechen. Das Buch soll andere ARM-Dokumentationen für Prozessoren der Cortex-A-Serie ergänzen, nicht ersetzen, wie die ARM Technical Reference Manuals (TRMs) für die Prozessoren selbst, die Dokumentation für einzelne Geräte oder Boards oder vor allem die ARM®-Architektur Referenzhandbuch (der ARM ARM).
.

Der Zweck dieses Buches

Der Zweck dieses Buches ist es, Programmierern, die Anwendungen für die Prozessoren der Cortex-A-Reihe entwickeln möchten, einen Leitfaden zu bieten, der Informationen aus einer Vielzahl von Quellen zusammenführt, die sowohl für Assembler- als auch für C-Programmierer nützlich sind. Hardwarekonzepte wie Caches und Memory Management Units werden behandelt, aber nur dort, wo dies für den Anwendungsautor sinnvoll ist. Wir werden uns auch ansehen, wie Betriebssysteme wie Linux ARM-Funktionen nutzen und wie man die Fähigkeiten des ARM-Prozessors voll ausnutzt, insbesondere beim Schreiben von Software für Multi-Core-Prozessoren.

Obwohl ein Großteil des Inhalts dieses Buchs auch auf ältere ARM-Prozessoren anwendbar ist, werden Prozessoren, die ältere Versionen der Architektur implementieren, nicht explizit behandelt. Die Prozessoren der Cortex-R-Serie und der M-Serie werden erwähnt, aber nicht beschrieben. Unsere Absicht ist es, eine zugängliche Einführung in die ARM-Architektur zu bieten, den Funktionsumfang im Detail zu behandeln und praktische Ratschläge zum Schreiben von Programmen in C- und Assemblersprache zu geben, die effizient auf einem Prozessor der Cortex-A-Serie ausgeführt werden können.
.

Dies ist kein Buch für Anfänger.

Es setzt einige Kenntnisse der Programmiersprache C und von Mikroprozessoren voraus, jedoch keinen ARM-spezifischen Hintergrund. In dem zugewiesenen Raum können wir nicht hoffen, alle Themen im Detail zu behandeln. In einigen Kapiteln schlagen wir zusätzliche Lektüre vor (entweder mit Verweis auf Bücher oder Websites), die einen tieferen Hintergrund zum jeweiligen Thema vermitteln kann, aber in diesem

Buch konzentrieren wir uns auf die ARM-spezifischen Details. Wir gehen nicht von der Verwendung einer bestimmten Toolkette aus. Wir werden im Laufe des Buches sowohl GNU- als auch ARM-Tools erwähnen. Wir hoffen, dass das Buch für Programmierer geeignet ist, die einen Desktop-PC- oder x86-Hintergrund haben und ihre ersten Schritte in die Welt der ARM-Prozessoren unternehmen.

Die ersten Kapitel des Buches

Die ersten Kapitel des Buches behandeln die grundlegenden Funktionen der Prozessoren der ARM Cortex-A-Serie. Kapitel 2 und 3 enthalten eine Einführung in die Grundlagen der ARM-Architektur, die die verschiedenen Register und Modi sowie einige Hintergrundinformationen zu einzelnen Prozessoren behandelt.

Wir betrachten Floating-Point und die ARM Advanced SIMD-Erweiterungen (NEON™) in den Kapiteln 6 und 7. Diese Kapitel sind nur eine Einführung in die relevanten Themen. Dann wenden wir uns dem Speichersystem zu und betrachten Caches, Speicherverwaltung und Speicherordnung in den Kapiteln 8, 9 und 10. Der Umgang mit Ausnahmen und Interrupts wird in den Kapiteln 11 und 12 behandelt.

Die restlichen Kapitel des Buches enthalten weiterführende Programmierinformationen. Kapitel 13 gibt einen Überblick über den Boot-Code.

Kapitel 14 befasst sich mit Problemen bei der Portierung von C- und Assembler-Code auf die ARMv7-Architektur, von anderen Architekturen und von älteren Versionen der ARM-Architektur. Kapitel 15 behandelt das Application Binary Interface, dessen Kenntnis sowohl für C- als auch für Assembler-Programmierer nützlich ist. Die Profilerstellung und Optimierung von Code wird in den Kapiteln 16 und 17 behandelt. Viele der vorgestellten Techniken sind nicht spezifisch für die ARM-Architektur, aber wir geben auch einige prozessorspezifische Hinweise.

Die Kapitel 18 und 19 behandeln den Bereich Mehrkernprozessoren. Wir werfen einen detaillierten Blick darauf, wie diese von ARM implementiert werden und wie Sie Code schreiben können, um sie zu nutzen. Die Energieverwaltung ist ein wichtiger Teil der ARM-Programmierung und wird in Kapitel 20 behandelt.

Die letzten Kapitel des Buchs behandeln kurz die ARM-Sicherheitserweiterungen (TrustZone®) in Kapitel 21, die ARM-Virtualisierungserweiterungen in Kapitel 22, big.LITTLE ™-Technologie in Kapitel 23 und die für Programmierer verfügbaren Hardware-Debug-Funktionen in Kapitel 24.

Anhang A gibt eine Zusammenfassung der verfügbaren ARM-Befehle. Anhang B enthält eine kurze Einführung in einige der Tools und Plattformen, die für Einsteiger in die ARM-Programmierung verfügbar sind, und Anhang C enthält schrittweise Anleitungen zum Konfigurieren und Erstellen von Linux für ARM-Systeme.
.

Vorwort zur 4. Auflage

Die ARM-Architektur entwickelt sich weiter. ARM hat kürzlich die ARMv8-Architektur angekündigt, die, obwohl sie nicht in diesem Buch behandelt wird, ihren Inhalt beeinflusst hat.

Sie werden feststellen, dass einige Abschnitte verschoben, einige umfassend neu geschrieben und einige geringfügig geändert wurden.

ARM hat der ARMv7 Cortex-A-Serie einen weiteren Prozessor hinzugefügt, und der neue Cortex-A12-Prozessor wird in dieser neuen Ausgabe behandelt. Sie werden auch feststellen, dass sich die Bezeichnung der Geräte geändert hat. Prozessor bezieht sich jetzt auf das vermarktete Gerät, z. B. den Cortex-A15-Prozessor, an anderer Stelle finden Sie Verweise auf Kerne und Cluster (von Kernen).

Kapitel 1
Einführung


ARM-Prozessoren findet man überall. Bis Ende 2008 wurden mehr als 10 Milliarden ARM-Prozessor-basierte Geräte hergestellt. Bis Ende 2013 wurden über 52 Milliarden ARM-Prozessoren ausgeliefert. Es ist wahrscheinlich, dass Leser dieses Buches mindestens ein Produkt besitzen, das auf ARM-Prozessoren basierende Geräte enthält – ein Mobiltelefon, Tablet-Gerät, PC, Fernseher oder sogar ein Auto.


(In unserem Fall sind es NAS-Server von Buffalo und Zyxel)

Es mag für Programmierer, die eher an Personal Computer gewöhnt sind, überraschen, zu erfahren, dass die äußerst erfolgreiche x86-Architektur mit über drei Milliarden Geräten eine viel geringere Position in Bezug auf die Gesamtzahl der gelieferten Mikroprozessoren einnimmt.

Die ARM-Architektur hat sich seit dem ersten ARM1-Chip im Jahr 1985 erheblich weiterentwickelt. ARM produziert eine ganze Familie von Prozessoren, die gemeinsame Befehlssätze und Programmierermodelle teilen und ein gewisses Maß an Abwärtskompatibilität aufweisen.

Beginnen wir jedoch mit einem kurzen Blick auf die Geschichte von ARM.
.

1.1 Geschichte

Der erste ARM-Prozessor, der ARM1, wurde bei Acorn Computers Limited von einem Team unter der Leitung von Sophie Wilson und Steve Furber entwickelt, wobei das erste Silizium (das beim ersten Mal funktionierte!) im April 1985 produziert wurde. Der ARM1 wurde schnell durch den ARM2 ersetzt, die Multiplikator-Hardware hinzufügten und in realen Systemen verwendet wurden, einschließlich des Acorn Archimedes Personal Computers.


ARM als separates Unternehmen wurde im November 1990 in Cambridge, England, als "Advanced RISC Machines" Ltd. gegründet. Es war ein Joint Venture zwischen Apple Computers, Acorn Computers und VLSI Technology und hat zwei seiner Eltern überlebt. Die ursprünglich 12 Mitarbeiter kamen hauptsächlich aus dem Team von Acorn Computers. Ein Grund für die Ausgliederung von ARM als separates Unternehmen war, dass der Prozessor von Apple Computers für die Verwendung in seinem Newton-Produkt ausgewählt worden war.

Das neue Unternehmen entschied schnell, dass der beste Weg für seine Technologie darin bestand, sein geistiges Eigentum (Intellectual Property  = IP) zu lizenzieren. Anstatt die Chips selbst zu entwerfen, herzustellen und zu verkaufen, würden sie die Rechte an ihren Designs an Halbleiterunternehmen verkaufen. Diese Unternehmen würden den ARM-Prozessor in einem Partnerschaftsmodell in ihre eigenen Produkte integrieren.

Dieses Geschäft mit IP-Lizenzen ist die Art und Weise, wie ARM bis heute tätig ist. ARM konnte Lizenznehmer gewinnen, darunter prominente Namen von Sharp, Texas Instruments und Samsung unter den ersten Kunden. 1998 ging ARM an die Londoner Börse und Nasdaq. Zum Zeitpunkt des Verfassens dieses Artikels (2013) hat ARM über 2.000 Mitarbeiter und hat seinen ursprünglichen Aufgabenbereich des Prozessordesigns etwas erweitert. ARM lizenziert auch Physical IP – Bibliotheken von Zellen (NAND-Gatter, RAM usw.), Grafik- und Videobeschleuniger und Softwareentwicklungsprodukte wie Compiler, Debugger und Entwicklungsboards.
.

1.2 System-on-Chip (SoC)

Designer können heute Computerchips zusammenbauen, die eine Milliarde oder mehr Transistoren enthalten. Das Entwerfen und Verifizieren solch komplexer Schaltungen ist zu einer äußerst schwierigen Aufgabe geworden. Es kommt immer seltener vor, dass alle Teile solcher Systeme von einem einzigen Unternehmen entwickelt werden.

Als Reaktion darauf entwerfen und verifizieren ARM und andere Halbleiter-IP- Unternehmen Komponenten (sogenannte IP-Blöcke - auch Module genannt - oder Prozessoren). Diese werden von anderen/weiteren Halbleiterunternehmen lizenziert, die diese Blöcke in ihren eigenen Designs verwenden und Mikroprozessoren, DSPs, 3D-Grafiken und Videocontroller sowie viele andere Funktionen enthalten.

Die Halbleiterunternehmen nehmen diese Blöcke und fügen viele andere Teile hinzu, um ein vollständiges System auf dem Chip zu erstellen, das ein System-on-Chip (SoC) bildet. Die Architekten müssen den/die geeigneten Kern(e), Speichercontroller, On-Chip-Speicher, Peripheriegeräte, Busverbindung und andere Logik (möglicherweise einschließlich analoger oder Hochfrequenzkomponenten) auswählen, um ein System zu produzieren.

"Application Specific Integrated Circuit" (ASIC)

"Application Specific Integrated Circuit" (ASIC) ist ein weiterer Begriff, den wir in diesem Buch verwenden werden. Dies ist ein integriertes Schaltungsdesign, das für eine bestimmte Anwendung spezifisch ist.

Ein ASIC kann durchaus einen ARM-Kern, Speicher und andere Komponenten enthalten. Es gibt eindeutig eine große Überschneidung zwischen ASICs und SoCs. Der Begriff SoC bezieht sich normalerweise auf ein Gerät mit einem höheren Integrationsgrad, einschließlich vieler Teile des Systems in einem einzigen Gerät, möglicherweise einschließlich analoger, Mixed-Signal- oder Hochfrequenzschaltkreise.
.

SoCs und die Software

Halbleiterunternehmen, die zig Millionen Dollar in die Entwicklung dieser Geräte investieren, investieren normalerweise viel in Software, die auf ihrer Plattform ausgeführt wird. Es wäre ungewöhnlich, ein komplexes System mit einem leistungsstarken Prozessor zu produzieren, ohne zumindest ein oder mehrere Betriebssysteme darauf portiert und Gerätetreiber für Peripheriegeräte geschrieben zu haben.

Natürlich benötigen Betriebssysteme wie Linux erhebliche Mengen an Arbeitsspeicher, um ausgeführt zu werden, mehr als normalerweise auf einem einzelnen Siliziumgerät möglich ist. Der Begriff System-on-Chip ist daher nicht immer ganz zutreffend, da das SoC nicht immer das gesamte System beinhaltet. Abgesehen von der Frage der Siliziumfläche ist es auch oft der Fall, dass viele nützliche Teile eines Systems spezielle Siliziumherstellungsprozesse erfordern, die ausschließen, dass sie auf demselben Chip platziert werden.
.

1.3 Eingebettete Systeme (embedded systems)

Ein "embedded systems" wird herkömmlicherweise als eine Computerhardware definiert, auf der Software ausgeführt wird, die zur Ausführung einer bestimmten Aufgabe entwickelt wurde.

Beispiele für solche Systeme könnten TV-Set-Top-Boxen, Smartcards, Router, Laufwerke, Drucker, Motormanagementsysteme für Kraftfahrzeuge, MP3-Player oder Fotokopierer sein.

"Und auch NAS-Server."

Diese stehen im Gegensatz zu dem, was allgemein als Computersystem angesehen wird, das heißt einem System, auf dem eine breite Palette von Allzwecksoftware ausgeführt wird und das über Eingabe- und Ausgabegeräte wie eine Tastatur und eine Art grafische Anzeige verfügt. Diese Unterscheidung verschwimmt zunehmend.

.

Betrachten Sie das Handy oder Mobiltelefon.

Während ein einfaches Modell nur die Aufgabe des Telefonierens übernimmt, können moderne Smartphones ein komplexes Betriebssystem ausführen, auf das viele tausend Anwendungen heruntergeladen werden können.

Eingebettete Systeme können sehr einfache 8-Bit-Mikroprozessoren wie Intel 8051 oder PIC-Mikrocontroller oder einige der komplexeren 32- oder 64-Bit-Prozessoren wie die in diesem Buch beschriebene ARM-Familie enthalten.

Sie erfordern RAM und irgendeine Form von nichtflüchtigem Speicher, um das/die vom System auszuführende(n) Programm(e) zu speichern. Solche Systeme verfügen fast immer über zusätzliche Peripheriegeräte, die sich auf die eigentliche Funktion des Geräts beziehen – typischerweise einschließlich UARTs, Interrupt-Controller, Timer, GPIO-Controller, aber auch potenziell recht komplexe Blöcke wie GPUs oder DMA-Controller.

Software, die auf solchen Systemen läuft, wird typischerweise in zwei getrennte Teile gruppiert: das Betriebssystem (OS) und Anwendungen, die auf dem OS laufen.

.

  • Memory Footprint - Gedächtnis-Fußabdruck
    In vielen Systemen kann die Speichergröße begrenzt werden, um die Kosten (und den Stromverbrauch) zu minimieren. Möglicherweise sind Sie gezwungen, die Größe des Programms zu berücksichtigen und die Speichernutzung während der Ausführung zu reduzieren.
  • Real-time behavior - Echtzeitverhalten
    Ein Merkmal bestimmter Systeme ist, dass es Fristen gibt, um auf externe Ereignisse zu reagieren. Dies kann eine „harte“ Anforderung sein (ein Autobremssystem muss innerhalb einer bestimmten Zeit reagieren) oder eine „weiche“ Anforderung (die Audioverarbeitung muss innerhalb eines bestimmten Zeitrahmens abgeschlossen sein, um eine schlechte Benutzererfahrung zu vermeiden – aber ein Versäumnis kommt selten vor Umständen machen das System möglicherweise nicht wertlos).
  • Power - Energie
    In vielen eingebetteten Systemen ist die Energiequelle eine Batterie, und Programmierer undHardwaredesigner müssen große Sorgfalt darauf verwenden, den Gesamtenergieverbrauch des Systems zu minimieren. Dies kann beispielsweise durch Verlangsamen des Takts, Reduzieren der Versorgungsspannung oder Abschalten des Kerns erfolgen, wenn keine Arbeit ansteht.
  • Cost - Kosten
    Die Reduzierung der Stückliste kann eine erhebliche Einschränkung für das Systemdesign darstellen.
  • Time to market - Markteinführungszeit
    In wettbewerbsintensiven Märkten kann die Zeit für die Entwicklung eines funktionierenden Produkts den Erfolg dieses Produkts erheblich beeinflussen.

.

Kapitel 2
ARM-Architektur und Prozessoren

ARM stellt keine "Siliziumgeräte" her. Stattdessen erstellt ARM Mikroprozessordesigns, die an Halbleiterunternehmen und OEMs lizenziert werden, die sie dann in "System-on-Chip"-Geräte integrieren.

Um die Kompatibilität zwischen Implementierungen sicherzustellen, definiert ARM Architekturspezifikationen, die definieren, wie sich konforme Produkte verhalten müssen. Prozessoren, die die ARM-Architektur implementieren, entsprechen einer bestimmten Version der Architektur.

Die ARM-Architektur unterstützt Implementierungen über einen sehr breiten Bereich von Leistungspunkten hinweg. Seine Einfachheit führt zu sehr kleinen Implementierungen, was einen sehr geringen Stromverbrauch ermöglicht.

Die in diesem Buch behandelten Prozessoren der Cortex-A-Serie entsprechen der ARM v7-A-Architektur. Es kann auch mehrere Prozessoren mit unterschiedlichen internen Implementierungen und Mikroarchitekturen, unterschiedlichen Zykluszeiten und Taktraten geben, die derselben Version der Architektur entsprechen, indem sie den für die Architektur definierten ARM-Befehlssatz ausführen und die Tests des ARM-Validierungssystems bestehen.
.

2.1 Architekturprofile

In regelmäßigen Abständen werden neue Versionen der Architektur von ARM angekündigt. Diese fügen neue Funktionen hinzu oder nehmen Änderungen an bestehenden Verhaltensweisen vor. Solche Änderungen sind fast immer abwärtskompatibel, was bedeutet, dass Benutzercode, der auf älteren Versionen der Architektur ausgeführt wurde, auf neuen Versionen weiterhin korrekt ausgeführt wird. Natürlich wird Code, der zur Nutzung neuer Funktionen geschrieben wurde, nicht auf älteren Prozessoren ausgeführt, denen diese Funktionen fehlen.

In allen Versionen der Architektur bleiben einige Systemmerkmale und Verhaltensweisen wie von der Implementierung definiert. Beispielsweise definiert die Architektur keine Cache-Größen oder Zykluszeiten für einzelne Befehle. Diese werden durch den jeweiligen Kern und SoC bestimmt.

Jede Architekturversion kann auch optionale Erweiterungen definieren. Diese könnten in einer bestimmten Implementierung eines Prozessors implementiert werden. Beispielsweise ist in der ARMv7-Architektur die Advanced SIMD (NEON)-Technologie als optionale Erweiterung verfügbar.

Die ARMv7-Architektur hat auch das Konzept von Profilen. Dies sind Varianten der Architektur, die Prozessoren beschreiben, die auf unterschiedliche Märkte und Verwendungen abzielen.
.

Die Profile sind wie folgt:

.

  • A (für application)
    Das Anwendungsprofil definiert eine Architektur, die auf Hochleistungsprozessoren abzielt, ein virtuelles Speichersystem mit einer Memory Management Unit (MMU) unterstützt und daher in der Lage ist, Betriebssysteme mit vollem Funktionsumfang auszuführen. Unterstützung für die ARM- und Thumb-Befehlssätze wird bereitgestellt.

    ARMv7-A, das Anwendungsprofil, wird von allen Prozessoren der Cortex-A-Serie und von Prozessoren implementiert, die von Unternehmen entwickelt wurden, die die ARM-Architektur lizenziert haben. Anfang 2014 wurden knapp drei Milliarden Chips der Cortex-A-Serie ausgeliefert.

    Die ARMv8-A-Architektur, die in diesem Buch nicht beschrieben wird, unterstützt den AArch32-Zustand, eine 32-Bit-Implementierung der Architektur, die mit ARMv7-A abwärtskompatibel ist.

  • R (für realtime)
    Das Echtzeitprofil definiert eine Architektur, die auf Systeme abzielt, die deterministisches Timing und niedrige Interrupt-Latenzzeiten erfordern. Es gibt keine Unterstützung für ein virtuelles Speichersystem, aber Speicherbereiche können mit einer einfachen Memory Protection Unit (MPU) geschützt werden.

  • M (minimalistic)
    Das Microcontroller-Profil definiert eine Architektur, die auf kostengünstige Systeme abzielt, bei denen Interrupt-Verarbeitung mit niedriger Latenzzeit von entscheidender Bedeutung ist. Es verwendet ein anderes Ausnahmebehandlungsmodell als die anderen Profile und unterstützt nur eine Variante des Thumb-Befehlssatzes.

.

2.2 Architekturgeschichte und Erweiterungen

Die ARM-Architektur hat sich zwischen dem ersten "Testsilizium" Mitte der 1980er Jahre und den ersten ARM6- und ARM7-Geräten Anfang der 1990er Jahre relativ wenig verändert. In der ersten Version der Architektur wurde der Großteil der Lade-, Speicher- und arithmetischen Operationen zusammen mit dem Ausnahmemodell und dem Registersatz durch den ARM1 implementiert.

Version 2 fügte Multiplikations- und Multiplikations- Akkumulation- Anweisungen und Unterstützung für Coprozessoren sowie weitere Innovationen hinzu. Diese frühen Prozessoren unterstützten nur 26 Bit Adressraum.

Version 3 der Architektur trennte den Programmzähler und die Programmstatusregister und fügte mehrere neue Modi hinzu, wodurch die Unterstützung für 32-Bit-Adressraum ermöglicht wurde.

Version 4 fügt Unterstützung für Halbwort-Lade- und Speicheroperationen und einen zusätzlichen Berechtigungsmodus auf Kernel-Ebene hinzu.

Die ARMv4T-Architektur und ARMv5TE und ARMv6

Die ARMv4T- Architektur, die den Thumb (16-Bit)-Befehlssatz einführte, wurde von den ARM7TDMI®- und ARM9TDMI®-Prozessoren implementiert, Produkten, die zu Milliarden verkauft wurden. Die ARMv5TE-Architektur fügte Verbesserungen für DSP-Operationen und gesättigte Arithmetik sowie für die ARM/Thumb-Zusammenarbeit hinzu.

ARMv6 hat eine Reihe von Verbesserungen vorgenommen, darunter die Unterstützung für nicht ausgerichtete Speicherzugriffe, wesentliche Änderungen an der Speicherarchitektur und für die Unterstützung mehrerer Kerne sowie eine gewisse Unterstützung für SIMD-Operationen, die mit Bytes oder Halbwörtern innerhalb der 32-Bit-Register arbeiten. Es bot auch eine Reihe optionaler Erweiterungen, insbesondere Thumb-2 und Security Extensions (TrustZone). Thumb-2 erweitert Thumb zu einem Befehlssatz mit gemischter Länge (16 Bit und 32 Bit).
.

Die ARMv7-A-Architektur

Die ARMv7-A-Architektur macht die Thumb-2-Erweiterungen obligatorisch und fügt die in Kapitel 7 beschriebenen Advanced SIMD-Erweiterungen (NEON) hinzu.

Einige Jahre lang hat ARM ein fortlaufendes Nummerierungssystem für Prozessoren eingeführt, wobei ARM9 auf ARM8 folgte, das nach ARM7 kam.

Verschiedene Zahlen und Buchstaben wurden an die Basisfamilie angehängt, um verschiedene Varianten zu bezeichnen. Beispielsweise hat der ARM7TDMI-Prozessor T für Thumb, D für Debug, M für einen schnellen Multiplikator und I für EmbeddedICE.
.

Der Markenname Cortex

Für die ARMv7-Architektur hat ARM Limited den Markennamen Cortex für seine Prozessoren übernommen, mit einem ergänzenden Buchstaben, der angibt, welches der drei Profile (A, R oder M) der Prozessor unterstützt.

Abbildung 2-1 auf Seite 2-4 zeigt, wie verschiedene Versionen der Architektur verschiedenen Prozessorimplementierungen entsprechen. Die Abbildung ist nicht umfassend und enthält nicht alle Architekturversionen oder Prozessorimplementierungen.
.

2.4.4 Der Cortex-A9-Prozessor

Der ARM Cortex-A9-Prozessor ist eine energieeffiziente und beliebte Wahl für hohe Leistung in kostengünstigen Geräten mit geringem Stromverbrauch oder thermisch begrenzten Geräten.

Es wird derzeit in großen Mengen für Smartphones, digitales Fernsehen, Verbraucher- und Unternehmensanwendungen ausgeliefert. Der Cortex-A9- Prozessor bietet eine Leistungssteigerung von mehr als 50 % im Vergleich zum Cortex-A8-Prozessor.

Der Cortex-A9-Prozessor kann mit bis zu vier Kernen konfiguriert werden, die bei Bedarf Spitzenleistung liefern. Konfigurierbarkeit und Flexibilität machen den Cortex-A9-Prozessor für eine Vielzahl von Märkten und Anwendungen geeignet.
.

Geräte mit Cortex-A9-Prozessoren

Zu den Geräten, die den Cortex-A9-Prozessor enthalten, gehören der Dual-Core Tegra-2 von nVidia, der SPEAr1300 von ST und die OMAP4-Plattform von TI.

Der Cortex-A9-Prozessor hat die folgenden Merkmale:
.

  1. Spekulationspipeline außerhalb der Reihenfolge.
  2. 16, 32 oder 64 KB vierwegassoziative L1-Caches.
  3. Fließkommaeinheit.
  4. NEON-Technologie für Multimedia- und SIMD-Verarbeitung.
  5. Verfügbar als geschwindigkeits- oder leistungsoptimierte Hard-Makro-Implementierung.

.

2.5 Wichtige architektonische Punkte der Prozessoren der ARM Cortex-A-Serie

.
Eine Reihe wichtiger Punkte sind der Cortex-A-Gerätefamilie gemeinsam:
.

  • 32-Bit-RISC-Kern mit 16 × 32-Bit-sichtbaren Registern mit modusbasiertem Register-Banking.
  • Modifizierte Harvard-Architektur (separater, gleichzeitiger Zugriff auf Anweisungen und Daten).
  • Architektur laden/speichern.
  • Thumb-2-Technologie serienmäßig.
  • VFP- und NEON-Optionen.
  • Abwärtskompatibilität mit Code von früheren ARM-Prozessoren.
  • 4 GB virtueller Adressraum und mindestens 4 GB physischer Adressraum.
  • Durchlaufen der Hardware-Übersetzungstabelle für die Übersetzung von virtuellen in physische Adressen.
  • Virtuelle Seitengrößen von 4 KB, 64 KB, 1 MB und 16 MB.
  • Cachefähigkeitsattribute und Zugriffsberechtigungen können für jede Seite festgelegt werden.
  • Big-Endian- und Little-Endian-Datenzugriffsunterstützung.
  • Nicht ausgerichtete Zugriffsunterstützung für grundlegende Lade-/Speicherbefehle.
  • Symmetric Multi-Processing (SMP)-Unterstützung auf MPCore™-Varianten, d. h. Multi-Core-Versionen der Prozessoren der Cortex-A-Serie, mit vollständiger Datenkohärenz auf L1-Cache-Ebene. Die automatische Cache- und Translation Lookaside Buffer (TLB)-Wartungsweitergabe sorgt für einen hocheffizienten SMP-Betrieb.
  • Physisch indizierte, physisch gekennzeichnete (PIPT) Datencaches.

.

Das war ein kleiner übersetzter Ausschnitt aus den 420 Seiten des Originals aus dem Jahr 2013.

Die Übersetzung erfolgte teiweise automatisch und wurde nur bei groben Schnitzern korrigiert.
.

Startseite -- © 2001/2022 - Copyright by Dipl.-Ing. Gert Redlich / Germany - D-65191 Wiesbaden - Telefon-Nummer - Impressum