Was ist der Unterschied zwischen Intel 64 und AMD64?

29

Kann jemand erklären, ob es einen Unterschied zwischen der Intel64- und der AMD64-Architektur gibt?

Chaos
quelle
3
IA64 = die Intel / HP Itanium VLIW-Architektur. AMD64 ist die von AMD entwickelte Erweiterung des x86-Standardbefehlssatzes.
6
Marketing. AMD hat es entwickelt und anschließend an Intel lizenziert. AMD lizenziert x86 von Intel und Intel lizenziert x64 von AMD. Dies stellt sicher, dass keiner die anderen verklagen kann, ohne das Recht zu verlieren, ihre gesamte CPU-Aufstellung zu verkaufen, da sie sich selbst in den Fuß schießen würden.
1
Meinen Sie x86-64 oder IA64? Der Stand ist der gleiche wie AMD64 (wörtlich : die genaue gleichen Befehlssatz, oder Sie müssten alle Anwendungen für eine CPU neu zu kompilieren oder die andere), und letztere ist eine völlig andere CPU - Architektur.
Durchbruch
2
Ich meine x86-64. Intel verwendete zunächst die Namen IA-32e und EM64T, bevor es sich schließlich für die Implementierung von Intel 64 entschied.
Mayhem

Antworten:

26

Nach dem, was ich unter Extended Memory 64-Bit-Technologie (EM64T) gelesen habe, ist Intels Implementierung von AMD64 AMD64 und die Unterschiede zwischen Intel64 und AMD64 sind:

  • Die BSF- und BSR-Befehle von EM64T verhalten sich unterschiedlich, wenn die Quelle 0 ist und die Operandengröße 32 Bit beträgt. Der Prozessor setzt das Null-Flag und lässt die oberen 32 Bits des Ziels undefiniert.

  • AMD64 unterstützt 3DNow! Anleitung. Dies beinhaltet Prefetch mit dem Opcode 0x0F 0x0D und PREFETCHW, die nützlich sind, um die Speicherlatenz auszublenden.

  • Dem EM64T fehlt die Möglichkeit, eine reduzierte (und damit schnellere) Version des Gleitkommazustands (einschließlich der FXSAVE- und FXRSTOR-Anweisungen) zu speichern und wiederherzustellen.

  • EM64T fehlen einige modellspezifische Register, die für AMD64 als architektonisch gelten. Dazu gehören SYSCFG, TOP_MEM und TOP_MEM2.

  • EM64T unterstützt die Mikrocode-Aktualisierung wie im 32-Bit-Modus, während AMD64-Prozessoren ein anderes Mikrocode-Aktualisierungsformat verwenden und MSRs steuern.

  • Der CPUID-Befehl von EM64T ist sehr herstellerspezifisch, wie es für Prozessoren im x86-Stil üblich ist.

  • EM64T unterstützt die Anweisungen MONITOR und MWAIT, die von Betriebssystemen verwendet werden, um Hyper-Threading besser zu handhaben.

  • AMD64-Systeme ermöglichen die Verwendung der AGP-Apertur als IO-MMU. Betriebssysteme können dies ausnutzen, um normale PCI-Geräte über 4 GiB DMA-Speicher zu lassen. EM64T-Systeme erfordern die Verwendung von Bounce-Puffern, die langsamer sind.

  • SYSCALL und SYSRET werden auch nur im IA-32e-Modus (nicht im Kompatibilitätsmodus) auf dem EM64T unterstützt. SYSENTER und SYSEXIT werden in beiden Modi unterstützt.

  • Nahe Verzweigungen mit dem Präfix 0 × 66 (Operandengröße) verhalten sich unterschiedlich. Ein CPU-Typ löscht nur die obersten 32 Bits, während der andere Typ die obersten 48 Bits löscht.

Chaos
quelle
Woher hast du diesen Text gelesen?
Tamara Wijsman
4
Nun, einige Foren / Blogs + Wikipedia ( en.wikipedia.org/wiki/EMT64#Intel_64 ). Außerdem habe ich einige Handbücher von Intel und AMD durchgesehen.
Mayhem
@Nubok: Bitte geben Sie den Unterschied für die Implementierung der Architektur durch via technologies an (64-Bit-Version natürlich)  !
user2284570
Die IO-MMU ist eine große Sache - wenn sie nicht vorhanden ist, müssen Sie eine nicht unbedeutende Menge an wenig Arbeitsspeicher für die Pufferung aufsaugen (64 MB sind die aktuelle Standardeinstellung unter Linux). Intel führte später etwas Ähnliches wie VT-d ein und verwendete es für eine lästige Produktsegmentierung. Die Zuverlässigkeit des Codes (und in einigen Fällen des Siliziums) führte jedoch dazu, dass er unter Linux nicht standardmäßig für das Original verwendet wurde Zwecke.
GreenReaper
8

Auf der x86-Seite von Wikipedia können Sie lesen

In den Jahren 1999-2003 hat AMD diese 32-Bit-Architektur auf 64 Bit erweitert und sie in früheren Dokumenten als x86-64 und später als AMD64 bezeichnet. Intel übernahm bald die architektonischen Erweiterungen von AMD unter dem Namen IA-32e, der später in EM64T und schließlich in Intel 64 umbenannt wurde.

Mit anderen Worten, das Unterscheidungsmerkmal ist hauptsächlich Marketing. Es gibt Intel- und AMD-spezifische Erweiterungen für den Befehlssatz, aber solange Sie Programme im Benutzerbereich schreiben, müssen Sie den Unterschied im Allgemeinen nicht kennen.

Joachim Isaksson
quelle
3
you don't generally need to know the differenceFalsch: selbst kleiner Unterschied auf allgemeine Anweisungen ist sehr wichtig bugs.chromium.org/p/nativeclient/issues/detail?id=2010
user2284570
4
Falsch: Selbst geringfügige Unterschiede bei allgemeinen Anweisungen sind sehr wichtig. Um fair zu sein (1), sagte er, dass Sie diese Unterschiede im Allgemeinen nicht kennen müssen. Offensichtlich gibt es spezielle Fälle, in denen es darauf ankommt. (2) Die meisten von uns schreiben keine gehärtete Sandbox, die alle verfügbaren Anweisungspfade schützen muss.
Eric W