Stellen verschiedene ARM-Hersteller unterschiedliche Befehlssätze zur Verfügung?

8

Ich stieß zuerst auf den ARM-Befehl in den 80er Jahren und habe ihn seitdem nicht mehr benutzt. Aus Neugierde schaute ich auf die Tablets und andere ARM-Geräte und stellte fest, dass die CPUs von verschiedenen Herstellern stammen.

Ich habe eine schnelle Suche durchgeführt, aber ich konnte keine definitive Aussage finden, ob die verschiedenen ARM-Chips unterschiedliche Befehlssätze haben.

Ich würde annehmen, dass sie im Wesentlichen gleich sind.

    
Preet Sangha 12.01.2012, 03:35
quelle

3 Antworten

6

Gehen Sie Ссылка entlang der linken Seite unter den Inhalten nach der ARM-Architektur. Und unter diesen Referenzhandbüchern. Früher gab es einen einzigen ARM ARM (ARM Architecture Reference Manual), aber die Familie ist bis zu dem Punkt gewachsen, an dem sie es in, na ja, Familien brechen mussten.

Die ARM ARM's zeigen Ihnen die Befehlssätze. Was ich glaube, sie nennen das ARMv5 Handbuch ist der alte ARM ARM. Sie finden die ARM-Anweisungen (32-Bit) und Daumen-Anweisungen (16 Bit). Für jede Anweisung listen sie auf, welche Architektur dies unterstützt. Daher wird möglicherweise eine ARMv5-Anweisung angezeigt, die nicht von ARMv4 (ARMv4 a.k.a ARM7, wie der beliebte ARM7TDMI-Kern) unterstützt wird. Thumb-Anweisungen werden von ARMv4T und neuer usw. unterstützt.

Also gibt es den Kern 32 Bit Arm Befehlssatz, den Sie vielleicht mit neuen Anweisungen von Zeit zu Zeit verwendet haben und Bugs / Einschränkungen behoben haben (zB ldr r0, [r0]), etc.

Die Gleitkommaeinheit hat ein oder zwei Überholungen gehabt, die meisten Kerne haben kein fpu und diejenigen, die einen fpu haben, bedeuten nicht, dass der Chiplieferant sie in den Chip aufgenommen hat. die fpa ist die ältere, vfp ist neuer und jetzt neon stuff. Wenn Sie darauf achten, fallen diese alle in die allgemeine Coprozessor-Befehlskategorie. Aber Sie müssen die Coprozessorversion nicht kennen / verwenden, sie haben Aliase für alles.

Es gibt / war diese java / jazelle Sache, die gleiche Geschichte, die einige Kerne es als eine Option haben, bedeutet nicht, dass der Verkäufer es eingeschlossen hat.

Mindestens zwei Sätze von thumb2-Erweiterungen für den Daumenbefehlssatz. Vor thumb2-Erweiterungen waren die Daumenbefehle alle 16 Bit und hatten eine Eins-zu-eins-Zuordnung zu einer ARM-Anweisung. Sinnvoll ist, dass Sie nur einen ARM-Kern benötigen, der Decoder übersetzt von der kleineren Anweisung in ARM-Anweisung und führt diese dem Kern zu. Alle Anweisungen sind 16 Bit außer der Verzweigung, und wenn Sie sich dieses Muster ansehen, können Sie das ganz einfach als zwei separate 16 Bit Befehle dekodieren. Ich habe einen Simulator btw, wenn Sie mit nur Daumenanweisungen Ссылка spielen möchten. Also entscheiden sie sich dafür, ihr Mikrocontroller-Angebot kleiner zu machen, anstatt dass alle nur den ARM7TDMI verwenden und die Chipgröße und -leistung verbrauchen, sind Daumen2-fähige Prozessoren nur Daumen, sie unterstützen keine 32-Bit-ARM-Befehle, es gibt keinen ARM-Kern, der Daumenbefehle sind übersetzt, usw. neuer Kern. Die ARMv6-M aka Cortex-m0 und Cortex-m1 nehmen den Daumen-Befehlssatz und fügen einige 32-Bit-Anweisungen hinzu, um die Leistungslücke zu ARM zu schließen (der Daumen war kleiner, aber etwas langsamer als ARM, wenn Sie den gleichen Code kompilierten) beide, es dauerte 10-20% mehr Anweisungen von meinen Versuchen, Daumen zu benutzen). Theoretisch ist Daumen-2 (ARMv7-M) ARM überlegen, wann und wo man sie vergleichen kann. Aus welchem ​​Grund auch immer kam der Cortex-m3 zuerst heraus, der ARMv7-M ist und eine Reihe von 32-Bit-Daumen2-Anweisungen zu dem Daumen-Befehlssatz hinzugefügt hat. Ich habe kürzlich gezählt und ARMv6-M hinzugefügt wie 20, ARMv7-M hat wie 140-150 Anweisungen zum Basis-Daumen-Befehlssatz hinzugefügt. thumb2 ist grundsätzlich variable Wortlänge. Und wieder läuft nur die Cortex-M-Serie. Wenn man es anschaut, ist es fast so, als hätten sie den ARM-Befehlssatz unter dem Namen thumb neu gebaut. nicht ganz, aber du bekommst eine Menge armähnliche Anweisungen zurück, drei statt zwei Register, höhere Register erreichen und Unmittelbar verwenden können. Was das verursachte, ist der Wunsch, asm zu schreiben, das für ARM und thumb / thumb2 kompiliert wurde. Sie haben also eine einheitliche Syntax entwickelt. Sie können eine Anweisung wie

schreiben %Vor%

Bei der Montage für den Daumen, das ist die Anweisung, wenn sie für den Arm zusammengestellt werden, werden sie in

umgewandelt %Vor%

für Sie anstelle von Syntaxfehlern. Sie müssen angeben, dass Sie die einheitliche Syntax verwenden, zumindest mit dem gnu binutils Assembler (Gas).

Ein ebenso wichtiger Satz von Dokumenten ist das Technische Referenzhandbuch, ebenfalls unter infocenter.arm.com. Jeder Kern hat ein trm, tatsächlich hat jede Umdrehung jedes Kerns ein TRM. Auch die zusätzlichen Kostenposten wie L2-Caches haben ihr eigenes TRM für jede Umdrehung. Es ist wichtig, den Kern zu finden, den der Chiphersteller gekauft und benutzt hat, und wenn möglich die Revision (rev 2.0 r2p0, rev 1.0 r1p0, etc), da es Programmierunterschiede sowie Errataunterschiede gibt (vertraue Linux nicht als Referenz! Es ist ein riesiges Durcheinander, jedes Mal, wenn ich sehe, hat eine andere Firma die Kern- / Errata-Unterschiede völlig falsch verstanden und falsch angewendet, es ist im Moment eine Katastrophe. Manchmal enthält das TRM Anweisungsinformationen oder zeichnet ein klareres Bild davon, was der Kern unterstützt und nicht unterstützt. Die ARM ARMs sind generisch und decken die gesamte Familie oder eine Anzahl von Kernfamilien ab, wobei das TRM sehr spezifisch für einen Kern ist.Ein Beispiel für Verwirrung zwischen dem ARM ARM und dem TRM ist, dass man beim Betrachten des ARM ARM den Eindruck gewinnen könnte, dass man BE-32 oder BE-8 Big Endian-Modi verwenden kann, die Realität ist entweder der eine oder der andere ARMv6 und neuer ist BE-8, Punkt, gewöhne dich dran. ARMv5 und ARMv4 ist BE-32 oder bevor ARMv6 gerade Big Endian aufgerufen hat. Ich empfehle sehr, kein Big Endian an einem Arm zu verwenden, obwohl Sie glauben, dass Sie davon profitieren könnten. gehen Sie mit dem nativen Modus und Sie sparen sich eine Menge Arbeit und Misserfolg. Ich erwähne es aus eigener Erfahrung und versuche herauszufinden, warum die Bits, die in einem ARM ARM beschrieben wurden, einfach nicht in dem Kern funktionierten, den ich benutzte.

Ein 64-Bit-Kern ist irgendwo in der Entwicklungsphase, ich wäre nicht überrascht, wenn es fertig ist und nur jemanden zu suchen, der den Auslöser drückt und ihn benutzt. Zur Zeit ist das ARMv8-Dokument verfügbar und kann jetzt heruntergeladen werden.

Kurze Antwort infocenter.arm.com unter ARM-Architektur finden Sie alle Dokumente, die die verschiedenen Befehlssätze sowie Verbesserungen / Ergänzungen im Laufe der Zeit zu diesen Befehlssätzen beschreiben.

    
old_timer 12.01.2012, 04:33
quelle
2

Es gibt einige häufige Variationen von Befehlssätzen, wobei UAL, Thumb und Thumb2 am häufigsten vorkommen. Einige ARM-Cores, die spezialisierte Hardware enthalten (z. B. DSPs), erweitern die Sprache ebenfalls.

    
spearson 12.01.2012 03:50
quelle
2

Noppen. Es gibt keinen Unterschied zwischen den Herstellern. Sie alle respektieren die ARM-Spezifikation.

Einige Erweiterungen sind optional. Dies ist der Fall von NEON.

Aber soweit ich weiß, enthält nur der Tegra 2 diese Erweiterung nicht. Aus diesem Grund ist das Tegra 2 ein sehr schlechter Prozessor für die Videodekodierung (zum Beispiel).

    
webshaker 12.01.2012 08:38
quelle

Tags und Links